Actions

SCHG

Difference between revisions of "Esrael s1"

From Sonic Retro

(I actually had most of this done when my browser crapped out on me. Some cleanup.)
m (Text replacement - " Text==" to " text==")
 
(13 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{cleanup}}
+
{{HistoricalArticle|equivalent=SCHG:Sonic the Hedgehog}}
  
==Introduction==
+
''Original translation by Sanderson Hk''
Hello. I’ve translated the
 
notes and I put some things that Esrael didn’t see at the time he published this guide. —Sanderson Hk
 
  
Using a hex editor it is possible to modify the game, editing it byte-by-byte. By knowing where each
+
Using a hex editor it is possible to modify ''[[Sonic the Hedgehog (16-bit)|Sonic the Hedgehog]]'', editing it byte by byte. By knowing where each function is and modifying it correctly, it is possible to customize the game. You can draw another character in Sonic's place, but it's not very easy, because it needs to be drawn pixel by pixel. You can change the level names in the level select menu and in the level title cards. But to program the game, it needs to be in the binary format. It isn't hard to convert the game to binary form. You can use a conversion program or the [[Genecyst]] emulator's DUMP ROM option, which does the conversion.
function is and modifying it correctly, you and customize the game. You can draw another character in Sonic's place, but it's not too easy, because it needs to be made point-to-point. You can change the levels' name in the Level Select Menu and in the Level Title Cards. But to program the game, it needs to be in the
 
tbinary format. It isn't hard to convert the game to binary form. You can use a conversion program or the [[Genecyst]] emulator's DUMP ROM option, which does the conversion.
 
  
 
==Level Select Menu==
 
==Level Select Menu==
''Sonic 1''<nowiki>'s</nowiki> Level Select Menu uses a 26-char per line plain-text format. In all the lines, you can type texts which length is 26-char, including the lines that shows only STAGE 2 and STAGE 3. The first space starts at the leter G of the phrase GREEN HILL and the final space finishes at the number 1 of the text STAGE 1. The first space of the next line starts where the previous line ends. See below the offset location for these texts.
+
''Sonic 1''<nowiki>'s</nowiki> level select menu uses a 26 char per line plain text format. In all the lines, you can type text whose length is 26 characters, including the lines which only contain an act number. The first character in each line is the first character of the level name, and the last character is the act number. The first character of the next line starts where the previous line ends. The location of each line is as follows:
 +
{| class="prettytable" style="width:auto;"
 +
! Level !! Address
 +
|-
 +
| 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
 +
|}
  
Warning: in a hex editor, you'll see the addresses indicated by 0000ADC8, for example. In the page you'll see the same address indicated simply by ADC8.
+
Level names use non ASCII characters, and thus need to be modified using the letter codes given below:
 +
{| class="prettytable" style="width:auto;"
 +
| 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 = (space)
 +
|
 +
|
 +
|
 +
|}
  
