Texas Instruments TMS9918 - Texas Instruments TMS9918
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).
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í:
- Rozšiřuje velikost tabulky barev.
- Rozdělí obrazovku vodorovně na třetiny.
- 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é
- Ve stejném roce byla představena 8bitová rodina Atari , řada domácích počítačů se srovnatelným grafickým hardwarem
- Motorola 6845 , řadič displeje široce používaný v 8bitových počítačích
- Motorola 6847