Welcome, Guest. Please login or register.


Author Topic: ASM EP-n - hogyan kezdjem? (Read 56284 times)

Offline Ep128

  • EP addict
  • *
  • Posts: 1849
  • Country: hu
    • Honlapom
Re: ASM EP-n - hogyan kezdjem?
« Reply #90 on: 2015.December.27. 00:39:23 »
(... szerintem úgy általában is szokjuk meg, hogy az igazi EP-re is kitesszük, ami EMU -hoz kirakódik. (Feltéve persze, hogy nem kifejezetten EMU -hoz köthető a dolog, akkor naná, hogy nem. :-) ) Részemről is 10 -ből kb. 8x igazi Ep -n nyomulok, szóval én is örülnék, ha a jövőben ezt a trendet követnénk! :-) )

Offline Tutus

  • EP lover
  • *
  • Posts: 679
  • Country: hu
    • Enterprise 128
Re: ASM EP-n - hogyan kezdjem?
« Reply #91 on: 2015.December.27. 08:08:37 »

Igazi vason nem teszteltem, de mennie kell...

(Attachment Link)

EP-n tök jól működik, gratula. Én szerintem soha meg sem fogom közelíteni ezt a szintet gépi kódú programozásommal(?) .... :D

Offline sanyike

  • User
  • *
  • Posts: 99
  • Country: hu
Re: ASM EP-n - hogyan kezdjem?
« Reply #92 on: 2015.December.27. 20:22:10 »
Áá csak próbálkozom...
Nemrég kezdtem ezzel foglalkozni, remek hobby.
Csak gányolgatok... de nagyon élvezem :-)...


Köszönöm, hogy kipróbáltad.

Offline sanyike

  • User
  • *
  • Posts: 99
  • Country: hu
Re: ASM EP-n - hogyan kezdjem?
« Reply #93 on: 2015.December.29. 21:01:56 »
Ha valaki meg tudna osztani egy-két gondolatot a maszkolásról? ...
Szóval, hogy a sprite színhelyes maradjon a háttér előtt vagy mögött .


ALT-ra lövöldözik (egyelőre csak egy irányba) :-)


[ Guests cannot view attachments ]

[ Guests cannot view attachments ]

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: ASM EP-n - hogyan kezdjem?
« Reply #94 on: 2015.December.29. 21:30:18 »
hát ha nem akarsz elszíneződést, akkor nem használhatod az xor-os módszert
ez esetben el kell tárolni a háttér képet a sprite mögött és mozgáskor azzal törölni (azaz visszarajzolni a hátteret)
vagy eleve egy háttér bufferen van az egész háttér grafika és akkor onnan rajzolod vissza
illetve az is megoldás hogy double bufferbe rajzolsz és minden frame-ben minden sprite-ot újrarajzolod az előzőleg letörölt bufferre
játéktól függ melyik a jó megoldás
Vigyázat! Szektás vagyok! :)

Offline sanyike

  • User
  • *
  • Posts: 99
  • Country: hu
Re: ASM EP-n - hogyan kezdjem?
« Reply #95 on: 2015.December.29. 22:13:36 »
hát ha nem akarsz elszíneződést, akkor nem használhatod az xor-os módszert

Értem.
Az or, xor, and megoldásra azért gondoltam, mert a sprite editor amit használok

AMSprite

a sprite adaton felül generál egy 256 byt-ból álló ".maskLookupTable" blokkot, csak fogalmam sincs hogy (s mire) kell használni...



jelenleg 2 lapot használok

valahogy így:

eleje: a 2-es lapot megjelenítem
az egyesre közben betöltöm a hátteret és sprite-ot, amikor kész;
az egyes lapot jelenítem meg
közben a kettes lapra betöltöm a hátteret és a sprite-ot, ha kész;
vissza az elejére :-)
---
a sprite or-al megy a hátérre...  de ugye ez nem az igazi ...

Offline geco

  • EP addict
  • *
  • Posts: 7081
  • Country: hu
    • Támogató Támogató
Re: ASM EP-n - hogyan kezdjem?
« Reply #96 on: 2015.December.29. 22:42:27 »
A masklookup table nem a sprite maskolásához kell?
Betöltöd a sprite egyik bájtját, annak a bájt értékének megfelelő pozíciójából a masklookup table-ből kiolvasod a maszkolási értéket, majd AND-eled a háttérrel, és ezzel OR-ozod a sprite bájtot.

Offline sanyike

  • User
  • *
  • Posts: 99
  • Country: hu
Re: ASM EP-n - hogyan kezdjem?
« Reply #97 on: 2015.December.29. 23:09:32 »
, majd AND-eled a háttérrel, és ezzel OR-ozod a sprite bájtot.

jaaa, szóval ha pl. a sprite bájtom 02H, akkor a mask értékem a táblázatból kiolvasott 3. érték azaz 55H?


