summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAetias <aetias@outlook.com>2025-01-18 09:44:01 +0100
committerAetias <aetias@outlook.com>2025-01-18 09:44:01 +0100
commit13108e3ae4e95a4a9a547a3074852099d299a6b9 (patch)
tree21f3ce5b19514780bad5c1451718b4367f6fa47c /include
parent48bbd8bb7f008ac913cabb6f7faf4a47ad86878b (diff)
Move ARM9 Main documentation from Ghidra
Diffstat (limited to 'include')
-rw-r--r--include/DTCM/UnkStruct_027e05f8.hpp17
-rw-r--r--include/DTCM/UnkStruct_027e077c.hpp11
-rw-r--r--include/DTCM/UnkStruct_027e0fe0.hpp13
-rw-r--r--include/Debug/DebugHierarchyBase.hpp21
-rw-r--r--include/Debug/DebugHierarchyChild.hpp11
-rw-r--r--include/Debug/DebugHierarchyNode.hpp19
-rw-r--r--include/Render/FadeControl.hpp30
-rw-r--r--include/Render/FadeController.hpp33
-rw-r--r--include/System/OverlayManager.hpp5
-rw-r--r--include/System/SysNew.hpp13
-rw-r--r--include/Unknown/UnkStruct_0202e1a0.hpp24
-rw-r--r--include/Unknown/UnkStruct_02032f0c.hpp77
-rw-r--r--include/Unknown/UnkStruct_02035064.hpp44
-rw-r--r--include/Unknown/UnkStruct_02037750.hpp53
-rw-r--r--include/Unknown/UnkStruct_02038aa0.hpp88
-rw-r--r--include/Unknown/UnkStruct_020397f8.hpp96
-rw-r--r--include/Unknown/UnkStruct_0203dae0.hpp49
-rw-r--r--include/lib/math.h2
18 files changed, 603 insertions, 3 deletions
diff --git a/include/DTCM/UnkStruct_027e05f8.hpp b/include/DTCM/UnkStruct_027e05f8.hpp
new file mode 100644
index 00000000..43e83540
--- /dev/null
+++ b/include/DTCM/UnkStruct_027e05f8.hpp
@@ -0,0 +1,17 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+struct UnkStruct_027e05f8 {
+ // TODO: Add fields
+
+ void func_0202adf4(unk32 param1, s32 param2);
+ ~UnkStruct_027e05f8();
+
+ // Big gap to next TU
+ UnkStruct_027e05f8();
+ void func_02037458(u16 param1);
+ void func_02037480();
+ static unk32 func_02037490(unk32 param1);
+};
diff --git a/include/DTCM/UnkStruct_027e077c.hpp b/include/DTCM/UnkStruct_027e077c.hpp
new file mode 100644
index 00000000..3adda2bc
--- /dev/null
+++ b/include/DTCM/UnkStruct_027e077c.hpp
@@ -0,0 +1,11 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+struct UnkStruct_027e077c {
+ // TODO: Add fields
+
+ UnkStruct_027e077c(unk32 param1);
+ bool func_0202e740(unk32 param1);
+};
diff --git a/include/DTCM/UnkStruct_027e0fe0.hpp b/include/DTCM/UnkStruct_027e0fe0.hpp
new file mode 100644
index 00000000..906a0e87
--- /dev/null
+++ b/include/DTCM/UnkStruct_027e0fe0.hpp
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+struct UnkStruct_027e0fe0 {
+ // TODO: Add fields
+
+ void Init();
+ void Dispose();
+ void func_0202ea50(unk32 param1, unk32 param2, unk32 param3);
+ void func_0202ea98();
+};
diff --git a/include/Debug/DebugHierarchyBase.hpp b/include/Debug/DebugHierarchyBase.hpp
index 718ce1eb..7ce7a2fc 100644
--- a/include/Debug/DebugHierarchyBase.hpp
+++ b/include/Debug/DebugHierarchyBase.hpp
@@ -3,10 +3,31 @@
#include "global.h"
#include "types.h"
+#include "Debug/DebugHierarchyNode.hpp"
#include "System/SysNew.hpp"
class DebugHierarchyBase : public SysObject {
/* 00 (vtable) */
/* 04 */ void *mNodes;
/* 08 */
+
+ /* 00 */ virtual ~DebugHierarchyBase();
+ /* 08 */ virtual void vfunc_08();
+ /* 0c */ virtual void vfunc_0c();
+ /* 10 */ virtual void vfunc_10();
+ /* 14 */ virtual void vfunc_14();
+ /* 18 */ virtual void vfunc_18();
+ /* 1c */ virtual void vfunc_1c();
+ /* 20 */ virtual void vfunc_20();
+ /* 24 */ virtual void vfunc_24();
+ /* 28 */ virtual void vfunc_28();
+ /* 2c */ virtual void vfunc_2c();
+ /* 30 */ virtual void vfunc_30();
+ /* 34 */ virtual bool GetChildNode(unk32 param1, const char *description, u32 parent, s32 *param4);
+ /* 38 */ virtual void vfunc_38();
+ /* 3c */ virtual void vfunc_3c();
+ /* 40 */
+
+ DebugHierarchyBase();
+ DebugHierarchyNode *FindNode(u32 id);
};
diff --git a/include/Debug/DebugHierarchyChild.hpp b/include/Debug/DebugHierarchyChild.hpp
new file mode 100644
index 00000000..c095fae2
--- /dev/null
+++ b/include/Debug/DebugHierarchyChild.hpp
@@ -0,0 +1,11 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+class DebugHierarchyChild {
+public:
+ /* 00 */ char mUnk_00[0xc];
+ /* 0c */ s32 mUnk_0c;
+ /* 10 */
+};
diff --git a/include/Debug/DebugHierarchyNode.hpp b/include/Debug/DebugHierarchyNode.hpp
new file mode 100644
index 00000000..057d1946
--- /dev/null
+++ b/include/Debug/DebugHierarchyNode.hpp
@@ -0,0 +1,19 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Debug/DebugHierarchyChild.hpp"
+
+class DebugHierarchyNode {
+public:
+ /* 00 */ u32 mNodeId;
+ /* 04 */ u32 mUnk_04;
+ /* 08 */ u32 mUnk_08;
+ /* 0c */ unk8 mUnk_0c[0x4];
+ /* 10 */ u32 mId;
+ /* 14 */ s32 mUnk_14;
+ /* 18 */ unk8 mUnk_18[0x8];
+ /* 20 */ DebugHierarchyChild mChildren;
+ /* 30 */
+};
diff --git a/include/Render/FadeControl.hpp b/include/Render/FadeControl.hpp
index 805cbcb7..8e9697ef 100644
--- a/include/Render/FadeControl.hpp
+++ b/include/Render/FadeControl.hpp
@@ -1,3 +1,31 @@
#pragma once
-struct FadeControl;
+#include "global.h"
+#include "types.h"
+
+struct FadeControl {
+ /* 00 */ unk32 mState;
+ /* 04 */ unk32 mUnk_04;
+ /* 08 */ s32 mCurrentBright;
+ /* 0c */ s32 mBrightA;
+ /* 10 */ s32 mBrightB;
+ /* 14 */ unk16 mCurrentFadeLength;
+ /* 16 */ unk16 mUnk_16;
+ /* 18 */ u16 mUnk_18;
+ /* 1a */ u16 mFadeLength;
+ /* 1c */ unk32 mFadeTimer;
+ /* 20 */ bool mUnk_20;
+ /* 20 */ bool mUnk_21;
+ /* 20 */ bool mUnk_22;
+ /* 23 */ unk8 mUnk_23;
+ /* 24 */
+
+ void Register();
+ void Unregister();
+ FadeControl();
+ void func_0202aba8(s32 fadeLength, unk32 param2, unk32 newState);
+ bool func_0202abdc(s32 fadeLength, unk32 param2);
+ bool func_0202abf4(s32 fadeLength, unk32 param2);
+ bool func_0202ac0c(s32 currentFadeLength, u16 param2, s32 fadeLength, unk32 param4);
+ void UpdateFade(s32 speed);
+};
diff --git a/include/Render/FadeController.hpp b/include/Render/FadeController.hpp
new file mode 100644
index 00000000..59a17e48
--- /dev/null
+++ b/include/Render/FadeController.hpp
@@ -0,0 +1,33 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Render/FadeControl.hpp"
+
+#define FADE_CONTROL_COUNT 16
+
+struct FadeControlEntry {
+ /* 0 */ FadeControl *mControl;
+ /* 4 */ unk32 mUnk_4;
+ /* 8 */ unk32 mUnk_8;
+ /* c */
+};
+
+struct FadeController {
+ /* 00 */ s32 mLength;
+ /* 04 */ FadeControl (*mList)[FADE_CONTROL_COUNT];
+ /* 44 */ FadeControl *mCurrent;
+ /* 48 */
+
+ bool Has(FadeControl *control);
+ static bool Contains(FadeControlEntry *needle, s32 length, FadeControl **haystack);
+ bool AddIfAbsent(FadeControl *control, unk32 param2, unk32 param3);
+ static bool Add(FadeControlEntry *entry, s32 maxLength, s32 *length, FadeControl **list, bool allowDuplicates);
+ void RemoveFadeControl(FadeControl *control);
+ static bool Remove(FadeControlEntry *entry, s32 *length, FadeControl **list);
+ bool func_0202d77c(FadeControl *control);
+ bool func_0202d7ac();
+ void ProcessFade(s32 param1);
+ void SetScreenBrightness(s32 param1);
+};
diff --git a/include/System/OverlayManager.hpp b/include/System/OverlayManager.hpp
index 4ac727a1..636208fc 100644
--- a/include/System/OverlayManager.hpp
+++ b/include/System/OverlayManager.hpp
@@ -92,9 +92,12 @@ class OverlayManager {
public:
OverlayId mLoadedOverlays[OverlayIndex_COUNT];
- void Unload(OverlayIndex index);
void Load(OverlayIndex index, OverlayId id);
void LoadIfNotLoaded(OverlayIndex index, OverlayId id);
+ void Unload(OverlayIndex index);
+ void LoadOverlaySetup(s32 index);
+ void UnloadOverlaySetup();
+
void LoadEquipItem(ItemFlag equipId);
};
diff --git a/include/System/SysNew.hpp b/include/System/SysNew.hpp
index 78f3b290..7e9b0cd8 100644
--- a/include/System/SysNew.hpp
+++ b/include/System/SysNew.hpp
@@ -2,8 +2,21 @@
#include "types.h"
+struct UnkStruct_0202e894 {
+ /* 00 */ u32 mId;
+ /* 04 */ unk8 mUnk_04[0x28];
+ /* 2c */
+};
+
+void *SysNew(UnkStruct_0202e894 *param1, s32 length, s32 param3);
+void SysDelete(void *ptr);
+void *func_0202e99c(s32 length);
+void *func_0202e9bc(s32 length);
+
class SysObject {
public:
static void *operator new(unsigned long length, u32 *id, u32 idLength);
+ static void *operator new[](unsigned long length, u32 *id, u32 idLength);
static void operator delete(void *ptr);
+ static void operator delete[](void *ptr);
};
diff --git a/include/Unknown/UnkStruct_0202e1a0.hpp b/include/Unknown/UnkStruct_0202e1a0.hpp
new file mode 100644
index 00000000..a99956bc
--- /dev/null
+++ b/include/Unknown/UnkStruct_0202e1a0.hpp
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+struct UnkStruct_0202e1a0 {
+ /* 00 */ unk16 mUnk_00;
+ /* 02 */ unk16 mUnk_02;
+ /* 04 */ s32 mUnk_04;
+ /* 08 */ u32 mUnk_08;
+ /* 0c */ s32 mUnk_0c;
+ /* 10 */ s32 mUnk_10;
+ /* 14 */ s32 mUnk_14;
+ /* 18 */
+
+ UnkStruct_0202e1a0();
+ void func_0202e1c4();
+ void func_0202e1e8();
+ bool func_0202e310(s32 param1);
+ unk32 func_0202e544();
+ unk32 func_0202e58c();
+ void func_0202e5cc();
+ void func_0202e670();
+};
diff --git a/include/Unknown/UnkStruct_02032f0c.hpp b/include/Unknown/UnkStruct_02032f0c.hpp
new file mode 100644
index 00000000..f0e59367
--- /dev/null
+++ b/include/Unknown/UnkStruct_02032f0c.hpp
@@ -0,0 +1,77 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+class UnkStruct_02032e7c {
+public:
+ /* 00 (vtable) */
+ /* 04 */ unk32 mUnk_04;
+ /* 08 */ unk16 mUnk_08;
+ /* 0a */ unk16 mUnk_0a;
+ /* 0c */ unk16 mUnk_0c;
+ /* 0e */ unk16 mUnk_0e;
+ /* 10 */ unk32 mUnk_10;
+ /* 14 */
+
+ /* 0 */ virtual ~UnkStruct_02032e7c();
+ /* 8 */
+
+ UnkStruct_02032e7c();
+};
+
+class UnkStruct_02032f0c {
+ /* 00 (vtable) */
+ /* 04 */ unk32 mUnk_04;
+ /* 08 */ unk32 mUnk_08;
+ /* 0c */ u16 *mUnk_0c;
+ /* 10 */ unk32 mUnk_10[6];
+ /* 28 */ unk32 mUnk_28;
+ /* 2c */ s32 **mUnk_2c;
+ /* 30 */ s32 mUnk_30;
+ /* 34 */ s32 mUnk_34;
+ /* 38 */ unk32 mUnk_38;
+ /* 3c */ unk16 mUnk_3c;
+ /* 3e */ unk16 mUnk_3e[6];
+ /* 4a */ u16 mUnk_4a;
+ /* 4c */ u8 mUnk_4c;
+ /* 4d */ bool mUnk_4d;
+ /* 4e */ u8 mUnk_4e;
+ /* 4f */ u8 mUnk_4f;
+ /* 50 */ u8 mUnk_50;
+ /* 51 */ u8 mUnk_51;
+ /* 52 */
+
+ /* 00 */ virtual ~UnkStruct_02032f0c();
+ /* 08 */ virtual void vfunc_08(s32 param1, unk32 param2, s16 *param3, unk32 param4);
+ /* 0c */ virtual void vfunc_0c(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
+ /* 10 */ virtual void vfunc_10(u32 param1, unk32 param2);
+ /* 14 */ virtual bool vfunc_14(s32 param1, s32 param2);
+ /* 18 */ virtual unk32 vfunc_18(s32 param1);
+ /* 1c */ virtual unk32 vfunc_1c(s32 param1, unk32 *param2, unk32 param3, unk32 param4);
+ /* 20 */ virtual unk32 vfunc_20(s32 param1, s32 *param2);
+ /* 24 */ virtual bool vfunc_24(s16 **param1);
+ /* 28 */
+
+ UnkStruct_02032f0c();
+ void func_02032f94();
+ u16 **SetUnk_0c(u16 *value);
+ u8 func_02032fa4();
+ s32 func_02032fb4();
+ void func_02033214(unk32 param1, unk32 param2, unk32 param3, u8 param4, unk32 param5);
+ void func_020334b4(u32 param1, s32 param2, s32 param3, s32 param4);
+ void func_02033628(unk32 param1, u16 *param2);
+ u32 func_0203369c(u16 *param1, s32 param2);
+ void func_02033780(s32 param1);
+ s32 func_020337d8(s32 param1);
+ s32 func_020337fc(s16 *param1, s32 param2);
+ void func_020338a8(s32 param1, unk32 param2);
+ void func_020338d0(unk32 *param1, unk32 param2);
+ s32 func_02033904(unk32 param1, unk32 param2);
+ s32 func_02033938(unk32 param1);
+ s32 func_0203396c(u16 *param1);
+ u16 *func_02033b0c(s32 param1);
+ bool func_02033c6c();
+ unk32 func_02033c88(u32 param1);
+ s32 func_02033cbc(s16 *param1);
+};
diff --git a/include/Unknown/UnkStruct_02035064.hpp b/include/Unknown/UnkStruct_02035064.hpp
new file mode 100644
index 00000000..69011e21
--- /dev/null
+++ b/include/Unknown/UnkStruct_02035064.hpp
@@ -0,0 +1,44 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Unknown/UnkStruct_0202e1a0.hpp"
+
+class UnkStruct_02035064 {
+public:
+ /* 00 (vtable) */
+ /* 04 */ unk32 mUnk_04;
+ /* 08 */ unk8 mUnk_08[0xc];
+ /* 14 */ u32 mUnk_14;
+ /* 18 */ unk8 mUnk_18[0x4];
+ /* 1c */ unk32 mUnk_1c;
+ /* 20 */ u32 mUnk_20;
+ /* 24 */ unk8 mUnk_24[0x28];
+ /* 4c */ s16 mUnk_4c;
+ /* 4e */ s16 mUnk_4e;
+ /* 50 */ unk8 mUnk_50[0xc];
+ /* 5c */ UnkStruct_0202e1a0 mUnk_5c;
+ /* 74 */ u16 *mUnk_74;
+ /* 78 */ s32 mUnk_78;
+ /* 7c */ u32 mUnk_7c;
+ /* 80 */ u16 mUnk_80;
+ /* 82 */ unk16 mUnk_82;
+ /* 84 */ unk16 mUnk_84;
+ /* 86 */ bool mUnk_86;
+ /* 87 */ unk8 mUnk_87;
+ /* 88 */
+
+ /* 0 */ virtual s32 vfunc_0();
+ /* 4 */ virtual s32 vfunc_4();
+ /* 8 */
+
+ UnkStruct_02035064();
+ ~UnkStruct_02035064();
+
+ void func_020350b0();
+ void func_020350b4(s32 param1, unk32 param2, unk8 param3, unk16 param4, unk16 param5);
+ void func_0203516c();
+ void func_020351b8(bool param1, bool param2, bool param3, bool param4);
+ void func_020352d8();
+};
diff --git a/include/Unknown/UnkStruct_02037750.hpp b/include/Unknown/UnkStruct_02037750.hpp
new file mode 100644
index 00000000..5fe84a89
--- /dev/null
+++ b/include/Unknown/UnkStruct_02037750.hpp
@@ -0,0 +1,53 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Player/LinkStateInteract.hpp"
+
+class UnkStruct_02037750 {
+public:
+ /* 00 (vtable) */
+ /* 04 */ unk32 mUnk_04[0x4];
+ /* 14 */ unk32 mUnk_14;
+ /* 18 */ unk32 mUnk_18;
+ /* 1c */ u8 mUnk_1c;
+ /* 1d */ unk8 mUnk_1d;
+ /* 1e */ u16 mUnk_1e;
+ /* 20 */
+
+ /* 00 */ virtual ~UnkStruct_02037750();
+ /* 08 */ virtual void vfunc_08(unk32 param1);
+ /* 0c */ virtual void vfunc_0c(s32 param1);
+ /* 10 */ virtual void vfunc_10();
+ /* 14 */ virtual void vfunc_14();
+ /* 18 */ virtual void vfunc_18();
+ /* 1c */ virtual unk32 vfunc_1c();
+ /* 20 */ virtual void vfunc_20();
+ /* 24 */ virtual void vfunc_24(unk32 param1);
+ /* 28 */ virtual void vfunc_28(s32 param1);
+ /* 2c */ virtual unk32 vfunc_2c(s32 param1);
+ /* 30 */ virtual unk32 vfunc_30();
+ /* 34 */
+
+ UnkStruct_02037750(unk32 param1, unk32 param2);
+ LinkStateInteract *GetLinkStateInteract();
+ void func_020385d0(s32 param1, unk32 *param2);
+};
+
+class UnkStruct_020386d8 : public UnkStruct_02037750 {
+public:
+ /* 00 (base) */
+ /* 20 */ unk8 mUnk_20;
+ /* 21 */ unk8 mUnk_21[0x3];
+ /* 24 */ unk32 mUnk_24;
+ /* 28 */
+
+ UnkStruct_020386d8();
+ /* 00 */ virtual ~UnkStruct_020386d8();
+ /* 08 */ virtual void vfunc_08(unk32 param1);
+ /* 24 */ virtual void vfunc_24(unk32 param1);
+ /* 28 */ virtual void vfunc_28();
+ /* 30 */ virtual unk32 vfunc_30();
+ /* 34 */
+};
diff --git a/include/Unknown/UnkStruct_02038aa0.hpp b/include/Unknown/UnkStruct_02038aa0.hpp
new file mode 100644
index 00000000..1053b7ef
--- /dev/null
+++ b/include/Unknown/UnkStruct_02038aa0.hpp
@@ -0,0 +1,88 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Unknown/UnkStruct_0203dae0.hpp"
+
+class UnkStruct_02038aa0;
+
+class UnkStruct_0203881c : public UnkStruct_02032e7c {
+public:
+ /* 00 (base) */
+ /* 14 */ unk32 mUnk_14;
+ /* 18 */ unk32 mUnk_18;
+ /* 1c */ unk32 mUnk_1c;
+ /* 20 */ unk32 mUnk_20;
+ /* 24 */ unk32 mUnk_24;
+ /* 28 */
+
+ /* 0 */ virtual ~UnkStruct_0203881c();
+ /* 8 */
+
+ UnkStruct_0203881c();
+ void func_02038858(unk32 param1);
+ void func_02038888();
+ void func_02038950(UnkStruct_02038aa0 *param1, s32 param2);
+ void func_02038a80(s32 param1);
+};
+
+class UnkStruct_02038aa0 : public UnkStruct_0203dae0 {
+public:
+ /* 000 (base) */
+ /* 123 */ unk8 mUnk_123;
+ /* 124 */ unk32 mUnk_124;
+ /* 128 */ unk32 mUnk_128;
+ /* 12c */ unk32 mUnk_12c;
+ /* 130 */ unk8 mUnk_130[0x20];
+ /* 150 */ unk8 mUnk_150;
+ /* 151 */ unk8 mUnk_151;
+ /* 152 */ unk8 mUnk_152;
+ /* 153 */ unk8 mUnk_153;
+ /* 154 */ unk32 mUnk_154;
+ /* 158 */ unk8 mUnk_158[0x2];
+ /* 15a */ unk16 mUnk_15a;
+ /* 15c */ unk16 mUnk_15c;
+ /* 15e */ u8 mUnk_15e;
+ /* 15f */ u8 mUnk_15f;
+ /* 160 */ u8 mUnk_160;
+ /* 161 */
+
+ /* 00 */ virtual ~UnkStruct_02038aa0();
+ /* 08 */ virtual void vfunc_08(s32 param1, unk32 param2, s16 *param3, unk32 param4);
+ /* 10 */ virtual void vfunc_10(unk32 param1);
+ /* 1c */ virtual unk32 vfunc_1c(s32 param1, unk32 *param2, unk32 param3, unk32 param4);
+ /* 20 */ virtual unk32 vfunc_20(s32 param1, s32 *param2);
+ /* 2c */ virtual void vfunc_2c();
+ /* 30 */ virtual void vfunc_30();
+ /* 34 */ virtual unk32 vfunc_34(s32 param1);
+ /* 38 */ virtual unk32 vfunc_38();
+ /* 3c */ virtual void vfunc_3c() = 0;
+ /* 40 */ virtual void vfunc_40() = 0;
+ /* 44 */ virtual void vfunc_44();
+ /* 48 */ virtual void vfunc_48();
+ /* 4c */ virtual void vfunc_4c();
+ /* 50 */ virtual void vfunc_50(unk32 param1, unk32 param2, s32 param3, unk32 param4);
+ /* 54 */ virtual void vfunc_54();
+ /* 58 */ virtual void vfunc_58();
+ /* 5c */ virtual void vfunc_5c();
+ /* 60 */ virtual void vfunc_60();
+ /* 64 */ virtual void vfunc_64();
+ /* 68 */ virtual s32 vfunc_68(unk32 param1);
+ /* 6c */ virtual void vfunc_6c(s32 *param1, s32 *param2);
+ /* 70 */ virtual void vfunc_70(s32 *param1, s32 *param2);
+ /* 74 */
+
+ UnkStruct_02038aa0(u8 param1, u8 param2);
+ void func_02038b34(u32 param1, unk32 param2);
+ void func_02038b40();
+ bool func_02038b78();
+ s32 func_02038cb8(s32 param1);
+ s32 func_02038cf4();
+ s32 func_02038d10();
+ bool func_02038ef4(s32 param1, s32 param2);
+ void func_02039208(unk16 param1);
+ unk32 func_02039250();
+ void func_02039440(unk32 param1, unk32 param2);
+ bool func_0203951c();
+};
diff --git a/include/Unknown/UnkStruct_020397f8.hpp b/include/Unknown/UnkStruct_020397f8.hpp
new file mode 100644
index 00000000..53c37017
--- /dev/null
+++ b/include/Unknown/UnkStruct_020397f8.hpp
@@ -0,0 +1,96 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Unknown/UnkStruct_02035064.hpp"
+#include "Unknown/UnkStruct_02038aa0.hpp"
+
+class UnkStruct_020397f8 : public UnkStruct_02038aa0 {
+public:
+ /* 000 (base) */
+ /* 161 */ unk8 mUnk_161[0x3];
+ /* 164 */ unk32 mUnk_164;
+ /* 168 */ UnkStruct_02035064 mUnk_168;
+ /* 1f0 */ UnkStruct_02035064 mUnk_1f0;
+ /* 278 */ UnkStruct_02035064 mUnk_278;
+ /* 300 */ UnkStruct_02035064 mUnk_300;
+ /* 388 */ UnkStruct_02035064 mUnk_388;
+ /* 410 */ unk32 *mUnk_410;
+ /* 414 */ unk32 mUnk_414;
+ /* 418 */ unk32 mUnk_418;
+ /* 41c */ unk16 mUnk_41c;
+ /* 41e */ unk16 mUnk_41e;
+ /* 420 */ unk16 mUnk_420;
+ /* 422 */ unk8 mUnk_422[0x2];
+ /* 424 */ unk32 *mUnk_424;
+ /* 428 */ unk32 mUnk_428;
+ /* 42c */ unk8 mUnk_42c[0x124];
+ /* 550 */ unk32 mUnk_550;
+ /* 554 */ unk32 mUnk_554;
+ /* 558 */ unk8 mUnk_558[0x4];
+ /* 55c */ unk32 mUnk_55c;
+ /* 560 */ unk32 mUnk_560;
+ /* 564 */ unk8 mUnk_564[0x8];
+ /* 56c */ unk16 mUnk_56c;
+ /* 56e */ unk16 mUnk_56e;
+ /* 570 */ unk16 mUnk_570;
+ /* 572 */ unk16 mUnk_572;
+ /* 574 */ unk16 mUnk_574;
+ /* 576 */ unk16 mUnk_576;
+ /* 578 */ unk16 mUnk_578;
+ /* 57a */ u8 mUnk_57a;
+ /* 57b */ u8 mUnk_57b;
+ /* 57c */ u8 mUnk_57c;
+ /* 57d */ u8 mUnk_57d;
+ /* 57e */ u8 mUnk_57e;
+ /* 57f */ u8 mUnk_57f;
+ /* 580 */ u8 mUnk_580;
+ /* 581 */ u8 mUnk_581;
+ /* 582 */ u8 mUnk_582;
+ /* 583 */ u8 mUnk_583;
+ /* 584 */ unk8 mUnk_584;
+ /* 585 */ u8 mUnk_585;
+ /* 586 */ u8 mUnk_586;
+ /* 587 */ unk8 mUnk_587;
+ /* 588 */ unk32 mUnk_588;
+ /* 58c */
+
+ UnkStruct_020397f8();
+ /* 4c */ virtual void vfunc_4c();
+ /* 2c */ virtual void vfunc_2c();
+ void func_02039ca8();
+ /* 3c */ virtual void vfunc_3c();
+ /* 40 */ virtual void vfunc_40(s32 param1, s32 param2);
+ void func_0203a188(s32 param1, s32 param2);
+ bool func_0203a2c0();
+ unk32 func_0203a30c();
+ /* 48 */ virtual void vfunc_48();
+ void func_0203a35c();
+ bool func_0203a3e0();
+ /* 44 */ virtual void vfunc_44(s32 param1, s32 param2);
+ bool func_0203a6d0(unk32 param1);
+ /* 50 */ virtual void vfunc_50(unk32 param1, unk32 param2, s32 param3, unk32 param4);
+ /* 54 */ virtual void vfunc_54();
+ /* 5c */ virtual void vfunc_5c();
+ /* 58 */ virtual void vfunc_58();
+ bool func_0203b0bc();
+ s32 func_0203b0ec(u32 param1);
+ /* 18 */ virtual unk32 vfunc_18(s32 param1);
+ /* 1c */ virtual unk32 vfunc_1c(s32 param1, unk32 *param2, unk32 param3, unk32 param4);
+ /* 60 */ virtual void vfunc_60(s32 param1);
+ /* 64 */ virtual void vfunc_64(unk32 param1);
+ void func_0203b764();
+ /* 20 */ virtual unk32 vfunc_20(s32 param1, s32 *param2);
+ void func_0203bd8c(s32 param1);
+ /* 6c */ virtual void vfunc_6c(s32 *param1, s32 *param2);
+ void func_0203be08();
+ void func_0203be64();
+ bool func_0203c084();
+ bool func_0203c13c();
+ bool func_0203c1a0();
+ bool func_0203c25c();
+ /* 00 */ virtual ~UnkStruct_020397f8();
+ /* 38 */ virtual unk32 vfunc_38();
+ /* 74 */
+};
diff --git a/include/Unknown/UnkStruct_0203dae0.hpp b/include/Unknown/UnkStruct_0203dae0.hpp
new file mode 100644
index 00000000..cfda7368
--- /dev/null
+++ b/include/Unknown/UnkStruct_0203dae0.hpp
@@ -0,0 +1,49 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Unknown/UnkStruct_02032f0c.hpp"
+
+class UnkStruct_0203dae0 : public UnkStruct_02032f0c {
+public:
+ /* 000 (base) */
+ /* 052 */ unk8 mUnk_052[0x2];
+ /* 054 */ unk32 mUnk_054[0x30];
+ /* 114 */ void *mUnk_114;
+ /* 118 */ unk32 mUnk_118;
+ /* 11c */ unk16 mUnk_11c;
+ /* 11e */ u8 mUnk_11e;
+ /* 11f */ u8 mUnk_11f;
+ /* 120 */ u8 mUnk_120;
+ /* 121 */ u8 mUnk_121;
+ /* 122 */ u8 mUnk_122;
+ /* 123 */
+
+ /* 00 */ virtual ~UnkStruct_0203dae0();
+ /* 08 */ virtual void vfunc_08(s32 param1, unk32 param2, s16 *param3, unk32 param4);
+ /* 0c */ virtual void vfunc_0c(unk32 param1, unk32 param2, unk32 param3, unk32 param4);
+ /* 10 */ virtual void vfunc_10(u32 param1, unk32 param2);
+ /* 14 */ virtual bool vfunc_14(s32 param1, s32 param2);
+ /* 18 */ virtual unk32 vfunc_18(s32 param1);
+ /* 28 */ virtual bool vfunc_28();
+ /* 2c */ virtual void vfunc_2c();
+ /* 30 */ virtual void vfunc_30();
+ /* 34 */
+
+ UnkStruct_0203dae0(u8 param1);
+ void func_0203dc10(s32 param1);
+ bool func_0203dc74(s32 param1, s32 param2);
+ void func_0203dcfc(u8 param1, unk32 param2, unk32 param3, s32 param4);
+ void func_0203ddec();
+ void func_0203ddfc();
+ void func_0203de14();
+ s32 func_0203de24();
+ bool func_0203de58(s32 param1);
+ bool func_0203e0f8(unk32 param1, s32 param2);
+ bool func_0203e1b0(unk32 param1, unk32 param2, s32 param3);
+ void func_0203e2e8(s32 param1, s32 param2, unk32 param3, u32 param4);
+ void func_0203e510(s32 *param1, s32 param2, s32 param3);
+ void func_0203e62c(s32 *param1, s32 param2);
+ bool func_0203e6e4(u32 param1, u32 param2, s32 param3);
+};
diff --git a/include/lib/math.h b/include/lib/math.h
index f7204acc..f3e0d3d6 100644
--- a/include/lib/math.h
+++ b/include/lib/math.h
@@ -89,7 +89,7 @@ typedef struct {
/* 24 */
} Mat3p;
-extern "C" u32 FastDivide(u32 a, u32 b);
+extern "C" u32 SoftDivide(u32 a, u32 b);
extern "C" u32 Divide(u32 a, u32 b);
extern "C" bool Approach(unk32 *src, unk32 dest, unk32 step);
extern "C" bool Approach_thunk(unk32 *src, unk32 dest, unk32 step);