Welcome, Guest. Please login or register.


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

Offline geco

  • EP addict
  • *
  • Posts: 7218
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #675 on: 2018.October.04. 11:09:00 »
Szerintem ez lenne a négy színű, ha nem szúrtam el semmit :D

Code: [Select]
PutPixel:
.y:     equ  $ + 1
        ld   hl, 0
        xor  a
        srl  h
        rr   l
        rra
        srl  h
        rr   l
        rra
        ld   h, l
        ld   l, a
.x:     equ  $ + 1
        ld   de, 0
        ld   a,01h
        srl  e
        rla
        srl  e
        rla
        ld   c,a
        ld   b, high pixelmask
        ld   a,(bc)
        add  hl, de
        set  7, h
        ld   c, a
        cpl
        ld   b, a
.color: equ  $ + 1
        ld   a, 0
        and  0x0f
        ld   d, high (PixelTable)
        ld   e, a
        ld   a, (de)
        and  c
        ld   c, a
        ld   a, (hl)
        and  b
        or   c
        ld   (hl), a
        ret

        defs low -$
PixelTable
        db   0ffh,0fh,0f0h,00h
pixelmask
        db   88h,44h,22h,11h
« Last Edit: 2018.October.04. 11:20:41 by geco »

Offline geco

  • EP addict
  • *
  • Posts: 7218
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #676 on: 2018.October.04. 11:19:45 »
És ez a 2 színű:

Code: [Select]
PutPixel:
.y:     equ  $ + 1
        ld   hl, 0
        xor  a
        srl  h
        rr   l
        rra
        srl  h
        rr   l
        rra
        ld   h, l
        ld   l, a
.x:     equ  $ + 1
        ld   de, 0
        ld   a,01h
        srl  e
        rla
        srl  e
        rla
        srl  e
        rla
        srl  e
        rla
        ld   c,a
        ld   b, high pixelmask
        ld   a,(bc)
        add  hl, de
        set  7, h
        ld   c, a
        cpl
        ld   b, a
.color: equ  $ + 1
        ld   a, 0                   ;szín érték vagy 00h, vagy 0ffh
        and  c
        ld   c, a
        ld   a, (hl)
        and  b
        or   c
        ld   (hl), a
        ret

        defs low -$
pixelmask
        db   80h,40h,20h,10h,08h,04h,02h,01h

Offline geco

  • EP addict
  • *
  • Posts: 7218
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #677 on: 2018.October.04. 11:22:18 »
Bocs, a táblázatokat módosítani kellett, mert az első X pozícióba kerül a magasabb érték, a másodikba az alacsonyabb, és így tovább.

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: Grafikai trükkök
« Reply #678 on: 2018.October.04. 15:39:49 »
Szerintem ez lenne a négy színű, ha nem szúrtam el semmit :D

Nekem a 00, f0, 0f, ff pixeltable sorrend jobbnak tűnik.
de a mask még nem az igazi - szőrös lesz a kép

az and 7-et lecseréltem and 3-ra, hogy 0-3 intervallumba legyen a szín
« Last Edit: 2018.October.04. 15:47:04 by Povi »
*** Speicherplatz zu klein

Offline geco

  • EP addict
  • *
  • Posts: 7218
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #679 on: 2018.October.04. 16:52:41 »
Nekem a 00, f0, 0f, ff pixeltable sorrend jobbnak tűnik.
de a mask még nem az igazi - szőrös lesz a kép

az and 7-et lecseréltem and 3-ra, hogy 0-3 intervallumba legyen a szín
Igazad van :)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Grafikai trükkök
« Reply #680 on: 2018.October.06. 14:52:51 »
Talán működik:

Code: ZiLOG Z80 Assembler
  1. PutPixel:
  2. .y:     equ  $ + 1
  3.         ld   hl, 0
  4. .x:     equ  $ + 1
  5.         ld   de, 0
  6.         ld   h, l
  7.         ld   l, 0
  8.         add  hl, de
  9.         scf
  10.         rr   h
  11.         rr   l
  12.         sra  h
  13.         rr   l
  14.         ld   a, e
  15.         and  03h
  16.         ld   de, pixelmask
  17.         or   e
  18.         ld   e, a
  19.         ld   a, (de)
  20.         ld   c, a
  21.         cpl
  22.         ld   b, a
  23. .color: equ  $ + 1
  24.         ld   a, 0
  25.         and  03h
  26.         ld   e, a
  27.         ld   a, (de)
  28.         and  c
  29.         ld   c, a
  30.         ld   a, (hl)
  31.         and  b
  32.         or   c
  33.         ld   (hl), a
  34.         ret
  35.  
  36.         defs low -$
  37. PixelTable
  38.         db   00h,0f0h,0fh,0ffh
  39. pixelmask
  40.         db   88h,44h,22h,11h
  41.  
« Last Edit: 2018.October.06. 14:56:07 by IstvanV »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Grafikai trükkök
« Reply #681 on: 2018.October.07. 16:22:40 »
Teszt program a fenti rutin kissé módosított változatával:

[ Guests cannot view attachments ]
[ Guests cannot view attachments ]

