Gameboy-ul original, GBP și GBC au avut rezoluții de ecran de 160×144 [1] în timp ce Game Boy Advanced avea o rezoluție de 240×160 [2]
Deci, cum se produce întinderea reală? Pare destul de uniform, dar nu pot să-mi înfășur modul în care este realizabil din punct de vedere tehnic fără un al doilea ecran.
Răspuns
În primul rând, întinderea nu se face în direcție verticală: jocurile Game Boy (și Color) foloseau doar 144 de rânduri din cele 160 disponibile pe ecranul Advance, deci ar fi bare negre „cutie poștală” în partea de sus și de jos, indiferent dacă ați întins ecranul panoramic al imaginii (cu butoanele umărului) sau nu.
Pe orizontală, imaginea este cu siguranță întinsă. Dacă Advance ar avea rezoluția orizontală de două ori mai mare decât Game Boy, ar fi ușor de întins: fiecare coloană de pixeli ar putea fi repetată de două ori. Ar însemna efectiv că fiecare dintre pixelii Game Boy au fost de două ori mai largi decât înainte. Nu este întotdeauna fezabil să dublezi rezoluția ecranului; este probabil ca o astfel de rezoluție să nu fie disponibilă (sau accesibilă) într-o dimensiune portabilă în momentul Advance.
În schimb, Nintendo a selectat un ecran pentru Advance care avea o rezoluție care să fie una și de jumătate (sau 3/2) față de Game Boy-ul original (160 x 3/2 = 240). La fiecare două coloane de pixeli dintr-un joc vechi Game Boy va trebui acum „întins” peste trei coloane ale ecranului Advance.
Dar ce valori ar trebui atribuite pixelilor din aceste trei coloane suplimentare ? Puteți dubla câțiva pixeli ai coloanelor originale, dublând „lățimea” tuturor coloanelor impare, sau poate a celor pare. „Este o metodă simplă, dar nu arată atât de bine, deoarece unele coloane nu vor fi deloc dublate, dar altele o vor face.
O abordare alternativă este utilizarea unei tehnici numite interpolare . [* 1] În acest caz, în loc să alegeți să copiați o coloană pentru a umple pixelii goi, luați o medie a valorilor din coloanele din stânga și din dreapta din fiecare pixel gol și utilizați în schimb această valoare calculată.
Dacă priviți cu atenție afișajul Advance cu un joc Game Boy nedistins, apoi unul întins, este posibil să identificați care coloanelor li s-au calculat valorile prin această interpolare „medie”.
Iată câteva fotografii detaliate ale „AY” din textul „1Player”:
Pe partea stângă a „A”, o coloană de pixeli a fost interpolată între pixelii întunecați ai „A” și pixelii luminoși ai fundalului. Acești pixeli au fost calculați ca un gri mediu.
În partea dreaptă a „A”, o altă coloană de pixeli interpolați a ajuns între cele două coloane de pixeli întunecați. Media a doi pixeli întunecați este, de asemenea, întunecată, deci are aceeași culoare ca și restul „A”. Interpolații similare sunt vizibile pe partea stângă și dreaptă a „Y”, și în altă parte pe ecran.
Iată o pereche de imagini dintr-un alt joc, realizate pe modelul AGS-101 al Advance SP ( care are un ecran mai luminos, cu iluminare din spate). [* 2] Puteți juca ghici jocul dacă doriți!
De ce Nintendo a ales să întindă ecranul Game Boy într-o singură direcție și nu celălalt? Unul dintre motive este că interpolare în o dimensiune este mult mai simplă decât o faceți în două . Dar întinderea ecranului pe verticală ar fi creat și artefacte vizuale inestetice în joc.
Dacă Nintendo ar fi decis să întindă 144 de rânduri de pixeli peste 160 de rânduri disponibile pe ecranul Advance, ar fi avut pentru a insera 16 rânduri interpolare de pixeli. 16 este un factor de 160, astfel încât rândurile interpolate ar putea fi distanțate uniform: unul la fiecare 10 rânduri. Dar din cele nouă rânduri inițiale, doar două ar fi lângă un nou rând pf pixeli, celălalt șapte nu ar fi. Ca rezultat, unele rânduri ar fi „întinse” prin interpolare, altele nu ar fi. Acest lucru ar duce la pălăria lui Mario întinzându-se și comprimându-se ușor în timp ce sare, de exemplu, și ar distrage atenția jucătorului.
-
Această tehnică (în special interpolare biliniară ) este utilizată atunci când redimensionați o imagine în software-ul de manipulare a imaginilor precum Photoshop sau GIMP. Este, de asemenea, utilizat pe afișajele LCD ale computerului, dacă selectați o rezoluție (de ex. 640×480) care nu se potrivește cu rezoluția nativă a afișajului (de exemplu, 1024×768). trebuie doar să facă o mai simplă interpolare liniară a imaginii.
-
Amabilitatea snips-n-snails
Comentarii
- @Tommy You ' amândouă sunt corecte. Stretching-ul nu se face ' în direcția verticală, așa că Kaz este corect în acest sens. În direcția orizontală, întinderea este cel mai apropiat vecin așa cum ați spus, nu interpolat (filtrat biliniar), așa cum a spus Kaz.
- Pe lângă comentariile dvs. despre lipsa întinderii verticale, ar necesita un tampon mare, deoarece scanarea în afara liniilor este sincronă cu cu privire la joc. Nu poți ' să te duci înapoi și să scanezi o copie suplimentară a unei linii, chiar dacă am vrut să fac asta (ceea ce ar arăta îngrozitor), deoarece conținutul s-ar fi putut schimba . De fapt, o mulțime de jocuri gameboy au folosit modificări ale conținutului afișat la hblank pentru a crea efecte sau doar pentru a se potrivi mai multor sprite pe ecran.
- @Kaz nu puteam ' Nu-mi spune din fotografiile tale, așa că mi-am făcut-o pe a mea și încă o dată ai dreptate. imgur.com/a/5Cc6IY9
- @ snips-n-snails acele fotografii sunt grozave! Am ' am reușit să-mi găsesc adaptorul pentru obiectiv macro și am înlocuit pozele originale, dar ecranul dvs. AGS-101 ' este de mile mai clară decât standardul meu de mlaștină Advance. Pot să vă adaug fotografiile la răspuns?
- @Kaz Sigur, mergeți înainte.