summaryrefslogtreecommitdiff
path: root/arm9
diff options
context:
space:
mode:
Diffstat (limited to 'arm9')
-rw-r--r--arm9/arm9.lsf5
-rw-r--r--arm9/asm/player_data.s364
-rw-r--r--arm9/asm/pokedex.s (renamed from arm9/asm/unk_02023C40.s)239
-rw-r--r--arm9/asm/scrcmd.s24
-rw-r--r--arm9/asm/scrcmd_16.s8
-rw-r--r--arm9/asm/scrcmd_3.s2
-rw-r--r--arm9/asm/scrcmd_4.s2
-rw-r--r--arm9/asm/unk_02025954.s10
-rw-r--r--arm9/asm/unk_0202DB14.s2
-rw-r--r--arm9/asm/unk_02033778.s2
-rw-r--r--arm9/asm/unk_02033874.s2
-rw-r--r--arm9/asm/unk_02038C78.s6
-rw-r--r--arm9/asm/unk_0204653C.s4
-rw-r--r--arm9/asm/unk_020476CC.s16
-rw-r--r--arm9/asm/unk_020484A8.s8
-rw-r--r--arm9/asm/unk_0204CB20.s6
-rw-r--r--arm9/asm/unk_020520AC.s8
-rw-r--r--arm9/asm/unk_02052EE8.s2
-rw-r--r--arm9/asm/unk_0205CE48.s2
-rw-r--r--arm9/asm/unk_02064E90.s2
-rw-r--r--arm9/asm/unk_02066840.s2
-rw-r--r--arm9/asm/unk_0206BB28.s2
-rw-r--r--arm9/asm/unk_0206BF90.s4
-rw-r--r--arm9/asm/unk_0206F3FC.s2
-rw-r--r--arm9/asm/unk_0207550C.s12
-rw-r--r--arm9/asm/unk_02080C38.s4
-rw-r--r--arm9/asm/unk_020842DC.s1843
-rw-r--r--arm9/global.inc88
-rw-r--r--arm9/modules/05/asm/mod05_021D80E8.s2
-rw-r--r--arm9/modules/05/asm/module_05.s114
-rw-r--r--arm9/modules/06/asm/module_06.s14
-rw-r--r--arm9/modules/11/asm/module_11_thumb1.s8
-rw-r--r--arm9/modules/16/asm/module_16.s8
-rw-r--r--arm9/modules/18/asm/module_18.s4
-rw-r--r--arm9/modules/23/asm/module_23.s2
-rw-r--r--arm9/modules/35/asm/module_35.s8
-rw-r--r--arm9/modules/51/asm/module_51.s2
-rw-r--r--arm9/modules/52/asm/module_52.s2
-rw-r--r--arm9/modules/54/asm/module_54.s2
-rw-r--r--arm9/modules/55/asm/module_55.s12
-rw-r--r--arm9/modules/56/asm/module_56.s12
-rw-r--r--arm9/modules/71/asm/module_71.s6
-rw-r--r--arm9/modules/80/asm/module_80.s12
-rw-r--r--arm9/modules/83/asm/module_83.s2
-rw-r--r--arm9/src/daycare.c114
-rw-r--r--arm9/src/itemtool.c220
-rw-r--r--arm9/src/nutdata.c3
-rw-r--r--arm9/src/player_data.c232
-rw-r--r--arm9/src/save_arrays.c11
-rw-r--r--arm9/src/use_item_on_mon.c719
50 files changed, 1427 insertions, 2753 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 203a97ea..f2ac2c77 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -87,7 +87,8 @@ Static arm9
Object sav_system_info.o
Object player_data.o
Object unk_02023AC4.o
- Object unk_02023C40.o
+ Object daycare.o
+ Object pokedex.o
Object unk_02024E64.o
Object options.o
Object unk_020250A4.o
@@ -282,7 +283,7 @@ Static arm9
Object unk_02083D48.o
Object unk_02084098.o
Object unk_020842D0.o
- Object unk_020842DC.o
+ Object use_item_on_mon.o
Object unk_020851B8.o
Object nutdata.o
Object unk_02085338.o
diff --git a/arm9/asm/player_data.s b/arm9/asm/player_data.s
deleted file mode 100644
index 9761eb48..00000000
--- a/arm9/asm/player_data.s
+++ /dev/null
@@ -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}
diff --git a/arm9/asm/unk_02023C40.s b/arm9/asm/pokedex.s
index 0de40519..11a29cda 100644
--- a/arm9/asm/unk_02023C40.s
+++ b/arm9/asm/pokedex.s
@@ -1,231 +1,46 @@
.include "asm/macros.inc"
.include "global.inc"
+ .include "constants/species.h"
.section .rodata
.global UNK_020EE940
UNK_020EE940: ; 0x020EE940
- .short 0x01EA, 0x0097, 0x00F9, 0x00FA, 0x00FB, 0x0181, 0x0182, 0x01E9
- .short 0x01EA, 0x01EB, 0x01EC, 0x01ED
+ .short SPECIES_MANAPHY
+ .short SPECIES_MEW
+ .short SPECIES_LUGIA
+ .short SPECIES_HO_OH
+ .short SPECIES_CELEBI
+ .short SPECIES_JIRACHI
+ .short SPECIES_DEOXYS
+ .short SPECIES_PHIONE
+ .short SPECIES_MANAPHY
+ .short SPECIES_DARKRAI
+ .short SPECIES_SHAYMIN
+ .short SPECIES_ARCEUS
.text
- thumb_func_start FUN_02023C40
-FUN_02023C40: ; 0x02023C40
- mov r0, #0x1e
- lsl r0, r0, #0x4
- bx lr
- .balign 4
-
- thumb_func_start FUN_02023C48
-FUN_02023C48: ; 0x02023C48
- push {r4, lr}
- mov r2, #0x1e
- add r4, r0, #0x0
- mov r1, #0x0
- lsl r2, r2, #0x4
- bl memset
- add r0, r4, #0x0
- bl ZeroBoxMonData
- add r0, r4, #0x0
- add r0, #0xec
- bl ZeroBoxMonData
- mov r0, #0x76
- mov r1, #0x0
- lsl r0, r0, #0x2
- str r1, [r4, r0]
- add r0, r0, #0x4
- strb r1, [r4, r0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02023C74
-FUN_02023C74: ; 0x02023C74
- mov r2, #0xec
- mul r2, r1
- add r0, r0, r2
- bx lr
-
- thumb_func_start FUN_02023C7C
-FUN_02023C7C: ; 0x02023C7C
- bx lr
- .balign 4
-
- thumb_func_start FUN_02023C80
-FUN_02023C80: ; 0x02023C80
- add r0, #0x88
- bx lr
-
- thumb_func_start FUN_02023C84
-FUN_02023C84: ; 0x02023C84
- add r0, #0xe8
- ldr r0, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02023C8C
-FUN_02023C8C: ; 0x02023C8C
- bx lr
- .balign 4
-
- thumb_func_start FUN_02023C90
-FUN_02023C90: ; 0x02023C90
- mov r1, #0x76
- lsl r1, r1, #0x2
- ldr r0, [r0, r1]
- bx lr
-
- thumb_func_start FUN_02023C98
-FUN_02023C98: ; 0x02023C98
- mov r1, #0x77
- lsl r1, r1, #0x2
- ldrb r0, [r0, r1]
- bx lr
-
- thumb_func_start FUN_02023CA0
-FUN_02023CA0: ; 0x02023CA0
- add r0, #0xe8
- str r1, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02023CA8
-FUN_02023CA8: ; 0x02023CA8
- add r2, r0, #0x0
- add r2, #0xe8
- ldr r2, [r2, #0x0]
- add r0, #0xe8
- add r1, r2, r1
- str r1, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02023CB8
-FUN_02023CB8: ; 0x02023CB8
- mov r2, #0x76
- lsl r2, r2, #0x2
- str r1, [r0, r2]
- bx lr
-
- thumb_func_start FUN_02023CC0
-FUN_02023CC0: ; 0x02023CC0
- mov r2, #0x77
- lsl r2, r2, #0x2
- strb r1, [r0, r2]
- bx lr
-
- thumb_func_start FUN_02023CC8
-FUN_02023CC8: ; 0x02023CC8
- push {r3-r5, lr}
- add r5, r0, #0x0
- mov r1, #0xc
- mov r2, #0x0
- bl GetBoxMonData
- add r5, #0xec
- add r4, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0xc
- mov r2, #0x0
- bl GetBoxMonData
- cmp r4, r0
- beq _02023CEA
- mov r0, #0x1
- pop {r3-r5, pc}
-_02023CEA:
- mov r0, #0x0
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02023CF0
-FUN_02023CF0: ; 0x02023CF0
- push {r3-r4}
- add r4, r0, #0x0
- add r3, r1, #0x0
- mov r2, #0x1d
-_02023CF8:
- ldmia r3!, {r0-r1}
- stmia r4!, {r0-r1}
- sub r2, r2, #0x1
- bne _02023CF8
- ldr r0, [r3, #0x0]
- str r0, [r4, #0x0]
- pop {r3-r4}
- bx lr
-
- thumb_func_start FUN_02023D08
-FUN_02023D08: ; 0x02023D08
- push {r3-r4}
- mov r1, #0x0
- add r2, r0, #0x0
- add r4, r1, #0x0
-_02023D10:
- add r1, r1, #0x1
- strh r4, [r2, #0x38]
- add r2, r2, #0x2
- cmp r1, #0x8
- blt _02023D10
- add r3, r0, #0x0
- mov r2, #0x0
-_02023D1E:
- add r1, r3, #0x0
- add r1, #0x48
- add r4, r4, #0x1
- add r3, r3, #0x2
- strh r2, [r1, #0x0]
- cmp r4, #0xb
- blt _02023D1E
- ldr r1, _02023D38 ; =0x0000FFFF
- strh r1, [r0, #0x38]
- add r0, #0x48
- strh r1, [r0, #0x0]
- pop {r3-r4}
- bx lr
- .balign 4
-_02023D38: .word 0x0000FFFF
-
- thumb_func_start FUN_02023D3C
-FUN_02023D3C: ; 0x02023D3C
- push {r4, lr}
- add r4, r0, #0x0
- bl ZeroBoxMonData
- add r0, r4, #0x0
- mov r1, #0x0
- add r0, #0xe8
- add r4, #0x88
- str r1, [r0, #0x0]
- add r0, r4, #0x0
- bl FUN_02023D08
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02023D58
-FUN_02023D58: ; 0x02023D58
- ldr r3, _02023D60 ; =SavArray_get
- mov r1, #0x8
- bx r3
- nop
-_02023D60: .word SavArray_get
-
- thumb_func_start FUN_02023D64
-FUN_02023D64: ; 0x02023D64
+ thumb_func_start Sav2_Pokedex_sizeof
+Sav2_Pokedex_sizeof: ; 0x02023D64
mov r0, #0x4f
lsl r0, r0, #0x2
bx lr
.balign 4
- thumb_func_start FUN_02023D6C
-FUN_02023D6C: ; 0x02023D6C
+ thumb_func_start Sav2_Pokedex_new
+Sav2_Pokedex_new: ; 0x02023D6C
push {r4, lr}
mov r1, #0x4f
lsl r1, r1, #0x2
bl AllocFromHeap
add r4, r0, #0x0
- bl FUN_02024378
+ bl Sav2_Pokedex_init
add r0, r4, #0x0
pop {r4, pc}
- thumb_func_start FUN_02023D80
-FUN_02023D80: ; 0x02023D80
+ thumb_func_start Sav2_Pokedex_Copy
+Sav2_Pokedex_Copy: ; 0x02023D80
ldr r3, _02023D88 ; =MI_CpuCopy8
mov r2, #0x4f
lsl r2, r2, #0x2
@@ -1071,8 +886,8 @@ _0202436E:
nop
_02024374: .word 0x000001EA
- thumb_func_start FUN_02024378
-FUN_02024378: ; 0x02024378
+ thumb_func_start Sav2_Pokedex_init
+Sav2_Pokedex_init: ; 0x02024378
push {r4, lr}
mov r2, #0x4f
mov r1, #0x0
@@ -1177,7 +992,7 @@ _0202443C: .word 0x000001ED
FUN_02024440: ; 0x02024440
push {r4, lr}
add r4, r0, #0x0
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
cmp r0, #0x0
beq _02024454
add r0, r4, #0x0
@@ -2296,8 +2111,8 @@ _02024C78: .word 0xBEEFCAFE
_02024C7C: .word 0x000001ED
_02024C80: .word 0x00000147
- thumb_func_start FUN_02024C84
-FUN_02024C84: ; 0x02024C84
+ thumb_func_start Pokedex_SetNatDexFlag
+Pokedex_SetNatDexFlag: ; 0x02024C84
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0x0]
@@ -2314,8 +2129,8 @@ _02024C94:
_02024C9C: .word 0xBEEFCAFE
_02024CA0: .word 0x00000139
- thumb_func_start FUN_02024CA4
-FUN_02024CA4: ; 0x02024CA4
+ thumb_func_start Pokedex_GetNatDexFlag
+Pokedex_GetNatDexFlag: ; 0x02024CA4
push {r4, lr}
add r4, r0, #0x0
ldr r1, [r4, #0x0]
diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s
index 1cd62a91..3f324f9f 100644
--- a/arm9/asm/scrcmd.s
+++ b/arm9/asm/scrcmd.s
@@ -5263,13 +5263,13 @@ FUN_0203C300: ; 0x0203C300
.balign 4
_0203C328: .word FUN_0203BB90
- thumb_func_start FUN_0203C32C
-FUN_0203C32C: ; 0x0203C32C
+ thumb_func_start ScrCmd_halloffame
+ScrCmd_halloffame: ; 0x0203C32C
push {r3, lr}
add r0, #0x80
ldr r0, [r0, #0x0]
ldr r0, [r0, #0x10]
- bl FUN_02048694
+ bl Special_EnterHallOfFame
mov r0, #0x1
pop {r3, pc}
@@ -7876,7 +7876,7 @@ FUN_0203D834: ; 0x0203D834
lsl r1, r1, #0x18
add r0, r4, #0x0
lsr r1, r1, #0x18
- bl FUN_02023A2C
+ bl PlayerProfile_SetAvatar
mov r0, #0x0
pop {r3-r5, pc}
.balign 4
@@ -7910,8 +7910,8 @@ FUN_0203D874: ; 0x0203D874
pop {r3-r5, pc}
.balign 4
- thumb_func_start FUN_0203D8A0
-FUN_0203D8A0: ; 0x0203D8A0
+ thumb_func_start ScrCmd_getplayergender
+ScrCmd_getplayergender: ; 0x0203D8A0
push {r3-r5, lr}
add r5, r0, #0x0
add r0, #0x80
@@ -7932,14 +7932,14 @@ FUN_0203D8A0: ; 0x0203D8A0
mov r0, #0x0
pop {r3-r5, pc}
- thumb_func_start FUN_0203D8D0
-FUN_0203D8D0: ; 0x0203D8D0
+ thumb_func_start ScrCmd_healparty
+ScrCmd_healparty: ; 0x0203D8D0
push {r3, lr}
ldr r0, [r0, #0x74]
bl FUN_02046528
ldr r0, [r0, #0xc]
bl SavArray_PlayerParty_get
- bl FUN_02085140
+ bl HealParty
mov r0, #0x0
pop {r3, pc}
.balign 4
@@ -10034,12 +10034,12 @@ FUN_0203E968: ; 0x0203E968
ldr r0, [r0, #0x0]
ldr r0, [r0, #0xc]
bl FUN_02024DA0
- bl FUN_02024C84
+ bl Pokedex_SetNatDexFlag
add r5, #0x80
ldr r0, [r5, #0x0]
ldr r0, [r0, #0xc]
bl Sav2_PlayerData_GetProfileAddr
- bl FUN_02023A90
+ bl PlayerProfile_SetNatDexFlag
b _0203E9C8
_0203E9AE:
cmp r4, #0x2
@@ -10048,7 +10048,7 @@ _0203E9AE:
ldr r0, [r5, #0x0]
ldr r0, [r0, #0xc]
bl FUN_02024DA0
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
strh r0, [r6, #0x0]
b _0203E9C8
_0203E9C4:
diff --git a/arm9/asm/scrcmd_16.s b/arm9/asm/scrcmd_16.s
index dba4514e..8afbf518 100644
--- a/arm9/asm/scrcmd_16.s
+++ b/arm9/asm/scrcmd_16.s
@@ -13,7 +13,7 @@ FUN_02043E00: ; 0x02043E00
bl FUN_02039438
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_02023D58
+ bl Sav2_DayCare_get
ldr r1, [r4, #0x0]
bl MOD05_021ED4E0
mov r0, #0x0
@@ -75,7 +75,7 @@ FUN_02043E68: ; 0x02043E68
add r2, r0, #0x0
add r0, r6, #0x0
add r1, r5, #0x0
- bl MOD05_021ED0CC
+ bl MOD05_DayCare_GiveEggToPlayer
mov r0, #0x0
pop {r4-r6, pc}
@@ -306,7 +306,7 @@ FUN_02044034: ; 0x02044034
bl VarGet
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_02023D58
+ bl Sav2_DayCare_get
lsl r1, r4, #0x18
lsr r1, r1, #0x18
str r1, [sp, #0x0]
@@ -365,7 +365,7 @@ FUN_020440F0: ; 0x020440F0
add r0, r4, #0x0
mov r1, #0x8
bl SavArray_get
- bl FUN_02023C90
+ bl Sav2_DayCare_GetEggPID
strh r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
diff --git a/arm9/asm/scrcmd_3.s b/arm9/asm/scrcmd_3.s
index 3de355ea..4d4d924c 100644
--- a/arm9/asm/scrcmd_3.s
+++ b/arm9/asm/scrcmd_3.s
@@ -145,7 +145,7 @@ FUN_0203FF10: ; 0x0203FF10
ldr r0, [r0, #0x0]
ldr r0, [r0, #0xc]
bl FUN_02024DA0
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
add r1, sp, #0x14
strb r0, [r1, #0x4]
strb r6, [r1, #0x5]
diff --git a/arm9/asm/scrcmd_4.s b/arm9/asm/scrcmd_4.s
index b3af2c5c..14d6ef99 100644
--- a/arm9/asm/scrcmd_4.s
+++ b/arm9/asm/scrcmd_4.s
@@ -441,7 +441,7 @@ FUN_02040A30: ; 0x02040A30
bl PlayerProfile_GetTrainerGender
add r7, r0, #0x0
add r0, r4, #0x0
- bl FUN_02023A28
+ bl PlayerProfile_GetAvatar
add r1, r0, #0x0
add r0, r7, #0x0
mov r2, #0x2
diff --git a/arm9/asm/unk_02025954.s b/arm9/asm/unk_02025954.s
index bb8ebe4f..8cbf5483 100644
--- a/arm9/asm/unk_02025954.s
+++ b/arm9/asm/unk_02025954.s
@@ -501,14 +501,14 @@ _02025C72:
add r1, #0xa0
str r0, [r1, #0x0]
add r0, r6, #0x0
- bl FUN_02023A70
+ bl PlayerProfile_GetLanguage
ldr r1, [sp, #0x0]
add r2, r7, r1
mov r1, #0x41
lsl r1, r1, #0x2
strb r0, [r2, r1]
add r0, r6, #0x0
- bl FUN_02023A68
+ bl PlayerProfile_GetVersion
ldr r1, [sp, #0x0]
add r2, r7, r1
ldr r1, _02025CD4 ; =0x00000109
@@ -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
@@ -558,13 +558,13 @@ _02025CE8:
add r2, r5, r4
ldrb r1, [r2, r1]
add r0, r6, #0x0
- bl FUN_02023A6C
+ bl PlayerProfile_SetVersion
mov r1, #0x41
add r2, r5, r4
lsl r1, r1, #0x2
ldrb r1, [r2, r1]
add r0, r6, #0x0
- bl FUN_02023A74
+ bl PlayerProfile_SetLanguage
lsl r1, r4, #0x2
add r1, r5, r1
add r1, #0xa0
diff --git a/arm9/asm/unk_0202DB14.s b/arm9/asm/unk_0202DB14.s
index a725a6c0..22ffb2e4 100644
--- a/arm9/asm/unk_0202DB14.s
+++ b/arm9/asm/unk_0202DB14.s
@@ -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]
diff --git a/arm9/asm/unk_02033778.s b/arm9/asm/unk_02033778.s
index 844eac17..763e7b30 100644
--- a/arm9/asm/unk_02033778.s
+++ b/arm9/asm/unk_02033778.s
@@ -28,7 +28,7 @@ _02033792:
add r6, r0, #0x0
add r0, r5, #0x0
bl FUN_0202DFA4
- bl FUN_02023A70
+ bl PlayerProfile_GetLanguage
add r3, r0, #0x0
ldr r0, [sp, #0x0]
add r1, r4, #0x0
diff --git a/arm9/asm/unk_02033874.s b/arm9/asm/unk_02033874.s
index e48fdc8a..ddd4483b 100644
--- a/arm9/asm/unk_02033874.s
+++ b/arm9/asm/unk_02033874.s
@@ -341,7 +341,7 @@ _02033B22:
ldr r0, [sp, #0x10]
bl String_dtor
add r0, r6, #0x0
- bl FUN_02023A28
+ bl PlayerProfile_GetAvatar
add r3, r0, #0x0
add r0, r4, #0x0
add r1, r5, #0x0
diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s
index 667b0c58..73daf808 100644
--- a/arm9/asm/unk_02038C78.s
+++ b/arm9/asm/unk_02038C78.s
@@ -325,7 +325,7 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203C2E0
.word FUN_0203C2F0
.word FUN_0203C300
- .word FUN_0203C32C
+ .word ScrCmd_halloffame
.word FUN_0203C33C
.word FUN_0203C368
.word FUN_0203C3C8
@@ -482,8 +482,8 @@ gScriptCmdTable: ; 0x020F355C
.word FUN_0203FE48
.word FUN_0203D868
.word FUN_0203D874
- .word FUN_0203D8A0
- .word FUN_0203D8D0
+ .word ScrCmd_getplayergender
+ .word ScrCmd_healparty
.word FUN_0203D8E8
.word FUN_0203D8EC
.word FUN_0203D938
diff --git a/arm9/asm/unk_0204653C.s b/arm9/asm/unk_0204653C.s
index 15eacf44..b74847fc 100644
--- a/arm9/asm/unk_0204653C.s
+++ b/arm9/asm/unk_0204653C.s
@@ -203,7 +203,7 @@ _020466A4:
beq _020466BC
ldr r0, [r6, #0xc]
bl SavArray_PlayerParty_get
- bl FUN_02085140
+ bl HealParty
_020466BC:
ldr r1, [r5, #0x10]
add r0, r6, #0x0
@@ -771,7 +771,7 @@ _02046B3E:
beq _02046B56
ldr r0, [r5, #0xc]
bl SavArray_PlayerParty_get
- bl FUN_02085140
+ bl HealParty
_02046B56:
ldr r1, [r4, #0x10]
add r0, r5, #0x0
diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s
index 9bf1d22a..bf857f21 100644
--- a/arm9/asm/unk_020476CC.s
+++ b/arm9/asm/unk_020476CC.s
@@ -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
@@ -111,7 +111,7 @@ _02047774:
lsl r1, r1, #0x2
str r0, [r7, r1]
add r0, r5, #0x0
- bl FUN_02023D6C
+ bl Sav2_Pokedex_new
mov r1, #0x11
lsl r1, r1, #0x4
str r0, [r7, r1]
@@ -508,7 +508,7 @@ FUN_02047A78: ; 0x02047A78
lsl r1, r1, #0x4
ldr r0, [sp, #0x4]
ldr r1, [r5, r1]
- bl FUN_02023D80
+ bl Sav2_Pokedex_Copy
mov r1, #0x13
lsl r1, r1, #0x4
ldr r0, [sp, #0xc]
@@ -707,7 +707,7 @@ _02047C98:
lsl r1, r1, #0x4
ldr r0, [sp, #0xc]
ldr r1, [r6, r1]
- bl FUN_02023D80
+ bl Sav2_Pokedex_Copy
mov r1, #0x13
lsl r1, r1, #0x4
ldr r0, [sp, #0x4]
@@ -891,7 +891,7 @@ _02047E2C:
lsl r1, r1, #0x4
ldr r0, [sp, #0x18]
ldr r1, [r5, r1]
- bl FUN_02023D80
+ bl Sav2_Pokedex_Copy
mov r1, #0x13
lsl r1, r1, #0x4
ldr r0, [sp, #0x10]
@@ -950,7 +950,7 @@ _02047E2C:
cmp r0, #0x0
beq _02047F10
ldr r0, [sp, #0x20]
- bl FUN_02023A28
+ bl PlayerProfile_GetAvatar
add r4, r0, #0x0
ldr r0, [sp, #0x20]
bl PlayerProfile_GetTrainerGender
@@ -1042,7 +1042,7 @@ FUN_02047F38: ; 0x02047F38
lsl r0, r0, #0x4
ldr r0, [r4, r0]
ldr r1, [sp, #0x4]
- bl FUN_02023D80
+ bl Sav2_Pokedex_Copy
mov r0, #0x19
lsl r0, r0, #0x4
ldr r0, [r4, r0]
@@ -1067,7 +1067,7 @@ FUN_02047FA4: ; 0x02047FA4
mov r0, #0x11
lsl r0, r0, #0x4
ldr r0, [r4, r0]
- bl FUN_02023D80
+ bl Sav2_Pokedex_Copy
pop {r3-r5, pc}
thumb_func_start FUN_02047FD0
diff --git a/arm9/asm/unk_020484A8.s b/arm9/asm/unk_020484A8.s
index 81c79a9a..f38c0676 100644
--- a/arm9/asm/unk_020484A8.s
+++ b/arm9/asm/unk_020484A8.s
@@ -159,7 +159,7 @@ _020485AE:
_020485C0:
ldr r0, [r6, #0xc]
bl SavArray_PlayerParty_get
- bl FUN_02085140
+ bl HealParty
bl SaveSetDirtyBit
ldr r0, [r6, #0xc]
bl FUN_02022720
@@ -253,8 +253,8 @@ _02048688:
nop
_02048690: .word 0x0000061B
- thumb_func_start FUN_02048694
-FUN_02048694: ; 0x02048694
+ thumb_func_start Special_EnterHallOfFame
+Special_EnterHallOfFame: ; 0x02048694
push {r4-r7, lr}
sub sp, #0xc
add r7, r0, #0x0
@@ -319,7 +319,7 @@ _0204871E:
add r0, r6, #0x0
bl FUN_0205ECFC
ldr r0, [sp, #0x0]
- bl FUN_02023A78
+ bl PlayerProfile_SetGameClearFlag
ldr r0, [r4, #0xc]
bl FUN_02029FC8
mov r1, #0x2e
diff --git a/arm9/asm/unk_0204CB20.s b/arm9/asm/unk_0204CB20.s
index e95b8c81..52fbcfa7 100644
--- a/arm9/asm/unk_0204CB20.s
+++ b/arm9/asm/unk_0204CB20.s
@@ -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
diff --git a/arm9/asm/unk_020520AC.s b/arm9/asm/unk_020520AC.s
index 48a4f8ec..b7b805a2 100644
--- a/arm9/asm/unk_020520AC.s
+++ b/arm9/asm/unk_020520AC.s
@@ -1546,7 +1546,7 @@ _02052B32:
lsl r1, r4, #0x2
str r0, [r5, r1]
add r0, r7, #0x0
- bl FUN_02023A28
+ bl PlayerProfile_GetAvatar
str r0, [sp, #0x0]
add r0, r7, #0x0
bl PlayerProfile_GetTrainerGender
@@ -1688,7 +1688,7 @@ _02052C46:
cmp r0, #0x4
beq _02052C78
ldr r0, [r5, #0x8]
- bl FUN_02023A28
+ bl PlayerProfile_GetAvatar
add r4, r0, #0x0
ldr r0, [r5, #0x8]
bl PlayerProfile_GetTrainerGender
@@ -1820,7 +1820,7 @@ _02052D3C:
mov r1, #0x1
bl BufferPlayersName
add r0, r4, #0x0
- bl FUN_02023A70
+ bl PlayerProfile_GetLanguage
add r4, r0, #0x0
cmp r4, #0x1
blt _02052D80
@@ -1967,7 +1967,7 @@ FUN_02052E38: ; 0x02052E38
bl PlayerProfile_GetTrainerGender
add r5, r0, #0x0
ldr r0, [r4, #0x8]
- bl FUN_02023A28
+ bl PlayerProfile_GetAvatar
add r1, r0, #0x0
add r0, r5, #0x0
mov r2, #0x0
diff --git a/arm9/asm/unk_02052EE8.s b/arm9/asm/unk_02052EE8.s
index d46e356e..5a3ae781 100644
--- a/arm9/asm/unk_02052EE8.s
+++ b/arm9/asm/unk_02052EE8.s
@@ -342,7 +342,7 @@ _02053166:
cmp r6, #0x0
beq _020531D8
ldr r0, [sp, #0xc]
- bl FUN_02023A28
+ bl PlayerProfile_GetAvatar
strb r0, [r5, #0x14]
ldr r0, [sp, #0xc]
bl PlayerProfile_GetTrainerID
diff --git a/arm9/asm/unk_0205CE48.s b/arm9/asm/unk_0205CE48.s
index c42ef09c..aa8d85d5 100644
--- a/arm9/asm/unk_0205CE48.s
+++ b/arm9/asm/unk_0205CE48.s
@@ -1667,7 +1667,7 @@ _0205DB1A:
ldr r0, [r4, #0x18]
ldr r0, [r0, #0xc]
bl FUN_02024DA0
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
cmp r0, #0x0
bne _0205DB30
mov r0, #0x0
diff --git a/arm9/asm/unk_02064E90.s b/arm9/asm/unk_02064E90.s
index 27f1c143..ea21d648 100644
--- a/arm9/asm/unk_02064E90.s
+++ b/arm9/asm/unk_02064E90.s
@@ -27,7 +27,7 @@ FUN_02064E90: ; 0x02064E90
bl FUN_02065078
str r0, [sp, #0x24]
add r0, r7, #0x0
- bl FUN_02023A70
+ bl PlayerProfile_GetLanguage
str r0, [sp, #0x0]
str r5, [sp, #0x4]
ldr r0, [sp, #0x10]
diff --git a/arm9/asm/unk_02066840.s b/arm9/asm/unk_02066840.s
index 52fefe54..d443fce9 100644
--- a/arm9/asm/unk_02066840.s
+++ b/arm9/asm/unk_02066840.s
@@ -72,7 +72,7 @@ FUN_02066840: ; 0x02066840
add r0, #0xc8
strb r1, [r0, #0x0]
add r0, r4, #0x0
- bl FUN_02023A28
+ bl PlayerProfile_GetAvatar
add r1, r0, #0x0
add r0, r7, #0x0
add r0, #0xc8
diff --git a/arm9/asm/unk_0206BB28.s b/arm9/asm/unk_0206BB28.s
index 6416c65f..c460f6c3 100644
--- a/arm9/asm/unk_0206BB28.s
+++ b/arm9/asm/unk_0206BB28.s
@@ -13,7 +13,7 @@ FUN_0206BB28: ; 0x0206BB28
thumb_func_start FUN_0206BB34
FUN_0206BB34: ; 0x0206BB34
push {r3, lr}
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
cmp r0, #0x1
bne _0206BB42
mov r0, #0x1
diff --git a/arm9/asm/unk_0206BF90.s b/arm9/asm/unk_0206BF90.s
index b6551933..d672d875 100644
--- a/arm9/asm/unk_0206BF90.s
+++ b/arm9/asm/unk_0206BF90.s
@@ -998,10 +998,10 @@ FUN_0206C66C: ; 0x0206C66C
bl PlayerProfile_GetTrainerID
str r0, [r4, #0x10]
add r0, r6, #0x0
- bl FUN_02023A70
+ bl PlayerProfile_GetLanguage
strb r0, [r4, #0x14]
add r0, r6, #0x0
- bl FUN_02023A68
+ bl PlayerProfile_GetVersion
strb r0, [r4, #0x15]
add r0, r6, #0x0
bl PlayerProfile_GetTrainerGender
diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s
index 3e7aed0c..db3328a4 100644
--- a/arm9/asm/unk_0206F3FC.s
+++ b/arm9/asm/unk_0206F3FC.s
@@ -5406,7 +5406,7 @@ _02071E5A:
ldrh r1, [r1, #0x24]
ldrb r2, [r5, r2]
mov r3, #0x0
- bl FUN_020847F8
+ bl CanUseItemOnMonInParty
cmp r0, #0x1
bne _02071F02
ldr r0, _02071F1C ; =0x000005A4
diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s
index 9b71148c..d4608a0d 100644
--- a/arm9/asm/unk_0207550C.s
+++ b/arm9/asm/unk_0207550C.s
@@ -982,7 +982,7 @@ FUN_02075D20: ; 0x02075D20
ldrb r2, [r5, r2]
ldr r0, [r4, #0x0]
mov r3, #0x0
- bl FUN_02084DD0
+ bl UseItemOnMonInParty
ldr r1, _02075DAC ; =0x00000B25
add r0, r5, #0x0
ldrb r1, [r5, r1]
@@ -1106,7 +1106,7 @@ FUN_02075DC0: ; 0x02075DC0
ldrb r2, [r5, r2]
ldr r0, [r6, #0x0]
mov r3, #0x0
- bl FUN_02084DD0
+ bl UseItemOnMonInParty
ldr r1, _02075F50 ; =0x00000B25
add r0, r5, #0x0
ldrb r1, [r5, r1]
@@ -1237,7 +1237,7 @@ FUN_02075F60: ; 0x02075F60
ldrb r2, [r5, r2]
ldr r0, [r4, #0x0]
mov r3, #0x0
- bl FUN_02084DD0
+ bl UseItemOnMonInParty
ldr r0, _02076080 ; =0x000005A4
ldr r1, _02076084 ; =0x00000B25
ldr r0, [r5, r0]
@@ -1570,7 +1570,7 @@ _02076212:
ldr r1, [r4, r1]
mov r2, #0x0
ldrh r1, [r1, #0x24]
- bl FUN_02084810
+ bl UseItemOnPokemon
add r0, r5, #0x0
mov r1, #0xa2
mov r2, #0x0
@@ -1832,7 +1832,7 @@ FUN_0207640C: ; 0x0207640C
ldrb r2, [r5, r2]
ldr r0, [r6, #0x0]
mov r3, #0x0
- bl FUN_02084DD0
+ bl UseItemOnMonInParty
add r0, r4, #0x0
mov r1, #0xa0
mov r2, #0x0
@@ -3367,7 +3367,7 @@ _0207716A:
ldrb r2, [r5, r2]
ldr r0, [r6, #0x0]
lsr r3, r3, #0x18
- bl FUN_02084DD0
+ bl UseItemOnMonInParty
cmp r0, #0x1
bne _020771F6
ldr r0, _02077234 ; =0x000005A4
diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s
index ed311aef..80943988 100644
--- a/arm9/asm/unk_02080C38.s
+++ b/arm9/asm/unk_02080C38.s
@@ -2350,7 +2350,7 @@ _02081DEC:
bl ErrorHandling
_02081DFA:
add r0, r7, #0x0
- bl FUN_02023A88
+ bl PlayerProfile_GetGameClearFlag
cmp r0, #0x0
beq _02081E0A
add r5, r5, #0x1
@@ -2377,7 +2377,7 @@ _02081E1E:
bl ErrorHandling
_02081E2C:
add r0, r7, #0x0
- bl FUN_02023A9C
+ bl PlayerProfile_GetNatDexFlag
cmp r0, #0x0
beq _02081E3C
add r5, r5, #0x1
diff --git a/arm9/asm/unk_020842DC.s b/arm9/asm/unk_020842DC.s
deleted file mode 100644
index b016ceb3..00000000
--- a/arm9/asm/unk_020842DC.s
+++ /dev/null
@@ -1,1843 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_020842DC
-FUN_020842DC: ; 0x020842DC
- push {r3-r7, lr}
- sub sp, #0x18
- str r1, [sp, #0x4]
- add r6, r0, #0x0
- add r7, r2, #0x0
- ldr r0, [sp, #0x4]
- mov r1, #0x0
- add r2, r3, #0x0
- bl LoadItemDataOrGfx
- mov r1, #0xe
- add r4, r0, #0x0
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x1
- beq _02084308
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x0
- pop {r3-r7, pc}
-_02084308:
- add r0, r6, #0x0
- mov r1, #0x9f
- mov r2, #0x0
- bl GetMonData
- add r5, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0xf
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084332
- mov r0, #0x7
- tst r0, r5
- beq _02084332
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_02084332:
- add r0, r4, #0x0
- mov r1, #0x10
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084350
- mov r0, #0x88
- tst r0, r5
- beq _02084350
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_02084350:
- add r0, r4, #0x0
- mov r1, #0x11
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _0208436E
- mov r0, #0x10
- tst r0, r5
- beq _0208436E
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_0208436E:
- add r0, r4, #0x0
- mov r1, #0x12
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _0208438C
- mov r0, #0x20
- tst r0, r5
- beq _0208438C
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_0208438C:
- add r0, r4, #0x0
- mov r1, #0x13
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _020843AA
- mov r0, #0x40
- tst r0, r5
- beq _020843AA
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_020843AA:
- add r0, r6, #0x0
- mov r1, #0xa2
- mov r2, #0x0
- bl GetMonData
- add r5, r0, #0x0
- add r0, r4, #0x0
- mov r1, #0x17
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- bne _020843CE
- add r0, r4, #0x0
- mov r1, #0x18
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _020843EA
-_020843CE:
- add r0, r4, #0x0
- mov r1, #0x19
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- bne _020843EA
- cmp r5, #0x0
- bne _02084414
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_020843EA:
- add r0, r4, #0x0
- mov r1, #0x26
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084414
- cmp r5, #0x0
- beq _02084414
- add r0, r6, #0x0
- mov r1, #0xa3
- mov r2, #0x0
- bl GetMonData
- cmp r5, r0
- bhs _02084414
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_02084414:
- add r0, r4, #0x0
- mov r1, #0x19
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _0208443A
- add r0, r6, #0x0
- mov r1, #0xa0
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0x64
- bhs _0208443A
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_0208443A:
- add r0, r4, #0x0
- mov r1, #0x1a
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084464
- mov r0, #0x0
- str r0, [sp, #0x0]
- ldr r3, [sp, #0x4]
- add r1, r6, #0x0
- mov r2, #0x3
- bl GetMonEvolution
- cmp r0, #0x0
- beq _02084464
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_02084464:
- add r0, r4, #0x0
- mov r1, #0x22
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- bne _0208447C
- add r0, r4, #0x0
- mov r1, #0x23
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _020844B2
-_0208447C:
- add r1, r7, #0x0
- add r0, r6, #0x0
- add r1, #0x3e
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0x3
- bhs _020844B2
- add r1, r7, #0x0
- add r0, r6, #0x0
- add r1, #0x36
- mov r2, #0x0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- mov r1, #0x0
- bl WazaGetMaxPp
- cmp r0, #0x5
- blo _020844B2
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_020844B2:
- add r0, r4, #0x0
- mov r1, #0x24
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _020844D6
- add r0, r6, #0x0
- add r1, r7, #0x0
- bl FUN_02084DF0
- cmp r0, #0x1
- bne _020844D6
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_020844D6:
- add r0, r4, #0x0
- mov r1, #0x25
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084502
- mov r5, #0x0
-_020844E4:
- add r0, r6, #0x0
- add r1, r5, #0x0
- bl FUN_02084DF0
- cmp r0, #0x1
- bne _020844FC
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_020844FC:
- add r5, r5, #0x1
- cmp r5, #0x4
- blt _020844E4
-_02084502:
- add r0, r6, #0x0
- mov r1, #0xd
- mov r2, #0x0
- bl GetMonData
- add r5, r0, #0x0
- add r0, r6, #0x0
- mov r1, #0xe
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x14]
- add r0, r6, #0x0
- mov r1, #0xf
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x10]
- add r0, r6, #0x0
- mov r1, #0x10
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0xc]
- add r0, r6, #0x0
- mov r1, #0x11
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x8]
- add r0, r6, #0x0
- mov r1, #0x12
- mov r2, #0x0
- bl GetMonData
- add r7, r0, #0x0
- add r0, r6, #0x0
- mov r1, #0x5
- mov r2, #0x0
- bl GetMonData
- mov r1, #0x49
- lsl r1, r1, #0x2
- cmp r0, r1
- beq _020845C6
- add r0, r4, #0x0
- mov r1, #0x27
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _020845C6
- add r0, r4, #0x0
- mov r1, #0x30
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- ble _0208459C
- cmp r5, #0x64
- bge _020845C6
- ldr r0, [sp, #0x14]
- add r1, r5, r0
- ldr r0, [sp, #0x10]
- add r1, r0, r1
- ldr r0, [sp, #0xc]
- add r1, r0, r1
- ldr r0, [sp, #0x8]
- add r0, r0, r1
- add r1, r7, r0
- ldr r0, _020847F4 ; =0x000001FE
- cmp r1, r0
- bge _020845C6
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_0208459C:
- bge _020845C6
- cmp r5, #0x0
- ble _020845AE
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_020845AE:
- add r0, r6, #0x0
- add r1, r4, #0x0
- bl FUN_02085000
- cmp r0, #0x1
- bne _020845C6
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_020845C6:
- add r0, r4, #0x0
- mov r1, #0x28
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084632
- add r0, r4, #0x0
- mov r1, #0x31
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- ble _02084606
- ldr r0, [sp, #0x14]
- cmp r0, #0x64
- bge _02084632
- add r1, r5, r0
- ldr r0, [sp, #0x10]
- add r1, r0, r1
- ldr r0, [sp, #0xc]
- add r1, r0, r1
- ldr r0, [sp, #0x8]
- add r0, r0, r1
- add r1, r7, r0
- ldr r0, _020847F4 ; =0x000001FE
- cmp r1, r0
- bge _02084632
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_02084606:
- bge _02084632
- ldr r0, [sp, #0x14]
- cmp r0, #0x0
- ble _0208461A
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_0208461A:
- add r0, r6, #0x0
- add r1, r4, #0x0
- bl FUN_02085000
- cmp r0, #0x1
- bne _02084632
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_02084632:
- add r0, r4, #0x0
- mov r1, #0x29
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _020846A0
- add r0, r4, #0x0
- mov r1, #0x32
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- ble _02084674
- ldr r0, [sp, #0x10]
- cmp r0, #0x64
- bge _020846A0
- ldr r0, [sp, #0x14]
- add r1, r5, r0
- ldr r0, [sp, #0x10]
- add r1, r0, r1
- ldr r0, [sp, #0xc]
- add r1, r0, r1
- ldr r0, [sp, #0x8]
- add r0, r0, r1
- add r1, r7, r0
- ldr r0, _020847F4 ; =0x000001FE
- cmp r1, r0
- bge _020846A0
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_02084674:
- bge _020846A0
- ldr r0, [sp, #0x10]
- cmp r0, #0x0
- ble _02084688
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_02084688:
- add r0, r6, #0x0
- add r1, r4, #0x0
- bl FUN_02085000
- cmp r0, #0x1
- bne _020846A0
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_020846A0:
- add r0, r4, #0x0
- mov r1, #0x2a
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _0208470E
- add r0, r4, #0x0
- mov r1, #0x33
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- ble _020846E2
- ldr r0, [sp, #0xc]
- cmp r0, #0x64
- bge _0208470E
- ldr r0, [sp, #0x14]
- add r1, r5, r0
- ldr r0, [sp, #0x10]
- add r1, r0, r1
- ldr r0, [sp, #0xc]
- add r1, r0, r1
- ldr r0, [sp, #0x8]
- add r0, r0, r1
- add r1, r7, r0
- ldr r0, _020847F4 ; =0x000001FE
- cmp r1, r0
- bge _0208470E
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_020846E2:
- bge _0208470E
- ldr r0, [sp, #0xc]
- cmp r0, #0x0
- ble _020846F6
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_020846F6:
- add r0, r6, #0x0
- add r1, r4, #0x0
- bl FUN_02085000
- cmp r0, #0x1
- bne _0208470E
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_0208470E:
- add r0, r4, #0x0
- mov r1, #0x2b
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _0208477C
- add r0, r4, #0x0
- mov r1, #0x34
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- ble _02084750
- ldr r0, [sp, #0x8]
- cmp r0, #0x64
- bge _0208477C
- ldr r0, [sp, #0x14]
- add r1, r5, r0
- ldr r0, [sp, #0x10]
- add r1, r0, r1
- ldr r0, [sp, #0xc]
- add r1, r0, r1
- ldr r0, [sp, #0x8]
- add r0, r0, r1
- add r1, r7, r0
- ldr r0, _020847F4 ; =0x000001FE
- cmp r1, r0
- bge _0208477C
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_02084750:
- bge _0208477C
- ldr r0, [sp, #0x8]
- cmp r0, #0x0
- ble _02084764
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_02084764:
- add r0, r6, #0x0
- add r1, r4, #0x0
- bl FUN_02085000
- cmp r0, #0x1
- bne _0208477C
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_0208477C:
- add r0, r4, #0x0
- mov r1, #0x2c
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _020847E6
- add r0, r4, #0x0
- mov r1, #0x35
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- ble _020847BC
- cmp r7, #0x64
- bge _020847E6
- ldr r0, [sp, #0x14]
- add r1, r5, r0
- ldr r0, [sp, #0x10]
- add r1, r0, r1
- ldr r0, [sp, #0xc]
- add r1, r0, r1
- ldr r0, [sp, #0x8]
- add r0, r0, r1
- add r1, r7, r0
- ldr r0, _020847F4 ; =0x000001FE
- cmp r1, r0
- bge _020847E6
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_020847BC:
- bge _020847E6
- cmp r7, #0x0
- ble _020847CE
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_020847CE:
- add r0, r6, #0x0
- add r1, r4, #0x0
- bl FUN_02085000
- cmp r0, #0x1
- bne _020847E6
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x18
- mov r0, #0x1
- pop {r3-r7, pc}
-_020847E6:
- add r0, r4, #0x0
- bl FreeToHeap
- mov r0, #0x0
- add sp, #0x18
- pop {r3-r7, pc}
- nop
-_020847F4: .word 0x000001FE
-
- thumb_func_start FUN_020847F8
-FUN_020847F8: ; 0x020847F8
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r1, r2, #0x0
- add r4, r3, #0x0
- bl GetPartyMonByIndex
- ldr r3, [sp, #0x10]
- add r1, r5, #0x0
- add r2, r4, #0x0
- bl FUN_020842DC
- pop {r3-r5, pc}
-
- thumb_func_start FUN_02084810
-FUN_02084810: ; 0x02084810
- push {r3-r7, lr}
- sub sp, #0x70
- add r5, r0, #0x0
- ldr r0, [sp, #0x88]
- str r2, [sp, #0x4]
- str r0, [sp, #0x88]
- add r0, r1, #0x0
- ldr r2, [sp, #0x88]
- mov r1, #0x0
- str r3, [sp, #0x8]
- bl LoadItemDataOrGfx
- mov r1, #0xe
- add r4, r0, #0x0
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x1
- beq _02084840
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x70
- mov r0, #0x0
- pop {r3-r7, pc}
-_02084840:
- mov r6, #0x0
- add r0, r5, #0x0
- mov r1, #0x9f
- add r2, r6, #0x0
- add r7, r6, #0x0
- bl GetMonData
- str r0, [sp, #0x50]
- str r0, [sp, #0x54]
- add r0, r4, #0x0
- mov r1, #0xf
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084868
- ldr r1, [sp, #0x54]
- mov r0, #0x7
- bic r1, r0
- str r1, [sp, #0x54]
- mov r7, #0x1
-_02084868:
- add r0, r4, #0x0
- mov r1, #0x10
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _0208487E
- ldr r1, [sp, #0x54]
- ldr r0, _02084A28 ; =0xFFFFF077
- mov r7, #0x1
- and r0, r1
- str r0, [sp, #0x54]
-_0208487E:
- add r0, r4, #0x0
- mov r1, #0x11
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084894
- ldr r1, [sp, #0x54]
- mov r0, #0x10
- bic r1, r0
- str r1, [sp, #0x54]
- mov r7, #0x1
-_02084894:
- add r0, r4, #0x0
- mov r1, #0x12
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _020848AA
- ldr r1, [sp, #0x54]
- mov r0, #0x20
- bic r1, r0
- str r1, [sp, #0x54]
- mov r7, #0x1
-_020848AA:
- add r0, r4, #0x0
- mov r1, #0x13
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _020848C0
- ldr r1, [sp, #0x54]
- mov r0, #0x40
- bic r1, r0
- str r1, [sp, #0x54]
- mov r7, #0x1
-_020848C0:
- ldr r1, [sp, #0x50]
- ldr r0, [sp, #0x54]
- cmp r1, r0
- beq _020848D4
- add r0, r5, #0x0
- mov r1, #0x9f
- add r2, sp, #0x54
- bl SetMonData
- mov r6, #0x1
-_020848D4:
- add r0, r5, #0x0
- mov r1, #0xa2
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x50]
- add r0, r5, #0x0
- mov r1, #0xa3
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x54]
- add r0, r4, #0x0
- mov r1, #0x17
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- bne _02084904
- add r0, r4, #0x0
- mov r1, #0x18
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084930
-_02084904:
- add r0, r4, #0x0
- mov r1, #0x19
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084930
- ldr r0, [sp, #0x50]
- cmp r0, #0x0
- bne _0208492C
- add r0, r4, #0x0
- mov r1, #0x36
- bl GetItemAttr_PreloadedItemData
- add r3, r0, #0x0
- ldr r1, [sp, #0x50]
- ldr r2, [sp, #0x54]
- add r0, r5, #0x0
- bl FUN_02084F68
- mov r6, #0x1
-_0208492C:
- mov r7, #0x1
- b _0208495C
-_02084930:
- add r0, r4, #0x0
- mov r1, #0x26
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _0208495C
- ldr r1, [sp, #0x50]
- ldr r0, [sp, #0x54]
- cmp r1, r0
- bge _0208495A
- add r0, r4, #0x0
- mov r1, #0x36
- bl GetItemAttr_PreloadedItemData
- add r3, r0, #0x0
- ldr r1, [sp, #0x50]
- ldr r2, [sp, #0x54]
- add r0, r5, #0x0
- bl FUN_02084F68
- mov r6, #0x1
-_0208495A:
- mov r7, #0x1
-_0208495C:
- add r0, r5, #0x0
- mov r1, #0xa0
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x58]
- add r0, r4, #0x0
- mov r1, #0x19
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _020849B4
- ldr r0, [sp, #0x58]
- cmp r0, #0x64
- bge _020849B2
- add r0, r5, #0x0
- bl CalcMonExpToNextLevel
- add r2, r0, #0x0
- add r0, r5, #0x0
- mov r1, #0x8
- bl AddMonData
- add r0, r5, #0x0
- bl CalcMonLevelAndStats
- ldr r0, [sp, #0x50]
- cmp r0, #0x0
- bne _020849B0
- add r0, r5, #0x0
- mov r1, #0xa3
- mov r2, #0x0
- bl GetMonData
- add r2, r0, #0x0
- ldr r3, [sp, #0x54]
- ldr r1, [sp, #0x50]
- add r0, r5, #0x0
- sub r3, r2, r3
- str r2, [sp, #0x5c]
- bl FUN_02084F68
-_020849B0:
- mov r6, #0x1
-_020849B2:
- mov r7, #0x1
-_020849B4:
- add r0, r4, #0x0
- mov r1, #0x1a
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _020849C2
- mov r7, #0x1
-_020849C2:
- add r0, r4, #0x0
- mov r1, #0x22
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _020849E2
- ldr r1, [sp, #0x4]
- add r0, r5, #0x0
- mov r2, #0x1
- bl FUN_02084EC0
- cmp r0, #0x1
- bne _020849DE
- mov r6, #0x1
-_020849DE:
- mov r7, #0x1
- b _02084A00
-_020849E2:
- add r0, r4, #0x0
- mov r1, #0x23
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084A00
- ldr r1, [sp, #0x4]
- add r0, r5, #0x0
- mov r2, #0x3
- bl FUN_02084EC0
- cmp r0, #0x1
- bne _020849FE
- mov r6, #0x1
-_020849FE:
- mov r7, #0x1
-_02084A00:
- add r0, r4, #0x0
- mov r1, #0x24
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084A2C
- add r0, r4, #0x0
- mov r1, #0x37
- bl GetItemAttr_PreloadedItemData
- add r2, r0, #0x0
- ldr r1, [sp, #0x4]
- add r0, r5, #0x0
- bl FUN_02084E40
- cmp r0, #0x1
- bne _02084A24
- mov r6, #0x1
-_02084A24:
- mov r7, #0x1
- b _02084A66
- .balign 4
-_02084A28: .word 0xFFFFF077
-_02084A2C:
- add r0, r4, #0x0
- mov r1, #0x25
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084A66
- mov r0, #0x0
- str r0, [sp, #0x50]
- cmp r0, #0x4
- bge _02084A64
- mov r7, #0x37
-_02084A42:
- add r0, r4, #0x0
- add r1, r7, #0x0
- bl GetItemAttr_PreloadedItemData
- add r2, r0, #0x0
- ldr r1, [sp, #0x50]
- add r0, r5, #0x0
- bl FUN_02084E40
- cmp r0, #0x1
- bne _02084A5A
- mov r6, #0x1
-_02084A5A:
- ldr r0, [sp, #0x50]
- add r0, r0, #0x1
- str r0, [sp, #0x50]
- cmp r0, #0x4
- blt _02084A42
-_02084A64:
- mov r7, #0x1
-_02084A66:
- add r0, r5, #0x0
- mov r1, #0xd
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x50]
- add r0, r5, #0x0
- mov r1, #0xe
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x54]
- add r0, r5, #0x0
- mov r1, #0xf
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x58]
- add r0, r5, #0x0
- mov r1, #0x10
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x5c]
- add r0, r5, #0x0
- mov r1, #0x11
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x60]
- add r0, r5, #0x0
- mov r1, #0x12
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x64]
- add r0, r5, #0x0
- mov r1, #0x5
- mov r2, #0x0
- bl GetMonData
- mov r1, #0x49
- lsl r1, r1, #0x2
- cmp r0, r1
- beq _02084B20
- add r0, r4, #0x0
- mov r1, #0x27
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084B20
- add r0, r4, #0x0
- mov r1, #0x30
- bl GetItemAttr_PreloadedItemData
- ldr r1, [sp, #0x60]
- ldr r2, [sp, #0x54]
- str r1, [sp, #0x10]
- ldr r1, [sp, #0x5c]
- str r0, [sp, #0xc]
- str r1, [sp, #0x14]
- ldr r1, [sp, #0x58]
- str r0, [sp, #0x6c]
- add r2, r2, r1
- ldr r1, [sp, #0x14]
- ldr r3, [sp, #0x64]
- add r2, r1, r2
- ldr r1, [sp, #0x10]
- ldr r0, [sp, #0x50]
- add r1, r1, r2
- ldr r2, [sp, #0xc]
- add r1, r3, r1
- bl FUN_02084FA8
- mov r1, #0x0
- mvn r1, r1
- str r0, [sp, #0x68]
- cmp r0, r1
- beq _02084B18
- str r0, [sp, #0x50]
- add r0, r5, #0x0
- mov r1, #0xd
- add r2, sp, #0x50
- bl SetMonData
- add r0, r5, #0x0
- bl CalcMonLevelAndStats
- mov r6, #0x1
-_02084B18:
- ldr r0, [sp, #0x6c]
- cmp r0, #0x0
- ble _02084B20
- mov r7, #0x1
-_02084B20:
- add r0, r4, #0x0
- mov r1, #0x28
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084B80
- add r0, r4, #0x0
- mov r1, #0x31
- bl GetItemAttr_PreloadedItemData
- ldr r1, [sp, #0x60]
- ldr r2, [sp, #0x50]
- str r1, [sp, #0x1c]
- ldr r1, [sp, #0x5c]
- str r0, [sp, #0x18]
- str r1, [sp, #0x20]
- ldr r1, [sp, #0x58]
- str r0, [sp, #0x6c]
- add r2, r2, r1
- ldr r1, [sp, #0x20]
- ldr r3, [sp, #0x64]
- add r2, r1, r2
- ldr r1, [sp, #0x1c]
- ldr r0, [sp, #0x54]
- add r1, r1, r2
- ldr r2, [sp, #0x18]
- add r1, r3, r1
- bl FUN_02084FA8
- mov r1, #0x0
- mvn r1, r1
- str r0, [sp, #0x68]
- cmp r0, r1
- beq _02084B78
- str r0, [sp, #0x54]
- add r0, r5, #0x0
- mov r1, #0xe
- add r2, sp, #0x54
- bl SetMonData
- add r0, r5, #0x0
- bl CalcMonLevelAndStats
- mov r6, #0x1
-_02084B78:
- ldr r0, [sp, #0x6c]
- cmp r0, #0x0
- ble _02084B80
- mov r7, #0x1
-_02084B80:
- add r0, r4, #0x0
- mov r1, #0x29
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084BE0
- add r0, r4, #0x0
- mov r1, #0x32
- bl GetItemAttr_PreloadedItemData
- ldr r1, [sp, #0x60]
- ldr r2, [sp, #0x50]
- str r1, [sp, #0x28]
- ldr r1, [sp, #0x5c]
- str r0, [sp, #0x24]
- str r1, [sp, #0x2c]
- ldr r1, [sp, #0x54]
- str r0, [sp, #0x6c]
- add r2, r2, r1
- ldr r1, [sp, #0x2c]
- ldr r3, [sp, #0x64]
- add r2, r1, r2
- ldr r1, [sp, #0x28]
- ldr r0, [sp, #0x58]
- add r1, r1, r2
- ldr r2, [sp, #0x24]
- add r1, r3, r1
- bl FUN_02084FA8
- mov r1, #0x0
- mvn r1, r1
- str r0, [sp, #0x68]
- cmp r0, r1
- beq _02084BD8
- str r0, [sp, #0x58]
- add r0, r5, #0x0
- mov r1, #0xf
- add r2, sp, #0x58
- bl SetMonData
- add r0, r5, #0x0
- bl CalcMonLevelAndStats
- mov r6, #0x1
-_02084BD8:
- ldr r0, [sp, #0x6c]
- cmp r0, #0x0
- ble _02084BE0
- mov r7, #0x1
-_02084BE0:
- add r0, r4, #0x0
- mov r1, #0x2a
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084C40
- add r0, r4, #0x0
- mov r1, #0x33
- bl GetItemAttr_PreloadedItemData
- ldr r1, [sp, #0x60]
- ldr r2, [sp, #0x50]
- str r1, [sp, #0x34]
- ldr r1, [sp, #0x58]
- str r0, [sp, #0x30]
- str r1, [sp, #0x38]
- ldr r1, [sp, #0x54]
- str r0, [sp, #0x6c]
- add r2, r2, r1
- ldr r1, [sp, #0x38]
- ldr r3, [sp, #0x64]
- add r2, r1, r2
- ldr r1, [sp, #0x34]
- ldr r0, [sp, #0x5c]
- add r1, r1, r2
- ldr r2, [sp, #0x30]
- add r1, r3, r1
- bl FUN_02084FA8
- mov r1, #0x0
- mvn r1, r1
- str r0, [sp, #0x68]
- cmp r0, r1
- beq _02084C38
- str r0, [sp, #0x5c]
- add r0, r5, #0x0
- mov r1, #0x10
- add r2, sp, #0x5c
- bl SetMonData
- add r0, r5, #0x0
- bl CalcMonLevelAndStats
- mov r6, #0x1
-_02084C38:
- ldr r0, [sp, #0x6c]
- cmp r0, #0x0
- ble _02084C40
- mov r7, #0x1
-_02084C40:
- add r0, r4, #0x0
- mov r1, #0x2b
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084CA0
- add r0, r4, #0x0
- mov r1, #0x34
- bl GetItemAttr_PreloadedItemData
- ldr r1, [sp, #0x5c]
- ldr r2, [sp, #0x50]
- str r1, [sp, #0x40]
- ldr r1, [sp, #0x58]
- str r0, [sp, #0x3c]
- str r1, [sp, #0x44]
- ldr r1, [sp, #0x54]
- str r0, [sp, #0x6c]
- add r2, r2, r1
- ldr r1, [sp, #0x44]
- ldr r3, [sp, #0x64]
- add r2, r1, r2
- ldr r1, [sp, #0x40]
- ldr r0, [sp, #0x60]
- add r1, r1, r2
- ldr r2, [sp, #0x3c]
- add r1, r3, r1
- bl FUN_02084FA8
- mov r1, #0x0
- mvn r1, r1
- str r0, [sp, #0x68]
- cmp r0, r1
- beq _02084C98
- str r0, [sp, #0x60]
- add r0, r5, #0x0
- mov r1, #0x11
- add r2, sp, #0x60
- bl SetMonData
- add r0, r5, #0x0
- bl CalcMonLevelAndStats
- mov r6, #0x1
-_02084C98:
- ldr r0, [sp, #0x6c]
- cmp r0, #0x0
- ble _02084CA0
- mov r7, #0x1
-_02084CA0:
- add r0, r4, #0x0
- mov r1, #0x2c
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084D00
- add r0, r4, #0x0
- mov r1, #0x35
- bl GetItemAttr_PreloadedItemData
- ldr r1, [sp, #0x5c]
- ldr r2, [sp, #0x50]
- str r1, [sp, #0x4c]
- ldr r1, [sp, #0x58]
- str r0, [sp, #0x48]
- mov r12, r1
- ldr r1, [sp, #0x54]
- str r0, [sp, #0x6c]
- add r1, r2, r1
- mov r2, r12
- add r2, r2, r1
- ldr r1, [sp, #0x4c]
- ldr r3, [sp, #0x60]
- add r1, r1, r2
- ldr r0, [sp, #0x64]
- ldr r2, [sp, #0x48]
- add r1, r3, r1
- bl FUN_02084FA8
- mov r1, #0x0
- mvn r1, r1
- str r0, [sp, #0x68]
- cmp r0, r1
- beq _02084CF8
- str r0, [sp, #0x64]
- add r0, r5, #0x0
- mov r1, #0x12
- add r2, sp, #0x64
- bl SetMonData
- add r0, r5, #0x0
- bl CalcMonLevelAndStats
- mov r6, #0x1
-_02084CF8:
- ldr r0, [sp, #0x6c]
- cmp r0, #0x0
- ble _02084D00
- mov r7, #0x1
-_02084D00:
- cmp r6, #0x0
- bne _02084D14
- cmp r7, #0x1
- bne _02084D14
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x70
- mov r0, #0x0
- pop {r3-r7, pc}
-_02084D14:
- add r0, r5, #0x0
- mov r1, #0x9
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x50]
- cmp r0, #0x64
- bge _02084D54
- add r0, r4, #0x0
- mov r1, #0x2d
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084DC2
- add r0, r4, #0x0
- mov r1, #0x38
- bl GetItemAttr_PreloadedItemData
- add r2, r0, #0x0
- ldr r0, [sp, #0x88]
- str r0, [sp, #0x0]
- ldr r1, [sp, #0x50]
- ldr r3, [sp, #0x8]
- add r0, r5, #0x0
- bl FUN_0208508C
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x70
- add r0, r6, #0x0
- pop {r3-r7, pc}
-_02084D54:
- blt _02084D8A
- cmp r0, #0xc8
- bge _02084D8A
- add r0, r4, #0x0
- mov r1, #0x2e
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084DC2
- add r0, r4, #0x0
- mov r1, #0x39
- bl GetItemAttr_PreloadedItemData
- add r2, r0, #0x0
- ldr r0, [sp, #0x88]
- str r0, [sp, #0x0]
- ldr r1, [sp, #0x50]
- ldr r3, [sp, #0x8]
- add r0, r5, #0x0
- bl FUN_0208508C
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x70
- add r0, r6, #0x0
- pop {r3-r7, pc}
-_02084D8A:
- cmp r0, #0xc8
- blt _02084DC2
- cmp r0, #0xff
- bgt _02084DC2
- add r0, r4, #0x0
- mov r1, #0x2f
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02084DC2
- add r0, r4, #0x0
- mov r1, #0x3a
- bl GetItemAttr_PreloadedItemData
- add r2, r0, #0x0
- ldr r0, [sp, #0x88]
- str r0, [sp, #0x0]
- ldr r1, [sp, #0x50]
- ldr r3, [sp, #0x8]
- add r0, r5, #0x0
- bl FUN_0208508C
- add r0, r4, #0x0
- bl FreeToHeap
- add sp, #0x70
- add r0, r6, #0x0
- pop {r3-r7, pc}
-_02084DC2:
- add r0, r4, #0x0
- bl FreeToHeap
- add r0, r6, #0x0
- add sp, #0x70
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02084DD0
-FUN_02084DD0: ; 0x02084DD0
- push {r3-r5, lr}
- add r5, r1, #0x0
- add r1, r2, #0x0
- add r4, r3, #0x0
- bl GetPartyMonByIndex
- ldr r1, [sp, #0x14]
- add r3, sp, #0x0
- str r1, [sp, #0x0]
- ldrh r3, [r3, #0x10]
- add r1, r5, #0x0
- add r2, r4, #0x0
- bl FUN_02084810
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_02084DF0
-FUN_02084DF0: ; 0x02084DF0
- push {r3-r7, lr}
- add r6, r1, #0x0
- add r1, #0x36
- mov r2, #0x0
- add r5, r0, #0x0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r7, r0, #0x10
- bne _02084E08
- mov r0, #0x0
- pop {r3-r7, pc}
-_02084E08:
- add r1, r6, #0x0
- add r0, r5, #0x0
- add r1, #0x3a
- mov r2, #0x0
- bl GetMonData
- lsl r0, r0, #0x18
- add r6, #0x3e
- lsr r4, r0, #0x18
- add r0, r5, #0x0
- add r1, r6, #0x0
- mov r2, #0x0
- bl GetMonData
- lsl r0, r0, #0x18
- lsr r1, r0, #0x18
- add r0, r7, #0x0
- bl WazaGetMaxPp
- cmp r4, r0
- bhs _02084E36
- mov r0, #0x1
- b _02084E38
-_02084E36:
- mov r0, #0x0
-_02084E38:
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02084E40
-FUN_02084E40: ; 0x02084E40
- push {r3-r7, lr}
- sub sp, #0x8
- add r5, r1, #0x0
- add r4, r2, #0x0
- add r1, #0x36
- mov r2, #0x0
- add r6, r0, #0x0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r7, r0, #0x10
- bne _02084E5E
- add sp, #0x8
- mov r0, #0x0
- pop {r3-r7, pc}
-_02084E5E:
- add r0, r5, #0x0
- str r0, [sp, #0x0]
- add r0, #0x3a
- str r0, [sp, #0x0]
- ldr r1, [sp, #0x0]
- add r0, r6, #0x0
- mov r2, #0x0
- bl GetMonData
- add r1, sp, #0x4
- strb r0, [r1, #0x0]
- add r5, #0x3e
- add r0, r6, #0x0
- add r1, r5, #0x0
- mov r2, #0x0
- bl GetMonData
- add r1, r0, #0x0
- lsl r1, r1, #0x18
- add r0, r7, #0x0
- lsr r1, r1, #0x18
- bl WazaGetMaxPp
- add r1, sp, #0x4
- ldrb r2, [r1, #0x0]
- cmp r2, r0
- bhs _02084EB8
- cmp r4, #0x7f
- bne _02084E9C
- strb r0, [r1, #0x0]
- b _02084EA8
-_02084E9C:
- add r2, r2, r4
- strb r2, [r1, #0x0]
- ldrb r2, [r1, #0x0]
- cmp r2, r0
- bls _02084EA8
- strb r0, [r1, #0x0]
-_02084EA8:
- ldr r1, [sp, #0x0]
- add r0, r6, #0x0
- add r2, sp, #0x4
- bl SetMonData
- add sp, #0x8
- mov r0, #0x1
- pop {r3-r7, pc}
-_02084EB8:
- mov r0, #0x0
- add sp, #0x8
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02084EC0
-FUN_02084EC0: ; 0x02084EC0
- push {r4-r7, lr}
- sub sp, #0xc
- add r6, r2, #0x0
- add r4, r1, #0x0
- str r1, [sp, #0x0]
- add r1, #0x3e
- mov r2, #0x0
- add r5, r0, #0x0
- str r1, [sp, #0x0]
- bl GetMonData
- add r1, sp, #0x8
- strb r0, [r1, #0x0]
- ldrb r0, [r1, #0x0]
- cmp r0, #0x3
- bne _02084EE6
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_02084EE6:
- add r1, r4, #0x0
- add r0, r5, #0x0
- add r1, #0x36
- mov r2, #0x0
- bl GetMonData
- lsl r0, r0, #0x10
- lsr r0, r0, #0x10
- mov r1, #0x0
- str r0, [sp, #0x4]
- bl WazaGetMaxPp
- cmp r0, #0x5
- bhs _02084F08
- add sp, #0xc
- mov r0, #0x0
- pop {r4-r7, pc}
-_02084F08:
- add r4, #0x3a
- add r0, r5, #0x0
- add r1, r4, #0x0
- mov r2, #0x0
- bl GetMonData
- add r1, sp, #0x8
- strb r0, [r1, #0x1]
- ldrb r1, [r1, #0x0]
- ldr r0, [sp, #0x4]
- bl WazaGetMaxPp
- add r7, r0, #0x0
- add r0, sp, #0x8
- ldrb r0, [r0, #0x0]
- add r0, r0, r6
- cmp r0, #0x3
- bls _02084F30
- mov r0, #0x3
- b _02084F34
-_02084F30:
- lsl r0, r0, #0x18
- lsr r0, r0, #0x18
-_02084F34:
- add r1, sp, #0x8
- strb r0, [r1, #0x0]
- ldrb r1, [r1, #0x0]
- ldr r0, [sp, #0x4]
- bl WazaGetMaxPp
- add r1, sp, #0x8
- ldrb r2, [r1, #0x1]
- add r0, r2, r0
- sub r0, r0, r7
- strb r0, [r1, #0x1]
- ldr r1, [sp, #0x0]
- add r0, r5, #0x0
- add r2, sp, #0x8
- bl SetMonData
- add r2, sp, #0x8
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, #0x1
- bl SetMonData
- mov r0, #0x1
- add sp, #0xc
- pop {r4-r7, pc}
- .balign 4
-
- thumb_func_start FUN_02084F68
-FUN_02084F68: ; 0x02084F68
- push {r0-r3}
- push {r3, lr}
- cmp r2, #0x1
- bne _02084F74
- mov r3, #0x1
- b _02084F8A
-_02084F74:
- cmp r3, #0xff
- bne _02084F7C
- add r3, r2, #0x0
- b _02084F8A
-_02084F7C:
- cmp r3, #0xfe
- bne _02084F84
- lsr r3, r2, #0x1
- b _02084F8A
-_02084F84:
- cmp r3, #0xfd
- bne _02084F8A
- lsr r3, r2, #0x2
-_02084F8A:
- ldr r1, [sp, #0xc]
- add r1, r1, r3
- cmp r1, r2
- bls _02084F96
- str r2, [sp, #0xc]
- b _02084F98
-_02084F96:
- str r1, [sp, #0xc]
-_02084F98:
- mov r1, #0xa2
- add r2, sp, #0xc
- bl SetMonData
- pop {r3}
- pop {r3}
- add sp, #0x10
- bx r3
-
- thumb_func_start FUN_02084FA8
-FUN_02084FA8: ; 0x02084FA8
- push {r3-r4}
- cmp r0, #0x0
- bne _02084FBA
- cmp r2, #0x0
- bge _02084FBA
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r4}
- bx lr
-_02084FBA:
- cmp r0, #0x64
- blt _02084FCA
- cmp r2, #0x0
- ble _02084FCA
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r4}
- bx lr
-_02084FCA:
- ldr r3, _02084FFC ; =0x000001FE
- add r4, r0, r1
- cmp r4, r3
- blt _02084FDE
- cmp r2, #0x0
- ble _02084FDE
- mov r0, #0x0
- mvn r0, r0
- pop {r3-r4}
- bx lr
-_02084FDE:
- add r0, r0, r2
- cmp r0, #0x64
- ble _02084FE8
- mov r0, #0x64
- b _02084FEE
-_02084FE8:
- cmp r0, #0x0
- bge _02084FEE
- mov r0, #0x0
-_02084FEE:
- ldr r2, _02084FFC ; =0x000001FE
- add r3, r0, r1
- cmp r3, r2
- ble _02084FF8
- sub r0, r2, r1
-_02084FF8:
- pop {r3-r4}
- bx lr
- .balign 4
-_02084FFC: .word 0x000001FE
-
- thumb_func_start FUN_02085000
-FUN_02085000: ; 0x02085000
- push {r4, lr}
- add r4, r1, #0x0
- mov r1, #0x9
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0xff
- blt _02085014
- mov r0, #0x0
- pop {r4, pc}
-_02085014:
- cmp r0, #0x64
- bge _02085038
- add r0, r4, #0x0
- mov r1, #0x2d
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02085034
- add r0, r4, #0x0
- mov r1, #0x38
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- ble _02085034
- mov r0, #0x1
- pop {r4, pc}
-_02085034:
- mov r0, #0x0
- pop {r4, pc}
-_02085038:
- blt _0208505E
- cmp r0, #0xc8
- bge _0208505E
- add r0, r4, #0x0
- mov r1, #0x2e
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _0208505A
- add r0, r4, #0x0
- mov r1, #0x39
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- ble _0208505A
- mov r0, #0x1
- pop {r4, pc}
-_0208505A:
- mov r0, #0x0
- pop {r4, pc}
-_0208505E:
- cmp r0, #0xc8
- blt _02085086
- cmp r0, #0xff
- bge _02085086
- add r0, r4, #0x0
- mov r1, #0x2f
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- beq _02085082
- add r0, r4, #0x0
- mov r1, #0x3a
- bl GetItemAttr_PreloadedItemData
- cmp r0, #0x0
- ble _02085082
- mov r0, #0x1
- pop {r4, pc}
-_02085082:
- mov r0, #0x0
- pop {r4, pc}
-_02085086:
- mov r0, #0x0
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0208508C
-FUN_0208508C: ; 0x0208508C
- push {r0-r3}
- push {r4-r6, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- add r6, r3, #0x0
- cmp r4, #0xff
- bne _020850AA
- ldr r0, [sp, #0x18]
- cmp r0, #0x0
- ble _020850AA
- mov r0, #0x0
- pop {r4-r6}
- pop {r3}
- add sp, #0x10
- bx r3
-_020850AA:
- cmp r4, #0x0
- bne _020850BE
- ldr r0, [sp, #0x18]
- cmp r0, #0x0
- bge _020850BE
- mov r0, #0x0
- pop {r4-r6}
- pop {r3}
- add sp, #0x10
- bx r3
-_020850BE:
- ldr r0, [sp, #0x18]
- cmp r0, #0x0
- ble _02085114
- add r0, r5, #0x0
- mov r1, #0x6
- mov r2, #0x0
- bl GetMonData
- lsl r0, r0, #0x10
- ldr r2, [sp, #0x20]
- lsr r0, r0, #0x10
- mov r1, #0x1
- bl GetItemAttr
- cmp r0, #0x34
- bne _020850EC
- ldr r1, [sp, #0x18]
- mov r0, #0x96
- mul r0, r1
- mov r1, #0x64
- bl _s32_div_f
- str r0, [sp, #0x18]
-_020850EC:
- add r0, r5, #0x0
- mov r1, #0x9a
- mov r2, #0x0
- bl GetMonData
- cmp r0, #0xb
- bne _02085100
- ldr r0, [sp, #0x18]
- add r0, r0, #0x1
- str r0, [sp, #0x18]
-_02085100:
- add r0, r5, #0x0
- mov r1, #0x97
- mov r2, #0x0
- bl GetMonData
- cmp r6, r0
- bne _02085114
- ldr r0, [sp, #0x18]
- add r0, r0, #0x1
- str r0, [sp, #0x18]
-_02085114:
- ldr r0, [sp, #0x18]
- add r0, r0, r4
- str r0, [sp, #0x18]
- cmp r0, #0xff
- ble _02085122
- mov r0, #0xff
- str r0, [sp, #0x18]
-_02085122:
- ldr r0, [sp, #0x18]
- cmp r0, #0x0
- bge _0208512C
- mov r0, #0x0
- str r0, [sp, #0x18]
-_0208512C:
- add r0, r5, #0x0
- mov r1, #0x9
- add r2, sp, #0x18
- bl SetMonData
- mov r0, #0x1
- pop {r4-r6}
- pop {r3}
- add sp, #0x10
- bx r3
-
- thumb_func_start FUN_02085140
-FUN_02085140: ; 0x02085140
- push {r4-r7, lr}
- sub sp, #0xc
- str r0, [sp, #0x0]
- bl GetPartyCount
- mov r7, #0x0
- str r0, [sp, #0x4]
- cmp r0, #0x0
- ble _020851B4
- mov r6, #0x7f
-_02085154:
- ldr r0, [sp, #0x0]
- add r1, r7, #0x0
- bl GetPartyMonByIndex
- mov r1, #0xab
- mov r2, #0x0
- add r5, r0, #0x0
- bl GetMonData
- cmp r0, #0x0
- beq _020851AC
- add r0, r5, #0x0
- mov r1, #0xa3
- mov r2, #0x0
- bl GetMonData
- str r0, [sp, #0x8]
- add r0, r5, #0x0
- mov r1, #0xa2
- add r2, sp, #0x8
- bl SetMonData
- mov r0, #0x0
- str r0, [sp, #0x8]
- add r0, r5, #0x0
- mov r1, #0x9f
- add r2, sp, #0x8
- bl SetMonData
- mov r4, #0x0
-_02085190:
- add r0, r5, #0x0
- add r1, r4, #0x0
- bl FUN_02084DF0
- cmp r0, #0x1
- bne _020851A6
- add r0, r5, #0x0
- add r1, r4, #0x0
- add r2, r6, #0x0
- bl FUN_02084E40
-_020851A6:
- add r4, r4, #0x1
- cmp r4, #0x4
- blt _02085190
-_020851AC:
- ldr r0, [sp, #0x4]
- add r7, r7, #0x1
- cmp r7, r0
- blt _02085154
-_020851B4:
- add sp, #0xc
- pop {r4-r7, pc}
diff --git a/arm9/global.inc b/arm9/global.inc
index 96c2b6be..65ecb0e3 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -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
@@ -1494,18 +1494,18 @@
.extern PlayerProfile_CountBadges
.extern PlayerProfile_GetMoney
.extern PlayerProfile_SetMoney
-.extern FUN_02023A28
-.extern FUN_02023A2C
+.extern PlayerProfile_GetAvatar
+.extern PlayerProfile_SetAvatar
.extern PlayerProfile_AddMoney
.extern PlayerProfile_SubMoney
-.extern FUN_02023A68
-.extern FUN_02023A6C
-.extern FUN_02023A70
-.extern FUN_02023A74
-.extern FUN_02023A78
-.extern FUN_02023A88
-.extern FUN_02023A90
-.extern FUN_02023A9C
+.extern PlayerProfile_GetVersion
+.extern PlayerProfile_SetVersion
+.extern PlayerProfile_GetLanguage
+.extern PlayerProfile_SetLanguage
+.extern PlayerProfile_SetGameClearFlag
+.extern PlayerProfile_GetGameClearFlag
+.extern PlayerProfile_SetNatDexFlag
+.extern PlayerProfile_GetNatDexFlag
.extern PlayerProfile_NameAndOTIDMatchPlayer
.extern FUN_02023AC4
.extern FUN_02023AC8
@@ -1517,27 +1517,27 @@
.extern FUN_02023BD4
.extern FUN_02023BE8
.extern FUN_02023C04
-.extern FUN_02023C40
-.extern FUN_02023C48
-.extern FUN_02023C74
-.extern FUN_02023C7C
-.extern FUN_02023C80
-.extern FUN_02023C84
-.extern FUN_02023C8C
-.extern FUN_02023C90
-.extern FUN_02023C98
-.extern FUN_02023CA0
-.extern FUN_02023CA8
-.extern FUN_02023CB8
-.extern FUN_02023CC0
-.extern FUN_02023CC8
-.extern FUN_02023CF0
-.extern FUN_02023D3C
-.extern FUN_02023D58
-.extern FUN_02023D64
-.extern FUN_02023D6C
-.extern FUN_02023D80
-.extern FUN_02024378
+.extern Sav2_DayCare_sizeof
+.extern Sav2_DayCare_init
+.extern Sav2_DayCare_GetMonX
+.extern DayCareMon_GetBoxMon
+.extern DayCareMon_GetExtras
+.extern DayCareMon_GetSteps
+.extern DayCareMail_GetCapsule
+.extern Sav2_DayCare_GetEggPID
+.extern Sav2_DayCare_GetEggCycleCounter
+.extern DayCareMon_SetSteps
+.extern DayCareMon_AddSteps
+.extern Sav2_DayCare_SetEggPID
+.extern Sav2_DayCare_SetEggCycleCounter
+.extern Sav2_DayCare_MasudaCheck
+.extern DayCareMon_Copy
+.extern DayCareMon_Init
+.extern Sav2_DayCare_get
+.extern Sav2_Pokedex_sizeof
+.extern Sav2_Pokedex_new
+.extern Sav2_Pokedex_Copy
+.extern Sav2_Pokedex_init
.extern FUN_020243C8
.extern FUN_02024404
.extern FUN_02024440
@@ -1565,8 +1565,8 @@
.extern FUN_02024970
.extern FUN_0202498C
.extern FUN_02024AF0
-.extern FUN_02024C84
-.extern FUN_02024CA4
+.extern Pokedex_SetNatDexFlag
+.extern Pokedex_GetNatDexFlag
.extern FUN_02024CC4
.extern FUN_02024CE0
.extern FUN_02024D00
@@ -2858,7 +2858,7 @@
.extern FUN_0203C2E0
.extern FUN_0203C2F0
.extern FUN_0203C300
-.extern FUN_0203C32C
+.extern ScrCmd_halloffame
.extern FUN_0203C33C
.extern FUN_0203C368
.extern FUN_0203C3C8
@@ -2953,8 +2953,8 @@
.extern FUN_0203D834
.extern FUN_0203D868
.extern FUN_0203D874
-.extern FUN_0203D8A0
-.extern FUN_0203D8D0
+.extern ScrCmd_getplayergender
+.extern ScrCmd_healparty
.extern FUN_0203D8E8
.extern FUN_0203D8EC
.extern FUN_0203D920
@@ -3478,7 +3478,7 @@
.extern FUN_020480E4
.extern FUN_0204837C
.extern FUN_02048498
-.extern FUN_02048694
+.extern Special_EnterHallOfFame
.extern FUN_020489DC
.extern FUN_020489FC
.extern FUN_02048C58
@@ -5296,10 +5296,10 @@
.extern FUN_02084098
.extern FUN_020842D0
.extern FUN_020842D8
-.extern FUN_020847F8
-.extern FUN_02084810
-.extern FUN_02084DD0
-.extern FUN_02085140
+.extern CanUseItemOnMonInParty
+.extern UseItemOnPokemon
+.extern UseItemOnMonInParty
+.extern HealParty
.extern FUN_020851B8
.extern FUN_020851DC
.extern FUN_020851F8
@@ -6565,7 +6565,7 @@
.extern MOD05_021EC864
.extern MOD05_021ECD64
.extern MOD05_SetEggStats
-.extern MOD05_021ED0CC
+.extern MOD05_DayCare_GiveEggToPlayer
.extern MOD05_021ED378
.extern MOD05_021ED49C
.extern MOD05_021ED4E0
diff --git a/arm9/modules/05/asm/mod05_021D80E8.s b/arm9/modules/05/asm/mod05_021D80E8.s
index f1a29149..946b25da 100644
--- a/arm9/modules/05/asm/mod05_021D80E8.s
+++ b/arm9/modules/05/asm/mod05_021D80E8.s
@@ -1765,7 +1765,7 @@ MOD05_021D8F38: ; 0x021D8F38
bl SavArray_PlayerParty_get
add r5, r0, #0
ldr r0, [r4, #0xc]
- bl FUN_02023D58
+ bl Sav2_DayCare_get
add r1, r5, #0
add r2, r4, #0
bl MOD05_021ED378
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index dabce6d4..2244fdd6 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -14321,8 +14321,8 @@ _021EC454: .word UNK05_021F7930
thumb_func_start MOD05_021EC458
MOD05_021EC458: ; 0x021EC458
push {r3, lr}
- bl FUN_02023C74
- bl FUN_02023C7C
+ bl Sav2_DayCare_GetMonX
+ bl DayCareMon_GetBoxMon
pop {r3, pc}
thumb_func_start MOD05_021EC464
@@ -14335,8 +14335,8 @@ MOD05_021EC464: ; 0x021EC464
_021EC46E:
add r0, r6, #0
add r1, r5, #0
- bl FUN_02023C74
- bl FUN_02023C7C
+ bl Sav2_DayCare_GetMonX
+ bl DayCareMon_GetBoxMon
add r1, r7, #0
mov r2, #0
bl GetBoxMonData
@@ -14367,8 +14367,8 @@ MOD05_021EC49C: ; 0x021EC49C
_021EC4AA:
add r0, r5, #0
add r1, r4, #0
- bl FUN_02023C74
- bl FUN_02023C7C
+ bl Sav2_DayCare_GetMonX
+ bl DayCareMon_GetBoxMon
add r1, r6, #0
add r2, r7, #0
bl GetBoxMonData
@@ -14410,10 +14410,10 @@ MOD05_021EC4F0: ; 0x021EC4F0
bl GetPartyMonByIndex
add r4, r0, #0
add r0, r5, #0
- bl FUN_02023C80
+ bl DayCareMon_GetExtras
str r0, [sp, #8]
add r0, r5, #0
- bl FUN_02023C7C
+ bl DayCareMon_GetBoxMon
str r0, [sp, #4]
add r0, r7, #0
bl Sav2_PlayerData_GetProfileAddr
@@ -14428,7 +14428,7 @@ MOD05_021EC4F0: ; 0x021EC4F0
cmp r0, #0
beq _021EC544
ldr r0, [sp, #8]
- bl FUN_02023C8C
+ bl DayCareMail_GetCapsule
add r2, r0, #0
add r0, r4, #0
mov r1, #0xa9
@@ -14439,7 +14439,7 @@ _021EC544:
bl FUN_02069BB4
add r0, r5, #0
mov r1, #0
- bl FUN_02023CA0
+ bl DayCareMon_SetSteps
ldr r1, [sp]
add r0, r6, #0
bl RemoveMonFromParty
@@ -14472,7 +14472,7 @@ MOD05_021EC57C: ; 0x021EC57C
bl MOD05_021EC49C
add r1, r0, #0
add r0, r4, #0
- bl FUN_02023C74
+ bl Sav2_DayCare_GetMonX
add r2, r0, #0
add r0, r5, #0
add r1, r6, #0
@@ -14486,17 +14486,17 @@ MOD05_021EC5B0: ; 0x021EC5B0
push {r3, r4, r5, r6, r7, lr}
add r4, r0, #0
mov r1, #0
- bl FUN_02023C74
+ bl Sav2_DayCare_GetMonX
add r5, r0, #0
add r0, r4, #0
mov r1, #1
- bl FUN_02023C74
+ bl Sav2_DayCare_GetMonX
add r4, r0, #0
add r0, r5, #0
- bl FUN_02023C7C
+ bl DayCareMon_GetBoxMon
add r6, r0, #0
add r0, r4, #0
- bl FUN_02023C7C
+ bl DayCareMon_GetBoxMon
add r7, r0, #0
add r0, r6, #0
mov r1, #5
@@ -14512,9 +14512,9 @@ MOD05_021EC5B0: ; 0x021EC5B0
beq _021EC600
add r0, r5, #0
add r1, r4, #0
- bl FUN_02023CF0
+ bl DayCareMon_Copy
add r0, r4, #0
- bl FUN_02023D3C
+ bl DayCareMon_Init
_021EC600:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
@@ -14582,10 +14582,10 @@ MOD05_021EC668: ; 0x021EC668
bl AllocMonZeroed
add r4, r0, #0
add r0, r6, #0
- bl FUN_02023C7C
+ bl DayCareMon_GetBoxMon
add r5, r0, #0
add r0, r6, #0
- bl FUN_02023C80
+ bl DayCareMon_GetExtras
str r0, [sp, #4]
add r0, r7, #0
mov r1, #0
@@ -14612,7 +14612,7 @@ MOD05_021EC668: ; 0x021EC668
bl GetMonData
str r0, [sp, #8]
add r0, r6, #0
- bl FUN_02023C84
+ bl DayCareMon_GetSteps
ldr r1, [sp, #8]
add r2, sp, #8
add r0, r1, r0
@@ -14628,7 +14628,7 @@ _021EC6E0:
cmp r0, #0
beq _021EC6FA
ldr r0, [sp, #4]
- bl FUN_02023C8C
+ bl DayCareMail_GetCapsule
add r2, r0, #0
add r0, r4, #0
mov r1, #0xa9
@@ -14641,7 +14641,7 @@ _021EC6FA:
bl ZeroBoxMonData
add r0, r6, #0
mov r1, #0
- bl FUN_02023CA0
+ bl DayCareMon_SetSteps
add r0, r4, #0
bl FreeToHeap
add r0, r7, #0
@@ -14656,7 +14656,7 @@ MOD05_021EC71C: ; 0x021EC71C
add r4, r1, #0
add r0, r6, #0
add r1, r3, #0
- bl FUN_02023C74
+ bl Sav2_DayCare_GetMonX
add r1, r0, #0
add r0, r5, #0
add r2, r4, #0
@@ -14704,13 +14704,13 @@ MOD05_021EC744: ; 0x021EC744
MOD05_021EC78C: ; 0x021EC78C
push {r4, r5, r6, lr}
add r5, r0, #0
- bl FUN_02023C7C
+ bl DayCareMon_GetBoxMon
add r6, r0, #0
bl CalcBoxMonLevel
lsl r0, r0, #0x18
lsr r4, r0, #0x18
add r0, r5, #0
- bl FUN_02023C84
+ bl DayCareMon_GetSteps
add r1, r0, #0
add r0, r6, #0
bl MOD05_021EC744
@@ -14723,10 +14723,10 @@ MOD05_021EC78C: ; 0x021EC78C
MOD05_021EC7B4: ; 0x021EC7B4
push {r3, r4, r5, lr}
add r5, r0, #0
- bl FUN_02023C7C
+ bl DayCareMon_GetBoxMon
add r4, r0, #0
add r0, r5, #0
- bl FUN_02023C84
+ bl DayCareMon_GetSteps
add r1, r0, #0
add r0, r4, #0
bl MOD05_021EC744
@@ -14741,7 +14741,7 @@ MOD05_021EC7D4: ; 0x021EC7D4
sub sp, #8
add r4, r0, #0
add r5, r1, #0
- bl FUN_02023C7C
+ bl DayCareMon_GetBoxMon
add r6, r0, #0
add r0, r4, #0
bl MOD05_021EC78C
@@ -14770,7 +14770,7 @@ MOD05_021EC810: ; 0x021EC810
sub sp, #8
add r4, r0, #0
add r5, r1, #0
- bl FUN_02023C7C
+ bl DayCareMon_GetBoxMon
add r6, r0, #0
add r0, r4, #0
bl MOD05_021EC78C
@@ -14801,7 +14801,7 @@ MOD05_021EC810: ; 0x021EC810
MOD05_021EC854: ; 0x021EC854
push {r4, lr}
add r4, r2, #0
- bl FUN_02023C74
+ bl Sav2_DayCare_GetMonX
add r1, r4, #0
bl MOD05_021EC810
pop {r4, pc}
@@ -14810,9 +14810,9 @@ MOD05_021EC854: ; 0x021EC854
MOD05_021EC864: ; 0x021EC864
push {r3, r4, r5, lr}
add r5, r2, #0
- bl FUN_02023C74
+ bl Sav2_DayCare_GetMonX
add r4, r0, #0
- bl FUN_02023C7C
+ bl DayCareMon_GetBoxMon
mov r1, #5
mov r2, #0
bl GetBoxMonData
@@ -14935,7 +14935,7 @@ MOD05_021EC944: ; 0x021EC944
bl MTRandom
add r1, r0, #0
ldr r0, [sp]
- bl FUN_02023CB8
+ bl Sav2_DayCare_SetEggPID
pop {r3, r4, r5, r6, r7, pc}
_021EC960:
ldr r0, [sp]
@@ -14962,7 +14962,7 @@ _021EC98A:
_021EC990:
ldr r0, [sp]
add r1, r4, #0
- bl FUN_02023CB8
+ bl Sav2_DayCare_SetEggPID
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
@@ -15467,10 +15467,10 @@ MOD05_021ECD64: ; 0x021ECD64
push {r4, lr}
add r4, r0, #0
mov r1, #0
- bl FUN_02023CB8
+ bl Sav2_DayCare_SetEggPID
add r0, r4, #0
mov r1, #0
- bl FUN_02023CC0
+ bl Sav2_DayCare_SetEggCycleCounter
pop {r4, pc}
thumb_func_start MOD05_021ECD78
@@ -15628,7 +15628,7 @@ _021ECE8C:
cmp r4, #0x1d
bne _021ECEBC
ldr r0, [sp]
- bl FUN_02023C90
+ bl Sav2_DayCare_GetEggPID
mov r1, #2
lsl r1, r1, #0xe
tst r0, r1
@@ -15642,7 +15642,7 @@ _021ECEBC:
cmp r4, r0
bne _021ECED6
ldr r0, [sp]
- bl FUN_02023C90
+ bl Sav2_DayCare_GetEggPID
mov r1, #2
lsl r1, r1, #0xe
tst r0, r1
@@ -15794,8 +15794,8 @@ _021ECFEE:
.balign 4, 0
_021ED008: .word 0x000001EE
- thumb_func_start MOD05_021ED00C
-MOD05_021ED00C: ; 0x021ED00C
+ thumb_func_start MOD05_DayCare_CreateEgg
+MOD05_DayCare_CreateEgg: ; 0x021ED00C
push {r3, r4, r5, r6, r7, lr}
sub sp, #0x18
str r1, [sp, #0x10]
@@ -15808,10 +15808,10 @@ MOD05_021ED00C: ; 0x021ED00C
add r1, sp, #0x14
strb r0, [r1]
add r0, r5, #0
- bl FUN_02023C90
+ bl Sav2_DayCare_GetEggPID
add r4, r0, #0
add r0, r5, #0
- bl FUN_02023CC8
+ bl Sav2_DayCare_MasudaCheck
cmp r0, #0
beq _021ED05E
add r0, r6, #0
@@ -15881,8 +15881,8 @@ _021ED05E:
.balign 4, 0
_021ED0C8: .word 0x000001EE
- thumb_func_start MOD05_021ED0CC
-MOD05_021ED0CC: ; 0x021ED0CC
+ thumb_func_start MOD05_DayCare_GiveEggToPlayer
+MOD05_DayCare_GiveEggToPlayer: ; 0x021ED0CC
push {r4, r5, r6, r7, lr}
sub sp, #0x14
add r5, r0, #0
@@ -15915,7 +15915,7 @@ MOD05_021ED0CC: ; 0x021ED0CC
add r0, r4, #0
add r1, r6, #0
add r2, r5, #0
- bl MOD05_021ED00C
+ bl MOD05_DayCare_CreateEgg
add r0, r4, #0
add r1, r5, #0
bl MOD05_021EC9D4
@@ -16251,9 +16251,9 @@ _021ED38E:
beq _021ED3AC
ldr r0, [sp]
add r1, r4, #0
- bl FUN_02023C74
+ bl Sav2_DayCare_GetMonX
mov r1, #1
- bl FUN_02023CA8
+ bl DayCareMon_AddSteps
add r6, r6, #1
_021ED3AC:
add r4, r4, #1
@@ -16261,15 +16261,15 @@ _021ED3AC:
cmp r4, #2
blo _021ED38E
ldr r0, [sp]
- bl FUN_02023C90
+ bl Sav2_DayCare_GetEggPID
cmp r0, #0
bne _021ED3F8
cmp r6, #2
bne _021ED3F8
ldr r0, [sp]
mov r1, #1
- bl FUN_02023C74
- bl FUN_02023C84
+ bl Sav2_DayCare_GetMonX
+ bl DayCareMon_GetSteps
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r0, #0xff
@@ -16289,11 +16289,11 @@ _021ED3AC:
bl MOD05_021EC944
_021ED3F8:
ldr r0, [sp]
- bl FUN_02023C98
+ bl Sav2_DayCare_GetEggCycleCounter
add r4, r0, #0
ldr r0, [sp]
add r1, r4, #1
- bl FUN_02023CC0
+ bl Sav2_DayCare_SetEggCycleCounter
ldr r0, [sp, #4]
bl MOD05_021ED334
add r1, r4, #1
@@ -16301,7 +16301,7 @@ _021ED3F8:
bne _021ED490
ldr r0, [sp]
mov r1, #0
- bl FUN_02023CC0
+ bl Sav2_DayCare_SetEggCycleCounter
add r0, r7, #0
bl MOD05_021ED190
add r6, r0, #0
@@ -16448,7 +16448,7 @@ MOD05_021ED52C: ; 0x021ED52C
add r7, r2, #0
add r1, r6, #0
str r3, [sp, #8]
- bl FUN_02023C74
+ bl Sav2_DayCare_GetMonX
str r0, [sp, #0xc]
add r0, r5, #0
add r1, r6, #0
@@ -16459,7 +16459,7 @@ MOD05_021ED52C: ; 0x021ED52C
add r2, r5, #0
bl BufferBoxMonNickname
ldr r0, [sp, #0xc]
- bl FUN_02023C84
+ bl DayCareMon_GetSteps
add r1, r0, #0
add r0, r5, #0
bl MOD05_021EC744
@@ -16531,7 +16531,7 @@ MOD05_021ED5C4: ; 0x021ED5C4
MOD05_021ED5EC: ; 0x021ED5EC
push {r4, lr}
add r4, r0, #0
- bl FUN_02023C90
+ bl Sav2_DayCare_GetEggPID
cmp r0, #0
beq _021ED5FC
mov r0, #1
@@ -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
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index fd961cc0..dd12992e 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -5044,7 +5044,7 @@ _0223BBDA:
add r0, r5, #0
bl ScriptEnvironment_GetSav2Ptr
bl FUN_02024DA0
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
add r6, r0, #0
add r0, r4, #0
add r1, sp, #0x64
@@ -5481,7 +5481,7 @@ _0223BF7E:
add r0, r5, #0
bl ScriptEnvironment_GetSav2Ptr
bl FUN_02024DA0
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
add r6, r0, #0
add r0, r4, #0
add r1, sp, #0x5c
@@ -5791,7 +5791,7 @@ _0223C222:
add r0, r5, #0
bl ScriptEnvironment_GetSav2Ptr
bl FUN_02024DA0
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
add r6, r0, #0
ldr r0, [sp, #0x14]
add r1, sp, #0x5c
@@ -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]
@@ -23654,7 +23654,7 @@ _02245098:
add r0, r5, #0
bl ScriptEnvironment_GetSav2Ptr
bl FUN_02024DA0
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
add r6, r0, #0
ldr r0, [r5, #0xc]
bl FUN_0202A9B0
@@ -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
diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s
index b5cc45b0..bbcb304d 100644
--- a/arm9/modules/11/asm/module_11_thumb1.s
+++ b/arm9/modules/11/asm/module_11_thumb1.s
@@ -1185,7 +1185,7 @@ _0222DFEC:
lsl r1, r1, #4
ldr r0, [r4, #0x60]
ldr r1, [r7, r1]
- bl FUN_02023D80
+ bl Sav2_Pokedex_Copy
ldr r0, [r4, #0x60]
bl FreeToHeap
mov r0, #0x45
@@ -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]
@@ -1767,14 +1767,14 @@ _0222E532:
ldr r1, [r4, #0x58]
bl Sav2_Bag_copy
mov r0, #5
- bl FUN_02023D6C
+ bl Sav2_Pokedex_new
str r0, [r4, #0x60]
mov r1, #0x11
ldr r0, [sp, #4]
lsl r1, r1, #4
ldr r0, [r0, r1]
ldr r1, [r4, #0x60]
- bl FUN_02023D80
+ bl Sav2_Pokedex_Copy
mov r1, #0x45
lsl r1, r1, #2
ldr r0, [sp, #4]
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s
index c3c739e5..14a64b6c 100644
--- a/arm9/modules/16/asm/module_16.s
+++ b/arm9/modules/16/asm/module_16.s
@@ -4573,7 +4573,7 @@ MOD16_021D9798: ; 0x021D9798
ldr r0, _021D9890 ; =0x00001744
str r1, [r5, r0]
ldr r0, [r5]
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
cmp r0, #0
beq _021D97C2
mov r1, #1
@@ -4630,7 +4630,7 @@ _021D980C:
add r0, r5, #0
bl MOD16_021D9A78
ldr r0, [r4, #4]
- bl FUN_02023A68
+ bl PlayerProfile_GetVersion
ldr r1, _021D989C ; =0x0000174C
str r0, [r5, r1]
ldr r0, [r4, #4]
@@ -4955,11 +4955,11 @@ _021D9A50: .word FUN_02024970
thumb_func_start MOD16_021D9A54
MOD16_021D9A54: ; 0x021D9A54
- ldr r3, _021D9A5C ; =FUN_02024CA4
+ ldr r3, _021D9A5C ; =Pokedex_GetNatDexFlag
ldr r0, [r0]
bx r3
nop
-_021D9A5C: .word FUN_02024CA4
+_021D9A5C: .word Pokedex_GetNatDexFlag
thumb_func_end MOD16_021D9A54
thumb_func_start MOD16_021D9A60
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
index 09b24dc9..bf7fde6d 100644
--- a/arm9/modules/18/asm/module_18.s
+++ b/arm9/modules/18/asm/module_18.s
@@ -3028,7 +3028,7 @@ MOD18_0223AE88: ; 0x0223AE88
add r4, r0, #0
add r0, r6, #0
bl FUN_02024DA0
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
mov r1, #0
cmp r0, #0
beq _0223AEB6
@@ -38229,7 +38229,7 @@ MOD18_0224C0AC: ; 0x0224C0AC
add r7, r0, #0
add r0, r5, #0
bl FUN_02024DA0
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
str r0, [sp, #4]
add r0, r7, #0
bl FUN_02025D40
diff --git a/arm9/modules/23/asm/module_23.s b/arm9/modules/23/asm/module_23.s
index 56b78aaf..a7bb626a 100644
--- a/arm9/modules/23/asm/module_23.s
+++ b/arm9/modules/23/asm/module_23.s
@@ -1023,7 +1023,7 @@ MOD23_02254F94: ; 0x02254F94
bl MOD20_02252C40
bl FUN_02024DA0
add r5, r0, #0
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
cmp r0, #0
beq _02254FCE
lsl r0, r4, #0x10
diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s
index 7b347ca5..45cab8d3 100644
--- a/arm9/modules/35/asm/module_35.s
+++ b/arm9/modules/35/asm/module_35.s
@@ -48,7 +48,7 @@ MOD35_0225489C: ; 0x0225489C
add r0, r4, #0
add r6, r2, #0
bl MOD20_02252C40
- bl FUN_02023D58
+ bl Sav2_DayCare_get
str r0, [r5, #0x30]
ldr r1, [r5, #0x30]
add r0, r5, #4
@@ -301,7 +301,7 @@ MOD35_02254A50: ; 0x02254A50
ldr r1, [sp]
strb r0, [r1]
ldr r0, [sp, #4]
- bl FUN_02023C90
+ bl Sav2_DayCare_GetEggPID
ldr r1, [sp]
mov r7, #0
strb r0, [r1, #1]
@@ -314,9 +314,9 @@ MOD35_02254A50: ; 0x02254A50
_02254A7A:
ldr r0, [sp, #4]
add r1, r7, #0
- bl FUN_02023C74
+ bl Sav2_DayCare_GetMonX
str r0, [sp, #8]
- bl FUN_02023C7C
+ bl DayCareMon_GetBoxMon
add r4, r0, #0
bl AcquireBoxMonLock
str r0, [sp, #0xc]
diff --git a/arm9/modules/51/asm/module_51.s b/arm9/modules/51/asm/module_51.s
index c28270a3..72a21ef0 100644
--- a/arm9/modules/51/asm/module_51.s
+++ b/arm9/modules/51/asm/module_51.s
@@ -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:
diff --git a/arm9/modules/52/asm/module_52.s b/arm9/modules/52/asm/module_52.s
index 829ee276..3fac1c6f 100644
--- a/arm9/modules/52/asm/module_52.s
+++ b/arm9/modules/52/asm/module_52.s
@@ -198,7 +198,7 @@ _021D7656:
lsl r1, r1, #0x18
add r0, r4, #0
lsr r1, r1, #0x18
- bl FUN_02023A2C
+ bl PlayerProfile_SetAvatar
add r0, r5, #0
bl FUN_02024ECC
ldr r1, [sp]
diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s
index 2c2aad31..0acfed98 100644
--- a/arm9/modules/54/asm/module_54.s
+++ b/arm9/modules/54/asm/module_54.s
@@ -3141,7 +3141,7 @@ _021D8D9E:
mov r0, #0xd9
lsl r0, r0, #2
ldr r0, [r6, r0]
- bl FUN_02023A28
+ bl PlayerProfile_GetAvatar
str r0, [sp, #0x10]
bl FUN_02031190
cmp r4, r0
diff --git a/arm9/modules/55/asm/module_55.s b/arm9/modules/55/asm/module_55.s
index 78542890..eb124639 100644
--- a/arm9/modules/55/asm/module_55.s
+++ b/arm9/modules/55/asm/module_55.s
@@ -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
diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s
index 48a760dd..775315bc 100644
--- a/arm9/modules/56/asm/module_56.s
+++ b/arm9/modules/56/asm/module_56.s
@@ -2022,15 +2022,15 @@ _02212E52:
blt _02212E52
_02212E82:
ldr r0, [sp, #0x14]
- bl FUN_02023A68
+ bl PlayerProfile_GetVersion
ldr r1, [r5, #4]
strb r0, [r1, #0x18]
ldr r0, [sp, #0x14]
- bl FUN_02023A70
+ bl PlayerProfile_GetLanguage
ldr r1, [r5, #4]
strb r0, [r1, #0x19]
ldr r0, [sp, #0x10]
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
ldr r1, [r5, #4]
strb r0, [r1, #0x1a]
ldr r1, [r5, #4]
@@ -2040,7 +2040,7 @@ _02212E82:
mov r1, #0
strb r1, [r0, #0x1c]
ldr r0, [sp, #0x14]
- bl FUN_02023A28
+ bl PlayerProfile_GetAvatar
ldr r1, [r5, #4]
strb r0, [r1, #0x1d]
ldr r0, [sp, #0x14]
@@ -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
diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s
index b61bff20..4f418110 100644
--- a/arm9/modules/71/asm/module_71.s
+++ b/arm9/modules/71/asm/module_71.s
@@ -3751,10 +3751,10 @@ MOD71_0222F4BC: ; 0x0222F4BC
bl PlayerProfile_GetTrainerID
str r0, [r4, #0x10]
add r0, r6, #0
- bl FUN_02023A70
+ bl PlayerProfile_GetLanguage
strb r0, [r4, #0x14]
add r0, r6, #0
- bl FUN_02023A68
+ bl PlayerProfile_GetVersion
strb r0, [r4, #0x15]
add r0, r6, #0
bl PlayerProfile_GetTrainerGender
@@ -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
diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s
index d45b6251..196c959f 100644
--- a/arm9/modules/80/asm/module_80.s
+++ b/arm9/modules/80/asm/module_80.s
@@ -13612,7 +13612,7 @@ _022342BC:
strb r0, [r5, r1]
ldr r0, [r4]
ldr r0, [r0, #0x1c]
- bl FUN_02023A28
+ bl PlayerProfile_GetAvatar
mov r1, #0x12
lsl r1, r1, #4
strb r0, [r5, r1]
@@ -13746,7 +13746,7 @@ MOD80_022343DC: ; 0x022343DC
mov r6, #0
sub r7, r1, r0
add r0, r4, #0
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
str r0, [sp, #0x14]
ldr r0, _022344D8 ; =0x02237B50
ldrh r0, [r0, r5]
@@ -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
@@ -17658,11 +17658,11 @@ MOD80_022361AC: ; 0x022361AC
ldr r1, _022361E0 ; =0x00000122
add r0, r4, #0
ldrb r1, [r5, r1]
- bl FUN_02023A6C
+ bl PlayerProfile_SetVersion
ldr r1, _022361E4 ; =0x00000123
add r0, r4, #0
ldrb r1, [r5, r1]
- bl FUN_02023A74
+ bl PlayerProfile_SetLanguage
add r0, r4, #0
pop {r3, r4, r5, pc}
.align 2, 0
diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s
index c21879dd..fec76301 100644
--- a/arm9/modules/83/asm/module_83.s
+++ b/arm9/modules/83/asm/module_83.s
@@ -144,7 +144,7 @@ _0222D6BE:
add r0, r4, #0
bl FUN_02016438
ldr r0, [r5, #8]
- bl FUN_02024CA4
+ bl Pokedex_GetNatDexFlag
cmp r0, #0
beq _0222D6E6
bl MOD83_02236EA8
diff --git a/arm9/src/daycare.c b/arm9/src/daycare.c
new file mode 100644
index 00000000..eff25151
--- /dev/null
+++ b/arm9/src/daycare.c
@@ -0,0 +1,114 @@
+#include "global.h"
+#include "pokemon.h"
+#include "seals.h"
+#include "save_block_2.h"
+#include "daycare.h"
+
+#pragma thumb on
+
+u32 Sav2_DayCare_sizeof(void)
+{
+ return sizeof(struct DayCare);
+}
+
+void Sav2_DayCare_init(struct DayCare * daycare)
+{
+ memset(daycare, 0, sizeof(struct DayCare));
+ ZeroBoxMonData(&daycare->mons[0].mon);
+ ZeroBoxMonData(&daycare->mons[1].mon);
+ daycare->egg_pid = 0;
+ daycare->egg_cycles = 0;
+}
+
+struct DayCareMon * Sav2_DayCare_GetMonX(struct DayCare * daycare, s32 i)
+{
+ return &daycare->mons[i];
+}
+
+struct BoxPokemon * DayCareMon_GetBoxMon(struct DayCareMon * dcmon)
+{
+ return &dcmon->mon;
+}
+
+struct DayCareMail * DayCareMon_GetExtras(struct DayCareMon * dcmon)
+{
+ return &dcmon->mail;
+}
+
+u32 DayCareMon_GetSteps(struct DayCareMon * dcmon)
+{
+ return dcmon->steps;
+}
+
+struct SealStruct * DayCareMail_GetCapsule(struct DayCareMail * dcmail)
+{
+ return &dcmail->seal;
+}
+
+u32 Sav2_DayCare_GetEggPID(struct DayCare * daycare)
+{
+ return daycare->egg_pid;
+}
+
+u8 Sav2_DayCare_GetEggCycleCounter(struct DayCare * daycare)
+{
+ return daycare->egg_cycles;
+}
+
+void DayCareMon_SetSteps(struct DayCareMon * dcmon, u32 steps)
+{
+ dcmon->steps = steps;
+}
+
+void DayCareMon_AddSteps(struct DayCareMon * dcmon, u32 steps)
+{
+ dcmon->steps += steps;
+}
+
+void Sav2_DayCare_SetEggPID(struct DayCare * daycare, u32 pid)
+{
+ daycare->egg_pid = pid;
+}
+
+void Sav2_DayCare_SetEggCycleCounter(struct DayCare * daycare, u8 count)
+{
+ daycare->egg_cycles = count;
+}
+
+BOOL Sav2_DayCare_MasudaCheck(struct DayCare * daycare)
+{
+ // Checks if the pokemon come from different countries.
+ // Uses language as a proxy for country, even though it
+ // only accounts for European languages and Japanese.
+ // If true, shiny odds are increased (see overlay 05).
+ return GetBoxMonData(&daycare->mons[0].mon, MON_DATA_GAME_LANGUAGE, NULL) != GetBoxMonData(&daycare->mons[1].mon, MON_DATA_GAME_LANGUAGE, NULL);
+}
+
+void DayCareMon_Copy(struct DayCareMon * dest, const struct DayCareMon * src)
+{
+ *dest = *src;
+}
+
+void DayCareMon_Extras_init(struct DayCareMail * mail)
+{
+ int i;
+
+ for (i = 0; i < OT_NAME_LENGTH + 1; i++)
+ mail->ot_name[i] = 0;
+ for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++)
+ mail->nickname[i] = 0;
+ mail->ot_name[0] = EOS;
+ mail->nickname[0] = EOS;
+}
+
+void DayCareMon_Init(struct DayCareMon * mon)
+{
+ ZeroBoxMonData(&mon->mon);
+ mon->steps = 0;
+ DayCareMon_Extras_init(&mon->mail);
+}
+
+struct DayCare * Sav2_DayCare_get(struct SaveBlock2 * sav2)
+{
+ return (struct DayCare *)SavArray_get(sav2, 8);
+}
diff --git a/arm9/src/itemtool.c b/arm9/src/itemtool.c
index 9cd7552d..75785ee8 100644
--- a/arm9/src/itemtool.c
+++ b/arm9/src/itemtool.c
@@ -786,141 +786,141 @@ u32 GetItemAttr_PreloadedItemData(struct ItemData * itemData, u32 attr)
{
switch (attr)
{
- case 0:
+ case ITEMATTR_PRICE:
return itemData->price;
- case 1:
+ case ITEMATTR_HOLD_EFFECT:
return itemData->holdEffect;
- case 2:
+ case ITEMATTR_HOLD_EFFECT_PARAM:
return itemData->holdEffectParam;
- case 3:
- return itemData->unk8_5;
- case 4:
- return itemData->unk8_6;
- case 5:
+ case ITEMATTR_PREVENT_TOSS:
+ return itemData->prevent_toss;
+ case ITEMATTR_SELECTABLE:
+ return itemData->selectable;
+ case ITEMATTR_POCKET:
return itemData->pocket;
- case 6:
+ case ITEMATTR_UNKA:
return itemData->unkA;
- case 7:
+ case ITEMATTR_UNKB:
return itemData->unkB;
- case 8:
+ case ITEMATTR_UNK4:
return itemData->unk4;
- case 9:
+ case ITEMATTR_UNK5:
return itemData->unk5;
- case 10:
+ case ITEMATTR_UNK6:
return itemData->unk6;
- case 11:
+ case ITEMATTR_NATURAL_GIFT_POWER:
return itemData->naturalGiftPower;
- case 12:
+ case ITEMATTR_UNK8_0:
return itemData->unk8_0;
- case 13:
+ case ITEMATTR_UNK8_B:
return itemData->unk8_B;
- case 14:
- return itemData->unkC;
+ case ITEMATTR_PARTY_USE:
+ return itemData->partyUse;
default:
- switch (itemData->unkC)
+ switch (itemData->partyUse)
{
case 0:
- return itemData->unkE.flat;
+ return itemData->partyUseParam.flat;
case 1:
- return GetItemAttrSub(&itemData->unkE.sub, attr);
+ return GetItemAttrSub(&itemData->partyUseParam.sub, attr);
default:
return 0;
}
}
}
-u32 GetItemAttrSub(struct ItemDataSub * sub, u32 attr)
+u32 GetItemAttrSub(struct ItemPartyUseParam * sub, u32 attr)
{
switch (attr)
{
- case 15:
- return sub->unk0_0;
- case 16:
- return sub->unk0_1;
- case 17:
- return sub->unk0_2;
- case 18:
- return sub->unk0_3;
- case 19:
- return sub->unk0_4;
- case 20:
- return sub->unk0_5;
- case 21:
- return sub->unk0_6;
- case 22:
- return sub->unk0_7;
- case 23:
- return sub->unk1_0;
- case 24:
- return sub->unk1_1;
- case 25:
- return sub->unk1_2;
- case 26:
- return sub->unk1_3;
- case 27:
- return sub->unk1_4;
- case 28:
- return sub->unk2_0;
- case 29:
- return sub->unk2_4;
- case 30:
- return sub->unk3_0;
- case 31:
- return sub->unk3_4;
- case 32:
- return sub->unk4_0;
- case 33:
- return sub->unk4_4;
- case 34:
- return sub->unk4_6;
- case 35:
- return sub->unk4_7;
- case 36:
- return sub->unk5_0;
- case 37:
- return sub->unk5_1;
- case 38:
- return sub->unk5_2;
- case 39:
- return sub->unk5_3;
- case 40:
- return sub->unk5_4;
- case 41:
- return sub->unk5_5;
- case 42:
- return sub->unk5_6;
- case 43:
- return sub->unk5_7;
- case 44:
- return sub->unk6_0;
- case 45:
- return sub->unk6_1;
- case 46:
- return sub->unk6_2;
- case 47:
- return sub->unk6_3;
- case 48:
- return sub->unk7;
- case 49:
- return sub->unk8;
- case 50:
- return sub->unk9;
- case 51:
- return sub->unkA;
- case 52:
- return sub->unkB;
- case 53:
- return sub->unkC;
- case 54:
- return sub->unkD;
- case 55:
- return sub->unkE;
- case 56:
- return sub->unkF;
- case 57:
- return sub->unk10;
- case 58:
- return sub->unk11;
+ case ITEMATTR_SLP_HEAL:
+ return sub->slp_heal;
+ case ITEMATTR_PSN_HEAL:
+ return sub->psn_heal;
+ case ITEMATTR_BRN_HEAL:
+ return sub->brn_heal;
+ case ITEMATTR_FRZ_HEAL:
+ return sub->frz_heal;
+ case ITEMATTR_PRZ_HEAL:
+ return sub->prz_heal;
+ case ITEMATTR_CFS_HEAL:
+ return sub->cfs_heal;
+ case ITEMATTR_INF_HEAL:
+ return sub->inf_heal;
+ case ITEMATTR_GUARD_SPEC:
+ return sub->guard_spec;
+ case ITEMATTR_REVIVE:
+ return sub->revive;
+ case ITEMATTR_REVIVE_ALL:
+ return sub->revive_all;
+ case ITEMATTR_LEVEL_UP:
+ return sub->level_up;
+ case ITEMATTR_EVOLVE:
+ return sub->evolve;
+ case ITEMATTR_ATK_STAGES:
+ return sub->atk_stages;
+ case ITEMATTR_DEF_STAGES:
+ return sub->def_stages;
+ case ITEMATTR_SPATK_STAGES:
+ return sub->spatk_stages;
+ case ITEMATTR_SPDEF_STAGES:
+ return sub->spdef_stages;
+ case ITEMATTR_SPEED_STAGES:
+ return sub->speed_stages;
+ case ITEMATTR_ACCURACY_STAGES:
+ return sub->accuracy_stages;
+ case ITEMATTR_CRITRATE_STAGES:
+ return sub->critrate_stages;
+ case ITEMATTR_PP_UP:
+ return sub->pp_up;
+ case ITEMATTR_PP_MAX:
+ return sub->pp_max;
+ case ITEMATTR_PP_RESTORE:
+ return sub->pp_restore;
+ case ITEMATTR_PP_RESTORE_ALL:
+ return sub->pp_restore_all;
+ case ITEMATTR_HP_RESTORE:
+ return sub->hp_restore;
+ case ITEMATTR_HP_EV_UP:
+ return sub->hp_ev_up;
+ case ITEMATTR_ATK_EV_UP:
+ return sub->atk_ev_up;
+ case ITEMATTR_DEF_EV_UP:
+ return sub->def_ev_up;
+ case ITEMATTR_SPEED_EV_UP:
+ return sub->speed_ev_up;
+ case ITEMATTR_SPATK_EV_UP:
+ return sub->spatk_ev_up;
+ case ITEMATTR_SPDEF_EV_UP:
+ return sub->spdef_ev_up;
+ case ITEMATTR_FRIENDSHIP_MOD_LO:
+ return sub->friendship_mod_lo;
+ case ITEMATTR_FRIENDSHIP_MOD_MED:
+ return sub->friendship_mod_med;
+ case ITEMATTR_FRIENDSHIP_MOD_HI:
+ return sub->friendship_mod_hi;
+ case ITEMATTR_HP_EV_UP_PARAM:
+ return sub->hp_ev_up_param;
+ case ITEMATTR_ATK_EV_UP_PARAM:
+ return sub->atk_ev_up_param;
+ case ITEMATTR_DEF_EV_UP_PARAM:
+ return sub->def_ev_up_param;
+ case ITEMATTR_SPEED_EV_UP_PARAM:
+ return sub->speed_ev_up_param;
+ case ITEMATTR_SPATK_EV_UP_PARAM:
+ return sub->spatk_ev_up_param;
+ case ITEMATTR_SPDEF_EV_UP_PARAM:
+ return sub->spdef_ev_up_param;
+ case ITEMATTR_HP_RESTORE_PARAM:
+ return sub->hp_restore_param;
+ case ITEMATTR_PP_RESTORE_PARAM:
+ return sub->pp_restore_param;
+ case ITEMATTR_FRIENDSHIP_MOD_LO_PARAM:
+ return sub->friendship_mod_lo_param;
+ case ITEMATTR_FRIENDSHIP_MOD_MED_PARAM:
+ return sub->friendship_mod_med_param;
+ case ITEMATTR_FRIENDSHIP_MOD_HI_PARAM:
+ return sub->friendship_mod_hi_param;
default:
return 0;
}
diff --git a/arm9/src/nutdata.c b/arm9/src/nutdata.c
index a8f916e2..27c600fa 100644
--- a/arm9/src/nutdata.c
+++ b/arm9/src/nutdata.c
@@ -1,7 +1,8 @@
#include "global.h"
#include "filesystem.h"
-#include "itemtool.h"
+#include "nutdata.h"
#include "msgdata.h"
+#include "constants/items.h"
#pragma thumb on
diff --git a/arm9/src/player_data.c b/arm9/src/player_data.c
new file mode 100644
index 00000000..ea5802aa
--- /dev/null
+++ b/arm9/src/player_data.c
@@ -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 PlayerProfile_GetAvatar(struct PlayerData * data)
+{
+ return data->avatar;
+}
+
+void PlayerProfile_SetAvatar(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 PlayerProfile_GetVersion(struct PlayerData * data)
+{
+ return data->version;
+}
+
+void PlayerProfile_SetVersion(struct PlayerData * data, u8 a1)
+{
+ data->version = a1;
+}
+
+u8 PlayerProfile_GetLanguage(struct PlayerData * data)
+{
+ return data->language;
+}
+
+void PlayerProfile_SetLanguage(struct PlayerData * data, u8 language)
+{
+ data->language = language;
+}
+
+void PlayerProfile_SetGameClearFlag(struct PlayerData * data)
+{
+ data->gameCleared = 1;
+}
+
+BOOL PlayerProfile_GetGameClearFlag(struct PlayerData * data)
+{
+ return data->gameCleared;
+}
+
+void PlayerProfile_SetNatDexFlag(struct PlayerData * data)
+{
+ data->nationalDex = 1;
+}
+
+BOOL PlayerProfile_GetNatDexFlag(struct PlayerData * data)
+{
+ return data->nationalDex;
+}
+
+BOOL PlayerProfile_NameAndOTIDMatchPlayer(struct PlayerData * a, struct PlayerData * b)
+{
+ return !StringNotEqualN(a->playerName, b->playerName, OT_NAME_LENGTH) && a->playerId == b->playerId;
+}
diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c
index 797539d2..96808ba6 100644
--- a/arm9/src/save_arrays.c
+++ b/arm9/src/save_arrays.c
@@ -9,11 +9,11 @@
#include "poketch.h"
#include "hall_of_fame.h"
#include "unk_020286F8.h"
+#include "daycare.h"
extern u32 FUN_0202AC20(void);
extern u32 FUN_02034D7C(void);
-extern u32 FUN_02023D64(void);
-extern u32 FUN_02023C40(void);
+extern u32 Sav2_Pokedex_sizeof(void);
extern u32 FUN_020254B8(void);
extern u32 FUN_02024E64(void);
extern u32 FUN_02034D80(void);
@@ -40,8 +40,7 @@ extern u32 FUN_0202C0E0(void);
extern u32 FUN_02013B28(void);
extern void FUN_0202AC28(void *);
extern void FUN_02034D98(void *);
-extern void FUN_02024378(void *);
-extern void FUN_02023C48(void *);
+extern void Sav2_Pokedex_init(void *);
extern void FUN_020254CC(void *);
extern void FUN_02024E6C(void *);
extern void FUN_02034D88(void *);
@@ -80,8 +79,8 @@ const struct SaveChunkHeader UNK_020EE700[] = {
{ 4, 0, (SAVSIZEFN)SavArray_Flags_sizeof, (SAVINITFN)SavArray_Flags_init },
{ 5, 0, (SAVSIZEFN)Sav2_Poketch_sizeof, (SAVINITFN)Sav2_Poketch_init },
{ 6, 0, (SAVSIZEFN)FUN_02034D7C, (SAVINITFN)FUN_02034D98 },
- { 7, 0, (SAVSIZEFN)FUN_02023D64, (SAVINITFN)FUN_02024378 },
- { 8, 0, (SAVSIZEFN)FUN_02023C40, (SAVINITFN)FUN_02023C48 },
+ { 7, 0, (SAVSIZEFN)Sav2_Pokedex_sizeof, (SAVINITFN)Sav2_Pokedex_init },
+ { 8, 0, (SAVSIZEFN)Sav2_DayCare_sizeof, (SAVINITFN)Sav2_DayCare_init },
{ 9, 0, (SAVSIZEFN)FUN_020254B8, (SAVINITFN)FUN_020254CC },
{ 10, 0, (SAVSIZEFN)FUN_02024E64, (SAVINITFN)FUN_02024E6C },
{ 11, 0, (SAVSIZEFN)FUN_02034D80, (SAVINITFN)FUN_02034D88 },
diff --git a/arm9/src/use_item_on_mon.c b/arm9/src/use_item_on_mon.c
new file mode 100644
index 00000000..9e11e4bf
--- /dev/null
+++ b/arm9/src/use_item_on_mon.c
@@ -0,0 +1,719 @@
+#include "global.h"
+#include "pokemon.h"
+#include "heap.h"
+#include "itemtool.h"
+#include "move_data.h"
+#include "party.h"
+#include "use_item_on_mon.h"
+#include "constants/moves.h"
+
+#pragma thumb on
+
+BOOL CanUseItemOnPokemon(struct Pokemon * pokemon, u16 itemId, s32 moveId, u32 heap_id)
+{
+ s32 atkEv;
+ s32 defEv;
+ s32 speedEv;
+ s32 spAtkEv;
+ s32 spDefEv;
+ s32 hpEv;
+ u32 hp;
+ struct ItemData * itemData;
+ u32 status;
+
+ itemData = LoadItemDataOrGfx(itemId, ITEMDATA_DATA, heap_id);
+
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PARTY_USE) != 1)
+ {
+ FreeToHeap(itemData);
+ return FALSE;
+ }
+ status = GetMonData(pokemon, MON_DATA_STATUS, NULL);
+ // slp
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SLP_HEAL) && (status & MON_STATUS_SLP_MASK))
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ // psn
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PSN_HEAL) && (status & (MON_STATUS_PSN_MASK | MON_STATUS_TOX_MASK)))
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ // brn
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_BRN_HEAL) && (status & MON_STATUS_BRN_MASK))
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ // frz
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRZ_HEAL) && (status & MON_STATUS_FRZ_MASK))
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ // prz
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PRZ_HEAL) && (status & MON_STATUS_PRZ_MASK))
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ hp = GetMonData(pokemon, MON_DATA_HP, NULL);
+ if ((GetItemAttr_PreloadedItemData(itemData, ITEMATTR_REVIVE) || GetItemAttr_PreloadedItemData(itemData, ITEMATTR_REVIVE_ALL)) && !GetItemAttr_PreloadedItemData(itemData, ITEMATTR_LEVEL_UP))
+ {
+ if (hp == 0)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ else if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_HP_RESTORE) &&hp != 0 && hp < GetMonData(pokemon, MON_DATA_MAXHP, NULL))
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_LEVEL_UP) && GetMonData(pokemon, MON_DATA_LEVEL, NULL) < MAX_LEVEL)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_EVOLVE) && GetMonEvolution(NULL, pokemon, 3, itemId, NULL) != SPECIES_NONE)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PP_UP) || GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PP_MAX))
+ {
+ if (GetMonData(pokemon, MON_DATA_MOVE1PPUP + moveId, NULL) < 3 && WazaGetMaxPp((u16)GetMonData(pokemon, MON_DATA_MOVE1 + moveId, NULL), 0) >= 5)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PP_RESTORE) && MonMoveCanRestorePP(pokemon, moveId) == TRUE)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PP_RESTORE_ALL))
+ {
+ for (int i = 0; i < MON_MOVES; i++)
+ {
+ if (MonMoveCanRestorePP(pokemon, i) == TRUE)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ }
+ hpEv = (s32)GetMonData(pokemon, MON_DATA_HP_EV, NULL);
+ atkEv = (s32)GetMonData(pokemon, MON_DATA_ATK_EV, NULL);
+ defEv = (s32)GetMonData(pokemon, MON_DATA_DEF_EV, NULL);
+ speedEv = (s32)GetMonData(pokemon, MON_DATA_SPEED_EV, NULL);
+ spAtkEv = (s32)GetMonData(pokemon, MON_DATA_SPATK_EV, NULL);
+ spDefEv = (s32)GetMonData(pokemon, MON_DATA_SPDEF_EV, NULL);
+ if (GetMonData(pokemon, MON_DATA_SPECIES, NULL) != SPECIES_SHEDINJA && GetItemAttr_PreloadedItemData(itemData, ITEMATTR_HP_EV_UP))
+ {
+ s32 dHpEv = (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_HP_EV_UP_PARAM);
+ if (dHpEv > 0)
+ {
+ if (hpEv < MAX_EV && (hpEv + atkEv + defEv + speedEv + spAtkEv + spDefEv) < MAX_EV_SUM)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ else if (dHpEv < 0)
+ {
+ if (hpEv > 0)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ else if (CanItemModFriendship(pokemon, itemData) == TRUE)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_ATK_EV_UP))
+ {
+ s32 dAtkEv = (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_ATK_EV_UP_PARAM);
+ if (dAtkEv > 0)
+ {
+ if (atkEv < MAX_EV && (hpEv + atkEv + defEv + speedEv + spAtkEv + spDefEv) < MAX_EV_SUM)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ else if (dAtkEv < 0)
+ {
+ if (atkEv > 0)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ else if (CanItemModFriendship(pokemon, itemData) == TRUE)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_DEF_EV_UP))
+ {
+ s32 dDefEv = (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_DEF_EV_UP_PARAM);
+ if (dDefEv > 0)
+ {
+ if (defEv < MAX_EV && (hpEv + atkEv + defEv + speedEv + spAtkEv + spDefEv) < MAX_EV_SUM)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ else if (dDefEv < 0)
+ {
+ if (defEv > 0)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ else if (CanItemModFriendship(pokemon, itemData) == TRUE)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SPEED_EV_UP))
+ {
+ s32 dSpeedEv = (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SPEED_EV_UP_PARAM);
+ if (dSpeedEv > 0)
+ {
+ if (speedEv < MAX_EV && (hpEv + atkEv + defEv + speedEv + spAtkEv + spDefEv) < MAX_EV_SUM)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ else if (dSpeedEv < 0)
+ {
+ if (speedEv > 0)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ else if (CanItemModFriendship(pokemon, itemData) == TRUE)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SPATK_EV_UP))
+ {
+ s32 dSpAtkEv = (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SPATK_EV_UP_PARAM);
+ if (dSpAtkEv > 0)
+ {
+ if (spAtkEv < MAX_EV && (hpEv + atkEv + defEv + speedEv + spAtkEv + spDefEv) < MAX_EV_SUM)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ else if (dSpAtkEv < 0)
+ {
+ if (spAtkEv > 0)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ else if (CanItemModFriendship(pokemon, itemData) == TRUE)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SPDEF_EV_UP))
+ {
+
+ s32 dSpDefEv = (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SPDEF_EV_UP_PARAM);
+ if (dSpDefEv > 0)
+ {
+ if (spDefEv < MAX_EV && (hpEv + atkEv + defEv + speedEv + spAtkEv + spDefEv) < MAX_EV_SUM)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ else if (dSpDefEv < 0)
+ {
+ if (spDefEv > 0)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ else if (CanItemModFriendship(pokemon, itemData) == TRUE)
+ {
+ FreeToHeap(itemData);
+ return TRUE;
+ }
+ }
+ }
+ FreeToHeap(itemData);
+ return FALSE;
+}
+
+BOOL CanUseItemOnMonInParty(struct PlayerParty * party, u16 itemId, s32 partyIdx, s32 moveIdx, u32 heap_id)
+{
+ struct Pokemon * pokemon = GetPartyMonByIndex(party, partyIdx);
+ return CanUseItemOnPokemon(pokemon, itemId, moveIdx, heap_id);
+}
+
+BOOL UseItemOnPokemon(struct Pokemon * pokemon, u16 itemId, s32 moveIdx, u16 location, u32 heap_id)
+{
+ s32 stack_data[8];
+#define sp6C stack_data[7]
+#define sp68 stack_data[6]
+#define sp64 stack_data[5]
+#define sp60 stack_data[4]
+#define sp5C stack_data[3]
+#define sp58 stack_data[2]
+#define sp54 stack_data[1]
+#define sp50 stack_data[0]
+ BOOL hadEffect;
+ BOOL effectFound;
+
+ struct ItemData * itemData = LoadItemDataOrGfx(itemId, ITEMDATA_DATA, heap_id);
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PARTY_USE) != 1)
+ {
+ FreeToHeap(itemData);
+ return FALSE;
+ }
+ hadEffect = FALSE;
+ effectFound = FALSE;
+ {
+ sp54 = sp50 = (int)GetMonData(pokemon, MON_DATA_STATUS, NULL);
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SLP_HEAL))
+ {
+ sp54 &= ~MON_STATUS_SLP_MASK;
+ effectFound = TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PSN_HEAL))
+ {
+ sp54 &= ~(MON_STATUS_PSN_MASK | MON_STATUS_TOX_MASK | 0xF00);
+ effectFound = TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_BRN_HEAL))
+ {
+ sp54 &= ~MON_STATUS_BRN_MASK;
+ effectFound = TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRZ_HEAL))
+ {
+ sp54 &= ~MON_STATUS_FRZ_MASK;
+ effectFound = TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PRZ_HEAL))
+ {
+ sp54 &= ~MON_STATUS_PRZ_MASK;
+ effectFound = TRUE;
+ }
+ if (sp50 != sp54)
+ {
+ SetMonData(pokemon, MON_DATA_STATUS, &sp54);
+ hadEffect = TRUE;
+ }
+ }
+ {
+ sp50 = (int)GetMonData(pokemon, MON_DATA_HP, NULL);
+ sp54 = (int)GetMonData(pokemon, MON_DATA_MAXHP, NULL);
+ if ((GetItemAttr_PreloadedItemData(itemData, ITEMATTR_REVIVE) || GetItemAttr_PreloadedItemData(itemData, ITEMATTR_REVIVE_ALL)) && GetItemAttr_PreloadedItemData(itemData, ITEMATTR_LEVEL_UP))
+ {
+ if (sp50 == 0)
+ {
+ RestoreMonHPBy(pokemon, (u32)sp50, (u32)sp54, GetItemAttr_PreloadedItemData(itemData, ITEMATTR_HP_RESTORE_PARAM));
+ hadEffect = TRUE;
+ }
+ effectFound = TRUE;
+ }
+ else if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_HP_RESTORE))
+ {
+ if (sp50 < sp54)
+ {
+ RestoreMonHPBy(pokemon, (u32)sp50, (u32)sp54, GetItemAttr_PreloadedItemData(itemData, ITEMATTR_HP_RESTORE_PARAM));
+ hadEffect = TRUE;
+ }
+ effectFound = TRUE;
+ }
+ sp58 = (s32)GetMonData(pokemon, MON_DATA_LEVEL, NULL);
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_LEVEL_UP))
+ {
+ if (sp58 < MAX_LEVEL)
+ {
+ AddMonData(pokemon, MON_DATA_EXPERIENCE, (int)CalcMonExpToNextLevel(pokemon));
+ CalcMonLevelAndStats(pokemon);
+ if (sp50 == 0)
+ {
+ sp5C = (s32)GetMonData(pokemon, MON_DATA_MAXHP, NULL);
+ RestoreMonHPBy(pokemon, (u32)sp50, (u32)sp5C, (u32)(sp5C - sp54));
+ }
+ hadEffect = TRUE;
+ }
+ effectFound = TRUE;
+ }
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_EVOLVE))
+ effectFound = TRUE;
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PP_UP))
+ {
+ if (BoostMonMovePpUpBy(pokemon, moveIdx, 1) == TRUE)
+ hadEffect = TRUE;
+ effectFound = TRUE;
+ }
+ else if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PP_MAX))
+ {
+ if (BoostMonMovePpUpBy(pokemon, moveIdx, 3) == TRUE)
+ hadEffect = TRUE;
+ effectFound = TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PP_RESTORE))
+ {
+ if (MonMoveRestorePP(pokemon, moveIdx, (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PP_RESTORE_PARAM)) == 1)
+ hadEffect = TRUE;
+ effectFound = TRUE;
+ }
+ else if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PP_RESTORE_ALL))
+ {
+ sp50 = 0;
+ for (; sp50 < MON_MOVES; sp50++)
+ {
+ if (MonMoveRestorePP(pokemon, sp50, (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_PP_RESTORE_PARAM)) == 1)
+ hadEffect = TRUE;
+ }
+ effectFound = TRUE;
+ }
+ {
+ sp50 = (s32)GetMonData(pokemon, MON_DATA_HP_EV, NULL);
+ sp54 = (s32)GetMonData(pokemon, MON_DATA_ATK_EV, NULL);
+ sp58 = (s32)GetMonData(pokemon, MON_DATA_DEF_EV, NULL);
+ sp5C = (s32)GetMonData(pokemon, MON_DATA_SPEED_EV, NULL);
+ sp60 = (s32)GetMonData(pokemon, MON_DATA_SPATK_EV, NULL);
+ sp64 = (s32)GetMonData(pokemon, MON_DATA_SPDEF_EV, NULL);
+ if (GetMonData(pokemon, MON_DATA_SPECIES, NULL) != SPECIES_SHEDINJA &&GetItemAttr_PreloadedItemData(itemData, ITEMATTR_HP_EV_UP))
+ {
+ sp6C = (int)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_HP_EV_UP_PARAM);
+ sp68 = TryModEV(sp50, sp54 + sp58 + sp5C + sp60 + sp64, sp6C);
+ if (sp68 != -1)
+ {
+ sp50 = sp68;
+ SetMonData(pokemon, MON_DATA_HP_EV, &sp50);
+ CalcMonLevelAndStats(pokemon);
+ hadEffect = TRUE;
+ }
+ if (sp6C > 0)
+ effectFound = TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_ATK_EV_UP))
+ {
+ sp6C = (int)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_ATK_EV_UP_PARAM);
+ sp68 = TryModEV(sp54, sp50 + sp58 + sp5C + sp60 + sp64, sp6C);
+ if (sp68 != -1)
+ {
+ sp54 = sp68;
+ SetMonData(pokemon, MON_DATA_ATK_EV, &sp54);
+ CalcMonLevelAndStats(pokemon);
+ hadEffect = TRUE;
+ }
+ if (sp6C > 0)
+ effectFound = TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_DEF_EV_UP))
+ {
+ sp6C = (int)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_DEF_EV_UP_PARAM);
+ sp68 = TryModEV(sp58, sp50 + sp54 + sp5C + sp60 + sp64, sp6C);
+ if (sp68 != -1)
+ {
+ sp58 = sp68;
+ SetMonData(pokemon, MON_DATA_DEF_EV, &sp58);
+ CalcMonLevelAndStats(pokemon);
+ hadEffect = TRUE;
+ }
+ if (sp6C > 0)
+ effectFound = TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SPEED_EV_UP))
+ {
+ sp6C = (int)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SPEED_EV_UP_PARAM);
+ sp68 = TryModEV(sp5C, sp50 + sp54 + sp58 + sp60 + sp64, sp6C);
+ if (sp68 != -1)
+ {
+ sp5C = sp68;
+ SetMonData(pokemon, MON_DATA_SPEED_EV, &sp5C);
+ CalcMonLevelAndStats(pokemon);
+ hadEffect = TRUE;
+ }
+ if (sp6C > 0)
+ effectFound = TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SPATK_EV_UP))
+ {
+ sp6C = (int)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SPATK_EV_UP_PARAM);
+ sp68 = TryModEV(sp60, sp50 + sp54 + sp58 + sp5C + sp64, sp6C);
+ if (sp68 != -1)
+ {
+ sp60 = sp68;
+ SetMonData(pokemon, MON_DATA_SPATK_EV, &sp60);
+ CalcMonLevelAndStats(pokemon);
+ hadEffect = TRUE;
+ }
+ if (sp6C > 0)
+ effectFound = TRUE;
+ }
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SPDEF_EV_UP))
+ {
+ sp6C = (int)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_SPDEF_EV_UP_PARAM);
+ sp68 = TryModEV(sp64, sp50 + sp54 + sp58 + sp5C + sp60, sp6C);
+ if (sp68 != -1)
+ {
+ sp64 = sp68;
+ SetMonData(pokemon, MON_DATA_SPDEF_EV, &sp64);
+ CalcMonLevelAndStats(pokemon);
+ hadEffect = TRUE;
+ }
+ if (sp6C > 0)
+ effectFound = TRUE;
+ }
+ }
+ if (hadEffect == FALSE && effectFound == TRUE)
+ {
+ FreeToHeap(itemData);
+ return FALSE;
+ }
+ {
+ sp50 = (s32)GetMonData(pokemon, MON_DATA_FRIENDSHIP, NULL);
+ if (sp50 < 100)
+ {
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRIENDSHIP_MOD_LO))
+ {
+ DoItemFriendshipMod(pokemon, sp50, (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRIENDSHIP_MOD_LO_PARAM), location, heap_id);
+ FreeToHeap(itemData);
+ return hadEffect;
+ }
+ }
+ else if (sp50 >= 100 && sp50 < 200)
+ {
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRIENDSHIP_MOD_MED))
+ {
+ DoItemFriendshipMod(pokemon, sp50, (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRIENDSHIP_MOD_MED_PARAM), location, heap_id);
+ FreeToHeap(itemData);
+ return hadEffect;
+ }
+ }
+ else if (sp50 >= 200 && sp50 <= 255)
+ {
+ if (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRIENDSHIP_MOD_HI))
+ {
+ DoItemFriendshipMod(pokemon, sp50, (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRIENDSHIP_MOD_HI_PARAM), location, heap_id);
+ FreeToHeap(itemData);
+ return hadEffect;
+ }
+ }
+ }
+ FreeToHeap(itemData);
+ return hadEffect;
+}
+#undef sp6C
+#undef sp68
+#undef sp64
+#undef sp60
+#undef sp5C
+#undef sp58
+#undef sp54
+#undef sp50
+
+BOOL UseItemOnMonInParty(struct PlayerParty * party, u16 itemId, s32 partyIdx, s32 moveIdx, u16 location, u32 heap_id)
+{
+ struct Pokemon * pokemon = GetPartyMonByIndex(party, partyIdx);
+ return UseItemOnPokemon(pokemon, itemId, moveIdx, location, heap_id);
+}
+
+u8 MonMoveCanRestorePP(struct Pokemon * pokemon, s32 moveIdx)
+{
+ u16 move_id = (u16)GetMonData(pokemon, MON_DATA_MOVE1 + moveIdx, NULL);
+ if (move_id == MOVE_NONE)
+ return FALSE;
+ u8 pp = (u8)GetMonData(pokemon, MON_DATA_MOVE1PP + moveIdx, NULL);
+ u8 ppUp = (u8)GetMonData(pokemon, MON_DATA_MOVE1PPUP + moveIdx, NULL);
+ return (u8)(pp < WazaGetMaxPp(move_id, ppUp));
+}
+
+BOOL MonMoveRestorePP(struct Pokemon * pokemon, s32 moveIdx, s32 ppRestore)
+{
+ u16 move_id;
+ u8 pp;
+ u8 maxPp;
+ s32 ppAttr;
+ s32 ppUpAttr;
+
+ move_id = (u16)GetMonData(pokemon, MON_DATA_MOVE1 + moveIdx, NULL);
+ if (move_id == MOVE_NONE)
+ return FALSE;
+ ppAttr = MON_DATA_MOVE1PP + moveIdx;
+ pp = (u8)GetMonData(pokemon, ppAttr, NULL);
+ ppUpAttr = MON_DATA_MOVE1PPUP + moveIdx;
+ maxPp = WazaGetMaxPp(move_id, (u8)GetMonData(pokemon, ppUpAttr, NULL));
+ if (pp < maxPp)
+ {
+ if (ppRestore == PP_RESTORE_ALL)
+ pp = maxPp;
+ else
+ {
+ pp += ppRestore;
+ if (pp > maxPp)
+ pp = maxPp;
+ }
+ SetMonData(pokemon, ppAttr, &pp);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+BOOL BoostMonMovePpUpBy(struct Pokemon * pokemon, s32 moveIdx, u32 nPpUp)
+{
+ u16 move;
+ u8 pp, ppUp, maxPp, newMaxPp;
+ s32 ppUpAttr;
+ s32 ppAttr;
+
+ ppUpAttr = MON_DATA_MOVE1PPUP + moveIdx;
+ ppUp = (u8)GetMonData(pokemon, ppUpAttr, NULL);
+ if (ppUp == 3)
+ return FALSE;
+ move = (u16)GetMonData(pokemon, MON_DATA_MOVE1 + moveIdx, NULL);
+ if (WazaGetMaxPp(move, 0) < 5)
+ return FALSE;
+ ppAttr = MON_DATA_MOVE1PP + moveIdx;
+ pp = (u8)GetMonData(pokemon, ppAttr, NULL);
+ maxPp = WazaGetMaxPp(move, ppUp);
+ if (ppUp + nPpUp > 3)
+ ppUp = 3;
+ else
+ ppUp = (u8)(ppUp + nPpUp);
+ newMaxPp = WazaGetMaxPp(move, ppUp);
+ pp = (u8)(pp + newMaxPp - maxPp);
+ SetMonData(pokemon, ppUpAttr, &ppUp);
+ SetMonData(pokemon, ppAttr, &pp);
+ return TRUE;
+}
+
+void RestoreMonHPBy(struct Pokemon * pokemon, u32 hp, u32 maxHp, u32 restoration)
+{
+ if (maxHp == 1)
+ restoration = 1;
+ else if (restoration == HP_RESTORE_ALL)
+ restoration = maxHp;
+ else if (restoration == HP_RESTORE_HALF)
+ restoration = maxHp / 2;
+ else if (restoration == HP_RESTORE_QTR)
+ restoration = maxHp / 4;
+ if (hp + restoration > maxHp)
+ hp = maxHp;
+ else
+ hp = hp + restoration;
+ SetMonData(pokemon, MON_DATA_HP, &hp);
+}
+
+s32 TryModEV(s32 ev, s32 evSum, s32 by)
+{
+ if (ev == 0 && by < 0)
+ return -1;
+ if (ev >= MAX_EV && by > 0)
+ return -1;
+ if (ev + evSum >= MAX_EV_SUM && by > 0)
+ return -1;
+ ev += by;
+ if (ev > MAX_EV)
+ ev = MAX_EV;
+ else if (ev < 0)
+ ev = 0;
+ if (ev + evSum > MAX_EV_SUM)
+ ev = MAX_EV_SUM - evSum;
+ return ev;
+}
+
+BOOL CanItemModFriendship(struct Pokemon * pokemon, struct ItemData * itemData)
+{
+ s32 friendship = (s32)GetMonData(pokemon, MON_DATA_FRIENDSHIP, NULL);
+ if (friendship >= 255)
+ return FALSE;
+ if (friendship < 100)
+ {
+ return (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRIENDSHIP_MOD_LO) && (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRIENDSHIP_MOD_LO_PARAM) > 0);
+ }
+ if (friendship >= 100 && friendship < 200)
+ {
+ return (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRIENDSHIP_MOD_MED) && (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRIENDSHIP_MOD_MED_PARAM) > 0);
+ }
+ if (friendship >= 200 && friendship < 255)
+ {
+ return (GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRIENDSHIP_MOD_HI) && (s32)GetItemAttr_PreloadedItemData(itemData, ITEMATTR_FRIENDSHIP_MOD_HI_PARAM) > 0);
+ }
+ return FALSE;
+}
+
+BOOL DoItemFriendshipMod(struct Pokemon * pokemon, s32 friendship, s32 mod, u16 location, u32 heap_id)
+{
+ if (friendship == 255 && mod > 0)
+ return FALSE;
+ if (friendship == 0 && mod < 0)
+ return FALSE;
+ if (mod > 0)
+ {
+ if (GetItemAttr((u16)GetMonData(pokemon, MON_DATA_HELD_ITEM, NULL), ITEMATTR_HOLD_EFFECT, heap_id) == HOLD_EFFECT_FRIENDSHIP_UP)
+ mod = mod * 150 / 100;
+ if (GetMonData(pokemon, MON_DATA_POKEBALL, NULL) == ITEM_LUXURY_BALL)
+ mod++;
+ if (location == GetMonData(pokemon, MON_DATA_EGG_MET_LOCATION, NULL))
+ mod++;
+ }
+ mod += friendship;
+ if (mod > 255)
+ mod = 255;
+ if (mod < 0)
+ mod = 0;
+ SetMonData(pokemon, MON_DATA_FRIENDSHIP, &mod);
+ return TRUE;
+}
+
+void HealParty(struct PlayerParty * party)
+{
+ u32 sp8;
+ s32 nmons;
+ s32 i;
+ s32 j;
+
+ nmons = GetPartyCount(party);
+ for (i = 0; i < nmons; i++)
+ {
+ struct Pokemon * pokemon = GetPartyMonByIndex(party, i);
+ if (GetMonData(pokemon, MON_DATA_SPECIES_EXISTS, NULL))
+ {
+ sp8 = GetMonData(pokemon, MON_DATA_MAXHP, NULL);
+ SetMonData(pokemon, MON_DATA_HP, &sp8);
+
+ sp8 = 0;
+ SetMonData(pokemon, MON_DATA_STATUS, &sp8);
+
+ for (j = 0; j < MON_MOVES; j++)
+ {
+ if (MonMoveCanRestorePP(pokemon, j) == 1)
+ MonMoveRestorePP(pokemon, j, PP_RESTORE_ALL);
+ }
+ }
+ }
+}