ANTIC - ANTIC

Mikroprocesor Atari ANTIC na základní desce Atari 130XE

Alphanumeric Television Interface Controller ( ANTIC ) je LSI ASIC věnovaný generování 2D počítačové grafiky, která se má zobrazovat na televizní obrazovce nebo na displeji počítače . Pod vedením Jaye Minera byl čip navržen v letech 1977-1978 Joe Decuirem , Francoisem Michelem a Steveem Smithem pro 8bitovou rodinu domácích počítačů Atari, která byla poprvé vydána v roce 1979 a byla patentována společností Atari, Inc. v roce 1981. ANTIC se také používá v systému videohry Atari 5200 vydaném v roce 1982, který sdílí většinu stejného hardwaru jako 8bitové počítače.

ANTIC je zodpovědný za generování grafiky hracího pole, které je dodáváno jako datový tok na související čip CTIA/GTIA . ČOI / GTIA poskytuje zbarvení hrací plochy grafiky, a je zodpovědný za přidání překrývající skřítky označovány jako „Hráč / Raketové grafiky“ od Atari.

Atari to inzerovalo jako skutečný mikroprocesor v tom, že má sadu instrukcí ke spouštění programů (nazývaných seznamy zobrazení ) pro zpracování dat . ANTIC nemá kapacitu pro zápis zpět vypočítaných hodnot do paměti, pouze čte data z paměti a zpracovává je pro výstup na obrazovku, proto není Turing dokončen .

Funkce

Níže uvedený seznam popisuje inherentní hardwarové možnosti ANTIC, což znamená zamýšlenou funkčnost hardwaru samotného, ​​nezahrnuje výsledky dosažené přerušeními obsluhovanými CPU nebo jádry displeje, které často vyvolávají změny registru.

ANTIC používá DMA ke čtení programu s názvem „ Display List “ ovládající tyto funkce Playfield:

  • 14 různých grafických režimů Playfield
    • 6 režimů znaků
      • 4 typy vykreslování písem/glyfů
    • 8 režimů mapy
  • Výstup proměnného počtu prázdných řádků skenování
  • Režimy Playfield Text a Map lze na obrazovce kombinovat
  • Proměnlivá výška obrazovky až po vertikální překrytí
  • Hrubé a horizontální posouvání
  • Identifikujte části displeje, které podléhají horizontálnímu a/nebo vertikálnímu jemnému posouvání
  • Spusťte rutinu přerušení obsluhovanou CPU, nazývanou „Přerušení zobrazení seznamu“, na konkrétních řádcích skenování ( v jiných systémech se také nazývá „ přerušení rastru “ nebo „ Přerušení horizontálního prázdného řádku “)
  • Na konci rámečku displeje spusťte rutinu přerušení obsluhovanou CPU, nazývanou „Vertikální prázdné přerušení“.

Další funkce založené na registru:

  • Proměnlivá šířka obrazovky až po horizontální překrytí
  • Definujte vzdálenost pohybu pro horizontální a vertikální jemné rolování
  • Poskytuje informace o umístění svislé obrazovky elektronového paprsku v reálném čase.
  • Čte vodorovné/svislé souřadnice lehkého pera (pouze CRT)
  • Měkká, znovu definovatelná znaková sada.
  • Nastavitelné zobrazení inverzních video postav.
  • Znaky se mohou svisle odrážet.
  • Ovládejte přerušení orientovaná na výšku a prázdný seznam a zobrazení a přerušení klávesy Reset.
  • Provádí DMA pro CTIA/GTIA k produkci grafiky Player/Missile (aka sprites )
  • Neopravená RAM. To umožňuje, aby paměť RAM pro grafické funkce byla umístěna téměř kdekoli v rozsahu adres 16bitové paměti. To platí pro:
    • Zobrazit seznamy.
    • Grafická data Playfield
    • Písma znakové sady
    • Grafická data hráče/rakety

Verze

podle čísla dílu

  • C012296 - NTSC: Používá se v počítačích Atari 400, 800 a 1200XL.
  • C014887 - PAL/SECAM: Používá se v počítačích Atari 400 a 800.
  • C021697 - NTSC: Používá se v modelech Atari 600XL, 800XL a XE.
  • C021698 - PAL/SECAM: Používá se u modelů Atari XL a XE.

Atari, Inc. zamýšlela spojit funkce čipů ANTIC a GTIA do jednoho integrovaného obvodu, aby se snížily výrobní náklady počítačů Atari a 5200 konzolí. Dva takové prototypy obvodů byly vyvíjeny, ale žádný vstoupil do výroby.

  • C020577 - CGIA
  • C021737 - KERI

Pinout

Kolíkový výstup Atari ANTIC (C012296)
Název PINu Číslo PINu Popis
A0 - A15 13, 12, 11, 10, 28, 27, 26, 25, 24, 23, 16, 22, 17, 18, 19, 20 Adresa paměti I/O
AN0 - AN2 2, 3, 5 ANTICKÉ rozhraní pro CTIA/GTIA
D0 - D7 30, 31, 32, 33, 40, 39, 38, 37 Data Bus I/O
F0 35 Rychlé vstupní hodiny fáze 0
STŮJ 9 Zastaví výstup, pozastaví CPU, zatímco ANTIC čte paměť
LP 4 Vstup světelného pera
NMI 7 Přerušení výstupu NMI na CPU
RDY 15 Připravený výstup. ANTIC táhne pin nízko, aby zastavil CPU pro horizontální synchronizaci prázdných adres (WSYNC)
REF 8 Obnovovací výstup RAM
RNMI 6 Vstup přerušení NMI
RST 36 Resetujte ANTIC vstup
R/W 14 Směr čtení/zápis I/O
V cc 21 Napájení +5 voltů
V ss 1 Přízemní
Ø0 34 Hodinový výstup fáze 0
Ø2 29 Vstupní hodiny fáze 2

Registry

8bitové počítače Atari a konzole Atari 5200 mapují čip ANTIC na hexadecimální stránku $ D4xx .

ANTIC poskytuje 15 registrů čtení/zápisu ovládajících parametry zobrazení Playfield, DMA pro grafiku Player/Missile, jemné rolování, vstup světelného pera a přerušení. Hardwarové registry nevrací zapsané hodnoty zpět při čtení. Tento problém řeší stínové registry operačního systému implementované v běžné RAM jako místa pro uložení poslední hodnoty zapsané do registrů. Stínové registry operačního systému jsou kopírovány z RAM do hardwarových registrů během svislého prázdného místa. Proto budou všechny zápisy do hardwarových registrů, které mají odpovídající stínové registry, přepsány hodnotou stínových registrů během dalšího svislého prázdného místa.

Některé hardwarové registry pro zápis nemají odpovídající stínové registry. Mohou být bezpečně zapsány aplikací, aniž by byla hodnota přepsána během svislého prázdného místa. Pokud aplikace potřebuje znát poslední stav registru, je odpovědností aplikace si pamatovat, co napsala.

Stínové registry operačního systému existují také u některých registrů čtení, kde čtení hodnoty přímo z hardwaru v neznámé fázi cyklu zobrazení může vrátit nekonzistentní výsledky.

název Popis Číst psát Hex Addr Prosinec Addr Název stínu Shadow Hex Addr Shadow Dec Addr
DMACTL Přímé řízení přístupu do paměti Napsat 400 dolarů 54272 SDMCTL 022 $ 559
CHACTL Ovládání postavy Napsat 401 $ 54273 SCHÉMA $ 02F3 755
DLISTL Zobrazit ukazatel seznamu (nízký bajt) Napsat 402 $ 54274 SDLSTL 2 030 $ 560
DLOUHÝ Ukazatel seznamu (vysoký bajt) Napsat 403 $ 54275 SDLSTH 0231 $ 561
HSCROL Jemný horizontální posun Napsat 404 $ 54276
VSCROL Jemný svislý svitek Napsat 405 $ 54277
PMBASE Základní adresa hráče/rakety Napsat 407 $ 54279
CHBASE Základní adresa znakové sady Napsat 409 $ 54281 CHBAS $ 02F4 756
WSYNC Počkejte na horizontální synchronizaci Napsat $ D40A 54282
ÚČET Počítadlo svislé čáry Číst 40 D $ 54283
PENH Lehké pero horizontální poloha Číst $ D40C 54284 LPENH 0234 USD 564
PENV Světelná poloha lehkého pera Číst 40 D $ 54285 LPENV 0235 USD 565
NMIEN Povolit maskování bez přerušení (NMI) Napsat $ D40E 54286
NMIRES Reset nemaskovatelného přerušení (NMI) Napsat $ D40F 54287
NMIST Stav Non-Maskable Interrupt (NMI) Číst $ D40F 54287

V jednotlivých registrech uvedených níže platí následující legenda:

Bitová hodnota Popis
0 Bit musí být 0
1 Bit musí být 1
? Bit může mít hodnotu 0 nebo 1 a slouží k určitému účelu.
- Bit je nepoužitý nebo by se nemělo očekávat, že bude mít určitou hodnotu
označení Účel bitu najdete v pozdějším vysvětlení.

DMACTL $ D400 Zápis

SHADOW: SDMCTL $ 022F

Přímý přístup k paměti (DMA)

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- - Zobrazit seznam DMA Rozlišení rakety hráče Přehrávač DMA Střela DMA Šířka hřiště Šířka hřiště

DMACTL ovládá chování ANTIC DMA pro grafiku Playfield a Player-Missile ( sprite ).

Bitové hodnoty šířky hřiště :

Šířka bitů hřiště [1: 0] Popis Velikost
0 0 = 00 $ Zakázat hřiště
0 1 = $ 01 Úzké hřiště 128 barevných hodin/256 pixelů s vysokým rozlišením
1 0 = 02 $ Normální hřiště 160 barevných hodin/320 pixelů ve vysokém rozlišení
1 1 = 03 $ Široké hřiště 192 barevných hodin/384 pixelů ve vysokém rozlišení

Podívejte se také na bit DMA seznamu zobrazení týkající se zobrazení Playfield.

Hodnoty bitů DMA hráče/rakety :

Player/Missile DMA Bits [3: 2] Popis
0 0 = 00 $ Deaktivujte Player and Missile DMA
0 1 = 04 $ Povolte Missile DMA
1 0 = 08 $ Povolit Player DMA
1 1 = 0 $ C. Povolte Player a Missile DMA

Funkce ANTIC Player/Missile DMA čte bajty z paměti a dodává data k aktualizaci registrů grafických vzorů GRAFP0, GRAFP1, GRAFP2, GRAFP1, GRAFP2 a GRAFM CTIA/GTIA , které odlehčují CPU od vytváření grafiky Player/Missile ( sprite ). Tyto bity zapínají ANTIC přenos dat hráče a raketových dat do CTIA/GTIA. CTIA/GTIA musí být také nakonfigurována tak, aby přijímala data prostřednictvím svého registru GRACTL, aby DMA Player/Missile DMA fungovala podle očekávání.

Když je povolen Player DMA, automaticky dojde k DMA Missile, aby bylo načasování DMA konzistentní, ale data nejsou doručována do registru GRAFM rakety.

Pokud je povoleno, DMA Player/Missile DMA se vyskytuje na každém řádku skenování na viditelném displeji - od řádku skenování 8 až 247. Data hráče/rakety v mapě paměti (viz PMBASE ANTIC ) nad a pod těmito počty řádků skenování se tedy nepoužívají a nezobrazeno.

Bitové hodnoty rozlišení hráče/střely :

  • 00 USD - rozlišení dvou řádků. ANTIC aktualizuje svoji adresu načítání DMA na každém dalším řádku skenování a aktualizuje vzor CTIA/GTIA Player/Missile Graphics každý skenovací řádek, takže každý bajtový vzor Player/Missile má výšku dvou skenovacích řádků. Když je povoleno rozlišení dvou řádků, registr CTIA /GTIA VDELAY ($ D01C hex /53276 dec ) funguje tak, že maskuje aktualizace na rovnoměrných řádcích skenování, což má za následek posunutí bitového vzorce jednotlivých hráčů a raket o jeden řádek skenování.
  • 10 $ - rozlišení jednoho řádku. Načtení DMA a aktualizace registru hráče/rakety probíhá na každé skenovací lince. ČOI / GTIA registr VDELAY ($ D01C hex / 53276 dec ), která masky aktualizace na sudých řádků skenování účinně snižuje jednotného řešení linky na rezoluci dvojitou čárou.

