Skip to content

Osmibitové počítače #4 (sprity) Mystery Cache

Hidden : 10/14/2023
Difficulty:
3.5 out of 5
Terrain:
1.5 out of 5

Size: Size:   small (small)

Join now to view geocache location details. It's free!

Watch

How Geocaching Works

Please note Use of geocaching.com services is subject to the terms and conditions in our disclaimer.

Geocache Description:


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

 

Additional Hints (Decrypt)

H xberar fgebzh.

Decryption Key

A|B|C|D|E|F|G|H|I|J|K|L|M
-------------------------
N|O|P|Q|R|S|T|U|V|W|X|Y|Z

(letter above equals below, and vice versa)