ENTERPRISE KLUB
2019. szeptember 7., 1055 Budapest, Nyugati tér 9. 14-19 óráig
Részletek
Welcome, Guest. Please login or register.


Author Topic: PC -> EP képkonverzió (Read 174401 times)

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13429
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: PC -> EP képkonverzió
« Reply #615 on: 2016.December.19. 13:47:23 »
- debugger nélkül, rendes programként indítható betöltő :oops:
Erre két megoldás is használatos, az egyik, a teljes VT-DOS alatt futó, 0100h-ra töltödő .COM file. A korábban felrakott KEPNEZO az ilyen.
A másik pedig a BASIC-be tölthető .CAS. Mivel itt nincs gépi kódú formátum (mint nálunk az 5-ös fejléc), ezért egy BASIC utasítás sorral kezdődik, ami USR-rel meghívja a gépi kódú részt. Itt van ez a fajta képnézegető forrás is.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
Re: PC -> EP képkonverzió
« Reply #616 on: 2016.December.19. 13:54:45 »
Egyelőre javítottam két hibát: a "hiba" rutin nem működött és a video adat CRTC címzés szerinti "megkeverése" is bugos volt.

* loadkep.s (4.28 kB - downloaded 73 times.)
decompress_m0.s
« Last Edit: 2016.December.19. 14:42:49 by IstvanV »

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13429
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: PC -> EP képkonverzió
« Reply #617 on: 2016.December.19. 14:49:43 »
Lett belőle .CAS :-) így módosítva az elejét
Code: [Select]
org 6639
db 0FH,0AH,0,0DDH
db " USR"
db 96H,"6659"
db 95H,0FFH,0,0,0,0,0 ; 20 byte-os fej
;

    macro mops n
        rst   30h
        defb  n
    endm

        di
        ld    sp, 2000h
        jp    main
ds 2000h-$,0

Azt ugye jól vettem észre, hogy még nem mindenféle képpel megy? Elsőre eredeti TVC-s képpel próbáltam de csak kilépett :oops: Aztán csináltam egy m0-ásat.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
Re: PC -> EP képkonverzió
« Reply #618 on: 2016.December.19. 15:16:06 »
Azt ugye jól vettem észre, hogy még nem mindenféle képpel megy? Elsőre eredeti TVC-s képpel próbáltam de csak kilépett :oops: Aztán csináltam egy m0-ásat.

A formázatlan, RLE (vagy egyéb az epcompress -m0 kivételével) tömörített, és a nem megfelelő méretű képeket nem tudja betölteni. Az eredeti TVC-s képnéző programnál a szélesség és a magasság is pixel felbontással állítható (de egyik sem lehet nagyobb a szabványos TVC képernyőnél), a loadkep.s esetében viszont csak egész számú byte lehet a szélesség, a magasság pedig egész számú 4 pixel magas "karakter". Az előbbi ugyanis a kép nem használt területét 0 színű pixelekkel tudja feltölteni, de az epimgconv kimeneténél nem garantált, hogy a 0. paletta szín és a keret színe azonos. Megoldható azonban, hogy a régebbi képekkel is kompatibilis legyen.

A Git forráskódban kiegészítettem a "KEP+" fejlécet a következőkkel:
- 12. byte: a keret színe
- 14. és 15. byte: tömörített paletta adat mérete (csak -palres 1 és epcompress formátum esetén, egyébként 0)
« Last Edit: 2016.December.19. 15:21:30 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
Re: PC -> EP képkonverzió
« Reply #619 on: 2016.December.20. 21:45:37 »
Továbbfejlesztett képnéző program:
* loadkep.zip (22.31 kB - downloaded 61 times.)

- támogatja az RLE tömörített (-outfmt 55), formázatlan (ilyenekkel nem tudtam kipróbálni) és epcompress -m2 (-outfmt 51 vagy 56) képeket is
- ha a kép szélessége vagy magassága nem "CRTC kompatibilis", akkor felfelé kerekíti a méretet, de az így hozzáadott 1-3 sorban szemét jelenhet meg (ilyen képet még nem teszteltem)
- több képet is meg tud jeleníteni FILE01.KEP, FILE02.KEP, stb. sorrendben, a Space tölti a következőt
- Í vagy Esc billentyűre kilép
- soronként változó paletta (-palres 1): az időzítésén még lehetne javítani, valószínűleg 35 karakter szélességig működik megfelelően
- interlace mód
- az I és P billentyűkkel be- és kikapcsolható a CRTC interlace, alapértelmezés szerint kikapcsolt, ilyenkor is van interlace, de a páratlan félkép függőleges eltolása nélkül
- az E és O billentyűkkel cserélhető a félképek sorrendje (az E az alapértelmezett) interlace (I) módban, véletlenszerű hogy melyikkel jó a kép :)
- valószínűleg vannak még javítandó hibák :oops:
- az interlace kompatibilis változat nem fut TVC32-n, ehhez a NO_INTERLACE változó 1-re állításával újra kell fordítani, de az ilyen verzió nem fogadja el az interlace képeket

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13429
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: PC -> EP képkonverzió
« Reply #620 on: 2016.December.20. 23:52:44 »
Továbbfejlesztett képnéző program:
Első ránézésre teljesen jól működik valódi gépen is! :smt038

