Graças à incrível falha em Ocarina of Time, foi possível adicionar modelos da Star Fox 64

imagem

Ao longo dos anos escrevendo artigos sobre jogos, falei sobre muitas falhas surpreendentes , códigos desconhecidos por um longo tempo , truques com a execução arbitrária de códigos e pesquisas por conteúdo profundamente oculto em jogos e equipamentos clássicos. Mas nada poderia me preparar para este vídeo do Twitch, no qual uma frota de Arwing voador da Star Fox 64 invade o mundo de Ocarina of Time para atacar Link.

Você espera ver essa cena apenas em um desenho animado criado por um fã ou em um ROM que a Nintendo adora tirar da Internet . Mas o mais surpreendente deste vídeo é que ele mostra uma versão não modificada da ROM japonesa original do Ocarina of Time usando o console padrão e os controladores N64.

Durante toda a manhã, descobri como isso é possível. Para explicar isso, você terá que se aprofundar nas instruções de linguagem da máquina Nintendo 64, no gerenciamento de memória de Ocarina of Time e no próprio processo de desenvolvimento de jogos dos anos 90. Se você é tão curioso quanto eu, junte-se a nós.

Links desatualizados e código novo


Essa passagem surpreendente começou com a descoberta de uma falha importante em outubro do ano passado: o jogador Glitches0 e 0stuff usando emuladores e um estudo cuidadoso das áreas de memória do Nintendo 64 descobriram uma maneira de manipular links desatualizados em Ocarina of Time .

De fato, a falha é que o jogador pega o item e depois engana o jogo para descarregá-lo diretamente das mãos de Link quando cruza o limiar de um novo local de carregamento (por exemplo, a próxima sala). Nesta fase, o jogo libera a área de memória ocupada por este item, para que possa ser usada para outros objetos do jogo durante o carregamento. Mas, ao mesmo tempo, o jogo pensa que Link está segurando alguma coisa , então continua atualizando o ponteiro para o "link desatualizado" na memória liberada, anotando dados que representam a posição e o ângulo de um objeto inexistente. Com manipulação cuidadosa, esse ponteiro pode ser usado para "corromper" os dados do objeto recém-carregado com valores arbitrários.


Os combatentes espaciais não podem se comparar com o Link.


Arwing de Star Fox 64 pode sofrer danos e atirar em Link porque eles estão sempre no jogo.


Com o botão Z, é fácil apontar um bumerangue na parte inferior do Arwing.


O link contém um objeto "vazio" - a preparação para a falha é realizada com a execução de código arbitrário.


A parte mais importante da técnica é congelar a câmera na posição de falha.


Um dispositivo para manter os botões / posições necessários do joystick analógico do controlador 3 para ir diretamente para os títulos.


Após dez minutos digitando o nome do arquivo, o código Arwing está pronto para o download

Inicialmente, esse truque era usado para simplesmente "estragar" o jogo, por exemplo, para carregar novos itens em baús de tesouro ou mudar as posições de outros itens dentro da sala (como explicado em detalhes aqui ). No entanto, após algum tempo, os jogadores descobriram que o mesmo método pode ser usado para modificar códigos de salto de montadores individuais que informam ao jogo onde ele precisa procurar as próximas instruções ao realizar determinados eventos do jogo.

Depois de inserir o código desejado dessa maneira, você pode forçar o jogo a ir para a área de memória que contém os últimos valores de rotação conhecidos para os estilingues X e Y. Se esses valores forem especificados exatamente, eles serão interpretados como mais um código de salto, que executa uma transição para a área de memória onde o nome do arquivo atual está armazenado. Então, esse nome de arquivo será interpretado como o código normal da máquina N64, para que o jogador possa se mover rapidamente para qualquer lugar do jogo de que precisa (claro, se ele converter corretamente os caracteres binários do nome de arquivo nos códigos de operação correspondentes ).


Explicação de falha com um link desatualizado que foi originalmente usado para substituir itens em baús.

