De oorspronkelijke gameboy, GBP en GBC hadden allemaal een schermresolutie van 160×144 [1] terwijl de Game Boy Advanced een resolutie had van 240×160 [2]

Dus hoe vindt het daadwerkelijke uitrekken plaats? Het lijkt vrij uniform, maar ik kan mijn hoofd er niet omheen wikkelen hoe het technisch haalbaar is zonder een tweede scherm.

Antwoord

Ten eerste wordt het uitrekken niet in verticale richting gedaan: Game Boy (en Color) -games gebruikten slechts 144 rijen van de 160 die beschikbaar zijn op het geavanceerde scherm, dus er zouden “zwarte” brievenbus “-balken aan de boven- en onderkant zijn, of je de afbeelding nu breedbeeld (met de schouderknoppen) hebt uitgerekt of niet.

Golftitelscherm op GBA SP, niet uitgerekt Golftitelscherm op GBA SP, uitgerekt

Horizontaal is de afbeelding zeker uitgerekt. Als de Advance twee keer de horizontale resolutie van de Game Boy had, zou hij gemakkelijk kunnen worden uitgerekt: elke kolom met pixels zou twee keer kunnen worden herhaald. Het zou in feite betekenen dat elk van de Game Boy-pixels twee keer zo breed was als voorheen. Het is niet altijd haalbaar om de resolutie van je scherm te verdubbelen; het is waarschijnlijk dat een dergelijke resolutie ten tijde van de Advance niet beschikbaar (of betaalbaar) was in een handheldformaat.

In plaats daarvan koos Nintendo een scherm voor de Advance met een resolutie die er één is. anderhalf keer (of 3/2) die van de originele Game Boy (160 x 3/2 = 240). Elke twee kolommen met pixels van een oude Game Boy-game moeten nu worden “uitgerekt” over drie kolommen van het Advance-scherm.

Maar welke waarden moeten worden toegewezen aan de pixels in deze extra derde kolommen U kunt enkele van de oorspronkelijke kolommen “pixels verdubbelen, de” breedte “van alle oneven kolommen verdubbelen, of misschien zelfs de even. Het is een eenvoudige methode, maar ziet er niet zo goed uit, omdat sommige kolommen helemaal niet worden verdubbeld, maar andere wel.

Een alternatieve benadering is het gebruik van een techniek genaamd interpolatie . [* 1] In dit geval kiest u niet voor het dupliceren van één kolom om de lege pixels te vullen, maar neemt u een gemiddelde van de waarden in de kolommen links en rechts van elke lege pixel, en gebruik in plaats daarvan deze berekende waarde.

Als je goed kijkt naar het scherm van Advance met een niet-uitgerekte Game Boy-game en dan een uitgerekte Game Boy-game, is het mogelijk om te bepalen welke kolommen hebben hun waarden berekend door deze “gemiddelde” interpolatie.

Hier zijn enkele gedetailleerde fotos van de “AY” uit de “1Player” tekst:

Letters AY, unstretched < -unstretched Letters AY, uitgerekt < -stretched

Op de linkerkant van de “A”, een kolom met pixels is geïnterpoleerd tussen de donkere pixels van de “A” en de lichte pixels van de achtergrond. Deze pixels zijn gemiddeld als middelgrijs.

Aan de rechterkant van de “A” is een andere kolom met geïnterpoleerde pixels tussen de twee kolommen met donkere pixels terechtgekomen. Het gemiddelde van twee donkere pixels is ook donker, dus het heeft dezelfde kleur als de rest van de “A”. Vergelijkbare interpolaties zijn zichtbaar aan de linker- en rechterkant van de “Y”, en elders op het scherm.

Hier is een paar fotos van een ander spel, genomen op het AGS-101-model van de Advance SP ( met een helderder verlicht scherm). [* 2] Je kunt het spel raden als je wilt!

AGS-101 detail, niet-uitgerekt < – niet-uitgerekt AGS-101-detail, uitgerekt < – uitgerekt

Waarom koos Nintendo ervoor om het Game Boy-scherm in één richting uit te rekken, en niet de andere? Een van de redenen is dat het interpoleren in één dimensie veel eenvoudiger is dan in twee . Maar het verticaal uitrekken van het scherm zou ook lelijke visuele artefacten in het spel hebben veroorzaakt.

Als Nintendo had besloten de 144 rijen pixels uit te rekken over de 160 rijen die beschikbaar waren op het scherm van de Advance, zouden ze om 16 geïnterpoleerde rijen pixels in te voegen. 16 is een factor 160, dus de geïnterpoleerde rijen kunnen gelijkmatig worden verdeeld: één elke 10 rijen. Maar van de negen oorspronkelijke rijen zouden er slechts twee naast een nieuwe rij met pixels staan, de andere zeven zouden niet. Als gevolg hiervan zouden sommige rijen “uitgerekt” worden door de interpolatie, andere niet. Dit zou bijvoorbeeld resulteren in het uitrekken en samendrukken van Marios hoed tijdens het springen, en zou de speler afleiden.


  1. Deze techniek (in het bijzonder de tweedimensionale bilineaire interpolatie ) wordt gebruikt wanneer u het formaat van een afbeelding wijzigt in beeldmanipulatiesoftware zoals Photoshop of GIMP. Het wordt ook gebruikt op LCD-schermen van computers, als u een resolutie selecteert (bijv. 640 x 480) die niet overeenkomt met de oorspronkelijke resolutie van het scherm (bijv. 1024 x 768). Maar omdat de GBA het scherm slechts in één dimensie (horizontaal) uitrekt, het hoeft alleen een eenvoudiger lineaire interpolatie van de afbeelding uit te voeren.

  2. Met dank aan snips-n-slakken

Reacties

  • @Tommy Jij ' re beide rechts. Rekken wordt niet ' gedaan in verticale richting, dus Kaz heeft daar gelijk in. In horizontale richting, strekken is de naaste buur zoals je zei, niet geïnterpoleerd (bilineair gefilterd) zoals Kaz zei.
  • Bovenop je opmerkingen over het gebrek aan verticaal uitrekken, zou het een grote buffer vereisen, aangezien het scannen van lijnen synchroon is met respect voor het spel. U kunt ' niet gewoon teruggaan en een extra kopie van een regel scannen, zelfs als u wilde dat doen (wat er vreselijk uitziet), omdat de inhoud mogelijk is veranderd . In feite maakten veel gameboy-games gebruik van wijzigingen in de inhoud van het scherm op hblank om effecten te creëren of gewoon om meer sprites op het scherm te passen.
  • @Kaz Ik kon ' vertel het niet aan je fotos, dus ik heb mijn eigen fotos genomen en nogmaals, je hebt gelijk. imgur.com/a/5Cc6IY9
  • @ snips-n-slakken die fotos zijn geweldig! Ik ' heb mijn macrolensadapter gevonden en heb mijn originele fotos vervangen, maar het scherm van je AGS-101 ' is mijlenver scherper dan mijn standaard Advance. Mag ik je fotos aan het antwoord toevoegen?
  • @Kaz Natuurlijk, ga je gang.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *