G8C je pomocný Turbobasicový nástroj na vytváření obrázků v rozlišení 320x160 při až 128 barvách.
Jak je Vám jistě známo, nejjemnější grafický mód na 8bitovém Atari je grafika 8, která při rozlišení 320x192 nabízí pouze 2 odstíny jedné barvy. Použitím klasických technik (DLI) lze tuto barvu shora dolů měnit, přičemž v jednom grafickém řádku budou opět vždy jen 2 odstíny této barvy.
Program G8C rozšiřuje výše popsanou techniku o podkládání grafiky PMG objekty, čímž lze dosáhnout značně vyšší barevnosti - samozřejmě s omezením daným počtem a velikostí Atari PMG objektů.
Hned na začátku musím upozornit, že G320C pouze pomáhá zjednodušit provádění změn v jednotlivých řádcích a nic sám nepropočítává - veškerá plánování kde a jak barvy měnit a jak rozmístit PMG objekty je tedy ponecháno zcela na uživateli. Vytvářet pomocí G8C multibarevné obrázky je tím pádem velmi náročná a zdlouhavá práce, ale pokud se zadaří, výsledky jsou překvapivé.
Způsob ovládání:
Po prvním spuštění programu, případně při volbě "Reset all parameters", se program zeptá, zda má provést promazání paměti:
DLI source memory - to je paměť obsahující zdrojový text, na jehož základě se generuje DLI strojová rutina.
PMG memory - to je paměť pro PMG objekty.
DLI lines - počet obrazových řádků. Standardně ponechejte rovno 160.
Nyní se zobrazil grafický mód 8 (PICTURE) s blikajícím kurzorem (tečka) a vy máte tyto možnosti:
ESC - přechod do levého horního rohu.
JOYSTICK nebo kurzorové klávesy - pohyb kurzoru příslušným směrem.
Poznámka: Během pohybu kurzoru se v dolní části textového řádku vypisuje aktuální obsah příslušného řádku s DLI zdrojovým kódem (pokud již nějaký obsahuje). Toto slouží k přehledu změn, které se v tomto řádku provádějí.
FIRE tlačítko nebo Return - zapsání bodu předvolenou barvou.
Backspace - smazání bodu na pozici kurzoru.
0 - předvolena barva 0 (pozadí).
1 - předvolena barva 1 (plná barva).
J - rychlost posuvu joysticku.
Mezera - smazání dolního textového řádku.
Control+F - vybarvení uzavřené oblasti.
R - restart programu s opětovným nastavením všech parametrů.
Shift+Clear - smazání grafické obrazovky.
Control+S - ukládání dat.
Volba P: ukládání grafických dat obrazu i všech PMG objektů spolu se zdrojovým textem pro DLI.
Volba D: export DLI strojové rutiny.
Control+L - načtení grafických dat obrazu i všech PMG objektů a zdrojového textu pro DLI.
I - vypíše aktuální souřadnice kurzoru.
B - přesun kurzoru na hranici videopaměťového byte.
M - zobrazení plných PMG objektů / normální PMG zobrazení.
P - přepínání módu PICTURE / PMG.
Shift+kurzorové klávesy - vykreslení čáry z pozice kurzoru příslušným směrem až po první plný grafický bod.
U - editace zdrojového DLI kódu pro aktuální řádek. Syntaxe je popsána dále v samostatném oddíle. Ukončení editace se provádí klávesou Return, čímž se vždy současně provede překlad zdrojového DLI kódu na skutečnou DLI strojovou rutinu a její aktivace.
Zrušení či změna údajů v příslušném řádku se provádí jejich odmazáním či přepsáním na zdrojovém řádku a následným Returnem. (Poznámka: Return je možno odklepnout kdekoliv a platný je obsah celého řádku -není nutné přejíždět na konec řádku. Pro překlad a aktivaci DLI rutiny tedy stačí vždy jen na libovolném řádku stlačit "U" a Return.)
X - vypnutí DLI rutiny a odklizení PMG objektů mimo obraz. (Nezasahuje však nijak do zdrojového DLI kódu. Poznámka: "U" a "Return" provede opětovnou aktivaci.)
E - ukončení programu.
V módu PMG (přepínání módů PICTURE/PMG se provádí klávesou P) máte tyto možnosti:
JOYSTICK - pohyb kurzoru daným směrem v rámci aktivně zvoleného PMG objektu.
FIRE tlačítko - zapsání bodu předvolenou barvou.
1,2,3,4,5 - volba PMG objektu. (Objekt 1 až 4 jsou PMG hráči, objekt 5 jsou všechny PMG střely.)
9 - předvolba barvy 1 (plná barva).
0 - předvolba barvy 0 (prázdná barva).
Backspace - smazání bodu na pozici kurzoru.
I - informace o aktuální pozici kurzoru.
P - přepínání módu PMG/PICTURE.
X - přepnutí do zobrazení pouze PMG objektů (bez grafických dat obrazu) / návrat do normálního zobrazení PMG i grafických dat.
Syntaxe zdrojového DLI kódu:
Po stisku klávesy U se dostanete do módu pro zadávání zdrojového DLI kódu. Vlevo na začátku řádku se vypíše pomocný údaj ve tvaru
$XX#YYY?
kde
$XX - x-ová souřadnice aktuální pozice kurzoru v HEXa soustavě, přepočtená pro PMG objekty (tj. nejlevější sloupec má hodnotu $30 a za každé 2 grafické obrazové body se zvyšuje o 1).
#YYY - číslo řádku (decimálně)
Na řádek můžeme připisovat či upravovat již dříve zapsané povely v této syntaxi:
$NN
Číslo v HEXa soustavě. Nutno psát vždy 3 znaky (tj. například nulu jako $00). Poznámka: Číslo se udává jako první a bude použito pro všechny následující povely.
PX1 .. PX4
(Player X-pos)
Nastavení x-ové pozice PMG hráče 1 až 4.
MX1 .. MX4
(Missile X-pos)
Nastavení x-ové pozice PMG střely 1 až 4.
PS1 .. PS4
(Player Size)
Nastavení šířky PMG hráče 1 až 4. ($00 normální šířka, $01 dvojnásobná, $03 čtyřnásobná)
PS5
(Player Size)
Všechny čtyři střely mají jeden společný registr pro nastavování šířky (jakoby hráč 5). PS5 tedy nastavuje šířku všech PMG střel, kde každé 2 bity definují šířku pro PMG střelu 1 až 4.
PC1 .. PC4
(Player Color)
Nastavení barvy PMG hráče 1 až 4. Standardně mají jednotlivé PMG střely stejné barvy jako jim příslušející PMG hráči.
CL0 .. CL4
(Color)
Nastavení barvového registru COLPF0 až COLPF4. Pro grafický mód 8 mají význam tyto registry:
CL1 - jas plných bodů (v barvě pozadí)
CL2 - barva/jas pozadí
CL4 - barva/jas okolí (rámeček)
PRI
(Priority)
Nastavení prioritního registru PRIOR. Stanovuje, které grafické prvky budou při překrytí v popředí (dolní 4 bity, tj. $00 až $0F). Dále též umožňuje přepnout 4 střely do režimu, kdy nemají barvy dle jim odpovídajících PMG hráčů, ale mají všechny společně jednu barvu, definovanou registrem CL3 (COLPF3) - toto se provede nastavením bitu $10. Další možností je bit $20, který způsobí zobrazení další barvy v místě, kde se překrývají hráči 1 a 2 nebo 3 a 4 (tato barva vznikne logickou funkcí OR mezi obsahy barvových registrů příslušných hráčů).
Příklad 1:
Chceme-li na řádku nastavit x-pozici PMG hráče 2 na hodnotu $80 a jeho barvu na $6A, zapíšeme do řádku toto:
$80 PX2 $6A PC2
Příklad 2:
Chceme-li nastavit barvu všech PMG hráčů na hodnotu $74, zapíšeme toto:
$74 PC1 PC2 PC3 PC4
Příklad 3:
Chceme-li změnit barvu pozadí na $08, zapíšeme toto:
$08 CL2
Poznámka: Jednotlivé 3-znakové povely můžeme pro přehlednost oddělovat mezerou, ale není to povinné.
Technické údaje:
Výsledkem překladu zdrojového DLI kódu je strojová DLI rutina obsahující kombinace instrukcí LDA#hodnota, STA registr a STA WSYNC, která se vyvolá DLI přerušením nahoře na prvním řádku grafiky (respektive ještě o řádek nad ním, aby se změny projevily již v nejhornějším řádku). Celá rutina pak probíhá najednou s využitím synchronizačních zápisů do WSYNC a ukončuje se teprve na posledním spodním řádku. To má za následek, že procesor je po celou dobu vykreslování obrazu blokován a nemůže zpracovávat žádné jiné úlohy. Z tohoto důvodu je výsledná DLI rutina použitelná spíše jen pro statické multibarevné obrázky bez dalších efektů.
Uložená data obsahují obrazová videodata grafiky (40*160=6400bytů), za nimi jsou PMG data (data všech PMG střel a data jednotlivých PMG hráčů, tj. 256+4*256=1280bytů) a nakonec zdrojový DLI kód (160 textových řádků po 32 znacích, tj. 160*32=5120bytů). Celkově tedy vždy všech 6400+1280+5120=12800bytů.
Délka exportované DLI rutiny je závislá na počtu požadovaných změn, ale kromě nich obsahuje pro synchronizaci vždy 160x instrukci STA WSYNC.
Poznámka: Pokud nemá být používána celá obrazovka, je možné zadat v úvodu jiný údaj pro "DLI lines". Pak se odpovídajícím způsobem sníží i celková délka vytvářené a exportované DLI rutiny.
Poznámka na závěr:
Chápu, pokud se Vám zdá práce s tímto programem poměrně obtížná a nepohodlná. Ovšem vězte, že žádný jiný způsob jak snadněji vytvářet multibarevné obrázky v nejjemnějším Atárkovém grafickém módu, jsem nenašel. A oproti mnou dříve používanému způsobu s odděleným kreslením obrazových dat a PMG dat, a psaním DLI rutiny samostatně přímo v Assembleru, je to přeci jen značný pokrok. :-)