diff options
| author | Aetias <144526980+AetiasHax@users.noreply.github.com> | 2024-10-20 17:03:41 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-20 17:03:41 +0200 |
| commit | f4c5e4862419a14487575bf477118458c0e4a289 (patch) | |
| tree | 5c3e2ab28324e232a3a7cca148deb15894ada19a /include | |
| parent | 58837ca1fcb5a8ce1af3a977a2f71d08c2d583e2 (diff) | |
| parent | 52e0ac185a5a3570e166ddfaddb4662863ed3d63 (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.hpp | 31 | ||||
| -rw-r--r-- | include/Actor/ActorRupee.hpp | 9 | ||||
| -rw-r--r-- | include/Actor/ActorType.hpp | 12 | ||||
| -rw-r--r-- | include/Item/Item.hpp | 3 | ||||
| -rw-r--r-- | include/Item/ItemManager.hpp | 2 | ||||
| -rw-r--r-- | include/Map/MapManager.hpp | 2 | ||||
| -rw-r--r-- | include/Player/PlayerLinkBase.hpp | 1 | ||||
| -rw-r--r-- | include/System/Random.hpp | 22 | ||||
| -rw-r--r-- | include/lib/math.h | 2 |
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) |
