GED

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 17:24, 9 gru 2004
Tebe (Dyskusja | wkład)

← Previous diff
Aktualna wersja
Dracon (Dyskusja | wkład)

Linia 1: Linia 1:
-Na temat programu do podkolorowywania grafiki najwięcej napisał Dracon.+Edytor graficzny autorstwa [[John Harris|Johna Harrisa]] (autora także np. asemblera [[MAE]]), służący do podkolorowywania atarowskiej grafiki w [[Graphics 15|15. trybie Basica]] (160x200 pikseli) z użyciem łączenia przerwań [[DLI]] i grafiki [[PMG]] czyli popularnych [[duszki|duszków]]. Wykorzystywał także nowatorską (jak na czasy powstania - przełom lata 80 i 90. XX w.) technikę ''dzielenia rastra'' celem uzyskania więcej niż 4 różnych kolorów w jednej linii ekranu (maks. 9 kolorów). Co ważne, tak podkolorowana grafika nie drażniła oczu jakimkolwiek "miganiem" (tak jak to było w trybie [[interlace]]), gdyż takie właśnie były założenia autora. GED był niezbyt łatwy w obsłudze i być może z tego powodu używało go niewielu grafików na scenie: [[Dracon]], [[Titus]], [[Vidol]]. Mimo wszystko umożliwiał uzyskanie odpowiednich efektów szybciej niż w konkurencyjnym [[PowerGraph]].
-<pre>+Na temat tego programu do podkolorowywania grafiki najwięcej napisał Dracon (instrukcja użytkowania - w [http://ftp.pigwa.net/stuff/collections/atari_forever/www-magazines/ENERGY1/gedinfo.htm ENERGY #1] i [http://ftp.pigwa.net/stuff/collections/atari_forever/www-magazines/ENERGY2/ged21.htm ENERGY #2 (cz.1)]/[http://ftp.pigwa.net/stuff/collections/atari_forever/www-magazines/ENERGY2/ged22.htm (cz.2)]) oraz [[Jaskier]].
-'''GED viewer'''+
-Wielu z Was zapewne słyszało o pewnym programie graficznym, zwanym skrótowo GED. Napisany+== Zobacz także ==
-został on w 1993 roku przez Johna Harrisa. Jest to program, który pod względem możliwości+* [[RastaConverter]]
-graficznych znajduje się gdzieś w pierwszej piątce wszystkich programów graficznych na Atari.+
-Również pod względem ilości wbudowanych opcji ten program znajduje się w pierwszej piątce, tyle że od tyłu.+
-Jednak, mimo braku nawet najbardziej elementarnych opcji, program jest szeroko używany przez+[[Kategoria:Oprogramowanie Atari 8-bit]]
-grafików różnych maści. Jest to spowodowane tym, że program udostępnia chyba najwięcej (na oko+[[Kategoria:Formaty plików]]
-jakieś 20%) możliwości graficznych Atari, spośród wszystkich innych programów graficznych.+[[Kategoria:Programy graficzne]]
- +
-Pomysł, aby nie tylko zmieniać kolory co linię, ale również w jej środku, a ponadto dodać+
-pełnię możliwośći PMG, oddzielne dla każdego ghosta kolory i szerokości, priorytety i inne+
-zabawki, jest wspaniały. Naprawdę wielkie brawa dla Johna Harrisa.+
- +
-Ach gdyby nie ta zapierająca dech obsługa.+
- +
-Program niestety posiada również inną wadę, ujawniającą się niestety najpóźniej, bo już po+
-narysowaniu całego obrazka. Do programu mianowicie nie dołączono procedury, którą można by+
-umieścić we własnym programie, aby pokazać w nim własny obrazek narysowany w GED-zie. Tą+
-niedogodnością jakiś czas temu zaciekawił mnie Dracon/USG/Taquart. Poprosił mnie mianowicie (po+
-tym jak odmówił mu Konop i paru innych koderów) o napisanie takiej procedury, gdyż potrzebował+
-jej do swojego slideshowu. Po przejrzeniu GED-a za pomocą wszystkich dostępnych mi debuggerów+
-(z których każdy niestety pokazywał to samo) zabrałem się do pracy.+
- +
-Oto wynik moich poszukiwań. (Pełny tekst programu znajduje się w zarchiwizowanym pliku jako GEDVIEW.ASM.)+
- +
-Dane program trzyma od adresu $5330, do adresu $7f4f. Zapisywane jest to jednym ciągiem w formacie DOS-owym to znaczy z bajtami $ffff, $5330, $7f4f na początku.+
- +
-Zmieniając adres danych można zmieniać tylko pierwszą cyfrę, gdyż Antic ma głupi zwyczaj dane obrazka pobierać tylko z czterech kilobajtów.+
- +
-Kilka linii przed początkiem obrazka zaczyna się przerwanie. Jest ono docyklowane z dokładnością do 0.001 cykla, tak więc należy zwracać uwagę na to, że:+
- +
-Mój program został przystosowany do umieszczenia na początku strony. Wszelkie zmiany tego położenia, a także wszelkie zmiany w programie mogą zmienić położenie pętli umieszczonych w przerwaniu. Pętla, której początek i koniec znajdują się na dwu różnych stronach może znaleźć się na jednej stronie, a tym samym rozkaz skoku na początek pętli (bpl) będzie działać o 1 cykl krócej. Należy również uważać na to, że display list musi znaleźć się cały w jednym kilobajcie. Ponadto zaraz za programem należy zostawić 10KB wolnego, gdyż umieszczany jest tam program przerwania generowany dopiero po uruchomieniu mojej procedury.+
- +
-Oto skrócony opis programu, dla tych, którzy chcieliby poznać sposób, w jaki pokazuje się obrazki z GED-a.+
- +
-Najpierw opis danych:+
- +
-Osiem tablic po 200 bajtów zawiera dane zmian kolorów itp. robionych co linię: -tb2, tb3, tb4, tb5, tb6, tb7, tb8, tb9- dane ośmiu zmian kolorów w linii, kolejno: kolor 1, 2, 3, 1, 2, 3, 1, 2.+
- +
-Oprócz tych zmian można dokonywać również co linię jednej ze zmian w ghostach (kolor, szerokość itp.) lub koloru tła. Wartości tych zmian zawiera tablica tb0, zaś komórki, które trzeba zmieniać tablica tb1.+
- +
--dane- szesnaście komórek:+
--0,1,2,3 - kolory wpisywane do $d012-$d015+
--4- szerokości playerów (po dwa bity od najstarszych wpisywane do $d008-$d00b),+
--5- szerokości missilów ($d00c),+
--6- priorytety ($d01b),+
--7- kolor missilów (do $d019),+
--8- kolor tła ($2c8 lub $d01a),+
--9,10,11,12- położenia poziome graczy (komórki od $d000 do $d003),+
--13- położenie poziome pierwszego missila, do pozycji następnych dodawana jest szerokość poprzedników,+
--14- numer opóźnienia przerwania i tym samym miejsca zmiany kolorów. W GED-dzie ustawia się to klawiszami [,] i [.]),+
--15- nieużywane.+
- +
--obr1,obr2- dane obrazka podzielone na dwie części z powodu pewnej wady Antica.+
- +
-A teraz opis kilku części programu:+
- +
- lda >pmg-$300 pierwsze 3 strony nie są+
- sta $d407 używane, więc stąd ten adres.+
- +
- lda <end Generuje początkowe+
- sta addr bajty umieszczane za+
- lda >end etykietą END. Najpierw+
- sta addr+1 na podstawie dane+14+
- lda dane+14 umieszczane są 4 bajty,+
- asl @ które nic nie robią, ale+
- asl @ dają różne opóźnienie.+
- adc #3 Owe czwórki bajtów+
- tax umieszczone są pod+
- ldy #3 etykietą proc3.+
-s1 lda proc3,x+
- sta (addr),y+
- dex+
- dey+
- bpl s1+
- +
- Teraz adres jest zwiększany o 4:+
- lda <end+4+
- sta addr+
- lda >end+4+
- sta addr+1+
-i dalej będzie procedura generująca 200+
-razy prog. zmieniający kolory w każdej linii.+
- (Jest za długa aby ją tu umieszczać.)+
- Składa się ona ze zwykłego przepisania+
-wartości z tablic, tak aby przerwanie nie+
-marnowało czasu na długie rozkazy typu:+
- lda tb4+175+
- ale zadowalało się rozkazami typu:+
- lda #$16+
-(wartość $16 została wcześniej pobrana z+
-tablicy tb4+175). Zysk: 1 cykl.+
- Każdy fragment przerwania kończy się+
-rozkazem inc 0, które nie ma niczego robić,+
-ale tylko zająć 5 cykli, tak aby czas+
-tworzenia 1 linii przez Antic był równy+
-czasowi wykonywania tego fragmentu+
-przerwania przez procesor. Jednakże,+
-pamięć obrazka została podzielona na dwie+
-części i kiedy Anticowi podaje się do żarcia+
-tę drugą część (w dliście wygląda to jak:+
-dta b($4e),a(obr2)), to procesor ma o 2+
- pla cykle mniej czasu.+
- clc Należy więc zmienić ten+
- adc #1 rozkaz na lda 0, który+
- cmp #$66 zajmuje 3 cykle.+
- bne s4 Ten program rozpoznaje+
- pha właściwy wiersz i+
- dec addr+1 dokonuje drobnej zmiany+
- ldy #$fe (bajt $a5) w już wygene-+
- lda #$a5 rowanym fregmencie+
- sta (addr),y programu.+
- inc addr+1+
- pla+
-s4 cmp #$c8 a tu sprawdza, czy to już+
- bne s2 wszystkie linie.+
- ldy <proc3-proc2 z kolei tutaj+
-s5 lda proc2,y generowana jest+
- sta (addr),y procedura+
- dey wyjścia z+
- bpl s5 przerwania.+
- +
- lda dane+5 Ten fragment programu+
- ldx #0 jest o tyle ciekawy, że+
- ldy #$ff wykorzystany jest tutaj+
-s6 iny nic nie robiący rozkaz+
-s7 lsr @ bit $4a. Kiedy jednak+
- bcc s9+1 wykonamy skok w bajt+
- lsr @ stanowiący operand $4a+
- bcc s8 to wykona się rozkaz+
- inx lsr @. Pozwala to znacznie+
- inx skrócić program. Polecam+
- inx tę sztuczkę każdemu.+
- inx Ten fragment akurat+
-s8 inx dokonuje ustawienia+
- inx położeń pocisków na+
-s9 bit $4a podstawie dane+5 oraz+
- inx ich szerokości. Ponieważ+
- inx to nieistotne część+
- pha programu wyrzuciłem:+
- (......)+
- pla (akurat tę zapisującą+
- cpy #3 już wartości) i zostawiłem+
- bne s6 wyjście z pętli.+
- +
- Teraz rzecz najgorsza, czyli programy+
-pracujące w przerwaniach. Na początek+
-procedury przepisywane. (Patrz wyżej.)+
--PROC1 to procedura wygenerowywana 200+
-razy. Była już o niej mowa wcześniej.+
--PROC2 to procedura kończąca przerwanie.+
--PROC3 zawiera kilka 4-bajtowych procedur+
-służących ustawieniu (z dokładnością do 1+
-cyklu) miejsca zmian kolorów. Kazda 4-ka+
-bajtów różni się czasem wykonywania.+
--DL tu się zaczyna przerwanie. Zwykłe+
-ustawianie wartości itp. Jedyny ciekawy+
-fragment to:+
- ldx #11 ciekawy dlatego, że nic nie+
- dex robi. Chodzi tutaj jedynie o+
- bne *-1 przeczekanie trochę cykli+
- lda (0,x) aż sprawa nie przycichnie...+
- lda 0 tfu... co ja mówię!!!+
- +
-end equ * od tego miejsca wpisywane+
-są poszczególne procedury: 4 bajty wzięte+
-z PROC3, następnie 200*PROC1, a w końcu+
-PROC2.+
- Ostatnia linia w programie wygląda tak:+
- end+
- +
-Jest to najważnieszy rozkaz w programie. Jak twierdzi pewna dobrze obeznana z tym osoba, każdy dobrze napisany program kończy się tym rozkazem, po czym można poznać, że programista skończył pracę, a nie usnął w jej trakcie.+
- +
-Jak widziecie metoda pokazywania obrazków stworzonych GED-em (gadem?) jest dość prosta.+
-</pre>+

Aktualna wersja

Edytor graficzny autorstwa Johna Harrisa (autora także np. asemblera MAE), służący do podkolorowywania atarowskiej grafiki w 15. trybie Basica (160x200 pikseli) z użyciem łączenia przerwań DLI i grafiki PMG czyli popularnych duszków. Wykorzystywał także nowatorską (jak na czasy powstania - przełom lata 80 i 90. XX w.) technikę dzielenia rastra celem uzyskania więcej niż 4 różnych kolorów w jednej linii ekranu (maks. 9 kolorów). Co ważne, tak podkolorowana grafika nie drażniła oczu jakimkolwiek "miganiem" (tak jak to było w trybie interlace), gdyż takie właśnie były założenia autora. GED był niezbyt łatwy w obsłudze i być może z tego powodu używało go niewielu grafików na scenie: Dracon, Titus, Vidol. Mimo wszystko umożliwiał uzyskanie odpowiednich efektów szybciej niż w konkurencyjnym PowerGraph.

Na temat tego programu do podkolorowywania grafiki najwięcej napisał Dracon (instrukcja użytkowania - w ENERGY #1 i ENERGY #2 (cz.1)/(cz.2)) oraz Jaskier.

Zobacz także

Personal tools