Aktualizace vzoru ANTIC DMA a Player/Missile pattern se vyskytují na každé skenovací linii bez ohledu na rozlišení. Je -li v platnosti rozlišení dvou řádků, může být paměť přehrávače/raket upravena mezi nadbytečnými načítáními DMA, čímž se změní vzor odeslaný do registrů GRAF* a vytvoří se zřejmé přehrávače/střely s jedním řádkem.

Zobrazit seznam bitových hodnot DMA :

  • $ 00 - Zakázat zobrazení seznamu.
  • 20 $ - Povolit zobrazení seznamu.

Zobrazení pole Playfield vyžaduje, aby byla povolena funkce Display List DMA a zadána šířka pole Playfield. Pokud je některá hodnota nulová, nebude generováno žádné zobrazení Playfield.

CHACTL $ D401 Napište

SHADOW: Graf 02 F3

Ovládání postavy

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- - - - - Odraz videa Video inverzní Video prázdné

CHACTL ovládá zobrazení znaků.

Hodnoty bitů ovládání znaků provádějí následující akce:

Vlastnosti Hodnota bitů Popis
Video prázdné $ 01 Inverzní znaky videa se zobrazují jako mezery.
Video inverzní 02 $ Postavy inverzního videa se zobrazují jako inverzní video. (výchozí)
Odraz videa 04 $ Všechny znaky jsou zobrazeny svisle zrcadleně.

Bity CHACTL Video Inverse a Video Blank ovlivňují zobrazení znaků v ANTIC Text Modes 2 a 3, které mají nastavený vysoký bit (znaky $ 80 až $ FF). Přepínání hodnot bitů CHACTL umožňuje globálně blikat nebo vypínat tyto znaky pro celé zobrazení.

Funkce Video Inverse a Video Blank povolená společně vedou k tomu, že se znaky videa vzad zobrazují jako inverzní prázdné místo. Bity Video Inverse a Video Blank fungují v ANTIC režimech 2 a 3 a nemají žádný vliv na ostatní textové režimy 4, 5, 6 a 7.

Bit Video Reflect ovlivňuje všechny textové režimy. Funkce Video Reflect je užitečná v situacích vyžadujících efekty zrcadlení bez definování nové znakové sady. Ideálním využitím jsou karetní hry zobrazující přesné tváře karet s obleky vzhůru nohama. Protože toto svisle zrcadlí data glyfů před jejich použitím, efekt se zdá být nekonzistentní pro ANTIC Mode 3 následníky s glyfy bajtů 6 a 7, které se objevují ve spodní části oblasti sestupu.

DLISTL/DLISTH $ D402/$ D403 Zápis

STÍN: SDLSTL/SDLSTH $ 0230/$ 0231

Zobrazit ukazatel seznamu

Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

ANTIC začne provádět seznam zobrazení, na který ukazuje 16bitová adresa v registrech DLISTL /DLISTH ($ D402- $ D403 hex /54274-54275 dec ). Registry adres jsou aktualizovány během provádění seznamu zobrazení pomocí JMP (skok) ANTIC a JVB (skok a čekání na svislé prázdné místo). Adresu také aktualizuje rutina VBI (Vertical Blank Interrupt) operačního systému pomocí hodnot ve stínových registrech SDLSTL /SDLSTH ($ 0230-$ 0231 hex /560-561 dec ).

Když je povoleno přerušení svislého prázdného OS, přímé aktualizace registrů ANTIC DLIST procesorem nebo pokyny ANTIC Jump budou OS přepsány během příštího svislého prázdna hodnotami ve stínových registrech. Převrácení stránky implementované seznamy zobrazení, které ukazují na další seznam zobrazení v sérii, tedy nebude fungovat podle očekávání, pokud není vypnuto přerušení svislého prázdného okna.

HSCROL $ D404 Zápis

Jemný horizontální posun

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- - - - ? ? ? ?

Tento registr určuje vzdálenost posunu horizontálního jemného posouvání v barevných hodinách. Významné jsou pouze nejnižší 4 bity. Rozsah hodnot 16 barevných hodin umožňuje ANTICu posunout text v režimu 2 o čtyři znaky a v režimu 6 o dva znaky, než je potřeba hrubý posun.

Když je pro řádek režimu povoleno horizontální posouvání, ANTIC načte přírůstek další velikosti větší než aktuální šířka obrazovky, aby poskytl vyrovnávací paměť subjektu údajů pro ovládací prvek horizontálního posouvání. Při zobrazení Úzká šířka ANTIC načte RAM obrazovky potřebnou pro normální šířku. Stejně tak pro normální šířku ANTIC načte RAM obrazovky potřebnou pro Wide.

ANTIC ukládá do paměti prvních pár bajtů načtených z paměti obrazovky, které jsou dostatečné k pokrytí rozsahu pohybu 16 barevných hodin. . Když je HSCROL 0, z vyrovnávací paměti se nevydávají žádné barevné hodiny, takže první zobrazený bajt obrazovky je první bajt po datech uložených ve vyrovnávací paměti. Jak HSCROL zvyšuje, na levý okraj displeje se přidává více barevných hodin z konce (pravé strany) dat uložených ve vyrovnávací paměti, což způsobí posun jemného posouvání k posunutí obsahu obrazovky doprava.

ANTICKÝ režim F (vysoké rozlišení, 1/2 barevných hodinových pixelů) lze posouvat pouze po dvou pixelech, protože HSCROL určuje barevné takty.

ANTICKÉ režimy využívající alternativní barevné interpretace GTIA musí být posouvány celým pixelem GTIA (dva barevné hodiny). K zajištění správného posouvání by měly být použity pouze sudé hodnoty. Liché hodnoty HSCROL přesunou tok obrazových bodů do jiného stavu, který bude GTIA interpretovat jako různé barvy.

Na rozdíl od mnoha platforem je horizontální posouvání Atari vizuálně konzistentní a bez artefaktů „blikajících“ barev díky velikosti pixelů Atari, která odpovídá časování barevných hodin potřebnému pro přesnou barvu.

VSCROL $ D405 Zápis

Jemný svislý svitek

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
- - - - ? ? ? ?

Tento registr určuje vzdálenost jemného svislého posouvání v řádcích skenování. Nejnižší 4 bity jsou významné, ale hodnota svislého posouvání by se měla pohybovat od 0 do výšky řádky skenovacího řádku ANTIC Mode - 1. Posunutí dále, než je počet řádků skenování ANTIC Mode, má za následek řádky opakovaných dat narušující kontinuitu jemného posouvání (ačkoli , toto lze také použít jako zneužitelné chování).

Oblast svislého posouvání je definována nastavením bitů VS (20 $) na sekvenční sérii řádků ANTICKÉHO režimu v seznamu zobrazení . První řádek režimu bez sady bitů VS se stane koncem posouvající se oblasti a používá se jako vyrovnávací čára pro dodávání nových informací k posouvání nahoru do spodní části posouvající se oblasti.

Hodnota svislého posouvání označuje číslo řádku skenování, které má začít zobrazení v prvním řádku režimu, a také se používá jako číslo řádku skenování pro ukončení zobrazení v posledním řádku režimu (řádek bez sady bitů VS).

Příklad: Vzhledem k osmi řádkovým skenovacím ANTICKÝM režimům (textové režimy 2, 4 nebo 6) s bitem VS nastaveným na dvou sousedních řádcích režimu se posouvající oblast skládá ze tří řádků režimu - třetí řádek v oblasti posouvání je první režim došlo k chybě bez sady bitů VS. Pokud v seznamu zobrazení není nastaveno svislé posouvání, tři řádky režimů by přirozeně vedly k 24 zobrazeným řádkům skenování. Když jsou bity VS nastaveny v pokynech režimu zobrazení seznamu, jak je popsáno, a hodnota VSCROL je nastavena na 2, pak se první řádek režimu v oblasti začne zobrazovat na řádku skenování 2 zobrazující řádky skenování 2 až 7 (šest řádků skenování nebo 8 - VSCROL ), druhý řádek režimu se zobrazí úplně (osm řádků skenování) a konečný řádek režimu končí na řádku skenování 2 zobrazující řádky skenování 0 až 2 (tři řádky skenování nebo VSCROL + 1). Celkový počet řádků skenování zobrazených v oblasti posouvání je pak 6 + 8 + 3 = 17 řádků skenování.

Protože jemné rolování je založeno na řádcích skenování, nikoli na výšce pixelů, a pohyb v oblasti posouvání se provádí jednoduše přeskočením řádků skenování z prvního řádku režimu a přidáním řádků skenování do posledního řádku režimu, je možné v rámci oblasti posouvání použít různé grafické režimy . To pouze vyžaduje další péči při určování, kolik řádků skenování lze posunout pro aktuální první a poslední řádky režimu v oblasti posouvání.

Řádky prázdného režimu nemohou být obsaženy v oblasti posouvání, protože pokyny řádku prázdného režimu ve své podstatě nemají bit modifikátoru svislého posouvání. (Pokyny pro řádek prázdného režimu určují počet prázdných řádků pomocí bitů 7 až 5, které fungují jako modifikátory LMS, HS a VS pro „běžné“ instrukce režimu Playfield.) Instrukci prázdného režimu však lze použít k ukončení oblasti posouvání a stále podléhá očekávaným změnám výšky čáry skenování podle hodnoty svislého posouvání.

PMBASE $ D407 Zápis

Základní adresa hráče

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
? ? ? ? ? ? ? ?

Toto určuje stránku základní adresy pro grafiku Player/Missile. Když pracuje grafika P/M s dvojitým rozlišením, musí hodnota PMBASE začínat na hranici 1 kB. Když pracuje grafika P/M s jedním řádkem, musí hodnota PMBASE začínat na hranici 2 kB.

CHBASE $ D409 Napište

SHADOW: CHBAS $ 02F4

Základní adresa znaků

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
? ? ? ? ? ? ? ?

Toto určuje stránku základní adresy pro znakovou sadu. ANTICKÉ režimy 2, 3, 4 a 5 používají 128 znaků ve znakové sadě a vyžadují, aby hodnota CHBASE začínala na hranici 1 kB. ANTICKÉ režimy 6 a 7 používají 64 znaků, takže hodnota CHBASE musí začínat na hranici 512 bajtů.

Obvyklá výchozí hodnota je $ E0 hex /224 dec pro znakovou sadu v ROM na $ E000 hex /57344 dec .

WSYNC $ D40A Zápis

Počkejte na horizontální synchronizaci

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
? ? ? ? ? ? ? ?

Tento registr umožňuje synchronizaci programů s displejem. Zápis do tohoto registru zastaví program 6502 do konce aktuálního skenovacího řádku. Toto chování se běžně používá během přerušení seznamu zobrazení k vytvoření čistých přechodů/změn z jednoho skenovacího řádku do druhého. Napsaná hodnota není důležitá.

ÚČET $ D40B Čtení

Počítadlo svislé čáry

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
? ? ? ? ? ? ? ?

Tento registr sleduje aktuálně generovanou skenovací linku. Vrácená hodnota je skutečný řádek skenování děleno 2. Zahrnuty jsou prázdné řádky generované na začátku displeje. Hodnota pro NTSC se bude pohybovat od 0 do 130 pro NTSC a 0 až 155 pro PAL. Tato hodnota je užitečná během přerušení seznamu zobrazení k identifikaci svislé polohy obrazovky.

PENH $ D40C Přečíst

STÍN: LPENH $ 0234

Lehké pero horizontální poloha

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
? ? ? ? ? ? ? ?

Obsahuje horizontální polohu barevných hodin při stisknutí spouště světelného pera/světelné pistole. Stínový registr je doporučeným zdrojem pro čtení těchto informací, protože budou aktualizovány během svislého prázdného místa, což zaručuje konzistentní a spolehlivé výsledky. Programy by se měly vyvarovat přímého čtení hardwarového registru, pokud si program není jistý, že je registr přečten v době, kdy je zajištěna platnost hodnoty. Světelné zbraně pro Atari fungují stejně jako světelná pera s přidanou optickou lupou, která umožňuje čtení obrazovky z větší vzdálenosti. Vstupní zařízení pro světelné pero/lehkou zbraň vyžaduje konvenční CRT využívající skenovací elektronový paprsek. Světelné pero/světelná pistole nemůže fungovat s moderními LCD televizory a monitory.

Číst PENV $ D40D

SHADOW: LPENV 0235 $

