Enterprise Forever

:HUN => VIDEO: => Topic started by: Tomato77 on 2017.November.08. 20:26:01

Title: EP128pal képkonvertáló
Post by: Tomato77 on 2017.November.08. 20:26:01
Megpróbálom ide feltölteni:

EP128pal 2.171108 képkonvertáló program PC-re, Windows XP és Windows 7 alatt tesztelve. Nem kell telepíteni, csak futtatni. Delphiben készült, a forrás is csatolva van, felhasználható. Vannak hozzá képbetöltő példaprogramok Basicben és Pascalban, amik a program segítségében találhatók. A Basic program iszonyú lassú, de működik.
Title: Re:EP128pal képkonvertáló
Post by: IstvanV on 2017.November.08. 23:38:33
A karakterenként változó paletta jó ötlet, különösen az EXOS LPT-t használó (pl. BASIC) programokban lehet hasznos.
Title: Re:EP128pal képkonvertáló
Post by: Tomato77 on 2017.November.09. 00:06:11
Köszi! Sajnos pont a Basic program elég lassú lett. Zzzip-pel talán fel lehetne gyorsítani elfogadható sebességűre, illetve a karakterenkénti fájlolvasást ki lehetne cserélni EXOS 6-os funkcióra, hogy blokkonként olvasson. Ha majd lesz rá idő, megpróbálom...

Az elején némileg át kellett írni a programot, miután megértettem, hogy 16 színben a BIAS a teljes képernyőre vonatkozik. :) Emulátorban próbálgatva fura volt, hogy a már betöltött sorok átszíneződnek.
Title: Re:EP128pal képkonvertáló
Post by: IstvanV on 2017.November.09. 10:41:46
Köszi! Sajnos pont a Basic program elég lassú lett. Zzzip-pel talán fel lehetne gyorsítani elfogadható sebességűre, illetve a karakterenkénti fájlolvasást ki lehetne cserélni EXOS 6-os funkcióra, hogy blokkonként olvasson. Ha majd lesz rá idő, megpróbálom...

A kép betöltés gyorsítására lehetne rövid gépi kódú rutint (ALLOCATE/CODE) is használni.

epimgconv képekhez sem lenne nehéz BASIC betöltőt készíteni, legalábbis ha "EXOS kompatibilis" a kép (legfeljebb 42 széles, a magasság 9 többszöröse, nincs interlace vagy soronként változó paletta) és nem tömörített. Már most is lehet egyébként a ZozoTools VL parancsával kompatibilis formátumban menteni, ez egyszerűen betölthető BASIC-ben a VL hívásával. Hátránya azonban, hogy a formátum tömörített, de a tömörítés gyakran jelentősen növeli a file méretét, ami viszont legfeljebb 16K lehet. :oops:
Title: Re:EP128pal képkonvertáló
Post by: Tomato77 on 2017.November.09. 20:15:49
Egy apró hibát kijavítottam a képkonvertálóban, kapott új verziószámot. Ilyenkor szokás a régi verziót törölni, hogy ne foglalja a helyet?
[attach=2]
Title: Re:EP128pal képkonvertáló
Post by: szipucsu on 2017.November.09. 21:10:46
Ilyenkor szokás a régi verziót törölni, hogy ne foglalja a helyet?
Erre sincs "előírás", mindenkire rá van bízva. Amennyire emlékszem, meg szoktak maradni a régi verziók is általában. De ha törölni akarod, az sem tilos. Helyet biztos nem foglal, mert rengeteg hely van a szerveren.
Title: Re:EP128pal képkonvertáló
Post by: Ep128 on 2017.November.09. 23:27:31
Az miért lehet, hogy ha fejem tetejére állok, akkor is "ezt" a hibaüzit kapom folyton? :-) (Vagy 10 képpel próbálkoztam, akkor is... :-P )
Title: Re:EP128pal képkonvertáló
Post by: Tomato77 on 2017.November.09. 23:57:02
Mert jpg-t nyitsz meg, nem bmp-t. Ha az image objektumba jpg van betöltve, akkor a Delphi nem engedi módosítani.
Ha lesz egy kis időm, megcsinálom, hogy jpg-vel is működjön.
Title: Re:EP128pal képkonvertáló
Post by: szipucsu on 2017.November.10. 12:38:17
Vagy 10 képpel próbálkoztam, akkor is... :-P
Hm, látom, valami jó kis kalandjátékot készítesz, amihez a képeket tévéműsorokból vágod össze.
Neked még kint van az Internet Ekszplórer a tálcán? Nálam Windows telepítés után első, hogy törlöm onnan. ::luvFX
Title: Re:EP128pal képkonvertáló
Post by: Tomato77 on 2017.November.10. 20:03:44
Elkészült a .jpg betöltés, és kapott a program egy modernebb felületet Enterprise-os színvilággal. Valamint a dithering rutint befújtam bogárirtóval. :)

Az 'Enterprise' mappában betölthető programok vannak. A Basic sima text, nem tokenizált, fog vele bíbelődni a gép.
Title: Re:EP128pal képkonvertáló
Post by: szipucsu on 2017.November.10. 20:19:22
Egész jó ez a kezelőfelület! A sárga szín kicsit túlzás talán, de a többi szín nagyon jól illik az EP-s világhoz.
Esetleg angol változatot is érdemes lenne készíteni, mert sok külföldi is foglalkozik az EP-vel.
Title: Re:EP128pal képkonvertáló
Post by: Tomato77 on 2017.November.10. 21:03:39
A sárga szín azért van, mert azon nem olyan fetűnőek a szürke fülek - azokat nem tudtam átszínezni. Szürkét meg nem akartam. Egyébként köszönöm! :) Nem tudom, nektek mennyire hasznos a program, nekem örömöt szerzett megcsinálni.

Angol változat: jó ötlet, köszi! Ez lesz a következő lépés. Majd választani lehet magyar és angol nyelv között.
Title: Re:EP128pal képkonvertáló
Post by: Ep128 on 2017.November.11. 01:06:57
Elkészült a .jpg betöltés, és kapott a program egy modernebb felületet Enterprise-os színvilággal. Valamint a dithering rutint befújtam bogárirtóval. :)

Az 'Enterprise' mappában betölthető programok vannak. A Basic sima text, nem tokenizált, fog vele bíbelődni a gép.

Nagyon jó lett, köszi! :-)
Title: Re:EP128pal képkonvertáló
Post by: Ep128 on 2017.November.11. 01:09:03
Hm, látom, valami jó kis kalandjátékot készítesz, amihez a képeket tévéműsorokból vágod össze.
Neked még kint van az Internet Ekszplórer a tálcán? Nálam Windows telepítés után első, hogy törlöm onnan. ::luvFX

Ugyan már... :-D (Az egyetlen, amit Ep -re valaha írtam, az egy mini demo volt. Rettentő büszke voltam rá, 3 napi melómba került. :-D ) Szóval nem fenyegeti az Ep -s társadalmat, hogy bármiféle "kalandjáték" készülne... :-D
Az IE meg amolyan "tartalék tartalékja", soha az életben nem használom! Igaz, törölni sem törlöm...
Title: Re: EP128pal képkonvertáló
Post by: IstvanV on 2017.November.11. 11:02:53
Egyszerű EPI nézegető program, FILE bővítőt használ:
[attachurl=1]    (szerk.: snapshot verzió)

Ha jól működik, akkor támogat 4, 16 és 256 színű képeket, .epi és .epz (tömörített) formátumot is. C64 palettát nem tud megjeleníteni, de ez megoldható lenne a színek sorrendjének az átrendezésével.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2017.November.11. 14:32:11
Nagyon jó lett, köszi! Főleg, hogy a tömörített képet is beolvassa. A SPRING képet ezzel a programmal csináltad?

A Commodore színeknél a sorrend cseréje nekem nem jutott eszembe. Azzal tényleg meg lehetne oldani, ha van olyan BIAS csoport, amiben (nagyjából) jók a színek. Készül az angol fordítás, meg találtam két kis hibát. Ha azok  készen lesznek, ezt a sorrend átrendezést is beleteszem. Akkor a palettát is menteni kell majd.

