V dnešním díle se opět ponoříme do grafických možností osmibitové techniky. Ukážeme si, jak na celkem pomalém počítači Commodore C64 s taktem okolo 1 MHz využít jeho potenciálu hardwarové grafiky tzv. “spritů”.
Sprite - skřítek
Je využití hardwarové grafiky, která se zobrazuje nezávisle na grafické či znakové RAM. Lze zobrazit 8 nezávisle se na sobě pohybujících obrázků o rozměrech 24x21 bodů nebo-li 3x21 bytů. Každý z těchto osmi spritů může mít svou barvu, polohu i datový zápis. Pokud využijeme přerušení procesoru a polohu paprsku vykreslující obraz na monitoru, je možno zobrazit i více těchto spritů. Tím bychom ale už zabrousili do oblasti strojového kódu mimo základní možnosti grafického obvodu.
Animace spritů
Výhoda tohoto hardwarového řešení, je také ve využití animací těchto spritů. Jde o rychlé přenastavovaní parametru hodnoty, která řídí informaci odkud se budou z paměti načítat data potřebná pro vykreslení obrázku. To velmi ovlivňuje rychlost pohybu grafiky zejména u her. Při pohybu postavičky ve hře, není nutno softwarově zpracovávat pozadí za postavou, a zatěžovat tak procesor.
editor spritů
Další možnosti spritů
Jen tak na okraj bych zmínil možnost nastavení kolize spritů kde jde určit, který sprite při pohybu přes jiný sprite bude zobrazován v popředí, nebo se naopak schová za sprite před ním. Lze také zvětšit jejich velikost na dvojnásobek v ose x i y, nebo aktivovat vícebarevný režim MULTICOLOR.
hra v režimu multicolor
Adresování spritů a výpočet finálky
Na obrazovce výše jsou vidět všelijaké parametry, které řídí chování spritů. Nás ale zajímá především adresa 2040. Ta řídí zobrazení příslušného bloku spritu 1 na obrazovce. Jedním blokem rozumíme počet bytů, které sprite obsahuje. To jest 63 bytů (21*3). Ovšem v rámci zachování číselného pořádku 64,128,256,512 ... přepínáme data po 64 bytech.
1blok = 64 bytů
Výpočet adresy, ze které jsou načtena data pro příslušný sprite získáme vynásobením hodnoty bloku s počtem bytů jednotlivého spritu + 1.
sprite1 POKE2040,13x64 = počáteční adresa 832
sprite2 POKE2041,18x64 = počáteční adresa 1152
atd...
Byte ve spritech čteme zleva do prava, a ze shora dolů.
Vaším úkolem je zjistit polohu adresy na obrázcích níže. Přečíst její byte, a dosadit tyto hodnoty do proměnných A,B,C,D,E,F, Následně pak vyrazit na finálku.
Kočka: N50°01.ABC
A = hodnota adresy 8197
B = hodnota adresy 8231
C = (hodnota adresy 8243) + 5
Pes: E015°49.DEF
D = hodnota adresy 9102
E = (hodnota adresy 9119) - 1
F = (hodnota adresy 9138) + 1
Všem přeji hodně zábavy a příjemný lov. Na prvního nálezce opět čeká malá odměna!
BYOP