Texas Instruments TMS9918

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Texas Instruments TMS9918A

TMS9918 , numit și Video Display Processor (VDP) este un cip video fabricat de Texas Instruments și comercializat din 1979 . Cu variantele sale, a fost folosit în sisteme precum ColecoVision , CreatiVision , Memotech MTX , calculatoare MSX1 , Sega SG-1000 , computere Spectravideo , Sord M5 , Tatung Einstein , TI-99/4 și clonele sale. Sega Master System , Sega Game Gear și Mega Drive au folosit versiuni modificate ale TMS9918 care conțin registre suplimentare și noi moduri grafice (VDP-ul Mega Drive nu acceptă modurile grafice ale TMS9918).

TMS9918 a fost înlocuit de Yamaha V9938 , care suporta noi moduri grafice, sprite cu mai multe culori, un registru pentru derulare verticală și o paletă personalizabilă.

Versiuni

Un TMS9928A pe o placă de bază MSX1

Cipul a fost fabricat în mai multe variante numite TMS9918A , TMS9928A și TMS9929A , unde litera „A” indică o a doua versiune a cipului cu caracteristici noi adăugate, în principal un nou mod grafic bitmap (Graficul 2). Prima versiune, cea fără „A”, a fost utilizată doar în computerul TI-99/4; succesorul său, TI-99 / 4A, și celelalte computere aveau versiunea TMS9918A. [1] TMS9918 a generat un semnal video compozit în timp ce TMS9928A a generat un semnal video YPbPr ; ambele au generat o imagine cu 525 de linii de scanare și un semnal cu o frecvență de 60 Hz , compatibil cu standardul NTSC . TMS9929A ​​a generat în schimb un semnal video YPbPr cu 625 de linii de scanare, potrivit pentru țările care au folosit standardul PAL / SÉCAM . Din punct de vedere al costurilor, a fost mai rentabil să generăm un semnal video YPbPr și apoi să-l convertim în PAL / SECAM în modulatorul RF decât să proiectăm și să construim un sistem nou pentru fiecare standard video. TMS9918A (și TMS9918) aveau, comparativ cu celelalte 2 cipuri, și o intrare video compozită care se putea amesteca cu imaginea bitmap generată.

Toate cipurile din această familie sunt denumite în general TMS9918, uneori cu adăugarea „A”.

La mijlocul anilor '80 au fost lansate noi versiuni ale TMS9918 numite TMS9118 , TMS9128 și TMS9129 : cipurile difereau de modelele anterioare pentru funcția unui pin modificat și pentru o mapare diferită a memoriei video.

Familia Texas Instruments TMS9918
Versiune Iesire video Intrare video Frecvența semnalului Scanați liniile Mod grafic II
9918 Compozit Compozit 60 Hz 525 Nu
9918A / 9118 Compozit Compozit 60 Hz 525 Da
9928A / 9128 YPbPr (Nu) 60 Hz 525 Da
9929A ​​/ 9129 YPbPr (Nu) 50 Hz 625 Da

Interfață

TMS9918 a gestionat un bloc dedicat de memorie video de 16 kB , extern cipului grafic, dar nu vizibil în spațiul de adrese gestionat de CPU : magistrala de memorie a VDP a fost, de fapt, separată de cea a procesorului central, spre deosebire de alte sisteme , cum ar fi MOS VIC-II al Commodore 64 , care a folosit memorie partajată cu restul aparatului. VDC ar putea astfel accesa datele din memoria video fără a fi nevoie să acceseze memoria RAM a sistemului și, prin urmare, fără a încetini procesorul; în plus, memoria video externă a permis salvarea RAM a memoriei centrale. CPU a comunicat cu VDP printr-un port de 8 biți și datele au fost transferate între aceste cipuri prin scrieri pe acel port. Portul a fost mapat în memorie sau gestionat ca un port de intrare / ieșire (în funcție de caracteristicile procesorului) și sistemul de comunicații a recurs la utilizarea a 2 octeți și 3 semnale electrice pe cât mai mulți pini ai VDP: prin această interfață, CPU ar putea instrui VDP-ul să citească sau să scrie în memoria sa video sau în registrul său pur și simplu introducând adresa celulei sau să înregistreze obiectul operației în primul octet și scriind sau citind datele din al doilea octet, apoi selectând operația dorit (citire sau scriere) prin intermediul semnalelor electrice.

Mod video

TMS9918A a acceptat 4 moduri video diferite (TMS9918 nu avea modul Graphic 2):

  • Mod 0 (Text): 40 × 24 caractere, monocrom: Deoarece videoclipul are o lățime de 256 pixeli , caracterele au o lățime de doar 6 pixeli. Acest mod nu acceptă sprites .
  • Modul 1 (Graficul 1): 32 × 24 de caractere. Fiecare 8 caractere din setul de caractere au un fundal și o culoare principală diferite. Aceasta înseamnă că caracterele "0" până la "7" au aceleași atribute de culoare. Sprite acceptat.
  • Modul 2 (Graficul 2): ​​32 × 24 de caractere sau 256 × 192 pixeli grafică bitmap cu limitarea utilizării a 2 culori pentru fiecare linie de 8 pixeli dintr-un caracter. Sprite.
  • Mod 3 (Multicolor): mod 64 × 48 cu blocuri grafice de 4 × 4 pixeli. Fiecare bloc poate avea propria culoare, putând astfel utiliza toate cele 15 culori disponibile. Sprite.