Meglepődtem, hogy külön topikot kapott a program. :oops:
Title: Re: EP128pal képkonvertáló
Post by: IstvanV on 2017.November.11. 18:21:50
A SPRING képet ezzel a programmal csináltad?

Igen, az epimgconv nem tud karakterenként változó palettával konvertálni. :oops: A kép egyébként a Xorgame egyik háttere is, az eredeti megtalálható például itt (http://www.wallpapereast.com/static/images/spring-in-nature-wide-wallpaper-603794.jpg).

A C64 színeket nem egyszerű megoldani, egyik BIAS érték sem ad igazán jó eredményt. Szerencsésebb esetben nem fordul elő egy blokkon belül mind a 16 szín, akkor még lehetséges nagyobb minőségromlás nélkül a konvertálás.

Az alábbi táblázat alapján közelíthető a C64 paletta EP színekkel, de gyakran nem egyértelmű hogy melyik szín lenne a legjobb:

 0 (Black      ):   0 (00h)
  1 (White      ): 255 (FFh)
  2 (Red        ): 129 (81h)
  3 (Cyan       ): 126 (7Eh)
  4 (Purple     ): 133 (85h)
  5 (Green      ): 138 (8Ah)
  6 (Blue       ): 140 (8Ch)
  7 (Yellow     ): 115 (73h)
  8 (Orange     ):  17 (11h) vagy 145 (91h)
  9 (Brown      ):  88 (58h)
 10 (Light Red  ): 241 (F1h)
 11 (Dark Grey  ):  56 (38h)
 12 (Grey       ): 248 (F8h) vagy   7 (07h)
 13 (Light Green):  51 (33h)
 14 (Light Blue ): 252 (FCh) vagy 181 (B5h)
 15 (Light Grey ): 199 (C7h)


[attachthumb=1]

Szerk.: .com formátumú képnézegető program:
[attachthumb=2]
Title: Re: EP128pal képkonvertáló
Post by: endi on 2017.November.11. 18:35:17
karakterenként változó paletta? ez mi?
Title: Re: EP128pal képkonvertáló
Post by: IstvanV on 2017.November.11. 18:37:03
karakterenként változó paletta? ez mi?

Természetesen azt jelenti, hogy 9 soronként változik, soron belül a NICK korlátai miatt csak a biast lehetne változtatni.
Title: Re: EP128pal képkonvertáló
Post by: endi on 2017.November.11. 18:40:30
Természetesen azt jelenti, hogy 9 soronként változik, soron belül a NICK korlátai miatt csak a biast lehetne változtatni.

ja már azt hittem valami új extra dolog :)
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2017.November.12. 22:46:55
The English version is available. :) A zászlós ikonokkal lehet váltani angol és magyar nyelv között.

Találtam hibákat a paletta kiválasztásánál (piros bigyó) és a kép átméretezésekor, ezeket kijavítottam. Aki keres, az talál. :)

A Commodore színek mentésével egyelőre nem foglalkoztam. Nem tűnik túl hasznos funkciónak, meg tulajdonképp most is tudja ezt a program manuálisan összeválogatott palettával, ami el is menthető.

A snapshot szerint láthatóan rosszul számol a program, mert 3 maccsot talált, pedig a képen csak kettő van, de azért a konvertálás működik. :)
Title: Re: EP128pal képkonvertáló
Post by: szipucsu on 2017.November.12. 22:56:53
3 maccsot talált, pedig a képen csak kettő van
Én csak 1 macsot látok, a két képen összesen kettő macsek is van. :D
Jó lett amúgy!
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2017.November.12. 23:00:31
Egy macs bal oldalon, egy macs jobb oldalon. :) Amúgy jól számolja a BIAS egyezéseket, legalábbis bízom benne.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2017.November.20. 19:57:17
Elkészült a legújabb verziója a programnak. Amik változtak:
- ha a kép eredeti méretű marad (és persze nagyobb a beállított méretnél), akkor az egér bal gombjával lehet tologatni ide-oda és a látható részt fogja konvertálni
- átírtam a konvertáló rutint, ami gyorsabb lett és szerintem szebb is az eredménye
- bekerült a programba Floyd-Steinberg dithering algoritmus, ami sokat dob a konvertált képek minőségén
- egy vízszintes fehér csík jelöli a konvertálás helyét (ez ugyanannak a képnek az újragenerálásakor lehet hasznos, ha másik beállítást próbálgatunk)
- pár apró hiba kijavítása
Title: Re: EP128pal képkonvertáló
Post by: Ep128 on 2017.November.21. 00:05:18
Köszi! :-) Lassan eléred, hogy tulajdonképpen "ugyanazt" az eredményt tudja majd, mint az iview... :-)
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2017.November.21. 00:53:50
Én köszi! :) Azért az IView szintje messze van, meg az szerintem másra való. Ez csak egyszerű képeket csinál, amiket be tudok majd tölteni háttérnek egy Pascalban készülő játékban egy alap konfigos géppel. Még a paletta színösszetételén lehetne csiszolni, mert nem mindig a legjobb színeket választja ki. Sajnos itt megállt a tudomány, a Floyd-Steinberg rutint is a netről kellett kipuskázni, és a paletta zsugorításához is kutatni kell jobb eljárást. Találtam egy intenzitáson alapuló range-elős módszert, ami ha jól működik, beleteszem. A karaktersoronként változó paletta se mindig előny, mert néha nagyon különböző színeket hoz össze, és olyankor csíkos lesz a kép. Talán néhány színt örökölhetne a paletta az előző blokkból... Szóval még ez sem végleges változat, de lassan szeretnék Pascalozni. Főleg, hogy megy rendesen a fordítás EP128EMU alatt. :)
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2017.November.22. 00:21:24
Kicsit játszadoztam a színekkel. Régóta gondolkodom azon, hogy 4 szín és nagy felbontás mellett lehetne-e valahogy "emulálni" több színt, ha megfelelő palettánál egymás mellé kerülnek különböző képpontok. Egy olyan rutinon törtem a fejem, ami a kb. 320x200-as felbontású képet 2x2 pixeles "kockákra" osztja fel, elméletileg lerontva ugyan a felbontást, de talán a színek kombinációjával lehetne utánozni más színeket, pl. pirosat és kéket átlósan keverve lilás árnyalatot kaphatnánk. Ha viszont a palettának megfelelő színt használunk, akkor mégis megmarad a nagy felbontás, lehet húzni vékony vonalat tiszta kék színnel.

Amikor utána néztem a Floyd-Steinberg dithering algoritmusnak, felcsillant a szemem, mert ez épp hasonlót csinál. Ha az adott képpontot true colour-ról lekonvertáljuk 256 színre és a kiválasztott szín nem stimmel teljesen, a hibát szétdobálja a környező pixelekre RGB komponensekre szétbontva. Azaz a kép teljes méretét tekintve megmaradnak a színek, nem vész el semmi, és a következő képpont esetleg annyival lesz kékebb, mint amennyivel kevésbé volt kék az előző. Így elkezdtem játszani a 4 színű palettával. Elsőre a tiszta piros-zöld-kék színeket választottam feketével, mert fekete mindenképp kell. Nem volt jó a tiszta szín, kissé nyomott árnyalatok kellettek, de fehérhez hasonló kutyulmányt így se tudtam előállítani. Aztán kipróbáltam, hogy minden, feketétől különböző színt hozzákevertem a jobb szomszédjához, így lett rózsaszín, sárga és cián. A fehér így egész jó lett (mint egy fényképezőn rossz fehéregyensúllyal), de eltűnt a piros. (Pedig sárgából és rózsaszínből lehetne valami hasonló.) Összességében azonban ez a paletta nem tűnik rossznak, és lehet benne húzni nagy felbontású csíkot rózsaszínnel, sárgával és ciánnal. :)

Az első oszlopban az eredeti kép van, mellette pedig a konvertáltak, fölöttük a használt palettával.

