Sonic the Hedgehog 2 & Knuckles
Manual de Programação
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.
Selecione uma das opções abaixo para ir direto para a seção na página:
sobe
Menu de Seleção de Fases
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 ACT 3 |
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 30790B |
|
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).
sobe
Música das Fases
Você 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 |
sobe
Alterando os 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.
FASE |
|
ENDEREÇO |
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 |
sobe
Início 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 |
00-60-02-8F |
Emerald Hill 2 |
30A48C |
00-60-02-AF |
01-00 |
30A490 |
00-60-02-8F |
01-01 |
30A494 |
00-60-02-AF |
Wood 1 |
30A498 |
00-60-01-AC |
Wood 2 |
30A49C |
00-60-01-AC |
03-00 |
30A4A0 |
00-60-02-8F |
03-01 |
30A4A4 |
00-60-02-AF |
Metropolis 1 |
30A4A8 |
00-60-02-8C |
Metropolis 2 |
30A4AC |
00-60-05-EC |
Metropolis 3 |
30A4B0 |
00-60-02-0C |
05-01 |
30A4B4 |
00-60-02-AF |
Wing Fortress 1 |
30A4B8 |
00-60-04-CC |
Wing Fortress 2 |
30A4BC |
01-E0-04-CC |
Hill Top 1 |
30A4C0 |
00-60-03-EF |
Hill Top 2 |
30A4C4 |
00-60-06-AF |
Hidden Palace 1 |
30A4C8 |
02-30-01-AC |
Hidden Palace 2 |
30A4CC |
02-30-01-AC |
09-00 |
30A4D0 |
00-60-02-8F |
09-01 |
30A4D4 |
00-60-02-AF |
Oil Ocean 1 |
30A4D8 |
00-60-06-AC |
Oil Ocean 2 |
30A4DC |
00-60-05-6C |
Mystic Cave 1 |
30A4E0 |
00-60-06-AC |
Mystic Cave 2 |
30A4E4 |
00-60-05-AC |
Casino Night 1 |
30A4E8 |
00-60-02-AC |
Casino Night 2 |
30A4EC |
00-60-05-8C |
Chemical Plant |
30A4F0 |
00-60-01-EC |
Chemical Plant 2 |
30A4F4 |
00-60-01-2C |
Death Egg 1 |
30A4F8 |
00-60-01-2D |
Death Egg 2 |
30A4FC |
00-60-01-2D |
Aquatic Ruin 1 |
30A500 |
00-60-03-7E |
Aquatic Ruin 2 |
30A504 |
00-60-03-7E |
Sky Chase 1 |
30A508 |
01-20-00-70 |
Sky Chase 2 |
30A50C |
01-40-00-70 |
sobe
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: |
INÍCIO |
Sega Logo |
00 |
0x303310 |
Tela de apresentação |
04 |
0x3034E8 |
Modo demonstração |
08 |
0x3039A0 |
Jogo Normal |
0C |
0x3039A0 |
Special Stage |
10 |
0x304A0A |
Continue |
14 |
0x3072A6 |
Seleção de Fases |
18 / 1C / 24 |
0x3076C2 |
Seqüência do Final |
20 |
0x308008 |
sobe
Códigos Secretos do Jogo
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 é:

,

,

,

,

,

,

,

,

,

. No rom este código
esta armazenado no formato das teclas do jogo e você pode alterar
simplesmente colocando o valor da tecla correspondente. O código esta
armazenado do endereço
0x3038E2
á
0x3038ED e você verá
os seguintes bytes:
01, 01, 01, 02, 02, 02, 04, 08, 04, 08,
00 e FF
onde:
01 =

,
02 =

,
04 =

,
08 =

,
00 e
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 e
FF no final para indicar que o
código terminou.
Modo Depuração e Todas as Esmeraldas com 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 Depuração |
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 |
sobe
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ão 10-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 problema 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 problemas que
ocorrem no cartucho do Sonic 2 não ocorrem nesta versão, um exemplo simples
é o problema do modo depuração 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.