Como os speedrunners de Zelda: Ocarina of Time quebram o N64 de maneiras novas e incríveis
ReSpec é normalmente uma coluna sobre o maravilhoso mundo técnico dos jogos para PC, mas ocasionalmente há tópicos que são bons demais para deixar passar. The Legend of Zelda: Ocarina of Time é universalmente aclamado como um dos melhores jogos de Nintendo 64 já feitos e, embora não seja um título para PC, os speedruns de nível mais alto e técnico do jogo expõem como os jogos funcionam em um nível fundamental. Mais importante, esses feitos incríveis só são possíveis com muito esforço da comunidade.
Ocarina of Time é um jogo que um jogador normal levaria cerca de 30 horas para vencer; os speedrunners mais habilidosos, que pretendem jogar o mais rápido possível, podem vencê-lo em cerca de três horas e 40 minutos sem falhas. Mas a categoria Any% do jogo, que encarrega os jogadores de completar o jogo independentemente dos métodos usados, caiu para três minutos, 54 segundos e 566 milissegundos. E sim, esses milissegundos importam. O detentor do recorde de segundo lugar está a menos de um segundo atrás do recorde mundial.
Mesmo sendo um feito tão notável, isso não é tudo que os speedruns de Ocarina of Time trazem para a mesa. No Summer Games Done Quick 2022, uma maratona semestral de speedrunning para caridade, houve um showcase que destacou um grupo de speedrunners reprogramando o jogo em tempo real para exibir novos gráficos, tocar novas músicas e até executar uma sobreposição de bate-papo do Twitch. E tudo isso foi feito em uma cópia padrão do jogo sem pré-programação.
A comunidade de speedrunning de Ocarina of Time continuou a quebrar o jogo de maneiras aparentemente impossíveis. Entrei em contato com duas das principais mentes da comunidade para descobrir o que faz o jogo clássico do Nintendo 64 funcionar, e tudo se resume a um exploit: Execução de código arbitrário.
Longe de ser arbitrário
Execução de código arbitrário, ou ACE, soa muito mais intimidante do que realmente é. É um termo usado em segurança cibernética que basicamente significa executar um código (ou um programa) que não deveria ser executado. É assim que dannyb, um speedrunner de Ocarina of Time que detém o recorde de segundo lugar na categoria Any%, descreveu ACE em Ocarina of Time: “Arbitrary Code Execution in OoT é um exploit pelo qual um jogador pode usar ações no jogo para organizar um monte de dados na memória para imitar o código do jogo e, em seguida, manipular o local onde o jogo está procurando para executar o código para ser o local onde acabamos de fazer essa organização.
Com as ações certas, dannyb diz que os jogadores são capazes de “essencialmente executar qualquer código que quisermos dentro do jogo e fazer com que o jogo faça coisas para as quais não foi programado”. Essas ações incluem coisas aparentemente inúteis como o nome que você insere ao iniciar o jogo. Essa é exatamente a ação que permitiu que Ocarina of Time fosse derrotado tão rapidamente.
Em um jogo como Ocarina of Time, o jogo verifica sua memória para um determinado requisito a ser atendido para vencer o jogo. O objetivo em um speedrun Any% é reorganizar a memória para ver o nome do seu personagem em vez de onde ele normalmente apareceria. Isso é chamado de Stale Reference Manipulation, ou SRM, e dannyb diz que o exploit é o que os speedruns crackeados de Ocarina of Time abrem de uma maneira importante.
“ACE em qualquer videogame sempre precisa dessas duas coisas: controle ajustado sobre alguma região da memória, de modo que o jogador possa fazer com que os dados ali imitem o código e a capacidade de alterar o local da execução do código para ser o local onde o código personalizado mentiras. Em 2019, uma falha chamada Stale Reference Manipulation foi descoberta em OoT, o que abriu o segundo requisito em grande estilo”, disse dannyb.
No caso de uma execução normal de Ocarina of Time , ações aparentemente aleatórias se somam para induzir o jogo a verificar áreas (como o nome do seu personagem) para requisitos de conclusão quando não deveriam. É um processo de duas partes. Crie uma carga útil de dados, como o nome do seu personagem, e manipule a memória com o SRM para apontar para essa carga útil.
Hackeando em tempo real
Foi assim que os speedrunners venceram Ocarina of Time em apenas alguns minutos, mas não explica totalmente como o showcase Triforce%, carinhosamente chamado, foi capaz de adicionar novas texturas, modelos, música, código e até mesmo uma sobreposição do Twitch ao jogo sem qualquer modificação no cartucho. Savestate, uma das mentes por trás deste projeto de um ano, explicou que se trata de preparar o console Nintendo 64 para entender os dados do controlador como dados do jogo.
É uma vitrine que só é possível devido ao TASBot, que é capaz de executar entradas em velocidades inumanas. Como explica Savestate, “modificamos uma instrução na memória para começar a ler os dados do controlador como instruções N64. Normalmente, isso travaria, mas graças ao TASBot, ele é capaz de simular controladores e manipulá-los em velocidades inumanas para se parecerem com instruções N64, para que o jogo execute os dados do controlador como um conjunto de instruções predeterminadas.
Resumindo, o showcase da Triforce% está usando ACE e SRM como um speedrun normal de Ocarina of Time , mas está mudando especificamente como o console Nintendo 64 entende as instruções. Com essa configuração, os corredores podem adicionar qualquer código que desejarem ao jogo apenas por meio de entradas do controlador. Savestate continuou: “Não há modificação no cartucho do jogo. Para obter dados personalizados na memória, usamos uma falha que nos permite começar a adicionar e modificar itens na memória com a ajuda do TASBot, enquanto apenas interagimos com o console N64 por meio de suas portas de controlador.
Essas explorações também não são descobertas aleatoriamente. Savestate explicou que a comunidade de Ocarina of Time desenvolveu ferramentas para ver como a memória é organizada no jogo, bem como programas para simular diferentes arranjos de memória. Emuladores como o Project64 ajudam muito, permitindo que os executores e desenvolvedores de ferramentas vejam como o jogo executa o código passo a passo.
Ocarina of Time é um dos jogos mais icônicos já feitos, e a robusta e dedicada comunidade de speedrunning permitiu que o jogo prosperasse com novos desenvolvimentos por décadas após seu lançamento original. Exploits como aquele que impulsiona os speedruns mais rápidos de Ocarina of Time banalizam o desafio normalmente associado a vencer um jogo o mais rápido possível, mas também destacam a incrível experiência técnica e o esforço da comunidade que se dedicam à dissecação e análise de jogos amados.
A comunidade também está ciente desse equilíbrio, de acordo com dannyb: “A categoria Any% speedrun da OoT é a única em nossas tabelas de classificação principais que permite o ACE como uma forma válida de concluir a meta. Para todo o resto, banimos o ACE para preservar a singularidade que deu vida a essas categorias em primeiro lugar.”
Este artigo faz parte do ReSpec – uma coluna quinzenal contínua que inclui discussões, conselhos e relatórios detalhados sobre a tecnologia por trás dos jogos para PC.