# Television Interface Adaptor

Il Television Interface Adaptor (TIA) era il chip che costituiva il cuore dell'Atari 2600. Si occupava della gestione della grafica e della generazione del segnale video, nonché della generazione degli effetti sonori e della gestione dei sistemi di input della console (joystick e paddle). Fu progettato da Jay Miner, divenuto in seguito famoso per aver progettato i chip CTIA e GTIA dei computer Atari ad 8 bit nonché principalmente per essere stato uno dei progettisti dell'Amiga.

## Storia

Il chip era stato progettato per riprodurre i giochi Atari nella seconda metà degli anni settanta del XX secolo e presentava grosse limitazioni come la mancanza di un framebuffer e il fatto che potevano essere generati solo 3 pixel per clock della CPU. Programmare il TIA risultava perciò molto difficile e giochi più complessi di quelli per cui era nato il chip richiedevano un impegno maggiore da parte dei programmatori. L'essere un chip molto orientato al software aiutò però nella ricerca di soluzioni per aggirare le limitazioni hardware come, ad esempio, modificare il "campo di gioco" per creare motivi asimmetrici, cambiare lo sprite ed i colori del "campo di gioco" alla fine della riga video, riposizionare e modificare gli sprite dei giocatori per poter simulare la presenza di più sprite sullo schermo (come nel gioco Pac-Man).
Più tardi Atari migliorò il progetto del TIA per l'Atari 400 e l'Atari 800 con il Color Television Interface Adaptor e il Graphic Television Interface Adaptor.

## Caratteristiche tecniche

Il chip TIA era deputato alla generazione delle immagini da visualizzare sulla televisione. A causa del costo della memoria a quei tempi, il TIA non aveva una memoria video dedicata specifica: a causa di questo limite la costruzione di immagini complesse doveva essere fatta aggiornando dinamicamente i registri interni del TIA per ogni singola linea dell'immagine. I registri controllavano: il colore dello sfondo; un oggetto fisso denominato playfield, o "campo di gioco", composto da 20 bit sovrastanti il colore dello sfondo e che copriva metà di una riga video (con la possibilità di duplicarlo, o "rifletterlo" sull'altra metà); 5 oggetti mobili.
Questi ultimi erano:
* Due righe orizzontali di 8 pixel che costituivano gli sprite dei giocatore 1 e 2. Questi sprite, monocromatici, potevano essere ristretti di un fattore 2 o 4 e raddoppiati o triplicati.
* Una 'palla', una riga orizzontale larga 1, 2, 4 oppure 8 pixel dello stesso colore del campo di gioco.
* Due 'missili', ognuno dei quali composto da una singola riga orizzontale larga 1, 2, 4 oppure 8 pixel e dello stesso colore del giocatore corrispondente.
Era possibile cambiare il colore della "palla", del "campo di gioco", dello sfondo e di ognuno degli sprite dei giocatori e dei missile in qualsiasi punto della riga dello schermo: i cambiamenti, però, erano limitati dalla velocità alla quale la CPU riusciva a modificare i registri dei colori. In pratica, molti programmatori cambiavano i colori solo al cambio di riga. Gli oggetti creati potevano avere un'altezza superiore a quella massima ammessa dagli sprite (1 pixel) spostando e ridisegnando gli sprite stessi ad ogni riga generata: in questo modo si potevano disegnare personaggi ed oggetti altrimenti non possibili da creare usando motivi grafici composti da una sola riga di 8 pixel.
Il TIA aveva un sistema di rilevamento hardware delle collisioni tra questi oggetti mediante l'uso di appositi registri che venivano letti durante i periodi di VBLANK. Anche la posizione dei diversi oggetti grafici ed i loro colori era controllata mediante l'uso di registri. La tavolozza era di 128 colori in modalità NTSC e PAL-M (il segnale video usato in Brasile), che scendevano a 108 in modalità PAL ed a soli 8 se il segnale era di tipo SÉCAM.
Il chip si occupava anche della gestione del sonoro: esso pilotava 2 canali audio, ognuno capace di 32 toni diversi e 16 possibili sequenze di bit, con un controllo del volume a 4 bit. Infine, gestiva l'input dei giocatori, potendo leggere fino a 4 paddle e 2 joystick.