Světelná poloha lehkého pera

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
? ? ? ? ? ? ? ?

Obsahuje hodnotu ÚČTU zachycenou při stisknutí spouště světelného pera/světelné zbraně. Stínový registr je doporučeným zdrojem pro čtení těchto informací, protože budou aktualizovány během svislého prázdného místa, což zaručuje konzistentní a spolehlivé výsledky. Programy by se měly vyvarovat přímého čtení hardwarového registru, pokud si program není jistý, že je registr přečten v době, kdy je zajištěna platnost hodnoty. Světelné zbraně pro Atari fungují stejně jako světelná pera s přidanou optickou lupou, která umožňuje čtení obrazovky z větší vzdálenosti. Vstupní zařízení pro světelné pero/lehkou zbraň vyžaduje konvenční CRT využívající skenovací elektronový paprsek. Světelné pero/světelná pistole nemůže fungovat s moderními LCD televizory a monitory.

NMIEN $ D40E Napsat

Povolit maskování bez přerušení (NMI)

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
DLI VBI RESET - - - - -

NMIEN povoluje nemaskovatelná přerušení. Bitové hodnoty:

Vlastnosti Hodnota bitů Popis
Resetovat 20 $ Povolte resetování přerušení klíče
VBI 40 dolarů Povolit vertikální prázdné přerušení
DLI 80 dolarů Povolit přerušení seznamu zobrazení

Operační systém nastavuje NMIEN na výchozí 40 $ hex /64 dec během rutin při zapnutí. Služba NMI rutinuje první vektor přes $ FFFA hex /65530 dec, který určuje příčinu a poté přenáší řízení na rutinu služby přerušení.

DLI:

Pokud je NMIEN bit DLI nastaven, když ANTIC narazí na instrukci Display List s nastavenou bitovou modifikací DLI, pak ANTIC spustí DLI na posledním řádku skenování řádku instrukčního režimu Display List.

Operační systém nepoužívá DLI, takže výchozí adresa pro vektor DLI (VDSLST, 0200 $ hex /512 dec ) ukazuje na instrukci RTI v ROM. Aplikace používající DLI musí před povolením DLI změnit VDSLST tak, aby ukazovala na požadovanou rutinu DLI.

Obsah registru 6502 Accumulator, X a Y se nezachová před vstupem do rutiny DLI. Rutina DLI je zodpovědná za uložení stavu registrů, které budou použity během rutiny DLI, a pak poslední akcí je obnovení původních hodnot registrů před ukončením s instrukcí RTI. Rutiny obvykle posílají hodnoty registru do zásobníku 6502.

Pokud je použito více DLI, první přerušení aktualizuje VDSLST tak, aby ukazovalo na adresu dalšího přerušení, a tak dále pro další přerušení. Poslední rutina přerušení seznamu zobrazení na obrazovce ukazuje VDSLST zpět na adresu prvního přerušení seznamu zobrazení. Alternativně lze k resetování adresy VDSLST použít rutinu Vertical Blank Interrupt, aby bylo zajištěno, že DLI zůstanou synchronizovány s obrazovkou.

VBI:

Když je nastaven bit VMI NMIEN, ANTIC bude signalizovat přerušení svislého prázdného bodu na konci zpracování JVB (skokové prázdné prázdné místo) na konci seznamu zobrazení . Operační systém používá Vertical Blank k provádění různých domácích úklidových prací (mimo jiné - aktualizace časovačů, kopírování vstupních hodnot ovladače do jejich stínových registrů a kopírování obsahu stínových registrů do hardwarových registrů vlastních čipů.)

OS skočí přes VVBLKI ($ 0222 hex /546 dec ), aby zahájil rutinu služby OS VBI, a rutina OS VBI se ukončí skokem přes VVBLKD ($ 0224 hex /548 dec ). Ve výchozím nastavení VVBLKI ukazuje na skokový vektor OS SYSVBV ($ E45F hex /58463 dec ) pro zahájení Vertikálního prázdného přerušení a VVBLKD ukazuje na skokový vektor OS XITVBV ($ E462 hex /58466 dec ).

Uživatelské programy mohou vložit spuštění vlastního kódu buď před (Okamžité), nebo po (Odložené) rutiny Vertikální prázdné přerušení operačního systému. Vzhledem k tomu, že během aktualizace vektorů uživatelským programem lze volat přerušení vertikálního prázdného OS, operační systém nabízí rutinu SETVBV ($ E45C hex /58460 dec ), která bezpečně aktualizuje vektory VVBLKI nebo VVBLKD tak, aby ukazovaly na novou rutinu :

  • Chcete -li nastavit nový cíl skoku pro VVBLKI (okamžitý), nastavte registr Y na nízký bajt cílové adresy, registr X na vysoký bajt cílové adresy a akumulátor na 6, poté JSR SETVBV. Uživatelský kód volaný přes VVBLKI jednoduše potřebuje ukončit skokem na svislý prázdný OS s JMP SYSVBV ($ E45F hex /58463 dec ).
  • Chcete -li nastavit nový cíl skoku pro VVBLKD (Odloženo), nastavte registr Y na nízký bajt cílové adresy, registr X na vysoký bajt cílové adresy a akumulátor na 7, poté JSR SETVBV .. Uživatelský kód volaný přes VVBLKD musí opustit skokem na rutinu ukončení OS Vertical Blank s JMP XITVBV ($ E462 hex /58466 dec ).

Pokud je příznak CRITIC (42 $ hex /66 dec ) nenulový, je přerušení přerušení odložené svislé prázdné potlačeno bez ohledu na adresy ve vektorech. Výchozí hodnota CRITIC, 0, umožňuje provedení okamžitých i odložených svislých prázdných přerušení.

NMIRES $ D40F Zápis

Reset nemaskovatelného přerušení (NMI)

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
? ? ? ? ? ? ? ?

Jakákoli hodnota zapsaná do NMIRES resetuje bity v NMIST, které udávají důvod posledního Non-Maskable Interrupt. Toho používá kód pro odeslání přerušení v operačním systému a obvykle by nebyl důvod, aby sem uživatelský program psal.

Číst NMIST $ D40F

Stav Non-Maskable Interrupt (NMI)

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
DLI VBI RESET - - - - -

Dispečink Non-Maskable Interrupt pro přerušení operačního systému přečte tento registr, aby určil důvod přerušení a jakou servisní rutinu má provést.

Bitové hodnoty:

  • $ 20 - Resetování přerušení klíče
  • 40 $ - svislé přerušení
  • 80 $ - Přerušení seznamu zobrazení

Seznam zobrazení

Seznam Display je seznam pokynů, nebo program, režie Antić jak generovat zobrazení. Data zpracovaná tímto „programem“ Seznamu zobrazení jsou pamětí obrazovky. Výstupem je grafický displej. Druhy grafiky ve výstupu (text vs. adresovatelné pixely) jsou určeny pokyny v seznamu zobrazení.

Procesor zapisuje seznam zobrazení a data zobrazení do paměti RAM . ANTIC čte pokyny k zobrazení seznamu, paměti obrazovky a informací o znakové sadě z RAM pomocí techniky známé jako přímý přístup do paměti (DMA) . Úkolem programu BASIC nebo 6502 ve strojovém jazyce je inicializovat zobrazení - nastavit pokyny pro zobrazení seznamu, uspořádat paměť obrazovky (a případně znakovou sadu) a poté spustit ANTIC a spustit zobrazení. Poté se ANTIC automaticky postará o generování zobrazení obrazovky. To umožňuje 8bitovým počítačům Atari vytvářet komplexní displeje ve smíšeném režimu bez přímého zásahu CPU. Jiné platformy, dokonce i ty navržené mnohem později, nemohou buď kombinovat grafické režimy na jednom displeji, nebo to udělat bez složitých přerušení CPU.

ANTIC zpracovává pokyny v seznamu zobrazení, čte paměť obrazovky (a případně data sady znaků), převádí tyto informace do proudu grafických dat v reálném čase a odesílá tento datový tok na čip CTIA/GTIA, který aplikuje barvu na grafické pixely a vydává video. Oba čipy dohromady poskytují 6 textových a 8 grafických režimů (celkem 14). Pokročilejší verze GTIA přidává tři alternativní barevné interpretace pro každý grafický režim ANTIC a poskytuje celkem 56 (14krát čtyř) grafických režimů. Pouze grafické režimy ANTIC založené na polovičních barevných hodinových pixelech jsou však schopny vyjádřit úplnou paletu barev poskytovanou novými barevnými interpretacemi, a z těchto režimů jsou nejvhodnější režimy ANTIC 2 (textový režim OS 0) a ANTIC mode F (OS Graphics mode 8). Přiměřený počet jedinečných grafických režimů, které jsou k dispozici s využitím inherentních hardwarových schopností ANTIC + CTIA/GTIA, je tedy 20–14 režimů ANTIC + 3 další barevné interpretace pro režimy ANTIC 2 a F.

Zobrazit seznam instrukcí Přehled

Displej Atari je postaven jako řada ANTICKÝCH instrukcí, z nichž každý popisuje řádek textu nebo grafický režim postupně od horní části k dolní části obrazovky, dokud není vyplněna požadovaná oblast zobrazení. Ve skutečnosti je obrazovka svislou hromádkou pokynů režimu ANTIC. Různé režimy zabírají různé počty řádků skenování a používají různé množství paměti RAM. Návrh displeje vyžaduje počítání řádků skenování každé instrukce režimu a sledování paměti pro každý řádek režimu, aby se předešlo překročení omezení ANTIC nebo video standardu. (Viz část Omezení ).

Míchání více grafických režimů na jednom displeji se provádí jednoduše poskytnutím různých pokynů pro režim znaků nebo mapy pro požadovanou pozici na obrazovce. Například grafické režimy 1 až 8 operačního systému Atari nabízejí zobrazení na celou obrazovku nebo možnost pro čtyřřádkové textové okno ve spodní části obrazovky. Tato funkce rozdělené obrazovky je dosažena pomocí inherentních schopností ANTIC a jejího seznamu zobrazení bez jakéhokoli přerušení CPU nebo vlastní manipulace s video hardwarem.

ANTIC má čtyři typy pokynů:

  • Prázdný řádek - 8 pokynů k zobrazení od 1 do 8 vodorovných prázdných řádků
  • Skokové instrukce - 2 druhy skokových instrukcí, které znovu načtou čítač programu ANTIC (instrukce pro 3 bajty)
  • Znakový režim - 6 pokynů k zobrazení znakových dat
  • Režim mapy - 8 pokynů k zobrazení barevných pixelů

Pokyny pro režim Mapa a Znak mají další modifikátory, které lze povolit pomocí pokynů:

  • Horizontální posouvání - umožňuje horizontální jemné posouvání
  • Svislé posouvání - Umožňuje svislé jemné posouvání
  • Načíst paměťové skenování (LMS) - Nastaví počáteční adresu grafických/znakových dat (3bajtová instrukce)
  • DLI - Přerušení zobrazení seznamu ( v jiných systémech se nazývá „ přerušení rastru “ nebo „ Horizontální prázdné přerušení “)

Provedení instrukce

ANTIC začíná provádět seznam zobrazení, na který ukazuje 16bitová adresa v registrech DLISTL /DLISTH ($ D402- $ D403 hex /54274-54275 dec ). Registry adres jsou ANTIC automaticky zvyšovány při provádění každé instrukce. ANTIC může aktualizovat pouze nejnižší 10 bitů adresy během automatického přírůstku, který omezuje seznam zobrazení tak, aby začínal a končil v rozsahu 1K adres.

Registry jsou také aktualizovány během provádění seznamu zobrazení pomocí JMP (skok) ANTIC a JVB (skok a čekání na svislé prázdné místo). Tyto pokyny načítají celých 16 bitů adresy, takže je lze použít k obejití omezení 1K seznamu zobrazení.

Adresa je také aktualizována rutinou VBI (Vertical Blank Interrupt) operačního systému pomocí hodnot ze stínových registrů operačního systému SDLSTL /SDLSTH ($ 0230-$ 0231 hex /560-561 dec ). Když je povolena rutina OS VBI, přímé aktualizace registrů ANTIC DLIST CPU nebo instrukce ANTIC Jump budou OS přepsány během příštího vertikálního prázdného místa. Protože zpracování VBI je obvyklým stavem systému, většina programů na to spoléhá a aktualizuje pouze stínové registry OS (SDLSTL /SDLSTH $ 0230-$ 0231 hex /560-561 dec ) pro nastavení seznamu zobrazení.

