# Denise (chip)

Il Denise è una famiglia di microchip progettata dalla Commodore-Amiga Inc. (in seguito sviluppata dalla Commodore Business Machines Inc.) e fabbricata dalla Commodore Semiconductor Group. Un esemplare di Denise è sempre presente nei chipset Amiga Original Chip Set e Enhanced Chip Set. È sempre presente perché è uno dei tre principali chip che li compongono (gli altri due principali chip sono Agnus e Paula). Denise è stato montato esclusivamente in vari modelli di personal computer Amiga e in un modello di riproduttore CD della Commodore Business Machines Inc..

## Caratteristiche

Denise contiene circa 21000 transistor ed è stato prodotto in logica NMOS. Per il package è stato scelto il DIP a 48 piedini.
Denise (8362) era il chip preposto a generare il segnale video (15 kHz). La tavolozza disponibile su Amiga era, grazie a Denise, di 32 colori da 4096, eccezionale per l'epoca.
Denise metteva a disposizione una modalità a bassa risoluzione (320x256 negli Amiga venduti per il sistema televisivo PAL, 320x200 per gli Amiga venduti per il sistema televisivo NTSC) ed una ad alta risoluzione (640x256 PAL, 640x200 NTSC) e diverse modalità intermedie, e gestiva nativamente l'interlacciamento raddoppiando la risoluzione verticale ed arrivando fino a 320x512 o 640x512 (320x400 o 640x400 in NTSC). Le temporizzazioni video erano parzialmente programmabili e si potevano inoltre ottenere risoluzioni prive di bordi (overscan).
Denise poteva segnalare sul connettore video se stava visualizzando il colore di sfondo o meno: questo permetteva di realizzare effetti genlock o chroma key con apparati notevolmente economici per l'epoca. Interlacciamento, overscan e genlock fecero di Amiga la macchina di riferimento per le produzioni video a basso costo.
L'organizzazione della memoria grafica era basata sul concetto di bitplane, che si fonda sulla sovrapposizione di piani di bit. Questo tipo di organizzazione è per certi versi opposto a quello di chunk presente nel mondo PC, e permetteva di risparmiare RAM, all'epoca molto costosa. Il risparmio derivava dal fatto che si poteva scegliere di usare solo il numero di bitplane (da 1 a 6) strettamente necessari. Inoltre ogni piano di bit doveva essere memorizzato in un'area contigue di memoria, ma non era necessario che i vari piani di bit fossero contigui tra loro e questo permetteva di ottimizzare l'utilizzo della memoria grafica.
* Esistevano modalità video con tavolozze da 2 colori (1 bitplane) fino a 32 colori (5 bitplane).
* La modalità EHB (Extra Half-Brite) utilizzava 6 bitplane e aggirava il limite della tavolozza a 32 valori utilizzando il sesto bit come bit di stato per dimezzare la luminosità del corrispondente pixel, raddoppiando i colori visualizzabili. Questa modalità non era implementata nei primi modelli A1000 usciti negli Stati Uniti e non era neppure presente nella documentazione ufficiale redatta prima della commercializzazione del computer.
* La modalità DP (Dual Playfield) utilizzava 3+3 bitplane per realizzare 2 piani sovrapposti a 8 colori ciascuno, capaci di scorrere indipendentemente uno dall'altro. Utilizzando il colore "trasparente" nel piano sovrastante era possibile creare dei "buchi" attraverso i quali visualizzare il piano sottostante. Questa modalità era la chiave per ottenere lo scorrimento parallattico, effetto speciale che decretò la superiorità di Amiga sul suo rivale Atari ST.
* La modalità video che però rese famoso Amiga fu quella HAM (Hold And Modify) con cui era possibile visualizzare tutti i 4096 colori sullo schermo. Questa modalità utilizzava solo 6 bitplane invece dei 12 teoricamente necessari. Questo era possibile perché veniva adottata una codifica differenziale in cui ogni pixel poteva differire dal precedente solo per una componente cromatica (RGB).
Tabella riassuntiva delle modalità grafiche riferite ai modelli europei PAL. :
| Modalità | Risoluzione massima | Colori massimi | Piani di bit massimi | Nota |
| Bassa risoluzione standard | 320x512 | 32 | 5 | |
| Alta risoluzione standard | 640x512 | 16 | 4 | |
| Extra Half Brite | 320x512 | 32+32 | 5+1 | I colori 33-64 sono a luminosità dimezzata rispetto ai 1-32 |
| Dual Playfield | 320x512 | 8+8 | 3+3 | Due schermi indipendenti di 3 piani di bit ciascuno |
| Hold And Modify | 320x512 | 4096 | 2+4 | In ogni pixel è codificata una singola componente RGB |

