"GED - część #2"
-------------------( Dracon/Taquart )-
Serdecznie witam wszystkich zainteresowanych tytułowym edytorem graficznym i zapraszam na dokończenie jego szczegółowego opisu. Tak więc niniejszym ogłaszam ciąg dalszy tra-GED-ii... ;-)))
W poprzednim odcinku opisałem wszystkie polecenia GED oraz podałem szczegółowy sposób postępowania w jednym z dwóch trybów pracy tego programu, to jest w trybie "playfield". Ten tryb edycji, oferu- jący możliwość kilkukrotnego zmieniania 3 rejestrów koloru w jednej linii ekranowej (niektórzy określają to mianem tzw. "ścigania plamki" ), jest już zdecydowanym krokiem naprzód w porównaniu z innymi, starszymi rozwiązaniami. Mam tu na myśli RAMbrandta, Color Enhancer, Colors i parę inych, które używając przerwania DLI umożliwiały co prawda uzyskanie na obrazku do 128 kolorów, ale w jednej linii mogły być naraz tylko 4 różne kolory. Nie twierdzę, że nie można mimo wszystko tworzyć tam wspaniałych, wielokolorowych grafik (dowodem na to są bardzo ładne obrazki Ravena/Quasimodos w demie "Drunk Tank", gdzie po mistrzowsku zostały wykorzystane możliwości standardowego przerwania DLI), ale naprawdę są duże ograniczenia dla grafika chcącego wielu kolorów w różnych miejscach ekranu. Możliwości GED w trybie "playfield" są już nieco lepsze, choć "nigdy nie jest tak dobrze, żeby nie mogło być lepiej"... Myślę, że dodanie przez autora edycji i użycia PMG znakomicie dopełniło tryb "playfielda" i rzeczywiście J. Harrisowi udało się uzyskać najlepszy możliwy tryb graficzny bez żadnego migania, jaki potrafi wyświetlić Atari XL/XE. Zresztą pojawił się już nowszy edytor graficzny - "POWER GRAPHICS", który wykorzystuje właściwie identyczne założenia, tyle, że może on pracować w kilku trybach graficz- nych ( nie tylko w trybie gfx #15, jak GED ).
Małe info...
---------
GED ma pełną kontrolę nad wszystkimi rejestrami grafiki PMG, lecz w znacznie bardziej ograniczonym zakresie, w porównaniu z edycją standardowych ("playfield") kolorów.
Warto byłoby najpierw przypomnieć sobie podstawowe wiadomości o grafice PMG, gdyż będzie to przydatne podczas używania GED'a...
Duszek ( sprajt, z ang. sprite ) jest definiowanym przez użytkownika obiektem, który można umieszczać w dowolnym miejscu ekranu i płynnie przesuwać (oraz animować). W Atari możliwe jest uzyskanie dwóch rodzajów duszków: większych - graczy i mniejszych nazwanych pociskami. Dlatego noszą one oficjalną nazwę grafiki graczy i pocisków (Player/Missile Graphics, w skrócie PMG). Duszków jest osiem: czterech graczy i cztery pociski. Tworzone są one przez układ GTIA, który "miesza" je z normalnymi danymi ( z "playfield" ) wyświetlanego obrazu. Dzięki temu duszki są niezależne od pozostałych parametrów obrazu i mogą być używane we wszystkich trybach graficznych (szczególnie nadają się, moim zdaniem, do trybu piętnastego OS, ze względu na to, iż mają takie same piksele w standardowej ich rozdzielczości). Duszki są połączone parami gracz-pocisk i ponumerowane od 0 do 3 (uwaga: w GED, dla wygody używania, autor zmienił numerację i jest to 1-4 ! )... Liczbę duszków można zwiększyć przez zastosowanie DLI, lecz akurat nie ma tej możliwości w GED...
Wyróżnić można następujące cechy duszków:
- szerokość gracza 8 punktów (pikseli), a pocisku 2 punkty (piskelki takie jak w trybie gfx #15 OS);
- dowolna wysokość wszystkich duszków
- możliwość dwukrotnego lub cztero- krotnego zwiększenia szerokości (dwukrotna - piksele duszka takie jak piksele w trybie gfx #9 OS, czterokrotna - cztery razy 'grubsze' piksle duszka w porównaniu z standardowa szerokością; Jeśliby na maxa rozszerzyć wszystkie obiekty PMG, to można nimi zasłonić cały ekran... co możę być szczególnie przydatne, tu - w programie GED, ale o tym później...)
- jedno- albo dwuliniowa rozdzielczość pionowa (chodzi tu o wysokość każdego punktu duszka - jednoliniowa to wysokość piksla taka jak w "piętnastce", a dwuliniowa to rozdzielczość pionowa "siódemki");
- kolor ustalany oddzielnie dla każdej pary gracz-pocisk;
- możliwość tworzenia duszków wielokolorowych (poprzez ich nakładanie na siebie i operację ORA);
- ustalony priorytet wyświetlania między duszkami (który na/za którym ma się pokazać);
- wybierany priorytet wyświetlania duszków i tła (czyli co się ma pojawić "na wierzchu");
- możliwość łączenia pocisków w piątego gracza (mającego niezależny od pozostałych graczy kolor);
- wykrywanie kolizji pomiędzy duszkami (szczególnie użyteczne w grach...);
- wykrywanie kolizji duszków z tłem (uwaga jak wyżej...);
Ufff... Trochę tego było, ale to chyba wszystko, co trzeba wiedzieć o PMG przy używaniu GED - resztę doczytacie sobie podczas dalszej części tego wykładu...
Chyba za daleko odszedłem od głównego tematu... :-)) ... Pora zatem przedstawić jak wygląda w GED...
Edycja PMG
---------
Przechodzimy do niej po naciśnięciu klawisza "P" (przełącza on między edycją PMG a "playfield"). Po przejściu do trybu PMG obok ikonki Draw/Fill pojawi się (z lewej) drugi mały prostokąt - symbol auto-wybierania dowolnego obiektu PMG, który jest poniżej bieżącej pozycji kursora. Możesz teraz wprowadzić komendy dla PMG, które automatycznie użyją obiektu PMG na pozycji kursora, jeśli takowy tam istnieje (tzn. jest tam umieszczony). Nic się nie stanie (nie zadziała), jeżeli PMG na tamtej pozycji nie będzie.
Poszczególne obiekty PMG mogą być wybierane ręcznie (osobno) przez wciśnięcie klawiszy 1-4, aby wybrać graczy 1-4, albo 5-8, by wybrać pociski 1-4. Ręczna selekcja może stać się konieczna, jeśli dwa obiekty PMG nachodzą na siebie, bo procedura auto-wybierania zawsze wybierze niższy numer (obiekt) PMG. W razie czego, zawsze można powrócić do auto-selekcji PMG klawiszem "A" (który ją włącza i wyłącza).
Teraz podam uproszczony (aczkolwiek skuteczny !) sposób tworzenia obiektów PMG w GED:
1. Wciśnij "P" (włączenie edycji PMG);
2. Klawiszem "F" ustaw pożądany priorytet PMG (oznacza to, na którym kolorze mają się pojawić duszki, najlepiej jednak tego nie zmieniać, wtedy duszki będą widoczne na kolorze tła - #0. Dlaczego nie zmieniać ?! O tym na koniec opisu... );
3. Ewentualnie przełącz klawiszem "O" priorytet między samymi obiektami PMG (tzn. jak mają się między sobą "zachowywać" duszki... Jednak na początek lepiej niczego tutaj nie zmieniaj... );
4. Wybierz konkretny obiekt PMG, naciskając odpowiednią dlań cyfrę (1-4 = duszki, 5-8 = pociski). Zauważysz u góry kilka kropek (ilość ich zależna jest od nr wybranego obiektu PMG, np. cztery, to czwarty gracz lub pocisk... );
5. Ustaw kursor tam, gdzie ma być 'początek' (góra) duszka na ekranie i wciśnij Shift + nr obiektu PMG, który wybrałeś (np. Shift + 4);
6. Teraz postaw parę piksli na ekranie "w ciemno" (Fire'm), na prawo i poniżej pozycji kursora, gdzie ustawiłeś początek obiektu PMG. Duszka jeszcze nie widać, ale wciśnij kilkukrotnie Shift + "-" (strzałka w górę) - duszek wyłoni się z obłoków ciemności ekranowej i łaskawie pozwoli Ci przeprowadzać dalsze operacje na nim... :-)
7. Widząc duszka, możesz już spokojnie i dokładnie utworzyć go w/g pożądanego kształtu... Użyj przycisku Fire, aby kasować/dodawać piksele tworzące obiekt PMG. Pamiętaj, że na razie maksymalna szerokość PMG, z jaką możesz narysować duszka, to 8 pikseli dla graczy, zaś dwa dla pocisków...
Gdy już narysowałeś parę pikselków obiektu PMG, otwierają się nowe możliwości:
- Shift + "-", "=" zmienia jasność obiektu PMG;
- Shift + "+", "*" zmienia kolor obiektu PMG; Tu uwaga do tych dwóch czynności: zmieniany będzie tylko kolor bieżącego, wybranego obiektu PMG. Zmienianie kolorów PMG działa trochę inaczej, niż w przypadku kolorów "playfield". Ponieważ nowe kolory (PMG) nie są automatycznie umiesz- czane w każdej linii, zmiany w kolorach PMG będą we wszystkich liniach od pozycji kursora do dołu ekranu lub do innego miejsca, gdzie kolor PMG był poprzednio zmieniany nieco niżej na ekranie. Pewnie wygląda to nieco zagmatwanie, ale ( jak zwykle) praktyka w GED wszystko rozjaśni...
- Przesunięcie kursora na nową pozycję i wciśnięcie Shift + nr obiektu PMG, który edytujesz, spowoduje przesunięcie aktualnego duszka na nowe, wybrane przez Ciebie miejsce. Możesz przytrzymać Shift wraz z nr duszka i przesuwać kursor - jest to przydatne przy dopasowywaniu PMG do gotowego obrazka...
- Klawisz ">" rozciąga duszka dwukrotnie, albo czterokrotnie (zależnie od wciskania tegoż), zaś "<" powoduje jego skurczenie się aż do standardowych rozmiarów włącznie...
- rozmiary, położenie, kolor duszka można zmieniać co 1 linię ( o ile nie ma w danym miejscu większej ilości zmian rejestrów PMG; wówczas te zmiany mogą nastąpić dopiero co drugą, albo nawet co więcej linii... );
- wciśnięcie "T" (oznaczającego pokazanie tzw. palety testowej obrazu) da możliwość zobaczenia, gdzie na ekranie są obiekty PMG (będą one jednak w tym trybie nieco przesunięte w stosunku do normalnego ustawienia, ale to nic nie szkodzi !).
OK, tak więc wiesz już, jak utworzyć obiekt PMG... Teraz wszystko powinno pójść gładko.....
Wypełnianie PMG
-------------
Chodzi tu oczywiście o odmianę komendy "Fill" dla duszków. Podobnie jak dla trybu "playfield", PMG także może być wypełniane na dwa sposoby - pełnym kolorem (tzw. solid fill) i 'kratką' (tzw. dithered fill). Obydwa sposoby działają jednak nieco inaczej w trybie "PMG" ( w porównaniu z "playfieldem"). Nie ma tu funkcji wypełniania zaznaczonego ramką obszaru w obiekcie PMG. Tryb wypełniania w wersji PMG po prostu kopiuje bieżące linie obiektu PMG do następnej linii ekranowej. Jak to zrobić:
- dla trybu 'pełnego' (solid) wypełniania:
1. Wciśnij "P", cyfrę z wybranym obiektem, umieść kursor w odpowiednim miejscu i naciśnij Shift + nr obiektu, który używasz, aby ustalić jego (duszka) początkową pozycję na ekranie;
2. Narysuj tym obiektem PMG linię, wciśnij spację, umieść kursor na narysowanej linii, wciśnij Fire i pociągnij joystick w dół (do siebie) - powinno zacząć się wypełnianie obiektu PMG od narysowanej pierwotnie linii aż na dół. Gdy skończysz, naciśnij spację, aby wyjść z trybu Fill.
- aby stworzyć 'kratkowane' wypełnienie w PMG:
1. Postępuj tak jak w punkcie 1. dla 'pełnego' wypełniania, tzn. ustaw duszka...
2. Narysuj obiektem PMG linię, w której widoczny będzie tylko co drugi piksel - będzie to coś na kształt ". . . ." (dla gracza z maksymalną szerokością będą widoczne 4 piksele);
3. Będąc w tej linii wciśnij spację i D oraz podaj z klawiatury numer 0-3 (nie przejmuj się tym, że chwilowo zmieni się położenie linii, którą narysowałeś). U góry ekranu pojawi się kratkowany prostokąt - symbol, że można już przystąpić do wypełniania... Ustaw kursor na narysowanej uprzednio linii, wciśnij Fire i pociągnij joystick do siebie - kratkowany wzór PMG zacznie się pojawiać... Po zakończeniu tego wypełniania wciśnij "D" (przywraca 'pełne' wypełnianie) oraz spację (wyjście z trybu Fill).
A teraz "czas na Colgate"... Sorry, to zgubny wpływ reklam... ;-) ... Oczywiście czas na...
Brushes
-------
...czyli po polsku, czas na pędzle, tudzież szczoteczki... Nas jednak nie interesują tutaj przedmioty do mycia zębów, lecz pomocne przybory malarskie... ;-))
GED pozwala na używanie (w ograniczonej formie) pędzli, których dane może kopiować z obiektów PMG na standardowy obraz ("playfield"). To narzędzie proste, lecz całkiem przydatne. Oto jak je używać:
- tradycyjnie zacznij od wciśnięcia "P", wybierz i ustaw duszka;
- narysuj nim dowolny kształt, ustaw kursor na jego szczycie (początku obiektu PMG), wciśnij "P"... Mała uwaga: pędzel może mieć dowolny kształt i wysokość, z tym, że pierwszą wolną (czystą) linię (od szczytu obiektu) GED uzna za koniec pędzla...;
- Wciśnij "B" - utworzony kształt z obiektu PMG zostanie zapamiętany w pamięci jako brush (pędzel). U góry ekranu pojawi się mały krzyżyk. Jest to oznaczenie trybu "pędzla". Teraz możesz, poruszając kursorem i naciskając Fire, powielać wielokrotnie kształt z "brusha" na ekran, używając aktualny kolor ("brushe" mogą być, niestety, tylko jednokolorowe);
- Wciśnij ponownie "B" lub spację, aby powrócić do normalnego trybu rysowania (wtedy utworzony kształt jest automatycznie kasowany z pamięci).
Inną, z interesujących rzeczy w GED, stanowi...
Piąty gracz
---------
Uzyskuje się go banalnie prosto - poprzez wspólne zgrupowanie wszystkich pocisków w jednym miejscu ekranu i skorzystanie z komendy "M"...
Sposób (z)użycia:
"P", po kolei ustawiamy obok siebie pociski (Shift + 5,6,7,8)... Bardzo ważne jest, by były one rzeczywiście jeden obok drugiego !!! Gdy już tak jest, najeżdżamy kursorem na tzw. "szczyt" (punkt początkowy), gdzie ma powstać piąty player i wciskamy "M" - pojawi się toto, mające niezależny od pozostałych czterech graczy kolor i pozostałe jak oni możliwości... Można też tak kombinować, że 5-ty graczy może być widoczny (włączony) tylko w paru liniach ekranu, natomiast nad nim, albo pod nim pociski mogą być rozdzielone (tak jak standardowo ). Jeśli zajdzie potrzeba przesunięcia piątego gracza w inne miejsce, a jesteś w 1. górnej linii ekranowej, to wystarczy przenieść kursor w inne miejsce tej linii i wcisnąć Shift+5 (normalnie odpowiada on za umieszczenie 1. pocisku, lecz gdy włączysz 5. gracza, to Shift+5 będzie sterował położeniem tego nowego duszka!) - wtedy zostanie ustawiona nowa pozycja piątego gracza. Dotyczy to tylko tej pierwszej linii ekranowej !!! Jeśli zechcesz ustawić piątego gracza gdzieś indziej, np. w środku ekranu, każdy pocisk musi być przesunięty indywidualnie - nawet wtedy, gdy opcja piątego gracza jest włączona !
Na razie jednak warto omówić...
Priorytety (uporądkowanie) PMG
---------------------------
Najpierw przedstawię, co można zmieniać klawiszem "F" (priorytet PMG - "Playfield", czyli co [grafika "playfield", czy obiekt PMG] ma się pokazać "z przodu", jako widzialne, a co ma pozostać w ukryciu... :-)
W GED są możliwe do wyboru 4 tryby tego rodzaju priorytetu. Ponumerowałem je w kolejności wciskania klawisza "F" (pierwszy tryb jest automatycznie uruchomiony po załadowaniu GED'a), który to przełącza je po kolei...
1. PMG widoczne jest tylko na kolorze tła (kolor #0) i jest za kolorami "playfield" (#1,#2,#3), tzn. duszki są tam wtedy przysłonięte. Ten tryb jest włączonu i aktywny po uruchomieniu GED'a... Nie bez przyczyny akurat ten, gdyż jest chyba najlepszym do "uzupełniania" standardowej grafiki obiektami PMG. Wyjaśnię to szczegółowo na koniec tego artykułu. Czyli tutaj 1. priorytet = kolory "playfield" (wszystkie), a 2. priorytet = PMG 1-4.
- Info dla koderów: tu ustawiony jest bit drugi (dec #04) w komórce GTIACTL ($d01b).
2. PMG widać na kolorze tła i #3 kolorze "playfield". Na pozostałych kolorach PMG jest przysłonięte. Zatem 1. priorytet = kolory #0 i #1 "playfield", 2. priorytet = PMG 1-4 i 3. priorytet = kolory #2 i #3 "playfield".
- ustawiony jest bit 3. (dec #08) w GTIACTL
3. PMG można zauważyć na wszystkich kolorach "playfield" (#0, #1, #2, #3). Dlatego: 1. priorytet = PMG 1-4, 2. priorytet = kolory "playfield" #0-#3.
- ustawiony jest bit 0. (dec #01) w GTIACTL
4. Widoczne są najpierw duszki #0 i #1, następnie wszystkie kolory "playfield", a po nich duszki #2 i #3 (przysłonięte). Stąd: 1. priorytet = PMG 1-2, 2. priorytet = kolory "playfield" #0-#3, zaś 3. priorytet = PMG 3-4.
- ustawiony jest bit 1. (dec #02) w GTIACTL
----------------------------(CDN)----