More syncing with pokeheartgold

This commit is contained in:
Eduardo Quezada 2025-12-25 10:18:15 -03:00
parent b208876983
commit 8d23c1a447
46 changed files with 517 additions and 518 deletions

View File

@ -625,7 +625,7 @@ _020431D4:
add r7, r0, #0x0
add r0, r4, #0x0
add r1, r7, #0x0
bl CopyPokemonToPokemon
bl Pokemon_Copy
add r0, r7, #0x0
mov r1, #0x90
add r2, r5, #0x0
@ -696,7 +696,7 @@ sub_02043274: ; 0x02043274
mov r1, #0x0
bl BufferPlayersName
add r0, r7, #0x4
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
ldr r0, [r5, #0x4]
mov r1, #0x1
@ -742,7 +742,7 @@ sub_020432C8: ; 0x020432C8
mov r1, #0x0
bl BufferPlayersName
add r0, r7, #0x4
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
ldr r0, [r5, #0x4]
mov r1, #0x1

View File

@ -550,7 +550,7 @@ sub_02042288: ; 0x02042288
add r4, r1, #0x0
bl SaveArray_Party_Get
bl GetFirstNonEggInParty
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
add r0, r4, #0x0
mov r1, #0x0

View File

@ -133,10 +133,10 @@ sub_0202BF7C: ; 0x0202BF7C
mov r1, #0xec
mul r1, r2
add r1, r3, r1
ldr r3, _0202BF8C ; =CopyBoxPokemonToPokemon
ldr r3, _0202BF8C ; =BoxPokemon_CopyToPokemon
bx r3
nop
_0202BF8C: .word CopyBoxPokemonToPokemon
_0202BF8C: .word BoxPokemon_CopyToPokemon
thumb_func_start sub_0202BF90
sub_0202BF90: ; 0x0202BF90

View File

@ -1442,12 +1442,12 @@ sub_02038144: ; 0x02038144
mov r0, #0x20
bl Heap_Alloc
str r0, [r5, #0x38]
bl sub_020690C4
bl Pokemon_Size
add r1, r0, #0x0
mov r0, #0x20
bl Heap_Alloc
str r0, [r5, #0x3c]
bl sub_020690C4
bl Pokemon_Size
add r1, r0, #0x0
mov r0, #0x20
bl Heap_Alloc
@ -1561,10 +1561,10 @@ _02038288:
ldr r0, [r4, #0x3c]
str r0, [r4, #0x50]
ldr r0, [r4, #0x40]
bl sub_020690E4
bl Pokemon_GetBoxMon
str r0, [r4, #0x48]
ldr r0, [r4, #0x44]
bl sub_020690E4
bl Pokemon_GetBoxMon
str r0, [r4, #0x4c]
ldr r0, [r5, #0xc]
bl Save_PlayerData_GetOptionsAddr
@ -1687,7 +1687,7 @@ _02038386:
bl Party_GetMonByIndex
add r1, r0, #0x0
ldr r0, [r4, #0x44]
bl CopyPokemonToPokemon
bl Pokemon_Copy
ldr r0, [r4, #0x60]
bl sub_0206C92C
mov r0, #0x1a

View File

@ -663,7 +663,7 @@ _02047C40:
add r1, r4, #0x0
bl Party_GetMonByIndex
add r1, r5, #0x0
bl CopyPokemonToPokemon
bl Pokemon_Copy
add r0, r5, #0x0
mov r1, #0xa0
mov r2, #0x0
@ -858,7 +858,7 @@ _02047DEE:
sub r1, r1, #0x1
bl Party_GetMonByIndex
ldr r1, [sp, #0x8]
bl CopyPokemonToPokemon
bl Pokemon_Copy
ldr r1, [sp, #0x8]
add r0, r5, #0x0
mov r2, #0x0

View File

@ -958,7 +958,7 @@ _020515BA:
ldrb r1, [r1, #0x0]
ldr r0, [r4, #0x50]
bl Party_GetMonByIndex
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
ldr r0, [r4, #0x28]
mov r1, #0x1
@ -1467,7 +1467,7 @@ sub_020519F0: ; 0x020519F0
bl SaveArray_Party_Get
str r0, [sp, #0x0]
ldr r4, [r7, #0x4c]
bl sub_020690C4
bl Pokemon_Size
add r6, r0, #0x0
lsl r0, r6, #0x1
add r0, r6, r0
@ -1549,7 +1549,7 @@ _02051A8C:
sub_02051A90: ; 0x02051A90
push {r4, lr}
add r4, r0, #0x0
bl sub_020690C4
bl Pokemon_Size
lsl r1, r0, #0x1
ldr r2, [r4, #0x48]
add r0, r0, r1
@ -1607,7 +1607,7 @@ _02051AEC:
sub_02051AF0: ; 0x02051AF0
push {r4-r6, lr}
add r5, r0, #0x0
bl sub_020690C4
bl Pokemon_Size
add r6, r0, #0x0
ldr r0, [r5, #0x50]
mov r1, #0x3
@ -1630,7 +1630,7 @@ _02051B04:
sub_02051B1C: ; 0x02051B1C
push {r4-r6, lr}
add r6, r0, #0x0
bl sub_020690C4
bl Pokemon_Size
add r4, r0, #0x0
add r0, r6, #0x0
add r0, #0x84
@ -1682,7 +1682,7 @@ sub_02051B68: ; 0x02051B68
mov r3, #0x4
bl NewMsgDataFromNarc
str r0, [sp, #0x18]
bl sub_020690C4
bl Pokemon_Size
str r0, [sp, #0x1c]
mov r0, #0x9
str r0, [sp, #0x0]
@ -2037,7 +2037,7 @@ _02051E52:
thumb_func_start sub_02051E54
sub_02051E54: ; 0x02051E54
push {r3, lr}
bl sub_020690C4
bl Pokemon_Size
lsl r1, r0, #0x1
add r0, r0, r1
add r0, r0, #0x4

View File

@ -639,7 +639,7 @@ _0206CBE4:
ldrh r0, [r0, #0x0]
bl sub_02005578
ldr r0, [r4, #0x28]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
ldr r0, [r4, #0xc]
mov r1, #0x0
@ -1046,13 +1046,13 @@ _0206CF7E:
ldr r0, [r4, #0x28]
bl Pokemon_CalcLevelAndStats
ldr r0, [r4, #0x28]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
ldr r0, [r4, #0xc]
mov r1, #0x0
bl BufferBoxMonNickname
ldr r0, [r4, #0x28]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
ldr r0, [r4, #0xc]
mov r1, #0x1
@ -1104,7 +1104,7 @@ _0206CFFA:
mov r1, #0x16
bl GameStats_AddSpecial
ldr r0, [r4, #0x28]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r1, r0, #0x0
ldr r0, [r4, #0x54]
bl Save_Poketch_PokemonHistoryAddMon
@ -1132,7 +1132,7 @@ _0206D06E:
ldr r0, [r4, #0x28]
add r1, #0x68
add r2, sp, #0xc
bl sub_02069818
bl Pokemon_TryLevelUpMove
cmp r0, #0x0
beq _0206D08E
ldr r1, _0206D1DC ; =0x0000FFFE
@ -1164,7 +1164,7 @@ _0206D098:
pop {r3-r4, pc}
_0206D0AC:
ldr r0, [r4, #0x28]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
ldr r0, [r4, #0xc]
mov r1, #0x0
@ -1191,7 +1191,7 @@ _0206D0AC:
pop {r3-r4, pc}
_0206D0E8:
ldr r0, [r4, #0x28]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
ldr r0, [r4, #0xc]
mov r1, #0x0
@ -1222,7 +1222,7 @@ _0206D0E8:
pop {r3-r4, pc}
_0206D12C:
ldr r0, [r4, #0x28]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
ldr r0, [r4, #0xc]
mov r1, #0x0
@ -1561,7 +1561,7 @@ _0206D3EE:
pop {r3-r4, pc}
_0206D406:
ldr r0, [r4, #0x28]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
ldr r0, [r4, #0xc]
mov r1, #0x0
@ -1641,7 +1641,7 @@ _0206D480:
pop {r3-r4, pc}
_0206D4A6:
ldr r0, [r4, #0x28]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
ldr r0, [r4, #0xc]
mov r1, #0x0
@ -1697,7 +1697,7 @@ _0206D4F8:
pop {r3-r4, pc}
_0206D51E:
ldr r0, [r4, #0x28]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
ldr r0, [r4, #0xc]
mov r1, #0x0
@ -1744,7 +1744,7 @@ _0206D560:
ldrh r1, [r1, #0x0]
ldrb r2, [r2, #0x0]
ldr r0, [r4, #0x28]
bl MonSetMoveInSlot
bl Pokemon_SetMoveInSlot
add r0, r4, #0x0
mov r1, #0x14
add r0, #0x66
@ -1962,7 +1962,7 @@ _0206D748:
cmp r0, #0x0
bne _0206D806
ldr r0, [r4, #0x28]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
ldr r0, [r4, #0xc]
mov r1, #0x0
@ -2096,7 +2096,7 @@ _0206D86E:
add r5, r0, #0x0
ldr r0, [r4, #0x28]
add r1, r5, #0x0
bl CopyPokemonToPokemon
bl Pokemon_Copy
mov r0, #0x49
lsl r0, r0, #0x2
str r0, [sp, #0x0]
@ -2206,7 +2206,7 @@ _0206D8EA:
mov r1, #0x16
bl GameStats_AddSpecial
add r0, r5, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r1, r0, #0x0
ldr r0, [r4, #0x54]
bl Save_Poketch_PokemonHistoryAddMon
@ -2576,7 +2576,7 @@ sub_0206DC80: ; 0x0206DC80
add r5, r0, #0x0
ldr r0, [r4, #0x28]
add r1, r5, #0x0
bl CopyPokemonToPokemon
bl Pokemon_Copy
add r2, r4, #0x0
add r0, r5, #0x0
mov r1, #0x5

View File

@ -5044,7 +5044,7 @@ _02071B34:
bl NewString_ReadMsgData
add r5, r0, #0x0
add r0, r6, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@ -5567,7 +5567,7 @@ _02071FA0:
ldr r2, [r5, r2]
bl ReadMsgDataIntoString
add r0, r6, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@ -5600,7 +5600,7 @@ _02071FF2:
ldr r2, [r5, r2]
bl ReadMsgDataIntoString
add r0, r6, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@ -5995,7 +5995,7 @@ sub_0207230C: ; 0x0207230C
ldr r2, [r5, r2]
bl ReadMsgDataIntoString
add r0, r7, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4

View File

@ -590,7 +590,7 @@ _0207297E:
bl NewString_ReadMsgData
add r4, r0, #0x0
add r0, r6, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@ -651,7 +651,7 @@ sub_02072A00: ; 0x02072A00
bl NewString_ReadMsgData
add r6, r0, #0x0
add r0, r7, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4

View File

@ -208,7 +208,7 @@ sub_02073EEC: ; 0x02073EEC
mov r1, #0x51
bl ReadMsgDataIntoString
add r0, r6, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@ -254,7 +254,7 @@ _02073F66:
ldr r2, [r5, r2]
bl ReadMsgDataIntoString
add r0, r6, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4

View File

@ -366,7 +366,7 @@ sub_020757F4: ; 0x020757F4
ldr r0, [r0, #0x0]
add r5, r2, #0x0
bl Party_GetMonByIndex
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@ -1281,7 +1281,7 @@ _02075FCE:
add r7, r0, #0x0
_02075FDA:
ldr r0, [sp, #0x8]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@ -1581,7 +1581,7 @@ _02076212:
bl NewString_ReadMsgData
add r6, r0, #0x0
add r0, r5, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@ -1872,7 +1872,7 @@ sub_0207640C: ; 0x0207640C
bl NewString_ReadMsgData
add r7, r0, #0x0
add r0, r4, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@ -2063,7 +2063,7 @@ _02076680:
add r1, r2, #0x0
add r1, #0x34
add r2, #0x26
bl sub_02069818
bl Pokemon_TryLevelUpMove
cmp r0, #0x0
beq _020766B2
ldr r1, _0207687C ; =0x0000FFFE
@ -2083,7 +2083,7 @@ _020766B2:
b _02076868
_020766BA:
add r0, r5, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@ -2130,7 +2130,7 @@ _020766BA:
pop {r3-r5, pc}
_02076724:
add r0, r5, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@ -2309,7 +2309,7 @@ sub_02076890: ; 0x02076890
ldr r0, [r0, #0x0]
bl Party_GetMonByIndex
add r5, r0, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@ -2593,7 +2593,7 @@ sub_02076AF8: ; 0x02076AF8
bl sub_02076AA0
add r5, r0, #0x0
add r0, r6, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4
@ -2777,7 +2777,7 @@ sub_02076C94: ; 0x02076C94
ldr r0, [r0, #0x0]
bl Party_GetMonByIndex
add r5, r0, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x6a
lsl r0, r0, #0x4

View File

@ -1989,7 +1989,7 @@ _02077D88:
mov r2, #0x5
bl Pokemon_InitWithParams
add r0, r5, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x5a
lsl r0, r0, #0x2
@ -2169,7 +2169,7 @@ _02077F1A:
mov r2, #0x1
bl Pokemon_InitWithParams
add r0, r6, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
mov r0, #0x5a
lsl r0, r0, #0x2

View File

@ -1536,7 +1536,7 @@ _0207A896:
add r4, r0, #0x0
add r0, r6, #0x0
add r1, r4, #0x0
bl CopyBoxPokemonToPokemon
bl BoxPokemon_CopyToPokemon
b _0207A8C0
_0207A8BA:
bl sub_0207B628
@ -1825,7 +1825,7 @@ sub_0207AAE0: ; 0x0207AAE0
add r4, r0, #0x0
add r0, r6, #0x0
add r1, r4, #0x0
bl CopyBoxPokemonToPokemon
bl BoxPokemon_CopyToPokemon
add r0, r5, #0x0
add r1, r4, #0x0
add r2, r7, #0x0
@ -1851,7 +1851,7 @@ sub_0207AB0C: ; 0x0207AB0C
bl Pokemon_GetData
strh r0, [r5, #0xc]
add r0, r6, #0x0
bl sub_020690E4
bl Pokemon_GetBoxMon
ldr r2, _0207AEAC ; =0x00000674
add r4, r0, #0x0
ldr r0, [r7, r2]
@ -3113,7 +3113,7 @@ _0207B522:
mvn r0, r0
pop {r3-r7, pc}
_0207B528:
bl sub_020690C4
bl Pokemon_Size
mov r1, #0x93
lsl r1, r1, #0x2
ldr r1, [r5, r1]
@ -3217,7 +3217,7 @@ _0207B5E6:
mvn r0, r0
pop {r3-r7, pc}
_0207B5EC:
bl sub_020690C8
bl BoxPokemon_Size
mov r1, #0x93
lsl r1, r1, #0x2
ldr r1, [r5, r1]
@ -3260,7 +3260,7 @@ sub_0207B628: ; 0x0207B628
beq _0207B658
b _0207B666
_0207B640:
bl sub_020690C4
bl Pokemon_Size
ldrb r1, [r4, #0x14]
ldr r2, [r4, #0x0]
mul r0, r1
@ -3272,7 +3272,7 @@ _0207B64E:
bl Party_GetMonByIndex
pop {r4, pc}
_0207B658:
bl sub_020690C8
bl BoxPokemon_Size
ldrb r1, [r4, #0x14]
ldr r2, [r4, #0x0]
mul r0, r1
@ -3706,7 +3706,7 @@ sub_0207B9C0: ; 0x0207B9C0
lsl r2, r2, #0x18
lsr r1, r1, #0x1c
lsr r2, r2, #0x1c
bl sub_020698E8
bl BoxPokemon_SwapMoveSlots
b _0207B9F4
_0207B9E6:
ldrb r2, [r4, r1]
@ -3714,7 +3714,7 @@ _0207B9E6:
lsl r2, r2, #0x18
lsr r1, r1, #0x1c
lsr r2, r2, #0x1c
bl sub_020698E0
bl Pokemon_SwapMoveSlots
_0207B9F4:
ldr r0, _0207BA70 ; =0x0000068D
mov r1, #0xa1

View File

@ -1540,7 +1540,7 @@ sub_0207E190: ; 0x0207E190
add r4, r0, #0x0
add r0, r6, #0x0
add r1, r4, #0x0
bl CopyBoxPokemonToPokemon
bl BoxPokemon_CopyToPokemon
mov r0, #0x91
lsl r0, r0, #0x2
ldr r0, [r5, r0]

View File

@ -930,7 +930,7 @@ _02081304:
bl Chatot_Copy
ldr r0, [r6, #0x8]
ldr r1, [r4, #0x0]
bl CopyPokemonToPokemon
bl Pokemon_Copy
mov r0, #0x8
mov r1, #0x14
bl String_New
@ -2685,7 +2685,7 @@ sub_0208206C: ; 0x0208206C
bl sub_020832E4
lsl r0, r0, #0x2
ldr r0, [r5, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
add r0, r4, #0x0
add r1, r6, #0x0

View File

@ -586,7 +586,7 @@ sub_020867EC: ; 0x020867EC
bl String_New
add r4, r0, #0x0
ldr r0, [sp, #0x10]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0x0
add r0, r5, #0x0
mov r1, #0x0

View File

@ -4780,29 +4780,29 @@
.extern sub_02069010
.extern sub_02069038
.extern sub_020690AC
.extern sub_020690C4
.extern sub_020690C8
.extern GetMonUnownLetter
.extern GetBoxMonUnownLetter
.extern sub_020690E4
.extern sub_020690E8
.extern Pokemon_Size
.extern BoxPokemon_Size
.extern Pokemon_GetForm
.extern BoxPokemon_GetForm
.extern Pokemon_GetBoxMon
.extern Pokemon_TryLevelUp
.extern GetMonEvolution
.extern ReadFromPersonalPmsNarc
.extern GetEggSpecies
.extern sub_02069698
.extern sub_02069708
.extern MonSetMoveInSlot
.extern sub_02069818
.extern sub_020698E0
.extern sub_020698E8
.extern sub_020699A4
.extern CopyBoxPokemonToPokemon
.extern Pokemon_TryAppendMove
.extern Pokemon_ForceAppendMove
.extern Pokemon_SetMoveInSlot
.extern Pokemon_TryLevelUpMove
.extern Pokemon_SwapMoveSlots
.extern BoxPokemon_SwapMoveSlots
.extern Pokemon_ClearMoveSlot
.extern BoxPokemon_CopyToPokemon
.extern Party_GetMaxLevel
.extern SpeciesToSinnohDexNo
.extern SinnohDexNoToSpecies
.extern CopyPokemonToPokemon
.extern CopyPokemonToBoxPokemon
.extern CopyBoxPokemonToBoxPokemon
.extern Pokemon_Copy
.extern Pokemon_CopyToBoxPokemon
.extern BoxPokemon_Copy
.extern MonGetFlavorPreference
.extern GetFlavorPreferenceFromPID
.extern Species_LoadLearnsetTable
@ -4815,12 +4815,12 @@
.extern Pokemon_UpdateArceusForm
.extern BoxMon_UpdateArceusForm
.extern GetArceusTypeByHeldItemEffect
.extern LoadLevelUpLearnset_HandleAlternateForm
.extern Species_LoadLevelUpLearnset
.extern sub_02069FB0
.extern sub_0206A014
.extern sub_0206A094
.extern sub_0206A13C
.extern sub_0206A16C
.extern Species_CanLearnTMHM
.extern sub_0206A1C4
.extern sub_0206A23C
.extern MaskOfFlagNo

View File

@ -108,7 +108,7 @@ ov05_021EC4F0: ; 0x021EC4F0
add r2, sp, #0xc
bl Pokemon_GetData
add r0, r4, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
bl ov05_021EC4DC
cmp r0, #0
beq _021EC544
@ -121,7 +121,7 @@ ov05_021EC4F0: ; 0x021EC4F0
_021EC544:
ldr r1, [sp, #4]
add r0, r4, #0
bl CopyBoxPokemonToBoxPokemon
bl BoxPokemon_Copy
add r0, r5, #0
mov r1, #0
bl DaycareMon_SetSteps
@ -217,7 +217,7 @@ ov05_021EC604: ; 0x021EC604
add r7, sp, #4
_021EC616:
add r0, r5, #0
bl sub_020690E8
bl Pokemon_TryLevelUp
cmp r0, #0
beq _021EC658
mov r0, #0
@ -225,7 +225,7 @@ _021EC616:
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
bl sub_02069818
bl Pokemon_TryLevelUpMove
cmp r0, #0
beq _021EC64E
_021EC632:
@ -234,12 +234,12 @@ _021EC632:
bne _021EC640
ldrh r1, [r7]
add r0, r5, #0
bl sub_02069708
bl Pokemon_ForceAppendMove
_021EC640:
add r0, r5, #0
add r1, r4, #0
add r2, r6, #0
bl sub_02069818
bl Pokemon_TryLevelUpMove
cmp r0, #0
bne _021EC632
_021EC64E:
@ -284,7 +284,7 @@ ov05_021EC668: ; 0x021EC668
lsr r7, r0, #0x10
add r0, r5, #0
add r1, r4, #0
bl CopyBoxPokemonToPokemon
bl BoxPokemon_CopyToPokemon
add r0, r4, #0
mov r1, #0xa0
mov r2, #0
@ -361,11 +361,11 @@ ov05_021EC744: ; 0x021EC744
add r5, r1, #0
bl Pokemon_New
add r7, r0, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r4, r0, #0
add r0, r6, #0
add r1, r4, #0
bl CopyPokemonToBoxPokemon
bl Pokemon_CopyToBoxPokemon
add r0, r4, #0
mov r1, #8
mov r2, #0
@ -979,7 +979,7 @@ _021ECC10:
lsl r1, r1, #0x10
add r0, r7, #0
lsr r1, r1, #0x10
bl sub_02069698
bl Pokemon_TryAppendMove
ldr r1, _021ECD60 ; =0x0000FFFF
cmp r0, r1
bne _021ECC46
@ -988,7 +988,7 @@ _021ECC10:
ldr r1, [r4, r1]
lsl r1, r1, #0x10
lsr r1, r1, #0x10
bl sub_02069708
bl Pokemon_ForceAppendMove
b _021ECC46
_021ECC3C:
add r0, r0, #1
@ -1026,14 +1026,14 @@ _021ECC60:
ldr r0, [sp, #0x18]
ldr r1, [sp, #0xc]
lsr r2, r2, #0x18
bl sub_0206A16C
bl Species_CanLearnTMHM
cmp r0, #0
beq _021ECCA2
ldr r1, [r4, r6]
add r0, r7, #0
lsl r1, r1, #0x10
lsr r1, r1, #0x10
bl sub_02069698
bl Pokemon_TryAppendMove
ldr r1, _021ECD60 ; =0x0000FFFF
cmp r0, r1
bne _021ECCA2
@ -1041,7 +1041,7 @@ _021ECC60:
add r0, r7, #0
lsl r1, r1, #0x10
lsr r1, r1, #0x10
bl sub_02069708
bl Pokemon_ForceAppendMove
_021ECCA2:
add r0, r5, #1
lsl r0, r0, #0x10
@ -1116,7 +1116,7 @@ _021ECD10:
lsl r1, r3, #0x10
add r0, r7, #0
lsr r1, r1, #0x10
bl sub_02069698
bl Pokemon_TryAppendMove
ldr r1, _021ECD60 ; =0x0000FFFF
cmp r0, r1
bne _021ECD4A
@ -1124,7 +1124,7 @@ _021ECD10:
add r0, r7, #0
lsl r1, r1, #0x10
lsr r1, r1, #0x10
bl sub_02069708
bl Pokemon_ForceAppendMove
b _021ECD4A
_021ECD3E:
add r0, r2, #1
@ -1247,14 +1247,14 @@ _021ECE20:
mov r1, #0x56
add r0, r4, #0
lsl r1, r1, #2
bl sub_02069698
bl Pokemon_TryAppendMove
ldr r1, _021ECE40 ; =0x0000FFFF
cmp r0, r1
bne _021ECE3A
mov r1, #0x56
add r0, r4, #0
lsl r1, r1, #2
bl sub_02069708
bl Pokemon_ForceAppendMove
_021ECE3A:
add sp, #8
pop {r3, r4, r5, pc}
@ -2199,7 +2199,7 @@ ov05_021ED5C4: ; 0x021ED5C4
add r5, r2, #0
bl Party_GetMonByIndex
add r4, r0, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
add r0, r5, #0
mov r1, #0
@ -2596,7 +2596,7 @@ _021ED7CE:
bl Pokemon_SetData
add r0, r6, #0
add r1, r4, #0
bl CopyPokemonToPokemon
bl Pokemon_Copy
ldr r0, [sp, #0x10]
bl String_Delete
add r0, r6, #0

View File

@ -22218,7 +22218,7 @@ _022445A6:
ldr r0, [sp, #4]
bl Party_GetMonByIndex
add r1, r4, #0
bl CopyPokemonToPokemon
bl Pokemon_Copy
add r0, r4, #0
mov r1, #0xa0
mov r2, #0
@ -31096,15 +31096,15 @@ ov06_0224891C: ; 0x0224891C
bl CreateInGameTradeMon
ldr r1, [sp, #0x20]
add r0, r7, #0
bl CopyPokemonToPokemon
bl Pokemon_Copy
ldr r0, [r5, #4]
ldr r1, [sp, #0x24]
bl CopyPokemonToPokemon
bl Pokemon_Copy
ldr r0, [sp, #0x20]
bl sub_020690E4
bl Pokemon_GetBoxMon
str r0, [r4]
ldr r0, [sp, #0x24]
bl sub_020690E4
bl Pokemon_GetBoxMon
str r0, [r4, #4]
ldr r0, [r5, #8]
str r0, [r4, #8]

View File

@ -4503,7 +4503,7 @@ _022142BE:
bl NewString_ReadMsgData
str r0, [sp, #0x20]
ldr r0, [sp, #0x18]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [sp, #0x14]
mov r1, #0

View File

@ -3495,7 +3495,7 @@ _02213A30:
bl NewString_ReadMsgData
add r6, r0, #0
ldr r0, [r4]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _02213B74 ; =0x00001FAC
mov r1, #0
@ -3530,7 +3530,7 @@ _02213A82:
bl NewString_ReadMsgData
add r6, r0, #0
ldr r0, [r4]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _02213B74 ; =0x00001FAC
mov r1, #0
@ -3579,7 +3579,7 @@ _02213AD4:
mul r0, r4
add r0, r5, r0
ldr r0, [r0, #4]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _02213B74 ; =0x00001FAC
mov r1, #0
@ -3611,7 +3611,7 @@ _02213B24:
bl NewString_ReadMsgData
add r7, r0, #0
ldr r0, [r4, r6]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _02213B74 ; =0x00001FAC
mov r1, #0
@ -4083,7 +4083,7 @@ ov09_02213E84: ; 0x02213E84
str r0, [sp, #0x18]
ldr r0, [sp, #0x24]
ldr r0, [r7, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _02214020 ; =0x00001FAC
mov r1, #0
@ -6967,7 +6967,7 @@ ov09_02215784: ; 0x02215784
bl NewString_ReadMsgData
add r6, r0, #0
ldr r0, [r5, r7]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _022158DC ; =0x00001FAC
mov r1, #0
@ -8428,7 +8428,7 @@ _02216444:
bl NewString_ReadMsgData
add r4, r0, #0
add r0, r7, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _022166CC ; =0x00001FAC
mov r1, #0
@ -8453,7 +8453,7 @@ _0221648E:
bl NewString_ReadMsgData
add r4, r0, #0
add r0, r7, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _022166CC ; =0x00001FAC
mov r1, #0
@ -8512,7 +8512,7 @@ _02216512:
bl NewString_ReadMsgData
add r4, r0, #0
add r0, r7, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _022166CC ; =0x00001FAC
mov r1, #0
@ -8535,7 +8535,7 @@ _0221654A:
bl NewString_ReadMsgData
add r4, r0, #0
add r0, r7, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _022166CC ; =0x00001FAC
mov r1, #0
@ -8558,7 +8558,7 @@ _02216580:
bl NewString_ReadMsgData
add r4, r0, #0
add r0, r7, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _022166CC ; =0x00001FAC
mov r1, #0
@ -8581,7 +8581,7 @@ _022165B6:
bl NewString_ReadMsgData
add r4, r0, #0
add r0, r7, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _022166CC ; =0x00001FAC
mov r1, #0
@ -8604,7 +8604,7 @@ _022165EC:
bl NewString_ReadMsgData
add r4, r0, #0
add r0, r7, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _022166CC ; =0x00001FAC
mov r1, #0
@ -8627,7 +8627,7 @@ _02216622:
bl NewString_ReadMsgData
add r4, r0, #0
add r0, r7, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _022166CC ; =0x00001FAC
mov r1, #0
@ -8650,7 +8650,7 @@ _02216658:
bl NewString_ReadMsgData
add r4, r0, #0
add r0, r7, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _022166CC ; =0x00001FAC
mov r1, #0
@ -8671,7 +8671,7 @@ _0221668E:
bl NewString_ReadMsgData
add r4, r0, #0
add r0, r7, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _022166CC ; =0x00001FAC
mov r1, #0
@ -8713,7 +8713,7 @@ ov09_022166D0: ; 0x022166D0
bl NewString_ReadMsgData
add r4, r0, #0
add r0, r6, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, _0221672C ; =0x00001FAC
mov r1, #0
@ -13347,7 +13347,7 @@ _02218C68:
bl NewString_ReadMsgData
add r4, r0, #0
add r0, r6, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r5, #0x14]
mov r1, #0

View File

@ -2227,7 +2227,7 @@ ov11_02230F88: ; 0x02230F88
cmp r0, #0
beq _02230FA4
add r0, r1, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r4, #0x98
add r1, r0, #0
ldr r0, [r4]

View File

@ -17356,7 +17356,7 @@ _0223AACA:
pop {r4, r5, r6, r7, pc}
_0223AADE:
add r0, r6, #0
bl sub_020690E8
bl Pokemon_TryLevelUp
cmp r0, #0
beq _0223AB0E
ldr r1, [r4, #4]
@ -17825,7 +17825,7 @@ _0223AEC0:
add r0, r6, #0
add r1, #0x38
add r2, sp, #0x44
bl sub_02069818
bl Pokemon_TryLevelUpMove
cmp r0, #0
beq _0223AEE6
ldr r1, _0223AF74 ; =0x0000FFFE
@ -18244,7 +18244,7 @@ _0223B1F6:
add r0, r6, #0
lsr r1, r1, #0x10
lsr r2, r2, #0x18
bl MonSetMoveInSlot
bl Pokemon_SetMoveInSlot
ldr r1, [r4, #4]
ldr r0, _0223B2D8 ; =0x0000219C
add r2, r1, r7
@ -19554,7 +19554,7 @@ _0223BD3E:
cmp r5, #4
blt _0223BD3E
add r0, r6, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [sp, #0x1c]
ldr r1, [sp, #0x14]
@ -21803,7 +21803,7 @@ _0223CF52:
add r6, r0, #0
_0223CF5C:
ldr r0, [sp, #0x18]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [sp, #0x24]
mov r1, #0

View File

@ -9471,7 +9471,7 @@ _022521DC:
bl Party_GetMonByIndex
add r1, r0, #0
ldr r0, [sp, #0x1c]
bl CopyPokemonToPokemon
bl Pokemon_Copy
ldr r0, [r4, #4]
ldrb r1, [r5, #0x1c]
add r0, r0, r6
@ -9511,7 +9511,7 @@ _02252232:
bl Party_GetMonByIndex
add r1, r0, #0
ldr r0, [sp, #0x20]
bl CopyPokemonToPokemon
bl Pokemon_Copy
ldr r0, [r4, #4]
ldrb r1, [r5, #0x1c]
add r0, r0, r7

View File

@ -1199,7 +1199,7 @@ ov11_022574F0: ; 0x022574F0
ldrb r2, [r2]
ldr r0, [r5, #0xc]
bl ov11_02230014
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
add r0, r4, #0
mov r1, #0

View File

@ -2980,7 +2980,7 @@ _02259D2A:
add r1, r6, #0
bl ov11_02230014
str r0, [sp, #0x20]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [sp, #0x1c]
mov r1, #0

View File

@ -14730,7 +14730,7 @@ _02234AC4:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #0
@ -14742,7 +14742,7 @@ _02234AE2:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #0
@ -14754,7 +14754,7 @@ _02234AFC:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #0
@ -14795,7 +14795,7 @@ _02234B50:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #0
@ -14804,7 +14804,7 @@ _02234B50:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #1
@ -14816,7 +14816,7 @@ _02234B80:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #0
@ -14832,7 +14832,7 @@ _02234BA4:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #0
@ -14852,7 +14852,7 @@ _02234BD0:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #0
@ -14873,7 +14873,7 @@ _02234BFE:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #0
@ -14882,7 +14882,7 @@ _02234BFE:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #1
@ -14894,7 +14894,7 @@ _02234C2E:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #0
@ -14910,7 +14910,7 @@ _02234C52:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #0
@ -14930,7 +14930,7 @@ _02234C7E:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #0
@ -14939,7 +14939,7 @@ _02234C7E:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #1
@ -14955,7 +14955,7 @@ _02234CAE:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #1
@ -14971,7 +14971,7 @@ _02234CD2:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #1
@ -15002,7 +15002,7 @@ _02234D16:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #1
@ -15021,7 +15021,7 @@ _02234D3A:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #1
@ -15040,7 +15040,7 @@ _02234D64:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #1
@ -15073,7 +15073,7 @@ _02234DAC:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #1
@ -15094,7 +15094,7 @@ _02234DD6:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #1
@ -15115,7 +15115,7 @@ _02234E04:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #1
@ -15163,7 +15163,7 @@ _02234E7E:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
mov r1, #0
@ -15202,7 +15202,7 @@ _02234ECC:
ldr r1, [r4, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x54]
add r1, r5, #1
@ -25469,7 +25469,7 @@ _02239A82:
ldr r1, [r5, #0xc]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r5, #0x48]
mov r1, #1
@ -34574,7 +34574,7 @@ _0223E09E:
ldr r1, [r4, #0x14]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r4, #0x9c
add r2, r0, #0
ldr r0, [r4]
@ -34634,7 +34634,7 @@ _0223E0F4:
ldr r1, [r4, #0x14]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r4, #0x9c
add r2, r0, #0
ldr r0, [r4]
@ -34647,7 +34647,7 @@ _0223E138:
ldr r1, [r4, #0x14]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
add r0, r4, #0
add r0, #0x9c
@ -34713,7 +34713,7 @@ _0223E16A:
ldr r1, [r4, #0x14]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r4, #0x9c
add r2, r0, #0
ldr r0, [r4]
@ -43460,7 +43460,7 @@ _02242552:
ldr r1, [r4, #0x10]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r4, #0xc8
add r2, r0, #0
ldr r0, [r4]
@ -43500,7 +43500,7 @@ _02242596:
ldr r1, [r4, #0x10]
lsl r0, r0, #2
ldr r0, [r1, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r4, #0xc8
add r2, r0, #0
ldr r0, [r4]

View File

@ -7790,7 +7790,7 @@ _021DB464:
ov14_021DB470: ; 0x021DB470
push {r4, lr}
add r4, r0, #0
bl sub_020690C8
bl BoxPokemon_Size
add r2, r0, #0
mov r1, #0x1e
mov r0, #9
@ -8635,7 +8635,7 @@ ov14_021DBA5C: ; 0x021DBA5C
bl ov14_021DC3CC
cmp r0, #0
bne _021DBA98
bl sub_020690C8
bl BoxPokemon_Size
add r2, r0, #0
ldr r0, [r5]
ldr r1, [r4]
@ -8651,7 +8651,7 @@ ov14_021DBA5C: ; 0x021DBA5C
mov r0, #0
b _021DBAB6
_021DBA98:
bl sub_020690C4
bl Pokemon_Size
add r2, r0, #0
ldr r0, [r5]
ldr r1, [r4]
@ -8698,7 +8698,7 @@ ov14_021DBAE0: ; 0x021DBAE0
str r1, [sp, #4]
bl ov14_021DC3E0
str r0, [sp, #0x14]
bl sub_020690C8
bl BoxPokemon_Size
str r0, [sp, #0x10]
mov r0, #0
str r0, [sp, #0xc]
@ -8885,7 +8885,7 @@ _021DBC56:
lsl r1, r1, #4
ldr r0, [r4]
ldr r1, [r5, r1]
bl CopyBoxPokemonToPokemon
bl BoxPokemon_CopyToPokemon
mov r1, #0x49
lsl r1, r1, #2
ldr r0, [r5, r1]
@ -8928,7 +8928,7 @@ ov14_021DBCA0: ; 0x021DBCA0
str r0, [sp, #8]
ldrb r0, [r6, #9]
str r0, [sp, #0xc]
bl sub_020690C8
bl BoxPokemon_Size
str r0, [sp, #4]
ldr r0, [sp]
mov r5, #0
@ -8996,7 +8996,7 @@ ov14_021DBD34: ; 0x021DBD34
str r1, [sp]
add r5, r0, #0
add r4, #0x14
bl sub_020690C4
bl Pokemon_Size
add r6, r0, #0
ldr r0, [sp]
add r2, r6, #0
@ -9038,7 +9038,7 @@ _021DBD8E:
lsl r1, r1, #4
ldr r1, [r5, r1]
add r0, r7, r6
bl CopyBoxPokemonToPokemon
bl BoxPokemon_CopyToPokemon
b _021DBDB0
_021DBDA2:
mov r1, #0x1a
@ -9367,7 +9367,7 @@ _021DC034:
lsl r1, r1, #4
ldr r0, [sp]
ldr r1, [r5, r1]
bl CopyBoxPokemonToPokemon
bl BoxPokemon_CopyToPokemon
mov r0, #0x1a
lsl r0, r0, #4
ldr r0, [r5, r0]

View File

@ -14507,7 +14507,7 @@ ov17_021DE0F4: ; 0x021DE0F4
add r1, r6, #0
bl sub_02027B78
add r0, r6, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
add r0, r7, #0
mov r1, #4

View File

@ -4466,7 +4466,7 @@ ov62_0222F80C: ; 0x0222F80C
add r1, #0x64
ldr r0, [r0, #4]
ldr r1, [r5, r1]
bl CopyPokemonToPokemon
bl Pokemon_Copy
pop {r3, r4, r5, r6, r7, pc}
_0222F832:
ldr r1, [r5]
@ -4487,7 +4487,7 @@ _0222F83E:
ldr r1, _0222F86C ; =0x00000428
add r0, r7, #0
ldr r1, [r5, r1]
bl CopyPokemonToPokemon
bl Pokemon_Copy
pop {r3, r4, r5, r6, r7, pc}
_0222F85C:
ldr r1, [r5]

View File

@ -3309,7 +3309,7 @@ ov67_021D8F00: ; 0x021D8F00
mov r3, #0x20
bl Pokemon_InitWithGenderNatureLetter
add r0, r6, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r5, #0x54]
ldr r1, [sp, #0xc]

View File

@ -2354,7 +2354,7 @@ HOF_MonGetUIStrings: ; 0x0222E8FC
sub sp, #8
add r4, r0, #0
ldr r0, [r4, #0x24]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x14]
mov r1, #0
@ -2499,7 +2499,7 @@ _0222E9FC:
pop {r3, r4, r5, pc}
_0222EA2E:
ldr r0, [r4, #0x24]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r4, #0x14]
mov r1, #0

View File

@ -651,7 +651,7 @@ _0222DB70:
add r0, r5, #0
add r1, r4, #0
bl Party_GetMonByIndex
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
add r0, r7, #0
add r1, r4, r6
@ -4876,7 +4876,7 @@ ov71_0222FDD8: ; 0x0222FDD8
ldr r0, [r4, r0]
ldr r1, [r1]
bl Party_GetMonByIndex
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
mov r0, #0x5f
lsl r0, r0, #2
@ -5695,7 +5695,7 @@ ov71_022304AC: ; 0x022304AC
ldr r0, [r4, r0]
ldr r1, [r1]
bl Party_GetMonByIndex
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
mov r0, #0x5f
lsl r0, r0, #2
@ -5709,7 +5709,7 @@ ov71_022304AC: ; 0x022304AC
ldr r0, [r4, r0]
sub r1, r1, #6
bl Party_GetMonByIndex
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
mov r0, #0x5f
lsl r0, r0, #2
@ -6122,7 +6122,7 @@ ov71_02230810: ; 0x02230810
ldr r0, [r4, r0]
sub r1, r1, #6
bl Party_GetMonByIndex
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
mov r0, #0x5f
lsl r0, r0, #2
@ -6329,12 +6329,12 @@ ov71_022309E8: ; 0x022309E8
add r1, r6, #0
bl Party_GetMonByIndex
add r1, r7, #0
bl CopyPokemonToPokemon
bl Pokemon_Copy
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
bl Party_GetMonByIndex
add r1, r4, #0
bl CopyPokemonToPokemon
bl Pokemon_Copy
add r0, r4, #0
mov r1, #0x4c
mov r2, #0
@ -6362,10 +6362,10 @@ _02230A40:
bl Pokemon_RemoveCapsule
ldr r1, [r5, #0x3c]
add r0, r7, #0
bl CopyPokemonToPokemon
bl Pokemon_Copy
ldr r1, [r5, #0x40]
add r0, r4, #0
bl CopyPokemonToPokemon
bl Pokemon_Copy
bl sub_02031190
mov r1, #1
eor r0, r1
@ -6390,13 +6390,13 @@ _02230A98:
bl Party_GetMonByIndex
add r1, r0, #0
add r0, r4, #0
bl CopyPokemonToPokemon
bl Pokemon_Copy
ldr r0, [sp, #8]
ldr r1, [sp, #0xc]
bl Party_GetMonByIndex
add r1, r0, #0
add r0, r7, #0
bl CopyPokemonToPokemon
bl Pokemon_Copy
ldr r0, [r5, #0x1c]
add r1, r4, #0
bl ov71_02230AE4

View File

@ -1830,7 +1830,7 @@ _021D836C: ; jump table
_021D8382:
ldr r0, [r4]
ldr r0, [r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
add r0, r4, #0
add r0, #0xfc
@ -1850,7 +1850,7 @@ _021D839A:
_021D83AE:
ldr r0, [r4]
ldr r0, [r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
add r0, r4, #0
add r0, #0xfc
@ -1861,7 +1861,7 @@ _021D83AE:
_021D83C6:
ldr r0, [r4]
ldr r0, [r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
add r0, r4, #0
add r0, #0xfc
@ -1880,7 +1880,7 @@ _021D83C6:
_021D83F2:
ldr r0, [r4]
ldr r0, [r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
add r0, r4, #0
add r0, #0xfc
@ -1899,7 +1899,7 @@ _021D83F2:
_021D841E:
ldr r0, [r4]
ldr r0, [r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
add r0, r4, #0
add r0, #0xfc
@ -1918,7 +1918,7 @@ _021D841E:
_021D844A:
ldr r0, [r4]
ldr r0, [r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
add r0, r4, #0
add r0, #0xfc
@ -1946,7 +1946,7 @@ _021D8476:
_021D848A:
ldr r0, [r4]
ldr r0, [r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
add r0, r4, #0
add r0, #0xfc

View File

@ -3839,7 +3839,7 @@ ov80_0222F394: ; 0x0222F394
bl ov80_0222F690
add r0, r4, #0
add r0, #0xd4
bl sub_020690E4
bl Pokemon_GetBoxMon
str r0, [sp]
mov r0, #7
lsl r0, r0, #6
@ -4783,7 +4783,7 @@ ov80_0222FB3C: ; 0x0222FB3C
ldr r0, [sp, #0x24]
add r6, r1, #0
add r4, r2, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
mov r0, #0xb3
lsl r0, r0, #4
@ -5167,7 +5167,7 @@ ov80_0222FE60: ; 0x0222FE60
add r0, #0xd4
add r0, r4, r0
add r0, r0, r5
bl sub_020690E4
bl Pokemon_GetBoxMon
str r0, [sp]
mov r0, #0xb9
lsl r0, r0, #2
@ -11042,7 +11042,7 @@ _02232E4A:
ldr r0, [r0, #8]
bl Party_GetMonByIndex
str r0, [sp, #0x24]
bl sub_020690E4
bl Pokemon_GetBoxMon
ldr r1, _02232F84 ; =0x00001004
lsl r6, r4, #2
ldr r1, [r5, r1]
@ -11231,7 +11231,7 @@ _02232FDC:
add r0, r5, #0
add r1, r4, #0
bl Party_GetMonByIndex
bl sub_020690E4
bl Pokemon_GetBoxMon
pop {r3, r4, r5, r6, r7, pc}
_02232FEA:
add r0, r7, #0
@ -11455,7 +11455,7 @@ ov80_0223311C: ; 0x0223311C
sub r0, #0xd4
mul r0, r1
add r0, r2, r0
bl sub_020690E4
bl Pokemon_GetBoxMon
mov r1, #5
mov r2, #0
add r5, r0, #0
@ -13583,7 +13583,7 @@ _022342B0:
add r0, #0xbc
ldr r0, [r0]
add r1, r5, #0
bl CopyBoxPokemonToPokemon
bl BoxPokemon_CopyToPokemon
_022342BC:
ldr r0, [r4]
ldr r0, [r0, #0x1c]
@ -15250,7 +15250,7 @@ _02234F38:
ldr r0, [r0]
bl sub_0202ABEC
add r0, r5, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
mov r0, #0xb3
lsl r0, r0, #4
@ -15296,7 +15296,7 @@ _02234FA4:
ldr r0, [r0]
bl sub_0202ABEC
add r0, r5, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
mov r0, #0xb3
lsl r0, r0, #4
@ -16076,7 +16076,7 @@ ov80_02235534: ; 0x02235534
ldr r0, [r0, #0xc]
bl PCStorage_GetMonByIndexPair
add r1, r4, #0
bl CopyBoxPokemonToPokemon
bl BoxPokemon_CopyToPokemon
add r2, r5, #0
ldr r0, [r5]
add r2, #0xb8
@ -16205,7 +16205,7 @@ _02235664:
add r2, sp, #4
bl PCStorage_FindFirstEmptySlot
add r0, r4, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r5]
ldr r1, [sp, #0x20]
@ -16284,7 +16284,7 @@ _02235706:
add r2, sp, #4
bl PCStorage_FindFirstEmptySlot
add r0, r4, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r5]
ldr r1, [sp, #0x20]
@ -17224,7 +17224,7 @@ _02235E2C: ; jump table
_02235E42:
add r0, r4, #0
add r0, #0xd4
bl sub_020690E4
bl Pokemon_GetBoxMon
add r1, r4, #0
add r1, #0x90
str r0, [r1]
@ -17258,7 +17258,7 @@ _02235E42:
_02235E88:
add r0, r4, #0
add r0, #0xd4
bl sub_020690E4
bl Pokemon_GetBoxMon
add r1, r4, #0
add r1, #0x94
str r0, [r1]
@ -17292,7 +17292,7 @@ _02235E88:
_02235ECE:
add r0, r4, #0
add r0, #0xd4
bl sub_020690E4
bl Pokemon_GetBoxMon
add r1, r4, #0
add r1, #0x94
str r0, [r1]
@ -17305,7 +17305,7 @@ _02235ECE:
mov r0, #1
lsl r0, r0, #0xc
ldr r0, [r4, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r1, r4, #0
add r1, #0x90
str r0, [r1]
@ -17338,7 +17338,7 @@ _02235F26:
mov r0, #1
lsl r0, r0, #0xc
ldr r0, [r4, r0]
bl sub_020690E4
bl Pokemon_GetBoxMon
add r1, r4, #0
add r1, #0x90
str r0, [r1]
@ -17351,7 +17351,7 @@ _02235F26:
sub r1, #0xd4
mul r1, r0
add r0, r2, r1
bl sub_020690E4
bl Pokemon_GetBoxMon
add r1, r4, #0
add r1, #0x94
str r0, [r1]
@ -17720,7 +17720,7 @@ ov80_02236218: ; 0x02236218
bl Party_GetMonByIndex
add r1, r0, #0
add r0, r4, #0
bl CopyPokemonToPokemon
bl Pokemon_Copy
add sp, #8
pop {r3, r4, r5, pc}
_02236248:
@ -17742,7 +17742,7 @@ _02236248:
add r2, sp, #0
bl PCStorage_FindFirstEmptySlot
add r0, r4, #0
bl sub_020690E4
bl Pokemon_GetBoxMon
add r2, r0, #0
ldr r0, [r5]
ldr r1, [sp, #4]

View File

@ -15370,7 +15370,7 @@ ov83_02234E6C: ; 0x02234E6C
bl sub_02022528
str r0, [sp]
add r0, sp, #8
bl sub_020690E4
bl Pokemon_GetBoxMon
add r6, r0, #0
mov r4, #0
add r5, r7, #0

View File

@ -27,7 +27,7 @@ u16 *MoveRelearner_GetEligibleLevelUpMoves(Pokemon *mon, enum HeapID heapID) {
u16 *tableFromFile = Heap_Alloc(heapID, LEVEL_UP_LEARNSET_MAX * 2);
u16 *returnTable = Heap_Alloc(heapID, LEVEL_UP_LEARNSET_MAX * 2);
LoadLevelUpLearnset_HandleAlternateForm(species, form, tableFromFile);
Species_LoadLevelUpLearnset(species, form, tableFromFile);
for (u8 i = 0, j, k = 0; i < LEVEL_UP_LEARNSET_MAX; i++) {
if (tableFromFile[i] == LEVEL_UP_LEARNSET_END) {

View File

@ -238,7 +238,7 @@ static inline void SetSeenUnownLetter(struct Pokedex *pokedex, u32 species, s32
void Pokedex_SetMonSeenForm(struct Pokedex *pokedex, u16 species, struct Pokemon *pokemon) {
if (species == SPECIES_UNOWN) {
SetSeenUnownLetter(pokedex, species, GetMonUnownLetter(pokemon));
SetSeenUnownLetter(pokedex, species, Pokemon_GetForm(pokemon));
} else if (species == SPECIES_BURMY) {
Pokedex_SetSeenBurmyOrWormadamForm(pokedex, species, (s32)Pokemon_GetData(pokemon, MON_DATA_FORM, NULL));
} else if (species == SPECIES_WORMADAM) {

View File

@ -34,24 +34,24 @@ u8 SpeciesData_GetGenderFromPersonality(SpeciesData *speciesData, u16 species, u
u8 BoxPokemon_IsShiny(BoxPokemon *boxMon);
u8 Personality_IsShiny(u32 otID, u32 personality);
void BoxPokemon_SetDefaultMoves(BoxPokemon *boxMon);
u32 sub_020696A8(BoxPokemon *boxMon, u16 move);
void sub_02069718(BoxPokemon *boxMon, u16 move);
void BoxMonSetMoveInSlot(BoxPokemon *boxMon, u16 move, u8 slot);
void sub_020698E8(BoxPokemon *boxMon, int slot1, int slot2);
u32 BoxPokemon_TryAppendMove(BoxPokemon *boxMon, u16 move);
void BoxPokemon_ForceAppendMove(BoxPokemon *boxMon, u16 move);
void BoxPokemon_SetMoveInSlot(BoxPokemon *boxMon, u16 move, u8 slot);
void BoxPokemon_SwapMoveSlots(BoxPokemon *boxMon, int slot1, int slot2);
s8 BoxMonGetFlavorPreference(BoxPokemon *boxMon, int flavor);
s8 GetFlavorPreferenceFromPID(u32 personality, int flavor);
u8 Party_MaskMonsWithPokerus(struct Party *party_p, u8 mask);
BOOL BoxMon_HasPokerus(BoxPokemon *boxMon);
BOOL BoxMon_IsImmuneToPokerus(BoxPokemon *boxMon);
void BoxMon_UpdateArceusForm(BoxPokemon *boxMon);
void LoadLevelUpLearnset_HandleAlternateForm(int species, int form, u16 *levelUpLearnset);
void Species_LoadLevelUpLearnset(int species, int form, u16 *levelUpLearnset);
void sub_0206A054(BoxPokemon *boxMon, PlayerProfile *a1, u32 pokeball, u32 a3, u32 encounterType, enum HeapID heapID);
BOOL MonHasMove(Pokemon *pokemon, u16 move);
BOOL sub_0206A144(BoxPokemon *boxMon, u32 a1);
BOOL sub_0206A16C(u16 species, int form, u32 a2);
BOOL Pokemon_HasMove(Pokemon *mon, u16 move);
BOOL BoxPokemon_CanLearnTMHM(BoxPokemon *boxMon, u32 tmHM);
BOOL Species_CanLearnTMHM(u16 species, int form, u32 a2);
void sub_0206A1CC(BoxPokemon *boxMon);
u32 MaskOfFlagNo(int flagno);
void SpeciesData_LoadSpecies(int species, SpeciesData *personal);
void SpeciesData_LoadSpecies(int species, SpeciesData *speciesData);
void LoadMonEvolutionTable(u16 species, struct Evolution *dest);
int ResolveMonForm(int species, int form);
@ -61,7 +61,7 @@ u16 MonEncryptionLCRNG(u32 *seed);
u16 CalcMonChecksum(u16 *datap, u32 size);
PokemonDataBlock *GetSubstruct(BoxPokemon *boxMon, u32 personality, u8 which_struct);
void SpeciesData_LoadForm(int species, int form, SpeciesData *baseStats);
u8 GetBoxMonUnownLetter(BoxPokemon *boxMon);
u8 BoxPokemon_GetForm(BoxPokemon *boxMon);
#define ENCRY_ARGS_PARTY(mon) (u16 *)&(mon)->party, sizeof((mon)->party), (mon)->box.personality
#define ENCRY_ARGS_BOX(boxMon) (u16 *)&(boxMon)->dataBlocks, sizeof((boxMon)->dataBlocks), (boxMon)->checksum
@ -2074,8 +2074,8 @@ u32 Personality_GenerateShiny(u32 otID) {
return rndLow | (rndHigh << 16);
}
void sub_02068B68(struct SomeDrawPokemonStruct *spC, Pokemon *pokemon, u8 sp10) {
sub_02068B70(spC, &pokemon->box, sp10);
void sub_02068B68(struct SomeDrawPokemonStruct *spC, Pokemon *mon, u8 sp10) {
sub_02068B70(spC, &mon->box, sp10);
}
void sub_02068B70(struct SomeDrawPokemonStruct *spC, BoxPokemon *boxMon, u8 sp10) {
@ -2201,8 +2201,8 @@ void sub_02068C00(struct SomeDrawPokemonStruct *spC, int species, u8 gender, u8
}
}
u8 sub_02068E14(Pokemon *pokemon, u32 a1) {
return sub_02068E1C(&pokemon->box, a1);
u8 sub_02068E14(Pokemon *mon, u32 a1) {
return sub_02068E1C(&mon->box, a1);
}
u8 sub_02068E1C(BoxPokemon *boxMon, u32 a1) {
@ -2357,48 +2357,48 @@ void sub_020690AC(struct SomeDrawPokemonStruct *a0, u32 a1) {
a0->unkC = 0;
}
u32 sub_020690C4(void) {
return sizeof(struct Pokemon);
u32 Pokemon_Size(void) {
return sizeof(Pokemon);
}
u32 sub_020690C8(void) {
return sizeof(struct BoxPokemon);
u32 BoxPokemon_Size(void) {
return sizeof(BoxPokemon);
}
u8 GetMonUnownLetter(Pokemon *pokemon) // not just used for unown
{
return GetBoxMonUnownLetter(&pokemon->box);
u8 Pokemon_GetForm(Pokemon *mon) {
return BoxPokemon_GetForm(&mon->box);
}
u8 GetBoxMonUnownLetter(BoxPokemon *boxMon) {
return (u8)BoxPokemon_GetData(boxMon, MON_DATA_FORM, NULL);
u8 BoxPokemon_GetForm(BoxPokemon *boxMon) {
return BoxPokemon_GetData(boxMon, MON_DATA_FORM, NULL);
}
BoxPokemon *sub_020690E4(Pokemon *pokemon) {
return &pokemon->box;
BoxPokemon *Pokemon_GetBoxMon(Pokemon *mon) {
return &mon->box;
}
BOOL sub_020690E8(Pokemon *pokemon) {
u16 species = (u16)Pokemon_GetData(pokemon, MON_DATA_SPECIES, NULL);
u8 level = (u8)(Pokemon_GetData(pokemon, MON_DATA_LEVEL, NULL) + 1);
u32 exp = Pokemon_GetData(pokemon, MON_DATA_EXPERIENCE, NULL);
u32 growthrate = (u32)Species_GetValue(species, SPECIES_DATA_EXP_RATE);
u32 maxexp = ExpRate_GetExpAtLevel((int)growthrate, 100);
if (exp > maxexp) {
exp = maxexp;
Pokemon_SetData(pokemon, MON_DATA_EXPERIENCE, &exp);
BOOL Pokemon_TryLevelUp(Pokemon *mon) {
u16 species = Pokemon_GetData(mon, MON_DATA_SPECIES, NULL);
u8 nextLevel = Pokemon_GetData(mon, MON_DATA_LEVEL, NULL) + 1;
u32 exp = Pokemon_GetData(mon, MON_DATA_EXPERIENCE, NULL);
int expRate = Species_GetValue(species, SPECIES_DATA_EXP_RATE);
u32 maxExp = ExpRate_GetExpAtLevel(expRate, MAX_LEVEL);
if (exp > maxExp) {
exp = maxExp;
Pokemon_SetData(mon, MON_DATA_EXPERIENCE, &exp);
}
if (level > 100) {
if (nextLevel > MAX_LEVEL) {
return FALSE;
}
if (exp >= ExpRate_GetExpAtLevel((int)growthrate, level)) {
Pokemon_SetData(pokemon, MON_DATA_LEVEL, &level);
if (exp >= ExpRate_GetExpAtLevel(expRate, nextLevel)) {
Pokemon_SetData(mon, MON_DATA_LEVEL, &nextLevel);
return TRUE;
}
return FALSE;
}
u16 GetMonEvolution(struct Party *party, Pokemon *pokemon, u32 context, u32 usedItem, u32 *method_ret) {
u16 GetMonEvolution(struct Party *party, Pokemon *mon, u32 context, u32 usedItem, u32 *method_ret) {
u16 target = SPECIES_NONE;
u32 sp40;
u16 species;
@ -2412,10 +2412,10 @@ u16 GetMonEvolution(struct Party *party, Pokemon *pokemon, u32 context, u32 used
struct Evolution *evoTable;
u8 r1;
species = (u16)Pokemon_GetData(pokemon, MON_DATA_SPECIES, NULL);
heldItem = (u16)Pokemon_GetData(pokemon, MON_DATA_HELD_ITEM, NULL);
personality = Pokemon_GetData(pokemon, MON_DATA_PERSONALITY, NULL);
beauty = (u8)Pokemon_GetData(pokemon, MON_DATA_BEAUTY, NULL);
species = (u16)Pokemon_GetData(mon, MON_DATA_SPECIES, NULL);
heldItem = (u16)Pokemon_GetData(mon, MON_DATA_HELD_ITEM, NULL);
personality = Pokemon_GetData(mon, MON_DATA_PERSONALITY, NULL);
beauty = (u8)Pokemon_GetData(mon, MON_DATA_BEAUTY, NULL);
pid_hi = (u16)((personality & 0xFFFF0000) >> 16);
r1 = (u8)GetItemAttr(heldItem, 1, HEAP_ID_DEFAULT);
if (species != SPECIES_KADABRA && r1 == HOLD_EFFECT_NO_EVOLVE && context != 3) {
@ -2428,8 +2428,8 @@ u16 GetMonEvolution(struct Party *party, Pokemon *pokemon, u32 context, u32 used
LoadMonEvolutionTable(species, evoTable);
switch (context) {
case 0:
level = (u8)Pokemon_GetData(pokemon, MON_DATA_LEVEL, NULL);
friendship = (u16)Pokemon_GetData(pokemon, MON_DATA_FRIENDSHIP, NULL);
level = (u8)Pokemon_GetData(mon, MON_DATA_LEVEL, NULL);
friendship = (u16)Pokemon_GetData(mon, MON_DATA_FRIENDSHIP, NULL);
for (i = 0; i < 7; i++) {
switch (evoTable[i].method) {
case EVO_NONE:
@ -2465,19 +2465,19 @@ u16 GetMonEvolution(struct Party *party, Pokemon *pokemon, u32 context, u32 used
case EVO_STONE:
break;
case EVO_LEVEL_ATK_GT_DEF:
if (evoTable[i].param <= level && Pokemon_GetData(pokemon, MON_DATA_ATK, NULL) > Pokemon_GetData(pokemon, MON_DATA_DEF, NULL)) {
if (evoTable[i].param <= level && Pokemon_GetData(mon, MON_DATA_ATK, NULL) > Pokemon_GetData(mon, MON_DATA_DEF, NULL)) {
target = evoTable[i].target;
*method_ret = EVO_LEVEL_ATK_GT_DEF;
}
break;
case EVO_LEVEL_ATK_EQ_DEF:
if (evoTable[i].param <= level && Pokemon_GetData(pokemon, MON_DATA_ATK, NULL) == Pokemon_GetData(pokemon, MON_DATA_DEF, NULL)) {
if (evoTable[i].param <= level && Pokemon_GetData(mon, MON_DATA_ATK, NULL) == Pokemon_GetData(mon, MON_DATA_DEF, NULL)) {
target = evoTable[i].target;
*method_ret = EVO_LEVEL_ATK_EQ_DEF;
}
break;
case EVO_LEVEL_ATK_LT_DEF:
if (evoTable[i].param <= level && Pokemon_GetData(pokemon, MON_DATA_ATK, NULL) < Pokemon_GetData(pokemon, MON_DATA_DEF, NULL)) {
if (evoTable[i].param <= level && Pokemon_GetData(mon, MON_DATA_ATK, NULL) < Pokemon_GetData(mon, MON_DATA_DEF, NULL)) {
target = evoTable[i].target;
*method_ret = EVO_LEVEL_ATK_LT_DEF;
}
@ -2526,7 +2526,7 @@ u16 GetMonEvolution(struct Party *party, Pokemon *pokemon, u32 context, u32 used
}
break;
case EVO_HAS_MOVE:
if (MonHasMove(pokemon, evoTable[i].param) == TRUE) {
if (Pokemon_HasMove(mon, evoTable[i].param) == TRUE) {
target = evoTable[i].target;
*method_ret = EVO_HAS_MOVE;
}
@ -2538,13 +2538,13 @@ u16 GetMonEvolution(struct Party *party, Pokemon *pokemon, u32 context, u32 used
}
break;
case EVO_LEVEL_MALE:
if (Pokemon_GetData(pokemon, MON_DATA_GENDER, NULL) == MON_MALE && evoTable[i].param <= level) {
if (Pokemon_GetData(mon, MON_DATA_GENDER, NULL) == MON_MALE && evoTable[i].param <= level) {
target = evoTable[i].target;
*method_ret = EVO_LEVEL_MALE;
}
break;
case EVO_LEVEL_FEMALE:
if (Pokemon_GetData(pokemon, MON_DATA_GENDER, NULL) == MON_FEMALE && evoTable[i].param <= level) {
if (Pokemon_GetData(mon, MON_DATA_GENDER, NULL) == MON_FEMALE && evoTable[i].param <= level) {
target = evoTable[i].target;
*method_ret = EVO_LEVEL_FEMALE;
}
@ -2600,12 +2600,12 @@ u16 GetMonEvolution(struct Party *party, Pokemon *pokemon, u32 context, u32 used
*method_ret = 0;
break;
}
if (evoTable[i].method == EVO_STONE_MALE && Pokemon_GetData(pokemon, MON_DATA_GENDER, NULL) == MON_MALE && usedItem == evoTable[i].param) {
if (evoTable[i].method == EVO_STONE_MALE && Pokemon_GetData(mon, MON_DATA_GENDER, NULL) == MON_MALE && usedItem == evoTable[i].param) {
target = evoTable[i].target;
*method_ret = 0;
break;
}
if (evoTable[i].method == EVO_STONE_FEMALE && Pokemon_GetData(pokemon, MON_DATA_GENDER, NULL) == MON_FEMALE && usedItem == evoTable[i].param) {
if (evoTable[i].method == EVO_STONE_FEMALE && Pokemon_GetData(mon, MON_DATA_GENDER, NULL) == MON_FEMALE && usedItem == evoTable[i].param) {
target = evoTable[i].target;
*method_ret = 0;
break;
@ -2633,13 +2633,13 @@ u16 ReadFromPersonalPmsNarc(u16 species) {
u16 GetEggSpecies(u16 species) {
switch (species) {
case SPECIES_SUDOWOODO:
case SPECIES_MARILL:
case SPECIES_MR_MIME:
case SPECIES_CHANSEY:
case SPECIES_MR_MIME:
case SPECIES_SNORLAX:
case SPECIES_MANTINE:
case SPECIES_MARILL:
case SPECIES_SUDOWOODO:
case SPECIES_WOBBUFFET:
case SPECIES_MANTINE:
case SPECIES_ROSELIA:
case SPECIES_CHIMECHO:
return species;
@ -2649,144 +2649,139 @@ u16 GetEggSpecies(u16 species) {
}
void BoxPokemon_SetDefaultMoves(BoxPokemon *boxMon) {
BOOL decry;
u16 *levelUpLearnset;
int i;
u16 species;
u32 form;
u8 level;
u16 move;
levelUpLearnset = Heap_Alloc(HEAP_ID_DEFAULT, MAX_LEARNED_MOVES * sizeof(u16));
decry = BoxPokemon_UnlockEncryption(boxMon);
species = (u16)BoxPokemon_GetData(boxMon, MON_DATA_SPECIES, NULL);
form = BoxPokemon_GetData(boxMon, MON_DATA_FORM, NULL);
level = (u8)BoxPokemon_CalcLevel(boxMon);
LoadLevelUpLearnset_HandleAlternateForm(species, (int)form, levelUpLearnset);
for (i = 0; levelUpLearnset[i] != LEVEL_UP_LEARNSET_END; i++) {
BOOL reencrypt;
u16 *levelUpLearnset = Heap_Alloc(HEAP_ID_DEFAULT, MAX_LEARNED_MOVES * sizeof(u16));
reencrypt = BoxPokemon_UnlockEncryption(boxMon);
u16 species = BoxPokemon_GetData(boxMon, MON_DATA_SPECIES, NULL);
int form = BoxPokemon_GetData(boxMon, MON_DATA_FORM, NULL);
u8 level = BoxPokemon_CalcLevel(boxMon);
Species_LoadLevelUpLearnset(species, form, levelUpLearnset);
for (int i = 0; levelUpLearnset[i] != LEVEL_UP_LEARNSET_END; i++) {
if ((levelUpLearnset[i] & LEVEL_UP_LEARNSET_LEVEL_MASK) > (level << LEVEL_UP_LEARNSET_LEVEL_SHIFT)) {
break;
}
move = LEVEL_UP_LEARNSET_MOVE(levelUpLearnset[i]);
if (sub_020696A8(boxMon, move) == 0xFFFF) {
sub_02069718(boxMon, move);
u16 move = LEVEL_UP_LEARNSET_MOVE(levelUpLearnset[i]);
if (BoxPokemon_TryAppendMove(boxMon, move) == 0xFFFF) {
BoxPokemon_ForceAppendMove(boxMon, move);
}
}
Heap_Free(levelUpLearnset);
BoxPokemon_LockEncryption(boxMon, decry);
BoxPokemon_LockEncryption(boxMon, reencrypt);
}
u32 sub_02069698(Pokemon *pokemon, u16 move) {
return sub_020696A8(sub_020690E4(pokemon), move);
u32 Pokemon_TryAppendMove(Pokemon *mon, u16 move) {
return BoxPokemon_TryAppendMove(Pokemon_GetBoxMon(mon), move);
}
u32 sub_020696A8(BoxPokemon *boxMon, u16 move) {
u32 BoxPokemon_TryAppendMove(BoxPokemon *boxMon, u16 move) {
u32 ret = 0xFFFF;
int i;
BOOL decry = BoxPokemon_UnlockEncryption(boxMon);
u16 cur_move;
for (i = 0; i < 4; i++) {
cur_move = (u16)BoxPokemon_GetData(boxMon, MON_DATA_MOVE1 + i, NULL);
if (cur_move == MOVE_NONE) {
BoxMonSetMoveInSlot(boxMon, move, (u8)i);
BOOL reencrypt = BoxPokemon_UnlockEncryption(boxMon);
for (int i = 0; i < MAX_MON_MOVES; i++) {
u16 slotMove = BoxPokemon_GetData(boxMon, MON_DATA_MOVE1 + i, NULL);
if (slotMove == MOVE_NONE) {
BoxPokemon_SetMoveInSlot(boxMon, move, (u8)i);
ret = move;
break;
}
if (cur_move == move) {
if (slotMove == move) {
ret = 0xFFFE;
break;
}
}
BoxPokemon_LockEncryption(boxMon, decry);
BoxPokemon_LockEncryption(boxMon, reencrypt);
return ret;
}
void sub_02069708(Pokemon *pokemon, u16 move) {
sub_02069718(sub_020690E4(pokemon), move);
void Pokemon_ForceAppendMove(Pokemon *mon, u16 move) {
BoxPokemon_ForceAppendMove(Pokemon_GetBoxMon(mon), move);
}
void sub_02069718(BoxPokemon *boxMon, u16 move) {
BOOL decry = BoxPokemon_UnlockEncryption(boxMon);
int i;
u16 moves[4];
u8 pp[4];
u8 ppUp[4];
void BoxPokemon_ForceAppendMove(BoxPokemon *boxMon, u16 move) {
BOOL reencrypt = BoxPokemon_UnlockEncryption(boxMon);
u16 moves[MAX_MON_MOVES];
u8 pp[MAX_MON_MOVES];
u8 ppUp[MAX_MON_MOVES];
for (i = 0; i < 3; i++) {
moves[i] = (u16)BoxPokemon_GetData(boxMon, MON_DATA_MOVE1 + i + 1, NULL);
pp[i] = (u8)BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP + i + 1, NULL);
ppUp[i] = (u8)BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP_UPS + i + 1, NULL);
// Bubble move slots 2 through 4 upwards
for (int i = 0; i < MAX_MON_MOVES - 1; i++) {
moves[i] = BoxPokemon_GetData(boxMon, MON_DATA_MOVE1 + i + 1, NULL);
pp[i] = BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP + i + 1, NULL);
ppUp[i] = BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP_UPS + i + 1, NULL);
}
moves[3] = move;
pp[3] = (u8)GetWazaAttr(move, MOVEATTR_PP);
ppUp[3] = 0;
moves[MAX_MON_MOVES - 1] = move;
pp[MAX_MON_MOVES - 1] = GetWazaAttr(move, MOVEATTR_PP);
ppUp[MAX_MON_MOVES - 1] = 0;
for (i = 0; i < 4; i++) {
for (int i = 0; i < MAX_MON_MOVES; i++) {
BoxPokemon_SetData(boxMon, MON_DATA_MOVE1 + i, &moves[i]);
BoxPokemon_SetData(boxMon, MON_DATA_MOVE1_PP + i, &pp[i]);
BoxPokemon_SetData(boxMon, MON_DATA_MOVE1_PP_UPS + i, &ppUp[i]);
}
BoxPokemon_LockEncryption(boxMon, decry);
BoxPokemon_LockEncryption(boxMon, reencrypt);
}
void MonSetMoveInSlot(Pokemon *pokemon, u16 move, u8 slot) {
BoxMonSetMoveInSlot(&pokemon->box, move, slot);
void Pokemon_SetMoveInSlot(Pokemon *mon, u16 move, u8 slot) {
BoxPokemon_SetMoveInSlot(&mon->box, move, slot);
}
void BoxMonSetMoveInSlot(BoxPokemon *boxMon, u16 move, u8 slot) {
u8 ppUp;
u8 pp;
void BoxPokemon_SetMoveInSlot(BoxPokemon *boxMon, u16 move, u8 slot) {
BoxPokemon_SetData(boxMon, MON_DATA_MOVE1 + slot, &move);
ppUp = (u8)BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP_UPS + slot, NULL);
pp = (u8)WazaGetMaxPp(move, ppUp);
u8 ppUps = BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP_UPS + slot, NULL);
u8 pp = WazaGetMaxPp(move, ppUps);
BoxPokemon_SetData(boxMon, MON_DATA_MOVE1_PP + slot, &pp);
}
u32 sub_02069818(Pokemon *pokemon, u32 *r5, u16 *sp0) {
u32 ret = 0;
u32 Pokemon_TryLevelUpMove(Pokemon *mon, u32 *index, u16 *move) {
u32 ret = MOVE_NONE;
u16 *levelUpLearnset = Heap_Alloc(HEAP_ID_DEFAULT, MAX_LEARNED_MOVES * sizeof(u16));
u16 species = (u16)Pokemon_GetData(pokemon, MON_DATA_SPECIES, NULL);
u32 form = Pokemon_GetData(pokemon, MON_DATA_FORM, NULL);
u8 level = (u8)Pokemon_GetData(pokemon, MON_DATA_LEVEL, NULL);
LoadLevelUpLearnset_HandleAlternateForm(species, (int)form, levelUpLearnset);
u16 species = Pokemon_GetData(mon, MON_DATA_SPECIES, NULL);
int form = Pokemon_GetData(mon, MON_DATA_FORM, NULL);
u8 level = Pokemon_GetData(mon, MON_DATA_LEVEL, NULL);
Species_LoadLevelUpLearnset(species, form, levelUpLearnset);
if (levelUpLearnset[*r5] == 0xFFFF) {
if (levelUpLearnset[*index] == 0xFFFF) {
Heap_Free(levelUpLearnset);
return 0;
return MOVE_NONE;
}
while ((levelUpLearnset[*r5] & LEVEL_UP_LEARNSET_LEVEL_MASK) != (level << LEVEL_UP_LEARNSET_LEVEL_SHIFT)) {
(*r5)++;
if (levelUpLearnset[*r5] == 0xFFFF) {
while ((levelUpLearnset[*index] & LEVEL_UP_LEARNSET_LEVEL_MASK) != (level << LEVEL_UP_LEARNSET_LEVEL_SHIFT)) {
(*index)++;
if (levelUpLearnset[*index] == 0xFFFF) {
Heap_Free(levelUpLearnset);
return 0;
return MOVE_NONE;
}
}
if ((levelUpLearnset[*r5] & LEVEL_UP_LEARNSET_LEVEL_MASK) == (level << LEVEL_UP_LEARNSET_LEVEL_SHIFT)) {
*sp0 = LEVEL_UP_LEARNSET_MOVE(levelUpLearnset[*r5]);
(*r5)++;
ret = sub_02069698(pokemon, *sp0);
if ((levelUpLearnset[*index] & LEVEL_UP_LEARNSET_LEVEL_MASK) == (level << LEVEL_UP_LEARNSET_LEVEL_SHIFT)) {
*move = LEVEL_UP_LEARNSET_MOVE(levelUpLearnset[*index]);
(*index)++;
ret = Pokemon_TryAppendMove(mon, *move);
}
Heap_Free(levelUpLearnset);
return ret;
}
void sub_020698E0(Pokemon *pokemon, int slot1, int slot2) {
sub_020698E8(&pokemon->box, slot1, slot2);
void Pokemon_SwapMoveSlots(Pokemon *mon, int slot1, int slot2) {
BoxPokemon_SwapMoveSlots(&mon->box, slot1, slot2);
}
void sub_020698E8(BoxPokemon *boxMon, int slot1, int slot2) {
void BoxPokemon_SwapMoveSlots(BoxPokemon *boxMon, int slot1, int slot2) {
u16 moves[2];
u8 pp[2];
u8 ppUp[2];
moves[0] = (u16)BoxPokemon_GetData(boxMon, MON_DATA_MOVE1 + slot1, NULL);
pp[0] = (u8)BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP + slot1, NULL);
ppUp[0] = (u8)BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP_UPS + slot1, NULL);
moves[1] = (u16)BoxPokemon_GetData(boxMon, MON_DATA_MOVE1 + slot2, NULL);
pp[1] = (u8)BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP + slot2, NULL);
ppUp[1] = (u8)BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP_UPS + slot2, NULL);
moves[0] = BoxPokemon_GetData(boxMon, MON_DATA_MOVE1 + slot1, NULL);
pp[0] = BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP + slot1, NULL);
ppUp[0] = BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP_UPS + slot1, NULL);
moves[1] = BoxPokemon_GetData(boxMon, MON_DATA_MOVE1 + slot2, NULL);
pp[1] = BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP + slot2, NULL);
ppUp[1] = BoxPokemon_GetData(boxMon, MON_DATA_MOVE1_PP_UPS + slot2, NULL);
BoxPokemon_SetData(boxMon, MON_DATA_MOVE1 + slot1, &moves[1]);
BoxPokemon_SetData(boxMon, MON_DATA_MOVE1_PP + slot1, &pp[1]);
@ -2796,70 +2791,71 @@ void sub_020698E8(BoxPokemon *boxMon, int slot1, int slot2) {
BoxPokemon_SetData(boxMon, MON_DATA_MOVE1_PP_UPS + slot2, &ppUp[0]);
}
void sub_020699A4(Pokemon *pokemon, u32 slot) {
void Pokemon_ClearMoveSlot(Pokemon *mon, u32 slot) {
u16 move;
u8 pp;
u8 ppUp;
for (; slot < 3; slot++) {
move = (u16)Pokemon_GetData(pokemon, (int)(MON_DATA_MOVE1 + slot + 1), NULL);
pp = (u8)Pokemon_GetData(pokemon, (int)(MON_DATA_MOVE1_PP + slot + 1), NULL);
ppUp = (u8)Pokemon_GetData(pokemon, (int)(MON_DATA_MOVE1_PP_UPS + slot + 1), NULL);
Pokemon_SetData(pokemon, (int)(MON_DATA_MOVE1 + slot), &move);
Pokemon_SetData(pokemon, (int)(MON_DATA_MOVE1_PP + slot), &pp);
Pokemon_SetData(pokemon, (int)(MON_DATA_MOVE1_PP_UPS + slot), &ppUp);
for (u32 i = slot; i < MAX_MON_MOVES - 1; i++) {
move = Pokemon_GetData(mon, MON_DATA_MOVE1 + i + 1, NULL);
pp = Pokemon_GetData(mon, MON_DATA_MOVE1_PP + i + 1, NULL);
ppUp = Pokemon_GetData(mon, MON_DATA_MOVE1_PP_UPS + i + 1, NULL);
Pokemon_SetData(mon, MON_DATA_MOVE1 + i, &move);
Pokemon_SetData(mon, MON_DATA_MOVE1_PP + i, &pp);
Pokemon_SetData(mon, MON_DATA_MOVE1_PP_UPS + i, &ppUp);
}
move = MOVE_NONE;
pp = 0;
ppUp = 0;
Pokemon_SetData(pokemon, MON_DATA_MOVE1 + 3, &move);
Pokemon_SetData(pokemon, MON_DATA_MOVE1_PP + 3, &pp);
Pokemon_SetData(pokemon, MON_DATA_MOVE1_PP_UPS + 3, &ppUp);
Pokemon_SetData(mon, MON_DATA_MOVE1 + MAX_MON_MOVES - 1, &move);
Pokemon_SetData(mon, MON_DATA_MOVE1_PP + MAX_MON_MOVES - 1, &pp);
Pokemon_SetData(mon, MON_DATA_MOVE1_PP_UPS + MAX_MON_MOVES - 1, &ppUp);
}
BOOL MonHasMove(Pokemon *pokemon, u16 move) {
BOOL Pokemon_HasMove(Pokemon *mon, u16 move) {
int i;
for (i = 0; i < 4; i++) {
if (Pokemon_GetData(pokemon, MON_DATA_MOVE1 + i, NULL) == move) {
for (i = 0; i < MAX_MON_MOVES; i++) {
if (Pokemon_GetData(mon, MON_DATA_MOVE1 + i, NULL) == move) {
break;
}
}
if (i != 4) {
return TRUE;
} else {
return FALSE;
}
return i != MAX_MON_MOVES;
}
void CopyBoxPokemonToPokemon(BoxPokemon *src, Pokemon *dest) {
u32 sp0 = 0;
CapsuleArray sp4;
struct Mail *mail;
void BoxPokemon_CopyToPokemon(BoxPokemon *src, Pokemon *dest) {
u32 zero = 0;
dest->box = *src;
if (dest->box.boxDecrypted) {
dest->box.partyDecrypted = TRUE;
}
Pokemon_SetData(dest, MON_DATA_STATUS, &sp0);
Pokemon_SetData(dest, MON_DATA_HP, &sp0);
Pokemon_SetData(dest, MON_DATA_MAX_HP, &sp0);
mail = Mail_New(HEAP_ID_DEFAULT);
Pokemon_SetData(dest, MON_DATA_STATUS, &zero);
Pokemon_SetData(dest, MON_DATA_HP, &zero);
Pokemon_SetData(dest, MON_DATA_MAX_HP, &zero);
Mail *mail = Mail_New(HEAP_ID_DEFAULT);
Pokemon_SetData(dest, MON_DATA_MAIL, mail);
Heap_Free(mail);
Pokemon_SetData(dest, MON_DATA_BALL_CAPSULE_ID, &sp0);
MI_CpuClearFast(&sp4, sizeof(sp4));
Pokemon_SetData(dest, MON_DATA_BALL_CAPSULE, &sp4);
CapsuleArray capsule;
Pokemon_SetData(dest, MON_DATA_BALL_CAPSULE_ID, &zero);
MI_CpuClearFast(&capsule, sizeof(capsule));
Pokemon_SetData(dest, MON_DATA_BALL_CAPSULE, &capsule);
Pokemon_CalcLevelAndStats(dest);
}
u8 Party_GetMaxLevel(struct Party *party) {
int i;
int r7 = Party_GetCount(party);
u8 Party_GetMaxLevel(Party *party) {
int count = Party_GetCount(party);
u8 ret = 1;
u8 level;
for (i = 0; i < r7; i++) {
Pokemon *pokemon = Party_GetMonByIndex(party, i);
if (Pokemon_GetData(pokemon, MON_DATA_SPECIES, NULL) != SPECIES_NONE
&& !Pokemon_GetData(pokemon, MON_DATA_IS_EGG, NULL)) {
level = (u8)Pokemon_GetData(pokemon, MON_DATA_LEVEL, NULL);
for (int i = 0; i < count; i++) {
Pokemon *mon = Party_GetMonByIndex(party, i);
if (Pokemon_GetData(mon, MON_DATA_SPECIES, NULL) != SPECIES_NONE
&& !Pokemon_GetData(mon, MON_DATA_IS_EGG, NULL)) {
u8 level = Pokemon_GetData(mon, MON_DATA_LEVEL, NULL);
if (level > ret) {
ret = level;
}
@ -2882,20 +2878,20 @@ u16 SinnohDexNoToSpecies(u16 sinnoh_dex) {
return ret;
}
void CopyPokemonToPokemon(Pokemon *src, Pokemon *dest) {
void Pokemon_Copy(Pokemon *src, Pokemon *dest) {
*dest = *src;
}
void CopyPokemonToBoxPokemon(Pokemon *src, BoxPokemon *dest) {
void Pokemon_CopyToBoxPokemon(Pokemon *src, BoxPokemon *dest) {
*dest = src->box;
}
void CopyBoxPokemonToBoxPokemon(BoxPokemon *src, BoxPokemon *dest) {
void BoxPokemon_Copy(BoxPokemon *src, BoxPokemon *dest) {
*dest = *src;
}
s8 MonGetFlavorPreference(Pokemon *pokemon, int flavor) {
return BoxMonGetFlavorPreference(&pokemon->box, flavor);
s8 MonGetFlavorPreference(Pokemon *mon, int flavor) {
return BoxMonGetFlavorPreference(&mon->box, flavor);
}
s8 BoxMonGetFlavorPreference(BoxPokemon *boxMon, int flavor) {
@ -2910,7 +2906,7 @@ s8 GetFlavorPreferenceFromPID(u32 personality, int flavor) {
int Species_LoadLearnsetTable(u16 species, u32 form, u16 *dest) {
int i;
u16 *levelUpLearnset = Heap_Alloc(HEAP_ID_DEFAULT, MAX_LEARNED_MOVES * sizeof(u16));
LoadLevelUpLearnset_HandleAlternateForm(species, (int)form, levelUpLearnset);
Species_LoadLevelUpLearnset(species, (int)form, levelUpLearnset);
for (i = 0; levelUpLearnset[i] != LEVEL_UP_LEARNSET_END; i++) {
dest[i] = LEVEL_UP_LEARNSET_MOVE(levelUpLearnset[i]);
}
@ -2918,10 +2914,10 @@ int Species_LoadLearnsetTable(u16 species, u32 form, u16 *dest) {
return i;
}
void Party_GivePokerusAtRandom(struct Party *party) {
void Party_GivePokerusAtRandom(Party *party) {
int count = Party_GetCount(party);
int idx;
Pokemon *pokemon;
Pokemon *mon;
u8 sp0;
switch (LCRandom()) {
case 0x4000:
@ -2929,8 +2925,8 @@ void Party_GivePokerusAtRandom(struct Party *party) {
case 0xC000:
do {
idx = LCRandom() % count;
pokemon = Party_GetMonByIndex(party, idx);
} while (Pokemon_GetData(pokemon, MON_DATA_SPECIES, NULL) == SPECIES_NONE || Pokemon_GetData(pokemon, MON_DATA_IS_EGG, NULL));
mon = Party_GetMonByIndex(party, idx);
} while (Pokemon_GetData(mon, MON_DATA_SPECIES, NULL) == SPECIES_NONE || Pokemon_GetData(mon, MON_DATA_IS_EGG, NULL));
if (!Party_MaskMonsWithPokerus(party, (u8)MaskOfFlagNo(idx))) {
do {
sp0 = (u8)LCRandom();
@ -2941,21 +2937,21 @@ void Party_GivePokerusAtRandom(struct Party *party) {
sp0 |= sp0 << 4;
sp0 &= 0xF3;
sp0++;
Pokemon_SetData(pokemon, MON_DATA_POKERUS, &sp0);
Pokemon_SetData(mon, MON_DATA_POKERUS, &sp0);
}
}
}
u8 Party_MaskMonsWithPokerus(struct Party *party, u8 mask) {
u8 Party_MaskMonsWithPokerus(Party *party, u8 mask) {
int i = 0;
u32 flag = 1;
u8 ret = 0;
Pokemon *pokemon;
Pokemon *mon;
if (mask != 0) {
do {
if (mask & 1) {
pokemon = Party_GetMonByIndex(party, i);
if (Pokemon_GetData(pokemon, MON_DATA_POKERUS, NULL)) {
mon = Party_GetMonByIndex(party, i);
if (Pokemon_GetData(mon, MON_DATA_POKERUS, NULL)) {
ret |= flag;
}
}
@ -2964,23 +2960,23 @@ u8 Party_MaskMonsWithPokerus(struct Party *party, u8 mask) {
mask >>= 1;
} while (mask != 0);
} else {
pokemon = Party_GetMonByIndex(party, 0);
if (Pokemon_GetData(pokemon, MON_DATA_POKERUS, NULL)) {
mon = Party_GetMonByIndex(party, 0);
if (Pokemon_GetData(mon, MON_DATA_POKERUS, NULL)) {
ret++;
}
}
return ret;
}
void Party_UpdatePokerus(struct Party *party, int r5) {
void Party_UpdatePokerus(Party *party, int r5) {
int i;
u8 pokerus;
Pokemon *pokemon;
Pokemon *mon;
int count = Party_GetCount(party);
for (i = 0; i < count; i++) {
pokemon = Party_GetMonByIndex(party, i);
if (Pokemon_GetData(pokemon, MON_DATA_SPECIES, NULL) != SPECIES_NONE) {
pokerus = (u8)Pokemon_GetData(pokemon, MON_DATA_POKERUS, NULL);
mon = Party_GetMonByIndex(party, i);
if (Pokemon_GetData(mon, MON_DATA_SPECIES, NULL) != SPECIES_NONE) {
pokerus = (u8)Pokemon_GetData(mon, MON_DATA_POKERUS, NULL);
if (pokerus & 0xF) {
if ((pokerus & 0xF) < r5 || r5 > 4) {
pokerus &= 0xF0;
@ -2990,33 +2986,33 @@ void Party_UpdatePokerus(struct Party *party, int r5) {
if (pokerus == 0) {
pokerus = 0x10; // immune
}
Pokemon_SetData(pokemon, MON_DATA_POKERUS, &pokerus);
Pokemon_SetData(mon, MON_DATA_POKERUS, &pokerus);
}
}
}
}
void Party_SpreadPokerus(struct Party *party) {
void Party_SpreadPokerus(Party *party) {
int count = Party_GetCount(party);
int i;
Pokemon *pokemon;
Pokemon *mon;
u8 pokerus;
if ((LCRandom() % 3) == 0) {
for (i = 0; i < count; i++) {
pokemon = Party_GetMonByIndex(party, i);
if (Pokemon_GetData(pokemon, MON_DATA_SPECIES, NULL) != SPECIES_NONE) {
pokerus = (u8)Pokemon_GetData(pokemon, MON_DATA_POKERUS, NULL);
mon = Party_GetMonByIndex(party, i);
if (Pokemon_GetData(mon, MON_DATA_SPECIES, NULL) != SPECIES_NONE) {
pokerus = (u8)Pokemon_GetData(mon, MON_DATA_POKERUS, NULL);
if (pokerus & 0xF) {
if (i != 0) {
pokemon = Party_GetMonByIndex(party, i - 1);
if (!(Pokemon_GetData(pokemon, MON_DATA_POKERUS, NULL) & 0xF0)) {
Pokemon_SetData(pokemon, MON_DATA_POKERUS, &pokerus);
mon = Party_GetMonByIndex(party, i - 1);
if (!(Pokemon_GetData(mon, MON_DATA_POKERUS, NULL) & 0xF0)) {
Pokemon_SetData(mon, MON_DATA_POKERUS, &pokerus);
}
}
if (i < count - 1) {
pokemon = Party_GetMonByIndex(party, i + 1);
if (!(Pokemon_GetData(pokemon, MON_DATA_POKERUS, NULL) & 0xF0)) {
Pokemon_SetData(pokemon, MON_DATA_POKERUS, &pokerus);
mon = Party_GetMonByIndex(party, i + 1);
if (!(Pokemon_GetData(mon, MON_DATA_POKERUS, NULL) & 0xF0)) {
Pokemon_SetData(mon, MON_DATA_POKERUS, &pokerus);
i++; // don't infect the rest of the party
}
}
@ -3026,16 +3022,16 @@ void Party_SpreadPokerus(struct Party *party) {
}
}
BOOL Pokemon_HasPokerus(Pokemon *pokemon) {
return BoxMon_HasPokerus(&pokemon->box);
BOOL Pokemon_HasPokerus(Pokemon *mon) {
return BoxMon_HasPokerus(&mon->box);
}
BOOL BoxMon_HasPokerus(BoxPokemon *boxMon) {
return !!(BoxPokemon_GetData(boxMon, MON_DATA_POKERUS, NULL) & 0xF);
}
BOOL Pokemon_IsImmuneToPokerus(Pokemon *pokemon) {
return BoxMon_IsImmuneToPokerus(&pokemon->box);
BOOL Pokemon_IsImmuneToPokerus(Pokemon *mon) {
return BoxMon_IsImmuneToPokerus(&mon->box);
}
BOOL BoxMon_IsImmuneToPokerus(BoxPokemon *boxMon) {
@ -3049,8 +3045,8 @@ BOOL BoxMon_IsImmuneToPokerus(BoxPokemon *boxMon) {
return FALSE;
}
void Pokemon_UpdateArceusForm(Pokemon *pokemon) {
BoxMon_UpdateArceusForm(&pokemon->box);
void Pokemon_UpdateArceusForm(Pokemon *mon) {
BoxMon_UpdateArceusForm(&mon->box);
}
void BoxMon_UpdateArceusForm(BoxPokemon *boxMon) {
@ -3103,7 +3099,7 @@ u32 GetArceusTypeByHeldItemEffect(u16 heldEffect) {
}
}
void LoadLevelUpLearnset_HandleAlternateForm(int species, int form, u16 *levelUpLearnset) {
void Species_LoadLevelUpLearnset(int species, int form, u16 *levelUpLearnset) {
ReadWholeNarcMemberByIdPair(levelUpLearnset, NARC_POKETOOL_PERSONAL_WOTBL, ResolveMonForm(species, form));
}
@ -3123,14 +3119,14 @@ void sub_02069FB0(struct SaveChatotSoundClip *r7, u32 r5, u16 r4, s32 r6, s32 sp
}
}
void sub_0206A014(Pokemon *pokemon, PlayerProfile *a1, u32 pokeball, u32 a3, u32 encounterType, enum HeapID heapID) {
void sub_0206A014(Pokemon *mon, PlayerProfile *a1, u32 pokeball, u32 a3, u32 encounterType, enum HeapID heapID) {
u32 hp;
sub_0206A054(&pokemon->box, a1, pokeball, a3, encounterType, heapID);
sub_0206A054(&mon->box, a1, pokeball, a3, encounterType, heapID);
if (pokeball == ITEM_HEAL_BALL) {
hp = Pokemon_GetData(pokemon, MON_DATA_MAX_HP, NULL);
Pokemon_SetData(pokemon, MON_DATA_HP, &hp);
hp = Pokemon_GetData(mon, MON_DATA_MAX_HP, NULL);
Pokemon_SetData(mon, MON_DATA_HP, &hp);
hp = 0;
Pokemon_SetData(pokemon, MON_DATA_STATUS, &hp);
Pokemon_SetData(mon, MON_DATA_STATUS, &hp);
}
}
@ -3146,7 +3142,7 @@ const u16 sItemOdds[2][2] = {
{ 20, 80 },
};
void sub_0206A094(Pokemon *pokemon, u32 a1, u32 a2) {
void sub_0206A094(Pokemon *mon, u32 a1, u32 a2) {
u32 chance;
u16 species;
u16 form;
@ -3154,58 +3150,61 @@ void sub_0206A094(Pokemon *pokemon, u32 a1, u32 a2) {
u16 item2;
if (!(a1 & 0x81)) {
chance = (u32)(LCRandom() % 100);
species = (u16)Pokemon_GetData(pokemon, MON_DATA_SPECIES, 0);
form = (u16)Pokemon_GetData(pokemon, MON_DATA_FORM, 0);
species = (u16)Pokemon_GetData(mon, MON_DATA_SPECIES, 0);
form = (u16)Pokemon_GetData(mon, MON_DATA_FORM, 0);
item1 = (u16)Species_GetFormValue(species, form, SPECIES_DATA_HELD_ITEM_COMMON);
item2 = (u16)Species_GetFormValue(species, form, SPECIES_DATA_HELD_ITEM_RARE);
if (item1 == item2 && item1 != ITEM_NONE) {
Pokemon_SetData(pokemon, MON_DATA_HELD_ITEM, &item1);
Pokemon_SetData(mon, MON_DATA_HELD_ITEM, &item1);
} else {
if (chance >= sItemOdds[a2][0]) {
if (chance < sItemOdds[a2][1]) {
Pokemon_SetData(pokemon, MON_DATA_HELD_ITEM, &item1);
Pokemon_SetData(mon, MON_DATA_HELD_ITEM, &item1);
} else {
Pokemon_SetData(pokemon, MON_DATA_HELD_ITEM, &item2);
Pokemon_SetData(mon, MON_DATA_HELD_ITEM, &item2);
}
}
}
}
}
BOOL sub_0206A13C(Pokemon *pokemon, u32 a1) {
return sub_0206A144(&pokemon->box, a1);
BOOL sub_0206A13C(Pokemon *mon, u32 tmHM) {
return BoxPokemon_CanLearnTMHM(&mon->box, tmHM);
}
BOOL sub_0206A144(BoxPokemon *boxMon, u32 a1) {
u16 species = (u16)BoxPokemon_GetData(boxMon, MON_DATA_SPECIES_OR_EGG, NULL);
int form = (int)BoxPokemon_GetData(boxMon, MON_DATA_FORM, NULL);
return sub_0206A16C(species, form, a1);
BOOL BoxPokemon_CanLearnTMHM(BoxPokemon *boxMon, u32 tmHM) {
u16 species = BoxPokemon_GetData(boxMon, MON_DATA_SPECIES_OR_EGG, NULL);
int form = BoxPokemon_GetData(boxMon, MON_DATA_FORM, NULL);
return Species_CanLearnTMHM(species, form, tmHM);
}
BOOL sub_0206A16C(u16 species, int form, u32 a2) {
u32 r4;
enum SpeciesDataParam r2;
BOOL Species_CanLearnTMHM(u16 species, int form, u32 tmHM) {
if (species == SPECIES_EGG) {
return FALSE;
}
if (a2 < 32) {
r4 = 1ul << a2;
r2 = SPECIES_DATA_TM_LEARNSET_MASK_1;
} else if (a2 < 64) {
r4 = 1ul << (a2 - 32);
r2 = SPECIES_DATA_TM_LEARNSET_MASK_2;
} else if (a2 < 96) {
r4 = 1ul << (a2 - 64);
r2 = SPECIES_DATA_TM_LEARNSET_MASK_3;
u32 mask;
enum SpeciesDataParam param;
if (tmHM < 32) {
mask = (1 << tmHM);
param = SPECIES_DATA_TM_LEARNSET_MASK_1;
} else if (tmHM < 64) {
mask = (1 << (tmHM - 32));
param = SPECIES_DATA_TM_LEARNSET_MASK_2;
} else if (tmHM < 96) {
mask = (1 << (tmHM - 64));
param = SPECIES_DATA_TM_LEARNSET_MASK_3;
} else {
r4 = 1ul << (a2 - 96);
r2 = SPECIES_DATA_TM_LEARNSET_MASK_4;
mask = (1 << (tmHM - 96));
param = SPECIES_DATA_TM_LEARNSET_MASK_4;
}
return !!(Species_GetFormValue(species, form, r2) & r4);
return (Species_GetFormValue(species, form, param) & mask) != 0;
}
void sub_0206A1C4(Pokemon *pokemon) {
sub_0206A1CC(&pokemon->box);
void sub_0206A1C4(Pokemon *mon) {
sub_0206A1CC(&mon->box);
}
void sub_0206A1CC(BoxPokemon *boxMon) {
@ -3239,7 +3238,7 @@ void sub_0206A23C(Pokemon *r5, u32 personality) {
Pokemon *sp4;
sp4 = Pokemon_New(HEAP_ID_DEFAULT);
CopyPokemonToPokemon(r5, sp4);
Pokemon_Copy(r5, sp4);
r4 = &GetSubstruct(&sp4->box, r5->box.personality, 0)->blockA;
r6 = &GetSubstruct(&sp4->box, r5->box.personality, 1)->blockB;
r7 = &GetSubstruct(&sp4->box, r5->box.personality, 2)->blockC;
@ -3263,12 +3262,12 @@ void sub_0206A23C(Pokemon *r5, u32 personality) {
Heap_Free(sp4);
}
void SpeciesData_LoadSpecies(int species, SpeciesData *personal) {
ReadWholeNarcMemberByIdPair(personal, NARC_POKETOOL_PERSONAL_PERSONAL, species);
void SpeciesData_LoadSpecies(int species, SpeciesData *speciesData) {
ReadWholeNarcMemberByIdPair(speciesData, NARC_POKETOOL_PERSONAL_PERSONAL, species);
}
void SpeciesData_LoadForm(int species, int form, SpeciesData *personal) {
ReadWholeNarcMemberByIdPair(personal, NARC_POKETOOL_PERSONAL_PERSONAL, ResolveMonForm(species, form));
void SpeciesData_LoadForm(int species, int form, SpeciesData *speciesData) {
ReadWholeNarcMemberByIdPair(speciesData, NARC_POKETOOL_PERSONAL_PERSONAL, ResolveMonForm(species, form));
}
void LoadMonEvolutionTable(u16 species, struct Evolution *evo) {
@ -3461,8 +3460,8 @@ u16 GetLegendaryMon(u32 idx) {
return sBattleFrontierBanlist[idx];
}
BOOL sub_0206A998(Pokemon *pokemon) {
u16 species = (u16)Pokemon_GetData(pokemon, MON_DATA_SPECIES, NULL);
BOOL sub_0206A998(Pokemon *mon) {
u16 species = (u16)Pokemon_GetData(mon, MON_DATA_SPECIES, NULL);
return IsPokemonLegendaryOrMythical(species);
}
@ -3505,12 +3504,12 @@ int sub_0206AA30(int x) {
}
}
void Pokemon_RemoveCapsule(Pokemon *pokemon) {
void Pokemon_RemoveCapsule(Pokemon *mon) {
u8 sp0 = 0;
CapsuleArray sp1;
MI_CpuClearFast(&sp1, sizeof(sp1));
Pokemon_SetData(pokemon, MON_DATA_BALL_CAPSULE_ID, &sp0);
Pokemon_SetData(pokemon, MON_DATA_BALL_CAPSULE, &sp1);
Pokemon_SetData(mon, MON_DATA_BALL_CAPSULE_ID, &sp0);
Pokemon_SetData(mon, MON_DATA_BALL_CAPSULE, &sp1);
}
void RestoreBoxMonPP(BoxPokemon *boxMon) {

View File

@ -1894,7 +1894,7 @@ BOOL ScrCmd_GetPokemonForm(ScriptContext *ctx) { // 0095
u16 *variable = ScriptGetVarPointer(ctx);
Party *party = SaveArray_Party_Get(ctx->fieldSystem->saveData);
*variable = GetMonUnownLetter(Party_GetMonByIndex(party, partyPosition));
*variable = Pokemon_GetForm(Party_GetMonByIndex(party, partyPosition));
return FALSE;
}

View File

@ -69,7 +69,7 @@ BOOL ScrCmd_Unk0255(struct ScriptContext *ctx) // 0255
sub_0202BFD8(unk, i, pokemon);
sub_0208089C(pokemon, player, 2, 0, HEAP_ID_32);
struct BoxPokemon *box_mon = sub_020690E4(pokemon);
struct BoxPokemon *box_mon = Pokemon_GetBoxMon(pokemon);
GF_ASSERT(PCStorage_PlaceMonInFirstEmptySlotInAnyBox(pc, box_mon));
sub_0202C144(ctx->fieldSystem->saveData, pokemon);

View File

@ -570,7 +570,7 @@ BOOL ScrCmd_ForgetPartyMonMove(struct ScriptContext *ctx) // 01C9
struct Party *party = SaveArray_Party_Get(fieldSystem->saveData);
struct Pokemon *party_mon = Party_GetMonByIndex(party, mon_slot);
sub_020699A4(party_mon, move_slot);
Pokemon_ClearMoveSlot(party_mon, move_slot);
return FALSE;
}

View File

@ -57,7 +57,7 @@ BOOL GiveEgg(enum HeapID heapID, struct SaveData *save, u16 species, int level,
void PartyMonSetMoveInSlot(struct Party *party, int partySlot, int moveSlot, u16 move) {
struct Pokemon *mon = Party_GetMonByIndex(party, partySlot);
MonSetMoveInSlot(mon, move, (u8)moveSlot);
Pokemon_SetMoveInSlot(mon, move, (u8)moveSlot);
}
int GetIdxOfFirstPartyMonWithMove(struct Party *party, int move) {

View File

@ -323,7 +323,7 @@ void CreateNPCTrainerParty(BattleSetup *setup, s32 party_id, enum HeapID heapID)
iv = (u8)((monSpeciesMoves[i].difficulty * 31) / 255);
Pokemon_InitWithParams(pokemon, monSpeciesMoves[i].species, monSpeciesMoves[i].level, iv, 1, (s32)personality, 2, 0);
for (j = 0; j < 4; j++) {
MonSetMoveInSlot(pokemon, monSpeciesMoves[i].moves[j], (u8)j);
Pokemon_SetMoveInSlot(pokemon, monSpeciesMoves[i].moves[j], (u8)j);
}
Party_AddMon(setup->party[party_id], pokemon);
}
@ -360,7 +360,7 @@ void CreateNPCTrainerParty(BattleSetup *setup, s32 party_id, enum HeapID heapID)
Pokemon_InitWithParams(pokemon, monSpeciesItemMoves[i].species, monSpeciesItemMoves[i].level, iv, 1, (s32)personality, 2, 0);
Pokemon_SetData(pokemon, MON_DATA_HELD_ITEM, &monSpeciesItemMoves[i].item);
for (j = 0; j < 4; j++) {
MonSetMoveInSlot(pokemon, monSpeciesItemMoves[i].moves[j], (u8)j);
Pokemon_SetMoveInSlot(pokemon, monSpeciesItemMoves[i].moves[j], (u8)j);
}
Party_AddMon(setup->party[party_id], pokemon);
}

View File

@ -18,7 +18,7 @@ u32 sub_0206B688(struct BoxPokemon *boxmon) {
}
u32 sub_0206B6C8(struct Pokemon *pokemon) {
return sub_0206B688(sub_020690E4(pokemon));
return sub_0206B688(Pokemon_GetBoxMon(pokemon));
}
u32 sub_0206B6D4(u32 species, u32 is_egg, u32 form) {
@ -56,7 +56,7 @@ u16 BoxMon_GetAlternateForm(struct BoxPokemon *boxmon) {
u32 species = BoxPokemon_GetData(boxmon, MON_DATA_SPECIES_OR_EGG, NULL);
switch (species) {
case SPECIES_UNOWN:
return GetBoxMonUnownLetter(boxmon);
return BoxPokemon_GetForm(boxmon);
case SPECIES_DEOXYS:
case SPECIES_BURMY:
case SPECIES_WORMADAM:
@ -109,7 +109,7 @@ u32 sub_0206B83C(struct BoxPokemon *boxmon) {
}
u32 sub_0206B87C(struct Pokemon *pokemon) {
return sub_0206B83C(sub_020690E4(pokemon));
return sub_0206B83C(Pokemon_GetBoxMon(pokemon));
}
u32 sub_0206B888(void) {

View File

@ -285,32 +285,32 @@ void sub_02068FE0(struct SomeDrawPokemonStruct *a0, u16 a1, int a2);
void sub_02069010(void *dest, int a1);
void sub_02069038(u32 a0, u32 a1, u32 a2, s32 a3, u32 a4, u32 a5, u32 a6);
void sub_020690AC(struct SomeDrawPokemonStruct *a0, u32 a1);
u32 sub_020690C4(void);
u32 sub_020690C8(void);
u8 GetBoxMonUnownLetter(BoxPokemon *boxMon);
u8 GetMonUnownLetter(Pokemon *mon);
void LoadLevelUpLearnset_HandleAlternateForm(int species, int form, u16 *levelUpLearnset);
BoxPokemon *sub_020690E4(Pokemon *mon);
u32 Pokemon_Size(void);
u32 BoxPokemon_Size(void);
u8 BoxPokemon_GetForm(BoxPokemon *boxMon);
u8 Pokemon_GetForm(Pokemon *mon);
void Species_LoadLevelUpLearnset(int species, int form, u16 *levelUpLearnset);
BoxPokemon *Pokemon_GetBoxMon(Pokemon *mon);
u16 GetMonEvolution(struct Party *party, Pokemon *mon, u32 context, u32 usedItem, u32 *method_ret);
u16 ReadFromPersonalPmsNarc(u16 species);
u16 GetEggSpecies(u16 species);
BOOL sub_020690E8(Pokemon *mon);
u32 sub_02069698(Pokemon *mon, u16 move);
void sub_02069708(Pokemon *mon, u16 move);
void sub_02069718(BoxPokemon *boxMon, u16 move);
void MonSetMoveInSlot(Pokemon *mon, u16 move, u8 slot);
u32 sub_02069818(Pokemon *mon, u32 *r5, u16 *sp0);
void sub_020698E0(Pokemon *mon, int slot1, int slot2);
void sub_020698E8(BoxPokemon *boxMon, int slot1, int slot2);
void sub_020699A4(Pokemon *mon, u32 slot);
void CopyBoxPokemonToPokemon(BoxPokemon *src, Pokemon *dest);
BOOL Pokemon_TryLevelUp(Pokemon *mon);
u32 Pokemon_TryAppendMove(Pokemon *mon, u16 move);
void Pokemon_ForceAppendMove(Pokemon *mon, u16 move);
void BoxPokemon_ForceAppendMove(BoxPokemon *boxMon, u16 move);
void Pokemon_SetMoveInSlot(Pokemon *mon, u16 move, u8 slot);
u32 Pokemon_TryLevelUpMove(Pokemon *mon, u32 *index, u16 *move);
void Pokemon_SwapMoveSlots(Pokemon *mon, int slot1, int slot2);
void BoxPokemon_SwapMoveSlots(BoxPokemon *boxMon, int slot1, int slot2);
void Pokemon_ClearMoveSlot(Pokemon *mon, u32 slot);
void BoxPokemon_CopyToPokemon(BoxPokemon *src, Pokemon *dest);
u8 Party_GetMaxLevel(struct Party *party);
u16 SpeciesToSinnohDexNo(u16 species);
u16 SinnohDexNoToSpecies(u16 sinnoh_dex);
void CopyPokemonToPokemon(Pokemon *src, Pokemon *dest);
void CopyPokemonToBoxPokemon(Pokemon *src, BoxPokemon *dest);
void CopyBoxPokemonToBoxPokemon(BoxPokemon *src, BoxPokemon *dest);
void Pokemon_Copy(Pokemon *src, Pokemon *dest);
void Pokemon_CopyToBoxPokemon(Pokemon *src, BoxPokemon *dest);
void BoxPokemon_Copy(BoxPokemon *src, BoxPokemon *dest);
s8 MonGetFlavorPreference(Pokemon *mon, int flavor);
int Species_LoadLearnsetTable(u16 species, u32 form, u16 *dest);
void Party_GivePokerusAtRandom(struct Party *party);
@ -322,7 +322,7 @@ void Pokemon_UpdateArceusForm(Pokemon *mon);
void sub_02069FB0(struct SaveChatotSoundClip *r7, u32 r5, u16 r4, s32 r6, s32 sp18, u32 sp1C, enum HeapID heapID);
void sub_0206A014(Pokemon *mon, PlayerProfile *a1, u32 pokeball, u32 a3, u32 encounterType, enum HeapID heapID);
void sub_0206A094(Pokemon *mon, u32 a1, u32 a2);
BOOL sub_0206A13C(Pokemon *mon, u32 a1);
BOOL sub_0206A13C(Pokemon *mon, u32 tmHM);
void sub_0206A1C4(Pokemon *mon);
void sub_0206A23C(Pokemon *r5, u32 personality);
int LowestFlagNo(u32 mask);