Files
PodeCaradox--GalaxyFrame/decomp/include/Game/System/GameSystemSceneController.hpp
T
bigmak94andClaude Opus 5.5 bd9bded792 GalaxyQuest: Super Mario Galaxy in VR on Meta Quest 3
A native port built on the Petari decompilation (previous commit): an
HLE platform layer (OS, DVD, GX, audio, input, NAND) under the game's
own code, an OpenXR presentation (a diorama around the player, a giant
screen, the HUD and settings as compositor layers, SpaceWarp, dynamic
resolution), Touch Plus controls, the tools that convert your own game
files (tools/cook, which also takes the few pieces of data the game's
executable holds from your sys/main.dol), and the port's changes to the
decompilation (`git diff petari-base -- decomp`).  README.md explains
installing and building, docs/TECHNICAL.md how it works.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 01:59:38 +02:00

115 lines
3.5 KiB
C++

#pragma once
#include <revolution/types.h>
class IntermissionScene;
class JMapIdInfo;
class NameObjHolder;
class NameObjListExecutor;
class Nerve;
class PlayTimerScene;
class ScenarioDataParser;
class ScenarioSelectScene;
class Scene;
class SceneObjHolder;
class Spine;
class SceneControlInfo {
public:
/// @brief Creates a new `SceneControlInfo`.
SceneControlInfo();
void setScene(const char*);
void setStage(const char*);
void setStartIdInfo(const JMapIdInfo&);
/* 0x00 */ char mScene[32];
/* 0x20 */ char mStage[32];
/* 0x40 */ s32 mScenarioNo;
/* 0x44 */ s32 mSelectedScenarioNo;
/* 0x48 */ JMapIdInfo* mStartIdInfo;
};
enum SceneInitializeState {
SceneInitializeState_NotInit,
SceneInitializeState_Init,
SceneInitializeState_PlacementPlayer,
SceneInitializeState_PlacementHighPriority,
SceneInitializeState_Placement,
SceneInitializeState_AfterPlacement,
SceneInitializeState_End,
};
class GameSystemSceneController {
public:
/// @brief Creates a new `GameSystemSceneController`.
GameSystemSceneController();
void initAfterStationedResourceLoaded();
void requestChangeScene();
void checkRequestAndChangeScene();
void initializeScene();
void destroyScene();
bool isStopSound() const;
bool isReadyToStartScene() const;
bool isFirstUpdateSceneNerveNormal() const;
void startScene();
void updateScene();
void updateSceneDuringResetProcessing();
void calcAnimScene();
void drawScene();
NameObjListExecutor* getNameObjListExecutor() const;
SceneObjHolder* getSceneObjHolder() const;
bool isExistSceneObjHolder() const;
s32 getCurrentScenarioNo() const;
s32 getCurrentSelectedScenarioNo() const;
void setSceneInitializeState(SceneInitializeState);
bool isSceneInitializeState(SceneInitializeState) const;
void startScenarioSelectScene();
void startScenarioSelectSceneBackground();
void setCurrentScenarioNo(s32, s32);
void resetCurrentScenarioNo();
bool isScenarioDecided() const;
void loadScenarioWaveData();
bool isLoadDoneScenarioWaveData() const;
void exeNotInitialized();
void exeNormal();
void exeWaitDrawDoneScene();
void exeDestroyScene();
void exeChangeWaveBank();
void exeInitializeScene();
void exeInvalidateSystemWipe();
void exeDestroyed();
void exeReadyToStartScene();
void prepareReset();
bool isPreparedReset();
void restartGameAfterResetting();
bool isExistRequest() const;
#ifdef TARGET_PC
// A scene change is requested or under way (not the normal state).
bool isChangingScene() const;
#endif
bool isSameAtNextSceneAndStage() const;
void updateSceneControlInfo();
Scene* getCurrentSceneForExecute() const;
const Nerve* getNextNerveOnResetProcessing() const;
bool tryDestroyFileCacheHeap(bool) NO_INLINE;
void requestChangeNerve(const Nerve*);
bool isCurrentNerve(const Nerve*) const;
bool isNextNerve(const Nerve*) const;
/* 0x00 */ SceneControlInfo mCurrSceneControlInfo;
/* 0x4C */ SceneControlInfo mNextSceneControlInfo;
/* 0x98 */ Spine* mSpine;
/* 0x9C */ const Nerve* mNextNerve;
/* 0xA0 */ bool mIsResetProcessing;
/* 0xA4 */ ScenarioDataParser* mScenarioParser;
/* 0xA8 */ NameObjHolder* mObjHolder;
/* 0xAC */ Scene* mScene;
/* 0xB0 */ SceneInitializeState mSceneInitializeState;
/* 0xB4 */ IntermissionScene* mIntermissionScene;
/* 0xB8 */ PlayTimerScene* mPlayTimerScene;
/* 0xBC */ ScenarioSelectScene* mScenarioSelectScene;
};