Actions

SCHG

Esrael s2k (Portuguese)

From Sonic Retro

Historical document icon.svg This historical hacking document is preserved here for archival purposes.
It has not been revised since its original writing and may be outdated.

(These are the original notes written by Esrael in Portuguese. For an English translation, see SCHG:Esrael s2k.)

Utilizando um editor de hexadecimal é possível modificar o jogo, editando-o byte a byte. Sabendo onde fica cada instrução e alterando-a corretamente você pode personalizar o jogo. Você pode desenhar outro personagem no lugar do Sonic mas isto não é fácil já que tem que se feito ponto a ponto. Alterar o nome das fases no menu de seleção e no titulo das fases. Mas para poder programar o jogo é necessário que ele esteja no formato binário, não é muito difícil converter o jogo para binário, você pode utilizar um programa de conversão ou o emulador Genecyst que tem a opção DUMP ROM, que faz a conversão.

Apesar do Sonic 2 & Knuckles ser apenas o Sonic 2 acoplado ao Sonic & Knuckles, este jogo pode ser considerado uma nova versão de Sonic 2, pois o jogo Sonic & Knuckles após identificar o cartucho Sonic 2 acoplado ativa uma memória que fica no fim dos dois jogos, sendo que esta memória contem basicamente todas as instruções do jogo do Sonic 2 & Knuckles, utilizando o cartucho do Sonic 2 apenas para os gráficos e mapas das fases, veja que neste manual você verá que as informações que são alteradas na maioria dos caso se encontra acima do endereço 0x300000 e poucas coisa ficaram entre os endereços 0x200000 á 0x2FFFFF que é onde o jogo do Sonic 2 está na memória ao ser acoplado ao Sonic & Knuckles, tendo em mãos as informações acima e mais no decorrer do documento talvez você concorde que podemos dizer que o jogo Sonic 2 & Knuckles pode ser considerado um novo jogo do Sonic 2 com o Knuckles.

Observe a tabela abaixo com as fases e com seus respectivos ids, estes ids são importantes pois o jogo utiliza estes ids para se referenciar a determinada fase.

FASE ID
EMERALD HILL 00
METROPOLIS 04
METROPOLIS 05
WING FORTRESS 06
HILL TOP 07
OIL OCEAN 0A
MYSTIC CAVE 0B
CASINO NIGHT 0C
CHEMICAL PLANT 0D
DEATH EGG 0E
AQUATIC RUIN 0F
SKY CHASE 10

Note que alguns números são pulados como do 01, 03, 06 e 09. Apesar de não existir um nome de fase para estes ID's na relação e nem no menu de seleção de fases. Se você colocar estes ID's que estão faltando poderá acessar níveis perdidos (Faça a experiência e veja os resultados). Observe a tabela com a localização padrão das fases e logo em seguida uma explicação.

FASE endereço
EMERALD HILL ACT 1 307906 e 307907
ACT 2 307908 e 307909
CHEMICAL PLANT ACT 1 30790A e 3079B
ACT 2 30790C e 30790D
AQUATIC RUIN ACT 1 30790E e 30790F
ACT 2 307910 e 307911
CASINO NIGHT ACT 1 307912 e 307913
ACT 2 307914 e 307915
HILL TOP ACT 1 307916 e 307917
ACT 2 307918 e 307919
MYSTIC CAVE ACT 1 30791A e 30791B
ACT 2 30791C e 30791D
OIL OCEAN ACT 1 30791E e 30791F
ACT 2 307920 e 307921
METROPOLIS ACT 1 307922 e 307923
ACT 2 307924 e 307925
ACT 3 307926 e 307927
SKY CHASE 307928 e 307927
WING FORTRESS 30792A e 30792B
DEATH EGG 30792C e 30792D

A tabela acima indica onde estão localizados os bytes de configuração na tela de seleção de fases. O 1o. endereço da tabela indica o byte da zona e o 2o. endereço indica o byte de act. Exemplo no endereço 307916 você verá o byte 07 (Hill Top zone) e no endereço 307917 você verá o byte 00 (Act 1).

Musica Das Fases

ocê também pode escolher a música a ser tocada nas fases. O formato é de apenas um byte por fase e é muito simples. Para colocar outra música de sua preferência, toque os sons no sound test , anote o número da música e coloque no byte que representa a fase escolhida. Veja na tabela abaixo a localização da seleção de músicas. Observação: Ao modificar a música das fases some 80 ao número do Sound Test e coloque no local desejado, a tabela abaixo tem alguns exemplos de como os midis estão no Rom e como aparecem no Sound Test.

FASE Música no Rom Música no Sound Test Endereço
EMERALD HILL 82 02 30397C
ID 01 82 02 30397D
WOOD ZONE 85 05 30397E
ID 03 84 04 30397F
METROPOLIS 85 05 303980
METROPOLIS 3 85 05 303981
WIN FORTRESS 8F 0F 303982
HILL TOP 86 06 303983
HIDDEN PALACE 90 10 303984
ID 09 8D 0D 303985
OIL OCEAN 84 04 303986
MYSTIC CAVE 8B 0B 303987
CASINO NIGHT 89 09 303988
CHEMICAL PLANT 8E 0E 303989
DEATH EGG 8A 0A 30398A
AQUATIC RUIN 87 07 30398B
SKY CHASE 8D 0D 30398C