Instrukční bajty

Tato legenda platí pro níže uvedené bitové diagramy instrukcí:

Bitová hodnota Popis
0 Bit musí být 0
1 Bit musí být 1
? Bit může mít hodnotu 0 nebo 1 a slouží k určitému účelu.
- Bit je nepoužitý nebo by se nemělo očekávat, že bude mít určitou hodnotu
označení Účel bitu najdete v pozdějším vysvětlení.

Instrukční bity:

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
DLI LMS VS HS Režim Režim Režim Režim

Bity 7: 4 jsou modifikátory pro pokyny režimu Playfield v bitech 3: 0. Bitová hodnota 1 Aktivuje modifikátor a 0 deaktivuje modifikátor.

  • Bit 3: Bit 0 - návod k režimu Playfield.
    • Hodnoty $ 00 a $ 01 jsou speciální pokyny.
    • Hodnoty režimu $ 02 až $ 0F určují režimy Playfield Character a Map.
  • Bit 4 - 10 $ - horizontální posouvání.
  • Bit 5 - 20 $ - svislý svitek.
  • Bit 6 - 40 $ - Načíst skenování paměti.
  • Bit 7 - 80 $ - Přerušení seznamu zobrazení.

Instrukce režimu 0 - prázdné řádky

DLI Čáry Čáry Čáry Režim Režim Režim Režim
? ? ? ? 0 0 0 0

Když jsou všechny bity režimu nulové, ANTIC neprovede žádné přehrávání pole DMA a zobrazí jeden nebo více prázdných řádků skenování barvy pozadí. U běžných režimů interpretace barev je „pozadím“ barevný registr COLBK ($ D01A hex /53274 dec ) OS Shadow COLOR4 ($ 02C8 hex /712 dec ), i když se to liší pro režimy interpretace barev GTIA. Další informace naleznete v diskusi o COLBK na stránce GTIA .

Počet prázdných řádků skenování je určen hodnotou bitů 4 až bitů 6, což umožňuje rozsah od 0 do 7. ANTIC k této hodnotě přidá jednu a zobrazí výsledný počet řádků skenování. Hodnoty instrukce:

ANTICKÁ instrukce Skenovací čáry
$ 00 hex /0 dec 1 prázdný řádek skenování.
10 $ hex /16 dec 2 prázdné řádky skenování.
$ 20 hex /32 dec 3 prázdné řádky skenování.
30 $ hex /48 dec 4 prázdné řádky skenování.
40 $ hex /64 dec 5 prázdných řádků skenování.
$ 50 hex /80 dec 6 prázdných řádků skenování.
$ 60 hex /96 dec 7 prázdných řádků skenování.
70 $ hex /112 dec 8 prázdných řádků skenování.

Prázdné čáry jsou užitečné pro oddálení začátku zobrazení obrazovky, dokud elektronový paprsek neopustí svislou oblast skenování v horní části displeje. Operační systém Atari pro tento účel vytváří všechny své grafické režimy počínaje třemi instrukcemi hex 70 /112 dec dec (nebo 24 prázdných řádků skenování). Prázdné řádky jsou také užitečné pro rozdělení částí vlastního displeje na různé účely (tj. Hranice mezi stavovým displejem a hlavní grafikou.)

Řádky prázdného režimu nemohou být obsaženy v oblasti posouvání, protože pokyny řádku prázdného režimu ve své podstatě nemají bity modifikátoru jemného posouvání. Instrukci prázdného režimu však lze použít k ukončení oblasti svislého posouvání a stále podléhá očekávaným změnám výšky skenovací čáry podle hodnoty svislého posouvání.

Bit modifikátoru DLI je k dispozici pro pokyny prázdného řádku. Když je bit DLI povolen, během posledního prázdného skenovacího řádku instrukce se spustí přerušení seznamu zobrazení. Vzhledem k tomu, že během prázdných řádků nedochází k DMA playfieldu (dochází pouze k zobrazení seznamu DMA a DMA Player/Missile (je -li povoleno)), lze prázdné řádky použít tam, kde grafika Playfield nebude potřeba, což poskytne více času rutinám Display List Interrupt měnícím barevné registry nebo Pozice hráče/rakety.

Instrukce režimu 1 - skok

DLI LMS VS HS Režim Režim Režim Režim
0 ? 0 0 0 0 0 1

Když je hodnota režimu 1, ANTIC provede skok ve svém programu (seznam zobrazení). Další dva bajty v seznamu zobrazení jsou načteny do ANTIC registrů DLISTL /DLISTH ($ D402- $ D403 hex /54274-54275 dec ) měnící bod provedení další instrukce.

Existují dva druhy skoků:

  • $ 01 hex /1 dec JMP - Přejít na adresu. To se používá k načtení nové adresy spuštění uprostřed provádění seznamu zobrazení, obvykle když seznam zobrazení musí překročit hranici 1 kB.
  • 41 $ hex /65 dec. JVB - skočte na adresu a počkejte na Vertical Blank. (Sada bitů JMP + LMS) Slouží k ukončení seznamu zobrazení. Použitá adresa by měla být počáteční adresou seznamu zobrazení.

Registry DLIST jsou také aktualizovány rutinou VBI (Vertical Blank Interrupt) operačního systému pomocí hodnot ve stínových registrech SDLSTL /SDLSTH ($ 0230-$ 0231 hex /560-561 dec ). Když je povolena rutina OS VBI, přímé aktualizace registrů ANTIC DLIST CPU nebo instrukce ANTIC Jump budou OS přepsány během příštího vertikálního prázdného místa. To znamená, že instrukce ANTIC JVB (Jump and wait for Vertical Blank), která určuje neplatnou adresu (nebo platnou adresu, která se liší od stínové hodnoty SDLST), nemá na zobrazení žádný skutečný vliv.

Argument JVB obvykle ukazuje na začátek stejného seznamu zobrazení, ale může také ukazovat na jiný seznam zobrazení, takže se po sobě jdoucích svislých polích provede řetězec seznamů zobrazení. Samozřejmě, aby měla ANTIC kontrolu nad začátkem dalšího seznamu zobrazení, musí být vypnuto přerušení svislého prázdného OS, aby se zabránilo přepsání hardwarových registrů ANTIC hodnotami stínového registru.

Pokyny pro režimy 2 až F - Znakové a mapové režimy Playfieldu

DLI LMS VS HS Režim Režim Režim Režim
? ? ? ? ? ? ? ?

Následuje seznam pokynů ANTIC grafického režimu. Podrobnější popis jednotlivých režimů najdete v části Grafické režimy Playfield .

ANTICKÁ instrukce Typ režimu Bajty na řádek režimu (úzký/normální/široký) Řádky skenování TV na řádek režimu Barva
2 Charakter 32/40/48 8 1.5
3 Charakter 32/40/48 10 1.5
4 Charakter 32/40/48 8 5 (vícebarevný)
5 Charakter 32/40/48 16 5 (vícebarevný)
6 Charakter 16/20/24 8 5 (jednobarevný)
7 Charakter 16/20/24 16 5 (jednobarevný)
8 Mapa 8/10/12 8 4
9 Mapa 8/10/12 4 2
A Mapa 16/20/24 4 4
B Mapa 16/20/24 2 2
C Mapa 16/20/24 1 2
D Mapa 32/40/48 2 4
E Mapa 32/40/48 1 4
F Mapa 32/40/48 1 1.5

Požadavek na paměť pro režimovou linii je určen dvěma faktory:

Modifikátor horizontálního jemného posouvání změní požadavky na paměť pro aktuální řádek režimu ze šířky určené DMACTL na další největší hodnotu.

Modifikátory instrukcí

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
DLI LMS VS HS ? ? ? ?

Bity 7: 4 jsou modifikátory pro pokyny režimu Playfield v bitech 3: 0. Hodnoty pokynů režimu Playfield se pohybují od $ 02 do $ 0F. Bitová hodnota modifikátoru 1 Aktivuje modifikátor a 0 deaktivuje modifikátor.

  • Bit 4 - 10 $ hex /16 dec horizontální posouvání.
  • Bit 5 - 20 $ hex /32 dec vertikální svitek.
  • Bit 6 - 40 $ hex /64 dec. Načíst skenování paměti.
  • Bit 7 - $ 80 hex /128 dec Přerušení seznamu zobrazení.

Modifikátor HS - horizontální jemný svitek

Bit4: hodnota pozice 10 $, ovládá horizontální posouvání režimu hřiště.

Když je povoleno horizontální posouvání, ANTIC načte více bajtů paměti obrazovky, než kolik je zobrazeno, aby na začátku a na konci řádku zobrazilo částečně posouvané bajty zobrazení. Pokud je displej v úzkém režimu, ANTIC načte počet bajtů obrazovky nezbytných pro normální režim. Pokud je displej v normálním režimu, ANTIC načte počet bytů potřebných pro režim širokoúhlé obrazovky. V režimu širokoúhlé obrazovky ANTIC nezíská žádné další bajty obrazovky. Posouvání na širokoúhlé obrazovce způsobí, že se prázdná data přesunou do posouvané oblasti. To není problém, protože k tomu dochází v oblasti skenování, která není na normálním displeji NTSC/PAL viditelná.

VS Modifer - jemný svislý svitek

Bit5: hodnota pozice $ 20, ovládá svislé posouvání režimu Playfield.

Oblast svislého posouvání na displeji je definována nastavením bitů VS (20 USD) na sekvenční sérii řádků ANTICKÉHO režimu v seznamu zobrazení. První řádek režimu bez sady bitů VS se stane koncem posouvající se oblasti a používá se jako vyrovnávací čára pro dodávání nových informací k posouvání nahoru do spodní části posouvající se oblasti.

Modifikátor LMS - Načíst skenování paměti

Bit6: hodnota pozice $ 40, načte novou adresu pro začátek paměti obrazovky pro aktuální řádek režimu Playfield.

Volba LMS načte adresu skenování paměti obrazovky ANTIC se 16bitovou hodnotou ve dvou bajtech podle pokynů. Zadaný režim znaků nebo mapy začne zobrazovat bajty z dané adresy. Volba LMS se musí objevit v prvním řádku instrukcí režimu Playfield (nikoli prázdném řádku) v seznamu zobrazení, aby bylo možné inicializovat ANTIC, aby se začalo číst na začátku paměti obrazovky. Většina režimů zobrazení na celou obrazovku generovaných operačním systémem bude mít pouze jeden výskyt modifikátoru LMS přítomného v seznamu zobrazení . ANTIC automaticky zvýší svou adresu LMS na konci každého řádku režimu v rámci přípravy na další řádek. Dokud paměť obrazovky nepřekročí hranici 4K, modifikátor LMS není při následných pokynech režimu Playfield potřeba.

Zobrazení na celou obrazovku pomocí režimů mapy Playfield E nebo F bude mít druhý výskyt modifikátoru LMS na pokynu k mapě blízko středu obrazovky, protože plné zobrazení vyžaduje více než 4K paměti obrazovky. (Displeje režimu F zahrnují 320 pixelů s vysokým rozlišením a režimy zobrazení GTIA.)

Kombinace instrukcí Map a Character Mode s bitem LMS umožňuje nastavit adresu paměti obrazovky volně v 64K adresním prostoru nezávisle pro každý řádek zobrazení . Jinými slovy, paměť obrazovky nemusí být zcela souvislou pamětí skenovanou postupně směrem k vyšším adresám - pouze jeden řádek Mode musí být vybaven odpovídajícími sekvenčními bajty paměti, aby byly splněny požadavky tohoto režimu, šířky displeje a Funkce posouvání.

Modifikátor DLI - přerušení seznamu zobrazení

Bit7: hodnota pozice $ 80, nasměruje ANTIC k vyvolání přerušení obsluhovaného CPU na posledním řádku skenování režimu Playfield Mode.

Pokud má ANTIC registr NMIEN ($ D40E hex /54286 dec ) nastaven Bit7 ($ 80), pak se na posledním skenovacím řádku Mode řádku spustí rutina přerušení, která je vektorována prostřednictvím adresy VDSLST (200 $ hex /512 dec ).

Obsah registru 6502 Accumulator, X a Y se nezachová před vstupem do rutiny DLI. Rutina DLI je zodpovědná za uložení stavu registrů použitých během DLI a poté obnovení původních hodnot registrů před ukončením instrukcí RTI. Rutiny obvykle posílají hodnoty registru do zásobníku 6502.