(Módosítás: sárgából és rózsaszínből sose lesz piros, legfeljebb szubsztraktív színkeveréssel.)
Title: Re: EP128pal képkonvertáló
Post by: endi on 2017.November.22. 08:51:21
jók ezek a kísérletek. annak idején én is tök hasonlókkal kísérleteztem, amint lett pc-m.

amúgy szerintem ezt a "pixel kombinációs" trükköt úgy lehetne jobbra megcsinálni, ha kétsoronként más paletta van, és akkor egyik sorban lehet fehér paletta szín is

persze tudom, itt nem akarsz soronkénti palettát
Title: Re: EP128pal képkonvertáló
Post by: IstvanV on 2017.November.22. 13:35:25
(Módosítás: sárgából és rózsaszínből sose lesz piros, legfeljebb szubsztraktív színkeveréssel.)

Tiszta színt nem lehet keverni, csak 2/3 fényerejű fehér és 1/2 telítettségű piros lehetséges. Természetesen a fényerő és telítettség csökkentése rontja a kép minőségét, de így elvileg az említett korlátok között jók lehetnek a színek.
[attachthumb=1]
Ugyanez kissé elmosva:
[attachthumb=2]
Title: Re: EP128pal képkonvertáló
Post by: IstvanV on 2017.November.22. 16:42:41
Nagyon kevés színnel való ditherelésnél figyelni kell még arra is, hogy a monitor nem lineáris (https://en.wikipedia.org/wiki/Gamma_correction#Windows.2C_Mac.2C_sRGB_and_TV.2Fvideo_standard_gammas), bár ezt a fenti példáknál éppen nem vettem figyelembe. :oops: Ezért is javít sokat a második képen a "Gaussian blur" effektus.
Title: Re: EP128pal képkonvertáló
Post by: Povi on 2017.November.22. 23:02:46
(Attachment Link)
Ugyanez kissé elmosva:
(Attachment Link)
Durva, főleg a Dizzy-s képnél, hogy csak 4 színből áll!!!
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2017.December.11. 20:08:53
Játszadoztam a programmal, így természetesen előkerültek javítani való dolgok. :) Újdonságok a 2.171211-es verzióban az előző változathoz képest:
- hiba: ha a paletta manuálisan volt beállítva, a BIAS-t nem mindig frissítette - javítva
- kiválasztott paletta helyes jelölése (teljes blokk jelölése pirossal, nem csak az első négyzet)
- paletta generálásakor ha nincs kihasználva a 8 szín (pl. egyszínű égbolt), akkor a szomszédos palettákból vett hasonló színekkel kitölti, hogy legyen több árnyalat a ditheringhez
- dithering: maximális színeltérés szabályozható egy csúszkával, így a nagyon nem odaillő pontokat ki lehet szűrni
Title: Re: EP128pal képkonvertáló
Post by: Povi on 2017.December.12. 13:35:58
nálam valamiért a képernyő jobb szélén indul el a program, a fele ablak nem látszik, de mozgatni se tudom, ez normális? (win10)
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2017.December.12. 18:59:32
Az normális, hogy nem mozgatható, de középen kellene lennie. Normál felbontásnál nem lóghat ki. Megnézem (bár Win 10-em nincs). Köszi, hogy jelezted!
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2017.December.13. 01:32:58
Nálam XP és Win 7 alatt jól működik. A régebbi verziókkal is volt ilyen gondod?

Annyit csináltam, hogy induláskor lekérdezi a program a desktop méretét és ehhez képest állítja be az ablakot középre, szerintem így jónak kell majd lennie. Viszont nem tudom feltölteni, mert mást is elkezdtem benne, és az még nincs kész. 2-3 napon belül meglesz.
Title: Re: EP128pal képkonvertáló
Post by: Povi on 2017.December.13. 13:39:39
régebbi verziót nem néztem
viszont ebben az esetben két dolog kavarhat be:
2 monitorom van, és a jobb oldali az elsődleges.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2017.December.14. 20:06:59
Módosítottam a programon, ez a 2.171214-es verzió. Induláskor bepozícionálja magát középre, remélem, most jó lesz. (Egy monitorral nem tudtam kipróbálni.) Amik még változtak:

- Vissza tudja tölteni a saját .EPI képeit. Ez pl. arra is jó, hogy egy korábban jól beállított palettát vissza lehet nyerni vele a mentett képből.
- A verziószámot elmenti a konvertált kép fejlécébe, így látható, melyik programmal készült. A változás miatt a régieket nem olvassa vissza, csak amiben a verziószám mentve van.
- Lehet konvertálni pixelsoronként változó palettájú képeket. A bal oldali kép mellett a blokkokat jelölő bigyókra dupla kattintással lehet ezt előhozni (sorrendben: egy blokk -> karakter méretű blokkok -> grafikus sornyi blokkok). Emiatt változott picit az .EPI formátuma (jelölni kellett, hogy pixelsoronkénti paletta van-e), ezért menti a verziószámot is.
- A pixelsoronként változó paletta se ad mindig jó eredményt, ezért kipróbáltam egy olyat, hogy két egymás utáni sor színeit kombinálja: összegyűjti őket, majd felváltva teszi vissza a két sorba. Ez kikapcsolható. Sajnos nehéz megtalálni a legjobb 4 vagy 8 színt, ezen még csiszolni kell.
- A példaprogramok az új formátumot olvassák, de a pixelsoronként változó palettát egyelőre nem kezelik (ilyenkor kilépnek). Ehhez jobban bele kell ásnom magam az EXOS memóriakezelésébe és a saját LPT készítésébe.
- A konvertált képre kattintva a nagyítás helyett az adott sor palettáját jelöli ki. Szerintem így hasznosabb, mint a bal oldali fehér izén keresgélve. A nagyítás megmaradt, csak duplán kell kattintani.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2017.December.17. 01:13:26
EP128pal 2.171217 - két hibajavítás:
- Az egyiket a lányom találta: ha a program visszatöltötte az .EPI képet, a hozzá tartozó palettát nem mindig mutatta meg - javítva.
- A sorpárokban a paletta kombinálásakor a BIAS színeket is felülírta, így olyan 16 színű palettát hozott létre, ami EP-n nem is lehetséges - javítva.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2017.December.24. 12:10:03
EP128pal 2.171224 verzió. Változások:

- a konvertált képre kattintva megmutatja a képpontot a 4, 16 és 256 színű palettákban
- néhány apró hiba kijavítása
- minimális statisztika a színekről: a 4 vagy 16 színű palettára kattintva jobb gombbal megszámolja a képen az adott színű képpontokat, és meg is mutatja, hol vannak használva
- sokkal gyorsabb paletta készítés (mert nem frissíti a képernyőt állandóan)
- színes állapotsor (bár ez a gyorsulás miatt értelmét vesztette, csak hamarabb készen volt)
- kép átméretezéskor az arányok megtartása

Boldog Karácsonyt mindenkinek! :)
Title: Re: EP128pal képkonvertáló
Post by: gflorez on 2017.December.24. 14:04:43
EP128pal 2.171224 verzió. Változások:

Boldog Karácsonyt mindenkinek! :)

¡Felices fiestas! Merry christmas!   

Ez egy nagyon jó ajándék!
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.January.03. 21:34:23
EP128pal 2.180102
- Az utolsó verzióban találtam egy ordas nagy hibát: ha az átméretezés ki volt kapcsolva, akkor valami végtelen ciklus-szerű dologba keveredett a program. Igazából nem is, mert volt neki vége, de a kép méretétől függően nagyon lelassult, mialatt hasonló színekből szép absztrakt képeket generált, de mivel nem erre készült, kijavítottam.
- A pixelsoronkénti módban a sorpárok színeinek kombinálásán is csiszoltam: az eddigi "ahogy esik, úgy puffan" algoritmus helyett megpróbálja úgy szétválogatni a színeket a két sor között, hogy a hasonló árnyalatú színpárok külön sorba kerüljenek, így kevésbé lesz olyan, hogy az egyik sorban csak sötét szín lesz, a másikban meg csak világos. Ennek a célja egyébként az, hogy a két külön sor egyenként 8 + 8 BIAS színe helyett 16 közös + 8 BIAS színt használ, így néha jobb hatást eredményez.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.January.18. 00:11:43
Új verzió készült: Kotasoft EP128pal 2.180117

