En janvier 2021, le speedrunner de Paper Mario Morpheus est tombé en pleine diffusion en direct sur un mystérieux plantage du jeu. La communauté a remonté la piste jusqu'à la « matrice d'effets », une structure de données qui stocke les détails d'effets visuels comme la fumée du marteau : grâce à un glitch de menu qui conserve de façon permanente des effets normalement temporaires, un joueur peut faire déborder la matrice dans une mémoire sans rapport, que la console exécute comme du code machine parasite.

Transformer ce plantage en code utile exigeait de positionner Mario avec une précision telle que ses coordonnées 3D tombent à des décalages exacts dans la matrice — un vrai supplice, car la gravité contraint sa position verticale. À la mi-février, le runner Fray avait fait les calculs de positionnement et démontré l'exécution de code avec des outils d'émulation ; quelques jours plus tard, Rain a publié un speedrun assisté par outil complet qui se téléportait jusqu'au générique plus vite que n'importe quel run à glitch précédent. Mais le positionnement dépassait les capacités humaines — et c'est là qu'Ocarina of Time est entré en jeu.

Le streamer JCog a expliqué le point charnière : le débordement fait justement sauter l'exécution près des drapeaux du joueur et d'un minuteur d'inactivité. « Si on laisse ce minuteur d'inactivité atteindre une valeur entre 0x810 et 0x81f, soit 69 secondes, avant de libérer les effets stockés, alors l'exécution saute dans la mémoire de l'expansion pak, que Paper Mario n'utilise pas. » L'astuce : recourir à une méthode ACE existante d'Ocarina of Time — la même famille que le célèbre glitch d'insertion d'Arwing, répétée deux fois avec des noms de fichiers soigneusement construits — pour charger d'abord une instruction assembleur choisie dans cette mémoire de l'expansion pak.

Le dernier ingrédient est une bizarrerie matérielle : les premières N64 maintiennent la RAM de l'expansion pak alimentée pendant quelques secondes après l'extinction — la même idiosyncrasie qui se cache derrière le système de déverrouillage inter-cartouches « Stop n' Swop » abandonné par Rare. Jouez à Ocarina, implantez l'instruction, éteignez, permutez à chaud vers Paper Mario, et son débordement saute dans une mémoire qui contient désormais votre code. Aucun des deux jeux n'utilise officiellement l'expansion pak ; ensemble, ils en ont fait un canal d'exécution.

Deux jeux peuvent coopérer dans une attaque : un jeu implante du code machine dans la RAM de l'expansion pak, et une permutation à chaud de cartouche transfère l'exécution à ce code dans un autre jeu.

Cela combine trois failles indépendantes — un débordement de la matrice d'effets, une écriture ACE dans un second jeu et la persistance de la RAM après extinction — en une attaque inter-cartouches contre laquelle personne n'avait conçu de défense.

L'astuce du minuteur d'inactivité transforme une exigence de précision humainement impossible en un simple temps d'attente, rendant l'exploit conceptuellement réalisable sur du matériel réel.

Elle ressuscite Stop n' Swop — une fonctionnalité annulée des années 1990 — comme primitive offensive, deux décennies plus tard.

La découverte a été séquentielle au sein de la communauté : le plantage accidentel d'un runner, les calculs d'un autre, le TAS d'un troisième et l'explication de la carte mémoire par un streamer.

Les surfaces d'attaque se composent : un bug dans un jeu, une primitive d'écriture dans un autre et un état matériel non nettoyé entre les deux peuvent s'additionner pour donner une exécution de code arbitraire qu'aucun composant seul n'expose.

Le run assisté par outil de Rain a téléporté Paper Mario directement jusqu'au générique plus vite que les routes à glitch les plus rapides viables pour un humain. L'article d'Ars Technica a présenté la méthode comme établissant un record pour le TAS ; une exécution humaine en temps réel reste hors de portée en raison de la précision de positionnement requise.

VÉRIFIEZ LES SOURCES

Les sources

  1. How to beat Paper Mario really fast by... playing Ocarina of Time? Ars Technica · arstechnica.com ·