If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Super Mario Odyssey/Unused Code

From The Cutting Room Floor
Jump to navigation Jump to search

This is a sub-page of Super Mario Odyssey.

E3 Leftovers

Elementary, my dear Cactus.
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

Super-Mario-Odyssey-Version-Display.png

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

Hmmm...
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.png 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.