Merge pull request #36 from Yanis42/match_actor_rupee

Match ``14_Land/Actor/ActorRupee.cpp`` (79%)
This commit is contained in:
Aetias
2024-10-20 17:03:41 +02:00
committed by GitHub
21 changed files with 437 additions and 58 deletions
+1 -1
View File
@@ -73,7 +73,7 @@ data_027e06d8 kind:bss addr:0x27e06d8
data_027e06e4 kind:bss addr:0x27e06e4
data_027e0718 kind:bss addr:0x27e0718
data_027e071c kind:bss addr:0x27e071c
data_027e0764 kind:bss addr:0x27e0764
gRandom kind:bss addr:0x27e0764
data_027e077c kind:bss addr:0x27e077c
data_027e080c kind:bss addr:0x27e080c
data_027e081c kind:bss addr:0x27e081c
+5 -5
View File
@@ -143,7 +143,7 @@ func_ov000_02079f3c kind:function(thumb,size=0x20) addr:0x2079f3c
func_ov000_02079f5c kind:function(thumb,size=0xa0) addr:0x2079f5c
func_ov000_02079ffc kind:function(thumb,size=0x3c) addr:0x2079ffc
func_ov000_0207a038 kind:function(thumb,size=0x104) addr:0x207a038
func_ov000_0207a13c kind:function(arm,size=0x4c) addr:0x207a13c
_ZN19Actor_UnkStruct_012C1Ev kind:function(arm,size=0x4c) addr:0x207a13c
_ZN19Actor_UnkStruct_0a4C1Eiiii kind:function(thumb,size=0x1c) addr:0x207a188
func_ov000_0207a1a4 kind:function(arm,size=0x24) addr:0x207a1a4
func_ov000_0207a1c8 kind:function(arm,size=0xcc) addr:0x207a1c8
@@ -619,7 +619,7 @@ _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_i kind:function(arm,size=0x4c) add
_ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083f44
_ZN10MapManager16MapData_vfunc_6cEv kind:function(arm,size=0x18) addr:0x2083f80
_ZN10MapManager16MapData_vfunc_70Ev kind:function(arm,size=0x18) addr:0x2083f98
_ZN10MapManager18func_ov00_02083fb0EiPS_i kind:function(arm,size=0x74) addr:0x2083fb0
_ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083fb0
_ZN10MapManager18func_ov00_02084024EiP4AABB kind:function(arm,size=0x64) addr:0x2084024
_ZN10MapManager16MapData_vfunc_54Ev kind:function(arm,size=0x18) addr:0x2084088
_ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x20840a0
@@ -2147,7 +2147,7 @@ _ZN11ItemManager8GiveItemEi kind:function(thumb,size=0x59c) addr:0x20adcdc
_ZN11ItemManager13GiveEquipItemEit kind:function(thumb,size=0x48) addr:0x20ae278
_ZN11ItemManager13UnequipPotionEv kind:function(thumb,size=0x14) addr:0x20ae2c0
_ZNK11ItemManager12GetMaxRupeesEv kind:function(arm,size=0xc) addr:0x20ae2d4
_ZN11ItemManager10GiveRupeesEsb kind:function(arm,size=0x70) addr:0x20ae2e0
_ZN11ItemManager10GiveRupeesEib kind:function(arm,size=0x70) addr:0x20ae2e0
_ZNK11ItemManager10GetNumKeysEv kind:function(arm,size=0x18) addr:0x20ae350
_ZN11ItemManager8GiveKeysEj kind:function(thumb,size=0x28) addr:0x20ae368
_ZNK11ItemManager15GetEquippedItemEv kind:function(arm,size=0x18) addr:0x20ae390
@@ -2577,7 +2577,7 @@ func_ov000_020bcc78 kind:function(arm,size=0x50) addr:0x20bcc78
func_ov000_020bccc8 kind:function(arm,size=0xf0) addr:0x20bccc8
func_ov000_020bcdb8 kind:function(arm,size=0x34) addr:0x20bcdb8
func_ov000_020bcdec kind:function(arm,size=0x5c) addr:0x20bcdec
func_ov000_020bce48 kind:function(arm,size=0x80) addr:0x20bce48
_ZN14PlayerLinkBase18func_ov00_020bce48Ei kind:function(arm,size=0x80) addr:0x20bce48
func_ov000_020bcec8 kind:function(arm,size=0x34) addr:0x20bcec8
func_ov000_020bcefc kind:function(arm,size=0x30) addr:0x20bcefc
func_ov000_020bcf2c kind:function(arm,size=0x24) addr:0x20bcf2c
@@ -2920,7 +2920,7 @@ func_ov000_020c56d8 kind:function(arm,size=0x9c) addr:0x20c56d8
func_ov000_020c5774 kind:function(arm,size=0x88) addr:0x20c5774
func_ov000_020c57fc kind:function(arm,size=0x128) addr:0x20c57fc
func_ov000_020c5924 kind:function(arm,size=0x100) addr:0x20c5924
func_ov000_020c5a24 kind:function(arm,size=0x38) addr:0x20c5a24
_Z13GetRupeeValuej kind:function(arm,size=0x38) addr:0x20c5a24
func_ov000_020c5a5c kind:function(arm,size=0xd8) addr:0x20c5a5c
func_ov000_020c5b34 kind:function(arm,size=0xb8) addr:0x20c5b34
func_ov000_020c5bec kind:function(arm,size=0x40) addr:0x20c5bec
+1 -1
View File
@@ -3214,7 +3214,7 @@ from:0x0213ae80 kind:arm_call to:0x0202e9dc module:main
from:0x0213ae8c kind:arm_call to:0x0213ae98 module:overlay(14)
from:0x0213ae94 kind:load to:0x027e0fe0 module:dtcm
from:0x0213aea0 kind:arm_call to:0x020c1554 module:overlay(0)
from:0x0213aec8 kind:load to:0x021589e4 module:overlay(14)
from:0x0213aec8 kind:load to:0x021589dc add:8 module:overlay(14)
from:0x0213aee0 kind:arm_call to:0x0213b70c module:overlay(14)
from:0x0213af70 kind:arm_call to:0x0213b204 module:overlay(14)
from:0x0213afac kind:arm_call to:0x0213b204 module:overlay(14)
+7 -5
View File
@@ -783,7 +783,7 @@ func_ov014_0213ae00 kind:function(arm,size=0x20) addr:0x213ae00
func_ov014_0213ae20 kind:function(arm,size=0x28) addr:0x213ae20
func_ov014_0213ae48 kind:function(arm,size=0x20) addr:0x213ae48
_ZN10ActorRupee6CreateEv kind:function(arm,size=0x30) addr:0x213ae68
_ZN10ActorRupeeC2Ev kind:function(arm,size=0x34) addr:0x213ae98
_ZN10ActorRupeeC1Ev kind:function(arm,size=0x34) addr:0x213ae98
_ZN10ActorRupee8vfunc_08Ev kind:function(arm,size=0x240) addr:0x213aecc
_ZN10ActorRupee8vfunc_60Ev kind:function(arm,size=0x10) addr:0x213b10c
_ZN10ActorRupee8vfunc_64Ev kind:function(arm,size=0x4) addr:0x213b11c
@@ -793,9 +793,9 @@ _ZN10ActorRupee18func_ov14_0213b204Ei kind:function(arm,size=0x50) addr:0x213b20
_ZN10ActorRupee6UpdateEb kind:function(arm,size=0x2c8) addr:0x213b254
_ZN10ActorRupee8vfunc_14Ej kind:function(arm,size=0x38) addr:0x213b51c
_ZN10ActorRupee8vfunc_18Ej kind:function(arm,size=0x38) addr:0x213b554
_ZN10ActorRupee8vfunc_20Ei kind:function(arm,size=0x68) addr:0x213b58c
_ZN10ActorRupee8vfunc_20Eb kind:function(arm,size=0x68) addr:0x213b58c
_ZN10ActorRupee18func_ov14_0213b5f4EjiP5Vec3pb kind:function(arm,size=0xb0) addr:0x213b5f4
_ZN10ActorRupee18func_ov14_0213b6a4EjPv kind:function(arm,size=0x68) addr:0x213b6a4
_ZN10ActorRupee18func_ov14_0213b6a4EjP19Actor_UnkStruct_012 kind:function(arm,size=0x68) addr:0x213b6a4
_ZN10ActorRupee18func_ov14_0213b70cEj kind:function(arm,size=0x3c) addr:0x213b70c
_ZN10ActorRupeeD0Ev kind:function(arm,size=0x1c) addr:0x213b748
_ZN10ActorRupeeD2Ev kind:function(arm,size=0x14) addr:0x213b764
@@ -1684,7 +1684,7 @@ func_ov014_0215507c kind:function(arm,size=0x40) addr:0x215507c
func_ov014_021550bc kind:function(arm,size=0x40) addr:0x21550bc
func_ov014_021550fc kind:function(arm,size=0x40) addr:0x21550fc
func_ov014_0215513c kind:function(arm,size=0x40) addr:0x215513c
func_ov014_0215517c kind:function(arm,size=0x5c) addr:0x215517c
__sinit_ActorRupee.cpp kind:function(arm,size=0x5c) addr:0x215517c
func_ov014_021551d8 kind:function(arm,size=0x40) addr:0x21551d8
func_ov014_02155218 kind:function(arm,size=0x38) addr:0x2155218
func_ov014_02155250 kind:function(arm,size=0x3c) addr:0x2155250
@@ -1902,7 +1902,9 @@ data_ov014_021589a8 kind:data(any) addr:0x21589a8
data_ov014_021589ac kind:data(any) addr:0x21589ac
data_ov014_021589b0 kind:data(any) addr:0x21589b0
data_ov014_021589b4 kind:data(any) addr:0x21589b4
_ZTV10ActorRupee kind:data(any) addr:0x21589e4
data_ov014_021589d4 kind:data(any) addr:0x21589d4
data_ov014_021589d8 kind:data(any) addr:0x21589d8
_ZTV10ActorRupee kind:data(any) addr:0x21589dc
data_ov014_02158aa0 kind:data(any) addr:0x2158aa0
data_ov014_02158b60 kind:data(any) addr:0x2158b60
data_ov014_02158b64 kind:data(any) addr:0x2158b64
+1 -1
View File
@@ -73,7 +73,7 @@ data_027e06d8 kind:bss addr:0x27e06d8
data_027e06e4 kind:bss addr:0x27e06e4
data_027e0718 kind:bss addr:0x27e0718
data_027e071c kind:bss addr:0x27e071c
data_027e0764 kind:bss addr:0x27e0764
gRandom kind:bss addr:0x27e0764
data_027e077c kind:bss addr:0x27e077c
data_027e080c kind:bss addr:0x27e080c
data_027e081c kind:bss addr:0x27e081c
+5 -5
View File
@@ -143,7 +143,7 @@ func_ov000_02079f3c kind:function(thumb,size=0x20) addr:0x2079edc
func_ov000_02079f5c kind:function(thumb,size=0xa0) addr:0x2079efc
func_ov000_02079ffc kind:function(thumb,size=0x3c) addr:0x2079f9c
func_ov000_0207a038 kind:function(thumb,size=0x104) addr:0x2079fd8
func_ov000_0207a13c kind:function(arm,size=0x4c) addr:0x207a0dc
_ZN19Actor_UnkStruct_012C1Ev kind:function(arm,size=0x4c) addr:0x207a0dc
_ZN19Actor_UnkStruct_0a4C1Eiiii kind:function(thumb,size=0x1c) addr:0x207a128
func_ov000_0207a1a4 kind:function(arm,size=0x24) addr:0x207a144
func_ov000_0207a1c8 kind:function(arm,size=0xcc) addr:0x207a168
@@ -619,7 +619,7 @@ _ZN10MapManager18func_ov00_02083ef8EP5Vec3pS1_i kind:function(arm,size=0x4c) add
_ZN10MapManager18func_ov00_02083f44EP5Vec3p kind:function(arm,size=0x3c) addr:0x2083ee4
_ZN10MapManager16MapData_vfunc_6cEv kind:function(arm,size=0x18) addr:0x2083f20
_ZN10MapManager16MapData_vfunc_70Ev kind:function(arm,size=0x18) addr:0x2083f38
_ZN10MapManager18func_ov00_02083fb0EiPS_i kind:function(arm,size=0x74) addr:0x2083f50
_ZN10MapManager18func_ov00_02083fb0EPjPS_P5Vec3p kind:function(arm,size=0x74) addr:0x2083f50
_ZN10MapManager18func_ov00_02084024EiP4AABB kind:function(arm,size=0x64) addr:0x2083fc4
_ZN10MapManager16MapData_vfunc_54Ev kind:function(arm,size=0x18) addr:0x2084028
_ZN10MapManager18func_ov00_020840a0Ecci kind:function(arm,size=0x24) addr:0x2084040
@@ -2147,7 +2147,7 @@ _ZN11ItemManager8GiveItemEi kind:function(thumb,size=0x59c) addr:0x20adc7c
_ZN11ItemManager13GiveEquipItemEit kind:function(thumb,size=0x48) addr:0x20ae218
_ZN11ItemManager13UnequipPotionEv kind:function(thumb,size=0x14) addr:0x20ae260
_ZNK11ItemManager12GetMaxRupeesEv kind:function(arm,size=0xc) addr:0x20ae274
_ZN11ItemManager10GiveRupeesEsb kind:function(arm,size=0x70) addr:0x20ae280
_ZN11ItemManager10GiveRupeesEib kind:function(arm,size=0x70) addr:0x20ae280
_ZNK11ItemManager10GetNumKeysEv kind:function(arm,size=0x18) addr:0x20ae2f0
_ZN11ItemManager8GiveKeysEj kind:function(thumb,size=0x28) addr:0x20ae308
_ZNK11ItemManager15GetEquippedItemEv kind:function(arm,size=0x18) addr:0x20ae330
@@ -2577,7 +2577,7 @@ func_ov000_020bcc78 kind:function(arm,size=0x50) addr:0x20bcc18
func_ov000_020bccc8 kind:function(arm,size=0xf0) addr:0x20bcc68
func_ov000_020bcdb8 kind:function(arm,size=0x34) addr:0x20bcd58
func_ov000_020bcdec kind:function(arm,size=0x5c) addr:0x20bcd8c
func_ov000_020bce48 kind:function(arm,size=0x80) addr:0x20bcde8
_ZN14PlayerLinkBase18func_ov00_020bce48Ei kind:function(arm,size=0x80) addr:0x20bcde8
func_ov000_020bcec8 kind:function(arm,size=0x34) addr:0x20bce68
func_ov000_020bcefc kind:function(arm,size=0x30) addr:0x20bce9c
func_ov000_020bcf2c kind:function(arm,size=0x24) addr:0x20bcecc
@@ -2920,7 +2920,7 @@ func_ov000_020c56d8 kind:function(arm,size=0x9c) addr:0x20c5678
func_ov000_020c5774 kind:function(arm,size=0x88) addr:0x20c5714
func_ov000_020c57fc kind:function(arm,size=0x128) addr:0x20c579c
func_ov000_020c5924 kind:function(arm,size=0x100) addr:0x20c58c4
func_ov000_020c5a24 kind:function(arm,size=0x38) addr:0x20c59c4
_Z13GetRupeeValuej kind:function(arm,size=0x38) addr:0x20c59c4
func_ov000_020c5a5c kind:function(arm,size=0xd8) addr:0x20c59fc
func_ov000_020c5b34 kind:function(arm,size=0xb8) addr:0x20c5ad4
func_ov000_020c5bec kind:function(arm,size=0x40) addr:0x20c5b8c
+1 -1
View File
@@ -3214,7 +3214,7 @@ from:0x0213addc kind:arm_call to:0x0202e9d8 module:main
from:0x0213ade8 kind:arm_call to:0x0213adf4 module:overlay(14)
from:0x0213adf0 kind:load to:0x027e0fe0 module:dtcm
from:0x0213adfc kind:arm_call to:0x020c14f4 module:overlay(0)
from:0x0213ae24 kind:load to:0x02158944 module:overlay(14)
from:0x0213ae24 kind:load to:0x0215893c add:8 module:overlay(14)
from:0x0213ae3c kind:arm_call to:0x0213b668 module:overlay(14)
from:0x0213aecc kind:arm_call to:0x0213b160 module:overlay(14)
from:0x0213af08 kind:arm_call to:0x0213b160 module:overlay(14)
+7 -5
View File
@@ -783,7 +783,7 @@ func_ov014_0213ae00 kind:function(arm,size=0x20) addr:0x213ad5c
func_ov014_0213ae20 kind:function(arm,size=0x28) addr:0x213ad7c
func_ov014_0213ae48 kind:function(arm,size=0x20) addr:0x213ada4
_ZN10ActorRupee6CreateEv kind:function(arm,size=0x30) addr:0x213adc4
_ZN10ActorRupeeC2Ev kind:function(arm,size=0x34) addr:0x213adf4
_ZN10ActorRupeeC1Ev kind:function(arm,size=0x34) addr:0x213adf4
_ZN10ActorRupee8vfunc_08Ev kind:function(arm,size=0x240) addr:0x213ae28
_ZN10ActorRupee8vfunc_60Ev kind:function(arm,size=0x10) addr:0x213b068
_ZN10ActorRupee8vfunc_64Ev kind:function(arm,size=0x4) addr:0x213b078
@@ -793,9 +793,9 @@ _ZN10ActorRupee18func_ov14_0213b204Ei kind:function(arm,size=0x50) addr:0x213b16
_ZN10ActorRupee6UpdateEb kind:function(arm,size=0x2c8) addr:0x213b1b0
_ZN10ActorRupee8vfunc_14Ej kind:function(arm,size=0x38) addr:0x213b478
_ZN10ActorRupee8vfunc_18Ej kind:function(arm,size=0x38) addr:0x213b4b0
_ZN10ActorRupee8vfunc_20Ei kind:function(arm,size=0x68) addr:0x213b4e8
_ZN10ActorRupee8vfunc_20Eb kind:function(arm,size=0x68) addr:0x213b4e8
_ZN10ActorRupee18func_ov14_0213b5f4EjiP5Vec3pb kind:function(arm,size=0xb0) addr:0x213b550
_ZN10ActorRupee18func_ov14_0213b6a4EjPv kind:function(arm,size=0x68) addr:0x213b600
_ZN10ActorRupee18func_ov14_0213b6a4EjP19Actor_UnkStruct_012 kind:function(arm,size=0x68) addr:0x213b600
_ZN10ActorRupee18func_ov14_0213b70cEj kind:function(arm,size=0x3c) addr:0x213b668
_ZN10ActorRupeeD0Ev kind:function(arm,size=0x1c) addr:0x213b6a4
_ZN10ActorRupeeD2Ev kind:function(arm,size=0x14) addr:0x213b6c0
@@ -1684,7 +1684,7 @@ func_ov014_0215507c kind:function(arm,size=0x40) addr:0x2154fd8
func_ov014_021550bc kind:function(arm,size=0x40) addr:0x2155018
func_ov014_021550fc kind:function(arm,size=0x40) addr:0x2155058
func_ov014_0215513c kind:function(arm,size=0x40) addr:0x2155098
func_ov014_0215517c kind:function(arm,size=0x5c) addr:0x21550d8
__sinit_ActorRupee.cpp kind:function(arm,size=0x5c) addr:0x21550d8
func_ov014_021551d8 kind:function(arm,size=0x40) addr:0x2155134
func_ov014_02155218 kind:function(arm,size=0x38) addr:0x2155174
func_ov014_02155250 kind:function(arm,size=0x3c) addr:0x21551ac
@@ -1902,7 +1902,9 @@ data_ov014_021589a8 kind:data(any) addr:0x2158908
data_ov014_021589ac kind:data(any) addr:0x215890c
data_ov014_021589b0 kind:data(any) addr:0x2158910
data_ov014_021589b4 kind:data(any) addr:0x2158914
_ZTV10ActorRupee kind:data(any) addr:0x2158944
data_ov014_021589d4 kind:data(any) addr:0x2158934
data_ov014_021589d8 kind:data(any) addr:0x2158938
_ZTV10ActorRupee kind:data(any) addr:0x215893c
data_ov014_02158aa0 kind:data(any) addr:0x2158a00
data_ov014_02158b60 kind:data(any) addr:0x2158ac0
data_ov014_02158b64 kind:data(any) addr:0x2158ac4
+25 -6
View File
@@ -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();
+5 -4
View File
@@ -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);
};
+12
View File
@@ -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)();
+2 -1
View File
@@ -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,
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -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);
+1
View File
@@ -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();
+22
View File
@@ -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;
+2
View File
@@ -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)
+3 -1
View File
@@ -187,7 +187,7 @@ ARM void Actor::vfunc_1c(u16 *param1) {
}
}
ARM void Actor::vfunc_20(s32 param1) {}
ARM void Actor::vfunc_20(bool param1) {}
ARM void Actor::SetUnk_129(bool value) {
if (mUnk_128) mUnk_129 = value;
@@ -957,3 +957,5 @@ Actor_UnkStruct_09c::Actor_UnkStruct_09c() {
mUnk_3 = 0;
mUnk_4 = 0;
}
Actor_UnkStruct_012::Actor_UnkStruct_012() {}
+4 -4
View File
@@ -379,7 +379,7 @@ extern "C" ItemModel *func_ov00_02079ffc(void *, const char *modelName, const ch
extern "C" ItemModel *LoadTreasureItemFanfare(ItemModel **, s32 treasureType, bool, bool);
static char *sDefaultItemModel = "key";
static char *sItemModelNames[70] = {
[ItemId_None] = "key",
[ItemId_Nothing] = "key",
[ItemId_SmallKey] = "key",
[ItemId_GreenRupee] = "rupee_g",
[ItemId_OshusSword] = "swA",
@@ -794,7 +794,7 @@ THUMB void ItemManager::GiveItem(ItemId id) {
this->GiveRupees(-50, true);
} break;
case ItemId_None: break;
case ItemId_Nothing: break;
case ItemId_Unk_5: break;
case ItemId_Unk_16: break;
case ItemId_Unk_131: break;
@@ -839,7 +839,7 @@ ARM s32 ItemManager::GetMaxRupees() const {
extern void *data_027e103c;
extern "C" s32 func_ov00_020cf374(void *param1, bool param2);
extern "C" void func_ov05_02104004(void *param1);
ARM void ItemManager::GiveRupees(s16 amount, bool param2) {
ARM void ItemManager::GiveRupees(s32 amount, bool param2) {
s32 newRupees = mNumRupees + amount;
if (newRupees > this->GetMaxRupees()) {
newRupees = this->GetMaxRupees();
@@ -1020,7 +1020,7 @@ THUMB void ItemManager::PlayItemFanfareSfx(ItemId item) {
sfx = SfxId_Fanfare_Rupoor;
} break;
case ItemId_None:
case ItemId_Nothing:
case ItemId_HerosNewClothes: {
sfx = SfxId_Fanfare_Nothing_2;
} break;
+1 -1
View File
@@ -131,7 +131,7 @@ s32 MapManager::func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, unk32 param_4
void MapManager::func_ov00_02083f44(Vec3p *param_2) {}
unk8 MapManager::MapData_vfunc_6c() {}
unk8 MapManager::MapData_vfunc_70() {}
unk8 MapManager::func_ov00_02083fb0(unk32 param_1, MapManager *param_2, unk32 param_3) {}
unk8 MapManager::func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3) {}
void MapManager::func_ov00_02084024(unk32 param_2, AABB *param_3) {}
unk8 MapManager::MapData_vfunc_54() {}
unk8 MapManager::func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4) {}
+330 -15
View File
@@ -1,20 +1,335 @@
#include "Actor/ActorRupee.hpp"
#include "Item/ItemManager.hpp"
#include "Map/MapManager.hpp"
#include "Player/PlayerLinkBase.hpp"
#include "System/Random.hpp"
ActorType ActorRupee::gType;
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);
}
u16 GetRupeeValue(RupeeId id);
char *gShipParts[8] = {"anc", "bow", "hul", "can", "dco", "pdl", "fnl", "brg"};
extern u32 *data_ov014_021589d8;
extern u32 data_ov000_020e9370[];
extern u32 data_ov000_020eec9c[];
extern u32 **data_027e0fe0[];
ActorType ActorRupee::gType = ActorType(ActorTypeId_Rupee, (ActorCreateFunc) ActorRupee::Create, NULL);
#pragma section force_data begin
ActorType_UnkClass data_ov014_021589f4 = ActorType_UnkClass(FLOAT_TO_Q21(0.4662), FLOAT_TO_Q19(0.4661));
#pragma section force_data end
ActorRupee *ActorRupee::Create() {
ActorRupee *newRupee = new(*data_027e0fe0[0], 4) ActorRupee();
return newRupee;
}
ActorRupee::ActorRupee() {
mRupeeId = 8;
mUnk_15c = 0;
}
// https://decomp.me/scratch/1qjCc
bool ActorRupee::vfunc_08() {
u32 dVar5;
u32 iVar7;
mRupeeId = mUnk_020.mUnk_00[0];
dVar5 = func_ov14_0213b70c(mRupeeId) ? *data_ov014_021589d8 : FLOAT_TO_Q20(0.666);
iVar7 = (s32) dVar5 >> 1;
mHitbox.pos.x = 0;
mHitbox.pos.y = iVar7;
mHitbox.pos.z = 0;
mHitbox.size = iVar7;
mUnk_08c.pos = mHitbox.pos;
mUnk_08c.size = mHitbox.size;
mUnk_0a4.mUnk_04.x = 0;
mUnk_0a4.mUnk_04.y = iVar7;
mUnk_0a4.mUnk_04.z = 0;
mUnk_0a4.mUnk_10 = iVar7 + FLOAT_TO_Q20(1.0);
mUnk_09c.mUnk_0 &= 0xFFFFFF4F;
mUnk_09c.mUnk_3 = 1;
mMaxFall = mUnk_08c.size - 1;
if (mUnk_03c >= 0) {
func_ov14_0213b204(1);
} else {
switch (mUnk_144) {
case 0:
mVel.x = 0;
mVel.y = 0;
mVel.z = 0;
func_ov14_0213b204(0);
break;
case 1:
q20 x = gRandom->Next(FLOAT_TO_Q20(0.1335));
q20 y = gRandom->Next(FLOAT_TO_Q20(0.2));
q20 z = gRandom->Next(FLOAT_TO_Q20(0.1335));
mVel.x = x - FLOAT_TO_Q20(0.0666);
mVel.y = y + FLOAT_TO_Q20(0.3333);
mVel.z = z - FLOAT_TO_Q20(0.0666);
func_ov14_0213b204(0);
break;
case 2:
mVel.x = 0;
mVel.y = FLOAT_TO_Q20(0.5);
mVel.z = 0;
func_ov14_0213b204(0);
break;
case 3: func_ov14_0213b204(5); break;
}
}
return true;
}
bool ActorRupee::vfunc_60() {
return func_ov14_0213b70c(mRupeeId);
}
ActorRupee *ActorRupee::Create() {}
ActorRupee::ActorRupee() {}
bool ActorRupee::vfunc_08() {}
bool ActorRupee::vfunc_60() {}
void ActorRupee::vfunc_64() {}
void ActorRupee::Move() {}
ItemId ActorRupee::GetRupeeCutsceneItemId() {}
void ActorRupee::func_ov14_0213b204(unk32 param1) {}
void ActorRupee::Update(bool param1) {}
void ActorRupee::vfunc_14(u32 param1) {}
void ActorRupee::vfunc_18(u32 param1) {}
void ActorRupee::vfunc_20(s32 param1) {}
void ActorRupee::func_ov14_0213b5f4(RupeeId id, unk32 param2, Vec3p *param3, bool param4) {}
void ActorRupee::func_ov14_0213b6a4(RupeeId id, void *param2) {}
bool ActorRupee::func_ov14_0213b70c(RupeeId id) {}
void ActorRupee::Move() {
s32 size;
ApplyGravity();
Vec3p_Add(&mPos, &mVel, &mPos); // Vec3p::Add()
mUnk_09c.mUnk_3 = 1;
size = mMaxFall = mUnk_08c.size - 1;
size += mUnk_014.y;
if (size < mPos.y) {
mUnk_09c.mUnk_0 = 0x49;
} else {
mUnk_09c.mUnk_0 = 0xcb;
}
if (this->func_01fffd04(0)) {
mVel.x = 0;
mVel.z = 0;
}
}
ItemId ActorRupee::GetRupeeCutsceneItemId() {
switch (mRupeeId) {
case RupeeId_Green: return ItemId_None;
case RupeeId_Blue: return ItemId_None;
case RupeeId_Red: return ItemId_None;
case RupeeId_BigGreen: return ItemId_BigGreenRupee;
case RupeeId_BigRed: return ItemId_BigRedRupee;
case RupeeId_Gold: return ItemId_GoldRupee;
case RupeeId_Rupoor10: return ItemId_Rupoor10;
case RupeeId_Rupoor50: return ItemId_Rupoor50;
default: break;
}
return ItemId_None;
}
void ActorRupee::func_ov14_0213b204(unk32 param1) {
switch (param1) {
case 0: mVisible = true; break;
case 1:
case 2:
case 3:
case 4:
case 5:
mVel.x = 0;
mVel.y = 0;
mVel.z = 0;
break;
}
mActiveFrames = 0;
mUnk_130 = param1;
}
void ActorRupee::Update(bool param1) {
ItemId cutsceneItemId;
s32 uVar3;
Vec3p local_1c;
u32 local_20;
u16 rupeeValue;
mPrevPos = mPos;
IncreaseActiveFrames();
if ((mUnk_130 != 3) && (++mUnk_15c >= 6) && CollidesWithPlayer(PlayerCollide_PickupFlags)) {
cutsceneItemId = GetRupeeCutsceneItemId();
if (cutsceneItemId >= 0) {
if (gPlayerLink->func_ov00_020bce48(cutsceneItemId)) {
Kill();
} else {
func_ov14_0213b204(3);
}
} else {
ItemManager *pItemMgr = gItemManager;
rupeeValue = GetRupeeValue(mRupeeId);
pItemMgr->GiveRupees(rupeeValue, false);
uVar3 = -1;
switch (mRupeeId) {
case RupeeId_Green: uVar3 = 0xfa; break;
case RupeeId_Blue: uVar3 = 0xfb; break;
case RupeeId_Red: uVar3 = 0xfc; break;
default: break;
}
func_ov000_020d7ad4(data_ov000_020eec9c, uVar3);
Kill();
}
}
if (!(mUnk_130 != 0 && mUnk_130 != 1 && mUnk_130 != 2)) {
if (func_ov00_020c2c0c()) {
func_ov14_0213b204(4);
} else if (func_ov00_020c2d54()) {
func_ov14_0213b204(5);
}
}
switch (mUnk_130) {
case 0:
Move();
if (mUnk_111) {
local_1c = mPos;
MapManager::func_ov00_02083fb0(&local_20, gMapManager, &local_1c);
if (((local_20 >> 5) & 3) == 2) {
Kill();
} else {
func_ov14_0213b204(1);
}
}
break;
case 3:
PlayerLinkBase *pLink = gPlayerLink;
if (pLink->func_ov00_020bce48(GetRupeeCutsceneItemId())) {
Kill();
}
break;
case 1:
if (param1) {
mActiveFrames = 0;
}
if ((mUnk_03c < 0) && (mActiveFrames >= 180)) {
func_ov14_0213b204(2);
}
break;
case 2:
if (param1) {
mActiveFrames = 0;
}
if (mActiveFrames >= 60) {
Kill();
}
break;
case 4:
if (!func_ov00_020c2c70()) {
func_ov14_0213b204(1);
}
break;
case 5:
if (!func_ov00_020c2de4()) {
func_ov14_0213b204(1);
}
break;
default: break;
}
KillInBounds();
}
void ActorRupee::vfunc_14(u32 param1) {
if (func_ov00_020c313c(param1)) {
Update(false);
}
func_ov000_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos);
}
void ActorRupee::vfunc_18(u32 param1) {
if (func_ov00_020c313c(param1)) {
Update(true);
}
func_ov000_0207a1c8(&mUnk_0a4.mUnk_00, param1, &mPos);
}
#define VFUNC20_COND (param1 ? mUnk_0a4.mUnk_01 : mUnk_0a4.mUnk_00)
void ActorRupee::vfunc_20(bool param1) {
if (VFUNC20_COND && !(mUnk_130 == 2 && mActiveFrames % 8 < 4) && VFUNC20_COND) {
func_ov14_0213b5f4(mRupeeId, param1, &mPos, true);
}
}
void ActorRupee::func_ov14_0213b5f4(RupeeId id, unk32 param2, Vec3p *param3, bool param4) {
Actor_UnkStruct_012 unk_class;
static const u32 data_ov014_02153e28[] = {
// sRupeePalettes
0x9, // RupeeId_Green
0xA, // RupeeId_Blue
0x8, // RupeeId_Red
0x9, // RupeeId_BigGreen
0x8, // RupeeId_BigRed
0xB, // RupeeId_Gold
0xC, // RupeeId_Rupoor10
0xC, // RupeeId_Rupoor50
};
func_ov14_0213b6a4(id, &unk_class);
func_0202bc38(param2, param3, data_ov014_02153e28[id], &unk_class, 0);
if (param4) {
u32 var = func_ov14_0213b70c(id) ? 0x4cd : 0x400;
func_ov005_02102c2c(&data_ov000_020e9370[0], 0, param3, var, var, 0, 0x1f, 0, 1, 1);
}
}
void ActorRupee::func_ov14_0213b6a4(RupeeId id, Actor_UnkStruct_012 *param2) {
param2->mUnk_04 = 3;
if (func_ov14_0213b70c(id)) {
param2->mUnk_08 = 2;
param2->mUnk_0c = 2;
param2->mUnk_14 = data_ov014_021589f4.unk_00;
param2->mUnk_18 = data_ov014_021589f4.unk_04;
} else {
param2->mUnk_08 = 2;
param2->mUnk_0c = 2;
param2->mUnk_14 = FLOAT_TO_Q21(0.333);
param2->mUnk_18 = FLOAT_TO_Q19(0.333);
}
}
bool ActorRupee::func_ov14_0213b70c(RupeeId id) {
switch (id) {
case RupeeId_BigGreen:
case RupeeId_BigRed:
case RupeeId_Gold:
case RupeeId_Rupoor50: return true;
default: break;
}
return false;
}
ActorRupee::~ActorRupee() {}