{|align="center" border="1
+
==Level Title Cards==
!LEVEL || ADDRESS
+
You also can change the level titles, but you have two restrictions: the number of characters you can put and the letters available. In the level cards, you cannot use the letters '''J''', '''Q''', '''V''', '''W''', or '''X''', and thus level titles with these characters cannot be used. Also, the title modification isn't as easy as level select text modification, because you need to specify the distance between the letters to avoid overlaps. The code for each letter is given below:
 +
{| class="prettytable" style="width:auto;"
 +
| 05 00 00 = A
 +
| 05 00 22 = K
 +
| 05 00 46 = U
 
|-
 
|-
| GREEN HILL ZONE STAGE 1 || 35A2 to 35B9
+
| 05 00 04 = B
 +
| 05 00 26 = L
 +
| 05 00 4A = Y
 
|-
 
|-
| STAGE 2 || 35BA to 35D1
+
| 05 00 09 = C
 +
| 05 00 2A = M
 +
| 05 00 4E = Z
 
|-
 
|-
| STAGE 3 || 35D2 to 35E9
+
| 05 00 0C = D
 +
| 05 00 2E = N
 +
| 00 00 52 = .
 
|-
 
|-
| LABYRINTH ZONE STAGE 1 || 35EA to 3601
+
| 05 00 10 = E
 +
| 05 00 32 = O
 +
| 0C 00 53 = act
 
|-
 
|-
| STAGE 2 || 3602 to 3619
+
| 05 00 14 = F
 +
| 05 00 36 = P
 +
| 02 00 57 = 1
 
|-
 
|-
| STAGE 3 || 361A to 3631
+
| 05 00 18 = G
 +
| 05 00 3A = R
 +
| 06 00 5A = 2
 
|-
 
|-
| MARBLE ZONE STAGE 1 || 3632 to 3649
+
| 05 00 1C = H
 +
| 05 00 3E = S
 +
| 06 00 60 = 3
 
|-
 
|-
| STAGE 2 || 364A to 3661
+
| 01 00 20 = I
|-
+
| 05 00 42 = T
| STAGE 3 || 3662 to 3679
+
| 00 00 56 = (space)
 +
|}
 +
 
 +
The level card mappings have the format LC [VS (LV CO DE) HS] [...]. LC is the number of letters that you want to be drawn, and the value of LC is the number of times VS (LV CO DE) HS occurs. VS is the vertical screen position of the letter, LV CO DE is one of the values in the table above, and HS is the horizontal screen position of the letter.
 +
 
 +
As an example to help understand this, let's look at the Green Hill title card data: 09 F8 05 00 18 B4 F8 05 00 3A C4 ... The 09 is the number of letters to be drawn. The other bytes are the letter configuration. The X value of the second letter is the X value of the first letter + the width of the first letter. The width of the letter I and the period character (.) are 8 pixels, the width of M $F pixels, and the width of all other letters $10 pixels. The locations of the title card mappings for each level are as follows:
 +
{| class="prettytable" style="width:auto;"
 +
! Text !! Address
 
|-
 
|-
| STAR LIGHT ZONE STAGE 1 || 367A to 3691
+
| GREEN HILL || $C9FE-$CA2B
 
|-
 
|-
| STAGE 2 || 3692 to 36A9
+
| LABYRINTH || $CA2C-$CA59
 
|-
 
|-
| STAGE 3 || 36AA to 36C1
+
| MARBLE || $CA5A-$CA79
 
|-
 
|-
| SPRING YARD ZONE STAGE 1 || 36C2 to 36D9
+
| STAR LIGHT || $CA7A-$CAA7
 
|-
 
|-
| STAGE 2 || 36DA to 36F1
+
| SPRING YARD || $CAA8-$CADA
 
|-
 
|-
| STAGE 3 || 36F2 to 3709
+
| SCRAP BRAIN || $CADB-$CB0E
 
|-
 
|-
| SCRAP BRAIN ZONE STAGE 1 || 370A to 3721
+
| FINAL || $CB8B-$CBA3
 
|-
 
|-
| STAGE 2 || 3722 to 3739
+
| ZONE || $CB0F-$CB24
 
|-
 
|-
| STAGE 3 || 373A to 3751
+
| SONIC HAS PASSED || $CBEA-$CC31
 
|-
 
|-
| FINAL ZONE || 3752 to 3769
+
| CHAOS EMERALD || $CCAD-$CCE8
 
|-
 
|-
| SPECIAL STAGE || 376A to 3781
+
| SPECIAL STAGE || $CD6C-$CDA7
 
|-
 
|-
| SOUND TEST || 3782 to 3799
+
| SONIC GOT THEM ALL || $CDA8-$CDF3
 
|}
 
|}
  
Levels' name uses non-ASCII character. You need to know the letter code to modify the name. See the table below and change the names. Run the game and access the Level Select Menu (I'll identify some things with abbreviations, like L.S.M. for this), and see the names you put.
+
==Title Card Configuration==
 +
This game area tells the game how the text must be shown when the level starts: where it starts and where it ends. Each level uses 16 bytes to configure the title cards. For example, if we look at the Green Hill Zone configuration, we see: 00000120FEFC013C0414015402140154. Separating this sequence in 4 byte group, we have:
 +
*00 00 01 20 - about the text
 +
*FE FC 01 3C - about the "ZONE" title
 +
