Atari

Otázky o Atárku

(aktualizováno 15.5.2007)

Doby nesmyslných hádek Ataristů se Spektristy a Commodoristy jsou, věřím, již dávno pryč. Dnes se bez problémů setkáváme na jedné společné 8bitové párty (Forever) a máme si o čem povídat. Svoji platformu většinou známe dokonale, ale o těch druhých víme jen něco málo. Proto jsem měl radost, když se na mě obrátil jeden z fandů značky ZX a položil mi pár zvídavých otázek (+některé jsem pro ozřejmění detailů doplnil sám).

Záložky na témata: DOS - zvuk - grafika

Jaký image formát Atari disket je nejběžnější a jak se mezi sebou liší? Myslím tím ATR, XFD a DCM.

ATR - nejběžnější, skvěle univerzální formát. Podporuje všechny možné formáty a různé velikosti sektorů, velké megaimage atd.
XFD - nejjednodušší - podporuje jen 2 standardní velikosti diskety: single (cca 90kb) a medium (cca 130kb). Je jednoduchý: obsah souboru jsou přímo jen sektory jeden za druhým. Nemá žádné hlavičky ani nic.
DCM - speciální komprimovany formát - nemám rád a nepoužívám. Není zdaleka tak podporován jako ATR a XFD.

Někdy vidívám na obrazovkách Atárek hlášku "BOOT ERROR". Atari BOOTuje?

Ano, po "studeném startu" Atárko automaticky BOOTuje z disku D1:. Pokud se to nezdaří, následuje přechod do ATARI BASICu, případně do SELF TESTu, byla-li BASIC ROM deaktivována (držením klávesy OPTION na začátku "studeného startu").

Co je to ten "studený start"?

Atárko rozeznává "studený" a "teplý" start. Studený, to je kompletní restart systému, který se provádí po zapnutí počítače a dojde při něm ke ztrátě všech dat v paměti. Teplý start oproti tomu nezpůsobí ztrátu dat v paměti - standardně se "teplý start" provádí po stisku RESET. To však lze programově změnit, takže po RESETu může následovat jak "teplý start" (skok na nastavenou adresu bez ztráty dat) tak "studený start" s kompletním rebootem systému.

Jak je to na Atárku s DOSy - existuje jeden hlavní DOS a pro něj se dělá?

DOS2.5 Na Atárku existuje hodně DOSů, ale jsou spolu více či méně kompatibilní (třeba aspoň pro čtení u disket se základní single velikostí) a těch "hlavních" je fakt jen pár. Základem je DOS2.5 od firmy Atari. No a pak jsou různé rozšířené DOSy co umí podadresáře a větší (v podstatě neomezené) kapacity atd. U DOSů je krom jiného podstatný údaj LOMEM, který označuje nejnižší možnou adresu, od které dokáží načíst program. Paměťový prostor pod touto adresou je obsazen právě DOSem, a když při načítání dojde k jeho přepsání, systém většinou zhavaruje. Proto se krom klasických DOSů používají bootloadery, které po nabootování přímo jen vypíší nabídku spustitelných programů a stlačením klávesy si uživatel vybere program pro spuštění. Tyto loadery jsou kratší a mají podstatně nižší LOMEM adresu. Pokud se chce programátor vyhnout problémům se zaváděním svého programu pod většinou DOSů, je dobré používat zaváděcí adresu nejníže cca $2000.

Který DOS je nejlepší a jak udělat BOOTtovací disketu?

Nejlepší je Ferda. ;-)
Standardní je DOS2.5. Bootovací disketa se udělá tak, že se např. do D1: dá disketa s DOSem2.5 a do D2: se dá prázdná disketa. Zvolí se I (format disk) pro 130kb disketu nebo P (format single) pro 90kb disketu, enter, zadá se D2:, enter, naformátovat Y (yes). A je naformátovaná D2:. Pak se zadá H (write dos files), enter, D2:, enter, a to zapíše systémové soubory DOSu2.5 na D2:. A je to. Disk v jednotce D2: je teď bootovací a když ho hodíš do D1: a dáš "studený start", tak se nabootuje DOS2.5.
Pak existují novější DOSy s více možnostmi, namátkou SPARTADOS, BEWEDOS a další, a také různé speciální zavaděče. Ale nemám v tom moc přehled, používám standardní DOS2.5.

Který program na skládání hudby je nejlepší?

Theta Music Composer Co se týče přímého skládání na Atárku, tak podle mého názoru je nejlepší Theta Music Composer. Umí dělat jak klasické 4kanálové hudby, tak stereo 4 vlevo + 4 vpravo. Svého času jsem ho též používal, když jsem odvykl dělat hudby přímo v Assembleru, jak jsem to dělal kdysi dávno před lety. ;-)

