Welcome, Guest. Please login or register.


Author Topic: Grafikai trükkök (Read 207993 times)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Grafikai trükkök
« Reply #75 on: 2013.April.13. 19:38:58 »
Valamit megnézhetnétek igazi EP-n. Van az Orkdemo3 és abban a DEMO3H.DAT, ami a valahányadik rész indítója. Na ebbe raktam bele asszem egy LPT trükköt, ami azt csinálja hogy a szöveg felső pár pixeljét eltolja pixelenként. Emu alatt sajna nem műxik, de gyanítom, hogy minden tévével se.
Nem tudom már mit csinál ez a trükk, de az biztos hogy csak véletlen jöttem rá ahogy próbálgattam az LPT értékeket.
Vigyázat! Szektás vagyok! :)

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Grafikai trükkök
« Reply #76 on: 2013.April.13. 19:39:51 »
Ja és az effekt csak akkor látszik amikor a fel-le mozgó szöveg fent van.
Vigyázat! Szektás vagyok! :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Grafikai trükkök
« Reply #77 on: 2013.April.13. 19:41:24 »
Quote from: Lacika
Képet hogy tudunk konvertálni a scroll-rutinhoz?
epimgconv (232 karakter x 200 sor méretű kimeneti file, 16 színű PIXEL formátumban, fix palettával), és aztán egy rövid C programmal konvertáltam a scroll.bin file-t. Ennek a formátuma:
- keret szín (1 byte)
- FIXBIAS * 8 (1 byte)
- paletta (8 byte)
- a 464 byte oszlop, az egyes oszlopok felülről lefelé (200 byte), és aztán balról jobbra

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Grafikai trükkök
« Reply #78 on: 2013.April.13. 19:43:36 »
Quote from: geco
Pedig direkt a linuxos EP128emuval néztem, mert a virtuális XP alatt tapasztaltam ,hogy nem minden megy úgy, ahogy kéne :D Egy picit darabos volt a scroll, és nem csak azért, mert byte-onként mozog, hanem néha megakad egy picit, de megnézem újra :)
Emulátoron jobb minőségű scrollhoz érdemes "resample to monitor refresh rate" (OpenGL kell hozzá) módot beállítani.
« Last Edit: 2013.April.13. 19:46:37 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Grafikai trükkök
« Reply #79 on: 2013.April.13. 19:46:25 »
Quote from: geco
Úgy fest 50Hz mellett a byte-onkénti scroll is jó, lehet 25 Hz-en se látszik darabosnak.
Elsősorban a sebesség számít, a 25 fps még elfogadható (nem darabos), de byte-onként túl gyors lehet a scroll. A 12.5 fps-es byte-onkénti scroll pedig már kissé darabos a 12.5 fps miatt.

Offline geco

  • EP addict
  • *
  • Posts: 7219
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #80 on: 2013.April.13. 19:56:00 »
Quote from: IstvanV
Emulátoron jobb minőségű scrollhoz érdemes "resample to monitor refresh rate" (OpenGL kell hozzá) módot beállítani.
Köfiii :)

Offline geco

  • EP addict
  • *
  • Posts: 7219
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #81 on: 2013.April.13. 19:57:40 »
Quote from: IstvanV
Elsősorban a sebesség számít, a 25 fps még elfogadható (nem darabos), de byte-onként túl gyors lehet a scroll. A 12.5 fps-es byte-onkénti scroll pedig már kissé darabos a 12.5 fps miatt.
és tényleg :), a képkimozfató cuccomban karakterenként mozgatok ki, és mégse darabos :)

Offline geco

  • EP addict
  • *
  • Posts: 7219
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #82 on: 2013.April.13. 20:03:31 »
Csináltam egy kis tesztet: (16 push)

kód és nullázott terület FC szegmens alatt: ( byte / frame)
LDIR: 0d8fh byte
PUSH: 2f84h byte
kód FC alatt, nullázott terület FC fölött (csak push): 2f84h
Az LDIR is megegyezett az előző értékkel
kód FC felett, nullázott terület FC alatt (csak push): 291eh
kód is és nullázott terület is FC felett (csak push): 1fbch

