Em janeiro de 2021, o speedrunner de Paper Mario Morpheus esbarrou, durante uma transmissão ao vivo, em um misterioso travamento do jogo. A comunidade rastreou a causa até a "matriz de efeitos", uma estrutura de dados que armazena detalhes de efeitos visuais como a fumaça do martelo: por meio de um bug de menu que armazena permanentemente efeitos normalmente temporários, o jogador pode transbordar a matriz para memória não relacionada, que o console executa como código de máquina sem sentido.
Transformar esse travamento em código útil exigia posicionar Mario com precisão tamanha que suas coordenadas 3D caíssem em deslocamentos exatos dentro da matriz — algo brutal, porque a gravidade restringe sua posição vertical. Em meados de fevereiro, o corredor Fray havia feito os cálculos de posicionamento e demonstrado a execução de código com ferramentas de emulação; dias depois, Rain publicou uma speedrun completa assistida por ferramentas que saltava aos créditos mais rápido do que qualquer corrida anterior baseada em bugs. Mas o posicionamento estava além da capacidade humana — e é aí que Ocarina of Time entra.
O streamer JCog explicou a peça-chave: o estouro acaba desviando a execução para perto das flags do jogador e de um temporizador de inatividade. "Se deixarmos esse temporizador de inatividade chegar a qualquer valor entre 0x810 e 0x81f, o que equivale a 69 segundos, antes de liberar os efeitos armazenados, então a execução salta para a memória do expansion pak, que Paper Mario não usa." O truque: usar um método ACE já existente de Ocarina of Time — da mesma família do famoso bug de inserção da Arwing, repetido duas vezes com nomes de arquivo cuidadosamente construídos — para primeiro carregar uma instrução de assembly escolhida nessa memória do expansion pak.
O ingrediente final é uma peculiaridade de hardware: os primeiros N64 mantêm a RAM do expansion pak viva por alguns segundos após o desligamento — a mesma idiossincrasia por trás do sistema abandonado de desbloqueio entre cartuchos "Stop n' Swop" da Rare. Jogue Ocarina, plante a instrução, desligue, troque a quente para Paper Mario, e o estouro dele salta para uma memória que agora contém o seu código. Nenhum dos dois jogos usa oficialmente o expansion pak; juntos, eles o transformaram em um canal de execução.
Dois jogos podem cooperar em um ataque: um jogo planta código de máquina na RAM do expansion pak, e uma troca a quente de cartucho transfere a execução para ele em outro jogo.
Isso compõe três falhas independentes — um estouro da matriz de efeitos, uma escrita ACE de um segundo jogo e a persistência da RAM após o desligamento — em um ataque entre cartuchos contra o qual ninguém projetou defesa.
O truque do temporizador de inatividade converte uma exigência de precisão humanamente impossível em um tempo de espera, tornando o exploit conceitualmente executável em hardware real.
Isso ressuscita o Stop n' Swop — um recurso cancelado dos anos 1990 — como primitiva ofensiva, duas décadas depois.
A descoberta foi sequencial na comunidade: o travamento acidental de um corredor, a matemática de outro, a TAS de um terceiro e a explicação do mapa de memória de um streamer.
Superfícies de ataque se compõem: um bug em um jogo, uma primitiva de escrita em outro e um estado de hardware não limpo entre eles podem somar-se para produzir execução de código arbitrária que nenhum componente isolado expõe sozinho.
A corrida assistida por ferramentas de Rain saltou Paper Mario direto aos créditos mais rápido do que as rotas de bugs mais rápidas viáveis para humanos. A reportagem da Ars Technica enquadrou o método como recorde para TAS; uma execução humana em tempo real permanece fora de alcance devido à precisão de posicionamento exigida.
CONFIRA AS EVIDÊNCIAS
As fontes
- How to beat Paper Mario really fast by... playing Ocarina of Time? Ars Technica · arstechnica.com ·