HIP
From Atariki
(Różnice między wersjami)
Wersja z dnia 01:40, 8 wrz 2005 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 06:04, 10 mar 2006 KMK (Dyskusja | wkład) Next diff → |
||
Linia 1: | Linia 1: | ||
+ | {{SDP}} | ||
+ | |||
<pre> | <pre> | ||
1. What is HIP? | 1. What is HIP? |
Wersja z dnia 06:04, 10 mar 2006
1. What is HIP? HIP is a new method to displaing pictures on small atari... HIP stands for HARD-Interlacing-Picture and was found by Members of HARD Software, Hungary in June, July 1996... It enables to display 160 x 240 Pixels with 30 shades without nearly all flickering (depends on the source-picture you use)... HARD stands not for HARD or HEAVY Interlacing, just for the inventors... 2. The History of HIP Tamas Bene and I had a "EMail"-conversation the last few month and we were talking about older demos and effects and suddenly we have talked about the Visdowm II-Demo of JAC! where JAC had managed to display 16 colors/shades in a resolution of Gr.15, which means 160x200... We talked about the "unity"-demo where Our-5oft switched 3 graficmodes in 1 scanline, gr.8,gr.9 and somehthing similar to gr.15 by altering the prior- register per DLI... what do you think happens when writing #0 in that register at the beginning of a scanline, waiting 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 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!!! He then told me some stories of the coding-sessions of "Joyride" last summer and in the DIL-Plasma-Screen they discovered another "BUG"...but Tamas had written down the FX and had forgot it... till we were taking about GTIA-BUGs... so we talked now about known GTIA-Bugs and the next day Tamas was upset and told me he had discovered a new bug and he had reproduced the DIL-"BUG"... he discovered that some scanlines were shifted by a half (!) gr.9-pixel when the scroller starts and they didnt fixed that BUG in the DIL-Screen... But after reproducing this BUG he discovered that the reason wasnt the scroller... it was the special display-list-routine... 3. Technical Infos conc. HIP 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 has ever tried to combine gr.9 and gr.10... all have combined gr.9 (16 shades) and gr.11 (16 colors) to display 256 different colors (like in APACview)... but the resolution was still 80x200... So here is a ASCII-Description of the basic idea: This is the combinations which are needed for the gr10-line and the gr9-line to display the wanted HIP-color: 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 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 DLI1 DLI2 pha pha lda #$40 lda #$80 ; switching to correct gr-mode (gr9, gr10) sta wsync sta wsync sta gtiamode sta gtiamode lda #0 lda #14 ;setting correct background-color sta $d01a sta $d01a lda #$80 lda #$40 ;switching to next gr.mode (see displaylist) sta wsync sta wsync sta gtiamode sta gtiamode lda #14 lda #0 ;and dont forget the background color! sta $d01a sta $d01a pla pla rti rti so... this is the technique but there is a "big" problem by converting pictures...in gr9/10 each pixel is 4 "bits" large or a nibble and in a hip-pixel 2 of them (the overlaping ones...) here an example: gr.10: ..00002222... gr.9 : 000022224444... HIP : ..00112233.. remember: GTIA shifts the gr10-lines by a half gr.10 pixel!!! so... we will always track one half of the pixel-value to the next hip-pixel... and this is the difficulty... the hip-colors are NOT able to be set free!!! there are restrictions like the main one: two following hip-pixels should not have a difference of their luminace greater than 2 !!!! coz. then we could not set the right values and the hip-pixel will begin to flicker!!! Best way is to use digitised source-pictures with smooth luminance for converting to hip-format... or raytraced stuff... so try do code such a linear optimasation-algorithmus... 4. Converters: they are avaible for the following systems: unix coded by Tamas Bene from HARD PC coded by Tamas Bene from HARD Amiga coded and adapted by HEAVEN of Taquart XL my algorithmus, written by HEAVEN of Taquart For Converting you need: -one of the above converters -a paint-program which can produce pictures in REAL greyscale and 64 colors in a size 320x200 I think the new version of the bmp2hip-pc-converter can handle bigger sizes and more colors... -the 320x200x64 picture must be saved in Windows-BMP format -a transfer program to XL -a HIP-display-routine on XL
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.