Esrael s1 (Portuguese)
From Sonic Retro
This historical hacking document is preserved here for archival purposes. It has not been revised since its original writing and may be outdated. For an SCHG-equivalent document, see SCHG:Sonic the Hedgehog. |
(These are the original notes written by Esrael in Portuguese. For an English translation, see SCHG:Esrael s1.)
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.
Contents
Menu de Seleção de Fases
O Menu de seleção de fases do Sonic 1 usa um formato de texto plano de 26 caracteres por linha. todas as linhas podem ser digitados textos de até 26 caracteres inclusive as linhas que mostram somente STAGE 2 e 3. O primeiro espaço começa na letra G da palavra GREEN HILL e o ultimo espaço termina no numero 1 do STAGE 1, o primeiro espaço começa onde termina o espaço da primeira linha e assim até o fim da tela de seleção de fases. veja abaixo a lista das fases e os respectivos endereços no editor hexadecimal. Obs: No editor você verá endereços em hexadecimal por exemplo no seguinte formato 000035B9. Mas na página você verá esse mesmo endereço representado por 3B59.
FASE | ENDEREÇO |
GREEN HILL ZONE STAGE 1 | 35A2 á 35B9 |
STAGE 2 | 35BA á 35D1 |
STAGE 3 | 35D2 á 35E9 |
LABYRINTH ZONE STAGE 1 |
35EA á 3601 |
STAGE 2 |
3602 á 3619 |
STAGE 3 |
361A á 3631 |
MARBLE ZONE STAGE 1 |
3632 á 3649 |
STAGE 2 |
364A á 3661 |
STAGE 3 |
3662 á 3679 |
STAR LIGHT ZONE STAGE 1 |
367A á 3691 |
STAGE 2 |
3692 á 36A9 |
STAGE 3 |
36AA á 36C1 |
SPRING YARD ZONE STAGE 1 |
36C2 á 36D9 |
STAGE 2 |
36DA á 36F1 |
STAGE 3 |
36F2 á 3709 |
SCRAP BRAIN ZONE STAGE 1 |
370A á 3721 |
STAGE 2 |
3722 á 3739 |
STAGE 3 |
373A á 3751 |
FINAL ZONE |
3752 á 3769 |
SPECIAL STAGE | 376A á 3781 |
SOUND TEST | 3782 á 3799 |
O nome das fases usa um conjunto de caracteres NÃO-ASCII. É necessário saber a equivalência das letras para poder modificar o nome. Observe a tabela abaixo e modifique os nomes. Rode o jogo e acesse o menu de seleção de fases e veja os nomes que você colocou.
00 = 0 | 01 = 1 | 02 = 2 | 03 = 3 | 04 = 4 |
05 = 5 | 06 = 6 | 07 = 7 | 08 = 8 | 09 = 9 |
0A = $ | 0B = - | 0C = = | 0D = <- | 0E = <- |
0F = Y | 10 = Z | 11 = A | 12 = B | 13 = C |
14 = D | 15 = E | 16 = F | 17 = G | 18 = H |
19 = I | 1A = J | 1B = K | 1C = L | 1D = M |
1E = N | 1F = O | 20 = P | 21 = Q | 22 = R |
23 = S | 24 = T | 25 = U | 26 = V | 27 = W |
28 = X | FF = |
Títulos das fases
Você também pode alterar os titulo das fases. Mas ao contrário do menu de seleção de fases existe restrições quanto ao número de caracteres que se pode colocar. Há também algo interessante na fonte dos títulos das fases não existem as letras J-Q-V-W-X, ou seja palavras que usam estas letras não poderão ser usadas. Também a modificação dos títulos das fases não é muito simples pois você terá que especificar as distancia das letras para que estas não se sobreponham. Mas não se desespere veja abaixo a tabela de caracteres usada nos títulos das fases e logo em seguida uma explicação de como modificar os textos sem problemas.
TABELA COM AS FONTES DOS TÍTULOS
05-00-00 = A | 05-00-22 = K | 05-00-46 = U |
05-00-04 = B | 05-00-26 = L | 05-00-4A = Y |
05-00-09 = C | 05-00-2A = M | 05-00-4E = Z |
05-00-0C = D | 05-00-2E = N | 00-00-52 = . |
05-00-10 = E | 05-00-32 = O | 0C-00-53 = act |
05-00-14 = F | 05-00-36 = P | 02-00-57 = 1 |
05-00-18 = G | 05-00-3A = R | 06-00-5A = 2 |
05-00-1C = H | 05-00-3E = S | 06-00-60 = 3 |
01-00-20 = I | 05-00-42 = T | 00-00-56=(espaço) |
Agora veja como funciona a programação dos nomes das fases. Observe a imagem do editor hexadecimal abaixo. O editor hexadecimal usado foi o Hexpose, você pode usar qualquer editor de sua preferência, eu uso este editor porque você pode criar um arquivo fonte para ele, ou seja ao invés de ele lhe mostrar os valores em ASCII padrão ele lhe mostrará o texto baseado na fonte fornecida.
Para você entender como funciona eu destaquei algumas instruções com cores diferenciadas, note que juntando as letras, que estão destacadas do lado direito do programa você monta o nome das fases. Agora veja como funciona as instruções. Cada letra na tela usa 5 bytes para ser mostrada Observe: F8-05-00-3A-CA. O 1o. byte (F8) indica a posição vertical da letra na tela, este byte normalmente não será necessário se modificar . Do 2o. ao 4o. byte (05-00-3A) são os bytes que indicam que letra deve ser mostrada na tela no caso seria a letra "R". O 5o. byte (CA) indica a posição horizontal na tela, este é um dos mais importantes bytes pois é ele quem determina os espaços das letras e caso não seja colocado corretamente pode haver sobreposição das letras, mas isto não é muito difícil, já que o espaço ente uma letra e outra é de 10h (observe na figura abaixo o byte que segue os números em amarelo e note que aumentam de 10h em 10h) esta medida é a mesma usada nas palavras compostas, mas como toda regra tem exceção a 1a. letra que for digitada após a letra "I" utiliza um espaço menor ou seja 8h. você pode utilizar o espaço padrão 10h, mas na hora em que for exibido o texto você verá que a letra que sucede o "I" ficará longe. Preste muito atenção nos 5 bytes na hora de editar pois se você editar o nome de uma fase que contem a letra "I" e não aumentar o espaço entre as letras, estas ficarão sobrepostas. As únicas restrições são: 1o. O limite de letras por fases é o numero de letras da fase atual, 2o. você não poderá escrever palavras que usem as letras "J","Q","V","W","X", pois não existem estas letras na fonte dos títulos. Veja a localização de cada texto e faça suas alterações.
TEXTO | LOCALIZAÇÃO |
GREEN HILL | C9FE á CA2B |
LABYRINTH | CA2C á CA59 |
MARBLE | CA5A á CA79 |
STAR LIGHT | CA7A á CAA7 |
SPRING YARD | CAA8 á CADA |
SCRAP BRAIN | CADB á CB0E |
FINAL | CB8B á CBA3 |
ZONE | CB0F á CB24 |
SONIC HAS PASSED | CBEA á CC31 |
CHAOS EMERALD | CCAD á CCE8 |
SPECIAL STAGE | CD6C á CDA7 |
SONIC GOT THEM ALL | CDA8 á CDF3 |
Obs: No byte de espaçamento de caractere o canto esquerdo da tela é 80h e canto direito é 7Fh. Ou seja um possível texto pode ser escrito com espaço de 80h, 90h, A0h, B0h, C0h, D0h, E0h, F0h, 00h, 10h, 20h, 30h, 40h, 50h, 60h, 70h. Este seria os espaços que você colocaria nas letras caso desejasse começar do inicio da tela
Configuração dos títulos das telas
Esta área do jogo diz ao game como deverá ser exibido os títulos de inicialização do jogo, ou seja posição na tela por onde entrar ou sair. Cada fase utiliza 16 bytes para configuração dos títulos. Como exemplo eu vou pegar os bytes que configuram o texto da fase Green Hill que é : 00000120FEFC013C0414015402140154. Agora entendo o que esses bytes querem dizer. os 4 primeiros bytes, ou seja, 00-00-01-20 são do texto da fase, no exemplo GREEN HILL, do 5 ao 8 bytes, ou seja, FE-FC-01-3C são os bytes do texto ZONE, do 9 ao 12 byte, ou seja, 04-14-01-54 são os bytes do "ACT x" (x é o numero da fase), e por ultimo, ou seja, 02-14-01-54 são os bytes do plano de fundo azul dos títulos (Aquela bolinha oval inclinada que aparece por trás do texto "ACT x"). Tendo as informações acima podemos ainda separar os bytes em grupos de dois, Todos os grupos terão o mesmo efeito. Vamos pegar o grupo do nome da fase que é 00-00-01-20, os 2 primeiros bytes, ou seja, 00-00 indicam a posição de entrada do texto na tela, os dois últimos bytes, ou seja, 01-20 indicam a posição horizontal do texto na tela, nestes bytes geralmente se aumenta de 10h em 10h, Esta configuração vale para todo o conjunto de bytes da fase ou seja o primeiro e o segundo grupo de 2 bytes sempre farão o mesmo efeito do explicado acima. Veja a figura do editor e logo abaixo a lista de fases e seu endereço correspondente
FASE |
LOCALIZAÇÃO |
GREEN HILL | C448 á C457 |
LABYRINTH | C458 á C467 |
MARBLE | C468 á C477 |
STAR LIGHT | C478 á C487 |
SPRING YARD | C488 á C497 |
SCRAP BRAIN | C498 á C4A7 |
FINAL | C4A8 á C4B7 |
Habilite a frase "PRESS START BUTTON" na tela título. Para isso com um editor hexadecimal mude o byte de 02 para 00. De acordo com a sua versão do jogo os bytes estão em locais diferentes, Veja abaixo as possíveis localizações.
VERSÃO | ENDEREÇO |
AMERICANA | 17271 |
JAPONESA | 17A1D |
CRÉDITOS E TELA INICIAL
Esta parte é muito interessante pois você pode se pode editar todos os créditos do jogo. Alem da tela inicial "SONIC TEAM PRESENTS".
TEXTO | ENDEREÇO |
SONIC TEAM STAFF | 172F8 á 1733E |
GAME PLAN CAROL YAS | 1733F á 1738F |
PROGRAM YU 2 | 17390 á 173C2 |
CHARACTER DESIGN BIGISLAND | 173C3 á 1743B |
DESIGN JINYA PHENIX RIE | 1743C á 174A0 |
SOUND PRODUCE MASATO NAKAMURA | 174A1 á 17523 |
SOUND PROGRAM JIMITA MACKY | 17524 á 17597 |
SPECIAL THANKS FUJIO MINEGISHI PAPA | 17598 á 17633 |
PRESENTED BY SEGA | 17634 á 1767F |
TRY AGAIN | 17680 á 176A8 |
SONIC TEAM PRESENTS | 176A9 á 176FE |
Veja a fonte dos créditos
(letras ausentes: Q, V, W, X, Z)
05-00-04 = A | 05-00-3A = H | 05-00-12 = P |
05-00-48 = B | 01-00-46 = I | 05-00-22 = R |
05-00-1E = C | 05-00-4C = J | 05-00-2E = S |
05-00-42 = D | 05-00-58 = K | 05-00-3E = T |
05-00-54 = D | 05-00-16 = L | 05-00-32 = U |
05-00-0E = E | 09-00-08 = M | 00-00-2A = Y |
05-00-5C = F | 05-00-1A = N | 0C-00-36 = 2 |
05-00-00 = G | 05-00-26 = O |
A configuração de exibição é semelhante ao dos cartões de títulos (title cards). ex: 11-E8-05-00-3E-B4
onde o primeiro byte indica o número de caracteres a serem exibidos na tela. O segundo byte indica a posição vertical na tela. Do terceiro ao quinto são as letras propriamente ditas. O último indica a posição horizontal na tela, é este byte que define o espaçamento entre uma letra e outra.
MUSICA 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. Observe também que para o funcionamento correto será necessário alterar os bytes nos três endereços listados abaixo. As Fases listadas com (----) Usam somente os endereços listados e não necessitam de mais de uma ou duas mudanças para funcionar. A fase Labyrinth e Scrap Brain 3 necessitam da alteração nos 3 endereços listados abaixo para funcionarem corretamente.
FASE | Música | Endereço 1 | Endereço 2 | Endereço 3 |
GREEN HILL | 81 | 379A | 12CC8 | ----- |
LABYRINTH | 82 | 379B | 12CC9 | 14099 |
MARBLE | 83 | 379C | 12CCA | ----- |
STAR LIGHT | 84 | 379D | 12CCB | ----- |
SPRING YARD | 85 | 379E | 12CCC | ----- |
SCRAP BRAIN | 86 | 379F | 12CCD | 140A5 |
FINAL | 8D | 3780 | ------- | ----- |
References