O primeiro exemplo sério de usar essa manipulação com códigos de transição foi carregar a cena do jogo com legendas . Assim, o jogador estabeleceu um novo recorde mundial para a velocidade do jogo na categoria "Qualquer%" . Para fazer isso rapidamente na área inicial do jogo, você precisa usar outras falhas, incluindo a falha da câmera "caminhar durante a conversa" , que permite carregar e descarregar pedras no local e horário ideais. Também para isso, é necessário manter certos botões e posições do joystick analógico dos controladores conectados às primeira e terceira portas Nintendo 64, para que seus sinais sejam interpretados como um código de localização de cena com legendas.

Desbloquear Arwing


O método descrito acima é bastante bom se você quiser apenas ir para a cena. Mas ele tem uma limitação séria: o sistema de arquivos Ocarina of Time é limitado a oito caracteres, ou seja, o nome do arquivo pode ser convertido apenas em algumas instruções de código de máquina. Felizmente, esses dois slots de instruções também podem ser usados ​​para praticamente eliminar o limite de caracteres.

Isso é feito de uma maneira extremamente confusa, descrita em detalhes neste Pastebin e neste vídeo . Basta dizer que ele usa o método descrito acima três vezes, o que elimina as verificações importantes do indicador de posição do nome do arquivo e, em seguida, defina esse ponteiro para um valor de posição negativo.


Explicação detalhada da execução arbitrária de códigos em Ocarina of Time

Como resultado, os jogadores têm a oportunidade de inserir um código com centenas de caracteres, o que lhes permite pré-carregar sequências muito mais complexas de instruções da máquina para implementar o método de transição de código descrito acima. Mas isso ainda não é suficiente para codificar os gráficos, animações e lógica de jogo necessárias para atacar Arwing. Felizmente, a Nintendo nos ajudou bastante ao esconder convenientemente todo esse código de Arwing dentro de todos os cartuchos de Ocarina of Time .

Porque O personagem e designer gráfico Satoru Takizawa disse a Iwata Asks em uma entrevista de 2011 que era apenas uma maneira de reutilizar o código para mover um dos inimigos em Zelda :

Volvagia é um dragão, por isso se contorce e se move em ondas. Acabei de entregar ao programador chefe Kazuaki Morita partes do modelo do dragão, e ele imediatamente o colocou em movimento. Permaneceu um mistério para mim como ele conseguiu ... então eu não pude resistir a não perguntar a ele. Ele respondeu que era o mesmo que programar para o Star Fox 64 . Há uma cena neste jogo em que outro lutador está pendurado na cauda de Arwing, e os movimentos de voo do lutador são exatamente os mesmos que os da Volvagia. Fiquei impressionado, foi um verdadeiro milagre para mim.



Um vídeo de 2007 mostrando Arwing sobrevoando a Floresta Kokiri (códigos e emulador GameShark usados).

Depois de copiar as animações necessárias para o Volvagia, Morita parece ter deixado todo o bloco do código Arwing nos dados de lixo do jogo. Muitos anos atrás, os pesquisadores de dados aprenderam sobre isso. E por mais de uma década, os jogadores sabem como acessar essas partes ocultas do código usando dispositivos como o GameShark , que alteram os valores da memória para substituir os inimigos por Arwing.

Mas, graças aos truques com manipulações de memória descritas no artigo, um truque externo não é mais necessário. Em 23 de janeiro, o jogador ZFG1 provou isso de uma vez por todas carregando Arwing usando a Zelda ROM não modificada e o console Nintendo 64 padrão em um stream do Twitch. O resultado foi um jogo no qual todas as portas foram substituídas por Arwing, voando ao redor de Ling, atacando-o com tiros prejudiciais de explosivos e até caindo no chão quando derrubado.

A preparação para gravar este clipe levou mais de uma hora , durante a qual três ciclos de execução arbitrária de código foram criados e, em 10 minutos, o nome do arquivo para carregar o Arwing foi digitado minuciosamente. Mas, ao mesmo tempo, esse clipe foi o culminar de meses e anos de trabalho de uma comunidade obcecada pelo desejo de entender e dominar completamente o jogo clássico e suas falhas.

Além do valor do entretenimento, o clipe "Arwings in Zelda" era uma prova de que a comunidade, um grupo de especialistas em computação, com tempo e esforço suficientes, pode fazer coisas incríveis com equipamentos e softwares clássicos de jogos.

Source: https://habr.com/ru/post/pt485908/


All Articles