Další možností, kterou doporučuji prozkoumat, je můj cross-platform hudební program Raster Music Tracker (RMT) pro počítače PC s OS Win9x - najdete ho tady. Umožňuje při komponování využívat spousty vymožeností, které poskytuje větší počítač, přičemž výslednou skladbu lze následně použít na skutečném Atárku (buď jako program se samotnou hudbou, nebo díky publikovaným zdrojovým kódům přehrávací rutiny lze například přidat hudbu k vlastnímu programu).

Atari má 4 zvukové kanály. Proč některé editory dovolují použít pouze tři?

Dobrá otázka!
Atarko má 4 generátory, ale každý generátor má pouze 2 registry: frekvenční (8bitů) a šumovohlasitostní (4bity+4bity). Takže frekvenční rozsah je dost malý a pro šumový typ "basových zvuků" je příliš hrubý a některé basové tóny přesně neladí. Je však možné přes jeden společný řídící registr (adr. $D208) dělat různá přepnutí: např. spojit dva generátory na jeden 16bitový. Pak je rozsah frekvence v rozsahu 16bitů a dělení mnohem jemnější, takže i basové tóny jsou pak přesně laděné. Další možnosti je vzájemné filtrování jednoho kanálu druhým kanálem - na to se taky používají dva generátory. Některé editory proto mají jen 3 hlasy, kde jeden je 16bitový a dva 8bitové. Případně místo toho 16bitového je "filtrovaný" hlas (složený že dvou generátorů).
Zjednodušeně řečeno.

Kolik oktáv dovoluje POKEY zhruba užít?

V 8bitovém režimu pro čisté tóny cca 4 oktávy, pro basy (některé tóny nemusí však znít úplně přesně "čistě") cca 3 oktávy. V 16bitovém režimu je k dispozici plné zvukové spektrum od neslyšitelně vysokých zvuků po neslyšitelně hluboké zvuky (lupání).

Pro Atárko je typický jednak klasický 'obdélníkový' zvuk jako např. na ZX, ale taky takový ostrý kovový zvuk, který se používá hlavně pro basy. Je složité jej vygenerovat (resp. je to regulérní sound nebo se pro jeho použití musí něco speciálního udělat) ?

Sound Nic speciálního. Standardní 8bitové basové zvuky jsou úplně normální věc - existuje několik typu zkreslení zvuku, jeden z nich jsou právě takové jakoby ostře kovové, to je typ 12. Čisté tóny jsou typ 10 (stejně jako typ 14). "Syčící" zvuky jsou typ 8, atd. Pro experimentování se zvuky stačí v ATARI BASICu zadat povel:

SOUND Generátor,Frekvence,Typ,Hlasitost
kde G = 0 až 3, F = 0 až 255, T = sudé hodnoty 0 až 14, H = 0 až 15

Pro 16bitové tóny (ať už čisté, nebo nějak zkreslené) je potřeba nastavit příslušné bity v řídícím registru $D208, a pak zadávat pro frekvenci dolní a horní byte (to už jen přímo zápisem do příslušných POKEY registrů - viz. paměťový prostor $D200 až $D20F, z BASICu to povelem SOUND nejde). Ovládání hlasitosti tím není nijak omezeno, ba dokonce je možné použít nevyužitý hlasitostní registr toho druhého generátoru pro pulsní režim (4bitový přímý digitální výstup). Celkově je pak v tomto případě k dispozici:
1x 16bitový hlas (obvykle používán pro přesné basové tóny)
2x 8bitový hlas (většinou refrén a doprovod)
1x 4bitový samplovaný výstup (typicky využíván pro bubny)

Atárko bývalo vždycky pro Spectristy synonymem něčeho strašného. Myslím, že je to zejména kvůli své grafice, která nepoužívá moc vysoké rozlišení ve hrách a proto téměř vždycky hry, které byly jak pro Atari tak pro ZX, byly na ZX hezčí.

To je asi jen úhlem pohledu. Mně se zase vždycky víc líbily ty Atárkové verze. ;-)
Ale jinak je pravda, že málo Atárkových her používá nejjemnější mód 320x192 bodů, neboť ten je (bez použití vyspělejších kodérských technik ;-)) pouze monochromatický. Některé starší hry v tomto módu využívaly pro vícebarevný dojem artifacting - viz. zjednodušené vysvětlení od Jindroushe, cituji: "Na počítačích Atari pracujících v nekvalitní barevné normě NTSC se stává, že rychlé změny černobílého obrazu vedou ke zmatení TV, která takovýto obraz obarví. Toto se projevuje pouze na kompozitním signálu, na 'separated-video' (barvonosná/jasová složka zvlášť) to vypadá stejně, jako u nás na PALových TV."

Jaké hry pro Atari jsou podle tebe nejlepší (když už ne graficky, tak s nejlepší hratelností) ?

