Texas Instruments TMS9918 - Texas Instruments TMS9918

VDP TMS9918A
VDP TMS9918A
VDP TMS9928A

TMS9918 je video Řadič zobrazení (DC), vyráběného firmou Texas Instruments a zaveden v roce 1979. TMS9918 a jeho variant byly použity v ColecoVision , CreatiVision , Memotech MTX , MSX , SG-1000 / SC-3000 , Spectravideo , SORD M5 , Tatung Einstein , Texas Instruments TI-99/4 , Casio PV-2000 a Tomy Tutor .

TMS9918 generuje jak znakovou grafiku založenou na mřížce (slouží k zobrazení textu nebo obrázků na pozadí), tak skřítky používané k pohybu objektů v popředí.

Klíčové vlastnosti tohoto čipu jsou, jak zdůraznil na prezentaci Karl Guttag (jeden z designérů) z roku 1980:

  • 256 x 192 plnobarevných pixelů na obrazovku
  • 15 různých barev a/nebo odstínů
  • Neprokládaný barevný kompozitní video výstup
  • Přímé zapojení do dynamických RAMS typu RAS/CAS
  • Automatické obnovení dynamických RAMS
  • Obecné rozhraní CPU s mapovaným typem 8 bitové paměti
  • CPU přistupuje k RAM prostřednictvím VDP (není potřeba DMA)
  • 32 dynamických znaků na obrazovku
  • Třicet dva vzorů 8x8 na řádek, 24 řádků na obrazovku
  • Textový režim se čtyřiceti vzory 6X8 na řádek
  • Vícebarevný režim s 64 x 48 mapovatelnými barevnými čtverečky paměti
  • Externí video vstup a ovládání
  • Jedno napájení +5 voltů
  • Standardní technologie N-Channel křemíkových bran

Produktová řada

Všechny integrované obvody v této rodině jsou obvykle označovány jménem TMS9918, někdy s postfixem 'A'. Písmeno „A“ označuje druhou verzi čipu, která přidala nové funkce, nejvýrazněji přidání režimu bitmapy (obrázek II).

Souhrn produktové řady Texas Instruments TMS9918
Varianta čipu Video výstup Vstup videa Frekvence videa Podpora režimu 2
9918 Kompozitní Kompozitní 60 Hz Ne
9918A / 9118 Kompozitní Kompozitní 60 Hz Ano
9928A / 9128 Rozdíl jasu a barev (Žádný) 60 Hz Ano
9929A ​​/ 9129 Rozdíl jasu a barev (Žádný) 50 Hz Ano

TMS9918

Verze bez A byla použita pouze v TI-99/4; TI-99/4A a ostatní počítače měly verzi A VDC.

TMS9918A a TMS9928A

TMS9918A a TMS9928A vydávají video signál 60 Hz, zatímco TMS9929A ​​50 Hz. Rozdíl mezi '1' a '2' v 'TMS9918A' a 'TMS9928A' je ten, že verze '1' produkuje kompozitní video NTSC , zatímco verze '2' (včetně TMS9929A) vydává analogový YPbPr (Y jas a RY a BY signály rozdílu barev). Jeho potřeba převládala ve světě 50 Hz, včetně Evropy, kvůli různým standardům video signálu PAL a SECAM . Bylo nákladově efektivnější produkovat Y, RY a BY a zakódovat je do PAL nebo SECAM v RF modulátoru , než se snažit mít jinou konzolu pro každý jiný barevný standard. Verze „1“ má také externí kompozitní video vstup, což z ní činí praktický čip pro použití ve „titulcích“ videa, které by mohly překrývat text nebo grafiku na videu, zatímco verze „2“ nikoli.

TMS9118, TMS9128 a TMS9129

Pozdější varianta čipů řady TMS9918, TMS9118, TMS9128 a TMS9129, byla vydána v polovině 80. let, ale nikdy nebyly příliš populární. Funkce jednoho pinu se změní a mapování videopaměti umožňuje použít dva 16Kx4-bitové čipy namísto osmi 16Kx1-bitových čipů, které TMS99xx potřebuje. Jinak jsou čipy zcela identické s TMS9918A, TMS9928A a TMS9929A.

Externí rozhraní

Video RAM

VDP má 16K × 8 bitů externí video paměti. Tato paměť je mimo adresní prostor CPU . Mít oddělený adresní prostor znamená, že CPU musí udělat více práce pro zápis nebo čtení této paměti, ale také to znamená, že VDC nezpomalí CPU, když periodicky čte tuto paměť pro generování zobrazení. Navíc ponechává více místa pro adresu k dispozici CPU pro další paměť a hardware mapovaný v paměti.

