Searching for undocumented 6502 instructions

(GFX compo - Forever 2e3 SE)

Radek Štěrba/Raster

Když jsem měl v únoru 2001 celkem dokončené Intro a Music pro Forever 2e3 SE, začala mě lákat i třetí kategorie - Graphics. Přemýšlel jsem nad tématem obrázku a napadlo mě, že by mohlo být pěkné konečně realizovat to co jsem chtěl zkusit už dávno - vícebarevný nejjemnější grafický mód.

Jak známo, v módu 320x192 umí Atárko jen 2 barvy, přesněji dva odstíny jedné barvy. Shora dolů můžete samozřejmě tuto barvu měnit, ale moc parády s tímhle nenaděláte, neboť obrázek bude viditelně rozdělen shora dolů do jednotlivých barevných pásů. Ale máme přece ještě PMG (sprites). Pokud objekt z PMG grafiky zobrazíte nad nejjemnějším módem, docílíte zajímavého efektu. Barva PMG překryje barvu pozadí, zatímco body grafiky se zobrazí jako viditelné před PMG objektem. Jasová složka bodů zůstane zachována, ale barva se změní podle barvy PMG.

Pokud má například pozadí světle modrou barvu (jas 10) a body tmavě modrou (jas 2) a zobrazíme PMG objekt zelenou barvou (jas 6), ve výsledku najdeme 4 barvy:

  1. pozadí kde není PMG - modrá (jas 10)
  2. body kde není PMG - modrá (jas 2)
  3. PMG nad pozadím - zelená (jas 6)
  4. body nad PMG - zelená (jas 2)

Takže jedním PMG objektem se nám podařilo vykouzlit 2 další barvy - přesněji jednu novou barvu ve 2 odstínech, které zůstávají zachovány dle jasu pozadí a jasu bodů.

Pro snazší pochopení si představte, že obrázek je jen černobílý a na obrazovku jakoby nalepujeme (průhledné) kousky barevné fólie, které nám v různých částech změní barvu a jas příslušného místa, a také barvu bodů co vidíme skrz. (Poznámka: Technika s barevnými fóliemi nalepenými na černobílé obrazovce byla kdysi skutečně používána u hracích automatů.)

Protože u PMG objektů lze nastavit šířku (jeden bod PMG objektu může mít šířku až 8 pixelů nejjemnější grafiky), lze pomocí PMG překrýt celkem slušně velké kusy obrazu. V místech, kde potřebujeme oblé tvary, musíme samozřejmě užít šířky nejmenší - 1 bod PMG odpovídá 2 pixelům nejjemnější grafiky. Na první pohled by se zdálo, že tím pádem jsme nuceni využívat jen dvakrát horší rozlišení, ovšem není tomu vždy tak. Například, pokud je jas pixelů roven 0, zjistíte, že libovolná ze 16ti barev s nastaveným jasem 0 je v podstatě černá (ne sice úplně, ale na ploše 1 bodu si toho nevšimnete). Je-li obrázek malován jako tvary ohraničené tmavou linkou (jasem 0), okrajové body buď překrývají PMG objekt a mají barvu PMG objektu s jasem 0, nebo jsou těsně vedle PMG objektu a mají barvu pozadí s jasem 0. Takže v obou případech téměř černou barvu.

Abyste si nemysleli, že je to zase tak jednoduché - není. V závislosti na složitosti obrázku je nutné během vykreslování obrazu na jednotlivých řádcích různě měnit barvové registry obrazu i PMG objektů, šířky PMG objektů a jejich X-ové pozice, aby se PMGčkem podbarvilo přesně jen to co chcete. Většinou brzo zjistíte, že byste PMG objektů potřebovali mnohem více, než máte k dispozici, ale v tom je právě umění - vymyslet to tak, aby jste vystačili s tím co je. Může se lehce stát, že některou barvu na dané místo prostě nedostanete a musíte obrázek upravit - něco kousek posunout, jinou věc zúžit nebo naopak zvětšit a tak podobně.

Obrázek "Searching for undocumented 6502 instructions" (Hledání nedokumentovaných 6502 instrukcí) byl jednak nakreslen - černobíle, ručně bodík po bodíku - na to jsem použil narychlo pozměněnou verzi svého TurboBasicového grafického editoru AnimG15, který jsem upravil pro gr.mód 8 a přidal nějaké jednoduché podpůrné funkce pro kreslení do PMG videoram. Dále byl obrázek, rovněž ručně, doprogramován v assembleru MAC65. Byla to spousta propočítávání řádků, změn, úprav, testů a oprav - zkrátka piplačka. Rutina během vykreslování obrazu shora dolů celkem ve 21 různých řádcích provede dohromady 61 změn barvových a PMG registrů. (To nejsou vymyšlená čísla - schválně jsem to teď spočítal.)

Kdo si chce udělat konkrétní představu, jak vypadá samotná grafika a co je tvořeno změnami barev a PMG, může. Do soutěžního samospustitelného obrázku jsem zabudoval cheat. Kdykoliv po spuštění stlačte klávesu "A" - ukáže se krátké textové info dole. Pak můžete klávesami 1, 2 a 3 přepínat mezi samotnou černobílou grafikou, barvovými změnami PMG+pozadí a výslednou složeninou obojího.