Alterando Objetos

Você também pode alterar objetos nas fases como badnicks, vidas, obstáculos, etc... A configuração dos objetos nas fases utiliza 6 bytes longos, sendo no formato XX-XX-YY-YY-OO-VV. Explicando melhor os X's indicam a posição horizontal na tela, os Y's indicam a posição vertical na tela, os O's indicam os objetos a serem colocados e os V's indicam as variações possíveis de cada objeto. Para obter a localização exata do local onde você quer por os objetos, faça o código do debug mode e anote a primeira linha de coordenadas no local do SCORE, Estas serão as coordenadas que você deverá digitar para poder colocar o objeto no local desejado. Veja a localização onde o game busca os objetos das fases. Os níveis terminam o mapeamento antes dos bytes FF-FF-00-00-00-00. A partir destes bytes começa próximo nível.

EMERALD HILL ACT 1 DF3FE
ACT 2 DF7B2
METROPOLIS ZONE ACT 1 DFBD2
ACT 2 E005E
ACT 3 E05A4
WING FORTRESS E0C10
HILL TOP ACT 1 E1018
ACT 2 E1396
HIDDEN PALACE 2E8C80
OIL OCEAN ACT 1 E1A4A
ACT 2 E1F18
MYSTIC CAVE ACT 1 E23DA
ACT 2 E26F2
CASINO NIGHT ACT 1 33F06E
ACT 2 33F74C
CHEMICAL PLANT ACT 1 E2A88
ACT 2 E2EFC
DEATH EGG 2EB230
AQUATIC RUIN ACT 1 E34D8
ACT 2 E398E
SKY CHASE 2EBBDE

Inicio do Knuckles nas Fases

Nesta parte você pode definir em que ponto da tela o Knuckles começa. Para poder selecionar um local diferente do original. Utilize o modo debug. Vá para o local de onde você deseja iniciar e anote as coordenadas (primeira linha no local do Score), Tendo em mãos as coordenadas coloque-as no local da fase escolhida conforme no endereço da tabela abaixo.

FASE LOCALIZAÇÃO COORDENADAS
Emerald Hill 1 30A488 0060028F
Emerald Hill 2 30A48C 006002AF
01-00 30A490 0060028F
01-01 30A494 006002AF
Wood 1 30A498 006001AC
Wood 2 30A49C 006001AC
03-00 30A4A0 0060028F
03-01 30A4A4 006002AF
Metropolis 1 30A4A8 0060028C
Metropolis 2 30A4AC 006005EC
Metropolis 3 30A4B0 0060020C
05-01 30A4B4 006002AF
Wing Fortress 1 30A4B8 006004CC
Wing Fortress 2 30A4BC 01E004CC
Hill Top 1 30A4C0 006003EF
Hill Top 2 30A4C4 006006AF
Hidden Palace 1 30A4C8 023001AC
Hidden Palace 2 30A4CC 023001AC
09-00 30A4D0 0060028F
09-01 30A4D4 006002AF
Oil Ocean 1 30A4D8 006006AC
Oil Ocean 2 30A4DC 0060056C
Mystic Cave 1 30A4E0 006006AC
Mystic Cave 2 30A4E4 06005AC
Casino Night 1 30A4E8 006002AC
Casino Night 2 30A4EC 0060058C
Chemical Plant 1 30A4F0 006001EC
Chemical Plant 2 30A4F4 0060012C
Death Egg 1 30A4F8 0060012D
Death Egg 2 30A4FC 0060012D
Aquatic Ruin 1 30A500 0060037E
Aquatic Ruin 2 30A504 0060037E
Sky Chase 1 30A508 01200070
Sky Chase 2 30A50C 01400070

Eventos

Nos jogos do Sonic, o Logo da Sega, A tela de titulo, as fases, os Especiais Estágios, etc.. são eventos diferentes e são chamados com diferentes codificações e você pode aciona-los simplesmente colocando os seus valores no local adequado, os números que você verá na tabela abaixo pertencem a codificação do jogo e estes números não pulam de 4 em 4 por acaso, Se você for até o endereço 0x3000A0 você verá vários números 6000xxxxx note que o próximo 6000xxxx tem uma distancia de 4 bytes do endereço 0x3000A0, o próximo 6000xxxx tem 8 bytes do endereço 0x3000A0 e assim por diante. Antes que você me pergunte: o que isto tem de importante ? - eu respondo: sabendo se o local de inicialização exato dos eventos você pode reprograma-los sem afetar o funcionamento do jogo. Veja na tabela abaixo os eventos e seus respectivos endereços de inicialização.

EVENTO ID INICIO
Sega Logo 00 0x303310
Tela Titulo 04 0x3034E8
Demo Mode 08 0x3039A0
Jogo Normal 0C 0x3039A0
Special Stage 10 0x304A0A
Continue 14 0x3072A6
Seleção de Fases 18-1C 0x3076C2
Seqüência do Final 20 0x308008
Seleção de Fases 24 0x3076C2

