Sonic Heroes (Oct 30, 2003 prototype)

==Notes==
*At the time of release, this is the only known Debug build of Sonic Heroes, but it does not boot under retail hardware or emulation without hacking.
*This build is newer than the other NPDP build but older than the 18th November Prototype.
*When in Free movement mode, the players are able to free fall at any costs.
*This was in an unlabeled slot on the NPDP cartridge.
==Error Log==
N[OSREPORT]: USB Init Error<< Dolphin SDK - PAD release build: Aug 6 2003 04:30:02 (0x2301) >
This build is likely looking for an USB adapter like the GCP-2000.
==Gecko Codes==
This code will allow you to run the game under emulation and/or retail hardware by stubbing out the USB adapter the game is looking for.
[Gecko]
$Stub out USB I/O Calls [Sewer56]
04017338 60000000
04218a2c 4e800020
04218af4 4e800020
04219274 4e800020
042190dc 4e800020
04218e10 4e800020
04218f94 4e800020
// Commented:
80017338 60000000 // NOP Call to function that inits USB I/O
80218a2c 4e800020 // Stub out HIOEnumDevices
80218af4 4e800020 // Stub out HIOInit
80219274 4e800020 // Stub out HIORead
802190dc 4e800020 // Stub out HIORead (Overload)
80218e10 4e800020 // Stub out HIOReadMailbox
80218f94 4e800020 // Stub out HIOWriteMailbox
This code will allow you to boot into the regular main menu as opposed to "Easy Menu".
[Gecko]
$Replace Easy Menu with System Mode X [Sewer56]
C2022C90 00000004
7C0C0378 2C050003
40820008 38A00001
7D806378 90A3FF78
60000000 00000000
// Commented:
Replace 38A0000X (end of third line) with desired system mode:
0 = PAL Select
1 = Menu
2 = InGame
3 = EasyMenu
4 = Credits
5 = EasyMenuMovie
Please note that booting in modes other than 0, 1, 3, 5 will require some extra codes to initialize things.
This code (if not using an easy menu boot with the code above) can be used as a workaround to enter a specific level if the selection crashes in Easy Menu.
[Gecko]
$Level select workaround
042A78EC XXXXXXXX
XXXXXXXX = Level ID
[Gecko]
$Additive switch effect
0002115E 00000002
==General Changes==
*At the time of release this is the only known build to boot into "Easy Menu" without hacking.
**Easy Menu lacks the ability to select team "ForEdit" (seen in later versions); which is a placeholder related to how Super Hard Mode is internally implemented.
**The teams for Player(s) 3/4 cannot be selected in "Easy Menu".
**Sitting around in "Easy Menu" for a while may make the game freeze when starting a stage.
***Not sure what causes this; don't think it's a memory leak but this issue isn't present in other game versions.
*In Story Mode, Egg Emperor is not played if resuming story starting with Egg Fleet.
*The demo for Seaside Hill in this prototype is unique and not seen in other builds (at time of writing).
**This demo desyncs mid-way; likely to a change in the level's collision.
*A bug in Audio Menu causes track names to not render if hovering over a track that isn't unlocked.
*Starting Story Mode crashes the game if there are no stages completed. 
**If any story segment is complete and you are picking the starting stage, story however works fine.
*Team Rose's stages appear to be the same length as the final version, that is longer than the other NPDP build which is shorter than 8th October Prototype.
==Debug Controls==
This section details all currently known non-trivial hidden debug controls (no UI label, non-obvious control scheme).
===Easy Menu (Startup Screen)===
3P DPAD = Change Sound Mode
Note: Something weird about this screen is that 3P and 4P cannot select a team.
They are able to do so however in many other versions of the game.
===Basic Debug Mode (Same as Oct 8 Prototype)===
Hold L + R = Enable (Shows coordinate data for Speed Character and unlocks camera from auto cam)
L + R + X + Y = Finish Current Stage
L + R + DPAD UP = Add 1 life.
L + R + DPAD DOWN = Add 1 ring.
L + R + DPAD LEFT = 1x level up (for all characters).
L + R + DPAD RIGHT =F ill team blast gauge. (Unlike Oct 8, this fills up slowly instead of instantly).~
===Free Movement (Scan) Mode===
Z = Enable 
LStick = Move
Z + LStick = Up/Down
A = Release
===Camera Debug Mode===
B + A = Show Camera Debug HUD
B + Y = Toggle Camera Mode
B + X = Show Camera Render Regions
===Snapshot Mode (Port 2)===
2P Z (In-game, while paused) = Enable
2P DPAD = Move Fast
2P LStick = Move Slow
2P L/R = Up/Down
2P START + L/R = Zoom
2P START + LStick = Rotate
===SET (Object Layout) Editor===
A + Z = Enable
START + RStick = Rotate
START + L/R = Zoom
START + X = Change "Ring Type"
START + Y = Change Speed
START + B = Place Item
START + A = Go to nearest object (if you don't place it again, it will be deleted)
B + DPAD = Change Light Gate
Y + DPAD = Change Object
Control Stick = Toggle object properties
A + Control Stick = Change object settings
A + X = Exit
A + B = Drop to Floor
A + Y = Change Layout File (Design = sXX_DB.bin, Plan = sXX_PB.bin, PlanEx = sXX_PX.bin)
===CAM (Camera) Editor===
Z + Y = Enable
LStick = Move
L/R = Lower/Raise
B + Y = Reset Position
A + B = Switch Cam Speed
START + B = Place Item
START + A = Go to nearest object (if you don't place it again, it will be deleted)
===Memory and Profiling===
Y + L = Switch Menu (Texture Memory Allocations, CPU Profiler, Heap Allocation Viewer, Test)
===Story/Unlock Flags Test (Port 3)===
Z = Enable
L/R = Change Page
DPAD = Navigate
A = Toggle
===Enemy Test (Port 3)===
START = Enable
DPAD Left/Right = Change Page
DPAD Up/Down = Navigate 
A = Toggle
X = Toggle all ON
Y = Toggle all OFF
===Cutscene Debug (Port 2)===
2P A = Start after reset.
2P B = Pause
2P X = Unpause
2P DPAD = Frame Rewind/Advance
2P START = Reset cutscene. (Crashes if done too many times.)
===Particle Editor (Port 4 + Port 1)=== 
4P Z + START = Enable
4P START + Y = ??? (Game Crash. Theory: Tries to export new file but fails.)
4P Z = Toggle Menu Visibility
4P L/R = Select Particle
4P X = Go Down
4P Y = Go Up
4P B + A = Exit Menu
1P LStick = Move
1P DPAD = Rotate
1P L/R = Raise/Lower
1P X = Reset Rotation
1P Y = Teleport to Char
1P A = Test Particle
===Particle Table Editor (open from Particle Editor)===
4P Z + A = Enter Table Editor
4P B = Play Particle
4P A = Cancel Particle
1P A + LStick = Move Table Entry Origin Position
===Special Stage Debug (Port 4)===
4P A = Player Param Editor
4P B = Toggle Special Stage Debug Menu
4P DPAD = Navigate Menu
4P L/R = Increase/Decrease Value
===Other Debug Features (Unknown Key Combo)===
Address 	Description
803BD8C3 == 1	Spline Debug (Rails, Loops, etc.)
803BD8CB == 1	Score Debug (Per Type)
803BD8CC == 1	Robot Carnival/Storm Debug
==Origin==
File:Sonic NPDP.jpg|NPDP cartridge
==Images==
File:Sonic Heroes NPDP Debug Prototype - Easy Menu.png|Default menu the prototype boots into, a.k.a. "Easy Menu". This is the only known build to boot directly into this menu.
File:Sonic Heroes NPDP Debug Prototype - Title Screen.png|Title screen of this prototype, accessed via hacking.
File:Sonic Heroes NPDP Debug Prototype - Story Select.png|Crashes on story start if no story progression is made, otherwise works fine.
File:Sonic Heroes NPDP Debug Prototype - Audio Menu.png|Fully functional, however buggy in that it allows you to scroll onto items not yet unlocked; and when you do so, no items render.
File:Sonic Heroes NPDP Debug Prototype - Challenge Menu.png|Challenge menu with a nice typo.
File:Sonic Heroes NPDP Debug Prototype - Seaside Hill Demo.png|This demo is unique to this build (compared to all other known builds so far); however seems to desync due to collision changes mid way.
File:Sonic Heroes NPDP Debug Prototype - Rail Canyon Demo.png|In-game gameplay demo of Rail Canyon.
File:Sonic Heroes NPDP Debug Prototype - 2P Snapshot Mode.png|Built-in free camera mode available when paused on Controller Port 2.
File:Sonic Heroes NPDP Debug Prototype - Block Test.png|Allows you to test rendering of objects only.
File:Sonic Heroes NPDP Debug Prototype - Cam Editor.png|In-game fully featured camera editor.
File:Sonic Heroes NPDP Debug Prototype - Cam Debug.png|Camera debug displaying camera trigger regions and currently shown cameras.
File:Sonic Heroes NPDP Debug Prototype - CCL Debug.png|Object collision (CCL) debug. Object collision uses a different internal system to world collision.
File:Sonic Heroes NPDP Debug Prototype - Chaotix Rail Canyon.png|Mission description says 5 minutes. Actual timer is 6 minutes.
File:Sonic Heroes NPDP Debug Prototype - CPU Profiler.png|Shows the amount of CPU time taken by various in-game functions.
File:Sonic Heroes NPDP Debug Prototype - Heap Allocation Previewer.png|Allows you to view all allocations on the game's managed heap.
File:Sonic Heroes NPDP Debug Prototype - Heap Debug.png|Shows information about the game's managed heap.
File:Sonic Heroes NPDP Debug Prototype - Texture Memory Allocation Debug.png|Or at least that's what it's meant to be.
File:Sonic Heroes NPDP Debug Prototype - Land Information Debug.png|Shows debug information about all loaded geometry to the screen.
File:Sonic Heroes NPDP Debug Prototype - Debug Text Test.png|Menu which tests rendering of debug text.
File:Sonic Heroes NPDP Debug Prototype - Enemy Debug Print.png|Shows various regions related to enemies. Area they can hear, area they can see, etc.
File:Sonic Heroes NPDP Debug Prototype - Enemy Icon Test.png|Tests enemy reaction icons.
File:Sonic Heroes NPDP Debug Prototype - Enemy Link Test.png|Not sure what this does. I'd think it tests the links between objects (e.g. enemy to cage) but I haven't figured out how to use this so far.
File:Sonic Heroes NPDP Debug Prototype - Event Debug.png|Available on controller port 2. You can control events, including rewind, forward, reset etc.
File:Sonic Heroes NPDP Debug Prototype - Free Movement Mode.png|Free Movement Mode a.k.a. NoClip
File:Sonic Heroes NPDP Debug Prototype - Particle Editor.png|Available on Port 4. Edits individual particles.
File:Sonic Heroes NPDP Debug Prototype - Particle Table Editor.png|Available on Port 4. Edits particle tables (i.e. sXX_ptcl.bin)
File:Sonic Heroes NPDP Debug Prototype - SET Editor.png|Built-in object layout editor. Can edit all 3 types of layout files, DB (Design), PB (Plan), P<X> (PlanEx)
File:Sonic Heroes NPDP Debug Prototype - SET Editor Item Range.png|The SET editor can display item ranges, cool!
File:Sonic Heroes NPDP Debug Prototype - Special Stage Debug.png|Variable editor for Special Stages.
File:Sonic Heroes NPDP Debug Prototype - Special Stage Player Param Debug.png|Variable editor for Player Parameters in Special Stages.
File:Sonic Heroes NPDP Debug Prototype - Unlock Flags Debug.png|Available on Port 3. Allows you to toggle flags which unlock in-game items.
==Acknowledgments==
Thanks to emu_kidid for the modified version of Swiss required to unlock and dump the cart.
==See also==
*No-Intro entry