Consertando o Sonic que toda gente encontra
A maioria das pessoas que tenta rodar o Sonic Hedgehog 1 hoje em dia tropeça no mesmo problema. O jogo é simples, mas a forma como ele lida com números de ponto flutuante no MD deprecado gera comportamentos estranhos quando executados em hardware real ou em emuladores mal configurados. Já perdi tempo demais com build levels que quebravam no monitor de teste porque o emulador não estava aplicando o subpixel correto na fase 7-2.
sonic hedgehog 1 — o básico que ninguém conta
O jogo foi desenvolvido pela Sonic Team e lançado pela Sega para o Mega Drive/Genesis em 1991. A engine usa um sistema de coordenadas fixas com um formato de 32 bits que separa parte inteira e parte fracionária. O Sonic se move em incrementos de 0x100 por frame em velocidade máxima, e cada zone tem seu próprio controller de tilemaps e animações independentes. Não é um motor genérico, é código customizado que foi apressado em relação ao prazo original. Isso explica por que certos bugs surgem apenas em fases específicas. O zone controller não recalibra o timer de rotação dos spritest quando o jogo entra em pausa prolongada. Eu já vi jogadores travarem no Green Hill Zone simplesmente pausando por mais de 30 segundos seguido e recomeçando sem resetar o sistema de sprite priority.
Como configurar o ambiente certo
Você precisa de um emulador que simule o Motorola 68000 com precisão de ciclo. Kega Fusion funciona, mas tem um bug conhecido onde ele desativa o scroll horizontal do background em resoluções diferentes de 320x224. Use o PineSEGA ou o GensKReps se quiser rodar no hardware real via FlashCarts. Para ROM hacking ou análise, o SGLD ou o SonED são as ferramentas mais usadas atualmente. O ROM original do Sonic 1 tem três versões principais: a europeia (2 MB), a americana e a japonesa. A versão europeia tem dois erros de ROM que a americana corrige. O primeiro erro faz com que o Sonic perca um anel extra em certas colisões com spring. O segundo altera levemente a física de caída no Special Stage. Se você está trabalhando com speedrunning, use sempre a versão americana ou a revisionada europeia.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Aceitar os limites da engine
O Sonic 1 não suporta scroll vertical livre. O mapa é dividido em chunks de 16x16 tiles e cada chunk carrega apenas quando entra na viewport. Isso significa que construir uma fase com transições suaves entre áreas muito diferentes é quase impossível sem modificar o loader. Já tentei criar um portal de warp entre o Chemical Plant Zone e o Marble Zone usando apenas scripts ROM e a engine simplesmente ignorava a transição porque o chunk loader estava saturado com sprites inimigos. O problema específico que encontrei foi com o sistema de ring counter. Ele roda a 60 Hz no NTSC e 50 Hz no PAL. Quando você converte a ROM para modo PAL sem ajustar o divisor de clock, o Sonic cai mais rápido e atinge velocidades maiores. Isso quebra qualquer hack que dependa de timing exato de platformas móveis. A correção é modificar o valor 0x00E na tabela de conversão de frame rate do PineSEGA antes de compilar.
O que funciona na prática
Se você quer analisar o jogo, comece pelo map16. Ele está no offset 0x4000 da ROM e contém a hierarquia completa de tiles. O Sonic 1 usa 8 bytes por tile, mas metade desses bytes é dedicada a flags de animação que nunca são lidas pelo renderer. Removê-las economiza cerca de 15% de espaço de ROM sem afetar o jogo. O sistema de boss fight no Sonic 1 é basicamente um estado máquina com dez estados previsíveis. O Egg Mobile segue um padrão fixo: ataca, recua, ataca, recua. A exceção é no Chemical Plant onde o Egg Mobile tem um terceiro ataque que só é acionado se o jogador usar spin dash nos primeiros 15 segundos. Esse detalhe é ignorado na maioria dos guias porque o código do boss está enterrado no arquivo boss.asm do Source Code da Team.
Se o objetivo é apenas jogar, baixe a ROM da versão americana do Sonic the Hedgehog 1 em qualquer site de archive de jogos retrô. Execute no Kega Fusion com as configurações de sync travadas em "auto" e desative a opção de frame skipping. O jogo roda liso em qualquer máquina moderna. O Sonic 1 é mais complexo do que parece quando você olha por baixo do capô. A engine tem defeitos, limitações claras e vícios de design que só se tornam óbvios depois que você passa horas mexendo com a ROM. Mas é exatamente isso que faz o jogo interessante até hoje.