Tak. Grafika a hratelnost jsou dvě samostatné věci, ne vždy jdou ruku v ruce. 
Takže co se týče hratelnosti, můj jasný favorit je RiverRaid. Na první pohled je to obyčejná střílečka, ale i po letech si ji vždycky rád zahraju. Z dalších dobře hratelných bych zmínil například InternationalKarate, Karateka, BoulderDash, Zybex (dva hráči současně), AlleyCat, SuperCobra, DonkeyKong, Frogger, MontezumasRevenge a spousta dalších.
S nejlepší grafikou bych zmínil třeba Draconus, Amaurote (ta by se ti mohla líbit - je v 3D v nejjemnější grafice - ovšem poněkud pomalá), Deimos, Cavernia, InternationalKarate a Karateka.

RiverRaid
RiverRaid
InternationalKarate
InternationalKarate
Draconus
Draconus
Amaurote
Amaurote

Kolik grafických rozlišení vlastně Atari má a jak je to s barvami? Všiml jsem si, že je snaha zobrazit na screenu vždy pouze několik odstínů stejné barvy.

To záleží hlavně na programátorovi a na designerovi hry, jak moc si s tím umí vyhrát, a zda chtějí mít vzhled hry spíše laděný v odstínech jedné barvy, nebo různobarevný. Omezení daná hardwarem samozřejmě jsou (viz. dále), ale barev je k dispozici opravdu dost. Zde je namátkou pár ukázek:

Frogger2
Frogger2
právě teď 24 barev
AlleyCat
AlleyCat
právě teď 22 barev
AlternateReality
AlternateReality
právě teď 36 barev
GunPowderCharlie
GunpowderCharlie
právě teď 43 barev

Takže teorie:
Atari má 11 grafických a 5 textových módů, které lze kombinovat na obrazovce shora dolů libovolným způsobem, případně zařazovat tzv. prázdné řádky bez grafiky. Dále má 8 sprite objektů (4 "player" objekty 8x240 a 4 "missile" objekty 2x240 bodů). Barev má až 128 (16 barev, každá barva v 8 odstínech) v klasických režimech a až 256 (16 barev, každá 16 odstínů) v GTIA módech.

Textové módy se liší velikostí písma a počtem barvových registrů. Standardní je matice znaku 8x8 bodů a mód 40x24 znaků / 1 barvový registr, další jsou 20x24 znaků / 5 barvových registrů, 20x12 / 5 barvových registrů. Krom toho existují dva speciální textové módy se znaky v matici 4x8, přičemž každý jednotlivý bod znaku pak může mít barvu podle jednoho ze čtyř barvových  registrů (respektive podle jednoho z pěti, neboť jeden registr je volitený ze dvou). Celá znaková sada se skládá ze 128 volitelných znaků (zabírají v paměti celkem 1024bytů). V nejjemnějším textovém módu jsou kódy 128-255 inverzně zobrazované znaky 0-127, v textových módech 20x24 a 20x12 je k dispozici jen 64 znaků a nejvyšší dva bity kódu znaku určují barvový registr, ve speciálních textových módech nejvyšší bit kódu znaku určuje barvový registr pro jednu z barev.

GR.0
levý horní výřez
GRAPHICS 0
40x24 / 1 barvový reg.
GR.1
levý horní výřez
GRAPHICS 1
20x24 / 5 barvových reg.
GR.2
levý horní výřez
GRAPHICS 2
20x12 / 5 barvových reg.
GR.12
levý horní výřez
GRAPHICS 12
40x24 / 5 barvových reg.
(GR.13: 40x12 / 5 barv. reg.)
Znaková sada má znaky
v matici 4x8 bodů / 4 barvy.

Grafické módy jsou od nejjemnějšího 320x192 / 1 barvový registr až po velmi hrubý 40x24 / 4 barvové registry, dále pak GTIA módy 80x192 při 9 barvových registrech nebo při 16 pevných barvách nebo při 16 odstínech jednoho barvového registru. Nejpoužívanější grafický mód ve hrách je 160x192 / 4 barvové registry, v demech a pro "fotografické výjevy" se dost užívá GTIA mód 80x192 / 16 odstínů jednoho barvového registru.

GR.8
GRAPHICS 8
320x192 / 1 barvový reg.
GR.15
GRAPHICS 15
160x192 / 4 barvové reg.
GR.9
GRAPHICS 9
80x192 / 16 odstínů 
jednoho barvového registru
GR.11
GRAPHICS 11
80x192 / 16 barev
pevná paleta

