Den originale gameboyen, GBP og GBC hadde alle skjermoppløsninger på 160×144 [1] mens Game Boy Advanced hadde en oppløsning på 240×160 [2]

Så hvordan skjer den faktiske strekkingen? Det virker ganske jevnt, men jeg kan ikke pakke hodet rundt hvordan det er teknisk mulig å oppnå uten et nytt skjermbilde.

Svar

For det første er strekkingen ikke gjort i vertikal retning: Game Boy (og Color) -spill brukte bare 144 rader av de 160 tilgjengelige på Advance-skjermen, så det ville være svarte «letterbox» -linjer øverst og nederst, om du har strukket bildet i widescreen (med skulderknappene) eller ikke.

Golftittelskjerm på GBA SP, ikke strukket Golftittelskjerm på GBA SP, strukket

Horisontalt er bildet definitivt strukket. Hvis Advance hadde to ganger den horisontale oppløsningen til Game Boy, ville det være enkelt å strekke: hver kolonne med piksler kunne gjentas to ganger. Det vil effektivt bety at hver av Game Boy-pikslene var dobbelt så brede som før. Det er ikke alltid mulig å doble oppløsningen på skjermen; det er sannsynlig at en slik oppløsning ikke var tilgjengelig (eller rimelig) i en håndholdt størrelse på forhånd.

I stedet valgte Nintendo en skjerm for Advance som hadde en oppløsning som er en og en halv gang (eller 3/2) av den originale Game Boy (160 x 3/2 = 240). Hver annen kolonne med piksler fra et gammelt Game Boy-spill må nå «strekkes» over tre kolonner på Advance-skjermen.

Men hvilke verdier som skal tildeles pikslene i disse ekstra tredje kolonnene. ? Du kan doble opp noen av de originale kolonnene «piksler», og doble «bredden» på alle odde kolonnene, eller kanskje de like kolonnene. Det er en enkel metode, men ser ikke så bra ut, fordi noen kolonner ikke blir doblet i det hele tatt, men andre vil.

En alternativ tilnærming er å bruke en teknikk kalt interpolasjon . [* 1] I dette tilfellet, i stedet for å velge å duplisere en kolonne for å fylle de tomme pikslene, tar du et gjennomsnitt av verdiene i kolonnene til venstre og høyre av hver tomme piksel, og bruk denne beregnede verdien i stedet.

Hvis du ser nøye på skjermbildet Advance med et ikke-strukket Game Boy-spill, så et strukket, er det mulig å identifisere hvilket kolonnene har fått verdiene sine beregnet av denne «gjennomsnittlige» interpolasjonen.

Her er noen detaljerte bilder av «AY» fra «1Player» -teksten:

Bokstaver AY, ikke strukket < -strakt Bokstaver AY, strukket < -strakt

På venstre side av «A» har en kolonne med piksler blitt interpolert mellom de mørke pikslene til «A» og de lyse pikslene i bakgrunnen. Disse pikslene er beregnet som middelgrå.

På høyre side av «A» har en annen kolonne med interpolerte piksler havnet mellom de to kolonnene med mørke piksler. Gjennomsnittet av to mørke piksler er også mørkt, så det har samme farge som resten av «A». Lignende interpolasjoner er synlige på venstre og høyre side av «Y», og andre steder på skjermen.

Her er et par bilder fra et annet spill, tatt på AGS-101-modellen til Advance SP ( som har en lysere, bakgrunnsbelyst skjerm). [* 2] Du kan spille gjetning-spillet hvis du vil!

AGS-101 detalj, ikke strukket < – ikke strukket AGS-101-detalj, strukket < – strukket

Hvorfor valgte Nintendo å strekke Game Boy-skjermen i en retning, og ikke den andre? Én grunn er at interpolering i en dimensjon er mye enklere enn å gjøre det i to . Men å strekke skjermen vertikalt ville også ha skapt stygge visuelle gjenstander i spillet.

Hvis Nintendo hadde bestemt seg for å strekke de 144 radene med piksler over de 160 radene som var tilgjengelige på Advance «-skjermen, ville de hatt å sette inn 16 interpolerte rader med piksler. 16 er en faktor på 160, slik at de interpolerte radene kan være jevnt fordelt: en hver 10. rad. Men av de ni originale radene, ville bare to være ved siden av en ny pf-piksellramme, den andre syv ville ikke t. Som et resultat ville noen rader være «strukket» ut av interpolasjonen, andre ville ikke t. Dette ville resultere i at Mario s hatt strakte seg og komprimerte litt mens han hoppet for eksempel og ville være distraherende for spilleren.


  1. Denne teknikken (spesielt den todimensjonale bilinær interpolasjon ) brukes når du endrer størrelsen på et bilde i bildemanipuleringsprogramvare som Photoshop eller GIMP. Den brukes også på LCD-skjermer på datamaskinen, hvis du velger en oppløsning (f.eks. 640×480) som ikke samsvarer med skjermens opprinnelige oppløsning (f.eks. 1024×768). Men fordi GBA bare strekker skjermen i en dimensjon (horisontalt), det trenger bare å gjøre en enklere lineær interpolasjon av bildet.

  2. Med tillatelse fra snips-n-snegler

Kommentarer

  • @Tommy You ' er begge rett. Strekking er ikke ' t gjort i vertikal retning, så Kaz er riktig på det. I horisontal retning, strekker er nærmeste nabo som du sa, ikke interpolert (bilinearfiltrert) som Kaz sa.
  • På toppen av kommentarene dine om mangel på vertikal strekking, vil det kreve en stor buffer, siden skanning ut av linjer er synkron med respekt for spillet. Du kan ' t bare gå tilbake og skanne en ekstra kopi av en linje, selv om du ønsket å gjøre det (som ville se forferdelig ut), fordi innholdet kan ha endret seg . Faktisk brukte mange gameboy-spill endringer i skjerminnholdet på hblank for å skape effekter eller bare for å få plass til flere sprites på skjermen.
  • @Kaz Jeg kunne ikke ' ikke fortelle fra bildene dine, så jeg tok mine egne og nok en gang har du rett. imgur.com/a/5Cc6IY9
  • @ snips-n-snegler de bildene er flotte! Jeg ' har klart å finne makroobjektivadapteren min, og har erstattet de originale bildene mine, men AGS-101 ' skjermen er miles skarpere enn min myrstandard Advance. Kan jeg legge til bildene dine i svaret?
  • @Kaz Visst, fortsett rett frem.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *