Il MOS VIC-II è un microprocessore usato per generare la grafica in Y/C/video composito nei computer Commodore 64 e Commodore 128.
Prodotto nei modelli 6567/8562/8564 (versioni NTSC) o 6569/8565/8566 (PAL), fu concepito come evoluzione del MOS Technology VIC (utilizzato nel Commodore VIC-20).
Fu uno dei responsabili del grande successo del C64, il modello di computer più venduto di tutti i tempi.[1]
Il chip VIC-II fu progettato da Albert Charpentier e Charles Winterble alla MOS Technology come successore del VIC (6560). Il loro gruppo di sviluppo aveva in precedenza fallito la progettazione di due chip grafici, il MOS 6562 per il computer Commodore TOI ed il MOS 6564 per il Color PET, a causa della necessità di affiancare ad essi veloci ma costose memorie. Ma gli studi fatti su questi chip non erano andati sprecati, dato che alcune delle tecnologie sviluppate erano poi confluite nel VIC.
Per progettare il VIC-II, Charpentier e Winterble fecero un'indagine di mercato sui computer e videogiochi per scoprire quali caratteristiche fossero più richieste. L'idea di aggiungere la gestione degli sprite venne dal computer Texas Instruments TI-99/4A e dal suo processore grafico TMS9918: i ¾ della superficie del VIC-II fu infatti utilizzata per la gestione di essi.
Il lavoro sul VIC-II fu completato nella seconda metà del 1981, mentre Robert Yannes stava lavorando sul chip SID. I due chip, come il Commodore 64, furono completati in tempo per la fiera Consumer Electronics Show che si tenne la prima settimana del 1982.
Il VIC-II era programmato manipolando i suoi 47 registri di controllo (contro i 16 presenti nel primo VIC), mappati in memoria nell'intervallo $D000–$D02E dello spazio di indirizzamento del C64. Di questi registri, 34 erano adibiti al controllo degli sprite (detti anche come MOB, Movable Object Blocks, dalla documentazione VIC-II). Come il suo predecessore, il VIC-II supportava la penna ottica ad infrarossi ed usava una versione dei caratteri PETSCII del vecchio Commodore PET rimaneggiata per adattarsi alla risoluzione video del C64.
Tramite codice si poteva istruire il VIC-II per generare più di 8 sprite contemporaneamente: questa tecnica, nota come sprite multiplexing, prevedeva l'intercettazione della routine di gestione del pennello video (il raster interrupt) così da generare, a seconda della zona dello schermo interessata, gli sprite necessari. Sempre tramite codice era possibile anche aggirare il limite hardware di 8 sprite per riga orizzontale ricorrendo al flicker, vale a dire all'accensione alternata di uno o più sprite, che generava un leggero sfarfallìo nell'immagine.
Nella modalità multicolore (160×200 pixel, la più usata nei giochi) i caratteri erano di 4×8 pixel a 4 colori (su 16 disponibili). Il quarto colore (il colore dello sfondo) era identico per tutto lo schermo mentre gli altri 3 potevano essere impostati per ogni area di 4×8 pixel. Gli sprite (12×21 pixel) avevano 3 colori: 2 erano condivisi tra tutti gli sprite e 1 era personalizzabile. Alcuni giochi modificavano i colori durante l'interrupt raster mentre altri, come Summer Games della Epyx e Basketball Sam & Ed della COMPUTE!'s Gazette, sovrapponevano 2 sprite ad alta risoluzione per ottenere l'effetto di un unico sprite a 2 colori ad alta risoluzione, senza sacrificare la risoluzione orizzontale[2]. Questa tecnica riduceva però il numero degli sprite utilizzabili.
Il gruppo di progettazione del VIC-II scelse i 16 colori della tavolozza del chip in base a criteri di progettazione e non estetici. Il risultato portò ad una tavolozza con colori non molto brillanti. Yannes spiegò la cosa così:
«(...) Ho timore che, come si pensa, non si sia usata la massima cura nella scelta dei colori. Avevamo il pieno controllo sulla tonalità, la saturazione e la luminosità, e scegliemmo i colori che ci piacevano. Inoltre, per salvare spazio sul chip, molti dei colori erano semplicemente i colori complementari nella ruota dei colori di quelli che avevamo scelto. Questo ci permise di riutilizzare i valori delle resistenze presenti piuttosto che usarne un set nuovo per ognuno dei colori.(...)»
Il gioco Mayhem in Monsterland del 1993 è un esempio di cosa si potesse ottenere spremendo al massimo le potenzialità del VIC-II, con un risultato comparabile con la grafica offerta dalle macchine a 16 bit dell'epoca.
Il chip VIC-IIe (MOS 8564/8566) del Commodore 128 ("e" sta per "revisione E") utilizzava 48 pin e aveva 2 registri in più, uno per accedere al tastierino numerico ed i tasti extra e l'altro per far cambiare la frequenza del clock da 1 MHz a 2 MHz e viceversa: al clock più alto il video composito del VIC-II era disattivato, permettendo l'uso della modalità a 80 colonne del C128 tramite il secondo chip video del computer, il VDC (MOS 8563).