summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAetias <aetias@outlook.com>2025-01-19 11:58:47 +0100
committerAetias <aetias@outlook.com>2025-01-19 11:58:47 +0100
commite1d2f0b168ebd698d7a69dbb53fe15cc7fa548aa (patch)
tree39ed851e8cb3ff62d0293454dd37a8bc3a56ce38 /include
parent4c60dda140335d6322411c6ef62a2dc0b85a3018 (diff)
Move ov000 documentation from Ghidra
Diffstat (limited to 'include')
-rw-r--r--include/DTCM/UnkStruct_027e0d38.hpp30
-rw-r--r--include/Item/Item.hpp73
-rw-r--r--include/Item/ItemManager.hpp128
-rw-r--r--include/Map/MapManager.hpp2
-rw-r--r--include/Physics/AABB.hpp13
-rw-r--r--include/Physics/Cube.hpp11
-rw-r--r--include/Save/SaveItemManager.hpp37
-rw-r--r--include/global.h2
-rw-r--r--include/types.h2
9 files changed, 168 insertions, 130 deletions
diff --git a/include/DTCM/UnkStruct_027e0d38.hpp b/include/DTCM/UnkStruct_027e0d38.hpp
new file mode 100644
index 00000000..a36af0fe
--- /dev/null
+++ b/include/DTCM/UnkStruct_027e0d38.hpp
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+struct UnkStruct_027e0d38 {
+ /* 00 */ unk8 mUnk_00;
+ /* 01 */ unk8 mUnk_01[3]; // padding?
+ /* 04 */ unk32 mUnk_04;
+ /* 08 */ unk32 mUnk_08;
+ /* 0c */ unk32 mUnk_0c;
+ /* 10 */ unk32 mUnk_10;
+ /* 14 */ unk32 mUnk_14;
+ /* 18 */ unk32 mUnk_18;
+ /* 1c */ unk16 mUnk_1c;
+ /* 1e */ unk8 mUnk_1e;
+ /* 1f */ unk8 mUnk_1f;
+ /* 20 */ unk8 mUnk_20;
+ /* 21 */ unk8 mUnk_21;
+ /* 22 */ unk8 mUnk_22[2]; // padding?
+ /* 24 */ void *mUnk_24;
+ /* 28 */ void *mUnk_28;
+ /* 2c */
+
+ unk32 func_ov000_02078b40();
+ unk8 func_ov000_02078b64();
+ bool func_ov000_02078b88();
+};
+
+extern UnkStruct_027e0d38 *data_027e0d38;
diff --git a/include/Item/Item.hpp b/include/Item/Item.hpp
index 1b67ada3..4d70c9f1 100644
--- a/include/Item/Item.hpp
+++ b/include/Item/Item.hpp
@@ -2,6 +2,8 @@
#include "types.h"
+#define MAX_POTIONS 2
+
typedef s32 ItemFlag;
enum ItemFlag_ {
ItemFlag_None = -1,
@@ -233,6 +235,77 @@ enum ItemId_ {
/* 0x88 */ ItemId_Unk_136 = 136,
};
+enum Gem {
+ Gem_Courage,
+ Gem_Power,
+ Gem_Wisdom,
+ Gem_COUNT,
+};
+
+typedef u32 ShipPart;
+enum ShipPart_ {
+ ShipPart_Anchor,
+ ShipPart_Prow,
+ ShipPart_Hull,
+ ShipPart_Cannon,
+ ShipPart_Handrail,
+ ShipPart_Wheel,
+ ShipPart_Chimney,
+ ShipPart_Bridge,
+ ShipPart_COUNT,
+};
+
+typedef u32 ShipType;
+enum ShipType_ {
+ ShipType_Linebeck,
+ ShipType_Bright,
+ ShipType_Iron,
+ ShipType_Stone,
+ ShipType_Vintage,
+ ShipType_Demon,
+ ShipType_Tropical,
+ ShipType_Dignified,
+ ShipType_Golden,
+ ShipType_COUNT,
+};
+
+typedef u32 ShipItem;
+#define SHIP_ITEM(part, ship) (ShipPart_##part * ShipPart_COUNT + ShipType_##type)
+#define ShipItem_COUNT (ShipPart_COUNT * ShipType_COUNT)
+
+typedef u32 Treasure;
+enum Treasure_ {
+ Treasure_PinkCoral,
+ Treasure_WhitePearlLoop,
+ Treasure_DarkPearlLoop,
+ Treasure_ZoraScale,
+ Treasure_GoronAmber,
+ Treasure_RutoCrown,
+ Treasure_HelmarocPlume,
+ Treasure_RegalRing,
+
+ Treasure_COUNT,
+};
+
+typedef u8 Potion;
+enum Potion_ {
+ Potion_None,
+ Potion_Red,
+ Potion_Purple,
+ Potion_Yellow,
+ Potion_COUNT,
+};
+
+struct ItemFlags {
+ /* 00 */ u32 flags[CEIL_DIV(ItemFlag_COUNT, 32)];
+ /* 10 */
+};
+
+struct ShipPartPricesShown {
+ /* 0 */ u32 flags[CEIL_DIV(ShipItem_COUNT, 32)];
+ /* c */
+};
+
namespace Item {
bool func_ov00_020ad020(ItemId item);
bool func_ov00_020ad068(ItemId item);
diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp
index 1fcabe31..813b0e0f 100644
--- a/include/Item/ItemManager.hpp
+++ b/include/Item/ItemManager.hpp
@@ -9,21 +9,16 @@ extern "C" {
#include "types.h"
#include "Actor/ActorNavi.hpp"
-#include "DTCM/UnkStruct_027e0f78.hpp"
#include "Item/Item.hpp"
-#include "Map/MapManager.hpp"
#include "Player/EquipItem.hpp"
-#include "Player/HealthManager.hpp"
#include "Render/ModelRender.hpp"
-#include "Save/AdventureFlags.hpp"
+#include "Save/SaveItemManager.hpp"
#include "Sound/Sfx.hpp"
-#include "System/OverlayManager.hpp"
#include "System/SysNew.hpp"
#define MAX_HOURGLASS_SECONDS 1500 // 25 minutes
#define MAX_AMMO_UPGRADE 2
#define MAX_UNK_0BA 9
-#define MAX_POTIONS 2
typedef s32 FairyId;
enum FairyId_ {
@@ -34,98 +29,6 @@ enum FairyId_ {
FairyId_COUNT = 3,
};
-enum Gem {
- Gem_Courage,
- Gem_Power,
- Gem_Wisdom,
- Gem_COUNT,
-};
-
-typedef u32 ShipPart;
-enum ShipPart_ {
- ShipPart_Anchor,
- ShipPart_Prow,
- ShipPart_Hull,
- ShipPart_Cannon,
- ShipPart_Handrail,
- ShipPart_Wheel,
- ShipPart_Chimney,
- ShipPart_Bridge,
- ShipPart_COUNT,
-};
-
-typedef u32 ShipType;
-enum ShipType_ {
- ShipType_Linebeck,
- ShipType_Bright,
- ShipType_Iron,
- ShipType_Stone,
- ShipType_Vintage,
- ShipType_Demon,
- ShipType_Tropical,
- ShipType_Dignified,
- ShipType_Golden,
- ShipType_COUNT,
-};
-
-typedef u32 ShipItem;
-#define SHIP_ITEM(part, ship) (ShipPart_##part * ShipPart_COUNT + ShipType_##type)
-#define ShipItem_COUNT (ShipPart_COUNT * ShipType_COUNT)
-
-typedef u32 Treasure;
-enum Treasure_ {
- Treasure_PinkCoral,
- Treasure_WhitePearlLoop,
- Treasure_DarkPearlLoop,
- Treasure_ZoraScale,
- Treasure_GoronAmber,
- Treasure_RutoCrown,
- Treasure_HelmarocPlume,
- Treasure_RegalRing,
-
- Treasure_COUNT,
-};
-
-#define NUM_POTIONS 2
-typedef u8 Potion;
-enum Potion_ {
- Potion_None,
- Potion_Red,
- Potion_Purple,
- Potion_Yellow,
- Potion_COUNT,
-};
-
-struct ItemFlags {
- /* 00 */ u32 flags[CEIL_DIV(ItemFlag_COUNT, 32)];
- /* 10 */
-};
-
-struct ShipPartPricesShown {
- /* 0 */ u32 flags[CEIL_DIV(ShipItem_COUNT, 32)];
- /* c */
-};
-
-struct UnkStruct_027e0d38 {
- /* 00 */ unk8 mUnk_00;
- /* 01 */ unk8 mUnk_01[3]; // padding?
- /* 04 */ unk32 mUnk_04;
- /* 08 */ unk32 mUnk_08;
- /* 0c */ unk32 mUnk_0c;
- /* 10 */ unk32 mUnk_10;
- /* 14 */ unk32 mUnk_14;
- /* 18 */ unk32 mUnk_18;
- /* 1c */ unk16 mUnk_1c;
- /* 1e */ unk8 mUnk_1e;
- /* 1f */ unk8 mUnk_1f;
- /* 20 */ unk8 mUnk_20;
- /* 21 */ unk8 mUnk_21;
- /* 22 */ unk8 mUnk_22[2]; // padding?
- /* 24 */ void *mUnk_24;
- /* 28 */ void *mUnk_28;
- /* 2c */
-};
-
typedef u32 ItemModelId;
enum ItemModelId_ {
ItemModelId_OshusSword, // swA
@@ -156,35 +59,6 @@ enum DungeonItemModelId_ {
DungeonItemModelId_COUNT,
};
-struct SaveItemManager {
- /* 00 */ ItemFlags itemFlags;
- /* 10 */ u32 salvagedTreasureFlags;
- /* 14 */ ShipPartPricesShown shipPartPricesShown;
- /* 20 */ u32 treasurePriceShownFlags[CEIL_DIV(Treasure_COUNT, 32)];
- /* 24 */ u8 equippedShipParts[ShipPart_COUNT];
- /* 2c */ s8 shipParts[ShipPart_COUNT][ShipType_COUNT];
- /* 74 */ s8 treasure[Treasure_COUNT];
- /* 7c */ unk8 unk_7c[4];
- /* 80 */ u16 hourglassSeconds;
- /* 82 */ u16 unk_82[6];
- /* 8e */ u16 numRupees;
- /* 90 */ unk8 unk_90;
- /* 91 */ unk8 unk_91;
- /* 92 */ unk8 unk_92;
- /* 93 */ u8 numBombs;
- /* 94 */ u8 numBombchus;
- /* 95 */ u8 numArrows;
- /* 96 */ s8 equippedItem;
- /* 97 */ Potion potions[NUM_POTIONS];
- /* 99 */ u8 numGems[Gem_COUNT];
- /* 9c */ u8 quiverSize;
- /* 9d */ u8 bombBagSize;
- /* 9e */ u8 bombchuBagSize;
- /* 9f */ u8 unk_9f[6];
- /* a5 */ u8 equippedFairy;
- /* a6 */
-};
-
class ItemManager : public SysObject {
private:
/* 000 */ ItemFlag mEquippedItem;
diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp
index de53ebe9..0cfa7479 100644
--- a/include/Map/MapManager.hpp
+++ b/include/Map/MapManager.hpp
@@ -177,7 +177,7 @@ public:
unk8 MapData_vfunc_6c();
unk8 MapData_vfunc_70();
static unk8 func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3);
- void func_ov00_02084024(unk32 param_2, AABB *param_3);
+ void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds);
unk8 MapData_vfunc_54();
unk8 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4);
unk8 MapData_vfunc_78();
diff --git a/include/Physics/AABB.hpp b/include/Physics/AABB.hpp
index 19ce9f38..25a7f34b 100644
--- a/include/Physics/AABB.hpp
+++ b/include/Physics/AABB.hpp
@@ -5,10 +5,23 @@
#include "nds/math.h"
+#include "Physics/Cube.hpp"
+
struct AABB {
Vec3p min;
Vec3p max;
+ bool func_ov000_0208e680();
+ void GetCenter(Vec3p *center);
+ q20 GetSizeX();
+ q20 GetSizeZ();
+ q20 GetSizeY();
bool Contains(Vec3p *vec);
bool ContainsInXZ(Vec3p *vec);
+ bool ContainsInXY(Vec3p *vec);
+ bool IntersectsCube(Cube *cube);
+ bool func_ov000_0208e87c(Cube *cube, Vec3p *vec, u32 *out);
+ void GrowToPoint(Vec3p *point);
+ void Grow(Vec3p *dimensions);
+ void GrowScalar(q20 amount);
};
diff --git a/include/Physics/Cube.hpp b/include/Physics/Cube.hpp
new file mode 100644
index 00000000..b16ac97f
--- /dev/null
+++ b/include/Physics/Cube.hpp
@@ -0,0 +1,11 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "nds/math.h"
+
+struct Cube {
+ Vec3p center;
+ q20 size;
+};
diff --git a/include/Save/SaveItemManager.hpp b/include/Save/SaveItemManager.hpp
new file mode 100644
index 00000000..0f0142f8
--- /dev/null
+++ b/include/Save/SaveItemManager.hpp
@@ -0,0 +1,37 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "../Item/Item.hpp"
+
+struct SaveItemManager {
+ /* 00 */ ItemFlags itemFlags;
+ /* 10 */ u32 salvagedTreasureFlags;
+ /* 14 */ ShipPartPricesShown shipPartPricesShown;
+ /* 20 */ u32 treasurePriceShownFlags[CEIL_DIV(Treasure_COUNT, 32)];
+ /* 24 */ u8 equippedShipParts[ShipPart_COUNT];
+ /* 2c */ s8 shipParts[ShipPart_COUNT][ShipType_COUNT];
+ /* 74 */ s8 treasure[Treasure_COUNT];
+ /* 7c */ unk8 unk_7c[4];
+ /* 80 */ u16 hourglassSeconds;
+ /* 82 */ u16 unk_82[6];
+ /* 8e */ u16 numRupees;
+ /* 90 */ unk8 unk_90;
+ /* 91 */ unk8 unk_91;
+ /* 92 */ unk8 unk_92;
+ /* 93 */ u8 numBombs;
+ /* 94 */ u8 numBombchus;
+ /* 95 */ u8 numArrows;
+ /* 96 */ s8 equippedItem;
+ /* 97 */ Potion potions[MAX_POTIONS];
+ /* 99 */ u8 numGems[Gem_COUNT];
+ /* 9c */ u8 quiverSize;
+ /* 9d */ u8 bombBagSize;
+ /* 9e */ u8 bombchuBagSize;
+ /* 9f */ u8 unk_9f[6];
+ /* a5 */ u8 equippedFairy;
+ /* a6 */
+
+ SaveItemManager();
+};
diff --git a/include/global.h b/include/global.h
index 617f672f..593c720b 100644
--- a/include/global.h
+++ b/include/global.h
@@ -1,8 +1,6 @@
#ifndef PH_GLOBAL_H
#define PH_GLOBAL_H
-#define NULL 0
-
#define GET_FLAG(arr, pos) (((1 << ((pos) & 0x1f)) & (arr)[((u32) (pos)) >> 5]) != 0)
#define SET_FLAG(arr, pos) ((arr)[((u32) (pos)) >> 5] |= 1 << ((pos) & 0x1f))
#define RESET_FLAG(arr, pos) ((arr)[((u32) (pos)) >> 5] &= ~(1 << ((pos) & 0x1f)))
diff --git a/include/types.h b/include/types.h
index 0dd5ecf5..03e8352f 100644
--- a/include/types.h
+++ b/include/types.h
@@ -1,6 +1,8 @@
#ifndef PH_TYPES_H
#define PH_TYPES_H
+#include <stddef.h>
+
typedef unsigned long long u64;
typedef unsigned int u32;
typedef unsigned short u16;