Welcome, Guest. Please login or register.


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

Offline geco

  • EP addict
  • *
  • Posts: 5430
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
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: 5430
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
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: 5430
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
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.

Online Povi

  • EP addict
  • *
  • Posts: 1875
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 69.0.3497.100 Chrome 69.0.3497.100
    • View Profile
    • 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: 5430
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
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: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
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: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
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:

* circle.out (0.52 kB. 4x2 - viewed 71 times.)
* circle.asm (6.55 kB - downloaded 72 times.)

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

Online Povi

  • EP addict
  • *
  • Posts: 1875
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 69.0.3497.100 Chrome 69.0.3497.100
    • View Profile
    • 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

Online Zozosoft

  • EP addict
  • *
  • Posts: 13530
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 62.0 Firefox 62.0
    • View Profile
    • 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: 4806
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 58.0 Firefox 58.0
    • View Profile
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.

Online Povi

  • EP addict
  • *
  • Posts: 1875
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 69.0.3497.100 Chrome 69.0.3497.100
    • View Profile
    • 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

Online Povi

  • EP addict
  • *
  • Posts: 1875
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 70.0.3538.77 Chrome 70.0.3538.77
    • View Profile
    • 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: 5430
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 60.0 Firefox 60.0
    • View Profile
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.

Online Povi

  • EP addict
  • *
  • Posts: 1875
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Chrome 70.0.3538.77 Chrome 70.0.3538.77
    • View Profile
    • 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: 5430
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 60.0 Firefox 60.0
    • View Profile
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.