### Temporizzazioni video e risoluzioni grafiche

Denise genera le temporizzazioni video, e, come per Agnus, si misurano in "colour clock", ma può anche sincronizzarsi ad un segnale video esterno. Ci sono due risoluzioni grafiche orizzontali: la bassa risoluzione (lowres), con pixel di 140 ns, e l'alta risoluzione (hires), con pixel di 70 ns. Questi corrispondono rispettivamente a schermi di 320 e 640 pixel di larghezza, senza usare overscan. Denise supporta overscan molto ampi, non è necessario avere un bordo attorno alla grafica come invece accadeva in altri sistemi. La risoluzione verticale, senza overscan, è di 200 pixel per un Amiga NTSC a 60 Hz, e di 256 pixel per un Amiga PAL a 50 Hz. La risoluzione verticale può essere raddoppiata tramite interlacciamento.
Normalmente, l'Amiga genera le sue temporizzazioni autonomamente, ma il chipset è in grado di sincronizzarsi ad un segnale esterno, così da poter effettuare un genlock con un dispositivo video esterno. Tramite uno dei segnali in uscita sul connettore video, Denise è inoltre in grado di indicare se il colore attualmente in uscita è quello di sfondo o meno, semplificando notevolmente la costruzione di hardware per sovrapporre il segnale video dell'Amiga ad un segnale esterno. Questo rese l'Amiga particolarmente interessante nell'uso come generatore di caratteri per la titolazione di video e le trasmissioni televisive, in quanto risparmiava l'uso di costose unità AB roll e chromakey. Il supporto di overscan, interlacciamento e genlock, unito al fatto che le temporizzazioni dello schermo fossero molto vicine agli standard di trasmissione video (NTSC o PAL), fecero dell'Amiga il computer di riferimento per applicazioni video a basso costo. Molti studi televisivi lo utilizzarono per l'acquisizione video (o frame-grabbing), sottotitolazione e notizie video interattive.

### Bitplane

Denise è programmato per prelevare dati da un certo numero di bitplane (piani di bit) e tradurli in indici di una tavolozza di colori. Il numero di bitplane è selezionabile tra 1 e 5, sicché se non si ha bisogno di 32 colori, se ne possono usare solo 2, 4, 8 o 16. Il numero di bitplane (e la risoluzione) possono essere cambiati al volo, per esempio dal copper. Questo consente un uso molto parsimonioso della RAM. È disponibile anche un sesto bitplane, che può essere usato in tre modi grafici speciali:
* Nel modo Extra-Halfbrite (EHB), i pixel continuano ad avere il colore della palette specificato dai bitplane da 1 a 5, ma se il bit corrispondente nel sesto bitplane è 1, la luminosità del colore viene dimezzata. Le prime versioni dell'Amiga 1000 vendute negli Stati Uniti non avevano il modo Extra-HalfBrite.
* Nel modo Hold-and-Modify (HAM), i 6 bit di ogni pixel vengono interpretati come 2 bit di controllo e 4 di dati. I 4 valori possibili dei bit di controllo corrispondono a "prendi da tavolozza", "modifica il rosso", "modifica il verde" e "modifica il blu".
** Con "prendi da tavolozza", il colore del pixel viene preso appunto dalla tavolozza, indicizzandola con gli altri 4 bit.
** Con uno dei "modifica", invece, i quattro bit indicano esplicitamente quale valore deve assumere la componente rossa, verde o blu di quel pixel; le altre due rimangono uguali a quelle del pixel precedente. Questo consente di visualizzare tutti e 4096 i colori sullo schermo allo stesso tempo.
* Nel modo Dual Playfield, anziché avere uno schermo singolo, si hanno due schermi sovrapposti ("playfield") di 8 colori l'uno. I due schermi possono essere fatti scorrere indipendentemente e il colore di fondo dello schermo superiore non è visibile, ma lascia trasparire lo schermo inferiore.

