| Programozástechnika: Karakterscroll | |||||||||
|
(25 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. pixelsor
A 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 = pixelsor
Első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 | |||||||||



Cikk értékelése: 4,76