Novo código descoberto no NES Tetris
- Hackers descobriram uma forma de reprogramar o NES Tetris dentro do próprio jogo
- Esse método pode ajudar caçadores de pontuações altas que querem evitar o crash de fim de jogo
Como executar código
- Usando a "kill screen" do NES Tetris como uma forma complexa de manipular a memória, é possível programar novos comportamentos na versão de Tetris executada em hardware e cartucho não modificados
- Glitches semelhantes de "execução arbitrária de código" já foram descobertos em jogos como Super Mario World, Paper Mario e The Legend of Zelda: Ocarina of Time
- O método básico para introduzir código externo no NES Tetris já vinha sendo teorizado publicamente pelo menos desde 2021
- Este método detalha como fazer a tabela de recordes de Tetris começar a ser lida como instruções de código de máquina
Diversão com as portas de controle
- O crash no NES Tetris acontece quando o processador de pontuação do jogo demora demais para calcular uma nova pontuação entre um frame e outro
- Quando esse atraso ocorre, parte do código de controle é interrompida pela rotina de escrita do novo frame e acaba saltando para uma parte não intencional da RAM em busca da próxima instrução
- Graças à forma como o Tetris processa entradas potenciais quando roda no Famicom, o console japonês, o jogador pode manipular esse salto
Programando na tabela de recordes
- Para o método de controle de salto da Displaced Gamers, o jogador precisa manter pressionado "cima" no terceiro controle e direita, esquerda e baixo no quarto controle
- Isso faz com que o código de salto seja enviado para a área da RAM que armazena nomes e pontuações da lista de recordes do jogo, oferecendo ao jogador uma superfície maior de RAM que pode ser manipulada diretamente
- Colocar "(G" na parte alvo da tabela de recordes força o jogo a saltar para outra área da própria tabela de recordes
- A partir daí, nomes e pontuações passam a ser lidos em sequência como opcodes para a CPU do NES
- No entanto, como só existem 43 símbolos disponíveis na área de entrada de nomes e apenas 10 dígitos que podem fazer parte das pontuações altas, apenas parte dos comandos opcode disponíveis do NES pode ser "programada" na tabela de recordes
- Como não existe um sistema de salvamento com bateria, os hackers precisam alcançar manualmente essas pontuações e inserir nomes complexos toda vez que iniciam o Tetris
Opinião do GN⁺
- É surpreendente que a versão de NES de Tetris tivesse uma funcionalidade escondida desse tipo. Parece que isso não foi descoberto na época, e é curioso que só tenha aparecido agora, décadas depois.
- Também é interessante que esse tipo de hack tenha sido possível usando a porta de expansão do Famicom. Provavelmente não era algo intencional da Nintendo, mas isso também mostra como o Famicom tinha mais recursos que o NES.
- A ideia de usar esse bug justamente para inserir código que evita o crash também é muito engenhosa. Em teoria, isso permitiria continuar jogando e ajudaria bastante em tentativas de pontuação alta.
- Por outro lado, parece incômodo ter de repetir toda essa configuração complexa cada vez que o jogo é iniciado. Para uso real, talvez fosse necessário encontrar uma forma de automatizar mais o processo.
- No fim, esse método parece ter mais apelo para entusiastas de recordes ou pessoas interessadas em programação do que para usuários comuns que só querem jogar. Parece difícil imaginar um uso popular mais amplo.
1 comentários
Comentários do Hacker News
Resumo: