Rejestry GTIA

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 11:44, 10 sty 2011
Krótki (Dyskusja | wkład)
(poprawki w nazwach rejestrów, dodanie nazw oficjalnych)
← Previous diff
Aktualna wersja
KMK (Dyskusja | wkład)
(stub na tym etapie to już nieśmieszne)
Linia 3: Linia 3:
===Lista rejestrów=== ===Lista rejestrów===
-<table border = 1 cellpadding = 5>+{| border="1" cellpadding="5"
-<tr><td><b>Adres</b></td><td><b>Etykieta</b></td><td><b>Opis</b></td></tr>+! Adres !! Etykieta !! Opis
 +|-
 +|id="KOLM0PF"|$D000 (R)||KOLM0PF, M0PF||
 +Znaczniki kolizji pocisku 0 z polem gry. Bity 0-3 oznaczają kolizje z polem gry 0-3 (COLPF0-COLPF3). Kolizja nastąpiła kiedy bit jest ustawiony.
 +* bit 0: COLPF0
 +* bit 1: COLPF1
 +* bit 2: COLPF2
 +* bit 3: COLPF3
 +* bity 4-7: zawsze 0
 +|-
 +|id="HPOSP0"|$D000 (W)||HPOSP0||
 +Pozycja pozioma [[gracz]]a nr 0, mierzona w [[cykl koloru|cyklach koloru]]. Można wpisywać wartości od 0 (skrajna lewa) do 255 (skrajna prawa) pamiętając jednak o tym, że skrajne pozycje znajdują się poza obszarem wyświetlanym na ekranie przeciętnego monitora. W praktyce zakres pozycji, w jakich duszek jest widoczny, rozciąga się od wartości 32 do 216. Standardowe pole gry zajmuje pozycje 48 do 208, zwężone odpowiednio mniej, a rozszerzone odpowiednio więcej.
 +|-
 +|id="KOLM1PF"|$D001 (R)||KOLM1PF, M1PF||
 +Znaczniki kolizji pocisku 1 z polem gry. Patrz [[#KOLM0PF|KOLM0PF]].
 +|-
 +|id="HPOSP1"|$D001 (W)||HPOSP1||Pozycja pozioma gracza nr 1. Patrz [[#HPOSP0|HPOSP0]].
 +|-
 +|id="KOLM2PF"|$D002 (R)||KOLM2PF, M2PF||
 +Znaczniki kolizji pocisku 2 z polem gry. Patrz [[#KOLM0PF|KOLM0PF]].
 +|-
 +|id="HPOSP2"|$D002 (W)||HPOSP2||Pozycja pozioma gracza nr 2. Patrz [[#HPOSP0|HPOSP0]].
 +|-
 +|id="KOLM3PF"|$D003 (R)||KOLM3PF, M3PF||
 +Znaczniki kolizji pocisku 3 z polem gry. Patrz [[#KOLM0PF|KOLM0PF]].
 +|-
 +|id="HPOSP3"|$D003 (W)||HPOSP3||Pozycja pozioma gracza nr 3. Patrz [[#HPOSP0|HPOSP0]].
 +|-
 +|id="KOLP0PF"|$D004 (R)||KOLP0PF, P0PF||
 +Znaczniki kolizji gracza 0 z polem gry. Patrz [[#KOLM0PF|KOLM0PF]].
 +|-
 +|id="HPOSM0"|$D004 (W)||HPOSM0||Pozycja pozioma [[pocisk]]u nr 0. Patrz [[#HPOSP0|HPOSP0]].
 +|-
 +|id="KOLP1PF"|$D005 (R)||KOLP1PF, P1PF||
 +Znaczniki kolizji gracza 1 z polem gry. Patrz [[#KOLM0PF|KOLM0PF]].
 +|-
 +|id="HPOSM1"|$D005 (W)||HPOSM1||Pozycja pozioma pocisku nr 1. Patrz [[#HPOSP0|HPOSP0]].
 +|-
 +|id="KOLP2PF"|$D006 (R)||KOLP2PF, P2PF||
 +Znaczniki kolizji gracza 2 z polem gry. Patrz [[#KOLM0PF|KOLM0PF]].
 +|-
 +|id="HPOSM2"|$D006 (W)||HPOSM2||Pozycja pozioma pocisku nr 2. Patrz [[#HPOSP0|HPOSP0]].
 +|-
 +|id="KOLP3PF"|$D007 (R)||KOLP3PF, P3PF||
 +Znaczniki kolizji gracza 3 z polem gry. Patrz [[#KOLM0PF|KOLM0PF]].
 +|-
 +|id="HPOSM3"|$D007 (W)||HPOSM3||Pozycja pozioma pocisku nr 3. Patrz [[#HPOSP0|HPOSP0]].
 +|-
 +|id="KOLM0P"|$D008 (R)||KOLM0P, M0PL||
 +Znaczniki kolizji pocisku 0 z graczem. Bity 0-3 oznaczają kolizje z graczem 0-3 (COLPM0-COLPM3). Kolizja nastąpiła kiedy bit jest ustawiony.
 +* bit 0: COLPM0
 +* bit 1: COLPM1
 +* bit 2: COLPM2
 +* bit 3: COLPM3
 +* bity 4-7: zawsze 0
 +|-
 +|id="SIZEP0"|$D008 (W)||SIZEP0||
 +Szerokość gracza 0. Znaczenie:
 +* bity 0-1:
 +** %00 - pojedyncza
 +** %01 - podwójna
 +** %10 - pojedyncza
 +** %11 - poczwórna
 +* bity 2-7: niezdefiniowane
 +|-
 +|id="KOLM1P"|$D009 (R)||KOLM1P, M1PL||
 +Znaczniki kolizji pocisku 1 z graczem. Patrz [[#KOLM0P|KOLM0P]].
 +|-
 +|id="SIZEP1"|$D009 (W)||SIZEP1||
 +Szerokość gracza 1. Patrz [[#SIZEP0|SIZEP0]].
 +|-
 +|id="KOLM2P"|$D00A (R)||KOLM2P, M2PL||
 +Znaczniki kolizji pocisku 2 z graczem. Patrz [[#KOLM0P|KOLM0P]].
 +|-
 +|id="SIZEP2"|$D00A (W)||SIZEP2||
 +Szerokość gracza 2. Patrz [[#SIZEP0|SIZEP0]].
 +|-
 +|id="KOLM3P"|$D00B (R)||KOLM3P, M3PL||
 +Znaczniki kolizji pocisku 3 z graczem. Patrz [[#KOLM0P|KOLM0P]].
 +|-
 +|id="SIZEP3"|$D00B (W)||SIZEP3||
 +Szerokość gracza 3. Patrz [[#SIZEP0|SIZEP0]].
 +|-
 +|id="KOLP0P"|$D00C (R)||KOLP0P, P0PL||
 +Znaczniki kolizji gracza 0 z graczem. Patrz [[#KOLM0P|KOLM0P]].
 +|-
 +|id="SIZEM"|$D00C (W)||SIZEM||
 +Szerokość pocisków. Znaczenie:
 +* bity 0-1: szerokość pocisku 0
 +** %00 - pojedyncza
 +** %01 - podwójna
 +** %10 - pojedyncza
 +** %11 - poczwórna
 +* bity 2-3: szerokość pocisku 1
 +* bity 4-5: szerokość pocisku 2
 +* bity 6-7: szerokość pocisku 3
 +|-
 +|id="KOLP1P"|$D00D (R)||KOLP1P, P1PL||
 +Znaczniki kolizji gracza 1 z graczem. Patrz [[#KOLM0P|KOLM0P]].
 +|-
 +|id="GRAFP0"|$D00D (W)||GRAFP0||
 +Rejestr grafiki gracza 0. Zazwyczaj zapisywany przez ANTIC kiedy włączony jest DMA dla graczy w rejestrze [[Rejestry ANTIC-a#DMACTL|DMACTL]]. Ręczne zapisanie tego rejestru powoduje zmianę kształtu gracza 0.
 +|-
 +|id="KOLP2P"|$D00E (R)||KOLP2P, P2PL||
 +Znaczniki kolizji gracza 2 z graczem. Patrz [[#KOLM0P|KOLM0P]].
 +|-
 +|id="GRAFP1"|$D00E (W)||GRAFP1||
 +Rejestr grafiki gracza 1. Patrz [[#GRAFP0|GRAFP0]].
 +|-
 +|id="KOLP3P"|$D00F (R)||KOLP3P, P3PL||
 +Znaczniki kolizji gracza 3 z graczem. Patrz [[#KOLM0P|KOLM0P]].
 +|-
 +|id="GRAFP2"|$D00F (W)||GRAFP2||
 +Rejestr grafiki gracza 2. Patrz [[#GRAFP0|GRAFP0]].
 +|-
 +|id="TRIG0"|$D010 (R)||TRIG0||Stan spustu joysticka nr 0 (0 - wciśnięty). Cień w TRIG0S ($0284). Podłączony jest tu również element światłoczuły [[Pióro świetlne|pióra świetlnego]] lub [[XG-1|pistoletu świetlnego]] dołączonego do portu 0.
 +|-
 +|id="GRAFP3"|$D010 (W)||GRAFP3||
 +Rejestr grafiki gracza 3. Patrz [[#GRAFP0|GRAFP0]].
 +|-
 +|id="TRIG1"|$D011 (R)||TRIG1||Stan spustu joysticka nr 1 (0 - wciśnięty). Cień w TRIG1S ($0285). Podłączony jest tu również element światłoczuły pióra świetlnego lub pistoletu świetlnego dołączonego do portu 1.
 +|-
 +|id="GRAFM"|$D011 (W)||GRAFM||
 +Rejestr grafiki pocisków. Zazwyczaj zapisywany przez ANTIC kiedy włączony jest DMA dla pocisków w rejestrze [[Rejestry ANTIC-a#DMACTL|DMACTL]]. Ręczne zapisanie tego rejestru powoduje zmianę kształtu wszystkich pocisków. Znaczenie:
 +* bity 0-1: kształt pocisku 0
 +* bity 2-3: kształt pocisku 1
 +* bity 4-5: kształt pocisku 2
 +* bity 6-7: kształt pocisku 3
 +|-
 +|id="TRIG2"|$D012 (R)||TRIG2||
 +W [[400/800]] stan spustu joysticka nr 2 (0 - wciśnięty). W [[XEGS]] wskazuje fakt podłączenia klawiatury (1 - podłączona). W pozostałych [[XL]] i [[XE]] rejestr nieużywany. Cień w TRIG2S ($0286).
 +|-
 +|id="COLPM0"|$D012 (W)||COLPM0||
 +Kolor gracza i pocisku nr 0. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury [[SYSVBL]], która kopiuje tu zawartość cienia COLPM0S $02C0 za każdym wystąpieniem [[przerwania]] [[VBL]].
 +|-
 +|id="TRIG3"|$D013 (R)||TRIG3||
 +W [[400/800]] stan spustu joysticka nr 3 (0 - wciśnięty). W [[XL]] i [[XE]] sygnalizuje stan zewnętrznego [[cartridge]]'a (1 - włożony do gniazda) podpiętego pod linię RD5 (mapowanie $A000-$BFFF). Nie wskaże, czy włożono cartridge, który jest podpięty tylko (!) pod linię RD4 (mapowanie $8000-$9FFF). Cień w TRIG3S ($0287).
-<tr><td id="KOLM0PF">$D000 (R)</td><td>KOLM0PF, M0PF</td><td> </td></tr>+W komputerach SECAM (w przeciwieństwie do PAL i NTSC) stan tego rejestru nie ustala się natychmiast po aktywacji (włożeniu) kartridża, ale dopiero podczas pierwszych sześciu [[cykl koloru|cykli koloru]] po impulsie synchronizacji poziomej kończącym bieżącą linię skaningową. Powoduje to kłopoty, jeśli program zapisany na kartridżu może odłączać pamięć ROM kartridża w celu uzyskania dostępu do znajdującego się "pod nią" RAM-u. Takim kartridżem jest [[SpartaDOS X]]. Przyczyną jest fakt, że procedura [[SYSVBL]] (a ściślej: jej druga faza) zawiera kod sprawdzający zgodność stanu TRIG3 i jego cienia GINTLK ($03FA), i jeśli się nie zgadzają, zawiesza komputer.
-<tr><td id="HPOSP0">$D000 (W)</td><td>HPOSP0</td><td>+Metoda obejścia tego problemu:
-<p>Pozycja pozioma [[gracz]]a nr 0, mierzona w [[cykl koloru|cyklach koloru]]. Można wpisywac wartości od 0 (skrajna lewa) do 255 (skrajna prawa) pamiętając jednak o tym, że skrajne pozycje znajdują się poza obszarem wyświetlanym na ekranie przeciętnego monitora. W praktyce zakres pozycji, w jakich duszek jest widoczny, rozciąga się od wartości 32 do 216. Standardowe pole gry zajmuje pozycje 41 do 207, zwężone odpowiednio mniej, a rozszerzone odpowiednio więcej.</p> +<code>
-</td></tr>+ sei ;zablokuj drugą fazę SYSVBL
- + ... ;tu przełączenie pamięci
-<tr><td id="KOLM1PF">$D001 (R)</td><td>KOLM1PF, M1PF</td><td> </td></tr>+ sta wsync ;odczekujemy 2 linie na ustalenie sie stanu trig3
- + sta wsync
-<tr><td id="HPOSP1">$D001 (W)</td><td>HPOSP1</td><td>Pozycja pozioma gracza nr 1. Patrz [[#HPOSP0|HPOSP0]].</td></tr>+ lda trig3
- + sta gintlk
-<tr><td id="KOLM2PF">$D002 (R)</td><td>KOLM2PF, M2PF</td><td> </td></tr>+ cli
- +</code>
-<tr><td id="HPOSP2">$D002 (W)</td><td>HPOSP2</td><td>Pozycja pozioma gracza nr 2. Patrz [[#HPOSP0|HPOSP0]].</td></tr>+|-
- +|id="COLPM1"|$D013 (W)||COLPM1||
-<tr><td id="KOLM3PF">$D003 (R)</td><td>KOLM3PF, M3PF</td><td> </td></tr>+Kolor gracza i pocisku nr 1. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury [[SYSVBL]], która kopiuje tu zawartość cienia COLPM1S $02C1 za każdym wystąpieniem [[przerwania]] [[VBL]].
- +|-
-<tr><td id="HPOSP3">$D003 (W)</td><td>HPOSP3</td><td>Pozycja pozioma gracza nr 3. Patrz [[#HPOSP0|HPOSP0]].</td></tr>+|id="PAL"|$D014 (R)||PAL||
- +Znacznik systemu TV. Znaczenie bitów:
-<tr><td id="KOLP0PF">$D004 (R)</td><td>KOLP0PF, P0PF</td><td> </td></tr>+
- +
-<tr><td id="HPOSM0">$D004 (W)</td><td>HPOSM0</td><td>Pozycja pozioma [[pocisk]]u nr 0. Patrz [[#HPOSP0|HPOSP0]].</td></tr>+
- +
-<tr><td id="KOLP1PF">$D005 (R)</td><td>KOLP1PF, P1PF</td><td> </td></tr>+
- +
-<tr><td id="HPOSM1">$D005 (W)</td><td>HPOSM1</td><td>Pozycja pozioma pocisku nr 1. Patrz [[#HPOSP0|HPOSP0]].</td></tr>+
- +
-<tr><td id="KOLP2PF">$D006 (R)</td><td>KOLP2PF, P2PF</td><td> </td></tr>+
- +
-<tr><td id="HPOSM2">$D006 (W)</td><td>HPOSM2</td><td>Pozycja pozioma pocisku nr 2. Patrz [[#HPOSP0|HPOSP0]].</td></tr>+
- +
-<tr><td id="KOLP3PF">$D007 (R)</td><td>KOLP3PF, P3PF</td><td> </td></tr>+
- +
-<tr><td id="HPOSM3">$D007 (W)</td><td>HPOSM3</td><td>Pozycja pozioma pocisku nr 3. Patrz [[#HPOSP0|HPOSP0]].</td></tr>+
- +
-<tr><td id="KOLM0P">$D008 (R)</td><td>KOLM0P, M0PL</td><td> </td></tr>+
- +
-<tr><td id="SIZEP0">$D008 (W)</td><td>SIZEP0</td><td> </td></tr>+
- +
-<tr><td id="KOLM1P">$D009 (R)</td><td>KOLM1P, M1PL</td><td> </td></tr>+
- +
-<tr><td id="SIZEP1">$D009 (W)</td><td>SIZEP1</td><td> </td></tr>+
- +
-<tr><td id="KOLM2P">$D00A (R)</td><td>KOLM2P, M2PL</td><td> </td></tr>+
- +
-<tr><td id="SIZEP2">$D00A (W)</td><td>SIZEP2</td><td> </td></tr>+
- +
-<tr><td id="KOLM3P">$D00B (R)</td><td>KOLM3P, M3PL</td><td> </td></tr>+
- +
-<tr><td id="SIZEP3">$D00B (W)</td><td>SIZEP3</td><td> </td></tr>+
- +
-<tr><td id="KOLP0P">$D00C (R)</td><td>KOLP0P, P0PL</td><td> </td></tr>+
- +
-<tr><td id="SIZEM">$D00C (W)</td><td>SIZEM</td><td> </td></tr>+
- +
-<tr><td id="KOLP1P">$D00D (R)</td><td>KOLP1P, P1PL</td><td> </td></tr>+
- +
-<tr><td id="GRAFP0">$D00D (W)</td><td>GRAFP0</td><td> </td></tr>+
- +
-<tr><td id="KOLP2P">$D00E (R)</td><td>KOLP2P, P2PL</td><td> </td></tr>+
- +
-<tr><td id="GRAFP1">$D00E (W)</td><td>GRAFP1</td><td> </td></tr>+
- +
-<tr><td id="KOLP3P">$D00F (R)</td><td>KOLP3P, P3PL</td><td> </td></tr>+
- +
-<tr><td id="GRAFP2">$D00F (W)</td><td>GRAFP2</td><td> </td></tr>+
- +
-<tr><td id="TRIG0">$D010 (R)</td><td>TRIG0</td><td>+
-<p>Stan spustu joysticka nr 0 (0 - wciśnięty).</p> +
-</td></tr>+
- +
-<tr><td id="GRAFP3">$D010 (W)</td><td>GRAFP3</td><td> </td></tr>+
- +
-<tr><td id="TRIG1">$D011 (R)</td><td>TRIG1</td><td>+
-<p>Stan spustu joysticka nr 1 (0 - wciśnięty).</p> +
-</td></tr>+
- +
-<tr><td id="GRAFM">$D011 (W)</td><td>GRAFM</td><td> </td></tr>+
- +
-<tr><td id="TRIG2">$D012 (R)</td><td>TRIG2</td><td>+
-<p>W [[400/800]] stan spustu joysticka nr 2 (0 - wciśnięty). W [[XEGS]] wskazuje fakt podłączenia klawiatury (1 - podłączona). W pozostałych [[XL]] i [[XE]] rejestr nieużywany.</p> +
-</td></tr>+
- +
-<tr><td id="COLPM0">$D012 (W)</td><td>COLPM0</td><td>+
-<p>Kolor gracza i pocisku nr 0. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez procedurę [[SYSVBL]], która kopiuje tu zawartość cienia COLPM0S $02C0 za każdym wystąpieniem [[przerwania]] [[VBL]].</p>+
-</td></tr>+
- +
-<tr><td id="TRIG3">$D013 (R)</td><td>TRIG3</td><td>+
-<p>W [[400/800]] stan spustu joysticka nr 3 (0 - wciśnięty). W [[XL]] i [[XE]] sygnalizuje stan zewnętrznego [[cartridge]]'a (1 - włożony do gniazda) podpiętego pod linie RD5 - mapowanie $A000-$BFFF. Nie wskaże czy włożono cartridge, który jest podpięty tylko (!) pod linie RD4 - mapowanie $8000-$9FFF.</p>+
-<p>W komputerach SECAM (w przeciwieństwie do PAL i NTSC) stan tego rejestru nie ustala się natychmiast po aktywacji (włożeniu) kartridża, ale dopiero podczas pierwszych sześciu [[cykl koloru|cykli koloru]] po zakończeniu wyświetlania bieżącej linii skaningowej. Powoduje to kłopoty, jeśli program zapisany na kartridżu może odłączać pamięć ROM kartridża w celu uzyskania dostępu do znajdującego się "pod nią" RAM-u. Takim kartridżem jest [[SpartaDOS X]]. Przyczyną jest fakt, że procedura [[SYSVBL]] zawiera kod sprawdzający zgodność stanu TRIG3 i jego cienia GINTLK ($03FA), i jeśli się nie zgadzają, zawiesza komputer.</p> +
-</td></tr>+
- +
-<tr><td id="COLPM1">$D013 (W)</td><td>COLPM1</td><td>+
-<p>Kolor gracza i pocisku nr 1. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez procedurę [[SYSVBL]], która kopiuje tu zawartość cienia COLPM1S $02C1 za każdym wystąpieniem [[przerwania]] [[VBL]].</p>+
-</td></tr>+
- +
-<tr><td id="PAL">$D014 (R)</td><td>PAL</td><td>+
-<p>Znacznik systemu TV. Znaczenie bitów:</p>+
* bity 7-4: nieużywane, zawsze 0 * bity 7-4: nieużywane, zawsze 0
* bity 3-1: wartość 000 dla systemu PAL/SECAM oraz 111 dla [http://pl.wikipedia.org/wiki/NTSC NTSC] * bity 3-1: wartość 000 dla systemu PAL/SECAM oraz 111 dla [http://pl.wikipedia.org/wiki/NTSC NTSC]
* bit 0: zawsze 1. * bit 0: zawsze 1.
-<p>Wynika z tego, że w systemie PAL i SECAM wartość rejestru to $01, a w NTSC $0F.</p>+Wynika z tego, że w systemie PAL i SECAM wartość rejestru to $01, a w NTSC $0F.
-</td></tr>+Na podstawie tego rejestru XL OS ustawia znacznik PALNTS $0062 wartością:
- +* 0 - NTSC
-<tr><td id="COLPM2">$D014 (W)</td><td>COLPM2</td><td>+* 1 - PAL
-<p>Kolor gracza i pocisku nr 2. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez procedurę [[SYSVBL]], która kopiuje tu zawartość cienia COLPM2S $02C2 za każdym wystąpieniem [[przerwania]] [[VBL]].</p>+|-
-</td></tr>+|id="COLPM2"|$D014 (W)||COLPM2||
- +Kolor gracza i pocisku nr 2. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury [[SYSVBL]], która kopiuje tu zawartość cienia COLPM2S $02C2 za każdym wystąpieniem [[przerwania]] [[VBL]].
-<tr><td id="COLPM3">$D015 (W)</td><td>COLPM3</td><td>+|-
-<p>Kolor gracza i pocisku nr 3. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez procedurę [[SYSVBL]], która kopiuje tu zawartość cienia COLPM3S $02C3 za każdym wystąpieniem [[przerwania]] [[VBL]].</p>+|id="COLPM3"|$D015 (W)||COLPM3||
-</td></tr>+Kolor gracza i pocisku nr 3. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury [[SYSVBL]], która kopiuje tu zawartość cienia COLPM3S $02C3 za każdym wystąpieniem [[przerwania]] [[VBL]].
- +|-
-<tr><td id="COLPF0">$D016 (W)</td><td>COLPF0</td><td> </td></tr>+|id="COLPF0"|$D016 (W)||COLPF0, COLOR0||
- +Kolor pola gry 0. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury [[SYSVBL]], która kopiuje tu zawartość cienia COLPF0S $02C4 za każdym wystąpieniem [[przerwania]] [[VBL]].
-<tr><td id="COLPF1">$D017 (W)</td><td>COLPF1</td><td> </td></tr>+|-
- +|id="COLPF1"|$D017 (W)||COLPF1, COLOR1||
-<tr><td id="COLPF2">$D018 (W)</td><td>COLPF2</td><td> </td></tr>+Kolor pola gry 1. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez natychmiastową fazę procedury [[SYSVBL]] w ramach obsługi trybu przyciągania uwagi (ang. "attract mode"), która kopiuje tu zawartość cienia COLPF1S $02C5 za każdym wystąpieniem [[przerwania]] [[VBL]].
- +|-
-<tr><td id="COLPF3">$D019 (W)</td><td>COLPF3</td><td> </td></tr>+|id="COLPF2"|$D018 (W)||COLPF2, COLOR2||
- +Kolor pola gry 2. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury [[SYSVBL]], która kopiuje tu zawartość cienia COLPF2S $02C6 za każdym wystąpieniem [[przerwania]] [[VBL]].
-<tr><td id="COLBAK">$D01A (W)</td><td>COLBAK, COLBK</td><td> </td></tr>+|-
- +|id="COLPF3"|$D019 (W)||COLPF3, COLOR3||
-<tr><td id="GTIACTL">$D01B (W)</td><td>GTIACTL, PRIOR</td><td>+Kolor pola gry 3. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury [[SYSVBL]], która kopiuje tu zawartość cienia COLPF3S $02C7 za każdym wystąpieniem [[przerwania]] [[VBL]].
-Rejestr cień: GTIACTLS (GPRIOR) $026F+|-
-<table border="1">+|id="COLBAK"|$D01A (W)||COLBAK, COLBK||
-<tr><td>bit</td><td>7</td><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td><td>1</td><td>0</td></tr>+Kolor ramki ekranu (w trybach hires) lub tła (w pozostałych trybach). Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury [[SYSVBL]], która kopiuje tu zawartość cienia COLBAKS $02C8 za każdym wystąpieniem [[przerwania]] [[VBL]].
-<tr>+|-
-<td>znaczenie</td>+|id="GTIACTL"|$D01B (W)||GTIACTL, PRIOR||
-<td colspan="2">+Rejestr cień: GTIACTLS (GPRIOR) $026F. Służy do konfiguracji trybów wielokolorowych oraz [[PMG]]
-tryby GTIA:<br />+{| border="1"
-00 = tryby GTIA wyłączone<br />+|bit||7||6||5||4||3||2||1||0
-01 = 1 barwa, 16 jasności<br />+|-
-10 = 9 barw/jasności<br />+|znaczenie||colspan="2"|tryby GTIA:<br />
-11 = 16 barw, 1 jasność+00 = tryby GTIA wyłączone ([[Graphics 8]])<br />
-</td>+01 = 1 barwa, 16 jasności ([[Graphics 9]])<br />
-<td>+10 = 9 barw/jasności ([[Graphics 10]])<br />
-gracze wielokolorowi:<br />+11 = 16 barw, 1 jasność ([[Graphics 11]])
 +|gracze wielokolorowi:<br />
1 = włączone 1 = włączone
-</td>+|4 pociski jako 5 gracz:<br />
-<td>4 pociski jako 5 gracz:<br />+
1 = włączone 1 = włączone
-</td>+|colspan="4"|priorytety graczy i pocisków:<br />
-<td colspan="4">+0000 = PM0, PM1, PF0, PF1, PM2, PM3, PF2, PF3, BAK<br />
-priorytety graczy i pocisków:<br />+0001 = PM0, PM1, PM2, PM3, PF0, PF1, PF2, PF3, BAK<br />
-0001 = P0, P1, P2, P3, PF0, PF1, PF2, PF3, BAK<br />+0010 = PM0, PM1, PF3, PF2, PF1, PF0, PM2, PM3, BAK<br />
-0010 = P0, P1, PF0, PF1, PF2, PF3, P2, P3, BAK<br />+0011 = PM0, PM1, PF2, PF3, PM2, PM3, PF0, PF1, BAK<br />
-0100 = PF0, PF1, PF2, PF3, P0, P1, P2, P3, BAK<br />+0100 = PF3, PF2, PF1, PF0, PM0, PM1, PM2, PM3, BAK<br />
-1000 = PF0, PF1, P0, P1, P2, P3, PF2, PF3, BAK+0101 = PF3, PF2, PM0, PM1, PM2, PM3, PF0, PF1, BAK<br />
-</td>+0110 = PF3, PF2, PF1, PF0, PM0, PM1, PM2, PM3, BAK<br />
-</tr>+0111 = PF3, PF2, PM0, PM1, PM2, PM3, PF0, PF1, BAK<br />
-</table>+1000 = PF0, PF1, PM0, PM1, PM2, PM3, PF2, PF3, BAK<br />
-</td></tr>+1001 = PM0, PM1, PM2, PM3, PF0, PF1, PF2, PF3, BAK<br />
 +1010 = PF0, PF1, PM0, PM1, PM2, PM3, PF2, PF3, BAK<br />
 +1011 = PM0, PM1, PF2, PF3, PM2, PM3, PF0, PF1, BAK<br />
 +1100 = PF3, PF2, PF1, PF0, PM0, PM1, PM2, PM3, BAK<br />
 +1101 = PF3, PF2, PM0, PM1, PM2, PM3, PF0, PF1, BAK<br />
 +1110 = PF3, PF2, PF1, PF0, PM0, PM1, PM2, PM3, BAK<br />
 +1111 = PF3, PF2, PM0, PM1, PM2, PM3, PF0, PF1, BAK
 +|}
 +|-
 +|id="VDELAY"|$D01C (W)||VDELAY||
 +Bity 0-3 oznaczają pociski o numerach 0-3, bity 4-7 graczy o numerach 0-3. Ustawienie bitu powoduje, że pobieranie grafiki DMA odpowiedniego pocisku lub gracza odbywa się wyłącznie w nieparzystych liniach skaningowych. Mechanizm ten służy do obniżenia obiektu w [[Rejestry_ANTIC-a#DMACTL|rozdzielczości dwuliniowej]] o jedną linię skaningową.
 +|-
 +|id="PMCNTL"|$D01D (W)||PMCNTL, GRACTL||
 +Funkcje bitów:
 +* bit 7 - w układzie [[Sophia|Sophia2]]: włączenie [[Rejestry Sophia|rejestrów rozszerzenia]] (1 - włączone)
 +* bit 6 - niewykorzystany
 +* bity 3-5 - w układzie [[Sophia|Sophia1]]: [[Rejestry Sophia|konfiguracja ustawień wyświetlania]]
 +* bit 2 - odczyt przycisków joysticków (1 - zatrzask)
 +* bit 1 - DMA graczy (1 - włączone)
 +* bit 0 - DMA pocisków (1 - włączone)
-<tr><td id="VDELAY">$D01C (W)</td><td>VDELAY</td><td>+Bity 1 i 0 aktywują pobieranie grafiki odpowiednio graczy i pocisków z szyny danych w momentach kiedy ANTIC za pomocą [[DMA]] odczytuje z pamięci dane o kształcie odpowiedniego sprajta. Najczęściej ustawia się takie same wartości, jak w bitach 3 i 2 [[Rejestry_ANTIC-a#DMACTL|DMACTL]]. Ustawienie bitów w DMACTL, ale nie w PMCNTL powoduje że DMA ANTICa są ignorowane. Ustawienie bitów w PMCNTL ale nie w DMACTL z kolei powoduje pobieranie grafiki graczy lub pocisków z szyny danych 6502.
-<p>Bity 0-3 oznaczają pociski o numerach 0-3, bity 4-7 graczy o numerach 0-3. Ustawienie bitu powoduje, ze pozycja pionowa odpowiedniego obiektu zwiększa się o jedną linię skaningową obrazu (czyli obiekt na ekranie obniża się o jedną linię). Służy to do zwiększenia płynności ruchu pionowego obiektów w rozdzielczości dwuliniowej, patrz [[Rejestry_ANTIC-a#DMACTL|DMACTL]].</p>+
-</td></tr>+
-<tr><td id="PMCNTL">$D01D (W)</td><td>PMCNTL, GRACTL</td><td>+Bit 2 odpowiada za działanie rejestrów TRIG0-3: jego ustawienie powoduje, że po wciśnięciu spustu joysticka zwartość odpowiedniego rejestru TRIGx "zatrzaskuje się" i pokazuje cały czas, że spust jest wciśnięty, nawet jeśli ten w międzyczasie został już zwolniony. Skasowanie bitu 2 PMCNTL powoduje powrót do normalnego trybu pracy TRIGx odzwierciedlającego bieżący stan spustu joysticka. Mechanizm ten służy do wykrywania portu, do którego jest podłączone [[pióro świetlne]] lub [[XG-1|pistolet świetlny]]. Urządzenia te generują bardzo krótkie impulsy.
-<p>Ustawienie bitu 0 powoduje włączenie wyświetlania pocisków, bitu 1 - włączenie wyświetlania graczy.</p>+Bit ten ma też wpływ na rejestry TRIG2 i TRIG3, które odzwierciedlają podłączenie klawiatury w modelu XEGS oraz obecność cartridge'a w gnieździe.
 +|-
 +|id="HITCLR"|$D01E (W)||HITCLR||
 +Zapis dowolnej wartości pod ten adres kasuje stany wszystkich rejestrów kolizji.
 +|-
 +|id="CONSOL"|$D01F (R/W)||CONSOL||
 +Bity 0-3 tego rejestru reprezentują stan nóżek S0-S3 układu [[GTIA]], a pozostałe bity sa niewykorzystane.
-<p>Bit 2 odpowiada za działanie rejestrów TRIG0-3: jego ustawienie powoduje, że po wciśnięciu spustu joysticka rejestr "zatrzaskuje się" i pokazuje cały czas, że spust jest wciśnięty, nawet jeśli już nie jest. Zwolnienie następuje dopiero po skasowaniu bitu 2 omawianego tu rejestru. Mechanizm ten służy do łapania stanów spustów joysticka bez konieczności ich nieustannego monitorowania.</p>+Znaczenie w komputerze:
-</td></tr>+* bit 3 - jednobitowe wyjście dźwiękowe (tzw. [[Buzzer]])
- +
-<tr><td id="HITCLR">$D01E (W)</td><td>HITCLR</td><td>+
-<p>Zapis dowolnej wartości pod ten adres kasuje stany rejestrów kolizji.</p>+
-</td></tr>+
- +
-<tr><td id="CONSOL">$D01F (R/W)</td><td>CONSOL</td><td>+
-<p>Bity 0-3 tego rejestru reprezentują stan nóżek S0-S3 układu [[GTIA]], a pozostałe bity sa niewykorzystane. Znaczenie:</p>+
-* bit 3 - jednobitowe wyjście dźwiękowe+
* bit 2 - stan klawisza OPTION (0 - naciśnięty) * bit 2 - stan klawisza OPTION (0 - naciśnięty)
* bit 1 - stan klawisza SELECT (0 - naciśnięty) * bit 1 - stan klawisza SELECT (0 - naciśnięty)
* bit 0 - stan klawisza START (0 - naciśnięty) * bit 0 - stan klawisza START (0 - naciśnięty)
-<p>"Jednobitowe wyjście dźwiękowe" wykorzystywane jest do generowania kliku klawiatury oraz dźwięku brzęczyka systemowego urządzenia "E:" (zob. [[CIO]]). W serii [[400/800]] służy do tego osobny głośniczek, w [[XL]] i [[XE]] natomiast jest to podłączone do ogólnego wyjścia audio.</p>+Przed odczytaniem stanu linii wejściowych (czyli stanu klawiszy START, SELECT, OPTION) odpowiednie bity rejestru CONSOL trzeba ustawić na zero. Normalnie jednak nie ma potrzeby tego czynić w programie, gdyż robi to systemowa procedura [[SYSVBL]].
- +
-<p>Przed odczytaniem stanu linii wejściowych (czyli stanu klawiszy START, SELECT, OPTION) odpowiednie bity rejestru CONSOL trzeba ustawić na zero. Normalnie jednak nie ma potrzeby tego czynić w programie, gdyż robi to systemowa procedura [[SYSVBL]].</p>+
-</td></tr>+W konsoli 5200 wszystkie cztery bity służą jako wyjścia wybierające port joysticka, którego klawisze są skanowane przez POKEY.
 +|}
-</table>+== Zobacz też ==
 +* [[Rejestry Sophia]]
-{{stub}} 
[[Kategoria:Programowanie Atari 8-bit]] [[Kategoria:Programowanie Atari 8-bit]]

Aktualna wersja

GTIA został wykorzystany w małych Atari oraz w konsolach Atari 5200. W obu systemach rejestry GTIA zostały zmapowane na różnych stronach pamięci - w komputerach na stronie $D0, w konsoli na stronie $C0. W tabeli podane są adresy właściwe dla komputerów 400/800/XL/XE.

Lista rejestrów

Adres Etykieta Opis
$D000 (R)KOLM0PF, M0PF

Znaczniki kolizji pocisku 0 z polem gry. Bity 0-3 oznaczają kolizje z polem gry 0-3 (COLPF0-COLPF3). Kolizja nastąpiła kiedy bit jest ustawiony.

  • bit 0: COLPF0
  • bit 1: COLPF1
  • bit 2: COLPF2
  • bit 3: COLPF3
  • bity 4-7: zawsze 0
$D000 (W)HPOSP0

Pozycja pozioma gracza nr 0, mierzona w cyklach koloru. Można wpisywać wartości od 0 (skrajna lewa) do 255 (skrajna prawa) pamiętając jednak o tym, że skrajne pozycje znajdują się poza obszarem wyświetlanym na ekranie przeciętnego monitora. W praktyce zakres pozycji, w jakich duszek jest widoczny, rozciąga się od wartości 32 do 216. Standardowe pole gry zajmuje pozycje 48 do 208, zwężone odpowiednio mniej, a rozszerzone odpowiednio więcej.

$D001 (R)KOLM1PF, M1PF

Znaczniki kolizji pocisku 1 z polem gry. Patrz KOLM0PF.

$D001 (W)HPOSP1Pozycja pozioma gracza nr 1. Patrz HPOSP0.
$D002 (R)KOLM2PF, M2PF

Znaczniki kolizji pocisku 2 z polem gry. Patrz KOLM0PF.

$D002 (W)HPOSP2Pozycja pozioma gracza nr 2. Patrz HPOSP0.
$D003 (R)KOLM3PF, M3PF

Znaczniki kolizji pocisku 3 z polem gry. Patrz KOLM0PF.

$D003 (W)HPOSP3Pozycja pozioma gracza nr 3. Patrz HPOSP0.
$D004 (R)KOLP0PF, P0PF

Znaczniki kolizji gracza 0 z polem gry. Patrz KOLM0PF.

$D004 (W)HPOSM0Pozycja pozioma pocisku nr 0. Patrz HPOSP0.
$D005 (R)KOLP1PF, P1PF

Znaczniki kolizji gracza 1 z polem gry. Patrz KOLM0PF.

$D005 (W)HPOSM1Pozycja pozioma pocisku nr 1. Patrz HPOSP0.
$D006 (R)KOLP2PF, P2PF

Znaczniki kolizji gracza 2 z polem gry. Patrz KOLM0PF.

$D006 (W)HPOSM2Pozycja pozioma pocisku nr 2. Patrz HPOSP0.
$D007 (R)KOLP3PF, P3PF

Znaczniki kolizji gracza 3 z polem gry. Patrz KOLM0PF.

$D007 (W)HPOSM3Pozycja pozioma pocisku nr 3. Patrz HPOSP0.
$D008 (R)KOLM0P, M0PL

Znaczniki kolizji pocisku 0 z graczem. Bity 0-3 oznaczają kolizje z graczem 0-3 (COLPM0-COLPM3). Kolizja nastąpiła kiedy bit jest ustawiony.

  • bit 0: COLPM0
  • bit 1: COLPM1
  • bit 2: COLPM2
  • bit 3: COLPM3
  • bity 4-7: zawsze 0
$D008 (W)SIZEP0

Szerokość gracza 0. Znaczenie:

  • bity 0-1:
    • %00 - pojedyncza
    • %01 - podwójna
    • %10 - pojedyncza
    • %11 - poczwórna
  • bity 2-7: niezdefiniowane
$D009 (R)KOLM1P, M1PL

Znaczniki kolizji pocisku 1 z graczem. Patrz KOLM0P.

$D009 (W)SIZEP1

Szerokość gracza 1. Patrz SIZEP0.

$D00A (R)KOLM2P, M2PL

Znaczniki kolizji pocisku 2 z graczem. Patrz KOLM0P.

$D00A (W)SIZEP2

Szerokość gracza 2. Patrz SIZEP0.

$D00B (R)KOLM3P, M3PL

Znaczniki kolizji pocisku 3 z graczem. Patrz KOLM0P.

$D00B (W)SIZEP3

Szerokość gracza 3. Patrz SIZEP0.

$D00C (R)KOLP0P, P0PL

Znaczniki kolizji gracza 0 z graczem. Patrz KOLM0P.

$D00C (W)SIZEM

Szerokość pocisków. Znaczenie:

  • bity 0-1: szerokość pocisku 0
    • %00 - pojedyncza
    • %01 - podwójna
    • %10 - pojedyncza
    • %11 - poczwórna
  • bity 2-3: szerokość pocisku 1
  • bity 4-5: szerokość pocisku 2
  • bity 6-7: szerokość pocisku 3
$D00D (R)KOLP1P, P1PL

Znaczniki kolizji gracza 1 z graczem. Patrz KOLM0P.

$D00D (W)GRAFP0

Rejestr grafiki gracza 0. Zazwyczaj zapisywany przez ANTIC kiedy włączony jest DMA dla graczy w rejestrze DMACTL. Ręczne zapisanie tego rejestru powoduje zmianę kształtu gracza 0.

$D00E (R)KOLP2P, P2PL

Znaczniki kolizji gracza 2 z graczem. Patrz KOLM0P.

$D00E (W)GRAFP1

Rejestr grafiki gracza 1. Patrz GRAFP0.

$D00F (R)KOLP3P, P3PL

Znaczniki kolizji gracza 3 z graczem. Patrz KOLM0P.

$D00F (W)GRAFP2

Rejestr grafiki gracza 2. Patrz GRAFP0.

$D010 (R)TRIG0Stan spustu joysticka nr 0 (0 - wciśnięty). Cień w TRIG0S ($0284). Podłączony jest tu również element światłoczuły pióra świetlnego lub pistoletu świetlnego dołączonego do portu 0.
$D010 (W)GRAFP3

Rejestr grafiki gracza 3. Patrz GRAFP0.

$D011 (R)TRIG1Stan spustu joysticka nr 1 (0 - wciśnięty). Cień w TRIG1S ($0285). Podłączony jest tu również element światłoczuły pióra świetlnego lub pistoletu świetlnego dołączonego do portu 1.
$D011 (W)GRAFM

Rejestr grafiki pocisków. Zazwyczaj zapisywany przez ANTIC kiedy włączony jest DMA dla pocisków w rejestrze DMACTL. Ręczne zapisanie tego rejestru powoduje zmianę kształtu wszystkich pocisków. Znaczenie:

  • bity 0-1: kształt pocisku 0
  • bity 2-3: kształt pocisku 1
  • bity 4-5: kształt pocisku 2
  • bity 6-7: kształt pocisku 3
$D012 (R)TRIG2

W 400/800 stan spustu joysticka nr 2 (0 - wciśnięty). W XEGS wskazuje fakt podłączenia klawiatury (1 - podłączona). W pozostałych XL i XE rejestr nieużywany. Cień w TRIG2S ($0286).

$D012 (W)COLPM0

Kolor gracza i pocisku nr 0. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury SYSVBL, która kopiuje tu zawartość cienia COLPM0S $02C0 za każdym wystąpieniem przerwania VBL.

$D013 (R)TRIG3

W 400/800 stan spustu joysticka nr 3 (0 - wciśnięty). W XL i XE sygnalizuje stan zewnętrznego cartridge'a (1 - włożony do gniazda) podpiętego pod linię RD5 (mapowanie $A000-$BFFF). Nie wskaże, czy włożono cartridge, który jest podpięty tylko (!) pod linię RD4 (mapowanie $8000-$9FFF). Cień w TRIG3S ($0287).

W komputerach SECAM (w przeciwieństwie do PAL i NTSC) stan tego rejestru nie ustala się natychmiast po aktywacji (włożeniu) kartridża, ale dopiero podczas pierwszych sześciu cykli koloru po impulsie synchronizacji poziomej kończącym bieżącą linię skaningową. Powoduje to kłopoty, jeśli program zapisany na kartridżu może odłączać pamięć ROM kartridża w celu uzyskania dostępu do znajdującego się "pod nią" RAM-u. Takim kartridżem jest SpartaDOS X. Przyczyną jest fakt, że procedura SYSVBL (a ściślej: jej druga faza) zawiera kod sprawdzający zgodność stanu TRIG3 i jego cienia GINTLK ($03FA), i jeśli się nie zgadzają, zawiesza komputer.

Metoda obejścia tego problemu:

     sei       ;zablokuj drugą fazę SYSVBL
     ...       ;tu przełączenie pamięci
     sta wsync ;odczekujemy 2 linie na ustalenie sie stanu trig3
     sta wsync
     lda trig3
     sta gintlk
     cli

$D013 (W)COLPM1

Kolor gracza i pocisku nr 1. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury SYSVBL, która kopiuje tu zawartość cienia COLPM1S $02C1 za każdym wystąpieniem przerwania VBL.

$D014 (R)PAL

Znacznik systemu TV. Znaczenie bitów:

  • bity 7-4: nieużywane, zawsze 0
  • bity 3-1: wartość 000 dla systemu PAL/SECAM oraz 111 dla NTSC
  • bit 0: zawsze 1.

Wynika z tego, że w systemie PAL i SECAM wartość rejestru to $01, a w NTSC $0F. Na podstawie tego rejestru XL OS ustawia znacznik PALNTS $0062 wartością:

  • 0 - NTSC
  • 1 - PAL
$D014 (W)COLPM2

Kolor gracza i pocisku nr 2. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury SYSVBL, która kopiuje tu zawartość cienia COLPM2S $02C2 za każdym wystąpieniem przerwania VBL.

$D015 (W)COLPM3

Kolor gracza i pocisku nr 3. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury SYSVBL, która kopiuje tu zawartość cienia COLPM3S $02C3 za każdym wystąpieniem przerwania VBL.

$D016 (W)COLPF0, COLOR0

Kolor pola gry 0. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury SYSVBL, która kopiuje tu zawartość cienia COLPF0S $02C4 za każdym wystąpieniem przerwania VBL.

$D017 (W)COLPF1, COLOR1

Kolor pola gry 1. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez natychmiastową fazę procedury SYSVBL w ramach obsługi trybu przyciągania uwagi (ang. "attract mode"), która kopiuje tu zawartość cienia COLPF1S $02C5 za każdym wystąpieniem przerwania VBL.

$D018 (W)COLPF2, COLOR2

Kolor pola gry 2. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury SYSVBL, która kopiuje tu zawartość cienia COLPF2S $02C6 za każdym wystąpieniem przerwania VBL.

$D019 (W)COLPF3, COLOR3

Kolor pola gry 3. Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury SYSVBL, która kopiuje tu zawartość cienia COLPF3S $02C7 za każdym wystąpieniem przerwania VBL.

$D01A (W)COLBAK, COLBK

Kolor ramki ekranu (w trybach hires) lub tła (w pozostałych trybach). Bity 7-4 wybierają kolor, bity 3-1 odcień, a bit 0 jest nieużywany, a więc wybór jest z palety 128 kolorów. Rejestr odświeżany jest przez opóźnioną fazę procedury SYSVBL, która kopiuje tu zawartość cienia COLBAKS $02C8 za każdym wystąpieniem przerwania VBL.

$D01B (W)GTIACTL, PRIOR

Rejestr cień: GTIACTLS (GPRIOR) $026F. Służy do konfiguracji trybów wielokolorowych oraz PMG

bit76543210
znaczenietryby GTIA:

00 = tryby GTIA wyłączone (Graphics 8)
01 = 1 barwa, 16 jasności (Graphics 9)
10 = 9 barw/jasności (Graphics 10)
11 = 16 barw, 1 jasność (Graphics 11)

gracze wielokolorowi:

1 = włączone

4 pociski jako 5 gracz:

1 = włączone

priorytety graczy i pocisków:

0000 = PM0, PM1, PF0, PF1, PM2, PM3, PF2, PF3, BAK
0001 = PM0, PM1, PM2, PM3, PF0, PF1, PF2, PF3, BAK
0010 = PM0, PM1, PF3, PF2, PF1, PF0, PM2, PM3, BAK
0011 = PM0, PM1, PF2, PF3, PM2, PM3, PF0, PF1, BAK
0100 = PF3, PF2, PF1, PF0, PM0, PM1, PM2, PM3, BAK
0101 = PF3, PF2, PM0, PM1, PM2, PM3, PF0, PF1, BAK
0110 = PF3, PF2, PF1, PF0, PM0, PM1, PM2, PM3, BAK
0111 = PF3, PF2, PM0, PM1, PM2, PM3, PF0, PF1, BAK
1000 = PF0, PF1, PM0, PM1, PM2, PM3, PF2, PF3, BAK
1001 = PM0, PM1, PM2, PM3, PF0, PF1, PF2, PF3, BAK
1010 = PF0, PF1, PM0, PM1, PM2, PM3, PF2, PF3, BAK
1011 = PM0, PM1, PF2, PF3, PM2, PM3, PF0, PF1, BAK
1100 = PF3, PF2, PF1, PF0, PM0, PM1, PM2, PM3, BAK
1101 = PF3, PF2, PM0, PM1, PM2, PM3, PF0, PF1, BAK
1110 = PF3, PF2, PF1, PF0, PM0, PM1, PM2, PM3, BAK
1111 = PF3, PF2, PM0, PM1, PM2, PM3, PF0, PF1, BAK

$D01C (W)VDELAY

Bity 0-3 oznaczają pociski o numerach 0-3, bity 4-7 graczy o numerach 0-3. Ustawienie bitu powoduje, że pobieranie grafiki DMA odpowiedniego pocisku lub gracza odbywa się wyłącznie w nieparzystych liniach skaningowych. Mechanizm ten służy do obniżenia obiektu w rozdzielczości dwuliniowej o jedną linię skaningową.

$D01D (W)PMCNTL, GRACTL

Funkcje bitów:

Bity 1 i 0 aktywują pobieranie grafiki odpowiednio graczy i pocisków z szyny danych w momentach kiedy ANTIC za pomocą DMA odczytuje z pamięci dane o kształcie odpowiedniego sprajta. Najczęściej ustawia się takie same wartości, jak w bitach 3 i 2 DMACTL. Ustawienie bitów w DMACTL, ale nie w PMCNTL powoduje że DMA ANTICa są ignorowane. Ustawienie bitów w PMCNTL ale nie w DMACTL z kolei powoduje pobieranie grafiki graczy lub pocisków z szyny danych 6502.

Bit 2 odpowiada za działanie rejestrów TRIG0-3: jego ustawienie powoduje, że po wciśnięciu spustu joysticka zwartość odpowiedniego rejestru TRIGx "zatrzaskuje się" i pokazuje cały czas, że spust jest wciśnięty, nawet jeśli ten w międzyczasie został już zwolniony. Skasowanie bitu 2 PMCNTL powoduje powrót do normalnego trybu pracy TRIGx odzwierciedlającego bieżący stan spustu joysticka. Mechanizm ten służy do wykrywania portu, do którego jest podłączone pióro świetlne lub pistolet świetlny. Urządzenia te generują bardzo krótkie impulsy. Bit ten ma też wpływ na rejestry TRIG2 i TRIG3, które odzwierciedlają podłączenie klawiatury w modelu XEGS oraz obecność cartridge'a w gnieździe.

$D01E (W)HITCLR

Zapis dowolnej wartości pod ten adres kasuje stany wszystkich rejestrów kolizji.

$D01F (R/W)CONSOL

Bity 0-3 tego rejestru reprezentują stan nóżek S0-S3 układu GTIA, a pozostałe bity sa niewykorzystane.

Znaczenie w komputerze:

  • bit 3 - jednobitowe wyjście dźwiękowe (tzw. Buzzer)
  • bit 2 - stan klawisza OPTION (0 - naciśnięty)
  • bit 1 - stan klawisza SELECT (0 - naciśnięty)
  • bit 0 - stan klawisza START (0 - naciśnięty)

Przed odczytaniem stanu linii wejściowych (czyli stanu klawiszy START, SELECT, OPTION) odpowiednie bity rejestru CONSOL trzeba ustawić na zero. Normalnie jednak nie ma potrzeby tego czynić w programie, gdyż robi to systemowa procedura SYSVBL.

W konsoli 5200 wszystkie cztery bity służą jako wyjścia wybierające port joysticka, którego klawisze są skanowane przez POKEY.

Zobacz też

Personal tools