diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 11aae8bfc..f02d2d4cc 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -2753,8 +2753,8 @@ _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_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_6cEi kind:function(arm,size=0x8) addr:0x020c1914 +_ZN5Actor8vfunc_70Ei kind:function(arm,size=0x8) addr:0x020c191c _ZN5Actor8vfunc_74EP8ActorRef kind:function(arm,size=0x4) addr:0x020c1924 _ZN5Actor8vfunc_7cEP8ActorRef kind:function(arm,size=0x4) addr:0x020c1928 _ZN5Actor8vfunc_78Ev kind:function(arm,size=0x8) addr:0x020c192c @@ -2874,7 +2874,7 @@ func_ov000_020c42ec kind:function(arm,size=0x30) addr:0x020c42ec func_ov000_020c431c kind:function(arm,size=0x6c) addr:0x020c431c func_ov000_020c4388 kind:function(arm,size=0x40) addr:0x020c4388 func_ov000_020c43c8 kind:function(arm,size=0x1c0) addr:0x020c43c8 -func_ov000_020c4588 kind:function(arm,size=0x28) addr:0x020c4588 +_ZN23UnkStruct_027e0fec_22c819func_ov000_020c4588Ev kind:function(arm,size=0x28) addr:0x020c4588 func_ov000_020c45b0 kind:function(arm,size=0x14) addr:0x020c45b0 func_ov000_020c45c4 kind:function(arm,size=0x84) addr:0x020c45c4 func_ov000_020c4648 kind:function(arm,size=0x84) addr:0x020c4648 @@ -3651,8 +3651,8 @@ func_ov000_020d85e4 kind:function(arm,size=0x2c) addr:0x020d85e4 func_ov000_020d8610 kind:function(arm,size=0x50) addr:0x020d8610 func_ov000_020d8660 kind:function(arm,size=0x3c) addr:0x020d8660 func_ov000_020d869c kind:function(arm,size=0x7c) addr:0x020d869c -func_ov000_020d8718 kind:function(arm,size=0x10) addr:0x020d8718 -func_ov000_020d8728 kind:function(arm,size=0x14) addr:0x020d8728 +_ZN18UnkStruct_020eed2c19func_ov000_020d8718Ev kind:function(arm,size=0x10) addr:0x020d8718 +_ZN18UnkStruct_020eed2c19func_ov000_020d8728Ev kind:function(arm,size=0x14) addr:0x020d8728 func_ov000_020d873c kind:function(arm,size=0x34) addr:0x020d873c data_ov000_020d8770 kind:data(any) addr:0x020d8770 data_ov000_020d8774 kind:data(any) addr:0x020d8774 diff --git a/config/eur/arm9/overlays/ov003/symbols.txt b/config/eur/arm9/overlays/ov003/symbols.txt index 600d1128a..5f64d4069 100644 --- a/config/eur/arm9/overlays/ov003/symbols.txt +++ b/config/eur/arm9/overlays/ov003/symbols.txt @@ -120,10 +120,10 @@ _ZN18UnkStruct_027e0dbc19func_ov003_020f3d5cEi kind:function(thumb,size=0x16) ad _ZN18UnkStruct_027e0dbc19func_ov003_020f3d74Ei kind:function(thumb,size=0xc) addr:0x020f3d74 func_ov003_020f3d80 kind:function(thumb,size=0xc) addr:0x020f3d80 func_ov003_020f3d8c kind:function(thumb,size=0x6) addr:0x020f3d8c -func_ov003_020f3d94 kind:function(thumb,size=0x6) addr:0x020f3d94 -func_ov003_020f3d9c kind:function(thumb,size=0x6) addr:0x020f3d9c -func_ov003_020f3da4 kind:function(thumb,size=0xc) addr:0x020f3da4 -func_ov003_020f3db0 kind:function(thumb,size=0xc) addr:0x020f3db0 +_ZN18UnkStruct_027e0dbc19func_ov003_020f3d94Eh kind:function(thumb,size=0x6) addr:0x020f3d94 +_ZN18UnkStruct_027e0dbc19func_ov003_020f3d9cEv kind:function(thumb,size=0x6) addr:0x020f3d9c +_ZN18UnkStruct_027e0dbc19func_ov003_020f3da4Ev kind:function(thumb,size=0xc) addr:0x020f3da4 +_ZN18UnkStruct_027e0dbc19func_ov003_020f3db0Ev kind:function(thumb,size=0xc) addr:0x020f3db0 func_ov003_020f3dbc kind:function(thumb,size=0xc) addr:0x020f3dbc func_ov003_020f3dc8 kind:function(thumb,size=0x20) addr:0x020f3dc8 func_ov003_020f3de8 kind:function(thumb,size=0x1a) addr:0x020f3de8 diff --git a/config/eur/arm9/overlays/ov014/symbols.txt b/config/eur/arm9/overlays/ov014/symbols.txt index 00f849fec..7d6228048 100644 --- a/config/eur/arm9/overlays/ov014/symbols.txt +++ b/config/eur/arm9/overlays/ov014/symbols.txt @@ -1061,15 +1061,15 @@ func_ov014_02144750 kind:function(arm,size=0x38) addr:0x02144750 func_ov014_02144788 kind:function(arm,size=0x38) addr:0x02144788 func_ov014_021447c0 kind:function(arm,size=0x1c) addr:0x021447c0 func_ov014_021447dc kind:function(arm,size=0x1c) addr:0x021447dc -_Z19func_ov014_021447f8Pvi kind:function(arm,size=0x14) addr:0x021447f8 local -_Z19func_ov014_0214480cPvi kind:function(arm,size=0x14) addr:0x0214480c local -_Z19func_ov014_02144820Pvi kind:function(arm,size=0x14) addr:0x02144820 local -_Z19func_ov014_02144834Pvi kind:function(arm,size=0x14) addr:0x02144834 local +_Z19func_ov014_021447f8PvP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x14) addr:0x021447f8 local +_Z19func_ov014_0214480cPvP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x14) addr:0x0214480c local +_Z19func_ov014_02144820PvP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x14) addr:0x02144820 local +_Z19func_ov014_02144834PvP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x14) addr:0x02144834 local _Z19func_ov014_0214484824UnkStruct_ov014_02144848P18ActorCharacterBase kind:function(arm,size=0x8c) addr:0x02144848 local -_ZN18ActorCharacterBase8vfunc_d8Ei kind:function(arm,size=0x8) addr:0x021448d4 -_ZN18ActorCharacterBase8vfunc_dcEi kind:function(arm,size=0x8) addr:0x021448dc -_ZN18ActorCharacterBase8vfunc_e0Ei kind:function(arm,size=0x8) addr:0x021448e4 -_ZN18ActorCharacterBase8vfunc_e4Ei kind:function(arm,size=0x8) addr:0x021448ec +_ZN18ActorCharacterBase8vfunc_d8EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x8) addr:0x021448d4 +_ZN18ActorCharacterBase8vfunc_dcEP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x8) addr:0x021448dc +_ZN18ActorCharacterBase8vfunc_e0EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x8) addr:0x021448e4 +_ZN18ActorCharacterBase8vfunc_e4EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x8) addr:0x021448ec _ZN18ActorCharacterBase8vfunc_e8Ett kind:function(arm,size=0xc) addr:0x021448f4 _ZN18ActorCharacterBaseC2Ev kind:function(arm,size=0x4c) addr:0x02144900 _ZN18ActorCharacterBaseD1Ev kind:function(arm,size=0x48) addr:0x0214494c diff --git a/config/eur/arm9/overlays/ov031/delinks.txt b/config/eur/arm9/overlays/ov031/delinks.txt index fa333ce44..5b214a5e0 100644 --- a/config/eur/arm9/overlays/ov031/delinks.txt +++ b/config/eur/arm9/overlays/ov031/delinks.txt @@ -31,6 +31,11 @@ src/31_Shop/Actor/ActorItemSeller.cpp: src/31_Shop/Actor/ActorBeedle.cpp: .text start:0x02180a84 end:0x02181448 + .rodata start:0x02181abc end:0x02181b24 + .init start:0x02182000 end:0x02182040 + .ctor start:0x02182088 end:0x0218208c + .data start:0x02183c00 end:0x02183d68 + .bss start:0x021841b4 end:0x021841d4 src/31_Shop/Actor/ActorTetra.cpp: .text start:0x02181448 end:0x021818a0 diff --git a/config/eur/arm9/overlays/ov031/relocs.txt b/config/eur/arm9/overlays/ov031/relocs.txt index 8f806fd5f..13937dfb8 100644 --- a/config/eur/arm9/overlays/ov031/relocs.txt +++ b/config/eur/arm9/overlays/ov031/relocs.txt @@ -745,7 +745,7 @@ from:0x02180a78 kind:arm_call to:0x0217cfb0 module:overlay(31) from:0x02180a9c kind:arm_call to:0x0202e9dc module:main from:0x02180aa8 kind:arm_call to:0x0217cf2c module:overlay(31) from:0x02180abc kind:load to:0x027e0fe0 module:dtcm -from:0x02180ac4 kind:load to:0x02183c48 module:overlay(31) +from:0x02180ac4 kind:load to:0x02183c40 module:overlay(31) add:0x8 from:0x02180adc kind:arm_call to:0x02145a74 module:overlay(14) from:0x02180b0c kind:arm_call to:0x021451f0 module:overlay(14) from:0x02180b14 kind:arm_call_thumb to:0x020f3d9c module:overlay(3) @@ -763,7 +763,7 @@ from:0x02180bbc kind:load to:0x02181ac8 module:overlay(31) from:0x02180bc0 kind:load to:0x027e0dbc module:dtcm from:0x02180bc4 kind:load to:0x02181abc module:overlay(31) from:0x02180bc8 kind:load to:0x027e0fec module:dtcm -from:0x02180bcc kind:load to:0x02181b10 module:overlay(31) +from:0x02180bcc kind:load to:0x02181ad4 add:0x3c module:overlay(31) from:0x02180bdc kind:arm_call to:0x0217d470 module:overlay(31) from:0x02180c3c kind:arm_call to:0x0202e310 module:main from:0x02180c50 kind:arm_call to:0x0202e310 module:main @@ -808,7 +808,7 @@ from:0x02181338 kind:arm_call_thumb to:0x0207ba90 module:overlay(0) from:0x02181340 kind:arm_call to:0x0217bdb8 module:overlay(31) from:0x02181344 kind:arm_call to:0x0217bd88 module:overlay(31) from:0x0218137c kind:arm_call_thumb to:0x0207ba90 module:overlay(0) -from:0x0218139c kind:arm_call_thumb to:0x020f3d94 module:overlays(1,3) +from:0x0218139c kind:arm_call_thumb to:0x020f3d94 module:overlay(3) from:0x021813a0 kind:arm_call to:0x0217cf1c module:overlay(31) from:0x021813ac kind:load to:0x027e0dbc module:dtcm from:0x021813c0 kind:arm_call to:0x0217cf1c module:overlay(31) diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index e5027138c..017167326 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -1,5 +1,5 @@ _ZN24UnkStruct_ov031_02183e8019func_ov031_0217bd80Ev kind:function(arm,size=0x8) addr:0x0217bd80 -func_ov031_0217bd88 kind:function(arm,size=0x18) addr:0x0217bd88 +_ZN24UnkStruct_ov031_02183e8019func_ov031_0217bd88Ev 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 @@ -242,7 +242,7 @@ _ZN16ActorItemSeller16CreateEv kind:function(arm,size=0x44) addr:0x02180708 _ZN16ActorItemSeller26CreateEv kind:function(arm,size=0x44) addr:0x0218074c _ZN16ActorItemSeller36CreateEv kind:function(arm,size=0x44) addr:0x02180790 _ZN15ActorItemSeller4InitEv kind:function(arm,size=0x84) addr:0x021807d4 -_ZN15ActorItemSeller9vfunc_114Ei kind:function(arm,size=0x108) addr:0x02180858 +_ZN15ActorItemSeller11GetShopItemEi kind:function(arm,size=0x108) addr:0x02180858 _ZN15ActorItemSeller16GetPromptMessageEv kind:function(arm,size=0xc) addr:0x02180960 _ZN15ActorItemSeller18GetPurchaseMessageEv kind:function(arm,size=0xc) addr:0x0218096c _ZN15ActorItemSeller24GetNotEnoughMoneyMessageEv kind:function(arm,size=0xc) addr:0x02180978 @@ -258,28 +258,28 @@ _ZN15ActorItemSellerD1Ev kind:function(arm,size=0x14) addr:0x02180a70 _ZN11ActorBeedle6CreateEv kind:function(arm,size=0x44) addr:0x02180a84 _ZN11ActorBeedle4InitEv kind:function(arm,size=0x108) addr:0x02180ac8 _ZN11ActorBeedle8vfunc_c4Ev kind:function(arm,size=0x118) addr:0x02180bd0 -_ZN11ActorBeedle9vfunc_114Ev kind:function(arm,size=0xf4) addr:0x02180ce8 +_ZN11ActorBeedle11GetShopItemEi kind:function(arm,size=0xf4) addr:0x02180ce8 _ZN11ActorBeedle8vfunc_d4Ev kind:function(arm,size=0x68) addr:0x02180ddc _Z19func_ov031_02180e44ii kind:function(arm,size=0x8) addr:0x02180e44 -_ZN11ActorBeedle8vfunc_f4Ev kind:function(arm,size=0x4c) addr:0x02180e4c -_ZN11ActorBeedle8vfunc_f8Ev kind:function(arm,size=0x4c) addr:0x02180e98 -_ZN11ActorBeedle8vfunc_fcEv kind:function(arm,size=0x1c) addr:0x02180ee4 -_ZN11ActorBeedle9vfunc_100Ev kind:function(arm,size=0x1c) addr:0x02180f00 -_ZN11ActorBeedle9vfunc_104Ev kind:function(arm,size=0x1c) addr:0x02180f1c -_ZN11ActorBeedle8vfunc_d8Ev kind:function(arm,size=0x190) addr:0x02180f38 -_ZN11ActorBeedle8vfunc_dcEv kind:function(arm,size=0x2c) addr:0x021810c8 -_ZN11ActorBeedle8vfunc_e0Ev kind:function(arm,size=0x38) addr:0x021810f4 -_ZN11ActorBeedle8vfunc_70Ev kind:function(arm,size=0x74) addr:0x0218112c -_ZN11ActorBeedle8vfunc_6cEv kind:function(arm,size=0xc8) addr:0x021811a0 +_ZN11ActorBeedle16GetPromptMessageEv kind:function(arm,size=0x4c) addr:0x02180e4c +_ZN11ActorBeedle18GetPurchaseMessageEv kind:function(arm,size=0x4c) addr:0x02180e98 +_ZN11ActorBeedle24GetNotEnoughMoneyMessageEv kind:function(arm,size=0x1c) addr:0x02180ee4 +_ZN11ActorBeedle17GetGoodbyeMessageEv kind:function(arm,size=0x1c) addr:0x02180f00 +_ZN11ActorBeedle23GetInventoryFullMessageEv kind:function(arm,size=0x1c) addr:0x02180f1c +_ZN11ActorBeedle8vfunc_d8EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x190) addr:0x02180f38 +_ZN11ActorBeedle8vfunc_dcEP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x2c) addr:0x021810c8 +_ZN11ActorBeedle8vfunc_e0EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x38) addr:0x021810f4 +_ZN11ActorBeedle8vfunc_70Ei kind:function(arm,size=0x74) addr:0x0218112c +_ZN11ActorBeedle8vfunc_6cEi kind:function(arm,size=0xc8) addr:0x021811a0 _ZN11ActorBeedle9vfunc_108Ev kind:function(arm,size=0x18) addr:0x02181268 -_ZN11ActorBeedle9vfunc_10cEv kind:function(arm,size=0x14) addr:0x02181280 +_ZN11ActorBeedle9vfunc_10cEb kind:function(arm,size=0x14) addr:0x02181280 _ZN11ActorBeedle9vfunc_110Ev kind:function(arm,size=0x50) addr:0x02181294 _ZN11ActorBeedle19func_ov031_021812e4Ei kind:function(arm,size=0x48) addr:0x021812e4 _ZN11ActorBeedle19func_ov031_0218132cEi kind:function(arm,size=0x8c) addr:0x0218132c _ZN11ActorBeedle9vfunc_11cEv kind:function(arm,size=0x40) addr:0x021813b8 _ZN11ActorBeedle9vfunc_118Ev kind:function(arm,size=0x20) addr:0x021813f8 -_ZN11ActorBeedleD1Ev kind:function(arm,size=0x1c) addr:0x02181418 -_ZN11ActorBeedleD0Ev kind:function(arm,size=0x14) addr:0x02181434 +_ZN11ActorBeedleD0Ev kind:function(arm,size=0x1c) addr:0x02181418 +_ZN11ActorBeedleD1Ev kind:function(arm,size=0x14) addr:0x02181434 _ZN10ActorTetra6CreateEv kind:function(arm,size=0x70) addr:0x02181448 _ZN10ActorTetra8vfunc_f4Ev kind:function(arm,size=0x100) addr:0x021814b8 _ZN10ActorTetra8vfunc_c4Ev kind:function(arm,size=0x28) addr:0x021815b8 @@ -296,19 +296,18 @@ unk$1554 kind:data(any) addr:0x02181a6c local @2460 kind:data(any) addr:0x02181a80 local sUnk1$1294 kind:data(any) addr:0x02181a88 local sUnk2$1295 kind:data(any) addr:0x02181a94 local -data_ov031_02181abc kind:data(any) addr:0x02181abc -data_ov031_02181ac8 kind:data(any) addr:0x02181ac8 -data_ov031_02181ad4 kind:data(any) addr:0x02181ad4 -data_ov031_02181b10 kind:data(any) addr:0x02181b10 +sUnk3$1040 kind:data(any) addr:0x02181abc +sUnk2$1033 kind:data(any) addr:0x02181ac8 +sUnk1$1030 kind:data(any) addr:0x02181ad4 data_ov031_02181b24 kind:data(any) addr:0x02181b24 data_ov031_02181b30 kind:data(any) addr:0x02181b30 __sinit_ActorShopItem.cpp kind:function(arm,size=0x3ec) addr:0x02181b6c local __sinit_ActorItemSeller.cpp kind:function(arm,size=0xa8) addr:0x02181f58 local -__sinit_ov031_02182000 kind:function(arm,size=0x40) addr:0x02182000 +__sinit_ActorBeedle.cpp kind:function(arm,size=0x40) addr:0x02182000 __sinit_ov031_02182040 kind:function(arm,size=0x40) addr:0x02182040 .p__sinit_ActorShopItem.cpp kind:data(word) addr:0x02182080 local .p__sinit_ActorItemSeller.cpp kind:data(word) addr:0x02182084 local -.p__sinit_ov031_02182000 kind:data(word) addr:0x02182088 +.p__sinit_ActorBeedle.cpp kind:data(word) addr:0x02182088 .p__sinit_ov031_02182040 kind:data(word) addr:0x0218208c data_ov031_021820a0 kind:data(any) addr:0x021820a0 data_ov031_021820a4 kind:data(any) addr:0x021820a4 @@ -416,15 +415,16 @@ _ZTV17ActorShopItemBase kind:data(any) addr:0x021834a4 @1285 kind:data(any) addr:0x02183ab4 local sShipTypes kind:data(any) addr:0x02183ab8 local _ZTV15ActorItemSeller kind:data(any) addr:0x02183ad8 -data_ov031_02183c00 kind:data(any) addr:0x02183c00 -data_ov031_02183c04 kind:data(any) addr:0x02183c04 -data_ov031_02183c08 kind:data(any) addr:0x02183c08 -data_ov031_02183c0c kind:data(any) addr:0x02183c0c -data_ov031_02183c10 kind:data(any) addr:0x02183c10 -data_ov031_02183c14 kind:data(any) addr:0x02183c14 -data_ov031_02183c18 kind:data(any) addr:0x02183c18 -data_ov031_02183c1c kind:data(any) addr:0x02183c1c -data_ov031_02183c48 kind:data(any) addr:0x02183c48 +@1125 kind:data(any) addr:0x02183c00 local +@1126 kind:data(any) addr:0x02183c04 local +@1127 kind:data(any) addr:0x02183c08 local +@1128 kind:data(any) addr:0x02183c0c local +@1129 kind:data(any) addr:0x02183c10 local +@1130 kind:data(any) addr:0x02183c14 local +@1131 kind:data(any) addr:0x02183c18 local +@1132 kind:data(any) addr:0x02183c1c local +sShipTypes kind:data(any) addr:0x02183c20 local +_ZTV11ActorBeedle kind:data(any) addr:0x02183c40 data_ov031_02183d68 kind:data(any) addr:0x02183d68 data_ov031_02183d6c kind:data(any) addr:0x02183d6c data_ov031_02183d7c kind:data(any) addr:0x02183d7c @@ -479,7 +479,7 @@ _ZN16ActorItemSeller15gTypeE kind:bss addr:0x02184160 _ZN16ActorItemSeller25gTypeE kind:bss addr:0x02184180 @1237 kind:bss addr:0x02184194 local _ZN16ActorItemSeller35gTypeE kind:bss addr:0x021841a0 -data_ov031_021841b4 kind:bss addr:0x021841b4 -data_ov031_021841c0 kind:bss addr:0x021841c0 +@1133 kind:bss addr:0x021841b4 +_ZN11ActorBeedle5gTypeE kind:bss addr:0x021841c0 data_ov031_021841d4 kind:bss addr:0x021841d4 data_ov031_021841e0 kind:bss addr:0x021841e0 diff --git a/config/eur/arm9/symbols.txt b/config/eur/arm9/symbols.txt index f765415a7..4038cf0bc 100644 --- a/config/eur/arm9/symbols.txt +++ b/config/eur/arm9/symbols.txt @@ -828,7 +828,7 @@ func_02019478 kind:function(arm,size=0x44) addr:0x02019478 func_020194bc kind:function(arm,size=0x3c) addr:0x020194bc func_020194f8 kind:function(arm,size=0x3c) addr:0x020194f8 func_02019534 kind:function(arm,size=0x3c) addr:0x02019534 -func_02019570 kind:function(arm,size=0x3c) addr:0x02019570 +_ZN26UnkStruct_027e0fec_22c8_0413func_02019570Eii kind:function(arm,size=0x3c) addr:0x02019570 func_020195ac kind:function(arm,size=0x3c) addr:0x020195ac func_020195e8 kind:function(arm,size=0x3c) addr:0x020195e8 func_02019624 kind:function(arm,size=0x30) addr:0x02019624 @@ -1845,7 +1845,7 @@ _ZN18UnkStruct_020377508vfunc_08Ej kind:function(arm,size=0x10) addr:0x02037844 _ZN18UnkStruct_020377508vfunc_0cEP18UnkStruct_020397f8 kind:function(arm,size=0xc4) addr:0x02037854 _ZN18UnkStruct_020377508vfunc_10Ev kind:function(arm,size=0x234) addr:0x02037918 _ZN18UnkStruct_020377508vfunc_24Ei kind:function(arm,size=0x3c) addr:0x02037b4c -_ZN18UnkStruct_020377508vfunc_28Ei kind:function(arm,size=0x3d0) addr:0x02037b88 +_ZN18UnkStruct_020377508vfunc_28EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x3d0) addr:0x02037b88 _ZN18UnkStruct_020377508vfunc_2cEi kind:function(arm,size=0x660) addr:0x02037f58 _ZN18UnkStruct_0203775020GetLinkStateInteractEv kind:function(arm,size=0x10) addr:0x020385b8 _ZN18UnkStruct_020377508vfunc_30Ev kind:function(arm,size=0x8) addr:0x020385c8 @@ -1858,7 +1858,7 @@ _ZN18UnkStruct_020386d8C2Ev kind:function(arm,size=0x40) addr:0x020386d8 _ZN18UnkStruct_020386d8C1Ev kind:function(arm,size=0x40) addr:0x02038718 _ZN18UnkStruct_020386d88vfunc_08Ej kind:function(arm,size=0x18) addr:0x02038758 _ZN18UnkStruct_020386d88vfunc_24Ei kind:function(arm,size=0x1c) addr:0x02038770 -_ZN18UnkStruct_020386d88vfunc_28Ei kind:function(arm,size=0x18) addr:0x0203878c +_ZN18UnkStruct_020386d88vfunc_28EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x18) addr:0x0203878c _ZN18UnkStruct_020386d88vfunc_30Ev kind:function(arm,size=0x28) addr:0x020387a4 _ZN18UnkStruct_020386d8D2Ev kind:function(arm,size=0x14) addr:0x020387cc func_020387e0 kind:function(thumb,size=0xc) addr:0x020387e0 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index b488f8505..ee82fab31 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -2753,8 +2753,8 @@ _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_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_6cEi kind:function(arm,size=0x8) addr:0x020c18b4 +_ZN5Actor8vfunc_70Ei kind:function(arm,size=0x8) addr:0x020c18bc _ZN5Actor8vfunc_74EP8ActorRef kind:function(arm,size=0x4) addr:0x020c18c4 _ZN5Actor8vfunc_7cEP8ActorRef kind:function(arm,size=0x4) addr:0x020c18c8 _ZN5Actor8vfunc_78Ev kind:function(arm,size=0x8) addr:0x020c18cc @@ -2874,7 +2874,7 @@ func_ov000_020c42ec kind:function(arm,size=0x30) addr:0x020c428c func_ov000_020c431c kind:function(arm,size=0x6c) addr:0x020c42bc func_ov000_020c4388 kind:function(arm,size=0x40) addr:0x020c4328 func_ov000_020c43c8 kind:function(arm,size=0x1c0) addr:0x020c4368 -func_ov000_020c4588 kind:function(arm,size=0x28) addr:0x020c4528 +_ZN23UnkStruct_027e0fec_22c819func_ov000_020c4588Ev kind:function(arm,size=0x28) addr:0x020c4528 func_ov000_020c45b0 kind:function(arm,size=0x14) addr:0x020c4550 func_ov000_020c45c4 kind:function(arm,size=0x84) addr:0x020c4564 func_ov000_020c4648 kind:function(arm,size=0x84) addr:0x020c45e8 @@ -3651,8 +3651,8 @@ func_ov000_020d85e4 kind:function(arm,size=0x2c) addr:0x020d8584 func_ov000_020d8610 kind:function(arm,size=0x50) addr:0x020d85b0 func_ov000_020d8660 kind:function(arm,size=0x3c) addr:0x020d8600 func_ov000_020d869c kind:function(arm,size=0x7c) addr:0x020d863c -func_ov000_020d8718 kind:function(arm,size=0x10) addr:0x020d86b8 -func_ov000_020d8728 kind:function(arm,size=0x14) addr:0x020d86c8 +_ZN18UnkStruct_020eed2c19func_ov000_020d8718Ev kind:function(arm,size=0x10) addr:0x020d86b8 +_ZN18UnkStruct_020eed2c19func_ov000_020d8728Ev kind:function(arm,size=0x14) addr:0x020d86c8 func_ov000_020d873c kind:function(arm,size=0x34) addr:0x020d86dc data_ov000_020d8770 kind:data(any) addr:0x020d8710 data_ov000_020d8774 kind:data(any) addr:0x020d8714 diff --git a/config/usa/arm9/overlays/ov003/symbols.txt b/config/usa/arm9/overlays/ov003/symbols.txt index 94cd12066..be781fc3f 100644 --- a/config/usa/arm9/overlays/ov003/symbols.txt +++ b/config/usa/arm9/overlays/ov003/symbols.txt @@ -120,10 +120,10 @@ _ZN18UnkStruct_027e0dbc19func_ov003_020f3d5cEi kind:function(thumb,size=0x16) ad _ZN18UnkStruct_027e0dbc19func_ov003_020f3d74Ei kind:function(thumb,size=0xc) addr:0x020f3d14 func_ov003_020f3d80 kind:function(thumb,size=0xc) addr:0x020f3d20 func_ov003_020f3d8c kind:function(thumb,size=0x6) addr:0x020f3d2c -func_ov003_020f3d94 kind:function(thumb,size=0x6) addr:0x020f3d34 -func_ov003_020f3d9c kind:function(thumb,size=0x6) addr:0x020f3d3c -func_ov003_020f3da4 kind:function(thumb,size=0xc) addr:0x020f3d44 -func_ov003_020f3db0 kind:function(thumb,size=0xc) addr:0x020f3d50 +_ZN18UnkStruct_027e0dbc19func_ov003_020f3d94Eh kind:function(thumb,size=0x6) addr:0x020f3d34 +_ZN18UnkStruct_027e0dbc19func_ov003_020f3d9cEv kind:function(thumb,size=0x6) addr:0x020f3d3c +_ZN18UnkStruct_027e0dbc19func_ov003_020f3da4Ev kind:function(thumb,size=0xc) addr:0x020f3d44 +_ZN18UnkStruct_027e0dbc19func_ov003_020f3db0Ev kind:function(thumb,size=0xc) addr:0x020f3d50 func_ov003_020f3dbc kind:function(thumb,size=0xc) addr:0x020f3d5c func_ov003_020f3dc8 kind:function(thumb,size=0x20) addr:0x020f3d68 func_ov003_020f3de8 kind:function(thumb,size=0x1a) addr:0x020f3d88 diff --git a/config/usa/arm9/overlays/ov014/symbols.txt b/config/usa/arm9/overlays/ov014/symbols.txt index f4dc05c25..9c2d6762a 100644 --- a/config/usa/arm9/overlays/ov014/symbols.txt +++ b/config/usa/arm9/overlays/ov014/symbols.txt @@ -1061,15 +1061,15 @@ func_ov014_02144750 kind:function(arm,size=0x38) addr:0x021446ac func_ov014_02144788 kind:function(arm,size=0x38) addr:0x021446e4 func_ov014_021447c0 kind:function(arm,size=0x1c) addr:0x0214471c func_ov014_021447dc kind:function(arm,size=0x1c) addr:0x02144738 -_Z19func_ov014_021447f8Pvi kind:function(arm,size=0x14) addr:0x02144754 local -_Z19func_ov014_0214480cPvi kind:function(arm,size=0x14) addr:0x02144768 local -_Z19func_ov014_02144820Pvi kind:function(arm,size=0x14) addr:0x0214477c local -_Z19func_ov014_02144834Pvi kind:function(arm,size=0x14) addr:0x02144790 local +_Z19func_ov014_021447f8PvP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x14) addr:0x02144754 local +_Z19func_ov014_0214480cPvP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x14) addr:0x02144768 local +_Z19func_ov014_02144820PvP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x14) addr:0x0214477c local +_Z19func_ov014_02144834PvP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x14) addr:0x02144790 local _Z19func_ov014_0214484824UnkStruct_ov014_02144848P18ActorCharacterBase kind:function(arm,size=0x8c) addr:0x021447a4 local -_ZN18ActorCharacterBase8vfunc_d8Ei kind:function(arm,size=0x8) addr:0x02144830 -_ZN18ActorCharacterBase8vfunc_dcEi kind:function(arm,size=0x8) addr:0x02144838 -_ZN18ActorCharacterBase8vfunc_e0Ei kind:function(arm,size=0x8) addr:0x02144840 -_ZN18ActorCharacterBase8vfunc_e4Ei kind:function(arm,size=0x8) addr:0x02144848 +_ZN18ActorCharacterBase8vfunc_d8EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x8) addr:0x02144830 +_ZN18ActorCharacterBase8vfunc_dcEP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x8) addr:0x02144838 +_ZN18ActorCharacterBase8vfunc_e0EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x8) addr:0x02144840 +_ZN18ActorCharacterBase8vfunc_e4EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x8) addr:0x02144848 _ZN18ActorCharacterBase8vfunc_e8Ett kind:function(arm,size=0xc) addr:0x02144850 _ZN18ActorCharacterBaseC2Ev kind:function(arm,size=0x4c) addr:0x0214485c _ZN18ActorCharacterBaseD1Ev kind:function(arm,size=0x48) addr:0x021448a8 diff --git a/config/usa/arm9/overlays/ov031/delinks.txt b/config/usa/arm9/overlays/ov031/delinks.txt index 1803b4323..f5374b463 100644 --- a/config/usa/arm9/overlays/ov031/delinks.txt +++ b/config/usa/arm9/overlays/ov031/delinks.txt @@ -31,6 +31,11 @@ src/31_Shop/Actor/ActorItemSeller.cpp: src/31_Shop/Actor/ActorBeedle.cpp: .text start:0x021809e4 end:0x021813a8 + .rodata start:0x02181a1c end:0x02181a84 + .init start:0x02181f60 end:0x02181fa0 + .ctor start:0x02181fe8 end:0x02181fec + .data start:0x02183b60 end:0x02183cc8 + .bss start:0x02184114 end:0x02184134 src/31_Shop/Actor/ActorTetra.cpp: .text start:0x021813a8 end:0x02181800 diff --git a/config/usa/arm9/overlays/ov031/relocs.txt b/config/usa/arm9/overlays/ov031/relocs.txt index 43c25370a..9c84c605b 100644 --- a/config/usa/arm9/overlays/ov031/relocs.txt +++ b/config/usa/arm9/overlays/ov031/relocs.txt @@ -745,7 +745,7 @@ from:0x021809d8 kind:arm_call to:0x0217cf10 module:overlay(31) from:0x021809fc kind:arm_call to:0x0202e9d8 module:main from:0x02180a08 kind:arm_call to:0x0217ce8c module:overlay(31) from:0x02180a1c kind:load to:0x027e0fe0 module:dtcm -from:0x02180a24 kind:load to:0x02183ba8 module:overlay(31) +from:0x02180a24 kind:load to:0x02183ba0 module:overlay(31) add:0x8 from:0x02180a3c kind:arm_call to:0x021459d0 module:overlay(14) from:0x02180a6c kind:arm_call to:0x0214514c module:overlay(14) from:0x02180a74 kind:arm_call_thumb to:0x020f3d3c module:overlay(3) @@ -763,7 +763,7 @@ from:0x02180b1c kind:load to:0x02181a28 module:overlay(31) from:0x02180b20 kind:load to:0x027e0dbc module:dtcm from:0x02180b24 kind:load to:0x02181a1c module:overlay(31) from:0x02180b28 kind:load to:0x027e0fec module:dtcm -from:0x02180b2c kind:load to:0x02181a70 module:overlay(31) +from:0x02180b2c kind:load to:0x02181a34 add:0x3c module:overlay(31) from:0x02180b3c kind:arm_call to:0x0217d3d0 module:overlay(31) from:0x02180b9c kind:arm_call to:0x0202e30c module:main from:0x02180bb0 kind:arm_call to:0x0202e30c module:main @@ -808,7 +808,7 @@ from:0x02181298 kind:arm_call_thumb to:0x0207ba30 module:overlay(0) from:0x021812a0 kind:arm_call to:0x0217bd18 module:overlay(31) from:0x021812a4 kind:arm_call to:0x0217bce8 module:overlay(31) from:0x021812dc kind:arm_call_thumb to:0x0207ba30 module:overlay(0) -from:0x021812fc kind:arm_call_thumb to:0x020f3d34 module:overlays(1,3) +from:0x021812fc kind:arm_call_thumb to:0x020f3d34 module:overlay(3) from:0x02181300 kind:arm_call to:0x0217ce7c module:overlay(31) from:0x0218130c kind:load to:0x027e0dbc module:dtcm from:0x02181320 kind:arm_call to:0x0217ce7c module:overlay(31) diff --git a/config/usa/arm9/overlays/ov031/symbols.txt b/config/usa/arm9/overlays/ov031/symbols.txt index 39758fa74..b4c6d1afd 100644 --- a/config/usa/arm9/overlays/ov031/symbols.txt +++ b/config/usa/arm9/overlays/ov031/symbols.txt @@ -1,5 +1,5 @@ _ZN24UnkStruct_ov031_02183e8019func_ov031_0217bd80Ev kind:function(arm,size=0x8) addr:0x0217bce0 -func_ov031_0217bd88 kind:function(arm,size=0x18) addr:0x0217bce8 +_ZN24UnkStruct_ov031_02183e8019func_ov031_0217bd88Ev 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 @@ -242,7 +242,7 @@ _ZN16ActorItemSeller16CreateEv kind:function(arm,size=0x44) addr:0x02180668 _ZN16ActorItemSeller26CreateEv kind:function(arm,size=0x44) addr:0x021806ac _ZN16ActorItemSeller36CreateEv kind:function(arm,size=0x44) addr:0x021806f0 _ZN15ActorItemSeller4InitEv kind:function(arm,size=0x84) addr:0x02180734 -_ZN15ActorItemSeller9vfunc_114Ei kind:function(arm,size=0x108) addr:0x021807b8 +_ZN15ActorItemSeller11GetShopItemEi kind:function(arm,size=0x108) addr:0x021807b8 _ZN15ActorItemSeller16GetPromptMessageEv kind:function(arm,size=0xc) addr:0x021808c0 _ZN15ActorItemSeller18GetPurchaseMessageEv kind:function(arm,size=0xc) addr:0x021808cc _ZN15ActorItemSeller24GetNotEnoughMoneyMessageEv kind:function(arm,size=0xc) addr:0x021808d8 @@ -258,28 +258,28 @@ _ZN15ActorItemSellerD1Ev kind:function(arm,size=0x14) addr:0x021809d0 _ZN11ActorBeedle6CreateEv kind:function(arm,size=0x44) addr:0x021809e4 _ZN11ActorBeedle4InitEv kind:function(arm,size=0x108) addr:0x02180a28 _ZN11ActorBeedle8vfunc_c4Ev kind:function(arm,size=0x118) addr:0x02180b30 -_ZN11ActorBeedle9vfunc_114Ev kind:function(arm,size=0xf4) addr:0x02180c48 +_ZN11ActorBeedle11GetShopItemEi kind:function(arm,size=0xf4) addr:0x02180c48 _ZN11ActorBeedle8vfunc_d4Ev kind:function(arm,size=0x68) addr:0x02180d3c _Z19func_ov031_02180e44ii kind:function(arm,size=0x8) addr:0x02180da4 -_ZN11ActorBeedle8vfunc_f4Ev kind:function(arm,size=0x4c) addr:0x02180dac -_ZN11ActorBeedle8vfunc_f8Ev kind:function(arm,size=0x4c) addr:0x02180df8 -_ZN11ActorBeedle8vfunc_fcEv kind:function(arm,size=0x1c) addr:0x02180e44 -_ZN11ActorBeedle9vfunc_100Ev kind:function(arm,size=0x1c) addr:0x02180e60 -_ZN11ActorBeedle9vfunc_104Ev kind:function(arm,size=0x1c) addr:0x02180e7c -_ZN11ActorBeedle8vfunc_d8Ev kind:function(arm,size=0x190) addr:0x02180e98 -_ZN11ActorBeedle8vfunc_dcEv kind:function(arm,size=0x2c) addr:0x02181028 -_ZN11ActorBeedle8vfunc_e0Ev kind:function(arm,size=0x38) addr:0x02181054 -_ZN11ActorBeedle8vfunc_70Ev kind:function(arm,size=0x74) addr:0x0218108c -_ZN11ActorBeedle8vfunc_6cEv kind:function(arm,size=0xc8) addr:0x02181100 +_ZN11ActorBeedle16GetPromptMessageEv kind:function(arm,size=0x4c) addr:0x02180dac +_ZN11ActorBeedle18GetPurchaseMessageEv kind:function(arm,size=0x4c) addr:0x02180df8 +_ZN11ActorBeedle24GetNotEnoughMoneyMessageEv kind:function(arm,size=0x1c) addr:0x02180e44 +_ZN11ActorBeedle17GetGoodbyeMessageEv kind:function(arm,size=0x1c) addr:0x02180e60 +_ZN11ActorBeedle23GetInventoryFullMessageEv kind:function(arm,size=0x1c) addr:0x02180e7c +_ZN11ActorBeedle8vfunc_d8EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x190) addr:0x02180e98 +_ZN11ActorBeedle8vfunc_dcEP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x2c) addr:0x02181028 +_ZN11ActorBeedle8vfunc_e0EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x38) addr:0x02181054 +_ZN11ActorBeedle8vfunc_70Ei kind:function(arm,size=0x74) addr:0x0218108c +_ZN11ActorBeedle8vfunc_6cEi kind:function(arm,size=0xc8) addr:0x02181100 _ZN11ActorBeedle9vfunc_108Ev kind:function(arm,size=0x18) addr:0x021811c8 -_ZN11ActorBeedle9vfunc_10cEv kind:function(arm,size=0x14) addr:0x021811e0 +_ZN11ActorBeedle9vfunc_10cEb kind:function(arm,size=0x14) addr:0x021811e0 _ZN11ActorBeedle9vfunc_110Ev kind:function(arm,size=0x50) addr:0x021811f4 _ZN11ActorBeedle19func_ov031_021812e4Ei kind:function(arm,size=0x48) addr:0x02181244 _ZN11ActorBeedle19func_ov031_0218132cEi kind:function(arm,size=0x8c) addr:0x0218128c _ZN11ActorBeedle9vfunc_11cEv kind:function(arm,size=0x40) addr:0x02181318 _ZN11ActorBeedle9vfunc_118Ev kind:function(arm,size=0x20) addr:0x02181358 -_ZN11ActorBeedleD1Ev kind:function(arm,size=0x1c) addr:0x02181378 -_ZN11ActorBeedleD0Ev kind:function(arm,size=0x14) addr:0x02181394 +_ZN11ActorBeedleD0Ev kind:function(arm,size=0x1c) addr:0x02181378 +_ZN11ActorBeedleD1Ev kind:function(arm,size=0x14) addr:0x02181394 _ZN10ActorTetra6CreateEv kind:function(arm,size=0x70) addr:0x021813a8 _ZN10ActorTetra8vfunc_f4Ev kind:function(arm,size=0x100) addr:0x02181418 _ZN10ActorTetra8vfunc_c4Ev kind:function(arm,size=0x28) addr:0x02181518 @@ -296,19 +296,18 @@ unk$1554 kind:data(any) addr:0x021819cc local @2460 kind:data(any) addr:0x021819e0 local sUnk1$1294 kind:data(any) addr:0x021819e8 local sUnk2$1295 kind:data(any) addr:0x021819f4 local -data_ov031_02181abc kind:data(any) addr:0x02181a1c -data_ov031_02181ac8 kind:data(any) addr:0x02181a28 -data_ov031_02181ad4 kind:data(any) addr:0x02181a34 -data_ov031_02181b10 kind:data(any) addr:0x02181a70 +sUnk3$1040 kind:data(any) addr:0x02181a1c +sUnk2$1033 kind:data(any) addr:0x02181a28 +sUnk1$1030 kind:data(any) addr:0x02181a34 data_ov031_02181b24 kind:data(any) addr:0x02181a84 data_ov031_02181b30 kind:data(any) addr:0x02181a90 __sinit_ActorShopItem.cpp kind:function(arm,size=0x3ec) addr:0x02181acc local __sinit_ActorItemSeller.cpp kind:function(arm,size=0xa8) addr:0x02181eb8 local -__sinit_ov031_02182000 kind:function(arm,size=0x40) addr:0x02181f60 +__sinit_ActorBeedle.cpp kind:function(arm,size=0x40) addr:0x02181f60 __sinit_ov031_02182040 kind:function(arm,size=0x40) addr:0x02181fa0 .p__sinit_ActorShopItem.cpp kind:data(word) addr:0x02181fe0 local .p__sinit_ActorItemSeller.cpp kind:data(word) addr:0x02181fe4 local -.p__sinit_ov031_02182000 kind:data(word) addr:0x02181fe8 +.p__sinit_ActorBeedle.cpp kind:data(word) addr:0x02181fe8 .p__sinit_ov031_02182040 kind:data(word) addr:0x02181fec data_ov031_021820a0 kind:data(any) addr:0x02182000 data_ov031_021820a4 kind:data(any) addr:0x02182004 @@ -416,15 +415,16 @@ _ZTV17ActorShopItemBase kind:data(any) addr:0x02183404 @1285 kind:data(any) addr:0x02183a14 local sShipTypes kind:data(any) addr:0x02183a18 local _ZTV15ActorItemSeller kind:data(any) addr:0x02183a38 -data_ov031_02183c00 kind:data(any) addr:0x02183b60 -data_ov031_02183c04 kind:data(any) addr:0x02183b64 -data_ov031_02183c08 kind:data(any) addr:0x02183b68 -data_ov031_02183c0c kind:data(any) addr:0x02183b6c -data_ov031_02183c10 kind:data(any) addr:0x02183b70 -data_ov031_02183c14 kind:data(any) addr:0x02183b74 -data_ov031_02183c18 kind:data(any) addr:0x02183b78 -data_ov031_02183c1c kind:data(any) addr:0x02183b7c -data_ov031_02183c48 kind:data(any) addr:0x02183ba8 +@1125 kind:data(any) addr:0x02183b60 local +@1126 kind:data(any) addr:0x02183b64 local +@1127 kind:data(any) addr:0x02183b68 local +@1128 kind:data(any) addr:0x02183b6c local +@1129 kind:data(any) addr:0x02183b70 local +@1130 kind:data(any) addr:0x02183b74 local +@1131 kind:data(any) addr:0x02183b78 local +@1132 kind:data(any) addr:0x02183b7c local +sShipTypes kind:data(any) addr:0x02183b80 local +_ZTV11ActorBeedle kind:data(any) addr:0x02183ba0 data_ov031_02183d68 kind:data(any) addr:0x02183cc8 data_ov031_02183d6c kind:data(any) addr:0x02183ccc data_ov031_02183d7c kind:data(any) addr:0x02183cdc @@ -479,7 +479,7 @@ _ZN16ActorItemSeller15gTypeE kind:bss addr:0x021840c0 _ZN16ActorItemSeller25gTypeE kind:bss addr:0x021840e0 @1237 kind:bss addr:0x021840f4 local _ZN16ActorItemSeller35gTypeE kind:bss addr:0x02184100 -data_ov031_021841b4 kind:bss addr:0x02184114 -data_ov031_021841c0 kind:bss addr:0x02184120 +@1133 kind:bss addr:0x02184114 +_ZN11ActorBeedle5gTypeE kind:bss addr:0x02184120 data_ov031_021841d4 kind:bss addr:0x02184134 data_ov031_021841e0 kind:bss addr:0x02184140 diff --git a/config/usa/arm9/symbols.txt b/config/usa/arm9/symbols.txt index f46857bd7..b7b3d6a50 100644 --- a/config/usa/arm9/symbols.txt +++ b/config/usa/arm9/symbols.txt @@ -828,7 +828,7 @@ func_02019478 kind:function(arm,size=0x44) addr:0x02019478 func_020194bc kind:function(arm,size=0x3c) addr:0x020194bc func_020194f8 kind:function(arm,size=0x3c) addr:0x020194f8 func_02019534 kind:function(arm,size=0x3c) addr:0x02019534 -func_02019570 kind:function(arm,size=0x3c) addr:0x02019570 +_ZN26UnkStruct_027e0fec_22c8_0413func_02019570Eii kind:function(arm,size=0x3c) addr:0x02019570 func_020195ac kind:function(arm,size=0x3c) addr:0x020195ac func_020195e8 kind:function(arm,size=0x3c) addr:0x020195e8 func_02019624 kind:function(arm,size=0x30) addr:0x02019624 @@ -1845,7 +1845,7 @@ _ZN18UnkStruct_020377508vfunc_08Ej kind:function(arm,size=0x10) addr:0x02037800 _ZN18UnkStruct_020377508vfunc_0cEP18UnkStruct_020397f8 kind:function(arm,size=0xc4) addr:0x02037810 _ZN18UnkStruct_020377508vfunc_10Ev kind:function(arm,size=0x234) addr:0x020378d4 _ZN18UnkStruct_020377508vfunc_24Ei kind:function(arm,size=0x3c) addr:0x02037b08 -_ZN18UnkStruct_020377508vfunc_28Ei kind:function(arm,size=0x3d0) addr:0x02037b44 +_ZN18UnkStruct_020377508vfunc_28EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x3d0) addr:0x02037b44 _ZN18UnkStruct_020377508vfunc_2cEi kind:function(arm,size=0x660) addr:0x02037f14 _ZN18UnkStruct_0203775020GetLinkStateInteractEv kind:function(arm,size=0x10) addr:0x02038574 _ZN18UnkStruct_020377508vfunc_30Ev kind:function(arm,size=0x8) addr:0x02038584 @@ -1858,7 +1858,7 @@ _ZN18UnkStruct_020386d8C2Ev kind:function(arm,size=0x40) addr:0x02038694 _ZN18UnkStruct_020386d8C1Ev kind:function(arm,size=0x40) addr:0x020386d4 _ZN18UnkStruct_020386d88vfunc_08Ej kind:function(arm,size=0x18) addr:0x02038714 _ZN18UnkStruct_020386d88vfunc_24Ei kind:function(arm,size=0x1c) addr:0x0203872c -_ZN18UnkStruct_020386d88vfunc_28Ei kind:function(arm,size=0x18) addr:0x02038748 +_ZN18UnkStruct_020386d88vfunc_28EP27ActorCharacterBase_vfunc_d8 kind:function(arm,size=0x18) addr:0x02038748 _ZN18UnkStruct_020386d88vfunc_30Ev kind:function(arm,size=0x28) addr:0x02038760 _ZN18UnkStruct_020386d8D2Ev kind:function(arm,size=0x14) addr:0x02038788 func_020387e0 kind:function(thumb,size=0xc) addr:0x0203879c diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index c313e5aaf..dcf9e8853 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -202,8 +202,8 @@ class Actor : public SysObject { /* 60 */ virtual bool vfunc_60(); /* 64 */ virtual void vfunc_64(); /* 68 */ virtual void vfunc_68(unk32 param1, UnkStruct_020397f8 *param2); - /* 6c */ virtual bool vfunc_6c(); - /* 70 */ virtual bool vfunc_70(); + /* 6c */ virtual bool vfunc_6c(unk32 param1); + /* 70 */ virtual bool vfunc_70(unk32 param1); /* 74 */ virtual void vfunc_74(ActorRef *ref); /* 78 */ virtual bool vfunc_78(); /* 7c */ virtual void vfunc_7c(ActorRef *ref); diff --git a/include/Actor/ActorShopItem.hpp b/include/Actor/ActorShopItem.hpp index 022f3ba93..9ae654061 100644 --- a/include/Actor/ActorShopItem.hpp +++ b/include/Actor/ActorShopItem.hpp @@ -474,6 +474,7 @@ struct UnkStruct_ov031_02183e80 { static UnkStruct_ov031_02183e80 *GetInstance(); bool func_ov031_0217bd80(); + bool func_ov031_0217bd88(); unk32 func_ov031_0217bda0(); unk32 func_ov031_0217bdac(); ActorShopItem *func_ov031_0217cdd8(unk32 param1); diff --git a/include/Actor/ActorTypeId.hpp b/include/Actor/ActorTypeId.hpp index fc4a5b232..3a16119d6 100644 --- a/include/Actor/ActorTypeId.hpp +++ b/include/Actor/ActorTypeId.hpp @@ -35,6 +35,7 @@ enum ActorTypeId_ { ActorTypeId_ItemSeller1 = 'ITSN', ActorTypeId_ItemSeller2 = 'ITS2', ActorTypeId_ItemSeller3 = 'ITS3', + ActorTypeId_Beedle = 'SITS', ActorTypeId_RefillArrows = 'FLAL', ActorTypeId_RefillBombs = 'FLBM', diff --git a/include/Actor/Character/ActorBeedle.hpp b/include/Actor/Character/ActorBeedle.hpp new file mode 100644 index 000000000..0328f59d9 --- /dev/null +++ b/include/Actor/Character/ActorBeedle.hpp @@ -0,0 +1,45 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Actor/Character/ActorItemSeller.hpp" + +class ActorBeedle : public ActorItemSellerBase { +public: + static ActorType gType; + + /* 000 (base) */ + /* 484 */ unk32 mUnk_484; + /* 488 */ unk32 mUnk_488; + /* 48c */ unk32 mUnk_48c; + /* 490 */ bool mUnk_490; + /* 491 */ PAD(0x491, 0x494); + /* 494 */ + + /* 000 (implicit dtor) */ + /* 008 */ virtual bool Init() override; + /* 06c */ virtual bool vfunc_6c(unk32 param1) override; + /* 070 */ virtual bool vfunc_70(unk32 param1) override; + /* 0c4 */ virtual void vfunc_c4() override; + /* 0d4 */ virtual unk32 vfunc_d4() override; + /* 0d8 */ virtual unk8 vfunc_d8(ActorCharacterBase_vfunc_d8 *param1) override; + /* 0dc */ virtual unk8 vfunc_dc(ActorCharacterBase_vfunc_d8 *param1) override; + /* 0e0 */ virtual unk8 vfunc_e0(ActorCharacterBase_vfunc_d8 *param1) override; + /* 0f4 */ virtual unk32 GetPromptMessage() override; + /* 0f8 */ virtual unk32 GetPurchaseMessage() override; + /* 0fc */ virtual unk32 GetNotEnoughMoneyMessage() override; + /* 100 */ virtual unk32 GetGoodbyeMessage() override; + /* 104 */ virtual unk32 GetInventoryFullMessage() override; + /* 108 */ virtual void vfunc_108() override; + /* 10c */ virtual void vfunc_10c(bool param1) override; + /* 110 */ virtual void vfunc_110() override; + /* 114 */ virtual ShopItem GetShopItem(s32 position) override; + /* 118 */ virtual bool vfunc_118() override; + /* 11c */ virtual bool vfunc_11c() override; + + static ActorBeedle *Create(); + + static unk32 func_ov031_021812e4(unk32 param1); + static void func_ov031_0218132c(unk32 param1); +}; diff --git a/include/Actor/Character/ActorCharacter.hpp b/include/Actor/Character/ActorCharacter.hpp index b35f5a662..0baef9a6e 100644 --- a/include/Actor/Character/ActorCharacter.hpp +++ b/include/Actor/Character/ActorCharacter.hpp @@ -19,6 +19,12 @@ struct UnkStruct_ov014_021448f4 { mUnk_00(0) {} }; +struct ActorCharacterBase_vfunc_d8 { + /* 00 */ PAD(0x00, 0x02); + /* 02 */ u16 mUnk_02; + /* 04 */ +}; + class ActorCharacterBase : public Actor { public: /* 000 (base) */ @@ -48,10 +54,10 @@ class ActorCharacterBase : public Actor { /* cc */ virtual void vfunc_cc(); /* d0 */ virtual void vfunc_d0(); /* d4 */ virtual unk32 vfunc_d4(); - /* d8 */ virtual unk32 vfunc_d8(unk32 param1); - /* dc */ virtual unk32 vfunc_dc(unk32 param1); - /* e0 */ virtual unk32 vfunc_e0(unk32 param1); - /* e4 */ virtual unk32 vfunc_e4(unk32 param1); + /* d8 */ virtual unk8 vfunc_d8(ActorCharacterBase_vfunc_d8 *param1); + /* dc */ virtual unk8 vfunc_dc(ActorCharacterBase_vfunc_d8 *param1); + /* e0 */ virtual unk8 vfunc_e0(ActorCharacterBase_vfunc_d8 *param1); + /* e4 */ virtual unk8 vfunc_e4(ActorCharacterBase_vfunc_d8 *param1); /* e8 */ virtual UnkStruct_ov014_021448f4 vfunc_e8(u16 param2, u16 param3); /* ec */ diff --git a/include/Actor/Character/ActorItemSeller.hpp b/include/Actor/Character/ActorItemSeller.hpp index 2440b4ce3..cd9a859e7 100644 --- a/include/Actor/Character/ActorItemSeller.hpp +++ b/include/Actor/Character/ActorItemSeller.hpp @@ -1,5 +1,6 @@ #pragma once +#include "Actor/ActorShopItem.hpp" #include "global.h" #include "types.h" @@ -27,16 +28,16 @@ class ActorItemSellerBase : public ActorCharacter { /* 0c0 */ virtual bool vfunc_c0() override; /* 0c4 */ virtual void vfunc_c4() override; /* 0d4 */ virtual unk32 vfunc_d4() override; - /* 0f4 */ virtual unk32 GetPromptMessage() = 0; - /* 0f8 */ virtual unk32 GetPurchaseMessage() = 0; - /* 0fc */ virtual unk32 GetNotEnoughMoneyMessage() = 0; - /* 100 */ virtual unk32 GetGoodbyeMessage() = 0; - /* 104 */ virtual unk32 GetInventoryFullMessage() = 0; - /* 108 */ virtual void vfunc_108() = 0; - /* 10c */ virtual void vfunc_10c(bool param1) = 0; - /* 110 */ virtual void vfunc_110() = 0; - /* 114 */ virtual unk32 vfunc_114(unk32 param1) = 0; - /* 118 */ virtual bool vfunc_118() = 0; + /* 0f4 */ virtual unk32 GetPromptMessage() = 0; + /* 0f8 */ virtual unk32 GetPurchaseMessage() = 0; + /* 0fc */ virtual unk32 GetNotEnoughMoneyMessage() = 0; + /* 100 */ virtual unk32 GetGoodbyeMessage() = 0; + /* 104 */ virtual unk32 GetInventoryFullMessage() = 0; + /* 108 */ virtual void vfunc_108() = 0; + /* 10c */ virtual void vfunc_10c(bool param1) = 0; + /* 110 */ virtual void vfunc_110() = 0; + /* 114 */ virtual ShopItem GetShopItem(s32 position) = 0; + /* 118 */ virtual bool vfunc_118() = 0; /* 11c */ virtual bool vfunc_11c(); /* 120 */ @@ -82,7 +83,7 @@ class ActorItemSeller : public ActorItemSellerBase { /* 108 */ virtual void vfunc_108() override; /* 10c */ virtual void vfunc_10c(bool param1) override; /* 110 */ virtual void vfunc_110() override; - /* 114 */ virtual unk32 vfunc_114(unk32 param1) override; + /* 114 */ virtual ShopItem GetShopItem(s32 position) override; /* 118 */ virtual bool vfunc_118() override; /* 120 */ }; @@ -101,37 +102,3 @@ namespace ActorItemSeller3 { extern ActorType gType; ActorItemSeller *Create(); } // namespace ActorItemSeller3 - -class ActorBeedle : public ActorItemSellerBase { -public: - static ActorType gType; - - /* 000 (base) */ - /* 484 */ - - /* 000 */ virtual ~ActorBeedle() override; - /* 008 */ virtual bool Init() override; - /* 06c */ virtual bool vfunc_6c() override; - /* 070 */ virtual bool vfunc_70() override; - /* 0c4 */ virtual void vfunc_c4() override; - /* 0d4 */ virtual unk32 vfunc_d4() 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 unk32 GetPromptMessage() override; - /* 0f8 */ virtual unk32 GetPurchaseMessage() override; - /* 0fc */ virtual unk32 GetNotEnoughMoneyMessage() override; - /* 100 */ virtual unk32 GetGoodbyeMessage() override; - /* 104 */ virtual unk32 GetInventoryFullMessage() override; - /* 108 */ virtual void vfunc_108() override; - /* 10c */ virtual void vfunc_10c(bool param1) override; - /* 110 */ virtual void vfunc_110() override; - /* 114 */ virtual unk32 vfunc_114(unk32 param1) override; - /* 118 */ virtual bool vfunc_118() override; - /* 11c */ virtual bool vfunc_11c() override; - - static ActorBeedle *Create(); - - static unk32 func_ov031_021812e4(unk32 param1); - static void func_ov031_0218132c(unk32 param1); -}; diff --git a/include/DTCM/UnkStruct_027e0fec.hpp b/include/DTCM/UnkStruct_027e0fec.hpp new file mode 100644 index 000000000..fe6299529 --- /dev/null +++ b/include/DTCM/UnkStruct_027e0fec.hpp @@ -0,0 +1,28 @@ +#pragma once + +#include "global.h" +#include "types.h" + +struct UnkStruct_027e0fec_22c8_04 { + /* 00 */ PAD(0x00, 0x08); + /* 08 */ unk32 mUnk_08; + /* 0c */ + + void func_02019570(unk32 param1, unk32 param2); +}; + +struct UnkStruct_027e0fec_22c8 { + /* 00 */ unk32 mUnk_00; + /* 04 */ UnkStruct_027e0fec_22c8_04 *mUnk_04; + /* 08 */ + + UnkStruct_027e0fec_22c8_04 *func_ov000_020c4588(); +}; + +struct UnkStruct_027e0fec { + /* 0000 */ PAD(0x0000, 0x22c8); + /* 22c8 */ UnkStruct_027e0fec_22c8 mUnk_22c8; + /* 22cc */ +}; + +extern UnkStruct_027e0fec *data_027e0fec; diff --git a/include/Unknown/UnkStruct_0202e1a0.hpp b/include/Unknown/UnkStruct_0202e1a0.hpp index aacd61441..8e7777d35 100644 --- a/include/Unknown/UnkStruct_0202e1a0.hpp +++ b/include/Unknown/UnkStruct_0202e1a0.hpp @@ -6,7 +6,7 @@ // astruct_11 struct UnkStruct_0202e1a0 { /* 00 */ u16 mUnk_00; - /* 02 */ unk16 mUnk_02; + /* 02 */ u16 mUnk_02; /* 04 */ s32 mUnk_04; /* 08 */ s32 mUnk_08; /* 0c */ s32 mUnk_0c; diff --git a/include/Unknown/UnkStruct_02037750.hpp b/include/Unknown/UnkStruct_02037750.hpp index e32453291..386b358c8 100644 --- a/include/Unknown/UnkStruct_02037750.hpp +++ b/include/Unknown/UnkStruct_02037750.hpp @@ -7,9 +7,10 @@ #include "System/SysNew.hpp" +struct ActorCharacterBase_vfunc_d8; class LinkStateInteract; class UnkStruct_020397f8; -typedef unk32 (*UnkStruct_02037750_Callback1)(void *, unk32); +typedef unk32 (*UnkStruct_02037750_Callback1)(void *, ActorCharacterBase_vfunc_d8 *); // astruct_14 class UnkStruct_02037750 : public SysObject { @@ -32,7 +33,7 @@ class UnkStruct_02037750 : public SysObject { /* 1c */ virtual bool vfunc_1c(); /* 20 */ virtual void vfunc_20(); /* 24 */ virtual bool vfunc_24(unk32 param1); - /* 28 */ virtual unk32 vfunc_28(s32 param1); + /* 28 */ virtual unk32 vfunc_28(ActorCharacterBase_vfunc_d8 *param1); /* 2c */ virtual unk32 vfunc_2c(s32 param1); /* 30 */ virtual bool vfunc_30(); /* 34 */ @@ -74,9 +75,9 @@ class UnkStruct_020386d8 : public UnkStruct_02037750 { UnkStruct_020386d8(); /* 00 */ virtual ~UnkStruct_020386d8(); - /* 08 */ virtual void vfunc_08(u32 param1); - /* 24 */ virtual bool vfunc_24(unk32 param1); - /* 28 */ virtual unk32 vfunc_28(s32 param1); - /* 30 */ virtual bool vfunc_30(); + /* 08 */ virtual void vfunc_08(u32 param1) override; + /* 24 */ virtual bool vfunc_24(unk32 param1) override; + /* 28 */ virtual unk32 vfunc_28(ActorCharacterBase_vfunc_d8 *param1) override; + /* 30 */ virtual bool vfunc_30() override; /* 34 */ }; diff --git a/include/Unknown/UnkStruct_020eed2c.hpp b/include/Unknown/UnkStruct_020eed2c.hpp index 1c2f3a947..a732fd0a0 100644 --- a/include/Unknown/UnkStruct_020eed2c.hpp +++ b/include/Unknown/UnkStruct_020eed2c.hpp @@ -6,9 +6,12 @@ class UnkStruct_020eed2c { public: /* 00 */ unk16 mUnk_00; - /* 02 */ unk16 mUnk_02; + /* 02 */ u16 mUnk_02; UnkStruct_020eed2c(); + + void func_ov000_020d8718(); + void func_ov000_020d8728(); }; extern UnkStruct_020eed2c data_ov000_020eed2c; diff --git a/include/Unknown/UnkStruct_027e0dbc.hpp b/include/Unknown/UnkStruct_027e0dbc.hpp index dc80545fc..2ee915add 100644 --- a/include/Unknown/UnkStruct_027e0dbc.hpp +++ b/include/Unknown/UnkStruct_027e0dbc.hpp @@ -36,6 +36,10 @@ class UnkStruct_027e0dbc { bool func_ov003_020f3d5c(unk32 param1); void func_ov003_020f3d74(unk32 param1); + void func_ov003_020f3d94(u8 param1); + unk32 func_ov003_020f3d9c(); + void func_ov003_020f3da4(); + void func_ov003_020f3db0(); }; extern UnkStruct_027e0dbc data_027e0dbc; diff --git a/src/00_Core/Actor/Actor.cpp b/src/00_Core/Actor/Actor.cpp index 342029c3b..7c483d4ca 100644 --- a/src/00_Core/Actor/Actor.cpp +++ b/src/00_Core/Actor/Actor.cpp @@ -214,11 +214,11 @@ ARM void Actor::SetUnk_11c(bool value) { ARM void Actor::vfunc_68(unk32 param1, UnkStruct_020397f8 *param2) {} -ARM bool Actor::vfunc_6c() { +ARM bool Actor::vfunc_6c(unk32 param1) { return true; } -ARM bool Actor::vfunc_70() { +ARM bool Actor::vfunc_70(unk32 param1) { return true; } diff --git a/src/14_Land/Actor/Character/ActorCharacterBase.cpp b/src/14_Land/Actor/Character/ActorCharacterBase.cpp index 7759ad62f..161d16222 100644 --- a/src/14_Land/Actor/Character/ActorCharacterBase.cpp +++ b/src/14_Land/Actor/Character/ActorCharacterBase.cpp @@ -2,19 +2,19 @@ #include "Message/MessageManager.hpp" #include "Save/AdventureFlags.hpp" -ARM static unk32 func_ov014_021447f8(void *actor, unk32 param2) { +ARM static unk32 func_ov014_021447f8(void *actor, ActorCharacterBase_vfunc_d8 *param2) { return ((ActorCharacterBase *) actor)->vfunc_d8(param2); } -ARM static unk32 func_ov014_0214480c(void *actor, unk32 param2) { +ARM static unk32 func_ov014_0214480c(void *actor, ActorCharacterBase_vfunc_d8 *param2) { return ((ActorCharacterBase *) actor)->vfunc_dc(param2); } -ARM static unk32 func_ov014_02144820(void *actor, unk32 param2) { +ARM static unk32 func_ov014_02144820(void *actor, ActorCharacterBase_vfunc_d8 *param2) { return ((ActorCharacterBase *) actor)->vfunc_e0(param2); } -ARM static unk32 func_ov014_02144834(void *actor, unk32 param2) { +ARM static unk32 func_ov014_02144834(void *actor, ActorCharacterBase_vfunc_d8 *param2) { return ((ActorCharacterBase *) actor)->vfunc_e4(param2); } @@ -54,19 +54,19 @@ static UnkStruct_ov014_021448f4 func_ov014_02144848(UnkStruct_ov014_02144848 par } } -ARM unk32 ActorCharacterBase::vfunc_d8(unk32 param1) { +ARM unk8 ActorCharacterBase::vfunc_d8(ActorCharacterBase_vfunc_d8 *param1) { return 0; } -ARM unk32 ActorCharacterBase::vfunc_dc(unk32 param1) { +ARM unk8 ActorCharacterBase::vfunc_dc(ActorCharacterBase_vfunc_d8 *param1) { return 0; } -ARM unk32 ActorCharacterBase::vfunc_e0(unk32 param1) { +ARM unk8 ActorCharacterBase::vfunc_e0(ActorCharacterBase_vfunc_d8 *param1) { return 0; } -ARM unk32 ActorCharacterBase::vfunc_e4(unk32 param1) { +ARM unk8 ActorCharacterBase::vfunc_e4(ActorCharacterBase_vfunc_d8 *param1) { return 0; } diff --git a/src/31_Shop/Actor/ActorBeedle.cpp b/src/31_Shop/Actor/ActorBeedle.cpp index d74dbbbc1..803c9aa14 100644 --- a/src/31_Shop/Actor/ActorBeedle.cpp +++ b/src/31_Shop/Actor/ActorBeedle.cpp @@ -1,31 +1,382 @@ +#include "Actor/Character/ActorBeedle.hpp" +#include "Actor/ActorManager.hpp" +#include "Actor/ActorShopItem.hpp" +#include "Actor/ActorType.hpp" #include "Actor/Character/ActorItemSeller.hpp" +#include "DTCM/UnkStruct_027e0fec.hpp" +#include "DTCM/UnkStruct_027e0ffc.hpp" +#include "Message/BMG.hpp" +#include "Save/AdventureFlags.hpp" +#include "Unknown/UnkStruct_020eed2c.hpp" +#include "Unknown/UnkStruct_027e0dbc.hpp" +#include "Unknown/UnkStruct_ov000_020e8b08.hpp" -ActorBeedle *ActorBeedle::Create() {} - -bool ActorBeedle::Init() {} -void ActorBeedle::vfunc_c4() {} -unk32 ActorBeedle::vfunc_114(unk32 param1) {} -unk32 ActorBeedle::vfunc_d4() {} - -static unk32 func_ov031_02180e44(unk32 param1, unk32 param2) {} - -unk32 ActorBeedle::GetPromptMessage() {} -unk32 ActorBeedle::GetPurchaseMessage() {} -unk32 ActorBeedle::GetNotEnoughMoneyMessage() {} -unk32 ActorBeedle::GetGoodbyeMessage() {} -unk32 ActorBeedle::GetInventoryFullMessage() {} -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() {} -void ActorBeedle::vfunc_10c(bool param1) {} -void ActorBeedle::vfunc_110() {} - -unk32 ActorBeedle::func_ov031_021812e4(unk32 param1) {} -void ActorBeedle::func_ov031_0218132c(unk32 param1) {} - -bool ActorBeedle::vfunc_11c() {} -bool ActorBeedle::vfunc_118() {} -ActorBeedle::~ActorBeedle() {} +static unk32 func_ov031_02180e44(unk32 param1, unk32 param2); + +extern u32 **data_027e0fe0[]; +ARM ActorBeedle *ActorBeedle::Create() { + return new(*data_027e0fe0[0], 4) ActorBeedle(); +} + +static const char *sShipTypes[8] = { + [7] = "brg", [6] = "fnl", [5] = "pdl", [4] = "dco", [3] = "can", [2] = "hul", [1] = "bow", [0] = "anc"}; + +ActorType ActorBeedle::gType(ActorTypeId_Beedle, (ActorCreateFunc) ActorBeedle::Create, NULL); + +extern "C" unk32 func_0201e388(unk32, const ActorCharacter_1d8_230 *); +ARM bool ActorBeedle::Init() { + UnkStruct_027e0fec_22c8_04 *iVar1; + unk32 iVar1_2; + UnkStruct_027e0dbc_24 *iVar1_3; + unk32 uVar2; + + static const unk32 sUnk3[] = {0x800, 0x4cd, 0x1400}; + static const unk32 sUnk2[] = {0x800, 0x4cd, 0x16b8}; + static const ActorCharacter_1d8_230 sUnk1[] = { + {"choice", 0}, + {"praise", 0}, + {"praise_a", 0}, + {"mt_terry_met", 0}, + }; + + mUnk_1d8.func_ov014_02145a74(0x9f, 0x9f); + mUnk_1d8.mUnk_230 = sUnk1; + if (gActorManager->mUnk_29) { + mUnk_470 = 1; + this->func_ov014_021451f0(sUnk2); + iVar1_2 = data_027e0dbc.func_ov003_020f3d9c(); + if (iVar1_2 < 0) { + data_027e0dbc.func_ov003_020f3db0(); + } else if (iVar1_2 >= 9) { + data_027e0dbc.func_ov003_020f3da4(); + } + } else { + mUnk_470 = 0; + this->func_ov014_021451f0(sUnk3); + + iVar1 = data_027e0fec->mUnk_22c8.func_ov000_020c4588(); + uVar2 = func_0201e388((unk32) iVar1 + iVar1->mUnk_08 + 4, &sUnk1[3]); + iVar1->func_02019570(uVar2, 0); + } + iVar1_3 = data_027e0dbc.GetUnk_24(); + mUnk_484 = iVar1_3->mUnk_0b; + mUnk_490 = 0; + return ActorItemSellerBase::Init(); +} + +ARM void ActorBeedle::vfunc_c4() { + ActorItemSellerBase::vfunc_c4(); + if (mUnk_1d8.mUnk_248.mUnk_00[mUnk_1d8.mUnk_248.mUnk_08] != 4) { + return; + } + UnkStruct_0202e1a0 UStack_20 = mUnk_1d8.mUnk_10->mUnk_0c; + if (!UStack_20.func_0202e310(0x5000) && !UStack_20.func_0202e310(0x12000) && !UStack_20.func_0202e310(0x1f000) && + !UStack_20.func_0202e310(0x2c000) && !UStack_20.func_0202e310(0x39000) && !UStack_20.func_0202e310(0x46000) && + !UStack_20.func_0202e310(0x53000)) { + return; + } + data_027e0ffc.func_ov000_020ceacc(0x427, &mPos, 0); +} + +ARM ShopItem ActorBeedle::GetShopItem(s32 position) { + switch (position) { + case 0: + if (!gActorManager->mUnk_29) { + return gAdventureFlags->Get(AdventureFlag_Unk_106) ? ShopItem_ShipPart : ShopItem_BombBag; + } else { + return gAdventureFlags->Get(AdventureFlag_Unk_104) ? ShopItem_ShipPart : ShopItem_HeartContainer; + } + case 1: + return ShopItem_ShipPart; + case 2: + return ShopItem_RedPotion; + case 3: + return ShopItem_Treasure; + case 4: + if (!gActorManager->mUnk_29) { + return gAdventureFlags->Get(AdventureFlag_Unk_109) ? ShopItem_PurplePotion : ShopItem_WisdomGem; + } else { + return gAdventureFlags->Get(AdventureFlag_Unk_113) ? ShopItem_YellowPotion : ShopItem_CourageGem; + } + default: + return ShopItem_SoldOut; + } +} + +ARM unk32 ActorBeedle::vfunc_d4() { + if (mUnk_474 == 4 || mUnk_474 == 6) { + return func_ov031_02180e44(6, 10); + } + if (mUnk_470 == 1) { + return func_ov031_02180e44(6, 0xb); + } + mUnk_484 = data_027e0dbc.GetUnk_24()->mUnk_0b; + return func_ov031_02180e44(6, 6); +} + +ARM static unk32 func_ov031_02180e44(unk32 param1, unk32 param2) { + return param2 | param1 << 16; +} + +ARM unk32 ActorBeedle::GetPromptMessage() { + bool soldOut = UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217ce18(); + if (soldOut) { + if (mUnk_470 == 1) { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0x99); + } else { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0x117); + } + } else { + if (mUnk_470 == 1) { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0x8d); + } else { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0xf7); + } + } +} + +ARM unk32 ActorBeedle::GetPurchaseMessage() { + bool soldOut = UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217ce18(); + if (soldOut) { + if (mUnk_470 == 1) { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0x99); + } else { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0x117); + } + } else { + if (mUnk_470 == 1) { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0x95); + } else { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0x113); + } + } +} + +ARM unk32 ActorBeedle::GetNotEnoughMoneyMessage() { + if (mUnk_470 == 1) { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0x97); + } else { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0x115); + } +} + +ARM unk32 ActorBeedle::GetGoodbyeMessage() { + if (mUnk_470 == 1) { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0x96); + } else { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0x114); + } +} + +ARM unk32 ActorBeedle::GetInventoryFullMessage() { + if (mUnk_470 == 1) { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0x98); + } else { + return BMG_ID(BMG_FILE_INDEX_SHIP, 0x116); + } +} + +extern "C" bool HasFreebieCard(); +extern "C" unk32 func_ov031_0217ce90(); +ARM unk8 ActorBeedle::vfunc_d8(ActorCharacterBase_vfunc_d8 *param1) { + int iVar3; + int iVar4; + + iVar3 = this->func_ov031_021812e4(mUnk_484); + iVar4 = this->func_ov031_021812e4(data_027e0dbc.GetUnk_24()->mUnk_0b); + switch (param1->mUnk_02) { + case 0xf: + case 0x10: // case 0x10 shouldn't be here but almost matches branch instructions + return HasFreebieCard(); + case 0x13: + if (iVar4 >= 4) { + return 2; + } + return !UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217bd88(); + case 0x27: + + switch (iVar4) { + case 0: + return 0; + case 1: + if (iVar3 != iVar4) { + return 1; + } else { + return 2; + } + case 2: + if (iVar3 != iVar4) { + return 3; + } else { + return 4; + } + case 3: + if (iVar3 != iVar4) { + return 5; + } else { + return 6; + } + return iVar3; + case 4: + return 7; + } + // fallthrough + case 0x2b: + switch (data_027e0dbc.func_ov003_020f3d9c()) { + case 0: + return 8; + case 1: + return 0; + case 2: + return 1; + case 3: + return 2; + case 4: + return 3; + case 5: + return 4; + case 6: + return 5; + case 7: + return 6; + case 8: + return 7; + default: + return 0; + } + default: + return 0; + } +} + +ARM unk8 ActorBeedle::vfunc_dc(ActorCharacterBase_vfunc_d8 *param1) { + switch (param1->mUnk_02) { + case 0x10: + return UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217ce18(); + } + return 0; +} + +ARM unk8 ActorBeedle::vfunc_e0(ActorCharacterBase_vfunc_d8 *param1) { + if (param1->mUnk_02 == 0x11) { + return mUnk_488 >= 6000; + } + return 0; +} + +ARM bool ActorBeedle::vfunc_70(unk32 param1) { + switch (param1) { + case 0: + this->vfunc_110(); + break; + case 1: + this->vfunc_ec(4); + mUnk_480 = true; + break; + case 2: + this->vfunc_ec(5); + break; + default: + return false; + } + return true; +} + +ARM bool ActorBeedle::vfunc_6c(unk32 param1) { + u32 uVar1; + + if (!param1) { + if (!mUnk_490) { + data_ov000_020eed2c.func_ov000_020d8718(); + mUnk_488 = 0; + mUnk_48c = 0; + mUnk_490 = true; + mUnk_480 = true; + } else { + if ((mUnk_488 != 0 && mUnk_48c > 30) || mUnk_48c > 300) { + data_ov000_020eed2c.func_ov000_020d8728(); + mUnk_490 = false; + return true; + } + if (data_ov000_020eed2c.mUnk_02 < 6000) { + mUnk_48c++; + } else if (data_ov000_020eed2c.mUnk_02 > mUnk_488) { + mUnk_488 = data_ov000_020eed2c.mUnk_02; + mUnk_48c = 0; + } + } + } else { + return true; + } + return false; +} + +ARM void ActorBeedle::vfunc_108() { + this->vfunc_ec(3); +} + +ARM void ActorBeedle::vfunc_10c(bool param1) { + this->vfunc_110(); +} + +ARM void ActorBeedle::vfunc_110() { + bool unk; + if (data_ov000_020e8b08 != NULL) { + unk = mRef.id == data_ov000_020e8b08->mUnk_20[data_ov000_020e8b08->mUnk_55].id; + } else { + unk = true; + } + this->vfunc_f0(unk, 0); +} + +ARM unk32 ActorBeedle::func_ov031_021812e4(unk32 param1) { + if (param1 < 0) { + param1 = ((ActorBeedle *) ActorItemSellerBase::GetCurrentSeller())->mUnk_484; + } + if (param1 < 20) { + return 0; + } else if (param1 < 50) { + return 1; + } else if (param1 < 100) { + return 2; + } else if (param1 < 200) { + return 3; + } else { + return 4; + } +} + +ARM void ActorBeedle::func_ov031_0218132c(unk32 param1) { + u8 bVar1; + int iVar2; + unk32 uVar3; + u32 uVar4; + + bVar1 = data_027e0dbc.GetUnk_24()->mUnk_0b; + if (!UnkStruct_ov031_02183e80::GetInstance()->func_ov031_0217bd88()) { + iVar2 = param1 / 100; + } else { + iVar2 = param1 / 20; + } + uVar4 = (u32) bVar1 + iVar2; + if (uVar4 == data_027e0dbc.GetUnk_24()->mUnk_0b) { + uVar4 = uVar4 + 1; + } + if (200 < (int) uVar4) { + uVar4 = 200; + } + data_027e0dbc.func_ov003_020f3d94(uVar4); + ActorItemSellerBase::GetCurrentSeller()->mUnk_47c = uVar4; +} + +ARM bool ActorBeedle::vfunc_11c() { + if (ActorItemSellerBase::GetCurrentSeller()->mUnk_470 != 0) { + return false; + } + return mUnk_484 != data_027e0dbc.GetUnk_24()->mUnk_0b; +} + +ARM bool ActorBeedle::vfunc_118() { + mUnk_490 = false; + return data_027e0e28.func_ov018_02160a54(3); +} diff --git a/src/31_Shop/Actor/ActorItemSeller.cpp b/src/31_Shop/Actor/ActorItemSeller.cpp index 16fc017c9..2c2685f8c 100644 --- a/src/31_Shop/Actor/ActorItemSeller.cpp +++ b/src/31_Shop/Actor/ActorItemSeller.cpp @@ -50,40 +50,40 @@ ARM bool ActorItemSeller::Init() { return ActorItemSellerBase::Init(); } -ARM unk32 ActorItemSeller::vfunc_114(unk32 param1) { +ARM ShopItem ActorItemSeller::GetShopItem(s32 position) { u16 uVar1; int iVar2; unk32 uVar3; uVar1 = mUnk_020.mUnk_00[0]; - switch (param1) { + switch (position) { case 0: - return uVar1 == 2 ? 0x4 : 0x2; + return uVar1 == 2 ? ShopItem_Bombchus : ShopItem_Bombs; case 1: - return uVar1 == 0 ? 0xa : 0x3; + return uVar1 == 0 ? ShopItem_Treasure : ShopItem_Arrows; case 2: - return uVar1 == 2 ? 0x11 : 0xf; + return uVar1 == 2 ? ShopItem_YellowPotion : ShopItem_RedPotion; case 3: if (!gAdventureFlags->Get(AdventureFlag_Unk_105)) { - return 0xc; + return ShopItem_PowerGem; } if (!gAdventureFlags->Get(AdventureFlag_Unk_107)) { - return 0x7; + return ShopItem_Quiver; } if (!gAdventureFlags->Get(AdventureFlag_Unk_108)) { - return 0x8; + return ShopItem_BombchuBag; } if (!gAdventureFlags->Get(AdventureFlag_Unk_103)) { - return 0x5; + return ShopItem_HeartContainer; } - return uVar1 == 2 ? 0xa : 0x1; + return uVar1 == 2 ? ShopItem_Treasure : ShopItem_SoldOut; case 4: if (gItemManager->HasItem(ItemFlag_WoodenShield)) { - return 0x10; + return ShopItem_PurplePotion; } - return 0xe; + return ShopItem_Shield; default: - return 0x1; + return ShopItem_SoldOut; } } diff --git a/src/31_Shop/Actor/ActorItemSellerBase.cpp b/src/31_Shop/Actor/ActorItemSellerBase.cpp index 9309f0d71..b96703495 100644 --- a/src/31_Shop/Actor/ActorItemSellerBase.cpp +++ b/src/31_Shop/Actor/ActorItemSellerBase.cpp @@ -73,7 +73,7 @@ ARM bool ActorItemSellerBase::Init() { numShipParts = 0; numTreasure = 0; for (s32 i = 0; i < 5; ++i) { - ShopItem shopItem = this->vfunc_114(i); + ShopItem shopItem = this->GetShopItem(i); options.mUnk_24 = 0; ActorTypeId actorType = sShopItemActorTypes[shopItem]; switch (actorType) { diff --git a/src/Main/Unknown/UnkStruct_02037750.cpp b/src/Main/Unknown/UnkStruct_02037750.cpp index 50b481e67..2e8f40ab2 100644 --- a/src/Main/Unknown/UnkStruct_02037750.cpp +++ b/src/Main/Unknown/UnkStruct_02037750.cpp @@ -1,5 +1,6 @@ #include "Unknown/UnkStruct_02037750.hpp" #include "Actor/ActorManager.hpp" +#include "Actor/Character/ActorCharacter.hpp" #include "Item/ItemManager.hpp" #include "Message/MessageManager.hpp" #include "Player/LinkStateBase.hpp" @@ -46,7 +47,7 @@ ARM bool UnkStruct_02037750::vfunc_24(unk32 param1) { } // non-matching -ARM unk32 UnkStruct_02037750::vfunc_28(s32 param1) { +ARM unk32 UnkStruct_02037750::vfunc_28(ActorCharacterBase_vfunc_d8 *param1) { u16 uVar1; s64 lVar2; char cVar4; @@ -59,8 +60,7 @@ ARM unk32 UnkStruct_02037750::vfunc_28(s32 param1) { u32 uVar11; bool bVar12; - uVar7 = (u32) * (u16 *) (param1 + 0x2); - + uVar7 = param1->mUnk_02; if (uVar7 >= 0xF && uVar7 <= 0x2E) { pcVar8 = this->mUnk_04[((uVar7 - 0xF) << 0x1E) >> 0x1C]; iVar9 = 0; @@ -92,7 +92,7 @@ ARM unk32 UnkStruct_02037750::vfunc_28(s32 param1) { return -0x1; } - uVar7 = (param1 + 0x1); + uVar7 = (unk32) param1 + 0x1; if (ret_3->mUnk_576 < uVar7) { return ret_3->mUnk_576; @@ -120,13 +120,13 @@ ARM unk32 UnkStruct_02037750::vfunc_28(s32 param1) { return uVar10; case 0x4: - return gAdventureFlags->Get(param1 + 0x4) != false; + return gAdventureFlags->Get((unk32) param1 + 0x4) != false; case 0x5: return gActorManager->func_ov00_020c3b2c(NULL) != 0; case 0x6: break; case 0x8: - return (((data_027e0cb4[(param1 + 0x4) >> 5]) & 1) << ((param1 + 0x4) & 0x1f)) == 0x0; + return (((data_027e0cb4[((unk32) param1 + 0x4) >> 5]) & 1) << (((unk32) param1 + 0x4) & 0x1f)) == 0x0; case 0x9: break; case 0xa: @@ -136,9 +136,9 @@ ARM unk32 UnkStruct_02037750::vfunc_28(s32 param1) { uVar7 = lVar2; uVar10 = gRandom.Next(0, uVar7); - return (int) (uVar10 * 0x64 >> 0x20) < (param1 + 0x4); + return (int) (uVar10 * 0x64 >> 0x20) < ((unk32) param1 + 0x4); case 0xc: - uVar7 = (param1 + 0x1); + uVar7 = ((unk32) param1 + 0x1); if (uVar7 == 0x0) { uVar10 = 0x0; } else { @@ -154,16 +154,16 @@ ARM unk32 UnkStruct_02037750::vfunc_28(s32 param1) { case 0xd: return gItemManager->GetNumRupees() != 0; case 0xe: - return gItemManager->HasItem(param1 + 0x4) != 0; + return gItemManager->HasItem((unk32) param1 + 0x4) != 0; default: if (uVar7 == 0x2f) { - return gItemManager->HasItem((param1 + 0x4) + 0x60) != 0; + return gItemManager->HasItem(((unk32) param1 + 0x4) + 0x60) != 0; } break; } } - uVar7 = (param1 + 0x1); + uVar7 = ((unk32) param1 + 0x1); if (uVar7 == 0x0) { uVar10 = 0x0; } else { @@ -222,7 +222,7 @@ ARM bool UnkStruct_020386d8::vfunc_24(unk32 param1) { return this->func_020385d0(param1, &this->mUnk_24.mUnk_00) != 0; } -ARM unk32 UnkStruct_020386d8::vfunc_28(s32 param1) { +ARM unk32 UnkStruct_020386d8::vfunc_28(ActorCharacterBase_vfunc_d8 *param1) { this->mUnk_20 = this->UnkStruct_02037750::vfunc_28(param1); return this->mUnk_20; }