Rutiny DLI jsou obvykle krátké a rychlé, před opuštěním mění barevné registry nebo polohy střely hráče. Stručnost však není vyžadována. Dokud rutina DLI skončí před začátkem další rutiny DLI, může rutina DLI pokračovat v aktualizaci hodnot napříč více skenovacími řádky.

Grafické režimy Playfield

Čip ANTIC umožňuje řadu různých režimů a šířek Playfield. Původní operační systém Atari, který je součástí počítačů Atari 800/400, však poskytuje snadný přístup k omezené podmnožině těchto grafických režimů. Režimy ANTIC Playfield jsou uživatelům zpřístupněny prostřednictvím Atari BASIC prostřednictvím příkazu „GRAPHICS“ a některým dalším jazykům prostřednictvím podobných systémových volání. Zvláště režimy, které nejsou přímo podporovány původním OS a BASIC, jsou režimy, které jsou pro hry nejužitečnější. Novější verze OS používaná v 8bitových počítačích Atari XL/XE přidala podporu pro většinu těchto „chybějících“ grafických režimů.

K vytvoření těchto režimů používá čip ANTIC seznam zobrazení a další nastavení. Jakýkoli grafický režim ve výchozí interpretaci barev GTIA lze libovolně míchat bez zásahu procesoru změnou pokynů v seznamu zobrazení .

Geometrie obrazovky ANTIC není pevná. Hardwarový registr může nasměrovat ANTIC na zobrazení úzkého hracího pole (128 barevných hodin/256 pixelů s vysokým rozlišením), pole s normální šířkou (160 barevných hodin/320 bodů s vysokým rozlišením v pixelech) a široké pole pro nadměrné skenování (192 barevných hodin/384) široké pixely s vysokým rozlišením). Zatímco výchozí výška operačního systému pro grafické režimy je 192 řádků skenování, Antic dokáže zobrazit svislé přeskenování až 240 řádků skenování TV na výšku vytvořením vlastního seznamu zobrazení .

Režim F vytváří barvy pomocí artefaktů NTSC a funguje podobným způsobem jako grafické režimy Apple II . Rozlišení pixelu je 320 napříč, ale barevné rozlišení je poloviční, takže každá skupina dvou pixelů se „spojí“ dohromady a vytvoří jednu barvu a takto lze generovat čtyři barvy artefaktu. Budou tónovány, pokud je barva popředí a pozadí nastavena na jinou hodnotu než černá/bílá/šedá. Přesné barvy vyrobené tímto způsobem se liší u různých 8bitových modelů Atari a také mezi čipy CTIA a GTIA, takže nežádoucí barvy artefaktů mohou vyplývat ze spuštěného softwaru, který používá režim F na jiném počítači, než pro který byl vyvinut. Na strojích PAL nebylo možné získat zbarvení artefaktu a režim F na nich bude jednobarevný.

Režim F nebyl široce používán softwarem kvůli jeho vysokým požadavkům na paměť (8 kB) a nekonzistentním barvám artefaktů, které se na každém modelu 8bitového počítače Atari nezobrazovaly stejně. Mezi hry, které ji využívají, patří grafická dobrodružství Sierry, jako jsou Troll's Tale and Wizard and the Princess, Lode Runner a Ultima .

Systém zobrazování videa byl navržen s pečlivým zvážením metod zobrazení a omezení NTSC. Takt procesoru a video hardware systému jsou synchronizovány na polovinu taktovací frekvence NTSC. V důsledku toho je pixelový výstup všech režimů zobrazení založen na velikosti barevných hodin NTSC, což je minimální čas potřebný k zajištění správné a konzistentní barvy bez ohledu na horizontální umístění pixelu na obrazovce. Výsledkem je přesná velikost pixelu a zbarvení, které při horizontálním posouvání nezobrazují chyby „strobingu“. (Strobing barev je nevzhledné změny odstínů v pixelech na základě horizontální polohy, což je způsobeno tím, že se změny signálu neshodují s barevnými hodinami, a proto neposkytněte hardwaru TV/monitoru dostatečný čas na dosažení správné barvy.)

Režimy postav

Antický textový režim Režim OS Znaky (nebo bajty) na řádek režimu (úzký/normální/široký) Řádky skenování TV na řádek režimu Barvy Barvy na matici znaků Znaky v písmu Velikost maticových pixelů (barevné hodiny x řádky skenování) Bitů na maticový pixel Maticová mapa (barevné hodiny x řádky skenování) Maticová mapa (pixely x pixely) Poznámky
2 0 32/40/48 8 1.5 1 128 1/2 x 1 1 4 x 8 8 x 8 Pixely s vysokým rozlišením. Když je nastaven vysoký bit znaku (hodnoty $ 80 až $ FF), zobrazí se znaková data podle nastavení CHACTL.
3 N/A 32/40/48 10 1.5 1 128 1/2 x 1 1 4 x 8/10 8 x 8 Pixely s vysokým rozlišením. Malé znaky jsou zobrazeny o 2 řádky níže, což umožňuje sestupování.
4 12 (XL OS) 32/40/48 8 5 4 128 1 x 1 2 4 x 8 4 x 8 Dva bity na pixel umožňující 4 barvy uvnitř jedné znakové matice. Když je nastaven vysoký bit znaku, pátá barva nahradí jednu z dalších čtyř.
5 13 (XL OS) 32/40/48 16 5 4 128 1 x 2 2 4 x 16 4 x 8 Barva stejná jako výše Antic Mode 4. Znaky jsou dvakrát vyšší.
6 1 16/20/24 8 5 1 64 1 x 1 1 8 x 8 8 x 8 Jedna barva na matici znaků. Znaky v každém bloku se 64 znaky jsou zobrazeny jinou barvou. Když je nastaven vysoký bit znaku, pátá barva nahradí jednu z dalších čtyř.
7 2 16/20/24 16 5 1 64 1 x 2 1 8 x 16 8 x 8 Barva stejná jako výše Antic Mode 6. Postavy jsou dvakrát vyšší.

Vykreslování glyfů

Všechny znakové sady používají k reprezentaci znaku 8 sekvenčních bajtů. K dispozici jsou čtyři typy vykreslování znaků/glyfů těchto bajtů. Každý znakový režim je spojen s konkrétní metodou vykreslování:

  • Standardní: ANTICKÝ režim 2. Na základě grafických režimů s vysokým rozlišením představuje každý bit v glyfu znaků jeden pixel na obrazovce, který je široký 1/2 barevných hodin. Barva pozadí je v jiných režimech znaků a mapy spíše COLPF2 než COLBK. COLBK se jeví jako ohraničení kolem všech čtyř stran hřiště. 0 hodnotových bitů v glyfu znaků ukazuje barvu pozadí. 1 hodnotový bit ukazuje hodnotu jasu z COLPF1 na základě barvy pozadí (COLPF2). Znaková sada používá 128 znaků a vyžaduje 1024 bajtů paměti RAM.
  • Descenders: ANTIC Mode 3. Modifikace standardní metody. Metoda barevného zobrazení v pixelech je stejná. Každý řádek režimu je vysoký 10 řádků, přestože znakový znak má stále 8 bajtů. Znaky $ 00 hex /0 dec na $ 5F hex /95 dec zobrazí v horních 8 řádcích skenování se dvěma prázdnými řádky skenování přidanými dole. Znaky $ 60 hex /96 dec na $ 7F hex /127 dec začínají dvěma prázdnými řádky skenování v horní části a poté zobrazují bajty glyfů v dolních 8 řádcích skenování. První dva bajty v glyfu jsou přesunuty do spodních dvou řádků skenování. To umožňuje správně navržené znakové sadě zobrazit skutečné potomky. Znaková sada používá 128 znaků a vyžaduje 1024 bajtů paměti RAM.
  • Jednobarevné: ANTICKÉ režimy 6 a 7. V těchto režimech každý bit v glyfu znaku představuje jeden pixel, který je široký jako jeden barevný takt. Barva pozadí je COLBK. Znaky mohou být zobrazeny ve výběru jedné ze čtyř barev. Šest nízkých bitů znakové hodnoty identifikuje glyf a dva vysoké bity identifikují barvu. Protože je hodnota znaku snížena na šest bitů, znaková sada používá 64 znaků a vyžaduje 512 bajtů paměti RAM. 0 hodnotových bitů v glyfu znaků ukazuje barvu pozadí. 1 hodnota bitů v datech glyfů ukazuje jednu ze čtyř možných barevných možností na základě dvou vysokých bitů hodnoty znaku. Bity hodnoty znaků 7 a 6:
Bity postav [7: 6] Rozsah znaků Barva glyfových pixelů
0 0 = 00 $ 00 - 3 $ COLPF0
0 1 = 40 $ $ 40 - $ 7F COLPF1
10 = 80 $ $ 80 - $ BF COLPF2
1 1 = $ C0 $ C0 - $ FF COLPF3
  • Vícebarevný: ANTICKÉ režimy 4 a 5. V těchto znakových režimech představuje každý pár bitů v znaku znaku pixel, jeden barevný takt široký, takže jeden bajt informace o glyfu představuje 4 pixely spíše než 8 pixelů jiných režimů. Znaková sada používá 128 znaků a vyžaduje 1024 bajtů paměti RAM. Barva pozadí je COLBK. Tento režim umožňuje zobrazení až čtyř barev (včetně pozadí) v jedné znakové matici. Pokud je nastaven vysoký bit hodnoty znaku (tj. Inverzní video), pak se místo obrazového bitového vzoru „11“, který běžně zobrazuje COLPF2, zobrazí pátá barva, COLPF3. Výběr barev na základě bitových párů znakového glyfu:
Znak bit 7 Bitový pár glyfů Barva pixelu glyfů
0/1 = 00 $/80 $ 0 0 COLBK
0/1 = 00 $/80 $ 0 1 COLPF0
0/1 = 00 $/80 $ 1 0 COLPF1
0 = 00 $ 1 1 COLPF2
1 = 80 $ 1 1 COLPF3

Režimy mapy

Režim Antic Map Režim OS Pixely na řádek režimu (úzký/normální/široký) Řádky skenování TV na řádek režimu Bajty na řádek režimu (úzký/normální/široký) Bitů na pixel Barvy Barevné hodiny na pixel
8 3 32/40/48 8 8/10/12 2 4 4
9 4 64/80/96 4 8/10/12 1 2 2
A 5 64/80/96 4 16/20/24 2 4 2
B 6 128/160/192 2 16/20/24 1 2 1
C 14 (XL OS) 128/160/192 1 16/20/24 1 2 1
D 7 128/160/192 2 32/40/48 2 4 1
E 15 (XL OS) 128/160/192 1 32/40/48 2 4 1
F 8 256/320/384 1 32/40/48 1 1.5 1/2

Režimy GTIA

Režimy GTIA jsou displeje Antic Mode F s možností alternativní interpretace barev povolenou prostřednictvím registru GTIA PRIOR ($ D01B hex /53275 dec ) zastíněné GPRIOR ($ 026F hex /623 dec ). Plné barevné vyjádření těchto režimů GTIA lze také zapojit do textových režimů Antic 2 a 3, ačkoli tyto budou také vyžadovat vlastní znakovou sadu, aby se dosáhlo praktického využití barev. Další informace najdete v GTIA .

Režim Antic Map Režim OS Pixely na řádek režimu (úzký/normální/široký) Řádky skenování TV na řádek režimu Bajty na řádek režimu (úzký/normální/široký) Bitů na pixel Barvy Barevné hodiny na pixel Poznámky
F 9 64/80/96 1 32/40/48 4 16* 2 16 odstínů barvy pozadí.
F 10 64/80/96 1 32/40/48 4 9 2 režim přesměrování pixelů - pro pixely používá všech 9 barevných registrů Playfield a Player/Missile.
F 11 64/80/96 1 32/40/48 4 16* 2 15 barevných odstínů se stejnou svítivostí nastavenou pozadím plus barva pozadí.

Rolování