Quote
de az így hozzáadott 1-3 sorban szemét jelenhet meg
Valóban. Ha jól nézem az eddigi TVC-s képek közt is van ilyen.
Esetleg az utolsó pár sort zerofillezni?

Quote
- több képet is meg tud jeleníteni FILE01.KEP, FILE02.KEP, stb. sorrendben, a Space tölti a következőt
Lehetne még egy visszalépés gomb is?

Quote
- soronként változó paletta (-palres 1): az időzítésén még lehetne javítani, valószínűleg 35 karakter szélességig működik megfelelően
Esetleg erre valami teszt ábrákat tudnál generálni? Konvertált fényképeken nem igen sikerült felfedeznem semmi feltűnőt.

Quote
- az I és P billentyűkkel be- és kikapcsolható a CRTC interlace, alapértelmezés szerint kikapcsolt, ilyenkor is van interlace, de a páratlan félkép függőleges eltolása nélkül
- az E és O billentyűkkel cserélhető a félképek sorrendje (az E az alapértelmezett) interlace (I) módban, véletlenszerű hogy melyikkel jó a kép :)
Következő képnél ezek visszaállnak alaphelyzetbe?

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13429
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: PC -> EP képkonverzió
« Reply #621 on: 2016.December.21. 12:10:31 »
Egy adag konvertált próbakép.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 49.0 Firefox 49.0
    • View Profile
Re: PC -> EP képkonverzió
« Reply #622 on: 2016.December.21. 13:24:01 »
Valóban. Ha jól nézem az eddigi TVC-s képek közt is van ilyen.
Esetleg az utolsó pár sort zerofillezni?

Ez a verzió már tartalmazza azt is, de csak egyszerű interlace és soronként változó paletta nélküli képeknél működik:
* loadkep.asm (10.5 kB - downloaded 61 times.)
Javítottam még a file méretének az ellenőrzését, 256 byte alatt nem fogadta el, de nagyon egyszerű képek tömörítve lehetnek ilyen kis méretűek. Indításkor visszaállítja a file számát "file01.kep"-re, így kilépés után egyszerű RUN paranccsal újra futtatható.

Quote
Lehetne még egy visszalépés gomb is?

Most már van, a Del billentyűre visszalép, de nem ellenőrzi a file01.kep túllépését, tehát utána file00.kep következik, majd fild99.kep. :oops: Illetve előre lépésnél a file99.kep (ha valóban ilyen sok kép van) után hiba történik, 000000.kep lesz a hosszúságot 10-ről 11-re növelve.

Quote
Esetleg erre valami teszt ábrákat tudnál generálni? Konvertált fényképeken nem igen sikerült felfedeznem semmi feltűnőt.

Ezekkel tesztelhető az időzítés, és az emulátor is összehasonlítható a valódi géppel:
* tesztkep.zip (9.42 kB - downloaded 68 times.)

Az 1-11. kép 32-42 karakter szélességű, soronként véletlenszerű sorrendben 00h, 55h, 45h, 45h palettával. A 12. kép csak a néggyel nem osztható magasságot teszteli. Az időzítés a megszakításkezelő rutin elején állítható:
Code: ZiLOG Z80 Assembler
  1. irqRoutine:                             ; 19 (IM 2)
  2.         ex    af, af'                   ; 23
  3.         nop                             ; 27
  4.         push  bc                        ; 38
  5.         push  de                        ; 49
  6.         push  hl                        ; 60
Itt a NOP törlése például balra mozdítja a képhibát, több vagy lassabb utasítás beszúrása pedig jobbra. Megfelelően beállítva elvileg jó lehet a 37 karakter széles kép is.

Quote
Következő képnél ezek visszaállnak alaphelyzetbe?

Igen.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13429
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: PC -> EP képkonverzió
« Reply #623 on: 2016.December.21. 21:45:19 »
Ezekkel tesztelhető az időzítés, és az emulátor is összehasonlítható a valódi géppel:
Minimális eltérést látok.
Az 5. képnél jelenek meg a hibák, emulátorban az utolsó oszlopban teljesen, valódi gépen az utolsó oszlop kb 1/3-tól.
A 6. képen jobbról a harmadik oszlop, emulátoron teljesen villog, maradék 2 állandó, valódin kb a harmadik oszlop felétől, és a második villog, utolsó állandó.
A 7. képen jobbról 5 oszlop, emulátoron a ötödik teljesen villog, maradék 4 állandóan hibás, valódi gépen a ötödik felétől, és a negyedik villog, a maradék három állandó.
Stb :-)


