Il gameboy originale, GBP e GBC avevano tutti una risoluzione dello schermo di 160 x 144 [1] mentre il Game Boy Advanced aveva una risoluzione di 240×160 [2]
Quindi come si verifica leffettivo allungamento? Sembra abbastanza uniforme, ma non riesco a capire come sia tecnicamente realizzabile senza un secondo schermo.
Risposta
In primo luogo, lallungamento non viene eseguito in direzione verticale: i giochi per Game Boy (e Color) utilizzavano solo 144 righe delle 160 disponibili nella schermata Advance, quindi ci sarebbero “barre nere” letterbox “in alto e in basso, indipendentemente dal fatto che tu abbia allungato o meno limmagine widescreen (con i pulsanti sulla spalla).
Orizzontalmente, limmagine è decisamente allungata. Se Advance avesse il doppio della risoluzione orizzontale del Game Boy, sarebbe facile allungare: ogni colonna di pixel potrebbe essere ripetuta due volte. Ciò significherebbe effettivamente che ciascuno dei pixel del Game Boy è due volte più largo di prima. Non è sempre possibile raddoppiare la risoluzione dello schermo; è probabile che una tale risoluzione non fosse disponibile (o abbordabile) in una dimensione portatile al momento di Advance.
Invece, Nintendo ha selezionato uno schermo per Advance che aveva una risoluzione che è una volte e mezza (o 3/2) quella del Game Boy originale (160 x 3/2 = 240). Ogni due colonne di pixel di un vecchio gioco per Game Boy ora dovranno essere “allungate” su tre colonne dello schermo di Advance.
Ma quali valori dovrebbero essere assegnati ai pixel in queste terze colonne extra ? Potresti raddoppiare alcuni dei pixel delle colonne originali, raddoppiando la “larghezza” di tutte le colonne dispari, o forse di quelle pari. È un metodo semplice, ma non sembra così buono, perché alcune colonne non saranno affatto raddoppiate, ma altre sì.
Un approccio alternativo consiste nellusare una tecnica chiamata interpolazione . [* 1] In questo caso, invece di scegliere di duplicare una colonna per riempire i pixel vuoti, prendi una media dei valori nelle colonne a sinistra ea destra di ogni pixel vuoto e utilizza invece questo valore calcolato.
Se osservi attentamente il display di Advance con un gioco per Game Boy non allungato e uno allungato, è possibile identificare quale i valori delle colonne sono stati calcolati da questa interpolazione “media”.
Ecco alcune foto dettagliate di “AY” dal testo “1Player”:
Sul lato sinistro della “A”, una colonna di pixel è stata interpolata tra i pixel scuri della “A” ei pixel chiari dello sfondo. Questi pixel sono stati mediati come un grigio medio.
Sul lato destro della “A”, unaltra colonna di pixel interpolati è finita tra le due colonne di pixel scuri. Anche la media di due pixel scuri è scura, quindi è dello stesso colore del resto della “A”. Interpolazioni simili sono visibili sui lati sinistro e destro della “Y” e altrove sullo schermo.
Ecco un paio di immagini di un altro gioco, prese sul modello AGS-101 dellAdvance SP ( che ha uno schermo più luminoso e retroilluminato). [* 2] Puoi giocare a Indovina il gioco, se lo desideri!
Perché Nintendo ha scelto di allungare il display del Game Boy in una direzione e non laltro? Uno dei motivi è che linterpolazione in una dimensione è molto più semplice che eseguirla in due . Ma allungare lo schermo verticalmente avrebbe anche creato degli antiestetici artefatti visivi nel gioco.
Se Nintendo avesse deciso di allungare le 144 righe di pixel sulle 160 righe disponibili sullo schermo di Advance, avrebbero avuto per inserire 16 righe interpolate di pixel.16 è un fattore di 160, quindi le righe interpolate potrebbero essere spaziate in modo uniforme: una ogni 10 righe. Ma delle nove righe originali, solo due sarebbero accanto a una nuova riga pf pixel, laltra sette non “t. Di conseguenza, alcune file verrebbero “allungate” dallinterpolazione, altre no. Ciò comporterebbe che il cappello di Mario si allunghi e si comprima leggermente mentre salta, ad esempio, e distrarrebbe il giocatore.
-
Questa tecnica (in particolare l interpolazione bilineare bidimensionale) viene utilizzata quando ridimensionate unimmagine in software di manipolazione delle immagini come Photoshop o GIMP. Viene utilizzato anche sui display LCD dei computer, se si seleziona una risoluzione (ad es. 640×480) che non corrisponde alla risoluzione nativa del display (ad es. 1024×768). Ma poiché GBA allunga il display solo in una dimensione (orizzontalmente), è sufficiente eseguire una più semplice interpolazione lineare dellimmagine.
-
Per gentile concessione di snips-n-snails
Commenti
- @Tommy You ' sono entrambi giusti. Lo stretching non ' t viene eseguito in direzione verticale, quindi Kaz ha ragione su questo. In direzione orizzontale, lo stretching è il vicino più vicino come hai detto, non interpolato (filtrato bilineare) come ha detto Kaz.
- Oltre ai tuoi commenti sulla mancanza di allungamento verticale, richiederebbe un ampio buffer, poiché la scansione fuori dalle linee è sincrona con rispetto al gioco. Puoi ' t tornare indietro ed eseguire la scansione di una copia in più di una riga, anche se volevo farlo (il che sarebbe stato terribile), perché il contenuto potrebbe essere cambiato . In effetti, molti giochi per gameboy utilizzavano modifiche al contenuto di visualizzazione su hblank per creare effetti o semplicemente per adattare più sprite sullo schermo.
- @Kaz I couldn ' Non lo dico dalle tue foto così ho preso la mia e ancora una volta hai ragione. imgur.com/a/5Cc6IY9
- @ snips-n-snails quelle foto sono fantastiche! ' sono riuscito a trovare il mio adattatore per obiettivi macro e ho sostituito le mie foto originali, ma lo schermo del tuo AGS-101 ' è a chilometri più nitido del mio standard di palude Advance. Posso aggiungere le tue foto alla risposta?
- @Kaz Certo, vai avanti.