1 Ostatnio edytowany przez Cyprian (2022-03-15 16:53:11)

Mam poniższy kod TurboBasic XL ( w sumie to Sebana - dzięki :) ) który generuje "pierwszą grafikę" XOR. Wygląda ona ok, jest na niej 16 odcieni.
Z tym że jak włączy się "trybu przyciągania uwagi" to brakuje pewnych odcieni.

Czemu tak się dzieje?

10 GRAPHICS 9:FOR X=0 TO 15:FOR Y=0 TO 15:C=(X EXOR Y)&15:IF C=0:C=1:ENDIF
20 COLOR C:PLOT X+8,Y*4:DRAWTO X+8,Y*4+3:NEXT Y:NEXT X
30 GET S

"Pierwsza grafika":
http://www.atari.org.pl/forum/misc.php?action=pun_attachment&item=8880

Tryb przyciągania uwagi:
http://www.atari.org.pl/forum/misc.php?action=pun_attachment&item=8880http://www.atari.org.pl/forum/misc.php?action=pun_attachment&item=8882http://www.atari.org.pl/forum/misc.php?action=pun_attachment&item=8883http://www.atari.org.pl/forum/misc.php?action=pun_attachment&item=8884

Post's attachments

XOR1.png 356 b, nikt jeszcze nie pobierał tego pliku. 

XOR2.png 360 b, nikt jeszcze nie pobierał tego pliku. 

XOR3.png 286 b, nikt jeszcze nie pobierał tego pliku. 

XOR4.png 290 b, nikt jeszcze nie pobierał tego pliku. 

XOR5.png 253 b, nikt jeszcze nie pobierał tego pliku. 

Tylko zalogowani mogą pobierać załączniki.
Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

2

tak to działa, młodszy nibble $d01a powinien być = 0 (0..15), inaczej obetniesz zakres (n..15)

wszelkie pretensje proszę kierować do projektantów GTIA

*- TeBe/Madteam
3x Atari 130XE, SDX, CPU 65816, 2x VBXE, 2x IDE Plus rev. C

3

Hej!

To co powstaje może wygląda na pierwszy rzut oka i dziwnie, ale to nie jest nic magicznego... wyście video z GTIA jest skonstruowane tak że mamy 4 bity luminancji (jasności) oraz wyjście koloru, które generuje już sygnał chrominancji rozpoznawany przez dekoder PAL/NTSC w TV... co z tego wynika?

Dla ułatwienia pomińmy sygnał chrominancji (info o kolorze). Zostańmy tylko z samą luminancją. Skoro mamy więc 4-bit DAC kodujący jasność, to na jego wyjściu nie powstanie więcej niż 16 jasności... A że tryb GTIA z 16 jasnościami pokrywa całą przestrzeń "jasności", to robi się pewien problem gdy mamy dodatkowo rejestr określający kolor tła. Jak wiadomo rejestry koloru są podzielone tak że górne 4-bity takiego rejestru określają barwę/kolor, a dolne 4 bity określają jasność wybranej barwy/koloru.

W trybie GR.9 (16 odcieni jednego koloru) określamy którego koloru będą to odcienie, decydują o tym górne 4 bity, a więc poszczególne wartości typu $10,$20,$30,$40...$F0 określają po prostu który kolor/barwę wybieramy dla całego ekranu... no ale ten rejestr ma również dolne 4 bity, których ustawienia w tym trybie nikt nie zabronił... ale co zatem zrobi GTIA gdy ma pełną informację o jasności piksela z pamięci ekranu i jeszcze dodatkowo dochodzi informacja o jasności globalnej z dolnego nibbla rej. koloru?

GTIA wykonuje po prostu operację typu "OR" pomiędzy jasnością każdego piksela tego trybu, a dolnymi 4-bitami rejestru $D01A, to jest cała tajemnica, można to zasymulować również software-owo, za chwilę klepnę przykładowy kod.

4

ok,
widzę że w GR 11 jest podobnie, ale pewnie starszy nibble powinien być 0?

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

5

Tak, przy czym w GR.11 młodszy nibble odpowiada za jasność wszystkich kolorów oprócz 0 (szarego). Szary ma zawsze jasność zero, czyli czarny.

https://www.youtube.com/watch?v=jofNR_WkoCE

6

Dokładnie tak. W GR.11 jak narysujesz coś kolorem 8 i w $D01A wpiszesz $70, to wyjdzie Ci na to że na ekranie zobaczysz kolor $F0.

tzn. jeżeli to będziesz robił w BASIC to musisz używać rejestrów cieni, tzn. 712 lub $2C8.

7

ok dzięki @tebe @seban @Fox

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

8

To już może jako podsumowanie całej dyskusji mini program w TBXL który umożliwia oszacowanie co wyjdzie ze zmieszania danego koloru/odcienia z konkretną wartością w rej. $D01A ($2C8):

http://seban.pigwa.net/aa/GR9_OR.png  http://seban.pigwa.net/aa/GR11_OR.png

W załączniku listing programu który generuje to co widać wyżej.

A przy okazji, uważne oczy zobaczą na obrazkach "Trójkąt Sierpińskiego" ;-)

Post's attachments

gtiaor.lst 404 b, liczba pobrań: 1 (od 2022-03-15) 

Tylko zalogowani mogą pobierać załączniki.

9

elegancko

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org