- Be lehet illeszteni képet a vágólapról, ehhez a bal oldali képre kell jobb gombbal kattintani. (Nem kérdez semmit, csak beilleszti.) Böngészéskor kényelmesebb így képeket próbálgatni, nem kell őket állandóan kimenteni.
- Attribútum üzemmód támogatása. Talán a legjobb minőségű képeket csinálja ebben a módban, de az eredmény eléggé képfüggő. Állatok arcáról közeli képet egész látványosan konvertál, ezért tettem be ezt a hatásvadász fotót. :) A szélső pontok súlyozása segít csökkenteni ebben az üzemmódban a képek "kockás" hatását, így nem látszanak annyira a 8 pixeles oszlopok határai.
- Új Pascal betöltőprogram, ami saját LPT-t használ, és így a maximális méretet is meg lehetett növelni 46x28 karakteresre.

A Pascal betöltőben annyi hiba van, hogy nem tudja visszaállítani az eredeti LPT címét. Egy meleg reset után újra jó lesz. Küzdöttem vele, de egyelőre nem sikerült rájönni, hogyan kéne. Ezt majd még kijavítom, de ha valakinek van kedve, megnézheti, mit rontottam el. :) Szeretném megköszönni a segítséget a fiúknak, amit a "Grafikai trükkök" topikban adtak, anélkül nem tudtam volna megcsinálni a betöltést.
Title: Re: EP128pal képkonvertáló
Post by: geco on 2018.January.18. 08:47:05
A Pascal betöltőben annyi hiba van, hogy nem tudja visszaállítani az eredeti LPT címét. Egy meleg reset után újra jó lesz. Küzdöttem vele, de egyelőre nem sikerült rájönni, hogyan kéne. Ezt majd még kijavítom, de ha valakinek van kedve, megnézheti, mit rontottam el. :)
Be kell tölteni az FF szegmenst mondjuk a kettes lapra, a BFF4h címről ki kell olvasni az LPT címét, ez EXOS 2.1 esetén B900h (EXOS 2.0 esetén BB00h), ez sajnos nem a NICK cím, hanem talán Z80 cím, ezt konvertálni kell Nick Címre, én a 6. bitet szoktam beállítani a high byte-on, így megkapjuk az F900-as Nick LPT címet. Ezt osztani kell 16-tal és a high byte-hoz hozzá OR-olni a 0c0h-t, így megkajuk a CF90h-t, és ezt kell kiírni a Nick portjaira, EXOS 2.1 esetén 82h-ra 90h, 83h-ra CFh lesz kiírva, EXOS 2.0 esetén 82h-ra B0h, 83h-ra CFh lesz kiírva.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.January.18. 10:33:25
Elvieg így csinálom, de nem működik. Valami a DIV környékén lesz, mert ha fixen kiírok 90h-t és CFh-t a kér portra, akkor jó, de az osztás után nem a várt eredmény kerül a változókba. A második WRITELN-nél pl. 63744 DIV 16 az 65424 lesz, a harmadik WRITELN-nél pedig a már rosszul kiszámolt 65424 DIV 256 az 0 lesz, így eltűnik a "F", és C0h-t hozzáadva nem CFh lesz. Eredetileg a NickAddr0-t osztottam 4096-tal, az került az LPH-ba, majd hozzáadtam CFh-t, de muszáj volt így szétcincálni, hogy lássam, miért nem azt számolja, amit várok.
Title: Re: EP128pal képkonvertáló
Post by: geco on 2018.January.18. 10:38:48
Nem tudom miért az F900 16-tal való osztás után FF90 lesz, két megoldás lehet, vagy az OR C0h előtt kiadsz egy AND 0Fh-t, vagy a 16tal való osztás helyett 4x léptetsz jobbra bitet, akkor is 0F90-et kéne kapni.
Title: Re: EP128pal képkonvertáló
Post by: BruceTanner on 2018.January.18. 12:05:48
NickAddr0: INTEGER is declaring a signed variable. When you divide by 16 it will do a signed divide.

You need an unsigned variable instead. I don't know how to do that in your Pascal, but in some you can declare NickAddr0: WORD.

----Google Translate ----

NickAddr0: Az INTEGER aláírt változót deklarál. Ha osztja 16-ig, akkor aláírja a megosztást.

Szüksége van egy aláírás nélküli változóra. Nem tudom, hogyan kell ezt tenni a Pascalban, de egyesekben kijelentheted NickAddr0: WORD.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.January.18. 12:54:38
Thanks, Bruce! Probably the problem is that the value is higher than 32767 (sign bit?) and the calculation is wrong. I will try to separate the value into two CHAR variables.

Geco: köszi a részletes magyarázatot! Shift-et és bináris OR-t nem találtam Pascalban, de majd két CHAR változóval megcsinálom este.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.January.18. 23:29:06
Sikerült az eredeti LPT címének a visszaállítása!!!! :) Valószínűleg tényleg a 32767 fölötti érték zavart be, hiába volt átállítva POKE-okkal az INTEGER a 0..65535 tartományra. Azért be kell vallani, hogy nem csak ez volt az egyetlen hiba, csináltam én is párat. :) Egyet kiemelnék: az LPT-nek kevés helyet hagytam (ez a bitmap előtt van), így nagy képnél a bittérkép első sorát felülírta az LPT vége, ez is javítva lett. Ezt a képet a Pascal program töltötte be, és utána visszaállította rendesen a képernyőt. Újfent köszönöm mindenkinek a segítséget, nagyon jó fórum ez nagyon jó társasággal!

Maga a konvertáló program most nem változott, csak a példaprogram és a leírás, de a verziószámot átírtam a mai napra, ezért újrafordítottam.

Módosítás: mégis változott a program, a konvertált kép nagyításánál volt egy hiba, ami javítva lett. Ahogy látom, még nem lett letöltve a hibás verzió.
Title: Re: EP128pal képkonvertáló
Post by: endi on 2018.January.19. 11:23:36
karakteres módú konvertálást nem akarsz csinálni? :)
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.January.19. 11:37:20
Nem. :) Azt az üzemmódot nem ismerem, meg így is jóval több lett a program, mint aminek indult (16 színű módban háttérkép készítése játékhoz).

Az az üzemmód nem a 256 színű módhoz áll legközelebb? Felbontásban és színekben mintha ugyanaz lenne, csak valahogy karakteresen éred el és a karakter kódja határozza meg a színt, ha jól értem. Vagy miben más ez, mint egy HIRES 256 képernyő?
Title: Re: EP128pal képkonvertáló
Post by: endi on 2018.January.19. 11:56:53
a karakteres módoknak az a lényege hogy van 256 féle karaktered, lehet 8x8 de 8x9 stb is.
van a két színű és 4 színű karakter mód, azaz 2 vagy 4 szín van egy karakterben, de 4 színpár van a 2 színű és 2 színpár a 4 színű módban.
azaz ha az ember képet akar konvertálni karakteres módra, akkor azt kell csinálni hogy megkeresni az azonos részeket a képen és ezek 1 karakter lesznek. olyat is érdemes csinálni hogy kis különbség esetén is azonosnak venni a karaktert (veszteséges tömörítés).

