SONIC 2 LEVEL ORDER EDITING GUIDE CRE THU MAR 014 002 VERSION 1.1 BY LUIGI_LINK FOR: GM 00001051-01 Welcome to the Sonic 2 Level Order Editing Guide! This guide is for hackers who want to know how to edit the order of the levels. Everything is explained in detail, so anyone from your beginning hacker to the most advanced hacker (which prolly wouldn't need this) can learn how to do it for their aspiring Sonic 2 hack. Story is an important part of a game. Without story, there's no continuity, and with no continuity, there is less fun. Leaving the order of the levels alone would narrow your story's capabilities by very much. Here is the level order as you know it: Emerald Hill 1 Emerald Hill 2 Chemical Plant 1 Chemical Plant 2 Aquatic Ruin 1 Aqautic Ruin 2 Casino Night 1 Casino Night 2 Hill Top 1 Hill Top 2 Mystic Cave 1 Mystic Cave 2 Oil Ocean 1 Oil Ocean 2 Metropolis 1 Metropolis 2 Metropolis 3 Sky Chase Wing Fortress Death Egg This is how hackers look at it: 00 00 00 01 0D 00 0D 01 0F 00 0F 01 0C 00 0C 01 07 00 07 01 0B 00 0B 01 0A 00 0A 01 04 00 04 01 05 00 10 00 06 00 0E 00 FF FF (soft reset) For some of you, that may be complicated. But it's actually really simple. Just match it up... The level order isn't integrated in one place as a whole. Some parts of it are in different locations, but they're just as important as the cumulative list. STARTING LEVEL There are two ways to start a 1 player game: Press start on 1 PLAYER on title screen. Press start on PLAYER SELECT in Options menu. Knowing this, there is also two locations for the starting level for these ways of starting. This is probably the most complicated of the bunch. 0x003CC7-0x003CCD - 1 PLAYER Starting Level 0x0090A7-0x0090AD - PLAYER SELECT Starting Level Before beginning, it is important to change both of these, if you are to change any at all, to the level you have chosen, for consistency and to prevent cheating. Let's look at 0x003CC7-0x003CCD. Here is what you will see: C0 FF D8 31 C0 FE 10 As you can see, there is no level pointer here. So, we must change the format of what's here, in order to change the starting level easier. Change to: FC (0F 00) FE 10 4E 71 Where (0F 00) is the starting level bytes. So, say you wanted to start on Hidden Palace... FC 08 00 FE 10 4E 71 It would be that. At 0x0090A7-0x0090AD, there is something a little different, but basically the same: C0 FF 8A 31 C0 FE 10 You would change it the same exact way. So FC 08 00 FE 10 4E 71 would still be how to change it to Hidden Palace 1. Alternatively, if you would want these to point to the level select screen, this would be your change, but instead of starting at 0x3CC7 or 0x90A7, you start at 0x3CC6/90A6: from: 31 C0 or 31 FC to: 4E 71 This may hint at other modes of jumping as well. Check Nemesis' savestate guide for more details. In order to know your possiblities, you would need to know the... LEVEL TAGS Here is what hexadecimal the levels are. 00 is always act 1 and 01 is always act 2: 00 - Emerald Hill 01 - Unknown 02 - Wood 03 - "Dust Hill" 04 - Metropolis 05 - Metropolis 06 - Wing Fortress 07 - Hill Top 08 - Hidden Palace 09 - Unknown ("Genocide City") 0A - Oil Ocean 0B - Mystic Cave 0C - Casino Night 0D - Chemical Plant 0E - Death Egg 0F - Aquatic Ruin 10 - Sky Chase This is important to know, as it's exactly the how the level order goes in... ORDER OF THE LEVELS LISTS Let's throw the addresses at you before explaining anything. 0142F8 - Order that the levels come in (1P) 01433C - Order that the levels come in (2P) No, the second one is NOT the level select pointers. We'll get to that in a minute. First let's explain the 1P level order. Before we get started, know that a word is 2 bytes, and a dword is 4 bytes. The | delimits a dword. A Dword is one zone, and a word is an act. In a zone's Dword (the 00th Dword for example, Emerald Hill) the first word is a pointer of where to go when act 1 is done. The next is a pointer of where to go when act 2 is done. This continues for zones 00 (Emerald Hill) - 10 (Sky Chase) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 17 Dwords 34 Words 00 01 0D 00 | 00 00 00 00 | 02 01 04 00 | 00 00 00 00 | 04 01 05 00 ^ ^ ^ ^ ^ 00 - Emerald Hill 01 - Unknown 02 - Wood 03 - Dust Hill 04 - Metropolis It keeps going on like this, and ends on 0x01433B. Notice this is one byte before the mysterious 2P level order... Note that FF FF means soft reset, meaning you can end the game at any time - including before the ending. The 2P level order is the same, with these exceptions: Emerald Hill's word: 00 01 0C 00 Casino Night's word: 0C 01 0B 00 Mystic Cave's word: 0B 01 FF FF If you can't get it from that, here it is in plain text: Emerald Hill 1 Emerald Hill 2 Casino Night 1 Casino Night 2 Mystic Cave 1 Mystic Cave 2 It is only used if you exit a 2P level by placing an egg container in debug and using it. Was it a hint of a Grand Prix mode? Or was it used before the 2P level select was implemented? TRANSITIONS You may have noticed if you try to make Sky Chase or Wing Fortress point somewhere else, it doesn't have any affect. Why is this? Well, the levels are tied by transitions. Notice when you finish the level it doesn't calculate your score, and it just fades to the next. Only when you use an end sign post or an end egg container would it look in the level order. There are special addresses for these transitions. Luckily, there are only a few. I won't even go into adding your own transitions. 03AC42 - 0E00 - Wing Fortress to Death Egg 03A894 - 0600 - Sky Chase to Wing Fortress Now you can make it go somewhere without ruining the transitioning of the level. FOOTER I hope this guide has helped you to better understand how to edit the level order of Sonic 2. This guide is really directed to aspiring hackers of Sonic 2, and existing ones doing the big hacks who want to know how to stuff like this. This is the first guide by me publically released, and is formatted to be so. SPECIAL THANKS TO: Saxman Address: Level Order 1P Address: Starting level PLAYER SELECT Explaining 2P level order use Stealth Explaining how the level order works Dr. Ivo Address: Starting Level 1 PLAYER Explaining starting level format Esrael G. W. Neto Address: Sky Chase -> Wing Fortress transition Address: Wing Fortress -> Death Egg transition