SSBM Decomp
Loading...
Searching...
No Matches
src/melee/gm/gm_1A3F.dox File Reference

Functions

void gm_801A4014 (GameMode *mode)
 Runs one game-mode scene transition and invokes the run loop for a given scene.
void * gm_GetGameSceneLoadDataCallback (GameScene *)
void * gm_GetGameSceneLeaveDataCallback (GameScene *)
void gm_SetSceneIndex (u8 arg0)
 Sets the scene index for both the current and previous scene.
void gm_SetPendingSceneIndex (u8 pending_scene)
 Sets the scene index for the pending scene.
u8 gm_GetPreviousSceneIndex (void)
u8 gm_GetCurrentSceneIndex (void)
void gm_SetNewGameModePending (void)
 Sets gm_80479D30's GameState::pending value to true (1).
void gm_SetPendingGameMode (s8 pending_mode)
 Sets GameRouting::pending_mode on gm_80479D30 to pending_mode for use after the current mode exits.
void gm_ChangeGameModeAfterCurrentScene (int pending_mode)
 Sets GameRouting::pending_mode and GameState::pending on gm_80479D30 to pending_mode and true (1) for use after the current scene exits,.
u8 gm_GetCurrentGameMode (void)
u8 gm_GetPreviousGameMode (void)
u8 gm_RunGameMode (GameModeKind mode_kind)
 Loads a game mode, runs it to completion, then unloads it.

Function Documentation

◆ gm_801A4014()

void gm_801A4014 ( GameMode * mode)

Runs one game-mode scene transition and invokes the run loop for a given scene.

Finds the current GameScene in mode, runs its Prep handler, loads the scene via gm_FindGameSceneHandler / gm_801A4D34, then advances GameRouting::curr_scene_idx when the scene loop exits.

◆ gm_GetGameSceneLoadDataCallback()

void * gm_GetGameSceneLoadDataCallback ( GameScene * scene)

◆ gm_GetGameSceneLeaveDataCallback()

void * gm_GetGameSceneLeaveDataCallback ( GameScene * scene)

◆ gm_SetSceneIndex()

void gm_SetSceneIndex ( u8 arg0)

Sets the scene index for both the current and previous scene.

Sets GameRouting::curr_scene_idx and GameRouting::prev_scene_idx on gm_80479D30.

See docs related to GameScene.

Parameters
arg0The index of the scene to use. Not to be confused with the scene class_id, which is defined as a GameSceneKind.

◆ gm_SetPendingSceneIndex()

void gm_SetPendingSceneIndex ( u8 pending_scene)

Sets the scene index for the pending scene.

Sets GameRouting::pending_scene_idx on gm_80479D30 to arg0 + 1

See docs related to GameScene.

Parameters
arg0The scene index of the scene preceding the desired pending scene. The method adds +1 to the input. Not to be confused with the scene class_id, which is defined as a GameSceneKind.
Parameters
pending_sceneActually sets the pending scene to the scene following the input

◆ gm_GetPreviousSceneIndex()

u8 gm_GetPreviousSceneIndex ( void )

◆ gm_GetCurrentSceneIndex()

u8 gm_GetCurrentSceneIndex ( void )

◆ gm_SetNewGameModePending()

void gm_SetNewGameModePending ( void )

Sets gm_80479D30's GameState::pending value to true (1).

Signaling that the game mode should change after the current scene exits.

See also: gm_ChangeGameModeAfterCurrentScene, gm_SetPendingGameMode, gm_RunGameMode

◆ gm_SetPendingGameMode()

void gm_SetPendingGameMode ( s8 pending_mode)

Sets GameRouting::pending_mode on gm_80479D30 to pending_mode for use after the current mode exits.

Sets the gm_80479D30 GameRouting::pending_mode to the provided value. The pending_mode is read when gm_RunGameMode exits, ultimately passing the pending_mode on to the next invocation of gm_RunGameMode.

Note that subsequent calls to gm_SetPendingGameMode or gm_ChangeGameModeAfterCurrentScene will override the last one. When a game mode exits, the last call to gm_SetPendingGameMode or gm_ChangeGameModeAfterCurrentScene wins.

See also: gm_ChangeGameModeAfterCurrentScene, gm_SetNewGameModePending, gm_RunGameMode

Parameters
pending_modeThe next game mode to use

◆ gm_ChangeGameModeAfterCurrentScene()

void gm_ChangeGameModeAfterCurrentScene ( int pending_mode)

Sets GameRouting::pending_mode and GameState::pending on gm_80479D30 to pending_mode and true (1) for use after the current scene exits,.

Sets the gm_80479D30 GameRouting::pending_mode to the provided value, setting GameState::pending to true (1) in the process. The pending_mode is read when gm_RunGameMode exits, ultimately passing the pending_mode on to the next invocation of gm_RunGameMode.

Effectively equivelant to running gm_SetPendingGameMode and gm_SetNewGameModePending

Note that subsequent calls to gm_SetPendingGameMode or gm_ChangeGameModeAfterCurrentScene will override the last one. When a game mode exits, the last call to gm_SetPendingGameMode or gm_ChangeGameModeAfterCurrentScene wins.

See also: gm_SetPendingGameMode, gm_SetNewGameModePending, gm_RunGameMode

Parameters
pending_modeThe next game mode to use

◆ gm_GetCurrentGameMode()

u8 gm_GetCurrentGameMode ( void )

◆ gm_GetPreviousGameMode()

u8 gm_GetPreviousGameMode ( void )

◆ gm_RunGameMode()

u8 gm_RunGameMode ( GameModeKind mode_kind)

Loads a game mode, runs it to completion, then unloads it.

Loads the data associated with the given GameModeKind (asset preload and GameMode::Load), then executes its scene graph via gm_801A4014 until GameState::pending is set. When the loop finishes, unloads the mode (GameMode::Unload) unless the game is resetting, then returns GameRouting::pending_mode, the next pending GameModeKind.

If GameState::game_mode_override is defined and returns a mode < GM_COUNT, a single scene from that game mode will be executed after the current scene exits, skipping typical game mode load/preload routines for the resulting gamemode. GameState::pending takes precedence over the override behavior.

See also: gm_ChangeGameModeAfterCurrentScene, gm_SetPendingGameMode, gm_SetNewGameModePending

Returns
The next pending GameModeKind (GameRouting::pending_mode).