HIP: Różnice pomiędzy wersjami

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania
Tebe (dyskusja | edycje)
Nie podano opisu zmian
 
Mono (dyskusja | edycje)
m linki i formatowanie
 
(Nie pokazano 23 wersji utworzonych przez 7 użytkowników)
Linia 1: Linia 1:
[[grafika:Hip_16k-tro.png|przykładowy obrazek w trybie HIP]]
<br>


hi everybody... this is v0.5 of the HIP-FAQ for all coders...
 
==Co to jest HIP ?==
##  ##  ######  ###### TM of HARD Software, Hungary
 
##  ##    ##    ##  ##
HIP jest 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&times;240 [[piksel]]i 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.
######    ##    ######
 
##  ##    ##    ##
==Historia HIPa według [[Heaven]]a/[[Taquart]]==
##  ##  ######  ##
 
Tamás 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 [[Graphics 15]], która oznaczała 160&times;200 pikseli. Rozmawialiśmy także o demie [[UNITY]], gdzie grupa [[Our 5oft]] przełączała trzy tryby graficzne w jednej linii ekranowej: [[Graphics 8]], [[Graphics 9]] i coś podobnego do Graphics 15, wykorzystując do tego zmienianie rejestru [[Rejestry GTIA#GTIACTL|GPRIOR]] ($D01B) w przerwaniu DLI.
FAQ by
 
Jak myślisz, co się stanie, jeśli wpiszesz #$00 w ten rejestr (GPRIOR) na początku wyświetlania linii ekranowej, odczekasz trochę czasu (procesora). przełączysz wyświetlanie na Graphics 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 tryb 8, wpisując do GPRIOR ponownie wartość #$00??? Co pokaże [[GTIA]]? Nie, nie grafikę 8 (lub [[Graphics 0]]) jak normalnie - GTIA wyświetli coś podobnego do trybu 15!!!
oO  Oo oOOOOo oOOOOo oO  Oo oOOOOo oOOOOo
 
OO  OO OO    OO  OO OO  OO OO    OO  OO
Tamás opowiedział mi trochę historii o sesjach kodowania do dema [[Joyride]], w których brał udział ostatniego lata (1995) i stwierdził, że razem z resztą HARD'u odkryli jeszcze jakiś dodatkowy błąd w procedurze plazmy, lecz on dokończył ten efekt i zapomniał o wykrytym błędzie, aż do naszej rozmowy o błędach układu GTIA.
OOOOOO OOOOo  OOOOOO OO  OO OOOOo  OO  OO
 
OO  OO OO    OO  OO OO  OO OO    OO  OO
Tak więc zaczęliśmy teraz rozmawiać o znanych błędach w GTIA. Następnego dnia Tamás 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ół(!) piksela trybu 9, gdy zaczynał się scroller i oni (HARD) nie poprawili tego błędu w plaźmie. Jednak po odtworzeniu tego błędu Tamás przekonał się, iż powodem błędu nie był scroller. Błąd tkwił w specjalnej procedurze [[ANTIC Display List|Display-Listy]].
oO  Oo OOOOOo oO  Oo  OO  OOOOOo OO  OO  of Taquart
 
==Techniczne informacje o HIP==
 
(.oO This is a preversion of the question-list Oo.)
Podstawowym założeniem jest, że wszystkie linie trybu [[Graphics 10]] są przesunięte o połowę piksela (albo o tzw. [[cykl koloru]]) w prawo w stosunku do pikseli trybu 9. Nikt jednak nawet nie próbował połączyć trybu 9 z 10. Wszyscy łączyli tryb 9 (16 odcieni) z trybem 11 (16 kolorów), aby wyświetlić 256 różnych kolorów (tak jak to widać w np. [[APAC View]]). Lecz wtedy rozdzielczość wynosiła wciąż 80&times;200 pikseli.
 
Date: 29th, August 1996...Writer: HeAvEn of Taquart
Tutaj znajduje się wytłumaczenie podstawowego pomysłu.
 
1. What is HIP?
Oto kombinacje, które są potrzebne do łączenia linii trybu grafiki 9 z 10, w celu wyświetlenia pożądanego koloru HIP:
 
HIP is a new method to displaing pictures on small atari...
<pre>
GR10: 000 000 000 222 222 222 222 444 444
HIP stands for HARD-Interlacing-Picture and was found by
GR09: 000 111 222 111 222 333 444 333 444
Members of HARD Software, Hungary in June, July 1996...
HIP : 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
 
It enables to display 160 x 240 Pixels with 30 shades without
GR10: 444 444 666 666 666 666 888 888 888
nearly all flickering (depends on the source-picture you use)...
GR09: 555 666 555 666 777 888 777 888 999
HARD stands not for HARD or HEAVY Interlacing, just for the
HIP : 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5
inventors...
 
GR10: 888 aaa aaa aaa aaa ccc ccc ccc ccc
2. The History of HIP
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
Tamas Bene and I had a "EMail"-conversation the last few month and
 
we were talking about older demos and effects and suddenly we
GR10: eee eee eee
have talked about the Visdowm II-Demo of JAC! where JAC had
GR09: ddd eee fff
managed to display 16 colors/shades in a resolution of Gr.15, which
HIP : d.5 e.0 e.5
means 160x200... We talked about the "unity"-demo where Our-5oft
</pre>
switched 3 graficmodes in 1 scanline,
 
gr.8,gr.9 and somehthing similar to gr.15 by altering the prior-
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 trybach 9 i 10) podczas każdego przerwania VBI. Dlatego troszkę to miga.
register per DLI... what do you think happens when
 
writing #0 in that register at the beginning of a scanline, waiting
Ale w trybie 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!
some time... switching to gr.9 by writing #$40 there and after
 
a little while in the last 1/3 of the scanline back to gr.0 by
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 graficznego 9 wartość 7 (w Basicu przez komendy: <code>COLOR 7</code>, <code>PLOT x,y</code>). Natomiast dla linii trybu 10 jest wartość 6, ale byłoby niewłaściwie ustawiać piksel kolorem 6, ponieważ mamy właśnie 8 rejestrów koloru w trybie 10. Co powiecie na ustawienie rejestrów koloru w następujący sposób:
writing again #0 into it... what does the GTIA produce?
 
not gr.0 (or gr.8...)as normaly... he displays something similar to gr.15!!!
  704 = 0
705 = 0
He then told me some stories of the coding-sessions of "Joyride" last summer
706 = 2
and in the DIL-Plasma-Screen they discovered another "BUG"...but
707 = 4
Tamas had written down the FX and had forgot it... till we were
708 = 6
taking about GTIA-BUGs...
709 = 8
710 = 10
so we talked now about known GTIA-Bugs and the next day Tamas was
711 = 12
upset and told me he had discovered a new bug and he had reproduced the
712 = 14
DIL-"BUG"... he discovered that some scanlines were shifted by
 
a half (!) gr.9-pixel when the scroller starts and they didnt fixed
Jeśli chcemy jasność 6, musimy ustawić piksel kolorem 4: plot x,y! W Graphics 10 wartość piksela wybiera rejestr koloru! Pusty/czarny piksel nie jest ustawiany kolorem 0!
that BUG in the DIL-Screen...
 
But after reproducing this BUG he discovered that the reason wasnt the
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.
scroller... it was the special display-list-routine...
 
W trybie 9 nie możemy wstawić 14 do rejestru 712, ponieważ tu rejestr 712 definiuje podstawowy kolor. Dlatego jeśli chcemy 30 odcieni szarości, musimy wstawić tam wartość 0, lecz wtedy w trybie 10 musi być 14 w tym rejestrze.
3. Technical Infos conc. HIP
 
Rozwiązaniem jest specjalne przerwanie [[DLI]] i Display Lista.
The basic idea is that all gr.10-lines were shifted by a half
 
color-clock (or pixel) by the GTIA and that always!!!! but noone
<pre>
has ever tried to combine gr.9 and gr.10...
  1. vbi 2. vbi
all have combined gr.9 (16 shades) and gr.11 (16 colors) to display
 
256 different colors (like in APACview)... but the resolution
  DList1 DList2
was still 80x200...
 
  gr9 (0) gr10(0) dli-bit ustawiony
So here is a ASCII-Description of the basic idea:
gr10(1) gr9 (1)
gr9 (2) gr10(2) dli-bit ustawiony
This is the combinations which are needed for the gr10-line and the
gr10(3) gr9 (3)
gr9-line to display the wanted HIP-color:
gr9 (4) gr10(4) dli-bit ustawiony
...     ...
</pre>
GR10 :000 000 000 222 222 222 222 444 444
 
GR09 :000 111 222 111 222 333 444 333 444
(x) jest numerem linii ekranowej w każdej (z dwóch) pamięci obrazu.
HIP :0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
 
Gdy zapętlimy to, to stworzymy interlace pomiędzy tymi dwoma pamięciami ekranowymi (w trybach 9 i 10) i zrobimy tym sposobem tryb HIP; lecz musimy ustawić prawidłowe wartości w rejestrze COLBAK $d01a (712, zobacz powyżej).
GR10 :444 444 666 666 666 666 888 888 888
 
GR09 :555 666 555 666 777 888 777 888 999
<pre>
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
and viola... here are 30 possibilites of shades...
Our eyes are averaging the two luminance-values by
interlacing the two lines each vbi.
---
but attention... in gr10 it is possible to select each
of the xl color registers (704-712), so in the display-
routine and the display-list-interrupt the color-registers
have to be set in a correct way!!!!
so if you look in the above table the values mean the xl-luminance!!!
example:
if we want to display HIP-color 6.5 then we have to set in the
gr.9-line the value 7 (in basic by color 7 plot x,y)
for the gr10-line there is the value 6 but... it would be
wrong to set the pixel by color 6... coz. we have just 8 color-registers
in gr10... so what about setting the color-registers
in the following way???
   
704 = 0
705 = 0
706 = 2
707 = 4
708 = 6
709 = 8
710 = 10
711 = 12
712 = 14
so... if we want luminance 6 then we have to set the pixel by
color 4:plot x,y !!!!!!! in gr.10 the pixel-value selects the
color-register!!! an empty/black pixel is not set by color 0 !!!
color 0 says to the gtia "put the pixel with the color which
is defined by color-register 704" !!! so if you have put 0 in 704
there will be a black-pixel visible...
But in gr.9 we can`t set 14 in 712 coz. in gr.9 register 712 defines
the basic-color... so if we want 30 grey-shades... we have to put
0 there... but in gr.10 there must be 14 there... hmmm... the solution
is a special DLI and Display-Lists...
   
1. vbi   2. vbi
   
DList1   DList2
   
gr9 (0)   gr10(0) dli-bit set
gr10(1)   gr9 (1)
gr9 (2)   gr10(2) dli-bit set
gr10(3)   gr9 (3)
gr9 (4)   gr10(4) dli-bit set
...       ...
(x) is the number of the scanline in each screen-ram...
so... if we loop this... we interlace between this two gr9 and gr10
screen-rams and we will have a hip-picture...but we have to set
the correct values in colbk $d01a (712, see above!!!)
1. vbi      2. vbi
1. vbi      2. vbi
 
DLI1         DLI2
DLI1         DLI2
 
pha         pha
pha           pha
lda #$40     lda #$80   ; switching to correct gr-mode (gr9, gr10)
lda #$40     lda #$80 ; przełączenie na
sta wsync   sta wsync
                      ; odpow. tryb Graphics
sta gtiamode sta gtiamode
                      ; (Graphics #9, Graphics #10)
lda #0       lda #14   ;setting correct background-color
sta wsync     sta wsync
sta $d01a   sta $d01a
sta gtiamode sta gtiamode
lda #$80     lda #$40   ;switching to next gr.mode (see displaylist)
lda #0       lda #14
sta wsync   sta wsync
                      ; ustawienie odpow.
sta gtiamode sta gtiamode
                      ; koloru tła
lda #14     lda #0     ;and dont forget the background color!
sta $d01a     sta $d01a
sta $d01a   sta $d01a
lda #$80     lda #$40 ; przełączenie na
pla         pla
                      ; kolejny tryb Graphics
rti         rti
                      ; (zobacz DispList)
 
so... this is the technique but there is a "big" problem by
sta wsync     sta wsync
converting pictures...in gr9/10 each pixel is 4 "bits" large or
sta gtiamode sta gtiamode
a nibble and in a hip-pixel 2 of them (the overlaping ones...)
lda #14       lda #0
                      ; i nie zapomnij o
here an example:
                      ; kolorze tła !
   
sta d01a     sta $d01a
gr.10: ..00002222...
pla           pla
gr.9 : 000022224444...
rti           rti
HIP  : ..00112233..
</pre>
 
remember: GTIA shifts the gr10-lines by a half gr.10 pixel!!!
To jest technika, lecz jest "duży" problem z konwertowaniem obrazków. W trybie 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).
 
so... we will always track one half of the pixel-value to the next
Tutaj jest przykład:
hip-pixel... and this is the difficulty... the hip-colors are
 
NOT able to be set free!!! there are restrictions like the main one:
  gr.10: ..00002222...
gr.9 :   000022224444...
two following hip-pixels should not have a difference of their luminace
HIP  : ..00112233..
greater than 2 !!!! coz. then we could not set the right values and
 
the hip-pixel will begin to flicker!!!
Pamiętaj: GTIA przesuwa linie trybu 10 o pół piksla w trybie 9/10!
 
Best way is to use digitised source-pictures with smooth luminance
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:
for converting to hip-format... or raytraced stuff...
 
* 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ć.
so try do code such a linear optimasation-algorithmus...
 
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.
4. Converters:
 
Spróbuj zakodować odpowiedni algorytm optymalizacji dla konwersji na HIP.
they are avaible for the following systems:
 
==Konwertery==
unix  coded by Tamas Bene from HARD
 
PC   coded by Tamas Bene from HARD
Są one dostępne dla następujących systemów:
 
Amiga coded and adapted by HEAVEN of Taquart
*Unix - kodowany przez Tamása Benego z HARD
XL   my algorithmus, written by HEAVEN of Taquart
*PC - kodowany przez Tamása Benego z HARD
*Amiga - kodowany i przerobiony przez [[Heaven]]a/[[Taquart]]
For Converting you need:
*XL - moje algorytmy, napisane przez Heavena/Taquart
 
-one of the above converters
Do konwertowania potrzebujesz:
-a paint-program which can produce pictures in REAL greyscale and 64
 
colors in a size 320x200
*jeden z powyższych konwerterów
I think the new version of the bmp2hip-pc-converter can handle
*program graficzny, w którym można tworzyć obrazki w PRAWDZIWEJ skali szarości i 64 kolorach, w rozdzielczości 320&times;200 pikseli (myślę, że nowa wersja konwertera "bmp2hip" na PC będzie mogła 'obrabiać' większe rozdzielczości i więcej kolorów).
bigger sizes and more colors...
*obrazek 320&times;200&times;64 musi być zapisany w formacie Windows-BMP
-the 320x200x64 picture must be saved in Windows-BMP format
*program przenoszący dane na [[XL]]/[[XE]]
-a transfer program to XL
*procedurę wyświetlającą tryb HIP na XL
-a HIP-display-routine on XL
 
<pre>
I hope I could help someone to do HIPing...
Heaven, 30.08.96
CrEdItS:
CrEdItS:
- tekst: Heaven
-Text by Heaven
- algorytmy: Sanyi i Tamás z HARD Soft
-Algorithmus by Sanyi and Tamas of HARD
- procedura wyświetlania trybu HIP: Tamás z HARD Soft
-HIP-Display-Routine by Tamas of HARD
- inspiracja: JAC!
-JAC! for inspiration...
- tłumaczenie z angielskiego wraz z dostosowaniem tekstu do EED: Dracon of TQA
</pre>
ps. we have tried to do color-hipping but there is a difficulty
 
with the luminance of the xl-colors... the luminance is different
[[Kategoria:Atari 8-bit]]
of some colors while setting the luminance to 0... so it
[[Kategoria:Formaty plików]]
is HARD to calculate correct colors...but it is not impossible
[[Kategoria: Tryby graficzne]]
Future stuff:
-converters which can handle several formats and colored-picture formats
by generating by themselves the greyscale values...
-color-HIP... a algorithmus to generate colored hips...
-maybe it is possible to interlace HIP and so we could increase
the amount of colors up ???
Many Thanx for all:
-Tamas Bene of HARD ...
_Slaves and rest of Taquart
-Gumi of Tight
-Marek Tomczyk for Websupporting
try the following webpages:
http://www.uni-karlsruhe.de/~Marek.Tomczyk/
http://ajax.umcs.lublin.pl/~mfranczak (TIGHT) to get to TAQUART
--- HeAvEn: Email: nadkar@fh-pforzheim.de ---

Aktualna wersja z 16 sie 2024, 09:00

przykładowy obrazek w trybie HIP


Co to jest HIP ?

HIP jest 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×240 pikseli 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.

Historia HIPa według Heavena/Taquart

Tamás 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 Graphics 15, która oznaczała 160×200 pikseli. Rozmawialiśmy także o demie UNITY, gdzie grupa Our 5oft przełączała trzy tryby graficzne w jednej linii ekranowej: Graphics 8, Graphics 9 i coś podobnego do Graphics 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 (GPRIOR) na początku wyświetlania linii ekranowej, odczekasz trochę czasu (procesora). przełączysz wyświetlanie na Graphics 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 tryb 8, wpisując do GPRIOR ponownie wartość #$00??? Co pokaże GTIA? Nie, nie grafikę 8 (lub Graphics 0) jak normalnie - GTIA wyświetli coś podobnego do trybu 15!!!

Tamás opowiedział mi trochę historii o sesjach kodowania do dema Joyride, w których brał udział ostatniego lata (1995) i stwierdził, że razem z resztą HARD'u odkryli jeszcze jakiś dodatkowy błąd w procedurze plazmy, lecz on dokończył ten efekt i zapomniał o wykrytym błędzie, 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 Tamás 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ół(!) piksela trybu 9, gdy zaczynał się scroller i oni (HARD) nie poprawili tego błędu w plaźmie. Jednak po odtworzeniu tego błędu Tamás przekonał się, iż powodem błędu nie był scroller. Błąd tkwił w specjalnej procedurze Display-Listy.

Techniczne informacje o HIP

Podstawowym założeniem jest, że wszystkie linie trybu Graphics 10 są przesunięte o połowę piksela (albo o tzw. cykl koloru) w prawo w stosunku do pikseli trybu 9. Nikt jednak nawet nie próbował połączyć trybu 9 z 10. Wszyscy łączyli tryb 9 (16 odcieni) z trybem 11 (16 kolorów), aby wyświetlić 256 różnych kolorów (tak jak to widać w np. APAC View). Lecz wtedy rozdzielczość wynosiła wciąż 80×200 pikseli.

Tutaj znajduje się wytłumaczenie podstawowego pomysłu.

Oto kombinacje, które są potrzebne do łączenia linii trybu grafiki 9 z 10, w celu wyświetlenia 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 trybach 9 i 10) podczas każdego przerwania VBI. Dlatego troszkę to miga.

Ale w trybie 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 graficznego 9 wartość 7 (w Basicu przez komendy: COLOR 7, PLOT x,y). Natomiast dla linii trybu 10 jest wartość 6, ale byłoby niewłaściwie ustawiać piksel kolorem 6, ponieważ mamy właśnie 8 rejestrów koloru w trybie 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

Jeśli chcemy jasność 6, musimy ustawić piksel kolorem 4: plot x,y! W Graphics 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 trybie 9 nie możemy wstawić 14 do rejestru 712, ponieważ tu rejestr 712 definiuje podstawowy kolor. Dlatego jeśli chcemy 30 odcieni szarości, musimy wstawić tam wartość 0, lecz wtedy w trybie 10 musi być 14 w tym rejestrze.

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, to stworzymy interlace pomiędzy tymi dwoma pamięciami ekranowymi (w trybach 9 i 10) i zrobimy tym sposobem tryb HIP; lecz musimy ustawić prawidłowe wartości w rejestrze COLBAK $d01a (712, zobacz powyżej).

1. vbi       2. vbi

DLI1          DLI2

pha           pha
lda #$40      lda #$80 ; przełączenie na
                       ; odpow. tryb Graphics
                       ; (Graphics #9, Graphics #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 Graphics
                       ; (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 trybie 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 10 o pół piksla w trybie 9/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.

Konwertery

Są one dostępne dla następujących systemów:

  • Unix - kodowany przez Tamása Benego z HARD
  • PC - kodowany przez Tamása Benego z HARD
  • Amiga - kodowany i przerobiony przez Heavena/Taquart
  • XL - moje algorytmy, napisane przez Heavena/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 320×200 pikseli (myślę, że nowa wersja konwertera "bmp2hip" na PC będzie mogła 'obrabiać' większe rozdzielczości i więcej kolorów).
  • obrazek 320×200×64 musi być zapisany w formacie Windows-BMP
  • program przenoszący dane na XL/XE
  • procedurę wyświetlającą tryb HIP na XL
CrEdItS:
- tekst: Heaven
- algorytmy: Sanyi i Tamás z HARD Soft
- procedura wyświetlania trybu HIP: Tamás z HARD Soft
- inspiracja: JAC!
- tłumaczenie z angielskiego wraz z dostosowaniem tekstu do EED: Dracon of TQA