én ilyet már csináltam kb 18 éve, kiadott játékba én kezdtem el írni az editort és az ilyen karakteres konvertálót (gameboy advanced játék).
pascalban volt amúgy :)
Title: Re: EP128pal képkonvertáló
Post by: geco on 2018.January.19. 11:59:30
Karakteres módban is van 2, 4, 16, és 256 szín, és chr64, chr128, chr256 mód
Annyiban különbözik a bitmap módtól, hogy van egy külön memória rész a karakter definícióknak, (8 pixel magas karakterek esetén chr64 módban 200h , chr128-ban 400h, chr256-ban 800h a mérete)
ennek a címe található meg az LPB 6-7 pozíciójában (kis számolgatás szükséges :D ), és az LPB 4-5 pozíciójában található character map, ami a képernyőn megjelent karaktereket tartalmazza, egy bájt azonosít egy karaktert a characterset memóriában, és az jelenik meg a képernyőn.
A színek is érdekesek ebben a módban, 2 szín módban 1 színpártól egészen 4 színpárig be lehet állítani a használt színeket, és a színeket a character map karakterkódjainak felső két bitje szabályozza (1 színpár használatánál természetesen nem :D )
4 szín módban 2 x szín négyes használható, természetesen a felbntás feleződik a 2 szín módhoz képest (4 pixel széles egy karakter)
16 szín módot még sose használtam, de gondolom a paletta 16 színéről veszi a színeket, és 2 pixel széles egy karakter
256 szín módban minden karakterset byte 1 színt azonosít, és 1 pixel széles egy karakter
Title: Re: EP128pal képkonvertáló
Post by: endi on 2018.January.19. 12:02:46
jaja tényleg, azokat a furcsa módokat jól írja geco, azok kép konvertáláshoz hasznosak lehetnek.
amire én gondolok az inkább játék pálya konvertáláshoz hasznos.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.January.19. 12:38:20
Akkor ez inkább az attribútum üzemmódhoz hasonlít, de mégis más. Ha megértem pontosan, akkor majd megnézem, hogyan lehetne ezzel kibővíteni a programot. Geco magyarázata érthető, csak kell némi idő megemészteni.
Title: Re: EP128pal képkonvertáló
Post by: geco on 2018.January.19. 14:42:56
Akkor ez inkább az attribútum üzemmódhoz hasonlít, de mégis más. Ha megértem pontosan, akkor majd megnézem, hogyan lehetne ezzel kibővíteni a programot. Geco magyarázata érthető, csak kell némi idő megemészteni.
Hát igazából nem :)
Ez a mód a C64-es karakteres, meg az MSX karakteres módhoz hasonlít leginkább.

A lényege az, hogy van egy karakterkészleted, aminek a mérete függ, hogy hány karakteres módot használtál, és a karakterek magasságától (64 karaktert tartalmazó karakterkészlet esetén a méret: 64 x karakter magasság (EXOS esetén ez 9), 128 karatert tartalmazó esetén: 128 x karakter magasság (EXOS esetén ez 9, és pont ezt a módot használja két színben, 2 színpárral), 256 karaktert tartalmazó esetén: 256 x karakter magasság)

Nickben a karakterkészlet felépítése a vidó RAM-ban a következő pl egy 128 karakteres módra:
karakterek 1. sora 00-127 byte definíció a 128 karakterre
karakterek 2. sora 00-127 byte definíció a 128 karakterre
karakterek 3. sora 00-127 byte definíció a 128 karakterre
karakterek 4. sora 00-127 byte definíció a 128 karakterre
karakterek 5. sora 00-127 byte definíció a 128 karakterre
...
karakterek x. sora 00-127 byte definíció a 128 karakterre

A charactermapban csak a karakterkészlet kódjai szerepelnek csak, ez így nagyon memóriahatékonnyá teszi ezt a módot, tehát itt egy bájt x pixel sor magas karaktert ír le.
A színezés bonyolít egy picit a helyzeten, mert a karakter kódok felső két bitjével állíthatóak a kiválasztható színek.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.January.19. 16:16:14
Akkor egy kép -> ascii konverterhez hasonló, csak itt a karakterek is definiálhatók, plusz vannak színek. Ez teljesen más logika, mint sok színből kiválasztani 16-ot, aztán ditheringgel még javítani rajta.

Fel kéne osztani a képet X*Y méretű karakterekre, majd azokat, amik nagyon kicsit különböznek alakra, egy közös bitmap-pal helyettesíteni. Ezt addig folytatni, amíg 64, 128 vagy 256 különböző marad. Aztán lehetne színezni. Az mondjuk megzavarhatja a konvertálást, ha az ismétlődő részek nem X és Y többszörösének megfelelő pozíción vannak. Ki kéne próbálni, milyen hatású képet csinálna.
Title: Re: EP128pal képkonvertáló
Post by: geco on 2018.January.19. 16:23:44
lehet több karakterkészletet is használni x soronként, mondjuk minden 8 karaktersornak lehetne különböző a karakterkészlete.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.January.19. 16:33:21
Minden 8 sorhoz saját karakterkészlet az már szinte bitmap. :) Azzal az összes 8*8-as terület lefedhetô, ha mondjuk 46 karakter széles a kép. Akkor inkább mindegyik ilyen területet egy-egy konvertálandó mini képnek kellene tekinteni, és kiválogatni hozzá azt a 2 vagy 4 színt, ami leginkább jellemzi. Mint attribútum módban. :)
Title: Re: EP128pal képkonvertáló
Post by: endi on 2018.January.19. 17:01:54
hát a karakteres módnak az értelme a mem takarékoskodás, plusz spec effektek. szóval ha minden karakter egyedi, annak nem sok értelme van.
de igazából a legjobb játékok pályáihoz használni.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.January.26. 18:44:34
Kotasoft EP128pal 2.180126-os verzió változások:
- blokkonként különböző videomódok támogatása (ehhez új vezérlő van a kép bal oldalán)
- a videomódok miatt megváltozott az .EPI kép formátuma (a videomódot a blokkokba menti, a vízszintes méretet nem tárolja, stb.)
- a Pascal és Basic példaprogramok módosítása az új formátumhoz
- a pixelsoronkénti üzemmódot jobb kattintással egyszerűbben lehet be/kikapcsolni
- a kép arányos átméretezésénél be/kikapcsolható a teljes kitöltés

A változó videomódokkal kíváncsi voltam, hogy milyen hatást lehet elérni. Igazából inkább csak érdekes lett, mint látványos, de ha a Nick chip támogatja ezt, akkor érdemes kísérletezgetni vele. Talán olyankor lehet jó, mikor egy grafikus játék fölé/alá valamilyen nagyobb felbontású logót szeretnénk elhelyezni. Érdekes lehet esetleg a pixelsoronként változó videomód, mert a Nick ilyet is tud, de ahhoz nagyon át kéne alakítani a program felületét, hogy ezt kezelni lehessen. Esetleg fixen két üzemmódot váltakoztatva, pl. attribútum és 256 szín, vagy valami algoritmus megnézné, hogy melyik üzemmód lenne a legjobb... A mostani verzió csak a 9 egész számú többszörösének megfelelő méretű blokkokat támogatja, ami annyiból jó, hogy szabványos EXOS videolapokkal is használható pl. Basicből.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.January.29. 20:46:10
Ha nem unjátok még, felteszek egy újabb javítást. :) Apró hibák voltak, amik a 2.180129-es verzióban javítva lettek:

- A színátmenet nem működött a több üzemmódos módosítás óta - javítva.
- A palettabetöltés csak másodszorra sikerült - javítva.
- Kicsit átvariáltam a beállítások ablakát, hogy ami a paletta generálásához köthető, azok egymás alatt legyenek és együtt lehessen őket be/kikapcsolni.
- A 0. szín nem csak fekete lehet, hanem kiválasztható: a checkbox mellett van egy legördíthető színkiválasztó izé. Ez akkor jó, ha pl. fehér hátterű képet konvertálunk sorpáronként kombinált palettával. Ilyenkor hajlamos volt a fehér részt becsíkozni, de most kiválasztható a neki megfelelő szín.
Title: Re: EP128pal képkonvertáló
Post by: Ep128 on 2018.January.29. 23:39:53
Nekem tetszik, hogy folyton csiholod... :-)
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.January.31. 18:54:38
Akkor még egy, de ígérem, hogy ebben a hónapban már nem töltök fel több verziót. :D A palettabetöltés sajnos mégsem volt jó, ez lett kijavítva. Ha nincs ez a funkció használva, akkor az előző verzió is frankó, de zavart, hogy nem működött.