Code: [Select]
.maskLookupTable ; lookup table for masks, by byte. AND with screen data, then OR with pixel data.
defb &FF,&AA,&55,&00,&AA,&AA,&00,&00,&55,&00,&55,&00,&00,&00,&00,&00,&AA,&AA,&00,&00,&AA,&AA,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &55,&00,&55,&00,&00,&00,&00,&00,&55,&00,&55,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &AA,&AA,&00,&00,&AA,&AA,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&AA,&AA,&00,&00,&AA,&AA,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &55,&00,&55,&00,&00,&00,&00,&00,&55,&00,&55,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &55,&00,&55,&00,&00,&00,&00,&00,&55,&00,&55,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00
defb &00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00,&00

Offline geco

  • EP addict
  • *
  • Posts: 7081
  • Country: hu
    • Támogató Támogató
Re: ASM EP-n - hogyan kezdjem?
« Reply #98 on: 2015.December.29. 23:22:02 »
Igen, és érdemes a lookup table-t xx00h címen kezdeni a sebesség miatt.

Offline sanyike

  • User
  • *
  • Posts: 99
  • Country: hu
Re: ASM EP-n - hogyan kezdjem?
« Reply #99 on: 2015.December.30. 00:35:57 »
Köszönöm, ki fogom próbálni...

Offline geco

  • EP addict
  • *
  • Posts: 7081
  • Country: hu
    • Támogató Támogató
Re: ASM EP-n - hogyan kezdjem?
« Reply #100 on: 2015.December.30. 11:02:45 »
Elmeletileg egy gyors megoldas a sprite kirajzolasahoz (egy bajtra):
HL tartalmazza a sprite cimet
B. tartalmazza a lookup table cimenek magas helyierteket
DE pedig a kepernyo cimet, ahova a sprite kerul

Code: [Select]
     ld c,(hl)
     ld a,(bc)
     ex de,hl
     and (hl)
     ex de,hl
     or c
     ld (hl),a

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: ASM EP-n - hogyan kezdjem?
« Reply #101 on: 2015.December.30. 11:32:49 »
Egy másik lehetséges megoldás (SP = sprite adat, D = maszk táblázat felső 8 bit, HL = video cím):
Code: ZiLOG Z80 Assembler
  1.         pop     bc                      ; 10
  2.         ld      e, c                    ; 14
  3.         ld      a, (de)                 ; 21
  4.         and     (hl)                    ; 28 + 2
  5.         or      e                       ; 32
  6.         ld      (hl), a                 ; 39 + 2.5
  7.         inc     hl                      ; 45
  8.         ld      e, b                    ; 49
  9.         ld      a, (de)                 ; 56
  10.         and     (hl)                    ; 63 + 3
  11.         or      e                       ; 67
  12.         ld      (hl), a                 ; 74 + 2.5
  13.         inc     hl                      ; 80
Ez nem tartalmazza az eredeti képernyő tartalom mentését, amit például így lehet megoldani (itt 3 karakter a sprite szélessége, SP = sorok közötti eltolás byte-ban - 6), de talán hatékonyabb lenne a fenti rajzoló rutinba beépíteni:
Code: ZiLOG Z80 Assembler
  1.         ldi
  2.         ldi
  3.         ldi
  4.         ldi
  5.         ldi
  6.         ldi
  7.         add     hl, sp
  8.         ...
« Last Edit: 2015.December.30. 11:56:34 by IstvanV »

Offline sanyike

  • User
  • *
  • Posts: 99
  • Country: hu
Re: ASM EP-n - hogyan kezdjem?
« Reply #102 on: 2015.December.31. 00:03:36 »
Elmeletileg egy gyors megoldas a sprite kirajzolasahoz (egy bajtra):


Valamiért ez nem működik...
nem is igazán értem;
a DE tartalmazza a sprite címet, nem látom a kódban hogy DE-re mikor történik kiírás..


Egy másik lehetséges megoldás (SP = sprite adat, D = maszk táblázat felső 8 bit, HL = video cím):

hű, ezt még emésztgetem... :-)

Offline sanyike

  • User
  • *
  • Posts: 99
  • Country: hu
Re: ASM EP-n - hogyan kezdjem?
« Reply #103 on: 2015.December.31. 00:31:23 »
Code: [Select]

     ld a,(bc)
     and (hl)
     ld (hl),a
     ld a,(de)
     or (hl)
     ld (hl),a


bc = mask táblából kiolvasott érték
hl = képernyő cím
de = sprite cím

Még nem az igazi :-( ;

[ Guests cannot view attachments ]

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: ASM EP-n - hogyan kezdjem?
« Reply #104 on: 2015.December.31. 09:44:25 »
a DE tartalmazza a sprite címet, nem látom a kódban hogy DE-re mikor történik kiírás..

Az utolsó utasításnak LD (DE), A-nak kellene lennie LD (HL), A helyett.