TMS9918 avea o paletă fixă ​​de 16 culori (15 nuanțe plus transparență).

Sprite

Pictogramă lupă mgx2.svg Același subiect în detaliu: Sprite (informatică) .

Documentația tehnică a VDP introduce pentru prima dată termenul " sprite pentru a indica elementele grafice separate de fundal și gestionabile direct de hardware-ul procesorului grafic. [2] În modurile 1, 2 și 3, VDP ar putea reda 32 de sprite monocrome de 8 × 8 sau 16 × 16 pixeli, fiecare colorat diferit. Singura limitare a fost numărul pe linie orizontală: nu mai mult de 4 în același timp, cele care au depășit au fost aruncate. Spritii aveau un atribut pentru a stabili prioritatea: acei cu prioritate mai mare au fost desenate mai întâi. VDP a avut un registru în care a fost stocat spritul aruncat: procesorul ar putea eluda astfel limitarea a 4 sprite pe rând schimbând prioritatea spritelor astfel încât să facă un grup de sprite diferite să apară la fiecare cadru. În acest fel, sprite, dar nu au dispărut complet, au clipit pe ecran. Această tehnică este cunoscută sub numele de " multiplexare a" (sprite multiplexare sprite). VDP pentru setat pentru a crește dimensiunea spritelor prin intermediul unui atribut grafic care, dacă este setat, a dublat pixelii unici, permițând astfel să aibă sprite de dimensiuni 16 × 16 și respectiv 32 × 32 pixeli.

VDP nu a acceptat mișcarea automată a spriturilor, astfel încât poziționarea spritelor a trebuit să fie gestionată prin intermediul software-ului.

Când 2 pixeli netransparenți din 2 sprite au coincis, a fost setat steagul relativ al coliziunii dintre sprite: acest lucru a fost util pentru a putea programa dinamica exactă a evenimentului, deoarece, spre deosebire de TIA a Atari 2600 și MOS VIC- II din Commodore 64 , TMS9918 nu a indicat care sprite s-au ciocnit, ci doar că a avut loc o coliziune.

Planuri grafice

VDP gestiona imaginea după planuri grafice sau niveluri: erau 35 de planuri și fiecare nivel gestiona o componentă a imaginii. Numărul nivelului indica „distanța” față de observator: cu cât numărul este mai mare, cu atât nivelul este mai „departe”, plasându-se sub toți cei cu un număr mai mic și mai presus de toți cei cu un număr mai mare. Nivelul 0 a fost, prin urmare, primul, cel mai apropiat, în timp ce nivelul 34 a fost ultimul, cel mai îndepărtat:

  • niveluri de la 0 la 31: erau nivelurile dedicate spritelor; ordinea a reprezentat, de asemenea, prioritatea în rândul spritei înșiși
  • nivel 32: nivel de model grafic de fundal
  • nivelul 33: numit „backplane”, acest motiv era la fel de larg ca imaginea video, extinzându-se dincolo de caseta grafică generată de VDP și creând efectiv cadrul colorat din jurul său
  • nivel 34: folosit pentru a insera în imagine orice semnal video prezent la intrare (numai TMS9918 / 9918A)

Detalii mod 2

„Vărsarea culorilor”, un defect video bine cunoscut de proprietarii MSX. Când linia diagonală traversează cercurile, galbenul „pătează” pixelii prezenți în zona de 8 × 1 pixeli pe care o traversează.

Tehnic Modul 2 este un mod text cu un set de caractere colorate. Ecranul este împărțit în 3 zone orizontale de 256 × 64 pixeli fiecare, fiecare dintre ele putând avea propriul set de caractere. Prin modificarea fonturilor și desenarea lor pe ecran, programul poate simula un mod grafic în care fiecare pixel poate fi setat individual. Cu toate acestea, framebuffer-ul rezultat nu este liniar.

Programul poate utiliza, de asemenea, 3 seturi de caractere diferite și apoi poate gestiona ecranul ca mod text cu un set de caractere colorate. Modelele de fundal și spritele constau apoi din caractere colorate. Această metodă a fost utilizată în mod obișnuit în jocuri, deoarece umplerea / derularea întregului ecran a fost limitată doar la umplerea / derularea de 32 × 24 octeți. Grafica ar putea fi desenată în așa fel încât marginile blocurilor de 8 × 8 pixeli să nu fie atât de clare: aceasta a fost o artă în care Konami a excelat în mod deosebit.

