summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAetias <aetias@outlook.com>2025-01-26 09:26:12 +0100
committerAetias <aetias@outlook.com>2025-01-26 09:26:12 +0100
commit280801981c42fac7db0420c6536d26f5d05df3aa (patch)
treeccf64e5c0def75c7a958973a53a6b3274853725d
parent3c14d7b17402dde493ef85d5428dae81f1314b8e (diff)
Move ov012 documentation from Ghidra
-rw-r--r--config/eur/arm9/overlays/ov012/symbols.txt50
-rw-r--r--config/usa/arm9/overlays/ov012/symbols.txt50
-rw-r--r--docs/overlays.md2
-rw-r--r--include/Player/Battle/PlayerBattleLinkControlData.hpp51
-rw-r--r--include/Player/PlayerControlData.hpp18
-rw-r--r--src/00_Core/Player/PlayerControlData.cpp12
-rw-r--r--src/12_Battle/Player/Battle/PlayerBattleLinkControlData.cpp25
7 files changed, 142 insertions, 66 deletions
diff --git a/config/eur/arm9/overlays/ov012/symbols.txt b/config/eur/arm9/overlays/ov012/symbols.txt
index b1e3309f..84b02182 100644
--- a/config/eur/arm9/overlays/ov012/symbols.txt
+++ b/config/eur/arm9/overlays/ov012/symbols.txt
@@ -216,30 +216,30 @@ func_ov012_0211aa4c kind:function(arm,size=0x20) addr:0x211aa4c
func_ov012_0211aa6c kind:function(arm,size=0xc) addr:0x211aa6c
func_ov012_0211aa78 kind:function(arm,size=0x1c) addr:0x211aa78
func_ov012_0211aa94 kind:function(arm,size=0xc) addr:0x211aa94
-func_ov012_0211aaa0 kind:function(arm,size=0x268) addr:0x211aaa0
-func_ov012_0211ad08 kind:function(arm,size=0x5c) addr:0x211ad08
-func_ov012_0211ad64 kind:function(arm,size=0x64) addr:0x211ad64
-func_ov012_0211adc8 kind:function(arm,size=0xc) addr:0x211adc8
-func_ov012_0211add4 kind:function(arm,size=0x10) addr:0x211add4
-func_ov012_0211ade4 kind:function(arm,size=0x44) addr:0x211ade4
-func_ov012_0211ae28 kind:function(arm,size=0x24) addr:0x211ae28
-func_ov012_0211ae4c kind:function(arm,size=0x114) addr:0x211ae4c
-func_ov012_0211af60 kind:function(arm,size=0x10) addr:0x211af60
-func_ov012_0211af70 kind:function(arm,size=0x15c) addr:0x211af70
-func_ov012_0211b0cc kind:function(arm,size=0x24) addr:0x211b0cc
-func_ov012_0211b0f0 kind:function(arm,size=0x1b0) addr:0x211b0f0
-func_ov012_0211b2a0 kind:function(arm,size=0xe4) addr:0x211b2a0
-func_ov012_0211b384 kind:function(arm,size=0xc) addr:0x211b384
-func_ov012_0211b390 kind:function(arm,size=0x144) addr:0x211b390
-func_ov012_0211b4d4 kind:function(arm,size=0x18) addr:0x211b4d4
-func_ov012_0211b4ec kind:function(arm,size=0x1ac) addr:0x211b4ec
-func_ov012_0211b698 kind:function(arm,size=0x224) addr:0x211b698
-func_ov012_0211b8bc kind:function(arm,size=0xdc) addr:0x211b8bc
-func_ov012_0211b998 kind:function(arm,size=0x2c) addr:0x211b998
-func_ov012_0211b9c4 kind:function(arm,size=0xd0) addr:0x211b9c4
-func_ov012_0211ba94 kind:function(arm,size=0x74) addr:0x211ba94
-func_ov012_0211bb08 kind:function(arm,size=0xcc) addr:0x211bb08
-func_ov012_0211bbd4 kind:function(arm,size=0x8) addr:0x211bbd4
+_ZN27PlayerBattleLinkControlDataC2Ev kind:function(arm,size=0x268) addr:0x211aaa0
+_ZN27PlayerBattleLinkControlDataD1Ev kind:function(arm,size=0x5c) addr:0x211ad08
+_ZN27PlayerBattleLinkControlDataD0Ev kind:function(arm,size=0x64) addr:0x211ad64
+_ZN27PlayerBattleLinkControlData8vfunc_18Ev kind:function(arm,size=0xc) addr:0x211adc8
+_ZN27PlayerBattleLinkControlData8vfunc_14Ei kind:function(arm,size=0x10) addr:0x211add4
+_ZN27PlayerBattleLinkControlData8vfunc_60Eiii kind:function(arm,size=0x44) addr:0x211ade4
+_ZN27PlayerBattleLinkControlData8vfunc_68Eii kind:function(arm,size=0x24) addr:0x211ae28
+_ZN27PlayerBattleLinkControlData8vfunc_64Ej kind:function(arm,size=0x114) addr:0x211ae4c
+_ZN27PlayerBattleLinkControlData8vfunc_6cEiP5Vec3p kind:function(arm,size=0x10) addr:0x211af60
+_ZN27PlayerBattleLinkControlData19func_ov012_0211af70Ev kind:function(arm,size=0x15c) addr:0x211af70
+_ZN27PlayerBattleLinkControlData8vfunc_20Ev kind:function(arm,size=0x24) addr:0x211b0cc
+_ZN27PlayerBattleLinkControlData8vfunc_80Ei kind:function(arm,size=0x1b0) addr:0x211b0f0
+_ZN27PlayerBattleLinkControlData8vfunc_2cEv kind:function(arm,size=0xe4) addr:0x211b2a0
+_Z19func_ov012_0211b384Pii kind:function(arm,size=0xc) addr:0x211b384
+_ZN27PlayerBattleLinkControlData8vfunc_30Ev kind:function(arm,size=0x144) addr:0x211b390
+_ZN27PlayerBattleLinkControlData8vfunc_38Eii kind:function(arm,size=0x18) addr:0x211b4d4
+_ZN27PlayerBattleLinkControlData8vfunc_40EPtP5Vec3pic kind:function(arm,size=0x1ac) addr:0x211b4ec
+_ZN27PlayerBattleLinkControlData8vfunc_3cEii kind:function(arm,size=0x224) addr:0x211b698
+_ZN27PlayerBattleLinkControlData8vfunc_44EiPiis kind:function(arm,size=0xdc) addr:0x211b8bc
+_ZN27PlayerBattleLinkControlData8vfunc_70Ei kind:function(arm,size=0x2c) addr:0x211b998
+_ZN27PlayerBattleLinkControlData19func_ov012_0211b9c4EiP5Vec3p kind:function(arm,size=0xd0) addr:0x211b9c4
+_ZN27PlayerBattleLinkControlData8vfunc_4cEiP5Vec3p kind:function(arm,size=0x74) addr:0x211ba94
+_ZN27PlayerBattleLinkControlData19func_ov012_0211bb08Ei kind:function(arm,size=0xcc) addr:0x211bb08
+_ZN27PlayerBattleLinkControlData14GetCharacterIdEv kind:function(arm,size=0x8) addr:0x211bbd4
func_ov012_0211bbdc kind:function(arm,size=0x44) addr:0x211bbdc
func_ov012_0211bc20 kind:function(arm,size=0x34) addr:0x211bc20
func_ov012_0211bc54 kind:function(arm,size=0x10) addr:0x211bc54
@@ -1155,7 +1155,7 @@ data_ov012_02135e18 kind:data(any) addr:0x2135e18
data_ov012_02135e1c kind:data(any) addr:0x2135e1c
data_ov012_02135e40 kind:data(any) addr:0x2135e40
data_ov012_02135e70 kind:data(any) addr:0x2135e70
-data_ov012_02135e80 kind:data(any) addr:0x2135e80
+_ZTV27PlayerBattleLinkControlData kind:data(any) addr:0x2135e80
data_ov012_02135f04 kind:data(any) addr:0x2135f04
data_ov012_02135f18 kind:data(any) addr:0x2135f18
data_ov012_02135f20 kind:data(any) addr:0x2135f20
diff --git a/config/usa/arm9/overlays/ov012/symbols.txt b/config/usa/arm9/overlays/ov012/symbols.txt
index 7342f7ee..028f78c9 100644
--- a/config/usa/arm9/overlays/ov012/symbols.txt
+++ b/config/usa/arm9/overlays/ov012/symbols.txt
@@ -216,30 +216,30 @@ func_ov012_0211aa4c kind:function(arm,size=0x20) addr:0x211a9cc
func_ov012_0211aa6c kind:function(arm,size=0xc) addr:0x211a9ec
func_ov012_0211aa78 kind:function(arm,size=0x1c) addr:0x211a9f8
func_ov012_0211aa94 kind:function(arm,size=0xc) addr:0x211aa14
-func_ov012_0211aaa0 kind:function(arm,size=0x268) addr:0x211aa20
-func_ov012_0211ad08 kind:function(arm,size=0x5c) addr:0x211ac88
-func_ov012_0211ad64 kind:function(arm,size=0x64) addr:0x211ace4
-func_ov012_0211adc8 kind:function(arm,size=0xc) addr:0x211ad48
-func_ov012_0211add4 kind:function(arm,size=0x10) addr:0x211ad54
-func_ov012_0211ade4 kind:function(arm,size=0x44) addr:0x211ad64
-func_ov012_0211ae28 kind:function(arm,size=0x24) addr:0x211ada8
-func_ov012_0211ae4c kind:function(arm,size=0x114) addr:0x211adcc
-func_ov012_0211af60 kind:function(arm,size=0x10) addr:0x211aee0
-func_ov012_0211af70 kind:function(arm,size=0x15c) addr:0x211aef0
-func_ov012_0211b0cc kind:function(arm,size=0x24) addr:0x211b04c
-func_ov012_0211b0f0 kind:function(arm,size=0x1b0) addr:0x211b070
-func_ov012_0211b2a0 kind:function(arm,size=0xe4) addr:0x211b220
-func_ov012_0211b384 kind:function(arm,size=0xc) addr:0x211b304
-func_ov012_0211b390 kind:function(arm,size=0x144) addr:0x211b310
-func_ov012_0211b4d4 kind:function(arm,size=0x18) addr:0x211b454
-func_ov012_0211b4ec kind:function(arm,size=0x1ac) addr:0x211b46c
-func_ov012_0211b698 kind:function(arm,size=0x224) addr:0x211b618
-func_ov012_0211b8bc kind:function(arm,size=0xdc) addr:0x211b83c
-func_ov012_0211b998 kind:function(arm,size=0x2c) addr:0x211b918
-func_ov012_0211b9c4 kind:function(arm,size=0xd0) addr:0x211b944
-func_ov012_0211ba94 kind:function(arm,size=0x74) addr:0x211ba14
-func_ov012_0211bb08 kind:function(arm,size=0xcc) addr:0x211ba88
-func_ov012_0211bbd4 kind:function(arm,size=0x8) addr:0x211bb54
+_ZN27PlayerBattleLinkControlDataC2Ev kind:function(arm,size=0x268) addr:0x211aa20
+_ZN27PlayerBattleLinkControlDataD1Ev kind:function(arm,size=0x5c) addr:0x211ac88
+_ZN27PlayerBattleLinkControlDataD0Ev kind:function(arm,size=0x64) addr:0x211ace4
+_ZN27PlayerBattleLinkControlData8vfunc_18Ev kind:function(arm,size=0xc) addr:0x211ad48
+_ZN27PlayerBattleLinkControlData8vfunc_14Ei kind:function(arm,size=0x10) addr:0x211ad54
+_ZN27PlayerBattleLinkControlData8vfunc_60Eiii kind:function(arm,size=0x44) addr:0x211ad64
+_ZN27PlayerBattleLinkControlData8vfunc_68Eii kind:function(arm,size=0x24) addr:0x211ada8
+_ZN27PlayerBattleLinkControlData8vfunc_64Ej kind:function(arm,size=0x114) addr:0x211adcc
+_ZN27PlayerBattleLinkControlData8vfunc_6cEiP5Vec3p kind:function(arm,size=0x10) addr:0x211aee0
+_ZN27PlayerBattleLinkControlData19func_ov012_0211af70Ev kind:function(arm,size=0x15c) addr:0x211aef0
+_ZN27PlayerBattleLinkControlData8vfunc_20Ev kind:function(arm,size=0x24) addr:0x211b04c
+_ZN27PlayerBattleLinkControlData8vfunc_80Ei kind:function(arm,size=0x1b0) addr:0x211b070
+_ZN27PlayerBattleLinkControlData8vfunc_2cEv kind:function(arm,size=0xe4) addr:0x211b220
+_Z19func_ov012_0211b384Pii kind:function(arm,size=0xc) addr:0x211b304
+_ZN27PlayerBattleLinkControlData8vfunc_30Ev kind:function(arm,size=0x144) addr:0x211b310
+_ZN27PlayerBattleLinkControlData8vfunc_38Eii kind:function(arm,size=0x18) addr:0x211b454
+_ZN27PlayerBattleLinkControlData8vfunc_40EPtP5Vec3pic kind:function(arm,size=0x1ac) addr:0x211b46c
+_ZN27PlayerBattleLinkControlData8vfunc_3cEii kind:function(arm,size=0x224) addr:0x211b618
+_ZN27PlayerBattleLinkControlData8vfunc_44EiPiis kind:function(arm,size=0xdc) addr:0x211b83c
+_ZN27PlayerBattleLinkControlData8vfunc_70Ei kind:function(arm,size=0x2c) addr:0x211b918
+_ZN27PlayerBattleLinkControlData19func_ov012_0211b9c4EiP5Vec3p kind:function(arm,size=0xd0) addr:0x211b944
+_ZN27PlayerBattleLinkControlData8vfunc_4cEiP5Vec3p kind:function(arm,size=0x74) addr:0x211ba14
+_ZN27PlayerBattleLinkControlData19func_ov012_0211bb08Ei kind:function(arm,size=0xcc) addr:0x211ba88
+_ZN27PlayerBattleLinkControlData14GetCharacterIdEv kind:function(arm,size=0x8) addr:0x211bb54
func_ov012_0211bbdc kind:function(arm,size=0x44) addr:0x211bb5c
func_ov012_0211bc20 kind:function(arm,size=0x34) addr:0x211bba0
func_ov012_0211bc54 kind:function(arm,size=0x10) addr:0x211bbd4
@@ -1155,7 +1155,7 @@ data_ov012_02135e18 kind:data(any) addr:0x2135d98
data_ov012_02135e1c kind:data(any) addr:0x2135d9c
data_ov012_02135e40 kind:data(any) addr:0x2135dc0
data_ov012_02135e70 kind:data(any) addr:0x2135df0
-data_ov012_02135e80 kind:data(any) addr:0x2135e00
+_ZTV27PlayerBattleLinkControlData kind:data(any) addr:0x2135e00
data_ov012_02135f04 kind:data(any) addr:0x2135e84
data_ov012_02135f18 kind:data(any) addr:0x2135e98
data_ov012_02135f20 kind:data(any) addr:0x2135ea0
diff --git a/docs/overlays.md b/docs/overlays.md
index f19d28f8..d966dd91 100644
--- a/docs/overlays.md
+++ b/docs/overlays.md
@@ -16,7 +16,7 @@ contribute to this list!
`09` | --- | 3 |
`10` | --- | 3 |
`11` | --- | 3 |
-`12` | --- | 3 |
+`12` | Battle | 3 | Handles battle mode.
`13` | --- | 3 |
`14` | Land | 4 | Link and essential land-based actors
`15` | --- | 4 |
diff --git a/include/Player/Battle/PlayerBattleLinkControlData.hpp b/include/Player/Battle/PlayerBattleLinkControlData.hpp
new file mode 100644
index 00000000..5c895618
--- /dev/null
+++ b/include/Player/Battle/PlayerBattleLinkControlData.hpp
@@ -0,0 +1,51 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Item/ItemModelLoader.hpp"
+#include "Player/PlayerControlData.hpp"
+#include "Unknown/UnkStruct_02035064.hpp"
+
+class PlayerBattleLinkControlData : public PlayerControlData {
+public:
+ /* 000 (base) */
+ /* 1a0 */ s32 mUnk_1a0;
+ /* 1a4 */ unk32 mUnk_1a4;
+ /* 1a8 */ UnkStruct_02035064 mUnk_1a8;
+ /* 230 */ unk32 mUnk_230;
+ /* 234 */ unk32 mUnk_234;
+ /* 238 */ ItemModelLoader *mUnk_238;
+ /* 23c */ unk32 mUnk_23c;
+ /* 240 */ unk32 mUnk_240;
+ /* 244 */ u8 mUnk_244;
+ /* 245 */ u8 mUnk_245;
+ /* 246 */ u8 mUnk_246;
+ /* 247 */ unk8 mUnk_247;
+ /* 248 */
+
+ /* 04 */ ~PlayerBattleLinkControlData() override;
+ /* 10 */ unk32 GetCharacterId() override;
+ /* 14 */ void vfunc_14(s32 param1) override;
+ /* 18 */ void vfunc_18() override;
+ /* 20 */ void vfunc_20() override;
+ /* 2c */ void vfunc_2c() override;
+ /* 30 */ void vfunc_30() override;
+ /* 38 */ void vfunc_38(s32 param1, s32 param2) override;
+ /* 3c */ void vfunc_3c(s32 param1, s32 param2) override;
+ /* 40 */ void vfunc_40(u16 *param1, Vec3p *param2, unk32 param3, char param4) override;
+ /* 44 */ void vfunc_44(unk32 param1, unk32 *param2, unk32 param3, unk16 param4) override;
+ /* 4c */ void vfunc_4c(unk32 param1, Vec3p *param2) override;
+ /* 60 */ void vfunc_60(unk32 param1, unk32 param2, s32 param3) override;
+ /* 64 */ void vfunc_64(u32 param1) override;
+ /* 68 */ void vfunc_68(unk32 param1, unk32 param2) override;
+ /* 6c */ void vfunc_6c(s32 param1, Vec3p *param2) override;
+ /* 70 */ void vfunc_70(s32 param1) override;
+ /* 80 */ void vfunc_80(s32 param1) override;
+ /* 84 */
+
+ PlayerBattleLinkControlData();
+ void func_ov012_0211af70();
+ bool func_ov012_0211b9c4(s32 param1, Vec3p *param2);
+ void func_ov012_0211bb08(s32 param1);
+};
diff --git a/include/Player/PlayerControlData.hpp b/include/Player/PlayerControlData.hpp
index 99802698..3527810c 100644
--- a/include/Player/PlayerControlData.hpp
+++ b/include/Player/PlayerControlData.hpp
@@ -62,8 +62,8 @@ public:
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual ~PlayerControlData();
/* 0c */ virtual unk32 vfunc_0c();
- /* 10 */ virtual void vfunc_10() = 0;
- /* 14 */ virtual void vfunc_14() = 0;
+ /* 10 */ virtual unk32 GetCharacterId() = 0;
+ /* 14 */ virtual void vfunc_14(s32 param1) = 0;
/* 18 */ virtual void vfunc_18();
/* 1c */ virtual void vfunc_1c();
/* 20 */ virtual void vfunc_20();
@@ -72,21 +72,21 @@ public:
/* 2c */ virtual void vfunc_2c();
/* 30 */ virtual void vfunc_30();
/* 34 */ virtual void vfunc_34();
- /* 38 */ virtual void vfunc_38() = 0;
- /* 3c */ virtual void vfunc_3c();
- /* 40 */ virtual void vfunc_40();
- /* 44 */ virtual void vfunc_44();
+ /* 38 */ virtual void vfunc_38(s32 param1, s32 param2) = 0;
+ /* 3c */ virtual void vfunc_3c(s32 param1, s32 param2);
+ /* 40 */ virtual void vfunc_40(u16 *param1, Vec3p *param2, unk32 param3, char param4);
+ /* 44 */ virtual void vfunc_44(unk32 param1, unk32 *param2, unk32 param3, unk16 param4);
/* 48 */ virtual void vfunc_48(unk32 param1, unk32 param2, unk32 param3, s16 param4);
- /* 4c */ virtual void vfunc_4c();
+ /* 4c */ virtual void vfunc_4c(unk32 param1, Vec3p *param2);
/* 50 */ virtual void vfunc_50();
/* 54 */ virtual void vfunc_54();
/* 58 */ virtual void vfunc_58();
/* 5c */ virtual void vfunc_5c();
/* 60 */ virtual void vfunc_60(unk32 param1, unk32 param2, s32 param3);
- /* 64 */ virtual void vfunc_64();
+ /* 64 */ virtual void vfunc_64(u32 param1);
/* 68 */ virtual void vfunc_68(unk32 param1, unk32 param2);
/* 6c */ virtual void vfunc_6c(s32 param1, Vec3p *param2);
- /* 70 */ virtual void vfunc_70();
+ /* 70 */ virtual void vfunc_70(s32 param1);
/* 74 */ virtual unk32 vfunc_74();
/* 78 */ virtual unk32 vfunc_78();
/* 7c */ virtual unk32 vfunc_7c();
diff --git a/src/00_Core/Player/PlayerControlData.cpp b/src/00_Core/Player/PlayerControlData.cpp
index ae27e116..50e6c853 100644
--- a/src/00_Core/Player/PlayerControlData.cpp
+++ b/src/00_Core/Player/PlayerControlData.cpp
@@ -10,7 +10,7 @@ void PlayerControlData::func_ov000_020b45f8(unk32 *param1, unk8 param2, unk8 par
void PlayerControlData::func_ov000_020b464c(unk32 *param1, unk8 param2, unk8 param3) {}
void PlayerControlData::vfunc_60(unk32 param1, unk32 param2, s32 param3) {}
void PlayerControlData::vfunc_68(unk32 param1, unk32 param2) {}
-void PlayerControlData::vfunc_64() {}
+void PlayerControlData::vfunc_64(u32 param1) {}
void PlayerControlData::vfunc_20() {}
void PlayerControlData::vfunc_24() {}
void PlayerControlData::vfunc_28() {}
@@ -23,12 +23,12 @@ unk32 PlayerControlData::vfunc_78() {}
void PlayerControlData::func_ov000_020b484c(s32 param1, s32 param2, s32 param3) {}
void PlayerControlData::vfunc_6c(s32 param1, Vec3p *param2) {}
void PlayerControlData::vfunc_5c() {}
-void PlayerControlData::vfunc_3c() {}
-void PlayerControlData::vfunc_40() {}
-void PlayerControlData::vfunc_44() {}
+void PlayerControlData::vfunc_3c(s32 param1, s32 param2) {}
+void PlayerControlData::vfunc_40(u16 *param1, Vec3p *param2, unk32 param3, char param4) {}
+void PlayerControlData::vfunc_44(unk32 param1, unk32 *param2, unk32 param3, unk16 param4) {}
void PlayerControlData::vfunc_48(unk32 param1, unk32 param2, unk32 param3, s16 param4) {}
-void PlayerControlData::vfunc_4c() {}
-void PlayerControlData::vfunc_70() {}
+void PlayerControlData::vfunc_4c(unk32 param1, Vec3p *param2) {}
+void PlayerControlData::vfunc_70(s32 param1) {}
void PlayerControlData::vfunc_50() {}
void PlayerControlData::vfunc_54() {}
void PlayerControlData::vfunc_58() {}
diff --git a/src/12_Battle/Player/Battle/PlayerBattleLinkControlData.cpp b/src/12_Battle/Player/Battle/PlayerBattleLinkControlData.cpp
new file mode 100644
index 00000000..59cfa4a6
--- /dev/null
+++ b/src/12_Battle/Player/Battle/PlayerBattleLinkControlData.cpp
@@ -0,0 +1,25 @@
+#include "Player/Battle/PlayerBattleLinkControlData.hpp"
+
+PlayerBattleLinkControlData::PlayerBattleLinkControlData() {}
+PlayerBattleLinkControlData::~PlayerBattleLinkControlData() {}
+void PlayerBattleLinkControlData::vfunc_18() {}
+void PlayerBattleLinkControlData::vfunc_14(s32 param1) {}
+void PlayerBattleLinkControlData::vfunc_60(unk32 param1, unk32 param2, s32 param3) {}
+void PlayerBattleLinkControlData::vfunc_68(unk32 param1, unk32 param2) {}
+void PlayerBattleLinkControlData::vfunc_64(u32 param1) {}
+void PlayerBattleLinkControlData::vfunc_6c(s32 param1, Vec3p *param2) {}
+void PlayerBattleLinkControlData::func_ov012_0211af70() {}
+void PlayerBattleLinkControlData::vfunc_20() {}
+void PlayerBattleLinkControlData::vfunc_80(s32 param1) {}
+void PlayerBattleLinkControlData::vfunc_2c() {}
+void func_ov012_0211b384(unk32 *param1, s32 param2) {}
+void PlayerBattleLinkControlData::vfunc_30() {}
+void PlayerBattleLinkControlData::vfunc_38(s32 param1, s32 param2) {}
+void PlayerBattleLinkControlData::vfunc_40(u16 *param1, Vec3p *param2, unk32 param3, char param4) {}
+void PlayerBattleLinkControlData::vfunc_3c(s32 param1, s32 param2) {}
+void PlayerBattleLinkControlData::vfunc_44(unk32 param1, unk32 *param2, unk32 param3, unk16 param4) {}
+void PlayerBattleLinkControlData::vfunc_70(s32 param1) {}
+bool PlayerBattleLinkControlData::func_ov012_0211b9c4(s32 param1, Vec3p *param2) {}
+void PlayerBattleLinkControlData::vfunc_4c(unk32 param1, Vec3p *param2) {}
+void PlayerBattleLinkControlData::func_ov012_0211bb08(s32 param1) {}
+unk32 PlayerBattleLinkControlData::GetCharacterId() {}