Navigátorposledních 10 z diskuze |
Assembler 9 - Znaky, znakové sady a VIDEORAMDostáváme se k zábavnější části v seriálu o programování assembleru na C64 a to je praktická ukázka dovedností počítače Commodore 64. Standartní znaková sada C64 se nachází na adresách $D000 - $DFFF pod basic ROM. Znaků je celkem 1024. Tabulku znaků najdete (snad) na konci lekce. Znaky máme malé, velké a malé inverzí a velké inverzní. Každých z nich je 256. Jeden znak zabírá v paměti 8 bajtů.
Znakové sadyI když máme standartní znakovou sadu, neznamená to, že bychom nemohli použít znakovou sadu svoji. Na adrese $D018 (53272) můžeme přepnout datovou část znakové sady, takže po přepnutí můžeme mít znakovou sadu například od adresy $2000. Do této datové části si můžeme nakreslit znakovou sadu svoji a tuto používat.
Vysvětlení k tabulce je následující. Standartní znaková sada jsou vlastně znakové sady dvě. Znaková sada velká se zapíná příkazem POKE 53272,21 a malá příkazem POKE 53272,23. Příkaz poke nastavuje hodnotu přímo na adresu. LDA #24 Barevné znaky - MulticolorMulticolor (dále jen MC) znaky se zapínají na adrese $D016. Vlastnosti adresy $d016 je v tabulce názorně popsán:
MC znak nemá rozměry 8*8 bodů, ale jen 4*8. V MC módu se vždy dva bity vedle sebe semknou v jeden, který se obarví dle následujícího schéma.
Obarvení znaku je pak jednoduché. Pozadí znaku (00) má barvu obrazovky , barvy MC volíme na adresách D022,D023 a třetí barvu volíme nastavením barvy na ColorRAM od adresy D800. Znamená to, že znak může mít 4 barvy. Toto můžeme využít například u znakových sad větších než 8*8 pixelů (protože v MC je rozměr znaku degradován na 4*8). Vytváříme-li znakovou sadu 16*16 pixelů, 16*8, nebo barevné pozadí hry, MC znaky určitě využijeme s přehledem. Máme-li v paměti vícebarevnou znakovou sadu 16x16, zobrazení pak vypadá následovně Takto vypadá připravená znaková sada pro 16*16 Takto po zapnutém multicolor módu a takto pokud přepneme znakovou sadu, kterou máme v paměti např. od adresy $2000 !!! POZOR !!! Pro barvu na Colorram můžeme volit pouze barvy v rozmezí 0-7 !! Extended color módExtended mód (dále EM) je druhý a zároveň poslední hardwarově podporvaný barevný mód znaků. V tomto módu se neobarvuje znak, ale pozadí znaku. A to na adresách $D022, $D023, $D024. Je-li režim zapnut, obarvení znaků je podle toho, jaké znaky píšeme. Znak normálně napsaný bez atributů je nepodbarven. Znak ze shiftem má svoji barvu, inverzní znak svoji a inverzí znak ze shiftem opět svoji barvu. Tento režim se zapíná na adrese $D011. Popis adresy zde:
Při zapnutí tohoto módu znaků zůstavá rozlišení znaků standartně 8*8 pixelů. Nic se nezdvojuje jako u Multicolor znaků. Zapnout EM můžeme následovně: LDA $D011 Tento režim znaků nám dovoluje sice zobrazit podbarvené znaky, ale zato nám omezí jejich počet pouze na 64. Pro nedočkavce jsem si připravil jeden prográmek pracující v přesušení. A jelikož jsme zatím přerušení neprobírali, chcete-li jej opravdu pochopit dobře, moc ho zatím nestudujte. Tento program vám zatím jen předvede možnosti Extended color módu. Máteli FCIII nebo nějaký jiný cartridge, nejdříve ho vypněte (KILL aspol) a spus»te program SYS 4096. VIDEORAM , COLORRAM a práce s níVideoram se standartně nachází na adresách $0400 - $07E8. Má 40 sloupců a 25 řádků. Přesně takto je organizovaná i ColorRAM, která je na adresách $D800 - $DBE8 . To znamená , že každý znak má svůj barevný kód. Znak na adrese $0438 má svoji barvu na adrese $D838 atd. Commodore64 umí ale přesunout VIDEORAM hardwarově i na jinou adresu než $0400. Nejprve je důležité říci, že pamět C64, která je 64KB je organizována ve čtyřech blocích po 16KB. Tyto bloky se přepínají na adrese $DD00.
Videoram má ukazatel na adreses $0288. Na adrese $0288 se nachází horní byte videoram. Prepneme-li ale pouze tuto hodnotu, stane se, ze uvidíte "zamrzlou" obrazovku. Ke správnému přepnutí je zapotřebí nastavit správný bit na adreses $D018, která se stará o znakovou sadu a bank paměti videoram. Chceme-li přepnout videoram na jiné místo v paměti (v jiném bloku), musíme také přepnout bank paměti na adrese $DD00.Pro správné pochopení přepínání videoram je také znalost adresy $D018.
Pro přehled je zde tabulka možnosti posunu videoram a k ní hodnoty pro volbu znakové sady. Videoram od $2000 - $23e8
Videoram od $4000 - $43e8
Videoram od $8000 - $83e8
Videoram od $C000 - $C3e8
ASCII tabulka znaku Commodore 64
|
Poslední recenzereakce na článkyTOP 10 HRY
|