summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAetias <144526980+AetiasHax@users.noreply.github.com>2024-10-20 17:03:41 +0200
committerGitHub <noreply@github.com>2024-10-20 17:03:41 +0200
commitf4c5e4862419a14487575bf477118458c0e4a289 (patch)
tree5c3e2ab28324e232a3a7cca148deb15894ada19a /include
parent58837ca1fcb5a8ce1af3a977a2f71d08c2d583e2 (diff)
parent52e0ac185a5a3570e166ddfaddb4662863ed3d63 (diff)
Merge pull request #36 from Yanis42/match_actor_rupee
Match ``14_Land/Actor/ActorRupee.cpp`` (79%)
Diffstat (limited to 'include')
-rw-r--r--include/Actor/Actor.hpp31
-rw-r--r--include/Actor/ActorRupee.hpp9
-rw-r--r--include/Actor/ActorType.hpp12
-rw-r--r--include/Item/Item.hpp3
-rw-r--r--include/Item/ItemManager.hpp2
-rw-r--r--include/Map/MapManager.hpp2
-rw-r--r--include/Player/PlayerLinkBase.hpp1
-rw-r--r--include/System/Random.hpp22
-rw-r--r--include/lib/math.h2
9 files changed, 71 insertions, 13 deletions
diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp
index 8f9378d2..64402237 100644
--- a/include/Actor/Actor.hpp
+++ b/include/Actor/Actor.hpp
@@ -13,8 +13,25 @@
#include "Player/EquipBoomerang.hpp"
#include "System/SysNew.hpp"
+struct Actor_UnkStruct_012 {
+ /* 00 */ u16 mUnk_00;
+ /* 02 */ u8 mUnk_02;
+ /* 03 */ u8 mUnk_03;
+ /* 04 */ u32 mUnk_04;
+ /* 08 */ u32 mUnk_08;
+ /* 0c */ u32 mUnk_0c;
+ /* 10 */ u8 mUnk_10;
+ /* 11 */ u8 mUnk_11;
+ /* 12 */ u8 mUnk_12[0x2];
+ /* 14 */ u32 mUnk_14;
+ /* 18 */ u32 mUnk_18;
+ /* 1c */
+
+ Actor_UnkStruct_012();
+};
+
struct Actor_UnkStruct_020 {
- /* 00 */ unk16 mUnk_00[4];
+ /* 00 */ u16 mUnk_00[4];
/* 08 */ u8 mUnk_08[2];
/* 0a */ u8 mUnk_0a[2];
/* 0c */ unk8 mUnk_0c;
@@ -28,7 +45,7 @@ struct Actor_UnkStruct_020 {
};
struct Actor_UnkStruct_09c {
- /* 0 */ unk16 mUnk_0;
+ /* 0 */ u16 mUnk_0;
/* 2 */ unk8 mUnk_2;
/* 3 */ unk8 mUnk_3;
/* 4 */ unk32 mUnk_4;
@@ -40,8 +57,8 @@ struct Actor_UnkStruct_09c {
struct Actor_UnkStruct_0a4 {
/* 00 */ bool mUnk_00;
/* 01 */ bool mUnk_01;
- /* 01 */ bool mUnk_02;
- /* 01 */ bool mUnk_03;
+ /* 02 */ bool mUnk_02;
+ /* 03 */ bool mUnk_03;
/* 04 */ Vec3p mUnk_04;
/* 10 */ s32 mUnk_10;
/* 14 */
@@ -65,6 +82,8 @@ enum PlayerCollide_ {
PlayerCollide_Shield = 0x4,
PlayerCollide_Gongoron = 0x8,
PlayerCollide_Hammer = 0x10,
+
+ PlayerCollide_PickupFlags = PlayerCollide_Hammer | PlayerCollide_Gongoron | PlayerCollide_Sword | PlayerCollide_Player,
};
struct Knockback {
@@ -118,7 +137,7 @@ public:
/* 109 */ unk8 mUnk_109;
/* 10a */ unk8 mUnk_10a[0x6];
/* 110 */ unk8 mUnk_110;
- /* 111 */ unk8 mUnk_111;
+ /* 111 */ bool mUnk_111;
/* 112 */ unk8 mUnk_112;
/* 113 */ unk8 mUnk_113;
/* 114 */ unk8 mUnk_114;
@@ -159,7 +178,7 @@ public:
/* 14 */ virtual void vfunc_14(u32 param1);
/* 18 */ virtual void vfunc_18(u32 param1);
/* 1c */ virtual void vfunc_1c(u16 *param1);
- /* 20 */ virtual void vfunc_20(s32 param1);
+ /* 20 */ virtual void vfunc_20(bool param1);
/* 24 */ virtual void vfunc_24();
/* 28 */ virtual void vfunc_28();
/* 2c */ virtual s32 vfunc_2c();
diff --git a/include/Actor/ActorRupee.hpp b/include/Actor/ActorRupee.hpp
index c0618394..56519394 100644
--- a/include/Actor/ActorRupee.hpp
+++ b/include/Actor/ActorRupee.hpp
@@ -6,7 +6,8 @@
#include "Actor/Actor.hpp"
#include "Actor/ActorType.hpp"
-#include "Item/Item.hpp"
+#include "Item/ItemManager.hpp"
+#include "Player/PlayerLinkBase.hpp"
typedef u32 RupeeId;
enum RupeeId_ {
@@ -27,7 +28,7 @@ public:
/* 000 (base) */
/* 158 */ RupeeId mRupeeId;
- /* 15c */ unk16 mUnk_15c;
+ /* 15c */ u16 mUnk_15c;
/* 15e */ unk16 mUnk_15e;
/* 160 */
@@ -35,7 +36,7 @@ public:
/* 08 */ virtual bool vfunc_08() override;
/* 14 */ virtual void vfunc_14(u32 param1) override;
/* 18 */ virtual void vfunc_18(u32 param1) override;
- /* 20 */ virtual void vfunc_20(s32 param1) override;
+ /* 20 */ virtual void vfunc_20(bool param1) override;
/* 60 */ virtual bool vfunc_60() override;
/* 64 */ virtual void vfunc_64() override;
/* b4 */
@@ -47,6 +48,6 @@ public:
void func_ov14_0213b204(unk32 param1);
void Update(bool param1);
static void func_ov14_0213b5f4(RupeeId id, unk32 param2, Vec3p *param3, bool param4);
- static void func_ov14_0213b6a4(RupeeId id, void *param2);
+ static void func_ov14_0213b6a4(RupeeId id, Actor_UnkStruct_012 *param2);
static bool func_ov14_0213b70c(RupeeId id);
};
diff --git a/include/Actor/ActorType.hpp b/include/Actor/ActorType.hpp
index 76fb560d..4adc3a7a 100644
--- a/include/Actor/ActorType.hpp
+++ b/include/Actor/ActorType.hpp
@@ -126,6 +126,18 @@ enum ActorTypeId_ {
ActorTypeId_VLR0 = __ACTOR_TYPE_ID(V, L, R, 0),
};
+class ActorType_UnkClass {
+public:
+ u32 unk_00;
+ u32 unk_04;
+ u32 unk_08;
+ u32 unk_0C;
+ u32 unk_10;
+ ActorType_UnkClass(u32 unk_00, u32 unk_04) :
+ unk_00(unk_00),
+ unk_04(unk_04) {}
+};
+
class Actor;
typedef Actor *(*ActorCreateFunc)();
diff --git a/include/Item/Item.hpp b/include/Item/Item.hpp
index cc3b9777..1b67ada3 100644
--- a/include/Item/Item.hpp
+++ b/include/Item/Item.hpp
@@ -89,7 +89,8 @@ enum ItemFlag_ {
typedef s32 ItemId;
enum ItemId_ {
- /* 0x00 */ ItemId_None = 0,
+ /* -1 */ ItemId_None = -1,
+ /* 0x00 */ ItemId_Nothing = 0,
/* 0x01 */ ItemId_SmallKey = 1,
/* 0x02 */ ItemId_GreenRupee = 2,
/* 0x03 */ ItemId_OshusSword = 3,
diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp
index 1cc75738..ae5e8cad 100644
--- a/include/Item/ItemManager.hpp
+++ b/include/Item/ItemManager.hpp
@@ -314,7 +314,7 @@ public:
// Rupees
s32 GetMaxRupees() const;
- void GiveRupees(s16 amount, bool param2);
+ void GiveRupees(s32 amount, bool param2);
// Potion
void SetPotion(u32 index, Potion potion);
diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp
index 8df6e51e..4e969c5a 100644
--- a/include/Map/MapManager.hpp
+++ b/include/Map/MapManager.hpp
@@ -171,7 +171,7 @@ public:
void func_ov00_02083f44(Vec3p *param_2);
unk8 MapData_vfunc_6c();
unk8 MapData_vfunc_70();
- static unk8 func_ov00_02083fb0(unk32 param_1, MapManager *param_2, unk32 param_3);
+ static unk8 func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3);
void func_ov00_02084024(unk32 param_2, AABB *param_3);
unk8 MapData_vfunc_54();
unk8 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4);
diff --git a/include/Player/PlayerLinkBase.hpp b/include/Player/PlayerLinkBase.hpp
index 7d9c4b75..02cf3219 100644
--- a/include/Player/PlayerLinkBase.hpp
+++ b/include/Player/PlayerLinkBase.hpp
@@ -75,6 +75,7 @@ public:
bool func_ov00_020bbd80(s32 param1);
void func_ov00_020bc854(Vec3p *param1);
+ bool func_ov00_020bce48(ItemId cutsceneItemId); // PlayItemCutscene
bool func_ov00_020bd304();
bool GongoronCollidesWith(Cylinder *hitbox);
s32 GetGrabActorId();
diff --git a/include/System/Random.hpp b/include/System/Random.hpp
new file mode 100644
index 00000000..4506466d
--- /dev/null
+++ b/include/System/Random.hpp
@@ -0,0 +1,22 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+struct Random {
+ /* 00 */ u64 mRandomValue;
+ /* 08 */ u64 mFactor;
+ /* 10 */ u64 mAddend;
+ /* 18 */
+
+ /**
+ * Generate a random number from 0 (inclusive) to `max` (exclusive)
+ */
+ inline u32 Next(u32 max) {
+ mRandomValue = mAddend + mFactor * mRandomValue;
+ u64 result = (mRandomValue >> 32) * max;
+ return result >> 32;
+ }
+};
+
+extern Random *gRandom;
diff --git a/include/lib/math.h b/include/lib/math.h
index f11bd10e..f7204acc 100644
--- a/include/lib/math.h
+++ b/include/lib/math.h
@@ -9,7 +9,9 @@ typedef s32 q20;
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)