diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 91e423f4..11aae8bf 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -215,7 +215,7 @@ func_ov000_0207b90c kind:function(arm,size=0x7c) addr:0x0207b90c _ZN18UnkStruct_027e0dbc19func_ov000_0207b988Ei kind:function(thumb,size=0x40) addr:0x0207b988 _ZN18UnkStruct_027e0dbc19func_ov000_0207b9c8Ev kind:function(thumb,size=0x14) addr:0x0207b9c8 _ZN18UnkStruct_027e0dbc19func_ov000_0207b9dcEv kind:function(arm,size=0xb4) addr:0x0207b9dc -func_ov000_0207ba90 kind:function(thumb,size=0x4) addr:0x0207ba90 +_ZN18UnkStruct_027e0dbc9GetUnk_24Ev kind:function(thumb,size=0x4) addr:0x0207ba90 func_ov000_0207ba94 kind:function(thumb,size=0x20) addr:0x0207ba94 func_ov000_0207bab4 kind:function(arm,size=0x5c) addr:0x0207bab4 func_ov000_0207bb10 kind:function(arm,size=0x4) addr:0x0207bb10 @@ -696,7 +696,7 @@ func_ov000_0208708c kind:function(arm,size=0x14) addr:0x0208708c func_ov000_020870a0 kind:function(arm,size=0x24) addr:0x020870a0 func_ov000_020870c4 kind:function(arm,size=0xc) addr:0x020870c4 func_ov000_020870d0 kind:function(arm,size=0x19c) addr:0x020870d0 -func_ov000_0208726c kind:function(arm,size=0x7c) addr:0x0208726c +_ZN21UnkStruct_027e0f64_0419func_ov000_0208726cEi kind:function(arm,size=0x7c) addr:0x0208726c func_ov000_020872e8 kind:function(arm,size=0x50) addr:0x020872e8 func_ov000_02087338 kind:function(arm,size=0xc8) addr:0x02087338 func_ov000_02087400 kind:function(arm,size=0x184) addr:0x02087400 @@ -2752,7 +2752,7 @@ _ZN5Actor4DropEP5Vec3p kind:function(arm,size=0x38) addr:0x020c18c4 _ZN5Actor8vfunc_60Ev kind:function(arm,size=0x8) addr:0x020c18fc _ZN5Actor8vfunc_64Ev kind:function(arm,size=0x4) addr:0x020c1904 _ZN5Actor10SetUnk_11cEb kind:function(arm,size=0x8) addr:0x020c1908 -_ZN5Actor8vfunc_68Ev kind:function(arm,size=0x4) addr:0x020c1910 +_ZN5Actor8vfunc_68EiP18UnkStruct_020397f8 kind:function(arm,size=0x4) addr:0x020c1910 _ZN5Actor8vfunc_6cEv kind:function(arm,size=0x8) addr:0x020c1914 _ZN5Actor8vfunc_70Ev kind:function(arm,size=0x8) addr:0x020c191c _ZN5Actor8vfunc_74EP8ActorRef kind:function(arm,size=0x4) addr:0x020c1924 diff --git a/config/eur/arm9/overlays/ov014/symbols.txt b/config/eur/arm9/overlays/ov014/symbols.txt index 17f4d1bf..2d7d3ff0 100644 --- a/config/eur/arm9/overlays/ov014/symbols.txt +++ b/config/eur/arm9/overlays/ov014/symbols.txt @@ -1087,7 +1087,7 @@ _ZN18ActorCharacterBase8vfunc_84Ev kind:function(arm,size=0xc) addr:0x02144d58 _ZN18ActorCharacterBase8vfunc_ccEv kind:function(arm,size=0x4) addr:0x02144d64 _ZN18ActorCharacterBase8vfunc_c8Ev kind:function(arm,size=0x4) addr:0x02144d68 _ZN18ActorCharacterBase8vfunc_d0Ev kind:function(arm,size=0x4) addr:0x02144d6c -_ZN18ActorCharacterBase8vfunc_68Ev kind:function(arm,size=0x4) addr:0x02144d70 +_ZN18ActorCharacterBase8vfunc_68EiP18UnkStruct_020397f8 kind:function(arm,size=0x4) addr:0x02144d70 _ZN18ActorCharacterBase8vfunc_bcEv kind:function(arm,size=0x20) addr:0x02144d74 _ZN14ActorCharacter19func_ov014_02144d94Ev kind:function(arm,size=0x58) addr:0x02144d94 _ZN14ActorCharacter19func_ov014_02144decEv kind:function(arm,size=0x28) addr:0x02144dec @@ -1137,7 +1137,7 @@ func_ov014_02145b18 kind:function(arm,size=0xb4) addr:0x02145b18 func_ov014_02145bcc kind:function(arm,size=0xb0) addr:0x02145bcc func_ov014_02145c7c kind:function(arm,size=0x30) addr:0x02145c7c _ZN18ActorCharacter_1d819func_ov014_02145cacEv kind:function(arm,size=0x19c) addr:0x02145cac -func_ov014_02145e48 kind:function(arm,size=0xc4) addr:0x02145e48 +_ZN18ActorCharacter_1d819func_ov014_02145e48Ei kind:function(arm,size=0xc4) addr:0x02145e48 _ZN18ActorCharacter_1d819func_ov014_02145f0cEi kind:function(arm,size=0x1ac) addr:0x02145f0c func_ov014_021460b8 kind:function(arm,size=0x54) addr:0x021460b8 func_ov014_0214610c kind:function(arm,size=0x14) addr:0x0214610c diff --git a/config/eur/arm9/overlays/ov018/symbols.txt b/config/eur/arm9/overlays/ov018/symbols.txt index 985cc241..137ee419 100644 --- a/config/eur/arm9/overlays/ov018/symbols.txt +++ b/config/eur/arm9/overlays/ov018/symbols.txt @@ -155,7 +155,7 @@ func_ov018_02160958 kind:function(arm,size=0x10) addr:0x02160958 func_ov018_02160968 kind:function(arm,size=0xa8) addr:0x02160968 func_ov018_02160a10 kind:function(arm,size=0x44) addr:0x02160a10 func_ov018_02160a54 kind:function(arm,size=0x10) addr:0x02160a54 -func_ov018_02160a64 kind:function(arm,size=0x10) addr:0x02160a64 +_ZN17UnkClass_027e0e2819func_ov018_02160a64Eii kind:function(arm,size=0x10) addr:0x02160a64 func_ov018_02160a74 kind:function(arm,size=0x10) addr:0x02160a74 func_ov018_02160a84 kind:function(arm,size=0x1c) addr:0x02160a84 func_ov018_02160aa0 kind:function(arm,size=0x38) addr:0x02160aa0 diff --git a/config/eur/arm9/overlays/ov031/delinks.txt b/config/eur/arm9/overlays/ov031/delinks.txt index cf7a6053..a3cb0bf0 100644 --- a/config/eur/arm9/overlays/ov031/delinks.txt +++ b/config/eur/arm9/overlays/ov031/delinks.txt @@ -6,7 +6,11 @@ .bss start:0x02183e80 end:0x02184200 kind:bss align:32 src/31_Shop/Actor/ActorItemSellerBase.cpp: - .text start:0x0217cf2c end:0x0217dbdc + complete + .text start:0x0217cf1c end:0x0217dbdc + .rodata start:0x021818a0 end:0x021818e8 + .data start:0x02182168 end:0x02182290 + .bss start:0x02183e84 end:0x02183e88 src/31_Shop/Actor/ActorShopItem.cpp: .text start:0x0217dbdc end:0x02180708 diff --git a/config/eur/arm9/overlays/ov031/relocs.txt b/config/eur/arm9/overlays/ov031/relocs.txt index 5d23e731..32e0c7c3 100644 --- a/config/eur/arm9/overlays/ov031/relocs.txt +++ b/config/eur/arm9/overlays/ov031/relocs.txt @@ -177,7 +177,7 @@ from:0x0217cf08 kind:arm_call_thumb to:0x02030294 module:main from:0x0217cf10 kind:arm_call to:0x0202ea0c module:main from:0x0217cf28 kind:load to:0x02183e84 module:overlay(31) from:0x0217cf34 kind:arm_call to:0x02144ed8 module:overlay(14) -from:0x0217cf58 kind:load to:0x02182170 module:overlay(31) +from:0x0217cf58 kind:load to:0x02182168 module:overlay(31) add:0x8 from:0x0217cf5c kind:load to:0x02183e84 module:overlay(31) from:0x0217cf74 kind:arm_call to:0x021450a8 module:overlay(14) from:0x0217cf80 kind:load to:0x02183e84 module:overlay(31) diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index 64f71d4b..71bfb654 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -3,7 +3,7 @@ func_ov031_0217bd88 kind:function(arm,size=0x18) addr:0x0217bd88 func_ov031_0217bda0 kind:function(arm,size=0xc) addr:0x0217bda0 func_ov031_0217bdac kind:function(arm,size=0x8) addr:0x0217bdac func_ov031_0217bdb4 kind:function(arm,size=0x4) addr:0x0217bdb4 -func_ov031_0217bdb8 kind:function(arm,size=0x10) addr:0x0217bdb8 +_ZN24UnkStruct_ov031_02183e8011GetInstanceEv kind:function(arm,size=0x10) addr:0x0217bdb8 func_ov031_0217bdc8 kind:function(arm,size=0x194) addr:0x0217bdc8 func_ov031_0217bf5c kind:function(arm,size=0x14) addr:0x0217bf5c func_ov031_0217bf70 kind:function(arm,size=0x44) addr:0x0217bf70 @@ -27,14 +27,14 @@ func_ov031_0217ca10 kind:function(arm,size=0x160) addr:0x0217ca10 func_ov031_0217cb70 kind:function(arm,size=0x1a0) addr:0x0217cb70 func_ov031_0217cd10 kind:function(arm,size=0x74) addr:0x0217cd10 func_ov031_0217cd84 kind:function(arm,size=0x54) addr:0x0217cd84 -func_ov031_0217cdd8 kind:function(arm,size=0x20) addr:0x0217cdd8 +_ZN24UnkStruct_ov031_02183e8019func_ov031_0217cdd8Ei kind:function(arm,size=0x20) addr:0x0217cdd8 func_ov031_0217cdf8 kind:function(arm,size=0x20) addr:0x0217cdf8 -func_ov031_0217ce18 kind:function(arm,size=0x54) addr:0x0217ce18 +_ZN24UnkStruct_ov031_02183e8019func_ov031_0217ce18Ev kind:function(arm,size=0x54) addr:0x0217ce18 func_ov031_0217ce6c kind:function(arm,size=0x24) addr:0x0217ce6c HasFreebieCard kind:function(arm,size=0x30) addr:0x0217ce90 _ZN24UnkStruct_ov031_02183e8019func_ov031_0217cec0Ev kind:function(arm,size=0x40) addr:0x0217cec0 func_ov031_0217cf00 kind:function(arm,size=0x1c) addr:0x0217cf00 -_Z19func_ov031_0217cf1cv kind:function(arm,size=0x10) addr:0x0217cf1c +_ZN19ActorItemSellerBase16GetCurrentSellerEv kind:function(arm,size=0x10) addr:0x0217cf1c _ZN19ActorItemSellerBaseC2Ev kind:function(arm,size=0x34) addr:0x0217cf2c _ZN19ActorItemSellerBaseD1Ev kind:function(arm,size=0x24) addr:0x0217cf60 _ZN19ActorItemSellerBaseD0Ev kind:function(arm,size=0x2c) addr:0x0217cf84 @@ -65,7 +65,7 @@ _ZN19ActorItemSellerBase19func_ov031_0217d974Ev kind:function(arm,size=0x14) add _ZN19ActorItemSellerBase8vfunc_d4Ev kind:function(arm,size=0xc) addr:0x0217d988 _ZN19ActorItemSellerBase8vfunc_8cEv kind:function(arm,size=0x8c) addr:0x0217d994 _ZN19ActorItemSellerBase19func_ov031_0217da20Ei kind:function(arm,size=0x60) addr:0x0217da20 -_ZN19ActorItemSellerBase8vfunc_68Ev kind:function(arm,size=0x38) addr:0x0217da80 +_ZN19ActorItemSellerBase8vfunc_68EiP18UnkStruct_020397f8 kind:function(arm,size=0x38) addr:0x0217da80 _ZN19ActorItemSellerBase16CollidesWithLinkEv kind:function(arm,size=0x90) addr:0x0217dab8 _ZN19ActorItemSellerBase9vfunc_11cEv kind:function(arm,size=0x8) addr:0x0217db48 _ZN19ActorItemSellerBase15IsHitboxTouchedEb kind:function(arm,size=0x8c) addr:0x0217db50 @@ -289,7 +289,7 @@ _ZN14ActorTetra_4b019func_ov031_02181798Ev kind:function(arm,size=0xd4) addr:0x0 _ZN10ActorTetraD1Ev kind:function(arm,size=0x1c) addr:0x0218186c _ZN10ActorTetraD0Ev kind:function(arm,size=0x14) addr:0x02181888 _ZN10ActorTetra8vfunc_f8Ev kind:function(arm,size=0x4) addr:0x0218189c -data_ov031_021818a0 kind:data(any) addr:0x021818a0 +sShopItemActorTypes kind:data(any) addr:0x021818a0 local sShopItemBaseNames kind:data(any) addr:0x021818e8 local unk$1534 kind:data(any) addr:0x02181a58 local unk$1554 kind:data(any) addr:0x02181a6c local @@ -327,7 +327,7 @@ data_ov031_02182138 kind:data(any) addr:0x02182138 data_ov031_0218213c kind:data(any) addr:0x0218213c data_ov031_02182140 kind:data(any) addr:0x02182140 data_ov031_02182144 kind:data(any) addr:0x02182144 -data_ov031_02182170 kind:data(any) addr:0x02182170 +_ZTV19ActorItemSellerBase kind:data(any) addr:0x02182168 @1183 kind:data(any) addr:0x02182290 local @1184 kind:data(any) addr:0x02182294 local @1185 kind:data(any) addr:0x02182298 local @@ -428,7 +428,7 @@ data_ov031_02183d68 kind:data(any) addr:0x02183d68 data_ov031_02183d6c kind:data(any) addr:0x02183d6c data_ov031_02183d7c kind:data(any) addr:0x02183d7c data_ov031_02183e80 kind:bss addr:0x02183e80 -data_ov031_02183e84 kind:bss addr:0x02183e84 +sCurrentSeller kind:bss addr:0x02183e84 local @792 kind:bss addr:0x02183e88 local _ZN15ActorShopItemDM5gTypeE kind:bss addr:0x02183e94 @794 kind:bss addr:0x02183ea8 local diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index 7a47943d..f765415a 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -1806,14 +1806,14 @@ _ZN14MessageManager13func_020368f4EP18UnkStruct_02037750 kind:function(arm,size= _ZN14MessageManager13func_0203690cEi kind:function(arm,size=0x2b0) addr:0x0203690c _ZN14MessageManager13func_02036bbcEv kind:function(arm,size=0x94) addr:0x02036bbc _ZN14MessageManager13func_02036c50EPt kind:function(arm,size=0x54) addr:0x02036c50 -_ZN14MessageManager13func_02036ca4Ei kind:function(arm,size=0x40) addr:0x02036ca4 +_ZN14MessageManager13func_02036ca4EPt kind:function(arm,size=0x40) addr:0x02036ca4 _ZN14MessageManager13func_02036ce4EP18UnkStruct_02037750i kind:function(arm,size=0x4c) addr:0x02036ce4 _ZN14MessageManager13func_02036d30EP18UnkStruct_02037750 kind:function(arm,size=0x1c) addr:0x02036d30 _ZN14MessageManager13func_02036d4cEP18UnkStruct_02037750 kind:function(arm,size=0x20) addr:0x02036d4c _ZN14MessageManager13func_02036d6cEv kind:function(arm,size=0x3c) addr:0x02036d6c _ZN14MessageManager13func_02036da8EjPs kind:function(arm,size=0x134) addr:0x02036da8 _ZN14MessageManager13func_02036edcEjh kind:function(arm,size=0x8c) addr:0x02036edc -_ZN14MessageManager13func_02036f68EjPh kind:function(arm,size=0x168) addr:0x02036f68 +_ZN14MessageManager13func_02036f68EjP18UnkStruct_02037628P24UnkStruct_ov000_020d18f4 kind:function(arm,size=0x168) addr:0x02036f68 _ZN14MessageManager13func_020370d0Eii kind:function(arm,size=0x18) addr:0x020370d0 _ZN14MessageManager13func_020370e8Eissi kind:function(arm,size=0x70) addr:0x020370e8 _ZN14MessageManager13func_02037158EP21UnkSubClass1_02256FF8 kind:function(arm,size=0x20) addr:0x02037158 @@ -1834,8 +1834,8 @@ func_020374b4 kind:function(arm,size=0x74) addr:0x020374b4 func_02037528 kind:function(arm,size=0x74) addr:0x02037528 func_0203759c kind:function(arm,size=0x68) addr:0x0203759c func_02037604 kind:function(arm,size=0x24) addr:0x02037604 -func_02037628 kind:function(arm,size=0x98) addr:0x02037628 -func_020376c0 kind:function(arm,size=0x64) addr:0x020376c0 +_ZN18UnkStruct_0203762813func_02037628Ev kind:function(arm,size=0x98) addr:0x02037628 +_ZN18UnkStruct_0203762813func_020376c0EP5Vec3p kind:function(arm,size=0x64) addr:0x020376c0 func_02037724 kind:function(arm,size=0x2c) addr:0x02037724 _ZN18UnkStruct_02037750C2EiPv kind:function(arm,size=0x44) addr:0x02037750 _ZN18UnkStruct_02037750D1Ev kind:function(arm,size=0x38) addr:0x02037794 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index af5a5991..b488f850 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -215,7 +215,7 @@ func_ov000_0207b90c kind:function(arm,size=0x7c) addr:0x0207b8ac _ZN18UnkStruct_027e0dbc19func_ov000_0207b988Ei kind:function(thumb,size=0x40) addr:0x0207b928 _ZN18UnkStruct_027e0dbc19func_ov000_0207b9c8Ev kind:function(thumb,size=0x14) addr:0x0207b968 _ZN18UnkStruct_027e0dbc19func_ov000_0207b9dcEv kind:function(arm,size=0xb4) addr:0x0207b97c -func_ov000_0207ba90 kind:function(thumb,size=0x4) addr:0x0207ba30 +_ZN18UnkStruct_027e0dbc9GetUnk_24Ev kind:function(thumb,size=0x4) addr:0x0207ba30 func_ov000_0207ba94 kind:function(thumb,size=0x20) addr:0x0207ba34 func_ov000_0207bab4 kind:function(arm,size=0x5c) addr:0x0207ba54 func_ov000_0207bb10 kind:function(arm,size=0x4) addr:0x0207bab0 @@ -696,7 +696,7 @@ func_ov000_0208708c kind:function(arm,size=0x14) addr:0x0208702c func_ov000_020870a0 kind:function(arm,size=0x24) addr:0x02087040 func_ov000_020870c4 kind:function(arm,size=0xc) addr:0x02087064 func_ov000_020870d0 kind:function(arm,size=0x19c) addr:0x02087070 -func_ov000_0208726c kind:function(arm,size=0x7c) addr:0x0208720c +_ZN21UnkStruct_027e0f64_0419func_ov000_0208726cEi kind:function(arm,size=0x7c) addr:0x0208720c func_ov000_020872e8 kind:function(arm,size=0x50) addr:0x02087288 func_ov000_02087338 kind:function(arm,size=0xc8) addr:0x020872d8 func_ov000_02087400 kind:function(arm,size=0x184) addr:0x020873a0 @@ -2752,7 +2752,7 @@ _ZN5Actor4DropEP5Vec3p kind:function(arm,size=0x38) addr:0x020c1864 _ZN5Actor8vfunc_60Ev kind:function(arm,size=0x8) addr:0x020c189c _ZN5Actor8vfunc_64Ev kind:function(arm,size=0x4) addr:0x020c18a4 _ZN5Actor10SetUnk_11cEb kind:function(arm,size=0x8) addr:0x020c18a8 -_ZN5Actor8vfunc_68Ev kind:function(arm,size=0x4) addr:0x020c18b0 +_ZN5Actor8vfunc_68EiP18UnkStruct_020397f8 kind:function(arm,size=0x4) addr:0x020c18b0 _ZN5Actor8vfunc_6cEv kind:function(arm,size=0x8) addr:0x020c18b4 _ZN5Actor8vfunc_70Ev kind:function(arm,size=0x8) addr:0x020c18bc _ZN5Actor8vfunc_74EP8ActorRef kind:function(arm,size=0x4) addr:0x020c18c4 diff --git a/config/usa/arm9/overlays/ov014/symbols.txt b/config/usa/arm9/overlays/ov014/symbols.txt index c8730b51..12439e82 100644 --- a/config/usa/arm9/overlays/ov014/symbols.txt +++ b/config/usa/arm9/overlays/ov014/symbols.txt @@ -1087,7 +1087,7 @@ _ZN18ActorCharacterBase8vfunc_84Ev kind:function(arm,size=0xc) addr:0x02144cb4 _ZN18ActorCharacterBase8vfunc_ccEv kind:function(arm,size=0x4) addr:0x02144cc0 _ZN18ActorCharacterBase8vfunc_c8Ev kind:function(arm,size=0x4) addr:0x02144cc4 _ZN18ActorCharacterBase8vfunc_d0Ev kind:function(arm,size=0x4) addr:0x02144cc8 -_ZN18ActorCharacterBase8vfunc_68Ev kind:function(arm,size=0x4) addr:0x02144ccc +_ZN18ActorCharacterBase8vfunc_68EiP18UnkStruct_020397f8 kind:function(arm,size=0x4) addr:0x02144ccc _ZN18ActorCharacterBase8vfunc_bcEv kind:function(arm,size=0x20) addr:0x02144cd0 _ZN14ActorCharacter19func_ov014_02144d94Ev kind:function(arm,size=0x58) addr:0x02144cf0 _ZN14ActorCharacter19func_ov014_02144decEv kind:function(arm,size=0x28) addr:0x02144d48 @@ -1137,7 +1137,7 @@ func_ov014_02145b18 kind:function(arm,size=0xb4) addr:0x02145a74 func_ov014_02145bcc kind:function(arm,size=0xb0) addr:0x02145b28 func_ov014_02145c7c kind:function(arm,size=0x30) addr:0x02145bd8 _ZN18ActorCharacter_1d819func_ov014_02145cacEv kind:function(arm,size=0x19c) addr:0x02145c08 -func_ov014_02145e48 kind:function(arm,size=0xc4) addr:0x02145da4 +_ZN18ActorCharacter_1d819func_ov014_02145e48Ei kind:function(arm,size=0xc4) addr:0x02145da4 _ZN18ActorCharacter_1d819func_ov014_02145f0cEi kind:function(arm,size=0x1ac) addr:0x02145e68 func_ov014_021460b8 kind:function(arm,size=0x54) addr:0x02146014 func_ov014_0214610c kind:function(arm,size=0x14) addr:0x02146068 diff --git a/config/usa/arm9/overlays/ov018/symbols.txt b/config/usa/arm9/overlays/ov018/symbols.txt index dd47a49e..ad671c78 100644 --- a/config/usa/arm9/overlays/ov018/symbols.txt +++ b/config/usa/arm9/overlays/ov018/symbols.txt @@ -155,7 +155,7 @@ func_ov018_02160958 kind:function(arm,size=0x10) addr:0x021608b8 func_ov018_02160968 kind:function(arm,size=0xa8) addr:0x021608c8 func_ov018_02160a10 kind:function(arm,size=0x44) addr:0x02160970 func_ov018_02160a54 kind:function(arm,size=0x10) addr:0x021609b4 -func_ov018_02160a64 kind:function(arm,size=0x10) addr:0x021609c4 +_ZN17UnkClass_027e0e2819func_ov018_02160a64Eii kind:function(arm,size=0x10) addr:0x021609c4 func_ov018_02160a74 kind:function(arm,size=0x10) addr:0x021609d4 func_ov018_02160a84 kind:function(arm,size=0x1c) addr:0x021609e4 func_ov018_02160aa0 kind:function(arm,size=0x38) addr:0x02160a00 diff --git a/config/usa/arm9/overlays/ov031/delinks.txt b/config/usa/arm9/overlays/ov031/delinks.txt index 3020c7c3..e38623a9 100644 --- a/config/usa/arm9/overlays/ov031/delinks.txt +++ b/config/usa/arm9/overlays/ov031/delinks.txt @@ -6,7 +6,11 @@ .bss start:0x02183de0 end:0x02184160 kind:bss align:32 src/31_Shop/Actor/ActorItemSellerBase.cpp: - .text start:0x0217ce8c end:0x0217db3c + complete + .text start:0x0217ce7c end:0x0217db3c + .rodata start:0x02181800 end:0x02181848 + .data start:0x021820c8 end:0x021821f0 + .bss start:0x02183de4 end:0x02183de8 src/31_Shop/Actor/ActorShopItem.cpp: .text start:0x0217db3c end:0x02180668 diff --git a/config/usa/arm9/overlays/ov031/relocs.txt b/config/usa/arm9/overlays/ov031/relocs.txt index 45729ad7..b6672951 100644 --- a/config/usa/arm9/overlays/ov031/relocs.txt +++ b/config/usa/arm9/overlays/ov031/relocs.txt @@ -177,7 +177,7 @@ from:0x0217ce68 kind:arm_call_thumb to:0x02030290 module:main from:0x0217ce70 kind:arm_call to:0x0202ea08 module:main from:0x0217ce88 kind:load to:0x02183de4 module:overlay(31) from:0x0217ce94 kind:arm_call to:0x02144e34 module:overlay(14) -from:0x0217ceb8 kind:load to:0x021820d0 module:overlay(31) +from:0x0217ceb8 kind:load to:0x021820c8 module:overlay(31) add:0x8 from:0x0217cebc kind:load to:0x02183de4 module:overlay(31) from:0x0217ced4 kind:arm_call to:0x02145004 module:overlay(14) from:0x0217cee0 kind:load to:0x02183de4 module:overlay(31) diff --git a/config/usa/arm9/overlays/ov031/symbols.txt b/config/usa/arm9/overlays/ov031/symbols.txt index 0906e73f..2ce790e2 100644 --- a/config/usa/arm9/overlays/ov031/symbols.txt +++ b/config/usa/arm9/overlays/ov031/symbols.txt @@ -3,7 +3,7 @@ func_ov031_0217bd88 kind:function(arm,size=0x18) addr:0x0217bce8 func_ov031_0217bda0 kind:function(arm,size=0xc) addr:0x0217bd00 func_ov031_0217bdac kind:function(arm,size=0x8) addr:0x0217bd0c func_ov031_0217bdb4 kind:function(arm,size=0x4) addr:0x0217bd14 -func_ov031_0217bdb8 kind:function(arm,size=0x10) addr:0x0217bd18 +_ZN24UnkStruct_ov031_02183e8011GetInstanceEv kind:function(arm,size=0x10) addr:0x0217bd18 func_ov031_0217bdc8 kind:function(arm,size=0x194) addr:0x0217bd28 func_ov031_0217bf5c kind:function(arm,size=0x14) addr:0x0217bebc func_ov031_0217bf70 kind:function(arm,size=0x44) addr:0x0217bed0 @@ -27,14 +27,14 @@ func_ov031_0217ca10 kind:function(arm,size=0x160) addr:0x0217c970 func_ov031_0217cb70 kind:function(arm,size=0x1a0) addr:0x0217cad0 func_ov031_0217cd10 kind:function(arm,size=0x74) addr:0x0217cc70 func_ov031_0217cd84 kind:function(arm,size=0x54) addr:0x0217cce4 -func_ov031_0217cdd8 kind:function(arm,size=0x20) addr:0x0217cd38 +_ZN24UnkStruct_ov031_02183e8019func_ov031_0217cdd8Ei kind:function(arm,size=0x20) addr:0x0217cd38 func_ov031_0217cdf8 kind:function(arm,size=0x20) addr:0x0217cd58 -func_ov031_0217ce18 kind:function(arm,size=0x54) addr:0x0217cd78 +_ZN24UnkStruct_ov031_02183e8019func_ov031_0217ce18Ev kind:function(arm,size=0x54) addr:0x0217cd78 func_ov031_0217ce6c kind:function(arm,size=0x24) addr:0x0217cdcc HasFreebieCard kind:function(arm,size=0x30) addr:0x0217cdf0 _ZN24UnkStruct_ov031_02183e8019func_ov031_0217cec0Ev kind:function(arm,size=0x40) addr:0x0217ce20 func_ov031_0217cf00 kind:function(arm,size=0x1c) addr:0x0217ce60 -_Z19func_ov031_0217cf1cv kind:function(arm,size=0x10) addr:0x0217ce7c +_ZN19ActorItemSellerBase16GetCurrentSellerEv kind:function(arm,size=0x10) addr:0x0217ce7c _ZN19ActorItemSellerBaseC2Ev kind:function(arm,size=0x34) addr:0x0217ce8c _ZN19ActorItemSellerBaseD1Ev kind:function(arm,size=0x24) addr:0x0217cec0 _ZN19ActorItemSellerBaseD0Ev kind:function(arm,size=0x2c) addr:0x0217cee4 @@ -65,7 +65,7 @@ _ZN19ActorItemSellerBase19func_ov031_0217d974Ev kind:function(arm,size=0x14) add _ZN19ActorItemSellerBase8vfunc_d4Ev kind:function(arm,size=0xc) addr:0x0217d8e8 _ZN19ActorItemSellerBase8vfunc_8cEv kind:function(arm,size=0x8c) addr:0x0217d8f4 _ZN19ActorItemSellerBase19func_ov031_0217da20Ei kind:function(arm,size=0x60) addr:0x0217d980 -_ZN19ActorItemSellerBase8vfunc_68Ev kind:function(arm,size=0x38) addr:0x0217d9e0 +_ZN19ActorItemSellerBase8vfunc_68EiP18UnkStruct_020397f8 kind:function(arm,size=0x38) addr:0x0217d9e0 _ZN19ActorItemSellerBase16CollidesWithLinkEv kind:function(arm,size=0x90) addr:0x0217da18 _ZN19ActorItemSellerBase9vfunc_11cEv kind:function(arm,size=0x8) addr:0x0217daa8 _ZN19ActorItemSellerBase15IsHitboxTouchedEb kind:function(arm,size=0x8c) addr:0x0217dab0 @@ -289,8 +289,8 @@ _ZN14ActorTetra_4b019func_ov031_02181798Ev kind:function(arm,size=0xd4) addr:0x0 _ZN10ActorTetraD1Ev kind:function(arm,size=0x1c) addr:0x021817cc _ZN10ActorTetraD0Ev kind:function(arm,size=0x14) addr:0x021817e8 _ZN10ActorTetra8vfunc_f8Ev kind:function(arm,size=0x4) addr:0x021817fc -data_ov031_021818a0 kind:data(any) addr:0x02181800 -sShopItemBaseNames kind:data(any) addr:0x02181848 +sShopItemActorTypes kind:data(any) addr:0x02181800 local +sShopItemBaseNames kind:data(any) addr:0x02181848 local unk$1534 kind:data(any) addr:0x021819b8 local unk$1554 kind:data(any) addr:0x021819cc local @2460 kind:data(any) addr:0x021819e0 local @@ -327,7 +327,7 @@ data_ov031_02182138 kind:data(any) addr:0x02182098 data_ov031_0218213c kind:data(any) addr:0x0218209c data_ov031_02182140 kind:data(any) addr:0x021820a0 data_ov031_02182144 kind:data(any) addr:0x021820a4 -data_ov031_02182170 kind:data(any) addr:0x021820d0 +_ZTV19ActorItemSellerBase kind:data(any) addr:0x021820c8 @1183 kind:data(any) addr:0x021821f0 local @1184 kind:data(any) addr:0x021821f4 local @1185 kind:data(any) addr:0x021821f8 local @@ -428,7 +428,7 @@ data_ov031_02183d68 kind:data(any) addr:0x02183cc8 data_ov031_02183d6c kind:data(any) addr:0x02183ccc data_ov031_02183d7c kind:data(any) addr:0x02183cdc data_ov031_02183e80 kind:bss addr:0x02183de0 -data_ov031_02183e84 kind:bss addr:0x02183de4 +sCurrentSeller kind:bss addr:0x02183de4 local @792 kind:bss addr:0x02183de8 _ZN15ActorShopItemDM5gTypeE kind:bss addr:0x02183df4 @794 kind:bss addr:0x02183e08 diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt index 9e3cbdd4..f46857bd 100644 --- a/config/usa/arm9/symbols.txt +++ b/config/usa/arm9/symbols.txt @@ -1806,14 +1806,14 @@ _ZN14MessageManager13func_020368f4EP18UnkStruct_02037750 kind:function(arm,size= _ZN14MessageManager13func_0203690cEi kind:function(arm,size=0x2b0) addr:0x020368c8 _ZN14MessageManager13func_02036bbcEv kind:function(arm,size=0x94) addr:0x02036b78 _ZN14MessageManager13func_02036c50EPt kind:function(arm,size=0x54) addr:0x02036c0c -_ZN14MessageManager13func_02036ca4Ei kind:function(arm,size=0x40) addr:0x02036c60 +_ZN14MessageManager13func_02036ca4EPt kind:function(arm,size=0x40) addr:0x02036c60 _ZN14MessageManager13func_02036ce4EP18UnkStruct_02037750i kind:function(arm,size=0x4c) addr:0x02036ca0 _ZN14MessageManager13func_02036d30EP18UnkStruct_02037750 kind:function(arm,size=0x1c) addr:0x02036cec _ZN14MessageManager13func_02036d4cEP18UnkStruct_02037750 kind:function(arm,size=0x20) addr:0x02036d08 _ZN14MessageManager13func_02036d6cEv kind:function(arm,size=0x3c) addr:0x02036d28 _ZN14MessageManager13func_02036da8EjPs kind:function(arm,size=0x134) addr:0x02036d64 _ZN14MessageManager13func_02036edcEjh kind:function(arm,size=0x8c) addr:0x02036e98 -_ZN14MessageManager13func_02036f68EjPh kind:function(arm,size=0x168) addr:0x02036f24 +_ZN14MessageManager13func_02036f68EjP18UnkStruct_02037628P24UnkStruct_ov000_020d18f4 kind:function(arm,size=0x168) addr:0x02036f24 _ZN14MessageManager13func_020370d0Eii kind:function(arm,size=0x18) addr:0x0203708c _ZN14MessageManager13func_020370e8Eissi kind:function(arm,size=0x70) addr:0x020370a4 _ZN14MessageManager13func_02037158EP21UnkSubClass1_02256FF8 kind:function(arm,size=0x20) addr:0x02037114 @@ -1834,8 +1834,8 @@ func_020374b4 kind:function(arm,size=0x74) addr:0x02037470 func_02037528 kind:function(arm,size=0x74) addr:0x020374e4 func_0203759c kind:function(arm,size=0x68) addr:0x02037558 func_02037604 kind:function(arm,size=0x24) addr:0x020375c0 -func_02037628 kind:function(arm,size=0x98) addr:0x020375e4 -func_020376c0 kind:function(arm,size=0x64) addr:0x0203767c +_ZN18UnkStruct_0203762813func_02037628Ev kind:function(arm,size=0x98) addr:0x020375e4 +_ZN18UnkStruct_0203762813func_020376c0EP5Vec3p kind:function(arm,size=0x64) addr:0x0203767c func_02037724 kind:function(arm,size=0x2c) addr:0x020376e0 _ZN18UnkStruct_02037750C2EiPv kind:function(arm,size=0x44) addr:0x0203770c _ZN18UnkStruct_02037750D1Ev kind:function(arm,size=0x38) addr:0x02037750 diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 565d0eb7..c313e5aa 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -12,6 +12,7 @@ #include "Physics/Transform.hpp" #include "Player/EquipBoomerang.hpp" #include "System/SysNew.hpp" +#include "Unknown/UnkStruct_020397f8.hpp" #include "Unknown/UnkStruct_ov000_020beba8.hpp" struct Actor_UnkStruct_012 { @@ -200,7 +201,7 @@ public: /* 5c */ virtual bool Drop(Vec3p *vel); /* 60 */ virtual bool vfunc_60(); /* 64 */ virtual void vfunc_64(); - /* 68 */ virtual void vfunc_68(); + /* 68 */ virtual void vfunc_68(unk32 param1, UnkStruct_020397f8 *param2); /* 6c */ virtual bool vfunc_6c(); /* 70 */ virtual bool vfunc_70(); /* 74 */ virtual void vfunc_74(ActorRef *ref); diff --git a/include/Actor/ActorShopItem.hpp b/include/Actor/ActorShopItem.hpp index 5d2e8d55..022f3ba9 100644 --- a/include/Actor/ActorShopItem.hpp +++ b/include/Actor/ActorShopItem.hpp @@ -9,6 +9,8 @@ #include "Render/ModelRender.hpp" #include "System/SysNew.hpp" +#define NUM_SHOP_ITEMS 5 + typedef u32 ShopItem; enum ShopItem_ { ShopItem_Unk = -1, @@ -448,18 +450,34 @@ public: }; struct UnkStruct_ov031_02183e80 { - /* 000 */ PAD(0x000, 0x01c); + /* 000 */ unk32 mUnk_000; + /* 004 */ PAD(0x004, 0x01c); /* 01c */ u32 mUnk_01c[2]; /* 024 */ u32 mUnk_024[2]; /* 02c */ u32 mUnk_02c[2]; - /* 034 */ PAD(0x34, 0x38); + /* 034 */ PAD(0x034, 0x038); /* 038 */ u32 mUnk_038[1]; // at least 1, unclear how many - /* 03c */ PAD(0x03c, 0x178); + /* 03c */ PAD(0x03c, 0x070); + /* 070 */ ActorRef mShopItemRefs[NUM_SHOP_ITEMS]; + /* 098 */ ActorRef mShopItemRefBK; + /* 0a0 */ ActorRef mShopItemRefCC; + /* 0a8 */ ActorRef mShopItemRefBY; + /* 0b0 */ PAD(0x0b0, 0x178); /* 178 */ Vec3p mUnk_178; - /* 184 */ PAD(0x184, 0x19a); + /* 184 */ PAD(0x184, 0x194); + /* 194 */ unk32 mUnk_194; + /* 198 */ bool mUnk_198; + /* 199 */ PAD(0x199, 0x19a); /* 19a */ u8 mUnk_19a; /* 19b */ + static UnkStruct_ov031_02183e80 *GetInstance(); + bool func_ov031_0217bd80(); + unk32 func_ov031_0217bda0(); + unk32 func_ov031_0217bdac(); + ActorShopItem *func_ov031_0217cdd8(unk32 param1); + bool func_ov031_0217ce18(); + unk32 func_ov031_0217ce6c(); bool func_ov031_0217cec0(); }; diff --git a/include/Actor/Character/ActorCharacter.hpp b/include/Actor/Character/ActorCharacter.hpp index 8c9968a2..c39e893e 100644 --- a/include/Actor/Character/ActorCharacter.hpp +++ b/include/Actor/Character/ActorCharacter.hpp @@ -36,7 +36,7 @@ public: /* 08 */ virtual bool Init() override; /* 14 */ virtual void vfunc_14(u32 param1) override; /* 18 */ virtual void vfunc_18(u32 param1) override; - /* 68 */ virtual void vfunc_68() override; + /* 68 */ virtual void vfunc_68(unk32 param1, UnkStruct_020397f8 *param2) override; /* 80 */ virtual void vfunc_80() override; /* 84 */ virtual void vfunc_84() override; /* b4 */ virtual void vfunc_b4(); @@ -82,13 +82,13 @@ public: /* 78 */ Vec3p mUnk_78; /* 84 */ unk32 mUnk_84; /* 88 */ unk32 mUnk_88; - /* 8c */ unk8 mUnk_8c; + /* 8c */ bool mUnk_8c; /* 8d */ unk8 mUnk_8d; /* 8e */ unk8 mUnk_8e; - /* 8f */ unk8 mUnk_8f; + /* 8f */ bool mUnk_8f; /* 90 */ - /* 00 */ virtual ~ActorCharacterModel() override {} + /* 00 */ ARM virtual ~ActorCharacterModel() override {} /* 3c */ virtual void vfunc_3c(ModelRenderCommandsData *renderData) override; /* 40 */ @@ -187,6 +187,7 @@ public: mUnk_244(0x11f) {} void func_ov014_02145cac(); + void func_ov014_02145e48(unk32 param1); bool func_ov014_02145f0c(unk32 param1); inline bool UnkFunc1(unk32 param1) { diff --git a/include/Actor/Character/ActorItemSeller.hpp b/include/Actor/Character/ActorItemSeller.hpp index b2e2db97..26ce1ad6 100644 --- a/include/Actor/Character/ActorItemSeller.hpp +++ b/include/Actor/Character/ActorItemSeller.hpp @@ -10,33 +10,40 @@ class ActorItemSellerBase : public ActorCharacter { public: /* 000 (base) */ /* 470 */ unk32 mUnk_470; - /* 474 */ + /* 474 */ unk32 mUnk_474; + /* 478 */ unk32 mUnk_478; + /* 47c */ unk32 mUnk_47c; + /* 480 */ bool mUnk_480; + /* 481 */ PAD(0x481, 0x484); + /* 484 */ /* 000 */ virtual ~ActorItemSellerBase() override; /* 008 */ virtual bool Init() override; /* 020 */ virtual void vfunc_20(bool param1) override; /* 03c */ virtual bool CollidesWithLink() override; /* 040 */ virtual bool IsHitboxTouched(bool param1) override; - /* 068 */ virtual void vfunc_68() override; + /* 068 */ virtual void vfunc_68(unk32 param1, UnkStruct_020397f8 *param2) override; /* 08c */ virtual bool vfunc_8c() override; /* 0c0 */ virtual bool vfunc_c0() override; /* 0c4 */ virtual void vfunc_c4() override; /* 0d4 */ virtual unk32 vfunc_d4() override; - /* 0f4 */ virtual void vfunc_f4() = 0; - /* 0f8 */ virtual void vfunc_f8() = 0; - /* 0fc */ virtual void vfunc_fc() = 0; - /* 100 */ virtual void vfunc_100() = 0; - /* 104 */ virtual void vfunc_104() = 0; - /* 108 */ virtual void vfunc_108() = 0; - /* 10c */ virtual void vfunc_10c() = 0; - /* 110 */ virtual void vfunc_110() = 0; - /* 114 */ virtual void vfunc_114() = 0; - /* 118 */ virtual void vfunc_118() = 0; - /* 11c */ virtual void vfunc_11c(); + /* 0f4 */ virtual void vfunc_f4() = 0; + /* 0f8 */ virtual void vfunc_f8() = 0; + /* 0fc */ virtual void vfunc_fc() = 0; + /* 100 */ virtual void vfunc_100() = 0; + /* 104 */ virtual void vfunc_104() = 0; + /* 108 */ virtual void vfunc_108() = 0; + /* 10c */ virtual void vfunc_10c() = 0; + /* 110 */ virtual void vfunc_110() = 0; + /* 114 */ virtual unk32 vfunc_114(unk32 param1) = 0; + /* 118 */ virtual void vfunc_118() = 0; + /* 11c */ virtual bool vfunc_11c(); /* 120 */ ActorItemSellerBase(); + static ActorItemSellerBase *GetCurrentSeller(); + void func_ov031_0217d588(); void func_ov031_0217d5c0(); void func_ov031_0217d5c4(); @@ -44,7 +51,7 @@ public: void func_ov031_0217d610(); void func_ov031_0217d62c(); void func_ov031_0217d638(); - void func_ov031_0217d6ac(); + bool func_ov031_0217d6ac(); void func_ov031_0217d6d0(); void func_ov031_0217d760(); void func_ov031_0217d784(); @@ -62,7 +69,7 @@ public: class ActorItemSeller : public ActorItemSellerBase { /* 000 (base) */ - /* 474 */ + /* 484 */ /* 000 */ virtual ~ActorItemSeller() override; /* 008 */ virtual bool Init() override; @@ -75,7 +82,7 @@ class ActorItemSeller : public ActorItemSellerBase { /* 108 */ virtual void vfunc_108() override; /* 10c */ virtual void vfunc_10c() override; /* 110 */ virtual void vfunc_110() override; - /* 114 */ virtual void vfunc_114() override; + /* 114 */ virtual unk32 vfunc_114(unk32 param1) override; /* 118 */ virtual void vfunc_118() override; /* 120 */ }; @@ -100,7 +107,7 @@ public: static ActorType gType; /* 000 (base) */ - /* 474 */ + /* 484 */ /* 000 */ virtual ~ActorBeedle() override; /* 008 */ virtual bool Init() override; @@ -108,9 +115,9 @@ public: /* 070 */ virtual bool vfunc_70() override; /* 0c4 */ virtual void vfunc_c4() override; /* 0d4 */ virtual unk32 vfunc_d4() override; - /* 0d8 */ virtual unk32 vfunc_d8() override; - /* 0dc */ virtual unk32 vfunc_dc() override; - /* 0e0 */ virtual unk32 vfunc_e0() override; + /* 0d8 */ virtual unk32 vfunc_d8(unk32 param1) override; + /* 0dc */ virtual unk32 vfunc_dc(unk32 param1) override; + /* 0e0 */ virtual unk32 vfunc_e0(unk32 param1) override; /* 0f4 */ virtual void vfunc_f4() override; /* 0f8 */ virtual void vfunc_f8() override; /* 0fc */ virtual void vfunc_fc() override; @@ -119,9 +126,9 @@ public: /* 108 */ virtual void vfunc_108() override; /* 10c */ virtual void vfunc_10c() override; /* 110 */ virtual void vfunc_110() override; - /* 114 */ virtual void vfunc_114() override; + /* 114 */ virtual unk32 vfunc_114(unk32 param1) override; /* 118 */ virtual void vfunc_118() override; - /* 11c */ virtual void vfunc_11c() override; + /* 11c */ virtual bool vfunc_11c() override; static ActorBeedle *Create(); diff --git a/include/DTCM/UnkStruct_027e0f64.hpp b/include/DTCM/UnkStruct_027e0f64.hpp index 755ba5bd..dcf45876 100644 --- a/include/DTCM/UnkStruct_027e0f64.hpp +++ b/include/DTCM/UnkStruct_027e0f64.hpp @@ -18,6 +18,8 @@ struct UnkStruct_027e0f64_04 { /* 278 */ bool func_01ffe468(Vec3p *param2, s32 *param3, s32 *param4, bool param5); + + void func_ov000_0208726c(unk32 param1); }; class UnkStruct_027e0f64 { diff --git a/include/Message/MessageManager.hpp b/include/Message/MessageManager.hpp index bcce36f6..b3d1022f 100644 --- a/include/Message/MessageManager.hpp +++ b/include/Message/MessageManager.hpp @@ -1,5 +1,7 @@ #pragma once +#include "Unknown/UnkStruct_02037628.hpp" +#include "Unknown/UnkStruct_ov000_020d18f4.hpp" #include "global.h" #include "types.h" @@ -59,14 +61,14 @@ public: void func_0203690c(unk32 param_2); void func_02036bbc(void); void func_02036c50(u16 *param_2); - void func_02036ca4(unk32 param_2); + void func_02036ca4(u16 *param_2); bool func_02036ce4(UnkStruct_02037750 *param_2, unk32 param_3); bool func_02036d30(UnkStruct_02037750 *param_2); bool func_02036d4c(UnkStruct_02037750 *param_2); void func_02036d6c(void); UnkStruct_02038aa0 *func_02036da8(u32 param_2, s16 *param_3); void func_02036edc(u32 param_2, u8 param_3); - UnkStruct_020397f8 *func_02036f68(u32 param_2, u8 *param_3); + UnkStruct_020397f8 *func_02036f68(u32 param_2, UnkStruct_02037628 *param_3, UnkStruct_ov000_020d18f4 *param_4); UnkStruct_020386d8 *func_020370d0(unk32 param_2, unk32 param_3); UnkStruct_020386d8 *func_020370e8(unk32 param_2, unk16 param_3, unk16 param_4, unk32 param_5); void func_02037158(UnkSubClass1_02256FF8 *param_2); diff --git a/include/Message/MsgProc.hpp b/include/Message/MsgProc.hpp index dc10f91f..41dc85ce 100644 --- a/include/Message/MsgProc.hpp +++ b/include/Message/MsgProc.hpp @@ -52,7 +52,7 @@ public: /* 0x08 */ UnkStruct_0203dae0_114(); - /* 0x00 */ virtual ~UnkStruct_0203dae0_114() override; + /* 0x00 */ virtual ~UnkStruct_0203dae0_114(); /* 0x08 */ virtual unk32 vfunc_08(void *); /* 0x08 */ virtual unk32 vfunc_0c(void); /* 0x0C */ @@ -78,9 +78,9 @@ struct func_02038f44_param4 { extern "C" u32 func_01ff9b4c(unk32, unk32); extern "C" unk32 func_0203c084(void); extern "C" unk32 func_ov000_02079e04(void); -extern "C" unk32 func_02016fcc(unk32); -extern "C" unk32 func_0202d5b4(char *, char *, unk32, unk32, unk32); -extern unk32 data_020691a0; +extern "C" unk32 func_02016fcc(unk32 *); +extern "C" unk32 *func_0202d5b4(char *, char *, unk8 *, unk32, unk32); +extern unk8 data_020691a0[]; extern unk32 data_02056af0; extern unk32 *data_02056a00; extern char *data_02057f08; // "MSP" @@ -124,6 +124,8 @@ class UnkClass_027e0e28 { public: unk32 func_ov000_0207bc48(); void func_ov000_0207bc9c(); + + bool func_ov018_02160a64(unk32, unk32); }; extern UnkClass_027e0e28 data_027e0e28; extern unk32 *data_ov009_0211f5b4; diff --git a/include/Unknown/UnkStruct_02032f0c.hpp b/include/Unknown/UnkStruct_02032f0c.hpp index ec589e51..f5e8513f 100644 --- a/include/Unknown/UnkStruct_02032f0c.hpp +++ b/include/Unknown/UnkStruct_02032f0c.hpp @@ -36,20 +36,20 @@ public: /* 20 */ UnkSubClass1_02256FF8(); - /* 00 */ virtual ~UnkSubClass1_02256FF8() override; - /* 08 */ virtual void vfunc_08(void) override; - /* 0c */ virtual void vfunc_0c(void) override; - /* 10 */ virtual void vfunc_10(void) override; - /* 14 */ virtual void vfunc_14(void) override; - /* 18 */ virtual void vfunc_18(void) override; - /* 1c */ virtual void vfunc_1c(void) override; - /* 20 */ virtual void vfunc_20(void) override; - /* 24 */ virtual void vfunc_24(void) override; - /* 28 */ virtual void vfunc_28(void) override; - /* 2c */ virtual void vfunc_2c(void) override; - /* 30 */ virtual void vfunc_30(void) override; - /* 34 */ virtual void vfunc_34(void) override; - /* 38 */ virtual void vfunc_38(void) override; + /* 00 */ virtual ~UnkSubClass1_02256FF8(); + /* 08 */ virtual void vfunc_08(void); + /* 0c */ virtual void vfunc_0c(void); + /* 10 */ virtual void vfunc_10(void); + /* 14 */ virtual void vfunc_14(void); + /* 18 */ virtual void vfunc_18(void); + /* 1c */ virtual void vfunc_1c(void); + /* 20 */ virtual void vfunc_20(void); + /* 24 */ virtual void vfunc_24(void); + /* 28 */ virtual void vfunc_28(void); + /* 2c */ virtual void vfunc_2c(void); + /* 30 */ virtual void vfunc_30(void); + /* 34 */ virtual void vfunc_34(void); + /* 38 */ virtual void vfunc_38(void); /* 3c */ }; @@ -90,7 +90,7 @@ public: /* 2c */ UnkStruct_MsgProc_Base_unk_2C **mUnk_2c; /* 30 */ s32 mUnk_30; /* 34 */ s32 mUnk_34; - /* 38 */ unk32 mUnk_38; + /* 38 */ void *mUnk_38; /* 3c */ unk16 mUnk_3c; /* 3e */ unk16 mUnk_3e; /* 40 */ unk32 mUnk_40; @@ -133,7 +133,7 @@ public: /* 30 */ virtual void vfunc_30(void); /* 34 */ virtual unk32 vfunc_34(unk32 param_2); /* 38 */ virtual bool vfunc_38(void); - /* 3c */ virtual void vfunc_3C(unk32 param_2); + /* 3c */ virtual void vfunc_3C(u16 *param_2); /* 40 */ virtual void vfunc_40(unk32 param_2, unk32 param_3); /* 44 */ virtual void vfunc_44(s32 touchLastX, s32 touchLastY); /* 48 */ virtual void vfunc_48(void); diff --git a/include/Unknown/UnkStruct_02037628.hpp b/include/Unknown/UnkStruct_02037628.hpp new file mode 100644 index 00000000..4175dbc4 --- /dev/null +++ b/include/Unknown/UnkStruct_02037628.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include + +struct UnkStruct_02037628 { + /* 00 */ PAD(0x00, 0x0c); + /* 0c */ u8 mUnk_0c; + /* 0d */ PAD(0x0d, 0x14); + /* 14 */ u8 mUnk_14; + /* 15 */ u8 mUnk_15; + /* 15 */ u8 mUnk_16; + /* 17 */ + + void func_02037628(); + void func_020376c0(Vec3p *pos); +}; diff --git a/include/Unknown/UnkStruct_020397f8.hpp b/include/Unknown/UnkStruct_020397f8.hpp index 1448176a..98720725 100644 --- a/include/Unknown/UnkStruct_020397f8.hpp +++ b/include/Unknown/UnkStruct_020397f8.hpp @@ -152,20 +152,21 @@ public: MsgProc_Type3(unk32 param_2, unk16 param_3, unk32 param_4); //! TODO: remove the function declarations that are not overridden /* 00 */ virtual ~MsgProc_Type3(); - /* 08 */ virtual void vfunc_08(unk32 *param_2, unk32 *param_3) override; - /* 0c */ virtual void vfunc_0C(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) override; - /* 10 */ virtual void vfunc_10(u8 param_2, u8 param_3) override; // func_0203e060? + //! TODO: Fix these overrides, they don't match base class + // /* 08 */ virtual void vfunc_08(unk32 *param_2, unk32 *param_3) override; + // /* 0c */ virtual void vfunc_0C(u8 param_2, u8 param_3, u8 param_4, unk32 param_5) override; + // /* 10 */ virtual void vfunc_10(u8 param_2, u8 param_3) override; // func_0203e060? /* 14 */ virtual bool vfunc_14(unk32 param_2, unk32 param_3) override; - /* 18 */ virtual unk32 vfunc_18(UnkStruct_0203b264 *param_2, unk32 param_3, unk32 param_4) override; - /* 1c */ virtual unk32 vfunc_1C(u16 *param_2, UnkStruct_0203b264 *param_3, unk8 param_4, unk32 param_5) override; - /* 20 */ virtual void vfunc_20(void) override; - /* 24 */ virtual void vfunc_24(void) override; + // /* 18 */ virtual unk32 vfunc_18(UnkStruct_0203b264 *param_2, unk32 param_3, unk32 param_4) override; + // /* 1c */ virtual unk32 vfunc_1C(u16 *param_2, UnkStruct_0203b264 *param_3, unk8 param_4, unk32 param_5) override; + // /* 20 */ virtual void vfunc_20(void) override; + // /* 24 */ virtual void vfunc_24(void) override; /* 28 */ virtual bool vfunc_28(void) override; /* 2c */ virtual void vfunc_2C(void) override; /* 30 */ virtual void vfunc_30(void) override; /* 34 */ virtual unk32 vfunc_34(unk32 param_2) override; /* 38 */ virtual bool vfunc_38(void) override; - /* 3c */ virtual void vfunc_3C(unk32 param_2) override; + /* 3c */ virtual void vfunc_3C(u16 *param_2) override; /* 40 */ virtual void vfunc_40(unk32 param_2, unk32 param_3) override; /* 44 */ virtual void vfunc_44(s32 touchLastX, s32 touchLastY) override; /* 48 */ virtual void vfunc_48(void) override; diff --git a/include/Unknown/UnkStruct_0203dae0.hpp b/include/Unknown/UnkStruct_0203dae0.hpp index 7cb67a00..7ad62946 100644 --- a/include/Unknown/UnkStruct_0203dae0.hpp +++ b/include/Unknown/UnkStruct_0203dae0.hpp @@ -105,7 +105,7 @@ public: //! TODO: fake? /* 34 */ virtual unk32 vfunc_34(unk32 param_2) override; /* 38 */ virtual bool vfunc_38(void) override; - /* 3c */ virtual void vfunc_3C(unk32 param_2) override; + /* 3c */ virtual void vfunc_3C(u16 *param_2) override; /* 40 */ virtual void vfunc_40(unk32 param_2, unk32 param_3) override; /* 44 */ virtual void vfunc_44(s32 touchLastX, s32 touchLastY) override; /* 48 */ virtual void vfunc_48(void) override; diff --git a/include/Unknown/UnkStruct_027e0dbc.hpp b/include/Unknown/UnkStruct_027e0dbc.hpp index a5697c80..dc80545f 100644 --- a/include/Unknown/UnkStruct_027e0dbc.hpp +++ b/include/Unknown/UnkStruct_027e0dbc.hpp @@ -5,6 +5,12 @@ #include "Game/GameMode.hpp" +struct UnkStruct_027e0dbc_24 { + /* 00 */ PAD(0x00, 0x0b); + /* 0b */ u8 mUnk_0b; + /* 0c */ +}; + class UnkStruct_027e0dbc { public: /* 00 */ unk32 mUnk_00; @@ -16,7 +22,7 @@ public: /* 18 */ unk32 mUnk_18; /* 1c */ unk32 mUnk_1c; /* 20 */ unk32 mUnk_20; - /* 24 */ unk32 mUnk_24; + /* 24 */ UnkStruct_027e0dbc_24 *mUnk_24; /* 28 */ unk32 mUnk_28; /* 2c */ unk32 mUnk_2c; @@ -26,8 +32,9 @@ public: void func_ov000_0207b9dc(); void func_ov000_0207b9c8(); void func_ov000_0207b988(GameModeId modeId); + UnkStruct_027e0dbc_24 *GetUnk_24(); - unk32 func_ov003_020f3d5c(unk32 param1); + bool func_ov003_020f3d5c(unk32 param1); void func_ov003_020f3d74(unk32 param1); }; diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index 9e5b4202..342029c3 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -30,7 +30,7 @@ const UnkStruct3 sUnkTable[] = { {4, 2}, {4, 2}, {4, 2}, {8, 2}, {4, 2}, {0xff, 2}, {20, 2}, {6, 2}, {6, 2}, {2, 2}, }; -Actor_UnkStruct_020::Actor_UnkStruct_020() : +ARM Actor_UnkStruct_020::Actor_UnkStruct_020() : mUnk_0c(-1), mUnk_0d(0), mUnk_0e(1), @@ -152,28 +152,11 @@ ARM void Actor::vfunc_18(u32 param1) { func_ov00_0207a1c8(&mUnk_0a4, param1, &mPos); } -struct UnkStruct1 { - /* 00 */ unk32 mUnk_00; - /* 04 */ unk32 mUnk_04; - /* 08 */ unk8 mUnk_08; - /* 09 */ unk8 mUnk_09; - /* 0a */ unk8 mUnk_0a; - /* 0b */ unk8 mUnk_0b; - /* 0c */ unk32 mUnk_0c; - /* 10 */ unk32 mUnk_10; - /* 14 */ unk8 mUnk_14; - /* 15 */ unk8 mUnk_15; - /* 16 */ unk16 mUnk_16; - /* 18 */ unk32 mUnk_18; - /* 1c */ unk32 mUnk_1c; - /* 20 */ -}; extern void *data_027e0d3c; extern unk32 data_02063e4c; extern "C" bool func_ov00_02079470(void *param1, Vec3p *param2, unk32 param3, unk32 param4, unk32 *param5, unk32 *param6, unk32 param7, unk32 param8); -extern "C" void func_01ffbe34(UnkStruct1 *param1); -extern "C" void func_020313c8(unk32 *param1, unk32 param2, unk32 param3, u32 param4, UnkStruct1 *param5); +extern "C" void func_020313c8(unk32 *param1, unk32 param2, unk32 param3, u32 param4, UnkStruct_01ffbe34 *param5); ARM void Actor::vfunc_1c(u16 *param1) { u16 unk1 = mUnk_07a; if (mUnk_129) { @@ -186,7 +169,7 @@ ARM void Actor::vfunc_1c(u16 *param1) { unk32 unk2; unk32 unk3; if (func_ov00_02079470(data_027e0d3c, &mPos, 0, 0, &unk2, &unk3, 0, 0)) { - UnkStruct1 unk4; + UnkStruct_01ffbe34 unk4; func_01ffbe34(&unk4); unk4.mUnk_04 = 1; func_020313c8(&data_02063e4c, unk2, unk3, unk1, &unk4); @@ -229,7 +212,7 @@ ARM void Actor::SetUnk_11c(bool value) { mUnk_11c = value; } -ARM void Actor::vfunc_68() {} +ARM void Actor::vfunc_68(unk32 param1, UnkStruct_020397f8 *param2) {} ARM bool Actor::vfunc_6c() { return true; diff --git a/src/00_Core/Actor/Navi/ActorForceNavi.cpp b/src/00_Core/Actor/Navi/ActorForceNavi.cpp index 04b83c13..91210a72 100644 --- a/src/00_Core/Actor/Navi/ActorForceNavi.cpp +++ b/src/00_Core/Actor/Navi/ActorForceNavi.cpp @@ -5,7 +5,7 @@ ActorType ActorForceNavi::gType = ActorType(ActorTypeId_ForceNavi, (ActorCreateF #pragma section sbss end extern u32 **data_027e0fe0[]; -ActorForceNavi *ActorForceNavi::Create() { +ARM ActorForceNavi *ActorForceNavi::Create() { return new(*data_027e0fe0[0], 4) ActorForceNavi(); } diff --git a/src/08_GameStart/GameStart.cpp b/src/08_GameStart/GameStart.cpp index 98f63118..cf9e79a7 100644 --- a/src/08_GameStart/GameStart.cpp +++ b/src/08_GameStart/GameStart.cpp @@ -31,7 +31,7 @@ void func_02004730(unk32); unk32 *MountCompressedNarc(char *, char *, unk8 *, unk32, unk32); void func_02031e1c(u32 *, const char *); void func_02027ab4(unk32, u32 *, UNK_PTR, UNK_PTR, unk32, unk32, unk32, unk32); -void func_02016fcc(unk32 *); +unk32 func_02016fcc(unk32 *); void func_02004ba8(); void func_02004b94(); void func_02004c68(); @@ -39,7 +39,6 @@ void func_020425e0(); void func_ov000_0207a654(unk32 *); } -extern unk8 data_020691a0; extern unk32 data_ov000_020ec754; extern unk32 data_ov000_020d8795; extern u8 data_ov000_020d88b4[24]; @@ -75,7 +74,7 @@ ARM GameStart::GameStart(GameModeId modeId) : REG_DISPCNT_SUB &= ~0x1F00; REG_DISPCNT_SUB |= 0x0100; - uVar1 = MountCompressedNarc("NLG", "Menu/Bg/NintendoLogo.bin", &data_020691a0, 0xCC00, 1); + uVar1 = MountCompressedNarc("NLG", "Menu/Bg/NintendoLogo.bin", data_020691a0, 0xCC00, 1); func_02031e1c(&local_28, "NLG:nLogo"); func_02031e1c(&local_1c, "NLG:rightTxt"); func_02027ab4(0, &local_28, &local_24, &local_20, 0, 0, 0, 2); diff --git a/src/14_Land/Actor/ActorRupee.cpp b/src/14_Land/Actor/ActorRupee.cpp index 510261ba..e6240251 100644 --- a/src/14_Land/Actor/ActorRupee.cpp +++ b/src/14_Land/Actor/ActorRupee.cpp @@ -20,19 +20,19 @@ extern u32 **data_027e0fe0[]; ActorType ActorRupee::gType = ActorType(ActorTypeId_Rupee, (ActorCreateFunc) ActorRupee::Create, NULL); -ActorRupee *ActorRupee::Create() { +ARM ActorRupee *ActorRupee::Create() { ActorRupee *newRupee = new(*data_027e0fe0[0], 4) ActorRupee(); return newRupee; } static const ActorType_UnkClass data_ov014_021589f4 = ActorType_UnkClass(FLOAT_TO_Q21(0.4662), FLOAT_TO_Q19(0.4661)); -ActorRupee::ActorRupee() { +ARM ActorRupee::ActorRupee() { mRupeeId = 8; mUnk_15c = 0; } -bool ActorRupee::Init() { +ARM bool ActorRupee::Init() { RupeeId rupeeId = (RupeeId) mUnk_020.mUnk_00[0]; mRupeeId = rupeeId; s32 iVar1 = (func_ov14_0213b70c(rupeeId) ? data_ov014_021589f4.mUnk_4 : 0xaa8) >> 1; @@ -80,13 +80,13 @@ bool ActorRupee::Init() { return true; } -bool ActorRupee::vfunc_60() { +ARM bool ActorRupee::vfunc_60() { return func_ov14_0213b70c(mRupeeId); } -void ActorRupee::vfunc_64() {} +ARM void ActorRupee::vfunc_64() {} -void ActorRupee::Move() { +ARM void ActorRupee::Move() { s32 size; ApplyGravity(); @@ -107,7 +107,7 @@ void ActorRupee::Move() { } } -ItemId ActorRupee::GetRupeeCutsceneItemId() { +ARM ItemId ActorRupee::GetRupeeCutsceneItemId() { switch (mRupeeId) { case RupeeId_Green: return ItemId_None; @@ -140,7 +140,7 @@ ItemId ActorRupee::GetRupeeCutsceneItemId() { return ItemId_None; } -void ActorRupee::func_ov14_0213b204(unk32 param1) { +ARM void ActorRupee::func_ov14_0213b204(unk32 param1) { switch (param1) { case 0: mVisible = true; @@ -160,7 +160,7 @@ void ActorRupee::func_ov14_0213b204(unk32 param1) { mUnk_130 = param1; } -void ActorRupee::Update(bool param1) { +ARM void ActorRupee::Update(bool param1) { ItemId cutsceneItemId; s32 uVar3; Vec3p local_1c; @@ -264,14 +264,14 @@ void ActorRupee::Update(bool param1) { KillInBounds(); } -void ActorRupee::vfunc_14(u32 param1) { +ARM void ActorRupee::vfunc_14(u32 param1) { if (func_ov00_020c313c(param1)) { Update(false); } mUnk_0a4.func_ov000_0207a1c8(param1, &mPos); } -void ActorRupee::vfunc_18(u32 param1) { +ARM void ActorRupee::vfunc_18(u32 param1) { if (func_ov00_020c313c(param1)) { Update(true); } @@ -279,13 +279,13 @@ void ActorRupee::vfunc_18(u32 param1) { } #define VFUNC20_COND (param1 ? mUnk_0a4.mUnk_01 : mUnk_0a4.mUnk_00) -void ActorRupee::vfunc_20(bool param1) { +ARM 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) { +ARM 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 @@ -308,7 +308,7 @@ void ActorRupee::func_ov14_0213b5f4(RupeeId id, unk32 param2, Vec3p *param3, boo } } -void ActorRupee::func_ov14_0213b6a4(RupeeId id, Actor_UnkStruct_012 *param2) { +ARM void ActorRupee::func_ov14_0213b6a4(RupeeId id, Actor_UnkStruct_012 *param2) { param2->mUnk_04 = 3; if (func_ov14_0213b70c(id)) { @@ -324,7 +324,7 @@ void ActorRupee::func_ov14_0213b6a4(RupeeId id, Actor_UnkStruct_012 *param2) { } } -bool ActorRupee::func_ov14_0213b70c(RupeeId id) { +ARM bool ActorRupee::func_ov14_0213b70c(RupeeId id) { switch (id) { case RupeeId_BigGreen: case RupeeId_BigRed: diff --git a/src/14_Land/Actor/Character/ActorCharacterBase.cpp b/src/14_Land/Actor/Character/ActorCharacterBase.cpp index 58bbf299..7759ad62 100644 --- a/src/14_Land/Actor/Character/ActorCharacterBase.cpp +++ b/src/14_Land/Actor/Character/ActorCharacterBase.cpp @@ -191,7 +191,7 @@ ARM void ActorCharacterBase::vfunc_84() { ARM void ActorCharacterBase::vfunc_cc() {} ARM void ActorCharacterBase::vfunc_c8() {} ARM void ActorCharacterBase::vfunc_d0() {} -ARM void ActorCharacterBase::vfunc_68() {} +ARM void ActorCharacterBase::vfunc_68(unk32 param1, UnkStruct_020397f8 *param2) {} bool ActorCharacterBase::vfunc_bc() { return (mUnk_158.mUnk_18 & 0xffff0000) == 0x1000000; diff --git a/src/31_Shop/Actor/ActorBeedle.cpp b/src/31_Shop/Actor/ActorBeedle.cpp index 0daf9d03..9a31a491 100644 --- a/src/31_Shop/Actor/ActorBeedle.cpp +++ b/src/31_Shop/Actor/ActorBeedle.cpp @@ -4,7 +4,7 @@ ActorBeedle *ActorBeedle::Create() {} bool ActorBeedle::Init() {} void ActorBeedle::vfunc_c4() {} -void ActorBeedle::vfunc_114() {} +unk32 ActorBeedle::vfunc_114(unk32 param1) {} unk32 ActorBeedle::vfunc_d4() {} static unk32 func_ov031_02180e44(unk32 param1, unk32 param2) {} @@ -14,9 +14,9 @@ void ActorBeedle::vfunc_f8() {} void ActorBeedle::vfunc_fc() {} void ActorBeedle::vfunc_100() {} void ActorBeedle::vfunc_104() {} -unk32 ActorBeedle::vfunc_d8() {} -unk32 ActorBeedle::vfunc_dc() {} -unk32 ActorBeedle::vfunc_e0() {} +unk32 ActorBeedle::vfunc_d8(unk32 param1) {} +unk32 ActorBeedle::vfunc_dc(unk32 param1) {} +unk32 ActorBeedle::vfunc_e0(unk32 param1) {} bool ActorBeedle::vfunc_70() {} bool ActorBeedle::vfunc_6c() {} void ActorBeedle::vfunc_108() {} @@ -26,6 +26,6 @@ void ActorBeedle::vfunc_110() {} unk32 ActorBeedle::func_ov031_021812e4(unk32 param1) {} void ActorBeedle::func_ov031_0218132c(unk32 param1) {} -void ActorBeedle::vfunc_11c() {} +bool ActorBeedle::vfunc_11c() {} void ActorBeedle::vfunc_118() {} ActorBeedle::~ActorBeedle() {} diff --git a/src/31_Shop/Actor/ActorItemSeller.cpp b/src/31_Shop/Actor/ActorItemSeller.cpp index c6d746af..fd1f9a4d 100644 --- a/src/31_Shop/Actor/ActorItemSeller.cpp +++ b/src/31_Shop/Actor/ActorItemSeller.cpp @@ -5,7 +5,7 @@ ActorItemSeller *ActorItemSeller2::Create() {} ActorItemSeller *ActorItemSeller3::Create() {} bool ActorItemSeller::Init() {} -void ActorItemSeller::vfunc_114() {} +unk32 ActorItemSeller::vfunc_114(unk32 param1) {} void ActorItemSeller::vfunc_f4() {} void ActorItemSeller::vfunc_f8() {} void ActorItemSeller::vfunc_fc() {} diff --git a/src/31_Shop/Actor/ActorItemSellerBase.cpp b/src/31_Shop/Actor/ActorItemSellerBase.cpp index d051a075..9309f0d7 100644 --- a/src/31_Shop/Actor/ActorItemSellerBase.cpp +++ b/src/31_Shop/Actor/ActorItemSellerBase.cpp @@ -1,39 +1,436 @@ +#include "Actor/ActorShopItem.hpp" +#include "Actor/ActorSpawner.hpp" +#include "Actor/ActorTypeId.hpp" #include "Actor/Character/ActorItemSeller.hpp" +#include "DTCM/UnkStruct_027e0c54.hpp" +#include "DTCM/UnkStruct_027e0f64.hpp" +#include "Item/Item.hpp" +#include "Item/ItemManager.hpp" +#include "Message/MessageManager.hpp" +#include "Message/MsgProc.hpp" +#include "Player/PlayerLinkBase.hpp" +#include "Player/TouchControl.hpp" +#include "Unknown/UnkStruct_02037628.hpp" +#include "Unknown/UnkStruct_027e0dbc.hpp" +#include "nds/math.h" -ActorItemSellerBase::ActorItemSellerBase() {} -ActorItemSellerBase::~ActorItemSellerBase() {} +static ActorItemSellerBase *sCurrentSeller; -bool ActorItemSellerBase::Init() {} -void ActorItemSellerBase::vfunc_20(bool param1) {} -bool ActorItemSellerBase::vfunc_c0() {} -void ActorItemSellerBase::vfunc_c4() {} +ARM ActorItemSellerBase *ActorItemSellerBase::GetCurrentSeller() { + return sCurrentSeller; +} -void ActorItemSellerBase::func_ov031_0217d588() {} -void ActorItemSellerBase::func_ov031_0217d5c0() {} -void ActorItemSellerBase::func_ov031_0217d5c4() {} -void ActorItemSellerBase::func_ov031_0217d5e8() {} -void ActorItemSellerBase::func_ov031_0217d610() {} -void ActorItemSellerBase::func_ov031_0217d62c() {} -void ActorItemSellerBase::func_ov031_0217d638() {} -void ActorItemSellerBase::func_ov031_0217d6ac() {} -void ActorItemSellerBase::func_ov031_0217d6d0() {} -void ActorItemSellerBase::func_ov031_0217d760() {} -void ActorItemSellerBase::func_ov031_0217d784() {} -void ActorItemSellerBase::func_ov031_0217d7ac() {} -void ActorItemSellerBase::func_ov031_0217d830() {} -void ActorItemSellerBase::func_ov031_0217d858() {} -void ActorItemSellerBase::func_ov031_0217d890() {} -void ActorItemSellerBase::func_ov031_0217d8d0() {} -void ActorItemSellerBase::func_ov031_0217d8dc() {} -void ActorItemSellerBase::func_ov031_0217d93c() {} -void ActorItemSellerBase::func_ov031_0217d974() {} +ARM ActorItemSellerBase::ActorItemSellerBase() { + mUnk_470 = 3; + sCurrentSeller = this; +} -unk32 ActorItemSellerBase::vfunc_d4() {} -bool ActorItemSellerBase::vfunc_8c() {} +ARM ActorItemSellerBase::~ActorItemSellerBase() { + sCurrentSeller = NULL; +} -void ActorItemSellerBase::func_ov031_0217da20(unk32 param1) {} +static const ActorTypeId sShopItemActorTypes[ShopItem_BASE_COUNT] = { + [ShopItem_Test] = ActorTypeId_ShopItemDM, + [ShopItem_SoldOut] = ActorTypeId_ShopItemSoldOut, + [ShopItem_Bombs] = ActorTypeId_ShopItemBombs, + [ShopItem_Arrows] = ActorTypeId_ShopItemArrows, + [ShopItem_Bombchus] = ActorTypeId_ShopItemBombchus, + [ShopItem_HeartContainer] = ActorTypeId_ShopItemHeartContainer, + [ShopItem_BombBag] = ActorTypeId_ShopItemBombBag, + [ShopItem_Quiver] = ActorTypeId_ShopItemQuiver, + [ShopItem_BombchuBag] = ActorTypeId_ShopItemBombchuBag, + [ShopItem_ShipPart] = ActorTypeId_ShopItemShipPart, + [ShopItem_Treasure] = ActorTypeId_ShopItemTreasure, + [ShopItem_CourageGem] = ActorTypeId_ShopItemGem, + [ShopItem_PowerGem] = ActorTypeId_ShopItemGem, + [ShopItem_WisdomGem] = ActorTypeId_ShopItemGem, + [ShopItem_Shield] = ActorTypeId_ShopItemShield, + [ShopItem_RedPotion] = ActorTypeId_ShopItemPotion, + [ShopItem_PurplePotion] = ActorTypeId_ShopItemPotion, + [ShopItem_YellowPotion] = ActorTypeId_ShopItemPotion, +}; -void ActorItemSellerBase::vfunc_68() {} -bool ActorItemSellerBase::CollidesWithLink() {} -void ActorItemSellerBase::vfunc_11c() {} -bool ActorItemSellerBase::IsHitboxTouched(bool param1) {} +ARM bool ActorItemSellerBase::Init() { + UnkStruct_ov031_02183e80 *pUVar2; + unk32 numShipParts; + s32 numTreasure; + + ActorCharacter_1d8 *pUnk_1d8 = &mUnk_1d8; + pUnk_1d8->mUnk_020.mUnk_5c = 0x3800; + pUnk_1d8->mUnk_020.mUnk_64 = 0x4000; + pUnk_1d8->mUnk_020.mUnk_60 = 0x5000; + pUnk_1d8->mUnk_020.mUnk_66 = 0x5555; + mUnk_1d8.mUnk_020.mUnk_8d = 0; + mUnk_1d8.func_ov014_02145e48(0); + mUnk_1d8.mUnk_10->mUnk_0c.mUnk_04 = 0x1000; + this->func_ov031_0217d588(); + + ActorSpawnOptions options; + Vec3p pos = mPos; + pos.x -= FLOAT_TO_Q20(0.8); + pos.y += FLOAT_TO_Q20(0.65); + pos.z += FLOAT_TO_Q20(1.2); + numShipParts = 0; + numTreasure = 0; + for (s32 i = 0; i < 5; ++i) { + ShopItem shopItem = this->vfunc_114(i); + options.mUnk_24 = 0; + ActorTypeId actorType = sShopItemActorTypes[shopItem]; + switch (actorType) { + case ActorTypeId_ShopItemBombBag: + if (!gItemManager->HasItem(ItemFlag_BombBag)) { + actorType = ActorTypeId_ShopItemSoldOut; + } + break; + case ActorTypeId_ShopItemQuiver: + if (!gItemManager->HasItem(ItemFlag_Bow)) { + actorType = ActorTypeId_ShopItemSoldOut; + } + break; + case ActorTypeId_ShopItemBombchuBag: + if (!gItemManager->HasItem(ItemFlag_BombchuBag)) { + actorType = ActorTypeId_ShopItemSoldOut; + } + break; + case ActorTypeId_ShopItemShipPart: + options.mUnk_24 = numShipParts; + if (data_027e0dbc.func_ov003_020f3d5c(numShipParts + 8)) { + actorType = ActorTypeId_ShopItemSoldOut; + } + numShipParts++; + break; + case ActorTypeId_ShopItemTreasure: { + bool unk; + if (mUnk_470 == 2) { + options.mUnk_24 = numTreasure + 2; + unk = data_027e0dbc.func_ov003_020f3d5c(numTreasure + 7); + } else { + options.mUnk_24 = numTreasure; + unk = data_027e0dbc.func_ov003_020f3d5c(numTreasure + 5); + } + if (unk) { + actorType = ActorTypeId_ShopItemSoldOut; + } + numTreasure++; + break; + } + case ActorTypeId_ShopItemGem: + options.mUnk_24 = shopItem - ShopItem_CourageGem; + break; + case ActorTypeId_ShopItemPotion: + options.mUnk_24 = shopItem - ShopItem_RedPotion; + break; + } + gActorSpawner->Spawn(actorType, &pos, &options, &UnkStruct_ov031_02183e80::GetInstance()->mShopItemRefs[i]); + pos.x += FLOAT_TO_Q20(0.4); + if (i % 2 == 0) { + pos.z += FLOAT_TO_Q20(0.8); + } else { + pos.z -= FLOAT_TO_Q20(0.8); + } + } + options.mUnk_24 = 0; + pos.x = mPos.x - FLOAT_TO_Q20(1.0); + pos.y = mPos.y + FLOAT_TO_Q20(0.5); + pos.z = mPos.z + FLOAT_TO_Q20(2.5); + gActorSpawner->Spawn(ActorTypeId_ShopItemBK, &pos, &options, &UnkStruct_ov031_02183e80::GetInstance()->mShopItemRefBK); + pos.x = mPos.x + FLOAT_TO_Q20(1.0); + pos.y = mPos.y + FLOAT_TO_Q20(0.5); + pos.z = mPos.z + FLOAT_TO_Q20(2.5); + gActorSpawner->Spawn(ActorTypeId_ShopItemCC, &pos, &options, &UnkStruct_ov031_02183e80::GetInstance()->mShopItemRefCC); + pos.x = mPos.x + FLOAT_TO_Q20(1.0); + pos.y = mPos.y + FLOAT_TO_Q20(0.5); + pos.z = mPos.z + FLOAT_TO_Q20(2.5); + gActorSpawner->Spawn(ActorTypeId_ShopItemBY, &pos, &options, &UnkStruct_ov031_02183e80::GetInstance()->mShopItemRefBY); + mUnk_478 = 0; + mUnk_47c = data_027e0dbc.GetUnk_24()->mUnk_0b; + mUnk_480 = 0; + return ActorCharacter::Init(); +} + +ARM void ActorItemSellerBase::vfunc_20(bool param1) { + if (!data_027e0c54.func_020361d0()) { + ActorCharacter::vfunc_20(param1); + } +} + +ARM bool ActorItemSellerBase::vfunc_c0() { + if (ActorCharacterBase::vfunc_c0()) { + return true; + } + return mUnk_474 != 0; +} + +ARM void ActorItemSellerBase::vfunc_c4() { + Vec3p offsetPos; + if (mInactive) { + mAngle = mUnk_012; + mUnk_1d8.mUnk_020.mUnk_8d = 0; + return; + } + mPrevPos.x = mPos.x; + mPrevPos.y = mPos.y; + mPrevPos.z = mPos.z; + mUnk_1d8.mActor->GetOffsetPos(&offsetPos); + mUnk_1d8.mUnk_020.func_ov014_0214aa0c(&offsetPos, mUnk_1d8.mActor->mAngle); + switch (mUnk_474) { + case 0: + this->func_ov031_0217d5c0(); + break; + case 1: + this->func_ov031_0217d5e8(); + break; + case 2: + this->func_ov031_0217d638(); + break; + case 3: + case 4: + this->func_ov031_0217d6d0(); + break; + case 5: + this->func_ov031_0217d784(); + break; + case 6: + this->func_ov031_0217d830(); + break; + case 7: + this->func_ov031_0217d890(); + break; + case 8: + this->func_ov031_0217d8dc(); + break; + } + mUnk_1d8.func_ov014_02145cac(); + this->func_ov014_02145178(); +} + +ARM void ActorItemSellerBase::func_ov031_0217d588() { + mUnk_474 = 0; + mUnk_1d8.func_ov014_02145f0c(0); + mUnk_1d8.mUnk_10->mUnk_0c.mUnk_04 = 0x1000; + this->vfunc_b4(); +} + +ARM void ActorItemSellerBase::func_ov031_0217d5c0() {} + +ARM void ActorItemSellerBase::func_ov031_0217d5c4() { + mUnk_474 = 1; + this->func_ov014_0214591c(); + mUnk_1d8.mUnk_10->mUnk_0c.mUnk_04 = 0x1000; +} + +ARM void ActorItemSellerBase::func_ov031_0217d5e8() { + if (this->vfunc_bc()) { + this->func_ov031_0217d588(); + } +} + +ARM void ActorItemSellerBase::func_ov031_0217d610() { + mUnk_474 = 2; + this->vfunc_118(); +} + +ARM void ActorItemSellerBase::func_ov031_0217d62c() { + mUnk_474 = 2; +} + +ARM void ActorItemSellerBase::func_ov031_0217d638() { + if (UnkStruct_ov031_02183e80::GetInstance()->mUnk_000 != 5) { + return; + } + if (UnkStruct_ov031_02183e80::GetInstance()->mUnk_194 != -1) { + this->func_ov031_0217d858(); + return; + } + if (mUnk_470 == 0 && this->vfunc_11c()) { + this->func_ov031_0217d6ac(); + return; + } + this->func_ov031_0217d760(); +} + +ARM bool ActorItemSellerBase::func_ov031_0217d6ac() { + mUnk_474 = 3; + return data_027e0e28.func_ov018_02160a64(-1, 1); +} + +ARM void ActorItemSellerBase::func_ov031_0217d6d0() { + UnkStruct_02037628 auStack_20; + + switch (mUnk_474) { + case 3: + auStack_20.func_02037628(); + if (auStack_20.mUnk_15 == 0) { + mUnk_474 = 4; + this->vfunc_b4(); + this->SetUnk_11c(1); + } + break; + case 4: + default: + if (this->vfunc_bc()) { + this->func_ov031_0217d588(); + } + } +} + +ARM void ActorItemSellerBase::func_ov031_0217d760() { + mUnk_474 = 5; + data_027e0e28.func_ov018_02160a64(-1, 1); +} + +ARM void ActorItemSellerBase::func_ov031_0217d784() { + if (this->vfunc_bc()) { + this->func_ov031_0217d588(); + } +} + +ARM void ActorItemSellerBase::func_ov031_0217d7ac() { + mUnk_474 = 6; + data_027e0f64->mUnk_4->func_ov000_0208726c(0); + data_027e0f64->mUnk_8->func_ov000_0208726c(0); + this->vfunc_b4(); + this->SetUnk_11c(1); + for (s32 i = 0; i < 5; ++i) { + ActorShopItem *shopItem = UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217cdd8(i); + if (shopItem != NULL) { + shopItem->func_ov031_0217f0b4(); + } + } +} + +ARM void ActorItemSellerBase::func_ov031_0217d830() { + if (this->vfunc_bc()) { + this->func_ov031_0217d588(); + } +} + +extern "C" bool HasFreebieCard(); +ARM void ActorItemSellerBase::func_ov031_0217d858() { + + mUnk_474 = 7; + unk32 unk = UnkStruct_ov031_02183e80::GetInstance()->mUnk_194; + data_027e0e28.func_ov018_02160a64(unk, !HasFreebieCard()); +} + +ARM void ActorItemSellerBase::func_ov031_0217d890() { + PlayerLinkBase *pPlayerLink = gPlayerLink; + if (UnkStruct_ov031_02183e80::GetInstance()->mUnk_198 || pPlayerLink->GetStateId() == 6) { + this->func_ov031_0217d8d0(); + } +} + +ARM void ActorItemSellerBase::func_ov031_0217d8d0() { + mUnk_474 = 8; +} + +ARM void ActorItemSellerBase::func_ov031_0217d8dc() { + PlayerLinkBase *pPlayerLink = gPlayerLink; + if (UnkStruct_ov031_02183e80::GetInstance()->mUnk_198 || pPlayerLink->GetStateId() != 6) { + UnkStruct_ov031_02183e80::GetInstance()->mUnk_198 = false; + if (HasFreebieCard()) { + this->func_ov031_0217d7ac(); + } else { + this->func_ov031_0217d62c(); + } + } +} + +ARM void ActorItemSellerBase::func_ov031_0217d93c() { + UnkStruct_027e0f64_04 *unk = data_027e0f64->mUnk_4; + mUnk_1d8.mUnk_020.mUnk_78.x = unk->mUnk_260.x; + mUnk_1d8.mUnk_020.mUnk_78.y = unk->mUnk_260.y; + mUnk_1d8.mUnk_020.mUnk_78.z = unk->mUnk_260.z; + mUnk_1d8.mUnk_020.mUnk_8c = true; + mUnk_1d8.mUnk_020.mUnk_8f = true; +} + +ARM void ActorItemSellerBase::func_ov031_0217d974() { + mUnk_1d8.mUnk_020.mUnk_8c = false; + mUnk_1d8.mUnk_020.mUnk_8f = true; +} + +ARM unk32 ActorItemSellerBase::vfunc_d4() { + return ActorCharacterBase::vfunc_d4(); +} + +ARM bool ActorItemSellerBase::vfunc_8c() { + switch (mUnk_474) { + case 1: + if (UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217ce18()) { + return true; + } + if (mUnk_480) { + mUnk_480 = false; + return true; + } + this->func_ov031_0217d610(); + return false; + case 2: + case 7: + case 8: + return false; + } + return true; +} + +ARM void ActorItemSellerBase::func_ov031_0217da20(unk32 param1) { + UnkStruct_020397f8 *iVar1; + UnkStruct_02037628 auStack_28; + auStack_28.func_020376c0(&mPos); + auStack_28.mUnk_15 = 0; + auStack_28.mUnk_16 = 1; + iVar1 = gMessageManager.func_02036f68(param1, &auStack_28, &mUnk_158); + iVar1->mUnk_38 = &mUnk_478; + iVar1->mUnk_3c = 2; +} + +ARM void ActorItemSellerBase::vfunc_68(unk32 param1, UnkStruct_020397f8 *param2) { + param2->mUnk_38 = &mUnk_478; + param2->mUnk_3c = 2; + ActorCharacterBase::vfunc_68(param1, param2); + if (!mUnk_474) { + this->func_ov031_0217d5c4(); + } +} + +ARM bool ActorItemSellerBase::CollidesWithLink() { + Vec3p pos = mPos; + Vec3p playerPos = gPlayerPos; + if (playerPos.z < pos.z - FLOAT_TO_Q20(1.0)) { + return false; + } + if (playerPos.z > pos.z + FLOAT_TO_Q20(4.0)) { + return false; + } + if (playerPos.x < pos.x - FLOAT_TO_Q20(3.0)) { + return false; + } + if (playerPos.x > pos.x + FLOAT_TO_Q20(3.0)) { + return false; + } + return true; +} + +ARM bool ActorItemSellerBase::vfunc_11c() { + return false; +} + +ARM bool ActorItemSellerBase::IsHitboxTouched(bool param1) { + if (ActorCharacter::IsHitboxTouched(param1)) { + return true; + } + for (s32 i = 0; i < 5; ++i) { + ActorShopItem *shopItem = UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217cdd8(i); + if (param1) { + if (TouchControl::func_0202b864(&shopItem->mPos, 0x4cd, 8)) { + return true; + } + } else { + if (TouchControl::func_0202b894(&shopItem->mPos, 0x4cd, 8)) { + return true; + } + } + } + return false; +} diff --git a/src/31_Shop/Actor/ActorShopItem.cpp b/src/31_Shop/Actor/ActorShopItem.cpp index 9b10209b..903c9e8a 100644 --- a/src/31_Shop/Actor/ActorShopItem.cpp +++ b/src/31_Shop/Actor/ActorShopItem.cpp @@ -1,5 +1,6 @@ #include "Actor/ActorShopItem.hpp" #include "Actor/ActorTypeId.hpp" +#include "Actor/Character/ActorItemSeller.hpp" #include "DTCM/UnkStruct_027e0c54.hpp" #include "DTCM/UnkStruct_027e0f64.hpp" #include "Item/Item.hpp" @@ -566,8 +567,6 @@ ARM void ActorShopItemBase::vfunc_14(u32 param1) { mUnk_0a4.func_ov000_0207a1c8(param1, &mPos); } -extern "C" UnkStruct_ov031_02183e80 *func_ov031_0217bdb8(); - ARM void ActorShopItem::vfunc_14(u32 param1) { Vec3p subroutine_arg0; Vec3p sp24; @@ -575,7 +574,7 @@ ARM void ActorShopItem::vfunc_14(u32 param1) { Vec3p *temp_r0_2; UnkStruct_027e0f64_04 *temp_r3; - if ((this->func_ov00_020c313c(param1) != 0) && (func_ov031_0217bdb8()->mUnk_19a == 0)) { + if ((this->func_ov00_020c313c(param1) != 0) && (UnkStruct_ov031_02183e80::GetInstance()->mUnk_19a == 0)) { temp_r3 = data_027e0f64->mUnk_8; sp24 = temp_r3->mUnk_260; sp24.y = FLOAT_TO_Q20(2.3); @@ -603,7 +602,7 @@ ARM void ActorShopItem::vfunc_14(u32 param1) { } ARM void ActorShopItemShipPart::vfunc_14(u32 param1) { - if (func_ov031_0217bdb8()->mUnk_19a != 0 && mUnk_174 == true) { + if (UnkStruct_ov031_02183e80::GetInstance()->mUnk_19a != 0 && mUnk_174 == true) { mModel = mUnk_178; mPos.x = 0; mPos.y = FLOAT_TO_Q20(10.0); @@ -736,8 +735,6 @@ ARM void ActorShopItem::vfunc_20(bool param1) { data_ov000_020e9c88.func_ov000_0207b89c(param1, &mPos, &func_ov031_0217f114, this); } -extern "C" unk32 func_ov031_0217bda0(); -extern "C" unk32 func_ov031_0217bdac(); extern "C" void CopySingle288(void *src, void *dest); extern "C" void func_ov009_0211d090(Vec3p *, Vec3p *); extern "C" void func_ov009_0211d00c(Mat3p *, Vec3p *); @@ -746,17 +743,15 @@ ARM void ActorShopItemShipPart::vfunc_20(bool param1) { return; } if (mUnk_174 == true && mModel == mUnk_178) { - func_ov031_0217bdb8(); - unk32 size = func_ov031_0217bda0(); + unk32 size = UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217bda0(); UnkStruct_027e0f64_04 *unk1 = data_027e0f64->func_ov000_0208b180(); Mat4x3p MStack_44 = unk1->mUnk_01c; Mat3p tempMatrix; CopySingle288(&MStack_44, &tempMatrix); Mat3p rotation2; Mat3p_func_01ff83a0(&tempMatrix, &rotation2); - func_ov031_0217bdb8(); Vec3p translation; - translation.z = -func_ov031_0217bdac(); + translation.z = -UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217bdac(); translation.x = 0; translation.y = 0; Mat3p_MultiplyVec(&translation, &rotation2, &translation); @@ -767,7 +762,7 @@ ARM void ActorShopItemShipPart::vfunc_20(bool param1) { scale2.z = size; sShip2Model->SetTransform(&scale2, &rotation2, &translation); - Vec3p tempVec = func_ov031_0217bdb8()->mUnk_178; + Vec3p tempVec = UnkStruct_ov031_02183e80::GetInstance()->mUnk_178; translation = tempVec; Vec3p_Add(&mPos, &translation, &translation); Vec3p scale; @@ -837,14 +832,8 @@ ARM void ActorShopItemBY::vfunc_1c(u16 *param1) { } } -struct UnkStruct_ov031_02183e84 { - /* 000 */ PAD(0x000, 0x470); - /* 470 */ unk32 mUnk_470; - /* 474 */ -}; -extern UnkStruct_ov031_02183e84 *func_ov031_0217cf1c(); ARM unk32 ActorShopItem::GetSoldOutMessageId() { - if (func_ov031_0217cf1c()->mUnk_470 == 2) { + if (ActorItemSellerBase::GetCurrentSeller()->mUnk_470 == 2) { return BMG_ID(BMG_FILE_INDEX_FIELD, 0x57); } else { return BMG_ID(BMG_FILE_INDEX_SHIP, 0xff); @@ -860,7 +849,7 @@ ARM unk32 ActorShopItemSoldOut::GetMessageId() { } ARM unk32 ActorShopItemHeartContainer::GetMessageId() { - if (func_ov031_0217cf1c()->mUnk_470 == 2) { + if (ActorItemSellerBase::GetCurrentSeller()->mUnk_470 == 2) { return BMG_ID(BMG_FILE_INDEX_FIELD, 0x44); } else { return BMG_ID(BMG_FILE_INDEX_SHIP, 0x8e); @@ -881,7 +870,7 @@ ARM unk32 ActorShopItemBombs::GetMessageId() { extern "C" bool HasFreebieCard(); ARM unk32 ActorShopItemBombBag::GetMessageId() { - unk32 unk = func_ov031_0217cf1c()->mUnk_470; + unk32 unk = ActorItemSellerBase::GetCurrentSeller()->mUnk_470; if (unk == 2) { return BMG_ID(BMG_FILE_INDEX_FIELD, 0x48); } else if (HasFreebieCard()) { @@ -896,7 +885,7 @@ ARM unk32 ActorShopItemBombchus::GetMessageId() { } ARM unk32 ActorShopItemBombchuBag::GetMessageId() { - switch (func_ov031_0217cf1c()->mUnk_470) { + switch (ActorItemSellerBase::GetCurrentSeller()->mUnk_470) { case 2: return BMG_ID(BMG_FILE_INDEX_FIELD, 0x49); case 1: @@ -908,7 +897,7 @@ ARM unk32 ActorShopItemBombchuBag::GetMessageId() { } ARM unk32 ActorShopItemShipPart::GetMessageId() { - switch (func_ov031_0217cf1c()->mUnk_470) { + switch (ActorItemSellerBase::GetCurrentSeller()->mUnk_470) { case 2: return BMG_ID(BMG_FILE_INDEX_FIELD, 0x46); case 0: @@ -935,7 +924,7 @@ ARM unk32 ActorShopItemShipPart::GetMessageId() { } ARM unk32 ActorShopItemTreasure::GetMessageId() { - switch (func_ov031_0217cf1c()->mUnk_470) { + switch (ActorItemSellerBase::GetCurrentSeller()->mUnk_470) { case 2: return BMG_ID(BMG_FILE_INDEX_FIELD, 0x4a); case 0: @@ -962,7 +951,7 @@ ARM unk32 ActorShopItemTreasure::GetMessageId() { } ARM unk32 ActorShopItemGem::GetMessageId() { - switch (func_ov031_0217cf1c()->mUnk_470) { + switch (ActorItemSellerBase::GetCurrentSeller()->mUnk_470) { case 2: return BMG_ID(BMG_FILE_INDEX_FIELD, 0x4b); case 0: @@ -985,7 +974,7 @@ ARM unk32 ActorShopItemShield::GetMessageId() { ARM unk32 ActorShopItemPotion::GetMessageId() { int iVar1; - if (func_ov031_0217cf1c()->mUnk_470 == 2) { + if (ActorItemSellerBase::GetCurrentSeller()->mUnk_470 == 2) { switch (mShopItemId) { case ShopItem_RedPotion: return BMG_ID(BMG_FILE_INDEX_FIELD, 0x4d); @@ -1022,7 +1011,7 @@ ARM s32 ActorShopItem::GetPrice() { } ARM s32 ActorShopItemHeartContainer::GetPrice() { - if (func_ov031_0217cf1c()->mUnk_470 == 1) { + if (ActorItemSellerBase::GetCurrentSeller()->mUnk_470 == 1) { return 1500; } else { return 2000; @@ -1030,7 +1019,7 @@ ARM s32 ActorShopItemHeartContainer::GetPrice() { } ARM s32 ActorShopItemPotion::GetPrice() { - if (func_ov031_0217cf1c()->mUnk_470 != 2) { + if (ActorItemSellerBase::GetCurrentSeller()->mUnk_470 != 2) { if (mShopItemId == ShopItem_RedPotion) { return 80; } else { @@ -1055,14 +1044,12 @@ ARM s32 ActorShopItemShipPart::GetPrice() { ARM s32 ActorShopItemTreasure::GetPrice() { unk32 unk = mUnk_17c; - return func_ov031_0217bdb8()->mUnk_038[unk]; + return UnkStruct_ov031_02183e80::GetInstance()->mUnk_038[unk]; } -extern "C" unk32 func_ov031_0217ce6c(); ARM unk32 ActorShopItem::vfunc_c0() { s32 price = this->GetPrice(); - func_ov031_0217bdb8(); - unk32 unk = (price * (10 - func_ov031_0217ce6c()) / 10 + 5) / 10 * 10; + unk32 unk = (price * (10 - UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217ce6c()) / 10 + 5) / 10 * 10; if (unk < 10) { unk = 10; } @@ -1073,13 +1060,13 @@ ARM void ActorShopItem::vfunc_c4() { if (mItemId == ItemId_None) { return; } - if (func_ov031_0217bdb8()->func_ov031_0217bd80()) { + if (UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217bd80()) { mUnk_175 = true; } } ARM void ActorShopItemHeartContainer::vfunc_c4() { - switch (func_ov031_0217cf1c()->mUnk_470) { + switch (ActorItemSellerBase::GetCurrentSeller()->mUnk_470) { case 2: gAdventureFlags->Set(AdventureFlag_Unk_103, true); break; @@ -1130,7 +1117,7 @@ ARM void ActorShopItemShipPart::vfunc_c4() { ShipPart part = this->func_ov031_02180248(); ShipType type = this->func_ov031_02180260(); GiveShipPart(part, type); - if (func_ov031_0217bdb8()->func_ov031_0217bd80()) { + if (UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217bd80()) { data_027e0dbc.func_ov003_020f3d74(mUnk_180 + 8); } ActorShopItem::vfunc_c4(); @@ -1140,14 +1127,14 @@ extern "C" void func_ov009_0211cac0(u32); ARM void ActorShopItemTreasure::vfunc_c4() { unk32 unk = this->func_ov031_02180278(); func_ov009_0211cac0(unk); - if (func_ov031_0217bdb8()->func_ov031_0217bd80()) { + if (UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217bd80()) { data_027e0dbc.func_ov003_020f3d74(mUnk_17c + 5); } ActorShopItem::vfunc_c4(); } ARM void ActorShopItemGem::vfunc_c4() { - switch (func_ov031_0217cf1c()->mUnk_470) { + switch (ActorItemSellerBase::GetCurrentSeller()->mUnk_470) { case 2: gAdventureFlags->Set(AdventureFlag_Unk_105, true); break; @@ -1240,17 +1227,17 @@ ARM bool ActorShopItemBY::vfunc_b8() { ARM unk32 ActorShopItemShipPart::func_ov031_02180248() { s32 unk = mUnk_180; - return func_ov031_0217bdb8()->mUnk_01c[unk]; + return UnkStruct_ov031_02183e80::GetInstance()->mUnk_01c[unk]; } ARM unk32 ActorShopItemShipPart::func_ov031_02180260() { s32 unk = mUnk_180; - return func_ov031_0217bdb8()->mUnk_024[unk]; + return UnkStruct_ov031_02183e80::GetInstance()->mUnk_024[unk]; } ARM unk32 ActorShopItemTreasure::func_ov031_02180278() { s32 unk = mUnk_17c; - return func_ov031_0217bdb8()->mUnk_02c[unk]; + return UnkStruct_ov031_02183e80::GetInstance()->mUnk_02c[unk]; } ARM bool ActorShopItemDM::vfunc_d0() { @@ -1318,7 +1305,7 @@ ARM bool ActorShopItemPotion::vfunc_d0() { } void ActorShopItemUnk::func_ov031_02180418() { - if (func_ov031_0217bdb8()->func_ov031_0217cec0()) { + if (UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217cec0()) { return; } mUnk_164 = true; diff --git a/src/Main/Game/Game.cpp b/src/Main/Game/Game.cpp index 65410b8d..b02fa9f9 100644 --- a/src/Main/Game/Game.cpp +++ b/src/Main/Game/Game.cpp @@ -377,7 +377,7 @@ ARM void Game::Run() { func_020363c8(local_28, &data_027e0c54); this->mUnk_0f0 = local_28[0]; this->mMode->vfunc_10(&this->mUnk_0f0); - gMessageManager.func_02036ca4((unk32) & this->mUnk_0f0); + gMessageManager.func_02036ca4(&this->mUnk_0f0); if (this->mModeId == 2) { data_027e103c->func_ov005_02103e58(&this->mUnk_0f0); } diff --git a/src/Main/Message/MessageManager.cpp b/src/Main/Message/MessageManager.cpp index d1eabdd0..0c889f61 100644 --- a/src/Main/Message/MessageManager.cpp +++ b/src/Main/Message/MessageManager.cpp @@ -359,7 +359,7 @@ ARM void MessageManager::func_02036c50(u16 *param_2) { } } -ARM void MessageManager::func_02036ca4(unk32 param_2) { +ARM void MessageManager::func_02036ca4(u16 *param_2) { s32 i; for (i = 0; i < ARRAY_LEN(this->mUnk_28); i++) { @@ -467,19 +467,19 @@ ARM UnkStruct_02038aa0 *MessageManager::func_02036da8(u32 param_2, s16 *param_3) // non-matching ARM void MessageManager::func_02036edc(u32 param_2, u8 param_3) { UnkStruct_020397f8 *pSVar1; - u8 auStack_28[24]; + UnkStruct_02037628 auStack_28; u8 local_13; - func_02037628(auStack_28); + auStack_28.func_02037628(); local_13 = 0; if ((data_02056be4[data_027e077c.mUnk_0] & 1) != 0 && (data_02056be4[data_027e077c.mUnk_0] & 2) == 0) { local_13 = 1; } - auStack_28[21] = local_13; - auStack_28[20] = param_3; - pSVar1 = this->func_02036f68(param_2, auStack_28); + auStack_28.mUnk_15 = local_13; + auStack_28.mUnk_14 = param_3; + pSVar1 = this->func_02036f68(param_2, &auStack_28, NULL); if (pSVar1 != NULL) { if (this->mUnk_04 == 0) { @@ -489,7 +489,8 @@ ARM void MessageManager::func_02036edc(u32 param_2, u8 param_3) { } // non-matching -ARM UnkStruct_020397f8 *MessageManager::func_02036f68(u32 param_2, u8 *param_3) { +ARM UnkStruct_020397f8 *MessageManager::func_02036f68(u32 param_2, UnkStruct_02037628 *param_3, + UnkStruct_ov000_020d18f4 *param_4) { EntryINF1 *pEVar1; UnkStruct_02038aa0 *pSVar2; EntryINF1 *pEVar3; @@ -502,7 +503,7 @@ ARM UnkStruct_020397f8 *MessageManager::func_02036f68(u32 param_2, u8 *param_3) return NULL; } - if (param_3[21] != 0) { + if (param_3->mUnk_15 != 0) { pSVar5 = (UnkStruct_020397f8 *) this->mUnk_28[2]; pSVar2 = this->mUnk_28[3]; } else { @@ -519,7 +520,7 @@ ARM UnkStruct_020397f8 *MessageManager::func_02036f68(u32 param_2, u8 *param_3) if (data_ov000_020eec9c.func_ov000_020d7f18(0x19) == 0 && data_ov000_020eec9c.func_ov000_020d7f18(0x18) == 0 && data_ov000_020eec9c.func_ov000_020d7f18(0x34) == 0 && data_ov000_020eec9c.func_ov000_020d7f18(0x35) == 0 && data_ov000_020eec9c.func_ov000_020d7f18(0x1A) == 0 && data_ov000_020eec9c.func_ov000_020d7f18(0x1B) == 0 && - (param_3[12]) != 7) { + (param_3->mUnk_0c) != 7) { data_ov000_020eec9c.func_ov000_020d77e4(0x1C); } diff --git a/src/Main/Unknown/UnkStruct_020397f8.cpp b/src/Main/Unknown/UnkStruct_020397f8.cpp index 793ee441..3f538f09 100644 --- a/src/Main/Unknown/UnkStruct_020397f8.cpp +++ b/src/Main/Unknown/UnkStruct_020397f8.cpp @@ -748,12 +748,13 @@ ARM unk32 UnkStruct_020397f8::vfunc_1c(u16 *param1, UnkStruct_0203b264 *param2, switch (this->mUnk_57a) { case 0: return this->func_0203905c(param1, param2, param3, param4); - case 1: + case 1: { UnknownMsgChoiceStruct *pChoiceData; s32 i = this->func_0203a30c(); pChoiceData = &this->mUnk_428[this->mUnk_528[i]]; return this->mUnk_164->func_0203cb5c( *param1, (((pChoiceData->mUnk_00->mUnk_0[3] << 0x10) | ((u16 *) pChoiceData->mUnk_00->mUnk_0)[2]) + ~0xFFFE)); + } default: break; } @@ -767,7 +768,8 @@ ARM void UnkStruct_020397f8::vfunc_60(func_0203b410_param1 *param1, unk32 param2 unk16 uVar2; unk32 iVar3; unk32 iVar4; - unk32 uVar5; + unk32 *uVar5; + unk32 uVar5_1; u32 uVar6; uVar6 = 0; @@ -820,12 +822,12 @@ ARM void UnkStruct_020397f8::vfunc_60(func_0203b410_param1 *param1, unk32 param2 iVar3 = func_02016fcc(uVar5); } else { if (this->func_02032fa4() != 0) { - uVar5 = 0x33; + uVar5_1 = 0x33; } else { - uVar5 = 0x32; + uVar5_1 = 0x32; } - data_027e0cbc.func_0203d77c(uVar5, 1, 1); + data_027e0cbc.func_0203d77c(uVar5_1, 1, 1); iVar3 = data_027e0cbc.func_0203d77c(data_02056a00[uVar6 * 0x18] - 2, 1, 1); }