Vai al contenuto

Il dilemma della visualizzazione

by Diduz

ATTENZIONE! La prima versione di questo articolo fu scritta nei primi Duemila. Il testo è stato poi aggiornato una decina d'anni dopo, poco dopo il 2010. L'argomento trattato andrebbe aggiornato su base quasi mensile, quindi quello che leggerete, pur ancora valido nelle fondamenta, ha conclusioni e soluzioni ormai datate.

Dopo aver trascorso come il sottoscritto alcuni anni in compagnia delle avventure Lucas su Amiga, Atari ST o vecchi PC, decidete di provarne le stesse versioni con un emulatore. Fate partire il gioco e con grande perplessità le vostre labbra proferiscono spontaneamente una frase tipo: "Ma la risoluzione è più bassa?".
Ma quale risoluzione usavano l'Amiga e l'ST? Più o meno quella che usava il PC nella stessa epoca, cioè 320x200, con punte di 320x256, mai comunque usate nelle versioni Amiga/ST delle avventure Lucas, che partivano da asset grafici creati sotto DOS. I nostri occhi tuttavia non si sono ingannati, ma il problema non è nella risoluzione, bensì nella visualizzazione.

Orizzontali & verticali

Andiamo per ordine: l'Amiga, l'Atari ST e le varie console pre-HDMI hanno un output video a 50hz/60hz di scansione verticale e 15,7Khz di scansione orizzontale, interlacciato. In parole più povere, hanno lo stesso segnale della tv a tubo catodico (CRT). Il segnale interlacciato, che in versione PAL viaggia a 50Hz e in NTSC a 60Hz, compone l'immagine tracciando alternativamente le linee orizzontali pari e dispari dello schermo (per il PAL in totale sono 625), ottenendo il fotogramma o "quadro" combinando due semiquadri, per 25 (PAL) o 30 (NTSC) fotogrammi al secondo completi. Nel caso specifico di vecchi computer e console, la visualizzazione si basa su una variante definita scanline mode: l'uscita è sempre interlacciata, ma ciascuno dei due semiquadri è composto dalle stesse linee dispari o pari, mantenendo le altre spente, il che permette di far viaggiare l'immagine aggiornata al doppio dei fotogrammi al secondo, 50 invece di 25. Da qui l'impressionante fluidità dei giochi programmati a 50fps, in quanto sincronizzati ai 50Hz, ma da qui anche la caratteristica presenza delle semipercettibili linee nere che si alternavano alle linee contenenti l'immagine. Importante: lo scanline mode mostra tutta l'immagine a bassa risoluzione, "incastrandola" a linee alterne nel segnale PAL/NTSC, ma non cancella a righe alternate i pixel dell'immagine originale! Può sembrare una precisazione inutile, ma i primi emulatori qualche anno fa simulavano questo effetto proprio così...
Da notare che alcune delle macchine più anziane ma gloriose come l'Amiga offrivano delle modalità ad alta risoluzione "interlacciate": ciò non significa che le basse risoluzioni non lo fossero, ma semplicemente che tali alte risoluzioni usavano tutte le linee per comporre l'immagine, spesso con notevole sofferenza e uno sfarfallìo sensibile.
In ambito PC, potremmo semplificando dire che i monitor dell'era CGA (e spesso anche EGA, in generale dell'era del segnale "TTL") erano simili a televisori d'alta qualità NTSC: 60Hz di scansione verticale e 15,7Khz di orizzontale. Non a caso gli IBM compatibili CGA presentavano già uscite analogiche per le tv. I giochi in bassa risoluzione si avvalevano anche qui, nella maggior parte dei casi, dello "scanline mode".
La musica è cambiata con l'avvento delle VGA, la cui modalità standard più usata era quella a 320x200 a 70Hz di scansione verticale e 31,47 di orizzontale. La visualizzazione si è mossa verso la scansione progressiva: con essa il fotogramma non è più composto da due semiquadri (o dallo stesso semiquadro ripetuto) ma da un'immagine intera visualizzata in un colpo solo.
E i guai per i nostalgici della vecchia visualizzazione non sono finiti con la sparizione delle scanline: quando i monitor CRT sono defunti a favore degli LCD/LED (di solito ancorati sui 60Hz perché già molto più stabili dei CRT), i pixel hanno perso anche la caratteristica imprecisa aura luminosa fornita dai fosfori del tubo catodico.

E quindi?

La sensazione e il feeling che i due modi di visualizzazione comportano sono del tutto differenti: nell'interlacciato, l'occhio "completa" quasi subliminalmente le linee non tracciate, traendone il godimento che ricordavamo ma anche sforzandosi di più, lì dove l'estrema nitidezza del progressive scan dei nuovi monitor sbugiarda senza pietà anche il minimo pixel, ma risulta l'ideale per fissare a lungo uno schermo per attività lavorative quali videoscrittura o grafica professionale.
A questo va aggiunto anche il fattore "dot-pitch", un valore che misura la distanza tra i punti del tubo catodico: più è basso, più l'immagine risulta nitida. Il monitor CRT per PC peggiore aveva un dot-pitch di 0.28, mentre i modelli più costosi arrivavano anche ad uno spettacolare 0.22. Per farvi un'idea del dot-pitch di un segnale interlacciato, vi basti pensare che per i tv color CRT questo neanche si calcola (per timore forse di trovarsi di fronte a risultati imbarazzanti?), mentre monitor storici come il 1084S della Commodore erano comunque a 50Hz/15Khz interlacciati e il loro dot-pitch era pur sempre uno scarso 0.43.
Tirando le somme, perché quei giochi ci apparivano con risoluzione più alta? Semplicemente per la combinazione della visualizzazione interlacciata con la fosforescenza del tubo catodico, e una definizione dell'immagine in tutti i casi più bassa. Tutto questo generava una strana forma di... proto-antialiasing? :-P

Rivoglio i vecchi tempi!

Ci sono maniere per godersi i giochi negli emulatori ottenendo quell'effetto? Ci si può provare: ecco qualche opzione.


Il primo screenshot mostra il gioco visualizzato senza alcun'alterazione, presentando la grafica esattamente com'è. Nel secondo abbiamo agito sul valore "Point/Bilinear" passandolo a 1: il filtering bilineare applica all'immagine una leggera sfocatura. Nel terzo abbiamo selezionato lo shader dall'elenco in alto a sinistra, "CRT.D3D.bright.fx": da notare che non è necessario modificare il valore "1x" dello scaling, né agire sulle scanline (lo shader le crea da sé in un modo particolare). Nel quarto screen è attivo un plus che personalmente gradisco: selezionando sotto "masks" la voce "RGB 1/2/3x" una maschera di pixel semitrasparenti simula i punti di un tubo catodico. Credo si sposi bene con lo shader, ma non tutti potrebbero essere d'accordo.
Sia come sia, lo studio di queste simulazioni continua.

Ma se ho la macchina originale e non mi interessano gli emulatori?

Beh, in questo caso dovreste per principio avere un buon CRT a portata di mano. In caso contrario, vi segnalo due soluzioni hardware molto costose per connettere vecchie macchine a nuovi monitor senza perdere in qualità: quella della Ambery o l'ancora più raffinato Xrgb. Non ho provato questi apparecchi, quindi declino ogni responsabilità sui perversi esperimenti che seguiranno a tali maniacali acquisti. ;-)