diff options
| author | robojumper <robojumper@gmail.com> | 2026-04-09 08:14:45 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-09 08:14:45 +0200 |
| commit | 124935c073861c40f412e1bc0bfb880f5ded7693 (patch) | |
| tree | 10a0d14b20b56477055997c92449c448a9f97b97 /include | |
| parent | f9fb1b59fca13953041d747da203ec37c38f6bc3 (diff) | |
| parent | 5083d2031c263e392165fe440fe175d67ef86bd1 (diff) | |
Merge pull request #305 from bgsamm/d_main
Matches for d_main, d_sys, & mpls
Diffstat (limited to 'include')
| -rw-r--r-- | include/c/c_counter.h | 11 | ||||
| -rw-r--r-- | include/d/d_hbm.h | 2 | ||||
| -rw-r--r-- | include/d/d_main.h | 14 | ||||
| -rw-r--r-- | include/d/d_scene.h | 4 | ||||
| -rw-r--r-- | include/d/d_state.h | 13 | ||||
| -rw-r--r-- | include/d/d_sys.h | 35 | ||||
| -rw-r--r-- | include/d/d_sys_init.h | 12 | ||||
| -rw-r--r-- | include/d/lyt/d_lyt_system_window.h | 2 | ||||
| -rw-r--r-- | include/egg/core/eggController.h | 4 | ||||
| -rw-r--r-- | include/egg/core/eggDisplay.h | 4 | ||||
| -rw-r--r-- | include/egg/core/eggDvdFile.h | 2 | ||||
| -rw-r--r-- | include/egg/core/eggProcessMeter.h | 14 | ||||
| -rw-r--r-- | include/egg/core/eggSystem.h | 77 | ||||
| -rw-r--r-- | include/egg/core/eggVideo.h | 4 | ||||
| -rw-r--r-- | include/egg/core/eggXfbManager.h | 1 | ||||
| -rw-r--r-- | include/f/f_manager.h | 9 | ||||
| -rw-r--r-- | include/m/m_dvd.h | 5 | ||||
| -rw-r--r-- | include/rvl/OS/OSExec.h | 2 | ||||
| -rw-r--r-- | include/rvl/OS/OSThread.h | 3 | ||||
| -rw-r--r-- | include/rvl/SC/scapi.h | 1 | ||||
| -rw-r--r-- | include/rvl/WPAD/WPAD.h | 1 | ||||
| -rw-r--r-- | include/toBeSorted/arc_callback_handler.h | 8 | ||||
| -rw-r--r-- | include/toBeSorted/d_d3d.h | 4 | ||||
| -rw-r--r-- | include/toBeSorted/d_lib.h | 20 | ||||
| -rw-r--r-- | include/toBeSorted/mpls.h | 12 | ||||
| -rw-r--r-- | include/toBeSorted/unk_save_time.h | 3 |
26 files changed, 253 insertions, 14 deletions
diff --git a/include/c/c_counter.h b/include/c/c_counter.h index 8efe5f26..cb19146d 100644 --- a/include/c/c_counter.h +++ b/include/c/c_counter.h @@ -9,8 +9,19 @@ public: return m_gameFrame; } + static void IncrementGameFrame() { + m_gameFrame++; + } + + static void IncrementUnkCounter() { + m_unkCounter++; + } + + static void clear(); + private: static s32 m_gameFrame; + static s32 m_unkCounter; }; #endif diff --git a/include/d/d_hbm.h b/include/d/d_hbm.h index f02387db..7f6ce607 100644 --- a/include/d/d_hbm.h +++ b/include/d/d_hbm.h @@ -12,7 +12,7 @@ public: typedef void (*MenuInitCallback)(); - static void CreateInstance(); + static void CreateInstance(EGG::Heap *); static Manage_c *GetInstance(); Manage_c(EGG::Heap *); diff --git a/include/d/d_main.h b/include/d/d_main.h new file mode 100644 index 00000000..57332fe9 --- /dev/null +++ b/include/d/d_main.h @@ -0,0 +1,14 @@ +#ifndef D_MAIN_H +#define D_MAIN_H + +#include "rvl/OS.h" + +namespace dMain { + +void Create(); +void Execute(); +void *main01(void *arg); + +}; // namespace dMain + +#endif // D_MAIN_H diff --git a/include/d/d_scene.h b/include/d/d_scene.h index 8c2334a0..eee6ea91 100644 --- a/include/d/d_scene.h +++ b/include/d/d_scene.h @@ -19,6 +19,10 @@ public: static dBase_c *staticExecute(); static void setRootActor(fProfile::PROFILE_NAME_e rootActor, u32 params, s32 fadeInType, s32 fadeOutType); + static dFader_c *getFader() { + return &sFader; + } + protected: static dFader_c sFader; }; diff --git a/include/d/d_state.h b/include/d/d_state.h new file mode 100644 index 00000000..b6384b7d --- /dev/null +++ b/include/d/d_state.h @@ -0,0 +1,13 @@ +#ifndef D_STATE_H +#define D_STATE_H + +namespace dState { + +void fn_80062E40(); +void fn_80062E50(); +void fn_80062EB0(); +bool fn_80062EC0(); + +} + +#endif // D_STATE_H diff --git a/include/d/d_sys.h b/include/d/d_sys.h index 7557307d..cf602af8 100644 --- a/include/d/d_sys.h +++ b/include/d/d_sys.h @@ -3,18 +3,53 @@ #include "common.h" #include "egg/core/eggHeap.h" +#include "egg/core/eggProcessMeter.h" +#include "egg/core/eggSystem.h" #include "nw4r/ut/ut_Color.h" +#define ROUND_UP_4KB(x) (((u32)(x) + 4096 - 1) & ~(4096 - 1)) + +typedef EGG::TSystem< + EGG::Video, EGG::AsyncDisplay, EGG::XfbManager, EGG::SimpleAudioMgr, EGG::SceneManager, EGG::ProcessMeter> + System; + +class dSndMgr_c; + class dSys_c { public: + static dSndMgr_c *initAudioMgr(EGG::Heap *heap); + + static void beginRender(); + static void endRender(); + static void beginFrame(); + static void endFrame(); + + static bool setBlack(bool); /* Frame rate values: 1 - 60fps, 2 - 30fps */ static void setFrameRate(u8); static u8 getFrameRate(); static void setClearColor(nw4r::ut::Color clr); + static nw4r::ut::Color getClearColor(); + + static void create(); + static void execute(); +public: + static System *ms_configuration_p; static EGG::Heap *ms_RootHeapMem1; static EGG::Heap *ms_RootHeapMem2; }; +namespace dSystem { + +extern void *s_OrgMEM1ArenaLo; +extern void *s_NewMEM1ArenaLo; +extern void *s_OrgMEM1ArenaHi; +extern void *s_NewMEM1ArenaHi; + +void fixHeaps(); + +}; // namespace dSystem + #endif diff --git a/include/d/d_sys_init.h b/include/d/d_sys_init.h new file mode 100644 index 00000000..b87d3526 --- /dev/null +++ b/include/d/d_sys_init.h @@ -0,0 +1,12 @@ +#ifndef D_SYS_INIT_H +#define D_SYS_INIT_H + +#include "s/s_Phase.hpp" + +namespace dSystem { + +extern sPhase_c myDylinkInitPhase; + +} + +#endif // D_SYS_INIT_H diff --git a/include/d/lyt/d_lyt_system_window.h b/include/d/lyt/d_lyt_system_window.h index 838edc69..87094657 100644 --- a/include/d/lyt/d_lyt_system_window.h +++ b/include/d/lyt/d_lyt_system_window.h @@ -80,6 +80,8 @@ public: s32 getField_0xDE0() const; bool getField_0xDFC() const; + void fn_80152E20(); + void fn_80152EF0(); void fn_80152F10(); bool fn_80152F50() const; bool fn_80152F60() const; diff --git a/include/egg/core/eggController.h b/include/egg/core/eggController.h index a790b667..8dd447a4 100644 --- a/include/egg/core/eggController.h +++ b/include/egg/core/eggController.h @@ -346,6 +346,10 @@ public: sConnectCallback = cb; } + static void setWPADWorkSize(u32 size) { + sWPADWorkSize = size; + } + private: CoreControllerMgr(); diff --git a/include/egg/core/eggDisplay.h b/include/egg/core/eggDisplay.h index cdf2fe7a..986cfcda 100644 --- a/include/egg/core/eggDisplay.h +++ b/include/egg/core/eggDisplay.h @@ -58,6 +58,10 @@ public: mClearColor = color; } + u32 getClearZ() { + return mClearZ; + } + public: static u32 sTickPeriod; }; diff --git a/include/egg/core/eggDvdFile.h b/include/egg/core/eggDvdFile.h index ac36ae4e..6b511e2a 100644 --- a/include/egg/core/eggDvdFile.h +++ b/include/egg/core/eggDvdFile.h @@ -39,7 +39,7 @@ public: /* vt 0x24 */ virtual bool open(const char *path, void *); public: - void initialize(); + static void initialize(); DvdFile(); void initiate(); s32 sync(); diff --git a/include/egg/core/eggProcessMeter.h b/include/egg/core/eggProcessMeter.h new file mode 100644 index 00000000..3641c43d --- /dev/null +++ b/include/egg/core/eggProcessMeter.h @@ -0,0 +1,14 @@ +#ifndef EGG_PROCESS_METER_H +#define EGG_PROCESS_METER_H + +#include "egg/core/eggThread.h" + +namespace EGG { + +class PerformanceView {}; + +class ProcessMeter : public Thread, public PerformanceView {}; + +}; + +#endif // EGG_PROCESS_METER_H diff --git a/include/egg/core/eggSystem.h b/include/egg/core/eggSystem.h index 919c84da..634b7578 100644 --- a/include/egg/core/eggSystem.h +++ b/include/egg/core/eggSystem.h @@ -2,30 +2,37 @@ #define EGG_SYSTEM_H #include "common.h" -#include "egg/core/eggHeap.h" - +#include "egg/core/eggVideo.h" namespace EGG { class Display; -class XfbManager; +class Heap; +class PerformanceView; +class SceneManager; +class SimpleAudioMgr; +class Thread; class Video; +class XfbManager; class ConfigurationData { public: + inline ConfigurationData() : mSystemHeapSize(0x89000) {} + // vtable at 0x0 /* vt 0x08 */ virtual Video *getVideo() = 0; /* vt 0x0C */ virtual Heap *getSystemHeap() = 0; /* vt 0x10 */ virtual Display *getDisplay() = 0; /* vt 0x14 */ virtual XfbManager *getXfbMgr() = 0; - /* vt 0x18 */ virtual void getPerfView() = 0; - /* vt 0x1C */ virtual void getScnMgr() = 0; - /* vt 0x20 */ virtual void getAudioMgr() = 0; + /* vt 0x18 */ virtual PerformanceView *getPerfView() = 0; + /* vt 0x1C */ virtual SceneManager *getSceneMgr() = 0; + /* vt 0x20 */ virtual SimpleAudioMgr *getAudioMgr() = 0; /* vt 0x24 */ virtual void onBeginFrame(); /* vt 0x28 */ virtual void onEndFrame(); /* vt 0x2C */ virtual void initRenderMode(); /* vt 0x30 */ virtual void initMemory(); /* vt 0x34 */ virtual void run(); + /* vt 0x38 */ virtual void initialize() = 0; public: /* 0x04 */ u32 mRoot1HeapStart; @@ -41,12 +48,11 @@ public: /* 0x2C */ u32 field_0x2C; /* 0x30 */ u32 mSystemHeapStart; /* 0x34 */ u32 mSystemHeapSize; - /* 0x38 */ u32 mGraphicsFifoSize; - /* 0x3C */ u32 field_0x3C; }; class BaseSystem { public: static ConfigurationData *mConfigData; + static XfbManager *getXfbMgr() { return mConfigData->getXfbMgr(); } @@ -59,7 +65,60 @@ public: }; template <class TVideo, class TDisplay, class TXfbManager, class TAudioManager, class TSceneManager, class TPerfView> -class TSystem : ConfigurationData {}; +class TSystem : public ConfigurationData { +public: + inline TSystem() : mGraphicsFifoSize(0x80000), mRenderMode() {} + + void onBeginFrame() override {} + void onEndFrame() override {} + + void initRenderMode() override {} + void initialize() override {} + + Video *getVideo() override { + return static_cast<Video *>(mVideo); + } + + Heap *getSystemHeap() override { + return static_cast<Heap *>(mSystemHeap); + } + + Display *getDisplay() override { + return static_cast<Display *>(mDisplay); + } + + XfbManager *getXfbMgr() override { + return static_cast<XfbManager *>(mXfbMgr); + } + + PerformanceView *getPerfView() override { + return static_cast<PerformanceView *>(mPerfView); + } + + SceneManager *getSceneMgr() override { + return static_cast<SceneManager *>(mSceneMgr); + } + + SimpleAudioMgr *getAudioMgr() override { + return static_cast<SimpleAudioMgr *>(mAudioMgr); + } + + // Trick to fix weak function order in d_sys.cpp + // https://github.com/zeldaret/ss/pull/305#issuecomment-4201728492 + void doInitialize() { + initialize(); + } + +public: + /* 0x38 */ u32 mGraphicsFifoSize; + /* 0x3C */ GXRenderModeObj *mRenderMode; + /* 0x40 */ TAudioManager *mAudioMgr; + /* 0x44 */ TVideo *mVideo; + /* 0x48 */ TXfbManager *mXfbMgr; + /* 0x4c */ TDisplay *mDisplay; + /* 0x50 */ TPerfView *mPerfView; + /* 0x54 */ TSceneManager *mSceneMgr; +}; } // namespace EGG diff --git a/include/egg/core/eggVideo.h b/include/egg/core/eggVideo.h index cfaf7336..87ebaea4 100644 --- a/include/egg/core/eggVideo.h +++ b/include/egg/core/eggVideo.h @@ -20,7 +20,9 @@ public: /* 0x08 */ u32 mConfiguredTime; public: - Video() : pRenderMode(0), mFlag(), mConfiguredTime(){}; + Video() : pRenderMode(0), mFlag(0), mConfiguredTime() {}; + Video(const RenderModeObjSet *set) : pRenderMode(0), mFlag(0), mConfiguredTime() { initialize(nullptr, set); }; + void initialize(GXRenderModeObj *, const RenderModeObjSet *); GXRenderModeObj *configure(GXRenderModeObj *, const RenderModeObjSet *); static u32 getTickPerVRetrace(u32 tvFormat); diff --git a/include/egg/core/eggXfbManager.h b/include/egg/core/eggXfbManager.h index 76ba56dc..6291864e 100644 --- a/include/egg/core/eggXfbManager.h +++ b/include/egg/core/eggXfbManager.h @@ -15,6 +15,7 @@ public: /* 0xC */ u8 mNumXfbs; // Total number of Xfbs ever attached /* 0xD */ u8 mNumXfbs_Copy; // Unsure of purpose yet, but showing wont proceed until its under 3 public: + XfbManager() : mNextXfb(), mToCopyXfb(), mToShowXfb(), mNumXfbs(), mNumXfbs_Copy() {} bool isRegisterd(Xfb &xfb) const; // yes. this is correct spelling bool attach(Xfb *xfb); void copyEFB(bool); diff --git a/include/f/f_manager.h b/include/f/f_manager.h index 91459e56..1dd4eb16 100644 --- a/include/f/f_manager.h +++ b/include/f/f_manager.h @@ -35,6 +35,7 @@ public: PROC_FLAG_DELETE = GET_PROC_FLAG(DELETE), PROC_FLAG_DRAW = GET_PROC_FLAG(DRAW) }; + fManager_c(fBase_c *owner) : connect_node(owner), execute_node(owner), draw_node(owner), search_node(owner) {} ~fManager_c() {} int getSearchTableNum(); @@ -43,6 +44,14 @@ public: static fBase_c *searchBaseByGroupType(u8 groupType, const fBase_c *parent = nullptr); static void mainLoop(); + static void setStopProcFlags(u32 flags) { + m_StopProcInf |= flags; + } + + static void maskStopProcFlags(u32 flags) { + m_StopProcInf &= flags; + } + private: fTrNdBa_c connect_node; ///< The node in ::m_connectManage. fLiNdPrio_c execute_node; ///< The node in ::m_executeManage. diff --git a/include/m/m_dvd.h b/include/m/m_dvd.h index 32c0a4f5..da704ec2 100644 --- a/include/m/m_dvd.h +++ b/include/m/m_dvd.h @@ -9,10 +9,11 @@ // Note: names are taken from NSMBW where available but a lot are made up -void unk_initDecompressors(); - namespace mDvd { +void unk_initDecompressors(); +void setAutoStreamDecomp(bool arg); + extern void *somePtr; class UncompressInfo_c { diff --git a/include/rvl/OS/OSExec.h b/include/rvl/OS/OSExec.h index 37b72f80..74093536 100644 --- a/include/rvl/OS/OSExec.h +++ b/include/rvl/OS/OSExec.h @@ -19,6 +19,8 @@ extern BOOL __OSInReboot; void __OSGetExecParams(OSExecParams *out); void __OSLaunchMenu(void); +void OSExecl(const char* dolfile, const char* arg0, ...); + #ifdef __cplusplus } #endif diff --git a/include/rvl/OS/OSThread.h b/include/rvl/OS/OSThread.h index 871ce0a7..f315c558 100644 --- a/include/rvl/OS/OSThread.h +++ b/include/rvl/OS/OSThread.h @@ -12,6 +12,8 @@ extern "C" { #define OS_THREAD_STACK_MAGIC 0xDEADBABE +typedef s32 OSPriority; + typedef enum { OS_THREAD_STATE_EXITED = 0, OS_THREAD_STATE_READY = 1, @@ -97,6 +99,7 @@ s32 OSSuspendThread(OSThread *thread); void OSSleepThread(OSThreadQueue *queue); void OSWakeupThread(OSThreadQueue *queue); BOOL OSSetThreadPriority(OSThread *thread, s32 prio); +OSPriority OSGetThreadPriority(OSThread *thread); void OSClearStack(u8 val); void OSSleepTicks(s64 ticks); diff --git a/include/rvl/SC/scapi.h b/include/rvl/SC/scapi.h index b63389f3..b9971c1a 100644 --- a/include/rvl/SC/scapi.h +++ b/include/rvl/SC/scapi.h @@ -74,6 +74,7 @@ u32 SCGetCounterBias(void); void SCGetBtDeviceInfoArray(SCBtDeviceInfoArray *info); void SCSetBtDeviceInfoArray(const SCBtDeviceInfoArray *info); u32 SCGetBtDpdSensibility(void); +BOOL SCGetMplsMoviePlay(void); u8 SCGetWpadMotorMode(void); void SCSetWpadMotorMode(u8 mode); u8 SCGetWpadSensorBarPosition(void); diff --git a/include/rvl/WPAD/WPAD.h b/include/rvl/WPAD/WPAD.h index 669874ee..0a36fd74 100644 --- a/include/rvl/WPAD/WPAD.h +++ b/include/rvl/WPAD/WPAD.h @@ -571,6 +571,7 @@ BOOL WPADStopSimpleSync(void); BOOL WPADCancelSyncDevice(void); WPADSimpleSyncCallback *WPADSetSimpleSyncCallback(WPADSimpleSyncCallback *cb); void WPADRegisterAllocator(WPADAllocFunc *alloc, WPADFreeFunc *free); +u32 WPADGetWorkMemorySize(void); WPADLibStatus WPADGetStatus(void); u8 WPADGetRadioSensitivity(WPADChannel chan); void WPADGetAddress(WPADChannel chan, BD_ADDR_PTR addr); diff --git a/include/toBeSorted/arc_callback_handler.h b/include/toBeSorted/arc_callback_handler.h new file mode 100644 index 00000000..288707e0 --- /dev/null +++ b/include/toBeSorted/arc_callback_handler.h @@ -0,0 +1,8 @@ +#ifndef ARC_CALLBACK_HANDLER_H +#define ARC_CALLBACK_HANDLER_H + +#include "common.h" + +void *ArcCallbackHandlerCreate(u32); + +#endif // ARC_CALLBACK_HANDLER_H diff --git a/include/toBeSorted/d_d3d.h b/include/toBeSorted/d_d3d.h index e565ddf2..212fd381 100644 --- a/include/toBeSorted/d_d3d.h +++ b/include/toBeSorted/d_d3d.h @@ -25,6 +25,10 @@ bool isOnScreen(const mVec3_c &worldPos); void screenToWorld(mVec3_c &result, const mVec3_c &screenPos); void createLightTextures(); +void fn_80016860(); +void clearList(); +void fn_80017500(); + class AnmMdlWrapper : public m3d::mdlAnmChr { public: AnmMdlWrapper(); diff --git a/include/toBeSorted/d_lib.h b/include/toBeSorted/d_lib.h new file mode 100644 index 00000000..d60dee78 --- /dev/null +++ b/include/toBeSorted/d_lib.h @@ -0,0 +1,20 @@ +#ifndef D_LIB_H +#define D_LIB_H + +#include "common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern u32 lbl_80574FA0; +extern u32 lbl_80574FA4; + +void unknownStub(); +bool strequals(const char *lhs, const char *rhs); + +#ifdef __cplusplus +} +#endif + +#endif // D_LIB_H diff --git a/include/toBeSorted/mpls.h b/include/toBeSorted/mpls.h new file mode 100644 index 00000000..71283297 --- /dev/null +++ b/include/toBeSorted/mpls.h @@ -0,0 +1,12 @@ +#ifndef MPLS_H +#define MPLS_H + +namespace Mpls { + +void initialize(int argc, char **argv); +void tryLaunchMovie(); +void forceLaunchMovie(); + +}; // namespace Mpls + +#endif // MPLS_H diff --git a/include/toBeSorted/unk_save_time.h b/include/toBeSorted/unk_save_time.h index 0cc5ec8d..b2d8ae62 100644 --- a/include/toBeSorted/unk_save_time.h +++ b/include/toBeSorted/unk_save_time.h @@ -2,6 +2,7 @@ #define UNK_SAVE_TIME_H #include "common.h" +#include "egg/core/eggHeap.h" class SaveTimeRelated { public: @@ -17,6 +18,8 @@ public: return field_0x30; } + static void fn_80190780(EGG::Heap *heap); + void fn_801907C0(); s64 fn_801907D0(); void fn_801907F0(); void fn_801909A0(); |