Annyit beletettem még a leírásba, hogy a ditheringnél a max. különbség kb. 40-es értéken jó. Az olyan képeknél, mint pl. ez, ahol ilyen színátmenet a háttér, nagy értéknél egészen más színeket is belekevert, ami attribútum módban csúnya lett. Az érték azt jelenti, hogy mekkora különbség lehet az eredeti képpont és a dithering után módosult képpont RGB összetevői között, a 40-es egész jó. Illetve annyiban módosult még a program, hogy ez lett a default érték, ha nincs .cnf fájl.
Title: Re: EP128pal képkonvertáló
Post by: endi on 2018.February.01. 12:14:49
lehet versenyeztetni az epimgconv-al :)
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.February.01. 12:23:00
Kíváncsiságból összehasonlítottam már. :) Nem egy kategória a két program, az epimgconv szebb képeket konvertál.
Title: Re: EP128pal képkonvertáló
Post by: Ep128 on 2018.February.02. 00:11:27
Kíváncsiságból összehasonlítottam már. :) Nem egy kategória a két program, az epimgconv szebb képeket konvertál.

De részben ez PC -n grafikus felületű, részben pedig még fejlődik... :-) ;-)
Title: Re: EP128pal képkonvertáló
Post by: ergoGnomik on 2018.February.02. 06:09:35
De részben ez PC -n grafikus felületű, részben pedig még fejlődik... :-) ;-)
:?:
Title: Re: EP128pal képkonvertáló
Post by: Zozosoft on 2018.February.02. 07:26:07
De részben ez PC -n grafikus felületű
Lemaradtál arról, hogy már az epimgconv-hoz is van grafikus felület?
Title: Re: EP128pal képkonvertáló
Post by: Ep128 on 2018.February.03. 00:35:55
Lemaradtál arról, hogy már az epimgconv-hoz is van grafikus felület?
Ezek szerint... :-) (Hol...?)
Title: Re: EP128pal képkonvertáló
Post by: Zozosoft on 2018.February.03. 07:11:13
Ezek szerint... :-) (Hol...?)
A Start menüben az ep128emu alatt.
Title: Re: EP128pal képkonvertáló
Post by: Tutus on 2018.February.03. 14:46:15
Elnézést, de továbbra is azt mondom, hogy ezeknek a szuper programoknak kellene valami központi letöltési hely!
Kicsit összevissza vagyunk.
Mint ahogy napokat kell kutatnom mondjuk, hogy hol találom az SD kártya legfrissebb image fájlját...

Nem lehetne itt valami egyszerűbb módszer erre az enerpriseforever.com-on? Vagy akár máshol, egy új domain alatt, ahol mindig a friss dolgok lennének?

Vannak olyan projektek, melyek az utóbbi években folyamatosan változtak (SD image, ep128emu stb.)

A letöltések menü nekem kicsit káosz és nekem mindig úgy tűnik, hogy itt csak régi dolgokat találok, az újakat nem.
Title: Re: EP128pal képkonvertáló
Post by: Ep128 on 2018.February.04. 00:09:47
A Start menüben az ep128emu alatt.

1) Nem nagyon használok emu -t.
2) Akkor ez NEM különálló program, mint a lentebbi (tehát jól mondtam, hogy az az egyetlen "ilyen"). :-)
3) Igazat kell adjak Tutusnak, tényleg káosz van itt a letöltéseknél!
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.February.07. 23:00:27
Ezt most csak csendben töltöm fel ide. :) Volt egy kis hiba a színkereséssel az eredeti képre kattintva, ez lett javítva. Meg annyit tettem bele, hogy a 4 és 16 színű palettára jobb gombbal kattintva nem csak megmutatja az adott színt a konvertált képen, hanem ki is jelöli a 256 színű palettán. Így egyszerűen arrébb lehet pakolni a színeket a palettákban. Ez nekem nagyon hasznos volt, amikor a játék palettáját át kellett szerkeszteni.

Elvileg nem tervezek újabb verziót, ha csak nem bukkan fel megint valami bug. A játékprogram készítéshez elég jól tudom így használni, hétvége óta nyúzom hiba nélkül. Kopp-kopp. :)
Title: Re: EP128pal képkonvertáló
Post by: Ep128 on 2018.February.08. 00:29:46
Érdekes, azt vettem észre, (lehet, hogy én vagyok a balta a beállításokkal, bár mindent kipróbáltam látszólag) hogy ha egy egyszínű (!) háttér előtt vannak betűk és egy ábra / kép, akkor az egyszínű (!) (pl. fekete) hátteret valamiért nem képes visszaadni a konvertáláskor. Holott ott semmit nem kellene variálnia, csak feketén hagyni ami amúgy is fekete. :-) (Tele lesz ilyen "zizivel", tehát "odaszemetel" a program, ahol nem is kellene semmit változtasson.)
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.February.08. 01:29:49
Tudsz ilyen képet feltölteni? Milyen grafikus módban próbáltad?

Azt be kell vallani, hogy messze nem tökéletes a program. Szerintem két gyengesége van: a palettához való helyes színek kiválasztása és attribútum módban a 8 pixelhez tartozó két szín meghatározása. Látszólag egyszerűnek tűnik, hogy van az egyszínű háttér, akkor azt a színt kéne használni, de figyelembe kell venni, hogy még vannak más színű területek is. Két módszert próbáltam ki: először számszerűen a legtöbbször előforduló színeket használta a program, de az sokszor nem volt jó, mert ha egy kis részlet más színű, akkor az kimarad. Ezután próbáltam, hogy az árnyalatban legtávolabbi színeket használja, és az egymáshoz közeli árnyalatok egyikét eldobja. Ezzel gyakran jobb eredményt lehet elérni, de a legjobb valahol a kettő között volt, ezért van a csúszka. Ha nem tökéletesek a színek, akkor azokból próbál valamit kihozni, és olyankor lesznek más színűek a hátterek, vagy csíkos a kép. Foglalkoztat a dolog, hogyan lehetne javítani, de nem jutottam előrébb, hiába kísérleteztem. István epimgconv programjába is belenéztem, az máshogy működik, és sokkal szebb is eredménye.

Amire kitaláltam, arra viszont jó: Paint-ben megrajzolt képet átalakít Enterprise-ba betölthető formátummá. Eleve EP-s színekkel rajzolok, így jó lesz. A decemberi találkozón, amin az az egyetlen Enterprise volt, ott nézegettem a konvertált képeket, amiatt lódult meg a fejlesztés a soronkénti palettával, saját LPT-vel és attribútum móddal. Ezeket az elején mind nem terveztem beletenni, csak hát meredek volt a lejtő. :)

Tedd fel ide légyszi a képet, és akkor próbálgatom én is.
Title: Re: EP128pal képkonvertáló
Post by: IstvanV on 2018.February.08. 13:20:58
1) Nem nagyon használok emu -t.
2) Akkor ez NEM különálló program, mint a lentebbi (tehát jól mondtam, hogy az az egyetlen "ilyen"). :-)

Egy csomagban tölthető le az emulátorral innen (https://github.com/istvan-v/ep128emu/releases), de egyébként a konvertáláshoz nincs szükség az emulátorra, és természetesen a képek megjelenítéséhez sem.

Érdekes, azt vettem észre, (lehet, hogy én vagyok a balta a beállításokkal, bár mindent kipróbáltam látszólag) hogy ha egy egyszínű (!) háttér előtt vannak betűk és egy ábra / kép, akkor az egyszínű (!) (pl. fekete) hátteret valamiért nem képes visszaadni a konvertáláskor. Holott ott semmit nem kellene variálnia, csak feketén hagyni ami amúgy is fekete. :-) (Tele lesz ilyen "zizivel", tehát "odaszemetel" a program, ahol nem is kellene semmit változtasson.)

Valószínűleg nem teljesen fekete az eredeti háttér, és a program dither használatával próbálja közelíteni a színt.

Két módszert próbáltam ki: először számszerűen a legtöbbször előforduló színeket használta a program, de az sokszor nem volt jó, mert ha egy kis részlet más színű, akkor az kimarad. Ezután próbáltam, hogy az árnyalatban legtávolabbi színeket használja, és az egymáshoz közeli árnyalatok egyikét eldobja. Ezzel gyakran jobb eredményt lehet elérni, de a legjobb valahol a kettő között volt, ezért van a csúszka.

