Teraz czas na drugi rodzaj ustawialnych w
GED priorytetów, uruchamianych klawiszem
"O" (z ang. "Overlapping", czyli przesłania-
nie). Steruje to tym, jak mają się duszki
"zachowywać" wobec siebie...
Są dwa typy tego priorytetu:
A. Przesłanianie (początkowo włączone w
GED). W tej "naukowej" tabelce pokazane
jest, który PMG jest widoczny na którym...
"-" - PMG nie jest widoczny na tym obiekcie
(jest przysłonięty przez inne PMG),
"X" - a to po prostu nic nie oznacza... 8-))
B. Nakładanie, znacznie mniej rozbudowane od
poprzedniego trybu priorytetu...
Polega na tym, że w miejscu gdzie nałożą się
na siebie (częściowo lub całkowicie) duszki,
odpowiednio 0 i 1 oraz 2 i 3, kolor ich
części wspólnej będzie równywartości OR ich
kolorów. Mówiąc trochę prościej, gdy
nastąpi nałożenie dwóch graczy, to ich
część wspólna otrzyma kolor powstały w
wyniku operacji logicznej ORA na dwóch
kolorach tych graczy. Normalnie duszek
może mieć tylko jeden własny kolor. Jeśli
jednak "skrzyżuje się" go z innym
duszkiem, to wykonując odpowiednią
instrukcję ORA, otrzyma się 3-kolorowego
duszka (ten dodatkowy, trzeci kolor jest
efektem nakładania się dwóch
pozostałych...). Ten priorytet (bit 5 w
GTIACTL) nazywany jest czasem graczem
wielokolorowym. Teraz chyba już wszyscy
wiedzą o co chodzi... (?).
Tutaj dwie uwagi do wprowadzania
zmian w priorytetach (klawiszami "O" i "F"):
po każdorazowym załadowaniu grafiki
albo czyszczeniu obrazu (SHIFT + CTRL + TAB)
GED przywraca początkowe wartości w
priorytetach (włączony zostaje #1
priorytet PMG-"Playfield", itd.);
zmiany w priorytetach działają linię niżej
(co NAJMNIEJ, jeśli nie ma dużej ilości
zmian rejestrów w tym miejscu) od miejsca
ustawienia !
Umieszczanie PMG
Wciśnięcie klawisza SHIFT+1-8 ustawia
poziomą początkową pozycję obiektu PMG,
odpowiadającą aktualnej pozycji kursora.
To działa trochę odmiennie w zależności od
tego, czy kursor jest umieszczony na pierwszej linii
u góry ekranu, czy też gdziekolwiek indziej
poniżej. W pamięci istnieje tabela, która
przechowuje początkowe atrybuty
(właściwości) dla wszystkich rejestrów PMG.
Są w niej dane kolorów, priorytetów,
szerokości i pozycja pierwszego duszka. Pozycja
drugiego duszka otrzymywana jest przez
dodanie do pierwszego jego szerokości.
Podobnie jest z trzecim i czwartym duszkiem.
Następne w kolejności są pociski. Przed
wyświetleniem obrazka wartości z tej tablicy
są przepisywane do rejestrów sterujących
PMG. W każdej linii ekranowej można zmienić
jedną z wartości sterujących PMG. Jeśli
zrobisz się to stojąc w pierwszej linii (gdzie znajduje
się tablica atrybutów), to wartość ta
będzie wpisana do tablicy. Oznacza to, że w
pierwszej linii można zmienić wszystkie wartości,
natomiast w pozostałych, niższych liniach
tylko jedną. Jeśli więc najpierw w jakiejś
linii zmienisz kolor duszka, a następnie w
tej samej linii jego szerokość, to ta zmiana
koloru nie zostanie w tej linii uwzględniona.
Inaczej będzie w pierwszej linii ekranowej, gdzie
obydwie zmiany będą uwzględnione.
Praktycznie rzecz biorąc, to, że pierwsza linia
obrazu ma takie korzyści, dużo nie daje,
skoro reszta linii ma dużo mniejsze
możliwości... Ale warto wiedzieć o tej
różnicy... Acha, pisząc "pierwsza linia obrazu",
mam na myśli pierwszą linię na górze
ekranu, gdzie można rysować, umieszczać
obiekty PMG, itd. (a nie sam szczyt ekranu,
powyżej ikon informacyjnych GED'a !)...
Jeśli nie zrozumiałeś dobrze
powyższego tekstu o tabeli wartości PMG w
GED i ograniczeniach w modyfikacji
rejestrów duszków, to... spróbuję to
przedstawić trochę inaczej, jeszcze raz,
poniżej.
Zmiany w rejestrach PMG nie są
automatycznie umieszczane w każdej linii
obrazu i taka zmiana rejestru PMG będzie
działać (będzie widoczna) w każdej linii, od
pozycji kursora, aż do samego dołu
ekranu, lub do miejsca poniżej, gdzie ten
rejestr był później zmieniany. Dlatego
zmiany w PMG działają nieco inaczej w
porównaniu z trybem "playfield".
Wszystkie atrybuty PMG mają swe
wartości początkowe w specjalnej tablicy,
która mieści się na szczycie ekranu (tzn. w
pierwszej linii ekranowej). Kiedy kursor jest na
samej górze, gdy podajesz programowi
jakąś komendę sterującą PMG, ta zmiana
zajdzie w tejże tablicy i możesz zmieniać
wszystkie wartości atrybutów (właściwości)
PMG w ten sposób (SHIFT + CTRL + "-"
przydaje się, aby przejść na samą górę
ekranu). Zatem można tu zmieniać kilka
parametrów PMG naraz.
Jeśli jednak kursor jest częściowo na dole
ekranu, każda komenda dla PMG będzie
musiała używać procedury przerwania DLI,
która może zmieniać tylko jeden atrybut
(np. szerokość duszka) naraz. Po prostu
na tylko tyle (dla PMG) pozwala czas w
procedurze DLI. Jeśli wprowadzisz jeszcze
jedną (inną) komendę dla PMG w tej samej
linii, GED będzie szukał najbliższą
NIEUŻYWANĄ (jest to linia, która nie zawiera
zmiany rejestru PMG; linia ta może zawierać
dane koloru "playfield" lub dane obiektu
PMG) linię obrazu POWYŻEJ pozycji, którą
edytujesz. Kursor zostanie przeniesiony
na tę znalezioną, wolną linię, aby dać Ci
znać, gdzie została umieszczona komenda.
Jeżeli GED natrafi na szczyt ekranu (pierwszą linię
ekranową) albo będą sprzeczne
(konfliktowe) komendy przed znalezieniem
nieużywanej linii, obraz mrugnie krótko,
aby poinformować Cię, że ta komenda nie
mogła być wykonana. Kursor zostanie
umieszczony na konfliktowej pozycji.
Problemy
...są nieodzownym elementem tego świata.
Oczywiście nie mogło ich zabraknąć także w
GED... ;-)). GED, jako chyba pierwszy
program, stosujący nową technikę łączenia
wielokrotnych zmian kolorów w linii
ekranowej z pełnym wykorzystaniem
możliwości PMG, ma także pewne
ograniczenia, wynikające po prostu z
ograniczeń sprzętowych...
Podczas nakładania PMG na kolory
"playfield" (wraz ze zmienianiem któregoś z
priorytetów) może się zdarzyć, że gdy
zapragniemy coś zmienić (np. przenieść lub
wykasować) w dokonanej komendzie na PMG,
okaże się to (z pozoru) niemożliwe.
Szczególnie dotyczy to pocisków. Po prostu
mogą "nie chcieć" dać się ponownie
zedytować w danym miejscu. Trzeba wtedy
próbować różnych kombinacji - zmiany
priorytetów, usunięcia najpierw koloru
"playfield" z pozycji na której jest duszek,
itd. Powinno się udać, tyle że po pewnych
staraniach... ;-)
Możesz spotkać się z innym problemem,
polegającym na tym, że jeśli masz dużą
liczbę zmian rejestrów, do czasu gdy GED
znajdzie 'nieużywaną linię' (dobrą do zmiany
jednego z rejestrów PMG), może być to
dość daleko powyżej Twojej pozycji
kursora. Wtedy lepsze może okazać się
zmienianie innego rejestru i zostawienie
tego poprzedniego w "spokoju"...
Np.
powiedzmy, że masz dwa małe obiekty na
ekranie (wypełnione jednym kolorem
"playfield" kwadraty, jeden pod drugim),
które próbujesz podkolorowć z użyciem
PMG. Te obiekty są oddzielone jedną wolną
linią skanową (ekranową) między sobą.
Wciśnij "P", 2x "F" (zmiana priorytetu - aby
PMG pokazało się na kolorach "playfield"),
ustaw kursor na lewy górny róg niższego
obiektu i wciśnij SHIFT + 1, by przesunąć
gracza na nowe miejsce. "Wpixeluj" duszka i
wtedy użyj SHIFT + strzałki w celu zmiany
koloru tego obiektu (zrób to będąc na
"szczycie" duszka). Ponieważ ta linia
obrazu była już użyta do przechowania
zmiany pozycji PMG, GED użyje pustą (wolną)
linię między tymi dwoma obiektami.
Teraz
decydujesz, że drugi (niższy) obiekt musi
być większy i potrzebujesz zrobić
szerszego gracza, by "zakryć" niższy
obiekt. Kiedy wciśniesz ">" w tym punkcie
(tzn. w pierwszej linii drugiego obiektu, albo w
pustej linii między obiektami), najbliższa
wolna linia (dla zmiany rejestru PMG) jest
na samym dole pierwszego obiektu i zmienianie tam
gracza, może zmienić wygląd pierwszego obiektu...
Gdy zachodzi coś takiego, możesz najpierw
wcisnąć SHIFT + 0, aby skasować tą
ostatnią zmianę rejestru (niekorzystną dla
pierwszego obiektu). Powinieneś wtedy jeszcze
sprawdzić obraz, aby zobaczyć, czy są inne
sposoby osiągnięcia tego, czego chcesz.
Może się okazać, że nie potrzebujesz
dodatkowej szerokości dokładnie w tym
miejscu i możesz ją wprowadzić trochę
dalej, poniżej tego obiektu. Może także nie
być sposobu na zrobienie tego, czego
chcesz i jedynym wyjściem jest przejść do
edycji innego obiektu, albo zmienić coś w
aktualnie 'obrabianym' obiekcie.
Są jeszcze inne rzeczy, które możesz
robić w "ciasnych" miejscach, włącznie z
edytowaniem lub nieznacznym przesuwaniem
obiektów w celu umożliwienia zmian rejestrów
i umiejętnym 'krzyżowaniem' PMG z
'komórkami koloru' trybu "playfield".
Inną sprawą jest to, że jeśli nowa zmiana
koloru jest stosunkowo blisko do
poprzedniej wartości koloru i nie możesz
dokonać tej zmiany dokładnie na pierwszym
pikselu, gdzie potrzebujesz koloru, może
być ona całkowicie niezauważalna. Ludzie
mogą nawet nie zauważyć kilku pikseli w
odmiennym kolorze. Ten efekt występuje
raz na obrazku "MARTIAN.GED". Czy możesz
tam odnaleźć to miejsce ?
Wskazówki do kolorowania
Standardowy tryb priorytetu PMG w GED
jest ustawiony tak, aby rysować obiekty
PMG za standardowym ("playfield") obrazem.
W tym trybie obiekty PMG będą widoczne
tylko we fragmentach obrazka, które są
"wyczyszczone" (tzn. tam, gdzie jest kolor
tła). To jest często najlepsze rozwiązanie,
bo możesz tworzyć duszki z maksymalną
szerokością i 'maskować' je z przodu
którymś z kolorów "playfield" na całym
ekranie. Zauważ, ze gdy pociski są jako
5-ty gracz, to tenże obiekt PMG (5. gracz)
pojawi się "z przodu" wszystkich kolorów
"playfield", bez względu na ustawione
priorytety.
* * *
Na tym pragnąłbym zakończyć ten
(przydługi) opis edytora "GED"... Mam
nadzieję, że zachęciłem trochę osób do
jego używania i oszczędziłem im męki
samodzielnego 'rozgryzania' GED'a, której
to "przyjemności" osobiście doświadczyłem.
Przygotowując ten opis korzystałem z
oryginalnej instrukcji do GED'a autorstwa
J.Harrisa oraz sporej ilości własnych
spostrzeżeń odnośnie GED.