Nem szúrtam el valamit? Mert ha a kód nem videólapon volt, akkor a törlés mindenhol ugyanolyan sebességgel futott.
« Last Edit: 2013.April.13. 20:12:27 by geco »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Grafikai trükkök
« Reply #83 on: 2013.April.13. 20:07:46 »
Csak érdekességként, a fenti scroll.com programban így történik a belépő oszlopok feltöltése (ez egy sor mindkét képernyő pufferbe):
Code: [Select]
       pop     bc
        ld      l, c
        ld      a, b
        ld      (de), a
        set     6, d
        and     55h
        rla
        or      (hl)
        ld      (de), a
        ex      de, hl
        ld      bc, 0c000h + 80
        add     hl, bc
        ex      de, hl

Az SP egy átmeneti pufferre mutat, amely két egymás melletti oszlopot tartalmaz (jobbról balra és felülről lefelé), a H pedig egy táblázat címének a felső byte-ja az egy pixel eltoláshoz. A DE a video memória cím, a 2. lapon található az egyik képernyő puffer, a 3. lapon pedig az egy pixellel balra eltolt verzió.

Az átmeneti puffer feltöltése így történik (két byte egy oszlopban):
Code: [Select]
       pop     de
        ld      (hl), e
        set     1, l
        ld      (hl), d
        inc     l
        inc     l
Ez a kód négyszer van "kiírva" a ciklusban, és az utolsó két INC L helyett INC HL-t használ (16 byte-os határra igazított puffert feltételezve). Az SP a kép adatra (scroll.bin tartalma) mutat, a HL pedig az átmeneti pufferre. A másolás pazarol némi CPU időt, és lehetne optimalizáni (pl. felváltva az egyik képkockában másolni, a másikban pedig rajzolni, így egyenletesebb és a legrosszabb esetben alacsonyabb lenne a CPU használat), bár a rajzoló ckilus (fent) CPU igénye nagyobb.

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: Grafikai trükkök
« Reply #84 on: 2013.April.13. 20:08:54 »
Quote from: Zozosoft
A gyors RAM tesztek is PUSH-al nullázzák a RAM-ot.
Az ENTERPRESS-ben is volt egy rutin, amit Hsoft írt, ott képernyőtörlés volt megoldva PUSH-al
*** Speicherplatz zu klein

Offline geco

  • EP addict
  • *
  • Posts: 7219
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #85 on: 2013.April.13. 20:26:57 »
A pufferbe miért hagyod ki minden páratlan bájtot?
Ott még végzel minden egyes bájton egy eltolást, és oda csordul a kitolt bit?

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Grafikai trükkök
« Reply #86 on: 2013.April.13. 20:31:57 »
Quote from: geco
A pufferbe miért hagyod ki minden páratlan bájtot?
Oda a szomszédos oszlop kerül. A rajzolásnál minden sorban egy POP utasítás két byte-ot olvas a pufferből.

Offline geco

  • EP addict
  • *
  • Posts: 7219
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #87 on: 2013.April.13. 20:32:08 »
Ja,a BC'-t használod, mert ha nem, akkor még azzal lehetne gyorsítani, hogy BC'-nek értéket adsz az oszlopkiírás előtt, nem?

EXX
LD BC,0c000h+80h
EXX

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Grafikai trükkök
« Reply #88 on: 2013.April.13. 21:01:56 »
Quote from: geco
Ja,a BC'-t használod, mert ha nem, akkor még azzal lehetne gyorsítani, hogy BC'-nek értéket adsz az oszlopkiírás előtt, nem?
A BC' nem lenne jó, mert akkor nem tudom a DE-hez hozzáadni. Viszont van egy másik lehetőség a gyorsításra:
Code: [Select]
        ld      bc, 0c000h + 80
        ...
        pop     hl
        ld      a, h
        ld      h, high scrollTable
        ld      (de), a
        set     6, d
        and     55h
        rla
        or      (hl)
        ld      (de), a
        ex      de, hl
        add     hl, bc
        ex      de, hl

Offline geco

  • EP addict
  • *
  • Posts: 7219
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #89 on: 2013.April.13. 21:32:59 »
Quote from: IstvanV
A BC' nem lenne jó, mert akkor nem tudom a DE-hez hozzáadni. Viszont van egy másik lehetőség a gyorsításra:
Code: [Select]
       ld      bc, 0c000h + 80
        ...
        pop     hl
        ld      a, h
        ld      h, high scrollTable
        ld      (de), a
        set     6, d
        and     55h
        rla
        or      (hl)
        ld      (de), a
        ex      de, hl
        add     hl, bc
        ex      de, hl
bocs, tényleg :lol: