Původní gameboy, GBP a GBC měli rozlišení obrazovky 160×144 [1] zatímco Game Boy Advanced měl rozlišení 240×160 [2]
Jak tedy nastává skutečné protahování? Vypadá to docela jednotně, ale nemohu si „obmotat hlavu, jak je to technicky dosažitelné bez druhé obrazovky.
Odpověď
Za prvé, roztahování není provedeno ve svislém směru: Hry Game Boy (a Color) používaly pouze 144 řad ze 160 dostupných na obrazovce Advance, takže v horní a dolní části jsou pruhy „letterbox“ černé, bez ohledu na to, zda jste natáhli širokoúhlý obrázek (pomocí tlačítek na rameni), nebo ne.
Horizontálně je obraz rozhodně roztažený. Pokud by Advance měl dvojnásobné horizontální rozlišení než Game Boy, bylo by snadné ho natáhnout: každý sloupec pixelů by se mohl opakovat dvakrát. Účinně by to znamenalo, že každý z pixelů Game Boy byl dvakrát tak široký jako dříve. Zdvojnásobení rozlišení obrazovky není vždy možné; je pravděpodobné, že takové rozlišení nebylo v době Advance k dispozici (nebo dostupné) v kapesní velikosti.
Místo toho společnost Nintendo vybrala obrazovku Advance, která měla rozlišení, které je jedno a půlkrát (nebo 3/2) oproti původnímu Game Boy (160 x 3/2 = 240). Každé dva sloupce pixelů ze staré hry Game Boy bude nyní nutné „natáhnout“ na tři sloupce obrazovky Advance.
Ale jaké hodnoty by měly být přiřazeny pixelům v těchto dalších třetích sloupcích „Mohli byste zdvojnásobit některé„ pixely “původních sloupců, zdvojnásobit„ šířku “všech lichých sloupců nebo možná sudých. Je to jednoduchá metoda, ale nevypadá tak dobře, protože některé sloupce nebudou zdvojnásobeny, ale jiné ano.
Alternativním přístupem je použití techniky zvané interpolace . [* 1] V tomto případě namísto výběru duplikování jednoho sloupce za účelem vyplnění prázdných pixelů vezmete průměr hodnot ve sloupcích vlevo a vpravo každého prázdného pixelu a místo toho použijte tuto vypočítanou hodnotu.
Pokud se podíváte pozorně na obrazovku Advance s neroztaženou hrou Game Boy, pak roztaženou, je možné určit, která sloupce mají své hodnoty vypočítané pomocí této „průměrující“ interpolace.
Zde je několik podrobných fotografií „AY“ z textu „1Player“:
Na na levé straně „A“ byl sloupec pixelů interpolován mezi tmavými pixely „A“ a světlými pixely pozadí. Tyto pixely byly zprůměrovány jako středně šedá.
Na pravé straně písmene „A“ skončil mezi dvěma sloupci tmavých pixelů další sloupec interpolovaných pixelů. Průměr dvou tmavých pixelů je také tmavý, takže má stejnou barvu jako zbytek „A“. Podobné interpolace jsou viditelné na levé a pravé straně písmene „Y“ a jinde na obrazovce.
Zde je pár obrázků z jiné hry pořízených na modelu AGS-101 Advance SP ( který má jasnější a podsvícenou obrazovku). [* 2] Můžete hrát hádanky, pokud se vám líbí!
Proč se Nintendo rozhodlo roztáhnout displej Game Boy jedním směrem a ne ten druhý? Jedním z důvodů je, že interpolace v jedné dimenzi je mnohem jednodušší než v dvou . Ale svislé roztažení obrazovky by také vytvořilo nevzhledné vizuální artefakty ve hře.
Pokud by se Nintendo rozhodlo natáhnout 144 řádků pixelů přes 160 řádků dostupných na obrazovce Advance, měli by vložit 16 interpolovaných řádků pixelů. 16 je faktor 160, takže interpolované řádky by mohly být rozmístěny rovnoměrně: jeden každých 10 řádků. Ale z devíti původních řádků by byly jen dva vedle nového řádku pf pixelů, druhý sedm by ne. Výsledkem by bylo, že některé řádky by se interpolací „natáhly“, jiné „t. To by vedlo k tomu, že by se Marioův klobouk napínal a mírně stlačoval, například když skočil, a byl by tím pro hráče rušivý.
-
Tato technika (konkrétně dvourozměrná bilineární interpolace ) se používá při změně velikosti obrázku v softwaru pro manipulaci s obrázky, jako je Photoshop nebo GIMP. Používá se také na LCD displejích počítače, pokud vyberete rozlišení (např. 640×480), které neodpovídá nativnímu rozlišení displeje (např. 1024×768). Ale protože GBA roztáhne displej pouze v jedné dimenzi (horizontálně), stačí udělat jednodušší lineární interpolaci obrazu.
-
S laskavým svolením snips-n-snails
Komentáře
- @ Tommy You ' jsou oba vpravo. Protahování se nedělá ' ve svislém směru, takže Kaz v tom má pravdu. Ve vodorovném směru se protahování je nejbližší soused, jak jste řekl, není interpolován (bilineárně filtrován), jak řekl Kaz.
- Kromě vašich komentářů o nedostatku vertikálního roztažení by to vyžadovalo velkou vyrovnávací paměť, protože skenování z řádků je synchronní s s ohledem na hru. ' se prostě nevrátíte zpět a naskenujete další kopii řádku, i když chtěl to udělat (což by vypadalo hrozně), protože obsah se mohl změnit . Ve skutečnosti spousta her typu gameboy využívala změny obsahu displeje na hblank k vytváření efektů nebo k přizpůsobení více skřítků na obrazovku.
- @Kaz I couldn ' Nevím z vašich fotek, takže jsem si vzal vlastní a znovu máte pravdu. imgur.com/a/5Cc6IY9
- @ snips-n-snails tyto fotografie jsou skvělé! ' Podařilo se mi najít adaptér pro makro objektivy a nahradil mé původní obrázky, ale obrazovka vašeho AGS-101 ' je míle ostřejší než můj standardní rašeliniště Advance. Mohu do odpovědi přidat vaše obrázky?
- @Kaz Jistě, pokračujte.