Ez ugyan nem feltétlenül jó megoldás, de az epimgconv a szín eltérés négyzetének az összegét próbálja minimalizálni. Azaz például ha egy pixel színe R0,G0,B0 volt eredetileg és R1,G1,B1 lenne konvertálva, akkor a "hiba" ennél a pixelnél (R1-R0)^2+(G1-G0)^2+(B1-B0)^2. A cél az, hogy a teljes képen ennek az összege, azaz a "zaj" (https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio) a legkisebb legyen. A program valójában nem RGB színtérben dolgozik, de a működés elve szempontjából ez nem lényeges. A keresésre használt algoritmus nem tökéletes, gyakorlatilag véletlenszerű színekkel tölti fel a palettát, majd ciklusban addig próbálja a színeket egyenként optimalizálni, amíg tovább már nem javítható egyik sem. A konvertálás minőségének (-quality) az emelése növeli a kezdeti véletlenszerű állapotok számát. A sebességet különböző trükkökkel próbáltam javítani, az értelmetlen vagy ismétlődő szín keresés elkerülésével, így azonban nem túl olvasható a kód. :)

A fent leírt elv jó lenne dither nélkül, azonban nem veszi figyelembe, hogy dither használatakor előnyösebb lehet egymástól távolabbi színeket választani. Erre a problémára ez a program (https://people.eecs.berkeley.edu/~dcoetzee/downloads/scolorq/) jó megoldást talált, ez a zajt "gaussian blur" effektus után minimalizálja, ami egyszerre valósítja meg a dithert és az ahhoz optimális palettát. Az epimgconv-ban azonban csak hagyományosabb dithert tudtam megvalósítani, és néhány trükköt a paletta javítására. Ezek közül az egyik azt használja ki, hogy a Floyd-Steinberg és hasonló dither algoritmusok az aktuális sorról tovább viszik a "hibát" a következőre, paletta és attribútum keresésnél pedig már az így módosított színeket célozza a program. Így jól kihasználható a soronként változó paletta és attribútumok, hátránya azonban a konvertált képeken látható jellegzetes csíkozás. Egy másik trükk részben az scolorq megoldására hasonlít, bár kezdetlegesebb. A szín hiba összeg számításakor nem csak a teljes felbontású képet veszi figyelembe, hanem kisebb felbontásokat és "kevert" színeket is. Azaz a paletta és attribútum keresésnél például egy 8x1-es attribútum cellát 4x1-re és 2x1-re is konvertálja (a szomszédos pixelek egyszerű átlagának a számításával), és ezeknél a papír és tinta szín közötti átmenetek is lehetségesek (4x1-nél 50%, 2x1-nél 25% és 75% is). A teljes hiba pedig az összes tesztelt felbontásnál számított érték súlyozott összege. Ez elvileg az egymástól távolabbi és jobban ditherelhető színek felé tolja el az eredményt, bár a gyakorlatban nem igazán jól működik.
Title: Re: EP128pal képkonvertáló
Post by: szipucsu on 2018.February.08. 23:08:52
az egyszínű (!) (pl. fekete) hátteret valamiért nem képes visszaadni a konvertáláskor. Holott ott semmit nem kellene variálnia, csak feketén hagyni ami amúgy is fekete.
Az nem soronként változó paletta volt? Ott minden sorban meghatározza a színeket, és ha mondjuk feketéhez kicsit hasonló színből van még, és nincs elég szín a feketének, belövi a feketére is azt, ami hasonlít hozzá.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.February.08. 23:30:16
Valószínűleg tényleg az lehet, hogy nem teljesen fekete az a háttér, hanem valahol két EP szín között van, erre nem gondoltam.

Köszi a magyarázatot, István! Érthető és eléggé részletes is. :)

A pixelek színeltérését az EP128pal háromféle módon számolja, ezeket ki lehet kiválasztani. Az általad leírt képletekhez hasonlóan ezek vannak:
- egyszerű: Abs(R1-R0)+Abs(G1-G0)+Abs(B1-B0)
- súlyozott: Abs(R1-R0)*3+Abs(G1-G0)*4+Abs(B1-B0)*2
- exponenciális: (R1-R0)^2+(G1-G0)^2+(B1-B0)^2 <- ez ugyanaz, amit te is használsz

Érzetre valahogy a súlyozott lett a legjobb. Abból indultam ki, hogy a zöld a legfényesebb szín, aztán a piros, a kék pedig a legsötétebb. Ezért ha pl. a zöld eltér, azt jobban észrevenni, ezért azt súlyozza és számításkor nagyobb hibának veszi. Ha a kék tér el ugyanannyi árnyalatot, azt kevésbé lehet érezni.

Az EP128pal előbb az összes palettát megcsinálja minden sorra (vagy blokkra) egyszerre, csak utána készíti el a képet. A tiéd jobb megoldás, mert a következő sorhoz már a dithering után korrigált pixelekhez válogatja ki a színeket. Mondjuk ez csak soronkénti palettához lehet hatékony, ha nagyobb méretű blokkok vannak (pl. szabvány EXOS videolapok) egy palettához, akkor már nem. Az én programom az elején nem támogatta a soronkénti palettát, azért lett ilyen a feldolgozás sorrendje, aztán később eszembe se jutott.

Azt néztem, hogy attribútum módban mindkét attribútumnál végigpörgeted a 16 színt, aztán a legkisebb hibát adó színeket választod ki. Kipróbáltam, de nem értettem, mihez képest számítja a hibát. :) Ha pixelenként néztem a 8 pixeles cellában, akkor olyan színeket választott ki, ami a legközelebb esik az eredeti színhez, ezért a dithering hatása nagyon lecsökkent, szinte mintha ki lett volna kapcsolva. Ha pedig a 8 pixelt együtt számoltam, akkor változatosabb színeket talált, de sokszor két teljesen oda nem illő szín különbsége adta a legkisebb hibát, így meglehetősen fura képeket konvertált. Végül hagytam a csudába és az lett a módszer, hogy a 8 pixelből két nagyon eltérő színt választott ki, a dithering rutin pedig majd megoldja. Ha az egyik szín sokszor szerepel, akkor azt mindenképp kiválasztja, a második színnél pedig annyit figyelt, hogy lehetőleg 1 pixelnél több helyen is előforduljon. Úgyhogy lenne még hová fejlődni, lehetne csiszolni rajta, de max. annyit érnék el vele, hogy talán megközelítené az epimgconv minőségét, de az már létezik és jó is, akkor meg minek. :)
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.February.08. 23:36:41
Ha nagyon nem jönne össze az a fekete háttérszín, ott van az a checkbox, amit bekarikáztam. Azzal rá lehet venni a programot, hogy méltóztasson igazi feketét használni.
Title: Re: EP128pal képkonvertáló
Post by: IstvanV on 2018.February.08. 23:49:56
A pixelek színeltérését az EP128pal háromféle módon számolja, ezeket ki lehet kiválasztani. Az általad leírt képletekhez hasonlóan ezek vannak:
- egyszerű: Abs(R1-R0)+Abs(G1-G0)+Abs(B1-B0)
- súlyozott: Abs(R1-R0)*3+Abs(G1-G0)*4+Abs(B1-B0)*2
- exponenciális: (R1-R0)^2+(G1-G0)^2+(B1-B0)^2 <- ez ugyanaz, amit te is használsz

Érzetre valahogy a súlyozott lett a legjobb. Abból indultam ki, hogy a zöld a legfényesebb szín, aztán a piros, a kék pedig a legsötétebb. Ezért ha pl. a zöld eltér, azt jobban észrevenni, ezért azt súlyozza és számításkor nagyobb hibának veszi. Ha a kék tér el ugyanannyi árnyalatot, azt kevésbé lehet érezni.