### Sprite

Denise può visualizzare fino a 8 sprite per linea. Gli sprite sono larghi 16 pixel e hanno 4 colori (3 colori visibili e uno trasparente) scelti da una tavolozza di 4096. È possibile fare attach (ovvero legare insieme) di due sprite per ottenerne uno a 16 colori. Denise è in grado di rilevare eventuali collisioni tra gli sprite ma anche eventuali collisioni tra gli sprite e gli oggetti dello sfondo. Utilizzando tutti gli sprite l'elaborazione dei dati video non può iniziare troppo presto e dunque il bordo sinistro dello schermo deve restare molto largo. All'epoca il sottosistema sprite era già obsoleto ed infatti venne utilizzato pochissimo nei videogiochi che invece fecero largo uso del Blitter

### Uscita video

L'uscita video di Denise è RGB digitale a 12 bit. La conversione in RGB analogico viene effettuata da un convertitore digitale-analogico, il Vidiot. Sull'Amiga 2000, l'uscita RGB digitale è disponibile in uno slot video apposito.

### Evoluzione

Nel corso degli anni Denise è stato costantemente aggiornato. Ne sono nati così vari modelli. L'evoluzione maggiore c'è stata con il Denise dell'Enhanced Chip Set. È proprio per tale evoluzione che si è iniziato a parlare di "chipset potenziato" ("Enhanced Chip Set" in italiano significa "chipset potenziato"). Essendo l'evoluzione maggiore, il Denise dell'Enhanced Chip Set è anche chiamato "Super Denise". Il Denise dell'Enhanced Chip Set è stato reso totalmente programmabile per quanto riguarda i modi video. È cioè possibile, per i programmatori, creare modi video a piacimento caratterizzati da una diversa frequenza di linea e di quadro. Non essendo stata aumentata la velocità di elaborazione dei bitplane, restano comunque molti limiti nella creazione dei modi video.

## Modelli

Al primo modello di Denise commercializzato (montato nella prima versione di Amiga 1000), il MOS 8362R5, sono seguiti molti altri modelli.

### Famiglie di modelli

