Le gameboy dorigine, GBP et GBC avaient tous une résolution décran de 160 x 144 [1] alors que la Game Boy Advanced avait une résolution de 240×160 [2]
Alors, comment létirement se produit-il? Cela semble assez uniforme, mais je ne peux pas comprendre comment cela est techniquement réalisable sans un deuxième écran.
Réponse
Premièrement, létirement ne se fait pas dans le sens vertical: les jeux Game Boy (et Color) nutilisaient que 144 rangées sur les 160 disponibles sur lécran Advance, il y aurait donc des barres «boîte aux lettres» noires en haut et en bas, que vous ayez étiré ou non limage grand écran (avec les boutons dépaule).
Horizontalement, limage est définitivement étirée. Si lAdvance avait deux fois la résolution horizontale de la Game Boy, il serait facile de létirer: chaque colonne de pixels pourrait être répétée deux fois. Cela signifierait effectivement que chacun des pixels de la Game Boy était deux fois plus large quauparavant. Il nest pas toujours possible de doubler la résolution de votre écran; il est probable quune telle résolution nétait pas disponible (ou abordable) dans un ordinateur de poche au moment de lAdvance.
Au lieu de cela, Nintendo a choisi un écran pour lAdvance qui avait une résolution qui en est une et demie (ou 3/2) celle du Game Boy original (160 x 3/2 = 240). Toutes les deux colonnes de pixels dun ancien jeu Game Boy devront désormais être « étirées » sur trois colonnes de lécran de lAdvance.
Mais quelles valeurs doivent être attribuées aux pixels dans ces troisièmes colonnes supplémentaires ? Vous pouvez doubler certaines des colonnes originales « pixels », doubler la « largeur » de toutes les colonnes impaires, ou peut-être les paires. Cest une méthode simple, mais qui na pas lair très bonne, car certaines colonnes ne seront pas du tout doublées, mais dautres le seront.
Une autre approche consiste à utiliser une technique appelée interpolation . [* 1] Dans ce cas, plutôt que de choisir de dupliquer une colonne pour remplir les pixels vides, vous prenez une moyenne des valeurs dans les colonnes de gauche et de droite de chaque pixel vide, et utilisez plutôt cette valeur calculée.
Si vous regardez de près l’affichage de l’Advance avec un jeu Game Boy non étiré, puis un jeu étiré, il est possible d’identifier lequel les valeurs des colonnes ont été calculées par cette interpolation de «moyenne».
Voici quelques photos détaillées du «AY» du texte «1Player»:
Sur le côté gauche du « A », une colonne de pixels a été interpolée entre les pixels sombres du « A » et les pixels clairs de larrière-plan. Ces pixels ont été moyennés en gris moyen.
Sur le côté droit du « A », une autre colonne de pixels interpolés sest retrouvée entre les deux colonnes de pixels sombres. La moyenne de deux pixels sombres est également sombre, cest donc la même couleur que le reste du « A ». Des interpolations similaires sont visibles sur les côtés gauche et droit du « Y », et ailleurs sur lécran.
Voici une paire de photos dun autre jeu, prises sur le modèle AGS-101 de lAdvance SP ( qui a un écran rétro-éclairé plus lumineux). [* 2] Vous pouvez jouer à deviner le jeu si vous le souhaitez!
Pourquoi Nintendo a-t-il choisi détirer lécran Game Boy dans une direction, et pas lautre? Lune des raisons est que linterpolation dans une dimension est beaucoup plus simple que de le faire dans deux . Mais étirer lécran verticalement aurait également créé des artefacts visuels disgracieux dans le jeu.
Si Nintendo avait décidé détirer les 144 lignes de pixels sur les 160 lignes disponibles sur lécran de lAdvance, ils auraient eu pour insérer 16 lignes interpolées de pixels. 16 est un facteur de 160, donc les lignes interpolées pourraient être espacées uniformément: une toutes les 10 lignes. Mais sur les neuf lignes dorigine, seulement deux seraient à côté dune nouvelle ligne pf pixels, lautre sept serait pas. En conséquence, certaines lignes seraient «étirées» par linterpolation, dautres non. Cela entraînerait un étirement et une compression du chapeau de Mario lorsquil sautait, par exemple, et serait gênant pour le joueur.
-
Cette technique (en particulier l interpolation bilinéaire bidimensionnelle ) est utilisée lorsque vous redimensionnez une image dans des logiciels de manipulation dimages tels que Photoshop ou GIMP. Il est également utilisé sur les écrans LCD des ordinateurs, si vous sélectionnez une résolution (par exemple 640×480) qui ne correspond pas à la résolution native de l’écran (par exemple 1024×768). Mais comme le GBA n’étend l’écran que dans une dimension (horizontalement), il suffit de faire une interpolation linéaire plus simple de limage.
-
Avec laimable autorisation de snips-n-snails
Commentaires
- @Tommy You ' tous les deux à droite. Létirement nest ' t effectué dans le sens vertical, donc Kaz est correct sur ce point. Dans le sens horizontal, létirement est le plus proche voisin comme vous lavez dit, non interpolé (filtré bilinéaire) comme la dit Kaz.
- En plus de vos commentaires sur le manque détirement vertical, cela nécessiterait une grande mémoire tampon, car le balayage hors des lignes est synchrone avec par rapport au jeu. Vous pouvez ' simplement revenir en arrière et numériser une copie supplémentaire dune ligne, même si vous voulait faire ça (ce qui aurait lair horrible), car le contenu aurait pu changer . En fait, de nombreux jeux Gameboy ont utilisé des modifications du contenu daffichage de hblank pour créer des effets ou simplement pour insérer plus de sprites à lécran.
- @Kaz I couldn ' T dire à partir de vos photos donc jai pris les miennes et une fois de plus vous avez raison. imgur.com/a/5Cc6IY9
- @ snips-n-snails ces photos sont super! ' jai réussi à trouver mon adaptateur pour objectif macro et jai remplacé mes photos originales, mais lécran de votre AGS-101 ' mesure des kilomètres plus croustillant que mon marais Advance standard. Puis-je ajouter vos photos à la réponse?
- @Kaz Bien sûr, allez-y.