Az epimgconv valójában YUV színtérben számolja a hibát, ami már "súlyozott", bár azért is használtam, mert eredetileg Plus/4-re konvertált a program. Ezért is állítható egy paraméterrel a szín (U, V) összetevők relatív súlya a világossághoz (Y = 0.299*R + 0.587*G + 0.114*B) képest.

Quote
Azt néztem, hogy attribútum módban mindkét attribútumnál végigpörgeted a 16 színt, aztán a legkisebb hibát adó színeket választod ki. Kipróbáltam, de nem értettem, mihez képest számítja a hibát. :) Ha pixelenként néztem a 8 pixeles cellában, akkor olyan színeket választott ki, ami a legközelebb esik az eredeti színhez, ezért a dithering hatása nagyon lecsökkent, szinte mintha ki lett volna kapcsolva.

Itt lehet jelentősége az előző hozzászólásom végén leírt megoldásnak, ami a dither lehetőségét is próbálja figyelembe venni a színek keresésénél, ez az attr16.cpp-ben például a 160. sornál található.
Title: Re: EP128pal képkonvertáló
Post by: Ep128 on 2018.February.08. 23:54:23
Köszönöm, hogy így rámozdultatok és ráadásul nektek volt igazatok! Tényleg nem 100% -ban fekete a fekete, csak az álmos fejemnek tűnt annak. De ideteszem az "eredményt" és az eredeti képet is:
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.February.09. 00:25:48
Ez tényleg egy program-gyilkos kép ezzel a lehetetlen háttérszínnel. :D Én világoskékkel futottam bele hasonlóba: volt olyan árnyalatú ég, amit sehogy se tudott megtalálni, csak pöttyözgetett össze-vissza.
Title: Re: EP128pal képkonvertáló
Post by: IstvanV on 2018.February.09. 16:25:22
Minden 8 sorhoz saját karakterkészlet az már szinte bitmap. :) Azzal az összes 8*8-as terület lefedhetô, ha mondjuk 46 karakter széles a kép. Akkor inkább mindegyik ilyen területet egy-egy konvertálandó mini képnek kellene tekinteni, és kiválogatni hozzá azt a 2 vagy 4 színt, ami leginkább jellemzi. Mint attribútum módban. :)

Karakteres mód használatának elsősorban video konvertálásnál lenne értelme. Itt a legfontosabb, hogy kis méretű legyen a konvertált adat, még azon az áron is, ha a kép rossz minőségű lesz és nem színes. Egy "Spectrum méretű" kép 64 8 magasságú karakterrel például csak 1280 byte tömörítetlenül, LPIXEL módban viszont 6144 byte lenne.

- a videomódok miatt megváltozott az .EPI kép formátuma (a videomódot a blokkokba menti, a vízszintes méretet nem tárolja, stb.)

Talán hasznos lehetne IVIEW formátumban (https://wiki.enterpriseforever.com/index.php?title=Epimgconv_le%C3%ADr%C3%A1s#Az_EPimgconv.2FIVIEW_form.C3.A1tum_le.C3.ADr.C3.A1sa) is menteni, itt elvileg bármi változhat tetszőleges számú soronként, bár az EP-s képnéző programokat eddig csak az epimgconv által is támogatott módokkal teszteltük. Az emulátor csomagja tartalmaz egy iview2png programot is, amivel az ilyen képek PNG formátumra konvertálhatók.
Title: Re: EP128pal képkonvertáló
Post by: endi on 2018.February.09. 16:40:28
gondolkodtam azon hogy a gracha módot lehetne használni videóhoz. a jpg és más hasolnó tömörítések kis kockákból építkeznek, amelyekben néhány paraméteres "átmenet" van (nagyon erősen leegyszerűsítve), szóval létre kell hozni ilyen gracha karaktereket és videóhoz jó lehet...

ez itt egy nagyon alacsony minőségre állított jpg részlete:

Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.February.27. 01:42:16
Felmerült, hogy szöveget kellene kiírni a játékban, ezért bekerült egy karakter szerkesztő a programba, egy új gombbal érhető el felül. A konvertálás nem változott. Lehet, hogy külön util is lehetett volna, de úgyis együtt van használva a konvertálóval, meg így egyszerűbb volt megcsinálni, szinte kész volt hozzá a felület. Minimális funkciókat tartalmaz, pl. karakter képének tologatása erre-arra, töltés-mentés, stb. Mentésnél csak azokat a karaktereket menti, amik használva vannak, így pl. ha csak számjegyeket írunk ki, akkor egészen pici lesz a font fájl. Kiírásnál ezért meg kell nézni, hogy az adott karakter szerepel-e a táblázatban, a karakterkódokat is elmenti. Az .EPF fájl szerkezete megtalálható a leírásban.
Title: Re: EP128pal képkonvertáló
Post by: sanyike on 2018.February.27. 23:07:36
A konvertált képet a mellékelt BASIC programmal próbáltam betölteni...
"Ez az üzemmód nem támogatott." hibát kapom.
Mit csinálok rosszul?
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.February.27. 23:50:33
A Basic példaprogram csak szabványos EXOS videolapokat használ, így ott a pixelsoronként változó paletta nem használható, illetve az attribútum mód sincs elkészítve. Meg lehetne csinálni POKE-okkal, de úgyis nagyon lassú lenne. 4, 16 és 256 színű képeket be tud tölteni, ha 9 soros blokkok vannak és nem nagyobb a kép 42x27 karakternél.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.February.28. 10:30:19
Találtam hibát. :oops: A karakterek visszatöltésénél, ha kevesebb karakter volt mentve, mint amennyi a képernyőn volt, a maradékot nem törölte, ill. a karakterek számát se frissítette. Ez lett javítva.
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.March.03. 16:51:39
Fórumtali közben :) apró hibajavítások feltöltése: a fontkészlet betöltésénél nem figyelmeztetett, ha a szerkesztett karakterek nem voltak mentve, illetve az "ä" jel (146-os karakter) kapott még egy pöttyöt, mert az egyik lemaradt. Egyenként rajzoltuk meg őket a lányommal, de ezt a karaktert biztos én csináltam, mert ő észrevette volna. :)

(István hozzászólása az EPI-IVIEW konverterrel hová tűnt?)
Title: Re: EP128pal képkonvertáló
Post by: Zozosoft on 2018.March.03. 20:54:57
(István hozzászólása az EPI-IVIEW konverterrel hová tűnt?)
Ezek szerint nem hallucináltam, hogy volt itt egy ilyen :oops:
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.April.26. 23:44:21
Csináltam egy apró módosítást. Ha be van kapcsolva a sorpárok színeinek kombinálása, sokszor csíkos lett az egyszínű háttér, mert a két egymás utáni sorban nem volt azonos szín. Most ilyenkor a legelső (legtöbbször előforduló) színt mindkét sor palettájának elejére beteszi. A BIAS keresése is módosult: nem azt nézi, hogy a 8 színből minél több előforduljon, hanem minél nagyobb számú képpont legyen BIAS színekből. Így pl. ha fehér a háttér, akkor a 248-255. színeket választja ki. E két módosítással nagyrészt (nem mindig) eltűnt a csíkozódás az olyan jellegű képekről, ahol egyszínű a háttér (mint a képen), de más képeknél is szebb lett a konvertálás szerintem.
Title: Re: EP128pal képkonvertáló
Post by: endi on 2018.April.27. 01:34:13
tök jó!
érdemes ilyenekkel próbálkozni, mindeféle kis trükk jó lehet, de ha nem, akkor is szórakoztató és elgondolkodtató
Title: Re: EP128pal képkonvertáló
Post by: Tomato77 on 2018.November.07. 23:30:23
Apró módosítás: 16 színnél ha ki van választva egy jó BIAS színcsoport, akkor bekapcsolt checkbox esetén megtartja azokat a színeket, és csak az első 8 színt keresgéli. Kis változás, de kellett a Banana 2-höz.

Ha módosítunk a BIAS színeken, akkor automatikusan bekapcsolja ezt az új checkbox-ot, illetve annyi változott még, hogy ha változtatunk a palettán, akkor kikapcsolja az automatikus paletta generálást.