*04 14 01 54 - about the "ACT X" title, where X is 1, 2 or 3
 +
*02 14 01 54 - about the blue background
  
{| width="100%" border="1"
+
For each group, the first two bytes are the start position of the text, and the last two are the end position. The table below gives the locations of the configuration data for each level:
| width="20%" align="center" | 00 = 0
+
{| class="prettytable" style="width:auto;"
| width="20%" align="center" | 01 = 1
+
! Level !! Address
| width="20%" align="center" | 02 = 2
+
|-
| width="20%" align="center" | 03 = 3
+
| GREEN HILL || $C448-$C457
| width="20%" align="center" | 04 = 4
 
 
|-
 
|-
| width="20%" align="center" | 05 = 5
+
| LABYRINTH || $C458-$C467
| width="20%" align="center" | 06 = 6
 
| width="20%" align="center" | 07 = 7
 
| width="20%" align="center" | 08 = 8
 
| width="20%" align="center" | 09 = 9
 
 
|-
 
|-
| width="20%" align="center" | 0A = $
+
| MARBLE || $C468-$C477
| width="20%" align="center" | 0B = -
 
| width="20%" align="center" | 0C = =
 
| width="20%" align="center" | 0D = <-
 
| width="20%" align="center" | 0E = <-
 
 
|-
 
|-
| width="20%" align="center" | 0F = Y
+
| STAR LIGHT || $C478-$C487
| width="20%" align="center" | 10 = Z
 
| width="20%" align="center" | 11 = A
 
| width="20%" align="center" | 12 = B
 
| width="20%" align="center" | 13 = C
 
 
|-
 
|-
| width="20%" align="center" | 14 = D
+
| SPRING YARD || $C488-$C497
| width="20%" align="center" | 15 = E
 
| width="20%" align="center" | 16 = F
 
| width="20%" align="center" | 17 = G
 
| width="20%" align="center" | 18 = H
 
 
|-
 
|-
| width="20%" align="center" | 19 = I
+
| SCRAP BRAIN || $C498-$C4A7
| width="20%" align="center" | 1A = J
 
| width="20%" align="center" | 1B = K
 
| width="20%" align="center" | 1C = L
 
| width="20%" align="center" | 1D = M
 
 
|-
 
|-
| width="20%" align="center" | 1E = N
+
| FINAL || $C4A8-$C4B7
| width="20%" align="center" | 1F = O
+
|}
| width="20%" align="center" | 20 = P
+
 
| width="20%" align="center" | 21 = Q
+
==Press Start Button text==
| width="20%" align="center" | 22 = R
+
You can show the message "PRESS START BUTTON" in the title screen. To do this, go to the address indicated below and change the byte 02 to 00:
 +
{| class="prettytable" style="width:auto;"
 +
! ROM Revision !! Address
 
|-
 
|-
| width="20%" align="center" | 23 = S
+
| REV00 || $17271
| width="20%" align="center" | 24 = T
 
| width="20%" align="center" | 25 = U
 
| width="20%" align="center" | 26 = V
 
| width="20%" align="center" | 27 = W
 
 
|-
 
|-
| width="20%" align="center" | 28 = X
+
| REV01 || $17A1D
| width="20%" align="center" | FF = (space)
 
 
|}
 
|}
  
 +
==Credits and Presentation Screen==
 +
To edit the credits text, simply refer to the explanation in the title cards. It is the same format, but the letter widths and restrictions are slightly different. The letters '''Q''', '''V''', '''W''' and '''Z''' cannot be used. The letter widths are 8 for the letter X, $14 for the letter M, and $10 for all other letters. The letter codes are as follows:
 +
{| class="prettytable" style="width:auto;"
 +
| 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-50 = X || 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 = Z
 +
|-
 +
| 05-00-00 = G || 05-00-26 = O ||
 +
|}
  
