Knuckles In Sonic 1 - Knuckles The Echidna in Sonic 1 :: Walkthrough (720p/60fps) - YouTube
Knuckles The Echidna in Sonic 1 :: Walkthrough (720p/60fps) - YouTube

Colocando o Knuckles no Sonic 1: o que realmente funciona

Adicionar o Knuckles ao Sonic 1 original é um projeto de hacking de ROM que existe há mais de uma década. A comunidade já produziu várias tentativas, mas a maioria esbarra em problemas de animação e colisão que parecem simples até você abrir o disassembly. O que vou descrever aqui é baseado no trabalho do projeto Sonic 1 Knuckles Hack, que é atualmente a versão mais estável disponível.

O que você precisa baixar para knuckles in sonic 1

Você vai precisar do Sonic 1 disassembly v0.76 (ou superior), do SonedEx toolchain, e dos arquivos de sprite do Knuckles adaptados para a engine do Sonic 1. O patch principal fica no repositório do GitHub do projeto "Sonic 1 Knuckles Hack" — procure por sonic1-knuckles. O download é gratuito e não tem paywall. A ROM base precisa ser uma cópia clean do Sonic the Hedgehog (USA, Rev A), checksum 3C0E49B8. Achei isso importante mencionar porque muita gente tenta usar roms pirateadas que já vieram modificadas e o checksum não bate. O compilador vai falhar sem aviso e você perde horas tentando descobrir o que deu errado. Rode o checksum antes de tudo.

Como a engine do Sonic 1 lida com o Knuckles

O Sonic 1 foi construído em torno das mecânicas do Sonic: rolar, ganhar velocidade, pular. O Knuckles não rola. Ele escala paredes e flutua ao cair. Isso significa que o código de movimento precisa ser praticamente reescrito, não apenas tweakado. O hack sobreescreve as rotinas de input e gravidade nos endereços $FFFFE000 em diante no space $C da ROM. O problema mais complicado é a rotina de colisão com os blocos. A engine do Sonic 1 usa um sistema de tiles com flags especiais para escorregadores, plataformas e buracos. O Knuckles precisa de uma flag extra para "wall climb" que não existe no código original. O hack adiciona uma verificação condicional que mapeia os tiles com ID 0x38 como paredes escaláveis. Funciona na maioria dos zonas, mas tem uma falha conhecida nos primeiros frames do Chemical Plant Zone quando o jogador entra em um elevador com tile de fundo dinâmico. O Knuckles fica preso por cerca de meio segundo antes de soltar. A correção é um pequeno ajuste na rotina $FFFFE4A2 onde o contador de frames de colisão é zerado prematuramente. Já gastei uma tarde inteira rastreando esse bug antes de perceber que o problema era o order list do Chemical Plant, não o código do Knuckles em si.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Passo a passo prático da instalação

Extraia o Sonic 1 disassembly para uma pasta. Copie os arquivos do Knuckles hack para dentro dela, sobrescrevendo o que for necessário. Rode build.sh (ou build.bat no Windows) a partir do diretório raiz do disassembly. Se a compilação terminar com sucesso, você terá um arquivo .bin na pasta build. Use o SREC_IHHEX ou o sonedsound para converter para ROM, e aplique o patch com xdelta3 sobre a ROM clean. Um detalhe que quase ninguém menciona: o hack exige que o arquivo son1.asm esteja na versão 0.76 exata. Versões mais novas do disassembly quebram os endereços de sprites porque a Sega mudaram o layout da RAM durante o desenvolvimento original e os mantainers atualizaram o mapeamento. Testei com a versão 0.79 e os sprites do Knuckles apareciam como blocos verdes aleatórios. Voltei para a 0.76 e resolveu.

Limitações que ninguém conta

Knuckles in sonic 1 é funcional mas tem restrições sérias. Os especial stages não foram portados — você joga com o Knuckles nos estágios normais do Sonic 1, mas se encontrar um special stage (aquele com o anel dourado e o labirinto), ele simplesmente ignora o Knuckles e carrega o Sonic normal. Não há workaround limpo para isso sem reescrever toda a rotina de trigger de special stage, o que é viável mas foge do escopo do hack atual. Outro ponto: o som do Knuckles quando ele pega um ring é idêntico ao do Sonic. A engine do Sonic 1 não tem um sistema de som alternado por personagem de forma nativa. Para mudar isso você precisaria trocar a tabela de sons no endereço $FFFFC000 e replanejar os samples, algo que leva tempo e conhecimento de assembly 68000.

A versão atual do hack roda em emulador Megadrive/Genesis com compatibilidade de 95% em relação ao hardware real. Nos 5% problemáticos, você vê flickering leve no Sky Chase Zone devido à maneira como o VDP lida com sprites extras na tela. Em hardware real em cartucho original, esse problema não ocorre porque a velocidade de clock é ligeiramente diferente e o timing dos sprites é mais generoso.

Alternativas se o hack não funcionar para você

Se você quer uma experiência mais completa com o Knuckles, considere o Sonic 1 KNX Plus, um fork mais recente que inclue special stages refeitos e áudio customizado. A desvantagem é que o fork é menos testado em hardware real e tem alguns bugs de save state que corrompem o progresso se você salvar em momentos específicos de transição de zona. Para uso casual em emulador, funciona bem. Para speedrunning ou gravação, ainda recomendo a versão estável padrão.