Files
Petari/include/Game/System/GameSystem.hpp
T

75 lines
2.4 KiB
C++

#pragma once
#include "Game/System/NerveExecutor.hpp"
class GameSequenceDirector;
class GameSystemDimmingWatcher;
class GameSystemErrorWatcher;
class GameSystemFontHolder;
class GameSystemFrameControl;
class GameSystemObjHolder;
class GameSystemSceneController;
class GameSystemStationedArchiveLoader;
class HomeButtonLayout;
class HomeButtonStateNotifier;
class SystemWipeHolder;
#define GX_FIFO_SIZE 0x80000
// オーディオ初期化 ("Audio Initialization") in Shift-JIS encoding
#define INIT_AUDIO_KEY "\x83\x49\x81\x5b\x83\x66\x83\x42\x83\x49\x8f\x89\x8a\xfa\x89\xbb"
#ifdef __MWERKS__
void main(void);
#endif
class GameSystem : public NerveExecutor {
public:
/// @brief Creates a new `GameSystem`.
GameSystem();
/// @brief Destroys the `GameSystem`.
virtual ~GameSystem() {}
void init();
bool isExecuteLoadSystemArchive() const;
bool isDoneLoadSystemArchive() const;
void startToLoadSystemArchive();
void exeInitializeAudio();
void exeInitializeLogoScene();
void exeLoadStationedArchive();
void exeWaitForReboot();
void exeNormal();
void initGX();
void initAfterStationedResourceLoaded();
void prepareReset();
bool isPreparedReset() const;
void frameLoop();
void draw();
void update();
void updateSceneController();
void calcAnim();
/* 0x08 */ void* mFifoBase;
/* 0x0C */ GameSequenceDirector* mSequenceDirector;
/* 0x10 */ GameSystemDimmingWatcher* mDimmingWatcher;
/* 0x14 */ GameSystemErrorWatcher* mErrorWatcher;
/* 0x18 */ GameSystemFontHolder* mFontHolder;
/* 0x1C */ GameSystemFrameControl* mFrameControl;
/* 0x20 */ GameSystemObjHolder* mObjHolder;
/* 0x24 */ GameSystemSceneController* mSceneController;
/* 0x28 */ GameSystemStationedArchiveLoader* mStationedArchiveLoader;
/* 0x2C */ HomeButtonLayout* mHomeButtonLayout;
/* 0x30 */ SystemWipeHolder* mSystemWipeHolder;
/* 0x34 */ HomeButtonStateNotifier* mHomeButtonStateNotifier;
/* 0x38 */ bool mIsExecuteLoadSystemArchive;
};
namespace NrvGameSystem {
NEW_NERVE(GameSystemInitializeAudio, GameSystem, InitializeAudio);
NEW_NERVE(GameSystemInitializeLogoScene, GameSystem, InitializeLogoScene);
NEW_NERVE(GameSystemLoadStationedArchive, GameSystem, LoadStationedArchive);
NEW_NERVE(GameSystemWaitForReboot, GameSystem, WaitForReboot);
NEW_NERVE(GameSystemNormal, GameSystem, Normal);
};