V závislosti na použitém režimu obrazovky nemusí být ke generování zobrazení zapotřebí veškerá video paměť. V těchto případech může CPU použít dodatečnou video paměť pro jiné účely. Jedno použití je například jako stírací podložka pro dekomprimaci grafických nebo zvukových dat uložených v ROM kazety do. Dalším populárním použitím je vytvoření druhé kopie některých nebo všech zobrazovaných dat, aby se eliminovalo blikání a trhání, což je technika známá jako dvojité ukládání do vyrovnávací paměti .

procesor

CPU komunikuje s VDP prostřednictvím 8bitové sběrnice. Pin ovládaný CPU odděluje tuto sběrnici na dva „porty“, řídicí port a datový port. Pro zápis nebo čtení bajtu videopaměti musí CPU nejprve zapsat dva bajty na řídicí port VDP do interního registru adres VDC. Dále CPU provede skutečný zápis nebo čtení na datovém portu VDP. Při zápisu nebo čtení datového bajtu TMS9918 automaticky zvyšuje interní registr adres. Tato funkce automatického přírůstku zrychluje zápisy a čtení bloků dat. Řídicí port slouží také pro přístup k různým interním registrům.

Grafika

TMS9918 má dva samostatné a odlišné grafické typy, postavy a skřítky.

Znaky

K vytváření textu nebo obrázků na pozadí se obvykle používají znaky. Objevují se za skřítky.

Režimy obrazovky

TMS9918 má řadu režimů obrazovky, které ovládají vlastnosti postav.

Zdokumentováno

V TMS9918A jsou k dispozici čtyři zdokumentované režimy obrazovky (jak již bylo zmíněno, TMS9918 postrádá režim Graphic 2):

  • Režim 0 (text): 240 × 192 pixelů celkem, jako 40 × 24 znaků, vytaženo z 1 znakové sady 256 znaků 6 × 8 pixelů. Celá sada znaků má dvoubarevné omezení. Tento režim nepodporuje sprity.
  • Režim 1 (obrázek 1): 256 × 192 pixelů celkem, jako 32 × 24 znaků, vytaženo z 1 znakové sady 256 znaků 8 × 8 pixelů. Každá skupina 8 znaků ve znakové sadě má 2barevné omezení. Například znaky „0“ až „7“ budou mít všechny stejné barevné atributy.
  • Režim 2 (obrázek 2): 256 × 192 pixelů celkem, jako 32 × 24 znaků, vytaženo ze 3 znakových sad 256 znaků 8 × 8 pixelů. Každý řádek znaku v sadě znaků o šířce 8 pixelů má omezení 2 barev. Tento režim poskytuje jedinečný znak pro každé umístění postavy na obrazovce, což umožňuje zobrazení bitmapových obrázků.
  • Režim 3 (vícebarevný): celkem 256 × 192 pixelů, 64 × 48 měnitelných virtuálních pixelů, jako 32 × 24 znaků „semi-graphics“. Tyto semi-grafiky jsou definovány ve speciální znakové sadě 256 znaků definovaných 2 × 2 „tlustými pixely“. V každém tlustém pixelu jsou 4 × 4 pixely, ale pixely v tlustém pixelu nelze individuálně definovat, ačkoli každý tlustý pixel může mít svou vlastní barvu, odtud název tohoto režimu (vícebarevný). Tento režim je velmi hranatý a používá se jen zřídka.
Nezdokumentované

Společnost Texas Instruments původně dokumentovala pouze čtyři výše uvedené režimy. Bit, který umožňuje režim 2, je však zajímavější, než byl původně povolen. Nejlépe je popsán jako modifikační bit pro ostatní režimy. Jeho povolením lze dosáhnout tří věcí:

  1. Rozšiřuje velikost tabulky barev.
  2. Rozdělí obrazovku vodorovně na třetiny.
  3. Změní dva adresní bity vzorových a barevných tabulek na bitové masky, které určují, zda má každá třetina obrazovky vlastní tabulku vzorů a barev nebo ne.

