energy.scene.pl
Popularny magazyn na ośmiobitowe Atari
Wybierz muzykę:
Energy 1: 1 2 3 4 5 Energy 2: 1 2 3 4 5 6 7 8 9 10 11 12 |
autor: dracon
Krótki wstęp...
Czy widzieliście może krótkie demko o nieco dziwacznej nazwie "HIP16-tro" ???!? Jest to prezentacja nowego, programowego trybu graficznego, nazwanego "HIP", który jest po prostu niesamowity (jak na XL/XE)... Umożliwia on uzyskanie 30 (!) odcieni w rozdzielczości 160x192 piksele, przy minimalnym (!) miganiu obrazu... HIP to całkowicie nowe rozwiązanie, powstałe w czerwcu 1996, dlatego jest dotąd mało znane i jeszcze nie ma na niego dużej ilości softu... Niniejszy opis ma na celu przedstawienie (potencjalnych) możliwości HIP'a, jak i wytłumaczenie, skąd się on w ogóle wziął. Autorem tego opracowania jest nowy "nabytek" grupy TAQUART - pochodzący z Niemiec koder Karol Nadj (Nady), znany lepiej pod xywą Heaven. "HIP16-tro" jest jedną z jego najnowszych produkcji, obecnie (koniec września '96) przygotowuje nowe dentro (już jako "of TQA" !!!), nazwane "HYPERION", które prawdopodobnie zostanie wydane pod koniec października. Heaven ma też na koncie kilka starszych produkcji, np. intra do ABBUC'a(jeszcze pod szyldem jego starej grupy, tj. "OVERLORDS"), a także zrobił coś na Atari ST(e) - ponoć nie było rewelacyjne, ale żałuję, że nie widziałem... :( Prowadzi on też w "ABBUC-Magazine" cykl "DEMO Kurs" (były już 4 odcinki), gdzie omawia niektóre fx'y z dem... Tyle tytułem wstępu, przejdźmy do konkretów... ;-)
Heyka...
Oto coś dla naszych koderów.... (szczególnie dla LBS'a)... przygotowane przez Heaven'a/TQA.
Cześć wszystkim... To jest wersja 0.5 info o HIP'ie dla wszystkich koderów... Ta wersja jest poprzedzającą właściwe, obszerne FAQ o trybie HIP... ;-) ).
--- - ## ## ###### ####### ## ## ## ## ## is ##### ## ###### a trademark of ## ## ## ## HARD Soft, Hungary ## ## ###### #### - - ---
Data: 29.08.1996...
Autor opisu: HeAvEn of Taquart
#1. Co to jest HIP ?
HIP jest nową metodą wyświetlania obrazków na małym Atari...
HIP to skrót od "HARD-Interlacing-Picture" i został wymyślony przez członków grupy HARD Software z Węgier w czerwcu 1996 r.
Umożliwia on wyświetlenie obrazka w rozdzielczości 160 x 240 pixeli w 30 odcieniach, prawie bez żadnego migania (zależy to od konkretnego obrazka, którego używasz)... "HARD" nie oznacza "ostrego" albo "wielkiego" migotania obrazu, lecz chodzi tu o nazwę grupy, która wymyśliła ten tryb...
#2. Historia HIP'a
Tamas Bene i ja prowadziliśmy "konwersacje internetowe" przez ostatnie kilka miesięcy i rozmawialiśmy o starszych demach i efektach w nich używanych... W pewnym momencie zaczęliśmy rozmawiać o demie "Visdom II" JAComo Leopardiego, gdzie JAC zdołał wyświetlić 16 kolorów/odcieni w rozdzielczości gfx #15, która oznaczała 160 x 200 pikseli... Rozmawialiśmy także o demie "UNITY", gdzie grupa Our 5oft przełączała trzy tryby graficzne w 1 linii ekranowej: gfx #8, gfx #9 i coś podobnego do gfx #15, wykorzystując do tego zmienianie rejestru GPRIOR ($d01b) w przerwaniu DLI...
Jak myślisz, co się stanie, jeśli wpiszesz #$00 w ten rejestr ($d01b) na początku wyświetlania linii ekranowej, odczekasz trochę czasu (procesora)... przełączysz wyświetlanie na gfx #9 przez wpisanie #$40 do Gprior i po krótkiej chwili, w 1/3 ostatniej części tejże samej linii ekranowej przywrócisz z powrotem gfx #8, wpisując do Gprior ponownie wartość #$00... ??? Co pokaże GTIA ? Nie, nie grafikę #8 (lub gfx #0) jak normalnie... GTIA wyświetli coś podobego do gfx #15 !!!
Tamas opowiedział mi trochę historii o sesjach kodowania do dema "Joyride", w których brał udział ostatniego lata ('95) i stwierdził, że razem z resztą HARD'u odkryli jeszcze jakiś dodatkowy błąd w procedurze plazmy, lecz on dokończył ten FX i zapomniał o wykrytym błedzie... aż do naszej rozmowy o błędach układu GTIA...
Tak więc zaczęliśmy teraz rozmawiać o znanych błędach w GTIA. Następnego dnia Tamas był zdenerwowany, gdyż stwierdził, że odkrył nowy "bug" i odtworzył stary błąd w plaźmie z "Joyride"... Odkrył on, że niektóre linie ekranowe ("scanlines") były przesunięte o pół (!) pixela trybu gfx #9, gdy zaczynał się scroller i oni (HARD) nie poprawili tego błędu w fx plazmy... Jednak po odtworzeniu tego błędu Tamas przekonał się, iż powodem błędu nie był scroller... błąd tkwił w specjalnej procedurze Display-Listy...
#3. Techniczne informacje o HIP.
Podstawowym założeniem jest, że wszystkie linie trybu gfx #10 są przesunięte o połowę tzw. cyklu koloru (albo o piksel) przez GTIA i to zawsze !!! Nikt jednak nawet nie próbował połączyć trybu gfx #9 z gfx #10... Wszyscy łączyli gfx #9 (16 odcieni) z gfx #11 (16 kolorów), aby wyświetlić 256 różnych kolorów (tak jak to widać w np. "APACview")... Lecz wtedy rozdzielczość wynosiła wciąż 80x200 piksli...
Tutaj znajduje się wytłumaczenie podstawowego pomysłu...
Oto kombinacje, które są potrzebne do łączenia linii gfx #9 z #10, w celu wyświetlena pożądanego koloru HIP:
GR10: 000 000 000 222 222 222 222 444 444 GR09: 000 111 222 111 222 333 444 333 444 HIP : 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 GR10: 444 444 666 666 666 666 888 888 888 GR09: 555 666 555 666 777 888 777 888 999 HIP : 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 GR10: 888 aaa aaa aaa aaa ccc ccc ccc ccc GR09: aaa 999 aaa bbb ccc bbb ccc ddd eee HIP : 9.0 9.5 a.0 a.5 b.0 b.5 c.0 c.5 d.0 GR10: eee eee eee GR09: ddd eee fff HIP : d.5 e.0 e.5
OK... Tutaj istnieje 30 możliwości odcieni. Nasze oczy "uśredniają" dwie wartości jasności dzięki wzajemnym przełączaniu dwóch linii (w gfx #9 i gfx #10) podczas każdego przerwania VBI. Dlatego troszkę to miga...
Ale uważajcie... w gfx #10 możliwe jest wybranie każdego z rejestrów kolorów (704-712), więc w procedurze wyświetlania obrazu w HIP, jak i w procedurze DLI, rejestry muszą być ustawione w prawidłowy sposób !!!!!
Dlatego, jeśli patrzysz w powyższą tabelę, zauważ, że tamte liczby oznaczają wartości jasności w Atari !!! Na przykład:
- jeśli chcemy wyświetlić kolor HIP o wartości 6.5, musimy wtedy ustawić linii trybu gfx #9 wartość 7 (w Basicu przez komendy: color 7, plot x,y).... Natomiast dla linii trybu gfx #10 jest wartość 6, ale... byłoby niewłaściwie ustawiać piksel kolorem 6, ponieważ mamy właśnie 8 rejestrów koloru w gfx #10... Co powiecie na ustawienie rejestrów koloru w następujący sposób:
704 = 0 705 = 0 706 = 2 707 = 4 708 = 6 709 = 8 710 = 10 711 = 12 712 = 14
Więc... Jeśli chcemy jasność 6, musimy ustawić piksel kolorem 4: plot x,y !!!! W gfx #10 wartość piksela wybiera rejestr koloru !!!! Pusty/czarny piksel nie jest ustawiany kolorem #0 !!!
Kolor 0 "każe" GTIA postawić piksel z kolorze, który jest zdefiniowany przez rejestr koloru 704 !!! Jeżeli więc wstawisz 0 do rejestru 704, będzie tam widoczny czarny piksel...
W gfx #9 nie możemy wstawić 14 do rejestru 712, ponieważ w gfx #$9 rejestr 712 definiuje podstawowy kolor... Dlatego jeśli chcemy 30 odcini szarości, musimy wstawić tam wartość 0... Lecz wtedy w gfx #10 musi być 14 w tym rejestrze...
Hmmm... Rozwiązaniem jest specjalne przerwanie DLI i Display Lista...
1. vbi 2. vbi DList1 DList2 gr9 (0) gr10(0) dli-bit ustawiony gr10(1) gr9 (1) gr9 (2) gr10(2) dli-bit ustawiony gr10(3) gr9 (3) gr9 (4) gr10(4) dli-bit ustawiony ... ...
(x) jest numerem linii ekranowej w każdej /z dwóch/ pamięci obrazu...
Gdy zapętlimy to... stworzymy interlace pomiędzy tymi dwoma pamięciami ekranowymi (w gfx #9 i gfx #10) i zrobimy tym sposobem tryb HIP... lecz musimy ustawić prawidłowe wartości w rejestrze Colbk $d01a (712, zobacz powyżej !!!)...
1. vbi 2. vbi DLI1 DLI2 pha pha lda #$40 lda #$80 ; przełączenie na ; odpow. tryb gfx ; (gfx #9, gfx #10) sta wsync sta wsync sta gtiamode sta gtiamode lda #0 lda #14 ; ustawienie odpow. ; koloru tła sta $d01a sta $d01a lda #$80 lda #$40 ; przełączenie na ; kolejny tryb gfx ; (zobacz DispList) sta wsync sta wsync sta gtiamode sta gtiamode lda #14 lda #0 ; i nie zapomnij o ; kolorze tła ! sta d01a sta $d01a pla pla rti rti
To jest technika, lecz jest "duży" problem z konwertowaniem obrazków... W gfx 9/10 każdy piksel jest wielki na 4 "bity" lub tzw. "nibble", a piksel w HIP ma 2 "bity" (nakładane na siebie bity)...
Tutaj jest przykład:
gr.10: ..00002222... gr.9 : 000022224444... HIP : ..00112233..
Pamiętaj: GTIA przesuwa linie trybu gfx #10 o pół piksela w trybie gfx #10 !!!
Tak więc... będziemy zawsze sprawdzać jedną połówkę wartości piksela aż do kolejnego piksela w trybie HIP... I to jest trudność, bo kolorów w HIP nie można ustawiać oddzielnie !!! Istnieją ograniczenia takie, jak to główne:
dwa następujące po sobie piksele w HIP nie powinny mieć różnicy między ich jasnością większej od 2 !!! Ponieważ wtedy nie moglibyśmy ustawić prawidłowych wartości i piksel w HIP zacznie migać !!!
Najlepszą metodą (używania trybu HIP) jest wykorzystywanie jako źródła digitalizowanych obrazków z 'wygładzoną' jasnością do konwersji na format HIP, albo przekonwertowanie jakiś raytrace'owanych obrazków...
Spróbuj zakodować odpowiedni algorytm optymalizacji dla konwersji na HIP...
#4. Konwertery:
Są one dostępne dla następujących systemów:
Unix kodowany przez Tamasa Bene z HARD
PC kodowany przez Tamasa Bene z HARD
Amiga kodowany i przerobiony przez HEAVEN'a of Taquart
XL moje algorytmy, napisane przez HEAVEN'a of Taquart
Do konwertowania potrzebujesz:
- jeden z powyższych konwerterów
- program graficzny, w którym można tworzyć obrazki w PRAWDZIWEJ skali szarości i 64 kolorach, w rozdzielczości 320x200 pixeli (myślę, że nowa wersja konwertera "bmp2hip" na PC będzie mogła 'obrabiać' większe rozdzielczości i więcej kolorów...).
- obrazek 320x200x64 musi być zapisany w formacie Windows-BMP
- program przenoszący dane na XL
- procedurę wyświetlającą tryb HIP na XL
Mam nadzieję, że mogłem pomóc komuś w HIP'owaniu...
Heaven, 30.08.1996
Credits:
- tekst: Heaven
- algorytmy: Sanyi i Tamas z HARD Soft
- procedura wyświetlania trybu HIP: Tamas z HARD Soft
- inspiracja: JAC!
- tłumaczenie z angielskiego wraz z dostosowaniem tekstu do EED: Dracon of TQA !
Ps. Próbowaliśmy uzyskać kolorowego HIP'a, lecz są pewne trudności z jasnością kolorów w XL... Jasność jest różna dla niektórych kolorów podczas ustawiania jasności na wartość 0... Trudno więc wyliczyć odpowiednie kolory... jakkolwiek nie jest to niemożliwe.
Przyszłe plany:
- konwertery, które będą pracować z kilkoma formatami (grafiki) i kolorowymi formatami grafiki dzięki generowaniu przez nie wartości całej skali szarości (greyscale)
- kolorowy HIP... używający algorytmu do generowania kolorowych obrazków w tym trybie...
- może będzie możliwe interlace'owanie HIP'a i przez to moglibyśmy zwiększyć liczbę dostępnych kolorów ???
Wielkie Dzięki dla:
- Tamasa Bene z HARD ...
- Slavesa i reszty Taquartu
- Gumiego z Tight
- Marka Tomczyka (za wspieranie na sieci)