summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAetias <aetias@outlook.com>2025-01-18 15:50:03 +0100
committerAetias <aetias@outlook.com>2025-01-18 15:50:03 +0100
commitfe4c283ba249c5c676b75542c83dfbb829c768b3 (patch)
tree40aa253e419330dc3bbfb5300f95dbf97cbe7b81
parent311b9243e1fa2ee7ff4992bb7465ef3292f85a7d (diff)
Document math functions
-rw-r--r--.clang-format2
-rw-r--r--config/eur/arm9/itcm/symbols.txt86
-rw-r--r--config/eur/arm9/symbols.txt4
-rw-r--r--config/usa/arm9/itcm/symbols.txt86
-rw-r--r--config/usa/arm9/symbols.txt4
-rw-r--r--include/Actor/Actor.hpp2
-rw-r--r--include/Actor/ActorRupee.hpp2
-rw-r--r--include/Item/ItemManager.hpp2
-rw-r--r--include/Map/CameraViewpoint.hpp2
-rw-r--r--include/Map/Entrance.hpp2
-rw-r--r--include/Map/MapBase.hpp2
-rw-r--r--include/Map/MapData.hpp2
-rw-r--r--include/Map/MapManager.hpp2
-rw-r--r--include/Physics/AABB.hpp2
-rw-r--r--include/Physics/Cylinder.hpp2
-rw-r--r--include/Physics/Sphere.hpp2
-rw-r--r--include/Physics/Transform.hpp2
-rw-r--r--include/Player/EquipRope.hpp2
-rw-r--r--include/Player/LinkStateBase.hpp2
-rw-r--r--include/Player/LinkStateCutscene.hpp2
-rw-r--r--include/Player/LinkStateDamage.hpp2
-rw-r--r--include/Player/LinkStateFollow.hpp2
-rw-r--r--include/Player/LinkStateInteract.hpp2
-rw-r--r--include/Player/PlayerControl.hpp2
-rw-r--r--include/Player/PlayerControlData.hpp2
-rw-r--r--include/Player/PlayerLinkBase.hpp2
-rw-r--r--include/Player/TouchControl.hpp2
-rw-r--r--include/lib/math.h95
-rw-r--r--include/types.h4
-rw-r--r--libs/nds/include/nds/math.h184
-rw-r--r--libs/nds/src/itcm/math.c63
-rw-r--r--src/00_Core/Item/ItemManager.cpp2
-rw-r--r--src/14_Land/Actor/ActorRupee.cpp10
-rwxr-xr-xtools/m2ctx.py3
-rw-r--r--tools/mangle.py2
35 files changed, 374 insertions, 215 deletions
diff --git a/.clang-format b/.clang-format
index 8d5fb049..69b0b218 100644
--- a/.clang-format
+++ b/.clang-format
@@ -8,7 +8,7 @@ AllowShortCaseLabelsOnASingleLine: true
AllowShortEnumsOnASingleLine: false
IndentCaseLabels: true
-IndentExternBlock: Indent
+IndentExternBlock: NoIndent
IndentPPDirectives: BeforeHash
NamespaceIndentation: All
IndentAccessModifiers: false
diff --git a/config/eur/arm9/itcm/symbols.txt b/config/eur/arm9/itcm/symbols.txt
index b8aab999..fcfd9864 100644
--- a/config/eur/arm9/itcm/symbols.txt
+++ b/config/eur/arm9/itcm/symbols.txt
@@ -1,48 +1,48 @@
-func_01ff8000 kind:function(arm,size=0x18) addr:0x1ff8000
-func_01ff8018 kind:function(thumb,size=0xc) addr:0x1ff8018
-func_01ff8024 kind:function(arm,size=0xb0) addr:0x1ff8024
-func_01ff80d4 kind:function(arm,size=0x24) addr:0x1ff80d4
-func_01ff80f8 kind:function(arm,size=0x2c) addr:0x1ff80f8
-func_01ff8124 kind:function(thumb,size=0x14) addr:0x1ff8124
-func_01ff8138 kind:function(arm,size=0xc0) addr:0x1ff8138
-func_01ff81f8 kind:function(thumb,size=0x1c) addr:0x1ff81f8
-func_01ff8214 kind:function(thumb,size=0x1c) addr:0x1ff8214
-func_01ff8230 kind:function(thumb,size=0x18) addr:0x1ff8230
-func_01ff8248 kind:function(arm,size=0x158) addr:0x1ff8248
-func_01ff83a0 kind:function(arm,size=0x2f0) addr:0x1ff83a0
-func_01ff8690 kind:function(arm,size=0x220) addr:0x1ff8690
-func_01ff88b0 kind:function(arm,size=0x7c) addr:0x1ff88b0
-func_01ff892c kind:function(arm,size=0x28) addr:0x1ff892c
-func_01ff8954 kind:function(arm,size=0x34) addr:0x1ff8954
-func_01ff8988 kind:function(arm,size=0xac) addr:0x1ff8988
-func_01ff8a34 kind:function(thumb,size=0x18) addr:0x1ff8a34
-func_01ff8a4c kind:function(arm,size=0x34) addr:0x1ff8a4c
-func_01ff8a80 kind:function(thumb,size=0x20) addr:0x1ff8a80
-func_01ff8aa0 kind:function(thumb,size=0x1c) addr:0x1ff8aa0
-func_01ff8abc kind:function(thumb,size=0x1c) addr:0x1ff8abc
-func_01ff8ad8 kind:function(arm,size=0x20) addr:0x1ff8ad8
-func_01ff8af8 kind:function(arm,size=0x38c) addr:0x1ff8af8
-func_01ff8e84 kind:function(arm,size=0x2d4) addr:0x1ff8e84
-func_01ff9158 kind:function(arm,size=0xa0) addr:0x1ff9158
-func_01ff91f8 kind:function(arm,size=0x2c) addr:0x1ff91f8
-func_01ff9224 kind:function(arm,size=0x34) addr:0x1ff9224
-func_01ff9258 kind:function(thumb,size=0x24) addr:0x1ff9258
-func_01ff927c kind:function(arm,size=0x664) addr:0x1ff927c
-Divide kind:function(arm,size=0x10) addr:0x1ff98e0
+Mat2p_InitIdentity kind:function(arm,size=0x18) addr:0x1ff8000
+Mat2p_InitRotation kind:function(thumb,size=0xc) addr:0x1ff8018
+Mat2p_Multiply kind:function(arm,size=0xb0) addr:0x1ff8024
+Mat3p_InitIdentity kind:function(arm,size=0x24) addr:0x1ff80d4
+Mat3p_CopyToMat4x3p kind:function(arm,size=0x2c) addr:0x1ff80f8
+Mat3p_InitScale kind:function(thumb,size=0x14) addr:0x1ff8124
+Mat3p_ScaleColumns kind:function(arm,size=0xc0) addr:0x1ff8138
+Mat3p_InitXRotation kind:function(thumb,size=0x1c) addr:0x1ff81f8
+Mat3p_InitYRotation kind:function(thumb,size=0x1c) addr:0x1ff8214
+Mat3p_InitZRotation kind:function(thumb,size=0x18) addr:0x1ff8230
+Mat3p_func_01ff8248 kind:function(arm,size=0x158) addr:0x1ff8248
+Mat3p_func_01ff83a0 kind:function(arm,size=0x2f0) addr:0x1ff83a0
+Mat3p_Multiply kind:function(arm,size=0x220) addr:0x1ff8690
+Mat3p_MultiplyVec kind:function(arm,size=0x7c) addr:0x1ff88b0
+Mat4x3p_InitIdentity kind:function(arm,size=0x28) addr:0x1ff892c
+Mat4x3p_CopyToMat4p kind:function(arm,size=0x34) addr:0x1ff8954
+Mat4x3p_func_01ff8988 kind:function(arm,size=0xac) addr:0x1ff8988
+Mat4x3p_InitScale kind:function(thumb,size=0x18) addr:0x1ff8a34
+Mat4x3p_ScaleColumns kind:function(arm,size=0x34) addr:0x1ff8a4c
+Mat4x3p_InitXRotation kind:function(thumb,size=0x20) addr:0x1ff8a80
+Mat4x3p_InitYRotation kind:function(thumb,size=0x1c) addr:0x1ff8aa0
+Mat4x3p_InitZRotation kind:function(thumb,size=0x1c) addr:0x1ff8abc
+Mat4x3p_func_01ff8ad8 kind:function(arm,size=0x20) addr:0x1ff8ad8
+Mat4x3p_func_01ff8af8 kind:function(arm,size=0x38c) addr:0x1ff8af8
+Mat4x3p_Multiply kind:function(arm,size=0x2d4) addr:0x1ff8e84
+Mat4x3p_MultiplyVec kind:function(arm,size=0xa0) addr:0x1ff9158
+Mat4p_InitIdentity kind:function(arm,size=0x2c) addr:0x1ff91f8
+Mat4p_CopyToMat4x3p kind:function(arm,size=0x34) addr:0x1ff9224
+Mat4p_InitZRotation kind:function(thumb,size=0x24) addr:0x1ff9258
+Mat4p_Multiply kind:function(arm,size=0x664) addr:0x1ff927c
+CoDivide64By32 kind:function(arm,size=0x10) addr:0x1ff98e0
func_01ff98f0 kind:function(arm,size=0x2c) addr:0x1ff98f0
-func_01ff991c kind:function(arm,size=0x10) addr:0x1ff991c
+CoReciprocal kind:function(arm,size=0x10) addr:0x1ff991c
func_01ff992c kind:function(arm,size=0x2c) addr:0x1ff992c
-func_01ff9958 kind:function(arm,size=0x34) addr:0x1ff9958
-func_01ff998c kind:function(arm,size=0x68) addr:0x1ff998c
-func_01ff99f4 kind:function(arm,size=0x24) addr:0x1ff99f4
-func_01ff9a18 kind:function(arm,size=0x38) addr:0x1ff9a18
-func_01ff9a50 kind:function(arm,size=0x30) addr:0x1ff9a50
-func_01ff9a80 kind:function(arm,size=0x44) addr:0x1ff9a80
+CoSqrt kind:function(arm,size=0x34) addr:0x1ff9958
+CoInvSqrt kind:function(arm,size=0x68) addr:0x1ff998c
+AwaitDivisionResult kind:function(arm,size=0x24) addr:0x1ff99f4
+GetDivisionResult kind:function(arm,size=0x38) addr:0x1ff9a18
+StartReciprocal kind:function(arm,size=0x30) addr:0x1ff9a50
+StartSqrt kind:function(arm,size=0x44) addr:0x1ff9a80
func_01ff9ac4 kind:function(arm,size=0x34) addr:0x1ff9ac4
-func_01ff9af8 kind:function(arm,size=0x2c) addr:0x1ff9af8
-func_01ff9b24 kind:function(arm,size=0x28) addr:0x1ff9b24
-func_01ff9b4c kind:function(arm,size=0x3c) addr:0x1ff9b4c
-func_01ff9b88 kind:function(arm,size=0x3c) addr:0x1ff9b88
+AwaitSqrtResult kind:function(arm,size=0x2c) addr:0x1ff9af8
+StartDivision64By32 kind:function(arm,size=0x28) addr:0x1ff9b24
+CoDivide32 kind:function(arm,size=0x3c) addr:0x1ff9b4c
+CoRemainder kind:function(arm,size=0x3c) addr:0x1ff9b88
Vec3p_Add kind:function(arm,size=0x34) addr:0x1ff9bc4
Vec3p_Sub kind:function(arm,size=0x34) addr:0x1ff9bf8
Vec3p_Dot kind:function(arm,size=0x3c) addr:0x1ff9c2c
@@ -68,7 +68,7 @@ func_01ffa7fc kind:function(arm,size=0xd8) addr:0x1ffa7fc
func_01ffa8d4 kind:function(arm,size=0x60) addr:0x1ffa8d4
func_01ffa934 kind:function(arm,size=0x18) addr:0x1ffa934
func_01ffa94c kind:function(arm,size=0xb0) addr:0x1ffa94c
-func_01ffa9fc kind:function(arm,size=0xf0) addr:0x1ffa9fc
+PushGeometryCommand kind:function(arm,size=0xf0) addr:0x1ffa9fc
func_01ffaaec kind:function(arm,size=0x17c) addr:0x1ffaaec
func_01ffac68 kind:function(arm,size=0xcc) addr:0x1ffac68
func_01ffad54 kind:function(arm,size=0x458) addr:0x1ffad54
diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt
index 69505224..f25e3eee 100644
--- a/config/eur/arm9/symbols.txt
+++ b/config/eur/arm9/symbols.txt
@@ -1420,8 +1420,8 @@ Vec3p_SetLength kind:function(arm,size=0xa4) addr:0x202da8c
func_0202db30 kind:function(arm,size=0x108) addr:0x202db30
func_0202dc38 kind:function(arm,size=0xc4) addr:0x202dc38
func_0202dcfc kind:function(arm,size=0x140) addr:0x202dcfc
-Mat4x3p_Multiply kind:function(arm,size=0x1f4) addr:0x202de3c
-Mat3p_Multiply kind:function(arm,size=0x170) addr:0x202e030
+Mat4x3p_MultiplyMat4x3p kind:function(arm,size=0x1f4) addr:0x202de3c
+Mat3p_MultiplyMat3p kind:function(arm,size=0x170) addr:0x202e030
_ZN18UnkStruct_0202e1a0C2Ev kind:function(arm,size=0x24) addr:0x202e1a0
_ZN18UnkStruct_0202e1a013func_0202e1c4Ev kind:function(arm,size=0x24) addr:0x202e1c4
_ZN18UnkStruct_0202e1a013func_0202e1e8Ev kind:function(arm,size=0x128) addr:0x202e1e8
diff --git a/config/usa/arm9/itcm/symbols.txt b/config/usa/arm9/itcm/symbols.txt
index b8aab999..fcfd9864 100644
--- a/config/usa/arm9/itcm/symbols.txt
+++ b/config/usa/arm9/itcm/symbols.txt
@@ -1,48 +1,48 @@
-func_01ff8000 kind:function(arm,size=0x18) addr:0x1ff8000
-func_01ff8018 kind:function(thumb,size=0xc) addr:0x1ff8018
-func_01ff8024 kind:function(arm,size=0xb0) addr:0x1ff8024
-func_01ff80d4 kind:function(arm,size=0x24) addr:0x1ff80d4
-func_01ff80f8 kind:function(arm,size=0x2c) addr:0x1ff80f8
-func_01ff8124 kind:function(thumb,size=0x14) addr:0x1ff8124
-func_01ff8138 kind:function(arm,size=0xc0) addr:0x1ff8138
-func_01ff81f8 kind:function(thumb,size=0x1c) addr:0x1ff81f8
-func_01ff8214 kind:function(thumb,size=0x1c) addr:0x1ff8214
-func_01ff8230 kind:function(thumb,size=0x18) addr:0x1ff8230
-func_01ff8248 kind:function(arm,size=0x158) addr:0x1ff8248
-func_01ff83a0 kind:function(arm,size=0x2f0) addr:0x1ff83a0
-func_01ff8690 kind:function(arm,size=0x220) addr:0x1ff8690
-func_01ff88b0 kind:function(arm,size=0x7c) addr:0x1ff88b0
-func_01ff892c kind:function(arm,size=0x28) addr:0x1ff892c
-func_01ff8954 kind:function(arm,size=0x34) addr:0x1ff8954
-func_01ff8988 kind:function(arm,size=0xac) addr:0x1ff8988
-func_01ff8a34 kind:function(thumb,size=0x18) addr:0x1ff8a34
-func_01ff8a4c kind:function(arm,size=0x34) addr:0x1ff8a4c
-func_01ff8a80 kind:function(thumb,size=0x20) addr:0x1ff8a80
-func_01ff8aa0 kind:function(thumb,size=0x1c) addr:0x1ff8aa0
-func_01ff8abc kind:function(thumb,size=0x1c) addr:0x1ff8abc
-func_01ff8ad8 kind:function(arm,size=0x20) addr:0x1ff8ad8
-func_01ff8af8 kind:function(arm,size=0x38c) addr:0x1ff8af8
-func_01ff8e84 kind:function(arm,size=0x2d4) addr:0x1ff8e84
-func_01ff9158 kind:function(arm,size=0xa0) addr:0x1ff9158
-func_01ff91f8 kind:function(arm,size=0x2c) addr:0x1ff91f8
-func_01ff9224 kind:function(arm,size=0x34) addr:0x1ff9224
-func_01ff9258 kind:function(thumb,size=0x24) addr:0x1ff9258
-func_01ff927c kind:function(arm,size=0x664) addr:0x1ff927c
-Divide kind:function(arm,size=0x10) addr:0x1ff98e0
+Mat2p_InitIdentity kind:function(arm,size=0x18) addr:0x1ff8000
+Mat2p_InitRotation kind:function(thumb,size=0xc) addr:0x1ff8018
+Mat2p_Multiply kind:function(arm,size=0xb0) addr:0x1ff8024
+Mat3p_InitIdentity kind:function(arm,size=0x24) addr:0x1ff80d4
+Mat3p_CopyToMat4x3p kind:function(arm,size=0x2c) addr:0x1ff80f8
+Mat3p_InitScale kind:function(thumb,size=0x14) addr:0x1ff8124
+Mat3p_ScaleColumns kind:function(arm,size=0xc0) addr:0x1ff8138
+Mat3p_InitXRotation kind:function(thumb,size=0x1c) addr:0x1ff81f8
+Mat3p_InitYRotation kind:function(thumb,size=0x1c) addr:0x1ff8214
+Mat3p_InitZRotation kind:function(thumb,size=0x18) addr:0x1ff8230
+Mat3p_func_01ff8248 kind:function(arm,size=0x158) addr:0x1ff8248
+Mat3p_func_01ff83a0 kind:function(arm,size=0x2f0) addr:0x1ff83a0
+Mat3p_Multiply kind:function(arm,size=0x220) addr:0x1ff8690
+Mat3p_MultiplyVec kind:function(arm,size=0x7c) addr:0x1ff88b0
+Mat4x3p_InitIdentity kind:function(arm,size=0x28) addr:0x1ff892c
+Mat4x3p_CopyToMat4p kind:function(arm,size=0x34) addr:0x1ff8954
+Mat4x3p_func_01ff8988 kind:function(arm,size=0xac) addr:0x1ff8988
+Mat4x3p_InitScale kind:function(thumb,size=0x18) addr:0x1ff8a34
+Mat4x3p_ScaleColumns kind:function(arm,size=0x34) addr:0x1ff8a4c
+Mat4x3p_InitXRotation kind:function(thumb,size=0x20) addr:0x1ff8a80
+Mat4x3p_InitYRotation kind:function(thumb,size=0x1c) addr:0x1ff8aa0
+Mat4x3p_InitZRotation kind:function(thumb,size=0x1c) addr:0x1ff8abc
+Mat4x3p_func_01ff8ad8 kind:function(arm,size=0x20) addr:0x1ff8ad8
+Mat4x3p_func_01ff8af8 kind:function(arm,size=0x38c) addr:0x1ff8af8
+Mat4x3p_Multiply kind:function(arm,size=0x2d4) addr:0x1ff8e84
+Mat4x3p_MultiplyVec kind:function(arm,size=0xa0) addr:0x1ff9158
+Mat4p_InitIdentity kind:function(arm,size=0x2c) addr:0x1ff91f8
+Mat4p_CopyToMat4x3p kind:function(arm,size=0x34) addr:0x1ff9224
+Mat4p_InitZRotation kind:function(thumb,size=0x24) addr:0x1ff9258
+Mat4p_Multiply kind:function(arm,size=0x664) addr:0x1ff927c
+CoDivide64By32 kind:function(arm,size=0x10) addr:0x1ff98e0
func_01ff98f0 kind:function(arm,size=0x2c) addr:0x1ff98f0
-func_01ff991c kind:function(arm,size=0x10) addr:0x1ff991c
+CoReciprocal kind:function(arm,size=0x10) addr:0x1ff991c
func_01ff992c kind:function(arm,size=0x2c) addr:0x1ff992c
-func_01ff9958 kind:function(arm,size=0x34) addr:0x1ff9958
-func_01ff998c kind:function(arm,size=0x68) addr:0x1ff998c
-func_01ff99f4 kind:function(arm,size=0x24) addr:0x1ff99f4
-func_01ff9a18 kind:function(arm,size=0x38) addr:0x1ff9a18
-func_01ff9a50 kind:function(arm,size=0x30) addr:0x1ff9a50
-func_01ff9a80 kind:function(arm,size=0x44) addr:0x1ff9a80
+CoSqrt kind:function(arm,size=0x34) addr:0x1ff9958
+CoInvSqrt kind:function(arm,size=0x68) addr:0x1ff998c
+AwaitDivisionResult kind:function(arm,size=0x24) addr:0x1ff99f4
+GetDivisionResult kind:function(arm,size=0x38) addr:0x1ff9a18
+StartReciprocal kind:function(arm,size=0x30) addr:0x1ff9a50
+StartSqrt kind:function(arm,size=0x44) addr:0x1ff9a80
func_01ff9ac4 kind:function(arm,size=0x34) addr:0x1ff9ac4
-func_01ff9af8 kind:function(arm,size=0x2c) addr:0x1ff9af8
-func_01ff9b24 kind:function(arm,size=0x28) addr:0x1ff9b24
-func_01ff9b4c kind:function(arm,size=0x3c) addr:0x1ff9b4c
-func_01ff9b88 kind:function(arm,size=0x3c) addr:0x1ff9b88
+AwaitSqrtResult kind:function(arm,size=0x2c) addr:0x1ff9af8
+StartDivision64By32 kind:function(arm,size=0x28) addr:0x1ff9b24
+CoDivide32 kind:function(arm,size=0x3c) addr:0x1ff9b4c
+CoRemainder kind:function(arm,size=0x3c) addr:0x1ff9b88
Vec3p_Add kind:function(arm,size=0x34) addr:0x1ff9bc4
Vec3p_Sub kind:function(arm,size=0x34) addr:0x1ff9bf8
Vec3p_Dot kind:function(arm,size=0x3c) addr:0x1ff9c2c
@@ -68,7 +68,7 @@ func_01ffa7fc kind:function(arm,size=0xd8) addr:0x1ffa7fc
func_01ffa8d4 kind:function(arm,size=0x60) addr:0x1ffa8d4
func_01ffa934 kind:function(arm,size=0x18) addr:0x1ffa934
func_01ffa94c kind:function(arm,size=0xb0) addr:0x1ffa94c
-func_01ffa9fc kind:function(arm,size=0xf0) addr:0x1ffa9fc
+PushGeometryCommand kind:function(arm,size=0xf0) addr:0x1ffa9fc
func_01ffaaec kind:function(arm,size=0x17c) addr:0x1ffaaec
func_01ffac68 kind:function(arm,size=0xcc) addr:0x1ffac68
func_01ffad54 kind:function(arm,size=0x458) addr:0x1ffad54
diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt
index 197b2bb9..cd7b2422 100644
--- a/config/usa/arm9/symbols.txt
+++ b/config/usa/arm9/symbols.txt
@@ -1420,8 +1420,8 @@ Vec3p_SetLength kind:function(arm,size=0xa4) addr:0x202da88
func_0202db30 kind:function(arm,size=0x108) addr:0x202db2c
func_0202dc38 kind:function(arm,size=0xc4) addr:0x202dc34
func_0202dcfc kind:function(arm,size=0x140) addr:0x202dcf8
-Mat4x3p_Multiply kind:function(arm,size=0x1f4) addr:0x202de38
-Mat3p_Multiply kind:function(arm,size=0x170) addr:0x202e02c
+Mat4x3p_MultiplyMat4x3p kind:function(arm,size=0x1f4) addr:0x202de38
+Mat3p_MultiplyMat3p kind:function(arm,size=0x170) addr:0x202e02c
_ZN18UnkStruct_0202e1a0C2Ev kind:function(arm,size=0x24) addr:0x202e19c
_ZN18UnkStruct_0202e1a013func_0202e1c4Ev kind:function(arm,size=0x24) addr:0x202e1c0
_ZN18UnkStruct_0202e1a013func_0202e1e8Ev kind:function(arm,size=0x128) addr:0x202e1e4
diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp
index 64402237..2a30a7c1 100644
--- a/include/Actor/Actor.hpp
+++ b/include/Actor/Actor.hpp
@@ -3,7 +3,7 @@
#include "global.h"
#include "types.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "Actor/ActorRef.hpp"
#include "Actor/ActorType.hpp"
diff --git a/include/Actor/ActorRupee.hpp b/include/Actor/ActorRupee.hpp
index 56519394..a5fcbea3 100644
--- a/include/Actor/ActorRupee.hpp
+++ b/include/Actor/ActorRupee.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "global.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "types.h"
#include "Actor/Actor.hpp"
diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp
index ae5e8cad..1fcabe31 100644
--- a/include/Item/ItemManager.hpp
+++ b/include/Item/ItemManager.hpp
@@ -5,7 +5,7 @@ extern "C" {
}
#include "global.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "types.h"
#include "Actor/ActorNavi.hpp"
diff --git a/include/Map/CameraViewpoint.hpp b/include/Map/CameraViewpoint.hpp
index c952078b..924ef379 100644
--- a/include/Map/CameraViewpoint.hpp
+++ b/include/Map/CameraViewpoint.hpp
@@ -3,7 +3,7 @@
#include "global.h"
#include "types.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "System/SysNew.hpp"
diff --git a/include/Map/Entrance.hpp b/include/Map/Entrance.hpp
index d9bea6ef..8d7d6a29 100644
--- a/include/Map/Entrance.hpp
+++ b/include/Map/Entrance.hpp
@@ -3,7 +3,7 @@
#include "global.h"
#include "types.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "System/SysNew.hpp"
diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp
index f9d08cac..f85c782e 100644
--- a/include/Map/MapBase.hpp
+++ b/include/Map/MapBase.hpp
@@ -5,7 +5,7 @@
#include "global.h"
#include "types.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "Map/CameraViewpoint.hpp"
#include "Map/Course.hpp"
diff --git a/include/Map/MapData.hpp b/include/Map/MapData.hpp
index be4b691f..295e2309 100644
--- a/include/Map/MapData.hpp
+++ b/include/Map/MapData.hpp
@@ -3,7 +3,7 @@
#include "global.h"
#include "types.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "System/SysNew.hpp"
diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp
index ff3397b9..b346a4d0 100644
--- a/include/Map/MapManager.hpp
+++ b/include/Map/MapManager.hpp
@@ -3,7 +3,7 @@
#include "global.h"
#include "types.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "Map/Course.hpp"
#include "Map/MapBase.hpp"
diff --git a/include/Physics/AABB.hpp b/include/Physics/AABB.hpp
index ef90ffcd..19ce9f38 100644
--- a/include/Physics/AABB.hpp
+++ b/include/Physics/AABB.hpp
@@ -3,7 +3,7 @@
#include "global.h"
#include "types.h"
-#include "lib/math.h"
+#include "nds/math.h"
struct AABB {
Vec3p min;
diff --git a/include/Physics/Cylinder.hpp b/include/Physics/Cylinder.hpp
index 59c03c46..353635dd 100644
--- a/include/Physics/Cylinder.hpp
+++ b/include/Physics/Cylinder.hpp
@@ -3,7 +3,7 @@
#include "global.h"
#include "types.h"
-#include "lib/math.h"
+#include "nds/math.h"
struct Cylinder {
Vec3p pos;
diff --git a/include/Physics/Sphere.hpp b/include/Physics/Sphere.hpp
index eb88f74d..ba42ddf2 100644
--- a/include/Physics/Sphere.hpp
+++ b/include/Physics/Sphere.hpp
@@ -3,7 +3,7 @@
#include "global.h"
#include "types.h"
-#include "lib/math.h"
+#include "nds/math.h"
struct Sphere {
Vec3p pos;
diff --git a/include/Physics/Transform.hpp b/include/Physics/Transform.hpp
index 6b72af57..140e574d 100644
--- a/include/Physics/Transform.hpp
+++ b/include/Physics/Transform.hpp
@@ -3,7 +3,7 @@
#include "global.h"
#include "types.h"
-#include "lib/math.h"
+#include "nds/math.h"
struct Transform {
Vec3p pos;
diff --git a/include/Player/EquipRope.hpp b/include/Player/EquipRope.hpp
index 127eb974..906f813b 100644
--- a/include/Player/EquipRope.hpp
+++ b/include/Player/EquipRope.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "global.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "types.h"
#include "Actor/ActorRef.hpp"
diff --git a/include/Player/LinkStateBase.hpp b/include/Player/LinkStateBase.hpp
index 3371b937..f3ac5087 100644
--- a/include/Player/LinkStateBase.hpp
+++ b/include/Player/LinkStateBase.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "global.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "types.h"
#include "Actor/Actor.hpp"
diff --git a/include/Player/LinkStateCutscene.hpp b/include/Player/LinkStateCutscene.hpp
index f39c7430..514f2b32 100644
--- a/include/Player/LinkStateCutscene.hpp
+++ b/include/Player/LinkStateCutscene.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "global.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "types.h"
#include "Item/Item.hpp"
diff --git a/include/Player/LinkStateDamage.hpp b/include/Player/LinkStateDamage.hpp
index 2c5e6e00..1c59d90e 100644
--- a/include/Player/LinkStateDamage.hpp
+++ b/include/Player/LinkStateDamage.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "global.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "types.h"
#include "Player/LinkStateBase.hpp"
diff --git a/include/Player/LinkStateFollow.hpp b/include/Player/LinkStateFollow.hpp
index c422faa1..09de008e 100644
--- a/include/Player/LinkStateFollow.hpp
+++ b/include/Player/LinkStateFollow.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "global.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "types.h"
#include "Actor/Actor.hpp"
diff --git a/include/Player/LinkStateInteract.hpp b/include/Player/LinkStateInteract.hpp
index 150983b8..55081c8a 100644
--- a/include/Player/LinkStateInteract.hpp
+++ b/include/Player/LinkStateInteract.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "global.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "types.h"
#include "Actor/Actor.hpp"
diff --git a/include/Player/PlayerControl.hpp b/include/Player/PlayerControl.hpp
index 0e0da8ae..de0da848 100644
--- a/include/Player/PlayerControl.hpp
+++ b/include/Player/PlayerControl.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "global.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "types.h"
#include "Actor/Actor.hpp"
diff --git a/include/Player/PlayerControlData.hpp b/include/Player/PlayerControlData.hpp
index 3f998186..c44a00c5 100644
--- a/include/Player/PlayerControlData.hpp
+++ b/include/Player/PlayerControlData.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "global.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "types.h"
#include "System/SysNew.hpp"
diff --git a/include/Player/PlayerLinkBase.hpp b/include/Player/PlayerLinkBase.hpp
index 02cf3219..8c12b911 100644
--- a/include/Player/PlayerLinkBase.hpp
+++ b/include/Player/PlayerLinkBase.hpp
@@ -1,7 +1,7 @@
#pragma once
#include "global.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "types.h"
#include "Actor/ActorManager.hpp"
diff --git a/include/Player/TouchControl.hpp b/include/Player/TouchControl.hpp
index 47349d28..1301e144 100644
--- a/include/Player/TouchControl.hpp
+++ b/include/Player/TouchControl.hpp
@@ -1,8 +1,8 @@
#pragma once
#include "global.h"
-#include "lib/math.h"
#include "lib/touch.h"
+#include "nds/math.h"
#include "types.h"
typedef u16 TouchFlags;
diff --git a/include/lib/math.h b/include/lib/math.h
deleted file mode 100644
index f3e0d3d6..00000000
--- a/include/lib/math.h
+++ /dev/null
@@ -1,95 +0,0 @@
-#pragma once
-
-#include "global.h"
-#include "types.h"
-
-// Q20.12 fixed point number
-typedef s32 q20;
-// Q4.12 fixed point number
-typedef s16 q4;
-
-#define INT_TO_Q20(n) ((s32) ((n) << 12))
-#define FLOAT_TO_Q21(n) ((s32) (((n) * 8192 + 1) / 4))
-#define FLOAT_TO_Q20(n) ((s32) (((n) * 8192 + 1) / 2))
-#define FLOAT_TO_Q19(n) ((s32) (((n) * 8192 + 1)))
-#define ROUND_Q20(n) (((s32) (n) + 0x800) >> 12)
-#define MUL_Q20(a, b) (q20)((((s64) (a)) * ((s64) (b)) + 0x800) >> 12)
-
-#define DEG_TO_ANG(n) ((n) * 0x10000 / 360)
-#define SIN(n) (gSinCosTable[2 * ((n) >> 4)])
-#define COS(n) (gSinCosTable[2 * ((n) >> 4) + 1])
-
-extern "C" s32 Atan2(s32 x, s32 y);
-extern q4 gSinCosTable[];
-
-typedef struct {
- /* 0 */ s8 x;
- /* 1 */ s8 y;
- /* 2 */
-} Vec2b;
-
-typedef struct {
- /* 0 */ s16 x;
- /* 1 */ s16 y;
- /* 2 */
-} Vec2s;
-
-typedef struct {
- /* 0 */ q20 x;
- /* 4 */ q20 y;
- /* 8 */ q20 z;
- /* c */
-} Vec3p;
-
-extern const Vec3p gVec3p_ZERO;
-
-extern "C" void Vec3p_Add(Vec3p *a, Vec3p *b, Vec3p *out);
-extern "C" void Vec3p_Sub(Vec3p *a, Vec3p *b, Vec3p *out);
-extern "C" q20 Vec3p_Dot(Vec3p *a, Vec3p *b);
-extern "C" void Vec3p_Cross(Vec3p *a, Vec3p *b, Vec3p *out);
-extern "C" q20 Vec3p_Length(Vec3p *a);
-extern "C" void Vec3p_Normalize(Vec3p *vec, Vec3p *out);
-extern "C" void Vec3p_Axpy(q20 a, Vec3p *x, Vec3p *y, Vec3p *out);
-extern "C" q20 Vec3p_Distance(Vec3p *a, Vec3p *b);
-
-inline void Vec3p_Rotate(Vec3p *vec, q20 sin, q20 cos, Vec3p *out) {
- out->x += MUL_Q20(vec->z, sin);
- out->z += MUL_Q20(vec->z, cos);
- out->x += MUL_Q20(vec->x, cos);
- out->z += MUL_Q20(vec->x, -sin);
-}
-
-inline void Vec3p_CopyXZ(Vec3p *vec, Vec3p *out) {
- q20 z = vec->z;
- q20 x = vec->x;
-
- out->x = x;
- out->y = 0;
- out->z = z;
-}
-
-inline void Vec3p_Copy(Vec3p *vec, Vec3p *out) {
- out->x = vec->x;
- out->y = vec->y;
- out->z = vec->z;
-}
-
-typedef struct {
- /* 00 */ q20 x;
- /* 04 */ q20 y;
- /* 08 */ q20 z;
- /* 0c */ q20 w;
- /* 10 */
-} Vec4p;
-
-typedef struct {
- /* 00 */ Vec3p xColumn;
- /* 0c */ Vec3p yColumn;
- /* 18 */ Vec3p zColumn;
- /* 24 */
-} Mat3p;
-
-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);
diff --git a/include/types.h b/include/types.h
index a0952eff..0dd5ecf5 100644
--- a/include/types.h
+++ b/include/types.h
@@ -15,6 +15,10 @@ typedef s8 unk8;
typedef s16 unk16;
typedef s32 unk32;
+#ifndef __cplusplus
+typedef s32 bool;
+#endif
+
#define CEIL_DIV(a, b) (((a) + (b) - 1) / (b))
#endif
diff --git a/libs/nds/include/nds/math.h b/libs/nds/include/nds/math.h
new file mode 100644
index 00000000..162625c3
--- /dev/null
+++ b/libs/nds/include/nds/math.h
@@ -0,0 +1,184 @@
+#ifndef _NDS_MATH_H
+#define _NDS_MATH_H
+
+#include "global.h"
+#include "types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Q20.12 fixed point number
+typedef s32 q20;
+// Q4.12 fixed point number
+typedef s16 q4;
+
+#define INT_TO_Q20(n) ((s32) ((n) << 12))
+#define FLOAT_TO_Q21(n) ((s32) (((n) * 8192 + 1) / 4))
+#define FLOAT_TO_Q20(n) ((s32) (((n) * 8192 + 1) / 2))
+#define FLOAT_TO_Q19(n) ((s32) (((n) * 8192 + 1)))
+#define ROUND_Q20(n) (((s32) (n) + 0x800) >> 12)
+#define MUL_Q20(a, b) (q20)((((s64) (a)) * ((s64) (b)) + 0x800) >> 12)
+
+#define DEG_TO_ANG(n) ((n) * 0x10000 / 360)
+#define SIN(n) (gSinCosTable[2 * ((n) >> 4)])
+#define COS(n) (gSinCosTable[2 * ((n) >> 4) + 1])
+
+u32 func_01ff9f3c(s32 a, s32 b);
+s32 Atan2(s32 x, s32 y);
+
+u32 SoftDivide(u32 a, u32 b);
+u32 CoDivide64By32(u32 a, u32 b);
+u32 func_01ff98f0(u32 a, u32 b);
+u32 CoReciprocal(u32 x);
+u32 func_01ff992c(u32 x);
+u32 CoSqrt(u32 x);
+u32 CoInvSqrt(u32 x);
+u32 AwaitDivisionResult();
+u32 GetDivisionResult();
+void StartReciprocal(u32 x);
+void StartSqrt(u32 x);
+void func_01ff9ac4(u32 x);
+u32 AwaitSqrtResult();
+void StartDivision64By32(u32 a, u32 b);
+u32 CoDivide32(u32 a, u32 b);
+u32 CoRemainder(u32 a, u32 b);
+
+bool Approach(unk32 *src, unk32 dest, unk32 step);
+bool Approach_thunk(unk32 *src, unk32 dest, unk32 step);
+extern q4 gSinCosTable[];
+
+typedef struct {
+ /* 0 */ s8 x;
+ /* 1 */ s8 y;
+ /* 2 */
+} Vec2b;
+
+typedef struct {
+ /* 0 */ s16 x;
+ /* 1 */ s16 y;
+ /* 2 */
+} Vec2s;
+
+typedef struct {
+ /* 0 */ q20 x;
+ /* 4 */ q20 y;
+ /* 8 */
+} Vec2p;
+
+typedef struct {
+ /* 0 */ q20 x;
+ /* 4 */ q20 y;
+ /* 8 */ q20 z;
+ /* c */
+} Vec3p;
+
+typedef struct {
+ /* 00 */ q20 x;
+ /* 04 */ q20 y;
+ /* 08 */ q20 z;
+ /* 0c */ q20 w;
+ /* 10 */
+} Vec4p;
+
+typedef struct {
+ /* 00 */ Vec2p xColumn;
+ /* 08 */ Vec2p yColumn;
+ /* 10 */
+} Mat2p;
+
+typedef struct {
+ /* 00 */ Vec3p xColumn;
+ /* 0c */ Vec3p yColumn;
+ /* 18 */ Vec3p zColumn;
+ /* 24 */
+} Mat3p;
+
+typedef struct {
+ /* 00 */ Vec3p xColumn;
+ /* 0c */ Vec3p yColumn;
+ /* 18 */ Vec3p zColumn;
+ /* 24 */ Vec3p wColumn;
+ /* 30 */
+} Mat4x3p;
+
+typedef struct {
+ /* 00 */ Vec4p xColumn;
+ /* 10 */ Vec4p yColumn;
+ /* 20 */ Vec4p zColumn;
+ /* 30 */ Vec4p wColumn;
+ /* 40 */
+} Mat4p;
+
+extern const Vec3p gVec3p_ZERO;
+
+void Vec3p_Add(Vec3p *a, Vec3p *b, Vec3p *out);
+void Vec3p_Sub(Vec3p *a, Vec3p *b, Vec3p *out);
+q20 Vec3p_Dot(Vec3p *a, Vec3p *b);
+void Vec3p_Cross(Vec3p *a, Vec3p *b, Vec3p *out);
+q20 Vec3p_Length(Vec3p *a);
+void Vec3p_Normalize(Vec3p *vec, Vec3p *out);
+void Vec3p_Axpy(q20 a, Vec3p *x, Vec3p *y, Vec3p *out);
+q20 Vec3p_Distance(Vec3p *a, Vec3p *b);
+
+inline void Vec3p_Rotate(Vec3p *vec, q20 sin, q20 cos, Vec3p *out) {
+ out->x += MUL_Q20(vec->z, sin);
+ out->z += MUL_Q20(vec->z, cos);
+ out->x += MUL_Q20(vec->x, cos);
+ out->z += MUL_Q20(vec->x, -sin);
+}
+
+inline void Vec3p_CopyXZ(Vec3p *vec, Vec3p *out) {
+ q20 z = vec->z;
+ q20 x = vec->x;
+
+ out->x = x;
+ out->y = 0;
+ out->z = z;
+}
+
+inline void Vec3p_Copy(Vec3p *vec, Vec3p *out) {
+ out->x = vec->x;
+ out->y = vec->y;
+ out->z = vec->z;
+}
+
+void Mat2p_InitIdentity(Mat2p *m);
+void Mat2p_InitRotation(Mat2p *m, q20 sin, q20 cos);
+void Mat2p_Multiply(Mat2p *a, Mat2p *b, Mat2p *out);
+
+void Mat3p_InitIdentity(Mat3p *m);
+void Mat3p_CopyToMat4x3p(Mat3p *m, Mat4x3p *out);
+void Mat3p_InitScale(Mat3p *m, q20 x, q20 y, q20 z);
+void Mat3p_ScaleColumns(Mat3p *m, Mat3p *out, q20 x, q20 y, q20 z);
+void Mat3p_InitXRotation(Mat3p *m, q20 sin, q20 cos);
+void Mat3p_InitYRotation(Mat3p *m, q20 sin, q20 cos);
+void Mat3p_InitZRotation(Mat3p *m, q20 sin, q20 cos);
+void Mat3p_func_01ff8248(Mat3p *m, Vec3p *v, q20 scale, q20 offset);
+void Mat3p_func_01ff83a0(Mat3p *a, Mat3p *b);
+void Mat3p_Multiply(Mat3p *a, Mat3p *b, Mat3p *out);
+void Mat3p_MultiplyVec(Vec3p *v, Mat3p *m, Vec3p *out);
+
+void Mat4x3p_InitIdentity(Mat4x3p *m);
+void Mat4x3p_CopyToMat4p(Mat4x3p *m, Mat4p *out);
+void Mat4x3p_func_01ff8988(Mat4x3p *m, Mat4x3p *out, q20 x, q20 y, q20 z);
+void Mat4x3p_InitScale(Mat4x3p *m, q20 x, q20 y, q20 z);
+void Mat4x3p_ScaleColumns(Mat4x3p *m, Mat4x3p *out, q20 x, q20 y, q20 z);
+void Mat4x3p_InitXRotation(Mat4x3p *m, q20 sin, q20 cos);
+void Mat4x3p_InitYRotation(Mat4x3p *m, q20 sin, q20 cos);
+void Mat4x3p_InitZRotation(Mat4x3p *m, q20 sin, q20 cos);
+void Mat4x3p_func_01ff8ad8(Mat4x3p *m, Vec3p *v, q20 scale, q20 offset);
+void Mat4x3p_func_01ff8af8(Mat4x3p *a, Mat4x3p *b);
+void Mat4x3p_Multiply(Mat4x3p *a, Mat4x3p *b, Mat4x3p *out);
+void Mat4x3p_MultiplyVec(Vec3p *v, Mat4x3p *m, Vec3p *out);
+
+void Mat4p_InitIdentity(Mat4p *m);
+void Mat4p_CopyToMat4x3p(Mat4p *m, Mat4x3p *out);
+void Mat4p_InitZRotation(Mat4p *m, q20 sin, q20 cos);
+void Mat4p_Multiply(Mat4p *a, Mat4p *b, Mat4p *out);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/libs/nds/src/itcm/math.c b/libs/nds/src/itcm/math.c
new file mode 100644
index 00000000..962fd2bf
--- /dev/null
+++ b/libs/nds/src/itcm/math.c
@@ -0,0 +1,63 @@
+#include "nds/math.h"
+
+void Mat2p_InitIdentity(Mat2p *m) {}
+void Mat2p_InitRotation(Mat2p *m, q20 sin, q20 cos) {}
+void Mat2p_Multiply(Mat2p *a, Mat2p *b, Mat2p *out) {}
+
+void Mat3p_InitIdentity(Mat3p *m) {}
+void Mat3p_CopyToMat4x3p(Mat3p *m, Mat4x3p *out) {}
+void Mat3p_InitScale(Mat3p *m, q20 x, q20 y, q20 z) {}
+void Mat3p_ScaleColumns(Mat3p *m, Mat3p *out, q20 x, q20 y, q20 z) {}
+void Mat3p_InitXRotation(Mat3p *m, q20 sin, q20 cos) {}
+void Mat3p_InitYRotation(Mat3p *m, q20 sin, q20 cos) {}
+void Mat3p_InitZRotation(Mat3p *m, q20 sin, q20 cos) {}
+void Mat3p_func_01ff8248(Mat3p *m, Vec3p *v, q20 scale, q20 offset) {}
+void Mat3p_func_01ff83a0(Mat3p *a, Mat3p *b) {}
+void Mat3p_Multiply(Mat3p *a, Mat3p *b, Mat3p *out) {}
+void Mat3p_MultiplyVec(Vec3p *v, Mat3p *m, Vec3p *out) {}
+
+void Mat4x3p_InitIdentity(Mat4x3p *m) {}
+void Mat4x3p_CopyToMat4p(Mat4x3p *m, Mat4p *out) {}
+void Mat4x3p_func_01ff8988(Mat4x3p *m, Mat4x3p *out, q20 x, q20 y, q20 z) {}
+void Mat4x3p_InitScale(Mat4x3p *m, q20 x, q20 y, q20 z) {}
+void Mat4x3p_ScaleColumns(Mat4x3p *m, Mat4x3p *out, q20 x, q20 y, q20 z) {}
+void Mat4x3p_InitXRotation(Mat4x3p *m, q20 sin, q20 cos) {}
+void Mat4x3p_InitYRotation(Mat4x3p *m, q20 sin, q20 cos) {}
+void Mat4x3p_InitZRotation(Mat4x3p *m, q20 sin, q20 cos) {}
+void Mat4x3p_func_01ff8ad8(Mat4x3p *m, Vec3p *v, q20 scale, q20 offset) {}
+void Mat4x3p_func_01ff8af8(Mat4x3p *a, Mat4x3p *b) {}
+void Mat4x3p_Multiply(Mat4x3p *a, Mat4x3p *b, Mat4x3p *out) {}
+void Mat4x3p_MultiplyVec(Vec3p *v, Mat4x3p *m, Vec3p *out) {}
+
+void Mat4p_InitIdentity(Mat4p *m) {}
+void Mat4p_CopyToMat4x3p(Mat4p *m, Mat4x3p *out) {}
+void Mat4p_InitZRotation(Mat4p *m, q20 sin, q20 cos) {}
+void Mat4p_Multiply(Mat4p *a, Mat4p *b, Mat4p *out) {}
+
+u32 CoDivide64By32(u32 a, u32 b) {}
+u32 func_01ff98f0(u32 a, u32 b) {}
+u32 CoReciprocal(u32 x) {}
+u32 func_01ff992c(u32 x) {}
+u32 CoSqrt(u32 x) {}
+u32 CoInvSqrt(u32 x) {}
+u32 AwaitDivisionResult() {}
+u32 GetDivisionResult() {}
+void StartReciprocal(u32 x) {}
+void StartSqrt(u32 x) {}
+void func_01ff9ac4(u32 x) {}
+u32 AwaitSqrtResult() {}
+void StartDivision64By32(u32 a, u32 b) {}
+u32 CoDivide32(u32 a, u32 b) {}
+u32 CoRemainder(u32 a, u32 b) {}
+
+void Vec3p_Add(Vec3p *a, Vec3p *b, Vec3p *out) {}
+void Vec3p_Sub(Vec3p *a, Vec3p *b, Vec3p *out) {}
+q20 Vec3p_Dot(Vec3p *a, Vec3p *b) {}
+void Vec3p_Cross(Vec3p *a, Vec3p *b, Vec3p *out) {}
+q20 Vec3p_Length(Vec3p *a) {}
+void Vec3p_Normalize(Vec3p *vec, Vec3p *out) {}
+void Vec3p_Axpy(q20 a, Vec3p *x, Vec3p *y, Vec3p *out) {}
+q20 Vec3p_Distance(Vec3p *a, Vec3p *b) {}
+
+u32 func_01ff9f3c(s32 a, s32 b) {}
+s32 Atan2(s32 x, s32 y) {}
diff --git a/src/00_Core/Item/ItemManager.cpp b/src/00_Core/Item/ItemManager.cpp
index 5754be33..add40960 100644
--- a/src/00_Core/Item/ItemManager.cpp
+++ b/src/00_Core/Item/ItemManager.cpp
@@ -298,7 +298,7 @@ THUMB u16 ItemManager::GetUnk_09e(u32 index) const {
}
THUMB s32 ItemManager::GetUnk_09e_Divided(u32 index) const {
- q20 quotient = Divide(INT_TO_Q20(mUnk_09e[index]), FLOAT_TO_Q20(2.54));
+ q20 quotient = CoDivide64By32(INT_TO_Q20(mUnk_09e[index]), FLOAT_TO_Q20(2.54));
s32 result = ROUND_Q20(quotient);
if (result < 1) result = 1;
return result;
diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp
index f45f2c7a..dc3e47f4 100644
--- a/src/14_Land/Actor/ActorRupee.cpp
+++ b/src/14_Land/Actor/ActorRupee.cpp
@@ -5,11 +5,11 @@
#include "System/Random.hpp"
extern "C" {
- void func_ov000_0207a1c8(bool *param_1, unk32 param_2, Vec3p *param_3);
- void func_0202bc38(unk32 param_1, Vec3p *param_2, u32 param_3, Actor_UnkStruct_012 *param_4, bool);
- void func_ov005_02102c2c(u32 *param_1, int param_2, Vec3p *param_3, int param_4, int param_5, u32 param_6, int param_7,
- char param_8, char param_9, char param_10);
- void func_ov000_020d7ad4(u32 *param1, u32 param2);
+void func_ov000_0207a1c8(bool *param_1, unk32 param_2, Vec3p *param_3);
+void func_0202bc38(unk32 param_1, Vec3p *param_2, u32 param_3, Actor_UnkStruct_012 *param_4, bool);
+void func_ov005_02102c2c(u32 *param_1, int param_2, Vec3p *param_3, int param_4, int param_5, u32 param_6, int param_7,
+ char param_8, char param_9, char param_10);
+void func_ov000_020d7ad4(u32 *param1, u32 param2);
}
u16 GetRupeeValue(RupeeId id);
diff --git a/tools/m2ctx.py b/tools/m2ctx.py
index edac88da..f2275e33 100755
--- a/tools/m2ctx.py
+++ b/tools/m2ctx.py
@@ -21,7 +21,8 @@ CXX_FLAGS = [
'-nostdinc',
'-Iinclude',
'-Ilibs/c/include',
- '-Ilibs/cpp/include'
+ '-Ilibs/cpp/include',
+ '-Ilibs/nds/include'
]
script_dir = Path(os.path.dirname(os.path.realpath(__file__)))
diff --git a/tools/mangle.py b/tools/mangle.py
index 68d2aeb3..17a69c76 100644
--- a/tools/mangle.py
+++ b/tools/mangle.py
@@ -15,6 +15,7 @@ include_dir = root_dir / 'include'
libs_dir = root_dir / 'libs'
libc_include_dir = libs_dir / 'c' / 'include'
libcpp_include_dir = libs_dir / 'cpp' / 'include'
+libnds_include_dir = libs_dir / 'nds' / 'include'
if platform.system() == 'Windows': cc = [str(cc_path)]
else: cc = ['wine', str(cc_path)]
@@ -38,6 +39,7 @@ cc.extend([
'-i', include_dir,
'-i', libc_include_dir,
'-i', libcpp_include_dir,
+ '-i', libnds_include_dir,
args.file
])