S ohledem na to jsou možné tři další režimy. Všimněte si toho, že ačkoli originální čipy TMS9918A podporují tyto režimy, klony a emulátory nemusí.

  • Režim 0 (text) + Režim 2 (obrázek 2) : Známý jako režim bitmapového textu. Tento režim umožňuje dvoubarevné bitmapové obrázky bez tabulky barev. Šetří to paměť na úkor mírně sníženého horizontálního rozlišení (textový režim má horizontální rozlišení 240 pixelů namísto 256 pixelů, jako to dělají grafické režimy).
  • Režim 1 (obrázek 1) + Režim 2 (obrázek 2): Známý jako režim poloviční bitmapy. Společnost Texas Instruments ve skutečnosti dokumentovala tento „nezdokumentovaný“ režim obrazovky ve své příručce s názvem „Průvodce programátorů video procesorů SPPU004“. V sekci 8.4.2, Hraní her s adresováním VRAM, pojednávají o tom, jak tento režim kombinuje úsporu paměti v režimu 1 s barevnými detaily režimu 2. Jak však pokračují, tento režim omezuje počet spritů, které lze zobrazeno na 8 místo na 32. Proto je termín „nezdokumentovaný“ používaný k popisu tohoto režimu nesprávné pojmenování. Protože však tato příručka nebyla široce známá, je tento režim obecně považován za jeden z nezdokumentovaných režimů. Obecně je jediným důvodem použití tohoto režimu v režimu 2 snížení spotřeby paměti.
  • Režim 3 (vícebarevný) + Režim 2 (obrázek 2) : Známý jako bitmapový vícebarevný režim. Tento režim je spíše novinkou, protože nenabízí nic jiného, ​​než co již standardní režim Multicolor dokáže.

Podrobnosti o režimu obrazovky 2

Technicky je režim 2 znakový režim s barevnou sadou znaků. Obrazovka je horizontálně rozdělena do tří oblastí 256 × 64 pixelů, z nichž každá dostane svou vlastní znakovou sadu. Postupným tiskem znaků 0 až 255 ve všech třech oblastech může program simulovat grafický režim, kde lze každý pixel nastavit jednotlivě. Výsledný framebuffer je však nelineární.

Program může také použít tři identické znakové sady a poté s obrazovkou pracovat jako s textovým režimem s barevnou znakovou sadou. Vzory na pozadí a skřítci se pak skládají z barevných postav. To se běžně používalo ve hrách, protože pro vyplnění a posouvání celé obrazovky by bylo nutné přesunout pouze 32x24 bajtů. Grafiku lze nakreslit tak, že ohraničení 8 × 8 pixelů není příliš zřejmé, což je umění, kde byla Konami obzvláště známá svou dokonalostí.

Úkolem použití režimu TMS9918 v režimu 2 bylo, aby každá oblast pixelu 8 × 1 mohla mít pouze dvě barvy, popředí a pozadí. Mohly být volně vybrány z palety 16 barev, ale pro každou oblast 8x1 mohly existovat pouze dvě barvy. Při manipulaci s obrazovkou BASIC pomocí příkazu LINE by člověk snadno mohl překročit maximálně 2 barvy na plochu 8 × 1 a skončit „ rozlitím barev “.

Rolování

TMS9918 nemá žádné posuvné registry, takže rolování musí provádět software. Kromě toho lze rolování provádět pouze na hranicích znaků, nikoli pixel po pixelu.

Skřítci

Skřítci se obvykle používají k vytváření pohybujících se objektů v popředí. Objevují se před postavami (dlaždicemi).

Režimy 1, 2 a 3 mohou vykreslovat skřítky. Na obrazovce může být až 32 jednobarevných spritek s rozlišením 8 × 8 nebo 16 × 16 pixelů, každý sprite se svou vlastní, jednobarevnou. Iluzi vícebarevných skřítků lze vytvořit stohováním více skřítků na sebe.

Na jednom skeneru nemohou být více než 4 skřítci; všechny další horizontální pixely spritů budou vynechány. Nejprve se losují skřítci s vyšší prioritou. VDP hlásí ve stavovém registru číslo prvního upuštěného sprite. CPU může toto omezení obejít otáčením priorit spriteů, takže na každém snímku je nakreslena jiná sada sprites; místo toho, aby skřítci úplně zmizeli, budou blikat. Tato technika je známá jako sprite multiplexování.

Automatický pohyb sprite není zpracován VDP. Místo toho v praxi CPU zachytí „vertikální přerušení“ VDP - standardní výstup VDP, který se automaticky spustí jednou za 50. nebo 60. sekundu (v závislosti na variantě čipu), na začátku VBI ( vertikální interval zatemnění ). CPU pak skočí do rutiny manipulace se skřítky v softwaru, což zase říká VDP, kam přemístit skřítky.