Je důležité si uvědomit, že obsah všech barvových registrů lze během vykreslování obrazovky shora dolů měnit, a tak zobrazit na jedné obrazovce opravdu až všech 128 barev současně (případně 256 barev v GTIA módu), samozřejmě s omezeným počtem barev v jednom obrazovém řádku. Dále lze použít různé triky se sprite objekty a tím navýšit počet barev zobrazených v jednom řádku. Případně je možno načasovat změnu barvového registru tak, aby proběhla až během vykreslování obrazového řádku zleva doprava. Ale to už je dost drsná metoda, kterou používají jen opravdoví codeři ve speciálních případech. A "normální" uživatelé nad tím pak jen tiše žasnou... ;-)

Skvělou vymožeností Atárek je tzv. displaylist. To je speciální posloupnost kódů pro zobrazovací čip Antic, který podle toho vykresluje obrazovku shora dolů z jednotlivých grafických či textových módů, případně definuje další vlastnosti. Například základní textový mód je definován displaylistem (hex): 70 70 70 42 40 9C 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 41 20 9C, což znamená 3x 8 prázdných mikrořádků, dále 24x řádků textového módu 0 (první má navíc definován začátek videoram $9C40), a na závěr je ukončení vykreslování s ukazatelem opět na začátek displaylistu na adrese $9C20, který bude vykreslován zase v příštím snímku. Díky displaylistu lze tedy velmi snadno kombinovat grafické režimy, dále aktivovat jemný vertikální a/nebo horizontální scrolling obrazu, nastavovat ukazatele na videoRAM pro každý jednotlivý grafický řádek nebo nechávat vyvolat řádková displaylist přerušení.

Vynecháním prázdných řádků nahoře nad grafikou, přidáním dalších řádků dolů a přepnutím zobrazování do "širokého módu" lze obraz roztáhnout od okraje k okraji do všech směrů až na celkových 384x240 bodů v nejjemnějším módu (část grafiky pak ovšem bude přesahovat až mimo viditelnou plochu TV obrazovky - na šířku je reálně viditelných jen cca 336 bodů).

320 x 192
320 x 192
standardní šířka obrazu
256 x 192
256 x 192
zúžený obraz
384 x 192
384 x 192
rozšířený obraz
(viditelná šířka cca 336)
384 x 240
384 x 240
rozšíření do všech stran
(viditelná šířka cca 336)

PMG (Player/Missile Graphics) objekty, zvané též "sprites". Jedná se o 4 hráče a 4 střely. PMG objekty mají pixely šířky 2, 4 nebo 8 bodů. Šířka objektů hráč je 8 bodů, výška až přes celý obraz (viditelných 240 bodů). Objekty střela mají šířku 2 body, výška opět až přes celý obraz. Každá dvojice hráč a střela mají jeden barvový registr (paleta 128 barev), případně lze přepnout do režimu kdy mají všechny 4 střely stejnou barvu definovanou jedním barvovým registrem. Další možností je aktivovat skládání barev překrývajících se objektů 1 a 2 a/nebo 3 a 4, kdy je barva dána výsledkem funkce OR mezi obsahem jejich barvových registrů. Nastavit lze rovněž několik způsobů priority zobrazení "přední/zadní". Pozice X je řízena u každého objektu jedním polohovým registrem, pozici Y hardwareově řídit nelze - to se provádí programově přesouváním dat v PMG videoram. Dále je k dispozici hardwareová detekce kolizí PMG objektů mezi sebou a také s "normální" grafikou. A podobně jako bylo řečeno dříve o barvových registrech pro normální grafiku, tak i obsahy barvových, polohových, šířkových i prioritního registru pro PMG lze též měnit během vykreslování obrazu shora dolů a tím multiplexovat počet, barvy a způsob vykreslování objektů.

PMG objekty
PMG objekty - 4 hráči a 4 střely.
Hráč 3 je zde nastaven na dvojnásobnou šířku,
hráč 4 na čtyřnásobnou šířku.
PMG objekty
PMG objekty - režim skládání barev.
Překrývající se body hráče 1 a 2 mají třetí barvu
- z hnědé a růžové vzniká modrofialová.
Podobně u hráčů 3 a 4 vzniká z modré a zelené žlutá.
Navíc aktivován mód střel jedné společné barvy.

Na ilustraci toho, co se dá při "troše" snahy na Atárku zobrazit (bez použití interlaced principů!), přikládám několik screenshotů z vlastní tvorby:

magazín Flop č.30
256 barev na jedné obrazovce
(nejvíc 20 různých v jednom řádku)
magazín Flop č.43
18 barev na jedné obrazovce
(nejvíc 9 různých v jednom řádku)
Motor
mód 160x192 bodů, 49 barev celkem
(nejvíc 8 různých v jednom řádku)
SFUI6502
mód 320x192 bodů, 14 barev celkem
(nejvíc 9 různých v  jednom řádku)

Případné odpovědi na Vaše další zajímavé dotazy sem můžu přidávat...


Vyrobil Radek Štěrba, © RASTER