Decompile Game_16 (#167)

* Game_16 OK

* Remove unnecessary FadeControl constructor definition

* Define HW_RESET_PARAMETER_BUF macro to replace hardcoded address

* Refactor Game constructor to use proper C++ initialization

Address Yanis' review comments:
- Make Game::func_0202cf44 static with Game* parameter to allow
  passing as callback pointer
- Replace raw mUnk_00c array with Game_0c class containing constructor
- Add Game_0c constructor with inline initialization calling func_ov016_0211fab8
- Add FadeControl_Derived1 class for mFadeControl member
- Use C++ initializer list in Game constructor for mModeId, mPrevModeId,
  mMode, mUnk_00c, and mFadeControl

* Fix Game constructor and FadeControl initialization

- Use PAD macro in Game_0c instead of unk8 pad[]
- Pass 'this' instead of 'pad' to func_ov016_0211fab8
- Add FadeControl constructor that calls _ZN11FadeControlC2Ev
- FadeControl_Derived1 now uses empty constructor (base class ctor called automatically)
- Update mUnk_00c.pad to mUnk_00c.pad_0x00 (PAD macro creates named member)
- Add types.h include to nds/system.h

* Remove explicit call to mangled constructor symbol

- Removed _ZN11FadeControlC2Ev call from FadeControl constructor
- FadeControl now has an empty constructor (called automatically by derived classes)
- FadeControl_Derived1 uses empty constructor which calls base class ctor

* Update symbols.txt for func_0202cf44 signature change

Changed mangled name from _ZN4Game13func_0202cf44Ev to
_ZN4Game13func_0202cf44EPS_ to reflect the function becoming
static with a Game* parameter.
This commit is contained in:
Aurel
2026-05-23 17:10:58 +02:00
committed by GitHub
parent 0bb7400136
commit 51640eb100
6 changed files with 95 additions and 20 deletions
+19
View File
@@ -0,0 +1,19 @@
#ifndef _NDS_SYSTEM_H
#define _NDS_SYSTEM_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
// Reset Parameter Buffer (BIOS reset information)
// Not documented on gbatek, located at 0x027ffc20
// Contains reset state information - value 2 indicates specific reset condition
#define HW_RESET_PARAMETER_BUF (*(s32 *) 0x027ffc20)
#ifdef __cplusplus
}
#endif
#endif