mirror of
https://github.com/doldecomp/sms.git
synced 2026-11-09 01:49:41 -10:00
* fix: match marerr * chore: marnamerefgen bathtubpeach * marnamerefgen improvements * match processmeter * fix: match JointModel * fix: symbol validation order * feat: J3DModel NX * feat: Application NX * chore: styling fixes * chore: attempt to properly decomp MapStaticObject for non JP * fix: regression * fix: code review feedback * fix: forgor
132 lines
3.3 KiB
C++
132 lines
3.3 KiB
C++
#ifndef APPLICATION_HPP
|
|
#define APPLICATION_HPP
|
|
|
|
#include <Strategic/NameRefAry.hpp>
|
|
#include <Strategic/NameRefPtrAry.hpp>
|
|
#include <System/GameSequence.hpp>
|
|
#include <dolphin/types.h>
|
|
|
|
static const char* dummyMactorStringValue1 = "\0\0\0\0\0\0\0\0\0\0\0";
|
|
static const char* SMS_NO_MEMORY_MESSAGE = "メモリが足りません\n";
|
|
|
|
#ifdef VERSION_GMSP01_NX
|
|
extern u32 gl_stardust_frameid;
|
|
#endif
|
|
|
|
namespace JDrama {
|
|
class TDisplay;
|
|
class TDirector;
|
|
} // namespace JDrama
|
|
|
|
class JKRMemArchive;
|
|
class JKRHeap;
|
|
class TMarioGamePad;
|
|
class TSMSFader;
|
|
class TScenarioArchiveName;
|
|
class TProcessMeter;
|
|
class JKRAramBlock;
|
|
class JKRArchive;
|
|
class JUTResFont;
|
|
|
|
f32 SMSGetVSyncTimesPerSec();
|
|
#if defined(VERSION_GMSP01) || defined(VERSION_GMSP01_NX) \
|
|
|| defined(VERSION_GMSJ01_01)
|
|
f32 SMSGetRealVSyncTimesPerSec();
|
|
void load2DResource2Aram();
|
|
#endif
|
|
|
|
#ifdef VERSION_GMSP01_NX
|
|
extern bool s_RunOnGC;
|
|
#endif
|
|
|
|
f32 SMSGetAnmFrameRate();
|
|
void* SMSLoadArchive(const char*, void*, u32, JKRHeap*);
|
|
|
|
struct TARAMBlock {
|
|
/* 0x0 */ JKRAramBlock* mBlock;
|
|
/* 0x4 */ bool mIsCompressed;
|
|
};
|
|
void SMSLoadArchiveARAM(TARAMBlock* out_block, const char* path);
|
|
void SMSMountAramArchive(JKRMemArchive* archive, TARAMBlock& block);
|
|
JKRArchive* SMSSwitch2DArchive(const char* arc_path, TARAMBlock& block);
|
|
extern TARAMBlock gArBkConsole;
|
|
extern TARAMBlock gArBkGuide;
|
|
extern JUTResFont* gpSystemFont;
|
|
|
|
class TApplication {
|
|
public:
|
|
TApplication();
|
|
void* setupThreadFuncBoot();
|
|
void initialize();
|
|
void* setupThreadFuncLogo();
|
|
void initialize_bootAfter();
|
|
void initialize_nlogoAfter();
|
|
void initialize_processMeter();
|
|
void finalize();
|
|
bool checkAdditionalMovie();
|
|
void proc();
|
|
int gameLoop();
|
|
int drawDVDErr();
|
|
JKRMemArchive* mountStageArchive();
|
|
|
|
// Fabricated
|
|
const TGameSequence& getPrevArea() const { return mPrevArea; }
|
|
// Fabricated
|
|
const TGameSequence& getCurrArea() const { return mCurrArea; }
|
|
// Fabricated
|
|
TGameSequence& getNextArea() { return mNextArea; }
|
|
// fabricated
|
|
void setNextArea(const TGameSequence& next_area) { mNextArea = next_area; }
|
|
|
|
u32 getMovie() const { return mMovie; }
|
|
void setMovie(u32 v) { mMovie = v; }
|
|
|
|
// Fabricated
|
|
s8 getSaveFile() const { return mSaveFile; }
|
|
// Fabricated
|
|
void setSaveFile(s8 file) { mSaveFile = file; }
|
|
TSMSFader* getFader() const { return mFader; }
|
|
|
|
enum {
|
|
APP_STATE_WAIT = 0,
|
|
APP_STATE_DEFAULT = 1,
|
|
APP_STATE_BOOT = 2,
|
|
APP_STATE_NLOGO = 3,
|
|
APP_STATE_DONE = 4,
|
|
APP_STATE_GAMEPLAY = 5,
|
|
APP_STATE_MOVIE = 6,
|
|
APP_STATE_QUIT = 7,
|
|
APP_STATE_TITLE = 8,
|
|
APP_STATE_MENU = 9,
|
|
};
|
|
|
|
private:
|
|
/* 0x00 */ TApplication* mSelf;
|
|
/* 0x04 */ JDrama::TDirector* mDirector;
|
|
/* 0x08 */ u8 mAppState;
|
|
/* 0x0A */ TGameSequence mPrevArea;
|
|
/* 0x0E */ TGameSequence mCurrArea;
|
|
/* 0x12 */ TGameSequence mNextArea;
|
|
/* 0x18 */ u32 mMovie;
|
|
/* 0x1C */ JDrama::TDisplay* mDisplay;
|
|
/* 0x20 */ TMarioGamePad* mGamePads[4];
|
|
/* 0x30 */ TNameRefPtrAryT<TNameRefAryT<TScenarioArchiveName> >* unk30;
|
|
/* 0x34 */ TSMSFader* mFader;
|
|
/* 0x38 */ s8 mSaveFile;
|
|
/* 0x3C */ u32 unk3C;
|
|
/* 0x40 */ JKRHeap* mHeap;
|
|
/* 0x44 */ u16 unk44;
|
|
/* 0x46 */ u16 unk46;
|
|
/* 0x48 */ TProcessMeter* mMeter;
|
|
};
|
|
|
|
extern TApplication gpApplication;
|
|
|
|
// fabricated
|
|
inline TApplication* SMSGetApplication() { return &gpApplication; }
|
|
|
|
class TCardManager;
|
|
extern TCardManager* gpCardManager;
|
|
|
|
#endif
|