"GED, czyli jak ulepszyć grafikę /3/"

------------------( Dracon/Taquart )--



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...


----------------------------------
\widocz-|PMG 1|PMG 2|PMG 3|PMG 4|
  ność  |     |     |     |     |
nr  \   |     |     |     |     |
----------------------------------
 PMG 1  |  X  |  +  |  +  |  +  |
----------------------------------
 PMG 2  |  -  |  X  |  +  |  +  |
----------------------------------
 PMG 3  |  -  |  -  |  X  |  +  |
----------------------------------
 PMG 4  |  -  |  -  |  -  |  X  |
----------------------------------

Oznaczenia:

"+" - PMG jest widoczny na tym obiekcie,

"-" - 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 (Shft+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 1. 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 1. 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 1. linii (gdzie znajduje się tablica atrybutów), to wartość ta będzie wpisana do tablicy. Oznacza to, że w 1. 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 1. linii ekranowej, gdzie obydwie zmiany będą uwzględnione. Praktycznie rzecz biorąc, to, że 1. 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 "1. 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 1. 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 (Shft + 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 (1. 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 Shft + 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 1. linii drugiego obiektu, albo w pustej linii między obiektami), najbliższa wolna linia (dla zmiany rejestru PMG) jest na samym dole 1. obiektu i zmienianie tam gracza, może zmienić wygląd 1. obiektu... Gdy zachodzi coś takiego, możesz najpierw wcisnąć Shift + 0, aby skasować tą ostatnią zmianę rejestru (niekorzystną dla 1. 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.


Dodatkowym plikiem do tego artykułu jest "GEDSTUF2.ARC", w którym jest parę ciekawych obrazków, demonstrujących wykorzystanie GED'a w praktyce. Zawarłem tam też dodatkowe uwagi o GED...


- Dracon/USG/TQA -