Než se video displeje staly běžnou součástí uživatelského rozhraní, mnoho počítačů používalo dálnopis-tiskárnu obvykle s nepřetržitě podávaným papírem. Vstup uživatele a počítačem generovaný výstup byly vytištěny na papír podávaný tiskárnou. Toto široce chápané rozhraní pro vstup uživatele a výstup z počítače pokračovalo zavedením video displejů, protože počítače představovaly metaforu obrazovky jako zobrazovací port nad imaginárním, nekonečným papírem. Informace se na obrazovce zobrazují od začátku, dokud nedosáhnou spodní části obrazovky, a když počítač potřebuje zavést nové informace, posune všechny informace na obrazovce nahoru a v dolní části prázdné místo pro nové informace a následně vymaže nejvyšší informace. .

Tento druh rolování se nazývá „hrubé rolování“. Toho je dosaženo přesunutím bajtů paměti přes určenou oblast zobrazení obrazovky. Přesunutí kilobajtu (nebo více) paměti je náročné na procesor a pomalejší počítače nemusí při aktualizaci dat na obrazovce provádět nic jiného. Jako prostředek animace displeje mohou být výsledky trhavé, když procesor nemůže aktualizovat paměť obrazovky rychleji, než hardware displeje čte paměť pro generování video výstupu. Plynulost pohybu je narušena, protože minimální rozsah posunutí displeje je velikost celého znaku. Většina počítačů, včetně 8bitových bitů Atari, provádí hrubé posouvání, jak je popsáno výše-běžnými příklady je prohlížení dlouhého ZÁKLADNÍHO seznamu programů nebo adresáře souborů.

Hrubé posouvání implementované hromadným pohybem dat je často jedinou metodou posouvání, která je na většině počítačů možná. ANTIC však poskytuje přímou hardwarovou podporu pro svislé a vodorovné, hrubé a jemné posouvání, přičemž koncept „zobrazovacího portu přesahujícího data“ přechází z metaforické iluze do doslovné implementace. Tyto funkce ANTIC poskytují rychlý, plynulý pohyb po celé obrazovce vyžadující zanedbatelný čas procesoru, a tak uvolňují procesor pro další práci.

Všechny režimy zobrazení ANTIC, režimy textu a mapy, mohou využívat funkce posouvání hardwaru.

Vertikální hrubé posouvání

Svislé hrubé posouvání je nejsnadnější funkce pro cvičení. První instrukce režimu textu nebo mapy v každém seznamu zobrazení vždy obsahuje modifikátor instrukce LMS určující začátek paměti obrazovky. Při generování displeje ANTIC automaticky zvyšuje ukazatel skenování paměti z řádku Mode na řádek Mode, aby se paměť zobrazovala souvisle. Displej lze tedy „přesouvat“ pouhou aktualizací adresy původního modifikátoru LMS; přidání počtu bajtů použitých pro řádek v aktuálním režimu textu nebo mapy posune obsah obrazovky o jeden řádek nahoru, zatímco odečtením stejného množství se obrazovka posune dolů. Displej je tedy ve skutečnosti zobrazovacím portem, který je přesunut, aby se podíval na jiné oblasti paměti, než aby přesunul paměť do mapy pevné obrazovky.

Vzhledem k tomu, že čítač skenování paměti ANTIC nemůže automaticky zvyšovat hranici 4K, je limit vertikálního posouvání tímto jednoduchým způsobem až 4K pohybu. Celá obrazovka textu režimu 2 pomocí přibližně 1 kB může nepřetržitě posouvat výšku čtyř obrazovek, dokud nedosáhne hranice 4K. Podobně textový displej režimu 7 může posouvat výšku 16 celých obrazovek.

Tento triviální příklad má přirozeně omezenou užitečnost. Mnoho implementací posouvání posouvá pouze část obrazovky, zatímco ostatní části zůstávají pevné. Tento problém je vyřešen inherentními možnostmi seznamu ANTIC Display List . V této situaci by seznam zobrazení přidal pokyny režimu pomocí modifikátorů LMS na první řádek režimu částí obrazovky, které by se neměly pohybovat, což účinně uzamkne tyto části displeje, zatímco se aktualizuje adresa modifikátoru LMS pro rolovací sekci.

Další vylepšení tohoto konceptu využívá možnost modifikátoru LMS na každém řádku, který se posouvá. Svislé posouvání na tomto displeji vyžaduje aktualizaci jedné adresy modifikátoru LMS pro každý řádek Mode v oblasti posouvání. Když je displej spravován na této úrovni detailů, lze snadno obejít hranici RAM obrazovky ANTIC v rozlišení 4K. I v tomto nejhorším případě je vynaložené úsilí CPU malý zlomek zpracování potřebného k hromadnému přesunu dat obrazovky.

Je třeba si také uvědomit, že adresa modifikátoru dvou bajtů LMS nesmí být aktualizována, když ANTIC zpracovává LMS. Pokud ANTIC čte adresu LMS, zatímco je částečně aktualizována, ANTIC zobrazí nesprávnou část paměti pro daný řádek Mode. Když rolovací oblast displeje vyžaduje více aktualizací adres LMS, zvyšuje se možnost částečné aktualizace a zvyšuje se také možnost mít dva následující řádky zobrazení stejných dat. Programy to řeší několika způsoby - prováděním aktualizací během svislého prázdného místa, monitorováním ÚČTU před aktualizacemi nebo prováděním aktualizací v přerušeních seznamu zobrazení prováděných během sekcí zobrazení mimo rolovací oblast.

Jemné svislé posouvání

Jemné svislé posouvání umožňuje pohyb jedné skenovací čáry v oblasti posouvání pro režimy Text a Mapa, které jsou větší než jedna řádka skenování na výšku. Jemné svislé posouvání pro režimy Mapa, které mají pouze jednu skenovací čáru na výšku, logicky není praktické. Efekt svislého „jemného“ posouvání pro režimy mapy s jednou skenovací řádkou lze provádět pomocí jednodušší metody hrubého posouvání .

Jemné posouvání vyžaduje nastavení k definování oblasti posouvání. To se provádí nastavením modifikačního bitu Vertical Scroll (VS) v sekvenčních pokynech k zobrazení seznamu . První instrukce řádku režimu bez sady bitů VS se stane koncem posouvající se oblasti a použije se jako vyrovnávací čára pro napájení nových skenovacích řádků k posouvání nahoru do spodní části posouvající se oblasti.

Proces vertikálního jemného posouvání ANTIC funguje tak, že jednoduše nasměrujete ANTIC tak, aby přeskočil několik řádků skenování pro první řádek režimu rolovací oblasti. Následující řádky režimu v oblasti posouvání nejsou ovlivněny. Poslední řádek oblasti obsahuje spodní okraj posouvající se oblasti a zobrazuje počet řádků skenování, které byly odebrány z prvního řádku. Tento počet řádků skenování je řízen registrem VSCROL . Hodnota se pohybuje od 0 do výšky řádku skenovacího řádku ANTIC Mode - 1. Rozsah maximálních hodnot pokrývá jemné posouvání 16 řádků skenování od 0 do 15.

Když je dosaženo limitu jemného posouvání, posouvání pokračuje resetováním hodnoty VSCROL a provedením hrubého svislého posouvání oblasti posouvání.

Horizontální hrubé posouvání

Horizontální hrubé posouvání vyžaduje trochu více úsilí než vertikální posouvání. Očekává se, že horizontální posouvání bude představovat iluzi zobrazovacího portu pohybujícího se doleva a doprava po široké panoramatické scéně vytvořené z paměti obrazovky, přírůstek automatického skenování paměti ANTIC je v rozporu s touto myšlenkou, že řady dat obrazovky jsou širší než displej. Prezentace paměti na obrazovce jako dlouhé vodorovné čáry vyžaduje modifikátor LMS pro každou instrukci textového seznamu nebo režimu mapy v oblasti posouvání. Horizontálního kroku je dosaženo zvýšením nebo snížením všech adres LMS posouvající se oblasti.

Horizontální posouvání vyžaduje stejnou implementaci seznamu zobrazení jako nejhorší příklad popsaný pro vertikální hrubé posouvání . Takže tam, kde je implementováno horizontální rolování, je vertikální rolování podporováno také pouhou změnou hodnoty zvyšující nebo snižující adresy LMS. Další výhodou tohoto uspořádání je, že je snadné spravovat paměť obrazovky kolem limitu hranice paměti obrazovky ANTIC 4K.

Další diskuse a časová omezení při aktualizaci adres modifikátoru LMS najdete v části Vertikální hrubé posouvání .

Jemné horizontální posouvání

Jemné horizontální posouvání umožňuje jednobarevný hodinový pohyb oblasti posouvání pro režimy Text a Mapa. U všech běžných barevných interpretací je to podle barevných hodin, nikoli pixelů, i když jsou pixely větší (nebo menší) než barevné hodiny. ANTICKÉ režimy využívající alternativní barevné interpretace GTIA musí být posouvány celým pixelem GTIA (dva barevné hodiny). K zajištění správného posouvání pixelů GTIA by měly být použity pouze sudé hodnoty. Liché hodnoty HSCROL přesunou tok pixelů GTIA do jiného stavu, který bude interpretován jako různé barvy.

Jemné posouvání vyžaduje nastavení k definování oblasti horizontálního posouvání. Prvním krokem je začít se seznamem zobrazení pomocí modifikátoru instrukce LMS k určení počáteční adresy každého řádku režimu. To se provádí za účelem uspořádání paměti obrazovky jako dlouhých řad dat pro zobrazení. Dalším krokem je nastavení modifikačního bitu Horizontal Scroll (HS) ve všech řádkových řádcích režimu zobrazení seznamu pro rolovací oblast.

Tento počet barevných hodin k posunu je řízen registrem HSCROL . Rozsah maximálních hodnot HSCROL pokrývá jemné posouvání 16 barevných hodin od 0 do 15. Použité informace o barevných hodinách jsou ukládány do vyrovnávací paměti od začátku řádku režimu (ukazatel aktuálního skenování paměti ANTIC) pomocí dostatečného počtu bajtů paměti obrazovky k uspokojení 16 barevných hodin. Horizontální posouvání jednoduše nasměruje ANTIC, kolik barevných hodin může produkovat z 16 barevných hodin s vyrovnávací pamětí, počínaje posledními (nejvíce vpravo) barevnými hodinami vyrovnávací paměti. Nulová (0) není výstupem barevných hodin z vyrovnávací paměti. 1 jsou poslední (nejvíce vpravo) barevné hodiny vyrovnávací paměti. Barevné hodiny jsou vloženy na levý okraj obrazovky, což způsobí posunutí oblasti posouvání obrazovky doprava.

Když je dosaženo limitu jemného posouvání, pokračujte v rolování resetováním hodnoty HSCROL a provedením hrubého horizontálního posouvání oblasti posouvání. Rozsah 16 barevných hodin ANTIC umožňuje jemné posouvání více znaků textového režimu nebo více než jeden bajt pixelů v režimu mapy. Aktualizace adres LMS proto může přidat nebo odebrat více bajtů.

Alternativní metody posouvání

Zajímavé využití chování skenování paměti DMA společnosti ANTIC umožňuje strategii pro zdánlivě dlouhé vzdálenosti horizontálního posouvání, ale využívá zlomek skutečné požadované paměti. Jak je popsáno v horizontálním hrubém posouvání, přírůstek automatického skenování paměti ANTIC z řádku Mode do řádku Mode je v rozporu s myšlenkou, že řady dat na obrazovce jsou širší než displej. Používání paměti skutečně organizované jako dlouhá, horizontální, souvislá řada bajtů vyžaduje modifikátor LMS pro každou instrukci Text seznamu zobrazení nebo Režim mapy v oblasti posouvání.

Namísto použití modifikátoru LMS pro každý řádek používá tato metoda „normálnější“ seznam zobrazení, který vyžaduje pouze jeden modifikátor LMS na začátku oblasti posouvání. Přírůstek (+1) na adresu modifikátoru LMS způsobí, že se rolovací oblast bude pohybovat směrem doleva. „Nové“ informace, které se přesunuly na pravou stranu posouvající se oblasti, však byly dříve prvním bajtem na následujícím řádku (kromě posledního bajtu posledního řádku - tyto informace byly zcela mimo obrazovku).

Druhá polovina této strategie vyžaduje aktualizaci posledního bajtu/znaku každého řádku v oblasti posouvání, aby se zobrazily požadované nové informace. Pro typický rolovací displej by to znamenalo aktualizaci posledního bajtu o jeden nebo dva tucty řádků, což zabere při sestavování triviální množství času. Pokud tedy tento proces posouvání zahrnuje zobrazení textu na celé obrazovce v režimu 2 nebo režimu 4 (spíše nejhorší případ) a využívá celou schopnost 4K automatického adresování paměti obrazovky ANTIC, pak může horizontální posouvání pokračovat tímto způsobem asi 3000 kroků; což odpovídá 75 plným obrazovkám.