==Level Title Cards===
+
And the locations for the mappings data are as follows:
You also can change the level titles, but you have two restrictions: the number of characters you can put and the letters available. In the level cards, you CAN'T use the letters '''J, Q, V, W, or X'''. It means that words which use these letters can't be used. Also, the title modification isn't too easy like level select, because you need to specify the distance between the letters to avoid that they overlap themselves. Don't enter in panic! See below the codes of the letters, then the explanation of how this works.</p>
+
{| class="prettytable" style="width:auto;"
{| width="100%" border="1"
+
! Text !! Address
| width="33%" | 05-00-00 = A
+
|-
| width="33%" | 05-00-22 = K
+
| SONIC TEAM STAFF || $172F8-$1733E
| width="34%" | 05-00-46 = U
+
|-
 +
| GAME PLAN CAROL YAS || $1733F-$1738F
 +
|-
 +
| PROGRAM YU 2 || $17390-$173C2
 
|-
 
|-
| width="33%" | 05-00-04 = B
+
| CHARACTER DESIGN BIGISLAND || $173C3-$1743B
| width="33%" | 05-00-26 = L
 
| width="34%" | 05-00-4A = Y
 
 
|-
 
|-
| width="33%" | 05-00-09 = C
+
| DESIGN JINYA PHENIX RIE || $1743C-$174A0
| width="33%" | 05-00-2A = M
 
| width="34%" | 05-00-4E = Z
 
 
|-
 
|-
| width="33%" | 05-00-0C = D
+
| SOUND PRODUCE MASATO NAKAMURA || $174A1-$17523
| width="33%" | 05-00-2E = N
 
| width="34%" | 00-00-52 = .
 
 
|-
 
|-
| width="33%" | 05-00-10 = E
+
| SOUND PROGRAM JIMITA MACKY || $17524-$17597
| width="33%" | 05-00-32 = O
 
| width="34%" | 0C-00-53 = act
 
 
|-
 
|-
| width="33%" | 05-00-14 = F
+
| SPECIAL THANKS FUJIO MINEGISHI PAPA || $17598-$17633
| width="33%" | 05-00-36 = P
 
| width="34%" | 02-00-57 = 1
 
 
|-
 
|-
| width="33%" | 05-00-18 = G
+
| PRESENTED BY SEGA || $17634-$1767F
| width="33%" | 05-00-3A = R
 
| width="34%" | 06-00-5A = 2
 
 
|-
 
|-
| width="33%" | 05-00-1C = H
+
| TRY AGAIN || $17680-$176A8
| width="33%" | 05-00-3E = S
 
| width="34%" | 06-00-60 = 3
 
 
|-
 
|-
| width="33%" | 01-00-20 = I
+
| SONIC TEAM PRESENTS || $176A9-$176FE
| width="33%" | 05-00-42 = T
 
| width="34%" | 00-00-56=(space)
 
 
|}
 
|}
  
Now, trying to understand this: The level cards function like
+
==Music pointers==
 +
The music pointers are located at $71A9C. The following table gives the music ID, name, and location of the music data:
 +
{| class="prettytable" style="width:auto;"
 +
! Music ID !! Music Name !! Location
 +
|-
 +
| $81 || Green Hill Zone || $745DC
 +
|-
 +
| $82 || Labyrinth Zone || $74D44
 +
|-
 +
| $83 || Marble Zone || $75194
 +
|-
 +
| $84 || Star Light Zone || $755F2
 +
|-
 +
| $85 || Spring Yard Zone || $75A60
 +
|-
 +
| $86 || Scrap Brain Zone || $75EAC
 +
|-
 +
| $87 || Invincibility || $763FC
 +
|-
 +
| $89 || Special Stage || $766D0
 +
|-
 +
| $8C || Boss Music || $76E42
 +
|-
 +
| $8D || Final Zone || $7705E
 +
|}
  
LC-VS-(LV-CO-DE)-HS-VS-(LV... until the final -VS, where:
 
  
LC is the quantity of characters that you allow to be shown; VS is the vertical screen position of the letter; LV-CO-DE is one of the values above and HS is the horizontal screen position of the letter. An example is welcome to understand this. So, I'll take GREEN HILL title for example. The code is of the type above, right? So, 09-F8-05-00-18-B4-F8-05-00-3A-C4... the 09 is the letters allowed to be shown. The other bytes are the letter configuration. The space between letters are formed as: LETTER1 +X = YOU CAN PUT LETTER2. I'll talk about this X.
+
==References==
 +
<references />
  
Particularities, first:
 
<p>I: X=8h; M: X=Fh; &quot;.&quot;: X=8h.</p>
 
<p>For the another, X=10h. Note that the value is added in HEX format, not in
 
decimal. Below, you have the offset locations of the title cards:</p>
 
<table border="1" cellpadding="0" width="100%" style="width:100.0%;mso-cellspacing:
 
1.5pt">
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center">TEXT
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">ADDRESS</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal">GREEN HILL</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">C9FE to CA2B</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal">LABYRINTH</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">CA2C to CA59</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal">MARBLE</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">CA5A to CA79</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal">STAR LIGHT</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">CA7A to CAA7</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal"><span lang="EN" style="mso-ansi-language:EN">SPRING
 
      YARD
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">CAA8
 
      to CADA
 
     
 
      </span></p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal"><span lang="EN" style="mso-ansi-language:EN">SCRAP
 
      BRAIN
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">CADB to CB0E</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal">FINAL</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">CB8B to CBA3</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal">ZONE</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">CB0F to CB24</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal"><span lang="EN" style="mso-ansi-language:EN">SONIC
 
      HAS PASSED
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">CBEA to CC31</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal">CHAOS EMERALD</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">CCAD to CCE8</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal"><span lang="EN" style="mso-ansi-language:EN">SPECIAL
 
      STAGE
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">CD6C
 
      to CDA7
 
     
 
      </span></p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal"><span lang="EN" style="mso-ansi-language:EN">SONIC
 
      GOT THEM ALL
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">CDA8 to CDF3</p>
 
    </td>
 
  </tr>
 
</table>
 
<p>Observation: the minimum position is 80h (080) and the maximum is 70h (170).</p>
 
<p><font size="4"><b>Title Card Configuration</b></font></p>
 
<p>This game area tells the game how the text must be shown when the level
 
starts, it means, where to enter or to quit. Each level use 16 bytes to
 
configure the titles. By an example, I'll take the Green Hill Configuration:
 
00000120FEFC013C0414015402140154. Separating this sequence in 4-byte group, we
 
have:</p>
 
<p style="margin-top: 0; margin-bottom: 0">00.00.01.20 - about the text;</p>
 
<p style="margin-top: 0; margin-bottom: 0">FE.FC.01.3C - about the
 
&quot;ZONE&quot; title;</p>
 
<p style="margin-top: 0; margin-bottom: 0">04.14.01.54 - about the &quot;ACT
 
X&quot; title, where X is 1,2 or 3; and</p>
 
<p style="margin-top: 0; margin-bottom: 0">02.14.01.54 - about the blue
 
background.</p>
 
<p>Separating these lists in groups of 2, we have that the 2 first bytes are the
 
enter position of the text and the 2 last are the exit position of the text, in
 
all the 4-byte group.</p>
 
<p>See the table below and start changing.</p>
 
<table border="1" cellpadding="0" width="100%" style="width:100.0%;mso-cellspacing:
 
1.5pt">
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p align="center" style="text-align:center">LEVEL</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p align="center" style="text-align:center">ADDRESS</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal">GREEN HILL</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">C448 to C457</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal">LABYRINTH</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">C458 to C467</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal">MARBLE</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">C468 to C477</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal"><span lang="EN" style="mso-ansi-language:EN">STAR
 
      LIGHT
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">C478
 
      to C487
 
     
 
      </span></p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal"><span lang="EN" style="mso-ansi-language:EN">SPRING
 
      YARD
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">C488 to C497</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal">SCRAP BRAIN</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">C498 to C4A7</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal">FINAL</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">C4A8 to C4B7</p>
 
    </td>
 
  </tr>
 
</table>
 
<p>You can show the message &quot;PRESS START BUTTON&quot; in the title screen.
 
To do this, go to the address indicated below.</p>
 
<table border="0" cellpadding="0" width="100%" style="width:100.0%;mso-cellspacing:
 
1.5pt">
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">ROM VERSION</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">ADDRESS</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">NORTH-AMERICAN
 
      (U)</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">17271</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">JAPANESE (J)</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">17A1D</p>
 
    </td>
 
  </tr>
 
</table>
 
<p><b><font size="4">Credits and Presentation Screen</font></b></p>
 
<p>To edit the credits, simply refer to the explanation in the title cards. Is
 
the same format. But the letter particularities change and you have another
 
restrictions, shown below.</p>
 
<table border="1" cellpadding="0" width="100%" style="width:100.0%;mso-cellspacing:
 
1.5pt">
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">TEXT
 
     
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">ADDRESS
 
     
 
     
 
      </span></p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">SONIC
 
      TEAM STAFF
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">172F8 to 1733E</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">GAME
 
      PLAN CAROL YAS
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">1733F
 
      to 1738F
 
     
 
      </span></p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">PROGRAM YU 2</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">17390 to 173C2</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">CHARACTER
 
      DESIGN BIGISLAND
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">173C3 to 1743B</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">DESIGN
 
      JINYA PHENIX RIE
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">1743C to 174A0</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">SOUND
 
      PRODUCE MASATO NAKAMURA
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">174A1 to 17523</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">SOUND
 
      PROGRAM JIMITA MACKY</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">17524 to 17597</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">SPECIAL
 
      TANKS FUJIO MINEGISHI PAPA</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">17598
 
      to 17633
 
     
 
      </span></p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">PRESENTED
 
      BY SEGA
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">17634
 
      to 1767F
 
     
 
      </span></p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">TRY
 
      AGAIN
 
     
 
      </span></p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">17680 to 176A8</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">SONIC TEAM
 
      PRESENTS</p>
 
    </td>
 
    <td width="50%" style="width:50.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">176A9 to 176FE</p>
 
    </td>
 
  </tr>
 
</table>
 
<p>See below the new codes for editing</p>
 
<table border="1" cellpadding="0" width="100%" style="width:100.0%;mso-cellspacing:
 
1.5pt">
 
  <tr>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">05-00-04 = A</p>
 
    </td>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">05-00-3A = H</p>
 
    </td>
 
    <td width="34%" style="width:34.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">05-00-12
 
      = P
 
     
 
      </span></p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">05-00-48
 
      = B
 
     
 
      </span></p>
 
    </td>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN" style="mso-ansi-language:EN">01-00-46
 
      = I
 
     
 
      </span></p>
 
    </td>
 
    <td width="34%" style="width:34.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">05-00-22 = R</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">05-00-1E = C</p>
 
    </td>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">05-00-4C = J</p>
 
    </td>
 
    <td width="34%" style="width:34.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">05-00-2E = S</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">05-00-42 = D</p>
 
    </td>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">05-00-58 = K</p>
 
    </td>
 
    <td width="34%" style="width:34.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">05-00-3E = T</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD">05-00-50
 
      = X
 
     
 
      </span></p>
 
    </td>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD">05-00-16
 
      = L
 
     
 
      </span></p>
 
    </td>
 
    <td width="34%" style="width:34.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD">05-00-32
 
      = U
 
     
 
      </span></p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">05-00-0E = E</p>
 
    </td>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">09-00-08 = M</p>
 
    </td>
 
    <td width="34%" style="width:34.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD">00-00-2A
 
      = Y
 
     
 
      </span></p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center"><span lang="ES-TRAD" style="mso-ansi-language:ES-TRAD">05-00-5C
 
      = F
 
     
 
      </span></p>
 
    </td>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">05-00-1A = N</p>
 
    </td>
 
    <td width="34%" style="width:34.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">0C-00-36 = 2</p>
 
    </td>
 
  </tr>
 
  <tr>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">05-00-00 = G</p>
 
    </td>
 
    <td width="33%" style="width:33.0%;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal" align="center" style="text-align:center">05-00-26 = O</p>
 
    </td>
 
    <td style="border:none;padding:.75pt .75pt .75pt .75pt">
 
      <p class="MsoNormal">&nbsp;<span style="font-size:10.0pt">
 
     
 
      </span></p>
 
    </td>
 
  </tr>
 
</table>
 
<p>As I said, the configuration is the same of the title cards. Now, you have
 
the following restrictions: you can't use the letters <b>Q-V-W-Z</b>.</p>
 
<p>Particularities: I: X= 8h; M=14h. For the another, X= 10h.</p>
 
<p>I won't translate the MUSIC section of Esrael's notes because it works while
 
you haven't defeated the boss. After the boss, the music turns back to the
 
original level music. Starting from here, I'll put my notes.</p>
 
<p><font size="4"><b>Master Playlist Music Changing Method</b></font></p>
 
<p><font size="3">First thing you need to understand the this playlist is the
 
playlist shown at the L.S.M., and it's the better method for changing music
 
playlist. So, to do this, you need the following table:</font></p>
 
<table>
 
  <tr>
 
    <td>71A9C</td>
 
    <td>Midi pointers</td>
 
  </tr>
 
  <tr>
 
    <td>745DC</td>
 
    <td>Green Hill</td>
 
  </tr>
 
  <tr>
 
    <td>74D44</td>
 
    <td>Labyrinth</td>
 
  </tr>
 
  <tr>
 
    <td>75194</td>
 
    <td>Marble</td>
 
  </tr>
 
  <tr>
 
    <td>755F2</td>
 
    <td>Star Light</td>
 
  </tr>
 
  <tr>
 
    <td>75A60</td>
 
    <td>Spring Yard</td>
 
  </tr>
 
  <tr>
 
    <td>75EAC</td>
 
    <td>Scrap Brain</td>
 
  </tr>
 
  <tr>
 
    <td>763FC</td>
 
    <td>Invincibility</td>
 
  </tr>
 
  <tr>
 
    <td>766D0</td>
 
    <td>Special Stage</td>
 
  </tr>
 
  <tr>
 
    <td>76E42</td>
 
    <td>Zone Boss</td>
 
  </tr>
 
  <tr>
 
    <td>7705E</td>
 
    <td>Final</td>
 
  </tr>
 
</table>
 
<p><font size="3">Where 71A9C is an offset index, it is, the bytes are put like
 
offset addresses.</font></p>
 
<p><font size="3">The order of the playlist is:</font></p>
 
<table border="1" width="100%">
 
  <tr>
 
    <td width="12%">80-NONE</td>
 
    <td width="12%">81-Green Hill</td>
 
    <td width="12%">82-Labyrinth</td>
 
    <td width="12%">83-Marble</td>
 
    <td width="13%">84-Star Light</td>
 
    <td width="13%">85-Spring Yard</td>
 
    <td width="13%">86-Scrap Brain</td>
 
    <td width="13%">89-Special Stage</td>
 
  </tr>
 
  <tr>
 
    <td width="12%">Location</td>
 
    <td width="12%">71A9C</td>
 
    <td width="12%">71AA0</td>
 
    <td width="12%">71AA4</td>
 
    <td width="13%">71AA8</td>
 
    <td width="13%">71AAC</td>
 
    <td width="13%">71AB0</td>
 
    <td width="13%">71ABC</td>
 
  </tr>
 
  <tr>
 
    <td width="12%">&nbsp;</td>
 
    <td width="12%">8C-Zone Boss</td>
 
    <td width="12%">8D-Final</td>
 
    <td width="12%">&nbsp;</td>
 
    <td width="13%">&nbsp;</td>
 
    <td width="13%">&nbsp;</td>
 
    <td width="13%">&nbsp;</td>
 
    <td width="13%">&nbsp;</td>
 
  </tr>
 
  <tr>
 
    <td width="12%">&nbsp;</td>
 
    <td width="12%">71AC8</td>
 
    <td width="12%">71ACC</td>
 
    <td width="12%">&nbsp;</td>
 
    <td width="13%">&nbsp;</td>
 
    <td width="13%">&nbsp;</td>
 
    <td width="13%">&nbsp;</td>
 
    <td width="13%">&nbsp;</td>
 
  </tr>
 
</table>
 
<p>So, only put one of the addresses above, except 71A9C, and then see the music
 
working.</p>
 
<p>If I have anything about the game to say, I'll put it starting by there.</p>
 
<p><b>Translation to U.S. English did and published by Sanderson Hk.</b></p>
 
 
{{SCHGuides}}
 
{{SCHGuides}}

Latest revision as of 16:36, 24 March 2020

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.

Original translation by Sanderson Hk

Using a hex editor it is possible to modify Sonic the Hedgehog, editing it byte by byte. By knowing where each function is and modifying it correctly, it is possible to customize the game. You can draw another character in Sonic's place, but it's not very easy, because it needs to be drawn pixel by pixel. You can change the level names in the level select menu and in the level title cards. But to program the game, it needs to be in the binary format. It isn't hard to convert the game to binary form. You can use a conversion program or the Genecyst emulator's DUMP ROM option, which does the conversion.

Level Select Menu

Sonic 1's level select menu uses a 26 char per line plain text format. In all the lines, you can type text whose length is 26 characters, including the lines which only contain an act number. The first character in each line is the first character of the level name, and the last character is the act number. The first character of the next line starts where the previous line ends. The location of each line is as follows:

Level Address
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

Level names use non ASCII characters, and thus need to be modified using the letter codes given below:

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 = (space)

Level Title Cards

You also can change the level titles, but you have two restrictions: the number of characters you can put and the letters available. In the level cards, you cannot use the letters J, Q, V, W, or X, and thus level titles with these characters cannot be used. Also, the title modification isn't as easy as level select text modification, because you need to specify the distance between the letters to avoid overlaps. The code for each letter is given below:

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 = (space)

The level card mappings have the format LC [VS (LV CO DE) HS] [...]. LC is the number of letters that you want to be drawn, and the value of LC is the number of times VS (LV CO DE) HS occurs. VS is the vertical screen position of the letter, LV CO DE is one of the values in the table above, and HS is the horizontal screen position of the letter.

As an example to help understand this, let's look at the Green Hill title card data: 09 F8 05 00 18 B4 F8 05 00 3A C4 ... The 09 is the number of letters to be drawn. The other bytes are the letter configuration. The X value of the second letter is the X value of the first letter + the width of the first letter. The width of the letter I and the period character (.) are 8 pixels, the width of M $F pixels, and the width of all other letters $10 pixels. The locations of the title card mappings for each level are as follows:

Text Address
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

Title Card Configuration

This game area tells the game how the text must be shown when the level starts: where it starts and where it ends. Each level uses 16 bytes to configure the title cards. For example, if we look at the Green Hill Zone configuration, we see: 00000120FEFC013C0414015402140154. Separating this sequence in 4 byte group, we have:

  • 00 00 01 20 - about the text
  • FE FC 01 3C - about the "ZONE" title
  • 04 14 01 54 - about the "ACT X" title, where X is 1, 2 or 3
  • 02 14 01 54 - about the blue background

For each group, the first two bytes are the start position of the text, and the last two are the end position. The table below gives the locations of the configuration data for each level:

Level Address
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

Press Start Button text

You can show the message "PRESS START BUTTON" in the title screen. To do this, go to the address indicated below and change the byte 02 to 00:

ROM Revision Address
REV00 $17271
REV01 $17A1D

Credits and Presentation Screen

To edit the credits text, simply refer to the explanation in the title cards. It is the same format, but the letter widths and restrictions are slightly different. The letters Q, V, W and Z cannot be used. The letter widths are 8 for the letter X, $14 for the letter M, and $10 for all other letters. The letter codes are as follows:

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-50 = X 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 = Z
05-00-00 = G 05-00-26 = O

And the locations for the mappings data are as follows:

Text Address
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

Music pointers

The music pointers are located at $71A9C. The following table gives the music ID, name, and location of the music data:

Music ID Music Name Location
$81 Green Hill Zone $745DC
$82 Labyrinth Zone $74D44
$83 Marble Zone $75194
$84 Star Light Zone $755F2
$85 Spring Yard Zone $75A60
$86 Scrap Brain Zone $75EAC
$87 Invincibility $763FC
$89 Special Stage $766D0
$8C Boss Music $76E42
$8D Final Zone $7705E


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