Je m'attendais à ce que ça marche du 1er coup

- Mortal, en train de bricoler la console de mixage

Dojobar
L'émission de radio déjantée qui revient toutes les deux semaines !

Émission s22e06 − Super Mario RPG
Le 9 décembre 2023, par Mortal






Dojodirect
Des jeux de merde joués par des connards en direct !



Direct du 2024-04-09 sur Splatoon (Wii U)
Le 14 avril 2024, par Jean-Fulgence




L’histoirique du speed-run de The Legend of Zelda: Ocarina of Time (partie 4)

Où l’on va jouer avec des bits

La grande question devait être posée : est-il possible de faire moins d’une heure et si oui comment ?

Descendre à un peu plus d’une heure est déjà est bel exploit, mais on abandonne pas le retournement complet d’un jeu comme ça… Et pour ça, il a fallu exploiter deux bogues amusants et dont personne ne voyait l’utilité jusqu’à présent.

Voilà ce qui se passe quand on joue avec des bits

Le Reverse Bottle Adventure est une technique de manipulation de mémoire, liée à un bogue, dont le nom provient d’un autre bogue (Bottle Adventure qui permet de récupérer une bouteille à partir de n’importe quel objet). Et pour comprendre ces bogues, il va faloir comprendre comment fonctionne la gestion de la mémoire sur un ordinateur ou une console.

Une console ou un ordinateur ne « comprend » pas ce qui est manipulé. Elle ne manipule que des chiffres qui sont stockés en mémoire sous forme binaire (des 0 ou des 1), des bits, regroupés par paquets de 8, des octets.

Chaque octet de la mémoire de la console a une adresse que l’on exprime en général en hexadécimal (donc avec des chiffres allant de 0 à 9, puis des lettres allant de A à F). On peut donc donner par exemple la valeur 0x00 (donc 0 en décimal) à l’adresse 8011A644 ou encore la valeur 0x1B (27 en décimal) à l’adresse 80117652.

Maintenant, il faut bien comprendre que du point de vue de la console, tout dans le menu Item (équipable sur les boutons C) n’est rien d’autre que des valeurs qui se trouvent à certaines adresses dans la mémoire. Ces valeurs vont de 0x00, 0 en décimal, qui correspond au bâton mojo, à 0xff, 255 en décimal, qui est l’absence d’objet (oui, même ça, c’est une valeur !). À noter que TOUS les autres objets ont une valeur également, même ceux qui n’apparaissent pas dans l’inventaire ou qui peuvent « changer de forme » (!). Par exemple l’Ocarina des fées et l’Ocarina du temps (qui sont au même emplacement dans l’inventaire) sont deux objets différents avec une valeur différente (respectivement 0x07 et 0x08). L’objet le plus intéressant restant la bouteille : ce n’est pas un objet (fée) dans un autre (bouteille), mais bien une collection d’objets, et donc de valeurs. La bouteille vide est 0x14 (20), la potion rouge 0x15 (21), la bouteille de lait à moitié vide 0x1f (31), etc.

Un bon aventurier, c’est avant tout un bon équipement

L’inventaire en lui-même est une série d’adresses consécutives en mémoire, qui commence par 8011A644, l’adresse du premier élément équipable du jeu. Cette partie de l’inventaire contient 24 emplacements, il y a donc 24 adresses, une pour chaque emplacement, dans lequel on vient placer une valeur correspondant à un objet. Au tout début de l’aventure, cette partie de l’inventaire est vide, les 24 adresses sont donc remplies avec des 0xff (soit que des 1 binaire). Le schéma ci-dessous permet de ce rendre compte de l’emplacement et de la valeur des cases mémoire pour une partie assez avancée :

C

La quantité de munitions de chaque item de cet écran (oui chaque même l’Ocarina a des munitions, mais je te rassure, ça ne s’affiche pas à l’écran et ça ne change rien si l’on met une valeur) est géré dans les 16 adresses suivantes de la mémoire (c’est un vulgaire nombre en l’occurence) :

C

Et pour les autres équipements (tuniques, boucliers, épées, mélodies, médaillons, etc) ? Comme ils ne peuvent pas changer pendant l’aventure (contrairement aux bouteilles par exemple), ils sont groupés dans des octets, pour des questions d’optimisation, et sont simplement visibles et sélectionnables si la valeur binaire dans l’octet en question est à 1. Par exemple, l’octet 8011A66C contient une partie du menu : si la valeur est à 0x03 en hexadécimal, donc 0000 0011 en binaire, alors l’inventaire affiche la tunique Kokiri (le 1 tout à droite) et la tunique Goron (l’autre 1). L’image suivante vous montre la cartographie de chaque page du menu pause :

C

C

Dans le prochain numéro, nous verrons comment fonctionnent les boutons B et C sur l’écran principal, ce qui permettra d’expliquer en détails le Reverse Bottle Adventure.


Par Mortal
Le 17 septembre 2012 | Catégories : Editos

Je le couperai au montage…
Voir les articles de Mortal

A voir également
Les trucs qu'on a rédigés avec nos petits doigts potelés

Dojo Hebdo 577 : du 15 au 21 avril 2024
Le 21 avril 2024, par Gueseuch

Dojo Hebdo 576 : du 8 au 14 avril 2024
Le 14 avril 2024, par Gueseuch

Dojo Hebdo 575 : du 1er au 7 avril 2024
Le 7 avril 2024, par Gueseuch


Dojo Hebdo 574 : du 25 au 31 mars 2024
Le 31 mars 2024, par Gueseuch

Dojo Hebdo 573 : du 18 au 24 mars 2024
Le 24 mars 2024, par Gueseuch

Vite vu : Mother Russia Bleeds (NS)
Le 18 mars 2024, par Mortal

Dojo Hebdo 572 : du 11 au 17 mars 2024
Le 17 mars 2024, par Gueseuch


Dojo Hebdo 571 : du 4 au 10 mars 2024
Le 10 mars 2024, par Gueseuch


Dojobar
L'émission de radio déjantée qui revient toutes les deux semaines !

Émission s22e06 − Super Mario RPG
Le 9 décembre 2023, par Mortal






Dojodirect
Des jeux de merde joués par des connards en direct !



Direct du 2024-04-09 sur Splatoon (Wii U)
Le 14 avril 2024, par Jean-Fulgence