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