Není však vyžadováno ani využití paměti 4K. Poté, co byla všechna data z první celé obrazovky přesunuta z displeje, může aplikace posouvání znovu vytvořit první obrazovku tak, aby obsahovala známý přechodový bod, takže akce posouvání může přeskočit zpět na první adresu v bloku bez zjevného zadrhávání nebo zjevného přerušení rolování.

Jemné posouvání tohoto uspořádání vyžaduje trochu více plánování. Je -li v seznamu zobrazení povoleno jemné posouvání, ANTIC načte více informací, než pro zobrazení vyžaduje řádek Mode. Protože každý režimový řádek nyní využívá více paměti, nové informace posunuté do boku displeje nejsou bajtem/znakem, který byl zobrazen na začátku dalšího řádku. To však neovlivňuje proces posouvání a pouze mění hodnotu sčítání a odčítání použitou k vyhledání začátku a konce každého řádku zobrazení.

Přerušení seznamu zobrazení (DLI)

ANTIC obsahuje funkci pro spuštění přerušení obsluhovaného CPU v určitých svislých polohách na obrazovce. Toto je integrováno do seznamu zobrazení ANTIC, který nasměruje ANTIC ke spuštění přerušení během posledního řádku skenování aktuální instrukce režimu, a proto se nazývá „Přerušení seznamu zobrazení“. Jiné platformy tuto aktivitu nazývají „ Rastrová přerušení “ nebo „ Horizontální prázdná přerušení “. Obvyklým účelem je změnit hodnoty související se zobrazením na známém místě, aby byly přechody vizuálně přesné nebo se vyskytovaly tam, kde nebudou v rozporu s aktivitou zobrazení. Možnosti zahrnují, ale nejsou omezeny na změnu hodnot registru barev, horizontální polohy hráče/střely a hodnoty jemného posouvání. Vzhledem k tomu, že DLI je strojový kód 6502 spuštěný CPU, je možný jakýkoli druh zpracování za předpokladu, že je dostatečně krátký, aby nebyl v konfliktu s jinou aktivitou a nepřekročil následné přerušení seznamu zobrazení. Dobrým příkladem je dotazování ovladače myši, které musí být prováděno častěji než 1/60 sekundy.

Přehled

Správné spuštění přerušení vyžaduje následující podmínky:

  • Seznam zobrazení s instrukcí režimu, která obsahuje sadu bitů modifikátoru Přerušení seznamu zobrazení (DLI) . (Bit 7 - $ 80 hex /128 dec )
  • Registr NMIEN společnosti ANTIC má nastavenou bitovou kopii DLI. (Bit 7 - $ 80 hex /128 dec )
  • Vektor operačního systému pro přerušení seznamu zobrazení (VDSLST, $ 0200 hex /512 dec ) ukazuje na počáteční adresu rutiny přerušení.

Správné nastavení

Při aktualizaci kontrolních hodnot zobrazení je třeba dbát na to, aby je ANTIC aktuálně nepoužíval. Pokud ANTIC zpracovává seznam zobrazení obsahující instrukci s modifikátorem DLI, pak by při změně adresy VDSLST mohlo být odesláno přerušení, což by potenciálně mohlo způsobit zhroucení systému. Pokud seznam zobrazení používá více přerušení a přerušení jsou povolena v NMIEN poté, co ANTIC již prošel instrukcemi režimu s modifikátory DLI, pak přerušení seznamu zobrazení bude spuštěno mimo pořadí, což způsobí neočekávané výsledky.

Rozumné sled událostí instalovat seznam zobrazení pomocí zobrazení seznamu Přeruší:

  • Vypněte přerušení ANTIC Display List vymazáním bitu 7 (80 $) NMIEN nastavením registru na hodnotu 40 $, což umožní pokračovat ve svislém přerušení.
  • Vypněte ANTIC Display List DMA. Nejprve vypněte DMA v stínovém registru ( SDMCTL ) a poté, pokud je to žádoucí, lze totéž provést v hardwarovém registru ( DMACTL ). Bit 5 (hodnota $ 20) musí být vymazán, ale většina implementací by zvolila vynulování všech bitů a poté, až přijde čas restartovat obrazovku, obnovit správnou hodnotu všech bitů.
  • Nastavte ukazatel Display List Shadow address DLISTL/DLISTH na počáteční adresu nového seznamu zobrazení.
  • Nastavte adresu přerušení seznamu zobrazení VDSLST (0200 $ hex /512 dec ) na počáteční adresu rutiny přerušení.
  • Počkejte, až další vertikální prázdné přerušení (VBI) použije změny stínového registru. Možné metody:
    • Monitorujte RTCLOCK ($ 12/$ 13/$ 14 hex /18/19/20 dec ) pro přírůstek indikující VBI.
    • Monitorujte ÚČET ANTIC na změny, které naznačují, že byl spuštěn další snímek.
  • Zapněte přerušení ANTIC Display List nastavením bitu 7 (80 $) NMIEN . Obvyklá hodnota pro NMIEN je $ C0, která umožňuje DLI a VBI.
  • Zapněte ANTIC Display List DMA aktualizací registru Shadow ( SDMCTL ). Musí být nastaven bit 5 (hodnota 20 $), stejně jako bity pro šířku Playfieldu a v případě potřeby bity související s grafikou Player/Missile.

Program úzce integrovaný s cyklem zobrazení a vědomý polohy elektronového paprsku vzhledem k aktuálnímu zobrazení může obejít vypnutí seznamu zobrazení DMA. Stejně tak není nutné vypínat displej, pokud k nastavení dojde během svislého prázdného místa.

Úvahy o kódu

Obsah registru 6502 Accumulator, X a Y se nezachová před vstupem do rutiny DLI. Rutina DLI je zodpovědná za uložení stavu registrů, které budou použity během rutiny DLI, a pak poslední akcí je obnovení původních hodnot registrů před ukončením s instrukcí RTI. Rutiny obvykle posílají hodnoty registru do zásobníku 6502.

Pokud je použito více DLI, první přerušení aktualizuje VDSLST tak, aby ukazovalo na adresu dalšího přerušení, a tak dále pro další přerušení. Poslední rutina přerušení seznamu zobrazení na obrazovce ukazuje VDSLST zpět na adresu prvního přerušení seznamu zobrazení.

Pokud má hodnota změněná pomocí DLI stínový registr operačního systému a jsou povolena svislá prázdná přerušení, pak hodnota platná před (nad) polohou obrazovky přerušení seznamu zobrazení je hodnotou stínu a hodnotou za ( níže) poloha obrazovky je hodnota z DLI (a jakéhokoli jiného DLI, které ji později změní.) Pokud hodnota nemá stín operačního systému, měla by existovat počáteční rutina DLI (nebo VBI), která nastavuje počáteční hodnotu.

Pokud se při změně hodnoty DLI zobrazuje grafický objekt, výsledky mohou být nekonzistentní. Nejběžnějším příkladem je změna barvy pozadí. Vzhledem k tomu, že DLI začíná vykonávat, zatímco je elektronový paprsek ve viditelné části obrazovky, bude přechod z předchozí barvy pozadí na novou barvu napsanou DLI viditelný někde na aktuálním skenovacím řádku. (Přesné umístění se liší podle požadavků DMA na režim zobrazení a grafiku Player/Missile.) Chcete -li zajistit čistý přechod z řádku skenování na řádek skenování, kód by měl nejprve zapsat do WSYNC, což zastaví provádění DLI až do konce řádku skenování. a poté zapište do požadovaných registrů.

Zatímco obvyklou činností DLI je změnit několik hodnot orientovaných na zobrazení a poté se vrátit k hlavnímu kódu, není to podmínkou. Je bezpečné, aby DLI běželo několik nebo mnoho řádků skenování, pokud skončí před dalším DLI nebo přerušením vertikálního prázdného místa.

Příklady

Triviální příklad přerušení seznamu zobrazení, které mění barvu pozadí:

  DLI
    PHA       ; Save Accumulator on stack
    LDA #$9C  ; Load light blue (color $9, luminance $C)
    STA WSYNC ; Wait to sync to the end of the scanline  
    STA COLBK ; Set the background  
    PLA       ; Restore Accumulator from stack
    RTI       ; The end.

Grafika hráče/rakety

Většina grafických funkcí Player/Missile je v doméně čipu CTIA/GTIA . CTIA/GTIA kontroluje polohu, velikost, barvu, prioritu a detekci kolizí u grafických objektů Player/Missile, ale její skutečná implementace vykreslování tvaru nepřekračuje jeden bajtový vzor na objekt prezentovaný jednotně na všech řádcích skenování. (Vzory jsou nastaveny v registrech grafických vzorů CTIA/GTIA GRAF* .) CTIA/GTIA sama o sobě nakonec generuje objekty Player/Missile pouze jako vzory svislých pruhů na obrazovce.

Konstrukce ANTIC zahrnuje schopnost DMA, aby mohla číst grafická data ze seznamu zobrazení a Playfieldu. Tato možnost přímého přístupu do paměti se využívá ke čtení dat jménem CTIA/GTIA a aktualizaci registrů grafických vzorů GRAF* při generování každého řádku skenování displeje. Tímto způsobem ANTIC poskytuje objekty Player/Missile se vzory, které se liší podle výšky obrazovky, a tak vypadají jako tradiční „sprite“ grafika.

Bity 2 a 3 registru DMACTL ANTIC (zastíněné SDMCTL) řídí načítání dat Player/Missile ANTIC k aktualizaci registrů grafických vzorů CTIA/GTIA.

Hodnoty řídících bitů DMACTL Player/Missile DMA (bity [3: 2]):

  • 00 $ - Deaktivace přehrávače a raket DMA
  • 04 $ - Povolit Missile DMA
  • 08 $ - Povolit Player DMA
  • $ 0C - Povolit Player a Missile DMA

Missile DMA lze povolit bez přehrávače DMA. Je -li však povolen Player DMA, automaticky dochází k DMA Missile, aby bylo načasování DMA konzistentní, ale data nejsou doručována do registru GRAFM rakety .

Bit 4 (hodnota 10 $ hex /16 dec ) registru DMACTL řídí frekvenci získávání nových dat. ANTIC načítá data a aktualizuje CTIA/GTIA každý skenovací řádek. Nastavení rozlišení DMACTL ovlivňuje, jak často ANTIC zvyšuje svůj interní ukazatel DMA pro načítání nových dat. Jednořádková grafika přehrávače/střely zvyšuje adresu DMA na každém řádku skenování a rozlišení dvou řádků zvyšuje adresu DMA s každým sudým řádkem skenování. Bitové hodnoty DMACTL pro rozlišení Player/Missile:

  • 00 USD - rozlišení dvou řádků. Nová data načítá DMA na sudých řádcích skenování, ale aktualizace vzorových registrů CTIA/GTIA Player/Missile Graphics stále probíhá na každém řádku skenování. V důsledku toho je každý bajtový vzor Player/Missile vysoký o dvě řádky. Je -li povoleno rozlišení dvou řádků, lze použít registr CTIA /GTIA VDELAY ($ D01C hex /53276 dec ) k maskování aktualizací ANTIC na rovnoměrné skenovací řádky posunující bitový vzor jednotlivých hráčů a raket o jeden skenovací řádek.
  • 10 $ - rozlišení jednoho řádku. Na každém řádku skenování dojde k novému načtení DMA a aktualizaci registru hráče/rakety. Registr CTIA/GTIA VDELAY ($ D01C hex /53276 dec ) maskování aktualizací na sudých skenovacích řádcích snižuje rozlišení jednoho řádku přehrávače/rakety na dvojité řádky, přestože jsou data posunuta o jeden řádek skenování níže.

CTIA/GTIA musí být také konkrétně povoleno přijímat grafická data hráče/rakety prostřednictvím DMA, aby správně zobrazovala objekty na obrazovce. Další informace naleznete v registru GRACTL CTIA/GTIA .

Umístění paměti načtené ANTIC pro grafiku Player/Missile je řízeno registrem PMBASE . Tato hodnota PMBASE poskytuje úvodní stránku základní adresy pro grafiku Player/Missile. Když pracuje grafika P/M s dvojitým rozlišením, musí hodnota PMBASE začínat na hranici 1 kB. Když pracuje grafika P/M s jedním řádkem, musí hodnota PMBASE začínat na hranici 2 kB. Mapy paměti pro grafické režimy Player/Missile:

