Decompile player_data

This commit is contained in:
PikalaxALT
2020-08-26 17:26:38 -04:00
parent a192a6ec0b
commit ca8ea19637
17 changed files with 297 additions and 396 deletions

View File

@@ -1,364 +0,0 @@
.include "asm/macros.inc"
.include "global.inc"
.text
thumb_func_start Sav2_PlayerData_sizeof
Sav2_PlayerData_sizeof: ; 0x020238C4
mov r0, #0x2c
bx lr
thumb_func_start Sav2_PlayerData_init
Sav2_PlayerData_init: ; 0x020238C8
push {r4, lr}
add r4, r0, #0x0
mov r0, #0x0
add r1, r4, #0x0
mov r2, #0x2c
bl MIi_CpuClearFast
add r0, r4, #0x0
bl Options_init
add r0, r4, #0x4
bl PlayerProfile_Clear
add r0, r4, #0x0
add r0, #0x24
bl InitCoins
add r4, #0x26
add r0, r4, #0x0
bl InitIGT
pop {r4, pc}
thumb_func_start Sav2_PlayerData_GetProfileAddr
Sav2_PlayerData_GetProfileAddr: ; 0x020238F4
push {r3, lr}
mov r1, #0x1
bl SavArray_get
add r0, r0, #0x4
pop {r3, pc}
thumb_func_start Sav2_PlayerData_GetOptionsAddr
Sav2_PlayerData_GetOptionsAddr: ; 0x02023900
ldr r3, _02023908 ; =SavArray_get
mov r1, #0x1
bx r3
nop
_02023908: .word SavArray_get
thumb_func_start Sav2_PlayerData_GetCoinsAddr
Sav2_PlayerData_GetCoinsAddr: ; 0x0202390C
push {r3, lr}
mov r1, #0x1
bl SavArray_get
add r0, #0x24
pop {r3, pc}
thumb_func_start Sav2_PlayerData_GetIGTAddr
Sav2_PlayerData_GetIGTAddr: ; 0x02023918
push {r3, lr}
mov r1, #0x1
bl SavArray_get
add r0, #0x26
pop {r3, pc}
thumb_func_start PlayerProfile_sizeof
PlayerProfile_sizeof: ; 0x02023924
mov r0, #0x20
bx lr
thumb_func_start PlayerProfile_init
PlayerProfile_init: ; 0x02023928
push {r4, lr}
mov r1, #0x20
bl AllocFromHeap
add r4, r0, #0x0
bl PlayerProfile_Clear
add r0, r4, #0x0
pop {r4, pc}
.balign 4
thumb_func_start PlayerProfile_Copy
PlayerProfile_Copy: ; 0x0202393C
ldr r3, _02023944 ; =MI_CpuCopy8
mov r2, #0x20
bx r3
nop
_02023944: .word MI_CpuCopy8
thumb_func_start PlayerProfile_Clear
PlayerProfile_Clear: ; 0x02023948
push {r4, lr}
mov r1, #0x0
mov r2, #0x20
add r4, r0, #0x0
bl memset
mov r0, #0x2
strb r0, [r4, #0x19]
pop {r4, pc}
.balign 4
thumb_func_start CopyPlayerName
CopyPlayerName: ; 0x0202395C
push {r3-r5, lr}
add r4, r1, #0x0
add r5, r0, #0x0
add r0, r4, #0x0
bl StringLength
cmp r0, #0x8
blt _02023970
bl ErrorHandling
_02023970:
add r0, r5, #0x0
add r1, r4, #0x0
bl CopyU16StringArray
pop {r3-r5, pc}
.balign 4
thumb_func_start PlayerName_StringToFlat
PlayerName_StringToFlat: ; 0x0202397C
ldr r3, _02023988 ; =CopyStringToU16Array
add r2, r0, #0x0
add r0, r1, #0x0
add r1, r2, #0x0
mov r2, #0x8
bx r3
.balign 4
_02023988: .word CopyStringToU16Array
thumb_func_start PlayerProfile_GetNamePtr
PlayerProfile_GetNamePtr: ; 0x0202398C
bx lr
.balign 4
thumb_func_start PlayerName_FlatToString
PlayerName_FlatToString: ; 0x02023990
ldr r3, _0202399C ; =CopyU16ArrayToString
add r2, r0, #0x0
add r0, r1, #0x0
add r1, r2, #0x0
bx r3
nop
_0202399C: .word CopyU16ArrayToString
thumb_func_start PlayerProfile_GetPlayerName_NewString
PlayerProfile_GetPlayerName_NewString: ; 0x020239A0
push {r3-r5, lr}
add r5, r0, #0x0
mov r0, #0x8
bl String_ctor
add r4, r0, #0x0
add r0, r5, #0x0
add r1, r4, #0x0
bl PlayerName_FlatToString
add r0, r4, #0x0
pop {r3-r5, pc}
thumb_func_start PlayerProfile_SetTrainerID
PlayerProfile_SetTrainerID: ; 0x020239B8
str r1, [r0, #0x10]
bx lr
thumb_func_start PlayerProfile_GetTrainerID
PlayerProfile_GetTrainerID: ; 0x020239BC
ldr r0, [r0, #0x10]
bx lr
thumb_func_start PlayerProfile_GetTrainerID_VisibleHalf
PlayerProfile_GetTrainerID_VisibleHalf: ; 0x020239C0
ldr r0, [r0, #0x10]
lsl r0, r0, #0x10
lsr r0, r0, #0x10
bx lr
thumb_func_start PlayerProfile_SetTrainerGender
PlayerProfile_SetTrainerGender: ; 0x020239C8
strb r1, [r0, #0x18]
bx lr
thumb_func_start PlayerProfile_GetTrainerGender
PlayerProfile_GetTrainerGender: ; 0x020239CC
ldrb r0, [r0, #0x18]
bx lr
thumb_func_start PlayerProfile_TestBadgeFlag
PlayerProfile_TestBadgeFlag: ; 0x020239D0
ldrb r3, [r0, #0x1a]
mov r0, #0x1
add r2, r0, #0x0
lsl r2, r1
add r1, r3, #0x0
tst r1, r2
bne _020239E0
mov r0, #0x0
_020239E0:
bx lr
.balign 4
thumb_func_start PlayerProfile_SetBadgeFlag
PlayerProfile_SetBadgeFlag: ; 0x020239E4
ldrb r3, [r0, #0x1a]
mov r2, #0x1
lsl r2, r1
add r1, r3, #0x0
orr r1, r2
strb r1, [r0, #0x1a]
bx lr
.balign 4
thumb_func_start PlayerProfile_CountBadges
PlayerProfile_CountBadges: ; 0x020239F4
ldrb r3, [r0, #0x1a]
mov r2, #0x0
cmp r3, #0x0
beq _02023A0A
mov r0, #0x1
_020239FE:
add r1, r3, #0x0
tst r1, r0
beq _02023A06
add r2, r2, #0x1
_02023A06:
lsr r3, r3, #0x1
bne _020239FE
_02023A0A:
add r0, r2, #0x0
bx lr
.balign 4
thumb_func_start PlayerProfile_GetMoney
PlayerProfile_GetMoney: ; 0x02023A10
ldr r0, [r0, #0x14]
bx lr
thumb_func_start PlayerProfile_SetMoney
PlayerProfile_SetMoney: ; 0x02023A14
ldr r2, _02023A24 ; =0x000F423F
cmp r1, r2
bls _02023A1C
add r1, r2, #0x0
_02023A1C:
str r1, [r0, #0x14]
add r0, r1, #0x0
bx lr
nop
_02023A24: .word 0x000F423F
thumb_func_start FUN_02023A28
FUN_02023A28: ; 0x02023A28
ldrb r0, [r0, #0x1b]
bx lr
thumb_func_start FUN_02023A2C
FUN_02023A2C: ; 0x02023A2C
strb r1, [r0, #0x1b]
bx lr
thumb_func_start PlayerProfile_AddMoney
PlayerProfile_AddMoney: ; 0x02023A30
ldr r2, _02023A50 ; =0x000F423F
cmp r1, r2
bls _02023A3A
str r2, [r0, #0x14]
b _02023A40
_02023A3A:
ldr r2, [r0, #0x14]
add r1, r2, r1
str r1, [r0, #0x14]
_02023A40:
ldr r2, [r0, #0x14]
ldr r1, _02023A50 ; =0x000F423F
cmp r2, r1
bls _02023A4A
str r1, [r0, #0x14]
_02023A4A:
ldr r0, [r0, #0x14]
bx lr
nop
_02023A50: .word 0x000F423F
thumb_func_start PlayerProfile_SubMoney
PlayerProfile_SubMoney: ; 0x02023A54
ldr r2, [r0, #0x14]
cmp r2, r1
bhs _02023A5E
mov r1, #0x0
b _02023A60
_02023A5E:
sub r1, r2, r1
_02023A60:
str r1, [r0, #0x14]
ldr r0, [r0, #0x14]
bx lr
.balign 4
thumb_func_start FUN_02023A68
FUN_02023A68: ; 0x02023A68
ldrb r0, [r0, #0x1c]
bx lr
thumb_func_start FUN_02023A6C
FUN_02023A6C: ; 0x02023A6C
strb r1, [r0, #0x1c]
bx lr
thumb_func_start FUN_02023A70
FUN_02023A70: ; 0x02023A70
ldrb r0, [r0, #0x19]
bx lr
thumb_func_start FUN_02023A74
FUN_02023A74: ; 0x02023A74
strb r1, [r0, #0x19]
bx lr
thumb_func_start FUN_02023A78
FUN_02023A78: ; 0x02023A78
ldrb r2, [r0, #0x1d]
mov r1, #0x1
bic r2, r1
mov r1, #0x1
orr r1, r2
strb r1, [r0, #0x1d]
bx lr
.balign 4
thumb_func_start FUN_02023A88
FUN_02023A88: ; 0x02023A88
ldrb r0, [r0, #0x1d]
lsl r0, r0, #0x1f
lsr r0, r0, #0x1f
bx lr
thumb_func_start FUN_02023A90
FUN_02023A90: ; 0x02023A90
ldrb r2, [r0, #0x1d]
mov r1, #0x2
orr r1, r2
strb r1, [r0, #0x1d]
bx lr
.balign 4
thumb_func_start FUN_02023A9C
FUN_02023A9C: ; 0x02023A9C
ldrb r0, [r0, #0x1d]
lsl r0, r0, #0x1e
lsr r0, r0, #0x1f
bx lr
thumb_func_start PlayerProfile_NameAndOTIDMatchPlayer
PlayerProfile_NameAndOTIDMatchPlayer: ; 0x02023AA4
push {r3-r5, lr}
mov r2, #0x7
add r5, r0, #0x0
add r4, r1, #0x0
bl StringNotEqualN
cmp r0, #0x0
bne _02023AC0
ldr r1, [r5, #0x10]
ldr r0, [r4, #0x10]
cmp r1, r0
bne _02023AC0
mov r0, #0x1
pop {r3-r5, pc}
_02023AC0:
mov r0, #0x0
pop {r3-r5, pc}

View File

@@ -549,7 +549,7 @@ _02025CE8:
cmp r0, #0x0
beq _02025D32
add r0, r1, #0x0
bl PlayerProfile_init
bl PlayerProfile_new
ldr r1, [sp, #0x0]
add r6, r0, #0x0
add r1, r7, r1

View File

@@ -452,7 +452,7 @@ FUN_0202DE78: ; 0x0202DE78
mov r0, #0xd2
lsl r0, r0, #0x2
ldr r0, [r1, r0]
bl PlayerProfile_Clear
bl PlayerProfile_init
ldr r0, _0202DEA0 ; =UNK_021C59E4
mov r2, #0x0
ldr r0, [r0, #0x0]

View File

@@ -85,7 +85,7 @@ _02047748:
add r4, r7, #0x0
_0204775C:
add r0, r5, #0x0
bl PlayerProfile_init
bl PlayerProfile_new
add r1, r4, #0x0
add r1, #0xf8
add r6, r6, #0x1

View File

@@ -4714,7 +4714,7 @@ FUN_0204EEBC: ; 0x0204EEBC
beq _0204EF44
mov r0, #0xf
lsl r4, r5, #0x2
bl PlayerProfile_init
bl PlayerProfile_new
mov r3, #0x29
ldr r1, _0204EF48 ; =UNK_021C5A68
add r2, r0, #0x0
@@ -6044,7 +6044,7 @@ FUN_0204F930: ; 0x0204F930
pop {r3-r5, pc}
_0204F96E:
mov r0, #0xf
bl PlayerProfile_init
bl PlayerProfile_new
add r4, r0, #0x0
mov r0, #0x14
mov r1, #0xf
@@ -6190,7 +6190,7 @@ FUN_0204FA78: ; 0x0204FA78
_0204FA98:
mov r0, #0xf
lsl r4, r5, #0x2
bl PlayerProfile_init
bl PlayerProfile_new
ldr r2, _0204FAC8 ; =UNK_021C5A68
ldr r1, [r2, #0x0]
add r3, r1, r4

View File

@@ -1476,9 +1476,9 @@
.extern Sav2_PlayerData_GetCoinsAddr
.extern Sav2_PlayerData_GetIGTAddr
.extern PlayerProfile_sizeof
.extern PlayerProfile_init
.extern PlayerProfile_new
.extern PlayerProfile_Copy
.extern PlayerProfile_Clear
.extern PlayerProfile_init
.extern CopyPlayerName
.extern PlayerName_StringToFlat
.extern PlayerProfile_GetNamePtr

View File

@@ -22038,7 +22038,7 @@ _021F000E:
bl FUN_020286EC
add r7, r0, #0
mov r0, #4
bl PlayerProfile_init
bl PlayerProfile_new
add r6, r0, #0
add r0, r7, #0
add r1, r4, #0

View File

@@ -11448,7 +11448,7 @@ _0223EF28:
ldr r1, [r1]
str r0, [r1, #0x78]
mov r0, #4
bl PlayerProfile_init
bl PlayerProfile_new
ldr r1, _0223EFF4 ; =0x02252420
ldr r2, [r1]
str r0, [r2, #0x7c]
@@ -31000,9 +31000,9 @@ _0224886C:
bl AllocMonZeroed
str r0, [r4, #4]
add r0, r5, #0
bl PlayerProfile_init
bl PlayerProfile_new
str r0, [r4, #8]
bl PlayerProfile_Clear
bl PlayerProfile_init
add r0, r5, #0
add r1, r6, #4
bl GetInGameTradeMonOrPartnerName

View File

@@ -1741,7 +1741,7 @@ MOD11_0222E520: ; 0x0222E520
add r5, r1, #0
_0222E532:
mov r0, #5
bl PlayerProfile_init
bl PlayerProfile_new
add r1, r0, #0
add r0, r5, #0
str r1, [r6, #0x48]

View File

@@ -1834,7 +1834,7 @@ MOD51_02255690: ; 0x02255690
cmp r0, #0
bne _02255714
mov r0, #4
bl PlayerProfile_init
bl PlayerProfile_new
str r0, [sp, #4]
mov r6, #0
_022556AA:

View File

@@ -1974,7 +1974,7 @@ MOD55_021D84C8: ; 0x021D84C8
cmp r0, #0
beq _021D8534
mov r0, #0x34
bl PlayerProfile_init
bl PlayerProfile_new
add r4, r0, #0
add r0, r5, #0
add r0, #0xd4
@@ -3314,7 +3314,7 @@ _021D8F1A:
add r0, r5, r1
bl FUN_02019220
mov r0, #0x34
bl PlayerProfile_init
bl PlayerProfile_new
mov r1, #0xf2
lsl r1, r1, #2
ldrb r1, [r5, r1]
@@ -3504,7 +3504,7 @@ MOD55_021D90D8: ; 0x021D90D8
orr r0, r1
beq _021D9170
mov r0, #0x34
bl PlayerProfile_init
bl PlayerProfile_new
mov r1, #0xf2
lsl r1, r1, #2
ldrb r1, [r5, r1]
@@ -4166,7 +4166,7 @@ _021D969A:
mov r1, #0
bl FUN_02019620
mov r0, #0x34
bl PlayerProfile_init
bl PlayerProfile_new
str r0, [sp, #0x20]
ldr r0, [sp, #0x1c]
ldr r1, [sp, #0x18]
@@ -4406,7 +4406,7 @@ _021D987C:
add r3, r1, #0
bl AddTextPrinterParameterized2
mov r0, #0x34
bl PlayerProfile_init
bl PlayerProfile_new
add r5, r0, #0
ldr r0, [sp, #0x1c]
ldr r1, [sp, #0x18]
@@ -5204,7 +5204,7 @@ MOD55_021D9F8C: ; 0x021D9F8C
add r5, r0, #0
mov r0, #0x34
add r6, r1, #0
bl PlayerProfile_init
bl PlayerProfile_new
add r4, r0, #0
ldr r0, [r5, #8]
bl FUN_020286EC

View File

@@ -7098,7 +7098,7 @@ _02215532:
add r3, r1, #0
bl AddTextPrinterParameterized2
mov r0, #0x36
bl PlayerProfile_init
bl PlayerProfile_new
add r6, r0, #0
ldr r0, [r5]
add r1, r4, #0
@@ -8431,7 +8431,7 @@ MOD56_022160E4: ; 0x022160E4
cmp r6, r0
beq _0221611C
mov r0, #0x36
bl PlayerProfile_init
bl PlayerProfile_new
add r4, r0, #0
ldr r0, [r5]
add r1, r6, #0

View File

@@ -4348,7 +4348,7 @@ _0222F9A0:
ldr r0, _0222FA24 ; =0x00003670
str r4, [r5, r0]
mov r0, #0x1a
bl PlayerProfile_init
bl PlayerProfile_new
add r6, r0, #0
ldr r0, _0222FA28 ; =0x00003694
add r1, r4, #0

View File

@@ -17647,9 +17647,9 @@ MOD80_022361AC: ; 0x022361AC
push {r3, r4, r5, lr}
add r5, r0, #0
mov r0, #0x3e
bl PlayerProfile_init
bl PlayerProfile_new
add r4, r0, #0
bl PlayerProfile_Clear
bl PlayerProfile_init
mov r1, #0x43
lsl r1, r1, #2
add r0, r4, #0

232
arm9/src/player_data.c Normal file
View File

@@ -0,0 +1,232 @@
#include "global.h"
#include "save_block_2.h"
#include "player_data.h"
#include "MI_memory.h"
#include "heap.h"
#include "string16.h"
#include "options.h"
#include "coins.h"
#pragma thumb on
void PlayerProfile_init(struct PlayerData * data);
u32 Sav2_PlayerData_sizeof(void)
{
return sizeof(struct PlayerDataSav);
}
void Sav2_PlayerData_init(struct PlayerDataSav * pds)
{
MI_CpuClearFast(pds, sizeof(struct PlayerDataSav));
Options_init(&pds->options);
PlayerProfile_init(&pds->data);
InitCoins(&pds->coins);
InitIGT(&pds->igt);
}
struct PlayerData * Sav2_PlayerData_GetProfileAddr(struct SaveBlock2 * sav2)
{
return &((struct PlayerDataSav *)SavArray_get(sav2, 1))->data;
}
struct Options * Sav2_PlayerData_GetOptionsAddr(struct SaveBlock2 * sav2)
{
return &((struct PlayerDataSav *)SavArray_get(sav2, 1))->options;
}
u16 * Sav2_PlayerData_GetCoinsAddr(struct SaveBlock2 * sav2)
{
return &((struct PlayerDataSav *)SavArray_get(sav2, 1))->coins;
}
struct IGT * Sav2_PlayerData_GetIGTAddr(struct SaveBlock2 * sav2)
{
return &((struct PlayerDataSav *)SavArray_get(sav2, 1))->igt;
}
u32 PlayerProfile_sizeof(void)
{
return sizeof(struct PlayerData);
}
struct PlayerData * PlayerProfile_new(u32 heap_id)
{
struct PlayerData * ret = (struct PlayerData *)AllocFromHeap(heap_id, sizeof(struct PlayerData));
PlayerProfile_init(ret);
return ret;
}
void PlayerProfile_Copy(const struct PlayerData * src, struct PlayerData * dest)
{
MI_CpuCopy8(src, dest, sizeof(struct PlayerData));
}
void PlayerProfile_init(struct PlayerData * data)
{
memset(data, 0, sizeof(struct PlayerData));
data->language = LANGUAGE_ENGLISH;
}
void CopyPlayerName(u16 * dest, struct PlayerData * data)
{
GF_ASSERT((s32)StringLength(data->playerName) < OT_NAME_LENGTH + 1);
CopyU16StringArray(dest, data->playerName);
}
void PlayerName_StringToFlat(struct PlayerData * data, struct String * str)
{
CopyStringToU16Array(str, data->playerName, OT_NAME_LENGTH + 1);
}
u16 * PlayerProfile_GetNamePtr(struct PlayerData * data)
{
return data->playerName;
}
void PlayerName_FlatToString(struct PlayerData * data, struct String * str)
{
CopyU16ArrayToString(str, data->playerName);
}
struct String * PlayerProfile_GetPlayerName_NewString(struct PlayerData * data, u32 heap_id)
{
struct String * str = String_ctor(OT_NAME_LENGTH + 1, heap_id);
PlayerName_FlatToString(data, str);
return str;
}
void PlayerProfile_SetTrainerID(struct PlayerData * data, u32 otid)
{
data->playerId = otid;
}
u32 PlayerProfile_GetTrainerID(struct PlayerData * data)
{
return data->playerId;
}
u16 PlayerProfile_GetTrainerID_VisibleHalf(struct PlayerData * data)
{
return (u16)data->playerId;
}
void PlayerProfile_SetTrainerGender(struct PlayerData * data, u8 gender)
{
data->gender = gender;
}
u32 PlayerProfile_GetTrainerGender(struct PlayerData * data)
{
return data->gender;
}
BOOL PlayerProfile_TestBadgeFlag(struct PlayerData * data, u32 badgeno)
{
return (data->badges & (1 << badgeno)) != 0;
}
void PlayerProfile_SetBadgeFlag(struct PlayerData * data, u32 badgeno)
{
data->badges |= (1 << badgeno);
}
u32 PlayerProfile_CountBadges(struct PlayerData * data)
{
u32 count;
u32 badges;
for (count = 0, badges = data->badges; badges != 0; badges >>= 1)
{
if (badges & 1)
count++;
}
return count;
}
u32 PlayerProfile_GetMoney(struct PlayerData * data)
{
return data->money;
}
u32 PlayerProfile_SetMoney(struct PlayerData * data, u32 amount)
{
if (amount > 999999)
amount = 999999;
data->money = amount;
return amount;
}
u8 FUN_02023A28(struct PlayerData * data)
{
return data->avatar;
}
void FUN_02023A2C(struct PlayerData * data, u8 avatar)
{
data->avatar = avatar;
}
u32 PlayerProfile_AddMoney(struct PlayerData * data, u32 amount)
{
if (amount > 999999)
data->money = 999999;
else
data->money += amount;
if (data->money > 999999)
data->money = 999999;
return data->money;
}
u32 PlayerProfile_SubMoney(struct PlayerData * data, u32 amount)
{
if (data->money < amount)
data->money = 0;
else
data->money -= amount;
return data->money;
}
u8 FUN_02023A68(struct PlayerData * data)
{
return data->field_1C;
}
void FUN_02023A6C(struct PlayerData * data, u8 a1)
{
data->field_1C = a1;
}
u8 FUN_02023A70(struct PlayerData * data)
{
return data->language;
}
void FUN_02023A74(struct PlayerData * data, u8 language)
{
data->language = language;
}
void FUN_02023A78(struct PlayerData * data)
{
data->field_1D_0 = 1;
}
BOOL FUN_02023A88(struct PlayerData * data)
{
return data->field_1D_0;
}
void FUN_02023A90(struct PlayerData * data)
{
data->field_1D_1 = 1;
}
BOOL FUN_02023A9C(struct PlayerData * data)
{
return data->field_1D_1;
}
BOOL PlayerProfile_NameAndOTIDMatchPlayer(struct PlayerData * a, struct PlayerData * b)
{
return !StringNotEqualN(a->playerName, b->playerName, OT_NAME_LENGTH) && a->playerId == b->playerId;
}

View File

@@ -10,4 +10,6 @@ struct Options {
u16 unk0_A:5;
};
void Options_init(struct Options * options);
#endif //POKEDIAMOND_OPTIONS_H

View File

@@ -3,6 +3,7 @@
#include "options.h"
#include "igt.h"
#include "string16.h"
struct SaveBlock2;
@@ -12,7 +13,7 @@ struct PlayerData
/* 0x10 */ u32 playerId;
/* 0x14 */ u32 money;
/* 0x18 */ u8 gender;
/* 0x19 */ u8 country;
/* 0x19 */ u8 language;
/* 0x1A */ u8 badges;
/* 0x1B */ u8 avatar;
/* 0x1C */ u8 field_1C;
@@ -32,13 +33,43 @@ struct PlayerDataSav
u8 padding2[2];
};
struct Options * Sav2_PlayerData_GetOptionsAddr(struct SaveBlock2 *);
struct String * PlayerProfile_GetPlayerName_NewString(struct PlayerData *, u32 heap_id);
u32 PlayerProfile_GetTrainerID(struct PlayerData *);
u32 PlayerProfile_GetTrainerGender(struct PlayerData *);
u32 Sav2_PlayerData_sizeof(void);
void Sav2_PlayerData_init(struct PlayerDataSav *);
u16 * PlayerProfile_GetNamePtr(struct PlayerData * data);
void Sav2_PlayerData_init(struct PlayerDataSav * pds);
struct PlayerData * Sav2_PlayerData_GetProfileAddr(struct SaveBlock2 * sav2);
struct Options * Sav2_PlayerData_GetOptionsAddr(struct SaveBlock2 * sav2);
u16 * Sav2_PlayerData_GetCoinsAddr(struct SaveBlock2 * sav2);
struct IGT * Sav2_PlayerData_GetIGTAddr(struct SaveBlock2 * sav2);
u32 PlayerProfile_sizeof(void);
struct PlayerData * PlayerProfile_new(u32 heap_id);
void PlayerProfile_Copy(const struct PlayerData * src, struct PlayerData * dest);
void PlayerProfile_init(struct PlayerData * data);
void CopyPlayerName(u16 * dest, struct PlayerData * data);
void PlayerName_StringToFlat(struct PlayerData * data, struct String * str);
u16 * PlayerProfile_GetNamePtr(struct PlayerData * data);
void PlayerName_FlatToString(struct PlayerData * data, struct String * str);
struct String * PlayerProfile_GetPlayerName_NewString(struct PlayerData * data, u32 heap_id);
void PlayerProfile_SetTrainerID(struct PlayerData * data, u32 otid);
u32 PlayerProfile_GetTrainerID(struct PlayerData * data);
u16 PlayerProfile_GetTrainerID_VisibleHalf(struct PlayerData * data);
void PlayerProfile_SetTrainerGender(struct PlayerData * data, u8 gender);
u32 PlayerProfile_GetTrainerGender(struct PlayerData * data);
BOOL PlayerProfile_TestBadgeFlag(struct PlayerData * data, u32 badgeno);
void PlayerProfile_SetBadgeFlag(struct PlayerData * data, u32 badgeno);
u32 PlayerProfile_CountBadges(struct PlayerData * data);
u32 PlayerProfile_GetMoney(struct PlayerData * data);
u32 PlayerProfile_SetMoney(struct PlayerData * data, u32 amount);
u8 FUN_02023A28(struct PlayerData * data);
void FUN_02023A2C(struct PlayerData * data, u8 avatar);
u32 PlayerProfile_AddMoney(struct PlayerData * data, u32 amount);
u32 PlayerProfile_SubMoney(struct PlayerData * data, u32 amount);
u8 FUN_02023A68(struct PlayerData * data);
void FUN_02023A6C(struct PlayerData * data, u8 a1);
u8 FUN_02023A70(struct PlayerData * data);
void FUN_02023A74(struct PlayerData * data, u8 language);
void FUN_02023A78(struct PlayerData * data);
BOOL FUN_02023A88(struct PlayerData * data);
void FUN_02023A90(struct PlayerData * data);
BOOL FUN_02023A9C(struct PlayerData * data);
BOOL PlayerProfile_NameAndOTIDMatchPlayer(struct PlayerData * a, struct PlayerData * b);
#endif //POKEDIAMOND_PLAYER_DATA_H