Narsil č. 17

Redakce vs Čtenáři

↑
Narsil REDAKCE – obrázek 1

Celé dva měsíce se u mě až na nějaké drobnosti neobjevil ani jeden pořádně kritický či nějakým extremním způsobem zajímavý dotaz. Jediná otázka, která se opakovala dokonce několikrát, bude tento rok nějaká akce okolo Narsilu, takže krátce a výstižně říkam: 'Bude!', někdy začátkem srpna. Uznávám, že se nejedná zdaleka o ideální termín, ale vzhledem k tomu, že počátkem podzimu se koná Freecon v Plzni, pak snad Demobit v Bratislavě, nedá se nic dělat. Kdo bude mít zájem, ten se ve Východních Čechách objeví a ti ostatní mají bohužel smůlu. Více je napsáno v článku o Narsil Party 96 a NP 96 Program.

Ha a přece jsem při lehkém rozhrábnutí některých dopisů na něco narazil. Jak se dá udělat fadeing stmívání v GFA basicu, příkaz SETCOLOR se mi k tomu nezdá příliš vhodný.

DREAM

Můžeš to samozřejmě provádět přes cokoliv (například Xbios 7), zápisem rovnou na porty ST(e) palety, nastavováním pointru na celou paletu při dalším VBL (jedná se o pointer na adrese $452). Ale myslím, že v GFA Basicu bude přece jen ten SETCOLOR nejvýhodnější. Stačí jen chvíli uvažovat, jak to udělat.

Takže, ST má 16 barvových registrů. Každý z těchto registrů musíš nastavit na určitou hodnotu. Aby to ale nebylo jednoduché, tak každý z registrů má v sobě tři složky, tj. R(červenou), G(zelenou), B(modrou). A hlavní problémem tedy bude nastavit vše tak, aby zhruba ve stejném okamžiku probíhali stejnou úrovní nastavení všechny registry a všechny složky. Tudíž budeme-li ignorovat STE paletu, která vše ještě zesložití se svým půlením, tak budeme-li chtít nastavit registr 0 na hodnotu $777, je situace jednoduchá.

FOR K=0 TO 7 STEP 1

SETCOLOR 0,K,K,K

R=XBIOS(37)

NEXT K

Jenže většinou chceme nastavit jednotlivé registry pokaždé na jinou hodnotu a pokaždé jinak i samotné složky RGB, zde už budeme muset začít s nějakým dělením a jelikož jsme právě v GFA, je situace jednoduchá. Chceme-li tedy registr nula nastavit na hodnotu 4,2,5 a chceme-li, aby se to provedlo v 7 cyklech (maximum pro ST paletu), vytvoříme si tři proměnné, a to r1,r2,r3. A dále potřebujeme jejich čítače (cr1 etc.). Situace pak bude vypadat takhle.

CR1=4/7

CR2=2/7

CR3=5/7

FOR K=0 TO 7 STEP 1

SETCOLOR 0,INT(R1),INT(R2),INT(R3)

R1=R1+CR1

R2=R2+CR2

R3=R3+CR3

R=XBIOS(37)

NEXT K

Pochopitelně skrze pole se celá zaležitost může týkat všech registrů, při nutnosti STE palety můžeš i ji zohlednit, pak však budeš muset pokažde vytvořit vsuvku (třeba, když je výsledek lichý, přičteš 16, když ne, necháš tak jak je). Dále je možné vložit i větší množství čekání na VBL pro větší optickou viditelnost apod. To vše raději ponechám na vaši fantazii a tvůrčí invenci. A pokud bys raději chtěl fadeing, který nepracuje skrze barvy, ale měnit celé bitmapy (což by mohlo být, když tak nad tvým dopisem přemýšlím, tvým hlavním přáním :), nezbývá než se pustit do strojového kódu a nebo přinejmenším příkazu PUT v GFA. A pokud se pustíš do strojáku, nejlepší bude dělat to přes různé logické posuvy, ORy a ANDy.

Nějak nám ta interakce začíná skomírat, tak se do příště polepšete. Třeba se vyjádřete jak se vám co v Narsilu líbí, tudíž nehodnoťte Narsil jen jako celek, tedy, že je opravdu dobry ;), ale napište například co vás překvapilo, co vůbec a přidejte nakonec Topy či něco podobného.

HEAD