Programozástechnika: Karakterscroll | |||||||||
24 szavazatból)
( | |||||||||
Bevezető A ZX Spectrumon legegyszerűbben megvalósítható scroll rutinok egyikére mutatok példát. Bár kétségtelen, hogy ez a legkevésbé szívesen alkalmazott scroll, mégis fontos mérföldkő a bonyolultabb scrollok megértése felé vezető úton. (Milyen szépen fogalmaztam...) Feladat
A feladatban 8x8 pixeles standard ASCII karaktereket
írunk ki adott karaktersor 32. oszlopába, majd az egész
sort egyel balra toljuk. Elméleti háttér
Standard ASCII karakterkészlet
Karakterkészlet a Spectrumon
Karakter pozíció addr = $40 + $0500 + $00 = $0540 ahol a $40 = 2. karaktersor $0500 = 5. pixelsorA Spectrum soronként 256 pixel megjelenítését teszi lehetővé, amit nagyon okosan 32 byte-on ír le. Az-az egy byte-on 8 pixelt. Ez azért lehetséges, mert a Spectrum külön kezeli az attribútumokat a a pixel adatoktól, így egy pixel leírható 1 biten (igaz vagy hamis). Ez rendkívűl memóriatakarékos eljárás, azonban, mint később látni fogjuk, nagyon megnehezíti a programozók életét. A videomemória a $4000-$57FF területen a pixel-, míg az $5800-$5AFF területen az attribútum adatokat tárolja. Az egyes harmadok: 0. $4000-$47FF 1. $4800-$4FFF 2. $5000-$57FFPélda: Határozzuk meg 100. pixelsor 8. byte-jának címét: 100 div 64 = 1 --> 2. képernyőharmad 100 mod 64 = 36 --> a 2. harmad 36.sorát keressük 36 div 8 = 4 --> 3. karaktersor 36 mod 8 = 4 --> 3. pixelsor addr = $4000 + ($01 * $0800) + $60 + $0300 + $08 = $4B68 (19304) ahol $4000 = képernyő memória kezdő címe $01 * $0800 = képernyő harmad $60 = karaktersor $0300 = pixelsorElsőre kicsit bonyolult, de bele lehet jönni... A látvány nem túl szép, de nagyon hatásos. Úgy megy 50 fps-al, mint a huzat. A cscrleft.asm.zip tartalmazza a Karakterscroll balra c. effekt részletes leírását és elméleti bemutatóját a témáról; a cscrleft.tap.zip fájl pedig emulátorban futtatható TAP formátumban. Jó kódolást! | |||||||||
Publikálás a portálon: 0000-00-00 00:00:00 Utolsó módosítás: 2023-05-14 16:27:17 |