Rejestry GTIA

From Atariki

Revision as of 08:57, 27 cze 2006; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

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

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

AdresEtykietaOpis
$D000 (R)KOLM0PF
$D000 (W)HPOSP0

Pozycja pozioma gracza nr 0, mierzona w 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.

$D001 (R)KOLM1PF
$D001 (W)HPOSP1Pozycja pozioma gracza nr 1, mierzona w cyklach koloru. Patrz HPOSP0.
$D002 (R)KOLM2PF
$D002 (W)HPOSP2Pozycja pozioma gracza nr 2, mierzona w cyklach koloru. Patrz HPOSP0.
$D003 (R)KOLM3PF
$D003 (W)HPOSP3Pozycja pozioma gracza nr 3, mierzona w cyklach koloru. Patrz HPOSP0.
$D004 (R)KOLP0PF
$D004 (W)HPOSM0Pozycja pozioma pocisku nr 0, mierzona w cyklach koloru. Patrz HPOSP0.
$D005 (R)KOLP1PF
$D005 (W)HPOSM1Pozycja pozioma pocisku nr 1, mierzona w cyklach koloru. Patrz HPOSP0.
$D006 (R)KOLP2PF
$D006 (W)HPOSM2Pozycja pozioma pocisku nr 2, mierzona w cyklach koloru. Patrz HPOSP0.
$D007 (R)KOLP3PF
$D007 (W)HPOSM3Pozycja pozioma pocisku nr 3, mierzona w cyklach koloru. Patrz HPOSP0.
$D008 (R)KOLM0P
$D008 (W)SIZEP0
$D009 (R)KOLM1P
$D009 (W)SIZEP1
$D00A (R)KOLM2P
$D00A (W)SIZEP2
$D00B (R)KOLM3P
$D00B (W)SIZEP3
$D00C (R)KOLP0P
$D00C (W)SIZEM
$D00D (R)KOLP1P
$D00D (W)GRAFP0
$D00E (R)KOLP2P
$D00E (W)GRAFP1
$D00F (R)KOLP3P
$D00F (W)GRAFP2
$D010 (R)TRIG0

Stan spustu joysticka nr 0 (0 - wciśnięty).

$D010 (W)GRAFP3
$D011 (R)TRIG1

Stan spustu joysticka nr 1 (0 - wciśnięty).

$D011 (W)GRAFM
$D012 (R)TRIG2

W 400/800 stan spustu joysticka nr 2 (0 - wciśnięty). W XL i XE rejestr nieużywany.

$D012 (W)COLPM0
$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).

$D013 (W)COLPM1
$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: nieużywany, zawsze 1

Wynika z tego, że w systemie PAL i SECAM wartość rejestru to $01, a w NTSC $0F.

$D014 (W)COLPM2
$D015 (W)COLPM3
$D016 (W)COLPF0
$D017 (W)COLPF1
$D018 (W)COLPF2
$D019 (W)COLPF3
$D01A (W)COLBAK
$D01B (W)GTIACTL (GPRIOR)
$D01C (W)VDELAY

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 DMACTL. </td></tr>

$D01D (W)PMCNTL (GRACTL)
$D01E (W)HITCLR

<p>Zapis dowolnej wartości pod ten adres kasuje stany rejestrów kolizji.</p>

$D01F (R/W)CONSOL

<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 1 - stan klawisza SELECT (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>

<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>

Personal tools