Rejestry VBXE

Z Atariki mirror
Wersja z dnia 08:51, 1 paź 2026 autorstwa imported>Atariki recovery (Reconstructed from archived HTML; see provenance manifest)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Rejestry sprzętowe VBXE znajdują się na stronie $D6 lub $D7 w zależności od konfiguracji karty. Sposób stwierdzenia ich lokalizacji w przestrzeni adresowej opisany jest w haśle Wykrycie VBXE.

Rejestry, które są tylko do zapisu (W), przy odczycie zwracają wartość $FF (255).

Rdzeń GTIA

Adres Etykieta Opis
$Dx40 (R) CORE_VERSION Zawiera kod typu rdzenia. Dla rdzeni GTIA jest to $11.
$Dx41 (R) MINOR_REVISION Zawiera nr wersji rdzenia. Najstarszy bit, jeśli jest ustawiony, sygnalizuje obecność emulacji rozszerzenia pamięci RAMBO 256k. Np. wartość $06 tutaj sygnalizuje rdzeń GTIA v.1.06a/g, a wartość $86 - rdzeń GTIA v.1.06r.
$Dx44 (W) CSEL Nr koloru (z palety 256 kolorów Atari), od którego zacznie się modyfikacja palety kolorów przy użyciu rejestrów CR, CG i CB.
$Dx46 (W) CR Składowa czerwona (R) koloru wybranego w rejestrze CSEL. Wartość składowej jest 7-bitowa, pod uwagę brane są tylko bity 7-1, a bit 0 jest ignorowany.Zmiana składowej następuje natychmiast po zapisie wartości do tego rejestru.
$Dx47 (W) CG Składowa zielona (G) koloru wybranego w rejestrze CSEL. Wartość składowej jest 7-bitowa, pod uwagę brane są tylko bity 7-1, a bit 0 jest ignorowany. Zmiana składowej następuje natychmiast po zapisie wartości do tego rejestru.
$Dx48 (W) CB Składowa niebieska (B) koloru wybranego w rejestrze CSEL. Wartość składowej jest 7-bitowa, pod uwagę brane są tylko bity 7-1, a bit 0 jest ignorowany. Zmiana składowej następuje natychmiast po zapisie wartości do tego rejestru. Ponadto po zapisie do tego rejestru następuje automatyczne zwiększenie wartości rejestru CSEL. Jeśli bieżącą wartością CSEL jest $FF, jego wartość zmieni się na $00.

Rdzeń FX

Adres Etykieta Opis
$Dx40 (R) CORE_VERSION Zawiera kod typu rdzenia. Dla rdzeni FX jest to $10.
$Dx40 (W) VIDEO_CONTROL Używane są tylko bity 0-3, pozostałe powinny być wyzerowane. Funkcje bitów:
Bit Nazwa Opis
3 trans15 Ten bit ma znaczenie tylko wtedy, gdy bit no_trans=0.

0 = jak opisano pod no_trans

1 = dodatkowo każdy kolor o wartości $xF jest przezroczysty.

2 no_trans 0 = w trybach VBXE piksele o wartości 0 traktuj jako przezroczyste

1 = w trybach VBXE piksele o wartości 0 traktuj jako nieprzezroczyste.

Skasowanie tego bitu powoduje, że w miejscu pikseli o wartości 0 będzie wyświetlany obraz ANTIC-a, normalnie przykryty overlayem VBXE. W trybach tekstowych kolor tła znaku jest przezroczysty, gdy bit 7 atrybutu znaku ma wartość 0.

1 xcolor 0 = ignoruj bit 0 rejestrów kolorów GTIA (= standard)

1 = uwzględniaj bit 0 rejestrów kolorów GTIA.

Ustawienie tego bitu powoduje ponadto, że w trybach wysokiej rozdzielczości ANTIC-a (Graphics 0, Graphics 8, ANTIC 3) kolor zapalonego piksela staje się zupełnie niezależny od koloru tła i jest w całości definiowany przez rejestr GTIA COLPF1.

0 xdl_enabled 0 = wyłącz przetwarzanie XDL

1 = włącz przetwarzanie XDL

Zmiana stanu bitu jest brana pod uwagę po najbliższym impulsie synchronizacji pionowej (VBL).