Códijo dos Jogos

Menu de Seleção de Fases

Nesta parte você conhecerá os códigos do jogo e como alterá-los, o código de acesso ao menu de seleção de fases é: cima, cima, cima, baixo, baixo, baixo, esquerda, direita, esquerda, direita. No rom este código esta armazenado no formato das teclas do jogo e você pode altera simplesmente colocando o valor da tecla correspondente. O código esta armazenado no endereço 0x3038E2 e você verá os seguintes bytes: -01-01-01-02-02-02-04-08-04-08-00-FF- onde: 01-é cima, 02 é baixo, 04 é esquerda, 08 é direita e 00-FF indicam fim do código, você pode modificar o código de acesso ao menu de seleção de fases porém o jogo só aceita codificação para as teclas direcionais, você deverá colocar os bytes 00-FF no final para indicar que o código terminou.

CÓDIGO LOCALIZAÇÃO
Menu de Seleção de Fases 0x3038E2 á 0x3038ED
TECLAS VALOR
cima 01
baixo 02
esquerda 04
direita 08

Modo Debug e Super Knuckles

Os código a seguir são feitos após o ter sido acessado o menu de seleção de fases e são inseridos no Sound Test tocando as respectivas músicas. Estes são mais fáceis de alterar pois estão armazenados no Rom do mesmo modo que são digitados no Sound Test. A única diferença em relação ao código de acesso ao menu de seleção de fases é que você tem que digitar FF ao invés de 00-FF para indicar o termino do código. Veja na tabela abaixo os códigos e suas respectivas localizações.


Evento Código Localização
Modo Debug 01-09-09-04-01-00-01-08 0x307C7A á 0x307C81
Todas as Esmeraldas (Super Knuckles) 01-06-07-07-07-02-01-06 0x307C83 á 0x307C8A

Curiosidades

Você verá os códigos do Sonic 2 sózinho, mas sem nehuma utilidade neste jogo, agora o curioso é que se estes códigos fossem utilizados o jogo não travaria na música Oil Ocean ao ser feito o código (01-01-02-04), pois se você observar no endereço 0x307C4C você verá os bytes 10-3C-00-BF e não10-3C-00-3F como ocorre no jogo do Sonic 2 e que ocasiona o travamento na música Oil Ocean, eu estou comentando isto porque a Sega não corrigiu este bug nem no Sonic Jam apesar de não travar na musica OIL OCEAN o SONIC JAM não toca o Som do continue que deveria ser tocado ao fazer o código 01-01-02-04. Muitos outros bugs que ocorrem no cartucho do Sonic 2 não ocorrem nesta versão, um exemplo simples é o bug do debug que quando você morre e tenta colocar um objeto na tela o jogo não coloca o objeto na tela enquanto você não sair do modo de edição e retornar, evitando-se assim que o jogo congele.

References


Sonic Community Hacking Guide
General
SonED2 Manual | Subroutine Equivalency List
Game-Specific
Sonic the Hedgehog (16-bit) | Sonic the Hedgehog (8-bit) | Sonic CD (prototype 510) | Sonic CD | Sonic CD (PC) | Sonic CD (2011) | Sonic 2 (Simon Wai prototype) | Sonic 2 (16-bit) | Sonic 2 (Master System) | Sonic 3 | Sonic 3 & Knuckles | Chaotix | Sonic Jam | Sonic Jam 6 | Sonic Adventure | Sonic Adventure DX: Director's Cut | Sonic Adventure DX: PC | Sonic Adventure (2010) | Sonic Adventure 2 | Sonic Adventure 2: Battle | Sonic Adventure 2 (PC) | Sonic Heroes | Sonic Riders | Sonic the Hedgehog (2006) | Sonic & Sega All-Stars Racing | Sonic Unleashed (Xbox 360/PS3) | Sonic Colours | Sonic Generations | Sonic Forces
Technical information
Sonic Eraser | Sonic 2 (Nick Arcade prototype) | Sonic CD (prototype; 1992-12-04) | Dr. Robotnik's Mean Bean Machine | Sonic Triple Trouble | Tails Adventures | Sonic Crackers | Sonic 3D: Flickies' Island | Sonic & Knuckles Collection | Sonic R | Sonic Shuffle | Sonic Advance | Sonic Advance 3 | Sonic Battle | Shadow the Hedgehog | Sonic Rush | Sonic Classic Collection | Sonic Free Riders | Sonic Lost World
Legacy Guides
The Nemesis Hacking Guides The Esrael Hacking Guides
ROM: Sonic 1 | Sonic 2 | Sonic 2 Beta | Sonic 3

Savestate: Sonic 1 | Sonic 2 Beta/Final | Sonic 3

Sonic 1 (English / Portuguese) | Sonic 2 Beta (English / Portuguese) | Sonic 2 and Knuckles (English / Portuguese)
Move to Sega Retro
Number Systems (or scrap) | Assembly Hacking Guide | 68000 Instruction Set | 68000 ASM-to-Hex Code Reference | SMPS Music Hacking Guide | Mega Drive technical information