Actions

SCHG

Esrael s1 (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. 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.

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 ------- -----
Sonic Community Hacking Guide
General
Sonic Music Hacking Guide | SonED2 Manual
Game-Specific
Sonic the Hedgehog (16-bit) | Sonic the Hedgehog (8-bit) | Sonic Eraser | Sonic CD (prototype 510) | Sonic CD | Sonic CD (PC) | Sonic CD (2011) | Sonic 2 (Nick Arcade prototype) | Sonic 2 (Simon Wai prototype) | Sonic 2 (16-bit) | Sonic 2 (8-bit) | Sonic 2 & Knuckles | Dr. Robotnik's Mean Bean Machine | Sonic Triple Trouble | Sonic 3 | Sonic & Knuckles | Sonic 3 & Knuckles | Sonic & Knuckles Collection | Sonic Crackers | Sonic 3D: Flickies' Island | Chaotix | Sonic R PC | Sonic Jam 6 | Sonic Advance | Sonic Advance 2 | Sonic Advance 3 | Sonic Battle | 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 | Shadow the Hedgehog | Sonic Riders | Sonic the Hedgehog (2006) | Sonic & Sega All-Stars Racing | Sonic Unleashed (Xbox 360/PS3) | Sonic Generations
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 | Subroutine Equivalency List | 68000 Instruction Set | 68000 ASM-to-Hex Code Reference | VDP Documentation | Official Sega 32X Documentation | Official Mega-CD Documentation | Official Sega Mega Drive Documentation