Když se srazí dva neprůhledné pixely v jakémkoli páru spritů, je nastaven příznak kolize sprite. To je užitečné pro spouštění pokročilejších rutin detekce kolize uvnitř softwaru, které pak mohou určit přesné místo kolize a jednat podle ní, protože VDP sám není schopen hlásit, které dva skřítky se srazily.

Barvy

Čipy rodiny TMS9918 používaly kompozitní video paletu. Barvy byly vytvořeny na základě kombinace jasový a chrominanční hodnot pro TMS9918A a Y , RY a BY hodnoty jsou pro TMS9928A / 9929A.

Hodnoty datového listu

TMS9918 má pevnou paletu 16 barev, která se skládá z 15 zobrazených barev a „průhledné“ barvy.

  • Když je pro skřítky použito „transparentní“, zobrazí znaky na pozadí.
  • Pokud je pro znaky použito „průhledné“, zobrazí se externí video signál.

Podle tabulky 2.3 „Přiřazení barev“ na výstupních úrovních datového listu jsou následující:

Barevný kód Barva Svítivost Chrominance Y RY PODLE
0 průhledný - - - - -
1 Černá 0% - 0% 47% 47%
2 středně zelená 53% 53% 53% 7% 20%
3 světle zelená 67% 40% 67% 17% 27%
4 tmavě modrá 40% 60% 40% 40% 100%
5 světle modrá 53% 53% 53% 43% 93%
6 tmavě červená 47% 47% 47% 83% 30%
7 tyrkysová 67% 60% 73% 0% 70%
8 středně červená 53% 60% 53% 93% 27%
9 Světle červená 67% 60% 67% 93% 27%
10 tmavě žlutá 73% 47% 73% 57% 7%
11 světle žlutá 80% 33% 80% 57% 17%
12 tmavozelený 46% 47% 47% 13% 23%
13 purpurová 53% 40% 53% 73% 67%
14 šedá 80% - 80% 47% 47%
15 bílý 100% - 100% 47% 47%

Poznámky: Barvy byly převedeny z hodnot Y, RY a BY na sRGB pomocí vzorce zde . Hodnoty jasu a chrominance jsou pro TMS9918A. Hodnoty Y, RY a BY jsou pro TMS9928A/9929A. Korekce gama a kolorimetrie SMPTE C nebyly vzaty v úvahu - viz další část.

CRT displej

Abyste mohli převést Y, RY a BY na RGB, musíte zvážit, jak Y vzniklo, konkrétně:

 Y = R * 0.30 + G * 0.59 + B * 0.11

Proto musíte použít následující vzorce:

 R = R-Y + Y
 B = B-Y + Y
 G = (Y - 0.30 * R - 0.11 * B) / 0.59

Nejprve však musíte věnovat pozornost skutečnosti, že u všech barev, které nemají žádnou chrominanci - tedy černé, šedé a bílé - RY a BY nejsou 0%, ale všechny mají offset 47%. Nejprve tedy musíte tento offset odečíst od všech hodnot RY a BY. Vzhledem k tomu, že v praxi tento jeden krok nebude nikdy proveden sám, není problém, že některé výsledky budou negativní:

Barevný kód Barva Y RY PODLE
1 Černá 0% 0% 0%
2 středně zelená 53% -40% -27%
3 světle zelená 67% -30% -20%
4 tmavě modrá 40% -7% 53%
5 světle modrá 53% -4% 46%
6 tmavě červená 47% 36% -17%
7 tyrkysová 73% -47% 23%
8 středně červená 53% 46% -20%
9 Světle červená 67% 46% -20%
10 tmavě žlutá 73% 10% -40%
11 světle žlutá 80% 10% -30%
12 tmavozelený 47% -34% -24%
13 purpurová 53% 26% 20%
14 šedá 80% 0% 0%
15 bílý 100% 0% 0%

Nyní můžete provést převod na RGB. Všechny výsledky musí být v rozsahu od 0% do 100%:

Barevný kód Barva R. G B
1 Černá 0% 0,0000% 0%
2 středně zelená 13% 78,3729% 26%
3 světle zelená 37% 85,9831% 47%
4 tmavě modrá 33% 33,6780% 93%
5 světle modrá 49% 46,4576% 99%
6 tmavě červená 83% 31,8644% 30%
7 tyrkysová 26% 92,6102% 96%
8 středně červená 99% 33,3390% 33%
9 Světle červená 113% 53,9492% 47%
10 tmavě žlutá 83% 75,3729% 33%
11 světle žlutá 90% 80,5085% 50%
12 tmavozelený 13% 68,7627% 23%
13 purpurová 79% 36,0508% 73%
14 šedá 80% 80,0000% 80%
15 bílý 100% 100,0000% 100%

