Az eredeti gameboy, GBP és GBC képernyőfelbontása 160×144 [1] míg a Game Boy Advanced felbontása 240×160 volt [2]

Tehát hogyan történik a tényleges nyújtás? Elég egyöntetűnek tűnik, de egy második képernyő nélkül nem tudom átgondolni a fejemet, hogy ez technikailag hogyan valósítható meg.

Válasz

Először is, a nyújtás nem történik függőleges irányban: A Game Boy (és a Color) játékok csak 144 sort használtak a 160-ból, amelyek elérhetők az Advance képernyőn, így a tetején és az alján “fekete” letterbox “sávok vannak, hogy kinyújtotta-e a kép szélesvásznát (a vállgombokkal) vagy sem.

Golf címképernyő a GBA SP-n, nyújtatlan Golf cím képernyő a GBA SP-n, kifeszítve

Vízszintesen a kép határozottan kifeszített. Ha az Advance-nek kétszerese lenne a Game Boy vízszintes felbontása, akkor könnyű lenne nyújtani: az egyes pixeloszlopokat kétszer meg lehet ismételni. Ez tulajdonképpen azt jelentené, hogy a Game Boy egyes képpontjai kétszer olyan szélesek voltak, mint korábban. Nem mindig lehetséges a képernyő felbontásának megduplázása; valószínű, hogy egy ilyen felbontás nem volt elérhető (vagy megfizethető) kézi méretben az Advance idején.

Ehelyett a Nintendo kiválasztott egy képernyőt az Advance számára, amelynek felbontása egy másfélszerese (vagy 3/2) az eredeti Game Boy-nak (160 x 3/2 = 240). Egy régi Game Boy játék minden két pixeloszlopát most “ki kell nyújtani” az Advance képernyő három oszlopán.

De milyen értékeket kell rendelni a képpontokhoz ezen extra harmadik oszlopokban ? Megduplázhatja az eredeti oszlopok egyes képpontjait, megduplázva az összes páratlan oszlop vagy akár a páros oszlopok “szélességét”. “Ez egyszerű módszer, de nem néz ki olyan jól, mert egyes oszlopok egyáltalán nem duplázódnak meg, mások viszont.

Alternatív megközelítés a interpoláció . [* 1] Ebben az esetben ahelyett, hogy egy üres oszlop másolatát választaná az üres pixelek kitöltése helyett, a bal és jobb oldali oszlopokban szereplő értékek átlagát veszi minden egyes üres pixelt, és ezt a számított értéket használja.

Ha alaposan megnézi az Advance kijelzőjét egy nyújtatlan, majd egy kifeszített Game Boy játékkal, akkor azonosítani lehet, hogy melyik az oszlopok értékeit ezzel az “átlagoló” interpolációval számolták ki.

Íme néhány részletes fotó az “AY” -ról az “1Player” szövegből:

AY betűk, nyújtatlan < -unstretched AY betűk, nyújtva < -nyújtva

Az “A” bal oldala pixeloszlopot interpolált az “A” sötét képpontjai és a háttér világos képpontjai között. Ezeket a képpontokat közepes szürke színnel átlagoltuk.

Az “A” jobb oldalán egy másik interpolált pixel oszlop került a két sötét pixel oszlop közé. Két sötét pixel átlaga szintén sötét, tehát ugyanolyan színű, mint az “A” többi része. Hasonló interpolációk láthatók az “Y” bal és jobb oldalán, valamint a képernyőn másutt.

Itt található egy pár játék egy másik játékból, az Advance SP AGS-101 modelljén ( (amelynek világosabb, háttérvilágítású képernyője van). [* 2] Ha akarod, játszhatod a játékot! “> AGS-101 részlet, nyújtatlan

< – nyújtatlan AGS-101 részlet, kinyújtva < – kinyújtva

Miért döntött úgy a Nintendo, hogy a Game Boy kijelzőt egy irányba nyújtja, és nem a másik? Ennek egyik oka, hogy az egy dimenzióban történő interpolálás sokkal egyszerűbb, mint kettőben . De a képernyő függőleges megnyújtása csúnya vizuális tárgyakat is létrehozott volna a játékban.

Ha a Nintendo úgy döntött, hogy a 144 pixelsort az Advance képernyőn elérhető 160 sor fölé nyújtja, akkor 16 interpolált pixelsor beszúrása. A 16 160-szoros, így az interpolált sorok egyenletesen helyezhetők el: 10 soronként egy. De a kilenc eredeti sor közül csak kettő lenne egy új sor pf pixel mellett, a másik hét nem akarja. Ennek eredményeként egyes sorokat az interpoláció “kinyújtja”, mások nem “t”. Ennek eredményeként Mario kalapja kissé megnyúlik és összenyomódik, amikor például ugrik, és zavaró lesz a játékos számára.


  1. Ezt a technikát (különösen a kétdimenziós bilináris interpolációt ) akkor használjuk, amikor átméretezzük a képet képkezelő szoftverekben, például Photoshop vagy GIMP. Számítógépes LCD-kijelzőn is használják, ha olyan felbontást választ (pl. 640×480), amely nem egyezik meg a kijelző natív felbontásával (pl. 1024×768). De mivel a GBA csak egy dimenzióban nyújtja a képernyőt (vízszintesen), csak a kép egyszerűbb lineáris interpolációját kell elvégeznie.

  2. A snips-n-snails

Megjegyzések

  • @Tommy You ' mindkettő igaza van. A nyújtást nem ' nem végezzük függőleges irányban, így Kaz ebben helyes. Vízszintes irányban nyújtás a legközelebbi szomszéd, ahogy mondta, nem interpolált (bilinárisan szűrt), ahogy Kaz mondta.
  • A függőleges nyújtás hiányával kapcsolatos észrevételei mellett nagy pufferre lenne szükség, mivel a vonalakból történő szkennelés szinkron tiszteletben tartva a játékot. ' nem csak visszaléphet, és beolvashat egy sor további példányát, még akkor is, ha ezt szerette volna megtenni (ami szörnyen néz ki), mert a tartalma megváltozhatott . Valójában sok gameboy-játék felhasználta a hblank megjelenítési tartalmának változtatásait effektusok létrehozásához vagy csak azért, hogy több sprit jelenjen meg a képernyőn.
  • @Kaz nem tudtam ' ne mondd el a fotóidból, így én készítettem a sajátomat, és még egyszer igazad van. imgur.com/a/5Cc6IY9
  • @ snips-n-snails ezek a fotók remekek! ' Megtaláltam a makro objektív adapteremet, és kicseréltem az eredeti képeimet, de az AGS-101 ' képernyője mérföldes élesebb, mint a láp normám Advance. Hozzáadhatom a képeit a válaszhoz?
  • @Kaz Persze, folytassa előre.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük