Super Mario Odyssey/Unused Code
This is a sub-page of Super Mario Odyssey.
E3 Leftovers
This needs some investigation. Discuss ideas and findings on the talk page. |
There are a few classes in the game's code that reference E3. There is a sequence director that tells the game which sequence to load: the main game (under the name "Hakoniwa"), or the E3 sequence (under the name "E3Sequence"). Of course, the game passes the former instead of the latter. The resource loader would load the resources used in the Sand Kingdom and the Metro Kingdom.
It is possible to force the game to load this sequence by changing the string passed to SequenceFactory::createSequence(char const *sequenceName). However, loading has been tested and will fail on launch due to it trying to load the layouts E3TitleMenu, E3StageSelect, and E3Thank. Creating these with the needed panes fixes this problem and lets you load into a start menu.
Trying to load into a stage crashes though due to missing shaders that E3Sequence tries to load. Nobody has been able to get around this crash yet.
Version Display
There is a (functionally) unused layout called "MenuRight". It contains a pane named 'TxtVersion' in the top-right corner with the placeholder text "Ver.1.0.". In 1.0.0, if the game's version didn't match 1.0.0 (which is impossible without editing the game's metadata), the game would display whatever the version is in this pane, in the format ("x.x.x"). In 1.0.1, the code was changed so that the pane would not display, no matter what the version was.
Player States
To do: All of the information about the states are speculation by viewing the game's code. It would be great if we could get these working in-game! Might also be a good idea to put the decompiled code here. |
In the game's code, most of Mario's actions are done through 'PlayerState' functions. Unused ones are not initialized by the player.
PlayerStateAutoDash
Seems to be a leftover from very early development, and it barely covers any animation stuff. If the player's speed was greater or equal to 12.0, then the 'exeRun' function would run. It looks like it would start using the 'exeDash' after some time of running, where the 'Dash' animation would play.
PlayerStateCeilingKeep
Also a very early state. If you collided with the ceiling, then you would go into this state. It looks like you would have slid forward on the ceiling with a velocity of 20.0 in whatever direction Mario was already looking at, until you weren't on it anymore. If you fell off the ceiling, then you would slowly fall to the ground and another state would start.
PlayerStateFreeRun
Very fleshed out running action. It looks like you would have gone really fast and stopping would mean to 'brake'. It would start with the animation 'RunStart' and get faster from that point to a dash. The 'Dash' animation is for dashing, 'DashBrake' is for stopping, 'DashTurn' is for turning while dashing, and 'Turn' is for turning while braking.
PlayerStateJump2D3D
Unused function for jumping out of a 2D area.
PlayerStateNormalFall
Unused function for falling.
PlayerStateNormalWait
Unused function for when you're just standing on the ground. The used function of this is 'PlayerStateWait'.
PlayerStateRun
Unused function for running. It uses the same 'Dash' animations from 'PlayerStateFreeRun'. There's even an unused function that doesn't get used in the state. 'exePivot' would have turned the player with a 'TurnPoint' animation.
PlayerStateRun2D3D
It would have been used to check whether the game should use 'PlayerStateRun' or 'PlayerStateRun2D'.
PlayerStateSwordAttack
In this state, Mario would have wielded a 'PowerGrove' actor. This is a typo for a power glove. It used the animations 'Punch' and 'Fire', and would have been for punching. Each punch would result in a 'CapAttack' action based off of the code for the glove itself.
PlayerStateTargetJump
This would have been a pretty powerful jump. It would have been activated by a TouchTargetKeeper. The animations for it are 'TouchJumpLong', 'TouchJump', and 'JumpBroad'.
PlayerStateTouchMove
Also activated by a TouchTargetKeeper, this one does literally nothing. The only instruction in the 'exeJump' function is a return.
Unused Modes
In the game's code, there is 6 check functions hardcoded to return false, making them return true with mods can enable different modes.
To enable these modes, use this (version 1.0 only) IPSwitch patch:
Download Super Mario Odyssey Unused Modes
File: SMO-E3-10.zip (359B) (info)
|
rs::isModeE3MovieRom rs::isModeE3LiveRom rs::isModeE3Rom rs::isModeDiverOrJungleGymRom rs::isModeDiverRom rs::isModeMovieRom
rs::isModeE3MovieRom
This mode slows the game down to 30 FPS, and removes most UI elements including their animations.
rs::isModeE3LiveRom
This mode snaps to a black screen after the controller screen, and plays the title song without Mario's voice.
rs::isModeE3Rom
This mode removes all warp paintings, disables amiibo, crashes the game when trying to scan an amiibo by talking to Uncle amiibo, makes the shop say "Sold Out" on the map if youve bought everything from the shop, crashes the game when talking to the shop, prevents you from using the globe on the odyssey (just like in the Kiosk Demo and E3 Demo), disables snapshot mode, crashes the game when you warp, and makes the game crash when entering any loading zone.
rs::isModeDiverOrJungleGymRom
This mode resets Mario's clothes to default when entering, prevents you from changing the clothes, and also removes most UI elements in the same way that rs::isModeE3MovieRom
does.
rs::isModeDiverRom
This mode resets Mario's clothes to default when entering, but doesn't prevent you from changing them later.
rs::isModeMovieRom
This mode slows the game down to 30 FPS, while keeping the UI elements.