Rozlišení dvou řádků (1 bajt na 2 skenovací řádky, 128 bajtů každý objekt) relativně k PMBASE x 100 $ hex /256 dec :

NEPOUŽITÝ Střely 3/2/1/0 Hráč 0 Hráč 1 Hráč 2 Hráč 3
Začátek/horní část obrazovky
dec +0 +384 +512 +640 +768 +896
hex +00 $ +180 $ +200 $ +280 $ +300 $ +380 $
Konec/spodní část obrazovky
dec +383 +511 +639 +767 +895 +1023
hex +17 $ F +1 $ FF +27 $ +2 $ FF +37 $ +3 $ FF

Jednořádkové rozlišení (1 bajt na skenovací řádek, 256 bajtů každý objekt) relativně k PMBASE x 100 $ hex /256 dec :

NEPOUŽITÝ Střely 3/2/1/0 Hráč 0 Hráč 1 Hráč 2 Hráč 3
Začátek/horní část obrazovky
dec +0 +768 +1024 +1280 +1536 +1792
hex +00 $ +300 $ +400 $ +500 $ +600 $ +700 $
Konec/spodní část obrazovky
dec +767 +1023 +1279 +1535 +1791 +2047
hex +2 $ FF +3 $ FF +4 $ FF +5 $ FF +6 $ FF +7 $ FF

Střely sdílejí stejné bajty výše uvedených paměťových map, dva bity na raketu:

Střela Bity Hodnota/maska
0 ------ 11 03 $
1 ---- 11-- 0 $ C.
2 --11 ---- 30 $
3 11 ------ $ C0

ANTIC nepoužívá prvních a posledních 8 skenovacích řádků dat paměti hráče/rakety v mapě paměti. V rozlišení dvou řádků jsou ignorovány první a poslední čtyři bajty, v rozlišení jednoho řádku prvních a posledních osm bytů.

Vzhledem k tomu, že hráč/střely jsou překrytím nezávislým na grafice Playfield a jsou vykreslovány v oblasti skenování, musí být svislé souřadnice pro data hráče/rakety odsazeny, aby byly objekty zarovnány s Playfieldem. Ve výchozích grafických režimech operačního systému 192 skenů jsou svislé datové souřadnice hráče/střely posunuty od začátku přehrávače/střely v paměti, jak je znázorněno níže. Záznamy přeskenování ukazují první a poslední použitý posun dat hráče/rakety:

Hřiště P/M Dvouřádkový P/M Jednořádkový
(nahoře) Nevyužito +$ 00 hex /0 dec na +$ 03 hex /3 dec +$ 00 hex /0 dec na +07 $ hex /7 dec
Spusťte Overscan +04 $ hex /4 dec +$ 08 hex /8 dec
Grafický řádek 0 +10 $ hex /16 dec +20 $ hex /32 dec
Grafická řada 191 +6 $ hex hex /111 dec +$ DF hex /223 dec
Konec Overscan +7 $ $ hex /123 dec +$ F7 hex /247 dec
(dole) Nevyužito +$ 7C hex /124 dec na +$ 7F hex /127 dec +$ F8 hex /248 dec. Až +$ FF hex /255 dec

Omezení

Svislý rozsah celého displeje Playfield se pohybuje mezi 0 a 240 skenovacími řádky - to závisí na počtu řádků, které má ANTIC naprogramovat k zobrazení podle seznamu zobrazení . ANTIC začíná generovat skenovací řádky na TV skenovací linii 8 a pokračuje na řádek 247 pro celkem 240 skenovacích řádků.

Vodorovnou šířku displeje Playfield lze nastavit na 256, 320 nebo 384 pixelů, což odpovídá 128, 160 nebo 192 barevným hodinám. V nejširším režimu je ve skutečnosti viditelných pouze 352 pixelů (176 barevných hodin). Viz DMACTL .

Jemné horizontální posouvání posouvá oblast posouvání až o 16 barevných hodin. Viz HSCROL .

Režimy mapy GTIA musí být vodorovně posouvány v krocích o velikosti celého pixelu (2 barevné hodiny), namísto jednobarevných hodin. Viz HSCROL a diskuse, Horizontální jemné posouvání

Svislé jemné posouvání posouvá oblast posouvání o počet řádků skenování v jednom řádku režimu oblasti posouvání, a to až o maximálně 16 řádků skenování. Viz VSCROL .

Ačkoli je programový čítač programu ANTIC Display List 16bitový, během normálního (tj. Sekvenčního) provádění seznamu zobrazení se mění pouze spodních 10 bitů. To znamená, že seznam zobrazení vyžaduje instrukci JMP (Jump) k překročení hranice 1 kB. Nejde o vážné omezení, protože velikost jednoho seznamu zobrazení se obvykle pohybuje od 32 do 202 bajtů a prakticky nikdy nepřesahuje 720 bajtů. Protože může být umístěn kdekoli v paměti, je jen velmi obtížné najít dostatečně velké místo v paměti, které nepřekračuje hranici 1 kB.

Register skenování paměti, registr adresující data uložená v paměti obrazovky, je 16bitová, ale pouze 12 bitů se změní, když ANTIC postupně skenuje video paměť. To znamená, že seznam zobrazení vyžaduje instrukci řádku režimu včetně možnosti LMS (Načíst paměťové skenování), kde paměť obrazovky překračuje hranici 4K. Grafické režimy ANTIC E a F vyžadují pro zobrazení na celou obrazovku více než 7,5 kB paměti na obrazovce. Seznamy zobrazení pro tyto displeje vyžadují možnost LMS přidanou k instrukci režimu poblíž středu displeje, kde paměť obrazovky překračuje hranici 4K. Hranici 4K nelze překročit uprostřed řádku grafického režimu, ale pouze mezi koncem jednoho řádku režimu a začátkem dalšího řádku. Jinými slovy, paměť pro předchozí řádek Mode končí přesným posledním bajtem bloku 4K a další řádek Mode začíná přesně prvním bajtem dalšího bloku 4K.

Znakovou sadu lze umístit kdekoli v paměti (viz CHBASE ), ale v závislosti na ANTIC textovém režimu musí být počáteční adresa zarovnána na hranici 512 bajtů nebo 1 kB.

Mapa paměti Player/Missile se může objevit kdekoli v paměti (viz PMBASE ), ale v závislosti na rozlišení musí být počáteční adresa zarovnána na hranici 1K nebo 2K (viz také DMACTL ).

Chyby a hraniční podmínky

Určité kombinace hodnot v seznamu zobrazení mohou způsobit neočekávané výsledky. Některé činnosti ANTIC mají také kritické načasování. Změny registrů mimo řádná časová okna mohou mít opožděný účinek nebo neočekávané výsledky. Některé z těchto situací lze zneužít pro zajímavé efekty a jiné způsobují poškození displeje.

Zneužitelné chování

Grafika 9 ++

Jednou z metod použití vylepšených barevných režimů GTIA bez velkých požadavků na paměť režimu ANTIC F je nasměrovat ANTIC tak, aby opakoval každý řádek dat jednou nebo vícekrát pomocí instrukcí Mode mode with the LMS modifier to redisplay the same screen data on multiple scan řádky. Výsledkem je nižší svislé rozlišení, kde každý pixel má výšku 2 nebo více řádků skenování, ale má vyšší režii DMA, protože ANTIC potřebuje znovu načíst stejné bajty z paměti obrazovky. Spíše než pomocí opakovaných modifikátorů LMS lze využít zálibu vertikálního posouvání k vytvoření režimu čtyř řádků skenování, který zobrazuje pixely pomocí režimů interpretace barev hi-res nebo GTIA.

Svislé posouvání by obvykle nebylo považováno za užitečné v ANTICKÉM režimu F, který má výšku jedné skenovací řádky. Pokud je však pro instrukci Seznam zobrazení režimu F povoleno vertikální posouvání a registr VSCROL je nastaven na 13, bude čítač řádků ANTIC počítat od 13 do 0 (čtyři řádky skenování - 13, 14, 15, 0). Přitom ANTIC vydává stejný řádek grafiky pro každý řádek skenování z jeho vnitřní vyrovnávací paměti, aniž by znovu přečetl stejnou paměť obrazovky. Na konci oblasti svislého posouvání je třeba VSCROL resetovat na 3, aby ANTIC mohl počítat od 0 do 3 (čtyři řádky skenování). Konečným výsledkem je zobrazení režimu F, kde jsou řádky spíše čtyři skenovací řádky než jeden, ale s DMA režií pouze jednoho čtení dat z paměti obrazovky, ke kterému dochází na prvním skenovacím řádku.

Nevýborné chování

Režim 8/Režim 9 Korupce horizontálního posouvání

Režimy ANTIC Map 8 a 9 budou poškozeny, pokud budou bezprostředně následovat vodorovně posouvanou čáru jiného režimu pomocí normální nebo široké šířky hracího pole. K tomu dochází, pokud je řádek Mode 8 nebo 9 horizontálně posouván nebo ne, ale výsledky poškození jsou v každém případě jiné. Problém se objevuje u určitých hodnot HSCROL, které způsobují, že ANTIC produkuje pixely nesprávně a nesprávně zarovnává řádek Mode 8-9.

Při použití hřiště s úzkou šířkou chyba chybí.

  • Pokud režim 8 nebo 9 NEPOUŽÍVÁ horizontální posouvání a následuje:
    • Režim 2, 3, 4, 5, D, E nebo F a HSCROL je $ A, $ B, $ E nebo $ F: pak korupce pokračuje přes řádek režimu.
    • Režim 2, 3, 4, 5, D, E nebo F a HSCROL je $ C nebo $ D: poškození se pak vyřeší do dvou řádků skenování.
    • Režim 6, 7, A, B nebo C a HSCROL je $ E nebo $ F: poškození pokračuje režimovou linkou.
  • Pokud režim 8 nebo 9 používá horizontální posouvání a následuje:
    • Režim 2, 3, 4, 5, D, E nebo F: pak se poškození vyřeší samo do tří řádků skenování.
    • Režim 6, 7, A, B nebo C: pak se poškození vyřeší ve dvou řádcích skenování.

Protože hodnoty HSCROL způsobující problém jsou větší než 7, problém lze odvrátit, pokud režim 8 nebo 9 NEPOUŽÍVÁ horizontální posouvání omezením posunu HSCROL na 0 až 7 barevných hodin a aktualizací adresy LMS seznamu zobrazení na horizontálně hrubé posouvání v menším přírůstky. Tato strategie řeší všechny případy ve všech režimech textu a všech režimech mapy od A do F, které generují 8 nebo méně barevných hodin na bajt paměti obrazovky.

Hi-Res chyba posledního řádku

Seznam zobrazení by neměl být sestaven s instrukcí hi-res (režim F) v řádku skenování 247-posledním zobrazitelném řádku skenování. Pokud bity šířky pole DMACTL Playfield nejsou 00, ANTIC nebude správně generovat vertikální synchronizaci, což může způsobit zkreslení zobrazení. V každém případě je snadné se tomu vyhnout, protože se nejedná o praktické uspořádání seznamu zobrazení, protože toto umístí řádek Mode do oblasti přeskenování, kde to není běžně vidět.

Široké hřiště, horizontální jemné posouvání

Modifikátor seznamu horizontálního jemného posouvání způsobí, že ANTIC načte další paměť obrazovky odpovídající další větší šířce hřiště, která poskytuje data potřebná k posouvání na displej. Protože neexistuje šířka pole Playfield větší než Wide Playfield, ANTIC nemá žádná další data pro jemné posouvání. ANTIC představuje falešná data pro oblast vyprázdněnou posunutou obrazovkou - na levé straně displeje bude posunuta barva pozadí a na pravé straně se na konci rozsahu posouvání objeví několik barevných hodin náhodných dat. Tato data v pixelech nejsou obvykle patrná, protože k tomu dochází v oblasti skenování, kde nejsou běžně viditelná. Pokud se však tyto falešné pixely Playfield protnou pixely Player/Missile, bude nahlášena kolize. Řešením pro hráče/rakety, které se přesunuly do oblasti přeskenování, je resetovat jejich pozice na nulu, odstranit je z displeje a zabránit tak falešným kolizím.

Viz také

Reference

externí odkazy