Quote
A 12. kép csak a néggyel nem osztható magasságot teszteli.
Itt pontosan mit is látunk? Kicsit "szürkepenészes" :-) a négyzetrács. Emulátoron és a gépen is egyformán.
« Last Edit: 2016.December.21. 21:51:11 by Zozosoft »

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13429
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: PC -> EP képkonverzió
« Reply #624 on: 2016.December.21. 22:03:24 »
Plusz egy megfigyelés: TVC 37 karakter az kb EP 43-nak felel meg. Átlag TV-n itt már éppen egy csak egy icipici keret marad kétoldalt, eggyel több már keretmentesnek mondható.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
Re: PC -> EP képkonverzió
« Reply #625 on: 2016.December.21. 22:03:32 »
Azt lenne még érdemes megnézni, hogy milyen mértékű késleltetésnél (extra NOP vagy egyéb utasítások az irqRoutine elején) kezd megjelenni a hiba a kép bal szélén valódi gépen.

Itt pontosan mit is látunk?

Ez csak a kép alján a nem használt sorok feltöltését teszteli.

Plusz egy megfigyelés: TVC 37 karakter az kb EP 43-nak felel meg. Átlag TV-n itt már éppen egy csak egy icipici keret marad kétoldalt, eggyel több már keretmentesnek mondható.

Valóban, ezért is alapértelmezett a pixel aspect ratio = 0.878 beállítás TVC-nél, ami a video órajelek aránya (12500000 / 14237536). A 37/43 is kb. 0.86.
« Last Edit: 2016.December.21. 22:09:53 by IstvanV »

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13429
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: PC -> EP képkonverzió
« Reply #626 on: 2016.December.21. 22:21:09 »
Valóban, ezért is alapértelmezett a pixel aspect ratio = 0.878 beállítás TVC-nél, ami a video órajelek aránya (12500000 / 14237536). A 37/43 is kb. 0.86.
Ennek akkor az a kellemetlen következménye, hogy ugyan el lehet érni a CPC-s 40x200-as méretet, hogy esetleg CPC-s játékokat lehessen átírni, viszont olyan programot kéne választani, ahol a szélén csak valami nem lényeges van, ami nem baj, ha nem látszik minden megjelenítőn.
Viszont ez azt jelenti, hogy a paletta váltást is elég 37 karakterig tuningolni :-) Mi lenne ha háttér regiszterek az IRQ rutiné lennének, és akkor 3 pár PUSH/POP helyett csak két EXX kéne?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
Re: PC -> EP képkonverzió
« Reply #627 on: 2016.December.21. 22:34:01 »
Mi lenne ha háttér regiszterek az IRQ rutiné lennének, és akkor 3 pár PUSH/POP helyett csak két EXX kéne?

Át lehetne írni ilyenre, de akkor csak hamarabb jelenne meg a hiba. :) Valójában növelni kellene a várakozást, ez például még jól működik az emulátoron:
Code: ZiLOG Z80 Assembler
  1. .   2365  08           EX    AF, AF'
  2. .   2366  C5           PUSH  BC
  3. .   2367  D5           PUSH  DE
  4. .   2368  E5           PUSH  HL
  5. .   2369  29           ADD   HL, HL
  6. .   236A  00           NOP
  7. .   236B  ED 73 5F 1E  LD    (1E5F), SP
De a NOP helyén INC HL (+2 ciklus) már nem. A valódi gépen 1-2 ciklussal többnek tűnik a késleltetés, így talán 15 ciklus várakozás (ADD HL, HL és NOP) helyett 12-13 lenne megbízható. Így még jó emulátoron a 37 szélességű (szürke keretes) kép, tehát nem túl rövid:
Code: ZiLOG Z80 Assembler
  1. .   2365  08           EX    AF, AF'
  2. .   2366  C5           PUSH  BC
  3. .   2367  D5           PUSH  DE
  4. .   2368  E5           PUSH  HL
  5. .   2369  18 00        JR    236B
  6. .   236B  ED 73 5F 1E  LD    (1E5F), SP
Szerk.: 14 ciklus javítja a 38-as képet is, de nem tudom, akkor nem lesz-e valódi gépen hiba a bal oldalon.

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13429
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
    • http://enterprise.iko.hu/
Re: PC -> EP képkonverzió
« Reply #628 on: 2016.December.21. 22:39:57 »
Azt lenne még érdemes megnézni, hogy milyen mértékű késleltetésnél (extra NOP vagy egyéb utasítások az irqRoutine elején) kezd megjelenni a hiba a kép bal szélén valódi gépen.
Ha az elején 4 db NOP van, akkor jelenik meg a bal oldali első oszlopban.
3 db NOP lesz a jó, ekkor a 7. képnél az utolsó oszlop harmadától jelenik meg. Ez meg átlag TV-n már ki is lóg.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 50.0 Firefox 50.0
    • View Profile
Re: PC -> EP képkonverzió
« Reply #629 on: 2016.December.21. 22:46:08 »
Esetleg a 3 és 4 NOP között még meg lehetne próbálni a 13 (pl. OR A, RET C, NOP), 14 (INC HL, NOP, NOP) és 15 ciklust (ADD HL, HL, NOP) is, hogy pontosan meg lehessen találni a még használható időzítés határát. De a 12 jónak tűnik 37 karakterhez emulátoron és valódi gépen is.