Szerk.: optimalizált PutPixel, pontosabb kör rajzolás, és ditherelt pixel rutin.
« Last Edit: 2018.October.07. 20:13:54 by IstvanV »

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: Grafikai trükkök
« Reply #682 on: 2018.October.09. 15:53:16 »
Teszt program a fenti rutin kissé módosított változatával:

(Attachment Link)
(Attachment Link)

Szerk.: optimalizált PutPixel, pontosabb kör rajzolás, és ditherelt pixel rutin.

tetszik az LPT készítése, lopom az ötletet ;-)

viszont itt vszínűleg elírás van:
Code: [Select]
        ld    bc, 011ch                 ; BORD_VID
        ld    d, 00h
        exos  16
        ld    bc, 011ch                 ; BIAS_VID
        ld    d, 00h
        exos  16
        halt
        halt

ugyanazt a két változót állítod egymás után

viszont a kérdésem az, hogy a két HALT-ra mi szükség van utána?
*** Speicherplatz zu klein

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14775
  • Country: hu
    • http://enterprise.iko.hu/
Re: Grafikai trükkök
« Reply #683 on: 2018.October.09. 16:39:35 »
viszont a kérdésem az, hogy a két HALT-ra mi szükség van utána?
Hogy biztosan lefusson videó megszakítás, ami kiírja az új értékeket a Nick-nek.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: Grafikai trükkök
« Reply #684 on: 2018.October.09. 16:46:37 »
ugyanazt a két változót állítod egymás után

Valóban hiba. :oops: Ez egyébként egy régebbi egyszerű "demó" (köröket rajzolt 16 színű módban), amibe beépítettem a 4 színű PutPixel rutint.

Quote
viszont a kérdésem az, hogy a két HALT-ra mi szükség van utána?

Így biztosan be tudja állítani az EXOS az új keret színt és biast video megszakításban, bár itt a gyakorlatban nem sok jelentősége van. Akkor lenne elsősorban, ha a változók állítása után a program azonnal tiltaná az EXOS megszakítás kezelését.

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: Grafikai trükkök
« Reply #685 on: 2018.October.10. 11:18:02 »
Így biztosan be tudja állítani az EXOS az új keret színt és biast video megszakításban, bár itt a gyakorlatban nem sok jelentősége van. Akkor lenne elsősorban, ha a változók állítása után a program azonnal tiltaná az EXOS megszakítás kezelését.
Hm... és tényleg! HALT nélkül, és egy HALT-tal is maradt a keretszín.
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: Grafikai trükkök
« Reply #686 on: 2019.August.11. 20:19:18 »
Vízszintes scrollozásra van valami trükk?

Nem kéne teljes képernyő, csak kb. 150 pixel magas, de teljese szélesség (80 karakteres).

Pl. az "Áttörés"-ben hogy csinálják? (persze az nem a legjobb példa, emlékeim szerint kicsit szaggat),
Vagy bármilyen mászkálós játékban, ahol az emberke nagyjából fix helyen van, és a háttér mozog mögötte.
*** Speicherplatz zu klein

Offline geco

  • EP addict
  • *
  • Posts: 7218
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #687 on: 2019.August.12. 08:26:31 »
Vízszintes scrollozásra van valami trükk?

Nem kéne teljes képernyő, csak kb. 150 pixel magas, de teljese szélesség (80 karakteres).

Pl. az "Áttörés"-ben hogy csinálják? (persze az nem a legjobb példa, emlékeim szerint kicsit szaggat),
Vagy bármilyen mászkálós játékban, ahol az emberke nagyjából fix helyen van, és a háttér mozog mögötte.
Sztem az Áttörés újrarajzolja a képet mindig, TVC-ről lett konvertálva.
A legjobb, és leggyorsabb scroll az, ha csak legszélső fél karakter oszlopot másolod minden fázisban, és az LPT címet lépteted eggyel jobbra, így 4 pixeles vízszintes scrollod lesz.

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: Grafikai trükkök
« Reply #688 on: 2019.August.12. 09:03:19 »
Sztem az Áttörés újrarajzolja a képet mindig, TVC-ről lett konvertálva.
A legjobb, és leggyorsabb scroll az, ha csak legszélső fél karakter oszlopot másolod minden fázisban, és az LPT címet lépteted eggyel jobbra, így 4 pixeles vízszintes scrollod lesz.

de ha jól értem, és pl. van egy 15 képernyő szélességű pályám, akkor előre le kéne tárolni az egészet, és azelőtt csúsztatom az LPT ablakot? De már egy 3-4 képernyővel teli lesz a memória.
És mi van akkor, ha a pálya véletlenszerű? (pl. random hegyes háttér)
*** Speicherplatz zu klein

Offline geco

  • EP addict
  • *
  • Posts: 7218
  • Country: hu
    • Támogató Támogató
Re: Grafikai trükkök
« Reply #689 on: 2019.August.12. 09:28:27 »
de ha jól értem, és pl. van egy 15 képernyő szélességű pályám, akkor előre le kéne tárolni az egészet, és azelőtt csúsztatom az LPT ablakot? De már egy 3-4 képernyővel teli lesz a memória.
És mi van akkor, ha a pálya véletlenszerű? (pl. random hegyes háttér)
Nem kell előre legenerálni, generálhatod csak azt az oszlopot, vagy esetleg egy picivel nagyobb területet.
Random hegynél meg generálhatod a Random hegy aktuális fél karakter oszlopát.