summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/eur/arm9/overlays/ov014/delinks.txt9
-rw-r--r--config/eur/arm9/overlays/ov014/symbols.txt216
-rw-r--r--config/eur/arm9/overlays/ov031/delinks.txt12
-rw-r--r--config/eur/arm9/overlays/ov031/symbols.txt170
-rw-r--r--config/usa/arm9/overlays/ov014/delinks.txt9
-rw-r--r--config/usa/arm9/overlays/ov014/symbols.txt216
-rw-r--r--config/usa/arm9/overlays/ov031/delinks.txt12
-rw-r--r--config/usa/arm9/overlays/ov031/symbols.txt170
-rw-r--r--include/Actor/Character/ActorCharacter.hpp245
-rw-r--r--include/Actor/Character/ActorItemSeller.hpp130
-rw-r--r--include/Actor/Character/ActorTetra.hpp56
-rw-r--r--include/Unknown/UnkStruct_ov000_020c5c2c.hpp8
-rw-r--r--include/global.h8
-rw-r--r--src/14_Land/Actor/Character/ActorCharacter.cpp49
-rw-r--r--src/14_Land/Actor/Character/ActorCharacterBase.cpp32
-rw-r--r--src/14_Land/Actor/Character/ActorGenericCharacter.cpp46
-rw-r--r--src/31_Shop/Actor/ActorBeedle.cpp31
-rw-r--r--src/31_Shop/Actor/ActorItemSeller.cpp21
-rw-r--r--src/31_Shop/Actor/ActorItemSellerBase.cpp39
-rw-r--r--src/31_Shop/Actor/ActorTetra.cpp12
20 files changed, 1101 insertions, 390 deletions
diff --git a/config/eur/arm9/overlays/ov014/delinks.txt b/config/eur/arm9/overlays/ov014/delinks.txt
index d921ab14..fb52d807 100644
--- a/config/eur/arm9/overlays/ov014/delinks.txt
+++ b/config/eur/arm9/overlays/ov014/delinks.txt
@@ -20,3 +20,12 @@ src/14_Land/Actor/Player/ActorRefill.cpp:
.ctor start:0x021558ec end:0x021558f0
.data start:0x021578b0 end:0x02157d70
.bss start:0x0215af94 end:0x0215b034
+
+src/14_Land/Actor/Character/ActorCharacterBase.cpp:
+ .text start:0x021447f8 end:0x02144d94
+
+src/14_Land/Actor/Character/ActorCharacter.cpp:
+ .text start:0x02144d94 end:0x02145a74
+
+src/14_Land/Actor/Character/ActorGenericCharacter.cpp:
+ .text start:0x021476d0 end:0x02148234
diff --git a/config/eur/arm9/overlays/ov014/symbols.txt b/config/eur/arm9/overlays/ov014/symbols.txt
index db56cc1d..a5b3a461 100644
--- a/config/eur/arm9/overlays/ov014/symbols.txt
+++ b/config/eur/arm9/overlays/ov014/symbols.txt
@@ -1061,76 +1061,76 @@ 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
-func_ov014_021447f8 kind:function(arm,size=0x14) addr:0x021447f8
-func_ov014_0214480c kind:function(arm,size=0x14) addr:0x0214480c
-func_ov014_02144820 kind:function(arm,size=0x14) addr:0x02144820
-func_ov014_02144834 kind:function(arm,size=0x14) addr:0x02144834
-func_ov014_02144848 kind:function(arm,size=0x8c) addr:0x02144848
-func_ov014_021448d4 kind:function(arm,size=0x8) addr:0x021448d4
-func_ov014_021448dc kind:function(arm,size=0x8) addr:0x021448dc
-func_ov014_021448e4 kind:function(arm,size=0x8) addr:0x021448e4
-func_ov014_021448ec kind:function(arm,size=0x8) addr:0x021448ec
-func_ov014_021448f4 kind:function(arm,size=0xc) addr:0x021448f4
-func_ov014_02144900 kind:function(arm,size=0x4c) addr:0x02144900
-func_ov014_0214494c kind:function(arm,size=0x48) addr:0x0214494c
-func_ov014_02144994 kind:function(arm,size=0x50) addr:0x02144994
-func_ov014_021449e4 kind:function(arm,size=0x48) addr:0x021449e4
-func_ov014_02144a2c kind:function(arm,size=0x64) addr:0x02144a2c
-func_ov014_02144a90 kind:function(arm,size=0x6c) addr:0x02144a90
-func_ov014_02144afc kind:function(arm,size=0x68) addr:0x02144afc
-func_ov014_02144b64 kind:function(arm,size=0x19c) addr:0x02144b64
-func_ov014_02144d00 kind:function(arm,size=0x8) addr:0x02144d00
-func_ov014_02144d08 kind:function(arm,size=0x2c) addr:0x02144d08
-func_ov014_02144d34 kind:function(arm,size=0x18) addr:0x02144d34
-func_ov014_02144d4c kind:function(arm,size=0xc) addr:0x02144d4c
-func_ov014_02144d58 kind:function(arm,size=0xc) addr:0x02144d58
-func_ov014_02144d64 kind:function(arm,size=0x4) addr:0x02144d64
-func_ov014_02144d68 kind:function(arm,size=0x4) addr:0x02144d68
-func_ov014_02144d6c kind:function(arm,size=0x4) addr:0x02144d6c
-func_ov014_02144d70 kind:function(arm,size=0x4) addr:0x02144d70
-func_ov014_02144d74 kind:function(arm,size=0x20) addr:0x02144d74
-func_ov014_02144d94 kind:function(arm,size=0x58) addr:0x02144d94
-func_ov014_02144dec kind:function(arm,size=0x28) addr:0x02144dec
-func_ov014_02144e14 kind:function(arm,size=0x14) addr:0x02144e14
-func_ov014_02144e28 kind:function(arm,size=0x14) addr:0x02144e28
-func_ov014_02144e3c kind:function(arm,size=0x1c) addr:0x02144e3c
-func_ov014_02144e58 kind:function(arm,size=0x1c) addr:0x02144e58
-func_ov014_02144e74 kind:function(arm,size=0x28) addr:0x02144e74
-func_ov014_02144e9c kind:function(arm,size=0x14) addr:0x02144e9c
-func_ov014_02144eb0 kind:function(arm,size=0x28) addr:0x02144eb0
-func_ov014_02144ed8 kind:function(arm,size=0x138) addr:0x02144ed8
-func_ov014_02145010 kind:function(arm,size=0x48) addr:0x02145010
-func_ov014_02145058 kind:function(arm,size=0x50) addr:0x02145058
-func_ov014_021450a8 kind:function(arm,size=0x48) addr:0x021450a8
-func_ov014_021450f0 kind:function(arm,size=0x10) addr:0x021450f0
-func_ov014_02145100 kind:function(arm,size=0x78) addr:0x02145100
-func_ov014_02145178 kind:function(arm,size=0x78) addr:0x02145178
-func_ov014_021451f0 kind:function(arm,size=0x68) addr:0x021451f0
-func_ov014_02145258 kind:function(arm,size=0x58) addr:0x02145258
-func_ov014_021452b0 kind:function(arm,size=0x68) addr:0x021452b0
-func_ov014_02145318 kind:function(arm,size=0xdc) addr:0x02145318
-func_ov014_021453f4 kind:function(arm,size=0x20) addr:0x021453f4
-func_ov014_02145414 kind:function(arm,size=0x78) addr:0x02145414
-func_ov014_0214548c kind:function(arm,size=0x7c) addr:0x0214548c
-func_ov014_02145508 kind:function(arm,size=0x18) addr:0x02145508
-func_ov014_02145520 kind:function(arm,size=0xc) addr:0x02145520
-func_ov014_0214552c kind:function(arm,size=0x4c) addr:0x0214552c
-func_ov014_02145578 kind:function(arm,size=0x38) addr:0x02145578
-func_ov014_021455b0 kind:function(arm,size=0x34) addr:0x021455b0
-func_ov014_021455e4 kind:function(arm,size=0x94) addr:0x021455e4
-func_ov014_02145678 kind:function(arm,size=0x18) addr:0x02145678
-func_ov014_02145690 kind:function(arm,size=0x8) addr:0x02145690
-func_ov014_02145698 kind:function(arm,size=0xa4) addr:0x02145698
-func_ov014_0214573c kind:function(arm,size=0x24) addr:0x0214573c
-func_ov014_02145760 kind:function(arm,size=0xb4) addr:0x02145760
-func_ov014_02145814 kind:function(arm,size=0x60) addr:0x02145814
-func_ov014_02145874 kind:function(arm,size=0x2c) addr:0x02145874
-func_ov014_021458a0 kind:function(arm,size=0x10) addr:0x021458a0
-func_ov014_021458b0 kind:function(arm,size=0x1c) addr:0x021458b0
-func_ov014_021458cc kind:function(arm,size=0x34) addr:0x021458cc
-func_ov014_02145900 kind:function(arm,size=0x1c) addr:0x02145900
-func_ov014_0214591c kind:function(arm,size=0x58) addr:0x0214591c
-func_ov014_02145974 kind:function(arm,size=0x100) addr:0x02145974
+_Z19func_ov014_021447f8P18ActorCharacterBase kind:function(arm,size=0x14) addr:0x021447f8
+_Z19func_ov014_0214480cP18ActorCharacterBase kind:function(arm,size=0x14) addr:0x0214480c
+_Z19func_ov014_02144820P18ActorCharacterBase kind:function(arm,size=0x14) addr:0x02144820
+_Z19func_ov014_02144834P18ActorCharacterBase kind:function(arm,size=0x14) addr:0x02144834
+_Z19func_ov014_02144848PiiP18ActorCharacterBase kind:function(arm,size=0x8c) addr:0x02144848
+_ZN18ActorCharacterBase8vfunc_d8Ev kind:function(arm,size=0x8) addr:0x021448d4
+_ZN18ActorCharacterBase8vfunc_dcEv kind:function(arm,size=0x8) addr:0x021448dc
+_ZN18ActorCharacterBase8vfunc_e0Ev kind:function(arm,size=0x8) addr:0x021448e4
+_ZN18ActorCharacterBase8vfunc_e4Ev kind:function(arm,size=0x8) addr:0x021448ec
+_ZN18ActorCharacterBase8vfunc_e8Ev kind:function(arm,size=0xc) addr:0x021448f4
+_ZN18ActorCharacterBaseC2Ev kind:function(arm,size=0x4c) addr:0x02144900
+_ZN18ActorCharacterBaseD1Ev kind:function(arm,size=0x48) addr:0x0214494c
+_ZN18ActorCharacterBaseD0Ev kind:function(arm,size=0x50) addr:0x02144994
+_ZN18ActorCharacterBaseD2Ev kind:function(arm,size=0x48) addr:0x021449e4
+_ZN18ActorCharacterBase4InitEv kind:function(arm,size=0x64) addr:0x02144a2c
+_ZN18ActorCharacterBase8vfunc_14Ej kind:function(arm,size=0x6c) addr:0x02144a90
+_ZN18ActorCharacterBase8vfunc_c0Ev kind:function(arm,size=0x68) addr:0x02144afc
+_ZN18ActorCharacterBase8vfunc_18Ej kind:function(arm,size=0x19c) addr:0x02144b64
+_ZN18ActorCharacterBase8vfunc_d4Ev kind:function(arm,size=0x8) addr:0x02144d00
+_ZN18ActorCharacterBase8vfunc_b4Ev kind:function(arm,size=0x2c) addr:0x02144d08
+_ZN18ActorCharacterBase8vfunc_b8Ev kind:function(arm,size=0x18) addr:0x02144d34
+_ZN18ActorCharacterBase8vfunc_80Ev kind:function(arm,size=0xc) addr:0x02144d4c
+_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_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
+_ZN14ActorCharacter19func_ov014_02144e14Ev kind:function(arm,size=0x14) addr:0x02144e14
+_ZN14ActorCharacter19func_ov014_02144e28Ev kind:function(arm,size=0x14) addr:0x02144e28
+_ZN14ActorCharacter19func_ov014_02144e3cEv kind:function(arm,size=0x1c) addr:0x02144e3c
+_ZN14ActorCharacter19func_ov014_02144e58Ev kind:function(arm,size=0x1c) addr:0x02144e58
+_ZN14ActorCharacter19func_ov014_02144e74Ev kind:function(arm,size=0x28) addr:0x02144e74
+_ZN19ActorCharacterModelD0Ev kind:function(arm,size=0x14) addr:0x02144e9c
+_ZN18ActorCharacter_288C1Ev kind:function(arm,size=0x28) addr:0x02144eb0
+_ZN14ActorCharacterC2Ev kind:function(arm,size=0x138) addr:0x02144ed8
+_ZN14ActorCharacterD1Ev kind:function(arm,size=0x48) addr:0x02145010
+_ZN14ActorCharacterD0Ev kind:function(arm,size=0x50) addr:0x02145058
+_ZN14ActorCharacterD2Ev kind:function(arm,size=0x48) addr:0x021450a8
+_ZN14ActorCharacter4InitEv kind:function(arm,size=0x10) addr:0x021450f0
+_ZN14ActorCharacter8vfunc_20Eb kind:function(arm,size=0x78) addr:0x02145100
+_ZN14ActorCharacter19func_ov014_02145178Ev kind:function(arm,size=0x78) addr:0x02145178
+_ZN14ActorCharacter19func_ov014_021451f0EPi kind:function(arm,size=0x68) addr:0x021451f0
+_ZN14ActorCharacter19func_ov014_02145258Ev kind:function(arm,size=0x58) addr:0x02145258
+_ZN14ActorCharacter19func_ov014_021452b0Ev kind:function(arm,size=0x68) addr:0x021452b0
+_ZN14ActorCharacter19func_ov014_02145318Ev kind:function(arm,size=0xdc) addr:0x02145318
+_ZN14ActorCharacter19func_ov014_021453f4Ev kind:function(arm,size=0x20) addr:0x021453f4
+_ZN14ActorCharacter19func_ov014_02145414Ev kind:function(arm,size=0x78) addr:0x02145414
+_ZN14ActorCharacter19func_ov014_0214548cEv kind:function(arm,size=0x7c) addr:0x0214548c
+_ZN14ActorCharacter19func_ov014_02145508Ev kind:function(arm,size=0x18) addr:0x02145508
+_Z19func_ov014_02145520P14ActorCharacter kind:function(arm,size=0xc) addr:0x02145520
+_ZN14ActorCharacter19func_ov014_0214552cEv kind:function(arm,size=0x4c) addr:0x0214552c
+_ZN14ActorCharacter8vfunc_80Ev kind:function(arm,size=0x38) addr:0x02145578
+_ZN14ActorCharacter8vfunc_84Ev kind:function(arm,size=0x34) addr:0x021455b0
+_ZN14ActorCharacter8vfunc_ccEv kind:function(arm,size=0x94) addr:0x021455e4
+_ZN14ActorCharacter8vfunc_c8Ev kind:function(arm,size=0x18) addr:0x02145678
+_ZN14ActorCharacter8vfunc_78Ev kind:function(arm,size=0x8) addr:0x02145690
+_ZN14ActorCharacter8vfunc_74Ev kind:function(arm,size=0xa4) addr:0x02145698
+_ZN14ActorCharacter8vfunc_7cEv kind:function(arm,size=0x24) addr:0x0214573c
+_ZN14ActorCharacter8vfunc_90Ev kind:function(arm,size=0xb4) addr:0x02145760
+_ZN14ActorCharacter8vfunc_94Ev kind:function(arm,size=0x60) addr:0x02145814
+_ZN14ActorCharacter8vfunc_98Ev kind:function(arm,size=0x2c) addr:0x02145874
+_ZN14ActorCharacter8vfunc_d0Ev kind:function(arm,size=0x10) addr:0x021458a0
+_ZN14ActorCharacter8vfunc_9cEv kind:function(arm,size=0x1c) addr:0x021458b0
+_ZN14ActorCharacter8vfunc_ecEi kind:function(arm,size=0x34) addr:0x021458cc
+_ZN14ActorCharacter8vfunc_f0Ei kind:function(arm,size=0x1c) addr:0x02145900
+_ZN14ActorCharacter19func_ov014_0214591cEv kind:function(arm,size=0x58) addr:0x0214591c
+_ZN14ActorCharacter15IsHitboxTouchedEb kind:function(arm,size=0x100) addr:0x02145974
func_ov014_02145a74 kind:function(arm,size=0x74) addr:0x02145a74
func_ov014_02145ae8 kind:function(arm,size=0x30) addr:0x02145ae8
func_ov014_02145b18 kind:function(arm,size=0xb4) addr:0x02145b18
@@ -1178,44 +1178,44 @@ func_ov014_021474d8 kind:function(arm,size=0x70) addr:0x021474d8
func_ov014_02147548 kind:function(arm,size=0x3c) addr:0x02147548
func_ov014_02147584 kind:function(arm,size=0x108) addr:0x02147584
func_ov014_0214768c kind:function(arm,size=0x44) addr:0x0214768c
-func_ov014_021476d0 kind:function(arm,size=0x78) addr:0x021476d0
-func_ov014_02147748 kind:function(arm,size=0xe0) addr:0x02147748
-func_ov014_02147828 kind:function(arm,size=0x18) addr:0x02147828
-func_ov014_02147840 kind:function(arm,size=0x30) addr:0x02147840
-func_ov014_02147870 kind:function(arm,size=0xd0) addr:0x02147870
-func_ov014_02147940 kind:function(arm,size=0x10) addr:0x02147940
-func_ov014_02147950 kind:function(arm,size=0x114) addr:0x02147950
-func_ov014_02147a64 kind:function(arm,size=0x44) addr:0x02147a64
-func_ov014_02147aa8 kind:function(arm,size=0x40) addr:0x02147aa8
-func_ov014_02147ae8 kind:function(arm,size=0x30) addr:0x02147ae8
-func_ov014_02147b18 kind:function(arm,size=0x88) addr:0x02147b18
-func_ov014_02147ba0 kind:function(arm,size=0x10) addr:0x02147ba0
-func_ov014_02147bb0 kind:function(arm,size=0x28) addr:0x02147bb0
-func_ov014_02147bd8 kind:function(arm,size=0x28) addr:0x02147bd8
-func_ov014_02147c00 kind:function(arm,size=0x64) addr:0x02147c00
-func_ov014_02147c64 kind:function(arm,size=0x1c) addr:0x02147c64
-func_ov014_02147c80 kind:function(arm,size=0x14) addr:0x02147c80
-func_ov014_02147c94 kind:function(arm,size=0x4) addr:0x02147c94
-func_ov014_02147c98 kind:function(arm,size=0x50) addr:0x02147c98
-func_ov014_02147ce8 kind:function(arm,size=0x5c) addr:0x02147ce8
-func_ov014_02147d44 kind:function(arm,size=0xac) addr:0x02147d44
-func_ov014_02147df0 kind:function(arm,size=0xc) addr:0x02147df0
-func_ov014_02147dfc kind:function(arm,size=0x20) addr:0x02147dfc
-func_ov014_02147e1c kind:function(arm,size=0x48) addr:0x02147e1c
-func_ov014_02147e64 kind:function(arm,size=0x58) addr:0x02147e64
-func_ov014_02147ebc kind:function(arm,size=0x1c) addr:0x02147ebc
-func_ov014_02147ed8 kind:function(arm,size=0xc) addr:0x02147ed8
-func_ov014_02147ee4 kind:function(arm,size=0xd8) addr:0x02147ee4
-func_ov014_02147fbc kind:function(arm,size=0x10) addr:0x02147fbc
-func_ov014_02147fcc kind:function(arm,size=0x108) addr:0x02147fcc
-func_ov014_021480d4 kind:function(arm,size=0x5c) addr:0x021480d4
-func_ov014_02148130 kind:function(arm,size=0xc) addr:0x02148130
-func_ov014_0214813c kind:function(arm,size=0x2c) addr:0x0214813c
-func_ov014_02148168 kind:function(arm,size=0x30) addr:0x02148168
-func_ov014_02148198 kind:function(arm,size=0x34) addr:0x02148198
-func_ov014_021481cc kind:function(arm,size=0x30) addr:0x021481cc
-func_ov014_021481fc kind:function(arm,size=0x2c) addr:0x021481fc
-func_ov014_02148228 kind:function(arm,size=0xc) addr:0x02148228
+_ZN21ActorGenericCharacterC2Ev kind:function(arm,size=0x78) addr:0x021476d0
+_ZN21ActorGenericCharacter4InitEv kind:function(arm,size=0xe0) addr:0x02147748
+_ZN21ActorGenericCharacter8vfunc_68Ev kind:function(arm,size=0x18) addr:0x02147828
+_ZN21ActorGenericCharacter8vfunc_c0Ev kind:function(arm,size=0x30) addr:0x02147840
+_ZN21ActorGenericCharacter8vfunc_c4Ev kind:function(arm,size=0xd0) addr:0x02147870
+_ZN21ActorGenericCharacter19func_ov014_02147940Ev kind:function(arm,size=0x10) addr:0x02147940
+_ZN21ActorGenericCharacter19func_ov014_02147950Ev kind:function(arm,size=0x114) addr:0x02147950
+_ZN21ActorGenericCharacter8vfunc_80Ev kind:function(arm,size=0x44) addr:0x02147a64
+_ZN21ActorGenericCharacter8vfunc_84Ev kind:function(arm,size=0x40) addr:0x02147aa8
+_ZN21ActorGenericCharacter19func_ov014_02147ae8Ev kind:function(arm,size=0x30) addr:0x02147ae8
+_ZN21ActorGenericCharacter19func_ov014_02147b18Ev kind:function(arm,size=0x88) addr:0x02147b18
+_ZN21ActorGenericCharacter19func_ov014_02147ba0Ev kind:function(arm,size=0x10) addr:0x02147ba0
+_ZN21ActorGenericCharacter19func_ov014_02147bb0Ev kind:function(arm,size=0x28) addr:0x02147bb0
+_ZN21ActorGenericCharacter19func_ov014_02147bd8Ev kind:function(arm,size=0x28) addr:0x02147bd8
+_ZN21ActorGenericCharacter19func_ov014_02147c00Ev kind:function(arm,size=0x64) addr:0x02147c00
+_ZN21ActorGenericCharacterD1Ev kind:function(arm,size=0x1c) addr:0x02147c64
+_ZN21ActorGenericCharacterD0Ev kind:function(arm,size=0x14) addr:0x02147c80
+_ZN21ActorGenericCharacter8vfunc_f8Ev kind:function(arm,size=0x4) addr:0x02147c94
+_ZN21ActorGenericCharacter19func_ov014_02147c98Ev kind:function(arm,size=0x50) addr:0x02147c98
+_ZN21ActorGenericCharacter19func_ov014_02147ce8Ei kind:function(arm,size=0x5c) addr:0x02147ce8
+_ZN21ActorGenericCharacter19func_ov014_02147d44Ei kind:function(arm,size=0xac) addr:0x02147d44
+_Z19func_ov014_02147df0P21ActorGenericCharacter kind:function(arm,size=0xc) addr:0x02147df0
+_ZN21ActorGenericCharacter19func_ov014_02147dfcEv kind:function(arm,size=0x20) addr:0x02147dfc
+_ZN21ActorGenericCharacter19func_ov014_02147e1cEv kind:function(arm,size=0x48) addr:0x02147e1c
+_ZN21ActorGenericCharacter19func_ov014_02147e64Ev kind:function(arm,size=0x58) addr:0x02147e64
+_ZN21ActorGenericCharacter19func_ov014_02147ebcEv kind:function(arm,size=0x1c) addr:0x02147ebc
+_Z19func_ov014_02147ed8P21ActorGenericCharacter kind:function(arm,size=0xc) addr:0x02147ed8
+_ZN21ActorGenericCharacter19func_ov014_02147ee4Ev kind:function(arm,size=0xd8) addr:0x02147ee4
+_ZN21ActorGenericCharacter19func_ov014_02147fbcEv kind:function(arm,size=0x10) addr:0x02147fbc
+_ZN21ActorGenericCharacter19func_ov014_02147fccEv kind:function(arm,size=0x108) addr:0x02147fcc
+_ZN21ActorGenericCharacter19func_ov014_021480dcEv kind:function(arm,size=0x5c) addr:0x021480d4
+_ZN21ActorGenericCharacter19func_ov014_02148130Ev kind:function(arm,size=0xc) addr:0x02148130
+_ZN21ActorGenericCharacter19func_ov014_0214813cEv kind:function(arm,size=0x2c) addr:0x0214813c
+_ZN21ActorGenericCharacter19func_ov014_02148168Ev kind:function(arm,size=0x30) addr:0x02148168
+_ZN21ActorGenericCharacter19func_ov014_02148198Ev kind:function(arm,size=0x34) addr:0x02148198
+_ZN21ActorGenericCharacter19func_ov014_021481ccEv kind:function(arm,size=0x30) addr:0x021481cc
+_ZN21ActorGenericCharacter19func_ov014_021481fcEv kind:function(arm,size=0x2c) addr:0x021481fc
+_Z19func_ov014_02148228P21ActorGenericCharacter kind:function(arm,size=0xc) addr:0x02148228
func_ov014_02148234 kind:function(arm,size=0x38) addr:0x02148234
func_ov014_0214826c kind:function(arm,size=0x14) addr:0x0214826c
func_ov014_02148280 kind:function(arm,size=0x1c) addr:0x02148280
diff --git a/config/eur/arm9/overlays/ov031/delinks.txt b/config/eur/arm9/overlays/ov031/delinks.txt
index 5d5e1607..cf7a6053 100644
--- a/config/eur/arm9/overlays/ov031/delinks.txt
+++ b/config/eur/arm9/overlays/ov031/delinks.txt
@@ -5,6 +5,9 @@
.data start:0x021820a0 end:0x02183e80 kind:data align:32
.bss start:0x02183e80 end:0x02184200 kind:bss align:32
+src/31_Shop/Actor/ActorItemSellerBase.cpp:
+ .text start:0x0217cf2c end:0x0217dbdc
+
src/31_Shop/Actor/ActorShopItem.cpp:
.text start:0x0217dbdc end:0x02180708
.rodata start:0x021818e8 end:0x02181a88
@@ -12,3 +15,12 @@ src/31_Shop/Actor/ActorShopItem.cpp:
.ctor start:0x02182080 end:0x02182084
.data start:0x02182290 end:0x02183a98
.bss start:0x02183e88 end:0x02184154
+
+src/31_Shop/Actor/ActorItemSeller.cpp:
+ .text start:0x02180708 end:0x02180a84
+
+src/31_Shop/Actor/ActorBeedle.cpp:
+ .text start:0x02180a84 end:0x02181448
+
+src/31_Shop/Actor/ActorTetra.cpp:
+ .text start:0x02181448 end:0x021818a0
diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt
index 0473807f..64f71d4b 100644
--- a/config/eur/arm9/overlays/ov031/symbols.txt
+++ b/config/eur/arm9/overlays/ov031/symbols.txt
@@ -35,40 +35,40 @@ 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
-func_ov031_0217cf2c kind:function(arm,size=0x34) addr:0x0217cf2c
-func_ov031_0217cf60 kind:function(arm,size=0x24) addr:0x0217cf60
-func_ov031_0217cf84 kind:function(arm,size=0x2c) addr:0x0217cf84
-func_ov031_0217cfb0 kind:function(arm,size=0x24) addr:0x0217cfb0
-func_ov031_0217cfd4 kind:function(arm,size=0x440) addr:0x0217cfd4
-func_ov031_0217d414 kind:function(arm,size=0x30) addr:0x0217d414
-func_ov031_0217d444 kind:function(arm,size=0x2c) addr:0x0217d444
-func_ov031_0217d470 kind:function(arm,size=0x118) addr:0x0217d470
-func_ov031_0217d588 kind:function(arm,size=0x38) addr:0x0217d588
-func_ov031_0217d5c0 kind:function(arm,size=0x4) addr:0x0217d5c0
-func_ov031_0217d5c4 kind:function(arm,size=0x24) addr:0x0217d5c4
-func_ov031_0217d5e8 kind:function(arm,size=0x28) addr:0x0217d5e8
-func_ov031_0217d610 kind:function(arm,size=0x1c) addr:0x0217d610
-func_ov031_0217d62c kind:function(arm,size=0xc) addr:0x0217d62c
-func_ov031_0217d638 kind:function(arm,size=0x74) addr:0x0217d638
-func_ov031_0217d6ac kind:function(arm,size=0x24) addr:0x0217d6ac
-func_ov031_0217d6d0 kind:function(arm,size=0x90) addr:0x0217d6d0
-func_ov031_0217d760 kind:function(arm,size=0x24) addr:0x0217d760
-func_ov031_0217d784 kind:function(arm,size=0x28) addr:0x0217d784
-func_ov031_0217d7ac kind:function(arm,size=0x84) addr:0x0217d7ac
-func_ov031_0217d830 kind:function(arm,size=0x28) addr:0x0217d830
-func_ov031_0217d858 kind:function(arm,size=0x38) addr:0x0217d858
-func_ov031_0217d890 kind:function(arm,size=0x40) addr:0x0217d890
-func_ov031_0217d8d0 kind:function(arm,size=0xc) addr:0x0217d8d0
-func_ov031_0217d8dc kind:function(arm,size=0x60) addr:0x0217d8dc
-func_ov031_0217d93c kind:function(arm,size=0x38) addr:0x0217d93c
-func_ov031_0217d974 kind:function(arm,size=0x14) addr:0x0217d974
-func_ov031_0217d988 kind:function(arm,size=0xc) addr:0x0217d988
-func_ov031_0217d994 kind:function(arm,size=0x8c) addr:0x0217d994
-func_ov031_0217da20 kind:function(arm,size=0x60) addr:0x0217da20
-func_ov031_0217da80 kind:function(arm,size=0x38) addr:0x0217da80
-func_ov031_0217dab8 kind:function(arm,size=0x90) addr:0x0217dab8
-func_ov031_0217db48 kind:function(arm,size=0x8) addr:0x0217db48
-func_ov031_0217db50 kind:function(arm,size=0x8c) addr:0x0217db50
+_ZN19ActorItemSellerBaseC2Ev kind:function(arm,size=0x34) addr:0x0217cf2c
+_ZN19ActorItemSellerBaseD1Ev kind:function(arm,size=0x24) addr:0x0217cf60
+_ZN19ActorItemSellerBaseD0Ev kind:function(arm,size=0x2c) addr:0x0217cf84
+_ZN19ActorItemSellerBaseD2Ev kind:function(arm,size=0x24) addr:0x0217cfb0
+_ZN19ActorItemSellerBase4InitEv kind:function(arm,size=0x440) addr:0x0217cfd4
+_ZN19ActorItemSellerBase8vfunc_20Eb kind:function(arm,size=0x30) addr:0x0217d414
+_ZN19ActorItemSellerBase8vfunc_c0Ev kind:function(arm,size=0x2c) addr:0x0217d444
+_ZN19ActorItemSellerBase8vfunc_c4Ev kind:function(arm,size=0x118) addr:0x0217d470
+_ZN19ActorItemSellerBase19func_ov031_0217d588Ev kind:function(arm,size=0x38) addr:0x0217d588
+_ZN19ActorItemSellerBase19func_ov031_0217d5c0Ev kind:function(arm,size=0x4) addr:0x0217d5c0
+_ZN19ActorItemSellerBase19func_ov031_0217d5c4Ev kind:function(arm,size=0x24) addr:0x0217d5c4
+_ZN19ActorItemSellerBase19func_ov031_0217d5e8Ev kind:function(arm,size=0x28) addr:0x0217d5e8
+_ZN19ActorItemSellerBase19func_ov031_0217d610Ev kind:function(arm,size=0x1c) addr:0x0217d610
+_ZN19ActorItemSellerBase19func_ov031_0217d62cEv kind:function(arm,size=0xc) addr:0x0217d62c
+_ZN19ActorItemSellerBase19func_ov031_0217d638Ev kind:function(arm,size=0x74) addr:0x0217d638
+_ZN19ActorItemSellerBase19func_ov031_0217d6acEv kind:function(arm,size=0x24) addr:0x0217d6ac
+_ZN19ActorItemSellerBase19func_ov031_0217d6d0Ev kind:function(arm,size=0x90) addr:0x0217d6d0
+_ZN19ActorItemSellerBase19func_ov031_0217d760Ev kind:function(arm,size=0x24) addr:0x0217d760
+_ZN19ActorItemSellerBase19func_ov031_0217d784Ev kind:function(arm,size=0x28) addr:0x0217d784
+_ZN19ActorItemSellerBase19func_ov031_0217d7acEv kind:function(arm,size=0x84) addr:0x0217d7ac
+_ZN19ActorItemSellerBase19func_ov031_0217d830Ev kind:function(arm,size=0x28) addr:0x0217d830
+_ZN19ActorItemSellerBase19func_ov031_0217d858Ev kind:function(arm,size=0x38) addr:0x0217d858
+_ZN19ActorItemSellerBase19func_ov031_0217d890Ev kind:function(arm,size=0x40) addr:0x0217d890
+_ZN19ActorItemSellerBase19func_ov031_0217d8d0Ev kind:function(arm,size=0xc) addr:0x0217d8d0
+_ZN19ActorItemSellerBase19func_ov031_0217d8dcEv kind:function(arm,size=0x60) addr:0x0217d8dc
+_ZN19ActorItemSellerBase19func_ov031_0217d93cEv kind:function(arm,size=0x38) addr:0x0217d93c
+_ZN19ActorItemSellerBase19func_ov031_0217d974Ev kind:function(arm,size=0x14) addr:0x0217d974
+_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
+_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
_ZN15ActorShopItemDM6CreateEv kind:function(arm,size=0x40) addr:0x0217dbdc
_ZN20ActorShopItemSoldOut6CreateEv kind:function(arm,size=0x40) addr:0x0217dc1c
_ZN27ActorShopItemHeartContainer6CreateEv kind:function(arm,size=0x40) addr:0x0217dc5c
@@ -238,57 +238,57 @@ _ZN27ActorShopItemHeartContainerD0Ev kind:function(arm,size=0x1c) addr:0x021806a
_ZN27ActorShopItemHeartContainerD1Ev kind:function(arm,size=0x14) addr:0x021806c4
_ZN15ActorShopItemDMD0Ev kind:function(arm,size=0x1c) addr:0x021806d8
_ZN15ActorShopItemDMD1Ev kind:function(arm,size=0x14) addr:0x021806f4
-func_ov031_02180708 kind:function(arm,size=0x44) addr:0x02180708
-func_ov031_0218074c kind:function(arm,size=0x44) addr:0x0218074c
-func_ov031_02180790 kind:function(arm,size=0x44) addr:0x02180790
-func_ov031_021807d4 kind:function(arm,size=0x84) addr:0x021807d4
-func_ov031_02180858 kind:function(arm,size=0x108) addr:0x02180858
-func_ov031_02180960 kind:function(arm,size=0xc) addr:0x02180960
-func_ov031_0218096c kind:function(arm,size=0xc) addr:0x0218096c
-func_ov031_02180978 kind:function(arm,size=0xc) addr:0x02180978
-func_ov031_02180984 kind:function(arm,size=0xc) addr:0x02180984
-func_ov031_02180990 kind:function(arm,size=0xc) addr:0x02180990
-func_ov031_0218099c kind:function(arm,size=0x18) addr:0x0218099c
-func_ov031_021809b4 kind:function(arm,size=0xc) addr:0x021809b4
-func_ov031_021809c0 kind:function(arm,size=0x18) addr:0x021809c0
-func_ov031_021809d8 kind:function(arm,size=0x2c) addr:0x021809d8
-func_ov031_02180a04 kind:function(arm,size=0x50) addr:0x02180a04
-func_ov031_02180a54 kind:function(arm,size=0x1c) addr:0x02180a54
-func_ov031_02180a70 kind:function(arm,size=0x14) addr:0x02180a70
-func_ov031_02180a84 kind:function(arm,size=0x44) addr:0x02180a84
-func_ov031_02180ac8 kind:function(arm,size=0x108) addr:0x02180ac8
-func_ov031_02180bd0 kind:function(arm,size=0x118) addr:0x02180bd0
-func_ov031_02180ce8 kind:function(arm,size=0xf4) addr:0x02180ce8
-func_ov031_02180ddc kind:function(arm,size=0x68) addr:0x02180ddc
-func_ov031_02180e44 kind:function(arm,size=0x8) addr:0x02180e44
-func_ov031_02180e4c kind:function(arm,size=0x4c) addr:0x02180e4c
-func_ov031_02180e98 kind:function(arm,size=0x4c) addr:0x02180e98
-func_ov031_02180ee4 kind:function(arm,size=0x1c) addr:0x02180ee4
-func_ov031_02180f00 kind:function(arm,size=0x1c) addr:0x02180f00
-func_ov031_02180f1c kind:function(arm,size=0x1c) addr:0x02180f1c
-func_ov031_02180f38 kind:function(arm,size=0x190) addr:0x02180f38
-func_ov031_021810c8 kind:function(arm,size=0x2c) addr:0x021810c8
-func_ov031_021810f4 kind:function(arm,size=0x38) addr:0x021810f4
-func_ov031_0218112c kind:function(arm,size=0x74) addr:0x0218112c
-func_ov031_021811a0 kind:function(arm,size=0xc8) addr:0x021811a0
-func_ov031_02181268 kind:function(arm,size=0x18) addr:0x02181268
-func_ov031_02181280 kind:function(arm,size=0x14) addr:0x02181280
-func_ov031_02181294 kind:function(arm,size=0x50) addr:0x02181294
-func_ov031_021812e4 kind:function(arm,size=0x48) addr:0x021812e4
-func_ov031_0218132c kind:function(arm,size=0x8c) addr:0x0218132c
-func_ov031_021813b8 kind:function(arm,size=0x40) addr:0x021813b8
-func_ov031_021813f8 kind:function(arm,size=0x20) addr:0x021813f8
-func_ov031_02181418 kind:function(arm,size=0x1c) addr:0x02181418
-func_ov031_02181434 kind:function(arm,size=0x14) addr:0x02181434
-func_ov031_02181448 kind:function(arm,size=0x70) addr:0x02181448
-func_ov031_021814b8 kind:function(arm,size=0x100) addr:0x021814b8
-func_ov031_021815b8 kind:function(arm,size=0x28) addr:0x021815b8
-func_ov031_021815e0 kind:function(arm,size=0x30) addr:0x021815e0
-func_ov031_02181610 kind:function(arm,size=0x188) addr:0x02181610
-func_ov031_02181798 kind:function(arm,size=0xd4) addr:0x02181798
-func_ov031_0218186c kind:function(arm,size=0x1c) addr:0x0218186c
-func_ov031_02181888 kind:function(arm,size=0x14) addr:0x02181888
-func_ov031_0218189c kind:function(arm,size=0x4) addr:0x0218189c
+_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_114Ev kind:function(arm,size=0x108) addr:0x02180858
+_ZN15ActorItemSeller8vfunc_f4Ev kind:function(arm,size=0xc) addr:0x02180960
+_ZN15ActorItemSeller8vfunc_f8Ev kind:function(arm,size=0xc) addr:0x0218096c
+_ZN15ActorItemSeller8vfunc_fcEv kind:function(arm,size=0xc) addr:0x02180978
+_ZN15ActorItemSeller9vfunc_100Ev kind:function(arm,size=0xc) addr:0x02180984
+_ZN15ActorItemSeller9vfunc_104Ev kind:function(arm,size=0xc) addr:0x02180990
+_ZN15ActorItemSeller9vfunc_118Ev kind:function(arm,size=0x18) addr:0x0218099c
+_ZN15ActorItemSeller8vfunc_d4Ev kind:function(arm,size=0xc) addr:0x021809b4
+_ZN15ActorItemSeller9vfunc_108Ev kind:function(arm,size=0x18) addr:0x021809c0
+_ZN15ActorItemSeller9vfunc_10cEv kind:function(arm,size=0x2c) addr:0x021809d8
+_ZN15ActorItemSeller9vfunc_110Ev kind:function(arm,size=0x50) addr:0x02180a04
+_ZN15ActorItemSellerD1Ev kind:function(arm,size=0x1c) addr:0x02180a54
+_ZN15ActorItemSellerD0Ev 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
+_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
+_ZN11ActorBeedle9vfunc_108Ev kind:function(arm,size=0x18) addr:0x02181268
+_ZN11ActorBeedle9vfunc_10cEv 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
+_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
+_ZN10ActorTetra8vfunc_20Eb kind:function(arm,size=0x30) addr:0x021815e0
+_ZN14ActorTetra_4b019func_ov031_02181610Eiiiit kind:function(arm,size=0x188) addr:0x02181610
+_ZN14ActorTetra_4b019func_ov031_02181798Ev kind:function(arm,size=0xd4) addr:0x02181798
+_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
sShopItemBaseNames kind:data(any) addr:0x021818e8 local
unk$1534 kind:data(any) addr:0x02181a58 local
diff --git a/config/usa/arm9/overlays/ov014/delinks.txt b/config/usa/arm9/overlays/ov014/delinks.txt
index 46dc1f9f..32dedf81 100644
--- a/config/usa/arm9/overlays/ov014/delinks.txt
+++ b/config/usa/arm9/overlays/ov014/delinks.txt
@@ -20,3 +20,12 @@ src/14_Land/Actor/Player/ActorRefill.cpp:
.ctor start:0x02155848 end:0x0215584c
.data start:0x02157810 end:0x02157cd0
.bss start:0x0215aef4 end:0x0215af94
+
+src/14_Land/Actor/Character/ActorCharacterBase.cpp:
+ .text start:0x02144754 end:0x02144cf0
+
+src/14_Land/Actor/Character/ActorCharacter.cpp:
+ .text start:0x02144cf0 end:0x021459d0
+
+src/14_Land/Actor/Character/ActorGenericCharacter.cpp:
+ .text start:0x0214762c end:0x02148190
diff --git a/config/usa/arm9/overlays/ov014/symbols.txt b/config/usa/arm9/overlays/ov014/symbols.txt
index f4991334..735d3e12 100644
--- a/config/usa/arm9/overlays/ov014/symbols.txt
+++ b/config/usa/arm9/overlays/ov014/symbols.txt
@@ -1061,76 +1061,76 @@ 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
-func_ov014_021447f8 kind:function(arm,size=0x14) addr:0x02144754
-func_ov014_0214480c kind:function(arm,size=0x14) addr:0x02144768
-func_ov014_02144820 kind:function(arm,size=0x14) addr:0x0214477c
-func_ov014_02144834 kind:function(arm,size=0x14) addr:0x02144790
-func_ov014_02144848 kind:function(arm,size=0x8c) addr:0x021447a4
-func_ov014_021448d4 kind:function(arm,size=0x8) addr:0x02144830
-func_ov014_021448dc kind:function(arm,size=0x8) addr:0x02144838
-func_ov014_021448e4 kind:function(arm,size=0x8) addr:0x02144840
-func_ov014_021448ec kind:function(arm,size=0x8) addr:0x02144848
-func_ov014_021448f4 kind:function(arm,size=0xc) addr:0x02144850
-func_ov014_02144900 kind:function(arm,size=0x4c) addr:0x0214485c
-func_ov014_0214494c kind:function(arm,size=0x48) addr:0x021448a8
-func_ov014_02144994 kind:function(arm,size=0x50) addr:0x021448f0
-func_ov014_021449e4 kind:function(arm,size=0x48) addr:0x02144940
-func_ov014_02144a2c kind:function(arm,size=0x64) addr:0x02144988
-func_ov014_02144a90 kind:function(arm,size=0x6c) addr:0x021449ec
-func_ov014_02144afc kind:function(arm,size=0x68) addr:0x02144a58
-func_ov014_02144b64 kind:function(arm,size=0x19c) addr:0x02144ac0
-func_ov014_02144d00 kind:function(arm,size=0x8) addr:0x02144c5c
-func_ov014_02144d08 kind:function(arm,size=0x2c) addr:0x02144c64
-func_ov014_02144d34 kind:function(arm,size=0x18) addr:0x02144c90
-func_ov014_02144d4c kind:function(arm,size=0xc) addr:0x02144ca8
-func_ov014_02144d58 kind:function(arm,size=0xc) addr:0x02144cb4
-func_ov014_02144d64 kind:function(arm,size=0x4) addr:0x02144cc0
-func_ov014_02144d68 kind:function(arm,size=0x4) addr:0x02144cc4
-func_ov014_02144d6c kind:function(arm,size=0x4) addr:0x02144cc8
-func_ov014_02144d70 kind:function(arm,size=0x4) addr:0x02144ccc
-func_ov014_02144d74 kind:function(arm,size=0x20) addr:0x02144cd0
-func_ov014_02144d94 kind:function(arm,size=0x58) addr:0x02144cf0
-func_ov014_02144dec kind:function(arm,size=0x28) addr:0x02144d48
-func_ov014_02144e14 kind:function(arm,size=0x14) addr:0x02144d70
-func_ov014_02144e28 kind:function(arm,size=0x14) addr:0x02144d84
-func_ov014_02144e3c kind:function(arm,size=0x1c) addr:0x02144d98
-func_ov014_02144e58 kind:function(arm,size=0x1c) addr:0x02144db4
-func_ov014_02144e74 kind:function(arm,size=0x28) addr:0x02144dd0
-func_ov014_02144e9c kind:function(arm,size=0x14) addr:0x02144df8
-func_ov014_02144eb0 kind:function(arm,size=0x28) addr:0x02144e0c
-func_ov014_02144ed8 kind:function(arm,size=0x138) addr:0x02144e34
-func_ov014_02145010 kind:function(arm,size=0x48) addr:0x02144f6c
-func_ov014_02145058 kind:function(arm,size=0x50) addr:0x02144fb4
-func_ov014_021450a8 kind:function(arm,size=0x48) addr:0x02145004
-func_ov014_021450f0 kind:function(arm,size=0x10) addr:0x0214504c
-func_ov014_02145100 kind:function(arm,size=0x78) addr:0x0214505c
-func_ov014_02145178 kind:function(arm,size=0x78) addr:0x021450d4
-func_ov014_021451f0 kind:function(arm,size=0x68) addr:0x0214514c
-func_ov014_02145258 kind:function(arm,size=0x58) addr:0x021451b4
-func_ov014_021452b0 kind:function(arm,size=0x68) addr:0x0214520c
-func_ov014_02145318 kind:function(arm,size=0xdc) addr:0x02145274
-func_ov014_021453f4 kind:function(arm,size=0x20) addr:0x02145350
-func_ov014_02145414 kind:function(arm,size=0x78) addr:0x02145370
-func_ov014_0214548c kind:function(arm,size=0x7c) addr:0x021453e8
-func_ov014_02145508 kind:function(arm,size=0x18) addr:0x02145464
-func_ov014_02145520 kind:function(arm,size=0xc) addr:0x0214547c
-func_ov014_0214552c kind:function(arm,size=0x4c) addr:0x02145488
-func_ov014_02145578 kind:function(arm,size=0x38) addr:0x021454d4
-func_ov014_021455b0 kind:function(arm,size=0x34) addr:0x0214550c
-func_ov014_021455e4 kind:function(arm,size=0x94) addr:0x02145540
-func_ov014_02145678 kind:function(arm,size=0x18) addr:0x021455d4
-func_ov014_02145690 kind:function(arm,size=0x8) addr:0x021455ec
-func_ov014_02145698 kind:function(arm,size=0xa4) addr:0x021455f4
-func_ov014_0214573c kind:function(arm,size=0x24) addr:0x02145698
-func_ov014_02145760 kind:function(arm,size=0xb4) addr:0x021456bc
-func_ov014_02145814 kind:function(arm,size=0x60) addr:0x02145770
-func_ov014_02145874 kind:function(arm,size=0x2c) addr:0x021457d0
-func_ov014_021458a0 kind:function(arm,size=0x10) addr:0x021457fc
-func_ov014_021458b0 kind:function(arm,size=0x1c) addr:0x0214580c
-func_ov014_021458cc kind:function(arm,size=0x34) addr:0x02145828
-func_ov014_02145900 kind:function(arm,size=0x1c) addr:0x0214585c
-func_ov014_0214591c kind:function(arm,size=0x58) addr:0x02145878
-func_ov014_02145974 kind:function(arm,size=0x100) addr:0x021458d0
+_Z19func_ov014_021447f8P18ActorCharacterBase kind:function(arm,size=0x14) addr:0x02144754
+_Z19func_ov014_0214480cP18ActorCharacterBase kind:function(arm,size=0x14) addr:0x02144768
+_Z19func_ov014_02144820P18ActorCharacterBase kind:function(arm,size=0x14) addr:0x0214477c
+_Z19func_ov014_02144834P18ActorCharacterBase kind:function(arm,size=0x14) addr:0x02144790
+_Z19func_ov014_02144848PiiP18ActorCharacterBase kind:function(arm,size=0x8c) addr:0x021447a4
+_ZN18ActorCharacterBase8vfunc_d8Ev kind:function(arm,size=0x8) addr:0x02144830
+_ZN18ActorCharacterBase8vfunc_dcEv kind:function(arm,size=0x8) addr:0x02144838
+_ZN18ActorCharacterBase8vfunc_e0Ev kind:function(arm,size=0x8) addr:0x02144840
+_ZN18ActorCharacterBase8vfunc_e4Ev kind:function(arm,size=0x8) addr:0x02144848
+_ZN18ActorCharacterBase8vfunc_e8Ev kind:function(arm,size=0xc) addr:0x02144850
+_ZN18ActorCharacterBaseC2Ev kind:function(arm,size=0x4c) addr:0x0214485c
+_ZN18ActorCharacterBaseD1Ev kind:function(arm,size=0x48) addr:0x021448a8
+_ZN18ActorCharacterBaseD0Ev kind:function(arm,size=0x50) addr:0x021448f0
+_ZN18ActorCharacterBaseD2Ev kind:function(arm,size=0x48) addr:0x02144940
+_ZN18ActorCharacterBase4InitEv kind:function(arm,size=0x64) addr:0x02144988
+_ZN18ActorCharacterBase8vfunc_14Ej kind:function(arm,size=0x6c) addr:0x021449ec
+_ZN18ActorCharacterBase8vfunc_c0Ev kind:function(arm,size=0x68) addr:0x02144a58
+_ZN18ActorCharacterBase8vfunc_18Ej kind:function(arm,size=0x19c) addr:0x02144ac0
+_ZN18ActorCharacterBase8vfunc_d4Ev kind:function(arm,size=0x8) addr:0x02144c5c
+_ZN18ActorCharacterBase8vfunc_b4Ev kind:function(arm,size=0x2c) addr:0x02144c64
+_ZN18ActorCharacterBase8vfunc_b8Ev kind:function(arm,size=0x18) addr:0x02144c90
+_ZN18ActorCharacterBase8vfunc_80Ev kind:function(arm,size=0xc) addr:0x02144ca8
+_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_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
+_ZN14ActorCharacter19func_ov014_02144e14Ev kind:function(arm,size=0x14) addr:0x02144d70
+_ZN14ActorCharacter19func_ov014_02144e28Ev kind:function(arm,size=0x14) addr:0x02144d84
+_ZN14ActorCharacter19func_ov014_02144e3cEv kind:function(arm,size=0x1c) addr:0x02144d98
+_ZN14ActorCharacter19func_ov014_02144e58Ev kind:function(arm,size=0x1c) addr:0x02144db4
+_ZN14ActorCharacter19func_ov014_02144e74Ev kind:function(arm,size=0x28) addr:0x02144dd0
+_ZN19ActorCharacterModelD0Ev kind:function(arm,size=0x14) addr:0x02144df8
+_ZN18ActorCharacter_288C1Ev kind:function(arm,size=0x28) addr:0x02144e0c
+_ZN14ActorCharacterC2Ev kind:function(arm,size=0x138) addr:0x02144e34
+_ZN14ActorCharacterD1Ev kind:function(arm,size=0x48) addr:0x02144f6c
+_ZN14ActorCharacterD0Ev kind:function(arm,size=0x50) addr:0x02144fb4
+_ZN14ActorCharacterD2Ev kind:function(arm,size=0x48) addr:0x02145004
+_ZN14ActorCharacter4InitEv kind:function(arm,size=0x10) addr:0x0214504c
+_ZN14ActorCharacter8vfunc_20Eb kind:function(arm,size=0x78) addr:0x0214505c
+_ZN14ActorCharacter19func_ov014_02145178Ev kind:function(arm,size=0x78) addr:0x021450d4
+_ZN14ActorCharacter19func_ov014_021451f0EPi kind:function(arm,size=0x68) addr:0x0214514c
+_ZN14ActorCharacter19func_ov014_02145258Ev kind:function(arm,size=0x58) addr:0x021451b4
+_ZN14ActorCharacter19func_ov014_021452b0Ev kind:function(arm,size=0x68) addr:0x0214520c
+_ZN14ActorCharacter19func_ov014_02145318Ev kind:function(arm,size=0xdc) addr:0x02145274
+_ZN14ActorCharacter19func_ov014_021453f4Ev kind:function(arm,size=0x20) addr:0x02145350
+_ZN14ActorCharacter19func_ov014_02145414Ev kind:function(arm,size=0x78) addr:0x02145370
+_ZN14ActorCharacter19func_ov014_0214548cEv kind:function(arm,size=0x7c) addr:0x021453e8
+_ZN14ActorCharacter19func_ov014_02145508Ev kind:function(arm,size=0x18) addr:0x02145464
+_Z19func_ov014_02145520P14ActorCharacter kind:function(arm,size=0xc) addr:0x0214547c
+_ZN14ActorCharacter19func_ov014_0214552cEv kind:function(arm,size=0x4c) addr:0x02145488
+_ZN14ActorCharacter8vfunc_80Ev kind:function(arm,size=0x38) addr:0x021454d4
+_ZN14ActorCharacter8vfunc_84Ev kind:function(arm,size=0x34) addr:0x0214550c
+_ZN14ActorCharacter8vfunc_ccEv kind:function(arm,size=0x94) addr:0x02145540
+_ZN14ActorCharacter8vfunc_c8Ev kind:function(arm,size=0x18) addr:0x021455d4
+_ZN14ActorCharacter8vfunc_78Ev kind:function(arm,size=0x8) addr:0x021455ec
+_ZN14ActorCharacter8vfunc_74Ev kind:function(arm,size=0xa4) addr:0x021455f4
+_ZN14ActorCharacter8vfunc_7cEv kind:function(arm,size=0x24) addr:0x02145698
+_ZN14ActorCharacter8vfunc_90Ev kind:function(arm,size=0xb4) addr:0x021456bc
+_ZN14ActorCharacter8vfunc_94Ev kind:function(arm,size=0x60) addr:0x02145770
+_ZN14ActorCharacter8vfunc_98Ev kind:function(arm,size=0x2c) addr:0x021457d0
+_ZN14ActorCharacter8vfunc_d0Ev kind:function(arm,size=0x10) addr:0x021457fc
+_ZN14ActorCharacter8vfunc_9cEv kind:function(arm,size=0x1c) addr:0x0214580c
+_ZN14ActorCharacter8vfunc_ecEi kind:function(arm,size=0x34) addr:0x02145828
+_ZN14ActorCharacter8vfunc_f0Ei kind:function(arm,size=0x1c) addr:0x0214585c
+_ZN14ActorCharacter19func_ov014_0214591cEv kind:function(arm,size=0x58) addr:0x02145878
+_ZN14ActorCharacter15IsHitboxTouchedEb kind:function(arm,size=0x100) addr:0x021458d0
func_ov014_02145a74 kind:function(arm,size=0x74) addr:0x021459d0
func_ov014_02145ae8 kind:function(arm,size=0x30) addr:0x02145a44
func_ov014_02145b18 kind:function(arm,size=0xb4) addr:0x02145a74
@@ -1178,44 +1178,44 @@ func_ov014_021474d8 kind:function(arm,size=0x70) addr:0x02147434
func_ov014_02147548 kind:function(arm,size=0x3c) addr:0x021474a4
func_ov014_02147584 kind:function(arm,size=0x108) addr:0x021474e0
func_ov014_0214768c kind:function(arm,size=0x44) addr:0x021475e8
-func_ov014_021476d0 kind:function(arm,size=0x78) addr:0x0214762c
-func_ov014_02147748 kind:function(arm,size=0xe0) addr:0x021476a4
-func_ov014_02147828 kind:function(arm,size=0x18) addr:0x02147784
-func_ov014_02147840 kind:function(arm,size=0x30) addr:0x0214779c
-func_ov014_02147870 kind:function(arm,size=0xd0) addr:0x021477cc
-func_ov014_02147940 kind:function(arm,size=0x10) addr:0x0214789c
-func_ov014_02147950 kind:function(arm,size=0x114) addr:0x021478ac
-func_ov014_02147a64 kind:function(arm,size=0x44) addr:0x021479c0
-func_ov014_02147aa8 kind:function(arm,size=0x40) addr:0x02147a04
-func_ov014_02147ae8 kind:function(arm,size=0x30) addr:0x02147a44
-func_ov014_02147b18 kind:function(arm,size=0x88) addr:0x02147a74
-func_ov014_02147ba0 kind:function(arm,size=0x10) addr:0x02147afc
-func_ov014_02147bb0 kind:function(arm,size=0x28) addr:0x02147b0c
-func_ov014_02147bd8 kind:function(arm,size=0x28) addr:0x02147b34
-func_ov014_02147c00 kind:function(arm,size=0x64) addr:0x02147b5c
-func_ov014_02147c64 kind:function(arm,size=0x1c) addr:0x02147bc0
-func_ov014_02147c80 kind:function(arm,size=0x14) addr:0x02147bdc
-func_ov014_02147c94 kind:function(arm,size=0x4) addr:0x02147bf0
-func_ov014_02147c98 kind:function(arm,size=0x50) addr:0x02147bf4
-func_ov014_02147ce8 kind:function(arm,size=0x5c) addr:0x02147c44
-func_ov014_02147d44 kind:function(arm,size=0xac) addr:0x02147ca0
-func_ov014_02147df0 kind:function(arm,size=0xc) addr:0x02147d4c
-func_ov014_02147dfc kind:function(arm,size=0x20) addr:0x02147d58
-func_ov014_02147e1c kind:function(arm,size=0x48) addr:0x02147d78
-func_ov014_02147e64 kind:function(arm,size=0x58) addr:0x02147dc0
-func_ov014_02147ebc kind:function(arm,size=0x1c) addr:0x02147e18
-func_ov014_02147ed8 kind:function(arm,size=0xc) addr:0x02147e34
-func_ov014_02147ee4 kind:function(arm,size=0xd8) addr:0x02147e40
-func_ov014_02147fbc kind:function(arm,size=0x10) addr:0x02147f18
-func_ov014_02147fcc kind:function(arm,size=0x108) addr:0x02147f28
-func_ov014_021480d4 kind:function(arm,size=0x5c) addr:0x02148030
-func_ov014_02148130 kind:function(arm,size=0xc) addr:0x0214808c
-func_ov014_0214813c kind:function(arm,size=0x2c) addr:0x02148098
-func_ov014_02148168 kind:function(arm,size=0x30) addr:0x021480c4
-func_ov014_02148198 kind:function(arm,size=0x34) addr:0x021480f4
-func_ov014_021481cc kind:function(arm,size=0x30) addr:0x02148128
-func_ov014_021481fc kind:function(arm,size=0x2c) addr:0x02148158
-func_ov014_02148228 kind:function(arm,size=0xc) addr:0x02148184
+_ZN21ActorGenericCharacterC2Ev kind:function(arm,size=0x78) addr:0x0214762c
+_ZN21ActorGenericCharacter4InitEv kind:function(arm,size=0xe0) addr:0x021476a4
+_ZN21ActorGenericCharacter8vfunc_68Ev kind:function(arm,size=0x18) addr:0x02147784
+_ZN21ActorGenericCharacter8vfunc_c0Ev kind:function(arm,size=0x30) addr:0x0214779c
+_ZN21ActorGenericCharacter8vfunc_c4Ev kind:function(arm,size=0xd0) addr:0x021477cc
+_ZN21ActorGenericCharacter19func_ov014_02147940Ev kind:function(arm,size=0x10) addr:0x0214789c
+_ZN21ActorGenericCharacter19func_ov014_02147950Ev kind:function(arm,size=0x114) addr:0x021478ac
+_ZN21ActorGenericCharacter8vfunc_80Ev kind:function(arm,size=0x44) addr:0x021479c0
+_ZN21ActorGenericCharacter8vfunc_84Ev kind:function(arm,size=0x40) addr:0x02147a04
+_ZN21ActorGenericCharacter19func_ov014_02147ae8Ev kind:function(arm,size=0x30) addr:0x02147a44
+_ZN21ActorGenericCharacter19func_ov014_02147b18Ev kind:function(arm,size=0x88) addr:0x02147a74
+_ZN21ActorGenericCharacter19func_ov014_02147ba0Ev kind:function(arm,size=0x10) addr:0x02147afc
+_ZN21ActorGenericCharacter19func_ov014_02147bb0Ev kind:function(arm,size=0x28) addr:0x02147b0c
+_ZN21ActorGenericCharacter19func_ov014_02147bd8Ev kind:function(arm,size=0x28) addr:0x02147b34
+_ZN21ActorGenericCharacter19func_ov014_02147c00Ev kind:function(arm,size=0x64) addr:0x02147b5c
+_ZN21ActorGenericCharacterD1Ev kind:function(arm,size=0x1c) addr:0x02147bc0
+_ZN21ActorGenericCharacterD0Ev kind:function(arm,size=0x14) addr:0x02147bdc
+_ZN21ActorGenericCharacter8vfunc_f8Ev kind:function(arm,size=0x4) addr:0x02147bf0
+_ZN21ActorGenericCharacter19func_ov014_02147c98Ev kind:function(arm,size=0x50) addr:0x02147bf4
+_ZN21ActorGenericCharacter19func_ov014_02147ce8Ei kind:function(arm,size=0x5c) addr:0x02147c44
+_ZN21ActorGenericCharacter19func_ov014_02147d44Ei kind:function(arm,size=0xac) addr:0x02147ca0
+_Z19func_ov014_02147df0P21ActorGenericCharacter kind:function(arm,size=0xc) addr:0x02147d4c
+_ZN21ActorGenericCharacter19func_ov014_02147dfcEv kind:function(arm,size=0x20) addr:0x02147d58
+_ZN21ActorGenericCharacter19func_ov014_02147e1cEv kind:function(arm,size=0x48) addr:0x02147d78
+_ZN21ActorGenericCharacter19func_ov014_02147e64Ev kind:function(arm,size=0x58) addr:0x02147dc0
+_ZN21ActorGenericCharacter19func_ov014_02147ebcEv kind:function(arm,size=0x1c) addr:0x02147e18
+_Z19func_ov014_02147ed8P21ActorGenericCharacter kind:function(arm,size=0xc) addr:0x02147e34
+_ZN21ActorGenericCharacter19func_ov014_02147ee4Ev kind:function(arm,size=0xd8) addr:0x02147e40
+_ZN21ActorGenericCharacter19func_ov014_02147fbcEv kind:function(arm,size=0x10) addr:0x02147f18
+_ZN21ActorGenericCharacter19func_ov014_02147fccEv kind:function(arm,size=0x108) addr:0x02147f28
+_ZN21ActorGenericCharacter19func_ov014_021480dcEv kind:function(arm,size=0x5c) addr:0x02148030
+_ZN21ActorGenericCharacter19func_ov014_02148130Ev kind:function(arm,size=0xc) addr:0x0214808c
+_ZN21ActorGenericCharacter19func_ov014_0214813cEv kind:function(arm,size=0x2c) addr:0x02148098
+_ZN21ActorGenericCharacter19func_ov014_02148168Ev kind:function(arm,size=0x30) addr:0x021480c4
+_ZN21ActorGenericCharacter19func_ov014_02148198Ev kind:function(arm,size=0x34) addr:0x021480f4
+_ZN21ActorGenericCharacter19func_ov014_021481ccEv kind:function(arm,size=0x30) addr:0x02148128
+_ZN21ActorGenericCharacter19func_ov014_021481fcEv kind:function(arm,size=0x2c) addr:0x02148158
+_Z19func_ov014_02148228P21ActorGenericCharacter kind:function(arm,size=0xc) addr:0x02148184
func_ov014_02148234 kind:function(arm,size=0x38) addr:0x02148190
func_ov014_0214826c kind:function(arm,size=0x14) addr:0x021481c8
func_ov014_02148280 kind:function(arm,size=0x1c) addr:0x021481dc
diff --git a/config/usa/arm9/overlays/ov031/delinks.txt b/config/usa/arm9/overlays/ov031/delinks.txt
index 14857467..3020c7c3 100644
--- a/config/usa/arm9/overlays/ov031/delinks.txt
+++ b/config/usa/arm9/overlays/ov031/delinks.txt
@@ -5,6 +5,9 @@
.data start:0x02182000 end:0x02183de0 kind:data align:32
.bss start:0x02183de0 end:0x02184160 kind:bss align:32
+src/31_Shop/Actor/ActorItemSellerBase.cpp:
+ .text start:0x0217ce8c end:0x0217db3c
+
src/31_Shop/Actor/ActorShopItem.cpp:
.text start:0x0217db3c end:0x02180668
.rodata start:0x02181848 end:0x021819e8
@@ -12,3 +15,12 @@ src/31_Shop/Actor/ActorShopItem.cpp:
.ctor start:0x02181fe0 end:0x02181fe4
.data start:0x021821f0 end:0x021839f8
.bss start:0x02183de8 end:0x021840b4
+
+src/31_Shop/Actor/ActorItemSeller.cpp:
+ .text start:0x02180668 end:0x021809e4
+
+src/31_Shop/Actor/ActorBeedle.cpp:
+ .text start:0x021809e4 end:0x021813a8
+
+src/31_Shop/Actor/ActorTetra.cpp:
+ .text start:0x021813a8 end:0x02181800
diff --git a/config/usa/arm9/overlays/ov031/symbols.txt b/config/usa/arm9/overlays/ov031/symbols.txt
index d5c2da62..0906e73f 100644
--- a/config/usa/arm9/overlays/ov031/symbols.txt
+++ b/config/usa/arm9/overlays/ov031/symbols.txt
@@ -35,40 +35,40 @@ 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
-func_ov031_0217cf2c kind:function(arm,size=0x34) addr:0x0217ce8c
-func_ov031_0217cf60 kind:function(arm,size=0x24) addr:0x0217cec0
-func_ov031_0217cf84 kind:function(arm,size=0x2c) addr:0x0217cee4
-func_ov031_0217cfb0 kind:function(arm,size=0x24) addr:0x0217cf10
-func_ov031_0217cfd4 kind:function(arm,size=0x440) addr:0x0217cf34
-func_ov031_0217d414 kind:function(arm,size=0x30) addr:0x0217d374
-func_ov031_0217d444 kind:function(arm,size=0x2c) addr:0x0217d3a4
-func_ov031_0217d470 kind:function(arm,size=0x118) addr:0x0217d3d0
-func_ov031_0217d588 kind:function(arm,size=0x38) addr:0x0217d4e8
-func_ov031_0217d5c0 kind:function(arm,size=0x4) addr:0x0217d520
-func_ov031_0217d5c4 kind:function(arm,size=0x24) addr:0x0217d524
-func_ov031_0217d5e8 kind:function(arm,size=0x28) addr:0x0217d548
-func_ov031_0217d610 kind:function(arm,size=0x1c) addr:0x0217d570
-func_ov031_0217d62c kind:function(arm,size=0xc) addr:0x0217d58c
-func_ov031_0217d638 kind:function(arm,size=0x74) addr:0x0217d598
-func_ov031_0217d6ac kind:function(arm,size=0x24) addr:0x0217d60c
-func_ov031_0217d6d0 kind:function(arm,size=0x90) addr:0x0217d630
-func_ov031_0217d760 kind:function(arm,size=0x24) addr:0x0217d6c0
-func_ov031_0217d784 kind:function(arm,size=0x28) addr:0x0217d6e4
-func_ov031_0217d7ac kind:function(arm,size=0x84) addr:0x0217d70c
-func_ov031_0217d830 kind:function(arm,size=0x28) addr:0x0217d790
-func_ov031_0217d858 kind:function(arm,size=0x38) addr:0x0217d7b8
-func_ov031_0217d890 kind:function(arm,size=0x40) addr:0x0217d7f0
-func_ov031_0217d8d0 kind:function(arm,size=0xc) addr:0x0217d830
-func_ov031_0217d8dc kind:function(arm,size=0x60) addr:0x0217d83c
-func_ov031_0217d93c kind:function(arm,size=0x38) addr:0x0217d89c
-func_ov031_0217d974 kind:function(arm,size=0x14) addr:0x0217d8d4
-func_ov031_0217d988 kind:function(arm,size=0xc) addr:0x0217d8e8
-func_ov031_0217d994 kind:function(arm,size=0x8c) addr:0x0217d8f4
-func_ov031_0217da20 kind:function(arm,size=0x60) addr:0x0217d980
-func_ov031_0217da80 kind:function(arm,size=0x38) addr:0x0217d9e0
-func_ov031_0217dab8 kind:function(arm,size=0x90) addr:0x0217da18
-func_ov031_0217db48 kind:function(arm,size=0x8) addr:0x0217daa8
-func_ov031_0217db50 kind:function(arm,size=0x8c) addr:0x0217dab0
+_ZN19ActorItemSellerBaseC2Ev kind:function(arm,size=0x34) addr:0x0217ce8c
+_ZN19ActorItemSellerBaseD1Ev kind:function(arm,size=0x24) addr:0x0217cec0
+_ZN19ActorItemSellerBaseD0Ev kind:function(arm,size=0x2c) addr:0x0217cee4
+_ZN19ActorItemSellerBaseD2Ev kind:function(arm,size=0x24) addr:0x0217cf10
+_ZN19ActorItemSellerBase4InitEv kind:function(arm,size=0x440) addr:0x0217cf34
+_ZN19ActorItemSellerBase8vfunc_20Eb kind:function(arm,size=0x30) addr:0x0217d374
+_ZN19ActorItemSellerBase8vfunc_c0Ev kind:function(arm,size=0x2c) addr:0x0217d3a4
+_ZN19ActorItemSellerBase8vfunc_c4Ev kind:function(arm,size=0x118) addr:0x0217d3d0
+_ZN19ActorItemSellerBase19func_ov031_0217d588Ev kind:function(arm,size=0x38) addr:0x0217d4e8
+_ZN19ActorItemSellerBase19func_ov031_0217d5c0Ev kind:function(arm,size=0x4) addr:0x0217d520
+_ZN19ActorItemSellerBase19func_ov031_0217d5c4Ev kind:function(arm,size=0x24) addr:0x0217d524
+_ZN19ActorItemSellerBase19func_ov031_0217d5e8Ev kind:function(arm,size=0x28) addr:0x0217d548
+_ZN19ActorItemSellerBase19func_ov031_0217d610Ev kind:function(arm,size=0x1c) addr:0x0217d570
+_ZN19ActorItemSellerBase19func_ov031_0217d62cEv kind:function(arm,size=0xc) addr:0x0217d58c
+_ZN19ActorItemSellerBase19func_ov031_0217d638Ev kind:function(arm,size=0x74) addr:0x0217d598
+_ZN19ActorItemSellerBase19func_ov031_0217d6acEv kind:function(arm,size=0x24) addr:0x0217d60c
+_ZN19ActorItemSellerBase19func_ov031_0217d6d0Ev kind:function(arm,size=0x90) addr:0x0217d630
+_ZN19ActorItemSellerBase19func_ov031_0217d760Ev kind:function(arm,size=0x24) addr:0x0217d6c0
+_ZN19ActorItemSellerBase19func_ov031_0217d784Ev kind:function(arm,size=0x28) addr:0x0217d6e4
+_ZN19ActorItemSellerBase19func_ov031_0217d7acEv kind:function(arm,size=0x84) addr:0x0217d70c
+_ZN19ActorItemSellerBase19func_ov031_0217d830Ev kind:function(arm,size=0x28) addr:0x0217d790
+_ZN19ActorItemSellerBase19func_ov031_0217d858Ev kind:function(arm,size=0x38) addr:0x0217d7b8
+_ZN19ActorItemSellerBase19func_ov031_0217d890Ev kind:function(arm,size=0x40) addr:0x0217d7f0
+_ZN19ActorItemSellerBase19func_ov031_0217d8d0Ev kind:function(arm,size=0xc) addr:0x0217d830
+_ZN19ActorItemSellerBase19func_ov031_0217d8dcEv kind:function(arm,size=0x60) addr:0x0217d83c
+_ZN19ActorItemSellerBase19func_ov031_0217d93cEv kind:function(arm,size=0x38) addr:0x0217d89c
+_ZN19ActorItemSellerBase19func_ov031_0217d974Ev kind:function(arm,size=0x14) addr:0x0217d8d4
+_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
+_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
_ZN15ActorShopItemDM6CreateEv kind:function(arm,size=0x40) addr:0x0217db3c
_ZN20ActorShopItemSoldOut6CreateEv kind:function(arm,size=0x40) addr:0x0217db7c
_ZN27ActorShopItemHeartContainer6CreateEv kind:function(arm,size=0x40) addr:0x0217dbbc
@@ -238,57 +238,57 @@ _ZN27ActorShopItemHeartContainerD0Ev kind:function(arm,size=0x1c) addr:0x0218060
_ZN27ActorShopItemHeartContainerD1Ev kind:function(arm,size=0x14) addr:0x02180624
_ZN15ActorShopItemDMD0Ev kind:function(arm,size=0x1c) addr:0x02180638
_ZN15ActorShopItemDMD1Ev kind:function(arm,size=0x14) addr:0x02180654
-func_ov031_02180708 kind:function(arm,size=0x44) addr:0x02180668
-func_ov031_0218074c kind:function(arm,size=0x44) addr:0x021806ac
-func_ov031_02180790 kind:function(arm,size=0x44) addr:0x021806f0
-func_ov031_021807d4 kind:function(arm,size=0x84) addr:0x02180734
-func_ov031_02180858 kind:function(arm,size=0x108) addr:0x021807b8
-func_ov031_02180960 kind:function(arm,size=0xc) addr:0x021808c0
-func_ov031_0218096c kind:function(arm,size=0xc) addr:0x021808cc
-func_ov031_02180978 kind:function(arm,size=0xc) addr:0x021808d8
-func_ov031_02180984 kind:function(arm,size=0xc) addr:0x021808e4
-func_ov031_02180990 kind:function(arm,size=0xc) addr:0x021808f0
-func_ov031_0218099c kind:function(arm,size=0x18) addr:0x021808fc
-func_ov031_021809b4 kind:function(arm,size=0xc) addr:0x02180914
-func_ov031_021809c0 kind:function(arm,size=0x18) addr:0x02180920
-func_ov031_021809d8 kind:function(arm,size=0x2c) addr:0x02180938
-func_ov031_02180a04 kind:function(arm,size=0x50) addr:0x02180964
-func_ov031_02180a54 kind:function(arm,size=0x1c) addr:0x021809b4
-func_ov031_02180a70 kind:function(arm,size=0x14) addr:0x021809d0
-func_ov031_02180a84 kind:function(arm,size=0x44) addr:0x021809e4
-func_ov031_02180ac8 kind:function(arm,size=0x108) addr:0x02180a28
-func_ov031_02180bd0 kind:function(arm,size=0x118) addr:0x02180b30
-func_ov031_02180ce8 kind:function(arm,size=0xf4) addr:0x02180c48
-func_ov031_02180ddc kind:function(arm,size=0x68) addr:0x02180d3c
-func_ov031_02180e44 kind:function(arm,size=0x8) addr:0x02180da4
-func_ov031_02180e4c kind:function(arm,size=0x4c) addr:0x02180dac
-func_ov031_02180e98 kind:function(arm,size=0x4c) addr:0x02180df8
-func_ov031_02180ee4 kind:function(arm,size=0x1c) addr:0x02180e44
-func_ov031_02180f00 kind:function(arm,size=0x1c) addr:0x02180e60
-func_ov031_02180f1c kind:function(arm,size=0x1c) addr:0x02180e7c
-func_ov031_02180f38 kind:function(arm,size=0x190) addr:0x02180e98
-func_ov031_021810c8 kind:function(arm,size=0x2c) addr:0x02181028
-func_ov031_021810f4 kind:function(arm,size=0x38) addr:0x02181054
-func_ov031_0218112c kind:function(arm,size=0x74) addr:0x0218108c
-func_ov031_021811a0 kind:function(arm,size=0xc8) addr:0x02181100
-func_ov031_02181268 kind:function(arm,size=0x18) addr:0x021811c8
-func_ov031_02181280 kind:function(arm,size=0x14) addr:0x021811e0
-func_ov031_02181294 kind:function(arm,size=0x50) addr:0x021811f4
-func_ov031_021812e4 kind:function(arm,size=0x48) addr:0x02181244
-func_ov031_0218132c kind:function(arm,size=0x8c) addr:0x0218128c
-func_ov031_021813b8 kind:function(arm,size=0x40) addr:0x02181318
-func_ov031_021813f8 kind:function(arm,size=0x20) addr:0x02181358
-func_ov031_02181418 kind:function(arm,size=0x1c) addr:0x02181378
-func_ov031_02181434 kind:function(arm,size=0x14) addr:0x02181394
-func_ov031_02181448 kind:function(arm,size=0x70) addr:0x021813a8
-func_ov031_021814b8 kind:function(arm,size=0x100) addr:0x02181418
-func_ov031_021815b8 kind:function(arm,size=0x28) addr:0x02181518
-func_ov031_021815e0 kind:function(arm,size=0x30) addr:0x02181540
-func_ov031_02181610 kind:function(arm,size=0x188) addr:0x02181570
-func_ov031_02181798 kind:function(arm,size=0xd4) addr:0x021816f8
-func_ov031_0218186c kind:function(arm,size=0x1c) addr:0x021817cc
-func_ov031_02181888 kind:function(arm,size=0x14) addr:0x021817e8
-func_ov031_0218189c kind:function(arm,size=0x4) addr:0x021817fc
+_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_114Ev kind:function(arm,size=0x108) addr:0x021807b8
+_ZN15ActorItemSeller8vfunc_f4Ev kind:function(arm,size=0xc) addr:0x021808c0
+_ZN15ActorItemSeller8vfunc_f8Ev kind:function(arm,size=0xc) addr:0x021808cc
+_ZN15ActorItemSeller8vfunc_fcEv kind:function(arm,size=0xc) addr:0x021808d8
+_ZN15ActorItemSeller9vfunc_100Ev kind:function(arm,size=0xc) addr:0x021808e4
+_ZN15ActorItemSeller9vfunc_104Ev kind:function(arm,size=0xc) addr:0x021808f0
+_ZN15ActorItemSeller9vfunc_118Ev kind:function(arm,size=0x18) addr:0x021808fc
+_ZN15ActorItemSeller8vfunc_d4Ev kind:function(arm,size=0xc) addr:0x02180914
+_ZN15ActorItemSeller9vfunc_108Ev kind:function(arm,size=0x18) addr:0x02180920
+_ZN15ActorItemSeller9vfunc_10cEv kind:function(arm,size=0x2c) addr:0x02180938
+_ZN15ActorItemSeller9vfunc_110Ev kind:function(arm,size=0x50) addr:0x02180964
+_ZN15ActorItemSellerD1Ev kind:function(arm,size=0x1c) addr:0x021809b4
+_ZN15ActorItemSellerD0Ev 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
+_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
+_ZN11ActorBeedle9vfunc_108Ev kind:function(arm,size=0x18) addr:0x021811c8
+_ZN11ActorBeedle9vfunc_10cEv 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
+_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
+_ZN10ActorTetra8vfunc_20Eb kind:function(arm,size=0x30) addr:0x02181540
+_ZN14ActorTetra_4b019func_ov031_02181610Eiiiit kind:function(arm,size=0x188) addr:0x02181570
+_ZN14ActorTetra_4b019func_ov031_02181798Ev kind:function(arm,size=0xd4) addr:0x021816f8
+_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
unk$1534 kind:data(any) addr:0x021819b8 local
diff --git a/include/Actor/Character/ActorCharacter.hpp b/include/Actor/Character/ActorCharacter.hpp
new file mode 100644
index 00000000..f2248628
--- /dev/null
+++ b/include/Actor/Character/ActorCharacter.hpp
@@ -0,0 +1,245 @@
+#pragma once
+
+#include "Render/ModelRender.hpp"
+#include "global.h"
+#include "nds/math.h"
+#include "types.h"
+
+#include "Actor/Actor.hpp"
+#include "Unknown/UnkStruct_ov000_020c0c08.hpp"
+#include "Unknown/UnkStruct_ov000_020c5c2c.hpp"
+#include "Unknown/UnkStruct_ov000_020d18f4.hpp"
+
+class ActorCharacterBase : public Actor {
+public:
+ /* 000 (base) */
+ /* 158 */ UnkStruct_ov000_020d18f4 mUnk_158;
+ /* 1b4 */ unk32 mUnk_1b4;
+ /* 1b8 */ unk32 mUnk_1b8;
+ /* 1bc */ unk32 mUnk_1bc;
+ /* 1c0 */ unk8 mUnk_1c0;
+ /* 1c1 */ unk8 mUnk_1c1;
+ /* 1c2 */ unk8 mUnk_1c2;
+ /* 1c3 */ unk8 mUnk_1c3;
+ /* 1c4 */
+
+ /* 00 */ virtual ~ActorCharacterBase() override;
+ /* 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;
+ /* 80 */ virtual void vfunc_80() override;
+ /* 84 */ virtual void vfunc_84() override;
+ /* b4 */ virtual void vfunc_b4();
+ /* b8 */ virtual void vfunc_b8();
+ /* bc */ virtual bool vfunc_bc();
+ /* c0 */ virtual bool vfunc_c0();
+ /* c4 */ virtual void vfunc_c4() = 0;
+ /* c8 */ virtual void vfunc_c8();
+ /* cc */ virtual void vfunc_cc();
+ /* d0 */ virtual void vfunc_d0();
+ /* d4 */ virtual unk32 vfunc_d4();
+ /* d8 */ virtual unk32 vfunc_d8();
+ /* dc */ virtual unk32 vfunc_dc();
+ /* e0 */ virtual unk32 vfunc_e0();
+ /* e4 */ virtual unk32 vfunc_e4();
+ /* e8 */ virtual void vfunc_e8();
+ /* ec */
+
+ ActorCharacterBase();
+};
+
+struct ActorCharacter_1c4 {
+ /* 00 */ unk32 mUnk_00;
+ /* 04 */ unk32 mUnk_04;
+ /* 08 */ unk32 mUnk_08;
+ /* 0c */ unk32 mUnk_0c;
+ /* 10 */ unk32 mUnk_10;
+ /* 14 */
+};
+
+class ActorCharacterModel : public ModelRender {
+public:
+ /* 00 (base) */
+ /* 5c */ unk32 mUnk_5c;
+ /* 60 */ unk32 mUnk_60;
+ /* 64 */ unk16 mUnk_64;
+ /* 66 */ unk16 mUnk_66;
+ /* 68 */ unk16 mUnk_68;
+ /* 6a */ unk16 mUnk_6a;
+ /* 6c */ unk16 mUnk_6c;
+ /* 6e */ unk16 mUnk_6e;
+ /* 70 */ unk32 mUnk_70;
+ /* 74 */ unk32 mUnk_74;
+ /* 78 */ Vec3p mUnk_78;
+ /* 84 */ unk32 mUnk_84;
+ /* 88 */ unk32 mUnk_88;
+ /* 8c */ unk8 mUnk_8c;
+ /* 8d */ unk8 mUnk_8d;
+ /* 8e */ unk8 mUnk_8e;
+ /* 8f */ unk8 mUnk_8f;
+ /* 90 */
+
+ /* 00 */ virtual ~ActorCharacterModel() override;
+ /* 3c */ virtual void vfunc_3c(ModelRenderCommandsData *renderData) override;
+ /* 40 */
+
+ ActorCharacterModel();
+};
+
+class ActorCharacter_288 : public UnkStruct_ov000_020c0c08 {
+public:
+ /* 00 (base) */
+ /* 24 */ UnkStruct_ov000_020c0c08_04 *mUnk_24;
+ /* 28 */ PAD(0x28, 0x80);
+ /* 80 */
+
+ ActorCharacter_288();
+};
+
+struct ActorCharacter_430 {
+ /* 00 */ PAD(0x00, 0x18);
+ /* 18 */
+};
+
+class ActorCharacter : public ActorCharacterBase {
+public:
+ /* 000 (base) */
+ /* 1c4 */ ActorCharacter_1c4 mUnk_1c4;
+ /* 1d8 */ UnkStruct_ov000_020c5c2c mUnk_1d8;
+ /* 1f8 */ ActorCharacterModel mUnk_1f8;
+ /* 288 */ ActorCharacter_288 mUnk_288[2];
+ /* 388 */ ActorCharacter_288 mUnk_388;
+ /* 408 */ unk32 mUnk_408;
+ /* 40c */ unk32 mUnk_40c;
+ /* 410 */ unk32 mUnk_410;
+ /* 414 */ unk32 mUnk_414;
+ /* 418 */ unk32 mUnk_418;
+ /* 41c */ unk32 mUnk_41c;
+ /* 420 */ unk32 mUnk_420;
+ /* 424 */ unk32 mUnk_424;
+ /* 428 */ unk32 mUnk_428;
+ /* 428 */ PAD(0x42c, 0x42e);
+ /* 42e */ unk8 mUnk_42e;
+ /* 42f */ unk8 mUnk_42f;
+ /* 430 */ ActorCharacter_430 mUnk_430;
+ /* 448 */ unk32 mUnk_448;
+ /* 44c */ PAD(0x44c, 0x454);
+ /* 454 */ unk32 mUnk_454;
+ /* 458 */ unk32 mUnk_458;
+ /* 44c */ PAD(0x45c, 0x460);
+ /* 460 */ unk32 mUnk_460;
+ /* 464 */ unk32 mUnk_464;
+ /* 468 */ unk8 mUnk_468;
+ /* 469 */ unk8 mUnk_469;
+ /* 46a */ PAD(0x46a, 0x46c);
+ /* 46c */ unk32 mUnk_46c[1];
+ /* 470 */
+
+ /* 00 */ virtual ~ActorCharacter() override;
+ /* 08 */ virtual bool Init() override;
+ /* 20 */ virtual void vfunc_20(bool param1) override;
+ /* 40 */ virtual bool IsHitboxTouched(bool param1) override;
+ /* 68 */ virtual void vfunc_68() override;
+ /* 74 */ virtual void vfunc_74() override;
+ /* 78 */ virtual bool vfunc_78() override;
+ /* 7c */ virtual void vfunc_7c() override;
+ /* 80 */ virtual void vfunc_80() override;
+ /* 84 */ virtual void vfunc_84() override;
+ /* 90 */ virtual bool vfunc_90() override;
+ /* 94 */ virtual void vfunc_94() override;
+ /* 98 */ virtual bool vfunc_98() override;
+ /* 9c */ virtual bool vfunc_9c() override;
+ /* c8 */ virtual void vfunc_c8() override;
+ /* cc */ virtual void vfunc_cc() override;
+ /* d0 */ virtual void vfunc_d0() override;
+ /* ec */ virtual void vfunc_ec(unk32 param1);
+ /* f0 */ virtual void vfunc_f0(unk32 param1);
+ /* f4 */
+
+ ActorCharacter();
+
+ void func_ov014_02144d94();
+ void func_ov014_02144dec();
+ void func_ov014_02144e14();
+ void func_ov014_02144e28();
+ void func_ov014_02144e3c();
+ void func_ov014_02144e58();
+ void func_ov014_02144e74();
+
+ void func_ov014_02145178();
+ void func_ov014_021451f0(unk32 *param1);
+ void func_ov014_02145258();
+ unk32 func_ov014_021452b0();
+ unk32 func_ov014_02145318();
+ void func_ov014_021453f4();
+ void func_ov014_02145414();
+ void func_ov014_0214548c();
+ void func_ov014_02145508();
+ void func_ov014_0214552c();
+ void func_ov014_0214591c();
+};
+
+class ActorGenericCharacter : public ActorCharacter {
+public:
+ /* 000 (base) */
+ /* 470 */ PAD(0x470, 0x474);
+ /* 474 */ ActorGenericCharacter *mUnk_474;
+ /* 478 */ void *mUnk_478;
+ /* 47c */ unk32 mUnk_47c;
+ /* 480 */ PAD(0x480, 0x484);
+ /* 484 */ unk32 mUnk_484;
+ /* 488 */ unk32 mUnk_488;
+ /* 48c */ unk32 mUnk_48c;
+ /* 490 */ unk8 mUnk_490;
+ /* 491 */ PAD(0x491, 0x492);
+ /* 492 */ unk16 mUnk_492;
+ /* 494 */ unk16 mUnk_494;
+ /* 496 */ unk16 mUnk_496;
+ /* 498 */ unk16 mUnk_498;
+ /* 49a */ PAD(0x49a, 0x49c);
+ /* 49c */
+
+ /* 00 */ virtual ~ActorGenericCharacter() override;
+ /* 08 */ virtual bool Init() override;
+ /* 68 */ virtual void vfunc_68() override;
+ /* 80 */ virtual void vfunc_80() override;
+ /* 84 */ virtual void vfunc_84() override;
+ /* c0 */ virtual bool vfunc_c0() override;
+ /* c4 */ virtual void vfunc_c4() override;
+ /* f4 */ virtual void vfunc_f4() = 0;
+ /* f8 */ virtual void vfunc_f8();
+ /* fc */
+
+ ActorGenericCharacter();
+
+ void func_ov014_02147940();
+ void func_ov014_02147950();
+
+ void func_ov014_02147ae8();
+ bool func_ov014_02147b18();
+ void func_ov014_02147ba0();
+ bool func_ov014_02147bb0();
+ unk32 func_ov014_02147bd8();
+ void func_ov014_02147c00();
+
+ void func_ov014_02147c98();
+ void func_ov014_02147ce8(unk32 param1);
+ void func_ov014_02147d44(unk32 param1);
+
+ void func_ov014_02147dfc();
+ void func_ov014_02147e1c();
+ void func_ov014_02147e64();
+ void func_ov014_02147ebc();
+
+ void func_ov014_02147ee4();
+ void func_ov014_02147fbc();
+ void func_ov014_02147fcc();
+ void func_ov014_021480dc();
+ void func_ov014_02148130();
+ void func_ov014_0214813c();
+ void func_ov014_02148168();
+ void func_ov014_02148198();
+ void func_ov014_021481cc();
+ void func_ov014_021481fc();
+};
diff --git a/include/Actor/Character/ActorItemSeller.hpp b/include/Actor/Character/ActorItemSeller.hpp
new file mode 100644
index 00000000..b2e2db97
--- /dev/null
+++ b/include/Actor/Character/ActorItemSeller.hpp
@@ -0,0 +1,130 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Actor/ActorType.hpp"
+#include "Actor/Character/ActorCharacter.hpp"
+
+class ActorItemSellerBase : public ActorCharacter {
+public:
+ /* 000 (base) */
+ /* 470 */ unk32 mUnk_470;
+ /* 474 */
+
+ /* 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;
+ /* 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();
+ /* 120 */
+
+ ActorItemSellerBase();
+
+ void func_ov031_0217d588();
+ void func_ov031_0217d5c0();
+ void func_ov031_0217d5c4();
+ void func_ov031_0217d5e8();
+ void func_ov031_0217d610();
+ void func_ov031_0217d62c();
+ void func_ov031_0217d638();
+ void func_ov031_0217d6ac();
+ void func_ov031_0217d6d0();
+ void func_ov031_0217d760();
+ void func_ov031_0217d784();
+ void func_ov031_0217d7ac();
+ void func_ov031_0217d830();
+ void func_ov031_0217d858();
+ void func_ov031_0217d890();
+ void func_ov031_0217d8d0();
+ void func_ov031_0217d8dc();
+ void func_ov031_0217d93c();
+ void func_ov031_0217d974();
+
+ void func_ov031_0217da20(unk32 param1);
+};
+
+class ActorItemSeller : public ActorItemSellerBase {
+ /* 000 (base) */
+ /* 474 */
+
+ /* 000 */ virtual ~ActorItemSeller() override;
+ /* 008 */ virtual bool Init() override;
+ /* 0d4 */ virtual unk32 vfunc_d4() override;
+ /* 0f4 */ virtual void vfunc_f4() override;
+ /* 0f8 */ virtual void vfunc_f8() override;
+ /* 0fc */ virtual void vfunc_fc() override;
+ /* 100 */ virtual void vfunc_100() override;
+ /* 104 */ virtual void vfunc_104() override;
+ /* 108 */ virtual void vfunc_108() override;
+ /* 10c */ virtual void vfunc_10c() override;
+ /* 110 */ virtual void vfunc_110() override;
+ /* 114 */ virtual void vfunc_114() override;
+ /* 118 */ virtual void vfunc_118() override;
+ /* 120 */
+};
+
+namespace ActorItemSeller1 {
+ extern ActorType gType;
+ ActorItemSeller *Create();
+} // namespace ActorItemSeller1
+
+namespace ActorItemSeller2 {
+ extern ActorType gType;
+ ActorItemSeller *Create();
+} // namespace ActorItemSeller2
+
+namespace ActorItemSeller3 {
+ extern ActorType gType;
+ ActorItemSeller *Create();
+} // namespace ActorItemSeller3
+
+class ActorBeedle : public ActorItemSellerBase {
+public:
+ static ActorType gType;
+
+ /* 000 (base) */
+ /* 474 */
+
+ /* 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() override;
+ /* 0dc */ virtual unk32 vfunc_dc() override;
+ /* 0e0 */ virtual unk32 vfunc_e0() override;
+ /* 0f4 */ virtual void vfunc_f4() override;
+ /* 0f8 */ virtual void vfunc_f8() override;
+ /* 0fc */ virtual void vfunc_fc() override;
+ /* 100 */ virtual void vfunc_100() override;
+ /* 104 */ virtual void vfunc_104() override;
+ /* 108 */ virtual void vfunc_108() override;
+ /* 10c */ virtual void vfunc_10c() override;
+ /* 110 */ virtual void vfunc_110() override;
+ /* 114 */ virtual void vfunc_114() override;
+ /* 118 */ virtual void vfunc_118() override;
+ /* 11c */ virtual void 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/ActorTetra.hpp b/include/Actor/Character/ActorTetra.hpp
new file mode 100644
index 00000000..529fe126
--- /dev/null
+++ b/include/Actor/Character/ActorTetra.hpp
@@ -0,0 +1,56 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Actor/ActorType.hpp"
+#include "Actor/Character/ActorCharacter.hpp"
+
+struct ActorTetra_4cc {
+ /* 000 */ PAD(0x000, 0x9c0);
+ /* 9c0 */
+};
+
+struct ActorTetra_4b0 {
+ /* 00 */ unk32 mUnk_00;
+ /* 04 */ unk32 mUnk_04;
+ /* 08 */ unk32 mUnk_08;
+ /* 0c */ ActorTetra_4cc *mUnk_0c;
+ /* 10 */ ActorTetra_4cc *mUnk_10;
+ /* 14 */ unk32 mUnk_14; // always sizeof(ActorTetra_4cc)?
+ /* 18 */ unk32 mUnk_18;
+ /* 1c */
+
+ inline ActorTetra_4b0(ActorTetra_4cc *unk_0c, ActorTetra_4cc *unk_10, unk32 size) :
+ mUnk_00(0),
+ mUnk_04(0),
+ mUnk_0c(unk_0c),
+ mUnk_10(unk_10),
+ mUnk_14(size) {}
+
+ void func_ov031_02181610(unk32 param1, unk32 param2, unk32 param3, unk32 param4, u16 param5);
+ void func_ov031_02181798();
+};
+
+class ActorTetra : public ActorGenericCharacter {
+public:
+ static ActorType gType;
+
+ /* 0000 (base) */
+ /* 049c */ PAD(0x49c, 0x4b0);
+ /* 04b0 */ ActorTetra_4b0 mUnk_4b0;
+ /* 04cc */ ActorTetra_4cc mUnk_4cc;
+ /* 0e8c */ ActorTetra_4cc mUnk_e8c;
+ /* 184c */
+
+ /* 00 */ virtual ~ActorTetra() override;
+ /* 20 */ virtual void vfunc_20(bool param1) override;
+ /* c4 */ virtual void vfunc_c4() override;
+ /* f4 */ virtual void vfunc_f4() override;
+ /* f8 */ virtual void vfunc_f8() override;
+ /* fc */
+
+ static ActorTetra *Create();
+ inline ActorTetra() :
+ mUnk_4b0(&mUnk_4cc, &mUnk_e8c, sizeof(mUnk_4cc)) {}
+};
diff --git a/include/Unknown/UnkStruct_ov000_020c5c2c.hpp b/include/Unknown/UnkStruct_ov000_020c5c2c.hpp
new file mode 100644
index 00000000..2b47f19b
--- /dev/null
+++ b/include/Unknown/UnkStruct_ov000_020c5c2c.hpp
@@ -0,0 +1,8 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+struct UnkStruct_ov000_020c5c2c {
+ PAD(0x00, 0x20);
+};
diff --git a/include/global.h b/include/global.h
index 91df45f0..ec252705 100644
--- a/include/global.h
+++ b/include/global.h
@@ -5,15 +5,15 @@
#define ARRAY_LEN(arr) (s32)(sizeof(arr) / sizeof(*arr))
// Prevent the IDE from reporting errors that the compiler/linker won't report
-#ifdef __INTELLISENSE__
+#if defined(__INTELLISENSE__) || (__clang__)
+#else
+ // `override` was added in C++11 before the DS, so we only use the keyword to indicate overriden functions
+ #define override
#endif
#define ARM _Pragma("thumb off")
#define THUMB _Pragma("thumb on")
-// `override` was added in C++11 before the DS, so we only use the keyword to indicate overriden functions
-#define override
-
// Puts variables in the DTCM module by using #pragma section dtcm begin|end
#pragma define_section dtcm ".dtcm" \
".dtcm"
diff --git a/src/14_Land/Actor/Character/ActorCharacter.cpp b/src/14_Land/Actor/Character/ActorCharacter.cpp
new file mode 100644
index 00000000..b3d2b273
--- /dev/null
+++ b/src/14_Land/Actor/Character/ActorCharacter.cpp
@@ -0,0 +1,49 @@
+#include "Actor/Character/ActorCharacter.hpp"
+#include "Unknown/UnkStruct_ov000_020c0c08.hpp"
+
+void ActorCharacter::func_ov014_02144d94() {}
+void ActorCharacter::func_ov014_02144dec() {}
+void ActorCharacter::func_ov014_02144e14() {}
+void ActorCharacter::func_ov014_02144e28() {}
+void ActorCharacter::func_ov014_02144e3c() {}
+void ActorCharacter::func_ov014_02144e58() {}
+void ActorCharacter::func_ov014_02144e74() {}
+
+ActorCharacter_288::ActorCharacter_288() :
+ UnkStruct_ov000_020c0c08(mUnk_24, NULL) {}
+ActorCharacter::ActorCharacter() {}
+
+ActorCharacter::~ActorCharacter() {}
+bool ActorCharacter::Init() {}
+void ActorCharacter::vfunc_20(bool param1) {}
+
+void ActorCharacter::func_ov014_02145178() {}
+void ActorCharacter::func_ov014_021451f0(unk32 *param1) {}
+void ActorCharacter::func_ov014_02145258() {}
+unk32 ActorCharacter::func_ov014_021452b0() {}
+unk32 ActorCharacter::func_ov014_02145318() {}
+void ActorCharacter::func_ov014_021453f4() {}
+void ActorCharacter::func_ov014_02145414() {}
+void ActorCharacter::func_ov014_0214548c() {}
+void ActorCharacter::func_ov014_02145508() {}
+static void func_ov014_02145520(ActorCharacter *actor) {}
+void ActorCharacter::func_ov014_0214552c() {}
+
+void ActorCharacter::vfunc_80() {}
+void ActorCharacter::vfunc_84() {}
+void ActorCharacter::vfunc_cc() {}
+void ActorCharacter::vfunc_c8() {}
+bool ActorCharacter::vfunc_78() {}
+void ActorCharacter::vfunc_74() {}
+void ActorCharacter::vfunc_7c() {}
+bool ActorCharacter::vfunc_90() {}
+void ActorCharacter::vfunc_94() {}
+bool ActorCharacter::vfunc_98() {}
+void ActorCharacter::vfunc_d0() {}
+bool ActorCharacter::vfunc_9c() {}
+void ActorCharacter::vfunc_ec(unk32 param1) {}
+void ActorCharacter::vfunc_f0(unk32 param1) {}
+
+void ActorCharacter::func_ov014_0214591c() {}
+
+bool ActorCharacter::IsHitboxTouched(bool param1) {} \ No newline at end of file
diff --git a/src/14_Land/Actor/Character/ActorCharacterBase.cpp b/src/14_Land/Actor/Character/ActorCharacterBase.cpp
new file mode 100644
index 00000000..db2ed1ee
--- /dev/null
+++ b/src/14_Land/Actor/Character/ActorCharacterBase.cpp
@@ -0,0 +1,32 @@
+#include "Actor/Character/ActorCharacter.hpp"
+
+static void func_ov014_021447f8(ActorCharacterBase *actor) {}
+static void func_ov014_0214480c(ActorCharacterBase *actor) {}
+static void func_ov014_02144820(ActorCharacterBase *actor) {}
+static void func_ov014_02144834(ActorCharacterBase *actor) {}
+static void func_ov014_02144848(unk32 *param1, unk32 param2, ActorCharacterBase *actor) {}
+
+unk32 ActorCharacterBase::vfunc_d8() {}
+unk32 ActorCharacterBase::vfunc_dc() {}
+unk32 ActorCharacterBase::vfunc_e0() {}
+unk32 ActorCharacterBase::vfunc_e4() {}
+void ActorCharacterBase::vfunc_e8() {}
+
+ActorCharacterBase::ActorCharacterBase() :
+ mUnk_158(0x1000000) {}
+ActorCharacterBase::~ActorCharacterBase() {}
+
+bool ActorCharacterBase::Init() {}
+void ActorCharacterBase::vfunc_14(u32 param1) {}
+bool ActorCharacterBase::vfunc_c0() {}
+void ActorCharacterBase::vfunc_18(u32 param1) {}
+unk32 ActorCharacterBase::vfunc_d4() {}
+void ActorCharacterBase::vfunc_b4() {}
+void ActorCharacterBase::vfunc_b8() {}
+void ActorCharacterBase::vfunc_80() {}
+void ActorCharacterBase::vfunc_84() {}
+void ActorCharacterBase::vfunc_cc() {}
+void ActorCharacterBase::vfunc_c8() {}
+void ActorCharacterBase::vfunc_d0() {}
+void ActorCharacterBase::vfunc_68() {}
+bool ActorCharacterBase::vfunc_bc() {}
diff --git a/src/14_Land/Actor/Character/ActorGenericCharacter.cpp b/src/14_Land/Actor/Character/ActorGenericCharacter.cpp
new file mode 100644
index 00000000..a378ed48
--- /dev/null
+++ b/src/14_Land/Actor/Character/ActorGenericCharacter.cpp
@@ -0,0 +1,46 @@
+#include "Actor/Character/ActorCharacter.hpp"
+
+#define static
+
+ActorGenericCharacter::ActorGenericCharacter() {}
+bool ActorGenericCharacter::Init() {}
+void ActorGenericCharacter::vfunc_68() {}
+bool ActorGenericCharacter::vfunc_c0() {}
+void ActorGenericCharacter::vfunc_c4() {}
+void ActorGenericCharacter::func_ov014_02147940() {}
+void ActorGenericCharacter::func_ov014_02147950() {}
+void ActorGenericCharacter::vfunc_80() {}
+void ActorGenericCharacter::vfunc_84() {}
+
+void ActorGenericCharacter::func_ov014_02147ae8() {}
+bool ActorGenericCharacter::func_ov014_02147b18() {}
+void ActorGenericCharacter::func_ov014_02147ba0() {}
+bool ActorGenericCharacter::func_ov014_02147bb0() {}
+unk32 ActorGenericCharacter::func_ov014_02147bd8() {}
+void ActorGenericCharacter::func_ov014_02147c00() {}
+
+ActorGenericCharacter::~ActorGenericCharacter() {}
+void ActorGenericCharacter::vfunc_f8() {}
+
+void ActorGenericCharacter::func_ov014_02147c98() {}
+void ActorGenericCharacter::func_ov014_02147ce8(unk32 param1) {}
+void ActorGenericCharacter::func_ov014_02147d44(unk32 param1) {}
+static void func_ov014_02147df0(ActorGenericCharacter *actor) {}
+
+void ActorGenericCharacter::func_ov014_02147dfc() {}
+void ActorGenericCharacter::func_ov014_02147e1c() {}
+void ActorGenericCharacter::func_ov014_02147e64() {}
+void ActorGenericCharacter::func_ov014_02147ebc() {}
+static void func_ov014_02147ed8(ActorGenericCharacter *actor) {}
+
+void ActorGenericCharacter::func_ov014_02147ee4() {}
+void ActorGenericCharacter::func_ov014_02147fbc() {}
+void ActorGenericCharacter::func_ov014_02147fcc() {}
+void ActorGenericCharacter::func_ov014_021480dc() {}
+void ActorGenericCharacter::func_ov014_02148130() {}
+void ActorGenericCharacter::func_ov014_0214813c() {}
+void ActorGenericCharacter::func_ov014_02148168() {}
+void ActorGenericCharacter::func_ov014_02148198() {}
+void ActorGenericCharacter::func_ov014_021481cc() {}
+void ActorGenericCharacter::func_ov014_021481fc() {}
+static void func_ov014_02148228(ActorGenericCharacter *actor) {} \ No newline at end of file
diff --git a/src/31_Shop/Actor/ActorBeedle.cpp b/src/31_Shop/Actor/ActorBeedle.cpp
new file mode 100644
index 00000000..0daf9d03
--- /dev/null
+++ b/src/31_Shop/Actor/ActorBeedle.cpp
@@ -0,0 +1,31 @@
+#include "Actor/Character/ActorItemSeller.hpp"
+
+ActorBeedle *ActorBeedle::Create() {}
+
+bool ActorBeedle::Init() {}
+void ActorBeedle::vfunc_c4() {}
+void ActorBeedle::vfunc_114() {}
+unk32 ActorBeedle::vfunc_d4() {}
+
+static unk32 func_ov031_02180e44(unk32 param1, unk32 param2) {}
+
+void ActorBeedle::vfunc_f4() {}
+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() {}
+bool ActorBeedle::vfunc_70() {}
+bool ActorBeedle::vfunc_6c() {}
+void ActorBeedle::vfunc_108() {}
+void ActorBeedle::vfunc_10c() {}
+void ActorBeedle::vfunc_110() {}
+
+unk32 ActorBeedle::func_ov031_021812e4(unk32 param1) {}
+void ActorBeedle::func_ov031_0218132c(unk32 param1) {}
+
+void 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
new file mode 100644
index 00000000..c6d746af
--- /dev/null
+++ b/src/31_Shop/Actor/ActorItemSeller.cpp
@@ -0,0 +1,21 @@
+#include "Actor/Character/ActorItemSeller.hpp"
+
+ActorItemSeller *ActorItemSeller1::Create() {}
+ActorItemSeller *ActorItemSeller2::Create() {}
+ActorItemSeller *ActorItemSeller3::Create() {}
+
+bool ActorItemSeller::Init() {}
+void ActorItemSeller::vfunc_114() {}
+void ActorItemSeller::vfunc_f4() {}
+void ActorItemSeller::vfunc_f8() {}
+void ActorItemSeller::vfunc_fc() {}
+void ActorItemSeller::vfunc_100() {}
+void ActorItemSeller::vfunc_104() {}
+void ActorItemSeller::vfunc_118() {}
+
+unk32 ActorItemSeller::vfunc_d4() {}
+
+void ActorItemSeller::vfunc_108() {}
+void ActorItemSeller::vfunc_10c() {}
+void ActorItemSeller::vfunc_110() {}
+ActorItemSeller::~ActorItemSeller() {}
diff --git a/src/31_Shop/Actor/ActorItemSellerBase.cpp b/src/31_Shop/Actor/ActorItemSellerBase.cpp
new file mode 100644
index 00000000..d051a075
--- /dev/null
+++ b/src/31_Shop/Actor/ActorItemSellerBase.cpp
@@ -0,0 +1,39 @@
+#include "Actor/Character/ActorItemSeller.hpp"
+
+ActorItemSellerBase::ActorItemSellerBase() {}
+ActorItemSellerBase::~ActorItemSellerBase() {}
+
+bool ActorItemSellerBase::Init() {}
+void ActorItemSellerBase::vfunc_20(bool param1) {}
+bool ActorItemSellerBase::vfunc_c0() {}
+void ActorItemSellerBase::vfunc_c4() {}
+
+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() {}
+
+unk32 ActorItemSellerBase::vfunc_d4() {}
+bool ActorItemSellerBase::vfunc_8c() {}
+
+void ActorItemSellerBase::func_ov031_0217da20(unk32 param1) {}
+
+void ActorItemSellerBase::vfunc_68() {}
+bool ActorItemSellerBase::CollidesWithLink() {}
+void ActorItemSellerBase::vfunc_11c() {}
+bool ActorItemSellerBase::IsHitboxTouched(bool param1) {}
diff --git a/src/31_Shop/Actor/ActorTetra.cpp b/src/31_Shop/Actor/ActorTetra.cpp
new file mode 100644
index 00000000..b7566b1d
--- /dev/null
+++ b/src/31_Shop/Actor/ActorTetra.cpp
@@ -0,0 +1,12 @@
+#include "Actor/Character/ActorTetra.hpp"
+
+ActorTetra *ActorTetra::Create() {}
+void ActorTetra::vfunc_f4() {}
+void ActorTetra::vfunc_c4() {}
+void ActorTetra::vfunc_20(bool param1) {}
+
+void ActorTetra_4b0::func_ov031_02181610(unk32 param1, unk32 param2, unk32 param3, unk32 param4, u16 param5) {}
+void ActorTetra_4b0::func_ov031_02181798() {}
+
+ActorTetra::~ActorTetra() {}
+void ActorTetra::vfunc_f8() {}