Si possono distinguere due principali famiglie di modelli:
* famiglia di modelli utilizzati nel chipset OCS;
* famiglia di modelli utilizzati nel chipset ECS.
Nella famiglia di modelli utilizzati nel chipset OCS si possono distinguere le seguenti due sottofamiglie:
* famiglia di modelli in grado di visualizzare modi video NTSC;
* famiglia di modelli in grado di visualizzare modi video PAL;
Non esistono quindi modelli d Denise, utilizzati nel chipset OCS, in grado di visualizzare sia i modi video NTSC che i modi video PAL. Un esemplare della famiglia di modelli, utilizzati nel chipset OCS, è stato montato nei computer Amiga 1000, Amiga 500 e Amiga 2000. Di questi tre computer sono state prodotte due diverse versioni: una versione monta un modello di Denise in grado di visualizzare i modi video NTSC (tale versione era destinata ai Paesi che all'epoca utilizzavano lo standard televisivo NTSC), l'altra versione monta un modello di Denise in grado di visualizzare i modi video PAL (tale versione era destinata ai Paesi che all'epoca utilizzavano lo standard televisivo PAL). La famiglia di modelli, utilizzati nel chipset ECS, è in grado di visualizzare, non solo tutti i modi video NTSC e PAL visualizzabili dai modelli di Denise utilizzati nel chipset OCS, ma molti altri modi video.

### Elenco dei modelli

La tabella seguente riporta i modelli di Denise commercializzati e la principale famiglia a cui appartengono. In particolare per ogni modello di Denise viene riportata (rispettivamente) la denominazione del modello di Denise, il part number del modello di Denise, il chipset in cui è utilizzato il modello di Denise, il personal computer in cui è utilizzato il modello di Denise.
| denominazione | part number | chipset | personal computer |
| MOS 8362R5 | 252126-01 | OCS | Amiga 1000 (solo la versione con modi video NTSC) |
| MOS 8362R8 | 252126-02 | OCS | |
| MOS 8373 | 390433-01 | ECS | |
| MOS 8373R2A | | ECS | |
| MOS 8373R3 | 390433-02 | ECS | |
| MOS 8373R4 | 391081-01 | ECS | |

## Modi video

La tabella seguente riporta le famiglie di modi video che Denise è in grado di visualizzare. Per ogni famiglia di modi video viene riportata (rispettivamente) la denominazione della famiglia di modi video, la famiglia di Denise in grado di visualizzare la famiglia di modi video, la frequenza di linea della famiglia di modi video, la frequenza di quadro della famiglia di modi video. Tali due frequenze permettono di capire se un modo video è visualizzabile da un monitor video (tutti i monitor video accettano una gamma limitata di queste frequenze).
| denominazione | chipset | frequenza di linea | frequenza di quadro |
| NTSC | OCS e ECS | 15,72 kHz | 60 Hz |
| PAL | OCS e ECS | 15,60 kHz | 50 Hz |
| A2024 | OCS e ECS | 56,25 kHz | 60 Hz |
| Multiscan | ECS | 31,44 kHz | 60 Hz |
| Euro36 | ECS | 15,76 kHz | 73 Hz |
| Euro72 | ECS | 31,43 kHz | 70 Hz |
| Super72 | ECS | 24,62 kHz | 72 Hz |

### Modi video A2024

I modi video A2024 sono stati resi disponibili a partire dal 1989 e sono estremamente particolari. Per rendere disponibili i modi video A2024 anche con i modelli di Denise prodotti prima del 1989 (quindi anche con i modelli di computer Amiga prodotti prima del 1989), è stata fatta una scelta più unica che rara: i circuiti elettronici aggiuntivi (necessari per implementare i modi video A2024) non sono stati inseriti in Denise ma nel monitor video. Nel 1989 è iniziata la commercializzazione del monitor video contenente tali circuiti elettronici aggiuntivi, il Commodore A2024 (prodotto dalla Commodore Business Machines Inc.). Questo monitor video è quindi l'unico al mondo in grado di visualizzare i modi video A2024. La scansione video adottata per i modi video A2024 è non convenzionale: il quadro intero è suddiviso in quattro quadri. Se si vuole evitare il fastidiosissimo tremolio dell'immagine video, il refresh rate dei modi video A2024 (10 o 15 Hz) è estremamente basso per un display CRT con fosfori a normale persistenza. E il Commodore A2024 monta un display CRT (all'epoca il display CRT era la miglior tipologia di display video). Quindi per tale monitor video è stato utilizzato un display CRT con fosfori ad altissima persistenza. Questi display CRT eliminano il fastidiosissimo tremolio provocato dal basso refresh rate ma creano un altro fastidiosissimo fenomeno: le scie degli oggetti grafici in movimento (come ad esempio il puntatore del mouse). Per tali motivi i modi video A2024 sono poco utilizzati nonostante offrano una risoluzione video molto alta.

### Nei modelli di Denise utilizzati nel chipset OCS

La tabella seguente riporta i modi grafici visualizzabili dai modelli di Denise, utilizzati nel chipset OCS, in grado di visualizzare i modi video NTSC. Per ogni modo grafico viene riportata (rispettivamente) la denominazione del modo grafico, il numero di pixel che compongono l'immagine video generata dal modo grafico, il tipo di scansione video utilizzata nel modo grafico, il numero massimo di colori visualizzabili contemporaneamente nell'immagine video generata dal modo grafico, il numero di colori (predefiniti dai progettisti di Denise) che si possono scegliere per l'immagine video generata dal modo grafico, il numero di volte che viene ridisegnata (in un secondo) l'immagine video generata dal modo grafico. Per i modi video NTSC i progettisti di Denise hanno fornito la possibilità di ridurre o aumentare il numero di pixel che compongono l'immagine video perché, con il video analogico, è necessario regolare l'ampiezza dell'immagine video in modo che sia tutta visualizzata sullo schermo del display video. Ma all'epoca tale regolazione era disponibile solo nei monitor video. Nei televisori era rarissimo che si potesse regolare l'ampiezza dell'immagine video. Riducendo il numero di pixel che compongono l'immagine video, si può evitare che parti dell'immagine video (i bordi) non vengano visualizzate sullo schermo del televisore.
| denominazione | risoluzione video | risoluzione video | scansione video | color depth | color palette | refresh rate |
| denominazione | massima | minima | scansione video | color depth | color palette | refresh rate |
| NTSC: Bassa Risoluzione | 362 x 241 | 320 x 200 | progressiva | 32 | 4096 | 30 Hz |
| NTSC: Bassa Risoluzione Interlacciata | 362 x 482 | 320 x 400 | interlacciata | 32 | 4096 | 30 Hz |
| NTSC: Alta Risoluzione | 724 x 241 | 640 x 200 | progressiva | 16 | 4096 | 30 Hz |
| NTSC: Alta Risoluzione Interlacciata | 724 x 482 | 640 x 400 | interlacciata | 16 | 4096 | 30 Hz |
| NTSC: Extra Halfbrite | 362 x 241 | 320 x 200 | progressiva | 64 | 4096 | 30 Hz |
| NTSC: Extra Halfbrite Interlacciato | 362 x 482 | 320 x 400 | interlacciata | 64 | 4096 | 30 Hz |
| NTSC: Hold And Modify | 362 x 241 | 320 x 200 | progressiva | 4096 | 4096 | 30 Hz |
| NTSC: Hold And Modify Interlacciato | 362 x 482 | 320 x 400 | interlacciata | 4096 | 4096 | 30 Hz |
| A2024: 10 Hz | 1008 x 800 | 1008 x 800 | non convenzionale | 4 | 64 | 10 Hz |
| A2024: 15 Hz | 1008 x 800 | 1008 x 800 | non convenzionale | 4 | 64 | 15 Hz |
La tabella seguente riporta i modi grafici visualizzabili dai modelli di Denise, utilizzati nel chipset OCS, in grado di visualizzare i modi video PAL.
| denominazione | risoluzione video | risoluzione video | scansione video | color depth | color palette | refresh rate |
| denominazione | massima | minima | scansione video | color depth | color palette | refresh rate |
| PAL: Bassa Risoluzione | 362 x 283 | 320 x 256 | progressiva | 32 | 4096 | 25 Hz |
| PAL: Bassa Risoluzione Interlacciata | 362 x 566 | 320 x 512 | interlacciata | 32 | 4096 | 25 Hz |
| PAL: Alta Risoluzione | 724 x 283 | 640 x 256 | progressiva | 16 | 4096 | 25 Hz |
| PAL: Alta Risoluzione Interlacciata | 724 x 566 | 640 x 512 | interlacciata | 16 | 4096 | 25 Hz |
| PAL: Extra Halfbrite | 362 x 283 | 320 x 256 | progressiva | 64 | 4096 | 25 Hz |
| PAL: Extra Halfbrite Interlacciato | 362 x 566 | 320 x 512 | interlacciata | 64 | 4096 | 25 Hz |
| PAL: Hold And Modify | 362 x 283 | 320 x 256 | progressiva | 4096 | 4096 | 25 Hz |
| PAL: Hold And Modify Interlacciato | 362 x 566 | 320 x 512 | interlacciata | 4096 | 4096 | 25 Hz |
| A2024: 10 Hz | 1008 x 1024 | 1008 x 1024 | non convenzionale | 4 | 64 | 10 Hz |
| A2024: 15 Hz | 1008 x 1024 | 1008 x 1024 | non convenzionale | 4 | 64 | 15 HZ |