TMS9918 a gestionat culorile în modul 2 permițând utilizarea pentru fiecare rând de 8 × 1 pixeli doar 2 nuanțe diferite, fundalul și culoarea de umplere, alese liber dintr-o paletă de 15. Dar pentru fiecare zonă de 8 × 1 pixeli puteau exista doar 2 culori. Și când ați manipulat ecranul prin BASIC cu instrucțiuni grafice a fost ușor să depășiți această limită, de exemplu prin traversarea unei secțiuni cu cele 2 deja setate trasând o linie de a treia culoare. Efectul rezultat a fost cunoscut prin termenul „deversare de culoare” (vizibil în imaginea din lateral). Acest defect a fost, de asemenea, comun pentru Sinclair ZX Spectrum .

VIC-II al C64 a fost structurat diferit și nu avea această limită: cipul, de fapt, a permis să aibă maximum 4 culori (dintr-o paletă de 16) fiecare zonă de 4 × 8 pixeli, cu 3 culori care puteau fi alese pentru fiecare zonă în timp ce a patra, în general culoarea de fundal, care trebuia să rămână aceeași pe tot ecranul. Folosind tehnici avansate (folosind programe de limbaj automat ) a fost posibilă modificarea acestei culori de fundal prin variația acesteia la fiecare linie de scanare a imaginii.

TMS9918 nu avea nici un registru de schimbare, care, prin urmare, trebuia executat prin software.

Trucuri folosite în jocuri

Unele jocuri au încercat să ocolească absența registrelor de schimbare prin efectuarea schimbării pixelilor de la aceleași personaje, cum ar fi jocul Parsec pentru TI-99 / 4A.

Conversia Circus Charlie pentru MSX a avut derulare orizontală și a ocolit limita a 2 culori pentru fiecare zonă de 8 × 1 pixeli utilizând o grafică monocromă cu suprapunerea unor sprite colorate.

Pippols curgea vertical. Deoarece defilarea verticală nu a fost afectată de zona de 8 × 1, personajul controlat de jucător ar putea merge între garduri vii de flori colorate care curg ușor. Celelalte personaje și obiecte din joc erau monocromatice și nu erau detaliate cu aceeași grijă.

Road Fighter a fost un joc de conducere cu defilare verticală: când mașina jucătorului călătorea cu viteza maximă, ecranul a fost deplasat în jos cu 8 pixeli pe cadru, făcând defilarea spritei netedă în ciuda salturilor de 8 pixeli.

Knightmare a avut o derulare verticală atât de lentă, încât săriturile de 8 pixeli nu au deranjat prea mult. Zanac a curs mult mai repede pe verticală, dar datorită fundalurilor cu care jucătorul nu s-a ciocnit niciodată, problema nu a fost deosebit de plictisitoare.

Cu toate acestea, în Nemesis (un joc de tip R-Type ), derularea orizontală era dezavantajul jocului, cu salturile de 8 pixeli vizibile în mod clar. Continuarea sa, Nemesis 2 , a compensat parțial fotografiile de 8 pixeli oferind o grafică extrem de colorată și detaliată.

Caracteristici tehnice

  • RAM video :
    • 4/8/16 kB: toate caracteristicile VDC au fost gestionate doar folosind 16 kB de RAM, care era dimensiunea memoriei utilizate în mod normal în sistemele majore
  • Moduri text:
    • 40 × 24 (6 × 8 pixeli)
    • 32 × 24 caractere (8 × 8 pixeli)
  • Rezoluție : 256 × 192 pixeli, 16 culori (15 culori + transparență)
    • în TMS9918 / TMS9918A a fost utilizată transparența pentru a amesteca semnalul video posibil prezent la intrare
  • Sprite: 32
    • 1 culoare
    • doar 4 fiecare rând orizontal
    • dimensiune: 8 × 8 și 16 × 16 pixeli - poate fi dublată la 16 × 16 și respectiv 32 × 32 pixeli
  • Planuri grafice: 35
    • 32 pentru sprite (1 etaj pentru fiecare sprite)
    • fundal
    • „backplane”
    • intrare video

Instrumente grafice

De-a lungul anilor, TMS9918 a văzut nașterea unor instrumente pentru gestionarea imaginilor, desenarea spritelor și, recent, și a unor instrumente pentru conversia imaginilor în formate compatibile cu rezoluția și numărul de culori acceptate în modul 2, unele bazate pe algoritmi de dithering , cum ar fi ca cea a lui Floyd-Steinberg . Unele dintre aceste instrumente de conversie sunt disponibile gratuit, precum MSX Screen Conversor , care convertește direct online și Screen 2 Converter , versiunea în limbajul C a celei anterioare (offline).

Notă

  1. ^ TMS9918 pe 8 biți „Nu este un standard” , pe nerdlypleasures.blogspot.com , Nerdly Pleasures, 12.02.2013. Adus 21.06.2018 .
  2. ^ Sprite (grafică computerizată) , la wiki30.com . Adus 22-12-2017 (arhivat din original la 23 decembrie 2017) .

Elemente conexe

Alte proiecte

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT