Il dilemma della visualizzazione


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 alla 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.

  • Si può collegare il PC (che abbia ovviamente una scheda grafica con output video composito o S-Video) ad un televisore o a un monitor RGB old-style, tipo Commodore 1084 (S) o Philips 8833 (II), entrambi rintracciabili su ebay con molta pazienza. Il segnale sarà giocoforza interlacciato, ma a scapito di una qualità dell'immagine non ottimale.

  • Scovato uno dei due monitor citati o un ottimo televisore a tubo catodico, si può prendere coraggio e seguire questi consigli.

  • Solitamente gli emulatori offrono quasi sempre nelle opzioni video un modo per simulare le linee alternate dello "scanline mode". A prescindere da queste regolazioni manuali, sono disponibili soluzioni più raffinate (e più pesanti) per la simulazione di questo effetto. L'emulatore di Amiga Winuae e una versione non ufficiale dell'emulatore di vecchi PC Dosbox possono entrambi usufruire in modalità Direct 3D di un ottimo pixelshader, "CRT.D3D.bright.fx" (potete scaricarlo qui). Questo filtro riproduce la leggera bombatura dei vecchi CRT, genera scanline intelligenti (meno evidenti in prossimità di colori luminosi), satura i colori e cerca persino di restituire la fosforescenza del tubo catodico.
    Per usarlo sotto WinUae, copiatelo nella cartella "plugins/filtershaders/direct3D", poi regolate in "Display" la voce "Line Mode" su "Normal".
    Per usarlo sotto la versione indicata di Dosbox, copiatelo nella sottocartella "shaders", aprite il file "dosbox.conf" e verificate che compaia "pixelshader=CRT.D3D.bright.fx".
    Qui sotto vi mostro passo dopo passo come modificare la visualizzazione di Maniac Mansion versione Amiga sotto WinUAE, avviato a 1680x1050 (la qualità di queste manipolazioni è direttamente proporzionale alla risoluzione che usate!). Cliccate sui thumbnail per confrontare le immagini complete. Per i comandi faccio riferimento al menu "Filter" accessibile premendo F12.

    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. ;-)