mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-22 16:54:43 -05:00
Decompile player_data
This commit is contained in:
@@ -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}
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
232
arm9/src/player_data.c
Normal 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;
|
||||
}
|
||||
@@ -10,4 +10,6 @@ struct Options {
|
||||
u16 unk0_A:5;
|
||||
};
|
||||
|
||||
void Options_init(struct Options * options);
|
||||
|
||||
#endif //POKEDIAMOND_OPTIONS_H
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user