Sonic the Hedgehog (16-bit)/Text Editing
From Sonic Retro
|SCHG: Sonic the Hedgehog|
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 texts which length is 26-char, including the lines that shows only STAGE 2 and STAGE 3. The first space starts at the letter 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. Note: If you're using a split disassembly, open "menutext.bin" in the misc-folder with a Hex-Editor!
|GREEN HILL ZONE STAGE 1||$35A2 to $35B9|
|STAGE 2||$35BA to $35D1|
|STAGE 3||$35D2 to $35E9|
|LABYRINTH ZONE STAGE 1||$35EA to $3601|
|STAGE 2||$3602 to $3619|
|STAGE 3||$361A to $3631|
|MARBLE ZONE STAGE 1||$3632 to $3649|
|STAGE 2||$364A to $3661|
|STAGE 3||$3662 to $3679|
|STAR LIGHT ZONE STAGE 1||$367A to $3691|
|STAGE 2||$3692 to $36A9|
|STAGE 3||$36AA to $36C1|
|SPRING YARD ZONE STAGE 1||$36C2 to $36D9|
|STAGE 2||$36DA to $36F1|
|STAGE 3||$36F2 to $3709|
|SCRAP BRAIN ZONE STAGE 1||$370A to $3721|
|STAGE 2||$3722 to $3739|
|STAGE 3||$373A to $3751|
|FINAL ZONE||$3752 to $3769|
|SPECIAL STAGE||$376A to $3781|
|SOUND TEST||$3782 to $3799|
Levels' name uses non-ASCII characters. You need to know the letter code to modify the name. See the table below and change the names.
|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 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 panic! See below the codes of the letters, then the explanation of how this works.
|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-08 = 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)|
Now, trying to understand this: The level cards function like
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.
The values are set ups:
- I: X=8h; M: X=Fh; ".": X=8h.
- 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:
|GREEN HILL||$C9FE to $CA2B|
|LABYRINTH||$CA2C to $CA59|
|MARBLE||$CA5A to $CA79|
|STAR LIGHT||$CA7A to $CAA7|
|SPRING YARD||$CAA8 to $CADA|
|SCRAP BRAIN||$CADB to $CB0E|
|FINAL||$CB8B to $CBA3|
|ZONE||$CB0F to $CB24|
|SONIC HAS PASSED||$CBEA to $CC31|
|CHAOS EMERALD||$CCAD to $CCE8|
|SPECIAL STAGE||$CD6C to $CDA7|
|SONIC GOT THEM ALL||$CDA8 to $CDF3|
- Note: the minimum position is 80h (080) and the maximum is 70h (170).
- Second Note: If you are using a Split Disassembly, go to "Map_Obj34:".
Title Card Configuration
This 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:
- 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; and
- 02.14.01.54 - about the blue background.
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.
See the table below and start changing.
|GREEN HILL||$C448 to $C457|
|LABYRINTH||$C458 to $C467|
|MARBLE||$C468 to $C477|
|STAR LIGHT||$C478 to $C487|
|SPRING YARD||$C488 to $C497|
|SCRAP BRAIN||$C498 to $C4A7|
|FINAL||$C4A8 to $C4B7|
- Note: In a Disassembly it's in Obj34_ConData and for the hg dissembly, open sonic.asm and search for M_Card_GHZ:.
"Press Start Button" message on Title Screen
See main article SCHG How-to:Display the Press Start Button text.
Credits and Presentation Screen
To edit the credits, simply refer to the explanation in the title cards. It Is the same format. But the letter values change and you have other restrictions, shown below.
|SONIC TEAM STAFF||$172F8 to $1733E|
|GAME PLAN CAROL YAS||$1733F to $1738F|
|PROGRAM YU 2||$17390 to $173C2|
|CHARACTER DESIGN BIGISLAND||$173C3 to $1743B|
|DESIGN JINYA PHENIX RIE||$1743C to $174A0|
|SOUND PRODUCE MASATO NAKAMURA||$174A1 to $17523|
|SOUND PROGRAM JIMITA MACKY||$17524 to $17597|
|SPECIAL THANKS FUJIO MINEGISHI PAPA||$17598 to $17633|
|PRESENTED BY SEGA||$17634 to $1767F|
|TRY AGAIN||$17680 to $176A8|
|SONIC TEAM PRESENTS||$176A9 to $176FE|
See below the new codes for editing. You can't use Q, V, W and 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-50 = X||05-00-16 = L||05-00-32 = U|
|05-00-0E = E||09-00-08 = M||05-00-2A = Y|
|05-00-5C = F||05-00-1A = N||05-00-36 = 2|
|05-00-00 = G||05-00-26 = O||00-00-FF = (space)|
- Note: In a Disassembly it's stored in _maps\obj8A.asm!
- Second note: If you used the code 00-00-FF, the first time you play the game nothing happens, but if you return to SEGA logo may cause small glitch effects.