$Dx41 (R) MINOR_REVISION Zawiera nr wersji rdzenia. Najstarszy bit, jeśli jest ustawiony, sygnalizuje obecność emulacji rozszerzenia pamięci RAMBO 256k. Np. wartość $26 tutaj sygnalizuje rdzeń FX v.1.26a/g, a wartość $A6 - rdzeń FX v.1.26r.
$Dx41 (W) XDL_ADR0 Bity 0-7 adresu XDL w VRAM.
$Dx42 (W) XDL_ADR1 Bity 8-15 adresu XDL w VRAM.
$Dx43 (W) XDL_ADR2 Bity 16-23 adresu XDL w VRAM. Z tej wartości bity 19-23 są ignorowane (VBXE ma tylko 512k VRAM-u pokrywającego zakres adresowy od $000000 do $07FFFF), jednak powinno się je ustawiać na 0 dla zgodności w przód.
$Dx44 (W) CSEL Nr koloru (z palety 256 kolorów Atari), od którego zacznie się modyfikacja palety kolorów wybranej rejestrem PSEL przy użyciu rejestrów CR, CG i CB.
$Dx45 (W) PSEL Wybór palety z zakresu 0-3. Palety 0 nie należy przedefiniowywać, o ile nie zachodzi ku temu naprawdę uzasadniona konieczność, bo a) jest ona używana przez system (toteż powinna pozostać zgodna z kolorami zdefiniowanymi przez Atari), b) palet nie da się przywrócić bez wyłączenia zasilania komputera (rejestry palet są tylko do zapisu).
$Dx46 (W) CR Składowa czerwona (R) koloru wybranego w rejestrze CSEL w palecie wybranej rejestrem PSEL. Wartość składowej jest 7-bitowa, pod uwagę brane są tylko bity 7-1, a bit 0 jest ignorowany.Zmiana składowej następuje natychmiast po zapisie wartości do tego rejestru.
$Dx47 (W) CG Składowa zielona (G) koloru wybranego w rejestrze CSEL w palecie wybranej rejestrem PSEL. Wartość składowej jest 7-bitowa, pod uwagę brane są tylko bity 7-1, a bit 0 jest ignorowany. Zmiana składowej następuje natychmiast po zapisie wartości do tego rejestru.
$Dx48 (W) CB Składowa niebieska (B) koloru wybranego w rejestrze CSEL w palecie wybranej rejestrem PSEL. Wartość składowej jest 7-bitowa, pod uwagę brane są tylko bity 7-1, a bit 0 jest ignorowany. Zmiana składowej następuje natychmiast po zapisie wartości do tego rejestru. Ponadto po zapisie do tego rejestru następuje automatyczne zwiększenie wartości rejestru CSEL. Jeśli bieżącą wartością CSEL jest $FF, jego wartość zmieni się na $00. Rejestr PSEL nie ulega zmianie.
$Dx49 (W) COLMASK Rejestr służący do konfiguracji detekcji kolizji pomiędzy obiektami trybów VBXE (OVERLAY - tak graficznym, jak tekstowym) a dowolnym z kolorów GTIA (COLPM0/1/2/3, COLPF0/1/2/3) lub polem mapy atrybutów z ustawionym bitem CATT.

Jeśli bit COLMASK z kolumny lewej jest ustawiony na 1, VBXE będzie sygnalizować (w rejestrze COLDETECT) kolizje obiektów OVERLAY z obiektami GTIA, gdy nieprzezroczysty kolor obiektu OVERLAY zawiera się w przedziale wskazanym w kolumnie prawej (nr palety jest tu nieistotny):

Bit Przedział
0 0-31
1 32-63
2 64-95
3 96-127
4 128-159
5 160-191
6 192-223
7 224-255

Kolizje wykrywane są automatycznie podczas wyświetlania obrazu przez VBXE. Uwaga: tego mechanizmu nie należy mylić z wykrywaniem kolizji pomiędzy obiektami OVERLAY oferowanym przez Blitter VBXE.

$Dx4A (R) COLDETECT Kod kolizji ustawionej w rejestrze COLMASK. Jeśli bit z kolumny lewej jest ustawiony na 1, wykryto kolizję obiektu OVERLAY z kolorem z kolumny prawej:
Bit Kolizja OVERLAY z
0 PM0 (gracz-pocisk nr 0)
1 PM1 (gracz-pocisk nr 1)
2 PM2 (gracz-pocisk nr 2)
3 PM3 (gracz-pocisk nr 3)
4 PF0 (pole gry nr 0)
5 PF1 (pole gry nr 1)
6 PF2 lub PF3 (pole gry nr 2 lub 3)
7 pole mapy atrybutów z ustawionym bitem CATT
$Dx4A (W) COLCLR Wpisanie dowolnej wartości powoduje wyzerowanie rejestru COLDETECT.
$Dx50 (R) BLT_COLLISION_CODE Kod kolizji pomiędzy obiektami trybu VBXE (OVERLAY) wykrytej podczas pracy blittera. Wykrycie kolizji sygnalizuje wartość BLT_COLLISION_CODE różna od zera. Kod kolizji odpowiada niezerowej wartości koloru piksela nadpisanego przez blitter. BLT_COLLISION_CODE jest zerowany automatycznie w momencie uruchomienia blittera.
$Dx50 (W) BL_ADDR0 Bity 0-7 adresu BlitterList w pamięci VRAM.
$Dx51 (W) BL_ADDR1 Bity 8-15 adresu BlitterList w pamięci VRAM.
$Dx52 (W) BL_ADDR2 Bity 16-23 adresu BlitterList w pamięci VRAM. Z tej wartości bity 19-23 są ignorowane (VBXE ma tylko 512k VRAM-u pokrywającego zakres adresowy od $000000 do $07FFFF), jednak powinno się je ustawiać na 0 dla zgodności w przód.
$Dx53 (R) BLITTER_BUSY Wartość tego rejestru wynosi $00, gdy blitter nie pracuje (stan IDLE), lub różną od $00, gdy przetwarza BlitterList lub wykonuje zdefiniowaną tam operację (stan BUSY).
$Dx53 (W) BLITTER_START Bit 0 = 0 - blitter stop (stan domyślny)

Bit 0 = 1 - blitter start

Pozostałe bity powinny być wyzerowane.

$Dx54 (R) IRQ_STATUS Bit 0 = 1 - zostało zgłoszone przerwanie IRQ ustawione w IRQ_CONTROL.
$Dx54 (W) IRQ_CONTROL Rejestr kontroli przerwania IRQ, które może zostać zgłoszone w momencie zakończenia pracy przez blitter (przy przejściu blittera ze stanu BUSY do stanu IDLE). Wykorzystany jest tylko bit 0: ustawienie na 0 powoduje zabronienie przerwania (jest to stan domyślny), a na 1 - zezwolenie na przerwanie. Dodatkowo zapis dowolnej wartości powoduje skasowanie żądania przerwania, które już wystąpiło.
$Dx55 (W) P0
$Dx56 (W) P1
$Dx57 (W) P2
$Dx58 (W) P3
$Dx5D (W) MEMAC_B_CONTROL
$Dx5E (RW) MEMAC_CONTROL
$Dx5F (RW) MEMAC_BANK_SEL

Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.