Můžete dojít k závěru, že chybná hodnota 113% pro R barvy „světle červené“ vyplývá z překlepu v datovém listu a tam RY nesmí být větší než 80%. Pokud ale měříte výstupní signály čipu osciloskopem , zjistíte, že všechny hodnoty v tabulce jsou správné. Chyba je tedy uvnitř čipu a pohání červený signál do sytosti. Z tohoto důvodu bude tato hodnota opravena na 100%.

Kromě toho musíte vzít v úvahu, že do té doby byly pro počítačové monitory i pro televize k dispozici pouze katodové trubice a že tyto CRT měly gama . Čipy řady TMS9918 byly navrženy pro práci s televizory a jejich CRT měly Gamma 1,6 (poznámka: CRT monitorů Macintosh mělo 1,8 a CRT monitorů PC mělo 2,2). Ploché obrazovky nemají Gamma . Z tohoto důvodu zde barvy TMS9918 vypadají poněkud bledě, jak můžete vidět v první tabulce výše. Níže uvedená tabulka používá hodnoty opravené gama, které jsou (psány hexadecimálně, protože to vyžaduje kódování Wikipedie):

Barevný kód Barva R. G B
1 Černá 00 00 00
2 středně zelená 0A INZERÁT 1E
3 světle zelená 34 C8 4C
4 tmavě modrá 2B 2D E3
5 světle modrá 51 4B FB
6 tmavě červená BD 29 25
7 tyrkysová 1E E2 EF
8 středně červená FB 2C 2B
9 Světle červená FF 5F 4C
10 tmavě žlutá BD A2 2B
11 světle žlutá D7 B4 54
12 tmavozelený 0A 8C 18
13 purpurová AF 32 9A
14 šedá B2 B2 B2
15 bílý FF FF FF

Poznámka: Použité kroky jsou: Zaokrouhlete všechny hodnoty na dvě desetinná místa, poté zvýšíte na 1,6 pro korekci gama a nakonec transformujete rozsah hodnot od 0 ... 100 do 0 ... 255.

Specifikace

  • Video RAM: 16 kB
  • Textové režimy: 40 × 24 a 32 × 24
  • Rozlišení: 256 × 192
  • Barvy: 15 barev + transparentní
  • Skřítci: 32, 1 barva, maximálně 4 na vodorovnou čáru

Dědictví

TMS9918 byl prvním spotřebitelským zařízením, které používalo DRAM . Protože dostatek DRAM pro uložení kompletní vyrovnávací paměti rámců byl v té době příliš drahý, TMS9918 používá skřítky .

Po Texas Instruments TMS9918A vystřídal model Yamaha V9938 , který přidal další bitmapové režimy, barevnější skřítky , svislý posouvací registr na celou obrazovku, svislé a vodorovné posunuté registry, hardwarový blitter a přizpůsobitelnou paletu . V9938 byl navržen pro standard MSX2 počítačů a později použit při upgradu třetí strany na TI-99/4A- Geneve 9640 „počítač na kartě“. V9938, podle pořadí, byl následován V9958 , který přidal několik dalších vysoce barevných režimů a horizontální dvoustránkový posuvný registr. Tyto čipy byly použity v systémech MSX2+/turboR a také na upgradovací kartě „TIM“ pro TI-99/4A, ačkoli se říká, že V9958 byl také použit v generaci arkád Photo Play. Yamaha také vyrobila V9990 , který je některými považován za pokračování V9958, ale není zpětně kompatibilní.

Toshiba vytvořila klon nazvaný T6950 a nepodporuje funkci maskování nezdokumentovaných vzorů / barevných tabulek v režimu Graphics 2. Později Toshiba uvolnila T7937A MSX-Engine s vestavěným VDP a opravila maskovací funkce. Oba VDP od společnosti Toshiba mají mírně odlišnou paletu než Texas VDP s živějšími barvami.

TMS9918 byl základem pro VDP čipy v Sega Master System , Game Gear a Mega Drive . Používali další režimy zobrazení a registry a přidali možnosti posouvání hardwaru a další pokročilé funkce.

Viz také

Reference

externí odkazy