From 199df8377c7a76c11958d0a652dad612a16e8924 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Jun 2020 16:02:17 -0400 Subject: More pokemon.s method names; annotate species imms in FUN_02068C00 --- arm9/asm/pokemon.s | 117 ++++++++++++++++++++-------------------- arm9/asm/scrcmd_12.s | 4 +- arm9/asm/unk_02025658.s | 30 +++++------ arm9/asm/unk_020476CC.s | 2 +- arm9/asm/unk_020653EC.s | 2 +- arm9/asm/unk_0206C700.s | 2 +- arm9/asm/unk_02079C70.s | 6 +-- arm9/asm/unk_020828BC.s | 2 +- arm9/asm/unk_020854E0.s | 12 ++--- arm9/global.inc | 22 ++++---- arm9/modules/05/asm/module_05.s | 8 +-- arm9/modules/06/asm/module_06.s | 16 +++--- arm9/modules/09/asm/module_09.s | 4 +- arm9/modules/11/asm/module_11.s | 30 +++++------ arm9/modules/12/asm/module_12.s | 4 +- arm9/modules/83/asm/module_83.s | 2 +- include/pokemon.h | 23 +++++++- 17 files changed, 153 insertions(+), 133 deletions(-) diff --git a/arm9/asm/pokemon.s b/arm9/asm/pokemon.s index 3bfbd197..31efcbaf 100644 --- a/arm9/asm/pokemon.s +++ b/arm9/asm/pokemon.s @@ -336,7 +336,7 @@ CreateMon: ; 0x02066ACC add r2, sp, #0x48 bl SetMonDataEncrypted mov r0, #0x0 - bl FUN_020256BC + bl CreateNewSealsObject add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa9 @@ -390,6 +390,7 @@ _02066B8E: mov r1, #0x0 add r2, sp, #0x34 bl SetBoxMonDataEncrypted + // If otIdType == 2, generate a random OT ID that prevents shininess ldr r0, [sp, #0x38] cmp r0, #0x2 bne _02066BD6 @@ -444,7 +445,7 @@ _02066BDE: bl SetBoxMonDataEncrypted ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0x8 @@ -709,7 +710,7 @@ _02066E4C: ldr r0, [sp, #0x14] add r1, r6, #0x0 add r2, r7, #0x0 - bl FUN_02066E74 + bl AdjustPersonalityToForceGenderAndNature add r4, r0, #0x0 _02066E58: mov r0, #0x1 @@ -726,8 +727,8 @@ _02066E58: add sp, #0x24 pop {r4-r7, pc} - thumb_func_start FUN_02066E74 -FUN_02066E74: ; 0x02066E74 + thumb_func_start AdjustPersonalityToForceGenderAndNature +AdjustPersonalityToForceGenderAndNature: ; 0x02066E74 push {r3-r5, lr} add r5, r1, #0x0 mov r1, #0x12 @@ -752,8 +753,8 @@ _02066EA0: add r0, r4, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_02066EA4 -FUN_02066EA4: ; 0x02066EA4 + thumb_func_start CreateMonWithFixedIVs +CreateMonWithFixedIVs: ; 0x02066EA4 push {r0-r3} push {r4, lr} sub sp, #0x10 @@ -1239,7 +1240,7 @@ _02067298: _0206729E: add r0, #0x9c add r1, r2, #0x0 - bl FUN_020256D0 + bl CopySealsObject mov r0, #0x1 pop {r3, pc} _020672AA: @@ -2176,7 +2177,7 @@ _02067940: add r3, #0x9c add r0, r2, #0x0 add r1, r3, #0x0 - bl FUN_020256D0 + bl CopySealsObject pop {r3, pc} _0206794C: add r3, #0xd4 @@ -3142,7 +3143,7 @@ _02068066: add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 - bl AddMonPartyStat + bl AddMonData ldrh r0, [r5, #0x4] lsl r0, r0, #0x1f lsr r0, r0, #0x1f @@ -3166,8 +3167,8 @@ _0206809C: pop {r4-r6, pc} .balign 4 - thumb_func_start AddMonPartyStat -AddMonPartyStat: ; 0x020680A0 + thumb_func_start AddMonData +AddMonData: ; 0x020680A0 push {r3, lr} add r3, r1, #0x0 sub r3, #0x9f @@ -3216,12 +3217,12 @@ _020680F2: bl ErrorHandling pop {r3, pc} _020680F8: - bl FUN_02068100 + bl AddBoxMonData pop {r3, pc} .balign 4 - thumb_func_start FUN_02068100 -FUN_02068100: ; 0x02068100 + thumb_func_start AddBoxMonData +AddBoxMonData: ; 0x02068100 push {r4-r7, lr} sub sp, #0xc add r7, r1, #0x0 @@ -3441,14 +3442,14 @@ _0206814E: ; jump table (using 16-bit offset) _020682B4: ldrh r0, [r4, #0x0] mov r1, #0x64 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel ldr r1, [r4, #0x8] add r1, r1, r6 cmp r1, r0 bls _020682D2 ldrh r0, [r4, #0x0] mov r1, #0x64 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add sp, #0xc str r0, [r4, #0x8] pop {r4-r7, pc} @@ -4008,8 +4009,8 @@ GetMonBaseStat: ; 0x02068678 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02068698 -FUN_02068698: ; 0x02068698 + thumb_func_start GetPercentProgressTowardsNextLevel +GetPercentProgressTowardsNextLevel: ; 0x02068698 push {r3-r7, lr} add r5, r0, #0x0 bl TryDecryptMon @@ -4028,11 +4029,11 @@ FUN_02068698: ; 0x02068698 lsr r7, r0, #0x18 add r0, r6, #0x0 add r1, r7, #0x0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add r4, r0, #0x0 add r0, r6, #0x0 add r1, r7, #0x1 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0x8 @@ -4079,12 +4080,12 @@ CalcBoxMonExpToNextLevelEncrypted: ; 0x02068700 add r4, r0, #0x0 add r0, r6, #0x0 add r1, r5, #0x0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel sub r0, r0, r4 pop {r4-r6, pc} - thumb_func_start FUN_02068734 -FUN_02068734: ; 0x02068734 + thumb_func_start GetMonBaseExperienceAtCurrentLevel +GetMonBaseExperienceAtCurrentLevel: ; 0x02068734 push {r3-r5, lr} add r5, r0, #0x0 mov r1, #0x5 @@ -4097,12 +4098,12 @@ FUN_02068734: ; 0x02068734 bl GetMonDataEncrypted add r1, r0, #0x0 add r0, r4, #0x0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel pop {r3-r5, pc} .balign 4 - thumb_func_start GetMonExpByLevel -GetMonExpByLevel: ; 0x02068758 + thumb_func_start GetMonExpBySpeciesAndLevel +GetMonExpBySpeciesAndLevel: ; 0x02068758 push {r4, lr} add r4, r1, #0x0 mov r1, #0x15 @@ -4530,15 +4531,15 @@ _02068A78: pop {r4, pc} .balign 4 - thumb_func_start FUN_02068A80 -FUN_02068A80: ; 0x02068A80 - ldr r3, _02068A84 ; =FUN_02068A88 + thumb_func_start MonIsShiny +MonIsShiny: ; 0x02068A80 + ldr r3, _02068A84 ; =BoxMonIsShiny bx r3 .balign 4 -_02068A84: .word FUN_02068A88 +_02068A84: .word BoxMonIsShiny - thumb_func_start FUN_02068A88 -FUN_02068A88: ; 0x02068A88 + thumb_func_start BoxMonIsShiny +BoxMonIsShiny: ; 0x02068A88 push {r3-r5, lr} mov r1, #0x7 mov r2, #0x0 @@ -4551,12 +4552,12 @@ FUN_02068A88: ; 0x02068A88 bl GetBoxMonDataEncrypted add r1, r0, #0x0 add r0, r4, #0x0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02068AAC -FUN_02068AAC: ; 0x02068AAC + thumb_func_start CalcShininessByOtIdAndPersonality +CalcShininessByOtIdAndPersonality: ; 0x02068AAC ldr r3, _02068AD4 ; =0xFFFF0000 lsl r2, r1, #0x10 and r1, r3 @@ -4582,8 +4583,8 @@ _02068ACE: .balign 4 _02068AD4: .word 0xFFFF0000 - thumb_func_start FUN_02068AD8 -FUN_02068AD8: ; 0x02068AD8 + thumb_func_start GenerateShinyPersonality +GenerateShinyPersonality: ; 0x02068AD8 push {r3-r7, lr} add r7, r0, #0x0 ldr r0, _02068B64 ; =0xFFFF0000 @@ -4678,7 +4679,7 @@ FUN_02068B70: ; 0x02068B70 bl GetBoxMonGenderEncrypted str r0, [sp, #0x14] add r0, r5, #0x0 - bl FUN_02068A88 + bl BoxMonIsShiny mov r1, #0x0 add r7, r0, #0x0 add r0, r5, #0x0 @@ -4738,30 +4739,30 @@ FUN_02068C00: ; 0x02068C00 strh r1, [r4, #0x6] strb r1, [r4, #0x8] str r1, [r4, #0xc] - ldr r1, _02068E0C ; =0x000001A5 + ldr r1, _02068E0C ; =SPECIES_CHERRIM cmp r0, r1 bgt _02068C68 bge _02068D1E add r6, r1, #0x0 - sub r6, #0x46 + sub r6, #SPECIES_CHERRIM-SPECIES_CASTFORM cmp r0, r6 bgt _02068C36 - sub r1, #0x46 + sub r1, #SPECIES_CHERRIM-SPECIES_CASTFORM cmp r0, r1 blt _02068C2E b _02068D58 _02068C2E: - cmp r0, #0xc9 + cmp r0, #SPECIES_UNOWN bne _02068C34 b _02068D90 _02068C34: b _02068DD4 _02068C36: add r6, r1, #0x0 - sub r6, #0x23 + sub r6, #SPECIES_CHERRIM-SPECIES_DEOXYS cmp r0, r6 bgt _02068C48 - sub r1, #0x23 + sub r1, #SPECIES_CHERRIM-SPECIES_DEOXYS cmp r0, r1 bne _02068C46 b _02068D76 @@ -4769,56 +4770,56 @@ _02068C46: b _02068DD4 _02068C48: add r6, r1, #0x0 - sub r6, #0x8 + sub r6, #SPECIES_CHERRIM-SPECIES_WORMADAM cmp r0, r6 bgt _02068C66 add r6, r1, #0x0 - sub r6, #0x9 + sub r6, #SPECIES_CHERRIM-SPECIES_BURMY cmp r0, r6 blt _02068C66 add r6, r1, #0x0 - sub r6, #0x9 + sub r6, #SPECIES_CHERRIM-SPECIES_BURMY cmp r0, r6 beq _02068CAA - sub r1, #0x8 + sub r1, #SPECIES_CHERRIM-SPECIES_WORMADAM cmp r0, r1 beq _02068CC8 _02068C66: b _02068DD4 _02068C68: add r6, r1, #0x0 - add r6, #0x48 + add r6, #SPECIES_ARCEUS-SPECIES_CHERRIM cmp r0, r6 bgt _02068C8E add r6, r1, #0x0 - add r6, #0x48 + add r6, #SPECIES_ARCEUS-SPECIES_CHERRIM cmp r0, r6 bge _02068D3A - add r6, r1, #0x2 + add r6, r1, #SPECIES_GASTRODON-SPECIES_CHERRIM cmp r0, r6 bgt _02068C8C - add r6, r1, #0x1 + add r6, r1, #SPECIES_SHELLOS-SPECIES_CHERRIM cmp r0, r6 blt _02068C8C beq _02068CE6 - add r1, r1, #0x2 + add r1, r1, #SPECIES_GASTRODON-SPECIES_CHERRIM cmp r0, r1 beq _02068D02 _02068C8C: b _02068DD4 _02068C8E: add r6, r1, #0x0 - add r6, #0x49 + add r6, #SPECIES_EGG-SPECIES_CHERRIM cmp r0, r6 bgt _02068CA0 - add r1, #0x49 + add r1, #SPECIES_EGG-SPECIES_CHERRIM cmp r0, r1 bne _02068C9E b _02068DAC _02068C9E: b _02068DD4 _02068CA0: - add r1, #0x4a + add r1, #SPECIES_MANAPHY_EGG-SPECIES_CHERRIM cmp r0, r1 bne _02068CA8 b _02068DC4 @@ -6710,7 +6711,7 @@ _02069A8E: add r2, sp, #0x0 bl SetMonDataEncrypted mov r0, #0x0 - bl FUN_020256BC + bl CreateNewSealsObject add r5, r0, #0x0 add r0, r4, #0x0 mov r1, #0xa9 diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s index 43e29bb0..37665648 100644 --- a/arm9/asm/scrcmd_12.s +++ b/arm9/asm/scrcmd_12.s @@ -371,7 +371,7 @@ FUN_02042F6C: ; 0x02042F6C cmp r0, #0x1 bne _02042FE6 add r0, r6, #0x0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #0x0 beq _02042FE8 _02042FD0: @@ -380,7 +380,7 @@ _02042FD0: add r1, r0, #0x0 add r0, r6, #0x0 str r1, [sp, #0x34] - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #0x0 bne _02042FD0 b _02042FE8 diff --git a/arm9/asm/unk_02025658.s b/arm9/asm/unk_02025658.s index f5837edd..a0a09b95 100644 --- a/arm9/asm/unk_02025658.s +++ b/arm9/asm/unk_02025658.s @@ -6,8 +6,8 @@ .text - thumb_func_start FUN_02025658 -FUN_02025658: ; 0x02025658 + thumb_func_start InitSealsObject +InitSealsObject: ; 0x02025658 push {r3-r5, lr} add r4, r0, #0x0 mov r0, #0x0 @@ -61,19 +61,19 @@ _020256B6: bx lr .balign 4 - thumb_func_start FUN_020256BC -FUN_020256BC: ; 0x020256BC + thumb_func_start CreateNewSealsObject +CreateNewSealsObject: ; 0x020256BC push {r4, lr} mov r1, #0x38 bl AllocFromHeapAtEnd add r4, r0, #0x0 - bl FUN_02025658 + bl InitSealsObject add r0, r4, #0x0 pop {r4, pc} .balign 4 - thumb_func_start FUN_020256D0 -FUN_020256D0: ; 0x020256D0 + thumb_func_start CopySealsObject +CopySealsObject: ; 0x020256D0 ldr r3, _020256D8 ; =MI_CpuCopy8 mov r2, #0x38 bx r3 @@ -88,7 +88,7 @@ FUN_020256DC: ; 0x020256DC add r5, r0, #0x0 add r6, r1, #0x0 add r4, r2, #0x0 - bl FUN_02025658 + bl InitSealsObject add r0, r7, #0x0 strb r6, [r5, #0x7] bl FUN_0206BB1C @@ -299,7 +299,7 @@ FUN_0202584C: ; 0x0202584C mov r4, #0x0 _02025852: add r0, r5, #0x0 - bl FUN_02025658 + bl InitSealsObject add r4, r4, #0x1 add r5, #0x38 cmp r4, #0x14 @@ -326,7 +326,7 @@ FUN_02025878: ; 0x02025878 bl FUN_02025940 cmp r0, #0x0 beq _02025886 - bl FUN_02025658 + bl InitSealsObject _02025886: pop {r3, pc} @@ -338,7 +338,7 @@ FUN_02025888: ; 0x02025888 add r1, r0, #0x0 beq _0202589A add r0, r4, #0x0 - bl FUN_020256D0 + bl CopySealsObject _0202589A: pop {r4, pc} @@ -362,13 +362,13 @@ FUN_020258B0: ; 0x020258B0 bl FUN_02025940 add r4, r0, #0x0 add r0, r5, #0x0 - bl FUN_020256BC + bl CreateNewSealsObject add r5, r0, #0x0 cmp r4, #0x0 beq _020258CE add r0, r4, #0x0 add r1, r5, #0x0 - bl FUN_020256D0 + bl CopySealsObject _020258CE: add r0, r5, #0x0 pop {r3-r5, pc} @@ -382,11 +382,11 @@ FUN_020258D4: ; 0x020258D4 cmp r0, #0x0 bne _020258E8 add r0, r4, #0x0 - bl FUN_02025658 + bl InitSealsObject pop {r4, pc} _020258E8: add r1, r4, #0x0 - bl FUN_020256D0 + bl CopySealsObject pop {r4, pc} thumb_func_start FUN_020258F0 diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s index 8944e0b3..dce3e575 100644 --- a/arm9/asm/unk_020476CC.s +++ b/arm9/asm/unk_020476CC.s @@ -677,7 +677,7 @@ _02047C40: mov r2, #0x0 bl GetMonDataEncrypted add r1, r7, #0x0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel str r0, [sp, #0x18] add r0, r5, #0x0 mov r1, #0x8 diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s index 2aea9e30..cc2e0ae8 100644 --- a/arm9/asm/unk_020653EC.s +++ b/arm9/asm/unk_020653EC.s @@ -1617,7 +1617,7 @@ FUN_02066070: ; 0x02066070 lsl r1, r1, #0x4 str r0, [r6, r1] add r0, r5, #0x0 - bl FUN_020256BC + bl CreateNewSealsObject add r7, r0, #0x0 add r0, r6, #0x0 str r0, [sp, #0x10] diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index 9265cbd9..561ba6c3 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -2169,7 +2169,7 @@ _0206D8EA: add r2, sp, #0x0 bl SetMonDataEncrypted ldr r0, [r4, #0x5c] - bl FUN_020256BC + bl CreateNewSealsObject add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa9 diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index 11d65c38..241778d5 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -2013,7 +2013,7 @@ _0207AC1E: ldrh r0, [r5, #0xc] lsl r1, r1, #0x19 lsr r1, r1, #0x19 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel str r0, [r5, #0x1c] ldrb r0, [r5, #0x12] lsl r0, r0, #0x19 @@ -2025,7 +2025,7 @@ _0207AC1E: _0207ACAA: ldrh r0, [r5, #0xc] add r1, r1, #0x1 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel _0207ACB2: str r0, [r5, #0x20] add r0, r6, #0x0 @@ -2243,7 +2243,7 @@ _0207AE7C: str r0, [r5, #0x50] _0207AE84: add r0, r6, #0x0 - bl FUN_02068A80 + bl MonIsShiny cmp r0, #0x1 ldr r1, [r5, #0x50] bne _0207AE98 diff --git a/arm9/asm/unk_020828BC.s b/arm9/asm/unk_020828BC.s index fb6f03c8..d3c740aa 100644 --- a/arm9/asm/unk_020828BC.s +++ b/arm9/asm/unk_020828BC.s @@ -765,7 +765,7 @@ FUN_02082D60: ; 0x02082D60 lsl r1, r1, #0x18 lsr r1, r1, #0x18 mov r2, #0x0 - bl FUN_02066E74 + bl AdjustPersonalityToForceGenderAndNature mov r1, #0x1 str r1, [sp, #0x0] str r0, [sp, #0x4] diff --git a/arm9/asm/unk_020854E0.s b/arm9/asm/unk_020854E0.s index 0921775e..8cee9952 100644 --- a/arm9/asm/unk_020854E0.s +++ b/arm9/asm/unk_020854E0.s @@ -46,9 +46,9 @@ FUN_020854E0: ; 0x020854E0 strh r0, [r4, #0xc] ldr r0, [sp, #0x20] str r5, [r4, #0x10] - bl FUN_020256BC + bl CreateNewSealsObject str r0, [r4, #0x14] - bl FUN_02025658 + bl InitSealsObject ldr r0, [r4, #0x14] mov r1, #0xff add r2, r6, #0x0 @@ -106,7 +106,7 @@ FUN_02085578: ; 0x02085578 strh r0, [r4, #0x0] str r5, [r4, #0x10] add r0, r7, #0x0 - bl FUN_020256BC + bl CreateNewSealsObject str r0, [r4, #0x14] ldr r2, [r4, #0x14] add r0, r6, #0x0 @@ -133,7 +133,7 @@ FUN_020855B0: ; 0x020855B0 strh r0, [r4, #0x0] add r0, r7, #0x0 str r5, [r4, #0x10] - bl FUN_020256BC + bl CreateNewSealsObject add r1, r6, #0x0 str r0, [r4, #0x14] bl FUN_020257D0 @@ -213,7 +213,7 @@ FUN_02085644: ; 0x02085644 cmp r6, r0 beq _0208569E add r0, r4, #0x0 - bl FUN_020256BC + bl CreateNewSealsObject add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa9 @@ -225,7 +225,7 @@ FUN_02085644: ; 0x02085644 add r3, r4, #0x0 bl FUN_02025888 add r0, r4, #0x0 - bl FUN_02025658 + bl InitSealsObject add r0, r5, #0x0 mov r1, #0xa9 add r2, r4, #0x0 diff --git a/arm9/global.inc b/arm9/global.inc index db7e72c3..ce1debbd 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1629,10 +1629,10 @@ .extern FUN_020254F8 .extern FUN_02025520 .extern FUN_02025614 -.extern FUN_02025658 +.extern InitSealsObject .extern FUN_020256AC -.extern FUN_020256BC -.extern FUN_020256D0 +.extern CreateNewSealsObject +.extern CopySealsObject .extern FUN_020256DC .extern FUN_020257C0 .extern FUN_020257C4 @@ -4715,8 +4715,8 @@ .extern CreateMon .extern CreateMonWithNature .extern CreateMonWithNatureGenderLetter -.extern FUN_02066E74 -.extern FUN_02066EA4 +.extern AdjustPersonalityToForceGenderAndNature +.extern CreateMonWithFixedIVs .extern UpdateMonLevelAndRecalcStats .extern CalcMonStatsMaybeEncrypted .extern GetMonDataEncrypted @@ -4729,10 +4729,10 @@ .extern FreeMonPersonal .extern GetMonBaseStat_HandleFormeConversion .extern GetMonBaseStat -.extern FUN_02068698 +.extern GetPercentProgressTowardsNextLevel .extern CalcMonExpToNextLevelEncrypted -.extern FUN_02068734 -.extern GetMonExpByLevel +.extern GetMonBaseExperienceAtCurrentLevel +.extern GetMonExpBySpeciesAndLevel .extern CalcMonLevelEncrypted .extern CalcBoxMonLevelEncrypted .extern CalcLevelBySpeciesAndExp @@ -4745,9 +4745,9 @@ .extern GetBoxMonGenderEncrypted .extern GetGenderBySpeciesAndPersonality .extern GetGenderBySpeciesAndPersonality_PreloadedPersonal -.extern FUN_02068A80 -.extern FUN_02068AAC -.extern FUN_02068AD8 +.extern MonIsShiny +.extern CalcShininessByOtIdAndPersonality +.extern GenerateShinyPersonality .extern FUN_02068B68 .extern FUN_02068B70 .extern FUN_02068C00 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 72d4bbbd..f351ccb6 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -44526,7 +44526,7 @@ MOD05_021ED00C: ; 0x021ED00C beq _021ED05E add r0, r6, #0 add r1, r4, #0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #0 bne _021ED05E mov r5, #0 @@ -44536,7 +44536,7 @@ _021ED044: add r4, r0, #0 add r0, r6, #0 add r1, r4, #0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #0 bne _021ED05E add r5, r5, #1 @@ -45429,7 +45429,7 @@ _021ED6B4: bne _021ED788 ldr r0, [sp, #0x2c] add r1, r7, #0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #0 beq _021ED788 _021ED774: @@ -45438,7 +45438,7 @@ _021ED774: add r7, r0, #0 ldr r0, [sp, #0x2c] add r1, r7, #0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #0 bne _021ED774 _021ED788: diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index 2f478ef3..bb887c23 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -6612,7 +6612,7 @@ _0223C8D2: mov r7, #1 _0223C8E0: add r0, r5, #0 - bl FUN_02068AD8 + bl GenerateShinyPersonality add r4, r0, #0 cmp r7, #0 beq _0223C92E @@ -6632,7 +6632,7 @@ _0223C904: cmp r7, r0 bne _0223C92E add r0, r5, #0 - bl FUN_02068AD8 + bl GenerateShinyPersonality add r4, r0, #0 b _0223C8EC _0223C914: @@ -6644,7 +6644,7 @@ _0223C914: cmp r0, r1 beq _0223C92E add r0, r5, #0 - bl FUN_02068AD8 + bl GenerateShinyPersonality add r4, r0, #0 b _0223C8EC _0223C92E: @@ -7622,7 +7622,7 @@ MOD06_0223D044: ; 0x0223D044 add r0, r4, #0 lsr r1, r1, #0x10 add r2, r7, #0 - bl FUN_02066EA4 + bl CreateMonWithFixedIVs add r0, r4, #0 mov r1, #7 add r2, sp, #0x30 @@ -21909,7 +21909,7 @@ MOD06_02244388: ; 0x02244388 lsr r1, r1, #0x15 mov r2, #0x32 and r3, r4 - bl FUN_02066EA4 + bl CreateMonWithFixedIVs ldrh r0, [r6] add r2, sp, #8 add r2, #1 @@ -22165,7 +22165,7 @@ _022445A6: mov r2, #0 bl GetMonDataEncrypted mov r1, #0x32 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel str r0, [sp, #8] add r0, r4, #0 mov r1, #8 @@ -22587,7 +22587,7 @@ _022448EC: beq _0224491A ldr r0, [sp] add r1, r7, #0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #1 beq _022448EC _0224491A: @@ -31215,7 +31215,7 @@ MOD06_022489D4: ; 0x022489D4 add r0, r5, #0 bl UpdateMonLevelAndRecalcStats add r0, r5, #0 - bl FUN_02068A80 + bl MonIsShiny cmp r0, #0 beq _02248B08 bl ErrorHandling diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s index 9ac54172..69df6bf9 100644 --- a/arm9/modules/09/asm/module_09.s +++ b/arm9/modules/09/asm/module_09.s @@ -2588,7 +2588,7 @@ _022132C2: ldrh r0, [r4, #8] lsl r1, r1, #0x19 lsr r1, r1, #0x19 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel str r0, [r4, #0x24] ldrb r0, [r6, r5] lsl r0, r0, #0x19 @@ -2604,7 +2604,7 @@ _0221335A: add r1, r1, #1 add r4, r0, r5 ldrh r0, [r4, #8] - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel _02213366: str r0, [r4, #0x28] ldr r0, [r4, #4] diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index dd2316a4..dba629d4 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -26891,7 +26891,7 @@ _0223A9D6: bl GetMonDataEncrypted str r0, [sp, #0x48] add r0, r6, #0 - bl FUN_02068734 + bl GetMonBaseExperienceAtCurrentLevel ldr r1, [sp, #0x48] sub r0, r1, r0 str r0, [r4, #0x3c] @@ -43626,7 +43626,7 @@ _02242D2E: ldr r0, _02242FA8 ; =0x00002D66 add r6, r7, r0 add r0, r4, #0 - bl FUN_02068A80 + bl MonIsShiny ldrb r1, [r6, r5] mov r2, #0x20 lsl r0, r0, #0x1f @@ -81124,7 +81124,7 @@ _022550D0: _022550EA: ldr r0, [sp, #0x10] ldr r1, [sp, #0xc] - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel mov r1, #0xc0 mul r1, r4 add r2, r5, r1 @@ -81135,11 +81135,11 @@ _022550EA: str r0, [sp, #0x1c] ldr r0, [sp, #0x10] add r1, r1, #1 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add r5, r0, #0 ldr r0, [sp, #0x10] ldr r1, [sp, #0xc] - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel sub r0, r5, r0 str r0, [sp, #0x20] ldrh r1, [r7, r6] @@ -81323,7 +81323,7 @@ _02255284: b _02255294 _0225528E: add r0, r4, #0 - bl FUN_02068698 + bl GetPercentProgressTowardsNextLevel _02255294: strb r0, [r5, #2] add r5, r5, #1 @@ -82432,7 +82432,7 @@ _02255B04: _02255B12: add r0, r7, #0 add r1, r6, #0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel ldr r1, _02255B64 ; =0x00002DA4 add r2, r5, r4 ldr r1, [r2, r1] @@ -82440,11 +82440,11 @@ _02255B12: str r0, [sp, #0x18] add r0, r7, #0 add r1, r6, #1 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add r4, r0, #0 add r0, r7, #0 add r1, r6, #0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel sub r0, r4, r0 str r0, [sp, #0x1c] mov r0, #0x14 @@ -82494,7 +82494,7 @@ MOD11_02255B68: ; 0x02255B68 add r1, r6, #0 str r0, [sp, #0x10] add r0, r7, #0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel mov r1, #0xc0 mul r1, r4 add r2, r5, r1 @@ -82504,11 +82504,11 @@ MOD11_02255B68: ; 0x02255B68 str r0, [sp, #0x14] add r0, r7, #0 add r1, r6, #1 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add r5, r0, #0 add r0, r7, #0 add r1, r6, #0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel sub r0, r5, r0 str r0, [sp, #0x18] mov r0, #0x10 @@ -83183,7 +83183,7 @@ _022560BA: _022560D4: ldr r0, [sp, #0xc] ldr r1, [sp, #8] - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel mov r1, #0xc0 mul r1, r4 add r2, r5, r1 @@ -83194,11 +83194,11 @@ _022560D4: str r0, [sp, #0x18] ldr r0, [sp, #0xc] add r1, r1, #1 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add r5, r0, #0 ldr r0, [sp, #0xc] ldr r1, [sp, #8] - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel sub r0, r5, r0 str r0, [sp, #0x1c] ldrh r1, [r7, r6] diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index acf2d363..68dae7ae 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -18454,7 +18454,7 @@ _02236736: ldrb r0, [r4, #0xd] lsl r0, r0, #2 ldr r0, [r1, r0] - bl FUN_02068A80 + bl MonIsShiny str r0, [sp, #0x20] ldr r0, [r4] mov r2, #0 @@ -18492,7 +18492,7 @@ _02236736: ldr r0, [r4] ldr r0, [r0, #0xc] ldr r0, [r0, r5] - bl FUN_02068A80 + bl MonIsShiny str r0, [sp, #0x10] ldr r0, [r4] mov r1, #0x70 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 0ce9b5c7..e1d37212 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -23888,7 +23888,7 @@ MOD83_02238F94: ; 0x02238F94 bl GetMonGenderEncrypted str r0, [sp, #0x24] ldr r0, [sp, #0x20] - bl FUN_02068A80 + bl MonIsShiny lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] diff --git a/include/pokemon.h b/include/pokemon.h index 68cc0d59..71c1fb67 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -99,7 +99,7 @@ #define MON_DATA_SPEED 166 #define MON_DATA_SPATK 167 #define MON_DATA_SPDEF 168 -#define MON_DATA_SEAL_TYPES_MAYBE 169 +#define MON_DATA_SEAL_STRUCT 169 #define MON_DATA_SEAL_COORDS 170 #define MON_DATA_SPECIES_EXISTS 171 #define MON_DATA_SANITY_CHECK_172 172 @@ -381,9 +381,28 @@ struct Pokemon { int GetMonBaseStat_HandleFormeConversion(int species, int form, int stat_id); int GetMonBaseStat(int species, int stat_id); -int GetMonExpByLevel(int species, int level); +int GetMonExpBySpeciesAndLevel(int species, int level); void LoadGrowthTable(int species, int * table); int GetExpByGrowthRateAndLevel(int rate, int level); int CalcLevelBySpeciesAndExp(int species, int experience); +void CreateMon(struct Pokemon * pokemon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId, ...); +void CreateBoxMon(struct BoxPokemon * boxPokemon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId, ...); +void CreateMonWithNatureGenderLetter(struct Pokemon * pokemon, u16 species, u8 level, u8 nature, u8 gender, u8 letter); + +#ifndef IN_POKEMON_C +u32 GetMonData(); +u32 GetMonDataEncrypted(); +u32 GetBoxMonData(); +u32 GetBoxMonDataEncrypted(); +#else +u32 GetMonData(struct Pokemon * pokemon, u32 attr, void * ptr); +u32 GetMonDataEncrypted(struct Pokemon * pokemon, u32 attr, void * ptr); +u32 GetBoxMonData(struct BoxPokemon * pokemon, u32 attr, void * ptr); +u32 GetBoxMonDataEncrypted(struct BoxPokemon * pokemon, u32 attr, void * ptr); +#endif +void SetMonData(struct Pokemon * pokemon, u32 attr, void * ptr); +void SetBoxMonData(struct BoxPokemon * pokemon, u32 attr, void * ptr); +void AddMonData(struct Pokemon * pokemon, u32 attr, u32 amount); +void AddBoxMonData(struct Pokemon * pokemon, u32 attr, u32 amount); #endif //POKEDIAMOND_POKEMON_H -- cgit v1.2.3 From a85ca78e68db190d139f61c959a4aea8803aa76b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 11 Jun 2020 16:02:17 -0400 Subject: More pokemon.s method names; annotate species imms in FUN_02068C00 --- arm9/asm/pokemon.s | 133 ++++++++++++++++++++-------------------- arm9/asm/scrcmd_12.s | 4 +- arm9/asm/unk_02025658.s | 30 ++++----- arm9/asm/unk_020476CC.s | 2 +- arm9/asm/unk_020653EC.s | 2 +- arm9/asm/unk_0206C700.s | 2 +- arm9/asm/unk_02079C70.s | 6 +- arm9/asm/unk_020828BC.s | 2 +- arm9/asm/unk_020854E0.s | 12 ++-- arm9/global.inc | 22 +++---- arm9/modules/05/asm/module_05.s | 8 +-- arm9/modules/06/asm/module_06.s | 16 ++--- arm9/modules/09/asm/module_09.s | 4 +- arm9/modules/11/asm/module_11.s | 30 ++++----- arm9/modules/12/asm/module_12.s | 4 +- arm9/modules/83/asm/module_83.s | 2 +- include/pokemon.h | 23 ++++++- 17 files changed, 161 insertions(+), 141 deletions(-) diff --git a/arm9/asm/pokemon.s b/arm9/asm/pokemon.s index 3bfbd197..ec6ac699 100644 --- a/arm9/asm/pokemon.s +++ b/arm9/asm/pokemon.s @@ -336,7 +336,7 @@ CreateMon: ; 0x02066ACC add r2, sp, #0x48 bl SetMonDataEncrypted mov r0, #0x0 - bl FUN_020256BC + bl CreateNewSealsObject add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa9 @@ -390,6 +390,7 @@ _02066B8E: mov r1, #0x0 add r2, sp, #0x34 bl SetBoxMonDataEncrypted + // If otIdType == 2, generate a random OT ID that prevents shininess ldr r0, [sp, #0x38] cmp r0, #0x2 bne _02066BD6 @@ -444,7 +445,7 @@ _02066BDE: bl SetBoxMonDataEncrypted ldr r0, [sp, #0x24] ldr r1, [sp, #0x28] - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0x8 @@ -709,7 +710,7 @@ _02066E4C: ldr r0, [sp, #0x14] add r1, r6, #0x0 add r2, r7, #0x0 - bl FUN_02066E74 + bl AdjustPersonalityToForceGenderAndNature add r4, r0, #0x0 _02066E58: mov r0, #0x1 @@ -726,8 +727,8 @@ _02066E58: add sp, #0x24 pop {r4-r7, pc} - thumb_func_start FUN_02066E74 -FUN_02066E74: ; 0x02066E74 + thumb_func_start AdjustPersonalityToForceGenderAndNature +AdjustPersonalityToForceGenderAndNature: ; 0x02066E74 push {r3-r5, lr} add r5, r1, #0x0 mov r1, #0x12 @@ -752,8 +753,8 @@ _02066EA0: add r0, r4, #0x0 pop {r3-r5, pc} - thumb_func_start FUN_02066EA4 -FUN_02066EA4: ; 0x02066EA4 + thumb_func_start CreateMonWithFixedIVs +CreateMonWithFixedIVs: ; 0x02066EA4 push {r0-r3} push {r4, lr} sub sp, #0x10 @@ -1239,7 +1240,7 @@ _02067298: _0206729E: add r0, #0x9c add r1, r2, #0x0 - bl FUN_020256D0 + bl CopySealsObject mov r0, #0x1 pop {r3, pc} _020672AA: @@ -2176,7 +2177,7 @@ _02067940: add r3, #0x9c add r0, r2, #0x0 add r1, r3, #0x0 - bl FUN_020256D0 + bl CopySealsObject pop {r3, pc} _0206794C: add r3, #0xd4 @@ -3142,7 +3143,7 @@ _02068066: add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 - bl AddMonPartyStat + bl AddMonData ldrh r0, [r5, #0x4] lsl r0, r0, #0x1f lsr r0, r0, #0x1f @@ -3166,8 +3167,8 @@ _0206809C: pop {r4-r6, pc} .balign 4 - thumb_func_start AddMonPartyStat -AddMonPartyStat: ; 0x020680A0 + thumb_func_start AddMonData +AddMonData: ; 0x020680A0 push {r3, lr} add r3, r1, #0x0 sub r3, #0x9f @@ -3216,12 +3217,12 @@ _020680F2: bl ErrorHandling pop {r3, pc} _020680F8: - bl FUN_02068100 + bl AddBoxMonData pop {r3, pc} .balign 4 - thumb_func_start FUN_02068100 -FUN_02068100: ; 0x02068100 + thumb_func_start AddBoxMonData +AddBoxMonData: ; 0x02068100 push {r4-r7, lr} sub sp, #0xc add r7, r1, #0x0 @@ -3441,14 +3442,14 @@ _0206814E: ; jump table (using 16-bit offset) _020682B4: ldrh r0, [r4, #0x0] mov r1, #0x64 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel ldr r1, [r4, #0x8] add r1, r1, r6 cmp r1, r0 bls _020682D2 ldrh r0, [r4, #0x0] mov r1, #0x64 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add sp, #0xc str r0, [r4, #0x8] pop {r4-r7, pc} @@ -4008,8 +4009,8 @@ GetMonBaseStat: ; 0x02068678 pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02068698 -FUN_02068698: ; 0x02068698 + thumb_func_start GetPercentProgressTowardsNextLevel +GetPercentProgressTowardsNextLevel: ; 0x02068698 push {r3-r7, lr} add r5, r0, #0x0 bl TryDecryptMon @@ -4028,11 +4029,11 @@ FUN_02068698: ; 0x02068698 lsr r7, r0, #0x18 add r0, r6, #0x0 add r1, r7, #0x0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add r4, r0, #0x0 add r0, r6, #0x0 add r1, r7, #0x1 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0x8 @@ -4079,12 +4080,12 @@ CalcBoxMonExpToNextLevelEncrypted: ; 0x02068700 add r4, r0, #0x0 add r0, r6, #0x0 add r1, r5, #0x0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel sub r0, r0, r4 pop {r4-r6, pc} - thumb_func_start FUN_02068734 -FUN_02068734: ; 0x02068734 + thumb_func_start GetMonBaseExperienceAtCurrentLevel +GetMonBaseExperienceAtCurrentLevel: ; 0x02068734 push {r3-r5, lr} add r5, r0, #0x0 mov r1, #0x5 @@ -4097,12 +4098,12 @@ FUN_02068734: ; 0x02068734 bl GetMonDataEncrypted add r1, r0, #0x0 add r0, r4, #0x0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel pop {r3-r5, pc} .balign 4 - thumb_func_start GetMonExpByLevel -GetMonExpByLevel: ; 0x02068758 + thumb_func_start GetMonExpBySpeciesAndLevel +GetMonExpBySpeciesAndLevel: ; 0x02068758 push {r4, lr} add r4, r1, #0x0 mov r1, #0x15 @@ -4530,15 +4531,15 @@ _02068A78: pop {r4, pc} .balign 4 - thumb_func_start FUN_02068A80 -FUN_02068A80: ; 0x02068A80 - ldr r3, _02068A84 ; =FUN_02068A88 + thumb_func_start MonIsShiny +MonIsShiny: ; 0x02068A80 + ldr r3, _02068A84 ; =BoxMonIsShiny bx r3 .balign 4 -_02068A84: .word FUN_02068A88 +_02068A84: .word BoxMonIsShiny - thumb_func_start FUN_02068A88 -FUN_02068A88: ; 0x02068A88 + thumb_func_start BoxMonIsShiny +BoxMonIsShiny: ; 0x02068A88 push {r3-r5, lr} mov r1, #0x7 mov r2, #0x0 @@ -4551,12 +4552,12 @@ FUN_02068A88: ; 0x02068A88 bl GetBoxMonDataEncrypted add r1, r0, #0x0 add r0, r4, #0x0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality pop {r3-r5, pc} .balign 4 - thumb_func_start FUN_02068AAC -FUN_02068AAC: ; 0x02068AAC + thumb_func_start CalcShininessByOtIdAndPersonality +CalcShininessByOtIdAndPersonality: ; 0x02068AAC ldr r3, _02068AD4 ; =0xFFFF0000 lsl r2, r1, #0x10 and r1, r3 @@ -4582,8 +4583,8 @@ _02068ACE: .balign 4 _02068AD4: .word 0xFFFF0000 - thumb_func_start FUN_02068AD8 -FUN_02068AD8: ; 0x02068AD8 + thumb_func_start GenerateShinyPersonality +GenerateShinyPersonality: ; 0x02068AD8 push {r3-r7, lr} add r7, r0, #0x0 ldr r0, _02068B64 ; =0xFFFF0000 @@ -4678,7 +4679,7 @@ FUN_02068B70: ; 0x02068B70 bl GetBoxMonGenderEncrypted str r0, [sp, #0x14] add r0, r5, #0x0 - bl FUN_02068A88 + bl BoxMonIsShiny mov r1, #0x0 add r7, r0, #0x0 add r0, r5, #0x0 @@ -4692,7 +4693,7 @@ FUN_02068B70: ; 0x02068B70 mov r1, #0x5 mov r2, #0x0 bl GetBoxMonDataEncrypted - ldr r1, _02068BFC ; =0x000001EA + ldr r1, _02068BFC ; =SPECIES_MANAPHY cmp r0, r1 bne _02068BC6 mov r0, #0x1 @@ -4723,7 +4724,7 @@ _02068BD8: pop {r4-r7, pc} nop _02068BF8: .word SPECIES_EGG -_02068BFC: .word 0x000001EA +_02068BFC: .word SPECIES_MANAPHY thumb_func_start FUN_02068C00 FUN_02068C00: ; 0x02068C00 @@ -4738,30 +4739,30 @@ FUN_02068C00: ; 0x02068C00 strh r1, [r4, #0x6] strb r1, [r4, #0x8] str r1, [r4, #0xc] - ldr r1, _02068E0C ; =0x000001A5 + ldr r1, _02068E0C ; =SPECIES_CHERRIM cmp r0, r1 bgt _02068C68 bge _02068D1E add r6, r1, #0x0 - sub r6, #0x46 + sub r6, #SPECIES_CHERRIM-SPECIES_CASTFORM cmp r0, r6 bgt _02068C36 - sub r1, #0x46 + sub r1, #SPECIES_CHERRIM-SPECIES_CASTFORM cmp r0, r1 blt _02068C2E b _02068D58 _02068C2E: - cmp r0, #0xc9 + cmp r0, #SPECIES_UNOWN bne _02068C34 b _02068D90 _02068C34: b _02068DD4 _02068C36: add r6, r1, #0x0 - sub r6, #0x23 + sub r6, #SPECIES_CHERRIM-SPECIES_DEOXYS cmp r0, r6 bgt _02068C48 - sub r1, #0x23 + sub r1, #SPECIES_CHERRIM-SPECIES_DEOXYS cmp r0, r1 bne _02068C46 b _02068D76 @@ -4769,56 +4770,56 @@ _02068C46: b _02068DD4 _02068C48: add r6, r1, #0x0 - sub r6, #0x8 + sub r6, #SPECIES_CHERRIM-SPECIES_WORMADAM cmp r0, r6 bgt _02068C66 add r6, r1, #0x0 - sub r6, #0x9 + sub r6, #SPECIES_CHERRIM-SPECIES_BURMY cmp r0, r6 blt _02068C66 add r6, r1, #0x0 - sub r6, #0x9 + sub r6, #SPECIES_CHERRIM-SPECIES_BURMY cmp r0, r6 beq _02068CAA - sub r1, #0x8 + sub r1, #SPECIES_CHERRIM-SPECIES_WORMADAM cmp r0, r1 beq _02068CC8 _02068C66: b _02068DD4 _02068C68: add r6, r1, #0x0 - add r6, #0x48 + add r6, #SPECIES_ARCEUS-SPECIES_CHERRIM cmp r0, r6 bgt _02068C8E add r6, r1, #0x0 - add r6, #0x48 + add r6, #SPECIES_ARCEUS-SPECIES_CHERRIM cmp r0, r6 bge _02068D3A - add r6, r1, #0x2 + add r6, r1, #SPECIES_GASTRODON-SPECIES_CHERRIM cmp r0, r6 bgt _02068C8C - add r6, r1, #0x1 + add r6, r1, #SPECIES_SHELLOS-SPECIES_CHERRIM cmp r0, r6 blt _02068C8C beq _02068CE6 - add r1, r1, #0x2 + add r1, r1, #SPECIES_GASTRODON-SPECIES_CHERRIM cmp r0, r1 beq _02068D02 _02068C8C: b _02068DD4 _02068C8E: add r6, r1, #0x0 - add r6, #0x49 + add r6, #SPECIES_EGG-SPECIES_CHERRIM cmp r0, r6 bgt _02068CA0 - add r1, #0x49 + add r1, #SPECIES_EGG-SPECIES_CHERRIM cmp r0, r1 bne _02068C9E b _02068DAC _02068C9E: b _02068DD4 _02068CA0: - add r1, #0x4a + add r1, #SPECIES_MANAPHY_EGG-SPECIES_CHERRIM cmp r0, r1 bne _02068CA8 b _02068DC4 @@ -5012,7 +5013,7 @@ _02068DE2: strh r2, [r4, #0x2] add r1, r3, r1 strh r1, [r4, #0x4] - ldr r1, _02068E10 ; =0x00000147 + ldr r1, _02068E10 ; =SPECIES_SPINDA cmp r0, r1 bne _02068E06 cmp r5, #0x2 @@ -5026,8 +5027,8 @@ _02068E06: pop {r4-r7} bx lr nop -_02068E0C: .word 0x000001A5 -_02068E10: .word 0x00000147 +_02068E0C: .word SPECIES_CHERRIM +_02068E10: .word SPECIES_SPINDA thumb_func_start FUN_02068E14 FUN_02068E14: ; 0x02068E14 @@ -5062,7 +5063,7 @@ FUN_02068E1C: ; 0x02068E1C mov r1, #0x5 mov r2, #0x0 bl GetBoxMonDataEncrypted - ldr r1, _02068E84 ; =0x000001EA + ldr r1, _02068E84 ; =SPECIES_MANAPHY cmp r0, r1 bne _02068E5E mov r3, #0x1 @@ -5092,7 +5093,7 @@ _02068E84: .word 0x000001EA thumb_func_start FUN_02068E88 FUN_02068E88: ; 0x02068E88 push {r3-r5, lr} - ldr r4, _02068FDC ; =0x000001A5 + ldr r4, _02068FDC ; =SPECIES_CHERRIM cmp r0, r4 bgt _02068ED6 bge _02068F54 @@ -5290,7 +5291,7 @@ _02068FCA: ldrb r0, [r0, #0x0] pop {r3-r5, pc} nop -_02068FDC: .word 0x000001A5 +_02068FDC: .word SPECIES_CHERRIM thumb_func_start FUN_02068FE0 FUN_02068FE0: ; 0x02068FE0 @@ -6710,7 +6711,7 @@ _02069A8E: add r2, sp, #0x0 bl SetMonDataEncrypted mov r0, #0x0 - bl FUN_020256BC + bl CreateNewSealsObject add r5, r0, #0x0 add r0, r4, #0x0 mov r1, #0xa9 diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s index 43e29bb0..37665648 100644 --- a/arm9/asm/scrcmd_12.s +++ b/arm9/asm/scrcmd_12.s @@ -371,7 +371,7 @@ FUN_02042F6C: ; 0x02042F6C cmp r0, #0x1 bne _02042FE6 add r0, r6, #0x0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #0x0 beq _02042FE8 _02042FD0: @@ -380,7 +380,7 @@ _02042FD0: add r1, r0, #0x0 add r0, r6, #0x0 str r1, [sp, #0x34] - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #0x0 bne _02042FD0 b _02042FE8 diff --git a/arm9/asm/unk_02025658.s b/arm9/asm/unk_02025658.s index f5837edd..a0a09b95 100644 --- a/arm9/asm/unk_02025658.s +++ b/arm9/asm/unk_02025658.s @@ -6,8 +6,8 @@ .text - thumb_func_start FUN_02025658 -FUN_02025658: ; 0x02025658 + thumb_func_start InitSealsObject +InitSealsObject: ; 0x02025658 push {r3-r5, lr} add r4, r0, #0x0 mov r0, #0x0 @@ -61,19 +61,19 @@ _020256B6: bx lr .balign 4 - thumb_func_start FUN_020256BC -FUN_020256BC: ; 0x020256BC + thumb_func_start CreateNewSealsObject +CreateNewSealsObject: ; 0x020256BC push {r4, lr} mov r1, #0x38 bl AllocFromHeapAtEnd add r4, r0, #0x0 - bl FUN_02025658 + bl InitSealsObject add r0, r4, #0x0 pop {r4, pc} .balign 4 - thumb_func_start FUN_020256D0 -FUN_020256D0: ; 0x020256D0 + thumb_func_start CopySealsObject +CopySealsObject: ; 0x020256D0 ldr r3, _020256D8 ; =MI_CpuCopy8 mov r2, #0x38 bx r3 @@ -88,7 +88,7 @@ FUN_020256DC: ; 0x020256DC add r5, r0, #0x0 add r6, r1, #0x0 add r4, r2, #0x0 - bl FUN_02025658 + bl InitSealsObject add r0, r7, #0x0 strb r6, [r5, #0x7] bl FUN_0206BB1C @@ -299,7 +299,7 @@ FUN_0202584C: ; 0x0202584C mov r4, #0x0 _02025852: add r0, r5, #0x0 - bl FUN_02025658 + bl InitSealsObject add r4, r4, #0x1 add r5, #0x38 cmp r4, #0x14 @@ -326,7 +326,7 @@ FUN_02025878: ; 0x02025878 bl FUN_02025940 cmp r0, #0x0 beq _02025886 - bl FUN_02025658 + bl InitSealsObject _02025886: pop {r3, pc} @@ -338,7 +338,7 @@ FUN_02025888: ; 0x02025888 add r1, r0, #0x0 beq _0202589A add r0, r4, #0x0 - bl FUN_020256D0 + bl CopySealsObject _0202589A: pop {r4, pc} @@ -362,13 +362,13 @@ FUN_020258B0: ; 0x020258B0 bl FUN_02025940 add r4, r0, #0x0 add r0, r5, #0x0 - bl FUN_020256BC + bl CreateNewSealsObject add r5, r0, #0x0 cmp r4, #0x0 beq _020258CE add r0, r4, #0x0 add r1, r5, #0x0 - bl FUN_020256D0 + bl CopySealsObject _020258CE: add r0, r5, #0x0 pop {r3-r5, pc} @@ -382,11 +382,11 @@ FUN_020258D4: ; 0x020258D4 cmp r0, #0x0 bne _020258E8 add r0, r4, #0x0 - bl FUN_02025658 + bl InitSealsObject pop {r4, pc} _020258E8: add r1, r4, #0x0 - bl FUN_020256D0 + bl CopySealsObject pop {r4, pc} thumb_func_start FUN_020258F0 diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s index 8944e0b3..dce3e575 100644 --- a/arm9/asm/unk_020476CC.s +++ b/arm9/asm/unk_020476CC.s @@ -677,7 +677,7 @@ _02047C40: mov r2, #0x0 bl GetMonDataEncrypted add r1, r7, #0x0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel str r0, [sp, #0x18] add r0, r5, #0x0 mov r1, #0x8 diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s index 2aea9e30..cc2e0ae8 100644 --- a/arm9/asm/unk_020653EC.s +++ b/arm9/asm/unk_020653EC.s @@ -1617,7 +1617,7 @@ FUN_02066070: ; 0x02066070 lsl r1, r1, #0x4 str r0, [r6, r1] add r0, r5, #0x0 - bl FUN_020256BC + bl CreateNewSealsObject add r7, r0, #0x0 add r0, r6, #0x0 str r0, [sp, #0x10] diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index 9265cbd9..561ba6c3 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -2169,7 +2169,7 @@ _0206D8EA: add r2, sp, #0x0 bl SetMonDataEncrypted ldr r0, [r4, #0x5c] - bl FUN_020256BC + bl CreateNewSealsObject add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa9 diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index 11d65c38..241778d5 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -2013,7 +2013,7 @@ _0207AC1E: ldrh r0, [r5, #0xc] lsl r1, r1, #0x19 lsr r1, r1, #0x19 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel str r0, [r5, #0x1c] ldrb r0, [r5, #0x12] lsl r0, r0, #0x19 @@ -2025,7 +2025,7 @@ _0207AC1E: _0207ACAA: ldrh r0, [r5, #0xc] add r1, r1, #0x1 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel _0207ACB2: str r0, [r5, #0x20] add r0, r6, #0x0 @@ -2243,7 +2243,7 @@ _0207AE7C: str r0, [r5, #0x50] _0207AE84: add r0, r6, #0x0 - bl FUN_02068A80 + bl MonIsShiny cmp r0, #0x1 ldr r1, [r5, #0x50] bne _0207AE98 diff --git a/arm9/asm/unk_020828BC.s b/arm9/asm/unk_020828BC.s index fb6f03c8..d3c740aa 100644 --- a/arm9/asm/unk_020828BC.s +++ b/arm9/asm/unk_020828BC.s @@ -765,7 +765,7 @@ FUN_02082D60: ; 0x02082D60 lsl r1, r1, #0x18 lsr r1, r1, #0x18 mov r2, #0x0 - bl FUN_02066E74 + bl AdjustPersonalityToForceGenderAndNature mov r1, #0x1 str r1, [sp, #0x0] str r0, [sp, #0x4] diff --git a/arm9/asm/unk_020854E0.s b/arm9/asm/unk_020854E0.s index 0921775e..8cee9952 100644 --- a/arm9/asm/unk_020854E0.s +++ b/arm9/asm/unk_020854E0.s @@ -46,9 +46,9 @@ FUN_020854E0: ; 0x020854E0 strh r0, [r4, #0xc] ldr r0, [sp, #0x20] str r5, [r4, #0x10] - bl FUN_020256BC + bl CreateNewSealsObject str r0, [r4, #0x14] - bl FUN_02025658 + bl InitSealsObject ldr r0, [r4, #0x14] mov r1, #0xff add r2, r6, #0x0 @@ -106,7 +106,7 @@ FUN_02085578: ; 0x02085578 strh r0, [r4, #0x0] str r5, [r4, #0x10] add r0, r7, #0x0 - bl FUN_020256BC + bl CreateNewSealsObject str r0, [r4, #0x14] ldr r2, [r4, #0x14] add r0, r6, #0x0 @@ -133,7 +133,7 @@ FUN_020855B0: ; 0x020855B0 strh r0, [r4, #0x0] add r0, r7, #0x0 str r5, [r4, #0x10] - bl FUN_020256BC + bl CreateNewSealsObject add r1, r6, #0x0 str r0, [r4, #0x14] bl FUN_020257D0 @@ -213,7 +213,7 @@ FUN_02085644: ; 0x02085644 cmp r6, r0 beq _0208569E add r0, r4, #0x0 - bl FUN_020256BC + bl CreateNewSealsObject add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa9 @@ -225,7 +225,7 @@ FUN_02085644: ; 0x02085644 add r3, r4, #0x0 bl FUN_02025888 add r0, r4, #0x0 - bl FUN_02025658 + bl InitSealsObject add r0, r5, #0x0 mov r1, #0xa9 add r2, r4, #0x0 diff --git a/arm9/global.inc b/arm9/global.inc index db7e72c3..ce1debbd 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1629,10 +1629,10 @@ .extern FUN_020254F8 .extern FUN_02025520 .extern FUN_02025614 -.extern FUN_02025658 +.extern InitSealsObject .extern FUN_020256AC -.extern FUN_020256BC -.extern FUN_020256D0 +.extern CreateNewSealsObject +.extern CopySealsObject .extern FUN_020256DC .extern FUN_020257C0 .extern FUN_020257C4 @@ -4715,8 +4715,8 @@ .extern CreateMon .extern CreateMonWithNature .extern CreateMonWithNatureGenderLetter -.extern FUN_02066E74 -.extern FUN_02066EA4 +.extern AdjustPersonalityToForceGenderAndNature +.extern CreateMonWithFixedIVs .extern UpdateMonLevelAndRecalcStats .extern CalcMonStatsMaybeEncrypted .extern GetMonDataEncrypted @@ -4729,10 +4729,10 @@ .extern FreeMonPersonal .extern GetMonBaseStat_HandleFormeConversion .extern GetMonBaseStat -.extern FUN_02068698 +.extern GetPercentProgressTowardsNextLevel .extern CalcMonExpToNextLevelEncrypted -.extern FUN_02068734 -.extern GetMonExpByLevel +.extern GetMonBaseExperienceAtCurrentLevel +.extern GetMonExpBySpeciesAndLevel .extern CalcMonLevelEncrypted .extern CalcBoxMonLevelEncrypted .extern CalcLevelBySpeciesAndExp @@ -4745,9 +4745,9 @@ .extern GetBoxMonGenderEncrypted .extern GetGenderBySpeciesAndPersonality .extern GetGenderBySpeciesAndPersonality_PreloadedPersonal -.extern FUN_02068A80 -.extern FUN_02068AAC -.extern FUN_02068AD8 +.extern MonIsShiny +.extern CalcShininessByOtIdAndPersonality +.extern GenerateShinyPersonality .extern FUN_02068B68 .extern FUN_02068B70 .extern FUN_02068C00 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 72d4bbbd..f351ccb6 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -44526,7 +44526,7 @@ MOD05_021ED00C: ; 0x021ED00C beq _021ED05E add r0, r6, #0 add r1, r4, #0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #0 bne _021ED05E mov r5, #0 @@ -44536,7 +44536,7 @@ _021ED044: add r4, r0, #0 add r0, r6, #0 add r1, r4, #0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #0 bne _021ED05E add r5, r5, #1 @@ -45429,7 +45429,7 @@ _021ED6B4: bne _021ED788 ldr r0, [sp, #0x2c] add r1, r7, #0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #0 beq _021ED788 _021ED774: @@ -45438,7 +45438,7 @@ _021ED774: add r7, r0, #0 ldr r0, [sp, #0x2c] add r1, r7, #0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #0 bne _021ED774 _021ED788: diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index 2f478ef3..bb887c23 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -6612,7 +6612,7 @@ _0223C8D2: mov r7, #1 _0223C8E0: add r0, r5, #0 - bl FUN_02068AD8 + bl GenerateShinyPersonality add r4, r0, #0 cmp r7, #0 beq _0223C92E @@ -6632,7 +6632,7 @@ _0223C904: cmp r7, r0 bne _0223C92E add r0, r5, #0 - bl FUN_02068AD8 + bl GenerateShinyPersonality add r4, r0, #0 b _0223C8EC _0223C914: @@ -6644,7 +6644,7 @@ _0223C914: cmp r0, r1 beq _0223C92E add r0, r5, #0 - bl FUN_02068AD8 + bl GenerateShinyPersonality add r4, r0, #0 b _0223C8EC _0223C92E: @@ -7622,7 +7622,7 @@ MOD06_0223D044: ; 0x0223D044 add r0, r4, #0 lsr r1, r1, #0x10 add r2, r7, #0 - bl FUN_02066EA4 + bl CreateMonWithFixedIVs add r0, r4, #0 mov r1, #7 add r2, sp, #0x30 @@ -21909,7 +21909,7 @@ MOD06_02244388: ; 0x02244388 lsr r1, r1, #0x15 mov r2, #0x32 and r3, r4 - bl FUN_02066EA4 + bl CreateMonWithFixedIVs ldrh r0, [r6] add r2, sp, #8 add r2, #1 @@ -22165,7 +22165,7 @@ _022445A6: mov r2, #0 bl GetMonDataEncrypted mov r1, #0x32 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel str r0, [sp, #8] add r0, r4, #0 mov r1, #8 @@ -22587,7 +22587,7 @@ _022448EC: beq _0224491A ldr r0, [sp] add r1, r7, #0 - bl FUN_02068AAC + bl CalcShininessByOtIdAndPersonality cmp r0, #1 beq _022448EC _0224491A: @@ -31215,7 +31215,7 @@ MOD06_022489D4: ; 0x022489D4 add r0, r5, #0 bl UpdateMonLevelAndRecalcStats add r0, r5, #0 - bl FUN_02068A80 + bl MonIsShiny cmp r0, #0 beq _02248B08 bl ErrorHandling diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s index 9ac54172..69df6bf9 100644 --- a/arm9/modules/09/asm/module_09.s +++ b/arm9/modules/09/asm/module_09.s @@ -2588,7 +2588,7 @@ _022132C2: ldrh r0, [r4, #8] lsl r1, r1, #0x19 lsr r1, r1, #0x19 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel str r0, [r4, #0x24] ldrb r0, [r6, r5] lsl r0, r0, #0x19 @@ -2604,7 +2604,7 @@ _0221335A: add r1, r1, #1 add r4, r0, r5 ldrh r0, [r4, #8] - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel _02213366: str r0, [r4, #0x28] ldr r0, [r4, #4] diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index dd2316a4..dba629d4 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -26891,7 +26891,7 @@ _0223A9D6: bl GetMonDataEncrypted str r0, [sp, #0x48] add r0, r6, #0 - bl FUN_02068734 + bl GetMonBaseExperienceAtCurrentLevel ldr r1, [sp, #0x48] sub r0, r1, r0 str r0, [r4, #0x3c] @@ -43626,7 +43626,7 @@ _02242D2E: ldr r0, _02242FA8 ; =0x00002D66 add r6, r7, r0 add r0, r4, #0 - bl FUN_02068A80 + bl MonIsShiny ldrb r1, [r6, r5] mov r2, #0x20 lsl r0, r0, #0x1f @@ -81124,7 +81124,7 @@ _022550D0: _022550EA: ldr r0, [sp, #0x10] ldr r1, [sp, #0xc] - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel mov r1, #0xc0 mul r1, r4 add r2, r5, r1 @@ -81135,11 +81135,11 @@ _022550EA: str r0, [sp, #0x1c] ldr r0, [sp, #0x10] add r1, r1, #1 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add r5, r0, #0 ldr r0, [sp, #0x10] ldr r1, [sp, #0xc] - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel sub r0, r5, r0 str r0, [sp, #0x20] ldrh r1, [r7, r6] @@ -81323,7 +81323,7 @@ _02255284: b _02255294 _0225528E: add r0, r4, #0 - bl FUN_02068698 + bl GetPercentProgressTowardsNextLevel _02255294: strb r0, [r5, #2] add r5, r5, #1 @@ -82432,7 +82432,7 @@ _02255B04: _02255B12: add r0, r7, #0 add r1, r6, #0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel ldr r1, _02255B64 ; =0x00002DA4 add r2, r5, r4 ldr r1, [r2, r1] @@ -82440,11 +82440,11 @@ _02255B12: str r0, [sp, #0x18] add r0, r7, #0 add r1, r6, #1 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add r4, r0, #0 add r0, r7, #0 add r1, r6, #0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel sub r0, r4, r0 str r0, [sp, #0x1c] mov r0, #0x14 @@ -82494,7 +82494,7 @@ MOD11_02255B68: ; 0x02255B68 add r1, r6, #0 str r0, [sp, #0x10] add r0, r7, #0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel mov r1, #0xc0 mul r1, r4 add r2, r5, r1 @@ -82504,11 +82504,11 @@ MOD11_02255B68: ; 0x02255B68 str r0, [sp, #0x14] add r0, r7, #0 add r1, r6, #1 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add r5, r0, #0 add r0, r7, #0 add r1, r6, #0 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel sub r0, r5, r0 str r0, [sp, #0x18] mov r0, #0x10 @@ -83183,7 +83183,7 @@ _022560BA: _022560D4: ldr r0, [sp, #0xc] ldr r1, [sp, #8] - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel mov r1, #0xc0 mul r1, r4 add r2, r5, r1 @@ -83194,11 +83194,11 @@ _022560D4: str r0, [sp, #0x18] ldr r0, [sp, #0xc] add r1, r1, #1 - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel add r5, r0, #0 ldr r0, [sp, #0xc] ldr r1, [sp, #8] - bl GetMonExpByLevel + bl GetMonExpBySpeciesAndLevel sub r0, r5, r0 str r0, [sp, #0x1c] ldrh r1, [r7, r6] diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index acf2d363..68dae7ae 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -18454,7 +18454,7 @@ _02236736: ldrb r0, [r4, #0xd] lsl r0, r0, #2 ldr r0, [r1, r0] - bl FUN_02068A80 + bl MonIsShiny str r0, [sp, #0x20] ldr r0, [r4] mov r2, #0 @@ -18492,7 +18492,7 @@ _02236736: ldr r0, [r4] ldr r0, [r0, #0xc] ldr r0, [r0, r5] - bl FUN_02068A80 + bl MonIsShiny str r0, [sp, #0x10] ldr r0, [r4] mov r1, #0x70 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 0ce9b5c7..e1d37212 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -23888,7 +23888,7 @@ MOD83_02238F94: ; 0x02238F94 bl GetMonGenderEncrypted str r0, [sp, #0x24] ldr r0, [sp, #0x20] - bl FUN_02068A80 + bl MonIsShiny lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] diff --git a/include/pokemon.h b/include/pokemon.h index 68cc0d59..71c1fb67 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -99,7 +99,7 @@ #define MON_DATA_SPEED 166 #define MON_DATA_SPATK 167 #define MON_DATA_SPDEF 168 -#define MON_DATA_SEAL_TYPES_MAYBE 169 +#define MON_DATA_SEAL_STRUCT 169 #define MON_DATA_SEAL_COORDS 170 #define MON_DATA_SPECIES_EXISTS 171 #define MON_DATA_SANITY_CHECK_172 172 @@ -381,9 +381,28 @@ struct Pokemon { int GetMonBaseStat_HandleFormeConversion(int species, int form, int stat_id); int GetMonBaseStat(int species, int stat_id); -int GetMonExpByLevel(int species, int level); +int GetMonExpBySpeciesAndLevel(int species, int level); void LoadGrowthTable(int species, int * table); int GetExpByGrowthRateAndLevel(int rate, int level); int CalcLevelBySpeciesAndExp(int species, int experience); +void CreateMon(struct Pokemon * pokemon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId, ...); +void CreateBoxMon(struct BoxPokemon * boxPokemon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId, ...); +void CreateMonWithNatureGenderLetter(struct Pokemon * pokemon, u16 species, u8 level, u8 nature, u8 gender, u8 letter); + +#ifndef IN_POKEMON_C +u32 GetMonData(); +u32 GetMonDataEncrypted(); +u32 GetBoxMonData(); +u32 GetBoxMonDataEncrypted(); +#else +u32 GetMonData(struct Pokemon * pokemon, u32 attr, void * ptr); +u32 GetMonDataEncrypted(struct Pokemon * pokemon, u32 attr, void * ptr); +u32 GetBoxMonData(struct BoxPokemon * pokemon, u32 attr, void * ptr); +u32 GetBoxMonDataEncrypted(struct BoxPokemon * pokemon, u32 attr, void * ptr); +#endif +void SetMonData(struct Pokemon * pokemon, u32 attr, void * ptr); +void SetBoxMonData(struct BoxPokemon * pokemon, u32 attr, void * ptr); +void AddMonData(struct Pokemon * pokemon, u32 attr, u32 amount); +void AddBoxMonData(struct Pokemon * pokemon, u32 attr, u32 amount); #endif //POKEDIAMOND_POKEMON_H -- cgit v1.2.3 From 1dd706599353a285534398ccdc34a9ef8bc6e549 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Jun 2020 09:00:45 -0400 Subject: pokemon.c through TryDecryptMon --- arm9/arm9.lcf | 4 + arm9/asm/pokemon.s | 9050 --------------------------------------- arm9/asm/pokemon_s.s | 8959 ++++++++++++++++++++++++++++++++++++++ arm9/asm/unk_02023C40.s | 6 +- arm9/asm/unk_0206B16C.s | 4 +- arm9/global.inc | 2 +- arm9/lib/include/MI_memory.h | 2 + arm9/modules/05/asm/module_05.s | 2 +- arm9/modules/14/asm/module_14.s | 2 +- arm9/modules/83/asm/module_83.s | 2 +- arm9/src/pokemon.c | 59 + include/global.h | 2 + include/pokemon.h | 128 +- 13 files changed, 9103 insertions(+), 9119 deletions(-) delete mode 100644 arm9/asm/pokemon.s create mode 100644 arm9/asm/pokemon_s.s create mode 100644 arm9/src/pokemon.c diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 9fb4de49..d4544ed6 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -362,6 +362,7 @@ SECTIONS { unk_020653EC.o (.text) unk_02066840.o (.text) pokemon.o (.text) + pokemon_s.o (.text) unk_0206AB04.o (.text) unk_0206ABC4.o (.text) unk_0206B16C.o (.text) @@ -690,6 +691,7 @@ SECTIONS { unk_02064CA8.o (.rodata) unk_020653EC.o (.rodata) pokemon.o (.rodata) + pokemon_s.o (.rodata) unk_0206ABC4.o (.rodata) unk_0206B688.o (.rodata) unk_0206BF90.o (.rodata) @@ -796,6 +798,7 @@ SECTIONS { unk_0205F7A0.o (.data) unk_02060CCC.o (.data) pokemon.o (.data) + pokemon_s.o (.data) unk_02073710.o (.data) unk_020772F0.o (.data) unk_0207C328.o (.data) @@ -888,6 +891,7 @@ SECTIONS { unk_020520AC.o (.bss) unk_02052EE8.o (.bss) pokemon.o (.bss) + pokemon_s.o (.bss) unk_020772F0.o (.bss) unk_020893E0.o (.bss) unk_0208A998.o (.bss) diff --git a/arm9/asm/pokemon.s b/arm9/asm/pokemon.s deleted file mode 100644 index ec6ac699..00000000 --- a/arm9/asm/pokemon.s +++ /dev/null @@ -1,9050 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .include "constants/species.h" - - .extern gGameLanguage - .extern gGameVersion - - .section .rodata - - .global sItemOdds -sItemOdds: ; 0x020F7ECC - .short 0x002D, 0x005F - .short 0x0014, 0x0050 - - .global sFriendshipModTable -sFriendshipModTable: ; 0x020F7ED4 - .byte 5, 3, 2 - .byte 5, 3, 2 - .byte 1, 1, 0 - .byte 3, 2, 1 - .byte 1, 1, 0 - .byte 1, 1, 1 - .byte -1, -1, -1 - .byte -5, -5, -10 - .byte -5, -5, -10 - .byte 3, 2, 1 - - .global sLegendaryMonsList -sLegendaryMonsList: ; 0x020F7EF2 - .short SPECIES_MEWTWO - .short SPECIES_MEW - .short SPECIES_HO_OH - .short SPECIES_LUGIA - .short SPECIES_CELEBI - .short SPECIES_KYOGRE - .short SPECIES_GROUDON - .short SPECIES_RAYQUAZA - .short SPECIES_JIRACHI - .short SPECIES_DEOXYS - .short SPECIES_DIALGA - .short SPECIES_PALKIA - .short SPECIES_GIRATINA - .short SPECIES_PHIONE - .short SPECIES_MANAPHY - .short SPECIES_DARKRAI - .short SPECIES_SHAYMIN - .short SPECIES_ARCEUS - - .global UNK_020F7F16 -UNK_020F7F16: ; 0x020F7F16 - .byte 0, 0, 0, 0, 0 - .byte 1, 0, 0, 0, -1 - .byte 1, 0, -1, 0, 0 - .byte 1, -1, 0, 0, 0 - .byte 1, 0, 0, -1, 0 - .byte -1, 0, 0, 0, 1 - .byte 0, 0, 0, 0, 0 - .byte 0, 0, -1, 0, 1 - .byte 0, -1, 0, 0, 1 - .byte 0, 0, 0, -1, 1 - .byte -1, 0, 1, 0, 0 - .byte 0, 0, 1, 0, -1 - .byte 0, 0, 0, 0, 0 - .byte 0, -1, 1, 0, 0 - .byte 0, 0, 1, -1, 0 - .byte -1, 1, 0, 0, 0 - .byte 0, 1, 0, 0, -1 - .byte 0, 1, -1, 0, 0 - .byte 0, 0, 0, 0, 0 - .byte 0, 1, 0, -1, 0 - .byte -1, 0, 0, 1, 0 - .byte 0, 0, 0, 1, -1 - .byte 0, 0, -1, 1, 0 - .byte 0, -1, 0, 1, 0 - .byte 0, 0, 0, 0, 0 - - .global sNatureStatMods -sNatureStatMods: ; 0x020F7F93 - .byte 0, 0, 0, 0, 0 - .byte 1, -1, 0, 0, 0 - .byte 1, 0, -1, 0, 0 - .byte 1, 0, 0, -1, 0 - .byte 1, 0, 0, 0, -1 - .byte -1, 1, 0, 0, 0 - .byte 0, 0, 0, 0, 0 - .byte 0, 1, -1, 0, 0 - .byte 0, 1, 0, -1, 0 - .byte 0, 1, 0, 0, -1 - .byte -1, 0, 1, 0, 0 - .byte 0, -1, 1, 0, 0 - .byte 0, 0, 0, 0, 0 - .byte 0, 0, 1, -1, 0 - .byte 0, 0, 1, 0, -1 - .byte -1, 0, 0, 1, 0 - .byte 0, -1, 0, 1, 0 - .byte 0, 0, -1, 1, 0 - .byte 0, 0, 0, 0, 0 - .byte 0, 0, 0, 1, -1 - .byte -1, 0, 0, 0, 1 - .byte 0, -1, 0, 0, 1 - .byte 0, 0, -1, 0, 1 - .byte 0, 0, 0, -1, 1 - .byte 0, 0, 0, 0, 0 - - .section .data - - .global __local_str_poketool_personal_pms_narc -__local_str_poketool_personal_pms_narc: ; 0x02105FC8 - .asciz "poketool/personal/pms.narc" - - .section .bss - - .global UNK_021C5AC0 -UNK_021C5AC0: ; 0x021C5AC0 - .space 0x194 - - .text - - thumb_func_start ZeroMonData -ZeroMonData: ; 0x02066978 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x0 - add r1, r4, #0x0 - mov r2, #0xec - bl MIi_CpuClearFast - add r0, r4, #0x0 - ldrh r2, [r4, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment - add r0, r4, #0x0 - ldr r2, [r4, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonEncryptSegment - pop {r4, pc} - - thumb_func_start WipeBoxMonDataAndEncrypt -WipeBoxMonDataAndEncrypt: ; 0x020669A0 - push {r4, lr} - add r4, r0, #0x0 - mov r0, #0x0 - add r1, r4, #0x0 - mov r2, #0x88 - bl MIi_CpuClearFast - add r0, r4, #0x0 - ldrh r2, [r4, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment - pop {r4, pc} - - thumb_func_start SizeOfStructPokemon -SizeOfStructPokemon: ; 0x020669BC - mov r0, #0xec - bx lr - - thumb_func_start AllocMonZeroed -AllocMonZeroed: ; 0x020669C0 - push {r4, lr} - mov r1, #0xec - bl AllocFromHeap - add r4, r0, #0x0 - bl ZeroMonData - add r0, r4, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start TryDecryptMon -TryDecryptMon: ; 0x020669D4 - push {r3-r5, lr} - add r5, r0, #0x0 - ldrh r0, [r5, #0x4] - mov r4, #0x0 - lsl r1, r0, #0x1f - lsr r1, r1, #0x1f - bne _02066A1A - lsl r0, r0, #0x1e - mov r4, #0x1 - lsr r0, r0, #0x1f - beq _020669EE - bl ErrorHandling -_020669EE: - ldrh r1, [r5, #0x4] - mov r0, #0x1 - bic r1, r0 - mov r0, #0x1 - orr r0, r1 - strh r0, [r5, #0x4] - ldrh r1, [r5, #0x4] - mov r0, #0x2 - orr r0, r1 - strh r0, [r5, #0x4] - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonDecryptSegment - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment -_02066A1A: - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start TryEncryptMon -TryEncryptMon: ; 0x02066A20 - push {r3-r5, lr} - add r5, r0, #0x0 - ldrh r2, [r5, #0x4] - mov r4, #0x0 - lsl r0, r2, #0x1f - lsr r0, r0, #0x1f - cmp r0, #0x1 - bne _02066A68 - cmp r1, #0x1 - bne _02066A68 - mov r0, #0x1 - bic r2, r0 - strh r2, [r5, #0x4] - ldrh r1, [r5, #0x4] - mov r0, #0x2 - mov r4, #0x1 - bic r1, r0 - strh r1, [r5, #0x4] - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonEncryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - strh r0, [r5, #0x6] - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_02066A68: - add r0, r4, #0x0 - pop {r3-r5, pc} - - thumb_func_start TryDecryptBoxMon -TryDecryptBoxMon: ; 0x02066A6C - push {r4, lr} - add r2, r0, #0x0 - ldrh r1, [r2, #0x4] - mov r4, #0x0 - lsl r0, r1, #0x1e - lsr r0, r0, #0x1f - bne _02066A8E - mov r0, #0x2 - orr r0, r1 - strh r0, [r2, #0x4] - add r0, r2, #0x0 - ldrh r2, [r2, #0x6] - add r0, #0x8 - mov r1, #0x80 - mov r4, #0x1 - bl MonDecryptSegment -_02066A8E: - add r0, r4, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start TryEncryptBoxMon -TryEncryptBoxMon: ; 0x02066A94 - push {r3-r5, lr} - add r5, r0, #0x0 - ldrh r2, [r5, #0x4] - mov r4, #0x0 - lsl r0, r2, #0x1e - lsr r0, r0, #0x1f - cmp r0, #0x1 - bne _02066AC8 - cmp r1, #0x1 - bne _02066AC8 - mov r0, #0x2 - bic r2, r0 - add r0, r5, #0x0 - strh r2, [r5, #0x4] - add r0, #0x8 - mov r1, #0x80 - mov r4, #0x1 - bl CalcMonChecksum - strh r0, [r5, #0x6] - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_02066AC8: - add r0, r4, #0x0 - pop {r3-r5, pc} - - thumb_func_start CreateMon -CreateMon: ; 0x02066ACC - push {r0-r3} - push {r3-r6, lr} - sub sp, #0x2c - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r3, #0x0 - bl ZeroMonData - ldr r0, [sp, #0x50] - add r1, r4, #0x0 - str r0, [sp, #0x0] - ldr r0, [sp, #0x54] - add r3, r6, #0x0 - str r0, [sp, #0x4] - ldr r0, [sp, #0x58] - str r0, [sp, #0x8] - ldr r0, [sp, #0x5c] - str r0, [sp, #0xc] - ldr r2, [sp, #0x48] - add r0, r5, #0x0 - bl CreateBoxMon - add r0, r5, #0x0 - add r0, #0x88 - mov r1, #0x64 - mov r2, #0x0 - bl MonEncryptSegment - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonEncryptSegment - add r0, r5, #0x0 - mov r1, #0xa0 - add r2, sp, #0x48 - bl SetMonDataEncrypted - mov r0, #0x0 - bl CreateNewSealsObject - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xa9 - add r2, r4, #0x0 - bl SetMonDataEncrypted - add r0, r4, #0x0 - bl FreeToHeap - mov r0, #0x0 - str r0, [sp, #0x10] - add r0, r5, #0x0 - mov r1, #0xa1 - add r2, sp, #0x10 - bl SetMonDataEncrypted - mov r0, #0x0 - add r1, sp, #0x14 - mov r2, #0x18 - bl MIi_CpuClearFast - add r0, r5, #0x0 - mov r1, #0xaa - add r2, sp, #0x14 - bl SetMonDataEncrypted - add r0, r5, #0x0 - bl UpdateMonLevelAndRecalcStats - add sp, #0x2c - pop {r3-r6} - pop {r3} - add sp, #0x10 - bx r3 - - thumb_func_start CreateBoxMon -CreateBoxMon: ; 0x02066B64 - push {r0-r3} - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - bl WipeBoxMonDataAndEncrypt - add r0, r5, #0x0 - bl TryDecryptBoxMon - str r0, [sp, #0x0] - ldr r0, [sp, #0x30] - cmp r0, #0x0 - bne _02066B8E - bl rand_LC - add r4, r0, #0x0 - bl rand_LC - lsl r0, r0, #0x10 - orr r0, r4 - str r0, [sp, #0x34] -_02066B8E: - add r0, r5, #0x0 - mov r1, #0x0 - add r2, sp, #0x34 - bl SetBoxMonDataEncrypted - // If otIdType == 2, generate a random OT ID that prevents shininess - ldr r0, [sp, #0x38] - cmp r0, #0x2 - bne _02066BD6 - ldr r7, _02066D84 ; =0xFFFF0000 - add r6, r7, #0x0 -_02066BA2: - bl rand_LC - add r4, r0, #0x0 - bl rand_LC - ldr r1, [sp, #0x34] - lsl r0, r0, #0x10 - add r3, r4, #0x0 - orr r3, r0 - lsl r0, r1, #0x10 - lsr r2, r0, #0x10 - add r0, r1, #0x0 - and r0, r7 - lsr r1, r0, #0x10 - add r0, r3, #0x0 - str r3, [sp, #0x3c] - and r0, r6 - lsl r3, r3, #0x10 - lsr r0, r0, #0x10 - lsr r3, r3, #0x10 - eor r0, r3 - eor r0, r1 - eor r0, r2 - cmp r0, #0x8 - blo _02066BA2 - b _02066BDE -_02066BD6: - cmp r0, #0x1 - beq _02066BDE - mov r0, #0x0 - str r0, [sp, #0x3c] -_02066BDE: - add r0, r5, #0x0 - mov r1, #0x7 - add r2, sp, #0x3c - bl SetBoxMonDataEncrypted - ldr r2, _02066D88 ; =gGameLanguage - add r0, r5, #0x0 - mov r1, #0xc - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x5 - add r2, sp, #0x24 - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0xb2 - mov r2, #0x0 - bl SetBoxMonDataEncrypted - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - bl GetMonExpBySpeciesAndLevel - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x8 - add r2, sp, #0x8 - bl SetBoxMonDataEncrypted - ldr r0, [sp, #0x24] - mov r1, #0x14 - bl GetMonBaseStat - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x9 - add r2, sp, #0x8 - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x9b - add r2, sp, #0x28 - bl SetBoxMonDataEncrypted - ldr r2, _02066D8C ; =gGameVersion - add r0, r5, #0x0 - mov r1, #0x79 - bl SetBoxMonDataEncrypted - mov r0, #0x4 - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x9a - add r2, sp, #0x8 - bl SetBoxMonDataEncrypted - ldr r0, [sp, #0x2c] - cmp r0, #0x20 - bge _02066C94 - add r0, r5, #0x0 - mov r1, #0x46 - add r2, sp, #0x2c - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x47 - add r2, sp, #0x2c - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x48 - add r2, sp, #0x2c - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x49 - add r2, sp, #0x2c - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x4a - add r2, sp, #0x2c - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x4b - add r2, sp, #0x2c - bl SetBoxMonDataEncrypted - b _02066D18 -_02066C94: - bl rand_LC - mov r1, #0x1f - str r0, [sp, #0x8] - and r0, r1 - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x46 - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - mov r0, #0x3e - ldr r1, [sp, #0x8] - lsl r0, r0, #0x4 - and r0, r1 - lsr r0, r0, #0x5 - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x47 - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - mov r0, #0x1f - ldr r1, [sp, #0x8] - lsl r0, r0, #0xa - and r0, r1 - lsr r0, r0, #0xa - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x48 - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - bl rand_LC - mov r1, #0x1f - str r0, [sp, #0x8] - and r0, r1 - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x49 - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - mov r0, #0x3e - ldr r1, [sp, #0x8] - lsl r0, r0, #0x4 - and r0, r1 - lsr r0, r0, #0x5 - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x4a - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - mov r0, #0x1f - ldr r1, [sp, #0x8] - lsl r0, r0, #0xa - and r0, r1 - lsr r0, r0, #0xa - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x4b - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted -_02066D18: - ldr r0, [sp, #0x24] - mov r1, #0x18 - bl GetMonBaseStat - str r0, [sp, #0x8] - ldr r0, [sp, #0x24] - mov r1, #0x19 - bl GetMonBaseStat - str r0, [sp, #0x4] - cmp r0, #0x0 - beq _02066D50 - ldr r1, [sp, #0x34] - mov r0, #0x1 - tst r0, r1 - beq _02066D44 - add r0, r5, #0x0 - mov r1, #0xa - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - b _02066D5A -_02066D44: - add r0, r5, #0x0 - mov r1, #0xa - add r2, sp, #0x8 - bl SetBoxMonDataEncrypted - b _02066D5A -_02066D50: - add r0, r5, #0x0 - mov r1, #0xa - add r2, sp, #0x8 - bl SetBoxMonDataEncrypted -_02066D5A: - add r0, r5, #0x0 - bl GetBoxMonGenderEncrypted - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x6f - add r2, sp, #0x8 - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - bl InitBoxMonMoveset - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - bl TryEncryptBoxMon - add sp, #0xc - pop {r4-r7} - pop {r3} - add sp, #0x10 - bx r3 - .balign 4 -_02066D84: .word 0xFFFF0000 -_02066D88: .word gGameLanguage -_02066D8C: .word gGameVersion - - thumb_func_start CreateMonWithNature -CreateMonWithNature: ; 0x02066D90 - push {r3-r7, lr} - sub sp, #0x18 - str r2, [sp, #0x10] - str r3, [sp, #0x14] - ldr r4, [sp, #0x30] - add r6, r0, #0x0 - add r7, r1, #0x0 -_02066D9E: - bl rand_LC - add r5, r0, #0x0 - bl rand_LC - lsl r0, r0, #0x10 - orr r5, r0 - add r0, r5, #0x0 - bl GetNatureFromPersonality - cmp r4, r0 - bne _02066D9E - mov r0, #0x1 - str r0, [sp, #0x0] - str r5, [sp, #0x4] - mov r0, #0x0 - str r0, [sp, #0x8] - str r0, [sp, #0xc] - ldr r2, [sp, #0x10] - ldr r3, [sp, #0x14] - add r0, r6, #0x0 - add r1, r7, #0x0 - bl CreateMon - add sp, #0x18 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start CreateMonWithNatureGenderLetter -CreateMonWithNatureGenderLetter: ; 0x02066DD4 - push {r4-r7, lr} - sub sp, #0x24 - str r1, [sp, #0x14] - str r2, [sp, #0x18] - str r3, [sp, #0x1c] - str r0, [sp, #0x10] - add r0, sp, #0x28 - ldrb r0, [r0, #0x18] - ldr r6, [sp, #0x38] - ldr r7, [sp, #0x3c] - cmp r0, #0x0 - beq _02066E4C - cmp r0, #0x1d - bhs _02066E4C - sub r0, r0, #0x1 - str r0, [sp, #0x20] -_02066DF4: - bl rand_LC - add r4, r0, #0x0 - bl rand_LC - lsl r0, r0, #0x10 - orr r4, r0 - mov r3, #0x3 - lsl r3, r3, #0x10 - and r3, r4 - mov r0, #0x3 - add r2, r4, #0x0 - and r2, r0 - lsl r0, r0, #0x8 - and r0, r4 - lsr r1, r0, #0x6 - mov r0, #0x3 - lsl r0, r0, #0x18 - and r0, r4 - lsr r0, r0, #0x12 - lsr r3, r3, #0xc - orr r0, r3 - orr r0, r1 - orr r0, r2 - mov r1, #0x1c - bl _u32_div_f - lsl r0, r1, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0x0 - bl GetNatureFromPersonality - cmp r7, r0 - bne _02066DF4 - ldr r0, [sp, #0x14] - add r1, r4, #0x0 - bl GetGenderBySpeciesAndPersonality - cmp r6, r0 - bne _02066DF4 - ldr r0, [sp, #0x20] - cmp r5, r0 - bne _02066DF4 - b _02066E58 -_02066E4C: - ldr r0, [sp, #0x14] - add r1, r6, #0x0 - add r2, r7, #0x0 - bl AdjustPersonalityToForceGenderAndNature - add r4, r0, #0x0 -_02066E58: - mov r0, #0x1 - str r0, [sp, #0x0] - str r4, [sp, #0x4] - mov r0, #0x0 - str r0, [sp, #0x8] - str r0, [sp, #0xc] - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - ldr r2, [sp, #0x18] - ldr r3, [sp, #0x1c] - bl CreateMon - add sp, #0x24 - pop {r4-r7, pc} - - thumb_func_start AdjustPersonalityToForceGenderAndNature -AdjustPersonalityToForceGenderAndNature: ; 0x02066E74 - push {r3-r5, lr} - add r5, r1, #0x0 - mov r1, #0x12 - add r4, r2, #0x0 - bl GetMonBaseStat - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - beq _02066EA0 - cmp r0, #0xfe - beq _02066EA0 - cmp r0, #0xff - beq _02066EA0 - cmp r5, #0x0 - bne _02066EA0 - mov r1, #0x19 - bl _s32_div_f - add r1, r0, #0x1 - mov r0, #0x19 - mul r0, r1 - add r4, r0, r4 -_02066EA0: - add r0, r4, #0x0 - pop {r3-r5, pc} - - thumb_func_start CreateMonWithFixedIVs -CreateMonWithFixedIVs: ; 0x02066EA4 - push {r0-r3} - push {r4, lr} - sub sp, #0x10 - mov r3, #0x1 - str r3, [sp, #0x0] - ldr r3, [sp, #0x28] - add r4, r0, #0x0 - str r3, [sp, #0x4] - mov r3, #0x0 - str r3, [sp, #0x8] - str r3, [sp, #0xc] - bl CreateMon - add r0, r4, #0x0 - mov r1, #0xae - add r2, sp, #0x24 - bl SetMonDataEncrypted - add r0, r4, #0x0 - bl UpdateMonLevelAndRecalcStats - add sp, #0x10 - pop {r4} - pop {r3} - add sp, #0x10 - bx r3 - - thumb_func_start UpdateMonLevelAndRecalcStats -UpdateMonLevelAndRecalcStats: ; 0x02066ED8 - push {r3-r5, lr} - add r5, r0, #0x0 - bl TryDecryptMon - add r4, r0, #0x0 - add r0, r5, #0x0 - bl CalcMonLevelEncrypted - str r0, [sp, #0x0] - add r0, r5, #0x0 - mov r1, #0xa0 - add r2, sp, #0x0 - bl SetMonDataEncrypted - add r0, r5, #0x0 - bl CalcMonStatsMaybeEncrypted - add r0, r5, #0x0 - add r1, r4, #0x0 - bl TryEncryptMon - pop {r3-r5, pc} - - thumb_func_start CalcMonStatsMaybeEncrypted -CalcMonStatsMaybeEncrypted: ; 0x02066F04 - push {r3-r7, lr} - sub sp, #0x58 - add r5, r0, #0x0 - bl TryDecryptMon - str r0, [sp, #0x0] - add r0, r5, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonDataEncrypted - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xa3 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x2c] - add r0, r5, #0x0 - mov r1, #0xa2 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x54] - add r0, r5, #0x0 - mov r1, #0x46 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x30] - add r0, r5, #0x0 - mov r1, #0xd - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x34] - add r0, r5, #0x0 - mov r1, #0x47 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x28] - add r0, r5, #0x0 - mov r1, #0xe - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x14] - add r0, r5, #0x0 - mov r1, #0x48 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x24] - add r0, r5, #0x0 - mov r1, #0xf - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x10] - add r0, r5, #0x0 - mov r1, #0x49 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x20] - add r0, r5, #0x0 - mov r1, #0x10 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0xc] - add r0, r5, #0x0 - mov r1, #0x4a - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x1c] - add r0, r5, #0x0 - mov r1, #0x11 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x4b - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x18] - add r0, r5, #0x0 - mov r1, #0x12 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x38] - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonDataEncrypted - add r7, r0, #0x0 - mov r0, #0x0 - mov r1, #0x2c - bl AllocFromHeap - add r6, r0, #0x0 - ldr r1, [sp, #0x38] - add r0, r7, #0x0 - add r2, r6, #0x0 - bl LoadMonBaseStats_HandleAlternateForme - mov r0, #0x49 - lsl r0, r0, #0x2 - cmp r7, r0 - bne _02066FFC - mov r0, #0x1 - b _0206701E -_02066FFC: - ldr r0, [sp, #0x34] - asr r0, r0, #0x1 - lsr r1, r0, #0x1e - ldr r0, [sp, #0x34] - add r1, r0, r1 - asr r0, r1, #0x2 - ldrb r1, [r6, #0x0] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x30] - add r1, r1, r2 - add r0, r0, r1 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - add r0, r4, r0 - add r0, #0xa -_0206701E: - str r0, [sp, #0x50] - add r0, r5, #0x0 - mov r1, #0xa3 - add r2, sp, #0x50 - bl SetMonDataEncrypted - ldr r0, [sp, #0x14] - asr r0, r0, #0x1 - lsr r1, r0, #0x1e - ldr r0, [sp, #0x14] - add r1, r0, r1 - asr r0, r1, #0x2 - ldrb r1, [r6, #0x1] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x28] - add r1, r1, r2 - add r0, r0, r1 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - add r0, r0, #0x5 - str r0, [sp, #0x4c] - add r0, r5, #0x0 - bl GetMonNatureEncrypted - ldr r1, [sp, #0x4c] - mov r2, #0x1 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl ApplyNatureModToStat - str r0, [sp, #0x4c] - add r0, r5, #0x0 - mov r1, #0xa4 - add r2, sp, #0x4c - bl SetMonDataEncrypted - ldr r0, [sp, #0x10] - asr r0, r0, #0x1 - lsr r1, r0, #0x1e - ldr r0, [sp, #0x10] - add r1, r0, r1 - asr r0, r1, #0x2 - ldrb r1, [r6, #0x2] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x24] - add r1, r1, r2 - add r0, r0, r1 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - add r0, r0, #0x5 - str r0, [sp, #0x48] - add r0, r5, #0x0 - bl GetMonNatureEncrypted - ldr r1, [sp, #0x48] - mov r2, #0x2 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl ApplyNatureModToStat - str r0, [sp, #0x48] - add r0, r5, #0x0 - mov r1, #0xa5 - add r2, sp, #0x48 - bl SetMonDataEncrypted - ldr r0, [sp, #0xc] - asr r0, r0, #0x1 - lsr r1, r0, #0x1e - ldr r0, [sp, #0xc] - add r1, r0, r1 - asr r0, r1, #0x2 - ldrb r1, [r6, #0x3] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x20] - add r1, r1, r2 - add r0, r0, r1 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - add r0, r0, #0x5 - str r0, [sp, #0x44] - add r0, r5, #0x0 - bl GetMonNatureEncrypted - ldr r1, [sp, #0x44] - mov r2, #0x3 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl ApplyNatureModToStat - str r0, [sp, #0x44] - add r0, r5, #0x0 - mov r1, #0xa6 - add r2, sp, #0x44 - bl SetMonDataEncrypted - ldr r0, [sp, #0x8] - asr r0, r0, #0x1 - lsr r1, r0, #0x1e - ldr r0, [sp, #0x8] - add r1, r0, r1 - asr r0, r1, #0x2 - ldrb r1, [r6, #0x4] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x1c] - add r1, r1, r2 - add r0, r0, r1 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - add r0, r0, #0x5 - str r0, [sp, #0x40] - add r0, r5, #0x0 - bl GetMonNatureEncrypted - ldr r1, [sp, #0x40] - mov r2, #0x4 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl ApplyNatureModToStat - str r0, [sp, #0x40] - add r0, r5, #0x0 - mov r1, #0xa7 - add r2, sp, #0x40 - bl SetMonDataEncrypted - ldr r0, [sp, #0x4] - asr r0, r0, #0x1 - lsr r1, r0, #0x1e - ldr r0, [sp, #0x4] - add r1, r0, r1 - asr r0, r1, #0x2 - ldrb r1, [r6, #0x5] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x18] - add r1, r1, r2 - add r0, r0, r1 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - add r0, r0, #0x5 - str r0, [sp, #0x3c] - add r0, r5, #0x0 - bl GetMonNatureEncrypted - ldr r1, [sp, #0x3c] - mov r2, #0x5 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl ApplyNatureModToStat - str r0, [sp, #0x3c] - add r0, r5, #0x0 - mov r1, #0xa8 - add r2, sp, #0x3c - bl SetMonDataEncrypted - add r0, r6, #0x0 - bl FreeToHeap - ldr r1, [sp, #0x54] - cmp r1, #0x0 - bne _0206717C - ldr r0, [sp, #0x2c] - cmp r0, #0x0 - bne _020671A0 -_0206717C: - mov r0, #0x49 - lsl r0, r0, #0x2 - cmp r7, r0 - bne _0206718A - mov r0, #0x1 - str r0, [sp, #0x54] - b _020671A0 -_0206718A: - cmp r1, #0x0 - bne _02067194 - ldr r0, [sp, #0x50] - str r0, [sp, #0x54] - b _020671A0 -_02067194: - ldr r1, [sp, #0x50] - ldr r0, [sp, #0x2c] - ldr r2, [sp, #0x54] - sub r0, r1, r0 - add r0, r2, r0 - str r0, [sp, #0x54] -_020671A0: - ldr r0, [sp, #0x54] - cmp r0, #0x0 - beq _020671B0 - add r0, r5, #0x0 - mov r1, #0xa2 - add r2, sp, #0x54 - bl SetMonDataEncrypted -_020671B0: - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - bl TryEncryptMon - add sp, #0x58 - pop {r3-r7, pc} - - thumb_func_start GetMonDataEncrypted -GetMonDataEncrypted: ; 0x020671BC - push {r4-r6, lr} - add r5, r0, #0x0 - ldrh r0, [r5, #0x4] - add r4, r1, #0x0 - add r6, r2, #0x0 - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - bne _02067204 - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonDecryptSegment - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - ldrh r1, [r5, #0x6] - cmp r0, r1 - beq _02067204 - cmp r0, r1 - beq _020671FC - bl ErrorHandling -_020671FC: - ldrh r1, [r5, #0x4] - mov r0, #0x4 - orr r0, r1 - strh r0, [r5, #0x4] -_02067204: - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl GetMonData - add r4, r0, #0x0 - ldrh r0, [r5, #0x4] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - bne _02067230 - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonEncryptSegment - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_02067230: - add r0, r4, #0x0 - pop {r4-r6, pc} - - thumb_func_start GetMonData -GetMonData: ; 0x02067234 - push {r3, lr} - add r3, r1, #0x0 - sub r3, #0x9f - cmp r3, #0xb - bhi _020672B6 - add r3, r3, r3 - add r3, pc - ldrh r3, [r3, #0x6] - lsl r3, r3, #0x10 - asr r3, r3, #0x10 - add pc, r3 -_0206724A: ; jump table (using 16-bit offset) - .short _02067262 - _0206724A - 2; case 0 - .short _02067268 - _0206724A - 2; case 1 - .short _0206726E - _0206724A - 2; case 2 - .short _02067274 - _0206724A - 2; case 3 - .short _0206727A - _0206724A - 2; case 4 - .short _02067280 - _0206724A - 2; case 5 - .short _02067286 - _0206724A - 2; case 6 - .short _0206728C - _0206724A - 2; case 7 - .short _02067292 - _0206724A - 2; case 8 - .short _02067298 - _0206724A - 2; case 9 - .short _0206729E - _0206724A - 2; case 10 - .short _020672AA - _0206724A - 2; case 11 -_02067262: - add r0, #0x88 - ldr r0, [r0, #0x0] - pop {r3, pc} -_02067268: - add r0, #0x8c - ldrb r0, [r0, #0x0] - pop {r3, pc} -_0206726E: - add r0, #0x8d - ldrb r0, [r0, #0x0] - pop {r3, pc} -_02067274: - add r0, #0x8e - ldrh r0, [r0, #0x0] - pop {r3, pc} -_0206727A: - add r0, #0x90 - ldrh r0, [r0, #0x0] - pop {r3, pc} -_02067280: - add r0, #0x92 - ldrh r0, [r0, #0x0] - pop {r3, pc} -_02067286: - add r0, #0x94 - ldrh r0, [r0, #0x0] - pop {r3, pc} -_0206728C: - add r0, #0x96 - ldrh r0, [r0, #0x0] - pop {r3, pc} -_02067292: - add r0, #0x98 - ldrh r0, [r0, #0x0] - pop {r3, pc} -_02067298: - add r0, #0x9a - ldrh r0, [r0, #0x0] - pop {r3, pc} -_0206729E: - add r0, #0x9c - add r1, r2, #0x0 - bl CopySealsObject - mov r0, #0x1 - pop {r3, pc} -_020672AA: - add r0, #0xd4 - add r1, r2, #0x0 - bl FUN_02029C74 - mov r0, #0x1 - pop {r3, pc} -_020672B6: - bl GetBoxMonData - pop {r3, pc} - - thumb_func_start GetBoxMonDataEncrypted -GetBoxMonDataEncrypted: ; 0x020672BC - push {r4-r6, lr} - add r5, r0, #0x0 - ldrh r0, [r5, #0x4] - add r4, r1, #0x0 - add r6, r2, #0x0 - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - bne _020672F8 - ldrh r2, [r5, #0x6] - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - ldrh r1, [r5, #0x6] - cmp r0, r1 - beq _020672F8 - cmp r0, r1 - beq _020672F0 - bl ErrorHandling -_020672F0: - ldrh r1, [r5, #0x4] - mov r0, #0x4 - orr r0, r1 - strh r0, [r5, #0x4] -_020672F8: - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl GetBoxMonData - add r4, r0, #0x0 - ldrh r0, [r5, #0x4] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - bne _02067318 - ldrh r2, [r5, #0x6] - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_02067318: - add r0, r4, #0x0 - pop {r4-r6, pc} - - thumb_func_start GetBoxMonData -GetBoxMonData: ; 0x0206731C - push {r4-r7, lr} - sub sp, #0xc - str r1, [sp, #0x4] - add r1, r0, #0x0 - mov r4, #0x0 - str r2, [sp, #0x8] - ldr r1, [r1, #0x0] - str r0, [sp, #0x0] - add r2, r4, #0x0 - bl GetSubstruct - add r5, r0, #0x0 - - ldr r0, [sp, #0x0] - mov r2, #0x1 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r6, r0, #0x0 - - ldr r0, [sp, #0x0] - mov r2, #0x2 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r7, r0, #0x0 - - ldr r0, [sp, #0x0] - mov r2, #0x3 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r1, r0, #0x0 - - ldr r0, [sp, #0x4] - cmp r0, #0xb2 - bls _02067366 - b _020674D8 -_02067366: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02067372: ; jump table (using 16-bit offset) - .short _020674DC - _02067372 - 2; case 0 - .short _020674E2 - _02067372 - 2; case 1 - .short _020674EC - _02067372 - 2; case 2 - .short _020674F6 - _02067372 - 2; case 3 - .short _02067500 - _02067372 - 2; case 4 - .short _0206754C - _02067372 - 2; case 5 - .short _0206755E - _02067372 - 2; case 6 - .short _02067562 - _02067372 - 2; case 7 - .short _02067566 - _02067372 - 2; case 8 - .short _0206756A - _02067372 - 2; case 9 - .short _0206756E - _02067372 - 2; case 10 - .short _02067572 - _02067372 - 2; case 11 - .short _02067576 - _02067372 - 2; case 12 - .short _0206757A - _02067372 - 2; case 13 - .short _0206757E - _02067372 - 2; case 14 - .short _02067582 - _02067372 - 2; case 15 - .short _02067586 - _02067372 - 2; case 16 - .short _0206758A - _02067372 - 2; case 17 - .short _0206758E - _02067372 - 2; case 18 - .short _02067592 - _02067372 - 2; case 19 - .short _02067596 - _02067372 - 2; case 20 - .short _0206759A - _02067372 - 2; case 21 - .short _0206759E - _02067372 - 2; case 22 - .short _020675A2 - _02067372 - 2; case 23 - .short _020675A6 - _02067372 - 2; case 24 - .short _020675AA - _02067372 - 2; case 25 - .short _020675AA - _02067372 - 2; case 26 - .short _020675AA - _02067372 - 2; case 27 - .short _020675AA - _02067372 - 2; case 28 - .short _020675AA - _02067372 - 2; case 29 - .short _020675AA - _02067372 - 2; case 30 - .short _020675AA - _02067372 - 2; case 31 - .short _020675AA - _02067372 - 2; case 32 - .short _020675AA - _02067372 - 2; case 33 - .short _020675AA - _02067372 - 2; case 34 - .short _020675AA - _02067372 - 2; case 35 - .short _020675AA - _02067372 - 2; case 36 - .short _020675AA - _02067372 - 2; case 37 - .short _020675AA - _02067372 - 2; case 38 - .short _020675AA - _02067372 - 2; case 39 - .short _020675AA - _02067372 - 2; case 40 - .short _020675AA - _02067372 - 2; case 41 - .short _020675AA - _02067372 - 2; case 42 - .short _020675AA - _02067372 - 2; case 43 - .short _020675AA - _02067372 - 2; case 44 - .short _020675AA - _02067372 - 2; case 45 - .short _020675AA - _02067372 - 2; case 46 - .short _020675AA - _02067372 - 2; case 47 - .short _020675AA - _02067372 - 2; case 48 - .short _020675AA - _02067372 - 2; case 49 - .short _020675AA - _02067372 - 2; case 50 - .short _020675AA - _02067372 - 2; case 51 - .short _020675AA - _02067372 - 2; case 52 - .short _020675AA - _02067372 - 2; case 53 - .short _020675D0 - _02067372 - 2; case 54 - .short _020675D0 - _02067372 - 2; case 55 - .short _020675D0 - _02067372 - 2; case 56 - .short _020675D0 - _02067372 - 2; case 57 - .short _020675DC - _02067372 - 2; case 58 - .short _020675DC - _02067372 - 2; case 59 - .short _020675DC - _02067372 - 2; case 60 - .short _020675DC - _02067372 - 2; case 61 - .short _020675E8 - _02067372 - 2; case 62 - .short _020675E8 - _02067372 - 2; case 63 - .short _020675E8 - _02067372 - 2; case 64 - .short _020675E8 - _02067372 - 2; case 65 - .short _020675F4 - _02067372 - 2; case 66 - .short _020675F4 - _02067372 - 2; case 67 - .short _020675F4 - _02067372 - 2; case 68 - .short _020675F4 - _02067372 - 2; case 69 - .short _0206760C - _02067372 - 2; case 70 - .short _02067614 - _02067372 - 2; case 71 - .short _0206761C - _02067372 - 2; case 72 - .short _02067624 - _02067372 - 2; case 73 - .short _0206762C - _02067372 - 2; case 74 - .short _02067634 - _02067372 - 2; case 75 - .short _0206763C - _02067372 - 2; case 76 - .short _0206764E - _02067372 - 2; case 77 - .short _02067654 - _02067372 - 2; case 78 - .short _02067654 - _02067372 - 2; case 79 - .short _02067654 - _02067372 - 2; case 80 - .short _02067654 - _02067372 - 2; case 81 - .short _02067654 - _02067372 - 2; case 82 - .short _02067654 - _02067372 - 2; case 83 - .short _02067654 - _02067372 - 2; case 84 - .short _02067654 - _02067372 - 2; case 85 - .short _02067654 - _02067372 - 2; case 86 - .short _02067654 - _02067372 - 2; case 87 - .short _02067654 - _02067372 - 2; case 88 - .short _02067654 - _02067372 - 2; case 89 - .short _02067654 - _02067372 - 2; case 90 - .short _02067654 - _02067372 - 2; case 91 - .short _02067654 - _02067372 - 2; case 92 - .short _02067654 - _02067372 - 2; case 93 - .short _02067654 - _02067372 - 2; case 94 - .short _02067654 - _02067372 - 2; case 95 - .short _02067654 - _02067372 - 2; case 96 - .short _02067654 - _02067372 - 2; case 97 - .short _02067654 - _02067372 - 2; case 98 - .short _02067654 - _02067372 - 2; case 99 - .short _02067654 - _02067372 - 2; case 100 - .short _02067654 - _02067372 - 2; case 101 - .short _02067654 - _02067372 - 2; case 102 - .short _02067654 - _02067372 - 2; case 103 - .short _02067654 - _02067372 - 2; case 104 - .short _02067654 - _02067372 - 2; case 105 - .short _02067654 - _02067372 - 2; case 106 - .short _02067654 - _02067372 - 2; case 107 - .short _02067654 - _02067372 - 2; case 108 - .short _02067654 - _02067372 - 2; case 109 - .short _0206767C - _02067372 - 2; case 110 - .short _02067684 - _02067372 - 2; case 111 - .short _0206768C - _02067372 - 2; case 112 - .short _02067694 - _02067372 - 2; case 113 - .short _02067698 - _02067372 - 2; case 114 - .short _020674D8 - _02067372 - 2; case 115 - .short _0206769C - _02067372 - 2; case 116 - .short _020674D8 - _02067372 - 2; case 117 - .short _020676D0 - _02067372 - 2; case 118 - .short _020676CC - _02067372 - 2; case 119 - .short _020676FE - _02067372 - 2; case 120 - .short _02067702 - _02067372 - 2; case 121 - .short _02067706 - _02067372 - 2; case 122 - .short _02067706 - _02067372 - 2; case 123 - .short _02067706 - _02067372 - 2; case 124 - .short _02067706 - _02067372 - 2; case 125 - .short _02067706 - _02067372 - 2; case 126 - .short _02067706 - _02067372 - 2; case 127 - .short _02067706 - _02067372 - 2; case 128 - .short _02067706 - _02067372 - 2; case 129 - .short _02067706 - _02067372 - 2; case 130 - .short _02067706 - _02067372 - 2; case 131 - .short _02067706 - _02067372 - 2; case 132 - .short _02067706 - _02067372 - 2; case 133 - .short _02067706 - _02067372 - 2; case 134 - .short _02067706 - _02067372 - 2; case 135 - .short _02067706 - _02067372 - 2; case 136 - .short _02067706 - _02067372 - 2; case 137 - .short _02067706 - _02067372 - 2; case 138 - .short _02067706 - _02067372 - 2; case 139 - .short _02067706 - _02067372 - 2; case 140 - .short _02067706 - _02067372 - 2; case 141 - .short _02067706 - _02067372 - 2; case 142 - .short _0206772C - _02067372 - 2; case 143 - .short _02067746 - _02067372 - 2; case 144 - .short _0206774E - _02067372 - 2; case 145 - .short _02067752 - _02067372 - 2; case 146 - .short _02067756 - _02067372 - 2; case 147 - .short _0206775A - _02067372 - 2; case 148 - .short _0206775E - _02067372 - 2; case 149 - .short _02067762 - _02067372 - 2; case 150 - .short _02067766 - _02067372 - 2; case 151 - .short _0206776A - _02067372 - 2; case 152 - .short _0206776E - _02067372 - 2; case 153 - .short _02067772 - _02067372 - 2; case 154 - .short _02067776 - _02067372 - 2; case 155 - .short _0206777E - _02067372 - 2; case 156 - .short _02067786 - _02067372 - 2; case 157 - .short _0206778A - _02067372 - 2; case 158 - .short _020674D8 - _02067372 - 2; case 159 - .short _02067540 - _02067372 - 2; case 160 - .short _020674D8 - _02067372 - 2; case 161 - .short _020674D8 - _02067372 - 2; case 162 - .short _020674D8 - _02067372 - 2; case 163 - .short _020674D8 - _02067372 - 2; case 164 - .short _020674D8 - _02067372 - 2; case 165 - .short _020674D8 - _02067372 - 2; case 166 - .short _020674D8 - _02067372 - 2; case 167 - .short _020674D8 - _02067372 - 2; case 168 - .short _020674D8 - _02067372 - 2; case 169 - .short _020674D8 - _02067372 - 2; case 170 - .short _02067506 - _02067372 - 2; case 171 - .short _02067510 - _02067372 - 2; case 172 - .short _02067522 - _02067372 - 2; case 173 - .short _0206778E - _02067372 - 2; case 174 - .short _020677C0 - _02067372 - 2; case 175 - .short _020677D8 - _02067372 - 2; case 176 - .short _020677D8 - _02067372 - 2; case 177 - .short _02067810 - _02067372 - 2; case 178 -_020674D8: - mov r4, #0x0 - b _0206781A -_020674DC: - ldr r0, [sp, #0x0] - ldr r4, [r0, #0x0] - b _0206781A -_020674E2: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1f - lsr r4, r0, #0x1f - b _0206781A -_020674EC: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1e - lsr r4, r0, #0x1f - b _0206781A -_020674F6: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r4, r0, #0x1f - b _0206781A -_02067500: - ldr r0, [sp, #0x0] - ldrh r4, [r0, #0x6] - b _0206781A -_02067506: - ldrh r0, [r5, #0x0] - cmp r0, #0x0 - beq _0206753A - mov r4, #0x1 - b _0206781A -_02067510: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r4, r0, #0x1f - bne _0206753A - ldr r0, [r6, #0x10] - lsl r0, r0, #0x1 - lsr r4, r0, #0x1f - b _0206781A -_02067522: - ldrh r4, [r5, #0x0] - cmp r4, #0x0 - beq _0206753A - ldr r0, [r6, #0x10] - lsl r0, r0, #0x1 - lsr r0, r0, #0x1f - bne _0206753C - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - bne _0206753C -_0206753A: - b _0206781A -_0206753C: - ldr r4, _02067820 ; =SPECIES_EGG - b _0206781A -_02067540: - ldrh r0, [r5, #0x0] - ldr r1, [r5, #0x8] - bl CalcLevelBySpeciesAndExp - add r4, r0, #0x0 - b _0206781A -_0206754C: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - beq _0206755A - ldr r4, _02067820 ; =SPECIES_EGG - b _0206781A -_0206755A: - ldrh r4, [r5, #0x0] - b _0206781A -_0206755E: - ldrh r4, [r5, #0x2] - b _0206781A -_02067562: - ldr r4, [r5, #0x4] - b _0206781A -_02067566: - ldr r4, [r5, #0x8] - b _0206781A -_0206756A: - ldrb r4, [r5, #0xc] - b _0206781A -_0206756E: - ldrb r4, [r5, #0xd] - b _0206781A -_02067572: - ldrb r4, [r5, #0xe] - b _0206781A -_02067576: - ldrb r4, [r5, #0xf] - b _0206781A -_0206757A: - ldrb r4, [r5, #0x10] - b _0206781A -_0206757E: - ldrb r4, [r5, #0x11] - b _0206781A -_02067582: - ldrb r4, [r5, #0x12] - b _0206781A -_02067586: - ldrb r4, [r5, #0x13] - b _0206781A -_0206758A: - ldrb r4, [r5, #0x14] - b _0206781A -_0206758E: - ldrb r4, [r5, #0x15] - b _0206781A -_02067592: - ldrb r4, [r5, #0x16] - b _0206781A -_02067596: - ldrb r4, [r5, #0x17] - b _0206781A -_0206759A: - ldrb r4, [r5, #0x18] - b _0206781A -_0206759E: - ldrb r4, [r5, #0x19] - b _0206781A -_020675A2: - ldrb r4, [r5, #0x1a] - b _0206781A -_020675A6: - ldrb r4, [r5, #0x1b] - b _0206781A -_020675AA: - ldr r2, [sp, #0x4] - mov r0, #0x1 - sub r2, #0x19 - add r1, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - ldr r2, [r5, #0x1c] - add r3, r4, #0x0 - and r3, r1 - and r2, r0 - mov r1, #0x0 - mov r0, #0x0 - eor r1, r3 - eor r0, r2 - orr r0, r1 - beq _02067676 - mov r4, #0x1 - b _0206781A -_020675D0: - ldr r0, [sp, #0x4] - sub r0, #0x36 - str r0, [sp, #0x4] - lsl r0, r0, #0x1 - ldrh r4, [r6, r0] - b _0206781A -_020675DC: - ldr r0, [sp, #0x4] - sub r0, #0x3a - str r0, [sp, #0x4] - add r0, r6, r0 - ldrb r4, [r0, #0x8] - b _0206781A -_020675E8: - ldr r0, [sp, #0x4] - sub r0, #0x3e - str r0, [sp, #0x4] - add r0, r6, r0 - ldrb r4, [r0, #0xc] - b _0206781A -_020675F4: - ldr r0, [sp, #0x4] - sub r0, #0x42 - str r0, [sp, #0x4] - ldr r1, [sp, #0x4] - lsl r0, r0, #0x1 - add r1, r6, r1 - ldrh r0, [r6, r0] - ldrb r1, [r1, #0xc] - bl FUN_0206AB30 - add r4, r0, #0x0 - b _0206781A -_0206760C: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x1b - lsr r4, r0, #0x1b - b _0206781A -_02067614: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x16 - lsr r4, r0, #0x1b - b _0206781A -_0206761C: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x11 - lsr r4, r0, #0x1b - b _0206781A -_02067624: - ldr r0, [r6, #0x10] - lsl r0, r0, #0xc - lsr r4, r0, #0x1b - b _0206781A -_0206762C: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x7 - lsr r4, r0, #0x1b - b _0206781A -_02067634: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x2 - lsr r4, r0, #0x1b - b _0206781A -_0206763C: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r4, r0, #0x1f - bne _02067676 - ldr r0, [r6, #0x10] - lsl r0, r0, #0x1 - lsr r4, r0, #0x1f - b _0206781A -_0206764E: - ldr r0, [r6, #0x10] - lsr r4, r0, #0x1f - b _0206781A -_02067654: - ldr r2, [sp, #0x4] - mov r0, #0x1 - sub r2, #0x4e - add r1, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - ldr r2, [r6, #0x14] - add r3, r4, #0x0 - and r3, r1 - and r2, r0 - mov r1, #0x0 - mov r0, #0x0 - eor r1, r3 - eor r0, r2 - orr r0, r1 - bne _02067678 -_02067676: - b _0206781A -_02067678: - mov r4, #0x1 - b _0206781A -_0206767C: - ldrb r0, [r6, #0x18] - lsl r0, r0, #0x1f - lsr r4, r0, #0x1f - b _0206781A -_02067684: - ldrb r0, [r6, #0x18] - lsl r0, r0, #0x1d - lsr r4, r0, #0x1e - b _0206781A -_0206768C: - ldrb r0, [r6, #0x18] - lsl r0, r0, #0x18 - lsr r4, r0, #0x1b - b _0206781A -_02067694: - ldrb r4, [r6, #0x19] - b _0206781A -_02067698: - ldrh r4, [r6, #0x1a] - b _0206781A -_0206769C: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - beq _020676B2 - ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG - ldr r2, [sp, #0x8] - add r1, r4, #0x0 - bl GetSpeciesName - b _0206781A -_020676B2: - ldr r1, [sp, #0x8] -_020676B4: - ldrh r0, [r7, #0x0] - add r4, r4, #0x1 - add r7, r7, #0x2 - strh r0, [r1, #0x0] - add r1, r1, #0x2 - cmp r4, #0xa - blo _020676B4 - ldr r2, _02067828 ; =0x0000FFFF - ldr r0, [sp, #0x8] - lsl r1, r4, #0x1 - strh r2, [r0, r1] - b _0206781A -_020676CC: - ldr r0, [r6, #0x10] - lsr r4, r0, #0x1f -_020676D0: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - beq _020676F4 - ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG - mov r1, #0x0 - bl FUN_0200AA50 - add r5, r0, #0x0 - ldr r0, [sp, #0x8] - add r1, r5, #0x0 - bl FUN_02021A74 - add r0, r5, #0x0 - bl FUN_02021A20 - b _0206781A -_020676F4: - ldr r0, [sp, #0x8] - add r1, r7, #0x0 - bl FUN_02021E28 - b _0206781A -_020676FE: - ldrb r4, [r7, #0x16] - b _0206781A -_02067702: - ldrb r4, [r7, #0x17] - b _0206781A -_02067706: - ldr r2, [sp, #0x4] - mov r0, #0x1 - sub r2, #0x7a - add r1, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - ldr r3, [r7, #0x18] - ldr r2, [r7, #0x1c] - and r3, r0 - and r2, r1 - mov r1, #0x0 - mov r0, #0x0 - eor r1, r2 - eor r0, r3 - orr r0, r1 - beq _0206781A - mov r4, #0x1 - b _0206781A -_0206772C: - ldr r2, [sp, #0x8] -_0206772E: - ldrh r0, [r1, #0x0] - add r4, r4, #0x1 - add r1, r1, #0x2 - strh r0, [r2, #0x0] - add r2, r2, #0x2 - cmp r4, #0x7 - blo _0206772E - ldr r2, _02067828 ; =0x0000FFFF - ldr r0, [sp, #0x8] - lsl r1, r4, #0x1 - strh r2, [r0, r1] - b _0206781A -_02067746: - ldr r0, [sp, #0x8] - bl FUN_02021E28 - b _0206781A -_0206774E: - ldrb r4, [r1, #0x10] - b _0206781A -_02067752: - ldrb r4, [r1, #0x11] - b _0206781A -_02067756: - ldrb r4, [r1, #0x12] - b _0206781A -_0206775A: - ldrb r4, [r1, #0x13] - b _0206781A -_0206775E: - ldrb r4, [r1, #0x14] - b _0206781A -_02067762: - ldrb r4, [r1, #0x15] - b _0206781A -_02067766: - ldrh r4, [r1, #0x16] - b _0206781A -_0206776A: - ldrh r4, [r1, #0x18] - b _0206781A -_0206776E: - ldrb r4, [r1, #0x1a] - b _0206781A -_02067772: - ldrb r4, [r1, #0x1b] - b _0206781A -_02067776: - ldrb r0, [r1, #0x1c] - lsl r0, r0, #0x19 - lsr r4, r0, #0x19 - b _0206781A -_0206777E: - ldrb r0, [r1, #0x1c] - lsl r0, r0, #0x18 - lsr r4, r0, #0x1f - b _0206781A -_02067786: - ldrb r4, [r1, #0x1d] - b _0206781A -_0206778A: - ldrh r4, [r1, #0x1e] - b _0206781A -_0206778E: - ldr r4, [r6, #0x10] - lsl r0, r4, #0x2 - lsr r0, r0, #0x1b - lsl r5, r0, #0x19 - lsl r0, r4, #0x7 - lsr r0, r0, #0x1b - lsl r3, r0, #0x14 - lsl r0, r4, #0xc - lsr r0, r0, #0x1b - lsl r2, r0, #0xf - lsl r0, r4, #0x11 - lsr r0, r0, #0x1b - lsl r1, r0, #0xa - lsl r0, r4, #0x1b - lsl r4, r4, #0x16 - lsr r4, r4, #0x1b - lsr r0, r0, #0x1b - lsl r4, r4, #0x5 - orr r0, r4 - orr r0, r1 - orr r0, r2 - orr r0, r3 - add r4, r5, #0x0 - orr r4, r0 - b _0206781A -_020677C0: - ldrh r0, [r5, #0x0] - cmp r0, #0x1d - beq _020677CA - cmp r0, #0x20 - bne _020677D4 -_020677CA: - ldr r0, [r6, #0x10] - lsr r0, r0, #0x1f - bne _020677D4 - mov r4, #0x0 - b _0206781A -_020677D4: - mov r4, #0x1 - b _0206781A -_020677D8: - ldrh r0, [r5, #0x0] - ldr r1, _0206782C ; =SPECIES_ARCEUS - cmp r0, r1 - bne _020677FC - ldrb r1, [r5, #0xd] - cmp r1, #0x79 - bne _020677FC - ldrh r0, [r5, #0x2] - mov r1, #0x1 - add r2, r4, #0x0 - bl FUN_0206E7B8 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl GetArceusTypeByPlate - add r4, r0, #0x0 - b _0206781A -_020677FC: - ldrb r1, [r6, #0x18] - ldr r2, [sp, #0x4] - lsl r1, r1, #0x18 - sub r2, #0xaa - lsr r1, r1, #0x1b - str r2, [sp, #0x4] - bl GetMonBaseStat_HandleFormeConversion - add r4, r0, #0x0 - b _0206781A -_02067810: - ldrh r0, [r5, #0x0] - ldr r2, [sp, #0x8] - add r1, r4, #0x0 - bl GetSpeciesName -_0206781A: - add r0, r4, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_02067820: .word SPECIES_EGG -_02067824: .word SPECIES_MANAPHY_EGG -_02067828: .word 0x0000FFFF -_0206782C: .word SPECIES_ARCEUS - - thumb_func_start SetMonDataEncrypted -SetMonDataEncrypted: ; 0x02067830 - push {r4-r6, lr} - add r5, r0, #0x0 - ldrh r0, [r5, #0x4] - add r4, r1, #0x0 - add r6, r2, #0x0 - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - bne _02067886 - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonDecryptSegment - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - ldrh r1, [r5, #0x6] - cmp r0, r1 - beq _02067886 - cmp r0, r1 - beq _02067870 - bl ErrorHandling -_02067870: - ldrh r1, [r5, #0x4] - mov r0, #0x4 - orr r0, r1 - strh r0, [r5, #0x4] - ldrh r2, [r5, #0x6] - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment - pop {r4-r6, pc} -_02067886: - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl SetMonData - ldrh r0, [r5, #0x4] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - bne _020678BC - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonEncryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - strh r0, [r5, #0x6] - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_020678BC: - pop {r4-r6, pc} - .balign 4 - - thumb_func_start SetMonData -SetMonData: ; 0x020678C0 - push {r3, lr} - add r3, r0, #0x0 - add r0, r1, #0x0 - sub r0, #0x9f - cmp r0, #0xb - bhi _02067958 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020678D8: ; jump table (using 16-bit offset) - .short _020678F0 - _020678D8 - 2; case 0 - .short _020678F8 - _020678D8 - 2; case 1 - .short _02067900 - _020678D8 - 2; case 2 - .short _02067908 - _020678D8 - 2; case 3 - .short _02067910 - _020678D8 - 2; case 4 - .short _02067918 - _020678D8 - 2; case 5 - .short _02067920 - _020678D8 - 2; case 6 - .short _02067928 - _020678D8 - 2; case 7 - .short _02067930 - _020678D8 - 2; case 8 - .short _02067938 - _020678D8 - 2; case 9 - .short _02067940 - _020678D8 - 2; case 10 - .short _0206794C - _020678D8 - 2; case 11 -_020678F0: - ldr r0, [r2, #0x0] - add r3, #0x88 - str r0, [r3, #0x0] - pop {r3, pc} -_020678F8: - ldrb r0, [r2, #0x0] - add r3, #0x8c - strb r0, [r3, #0x0] - pop {r3, pc} -_02067900: - ldrb r0, [r2, #0x0] - add r3, #0x8d - strb r0, [r3, #0x0] - pop {r3, pc} -_02067908: - ldrh r0, [r2, #0x0] - add r3, #0x8e - strh r0, [r3, #0x0] - pop {r3, pc} -_02067910: - ldrh r0, [r2, #0x0] - add r3, #0x90 - strh r0, [r3, #0x0] - pop {r3, pc} -_02067918: - ldrh r0, [r2, #0x0] - add r3, #0x92 - strh r0, [r3, #0x0] - pop {r3, pc} -_02067920: - ldrh r0, [r2, #0x0] - add r3, #0x94 - strh r0, [r3, #0x0] - pop {r3, pc} -_02067928: - ldrh r0, [r2, #0x0] - add r3, #0x96 - strh r0, [r3, #0x0] - pop {r3, pc} -_02067930: - ldrh r0, [r2, #0x0] - add r3, #0x98 - strh r0, [r3, #0x0] - pop {r3, pc} -_02067938: - ldrh r0, [r2, #0x0] - add r3, #0x9a - strh r0, [r3, #0x0] - pop {r3, pc} -_02067940: - add r3, #0x9c - add r0, r2, #0x0 - add r1, r3, #0x0 - bl CopySealsObject - pop {r3, pc} -_0206794C: - add r3, #0xd4 - add r0, r2, #0x0 - add r1, r3, #0x0 - bl FUN_02029C74 - pop {r3, pc} -_02067958: - add r0, r3, #0x0 - bl SetBoxMonData - pop {r3, pc} - - thumb_func_start SetBoxMonDataEncrypted -SetBoxMonDataEncrypted: ; 0x02067960 - push {r4-r6, lr} - add r5, r0, #0x0 - ldrh r0, [r5, #0x4] - add r4, r1, #0x0 - add r6, r2, #0x0 - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - bne _020679AA - ldrh r2, [r5, #0x6] - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - ldrh r1, [r5, #0x6] - cmp r0, r1 - beq _020679AA - cmp r0, r1 - beq _02067994 - bl ErrorHandling -_02067994: - ldrh r1, [r5, #0x4] - mov r0, #0x4 - orr r0, r1 - strh r0, [r5, #0x4] - ldrh r2, [r5, #0x6] - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment - pop {r4-r6, pc} -_020679AA: - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl SetBoxMonData - ldrh r0, [r5, #0x4] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - bne _020679D4 - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - strh r0, [r5, #0x6] - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_020679D4: - pop {r4-r6, pc} - .balign 4 - - thumb_func_start SetBoxMonData -SetBoxMonData: ; 0x020679D8 - push {r4-r7, lr} - sub sp, #0x4c - str r1, [sp, #0x4] - add r1, r0, #0x0 - add r4, r2, #0x0 - ldr r1, [r1, #0x0] - str r0, [sp, #0x0] - mov r2, #0x0 - bl GetSubstruct - add r7, r0, #0x0 - ldr r0, [sp, #0x0] - mov r2, #0x1 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r5, r0, #0x0 - ldr r0, [sp, #0x0] - mov r2, #0x2 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r6, r0, #0x0 - ldr r0, [sp, #0x0] - mov r2, #0x3 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r1, r0, #0x0 - ldr r0, [sp, #0x4] - cmp r0, #0xb2 - bls _02067A20 - b _02067FF6 -_02067A20: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02067A2C: ; jump table (using 16-bit offset) - .short _02067B92 - _02067A2C - 2; case 0 - .short _02067B9C - _02067A2C - 2; case 1 - .short _02067BBA - _02067A2C - 2; case 2 - .short _02067BD6 - _02067A2C - 2; case 3 - .short _02067BEE - _02067A2C - 2; case 4 - .short _02067BF8 - _02067A2C - 2; case 5 - .short _02067C00 - _02067A2C - 2; case 6 - .short _02067C08 - _02067A2C - 2; case 7 - .short _02067C10 - _02067A2C - 2; case 8 - .short _02067C18 - _02067A2C - 2; case 9 - .short _02067C20 - _02067A2C - 2; case 10 - .short _02067C28 - _02067A2C - 2; case 11 - .short _02067C30 - _02067A2C - 2; case 12 - .short _02067C38 - _02067A2C - 2; case 13 - .short _02067C40 - _02067A2C - 2; case 14 - .short _02067C48 - _02067A2C - 2; case 15 - .short _02067C50 - _02067A2C - 2; case 16 - .short _02067C58 - _02067A2C - 2; case 17 - .short _02067C60 - _02067A2C - 2; case 18 - .short _02067C68 - _02067A2C - 2; case 19 - .short _02067C70 - _02067A2C - 2; case 20 - .short _02067C78 - _02067A2C - 2; case 21 - .short _02067C80 - _02067A2C - 2; case 22 - .short _02067C88 - _02067A2C - 2; case 23 - .short _02067C90 - _02067A2C - 2; case 24 - .short _02067C98 - _02067A2C - 2; case 25 - .short _02067C98 - _02067A2C - 2; case 26 - .short _02067C98 - _02067A2C - 2; case 27 - .short _02067C98 - _02067A2C - 2; case 28 - .short _02067C98 - _02067A2C - 2; case 29 - .short _02067C98 - _02067A2C - 2; case 30 - .short _02067C98 - _02067A2C - 2; case 31 - .short _02067C98 - _02067A2C - 2; case 32 - .short _02067C98 - _02067A2C - 2; case 33 - .short _02067C98 - _02067A2C - 2; case 34 - .short _02067C98 - _02067A2C - 2; case 35 - .short _02067C98 - _02067A2C - 2; case 36 - .short _02067C98 - _02067A2C - 2; case 37 - .short _02067C98 - _02067A2C - 2; case 38 - .short _02067C98 - _02067A2C - 2; case 39 - .short _02067C98 - _02067A2C - 2; case 40 - .short _02067C98 - _02067A2C - 2; case 41 - .short _02067C98 - _02067A2C - 2; case 42 - .short _02067C98 - _02067A2C - 2; case 43 - .short _02067C98 - _02067A2C - 2; case 44 - .short _02067C98 - _02067A2C - 2; case 45 - .short _02067C98 - _02067A2C - 2; case 46 - .short _02067C98 - _02067A2C - 2; case 47 - .short _02067C98 - _02067A2C - 2; case 48 - .short _02067C98 - _02067A2C - 2; case 49 - .short _02067C98 - _02067A2C - 2; case 50 - .short _02067C98 - _02067A2C - 2; case 51 - .short _02067C98 - _02067A2C - 2; case 52 - .short _02067C98 - _02067A2C - 2; case 53 - .short _02067CC6 - _02067A2C - 2; case 54 - .short _02067CC6 - _02067A2C - 2; case 55 - .short _02067CC6 - _02067A2C - 2; case 56 - .short _02067CC6 - _02067A2C - 2; case 57 - .short _02067CD6 - _02067A2C - 2; case 58 - .short _02067CD6 - _02067A2C - 2; case 59 - .short _02067CD6 - _02067A2C - 2; case 60 - .short _02067CD6 - _02067A2C - 2; case 61 - .short _02067CE6 - _02067A2C - 2; case 62 - .short _02067CE6 - _02067A2C - 2; case 63 - .short _02067CE6 - _02067A2C - 2; case 64 - .short _02067CE6 - _02067A2C - 2; case 65 - .short _02067FF6 - _02067A2C - 2; case 66 - .short _02067FF6 - _02067A2C - 2; case 67 - .short _02067FF6 - _02067A2C - 2; case 68 - .short _02067FF6 - _02067A2C - 2; case 69 - .short _02067CF6 - _02067A2C - 2; case 70 - .short _02067D0A - _02067A2C - 2; case 71 - .short _02067D1E - _02067A2C - 2; case 72 - .short _02067D32 - _02067A2C - 2; case 73 - .short _02067D46 - _02067A2C - 2; case 74 - .short _02067D5A - _02067A2C - 2; case 75 - .short _02067D6E - _02067A2C - 2; case 76 - .short _02067D82 - _02067A2C - 2; case 77 - .short _02067D94 - _02067A2C - 2; case 78 - .short _02067D94 - _02067A2C - 2; case 79 - .short _02067D94 - _02067A2C - 2; case 80 - .short _02067D94 - _02067A2C - 2; case 81 - .short _02067D94 - _02067A2C - 2; case 82 - .short _02067D94 - _02067A2C - 2; case 83 - .short _02067D94 - _02067A2C - 2; case 84 - .short _02067D94 - _02067A2C - 2; case 85 - .short _02067D94 - _02067A2C - 2; case 86 - .short _02067D94 - _02067A2C - 2; case 87 - .short _02067D94 - _02067A2C - 2; case 88 - .short _02067D94 - _02067A2C - 2; case 89 - .short _02067D94 - _02067A2C - 2; case 90 - .short _02067D94 - _02067A2C - 2; case 91 - .short _02067D94 - _02067A2C - 2; case 92 - .short _02067D94 - _02067A2C - 2; case 93 - .short _02067D94 - _02067A2C - 2; case 94 - .short _02067D94 - _02067A2C - 2; case 95 - .short _02067D94 - _02067A2C - 2; case 96 - .short _02067D94 - _02067A2C - 2; case 97 - .short _02067D94 - _02067A2C - 2; case 98 - .short _02067D94 - _02067A2C - 2; case 99 - .short _02067D94 - _02067A2C - 2; case 100 - .short _02067D94 - _02067A2C - 2; case 101 - .short _02067D94 - _02067A2C - 2; case 102 - .short _02067D94 - _02067A2C - 2; case 103 - .short _02067D94 - _02067A2C - 2; case 104 - .short _02067D94 - _02067A2C - 2; case 105 - .short _02067D94 - _02067A2C - 2; case 106 - .short _02067D94 - _02067A2C - 2; case 107 - .short _02067D94 - _02067A2C - 2; case 108 - .short _02067D94 - _02067A2C - 2; case 109 - .short _02067DC2 - _02067A2C - 2; case 110 - .short _02067DD6 - _02067A2C - 2; case 111 - .short _02067DEA - _02067A2C - 2; case 112 - .short _02067DFE - _02067A2C - 2; case 113 - .short _02067E06 - _02067A2C - 2; case 114 - .short _02067FF6 - _02067A2C - 2; case 115 - .short _02067E2C - _02067A2C - 2; case 116 - .short _02067E0E - _02067A2C - 2; case 117 - .short _02067E6C - _02067A2C - 2; case 118 - .short _02067E40 - _02067A2C - 2; case 119 - .short _02067E7A - _02067A2C - 2; case 120 - .short _02067E82 - _02067A2C - 2; case 121 - .short _02067E8A - _02067A2C - 2; case 122 - .short _02067E8A - _02067A2C - 2; case 123 - .short _02067E8A - _02067A2C - 2; case 124 - .short _02067E8A - _02067A2C - 2; case 125 - .short _02067E8A - _02067A2C - 2; case 126 - .short _02067E8A - _02067A2C - 2; case 127 - .short _02067E8A - _02067A2C - 2; case 128 - .short _02067E8A - _02067A2C - 2; case 129 - .short _02067E8A - _02067A2C - 2; case 130 - .short _02067E8A - _02067A2C - 2; case 131 - .short _02067E8A - _02067A2C - 2; case 132 - .short _02067E8A - _02067A2C - 2; case 133 - .short _02067E8A - _02067A2C - 2; case 134 - .short _02067E8A - _02067A2C - 2; case 135 - .short _02067E8A - _02067A2C - 2; case 136 - .short _02067E8A - _02067A2C - 2; case 137 - .short _02067E8A - _02067A2C - 2; case 138 - .short _02067E8A - _02067A2C - 2; case 139 - .short _02067E8A - _02067A2C - 2; case 140 - .short _02067E8A - _02067A2C - 2; case 141 - .short _02067E8A - _02067A2C - 2; case 142 - .short _02067ECE - _02067A2C - 2; case 143 - .short _02067EE2 - _02067A2C - 2; case 144 - .short _02067EEE - _02067A2C - 2; case 145 - .short _02067EF6 - _02067A2C - 2; case 146 - .short _02067EFE - _02067A2C - 2; case 147 - .short _02067F06 - _02067A2C - 2; case 148 - .short _02067F0E - _02067A2C - 2; case 149 - .short _02067F16 - _02067A2C - 2; case 150 - .short _02067F1E - _02067A2C - 2; case 151 - .short _02067F26 - _02067A2C - 2; case 152 - .short _02067F2E - _02067A2C - 2; case 153 - .short _02067F36 - _02067A2C - 2; case 154 - .short _02067F3E - _02067A2C - 2; case 155 - .short _02067F52 - _02067A2C - 2; case 156 - .short _02067F66 - _02067A2C - 2; case 157 - .short _02067F6E - _02067A2C - 2; case 158 - .short _02067FF6 - _02067A2C - 2; case 159 - .short _02067FF6 - _02067A2C - 2; case 160 - .short _02067FF6 - _02067A2C - 2; case 161 - .short _02067FF6 - _02067A2C - 2; case 162 - .short _02067FF6 - _02067A2C - 2; case 163 - .short _02067FF6 - _02067A2C - 2; case 164 - .short _02067FF6 - _02067A2C - 2; case 165 - .short _02067FF6 - _02067A2C - 2; case 166 - .short _02067FF6 - _02067A2C - 2; case 167 - .short _02067FF6 - _02067A2C - 2; case 168 - .short _02067FF6 - _02067A2C - 2; case 169 - .short _02067FF6 - _02067A2C - 2; case 170 - .short _02067FF6 - _02067A2C - 2; case 171 - .short _02067FF6 - _02067A2C - 2; case 172 - .short _02067FF6 - _02067A2C - 2; case 173 - .short _02067F76 - _02067A2C - 2; case 174 - .short _02067FF6 - _02067A2C - 2; case 175 - .short _02067FF6 - _02067A2C - 2; case 176 - .short _02067FF6 - _02067A2C - 2; case 177 - .short _02067FDE - _02067A2C - 2; case 178 -_02067B92: - ldr r0, [sp, #0x0] - ldr r1, [r4, #0x0] - add sp, #0x4c - str r1, [r0, #0x0] - pop {r4-r7, pc} -_02067B9C: - bl ErrorHandling - ldr r0, [sp, #0x0] - ldrb r1, [r4, #0x0] - ldrh r2, [r0, #0x4] - mov r0, #0x1 - bic r2, r0 - mov r0, #0x1 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, [sp, #0x0] - add sp, #0x4c - strh r1, [r0, #0x4] - pop {r4-r7, pc} -_02067BBA: - bl ErrorHandling - ldr r0, [sp, #0x0] - ldrh r1, [r0, #0x4] - mov r0, #0x2 - bic r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1e - orr r1, r0 - ldr r0, [sp, #0x0] - add sp, #0x4c - strh r1, [r0, #0x4] - pop {r4-r7, pc} -_02067BD6: - ldr r0, [sp, #0x0] - ldrh r1, [r0, #0x4] - mov r0, #0x4 - bic r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1d - orr r1, r0 - ldr r0, [sp, #0x0] - add sp, #0x4c - strh r1, [r0, #0x4] - pop {r4-r7, pc} -_02067BEE: - ldrh r1, [r4, #0x0] - ldr r0, [sp, #0x0] - add sp, #0x4c - strh r1, [r0, #0x6] - pop {r4-r7, pc} -_02067BF8: - ldrh r0, [r4, #0x0] - add sp, #0x4c - strh r0, [r7, #0x0] - pop {r4-r7, pc} -_02067C00: - ldrh r0, [r4, #0x0] - add sp, #0x4c - strh r0, [r7, #0x2] - pop {r4-r7, pc} -_02067C08: - ldr r0, [r4, #0x0] - add sp, #0x4c - str r0, [r7, #0x4] - pop {r4-r7, pc} -_02067C10: - ldr r0, [r4, #0x0] - add sp, #0x4c - str r0, [r7, #0x8] - pop {r4-r7, pc} -_02067C18: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0xc] - pop {r4-r7, pc} -_02067C20: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0xd] - pop {r4-r7, pc} -_02067C28: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0xe] - pop {r4-r7, pc} -_02067C30: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0xf] - pop {r4-r7, pc} -_02067C38: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x10] - pop {r4-r7, pc} -_02067C40: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x11] - pop {r4-r7, pc} -_02067C48: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x12] - pop {r4-r7, pc} -_02067C50: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x13] - pop {r4-r7, pc} -_02067C58: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x14] - pop {r4-r7, pc} -_02067C60: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x15] - pop {r4-r7, pc} -_02067C68: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x16] - pop {r4-r7, pc} -_02067C70: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x17] - pop {r4-r7, pc} -_02067C78: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x18] - pop {r4-r7, pc} -_02067C80: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x19] - pop {r4-r7, pc} -_02067C88: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x1a] - pop {r4-r7, pc} -_02067C90: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x1b] - pop {r4-r7, pc} -_02067C98: - ldrb r4, [r4, #0x0] - ldr r2, [sp, #0x4] - mov r1, #0x0 - sub r2, #0x19 - add r0, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - cmp r4, #0x0 - beq _02067CB6 - ldr r1, [r7, #0x1c] - add sp, #0x4c - orr r0, r1 - str r0, [r7, #0x1c] - pop {r4-r7, pc} -_02067CB6: - mov r1, #0x0 - sub r1, r1, #0x1 - ldr r2, [r7, #0x1c] - eor r0, r1 - and r0, r2 - add sp, #0x4c - str r0, [r7, #0x1c] - pop {r4-r7, pc} -_02067CC6: - ldr r0, [sp, #0x4] - ldrh r1, [r4, #0x0] - sub r0, #0x36 - str r0, [sp, #0x4] - lsl r0, r0, #0x1 - add sp, #0x4c - strh r1, [r5, r0] - pop {r4-r7, pc} -_02067CD6: - ldr r0, [sp, #0x4] - ldrb r1, [r4, #0x0] - sub r0, #0x3a - str r0, [sp, #0x4] - add r0, r5, r0 - strb r1, [r0, #0x8] - add sp, #0x4c - pop {r4-r7, pc} -_02067CE6: - ldr r0, [sp, #0x4] - ldrb r1, [r4, #0x0] - sub r0, #0x3e - str r0, [sp, #0x4] - add r0, r5, r0 - strb r1, [r0, #0xc] - add sp, #0x4c - pop {r4-r7, pc} -_02067CF6: - ldr r2, [r5, #0x10] - mov r0, #0x1f - bic r2, r0 - ldrb r1, [r4, #0x0] - mov r0, #0x1f - add sp, #0x4c - and r0, r1 - orr r0, r2 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D0A: - ldr r1, [r5, #0x10] - ldr r0, _02067FFC ; =0xFFFFFC1F - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x16 - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D1E: - ldr r1, [r5, #0x10] - ldr r0, _02068000 ; =0xFFFF83FF - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x11 - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D32: - ldr r1, [r5, #0x10] - ldr r0, _02068004 ; =0xFFF07FFF - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0xc - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D46: - ldr r1, [r5, #0x10] - ldr r0, _02068008 ; =0xFE0FFFFF - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x7 - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D5A: - ldr r1, [r5, #0x10] - ldr r0, _0206800C ; =0xC1FFFFFF - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x2 - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D6E: - ldr r1, [r5, #0x10] - ldr r0, _02068010 ; =0xBFFFFFFF - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1 - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D82: - ldr r1, [r5, #0x10] - ldr r0, _02068014 ; =0x7FFFFFFF - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1f - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D94: - ldrb r4, [r4, #0x0] - ldr r2, [sp, #0x4] - mov r1, #0x0 - sub r2, #0x4e - add r0, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - cmp r4, #0x0 - beq _02067DB2 - ldr r1, [r5, #0x14] - add sp, #0x4c - orr r0, r1 - str r0, [r5, #0x14] - pop {r4-r7, pc} -_02067DB2: - mov r1, #0x0 - sub r1, r1, #0x1 - ldr r2, [r5, #0x14] - eor r0, r1 - and r0, r2 - add sp, #0x4c - str r0, [r5, #0x14] - pop {r4-r7, pc} -_02067DC2: - ldrb r2, [r5, #0x18] - ldrb r1, [r4, #0x0] - mov r0, #0x1 - bic r2, r0 - mov r0, #0x1 - and r0, r1 - orr r0, r2 - add sp, #0x4c - strb r0, [r5, #0x18] - pop {r4-r7, pc} -_02067DD6: - ldrb r1, [r5, #0x18] - mov r0, #0x6 - add sp, #0x4c - bic r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1d - orr r0, r1 - strb r0, [r5, #0x18] - pop {r4-r7, pc} -_02067DEA: - ldrb r1, [r5, #0x18] - mov r0, #0xf8 - add sp, #0x4c - bic r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x18 - orr r0, r1 - strb r0, [r5, #0x18] - pop {r4-r7, pc} -_02067DFE: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r5, #0x19] - pop {r4-r7, pc} -_02067E06: - ldrh r0, [r4, #0x0] - add sp, #0x4c - strh r0, [r5, #0x1a] - pop {r4-r7, pc} -_02067E0E: - ldrh r0, [r7, #0x0] - mov r1, #0x0 - add r2, sp, #0x34 - bl GetSpeciesName - add r0, sp, #0x34 - add r1, r4, #0x0 - bl StringNotEqual - ldr r2, [r5, #0x10] - ldr r1, _02068014 ; =0x7FFFFFFF - lsl r0, r0, #0x1f - and r1, r2 - orr r0, r1 - str r0, [r5, #0x10] -_02067E2C: - mov r1, #0x0 -_02067E2E: - ldrh r0, [r4, #0x0] - add r1, r1, #0x1 - add r4, r4, #0x2 - strh r0, [r6, #0x0] - add r6, r6, #0x2 - cmp r1, #0xb - blo _02067E2E - add sp, #0x4c - pop {r4-r7, pc} -_02067E40: - ldrh r0, [r7, #0x0] - add r2, sp, #0x1c - mov r1, #0x0 - add r2, #0x2 - bl GetSpeciesName - add r0, r4, #0x0 - add r1, sp, #0x8 - mov r2, #0xb - bl FUN_02021EF0 - add r0, sp, #0x1c - add r0, #0x2 - add r1, sp, #0x8 - bl StringNotEqual - ldr r2, [r5, #0x10] - ldr r1, _02068014 ; =0x7FFFFFFF - lsl r0, r0, #0x1f - and r1, r2 - orr r0, r1 - str r0, [r5, #0x10] -_02067E6C: - add r0, r4, #0x0 - add r1, r6, #0x0 - mov r2, #0xb - bl FUN_02021EF0 - add sp, #0x4c - pop {r4-r7, pc} -_02067E7A: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r6, #0x16] - pop {r4-r7, pc} -_02067E82: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r6, #0x17] - pop {r4-r7, pc} -_02067E8A: - ldrb r4, [r4, #0x0] - ldr r2, [sp, #0x4] - mov r1, #0x0 - sub r2, #0x7a - add r0, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - cmp r4, #0x0 - beq _02067EB2 - add r4, r6, #0x0 - add r4, #0x18 - ldr r3, [r6, #0x18] - ldr r2, [r4, #0x4] - orr r0, r3 - orr r1, r2 - str r0, [r6, #0x18] - add sp, #0x4c - str r1, [r4, #0x4] - pop {r4-r7, pc} -_02067EB2: - add r4, r6, #0x0 - mov r5, #0x0 - mvn r5, r5 - add r4, #0x18 - ldr r3, [r6, #0x18] - eor r0, r5 - ldr r2, [r4, #0x4] - eor r1, r5 - and r0, r3 - and r1, r2 - str r0, [r6, #0x18] - add sp, #0x4c - str r1, [r4, #0x4] - pop {r4-r7, pc} -_02067ECE: - mov r2, #0x0 -_02067ED0: - ldrh r0, [r4, #0x0] - add r2, r2, #0x1 - add r4, r4, #0x2 - strh r0, [r1, #0x0] - add r1, r1, #0x2 - cmp r2, #0x8 - blo _02067ED0 - add sp, #0x4c - pop {r4-r7, pc} -_02067EE2: - add r0, r4, #0x0 - mov r2, #0x8 - bl FUN_02021EF0 - add sp, #0x4c - pop {r4-r7, pc} -_02067EEE: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x10] - pop {r4-r7, pc} -_02067EF6: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x11] - pop {r4-r7, pc} -_02067EFE: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x12] - pop {r4-r7, pc} -_02067F06: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x13] - pop {r4-r7, pc} -_02067F0E: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x14] - pop {r4-r7, pc} -_02067F16: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x15] - pop {r4-r7, pc} -_02067F1E: - ldrh r0, [r4, #0x0] - add sp, #0x4c - strh r0, [r1, #0x16] - pop {r4-r7, pc} -_02067F26: - ldrh r0, [r4, #0x0] - add sp, #0x4c - strh r0, [r1, #0x18] - pop {r4-r7, pc} -_02067F2E: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x1a] - pop {r4-r7, pc} -_02067F36: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x1b] - pop {r4-r7, pc} -_02067F3E: - ldrb r3, [r1, #0x1c] - ldrb r2, [r4, #0x0] - mov r0, #0x7f - bic r3, r0 - mov r0, #0x7f - and r0, r2 - orr r0, r3 - strb r0, [r1, #0x1c] - add sp, #0x4c - pop {r4-r7, pc} -_02067F52: - ldrb r2, [r1, #0x1c] - mov r0, #0x80 - add sp, #0x4c - bic r2, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x18 - orr r0, r2 - strb r0, [r1, #0x1c] - pop {r4-r7, pc} -_02067F66: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x1d] - pop {r4-r7, pc} -_02067F6E: - ldrh r0, [r4, #0x0] - add sp, #0x4c - strh r0, [r1, #0x1e] - pop {r4-r7, pc} -_02067F76: - ldr r2, [r5, #0x10] - mov r0, #0x1f - bic r2, r0 - ldr r1, [r4, #0x0] - mov r0, #0x1f - and r1, r0 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _02067FFC ; =0xFFFFFC1F - str r1, [r5, #0x10] - and r1, r0 - ldr r0, [r4, #0x0] - add sp, #0x4c - lsr r0, r0, #0x5 - lsl r0, r0, #0x1b - lsr r0, r0, #0x16 - orr r1, r0 - ldr r0, _02068000 ; =0xFFFF83FF - str r1, [r5, #0x10] - and r1, r0 - ldr r0, [r4, #0x0] - lsr r0, r0, #0xa - lsl r0, r0, #0x1b - lsr r0, r0, #0x11 - orr r1, r0 - ldr r0, _02068004 ; =0xFFF07FFF - str r1, [r5, #0x10] - and r1, r0 - ldr r0, [r4, #0x0] - lsr r0, r0, #0xf - lsl r0, r0, #0x1b - lsr r0, r0, #0xc - orr r1, r0 - ldr r0, _02068008 ; =0xFE0FFFFF - str r1, [r5, #0x10] - and r1, r0 - ldr r0, [r4, #0x0] - lsr r0, r0, #0x14 - lsl r0, r0, #0x1b - lsr r0, r0, #0x7 - orr r1, r0 - ldr r0, _0206800C ; =0xC1FFFFFF - str r1, [r5, #0x10] - and r1, r0 - ldr r0, [r4, #0x0] - lsr r0, r0, #0x19 - lsl r0, r0, #0x1b - lsr r0, r0, #0x2 - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067FDE: - ldrh r0, [r7, #0x0] - mov r1, #0x0 - bl FUN_0200AA50 - add r4, r0, #0x0 - add r1, r6, #0x0 - mov r2, #0xb - bl FUN_02021EF0 - add r0, r4, #0x0 - bl FUN_02021A20 -_02067FF6: - add sp, #0x4c - pop {r4-r7, pc} - nop -_02067FFC: .word 0xFFFFFC1F -_02068000: .word 0xFFFF83FF -_02068004: .word 0xFFF07FFF -_02068008: .word 0xFE0FFFFF -_0206800C: .word 0xC1FFFFFF -_02068010: .word 0xBFFFFFFF -_02068014: .word 0x7FFFFFFF - - thumb_func_start AddMonPartyStatEncrypted -AddMonPartyStatEncrypted: ; 0x02068018 - push {r4-r6, lr} - add r5, r0, #0x0 - ldrh r0, [r5, #0x4] - add r4, r1, #0x0 - add r6, r2, #0x0 - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - bne _02068066 - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonDecryptSegment - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - ldrh r1, [r5, #0x6] - cmp r0, r1 - beq _02068066 - cmp r0, r1 - beq _02068058 - bl ErrorHandling -_02068058: - ldrh r2, [r5, #0x6] - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment - pop {r4-r6, pc} -_02068066: - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl AddMonData - ldrh r0, [r5, #0x4] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - bne _0206809C - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonEncryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - strh r0, [r5, #0x6] - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_0206809C: - pop {r4-r6, pc} - .balign 4 - - thumb_func_start AddMonData -AddMonData: ; 0x020680A0 - push {r3, lr} - add r3, r1, #0x0 - sub r3, #0x9f - cmp r3, #0xa - bhi _020680F8 - add r3, r3, r3 - add r3, pc - ldrh r3, [r3, #0x6] - lsl r3, r3, #0x10 - asr r3, r3, #0x10 - add pc, r3 -_020680B6: ; jump table (using 16-bit offset) - .short _020680F2 - _020680B6 - 2; case 0 - .short _020680F2 - _020680B6 - 2; case 1 - .short _020680F2 - _020680B6 - 2; case 2 - .short _020680CC - _020680B6 - 2; case 3 - .short _020680F2 - _020680B6 - 2; case 4 - .short _020680F2 - _020680B6 - 2; case 5 - .short _020680F2 - _020680B6 - 2; case 6 - .short _020680F2 - _020680B6 - 2; case 7 - .short _020680F2 - _020680B6 - 2; case 8 - .short _020680F2 - _020680B6 - 2; case 9 - .short _020680F2 - _020680B6 - 2; case 10 -_020680CC: - add r1, r0, #0x0 - add r1, #0x90 - ldrh r3, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x8e - ldrh r1, [r1, #0x0] - add r1, r1, r2 - cmp r1, r3 - ble _020680E4 - add r0, #0x8e - strh r3, [r0, #0x0] - pop {r3, pc} -_020680E4: - add r1, r0, #0x0 - add r1, #0x8e - ldrh r1, [r1, #0x0] - add r0, #0x8e - add r1, r1, r2 - strh r1, [r0, #0x0] - pop {r3, pc} -_020680F2: - bl ErrorHandling - pop {r3, pc} -_020680F8: - bl AddBoxMonData - pop {r3, pc} - .balign 4 - - thumb_func_start AddBoxMonData -AddBoxMonData: ; 0x02068100 - push {r4-r7, lr} - sub sp, #0xc - add r7, r1, #0x0 - add r1, r0, #0x0 - add r6, r2, #0x0 - ldr r1, [r1, #0x0] - str r0, [sp, #0x0] - mov r2, #0x0 - bl GetSubstruct - add r4, r0, #0x0 - ldr r0, [sp, #0x0] - mov r2, #0x1 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r5, r0, #0x0 - ldr r0, [sp, #0x0] - mov r2, #0x2 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - ldr r0, [sp, #0x0] - mov r2, #0x3 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - cmp r7, #0xb2 - bls _02068142 - b _02068500 -_02068142: - add r0, r7, r7 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0206814E: ; jump table (using 16-bit offset) - .short _02068500 - _0206814E - 2; case 0 - .short _02068500 - _0206814E - 2; case 1 - .short _02068500 - _0206814E - 2; case 2 - .short _02068500 - _0206814E - 2; case 3 - .short _02068500 - _0206814E - 2; case 4 - .short _02068500 - _0206814E - 2; case 5 - .short _02068500 - _0206814E - 2; case 6 - .short _02068500 - _0206814E - 2; case 7 - .short _020682B4 - _0206814E - 2; case 8 - .short _020682D8 - _0206814E - 2; case 9 - .short _02068500 - _0206814E - 2; case 10 - .short _02068500 - _0206814E - 2; case 11 - .short _02068500 - _0206814E - 2; case 12 - .short _020682EE - _0206814E - 2; case 13 - .short _020682F8 - _0206814E - 2; case 14 - .short _02068302 - _0206814E - 2; case 15 - .short _0206830C - _0206814E - 2; case 16 - .short _02068316 - _0206814E - 2; case 17 - .short _02068320 - _0206814E - 2; case 18 - .short _0206832A - _0206814E - 2; case 19 - .short _02068340 - _0206814E - 2; case 20 - .short _02068356 - _0206814E - 2; case 21 - .short _0206836C - _0206814E - 2; case 22 - .short _02068382 - _0206814E - 2; case 23 - .short _02068398 - _0206814E - 2; case 24 - .short _02068500 - _0206814E - 2; case 25 - .short _02068500 - _0206814E - 2; case 26 - .short _02068500 - _0206814E - 2; case 27 - .short _02068500 - _0206814E - 2; case 28 - .short _02068500 - _0206814E - 2; case 29 - .short _02068500 - _0206814E - 2; case 30 - .short _02068500 - _0206814E - 2; case 31 - .short _02068500 - _0206814E - 2; case 32 - .short _02068500 - _0206814E - 2; case 33 - .short _02068500 - _0206814E - 2; case 34 - .short _02068500 - _0206814E - 2; case 35 - .short _02068500 - _0206814E - 2; case 36 - .short _02068500 - _0206814E - 2; case 37 - .short _02068500 - _0206814E - 2; case 38 - .short _02068500 - _0206814E - 2; case 39 - .short _02068500 - _0206814E - 2; case 40 - .short _02068500 - _0206814E - 2; case 41 - .short _02068500 - _0206814E - 2; case 42 - .short _02068500 - _0206814E - 2; case 43 - .short _02068500 - _0206814E - 2; case 44 - .short _02068500 - _0206814E - 2; case 45 - .short _02068500 - _0206814E - 2; case 46 - .short _02068500 - _0206814E - 2; case 47 - .short _02068500 - _0206814E - 2; case 48 - .short _02068500 - _0206814E - 2; case 49 - .short _02068500 - _0206814E - 2; case 50 - .short _02068500 - _0206814E - 2; case 51 - .short _02068500 - _0206814E - 2; case 52 - .short _02068500 - _0206814E - 2; case 53 - .short _02068500 - _0206814E - 2; case 54 - .short _02068500 - _0206814E - 2; case 55 - .short _02068500 - _0206814E - 2; case 56 - .short _02068500 - _0206814E - 2; case 57 - .short _020683AE - _0206814E - 2; case 58 - .short _020683AE - _0206814E - 2; case 59 - .short _020683AE - _0206814E - 2; case 60 - .short _020683AE - _0206814E - 2; case 61 - .short _020683EA - _0206814E - 2; case 62 - .short _020683EA - _0206814E - 2; case 63 - .short _020683EA - _0206814E - 2; case 64 - .short _020683EA - _0206814E - 2; case 65 - .short _02068504 - _0206814E - 2; case 66 - .short _02068504 - _0206814E - 2; case 67 - .short _02068504 - _0206814E - 2; case 68 - .short _02068504 - _0206814E - 2; case 69 - .short _02068404 - _0206814E - 2; case 70 - .short _0206842E - _0206814E - 2; case 71 - .short _02068458 - _0206814E - 2; case 72 - .short _02068482 - _0206814E - 2; case 73 - .short _020684AC - _0206814E - 2; case 74 - .short _020684D6 - _0206814E - 2; case 75 - .short _02068500 - _0206814E - 2; case 76 - .short _02068500 - _0206814E - 2; case 77 - .short _02068500 - _0206814E - 2; case 78 - .short _02068500 - _0206814E - 2; case 79 - .short _02068500 - _0206814E - 2; case 80 - .short _02068500 - _0206814E - 2; case 81 - .short _02068500 - _0206814E - 2; case 82 - .short _02068500 - _0206814E - 2; case 83 - .short _02068500 - _0206814E - 2; case 84 - .short _02068500 - _0206814E - 2; case 85 - .short _02068500 - _0206814E - 2; case 86 - .short _02068500 - _0206814E - 2; case 87 - .short _02068500 - _0206814E - 2; case 88 - .short _02068500 - _0206814E - 2; case 89 - .short _02068500 - _0206814E - 2; case 90 - .short _02068500 - _0206814E - 2; case 91 - .short _02068500 - _0206814E - 2; case 92 - .short _02068500 - _0206814E - 2; case 93 - .short _02068500 - _0206814E - 2; case 94 - .short _02068500 - _0206814E - 2; case 95 - .short _02068500 - _0206814E - 2; case 96 - .short _02068500 - _0206814E - 2; case 97 - .short _02068500 - _0206814E - 2; case 98 - .short _02068500 - _0206814E - 2; case 99 - .short _02068500 - _0206814E - 2; case 100 - .short _02068500 - _0206814E - 2; case 101 - .short _02068500 - _0206814E - 2; case 102 - .short _02068500 - _0206814E - 2; case 103 - .short _02068500 - _0206814E - 2; case 104 - .short _02068500 - _0206814E - 2; case 105 - .short _02068500 - _0206814E - 2; case 106 - .short _02068500 - _0206814E - 2; case 107 - .short _02068500 - _0206814E - 2; case 108 - .short _02068500 - _0206814E - 2; case 109 - .short _02068500 - _0206814E - 2; case 110 - .short _02068500 - _0206814E - 2; case 111 - .short _02068500 - _0206814E - 2; case 112 - .short _02068500 - _0206814E - 2; case 113 - .short _02068500 - _0206814E - 2; case 114 - .short _02068500 - _0206814E - 2; case 115 - .short _02068500 - _0206814E - 2; case 116 - .short _02068500 - _0206814E - 2; case 117 - .short _02068500 - _0206814E - 2; case 118 - .short _02068500 - _0206814E - 2; case 119 - .short _02068500 - _0206814E - 2; case 120 - .short _02068500 - _0206814E - 2; case 121 - .short _02068500 - _0206814E - 2; case 122 - .short _02068500 - _0206814E - 2; case 123 - .short _02068500 - _0206814E - 2; case 124 - .short _02068500 - _0206814E - 2; case 125 - .short _02068500 - _0206814E - 2; case 126 - .short _02068500 - _0206814E - 2; case 127 - .short _02068500 - _0206814E - 2; case 128 - .short _02068500 - _0206814E - 2; case 129 - .short _02068500 - _0206814E - 2; case 130 - .short _02068500 - _0206814E - 2; case 131 - .short _02068500 - _0206814E - 2; case 132 - .short _02068500 - _0206814E - 2; case 133 - .short _02068500 - _0206814E - 2; case 134 - .short _02068500 - _0206814E - 2; case 135 - .short _02068500 - _0206814E - 2; case 136 - .short _02068500 - _0206814E - 2; case 137 - .short _02068500 - _0206814E - 2; case 138 - .short _02068500 - _0206814E - 2; case 139 - .short _02068500 - _0206814E - 2; case 140 - .short _02068500 - _0206814E - 2; case 141 - .short _02068500 - _0206814E - 2; case 142 - .short _02068500 - _0206814E - 2; case 143 - .short _02068500 - _0206814E - 2; case 144 - .short _02068500 - _0206814E - 2; case 145 - .short _02068500 - _0206814E - 2; case 146 - .short _02068500 - _0206814E - 2; case 147 - .short _02068500 - _0206814E - 2; case 148 - .short _02068500 - _0206814E - 2; case 149 - .short _02068500 - _0206814E - 2; case 150 - .short _02068500 - _0206814E - 2; case 151 - .short _02068500 - _0206814E - 2; case 152 - .short _02068500 - _0206814E - 2; case 153 - .short _02068500 - _0206814E - 2; case 154 - .short _02068500 - _0206814E - 2; case 155 - .short _02068500 - _0206814E - 2; case 156 - .short _02068500 - _0206814E - 2; case 157 - .short _02068500 - _0206814E - 2; case 158 - .short _02068500 - _0206814E - 2; case 159 - .short _02068500 - _0206814E - 2; case 160 - .short _02068500 - _0206814E - 2; case 161 - .short _02068500 - _0206814E - 2; case 162 - .short _02068500 - _0206814E - 2; case 163 - .short _02068500 - _0206814E - 2; case 164 - .short _02068500 - _0206814E - 2; case 165 - .short _02068500 - _0206814E - 2; case 166 - .short _02068500 - _0206814E - 2; case 167 - .short _02068500 - _0206814E - 2; case 168 - .short _02068500 - _0206814E - 2; case 169 - .short _02068500 - _0206814E - 2; case 170 - .short _02068500 - _0206814E - 2; case 171 - .short _02068500 - _0206814E - 2; case 172 - .short _02068500 - _0206814E - 2; case 173 - .short _02068500 - _0206814E - 2; case 174 - .short _02068500 - _0206814E - 2; case 175 - .short _02068500 - _0206814E - 2; case 176 - .short _02068500 - _0206814E - 2; case 177 - .short _02068500 - _0206814E - 2; case 178 -_020682B4: - ldrh r0, [r4, #0x0] - mov r1, #0x64 - bl GetMonExpBySpeciesAndLevel - ldr r1, [r4, #0x8] - add r1, r1, r6 - cmp r1, r0 - bls _020682D2 - ldrh r0, [r4, #0x0] - mov r1, #0x64 - bl GetMonExpBySpeciesAndLevel - add sp, #0xc - str r0, [r4, #0x8] - pop {r4-r7, pc} -_020682D2: - add sp, #0xc - str r1, [r4, #0x8] - pop {r4-r7, pc} -_020682D8: - ldrb r0, [r4, #0xc] - add r0, r0, r6 - cmp r0, #0xff - ble _020682E8 - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0xc] - pop {r4-r7, pc} -_020682E8: - add sp, #0xc - strb r0, [r4, #0xc] - pop {r4-r7, pc} -_020682EE: - ldrb r0, [r4, #0x10] - add sp, #0xc - add r0, r0, r6 - strb r0, [r4, #0x10] - pop {r4-r7, pc} -_020682F8: - ldrb r0, [r4, #0x11] - add sp, #0xc - add r0, r0, r6 - strb r0, [r4, #0x11] - pop {r4-r7, pc} -_02068302: - ldrb r0, [r4, #0x12] - add sp, #0xc - add r0, r0, r6 - strb r0, [r4, #0x12] - pop {r4-r7, pc} -_0206830C: - ldrb r0, [r4, #0x13] - add sp, #0xc - add r0, r0, r6 - strb r0, [r4, #0x13] - pop {r4-r7, pc} -_02068316: - ldrb r0, [r4, #0x14] - add sp, #0xc - add r0, r0, r6 - strb r0, [r4, #0x14] - pop {r4-r7, pc} -_02068320: - ldrb r0, [r4, #0x15] - add sp, #0xc - add r0, r0, r6 - strb r0, [r4, #0x15] - pop {r4-r7, pc} -_0206832A: - ldrb r0, [r4, #0x16] - add r0, r0, r6 - cmp r0, #0xff - ble _0206833A - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0x16] - pop {r4-r7, pc} -_0206833A: - add sp, #0xc - strb r0, [r4, #0x16] - pop {r4-r7, pc} -_02068340: - ldrb r0, [r4, #0x17] - add r0, r0, r6 - cmp r0, #0xff - ble _02068350 - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0x17] - pop {r4-r7, pc} -_02068350: - add sp, #0xc - strb r0, [r4, #0x17] - pop {r4-r7, pc} -_02068356: - ldrb r0, [r4, #0x18] - add r0, r0, r6 - cmp r0, #0xff - ble _02068366 - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0x18] - pop {r4-r7, pc} -_02068366: - add sp, #0xc - strb r0, [r4, #0x18] - pop {r4-r7, pc} -_0206836C: - ldrb r0, [r4, #0x19] - add r0, r0, r6 - cmp r0, #0xff - ble _0206837C - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0x19] - pop {r4-r7, pc} -_0206837C: - add sp, #0xc - strb r0, [r4, #0x19] - pop {r4-r7, pc} -_02068382: - ldrb r0, [r4, #0x1a] - add r0, r0, r6 - cmp r0, #0xff - ble _02068392 - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0x1a] - pop {r4-r7, pc} -_02068392: - add sp, #0xc - strb r0, [r4, #0x1a] - pop {r4-r7, pc} -_02068398: - ldrb r0, [r4, #0x1b] - add r0, r0, r6 - cmp r0, #0xff - ble _020683A8 - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0x1b] - pop {r4-r7, pc} -_020683A8: - add sp, #0xc - strb r0, [r4, #0x1b] - pop {r4-r7, pc} -_020683AE: - add r0, r5, #0x0 - str r0, [sp, #0x4] - add r0, #0xc - str r0, [sp, #0x4] - sub r7, #0x3a - ldr r1, [sp, #0x4] - lsl r0, r7, #0x1 - str r0, [sp, #0x8] - add r4, r5, #0x0 - ldrh r0, [r5, r0] - ldrb r1, [r1, r7] - add r4, #0x8 - bl FUN_0206AB30 - ldrb r1, [r4, r7] - add r1, r6, r1 - cmp r1, r0 - ble _020683E4 - ldr r0, [sp, #0x8] - ldr r1, [sp, #0x4] - ldrh r0, [r5, r0] - ldrb r1, [r1, r7] - bl FUN_0206AB30 - add sp, #0xc - strb r0, [r4, r7] - pop {r4-r7, pc} -_020683E4: - add sp, #0xc - strb r1, [r4, r7] - pop {r4-r7, pc} -_020683EA: - add r5, #0xc - sub r7, #0x3e - ldrb r0, [r5, r7] - add r0, r6, r0 - cmp r0, #0x3 - ble _020683FE - mov r0, #0x3 - add sp, #0xc - strb r0, [r5, r7] - pop {r4-r7, pc} -_020683FE: - add sp, #0xc - strb r0, [r5, r7] - pop {r4-r7, pc} -_02068404: - ldr r1, [r5, #0x10] - lsl r0, r1, #0x1b - lsr r0, r0, #0x1b - add r2, r0, r6 - cmp r2, #0x1f - bls _0206841E - mov r0, #0x1f - bic r1, r0 - mov r0, #0x1f - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_0206841E: - mov r0, #0x1f - bic r1, r0 - mov r0, #0x1f - and r0, r2 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_0206842E: - ldr r1, [r5, #0x10] - lsl r0, r1, #0x16 - lsr r0, r0, #0x1b - add r2, r0, r6 - cmp r2, #0x1f - ldr r0, _02068508 ; =0xFFFFFC1F - bls _0206844A - and r1, r0 - mov r0, #0x3e - lsl r0, r0, #0x4 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_0206844A: - and r1, r0 - lsl r0, r2, #0x1b - lsr r0, r0, #0x16 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02068458: - ldr r1, [r5, #0x10] - lsl r0, r1, #0x11 - lsr r0, r0, #0x1b - add r2, r0, r6 - cmp r2, #0x1f - ldr r0, _0206850C ; =0xFFFF83FF - bls _02068474 - and r1, r0 - mov r0, #0x1f - lsl r0, r0, #0xa - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02068474: - and r1, r0 - lsl r0, r2, #0x1b - lsr r0, r0, #0x11 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02068482: - ldr r1, [r5, #0x10] - lsl r0, r1, #0xc - lsr r0, r0, #0x1b - add r2, r0, r6 - cmp r2, #0x1f - ldr r0, _02068510 ; =0xFFF07FFF - bls _0206849E - and r1, r0 - mov r0, #0x3e - lsl r0, r0, #0xe - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_0206849E: - and r1, r0 - lsl r0, r2, #0x1b - lsr r0, r0, #0xc - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_020684AC: - ldr r1, [r5, #0x10] - lsl r0, r1, #0x7 - lsr r0, r0, #0x1b - add r2, r0, r6 - cmp r2, #0x1f - ldr r0, _02068514 ; =0xFE0FFFFF - bls _020684C8 - and r1, r0 - mov r0, #0x1f - lsl r0, r0, #0x14 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_020684C8: - and r1, r0 - lsl r0, r2, #0x1b - lsr r0, r0, #0x7 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_020684D6: - ldr r1, [r5, #0x10] - lsl r0, r1, #0x2 - lsr r0, r0, #0x1b - add r2, r0, r6 - cmp r2, #0x1f - ldr r0, _02068518 ; =0xC1FFFFFF - bls _020684F2 - and r1, r0 - mov r0, #0x3e - lsl r0, r0, #0x18 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_020684F2: - and r1, r0 - lsl r0, r2, #0x1b - lsr r0, r0, #0x2 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02068500: - bl ErrorHandling -_02068504: - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_02068508: .word 0xFFFFFC1F -_0206850C: .word 0xFFFF83FF -_02068510: .word 0xFFF07FFF -_02068514: .word 0xFE0FFFFF -_02068518: .word 0xC1FFFFFF - - thumb_func_start AllocAndLoadMonPersonal -AllocAndLoadMonPersonal: ; 0x0206851C - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x2c - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl LoadMonPersonal - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start GetPersonalAttr -GetPersonalAttr: ; 0x02068538 - push {r4-r6, lr} - add r4, r0, #0x0 - add r6, r1, #0x0 - cmp r4, #0x0 - bne _02068546 - bl ErrorHandling -_02068546: - cmp r6, #0x20 - bhi _0206863A - add r0, r6, r6 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02068556: ; jump table (using 16-bit offset) - .short _02068598 - _02068556 - 2; case 0 - .short _0206859C - _02068556 - 2; case 1 - .short _020685A0 - _02068556 - 2; case 2 - .short _020685A4 - _02068556 - 2; case 3 - .short _020685A8 - _02068556 - 2; case 4 - .short _020685AC - _02068556 - 2; case 5 - .short _020685B0 - _02068556 - 2; case 6 - .short _020685B4 - _02068556 - 2; case 7 - .short _020685B8 - _02068556 - 2; case 8 - .short _020685BC - _02068556 - 2; case 9 - .short _020685C0 - _02068556 - 2; case 10 - .short _020685C8 - _02068556 - 2; case 11 - .short _020685D0 - _02068556 - 2; case 12 - .short _020685D8 - _02068556 - 2; case 13 - .short _020685E0 - _02068556 - 2; case 14 - .short _020685E8 - _02068556 - 2; case 15 - .short _020685F0 - _02068556 - 2; case 16 - .short _020685F4 - _02068556 - 2; case 17 - .short _020685F8 - _02068556 - 2; case 18 - .short _020685FC - _02068556 - 2; case 19 - .short _02068600 - _02068556 - 2; case 20 - .short _02068604 - _02068556 - 2; case 21 - .short _02068608 - _02068556 - 2; case 22 - .short _0206860C - _02068556 - 2; case 23 - .short _02068610 - _02068556 - 2; case 24 - .short _02068614 - _02068556 - 2; case 25 - .short _02068618 - _02068556 - 2; case 26 - .short _0206861C - _02068556 - 2; case 27 - .short _02068624 - _02068556 - 2; case 28 - .short _0206862C - _02068556 - 2; case 29 - .short _02068630 - _02068556 - 2; case 30 - .short _02068634 - _02068556 - 2; case 31 - .short _02068638 - _02068556 - 2; case 32 -_02068598: - ldrb r5, [r4, #0x0] - b _0206863A -_0206859C: - ldrb r5, [r4, #0x1] - b _0206863A -_020685A0: - ldrb r5, [r4, #0x2] - b _0206863A -_020685A4: - ldrb r5, [r4, #0x3] - b _0206863A -_020685A8: - ldrb r5, [r4, #0x4] - b _0206863A -_020685AC: - ldrb r5, [r4, #0x5] - b _0206863A -_020685B0: - ldrb r5, [r4, #0x6] - b _0206863A -_020685B4: - ldrb r5, [r4, #0x7] - b _0206863A -_020685B8: - ldrb r5, [r4, #0x8] - b _0206863A -_020685BC: - ldrb r5, [r4, #0x9] - b _0206863A -_020685C0: - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x1e - lsr r5, r0, #0x1e - b _0206863A -_020685C8: - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x1c - lsr r5, r0, #0x1e - b _0206863A -_020685D0: - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x1a - lsr r5, r0, #0x1e - b _0206863A -_020685D8: - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x18 - lsr r5, r0, #0x1e - b _0206863A -_020685E0: - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x16 - lsr r5, r0, #0x1e - b _0206863A -_020685E8: - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x14 - lsr r5, r0, #0x1e - b _0206863A -_020685F0: - ldrh r5, [r4, #0xc] - b _0206863A -_020685F4: - ldrh r5, [r4, #0xe] - b _0206863A -_020685F8: - ldrb r5, [r4, #0x10] - b _0206863A -_020685FC: - ldrb r5, [r4, #0x11] - b _0206863A -_02068600: - ldrb r5, [r4, #0x12] - b _0206863A -_02068604: - ldrb r5, [r4, #0x13] - b _0206863A -_02068608: - ldrb r5, [r4, #0x14] - b _0206863A -_0206860C: - ldrb r5, [r4, #0x15] - b _0206863A -_02068610: - ldrb r5, [r4, #0x16] - b _0206863A -_02068614: - ldrb r5, [r4, #0x17] - b _0206863A -_02068618: - ldrb r5, [r4, #0x18] - b _0206863A -_0206861C: - ldrb r0, [r4, #0x19] - lsl r0, r0, #0x19 - lsr r5, r0, #0x19 - b _0206863A -_02068624: - ldrb r0, [r4, #0x19] - lsl r0, r0, #0x18 - lsr r5, r0, #0x1f - b _0206863A -_0206862C: - ldr r5, [r4, #0x1c] - b _0206863A -_02068630: - ldr r5, [r4, #0x20] - b _0206863A -_02068634: - ldr r5, [r4, #0x24] - b _0206863A -_02068638: - ldr r5, [r4, #0x28] -_0206863A: - add r0, r5, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FreeMonPersonal -FreeMonPersonal: ; 0x02068640 - push {r4, lr} - add r4, r0, #0x0 - bne _0206864A - bl ErrorHandling -_0206864A: - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - .balign 4 - - thumb_func_start GetMonBaseStat_HandleFormeConversion -GetMonBaseStat_HandleFormeConversion: ; 0x02068654 - push {r3-r5, lr} - add r4, r2, #0x0 - bl ResolveMonForme - mov r1, #0x0 - bl AllocAndLoadMonPersonal - add r5, r0, #0x0 - add r1, r4, #0x0 - bl GetPersonalAttr - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FreeMonPersonal - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start GetMonBaseStat -GetMonBaseStat: ; 0x02068678 - push {r3-r5, lr} - add r4, r1, #0x0 - mov r1, #0x0 - bl AllocAndLoadMonPersonal - add r5, r0, #0x0 - add r1, r4, #0x0 - bl GetPersonalAttr - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FreeMonPersonal - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start GetPercentProgressTowardsNextLevel -GetPercentProgressTowardsNextLevel: ; 0x02068698 - push {r3-r7, lr} - add r5, r0, #0x0 - bl TryDecryptMon - str r0, [sp, #0x0] - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - add r0, r5, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - add r0, r6, #0x0 - add r1, r7, #0x0 - bl GetMonExpBySpeciesAndLevel - add r4, r0, #0x0 - add r0, r6, #0x0 - add r1, r7, #0x1 - bl GetMonExpBySpeciesAndLevel - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x8 - mov r2, #0x0 - bl GetMonDataEncrypted - add r7, r0, #0x0 - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - bl TryEncryptMon - sub r1, r7, r4 - mov r0, #0x64 - mul r0, r1 - sub r1, r6, r4 - bl _u32_div_f - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3-r7, pc} - - thumb_func_start CalcMonExpToNextLevelEncrypted -CalcMonExpToNextLevelEncrypted: ; 0x020686F8 - ldr r3, _020686FC ; =CalcBoxMonExpToNextLevelEncrypted - bx r3 - .balign 4 -_020686FC: .word CalcBoxMonExpToNextLevelEncrypted - - thumb_func_start CalcBoxMonExpToNextLevelEncrypted -CalcBoxMonExpToNextLevelEncrypted: ; 0x02068700 - push {r4-r6, lr} - mov r1, #0x5 - mov r2, #0x0 - add r4, r0, #0x0 - bl GetBoxMonDataEncrypted - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - add r0, r4, #0x0 - bl CalcBoxMonLevelEncrypted - add r0, r0, #0x1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0x0 - mov r1, #0x8 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - add r4, r0, #0x0 - add r0, r6, #0x0 - add r1, r5, #0x0 - bl GetMonExpBySpeciesAndLevel - sub r0, r0, r4 - pop {r4-r6, pc} - - thumb_func_start GetMonBaseExperienceAtCurrentLevel -GetMonBaseExperienceAtCurrentLevel: ; 0x02068734 - push {r3-r5, lr} - add r5, r0, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonDataEncrypted - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonDataEncrypted - add r1, r0, #0x0 - add r0, r4, #0x0 - bl GetMonExpBySpeciesAndLevel - pop {r3-r5, pc} - .balign 4 - - thumb_func_start GetMonExpBySpeciesAndLevel -GetMonExpBySpeciesAndLevel: ; 0x02068758 - push {r4, lr} - add r4, r1, #0x0 - mov r1, #0x15 - bl GetMonBaseStat - add r1, r4, #0x0 - bl GetExpByGrowthRateAndLevel - pop {r4, pc} - .balign 4 - - thumb_func_start LoadGrowthTable -LoadGrowthTable: ; 0x0206876C - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x8 - blt _0206877A - bl ErrorHandling -_0206877A: - add r0, r4, #0x0 - mov r1, #0x3 ; NARC_POKETOOL_PERSONAL_GROWTBL - add r2, r5, #0x0 - bl ReadWholeNarcMemberByIdPair - pop {r3-r5, pc} - .balign 4 - - thumb_func_start GetExpByGrowthRateAndLevel -GetExpByGrowthRateAndLevel: ; 0x02068788 - push {r4-r6, lr} - add r6, r0, #0x0 - add r5, r1, #0x0 - cmp r6, #0x8 - blt _02068796 - bl ErrorHandling -_02068796: - cmp r5, #0x65 - ble _0206879E - bl ErrorHandling -_0206879E: - mov r1, #0x65 - mov r0, #0x0 - lsl r1, r1, #0x2 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r6, #0x0 - add r1, r4, #0x0 - bl LoadGrowthTable - lsl r0, r5, #0x2 - ldr r5, [r4, r0] - add r0, r4, #0x0 - bl FreeToHeap - add r0, r5, #0x0 - pop {r4-r6, pc} - - thumb_func_start CalcMonLevelEncrypted -CalcMonLevelEncrypted: ; 0x020687C0 - ldr r3, _020687C4 ; =CalcBoxMonLevelEncrypted - bx r3 - .balign 4 -_020687C4: .word CalcBoxMonLevelEncrypted - - thumb_func_start CalcBoxMonLevelEncrypted -CalcBoxMonLevelEncrypted: ; 0x020687C8 - push {r3-r7, lr} - add r5, r0, #0x0 - bl TryDecryptBoxMon - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x8 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - add r7, r0, #0x0 - add r0, r5, #0x0 - add r1, r6, #0x0 - bl TryEncryptBoxMon - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - add r1, r7, #0x0 - bl CalcLevelBySpeciesAndExp - pop {r3-r7, pc} - .balign 4 - - thumb_func_start CalcLevelBySpeciesAndExp -CalcLevelBySpeciesAndExp: ; 0x02068800 - push {r4-r6, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - mov r1, #0x0 - bl AllocAndLoadMonPersonal - add r6, r0, #0x0 - add r1, r5, #0x0 - add r2, r4, #0x0 - bl CalcLevelBySpeciesAndExp_PreloadedPersonal - add r4, r0, #0x0 - add r0, r6, #0x0 - bl FreeMonPersonal - add r0, r4, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start CalcLevelBySpeciesAndExp_PreloadedPersonal -CalcLevelBySpeciesAndExp_PreloadedPersonal: ; 0x02068824 - push {r4, lr} - mov r1, #0x15 - add r4, r2, #0x0 - bl GetPersonalAttr - ldr r1, _0206884C ; =UNK_021C5AC0 - bl LoadGrowthTable - ldr r2, _02068850 ; =UNK_021C5AC0 + 4 - mov r1, #0x1 -_02068838: - ldr r0, [r2, #0x0] - cmp r0, r4 - bhi _02068846 - add r1, r1, #0x1 - add r2, r2, #0x4 - cmp r1, #0x65 - blt _02068838 -_02068846: - sub r0, r1, #0x1 - pop {r4, pc} - nop -_0206884C: .word UNK_021C5AC0 -_02068850: .word UNK_021C5AC0 + 4 - - thumb_func_start GetMonNatureEncrypted -GetMonNatureEncrypted: ; 0x02068854 - ldr r3, _02068858 ; =GetBoxMonNatureEncrypted - bx r3 - .balign 4 -_02068858: .word GetBoxMonNatureEncrypted - - thumb_func_start GetBoxMonNatureEncrypted -GetBoxMonNatureEncrypted: ; 0x0206885C - push {r4-r6, lr} - add r5, r0, #0x0 - bl TryDecryptBoxMon - mov r1, #0x0 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r2, r1, #0x0 - bl GetBoxMonDataEncrypted - add r6, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl TryEncryptBoxMon - add r0, r6, #0x0 - bl GetNatureFromPersonality - pop {r4-r6, pc} - .balign 4 - - thumb_func_start GetNatureFromPersonality -GetNatureFromPersonality: ; 0x02068884 - push {r3, lr} - mov r1, #0x19 - bl _u32_div_f - lsl r0, r1, #0x18 - lsr r0, r0, #0x18 - pop {r3, pc} - .balign 4 - - thumb_func_start ApplyNatureModToStat -ApplyNatureModToStat: ; 0x02068894 - push {r3, lr} - cmp r2, #0x1 - blo _0206889E - cmp r2, #0x5 - bls _020688A2 -_0206889E: - add r0, r1, #0x0 - pop {r3, pc} -_020688A2: - lsl r3, r0, #0x2 - add r3, r0, r3 - ldr r0, _020688E4 ; =sNatureStatMods - sub r2, r2, #0x1 - add r0, r0, r3 - ldrsb r2, [r2, r0] - mov r0, #0x0 - mvn r0, r0 - cmp r2, r0 - beq _020688CE - cmp r2, #0x1 - bne _020688E0 - mov r0, #110 - mul r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r1, #100 - bl _s32_div_f - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - b _020688E0 -_020688CE: - mov r0, #90 - mul r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r1, #100 - bl _s32_div_f - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 -_020688E0: - add r0, r1, #0x0 - pop {r3, pc} - .balign 4 -_020688E4: .word sNatureStatMods - - thumb_func_start MonApplyFriendshipModEncrypted -MonApplyFriendshipModEncrypted: ; 0x020688E8 - push {r3-r7, lr} - sub sp, #0x8 - add r6, r1, #0x0 - add r5, r0, #0x0 - str r2, [sp, #0x0] - cmp r6, #0x5 - bne _02068900 - bl rand_LC - mov r1, #0x1 - tst r0, r1 - bne _020689D4 -_02068900: - add r0, r5, #0x0 - mov r1, #0xad - mov r2, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - beq _020689D4 - ldr r0, _020689D8 ; =SPECIES_EGG - cmp r1, r0 - beq _020689D4 - add r0, r5, #0x0 - mov r1, #0x6 - mov r2, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r1, #0x1 - mov r2, #0x0 - bl FUN_0206E7B8 - lsl r0, r0, #0x18 - mov r4, #0x0 - lsr r7, r0, #0x18 - add r0, r5, #0x0 - mov r1, #0x9 - add r2, r4, #0x0 - bl GetMonDataEncrypted - add r1, sp, #0x4 - strh r0, [r1, #0x0] - add r0, r4, #0x0 - ldrsh r1, [r1, r0] - cmp r1, #0x64 - blt _0206894E - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 -_0206894E: - cmp r1, #0xc8 - blt _02068958 - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 -_02068958: - lsl r0, r6, #0x1 - add r1, r6, r0 - ldr r0, _020689DC ; =sFriendshipModTable - add r0, r0, r1 - ldrsb r4, [r4, r0] - cmp r4, #0x0 - ble _0206897A - add r0, r5, #0x0 - mov r1, #0x9a - mov r2, #0x0 - bl GetMonDataEncrypted - cmp r0, #0xb - bne _0206897A - add r0, r4, #0x1 - lsl r0, r0, #0x18 - asr r4, r0, #0x18 -_0206897A: - cmp r4, #0x0 - ble _02068994 - add r0, r5, #0x0 - mov r1, #0x97 - mov r2, #0x0 - bl GetMonDataEncrypted - ldr r1, [sp, #0x0] - cmp r1, r0 - bne _02068994 - add r0, r4, #0x1 - lsl r0, r0, #0x18 - asr r4, r0, #0x18 -_02068994: - cmp r4, #0x0 - ble _020689AA - cmp r7, #0x34 - bne _020689AA - mov r0, #0x96 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - lsl r0, r0, #0x18 - asr r4, r0, #0x18 -_020689AA: - add r0, sp, #0x4 - mov r1, #0x0 - ldrsh r2, [r0, r1] - add r2, r2, r4 - strh r2, [r0, #0x0] - ldrsh r2, [r0, r1] - cmp r2, #0x0 - bge _020689BC - strh r1, [r0, #0x0] -_020689BC: - add r1, sp, #0x4 - mov r0, #0x0 - ldrsh r0, [r1, r0] - cmp r0, #0xff - ble _020689CA - mov r0, #0xff - strh r0, [r1, #0x0] -_020689CA: - add r0, r5, #0x0 - mov r1, #0x9 - add r2, sp, #0x4 - bl SetMonDataEncrypted -_020689D4: - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_020689D8: .word SPECIES_EGG -_020689DC: .word sFriendshipModTable - - thumb_func_start GetMonGenderEncrypted -GetMonGenderEncrypted: ; 0x020689E0 - ldr r3, _020689E4 ; =GetBoxMonGenderEncrypted - bx r3 - .balign 4 -_020689E4: .word GetBoxMonGenderEncrypted - - thumb_func_start GetBoxMonGenderEncrypted -GetBoxMonGenderEncrypted: ; 0x020689E8 - push {r3-r7, lr} - add r5, r0, #0x0 - bl TryDecryptBoxMon - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - lsl r0, r0, #0x10 - mov r1, #0x0 - lsr r4, r0, #0x10 - add r0, r5, #0x0 - add r2, r1, #0x0 - bl GetBoxMonDataEncrypted - add r7, r0, #0x0 - add r0, r5, #0x0 - add r1, r6, #0x0 - bl TryEncryptBoxMon - add r0, r4, #0x0 - add r1, r7, #0x0 - bl GetGenderBySpeciesAndPersonality - pop {r3-r7, pc} - .balign 4 - - thumb_func_start GetGenderBySpeciesAndPersonality -GetGenderBySpeciesAndPersonality: ; 0x02068A20 - push {r4-r6, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - mov r1, #0x0 - bl AllocAndLoadMonPersonal - add r6, r0, #0x0 - add r1, r5, #0x0 - add r2, r4, #0x0 - bl GetGenderBySpeciesAndPersonality_PreloadedPersonal - add r4, r0, #0x0 - add r0, r6, #0x0 - bl FreeMonPersonal - add r0, r4, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start GetGenderBySpeciesAndPersonality_PreloadedPersonal -GetGenderBySpeciesAndPersonality_PreloadedPersonal: ; 0x02068A44 - push {r4, lr} - mov r1, #0x12 - add r4, r2, #0x0 - bl GetPersonalAttr - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - beq _02068A5E - cmp r1, #0xfe - beq _02068A62 - cmp r1, #0xff - beq _02068A66 - b _02068A6A -_02068A5E: - mov r0, #0x0 - pop {r4, pc} -_02068A62: - mov r0, #0x1 - pop {r4, pc} -_02068A66: - mov r0, #0x2 - pop {r4, pc} -_02068A6A: - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - cmp r1, r0 - bls _02068A76 - mov r0, #0x1 - b _02068A78 -_02068A76: - mov r0, #0x0 -_02068A78: - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r4, pc} - .balign 4 - - thumb_func_start MonIsShiny -MonIsShiny: ; 0x02068A80 - ldr r3, _02068A84 ; =BoxMonIsShiny - bx r3 - .balign 4 -_02068A84: .word BoxMonIsShiny - - thumb_func_start BoxMonIsShiny -BoxMonIsShiny: ; 0x02068A88 - push {r3-r5, lr} - mov r1, #0x7 - mov r2, #0x0 - add r5, r0, #0x0 - bl GetBoxMonDataEncrypted - mov r1, #0x0 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r2, r1, #0x0 - bl GetBoxMonDataEncrypted - add r1, r0, #0x0 - add r0, r4, #0x0 - bl CalcShininessByOtIdAndPersonality - pop {r3-r5, pc} - .balign 4 - - thumb_func_start CalcShininessByOtIdAndPersonality -CalcShininessByOtIdAndPersonality: ; 0x02068AAC - ldr r3, _02068AD4 ; =0xFFFF0000 - lsl r2, r1, #0x10 - and r1, r3 - and r3, r0 - lsl r0, r0, #0x10 - lsr r3, r3, #0x10 - lsr r0, r0, #0x10 - lsr r1, r1, #0x10 - eor r0, r3 - lsr r2, r2, #0x10 - eor r0, r1 - eor r0, r2 - cmp r0, #0x8 - bhs _02068ACC - mov r0, #0x1 - b _02068ACE -_02068ACC: - mov r0, #0x0 -_02068ACE: - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr - .balign 4 -_02068AD4: .word 0xFFFF0000 - - thumb_func_start GenerateShinyPersonality -GenerateShinyPersonality: ; 0x02068AD8 - push {r3-r7, lr} - add r7, r0, #0x0 - ldr r0, _02068B64 ; =0xFFFF0000 - and r0, r7 - lsr r1, r0, #0x10 - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - eor r0, r1 - lsr r7, r0, #0x3 - bl rand_LC - mov r1, #0x7 - and r0, r1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - bl rand_LC - mov r1, #0x7 - and r0, r1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - mov r4, #0x0 -_02068B04: - add r0, r4, #0x0 - bl MaskOfFlagNo - tst r0, r7 - beq _02068B34 - bl rand_LC - mov r1, #0x1 - tst r0, r1 - beq _02068B26 - add r0, r4, #0x3 - bl MaskOfFlagNo - orr r0, r6 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - b _02068B56 -_02068B26: - add r0, r4, #0x3 - bl MaskOfFlagNo - orr r0, r5 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - b _02068B56 -_02068B34: - bl rand_LC - mov r1, #0x1 - tst r0, r1 - beq _02068B56 - add r0, r4, #0x3 - bl MaskOfFlagNo - orr r0, r6 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - add r0, r4, #0x3 - bl MaskOfFlagNo - orr r0, r5 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 -_02068B56: - add r4, r4, #0x1 - cmp r4, #0xd - blt _02068B04 - lsl r0, r5, #0x10 - orr r0, r6 - pop {r3-r7, pc} - nop -_02068B64: .word 0xFFFF0000 - - thumb_func_start FUN_02068B68 -FUN_02068B68: ; 0x02068B68 - ldr r3, _02068B6C ; =FUN_02068B70 - bx r3 - .balign 4 -_02068B6C: .word FUN_02068B70 - - thumb_func_start FUN_02068B70 -FUN_02068B70: ; 0x02068B70 - push {r4-r7, lr} - sub sp, #0x1c - add r5, r1, #0x0 - str r0, [sp, #0xc] - add r0, r5, #0x0 - str r2, [sp, #0x10] - bl TryDecryptBoxMon - str r0, [sp, #0x18] - add r0, r5, #0x0 - mov r1, #0xad - mov r2, #0x0 - bl GetBoxMonDataEncrypted - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r5, #0x0 - bl GetBoxMonGenderEncrypted - str r0, [sp, #0x14] - add r0, r5, #0x0 - bl BoxMonIsShiny - mov r1, #0x0 - add r7, r0, #0x0 - add r0, r5, #0x0 - add r2, r1, #0x0 - bl GetBoxMonDataEncrypted - add r6, r0, #0x0 - ldr r0, _02068BF8 ; =SPECIES_EGG - cmp r4, r0 - bne _02068BCA - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - ldr r1, _02068BFC ; =SPECIES_MANAPHY - cmp r0, r1 - bne _02068BC6 - mov r0, #0x1 - b _02068BD8 -_02068BC6: - mov r0, #0x0 - b _02068BD8 -_02068BCA: - add r0, r5, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 -_02068BD8: - str r7, [sp, #0x0] - str r0, [sp, #0x4] - str r6, [sp, #0x8] - ldr r0, [sp, #0xc] - ldr r2, [sp, #0x14] - ldr r3, [sp, #0x10] - add r1, r4, #0x0 - bl FUN_02068C00 - ldr r1, [sp, #0x18] - add r0, r5, #0x0 - bl TryEncryptBoxMon - add sp, #0x1c - pop {r4-r7, pc} - nop -_02068BF8: .word SPECIES_EGG -_02068BFC: .word SPECIES_MANAPHY - - thumb_func_start FUN_02068C00 -FUN_02068C00: ; 0x02068C00 - push {r4-r7} - add r7, r2, #0x0 - add r5, r3, #0x0 - add r4, r0, #0x0 - add r0, r1, #0x0 - ldr r3, [sp, #0x10] - ldr r2, [sp, #0x14] - mov r1, #0x0 - strh r1, [r4, #0x6] - strb r1, [r4, #0x8] - str r1, [r4, #0xc] - ldr r1, _02068E0C ; =SPECIES_CHERRIM - cmp r0, r1 - bgt _02068C68 - bge _02068D1E - add r6, r1, #0x0 - sub r6, #SPECIES_CHERRIM-SPECIES_CASTFORM - cmp r0, r6 - bgt _02068C36 - sub r1, #SPECIES_CHERRIM-SPECIES_CASTFORM - cmp r0, r1 - blt _02068C2E - b _02068D58 -_02068C2E: - cmp r0, #SPECIES_UNOWN - bne _02068C34 - b _02068D90 -_02068C34: - b _02068DD4 -_02068C36: - add r6, r1, #0x0 - sub r6, #SPECIES_CHERRIM-SPECIES_DEOXYS - cmp r0, r6 - bgt _02068C48 - sub r1, #SPECIES_CHERRIM-SPECIES_DEOXYS - cmp r0, r1 - bne _02068C46 - b _02068D76 -_02068C46: - b _02068DD4 -_02068C48: - add r6, r1, #0x0 - sub r6, #SPECIES_CHERRIM-SPECIES_WORMADAM - cmp r0, r6 - bgt _02068C66 - add r6, r1, #0x0 - sub r6, #SPECIES_CHERRIM-SPECIES_BURMY - cmp r0, r6 - blt _02068C66 - add r6, r1, #0x0 - sub r6, #SPECIES_CHERRIM-SPECIES_BURMY - cmp r0, r6 - beq _02068CAA - sub r1, #SPECIES_CHERRIM-SPECIES_WORMADAM - cmp r0, r1 - beq _02068CC8 -_02068C66: - b _02068DD4 -_02068C68: - add r6, r1, #0x0 - add r6, #SPECIES_ARCEUS-SPECIES_CHERRIM - cmp r0, r6 - bgt _02068C8E - add r6, r1, #0x0 - add r6, #SPECIES_ARCEUS-SPECIES_CHERRIM - cmp r0, r6 - bge _02068D3A - add r6, r1, #SPECIES_GASTRODON-SPECIES_CHERRIM - cmp r0, r6 - bgt _02068C8C - add r6, r1, #SPECIES_SHELLOS-SPECIES_CHERRIM - cmp r0, r6 - blt _02068C8C - beq _02068CE6 - add r1, r1, #SPECIES_GASTRODON-SPECIES_CHERRIM - cmp r0, r1 - beq _02068D02 -_02068C8C: - b _02068DD4 -_02068C8E: - add r6, r1, #0x0 - add r6, #SPECIES_EGG-SPECIES_CHERRIM - cmp r0, r6 - bgt _02068CA0 - add r1, #SPECIES_EGG-SPECIES_CHERRIM - cmp r0, r1 - bne _02068C9E - b _02068DAC -_02068C9E: - b _02068DD4 -_02068CA0: - add r1, #SPECIES_MANAPHY_EGG-SPECIES_CHERRIM - cmp r0, r1 - bne _02068CA8 - b _02068DC4 -_02068CA8: - b _02068DD4 -_02068CAA: - cmp r2, #0x2 - bls _02068CB0 - mov r2, #0x0 -_02068CB0: - mov r0, #0x75 - strh r0, [r4, #0x0] - lsr r0, r5, #0x1 - lsl r1, r2, #0x1 - add r0, #0x48 - add r0, r0, r1 - add r3, #0x92 - strh r0, [r4, #0x2] - add r0, r3, r1 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068CC8: - cmp r2, #0x2 - bls _02068CCE - mov r2, #0x0 -_02068CCE: - mov r0, #0x75 - strh r0, [r4, #0x0] - lsr r0, r5, #0x1 - lsl r1, r2, #0x1 - add r0, #0x4e - add r0, r0, r1 - add r3, #0x98 - strh r0, [r4, #0x2] - add r0, r3, r1 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068CE6: - cmp r2, #0x1 - bls _02068CEC - mov r2, #0x0 -_02068CEC: - mov r0, #0x75 - add r5, #0x54 - strh r0, [r4, #0x0] - add r0, r5, r2 - strh r0, [r4, #0x2] - add r3, #0x9e - lsl r0, r2, #0x1 - add r0, r3, r0 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068D02: - cmp r2, #0x1 - bls _02068D08 - mov r2, #0x0 -_02068D08: - mov r0, #0x75 - add r5, #0x58 - strh r0, [r4, #0x0] - add r0, r5, r2 - strh r0, [r4, #0x2] - add r3, #0xa2 - lsl r0, r2, #0x1 - add r0, r3, r0 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068D1E: - cmp r2, #0x1 - bls _02068D24 - mov r2, #0x0 -_02068D24: - mov r0, #0x75 - add r5, #0x5c - strh r0, [r4, #0x0] - add r0, r5, r2 - strh r0, [r4, #0x2] - lsl r0, r3, #0x1 - add r0, #0xa6 - add r0, r2, r0 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068D3A: - cmp r2, #0x11 - bls _02068D40 - mov r2, #0x0 -_02068D40: - mov r0, #0x75 - strh r0, [r4, #0x0] - lsr r0, r5, #0x1 - lsl r1, r2, #0x1 - add r0, #0x60 - add r0, r0, r1 - add r3, #0xaa - strh r0, [r4, #0x2] - add r0, r3, r1 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068D58: - cmp r2, #0x3 - bls _02068D5E - mov r2, #0x0 -_02068D5E: - mov r0, #0x75 - strh r0, [r4, #0x0] - lsl r0, r5, #0x1 - add r0, #0x40 - add r0, r2, r0 - strh r0, [r4, #0x2] - lsl r0, r3, #0x2 - add r0, #0x8a - add r0, r2, r0 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068D76: - cmp r2, #0x3 - bls _02068D7C - mov r2, #0x0 -_02068D7C: - mov r0, #0x75 - strh r0, [r4, #0x0] - lsr r1, r5, #0x1 - lsl r0, r2, #0x1 - add r0, r1, r0 - strh r0, [r4, #0x2] - add r3, #0x86 - strh r3, [r4, #0x4] - pop {r4-r7} - bx lr -_02068D90: - cmp r2, #0x1c - blo _02068D96 - mov r2, #0x0 -_02068D96: - mov r0, #0x75 - lsr r1, r5, #0x1 - strh r0, [r4, #0x0] - add r1, #0x8 - lsl r0, r2, #0x1 - add r0, r1, r0 - strh r0, [r4, #0x2] - add r3, #0x88 - strh r3, [r4, #0x4] - pop {r4-r7} - bx lr -_02068DAC: - cmp r2, #0x1 - bls _02068DB2 - mov r2, #0x0 -_02068DB2: - mov r0, #0x75 - strh r0, [r4, #0x0] - add r0, r2, #0x0 - add r0, #0x84 - strh r0, [r4, #0x2] - add r2, #0xce - strh r2, [r4, #0x4] - pop {r4-r7} - bx lr -_02068DC4: - mov r0, #0x75 - strh r0, [r4, #0x0] - mov r0, #0x84 - strh r0, [r4, #0x2] - mov r0, #0xce - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068DD4: - mov r1, #0x4 - strh r1, [r4, #0x0] - cmp r7, #0x1 - beq _02068DE0 - mov r2, #0x1 - b _02068DE2 -_02068DE0: - mov r2, #0x0 -_02068DE2: - mov r1, #0x6 - mul r1, r0 - add r6, r5, r1 - add r2, r6, r2 - add r1, r1, #0x4 - strh r2, [r4, #0x2] - add r1, r3, r1 - strh r1, [r4, #0x4] - ldr r1, _02068E10 ; =SPECIES_SPINDA - cmp r0, r1 - bne _02068E06 - cmp r5, #0x2 - bne _02068E06 - strh r1, [r4, #0x6] - mov r0, #0x0 - strb r0, [r4, #0x8] - ldr r0, [sp, #0x18] - str r0, [r4, #0xc] -_02068E06: - pop {r4-r7} - bx lr - nop -_02068E0C: .word SPECIES_CHERRIM -_02068E10: .word SPECIES_SPINDA - - thumb_func_start FUN_02068E14 -FUN_02068E14: ; 0x02068E14 - ldr r3, _02068E18 ; =FUN_02068E1C - bx r3 - .balign 4 -_02068E18: .word FUN_02068E1C - - thumb_func_start FUN_02068E1C -FUN_02068E1C: ; 0x02068E1C - push {r3-r7, lr} - sub sp, #0x8 - add r7, r1, #0x0 - mov r1, #0xad - mov r2, #0x0 - add r5, r0, #0x0 - bl GetBoxMonDataEncrypted - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r5, #0x0 - bl GetBoxMonGenderEncrypted - mov r1, #0x0 - str r0, [sp, #0x4] - add r0, r5, #0x0 - add r2, r1, #0x0 - bl GetBoxMonDataEncrypted - add r6, r0, #0x0 - ldr r0, _02068E80 ; =SPECIES_EGG - cmp r4, r0 - bne _02068E62 - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - ldr r1, _02068E84 ; =SPECIES_MANAPHY - cmp r0, r1 - bne _02068E5E - mov r3, #0x1 - b _02068E70 -_02068E5E: - mov r3, #0x0 - b _02068E70 -_02068E62: - add r0, r5, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 -_02068E70: - str r6, [sp, #0x0] - ldr r1, [sp, #0x4] - add r0, r4, #0x0 - add r2, r7, #0x0 - bl FUN_02068E88 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_02068E80: .word SPECIES_EGG -_02068E84: .word 0x000001EA - - thumb_func_start FUN_02068E88 -FUN_02068E88: ; 0x02068E88 - push {r3-r5, lr} - ldr r4, _02068FDC ; =SPECIES_CHERRIM - cmp r0, r4 - bgt _02068ED6 - bge _02068F54 - add r5, r4, #0x0 - sub r5, #0x46 - cmp r0, r5 - bgt _02068EA6 - sub r4, #0x46 - cmp r0, r4 - bge _02068F74 - cmp r0, #0xc9 - beq _02068F94 - b _02068FB8 -_02068EA6: - add r5, r4, #0x0 - sub r5, #0x23 - cmp r0, r5 - bgt _02068EB6 - sub r4, #0x23 - cmp r0, r4 - beq _02068F84 - b _02068FB8 -_02068EB6: - add r5, r4, #0x0 - sub r5, #0x8 - cmp r0, r5 - bgt _02068FB8 - add r5, r4, #0x0 - sub r5, #0x9 - cmp r0, r5 - blt _02068FB8 - add r5, r4, #0x0 - sub r5, #0x9 - cmp r0, r5 - beq _02068F14 - sub r4, #0x8 - cmp r0, r4 - beq _02068F26 - b _02068FB8 -_02068ED6: - add r5, r4, #0x0 - add r5, #0x48 - cmp r0, r5 - bgt _02068EFC - add r5, r4, #0x0 - add r5, #0x48 - cmp r0, r5 - bge _02068F62 - add r5, r4, #0x2 - cmp r0, r5 - bgt _02068FB8 - add r5, r4, #0x1 - cmp r0, r5 - blt _02068FB8 - beq _02068F38 - add r4, r4, #0x2 - cmp r0, r4 - beq _02068F46 - b _02068FB8 -_02068EFC: - add r5, r4, #0x0 - add r5, #0x49 - cmp r0, r5 - bgt _02068F0C - add r4, #0x49 - cmp r0, r4 - beq _02068FA6 - b _02068FB8 -_02068F0C: - add r4, #0x4a - cmp r0, r4 - beq _02068FB2 - b _02068FB8 -_02068F14: - cmp r3, #0x2 - bls _02068F1A - mov r3, #0x0 -_02068F1A: - lsr r1, r2, #0x1 - add r1, #0x48 - lsl r0, r3, #0x1 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r1, r0 - b _02068FCA -_02068F26: - cmp r3, #0x2 - bls _02068F2C - mov r3, #0x0 -_02068F2C: - lsr r1, r2, #0x1 - add r1, #0x4e - lsl r0, r3, #0x1 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r1, r0 - b _02068FCA -_02068F38: - cmp r3, #0x1 - bls _02068F3E - mov r3, #0x0 -_02068F3E: - add r2, #0x54 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r2, r3 - b _02068FCA -_02068F46: - cmp r3, #0x1 - bls _02068F4C - mov r3, #0x0 -_02068F4C: - add r2, #0x58 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r2, r3 - b _02068FCA -_02068F54: - cmp r3, #0x1 - bls _02068F5A - mov r3, #0x0 -_02068F5A: - add r2, #0x5c - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r2, r3 - b _02068FCA -_02068F62: - cmp r3, #0x11 - bls _02068F68 - mov r3, #0x0 -_02068F68: - lsr r1, r2, #0x1 - add r1, #0x60 - lsl r0, r3, #0x1 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r1, r0 - b _02068FCA -_02068F74: - cmp r3, #0x3 - bls _02068F7A - mov r3, #0x0 -_02068F7A: - lsl r0, r2, #0x1 - add r0, #0x40 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r3, r0 - b _02068FCA -_02068F84: - cmp r3, #0x3 - bls _02068F8A - mov r3, #0x0 -_02068F8A: - lsr r1, r2, #0x1 - lsl r0, r3, #0x1 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r1, r0 - b _02068FCA -_02068F94: - cmp r3, #0x1c - blo _02068F9A - mov r3, #0x0 -_02068F9A: - lsr r1, r2, #0x1 - add r1, #0x8 - lsl r0, r3, #0x1 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r1, r0 - b _02068FCA -_02068FA6: - cmp r3, #0x1 - bls _02068FAC - mov r3, #0x0 -_02068FAC: - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, #0x84 - b _02068FCA -_02068FB2: - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - mov r3, #0x84 - b _02068FCA -_02068FB8: - mov r4, #0x5 ; NARC_POKETOOL_POKEGRA_HEIGHT - cmp r1, #0x1 - beq _02068FC2 - mov r1, #0x1 - b _02068FC4 -_02068FC2: - mov r1, #0x0 -_02068FC4: - lsl r0, r0, #0x2 - add r0, r2, r0 - add r3, r0, r1 -_02068FCA: - add r0, sp, #0x0 - add r1, r4, #0x0 - add r2, r3, #0x0 - bl ReadWholeNarcMemberByIdPair - add r0, sp, #0x0 - ldrb r0, [r0, #0x0] - pop {r3-r5, pc} - nop -_02068FDC: .word SPECIES_CHERRIM - - thumb_func_start FUN_02068FE0 -FUN_02068FE0: ; 0x02068FE0 - push {r4, lr} - add r4, r0, #0x0 - cmp r2, #0x2 - bne _02068FEE - mov r0, #0x3c - strh r0, [r4, #0x0] - b _02068FFC -_02068FEE: - mov r0, #0x6 - strh r0, [r4, #0x0] - add r0, r1, #0x0 - bl FUN_0206AA30 - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 -_02068FFC: - lsl r0, r1, #0x1 - strh r0, [r4, #0x2] - add r0, r0, #0x1 - strh r0, [r4, #0x4] - mov r0, #0x0 - strh r0, [r4, #0x6] - strb r0, [r4, #0x8] - str r0, [r4, #0xc] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02069010 -FUN_02069010: ; 0x02069010 - push {r3-r5, lr} - sub sp, #0x20 - add r5, r1, #0x0 - mov r3, #0x1c - add r4, r0, #0x0 - str r3, [sp, #0x0] - add r0, sp, #0x4 - mov r1, #0x72 ; NARC_POKETOOL_POKEANM_POKEANM - mov r2, #0x0 - mul r3, r5 - bl ReadFromNarcMemberByIdPair - add r0, sp, #0xc - add r1, r4, #0x0 - mov r2, #0x14 - bl MI_CpuCopy8 - add sp, #0x20 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02069038 -FUN_02069038: ; 0x02069038 - push {r3-r7, lr} - sub sp, #0x28 - add r4, r0, #0x0 - add r6, r2, #0x0 - add r5, r3, #0x0 - mov r3, #0x1c - add r0, sp, #0x8 - add r7, r1, #0x0 - str r3, [sp, #0x0] - add r0, #0x2 - mov r1, #0x72 ; NARC_POKETOOL_POKEANM_POKEANM - mov r2, #0x0 - mul r3, r6 - bl ReadFromNarcMemberByIdPair - cmp r5, #0x2 - bne _0206906C - add r1, sp, #0x4 - mov r0, #0x6 - ldrsb r0, [r1, r0] - strh r0, [r1, #0x0] - ldrb r0, [r1, #0x7] - strh r0, [r1, #0x2] - ldr r0, [sp, #0x44] - strb r0, [r1, #0x4] - b _02069096 -_0206906C: - ldr r0, [sp, #0x40] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_02014C3C - add r5, r0, #0x0 - cmp r5, #0x3 - blt _02069080 - bl ErrorHandling -_02069080: - lsl r2, r5, #0x1 - add r0, sp, #0xc - ldrsb r1, [r0, r2] - add r0, sp, #0x4 - strh r1, [r0, #0x0] - add r1, sp, #0xc - add r1, #0x1 - ldrb r1, [r1, r2] - strh r1, [r0, #0x2] - ldr r1, [sp, #0x44] - strb r1, [r0, #0x4] -_02069096: - ldr r3, [sp, #0x48] - add r0, r4, #0x0 - lsl r3, r3, #0x18 - add r1, r7, #0x0 - add r2, sp, #0x4 - lsr r3, r3, #0x18 - bl FUN_02014C54 - add sp, #0x28 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020690AC -FUN_020690AC: ; 0x020690AC - mov r2, #0x3c - strh r2, [r0, #0x0] - lsl r1, r1, #0x1 - strh r1, [r0, #0x2] - add r1, r1, #0x1 - strh r1, [r0, #0x4] - mov r1, #0x0 - strh r1, [r0, #0x6] - strb r1, [r0, #0x8] - str r1, [r0, #0xc] - bx lr - .balign 4 - - thumb_func_start FUN_020690C4 -FUN_020690C4: ; 0x020690C4 - mov r0, #0xec - bx lr - - thumb_func_start FUN_020690C8 -FUN_020690C8: ; 0x020690C8 - mov r0, #0x88 - bx lr - - thumb_func_start FUN_020690CC -FUN_020690CC: ; 0x020690CC - ldr r3, _020690D0 ; =FUN_020690D4 - bx r3 - .balign 4 -_020690D0: .word FUN_020690D4 - - thumb_func_start FUN_020690D4 -FUN_020690D4: ; 0x020690D4 - push {r3, lr} - mov r1, #0x70 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, pc} - - thumb_func_start FUN_020690E4 -FUN_020690E4: ; 0x020690E4 - bx lr - .balign 4 - - thumb_func_start FUN_020690E8 -FUN_020690E8: ; 0x020690E8 - push {r3-r5, lr} - sub sp, #0x8 - mov r1, #0x5 - mov r2, #0x0 - add r4, r0, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonDataEncrypted - add r1, r0, #0x1 - add r0, sp, #0x0 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - mov r1, #0x8 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x15 - bl GetMonBaseStat - mov r1, #0x64 - add r5, r0, #0x0 - bl GetExpByGrowthRateAndLevel - ldr r1, [sp, #0x4] - cmp r1, r0 - bls _02069138 - str r0, [sp, #0x4] - add r0, r4, #0x0 - mov r1, #0x8 - add r2, sp, #0x4 - bl SetMonDataEncrypted -_02069138: - add r0, sp, #0x0 - ldrb r1, [r0, #0x0] - cmp r1, #0x64 - bls _02069146 - add sp, #0x8 - mov r0, #0x0 - pop {r3-r5, pc} -_02069146: - add r0, r5, #0x0 - bl GetExpByGrowthRateAndLevel - ldr r1, [sp, #0x4] - cmp r1, r0 - blo _02069162 - add r0, r4, #0x0 - mov r1, #0xa0 - add r2, sp, #0x0 - bl SetMonDataEncrypted - add sp, #0x8 - mov r0, #0x1 - pop {r3-r5, pc} -_02069162: - mov r0, #0x0 - add sp, #0x8 - pop {r3-r5, pc} - - thumb_func_start FUN_02069168 -FUN_02069168: ; 0x02069168 - push {r4-r7, lr} - sub sp, #0x44 - add r7, r1, #0x0 - str r0, [sp, #0x0] - mov r6, #0x0 - add r4, r2, #0x0 - add r0, r7, #0x0 - mov r1, #0x5 - add r2, r6, #0x0 - str r3, [sp, #0x4] - ldr r5, [sp, #0x58] - bl GetMonDataEncrypted - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x2c] - add r0, r7, #0x0 - mov r1, #0x6 - add r2, r6, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - add r1, r6, #0x0 - str r0, [sp, #0x28] - add r0, r7, #0x0 - add r2, r1, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x30] - add r0, r7, #0x0 - mov r1, #0x14 - add r2, r6, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x10] - ldr r1, _020694A0 ; =0xFFFF0000 - ldr r0, [sp, #0x30] - add r2, r6, #0x0 - and r0, r1 - lsr r0, r0, #0x10 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x1c] - ldr r0, [sp, #0x28] - mov r1, #0x1 - bl FUN_0206E7B8 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - ldr r0, [sp, #0x2c] - cmp r0, #0x40 - beq _020691E4 - cmp r1, #0x3f - bne _020691E4 - cmp r4, #0x3 - beq _020691E4 - add sp, #0x44 - add r0, r6, #0x0 - pop {r4-r7, pc} -_020691E4: - cmp r5, #0x0 - bne _020691EA - add r5, sp, #0x40 -_020691EA: - mov r0, #0x0 - mov r1, #0x2a - bl AllocFromHeap - str r0, [sp, #0x18] - ldr r0, [sp, #0x2c] - ldr r1, [sp, #0x18] - bl LoadMonEvolutionTable - cmp r4, #0x3 - bls _02069202 - b _0206954A -_02069202: - add r0, r4, r4 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0206920E: ; jump table (using 16-bit offset) - .short _02069216 - _0206920E - 2; case 0 - .short _02069486 - _0206920E - 2; case 1 - .short _020694BE - _0206920E - 2; case 2 - .short _020694BE - _0206920E - 2; case 3 -_02069216: - add r0, r7, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x14] - add r0, r7, #0x0 - mov r1, #0x9 - mov r2, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x20] - mov r0, #0x0 - str r0, [sp, #0x24] - ldr r0, [sp, #0x1c] - mov r1, #0xa - ldr r4, [sp, #0x18] - bl _s32_div_f - str r1, [sp, #0x8] -_02069246: - ldrh r0, [r4, #0x0] - cmp r0, #0x1a - bls _0206924E - b _02069472 -_0206924E: - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0206925A: ; jump table (using 16-bit offset) - .short _02069472 - _0206925A - 2; case 0 - .short _02069290 - _0206925A - 2; case 1 - .short _0206929E - _0206925A - 2; case 2 - .short _020692B4 - _0206925A - 2; case 3 - .short _020692CA - _0206925A - 2; case 4 - .short _02069472 - _0206925A - 2; case 5 - .short _02069472 - _0206925A - 2; case 6 - .short _02069472 - _0206925A - 2; case 7 - .short _020692DA - _0206925A - 2; case 8 - .short _02069306 - _0206925A - 2; case 9 - .short _02069332 - _0206925A - 2; case 10 - .short _0206935E - _0206925A - 2; case 11 - .short _02069376 - _0206925A - 2; case 12 - .short _0206938C - _0206925A - 2; case 13 - .short _0206939C - _0206925A - 2; case 14 - .short _020693A2 - _0206925A - 2; case 15 - .short _02069472 - _0206925A - 2; case 16 - .short _02069472 - _0206925A - 2; case 17 - .short _020693B2 - _0206925A - 2; case 18 - .short _020693CA - _0206925A - 2; case 19 - .short _020693E2 - _0206925A - 2; case 20 - .short _020693F6 - _0206925A - 2; case 21 - .short _0206940E - _0206925A - 2; case 22 - .short _0206942C - _0206925A - 2; case 23 - .short _0206944A - _0206925A - 2; case 24 - .short _02069458 - _0206925A - 2; case 25 - .short _02069466 - _0206925A - 2; case 26 -_02069290: - ldr r0, [sp, #0x20] - cmp r0, #0xdc - blo _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0x1 - str r0, [r5, #0x0] - b _02069472 -_0206929E: - bl FUN_0201277C - cmp r0, #0x0 - bne _0206936C - ldr r0, [sp, #0x20] - cmp r0, #0xdc - blo _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0x2 - str r0, [r5, #0x0] - b _02069472 -_020692B4: - bl FUN_0201277C - cmp r0, #0x1 - bne _0206936C - ldr r0, [sp, #0x20] - cmp r0, #0xdc - blo _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0x3 - str r0, [r5, #0x0] - b _02069472 -_020692CA: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0x4 - str r0, [r5, #0x0] - b _02069472 -_020692DA: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _0206936C - add r0, r7, #0x0 - mov r1, #0xa4 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x34] - add r0, r7, #0x0 - mov r1, #0xa5 - mov r2, #0x0 - bl GetMonDataEncrypted - ldr r1, [sp, #0x34] - cmp r1, r0 - bls _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0x8 - str r0, [r5, #0x0] - b _02069472 -_02069306: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _0206936C - add r0, r7, #0x0 - mov r1, #0xa4 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x38] - add r0, r7, #0x0 - mov r1, #0xa5 - mov r2, #0x0 - bl GetMonDataEncrypted - ldr r1, [sp, #0x38] - cmp r1, r0 - bne _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0x9 - str r0, [r5, #0x0] - b _02069472 -_02069332: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _0206936C - add r0, r7, #0x0 - mov r1, #0xa4 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x3c] - add r0, r7, #0x0 - mov r1, #0xa5 - mov r2, #0x0 - bl GetMonDataEncrypted - ldr r1, [sp, #0x3c] - cmp r1, r0 - bhs _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0xa - str r0, [r5, #0x0] - b _02069472 -_0206935E: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _0206936C - ldr r0, [sp, #0x8] - cmp r0, #0x5 - blt _0206936E -_0206936C: - b _02069472 -_0206936E: - ldrh r6, [r4, #0x4] - mov r0, #0xb - str r0, [r5, #0x0] - b _02069472 -_02069376: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _02069472 - ldr r0, [sp, #0x8] - cmp r0, #0x5 - blt _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0xc - str r0, [r5, #0x0] - b _02069472 -_0206938C: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0xd - str r0, [r5, #0x0] - b _02069472 -_0206939C: - mov r0, #0xe - str r0, [r5, #0x0] - b _02069472 -_020693A2: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x10] - cmp r1, r0 - bgt _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0xf - str r0, [r5, #0x0] - b _02069472 -_020693B2: - bl FUN_0201277C - cmp r0, #0x0 - bne _02069472 - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x28] - cmp r0, r1 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x12 - str r0, [r5, #0x0] - b _02069472 -_020693CA: - bl FUN_0201277C - cmp r0, #0x1 - bne _02069472 - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x28] - cmp r0, r1 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x13 - str r0, [r5, #0x0] - b _02069472 -_020693E2: - ldrh r1, [r4, #0x2] - add r0, r7, #0x0 - bl FUN_02069A38 - cmp r0, #0x1 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x14 - str r0, [r5, #0x0] - b _02069472 -_020693F6: - ldr r0, [sp, #0x0] - cmp r0, #0x0 - beq _02069472 - ldrh r1, [r4, #0x2] - bl FUN_0206BAE4 - cmp r0, #0x1 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x15 - str r0, [r5, #0x0] - b _02069472 -_0206940E: - add r0, r7, #0x0 - mov r1, #0x6f - mov r2, #0x0 - bl GetMonDataEncrypted - cmp r0, #0x0 - bne _02069472 - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x16 - str r0, [r5, #0x0] - b _02069472 -_0206942C: - add r0, r7, #0x0 - mov r1, #0x6f - mov r2, #0x0 - bl GetMonDataEncrypted - cmp r0, #0x1 - bne _02069472 - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x17 - str r0, [r5, #0x0] - b _02069472 -_0206944A: - ldr r1, [sp, #0x4] - cmp r1, r0 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x18 - str r0, [r5, #0x0] - b _02069472 -_02069458: - ldr r1, [sp, #0x4] - cmp r1, r0 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x19 - str r0, [r5, #0x0] - b _02069472 -_02069466: - ldr r1, [sp, #0x4] - cmp r1, r0 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x1a - str r0, [r5, #0x0] -_02069472: - cmp r6, #0x0 - bne _0206954A - ldr r0, [sp, #0x24] - add r4, r4, #0x6 - add r0, r0, #0x1 - str r0, [sp, #0x24] - cmp r0, #0x7 - bge _02069484 - b _02069246 -_02069484: - b _0206954A -_02069486: - ldr r3, [sp, #0x18] - mov r4, #0x0 - mov r7, #0x6 - mov r2, #0x5 -_0206948E: - ldrh r0, [r3, #0x0] - cmp r0, #0x5 - beq _0206949A - cmp r0, #0x6 - beq _020694A4 - b _020694B0 -_0206949A: - ldrh r6, [r3, #0x4] - str r2, [r5, #0x0] - b _020694B0 - .balign 4 -_020694A0: .word 0xFFFF0000 -_020694A4: - ldrh r1, [r3, #0x2] - ldr r0, [sp, #0x28] - cmp r0, r1 - bne _020694B0 - ldrh r6, [r3, #0x4] - str r7, [r5, #0x0] -_020694B0: - cmp r6, #0x0 - bne _0206954A - add r4, r4, #0x1 - add r3, r3, #0x6 - cmp r4, #0x7 - blt _0206948E - b _0206954A -_020694BE: - mov r0, #0x0 - ldr r4, [sp, #0x18] - str r0, [sp, #0xc] -_020694C4: - ldrh r2, [r4, #0x0] - cmp r2, #0x7 - bne _020694E4 - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x4] - cmp r0, r1 - bne _020694E4 - ldr r0, [sp, #0xc] - mov r1, #0x6 - mul r1, r0 - ldr r0, [sp, #0x18] - add r0, r0, r1 - ldrh r6, [r0, #0x4] - mov r0, #0x0 - str r0, [r5, #0x0] - b _0206954A -_020694E4: - cmp r2, #0x10 - bne _02069510 - add r0, r7, #0x0 - mov r1, #0x6f - mov r2, #0x0 - bl GetMonDataEncrypted - cmp r0, #0x0 - bne _02069510 - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x4] - cmp r0, r1 - bne _02069510 - ldr r0, [sp, #0xc] - mov r1, #0x6 - mul r1, r0 - ldr r0, [sp, #0x18] - add r0, r0, r1 - ldrh r6, [r0, #0x4] - mov r0, #0x0 - str r0, [r5, #0x0] - b _0206954A -_02069510: - ldrh r0, [r4, #0x0] - cmp r0, #0x11 - bne _0206953E - add r0, r7, #0x0 - mov r1, #0x6f - mov r2, #0x0 - bl GetMonDataEncrypted - cmp r0, #0x1 - bne _0206953E - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x4] - cmp r0, r1 - bne _0206953E - ldr r0, [sp, #0xc] - mov r1, #0x6 - mul r1, r0 - ldr r0, [sp, #0x18] - add r0, r0, r1 - ldrh r6, [r0, #0x4] - mov r0, #0x0 - str r0, [r5, #0x0] - b _0206954A -_0206953E: - ldr r0, [sp, #0xc] - add r4, r4, #0x6 - add r0, r0, #0x1 - str r0, [sp, #0xc] - cmp r0, #0x7 - blt _020694C4 -_0206954A: - ldr r0, [sp, #0x18] - bl FreeToHeap - add r0, r6, #0x0 - add sp, #0x44 - pop {r4-r7, pc} - .balign 4 - - thumb_func_start ReadFromPersonalPmsNarc -ReadFromPersonalPmsNarc: ; 0x02069558 - push {r3-r4, lr} - sub sp, #0x4c - add r4, r0, #0x0 - mov r1, #0x0 - add r0, sp, #0x0 - strh r1, [r0, #0x0] - ldr r0, _020695A0 ; =SPECIES_EGG - cmp r4, r0 - blo _0206956E - bl ErrorHandling -_0206956E: - add r0, sp, #0x4 - bl FS_InitFile - ldr r1, _020695A4 ; =__local_str_poketool_personal_pms_narc - add r0, sp, #0x4 - bl FS_OpenFile - add r0, sp, #0x4 - lsl r1, r4, #0x1 - mov r2, #0x0 - bl FS_SeekFile - add r0, sp, #0x4 - add r1, sp, #0x0 - mov r2, #0x2 - bl FS_ReadFile - add r0, sp, #0x4 - bl FS_CloseFile - add r0, sp, #0x0 - ldrh r0, [r0, #0x0] - add sp, #0x4c - pop {r3-r4, pc} - nop -_020695A0: .word SPECIES_EGG -_020695A4: .word __local_str_poketool_personal_pms_narc - - thumb_func_start GetEggSpecies -GetEggSpecies: ; 0x020695A8 - push {r3, lr} - cmp r0, #SPECIES_SUDOWOODO - bgt _020695CC - cmp r0, #SPECIES_MARILL - blt _020695BA - beq _020695EC - cmp r0, #SPECIES_SUDOWOODO - beq _020695EC - b _020695E8 -_020695BA: - cmp r0, #SPECIES_MR_MIME - bgt _020695C6 - bge _020695EC - cmp r0, #SPECIES_CHANSEY - beq _020695EC - b _020695E8 -_020695C6: - cmp r0, #SPECIES_SNORLAX - beq _020695EC - b _020695E8 -_020695CC: - cmp r0, #SPECIES_MANTINE - bgt _020695D8 - bge _020695EC - cmp r0, #SPECIES_WOBBUFFET - beq _020695EC - b _020695E8 -_020695D8: - ldr r1, _020695F0 ; =SPECIES_ROSELIA - cmp r0, r1 - bgt _020695E2 - beq _020695EC - b _020695E8 -_020695E2: - add r1, #SPECIES_CHIMECHO-SPECIES_ROSELIA - cmp r0, r1 - beq _020695EC -_020695E8: - bl ReadFromPersonalPmsNarc -_020695EC: - pop {r3, pc} - nop -_020695F0: .word SPECIES_ROSELIA - - thumb_func_start InitBoxMonMoveset -InitBoxMonMoveset: ; 0x020695F4 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - mov r0, #0x0 - mov r1, #0x2c - bl AllocFromHeap - str r0, [sp, #0x0] - add r0, r5, #0x0 - bl TryDecryptBoxMon - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r5, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - add r7, r0, #0x0 - add r0, r5, #0x0 - bl CalcBoxMonLevelEncrypted - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - ldr r2, [sp, #0x0] - add r0, r4, #0x0 - add r1, r7, #0x0 - bl LoadWotbl_HandleAlternateForme - ldr r0, [sp, #0x0] - ldrh r1, [r0, #0x0] - ldr r0, _02069690 ; =0x0000FFFF - cmp r1, r0 - beq _0206967C - ldr r4, [sp, #0x0] - lsl r7, r6, #0x9 -_02069648: - ldrh r1, [r4, #0x0] - mov r0, #0xfe - lsl r0, r0, #0x8 - and r0, r1 - cmp r0, r7 - bgt _0206967C - ldr r0, _02069694 ; =0x000001FF - and r0, r1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_020696A8 - ldr r1, _02069690 ; =0x0000FFFF - cmp r0, r1 - bne _02069672 - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_02069718 -_02069672: - add r4, r4, #0x2 - ldrh r1, [r4, #0x0] - ldr r0, _02069690 ; =0x0000FFFF - cmp r1, r0 - bne _02069648 -_0206967C: - ldr r0, [sp, #0x0] - bl FreeToHeap - ldr r1, [sp, #0x4] - add r0, r5, #0x0 - bl TryEncryptBoxMon - add sp, #0x8 - pop {r3-r7, pc} - nop -_02069690: .word 0x0000FFFF -_02069694: .word 0x000001FF - - thumb_func_start FUN_02069698 -FUN_02069698: ; 0x02069698 - push {r4, lr} - add r4, r1, #0x0 - bl FUN_020690E4 - add r1, r4, #0x0 - bl FUN_020696A8 - pop {r4, pc} - - thumb_func_start FUN_020696A8 -FUN_020696A8: ; 0x020696A8 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r1, #0x0 - ldr r1, _02069700 ; =0x0000FFFF - add r6, r0, #0x0 - str r1, [sp, #0x4] - bl TryDecryptBoxMon - mov r4, #0x0 - str r0, [sp, #0x0] - add r7, r4, #0x0 -_020696BE: - add r1, r4, #0x0 - add r0, r6, #0x0 - add r1, #0x36 - add r2, r7, #0x0 - bl GetBoxMonDataEncrypted - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bne _020696E0 - lsl r2, r4, #0x18 - add r0, r6, #0x0 - add r1, r5, #0x0 - lsr r2, r2, #0x18 - bl FUN_020697D4 - str r5, [sp, #0x4] - b _020696F0 -_020696E0: - cmp r0, r5 - bne _020696EA - ldr r0, _02069704 ; =0x0000FFFE - str r0, [sp, #0x4] - b _020696F0 -_020696EA: - add r4, r4, #0x1 - cmp r4, #0x4 - blt _020696BE -_020696F0: - ldr r1, [sp, #0x0] - add r0, r6, #0x0 - bl TryEncryptBoxMon - ldr r0, [sp, #0x4] - add sp, #0x8 - pop {r3-r7, pc} - nop -_02069700: .word 0x0000FFFF -_02069704: .word 0x0000FFFE - - thumb_func_start FUN_02069708 -FUN_02069708: ; 0x02069708 - push {r4, lr} - add r4, r1, #0x0 - bl FUN_020690E4 - add r1, r4, #0x0 - bl FUN_02069718 - pop {r4, pc} - - thumb_func_start FUN_02069718 -FUN_02069718: ; 0x02069718 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - str r1, [sp, #0x0] - bl TryDecryptBoxMon - str r0, [sp, #0xc] - add r0, sp, #0x18 - mov r4, #0x0 - str r0, [sp, #0x4] - add r7, sp, #0x14 - add r6, sp, #0x10 -_02069730: - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x37 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - ldr r1, [sp, #0x4] - mov r2, #0x0 - strh r0, [r1, #0x0] - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3b - bl GetBoxMonDataEncrypted - add r1, r4, #0x0 - strb r0, [r7, #0x0] - add r0, r5, #0x0 - add r1, #0x3f - mov r2, #0x0 - bl GetBoxMonDataEncrypted - strb r0, [r6, #0x0] - ldr r0, [sp, #0x4] - add r4, r4, #0x1 - add r0, r0, #0x2 - str r0, [sp, #0x4] - add r7, r7, #0x1 - add r6, r6, #0x1 - cmp r4, #0x3 - blt _02069730 - ldr r0, [sp, #0x0] - add r1, sp, #0x10 - strh r0, [r1, #0xe] - ldr r0, [sp, #0x0] - mov r1, #0x5 - bl FUN_0206AB18 - add r1, sp, #0x10 - strb r0, [r1, #0x7] - mov r4, #0x0 - add r0, sp, #0x18 - strb r4, [r1, #0x3] - str r0, [sp, #0x8] - add r7, sp, #0x14 - add r6, sp, #0x10 -_0206978A: - add r1, r4, #0x0 - ldr r2, [sp, #0x8] - add r0, r5, #0x0 - add r1, #0x36 - bl SetBoxMonDataEncrypted - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3a - add r2, r7, #0x0 - bl SetBoxMonDataEncrypted - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3e - add r2, r6, #0x0 - bl SetBoxMonDataEncrypted - ldr r0, [sp, #0x8] - add r4, r4, #0x1 - add r0, r0, #0x2 - str r0, [sp, #0x8] - add r7, r7, #0x1 - add r6, r6, #0x1 - cmp r4, #0x4 - blt _0206978A - ldr r1, [sp, #0xc] - add r0, r5, #0x0 - bl TryEncryptBoxMon - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020697CC -FUN_020697CC: ; 0x020697CC - ldr r3, _020697D0 ; =FUN_020697D4 - bx r3 - .balign 4 -_020697D0: .word FUN_020697D4 - - thumb_func_start FUN_020697D4 -FUN_020697D4: ; 0x020697D4 - push {r0-r3} - push {r3-r5, lr} - add r4, r2, #0x0 - add r1, r4, #0x0 - add r1, #0x36 - add r2, sp, #0x14 - add r5, r0, #0x0 - bl SetBoxMonDataEncrypted - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3e - mov r2, #0x0 - bl GetBoxMonDataEncrypted - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - add r0, sp, #0x10 - ldrh r0, [r0, #0x4] - bl FUN_0206AB30 - add r1, sp, #0x0 - strb r0, [r1, #0x0] - add r4, #0x3a - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, sp, #0x0 - bl SetBoxMonDataEncrypted - pop {r3-r5} - pop {r3} - add sp, #0x10 - bx r3 - .balign 4 - - thumb_func_start FUN_02069818 -FUN_02069818: ; 0x02069818 - push {r3-r7, lr} - sub sp, #0x10 - add r7, r0, #0x0 - add r5, r1, #0x0 - mov r0, #0x0 - mov r1, #0x2c - str r2, [sp, #0x0] - str r0, [sp, #0x8] - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r7, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x4] - add r0, r7, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0xc] - add r0, r7, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - ldr r0, [sp, #0x4] - ldr r1, [sp, #0xc] - add r2, r4, #0x0 - bl LoadWotbl_HandleAlternateForme - ldr r0, [r5, #0x0] - lsl r0, r0, #0x1 - ldrh r2, [r4, r0] - ldr r0, _020698D8 ; =0x0000FFFF - cmp r2, r0 - bne _0206987A - add r0, r4, #0x0 - bl FreeToHeap - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_0206987A: - mov r0, #0xfe - lsl r0, r0, #0x8 - add r3, r2, #0x0 - and r3, r0 - lsl r6, r6, #0x9 - cmp r6, r3 - beq _020698AC - ldr r1, _020698D8 ; =0x0000FFFF -_0206988A: - ldr r2, [r5, #0x0] - add r2, r2, #0x1 - str r2, [r5, #0x0] - lsl r2, r2, #0x1 - ldrh r2, [r4, r2] - cmp r2, r1 - bne _020698A4 - add r0, r4, #0x0 - bl FreeToHeap - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_020698A4: - add r3, r2, #0x0 - and r3, r0 - cmp r6, r3 - bne _0206988A -_020698AC: - cmp r6, r3 - bne _020698CC - ldr r0, _020698DC ; =0x000001FF - add r1, r2, #0x0 - and r1, r0 - ldr r0, [sp, #0x0] - strh r1, [r0, #0x0] - ldr r0, [r5, #0x0] - ldr r1, [sp, #0x0] - add r0, r0, #0x1 - str r0, [r5, #0x0] - ldrh r1, [r1, #0x0] - add r0, r7, #0x0 - bl FUN_02069698 - str r0, [sp, #0x8] -_020698CC: - add r0, r4, #0x0 - bl FreeToHeap - ldr r0, [sp, #0x8] - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 -_020698D8: .word 0x0000FFFF -_020698DC: .word 0x000001FF - - thumb_func_start FUN_020698E0 -FUN_020698E0: ; 0x020698E0 - ldr r3, _020698E4 ; =FUN_020698E8 - bx r3 - .balign 4 -_020698E4: .word FUN_020698E8 - - thumb_func_start FUN_020698E8 -FUN_020698E8: ; 0x020698E8 - push {r4-r6, lr} - sub sp, #0x8 - add r4, r1, #0x0 - add r6, r2, #0x0 - add r1, #0x36 - mov r2, #0x0 - add r5, r0, #0x0 - bl GetBoxMonDataEncrypted - add r1, sp, #0x0 - strh r0, [r1, #0x4] - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3a - mov r2, #0x0 - bl GetBoxMonDataEncrypted - add r1, sp, #0x0 - strb r0, [r1, #0x2] - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3e - mov r2, #0x0 - bl GetBoxMonDataEncrypted - add r1, sp, #0x0 - strb r0, [r1, #0x0] - add r1, r6, #0x0 - add r0, r5, #0x0 - add r1, #0x36 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - add r1, sp, #0x0 - strh r0, [r1, #0x6] - add r1, r6, #0x0 - add r0, r5, #0x0 - add r1, #0x3a - mov r2, #0x0 - bl GetBoxMonDataEncrypted - add r1, sp, #0x0 - strb r0, [r1, #0x3] - add r1, r6, #0x0 - add r0, r5, #0x0 - add r1, #0x3e - mov r2, #0x0 - bl GetBoxMonDataEncrypted - add r1, sp, #0x0 - strb r0, [r1, #0x1] - add r1, r4, #0x0 - add r2, sp, #0x4 - add r0, r5, #0x0 - add r1, #0x36 - add r2, #0x2 - bl SetBoxMonDataEncrypted - add r1, r4, #0x0 - add r2, sp, #0x0 - add r0, r5, #0x0 - add r1, #0x3a - add r2, #0x3 - bl SetBoxMonDataEncrypted - add r4, #0x3e - add r2, sp, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, #0x1 - bl SetBoxMonDataEncrypted - add r1, r6, #0x0 - add r0, r5, #0x0 - add r1, #0x36 - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - add r1, r6, #0x0 - add r2, sp, #0x0 - add r0, r5, #0x0 - add r1, #0x3a - add r2, #0x2 - bl SetBoxMonDataEncrypted - add r6, #0x3e - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, sp, #0x0 - bl SetBoxMonDataEncrypted - add sp, #0x8 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_020699A4 -FUN_020699A4: ; 0x020699A4 - push {r3-r7, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - cmp r4, #0x3 - bhs _02069A0A - mov r7, #0x0 - add r6, sp, #0x0 -_020699B2: - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x37 - add r2, r7, #0x0 - bl GetMonDataEncrypted - add r1, r4, #0x0 - strh r0, [r6, #0x2] - add r0, r5, #0x0 - add r1, #0x3b - mov r2, #0x0 - bl GetMonDataEncrypted - add r1, r4, #0x0 - strb r0, [r6, #0x1] - add r0, r5, #0x0 - add r1, #0x3f - mov r2, #0x0 - bl GetMonDataEncrypted - add r1, r4, #0x0 - add r2, sp, #0x0 - strb r0, [r6, #0x0] - add r0, r5, #0x0 - add r1, #0x36 - add r2, #0x2 - bl SetMonDataEncrypted - add r1, r4, #0x0 - add r2, sp, #0x0 - add r0, r5, #0x0 - add r1, #0x3a - add r2, #0x1 - bl SetMonDataEncrypted - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3e - add r2, sp, #0x0 - bl SetMonDataEncrypted - add r4, r4, #0x1 - cmp r4, #0x3 - blo _020699B2 -_02069A0A: - mov r1, #0x0 - add r0, sp, #0x0 - strh r1, [r0, #0x2] - strb r1, [r0, #0x1] - strb r1, [r0, #0x0] - add r2, sp, #0x0 - add r0, r5, #0x0 - mov r1, #0x39 - add r2, #0x2 - bl SetMonDataEncrypted - add r2, sp, #0x0 - add r0, r5, #0x0 - mov r1, #0x3d - add r2, #0x1 - bl SetMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x41 - add r2, sp, #0x0 - bl SetMonDataEncrypted - pop {r3-r7, pc} - - thumb_func_start FUN_02069A38 -FUN_02069A38: ; 0x02069A38 - push {r3-r7, lr} - mov r4, #0x0 - add r6, r0, #0x0 - add r5, r1, #0x0 - add r7, r4, #0x0 -_02069A42: - add r1, r4, #0x0 - add r0, r6, #0x0 - add r1, #0x36 - add r2, r7, #0x0 - bl GetMonDataEncrypted - cmp r5, r0 - beq _02069A58 - add r4, r4, #0x1 - cmp r4, #0x4 - blt _02069A42 -_02069A58: - cmp r4, #0x4 - beq _02069A60 - mov r0, #0x1 - pop {r3-r7, pc} -_02069A60: - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02069A64 -FUN_02069A64: ; 0x02069A64 - push {r4-r5, lr} - sub sp, #0x1c - add r5, r0, #0x0 - add r4, r1, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - add r3, r4, #0x0 - mov r2, #0x11 -_02069A74: - ldmia r5!, {r0-r1} - stmia r3!, {r0-r1} - sub r2, r2, #0x1 - bne _02069A74 - ldrh r1, [r4, #0x4] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1f - beq _02069A8E - mov r0, #0x1 - bic r1, r0 - mov r0, #0x1 - orr r0, r1 - strh r0, [r4, #0x4] -_02069A8E: - add r0, r4, #0x0 - mov r1, #0x9f - add r2, sp, #0x0 - bl SetMonDataEncrypted - add r0, r4, #0x0 - mov r1, #0xa2 - add r2, sp, #0x0 - bl SetMonDataEncrypted - add r0, r4, #0x0 - mov r1, #0xa3 - add r2, sp, #0x0 - bl SetMonDataEncrypted - mov r0, #0x0 - bl CreateNewSealsObject - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0xa9 - add r2, r5, #0x0 - bl SetMonDataEncrypted - add r0, r5, #0x0 - bl FreeToHeap - add r0, r4, #0x0 - mov r1, #0xa1 - add r2, sp, #0x0 - bl SetMonDataEncrypted - mov r0, #0x0 - add r1, sp, #0x4 - mov r2, #0x18 - bl MIi_CpuClearFast - add r0, r4, #0x0 - mov r1, #0xaa - add r2, sp, #0x4 - bl SetMonDataEncrypted - add r0, r4, #0x0 - bl UpdateMonLevelAndRecalcStats - add sp, #0x1c - pop {r4-r5, pc} - - thumb_func_start FUN_02069AEC -FUN_02069AEC: ; 0x02069AEC - push {r3-r7, lr} - str r0, [sp, #0x0] - bl FUN_0206B9AC - add r7, r0, #0x0 - mov r6, #0x1 - mov r5, #0x0 - cmp r7, #0x0 - ble _02069B3C -_02069AFE: - ldr r0, [sp, #0x0] - add r1, r5, #0x0 - bl FUN_0206B9B0 - mov r1, #0x5 - mov r2, #0x0 - add r4, r0, #0x0 - bl GetMonDataEncrypted - cmp r0, #0x0 - beq _02069B36 - add r0, r4, #0x0 - mov r1, #0x4c - mov r2, #0x0 - bl GetMonDataEncrypted - cmp r0, #0x0 - bne _02069B36 - add r0, r4, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, r6 - bls _02069B36 - add r6, r0, #0x0 -_02069B36: - add r5, r5, #0x1 - cmp r5, r7 - blt _02069AFE -_02069B3C: - add r0, r6, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02069B40 -FUN_02069B40: ; 0x02069B40 - push {r3, lr} - sub sp, #0x8 - add r3, r0, #0x0 - mov r0, #0x2 - str r0, [sp, #0x0] - add r0, sp, #0x4 - mov r1, #0x6d ; NARC_POKETOOL_POKEZUKAN - mov r2, #0x0 - lsl r3, r3, #0x1 - bl ReadFromNarcMemberByIdPair - add r0, sp, #0x4 - ldrh r0, [r0, #0x0] - add sp, #0x8 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02069B60 -FUN_02069B60: ; 0x02069B60 - push {r3, lr} - sub sp, #0x8 - add r3, r0, #0x0 - mov r2, #0x0 - add r0, sp, #0x4 - strh r2, [r0, #0x0] - cmp r3, #0x97 - bhi _02069B7E - mov r0, #0x2 - str r0, [sp, #0x0] - add r0, sp, #0x4 - mov r1, #0x91 ; NARC_POKETOOL_SHINZUKAN - lsl r3, r3, #0x1 - bl ReadFromNarcMemberByIdPair -_02069B7E: - add r0, sp, #0x4 - ldrh r0, [r0, #0x0] - add sp, #0x8 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02069B88 -FUN_02069B88: ; 0x02069B88 - push {r3-r4} - add r4, r0, #0x0 - add r3, r1, #0x0 - mov r2, #0x1d -_02069B90: - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - sub r2, r2, #0x1 - bne _02069B90 - ldr r0, [r4, #0x0] - str r0, [r3, #0x0] - pop {r3-r4} - bx lr - - thumb_func_start FUN_02069BA0 -FUN_02069BA0: ; 0x02069BA0 - push {r3-r4} - add r4, r0, #0x0 - add r3, r1, #0x0 - mov r2, #0x11 -_02069BA8: - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - sub r2, r2, #0x1 - bne _02069BA8 - pop {r3-r4} - bx lr - - thumb_func_start FUN_02069BB4 -FUN_02069BB4: ; 0x02069BB4 - push {r3-r4} - add r4, r0, #0x0 - add r3, r1, #0x0 - mov r2, #0x11 -_02069BBC: - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - sub r2, r2, #0x1 - bne _02069BBC - pop {r3-r4} - bx lr - - thumb_func_start FUN_02069BC8 -FUN_02069BC8: ; 0x02069BC8 - ldr r3, _02069BCC ; =FUN_02069BD0 - bx r3 - .balign 4 -_02069BCC: .word FUN_02069BD0 - - thumb_func_start FUN_02069BD0 -FUN_02069BD0: ; 0x02069BD0 - push {r4, lr} - add r4, r1, #0x0 - mov r1, #0x0 - add r2, r1, #0x0 - bl GetBoxMonDataEncrypted - add r1, r4, #0x0 - bl FUN_02069BE4 - pop {r4, pc} - - thumb_func_start FUN_02069BE4 -FUN_02069BE4: ; 0x02069BE4 - push {r4, lr} - add r4, r1, #0x0 - bl GetNatureFromPersonality - lsl r1, r0, #0x2 - add r1, r0, r1 - ldr r0, _02069BF8 ; =UNK_020F7F16 - add r0, r0, r1 - ldrsb r0, [r4, r0] - pop {r4, pc} - .balign 4 -_02069BF8: .word UNK_020F7F16 - - thumb_func_start FUN_02069BFC -FUN_02069BFC: ; 0x02069BFC - push {r3-r7, lr} - add r4, r0, #0x0 - add r7, r1, #0x0 - mov r0, #0x0 - mov r1, #0x2c - add r5, r2, #0x0 - bl AllocFromHeap - add r6, r0, #0x0 - add r0, r4, #0x0 - add r1, r7, #0x0 - add r2, r6, #0x0 - bl LoadWotbl_HandleAlternateForme - ldrh r1, [r6, #0x0] - ldr r0, _02069C44 ; =0x0000FFFF - mov r4, #0x0 - cmp r1, r0 - beq _02069C3A - ldr r1, _02069C48 ; =0x000001FF - ldr r2, _02069C44 ; =0x0000FFFF - add r0, r6, #0x0 -_02069C28: - ldrh r3, [r0, #0x0] - add r0, r0, #0x2 - add r4, r4, #0x1 - and r3, r1 - strh r3, [r5, #0x0] - ldrh r3, [r0, #0x0] - add r5, r5, #0x2 - cmp r3, r2 - bne _02069C28 -_02069C3A: - add r0, r6, #0x0 - bl FreeToHeap - add r0, r4, #0x0 - pop {r3-r7, pc} - .balign 4 -_02069C44: .word 0x0000FFFF -_02069C48: .word 0x000001FF - - thumb_func_start FUN_02069C4C -FUN_02069C4C: ; 0x02069C4C - push {r3-r7, lr} - add r5, r0, #0x0 - bl FUN_0206B9AC - add r6, r0, #0x0 - bl rand_LC - mov r1, #0x1 - lsl r1, r1, #0xe - cmp r0, r1 - beq _02069C70 - lsl r1, r1, #0x1 - cmp r0, r1 - beq _02069C70 - mov r1, #0x3 - lsl r1, r1, #0xe - cmp r0, r1 - bne _02069CF2 -_02069C70: - bl rand_LC - add r1, r6, #0x0 - bl _s32_div_f - add r0, r5, #0x0 - add r7, r1, #0x0 - bl FUN_0206B9B0 - mov r1, #0x5 - mov r2, #0x0 - add r4, r0, #0x0 - bl GetMonDataEncrypted - cmp r0, #0x0 - beq _02069C70 - add r0, r4, #0x0 - mov r1, #0x4c - mov r2, #0x0 - bl GetMonDataEncrypted - cmp r0, #0x0 - bne _02069C70 - add r0, r7, #0x0 - bl MaskOfFlagNo - add r1, r0, #0x0 - lsl r1, r1, #0x18 - add r0, r5, #0x0 - lsr r1, r1, #0x18 - bl FUN_02069CF4 - cmp r0, #0x0 - bne _02069CF2 - add r5, sp, #0x0 - mov r6, #0x7 -_02069CB8: - bl rand_LC - strb r0, [r5, #0x0] - ldrb r2, [r5, #0x0] - add r1, r2, #0x0 - and r1, r6 - beq _02069CB8 - mov r0, #0xf0 - tst r0, r2 - beq _02069CD0 - add r0, sp, #0x0 - strb r1, [r0, #0x0] -_02069CD0: - add r1, sp, #0x0 - ldrb r2, [r1, #0x0] - lsl r0, r2, #0x4 - orr r0, r2 - strb r0, [r1, #0x0] - ldrb r2, [r1, #0x0] - mov r0, #0xf3 - and r0, r2 - strb r0, [r1, #0x0] - ldrb r0, [r1, #0x0] - add r2, sp, #0x0 - add r0, r0, #0x1 - strb r0, [r1, #0x0] - add r0, r4, #0x0 - mov r1, #0x99 - bl SetMonDataEncrypted -_02069CF2: - pop {r3-r7, pc} - - thumb_func_start FUN_02069CF4 -FUN_02069CF4: ; 0x02069CF4 - push {r3-r7, lr} - mov r6, #0x0 - add r5, r1, #0x0 - str r0, [sp, #0x0] - mov r4, #0x1 - add r7, r6, #0x0 - cmp r5, #0x0 - beq _02069D32 -_02069D04: - mov r0, #0x1 - tst r0, r5 - beq _02069D26 - ldr r0, [sp, #0x0] - add r1, r6, #0x0 - bl FUN_0206B9B0 - mov r1, #0x99 - mov r2, #0x0 - bl GetMonDataEncrypted - cmp r0, #0x0 - beq _02069D26 - add r0, r7, #0x0 - orr r0, r4 - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 -_02069D26: - lsl r0, r5, #0x17 - add r6, r6, #0x1 - lsl r4, r4, #0x1 - lsr r5, r0, #0x18 - bne _02069D04 - b _02069D4A -_02069D32: - add r1, r6, #0x0 - bl FUN_0206B9B0 - mov r1, #0x99 - add r2, r6, #0x0 - bl GetMonDataEncrypted - cmp r0, #0x0 - beq _02069D4A - add r0, r7, #0x1 - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 -_02069D4A: - add r0, r7, #0x0 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02069D50 -FUN_02069D50: ; 0x02069D50 - push {r4-r7, lr} - sub sp, #0xc - str r0, [sp, #0x0] - add r5, r1, #0x0 - bl FUN_0206B9AC - mov r6, #0x0 - str r0, [sp, #0x4] - cmp r0, #0x0 - ble _02069DC2 - add r4, sp, #0x8 -_02069D66: - ldr r0, [sp, #0x0] - add r1, r6, #0x0 - bl FUN_0206B9B0 - mov r1, #0x5 - mov r2, #0x0 - add r7, r0, #0x0 - bl GetMonDataEncrypted - cmp r0, #0x0 - beq _02069DBA - add r0, r7, #0x0 - mov r1, #0x99 - mov r2, #0x0 - bl GetMonDataEncrypted - strb r0, [r4, #0x0] - ldrb r1, [r4, #0x0] - mov r0, #0xf - and r0, r1 - beq _02069DBA - cmp r0, r5 - blt _02069D98 - cmp r5, #0x4 - ble _02069DA2 -_02069D98: - ldrb r1, [r4, #0x0] - mov r0, #0xf0 - and r0, r1 - strb r0, [r4, #0x0] - b _02069DA6 -_02069DA2: - sub r0, r1, r5 - strb r0, [r4, #0x0] -_02069DA6: - ldrb r0, [r4, #0x0] - cmp r0, #0x0 - bne _02069DB0 - mov r0, #0x10 - strb r0, [r4, #0x0] -_02069DB0: - add r0, r7, #0x0 - mov r1, #0x99 - add r2, sp, #0x8 - bl SetMonDataEncrypted -_02069DBA: - ldr r0, [sp, #0x4] - add r6, r6, #0x1 - cmp r6, r0 - blt _02069D66 -_02069DC2: - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_02069DC8 -FUN_02069DC8: ; 0x02069DC8 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl FUN_0206B9AC - add r7, r0, #0x0 - bl rand_LC - mov r1, #0x3 - bl _s32_div_f - cmp r1, #0x0 - bne _02069E70 - mov r4, #0x0 - cmp r7, #0x0 - ble _02069E70 - sub r0, r7, #0x1 - str r0, [sp, #0x0] -_02069DEC: - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_0206B9B0 - mov r1, #0x5 - mov r2, #0x0 - add r6, r0, #0x0 - bl GetMonDataEncrypted - cmp r0, #0x0 - beq _02069E6A - add r0, r6, #0x0 - mov r1, #0x99 - mov r2, #0x0 - bl GetMonDataEncrypted - add r1, sp, #0x4 - strb r0, [r1, #0x0] - add r0, r1, #0x0 - ldrb r1, [r0, #0x0] - mov r0, #0xf - tst r0, r1 - beq _02069E6A - cmp r4, #0x0 - beq _02069E40 - add r0, r5, #0x0 - sub r1, r4, #0x1 - bl FUN_0206B9B0 - mov r1, #0x99 - mov r2, #0x0 - add r6, r0, #0x0 - bl GetMonDataEncrypted - mov r1, #0xf0 - tst r0, r1 - bne _02069E40 - add r0, r6, #0x0 - mov r1, #0x99 - add r2, sp, #0x4 - bl SetMonDataEncrypted -_02069E40: - ldr r0, [sp, #0x0] - cmp r4, r0 - bge _02069E6A - add r0, r5, #0x0 - add r1, r4, #0x1 - bl FUN_0206B9B0 - mov r1, #0x99 - mov r2, #0x0 - add r6, r0, #0x0 - bl GetMonDataEncrypted - mov r1, #0xf0 - tst r0, r1 - bne _02069E6A - add r0, r6, #0x0 - mov r1, #0x99 - add r2, sp, #0x4 - bl SetMonDataEncrypted - add r4, r4, #0x1 -_02069E6A: - add r4, r4, #0x1 - cmp r4, r7 - blt _02069DEC -_02069E70: - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_02069E74 -FUN_02069E74: ; 0x02069E74 - ldr r3, _02069E78 ; =FUN_02069E7C - bx r3 - .balign 4 -_02069E78: .word FUN_02069E7C - - thumb_func_start FUN_02069E7C -FUN_02069E7C: ; 0x02069E7C - push {r3, lr} - mov r1, #0x99 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - mov r1, #0xf - tst r0, r1 - beq _02069E90 - mov r0, #0x1 - pop {r3, pc} -_02069E90: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_02069E94 -FUN_02069E94: ; 0x02069E94 - ldr r3, _02069E98 ; =FUN_02069E9C - bx r3 - .balign 4 -_02069E98: .word FUN_02069E9C - - thumb_func_start FUN_02069E9C -FUN_02069E9C: ; 0x02069E9C - push {r3, lr} - mov r1, #0x99 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - mov r0, #0xf - tst r0, r1 - beq _02069EB4 - mov r0, #0x0 - pop {r3, pc} -_02069EB4: - mov r0, #0xf0 - tst r0, r1 - beq _02069EBE - mov r0, #0x1 - pop {r3, pc} -_02069EBE: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02069EC4 -FUN_02069EC4: ; 0x02069EC4 - ldr r3, _02069EC8 ; =FUN_02069ECC - bx r3 - .balign 4 -_02069EC8: .word FUN_02069ECC - - thumb_func_start FUN_02069ECC -FUN_02069ECC: ; 0x02069ECC - push {r3-r6, lr} - sub sp, #0x4 - add r5, r0, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xa - mov r2, #0x0 - bl GetBoxMonDataEncrypted - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x6 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - ldr r1, _02069F20 ; =SPECIES_ARCEUS - cmp r4, r1 - bne _02069F1C - cmp r6, #0x79 - bne _02069F1C - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r1, #0x1 - mov r2, #0x0 - bl FUN_0206E7B8 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl GetArceusTypeByPlate - str r0, [sp, #0x0] - add r0, r5, #0x0 - mov r1, #0x70 - add r2, sp, #0x0 - bl SetBoxMonDataEncrypted -_02069F1C: - add sp, #0x4 - pop {r3-r6, pc} - .balign 4 -_02069F20: .word SPECIES_ARCEUS - - thumb_func_start GetArceusTypeByPlate -GetArceusTypeByPlate: ; 0x02069F24 - sub r0, #0x7d - cmp r0, #0xf - bhi _02069F96 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02069F36: ; jump table (using 16-bit offset) - .short _02069F56 - _02069F36 - 2; case 0 - .short _02069F5A - _02069F36 - 2; case 1 - .short _02069F5E - _02069F36 - 2; case 2 - .short _02069F62 - _02069F36 - 2; case 3 - .short _02069F66 - _02069F36 - 2; case 4 - .short _02069F6A - _02069F36 - 2; case 5 - .short _02069F6E - _02069F36 - 2; case 6 - .short _02069F72 - _02069F36 - 2; case 7 - .short _02069F76 - _02069F36 - 2; case 8 - .short _02069F7A - _02069F36 - 2; case 9 - .short _02069F7E - _02069F36 - 2; case 10 - .short _02069F82 - _02069F36 - 2; case 11 - .short _02069F86 - _02069F36 - 2; case 12 - .short _02069F8A - _02069F36 - 2; case 13 - .short _02069F8E - _02069F36 - 2; case 14 - .short _02069F92 - _02069F36 - 2; case 15 -_02069F56: - mov r0, #0xa - bx lr -_02069F5A: - mov r0, #0xb - bx lr -_02069F5E: - mov r0, #0xd - bx lr -_02069F62: - mov r0, #0xc - bx lr -_02069F66: - mov r0, #0xf - bx lr -_02069F6A: - mov r0, #0x1 - bx lr -_02069F6E: - mov r0, #0x3 - bx lr -_02069F72: - mov r0, #0x4 - bx lr -_02069F76: - mov r0, #0x2 - bx lr -_02069F7A: - mov r0, #0xe - bx lr -_02069F7E: - mov r0, #0x6 - bx lr -_02069F82: - mov r0, #0x5 - bx lr -_02069F86: - mov r0, #0x7 - bx lr -_02069F8A: - mov r0, #0x10 - bx lr -_02069F8E: - mov r0, #0x11 - bx lr -_02069F92: - mov r0, #0x8 - bx lr -_02069F96: - mov r0, #0x0 - bx lr - .balign 4 - - thumb_func_start LoadWotbl_HandleAlternateForme -LoadWotbl_HandleAlternateForme: ; 0x02069F9C - push {r4, lr} - add r4, r2, #0x0 - bl ResolveMonForme - add r2, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x21 ; NARC_POKETOOL_PERSONAL_WOTBL - bl ReadWholeNarcMemberByIdPair - pop {r4, pc} - - thumb_func_start FUN_02069FB0 -FUN_02069FB0: ; 0x02069FB0 - push {r3-r7, lr} - add r7, r0, #0x0 - ldr r0, _0206A010 ; =0x000001B9 - add r4, r2, #0x0 - add r5, r1, #0x0 - add r6, r3, #0x0 - cmp r4, r0 - bne _02069FFC - add r0, r5, #0x0 - bl FUN_02005F14 - cmp r0, #0x0 - bne _02069FE2 - mov r0, #0x1 - bl FUN_02005E80 - ldr r0, [sp, #0x20] - ldr r3, [sp, #0x18] - str r0, [sp, #0x0] - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_020056AC - pop {r3-r7, pc} -_02069FE2: - ldr r0, [sp, #0x1c] - cmp r0, #0x0 - beq _02069FEE - mov r0, #0x1 - bl FUN_02005E80 -_02069FEE: - ldr r2, [sp, #0x18] - add r0, r7, #0x0 - mov r1, #0x0 - add r3, r6, #0x0 - bl FUN_02005E90 - pop {r3-r7, pc} -_02069FFC: - ldr r0, [sp, #0x20] - ldr r3, [sp, #0x18] - str r0, [sp, #0x0] - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_020056AC - pop {r3-r7, pc} - nop -_0206A010: .word 0x000001B9 - - thumb_func_start FUN_0206A014 -FUN_0206A014: ; 0x0206A014 - push {r3-r6, lr} - sub sp, #0xc - ldr r6, [sp, #0x20] - add r5, r0, #0x0 - str r6, [sp, #0x0] - ldr r6, [sp, #0x24] - add r4, r2, #0x0 - str r6, [sp, #0x4] - bl FUN_0206A054 - cmp r4, #0xe - bne _0206A050 - add r0, r5, #0x0 - mov r1, #0xa3 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0xa2 - add r2, sp, #0x8 - bl SetMonDataEncrypted - mov r0, #0x0 - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x9f - add r2, sp, #0x8 - bl SetMonDataEncrypted -_0206A050: - add sp, #0xc - pop {r3-r6, pc} - - thumb_func_start FUN_0206A054 -FUN_0206A054: ; 0x0206A054 - push {r0-r3} - push {r3-r4, lr} - sub sp, #0x4 - ldr r2, [sp, #0x24] - add r4, r0, #0x0 - str r2, [sp, #0x0] - mov r2, #0x0 - bl FUN_020808AC - ldr r2, _0206A090 ; =gGameVersion - add r0, r4, #0x0 - mov r1, #0x79 - bl SetBoxMonDataEncrypted - add r0, r4, #0x0 - mov r1, #0x9a - add r2, sp, #0x18 - bl SetBoxMonDataEncrypted - add r0, r4, #0x0 - mov r1, #0x9d - add r2, sp, #0x20 - bl SetBoxMonDataEncrypted - add sp, #0x4 - pop {r3-r4} - pop {r3} - add sp, #0x10 - bx r3 - nop -_0206A090: .word gGameVersion - - thumb_func_start FUN_0206A094 -FUN_0206A094: ; 0x0206A094 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - mov r0, #0x81 - add r7, r2, #0x0 - tst r0, r1 - bne _0206A12E - bl rand_LC - mov r1, #0x64 - bl _s32_div_f - add r4, r1, #0x0 - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - add r0, r5, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x0] - ldr r1, [sp, #0x0] - add r0, r6, #0x0 - mov r2, #0x10 - bl GetMonBaseStat_HandleFormeConversion - add r1, sp, #0x4 - strh r0, [r1, #0x2] - ldr r1, [sp, #0x0] - add r0, r6, #0x0 - mov r2, #0x11 - bl GetMonBaseStat_HandleFormeConversion - add r1, sp, #0x4 - strh r0, [r1, #0x0] - ldrh r2, [r1, #0x2] - ldrh r0, [r1, #0x0] - cmp r2, r0 - bne _0206A104 - cmp r2, #0x0 - beq _0206A104 - add r2, sp, #0x4 - add r0, r5, #0x0 - mov r1, #0x6 - add r2, #0x2 - bl SetMonDataEncrypted - add sp, #0x8 - pop {r3-r7, pc} -_0206A104: - ldr r0, _0206A134 ; =sItemOdds - lsl r1, r7, #0x2 - ldrh r0, [r0, r1] - cmp r4, r0 - blo _0206A12E - ldr r0, _0206A138 ; =sItemOdds + 2 - ldrh r0, [r0, r1] - cmp r4, r0 - add r2, sp, #0x4 - bhs _0206A126 - add r0, r5, #0x0 - mov r1, #0x6 - add r2, #0x2 - bl SetMonDataEncrypted - add sp, #0x8 - pop {r3-r7, pc} -_0206A126: - add r0, r5, #0x0 - mov r1, #0x6 - bl SetMonDataEncrypted -_0206A12E: - add sp, #0x8 - pop {r3-r7, pc} - nop -_0206A134: .word sItemOdds -_0206A138: .word sItemOdds + 2 - - thumb_func_start FUN_0206A13C -FUN_0206A13C: ; 0x0206A13C - ldr r3, _0206A140 ; =FUN_0206A144 - bx r3 - .balign 4 -_0206A140: .word FUN_0206A144 - - thumb_func_start FUN_0206A144 -FUN_0206A144: ; 0x0206A144 - push {r4-r6, lr} - add r6, r1, #0x0 - mov r1, #0xad - mov r2, #0x0 - add r5, r0, #0x0 - bl GetBoxMonDataEncrypted - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r5, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - add r1, r0, #0x0 - add r0, r4, #0x0 - add r2, r6, #0x0 - bl FUN_0206A16C - pop {r4-r6, pc} - - thumb_func_start FUN_0206A16C -FUN_0206A16C: ; 0x0206A16C - push {r4, lr} - ldr r3, _0206A1C0 ; =SPECIES_EGG - cmp r0, r3 - bne _0206A178 - mov r0, #0x0 - pop {r4, pc} -_0206A178: - cmp r2, #0x20 - bhs _0206A186 - mov r3, #0x1 - add r4, r3, #0x0 - lsl r4, r2 - mov r2, #0x1d - b _0206A1B0 -_0206A186: - cmp r2, #0x40 - bhs _0206A196 - mov r3, #0x1 - sub r2, #0x20 - add r4, r3, #0x0 - lsl r4, r2 - mov r2, #0x1e - b _0206A1B0 -_0206A196: - cmp r2, #0x60 - bhs _0206A1A6 - mov r3, #0x1 - sub r2, #0x40 - add r4, r3, #0x0 - lsl r4, r2 - mov r2, #0x1f - b _0206A1B0 -_0206A1A6: - mov r3, #0x1 - sub r2, #0x60 - add r4, r3, #0x0 - lsl r4, r2 - mov r2, #0x20 -_0206A1B0: - bl GetMonBaseStat_HandleFormeConversion - tst r0, r4 - beq _0206A1BC - mov r0, #0x1 - pop {r4, pc} -_0206A1BC: - mov r0, #0x0 - pop {r4, pc} - .balign 4 -_0206A1C0: .word SPECIES_EGG - - thumb_func_start FUN_0206A1C4 -FUN_0206A1C4: ; 0x0206A1C4 - ldr r3, _0206A1C8 ; =FUN_0206A1CC - bx r3 - .balign 4 -_0206A1C8: .word FUN_0206A1CC - - thumb_func_start FUN_0206A1CC -FUN_0206A1CC: ; 0x0206A1CC - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl TryDecryptBoxMon - add r7, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - mov r1, #0x0 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r2, r1, #0x0 - bl GetBoxMonDataEncrypted - add r6, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x18 - bl GetMonBaseStat - str r0, [sp, #0x4] - add r0, r4, #0x0 - mov r1, #0x19 - bl GetMonBaseStat - str r0, [sp, #0x0] - cmp r0, #0x0 - beq _0206A226 - mov r0, #0x1 - tst r0, r6 - beq _0206A21A - add r0, r5, #0x0 - mov r1, #0xa - add r2, sp, #0x0 - bl SetBoxMonDataEncrypted - b _0206A230 -_0206A21A: - add r0, r5, #0x0 - mov r1, #0xa - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - b _0206A230 -_0206A226: - add r0, r5, #0x0 - mov r1, #0xa - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted -_0206A230: - add r0, r5, #0x0 - add r1, r7, #0x0 - bl TryEncryptBoxMon - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_0206A23C -FUN_0206A23C: ; 0x0206A23C - push {r4-r7, lr} - sub sp, #0x1c - add r5, r0, #0x0 - mov r0, #0x0 - str r1, [sp, #0x0] - bl AllocMonZeroed - str r0, [sp, #0x4] - ldr r1, [sp, #0x4] - add r0, r5, #0x0 - bl FUN_02069B88 - ldr r0, [sp, #0x4] - ldr r1, [r5, #0x0] - mov r2, #0x0 - bl GetSubstruct - add r4, r0, #0x0 - ldr r0, [sp, #0x4] - ldr r1, [r5, #0x0] - mov r2, #0x1 - bl GetSubstruct - add r6, r0, #0x0 - ldr r0, [sp, #0x4] - ldr r1, [r5, #0x0] - mov r2, #0x2 - bl GetSubstruct - add r7, r0, #0x0 - ldr r0, [sp, #0x4] - ldr r1, [r5, #0x0] - mov r2, #0x3 - bl GetSubstruct - str r0, [sp, #0x8] - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - mov r2, #0x0 - bl GetSubstruct - str r0, [sp, #0xc] - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - mov r2, #0x1 - bl GetSubstruct - str r0, [sp, #0x10] - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - mov r2, #0x2 - bl GetSubstruct - str r0, [sp, #0x14] - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - mov r2, #0x3 - bl GetSubstruct - ldr r2, [sp, #0x4] - str r0, [sp, #0x18] - ldr r0, [sp, #0x4] - ldrh r2, [r2, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonDecryptSegment - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - ldr r0, [sp, #0x0] - str r0, [r5, #0x0] - ldr r2, [sp, #0xc] - ldmia r4!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0xc] - ldmia r4!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0xc] - ldmia r4!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0xc] - ldmia r4!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0xc] - ldr r2, [sp, #0x10] - ldmia r6!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x10] - ldmia r6!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x10] - ldmia r6!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x10] - ldmia r6!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x10] - ldr r2, [sp, #0x14] - ldmia r7!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x14] - ldmia r7!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x14] - ldmia r7!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x14] - ldmia r7!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x14] - mov r0, #0x10 -_0206A32E: - ldr r1, [sp, #0x8] - ldrh r2, [r1, #0x0] - add r1, r1, #0x2 - str r1, [sp, #0x8] - ldr r1, [sp, #0x18] - strh r2, [r1, #0x0] - add r1, r1, #0x2 - str r1, [sp, #0x18] - sub r0, r0, #0x1 - bne _0206A32E - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - strh r0, [r5, #0x6] - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonEncryptSegment - ldr r0, [sp, #0x4] - bl FreeToHeap - add sp, #0x1c - pop {r4-r7, pc} - - thumb_func_start LoadMonPersonal -LoadMonPersonal: ; 0x0206A370 - ldr r3, _0206A37C ; =ReadWholeNarcMemberByIdPair - add r2, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x2 ; NARC_POKETOOL_PERSONAL_PERSONAL - bx r3 - nop -_0206A37C: .word ReadWholeNarcMemberByIdPair - - thumb_func_start LoadMonBaseStats_HandleAlternateForme -LoadMonBaseStats_HandleAlternateForme: ; 0x0206A380 - push {r4, lr} - add r4, r2, #0x0 - bl ResolveMonForme - add r2, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x2 ; NARC_POKETOOL_PERSONAL_PERSONAL - bl ReadWholeNarcMemberByIdPair - pop {r4, pc} - - thumb_func_start LoadMonEvolutionTable -LoadMonEvolutionTable: ; 0x0206A394 - ldr r3, _0206A3A0 ; =ReadWholeNarcMemberByIdPair - add r2, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x22 ; NARC_POKETOOL_PERSONAL_EVO - bx r3 - nop -_0206A3A0: .word ReadWholeNarcMemberByIdPair - - thumb_func_start MonEncryptSegment -MonEncryptSegment: ; 0x0206A3A4 - push {r0-r3} - push {r3-r7, lr} - add r5, r0, #0x0 - mov r4, #0x0 - lsr r6, r1, #0x1 - beq _0206A3C6 - add r7, sp, #0x20 -_0206A3B2: - add r0, r7, #0x0 - bl MonEncryptionLCRNG - ldrh r1, [r5, #0x0] - add r4, r4, #0x1 - eor r0, r1 - strh r0, [r5, #0x0] - add r5, r5, #0x2 - cmp r4, r6 - blo _0206A3B2 -_0206A3C6: - pop {r3-r7} - pop {r3} - add sp, #0x10 - bx r3 - .balign 4 - - thumb_func_start MonDecryptSegment -MonDecryptSegment: ; 0x0206A3D0 - ldr r3, _0206A3D4 ; =MonEncryptSegment - bx r3 - .balign 4 -_0206A3D4: .word MonEncryptSegment - - thumb_func_start MonEncryptionLCRNG -MonEncryptionLCRNG: ; 0x0206A3D8 - ldr r2, [r0, #0x0] - ldr r1, _0206A3F0 ; =0x41C64E6D - add r3, r2, #0x0 - mul r3, r1 - ldr r1, _0206A3F4 ; =0x00006073 - add r1, r3, r1 - str r1, [r0, #0x0] - lsr r0, r1, #0x10 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bx lr - nop -_0206A3F0: .word 0x41C64E6D -_0206A3F4: .word 0x00006073 - - thumb_func_start CalcMonChecksum -CalcMonChecksum: ; 0x0206A3F8 - push {r3-r4} - mov r3, #0x0 - add r2, r3, #0x0 - lsr r4, r1, #0x1 - beq _0206A412 -_0206A402: - ldrh r1, [r0, #0x0] - add r2, r2, #0x1 - add r0, r0, #0x2 - add r1, r3, r1 - lsl r1, r1, #0x10 - lsr r3, r1, #0x10 - cmp r2, r4 - blo _0206A402 -_0206A412: - add r0, r3, #0x0 - pop {r3-r4} - bx lr - - thumb_func_start GetSubstruct -GetSubstruct: ; 0x0206A418 - push {r3, lr} - mov r3, #0x3e - lsl r3, r3, #0xc - and r3, r1 - lsr r3, r3, #0xd - cmp r3, #0x1f - bhi _0206A478 - add r3, r3, r3 - add r3, pc - ldrh r3, [r3, #0x6] - lsl r3, r3, #0x10 - asr r3, r3, #0x10 - add pc, r3 -_0206A432: ; jump table (using 16-bit offset) - .short _0206A472 - _0206A432 - 2; case 0 - .short _0206A4A4 - _0206A432 - 2; case 1 - .short _0206A4D4 - _0206A432 - 2; case 2 - .short _0206A504 - _0206A432 - 2; case 3 - .short _0206A534 - _0206A432 - 2; case 4 - .short _0206A564 - _0206A432 - 2; case 5 - .short _0206A594 - _0206A432 - 2; case 6 - .short _0206A5C6 - _0206A432 - 2; case 7 - .short _0206A5F6 - _0206A432 - 2; case 8 - .short _0206A626 - _0206A432 - 2; case 9 - .short _0206A656 - _0206A432 - 2; case 10 - .short _0206A686 - _0206A432 - 2; case 11 - .short _0206A6B6 - _0206A432 - 2; case 12 - .short _0206A6E8 - _0206A432 - 2; case 13 - .short _0206A718 - _0206A432 - 2; case 14 - .short _0206A748 - _0206A432 - 2; case 15 - .short _0206A778 - _0206A432 - 2; case 16 - .short _0206A7A8 - _0206A432 - 2; case 17 - .short _0206A7D8 - _0206A432 - 2; case 18 - .short _0206A80A - _0206A432 - 2; case 19 - .short _0206A83A - _0206A432 - 2; case 20 - .short _0206A86A - _0206A432 - 2; case 21 - .short _0206A89A - _0206A432 - 2; case 22 - .short _0206A8CA - _0206A432 - 2; case 23 - .short _0206A472 - _0206A432 - 2; case 24 - .short _0206A4A4 - _0206A432 - 2; case 25 - .short _0206A4D4 - _0206A432 - 2; case 26 - .short _0206A504 - _0206A432 - 2; case 27 - .short _0206A534 - _0206A432 - 2; case 28 - .short _0206A564 - _0206A432 - 2; case 29 - .short _0206A594 - _0206A432 - 2; case 30 - .short _0206A5C6 - _0206A432 - 2; case 31 -_0206A472: - add r0, #0x8 - cmp r2, #0x3 - bls _0206A47A -_0206A478: - b _0206A8F8 -_0206A47A: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A486: ; jump table (using 16-bit offset) - .short _0206A48E - _0206A486 - 2; case 0 - .short _0206A492 - _0206A486 - 2; case 1 - .short _0206A498 - _0206A486 - 2; case 2 - .short _0206A49E - _0206A486 - 2; case 3 -_0206A48E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A492: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A498: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A49E: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A4A4: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A59A - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A4B6: ; jump table (using 16-bit offset) - .short _0206A4BE - _0206A4B6 - 2; case 0 - .short _0206A4C2 - _0206A4B6 - 2; case 1 - .short _0206A4C8 - _0206A4B6 - 2; case 2 - .short _0206A4CE - _0206A4B6 - 2; case 3 -_0206A4BE: - add r1, r0, #0x0 - b _0206A8F8 -_0206A4C2: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A4C8: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A4CE: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A4D4: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A59A - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A4E6: ; jump table (using 16-bit offset) - .short _0206A4EE - _0206A4E6 - 2; case 0 - .short _0206A4F2 - _0206A4E6 - 2; case 1 - .short _0206A4F8 - _0206A4E6 - 2; case 2 - .short _0206A4FE - _0206A4E6 - 2; case 3 -_0206A4EE: - add r1, r0, #0x0 - b _0206A8F8 -_0206A4F2: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A4F8: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A4FE: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A504: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A59A - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A516: ; jump table (using 16-bit offset) - .short _0206A51E - _0206A516 - 2; case 0 - .short _0206A522 - _0206A516 - 2; case 1 - .short _0206A528 - _0206A516 - 2; case 2 - .short _0206A52E - _0206A516 - 2; case 3 -_0206A51E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A522: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A528: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A52E: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A534: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A59A - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A546: ; jump table (using 16-bit offset) - .short _0206A54E - _0206A546 - 2; case 0 - .short _0206A552 - _0206A546 - 2; case 1 - .short _0206A558 - _0206A546 - 2; case 2 - .short _0206A55E - _0206A546 - 2; case 3 -_0206A54E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A552: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A558: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A55E: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A564: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A59A - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A576: ; jump table (using 16-bit offset) - .short _0206A57E - _0206A576 - 2; case 0 - .short _0206A582 - _0206A576 - 2; case 1 - .short _0206A588 - _0206A576 - 2; case 2 - .short _0206A58E - _0206A576 - 2; case 3 -_0206A57E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A582: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A588: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A58E: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A594: - add r0, #0x8 - cmp r2, #0x3 - bls _0206A59C -_0206A59A: - b _0206A8F8 -_0206A59C: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A5A8: ; jump table (using 16-bit offset) - .short _0206A5B0 - _0206A5A8 - 2; case 0 - .short _0206A5B6 - _0206A5A8 - 2; case 1 - .short _0206A5BA - _0206A5A8 - 2; case 2 - .short _0206A5C0 - _0206A5A8 - 2; case 3 -_0206A5B0: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A5B6: - add r1, r0, #0x0 - b _0206A8F8 -_0206A5BA: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A5C0: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A5C6: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A6BC - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A5D8: ; jump table (using 16-bit offset) - .short _0206A5E0 - _0206A5D8 - 2; case 0 - .short _0206A5E6 - _0206A5D8 - 2; case 1 - .short _0206A5EA - _0206A5D8 - 2; case 2 - .short _0206A5F0 - _0206A5D8 - 2; case 3 -_0206A5E0: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A5E6: - add r1, r0, #0x0 - b _0206A8F8 -_0206A5EA: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A5F0: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A5F6: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A6BC - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A608: ; jump table (using 16-bit offset) - .short _0206A610 - _0206A608 - 2; case 0 - .short _0206A616 - _0206A608 - 2; case 1 - .short _0206A61A - _0206A608 - 2; case 2 - .short _0206A620 - _0206A608 - 2; case 3 -_0206A610: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A616: - add r1, r0, #0x0 - b _0206A8F8 -_0206A61A: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A620: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A626: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A6BC - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A638: ; jump table (using 16-bit offset) - .short _0206A640 - _0206A638 - 2; case 0 - .short _0206A646 - _0206A638 - 2; case 1 - .short _0206A64A - _0206A638 - 2; case 2 - .short _0206A650 - _0206A638 - 2; case 3 -_0206A640: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A646: - add r1, r0, #0x0 - b _0206A8F8 -_0206A64A: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A650: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A656: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A6BC - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A668: ; jump table (using 16-bit offset) - .short _0206A670 - _0206A668 - 2; case 0 - .short _0206A676 - _0206A668 - 2; case 1 - .short _0206A67A - _0206A668 - 2; case 2 - .short _0206A680 - _0206A668 - 2; case 3 -_0206A670: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A676: - add r1, r0, #0x0 - b _0206A8F8 -_0206A67A: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A680: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A686: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A6BC - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A698: ; jump table (using 16-bit offset) - .short _0206A6A0 - _0206A698 - 2; case 0 - .short _0206A6A6 - _0206A698 - 2; case 1 - .short _0206A6AA - _0206A698 - 2; case 2 - .short _0206A6B0 - _0206A698 - 2; case 3 -_0206A6A0: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A6A6: - add r1, r0, #0x0 - b _0206A8F8 -_0206A6AA: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A6B0: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A6B6: - add r0, #0x8 - cmp r2, #0x3 - bls _0206A6BE -_0206A6BC: - b _0206A8F8 -_0206A6BE: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A6CA: ; jump table (using 16-bit offset) - .short _0206A6D2 - _0206A6CA - 2; case 0 - .short _0206A6D8 - _0206A6CA - 2; case 1 - .short _0206A6DE - _0206A6CA - 2; case 2 - .short _0206A6E2 - _0206A6CA - 2; case 3 -_0206A6D2: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A6D8: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A6DE: - add r1, r0, #0x0 - b _0206A8F8 -_0206A6E2: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A6E8: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A7DE - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A6FA: ; jump table (using 16-bit offset) - .short _0206A702 - _0206A6FA - 2; case 0 - .short _0206A708 - _0206A6FA - 2; case 1 - .short _0206A70E - _0206A6FA - 2; case 2 - .short _0206A712 - _0206A6FA - 2; case 3 -_0206A702: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A708: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A70E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A712: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A718: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A7DE - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A72A: ; jump table (using 16-bit offset) - .short _0206A732 - _0206A72A - 2; case 0 - .short _0206A738 - _0206A72A - 2; case 1 - .short _0206A73E - _0206A72A - 2; case 2 - .short _0206A742 - _0206A72A - 2; case 3 -_0206A732: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A738: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A73E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A742: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A748: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A7DE - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A75A: ; jump table (using 16-bit offset) - .short _0206A762 - _0206A75A - 2; case 0 - .short _0206A768 - _0206A75A - 2; case 1 - .short _0206A76E - _0206A75A - 2; case 2 - .short _0206A772 - _0206A75A - 2; case 3 -_0206A762: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A768: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A76E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A772: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A778: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A7DE - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A78A: ; jump table (using 16-bit offset) - .short _0206A792 - _0206A78A - 2; case 0 - .short _0206A798 - _0206A78A - 2; case 1 - .short _0206A79E - _0206A78A - 2; case 2 - .short _0206A7A2 - _0206A78A - 2; case 3 -_0206A792: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A798: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A79E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A7A2: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A7A8: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A7DE - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A7BA: ; jump table (using 16-bit offset) - .short _0206A7C2 - _0206A7BA - 2; case 0 - .short _0206A7C8 - _0206A7BA - 2; case 1 - .short _0206A7CE - _0206A7BA - 2; case 2 - .short _0206A7D2 - _0206A7BA - 2; case 3 -_0206A7C2: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A7C8: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A7CE: - add r1, r0, #0x0 - b _0206A8F8 -_0206A7D2: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A7D8: - add r0, #0x8 - cmp r2, #0x3 - bls _0206A7E0 -_0206A7DE: - b _0206A8F8 -_0206A7E0: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A7EC: ; jump table (using 16-bit offset) - .short _0206A7F4 - _0206A7EC - 2; case 0 - .short _0206A7FA - _0206A7EC - 2; case 1 - .short _0206A800 - _0206A7EC - 2; case 2 - .short _0206A806 - _0206A7EC - 2; case 3 -_0206A7F4: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A7FA: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A800: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A806: - add r1, r0, #0x0 - b _0206A8F8 -_0206A80A: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A8F8 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A81C: ; jump table (using 16-bit offset) - .short _0206A824 - _0206A81C - 2; case 0 - .short _0206A82A - _0206A81C - 2; case 1 - .short _0206A830 - _0206A81C - 2; case 2 - .short _0206A836 - _0206A81C - 2; case 3 -_0206A824: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A82A: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A830: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A836: - add r1, r0, #0x0 - b _0206A8F8 -_0206A83A: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A8F8 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A84C: ; jump table (using 16-bit offset) - .short _0206A854 - _0206A84C - 2; case 0 - .short _0206A85A - _0206A84C - 2; case 1 - .short _0206A860 - _0206A84C - 2; case 2 - .short _0206A866 - _0206A84C - 2; case 3 -_0206A854: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A85A: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A860: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A866: - add r1, r0, #0x0 - b _0206A8F8 -_0206A86A: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A8F8 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A87C: ; jump table (using 16-bit offset) - .short _0206A884 - _0206A87C - 2; case 0 - .short _0206A88A - _0206A87C - 2; case 1 - .short _0206A890 - _0206A87C - 2; case 2 - .short _0206A896 - _0206A87C - 2; case 3 -_0206A884: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A88A: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A890: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A896: - add r1, r0, #0x0 - b _0206A8F8 -_0206A89A: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A8F8 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A8AC: ; jump table (using 16-bit offset) - .short _0206A8B4 - _0206A8AC - 2; case 0 - .short _0206A8BA - _0206A8AC - 2; case 1 - .short _0206A8C0 - _0206A8AC - 2; case 2 - .short _0206A8C6 - _0206A8AC - 2; case 3 -_0206A8B4: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A8BA: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A8C0: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A8C6: - add r1, r0, #0x0 - b _0206A8F8 -_0206A8CA: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A8F8 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A8DC: ; jump table (using 16-bit offset) - .short _0206A8E4 - _0206A8DC - 2; case 0 - .short _0206A8EA - _0206A8DC - 2; case 1 - .short _0206A8F0 - _0206A8DC - 2; case 2 - .short _0206A8F6 - _0206A8DC - 2; case 3 -_0206A8E4: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A8EA: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A8F0: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A8F6: - add r1, r0, #0x0 -_0206A8F8: - add r0, r1, #0x0 - pop {r3, pc} - - thumb_func_start ResolveMonForme -ResolveMonForme: ; 0x0206A8FC - ldr r3, _0206A928 ; =SPECIES_DEOXYS - cmp r0, r3 - beq _0206A90C - add r2, r3, #0x0 - add r2, #SPECIES_WORMADAM-SPECIES_DEOXYS - cmp r0, r2 - beq _0206A91A - bx lr -_0206A90C: - cmp r1, #0x0 - beq _0206A926 - cmp r1, #0x3 - bgt _0206A926 - add r3, #SPECIES_DEOXYS_ATK-SPECIES_DEOXYS-1 - add r0, r1, r3 - bx lr -_0206A91A: - cmp r1, #0x0 - beq _0206A926 - cmp r1, #0x2 - bgt _0206A926 - add r3, #SPECIES_WORMADAM_SANDY-SPECIES_DEOXYS-1 - add r0, r1, r3 -_0206A926: - bx lr - .balign 4 -_0206A928: .word SPECIES_DEOXYS - - thumb_func_start MaskOfFlagNo -MaskOfFlagNo: ; 0x0206A92C - push {r3-r5, lr} - add r5, r0, #0x0 - mov r4, #0x1 - cmp r5, #0x20 - blt _0206A93A - bl ErrorHandling -_0206A93A: - mov r0, #0x0 - cmp r5, #0x0 - ble _0206A948 -_0206A940: - add r0, r0, #0x1 - lsl r4, r4, #0x1 - cmp r0, r5 - blt _0206A940 -_0206A948: - add r0, r4, #0x0 - pop {r3-r5, pc} - - thumb_func_start LowestFlagNo -LowestFlagNo: ; 0x0206A94C - mov r3, #0x1 - mov r2, #0x0 -_0206A950: - add r1, r0, #0x0 - tst r1, r3 - bne _0206A95E - add r2, r2, #0x1 - lsl r3, r3, #0x1 - cmp r2, #0x20 - blt _0206A950 -_0206A95E: - add r0, r2, #0x0 - bx lr - .balign 4 - - thumb_func_start IsPokemonLegendaryOrMythical -IsPokemonLegendaryOrMythical: ; 0x0206A964 - ldr r3, _0206A980 ; =sLegendaryMonsList - mov r2, #0x0 -_0206A968: - ldrh r1, [r3, #0x0] - cmp r0, r1 - bne _0206A972 - mov r0, #0x1 - bx lr -_0206A972: - add r2, r2, #0x1 - add r3, r3, #0x2 - cmp r2, #0x12 - blo _0206A968 - mov r0, #0x0 - bx lr - nop -_0206A980: .word sLegendaryMonsList - - thumb_func_start GetLegendaryMon -GetLegendaryMon: ; 0x0206A984 - cmp r0, #0x12 - blo _0206A98A - mov r0, #0x0 -_0206A98A: - lsl r1, r0, #0x1 - ldr r0, _0206A994 ; =sLegendaryMonsList - ldrh r0, [r0, r1] - bx lr - nop -_0206A994: .word sLegendaryMonsList - - thumb_func_start FUN_0206A998 -FUN_0206A998: ; 0x0206A998 - push {r3, lr} - mov r1, #0x5 - mov r2, #0x0 - bl GetMonDataEncrypted - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl IsPokemonLegendaryOrMythical - pop {r3, pc} - - thumb_func_start FUN_0206A9AC -FUN_0206A9AC: ; 0x0206A9AC - push {r3-r7, lr} - sub sp, #0x10 - add r4, r1, #0x0 - add r5, r0, #0x0 - add r0, r4, #0x0 - add r6, r2, #0x0 - bl FUN_020239BC - str r0, [sp, #0x0] - add r0, r5, #0x0 - mov r1, #0x7 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_020239CC - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x9c - mov r2, #0x0 - bl GetBoxMonDataEncrypted - str r0, [sp, #0xc] - add r0, r4, #0x0 - add r1, r6, #0x0 - bl FUN_020239A0 - add r7, r0, #0x0 - mov r0, #0x8 - add r1, r6, #0x0 - bl FUN_020219F4 - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x90 - add r2, r6, #0x0 - mov r4, #0x0 - bl GetBoxMonDataEncrypted - ldr r1, [sp, #0x0] - ldr r0, [sp, #0x4] - cmp r1, r0 - bne _0206AA1C - ldr r1, [sp, #0x8] - ldr r0, [sp, #0xc] - cmp r1, r0 - bne _0206AA1C - add r0, r7, #0x0 - add r1, r6, #0x0 - bl FUN_02021CE0 - cmp r0, #0x0 - bne _0206AA1C - mov r4, #0x1 -_0206AA1C: - add r0, r6, #0x0 - bl FUN_02021A20 - add r0, r7, #0x0 - bl FUN_02021A20 - add r0, r4, #0x0 - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0206AA30 -FUN_0206AA30: ; 0x0206AA30 - push {r3, lr} - cmp r0, #0x3f - bgt _0206AA48 - bge _0206AA6C - cmp r0, #0x1 - bgt _0206AA74 - cmp r0, #0x0 - blt _0206AA74 - beq _0206AA82 - cmp r0, #0x1 - beq _0206AA82 - b _0206AA74 -_0206AA48: - cmp r0, #0x5a - bgt _0206AA50 - beq _0206AA70 - b _0206AA74 -_0206AA50: - add r1, r0, #0x0 - sub r1, #0x5b - cmp r1, #0x3 - bhi _0206AA74 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0206AA64: ; jump table (using 16-bit offset) - .short _0206AA70 - _0206AA64 - 2; case 0 - .short _0206AA70 - _0206AA64 - 2; case 1 - .short _0206AA70 - _0206AA64 - 2; case 2 - .short _0206AA70 - _0206AA64 - 2; case 3 -_0206AA6C: - mov r0, #0x2 - pop {r3, pc} -_0206AA70: - sub r0, #0x57 - pop {r3, pc} -_0206AA74: - bl FUN_0206AE00 - cmp r0, #0x1 - bne _0206AA80 - mov r0, #0x1 - pop {r3, pc} -_0206AA80: - mov r0, #0x0 -_0206AA82: - pop {r3, pc} - - thumb_func_start FUN_0206AA84 -FUN_0206AA84: ; 0x0206AA84 - push {r3-r4, lr} - sub sp, #0x1c - add r4, r0, #0x0 - mov r0, #0x0 - add r1, sp, #0x0 - strb r0, [r1, #0x0] - add r1, sp, #0x0 - add r1, #0x1 - mov r2, #0x18 - bl MIi_CpuClearFast - add r0, r4, #0x0 - mov r1, #0xa1 - add r2, sp, #0x0 - bl SetMonDataEncrypted - add r2, sp, #0x0 - add r0, r4, #0x0 - mov r1, #0xaa - add r2, #0x1 - bl SetMonDataEncrypted - add sp, #0x1c - pop {r3-r4, pc} - - thumb_func_start FUN_0206AAB4 -FUN_0206AAB4: ; 0x0206AAB4 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl TryDecryptBoxMon - mov r4, #0x0 - str r0, [sp, #0x0] - add r7, r4, #0x0 - add r6, sp, #0x4 -_0206AAC6: - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x36 - add r2, r7, #0x0 - bl GetBoxMonDataEncrypted - cmp r0, #0x0 - beq _0206AAF0 - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x42 - mov r2, #0x0 - bl GetBoxMonDataEncrypted - add r1, r4, #0x0 - strb r0, [r6, #0x0] - add r0, r5, #0x0 - add r1, #0x3a - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted -_0206AAF0: - add r4, r4, #0x1 - cmp r4, #0x4 - blt _0206AAC6 - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - bl TryEncryptBoxMon - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s new file mode 100644 index 00000000..2395e7f1 --- /dev/null +++ b/arm9/asm/pokemon_s.s @@ -0,0 +1,8959 @@ + .include "asm/macros.inc" + .include "global.inc" + .include "constants/species.h" + + .extern gGameLanguage + .extern gGameVersion + + .section .rodata + + .global sItemOdds +sItemOdds: ; 0x020F7ECC + .short 0x002D, 0x005F + .short 0x0014, 0x0050 + + .global sFriendshipModTable +sFriendshipModTable: ; 0x020F7ED4 + .byte 5, 3, 2 + .byte 5, 3, 2 + .byte 1, 1, 0 + .byte 3, 2, 1 + .byte 1, 1, 0 + .byte 1, 1, 1 + .byte -1, -1, -1 + .byte -5, -5, -10 + .byte -5, -5, -10 + .byte 3, 2, 1 + + .global sLegendaryMonsList +sLegendaryMonsList: ; 0x020F7EF2 + .short SPECIES_MEWTWO + .short SPECIES_MEW + .short SPECIES_HO_OH + .short SPECIES_LUGIA + .short SPECIES_CELEBI + .short SPECIES_KYOGRE + .short SPECIES_GROUDON + .short SPECIES_RAYQUAZA + .short SPECIES_JIRACHI + .short SPECIES_DEOXYS + .short SPECIES_DIALGA + .short SPECIES_PALKIA + .short SPECIES_GIRATINA + .short SPECIES_PHIONE + .short SPECIES_MANAPHY + .short SPECIES_DARKRAI + .short SPECIES_SHAYMIN + .short SPECIES_ARCEUS + + .global UNK_020F7F16 +UNK_020F7F16: ; 0x020F7F16 + .byte 0, 0, 0, 0, 0 + .byte 1, 0, 0, 0, -1 + .byte 1, 0, -1, 0, 0 + .byte 1, -1, 0, 0, 0 + .byte 1, 0, 0, -1, 0 + .byte -1, 0, 0, 0, 1 + .byte 0, 0, 0, 0, 0 + .byte 0, 0, -1, 0, 1 + .byte 0, -1, 0, 0, 1 + .byte 0, 0, 0, -1, 1 + .byte -1, 0, 1, 0, 0 + .byte 0, 0, 1, 0, -1 + .byte 0, 0, 0, 0, 0 + .byte 0, -1, 1, 0, 0 + .byte 0, 0, 1, -1, 0 + .byte -1, 1, 0, 0, 0 + .byte 0, 1, 0, 0, -1 + .byte 0, 1, -1, 0, 0 + .byte 0, 0, 0, 0, 0 + .byte 0, 1, 0, -1, 0 + .byte -1, 0, 0, 1, 0 + .byte 0, 0, 0, 1, -1 + .byte 0, 0, -1, 1, 0 + .byte 0, -1, 0, 1, 0 + .byte 0, 0, 0, 0, 0 + + .global sNatureStatMods +sNatureStatMods: ; 0x020F7F93 + .byte 0, 0, 0, 0, 0 + .byte 1, -1, 0, 0, 0 + .byte 1, 0, -1, 0, 0 + .byte 1, 0, 0, -1, 0 + .byte 1, 0, 0, 0, -1 + .byte -1, 1, 0, 0, 0 + .byte 0, 0, 0, 0, 0 + .byte 0, 1, -1, 0, 0 + .byte 0, 1, 0, -1, 0 + .byte 0, 1, 0, 0, -1 + .byte -1, 0, 1, 0, 0 + .byte 0, -1, 1, 0, 0 + .byte 0, 0, 0, 0, 0 + .byte 0, 0, 1, -1, 0 + .byte 0, 0, 1, 0, -1 + .byte -1, 0, 0, 1, 0 + .byte 0, -1, 0, 1, 0 + .byte 0, 0, -1, 1, 0 + .byte 0, 0, 0, 0, 0 + .byte 0, 0, 0, 1, -1 + .byte -1, 0, 0, 0, 1 + .byte 0, -1, 0, 0, 1 + .byte 0, 0, -1, 0, 1 + .byte 0, 0, 0, -1, 1 + .byte 0, 0, 0, 0, 0 + + .section .data + + .global __local_str_poketool_personal_pms_narc +__local_str_poketool_personal_pms_narc: ; 0x02105FC8 + .asciz "poketool/personal/pms.narc" + + .section .bss + + .global UNK_021C5AC0 +UNK_021C5AC0: ; 0x021C5AC0 + .space 0x194 + + .text + + thumb_func_start TryEncryptMon +TryEncryptMon: ; 0x02066A20 + push {r3-r5, lr} + add r5, r0, #0x0 + ldrh r2, [r5, #0x4] + mov r4, #0x0 + lsl r0, r2, #0x1f + lsr r0, r0, #0x1f + cmp r0, #0x1 + bne _02066A68 + cmp r1, #0x1 + bne _02066A68 + mov r0, #0x1 + bic r2, r0 + strh r2, [r5, #0x4] + ldrh r1, [r5, #0x4] + mov r0, #0x2 + mov r4, #0x1 + bic r1, r0 + strh r1, [r5, #0x4] + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl MonEncryptSegment + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl CalcMonChecksum + strh r0, [r5, #0x6] + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl MonEncryptSegment +_02066A68: + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start TryDecryptBoxMon +TryDecryptBoxMon: ; 0x02066A6C + push {r4, lr} + add r2, r0, #0x0 + ldrh r1, [r2, #0x4] + mov r4, #0x0 + lsl r0, r1, #0x1e + lsr r0, r0, #0x1f + bne _02066A8E + mov r0, #0x2 + orr r0, r1 + strh r0, [r2, #0x4] + add r0, r2, #0x0 + ldrh r2, [r2, #0x6] + add r0, #0x8 + mov r1, #0x80 + mov r4, #0x1 + bl MonDecryptSegment +_02066A8E: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start TryEncryptBoxMon +TryEncryptBoxMon: ; 0x02066A94 + push {r3-r5, lr} + add r5, r0, #0x0 + ldrh r2, [r5, #0x4] + mov r4, #0x0 + lsl r0, r2, #0x1e + lsr r0, r0, #0x1f + cmp r0, #0x1 + bne _02066AC8 + cmp r1, #0x1 + bne _02066AC8 + mov r0, #0x2 + bic r2, r0 + add r0, r5, #0x0 + strh r2, [r5, #0x4] + add r0, #0x8 + mov r1, #0x80 + mov r4, #0x1 + bl CalcMonChecksum + strh r0, [r5, #0x6] + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl MonEncryptSegment +_02066AC8: + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start CreateMon +CreateMon: ; 0x02066ACC + push {r0-r3} + push {r3-r6, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r3, #0x0 + bl ZeroMonData + ldr r0, [sp, #0x50] + add r1, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x54] + add r3, r6, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x58] + str r0, [sp, #0x8] + ldr r0, [sp, #0x5c] + str r0, [sp, #0xc] + ldr r2, [sp, #0x48] + add r0, r5, #0x0 + bl CreateBoxMon + add r0, r5, #0x0 + add r0, #0x88 + mov r1, #0x64 + mov r2, #0x0 + bl MonEncryptSegment + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl MonEncryptSegment + add r0, r5, #0x0 + mov r1, #0xa0 + add r2, sp, #0x48 + bl SetMonDataEncrypted + mov r0, #0x0 + bl CreateNewSealsObject + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xa9 + add r2, r4, #0x0 + bl SetMonDataEncrypted + add r0, r4, #0x0 + bl FreeToHeap + mov r0, #0x0 + str r0, [sp, #0x10] + add r0, r5, #0x0 + mov r1, #0xa1 + add r2, sp, #0x10 + bl SetMonDataEncrypted + mov r0, #0x0 + add r1, sp, #0x14 + mov r2, #0x18 + bl MIi_CpuClearFast + add r0, r5, #0x0 + mov r1, #0xaa + add r2, sp, #0x14 + bl SetMonDataEncrypted + add r0, r5, #0x0 + bl UpdateMonLevelAndRecalcStats + add sp, #0x2c + pop {r3-r6} + pop {r3} + add sp, #0x10 + bx r3 + + thumb_func_start CreateBoxMon +CreateBoxMon: ; 0x02066B64 + push {r0-r3} + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl ZeroBoxMonData + add r0, r5, #0x0 + bl TryDecryptBoxMon + str r0, [sp, #0x0] + ldr r0, [sp, #0x30] + cmp r0, #0x0 + bne _02066B8E + bl rand_LC + add r4, r0, #0x0 + bl rand_LC + lsl r0, r0, #0x10 + orr r0, r4 + str r0, [sp, #0x34] +_02066B8E: + add r0, r5, #0x0 + mov r1, #0x0 + add r2, sp, #0x34 + bl SetBoxMonDataEncrypted + // If otIdType == 2, generate a random OT ID that prevents shininess + ldr r0, [sp, #0x38] + cmp r0, #0x2 + bne _02066BD6 + ldr r7, _02066D84 ; =0xFFFF0000 + add r6, r7, #0x0 +_02066BA2: + bl rand_LC + add r4, r0, #0x0 + bl rand_LC + ldr r1, [sp, #0x34] + lsl r0, r0, #0x10 + add r3, r4, #0x0 + orr r3, r0 + lsl r0, r1, #0x10 + lsr r2, r0, #0x10 + add r0, r1, #0x0 + and r0, r7 + lsr r1, r0, #0x10 + add r0, r3, #0x0 + str r3, [sp, #0x3c] + and r0, r6 + lsl r3, r3, #0x10 + lsr r0, r0, #0x10 + lsr r3, r3, #0x10 + eor r0, r3 + eor r0, r1 + eor r0, r2 + cmp r0, #0x8 + blo _02066BA2 + b _02066BDE +_02066BD6: + cmp r0, #0x1 + beq _02066BDE + mov r0, #0x0 + str r0, [sp, #0x3c] +_02066BDE: + add r0, r5, #0x0 + mov r1, #0x7 + add r2, sp, #0x3c + bl SetBoxMonDataEncrypted + ldr r2, _02066D88 ; =gGameLanguage + add r0, r5, #0x0 + mov r1, #0xc + bl SetBoxMonDataEncrypted + add r0, r5, #0x0 + mov r1, #0x5 + add r2, sp, #0x24 + bl SetBoxMonDataEncrypted + add r0, r5, #0x0 + mov r1, #0xb2 + mov r2, #0x0 + bl SetBoxMonDataEncrypted + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x28] + bl GetMonExpBySpeciesAndLevel + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x8 + add r2, sp, #0x8 + bl SetBoxMonDataEncrypted + ldr r0, [sp, #0x24] + mov r1, #0x14 + bl GetMonBaseStat + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x9 + add r2, sp, #0x8 + bl SetBoxMonDataEncrypted + add r0, r5, #0x0 + mov r1, #0x9b + add r2, sp, #0x28 + bl SetBoxMonDataEncrypted + ldr r2, _02066D8C ; =gGameVersion + add r0, r5, #0x0 + mov r1, #0x79 + bl SetBoxMonDataEncrypted + mov r0, #0x4 + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x9a + add r2, sp, #0x8 + bl SetBoxMonDataEncrypted + ldr r0, [sp, #0x2c] + cmp r0, #0x20 + bge _02066C94 + add r0, r5, #0x0 + mov r1, #0x46 + add r2, sp, #0x2c + bl SetBoxMonDataEncrypted + add r0, r5, #0x0 + mov r1, #0x47 + add r2, sp, #0x2c + bl SetBoxMonDataEncrypted + add r0, r5, #0x0 + mov r1, #0x48 + add r2, sp, #0x2c + bl SetBoxMonDataEncrypted + add r0, r5, #0x0 + mov r1, #0x49 + add r2, sp, #0x2c + bl SetBoxMonDataEncrypted + add r0, r5, #0x0 + mov r1, #0x4a + add r2, sp, #0x2c + bl SetBoxMonDataEncrypted + add r0, r5, #0x0 + mov r1, #0x4b + add r2, sp, #0x2c + bl SetBoxMonDataEncrypted + b _02066D18 +_02066C94: + bl rand_LC + mov r1, #0x1f + str r0, [sp, #0x8] + and r0, r1 + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x46 + add r2, sp, #0x4 + bl SetBoxMonDataEncrypted + mov r0, #0x3e + ldr r1, [sp, #0x8] + lsl r0, r0, #0x4 + and r0, r1 + lsr r0, r0, #0x5 + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x47 + add r2, sp, #0x4 + bl SetBoxMonDataEncrypted + mov r0, #0x1f + ldr r1, [sp, #0x8] + lsl r0, r0, #0xa + and r0, r1 + lsr r0, r0, #0xa + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x48 + add r2, sp, #0x4 + bl SetBoxMonDataEncrypted + bl rand_LC + mov r1, #0x1f + str r0, [sp, #0x8] + and r0, r1 + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x49 + add r2, sp, #0x4 + bl SetBoxMonDataEncrypted + mov r0, #0x3e + ldr r1, [sp, #0x8] + lsl r0, r0, #0x4 + and r0, r1 + lsr r0, r0, #0x5 + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x4a + add r2, sp, #0x4 + bl SetBoxMonDataEncrypted + mov r0, #0x1f + ldr r1, [sp, #0x8] + lsl r0, r0, #0xa + and r0, r1 + lsr r0, r0, #0xa + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x4b + add r2, sp, #0x4 + bl SetBoxMonDataEncrypted +_02066D18: + ldr r0, [sp, #0x24] + mov r1, #0x18 + bl GetMonBaseStat + str r0, [sp, #0x8] + ldr r0, [sp, #0x24] + mov r1, #0x19 + bl GetMonBaseStat + str r0, [sp, #0x4] + cmp r0, #0x0 + beq _02066D50 + ldr r1, [sp, #0x34] + mov r0, #0x1 + tst r0, r1 + beq _02066D44 + add r0, r5, #0x0 + mov r1, #0xa + add r2, sp, #0x4 + bl SetBoxMonDataEncrypted + b _02066D5A +_02066D44: + add r0, r5, #0x0 + mov r1, #0xa + add r2, sp, #0x8 + bl SetBoxMonDataEncrypted + b _02066D5A +_02066D50: + add r0, r5, #0x0 + mov r1, #0xa + add r2, sp, #0x8 + bl SetBoxMonDataEncrypted +_02066D5A: + add r0, r5, #0x0 + bl GetBoxMonGenderEncrypted + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x6f + add r2, sp, #0x8 + bl SetBoxMonDataEncrypted + add r0, r5, #0x0 + bl InitBoxMonMoveset + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + bl TryEncryptBoxMon + add sp, #0xc + pop {r4-r7} + pop {r3} + add sp, #0x10 + bx r3 + .balign 4 +_02066D84: .word 0xFFFF0000 +_02066D88: .word gGameLanguage +_02066D8C: .word gGameVersion + + thumb_func_start CreateMonWithNature +CreateMonWithNature: ; 0x02066D90 + push {r3-r7, lr} + sub sp, #0x18 + str r2, [sp, #0x10] + str r3, [sp, #0x14] + ldr r4, [sp, #0x30] + add r6, r0, #0x0 + add r7, r1, #0x0 +_02066D9E: + bl rand_LC + add r5, r0, #0x0 + bl rand_LC + lsl r0, r0, #0x10 + orr r5, r0 + add r0, r5, #0x0 + bl GetNatureFromPersonality + cmp r4, r0 + bne _02066D9E + mov r0, #0x1 + str r0, [sp, #0x0] + str r5, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + str r0, [sp, #0xc] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + add r0, r6, #0x0 + add r1, r7, #0x0 + bl CreateMon + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start CreateMonWithNatureGenderLetter +CreateMonWithNatureGenderLetter: ; 0x02066DD4 + push {r4-r7, lr} + sub sp, #0x24 + str r1, [sp, #0x14] + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + str r0, [sp, #0x10] + add r0, sp, #0x28 + ldrb r0, [r0, #0x18] + ldr r6, [sp, #0x38] + ldr r7, [sp, #0x3c] + cmp r0, #0x0 + beq _02066E4C + cmp r0, #0x1d + bhs _02066E4C + sub r0, r0, #0x1 + str r0, [sp, #0x20] +_02066DF4: + bl rand_LC + add r4, r0, #0x0 + bl rand_LC + lsl r0, r0, #0x10 + orr r4, r0 + mov r3, #0x3 + lsl r3, r3, #0x10 + and r3, r4 + mov r0, #0x3 + add r2, r4, #0x0 + and r2, r0 + lsl r0, r0, #0x8 + and r0, r4 + lsr r1, r0, #0x6 + mov r0, #0x3 + lsl r0, r0, #0x18 + and r0, r4 + lsr r0, r0, #0x12 + lsr r3, r3, #0xc + orr r0, r3 + orr r0, r1 + orr r0, r2 + mov r1, #0x1c + bl _u32_div_f + lsl r0, r1, #0x10 + lsr r5, r0, #0x10 + add r0, r4, #0x0 + bl GetNatureFromPersonality + cmp r7, r0 + bne _02066DF4 + ldr r0, [sp, #0x14] + add r1, r4, #0x0 + bl GetGenderBySpeciesAndPersonality + cmp r6, r0 + bne _02066DF4 + ldr r0, [sp, #0x20] + cmp r5, r0 + bne _02066DF4 + b _02066E58 +_02066E4C: + ldr r0, [sp, #0x14] + add r1, r6, #0x0 + add r2, r7, #0x0 + bl AdjustPersonalityToForceGenderAndNature + add r4, r0, #0x0 +_02066E58: + mov r0, #0x1 + str r0, [sp, #0x0] + str r4, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + bl CreateMon + add sp, #0x24 + pop {r4-r7, pc} + + thumb_func_start AdjustPersonalityToForceGenderAndNature +AdjustPersonalityToForceGenderAndNature: ; 0x02066E74 + push {r3-r5, lr} + add r5, r1, #0x0 + mov r1, #0x12 + add r4, r2, #0x0 + bl GetMonBaseStat + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + beq _02066EA0 + cmp r0, #0xfe + beq _02066EA0 + cmp r0, #0xff + beq _02066EA0 + cmp r5, #0x0 + bne _02066EA0 + mov r1, #0x19 + bl _s32_div_f + add r1, r0, #0x1 + mov r0, #0x19 + mul r0, r1 + add r4, r0, r4 +_02066EA0: + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start CreateMonWithFixedIVs +CreateMonWithFixedIVs: ; 0x02066EA4 + push {r0-r3} + push {r4, lr} + sub sp, #0x10 + mov r3, #0x1 + str r3, [sp, #0x0] + ldr r3, [sp, #0x28] + add r4, r0, #0x0 + str r3, [sp, #0x4] + mov r3, #0x0 + str r3, [sp, #0x8] + str r3, [sp, #0xc] + bl CreateMon + add r0, r4, #0x0 + mov r1, #0xae + add r2, sp, #0x24 + bl SetMonDataEncrypted + add r0, r4, #0x0 + bl UpdateMonLevelAndRecalcStats + add sp, #0x10 + pop {r4} + pop {r3} + add sp, #0x10 + bx r3 + + thumb_func_start UpdateMonLevelAndRecalcStats +UpdateMonLevelAndRecalcStats: ; 0x02066ED8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl TryDecryptMon + add r4, r0, #0x0 + add r0, r5, #0x0 + bl CalcMonLevelEncrypted + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0xa0 + add r2, sp, #0x0 + bl SetMonDataEncrypted + add r0, r5, #0x0 + bl CalcMonStatsMaybeEncrypted + add r0, r5, #0x0 + add r1, r4, #0x0 + bl TryEncryptMon + pop {r3-r5, pc} + + thumb_func_start CalcMonStatsMaybeEncrypted +CalcMonStatsMaybeEncrypted: ; 0x02066F04 + push {r3-r7, lr} + sub sp, #0x58 + add r5, r0, #0x0 + bl TryDecryptMon + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl GetMonDataEncrypted + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xa3 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x2c] + add r0, r5, #0x0 + mov r1, #0xa2 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x54] + add r0, r5, #0x0 + mov r1, #0x46 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x30] + add r0, r5, #0x0 + mov r1, #0xd + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x34] + add r0, r5, #0x0 + mov r1, #0x47 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x28] + add r0, r5, #0x0 + mov r1, #0xe + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x14] + add r0, r5, #0x0 + mov r1, #0x48 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x24] + add r0, r5, #0x0 + mov r1, #0xf + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x10] + add r0, r5, #0x0 + mov r1, #0x49 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x20] + add r0, r5, #0x0 + mov r1, #0x10 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0xc] + add r0, r5, #0x0 + mov r1, #0x4a + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x1c] + add r0, r5, #0x0 + mov r1, #0x11 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x4b + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x18] + add r0, r5, #0x0 + mov r1, #0x12 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x38] + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetMonDataEncrypted + add r7, r0, #0x0 + mov r0, #0x0 + mov r1, #0x2c + bl AllocFromHeap + add r6, r0, #0x0 + ldr r1, [sp, #0x38] + add r0, r7, #0x0 + add r2, r6, #0x0 + bl LoadMonBaseStats_HandleAlternateForme + mov r0, #0x49 + lsl r0, r0, #0x2 + cmp r7, r0 + bne _02066FFC + mov r0, #0x1 + b _0206701E +_02066FFC: + ldr r0, [sp, #0x34] + asr r0, r0, #0x1 + lsr r1, r0, #0x1e + ldr r0, [sp, #0x34] + add r1, r0, r1 + asr r0, r1, #0x2 + ldrb r1, [r6, #0x0] + lsl r2, r1, #0x1 + ldr r1, [sp, #0x30] + add r1, r1, r2 + add r0, r0, r1 + mul r0, r4 + mov r1, #0x64 + bl _s32_div_f + add r0, r4, r0 + add r0, #0xa +_0206701E: + str r0, [sp, #0x50] + add r0, r5, #0x0 + mov r1, #0xa3 + add r2, sp, #0x50 + bl SetMonDataEncrypted + ldr r0, [sp, #0x14] + asr r0, r0, #0x1 + lsr r1, r0, #0x1e + ldr r0, [sp, #0x14] + add r1, r0, r1 + asr r0, r1, #0x2 + ldrb r1, [r6, #0x1] + lsl r2, r1, #0x1 + ldr r1, [sp, #0x28] + add r1, r1, r2 + add r0, r0, r1 + mul r0, r4 + mov r1, #0x64 + bl _s32_div_f + add r0, r0, #0x5 + str r0, [sp, #0x4c] + add r0, r5, #0x0 + bl GetMonNatureEncrypted + ldr r1, [sp, #0x4c] + mov r2, #0x1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl ApplyNatureModToStat + str r0, [sp, #0x4c] + add r0, r5, #0x0 + mov r1, #0xa4 + add r2, sp, #0x4c + bl SetMonDataEncrypted + ldr r0, [sp, #0x10] + asr r0, r0, #0x1 + lsr r1, r0, #0x1e + ldr r0, [sp, #0x10] + add r1, r0, r1 + asr r0, r1, #0x2 + ldrb r1, [r6, #0x2] + lsl r2, r1, #0x1 + ldr r1, [sp, #0x24] + add r1, r1, r2 + add r0, r0, r1 + mul r0, r4 + mov r1, #0x64 + bl _s32_div_f + add r0, r0, #0x5 + str r0, [sp, #0x48] + add r0, r5, #0x0 + bl GetMonNatureEncrypted + ldr r1, [sp, #0x48] + mov r2, #0x2 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl ApplyNatureModToStat + str r0, [sp, #0x48] + add r0, r5, #0x0 + mov r1, #0xa5 + add r2, sp, #0x48 + bl SetMonDataEncrypted + ldr r0, [sp, #0xc] + asr r0, r0, #0x1 + lsr r1, r0, #0x1e + ldr r0, [sp, #0xc] + add r1, r0, r1 + asr r0, r1, #0x2 + ldrb r1, [r6, #0x3] + lsl r2, r1, #0x1 + ldr r1, [sp, #0x20] + add r1, r1, r2 + add r0, r0, r1 + mul r0, r4 + mov r1, #0x64 + bl _s32_div_f + add r0, r0, #0x5 + str r0, [sp, #0x44] + add r0, r5, #0x0 + bl GetMonNatureEncrypted + ldr r1, [sp, #0x44] + mov r2, #0x3 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl ApplyNatureModToStat + str r0, [sp, #0x44] + add r0, r5, #0x0 + mov r1, #0xa6 + add r2, sp, #0x44 + bl SetMonDataEncrypted + ldr r0, [sp, #0x8] + asr r0, r0, #0x1 + lsr r1, r0, #0x1e + ldr r0, [sp, #0x8] + add r1, r0, r1 + asr r0, r1, #0x2 + ldrb r1, [r6, #0x4] + lsl r2, r1, #0x1 + ldr r1, [sp, #0x1c] + add r1, r1, r2 + add r0, r0, r1 + mul r0, r4 + mov r1, #0x64 + bl _s32_div_f + add r0, r0, #0x5 + str r0, [sp, #0x40] + add r0, r5, #0x0 + bl GetMonNatureEncrypted + ldr r1, [sp, #0x40] + mov r2, #0x4 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl ApplyNatureModToStat + str r0, [sp, #0x40] + add r0, r5, #0x0 + mov r1, #0xa7 + add r2, sp, #0x40 + bl SetMonDataEncrypted + ldr r0, [sp, #0x4] + asr r0, r0, #0x1 + lsr r1, r0, #0x1e + ldr r0, [sp, #0x4] + add r1, r0, r1 + asr r0, r1, #0x2 + ldrb r1, [r6, #0x5] + lsl r2, r1, #0x1 + ldr r1, [sp, #0x18] + add r1, r1, r2 + add r0, r0, r1 + mul r0, r4 + mov r1, #0x64 + bl _s32_div_f + add r0, r0, #0x5 + str r0, [sp, #0x3c] + add r0, r5, #0x0 + bl GetMonNatureEncrypted + ldr r1, [sp, #0x3c] + mov r2, #0x5 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl ApplyNatureModToStat + str r0, [sp, #0x3c] + add r0, r5, #0x0 + mov r1, #0xa8 + add r2, sp, #0x3c + bl SetMonDataEncrypted + add r0, r6, #0x0 + bl FreeToHeap + ldr r1, [sp, #0x54] + cmp r1, #0x0 + bne _0206717C + ldr r0, [sp, #0x2c] + cmp r0, #0x0 + bne _020671A0 +_0206717C: + mov r0, #0x49 + lsl r0, r0, #0x2 + cmp r7, r0 + bne _0206718A + mov r0, #0x1 + str r0, [sp, #0x54] + b _020671A0 +_0206718A: + cmp r1, #0x0 + bne _02067194 + ldr r0, [sp, #0x50] + str r0, [sp, #0x54] + b _020671A0 +_02067194: + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x2c] + ldr r2, [sp, #0x54] + sub r0, r1, r0 + add r0, r2, r0 + str r0, [sp, #0x54] +_020671A0: + ldr r0, [sp, #0x54] + cmp r0, #0x0 + beq _020671B0 + add r0, r5, #0x0 + mov r1, #0xa2 + add r2, sp, #0x54 + bl SetMonDataEncrypted +_020671B0: + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + bl TryEncryptMon + add sp, #0x58 + pop {r3-r7, pc} + + thumb_func_start GetMonDataEncrypted +GetMonDataEncrypted: ; 0x020671BC + push {r4-r6, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _02067204 + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl MonDecryptSegment + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl MonDecryptSegment + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl CalcMonChecksum + ldrh r1, [r5, #0x6] + cmp r0, r1 + beq _02067204 + cmp r0, r1 + beq _020671FC + bl ErrorHandling +_020671FC: + ldrh r1, [r5, #0x4] + mov r0, #0x4 + orr r0, r1 + strh r0, [r5, #0x4] +_02067204: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl GetMonData + add r4, r0, #0x0 + ldrh r0, [r5, #0x4] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _02067230 + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl MonEncryptSegment + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl MonEncryptSegment +_02067230: + add r0, r4, #0x0 + pop {r4-r6, pc} + + thumb_func_start GetMonData +GetMonData: ; 0x02067234 + push {r3, lr} + add r3, r1, #0x0 + sub r3, #0x9f + cmp r3, #0xb + bhi _020672B6 + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #0x6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_0206724A: ; jump table (using 16-bit offset) + .short _02067262 - _0206724A - 2; case 0 + .short _02067268 - _0206724A - 2; case 1 + .short _0206726E - _0206724A - 2; case 2 + .short _02067274 - _0206724A - 2; case 3 + .short _0206727A - _0206724A - 2; case 4 + .short _02067280 - _0206724A - 2; case 5 + .short _02067286 - _0206724A - 2; case 6 + .short _0206728C - _0206724A - 2; case 7 + .short _02067292 - _0206724A - 2; case 8 + .short _02067298 - _0206724A - 2; case 9 + .short _0206729E - _0206724A - 2; case 10 + .short _020672AA - _0206724A - 2; case 11 +_02067262: + add r0, #0x88 + ldr r0, [r0, #0x0] + pop {r3, pc} +_02067268: + add r0, #0x8c + ldrb r0, [r0, #0x0] + pop {r3, pc} +_0206726E: + add r0, #0x8d + ldrb r0, [r0, #0x0] + pop {r3, pc} +_02067274: + add r0, #0x8e + ldrh r0, [r0, #0x0] + pop {r3, pc} +_0206727A: + add r0, #0x90 + ldrh r0, [r0, #0x0] + pop {r3, pc} +_02067280: + add r0, #0x92 + ldrh r0, [r0, #0x0] + pop {r3, pc} +_02067286: + add r0, #0x94 + ldrh r0, [r0, #0x0] + pop {r3, pc} +_0206728C: + add r0, #0x96 + ldrh r0, [r0, #0x0] + pop {r3, pc} +_02067292: + add r0, #0x98 + ldrh r0, [r0, #0x0] + pop {r3, pc} +_02067298: + add r0, #0x9a + ldrh r0, [r0, #0x0] + pop {r3, pc} +_0206729E: + add r0, #0x9c + add r1, r2, #0x0 + bl CopySealsObject + mov r0, #0x1 + pop {r3, pc} +_020672AA: + add r0, #0xd4 + add r1, r2, #0x0 + bl FUN_02029C74 + mov r0, #0x1 + pop {r3, pc} +_020672B6: + bl GetBoxMonData + pop {r3, pc} + + thumb_func_start GetBoxMonDataEncrypted +GetBoxMonDataEncrypted: ; 0x020672BC + push {r4-r6, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _020672F8 + ldrh r2, [r5, #0x6] + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl MonDecryptSegment + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl CalcMonChecksum + ldrh r1, [r5, #0x6] + cmp r0, r1 + beq _020672F8 + cmp r0, r1 + beq _020672F0 + bl ErrorHandling +_020672F0: + ldrh r1, [r5, #0x4] + mov r0, #0x4 + orr r0, r1 + strh r0, [r5, #0x4] +_020672F8: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl GetBoxMonData + add r4, r0, #0x0 + ldrh r0, [r5, #0x4] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _02067318 + ldrh r2, [r5, #0x6] + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl MonEncryptSegment +_02067318: + add r0, r4, #0x0 + pop {r4-r6, pc} + + thumb_func_start GetBoxMonData +GetBoxMonData: ; 0x0206731C + push {r4-r7, lr} + sub sp, #0xc + str r1, [sp, #0x4] + add r1, r0, #0x0 + mov r4, #0x0 + str r2, [sp, #0x8] + ldr r1, [r1, #0x0] + str r0, [sp, #0x0] + add r2, r4, #0x0 + bl GetSubstruct + add r5, r0, #0x0 + + ldr r0, [sp, #0x0] + mov r2, #0x1 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl GetSubstruct + add r6, r0, #0x0 + + ldr r0, [sp, #0x0] + mov r2, #0x2 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl GetSubstruct + add r7, r0, #0x0 + + ldr r0, [sp, #0x0] + mov r2, #0x3 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl GetSubstruct + add r1, r0, #0x0 + + ldr r0, [sp, #0x4] + cmp r0, #0xb2 + bls _02067366 + b _020674D8 +_02067366: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02067372: ; jump table (using 16-bit offset) + .short _020674DC - _02067372 - 2; case 0 + .short _020674E2 - _02067372 - 2; case 1 + .short _020674EC - _02067372 - 2; case 2 + .short _020674F6 - _02067372 - 2; case 3 + .short _02067500 - _02067372 - 2; case 4 + .short _0206754C - _02067372 - 2; case 5 + .short _0206755E - _02067372 - 2; case 6 + .short _02067562 - _02067372 - 2; case 7 + .short _02067566 - _02067372 - 2; case 8 + .short _0206756A - _02067372 - 2; case 9 + .short _0206756E - _02067372 - 2; case 10 + .short _02067572 - _02067372 - 2; case 11 + .short _02067576 - _02067372 - 2; case 12 + .short _0206757A - _02067372 - 2; case 13 + .short _0206757E - _02067372 - 2; case 14 + .short _02067582 - _02067372 - 2; case 15 + .short _02067586 - _02067372 - 2; case 16 + .short _0206758A - _02067372 - 2; case 17 + .short _0206758E - _02067372 - 2; case 18 + .short _02067592 - _02067372 - 2; case 19 + .short _02067596 - _02067372 - 2; case 20 + .short _0206759A - _02067372 - 2; case 21 + .short _0206759E - _02067372 - 2; case 22 + .short _020675A2 - _02067372 - 2; case 23 + .short _020675A6 - _02067372 - 2; case 24 + .short _020675AA - _02067372 - 2; case 25 + .short _020675AA - _02067372 - 2; case 26 + .short _020675AA - _02067372 - 2; case 27 + .short _020675AA - _02067372 - 2; case 28 + .short _020675AA - _02067372 - 2; case 29 + .short _020675AA - _02067372 - 2; case 30 + .short _020675AA - _02067372 - 2; case 31 + .short _020675AA - _02067372 - 2; case 32 + .short _020675AA - _02067372 - 2; case 33 + .short _020675AA - _02067372 - 2; case 34 + .short _020675AA - _02067372 - 2; case 35 + .short _020675AA - _02067372 - 2; case 36 + .short _020675AA - _02067372 - 2; case 37 + .short _020675AA - _02067372 - 2; case 38 + .short _020675AA - _02067372 - 2; case 39 + .short _020675AA - _02067372 - 2; case 40 + .short _020675AA - _02067372 - 2; case 41 + .short _020675AA - _02067372 - 2; case 42 + .short _020675AA - _02067372 - 2; case 43 + .short _020675AA - _02067372 - 2; case 44 + .short _020675AA - _02067372 - 2; case 45 + .short _020675AA - _02067372 - 2; case 46 + .short _020675AA - _02067372 - 2; case 47 + .short _020675AA - _02067372 - 2; case 48 + .short _020675AA - _02067372 - 2; case 49 + .short _020675AA - _02067372 - 2; case 50 + .short _020675AA - _02067372 - 2; case 51 + .short _020675AA - _02067372 - 2; case 52 + .short _020675AA - _02067372 - 2; case 53 + .short _020675D0 - _02067372 - 2; case 54 + .short _020675D0 - _02067372 - 2; case 55 + .short _020675D0 - _02067372 - 2; case 56 + .short _020675D0 - _02067372 - 2; case 57 + .short _020675DC - _02067372 - 2; case 58 + .short _020675DC - _02067372 - 2; case 59 + .short _020675DC - _02067372 - 2; case 60 + .short _020675DC - _02067372 - 2; case 61 + .short _020675E8 - _02067372 - 2; case 62 + .short _020675E8 - _02067372 - 2; case 63 + .short _020675E8 - _02067372 - 2; case 64 + .short _020675E8 - _02067372 - 2; case 65 + .short _020675F4 - _02067372 - 2; case 66 + .short _020675F4 - _02067372 - 2; case 67 + .short _020675F4 - _02067372 - 2; case 68 + .short _020675F4 - _02067372 - 2; case 69 + .short _0206760C - _02067372 - 2; case 70 + .short _02067614 - _02067372 - 2; case 71 + .short _0206761C - _02067372 - 2; case 72 + .short _02067624 - _02067372 - 2; case 73 + .short _0206762C - _02067372 - 2; case 74 + .short _02067634 - _02067372 - 2; case 75 + .short _0206763C - _02067372 - 2; case 76 + .short _0206764E - _02067372 - 2; case 77 + .short _02067654 - _02067372 - 2; case 78 + .short _02067654 - _02067372 - 2; case 79 + .short _02067654 - _02067372 - 2; case 80 + .short _02067654 - _02067372 - 2; case 81 + .short _02067654 - _02067372 - 2; case 82 + .short _02067654 - _02067372 - 2; case 83 + .short _02067654 - _02067372 - 2; case 84 + .short _02067654 - _02067372 - 2; case 85 + .short _02067654 - _02067372 - 2; case 86 + .short _02067654 - _02067372 - 2; case 87 + .short _02067654 - _02067372 - 2; case 88 + .short _02067654 - _02067372 - 2; case 89 + .short _02067654 - _02067372 - 2; case 90 + .short _02067654 - _02067372 - 2; case 91 + .short _02067654 - _02067372 - 2; case 92 + .short _02067654 - _02067372 - 2; case 93 + .short _02067654 - _02067372 - 2; case 94 + .short _02067654 - _02067372 - 2; case 95 + .short _02067654 - _02067372 - 2; case 96 + .short _02067654 - _02067372 - 2; case 97 + .short _02067654 - _02067372 - 2; case 98 + .short _02067654 - _02067372 - 2; case 99 + .short _02067654 - _02067372 - 2; case 100 + .short _02067654 - _02067372 - 2; case 101 + .short _02067654 - _02067372 - 2; case 102 + .short _02067654 - _02067372 - 2; case 103 + .short _02067654 - _02067372 - 2; case 104 + .short _02067654 - _02067372 - 2; case 105 + .short _02067654 - _02067372 - 2; case 106 + .short _02067654 - _02067372 - 2; case 107 + .short _02067654 - _02067372 - 2; case 108 + .short _02067654 - _02067372 - 2; case 109 + .short _0206767C - _02067372 - 2; case 110 + .short _02067684 - _02067372 - 2; case 111 + .short _0206768C - _02067372 - 2; case 112 + .short _02067694 - _02067372 - 2; case 113 + .short _02067698 - _02067372 - 2; case 114 + .short _020674D8 - _02067372 - 2; case 115 + .short _0206769C - _02067372 - 2; case 116 + .short _020674D8 - _02067372 - 2; case 117 + .short _020676D0 - _02067372 - 2; case 118 + .short _020676CC - _02067372 - 2; case 119 + .short _020676FE - _02067372 - 2; case 120 + .short _02067702 - _02067372 - 2; case 121 + .short _02067706 - _02067372 - 2; case 122 + .short _02067706 - _02067372 - 2; case 123 + .short _02067706 - _02067372 - 2; case 124 + .short _02067706 - _02067372 - 2; case 125 + .short _02067706 - _02067372 - 2; case 126 + .short _02067706 - _02067372 - 2; case 127 + .short _02067706 - _02067372 - 2; case 128 + .short _02067706 - _02067372 - 2; case 129 + .short _02067706 - _02067372 - 2; case 130 + .short _02067706 - _02067372 - 2; case 131 + .short _02067706 - _02067372 - 2; case 132 + .short _02067706 - _02067372 - 2; case 133 + .short _02067706 - _02067372 - 2; case 134 + .short _02067706 - _02067372 - 2; case 135 + .short _02067706 - _02067372 - 2; case 136 + .short _02067706 - _02067372 - 2; case 137 + .short _02067706 - _02067372 - 2; case 138 + .short _02067706 - _02067372 - 2; case 139 + .short _02067706 - _02067372 - 2; case 140 + .short _02067706 - _02067372 - 2; case 141 + .short _02067706 - _02067372 - 2; case 142 + .short _0206772C - _02067372 - 2; case 143 + .short _02067746 - _02067372 - 2; case 144 + .short _0206774E - _02067372 - 2; case 145 + .short _02067752 - _02067372 - 2; case 146 + .short _02067756 - _02067372 - 2; case 147 + .short _0206775A - _02067372 - 2; case 148 + .short _0206775E - _02067372 - 2; case 149 + .short _02067762 - _02067372 - 2; case 150 + .short _02067766 - _02067372 - 2; case 151 + .short _0206776A - _02067372 - 2; case 152 + .short _0206776E - _02067372 - 2; case 153 + .short _02067772 - _02067372 - 2; case 154 + .short _02067776 - _02067372 - 2; case 155 + .short _0206777E - _02067372 - 2; case 156 + .short _02067786 - _02067372 - 2; case 157 + .short _0206778A - _02067372 - 2; case 158 + .short _020674D8 - _02067372 - 2; case 159 + .short _02067540 - _02067372 - 2; case 160 + .short _020674D8 - _02067372 - 2; case 161 + .short _020674D8 - _02067372 - 2; case 162 + .short _020674D8 - _02067372 - 2; case 163 + .short _020674D8 - _02067372 - 2; case 164 + .short _020674D8 - _02067372 - 2; case 165 + .short _020674D8 - _02067372 - 2; case 166 + .short _020674D8 - _02067372 - 2; case 167 + .short _020674D8 - _02067372 - 2; case 168 + .short _020674D8 - _02067372 - 2; case 169 + .short _020674D8 - _02067372 - 2; case 170 + .short _02067506 - _02067372 - 2; case 171 + .short _02067510 - _02067372 - 2; case 172 + .short _02067522 - _02067372 - 2; case 173 + .short _0206778E - _02067372 - 2; case 174 + .short _020677C0 - _02067372 - 2; case 175 + .short _020677D8 - _02067372 - 2; case 176 + .short _020677D8 - _02067372 - 2; case 177 + .short _02067810 - _02067372 - 2; case 178 +_020674D8: + mov r4, #0x0 + b _0206781A +_020674DC: + ldr r0, [sp, #0x0] + ldr r4, [r0, #0x0] + b _0206781A +_020674E2: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1f + lsr r4, r0, #0x1f + b _0206781A +_020674EC: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1e + lsr r4, r0, #0x1f + b _0206781A +_020674F6: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r4, r0, #0x1f + b _0206781A +_02067500: + ldr r0, [sp, #0x0] + ldrh r4, [r0, #0x6] + b _0206781A +_02067506: + ldrh r0, [r5, #0x0] + cmp r0, #0x0 + beq _0206753A + mov r4, #0x1 + b _0206781A +_02067510: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r4, r0, #0x1f + bne _0206753A + ldr r0, [r6, #0x10] + lsl r0, r0, #0x1 + lsr r4, r0, #0x1f + b _0206781A +_02067522: + ldrh r4, [r5, #0x0] + cmp r4, #0x0 + beq _0206753A + ldr r0, [r6, #0x10] + lsl r0, r0, #0x1 + lsr r0, r0, #0x1f + bne _0206753C + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _0206753C +_0206753A: + b _0206781A +_0206753C: + ldr r4, _02067820 ; =SPECIES_EGG + b _0206781A +_02067540: + ldrh r0, [r5, #0x0] + ldr r1, [r5, #0x8] + bl CalcLevelBySpeciesAndExp + add r4, r0, #0x0 + b _0206781A +_0206754C: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _0206755A + ldr r4, _02067820 ; =SPECIES_EGG + b _0206781A +_0206755A: + ldrh r4, [r5, #0x0] + b _0206781A +_0206755E: + ldrh r4, [r5, #0x2] + b _0206781A +_02067562: + ldr r4, [r5, #0x4] + b _0206781A +_02067566: + ldr r4, [r5, #0x8] + b _0206781A +_0206756A: + ldrb r4, [r5, #0xc] + b _0206781A +_0206756E: + ldrb r4, [r5, #0xd] + b _0206781A +_02067572: + ldrb r4, [r5, #0xe] + b _0206781A +_02067576: + ldrb r4, [r5, #0xf] + b _0206781A +_0206757A: + ldrb r4, [r5, #0x10] + b _0206781A +_0206757E: + ldrb r4, [r5, #0x11] + b _0206781A +_02067582: + ldrb r4, [r5, #0x12] + b _0206781A +_02067586: + ldrb r4, [r5, #0x13] + b _0206781A +_0206758A: + ldrb r4, [r5, #0x14] + b _0206781A +_0206758E: + ldrb r4, [r5, #0x15] + b _0206781A +_02067592: + ldrb r4, [r5, #0x16] + b _0206781A +_02067596: + ldrb r4, [r5, #0x17] + b _0206781A +_0206759A: + ldrb r4, [r5, #0x18] + b _0206781A +_0206759E: + ldrb r4, [r5, #0x19] + b _0206781A +_020675A2: + ldrb r4, [r5, #0x1a] + b _0206781A +_020675A6: + ldrb r4, [r5, #0x1b] + b _0206781A +_020675AA: + ldr r2, [sp, #0x4] + mov r0, #0x1 + sub r2, #0x19 + add r1, r4, #0x0 + str r2, [sp, #0x4] + bl _ll_shl + ldr r2, [r5, #0x1c] + add r3, r4, #0x0 + and r3, r1 + and r2, r0 + mov r1, #0x0 + mov r0, #0x0 + eor r1, r3 + eor r0, r2 + orr r0, r1 + beq _02067676 + mov r4, #0x1 + b _0206781A +_020675D0: + ldr r0, [sp, #0x4] + sub r0, #0x36 + str r0, [sp, #0x4] + lsl r0, r0, #0x1 + ldrh r4, [r6, r0] + b _0206781A +_020675DC: + ldr r0, [sp, #0x4] + sub r0, #0x3a + str r0, [sp, #0x4] + add r0, r6, r0 + ldrb r4, [r0, #0x8] + b _0206781A +_020675E8: + ldr r0, [sp, #0x4] + sub r0, #0x3e + str r0, [sp, #0x4] + add r0, r6, r0 + ldrb r4, [r0, #0xc] + b _0206781A +_020675F4: + ldr r0, [sp, #0x4] + sub r0, #0x42 + str r0, [sp, #0x4] + ldr r1, [sp, #0x4] + lsl r0, r0, #0x1 + add r1, r6, r1 + ldrh r0, [r6, r0] + ldrb r1, [r1, #0xc] + bl FUN_0206AB30 + add r4, r0, #0x0 + b _0206781A +_0206760C: + ldr r0, [r6, #0x10] + lsl r0, r0, #0x1b + lsr r4, r0, #0x1b + b _0206781A +_02067614: + ldr r0, [r6, #0x10] + lsl r0, r0, #0x16 + lsr r4, r0, #0x1b + b _0206781A +_0206761C: + ldr r0, [r6, #0x10] + lsl r0, r0, #0x11 + lsr r4, r0, #0x1b + b _0206781A +_02067624: + ldr r0, [r6, #0x10] + lsl r0, r0, #0xc + lsr r4, r0, #0x1b + b _0206781A +_0206762C: + ldr r0, [r6, #0x10] + lsl r0, r0, #0x7 + lsr r4, r0, #0x1b + b _0206781A +_02067634: + ldr r0, [r6, #0x10] + lsl r0, r0, #0x2 + lsr r4, r0, #0x1b + b _0206781A +_0206763C: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r4, r0, #0x1f + bne _02067676 + ldr r0, [r6, #0x10] + lsl r0, r0, #0x1 + lsr r4, r0, #0x1f + b _0206781A +_0206764E: + ldr r0, [r6, #0x10] + lsr r4, r0, #0x1f + b _0206781A +_02067654: + ldr r2, [sp, #0x4] + mov r0, #0x1 + sub r2, #0x4e + add r1, r4, #0x0 + str r2, [sp, #0x4] + bl _ll_shl + ldr r2, [r6, #0x14] + add r3, r4, #0x0 + and r3, r1 + and r2, r0 + mov r1, #0x0 + mov r0, #0x0 + eor r1, r3 + eor r0, r2 + orr r0, r1 + bne _02067678 +_02067676: + b _0206781A +_02067678: + mov r4, #0x1 + b _0206781A +_0206767C: + ldrb r0, [r6, #0x18] + lsl r0, r0, #0x1f + lsr r4, r0, #0x1f + b _0206781A +_02067684: + ldrb r0, [r6, #0x18] + lsl r0, r0, #0x1d + lsr r4, r0, #0x1e + b _0206781A +_0206768C: + ldrb r0, [r6, #0x18] + lsl r0, r0, #0x18 + lsr r4, r0, #0x1b + b _0206781A +_02067694: + ldrb r4, [r6, #0x19] + b _0206781A +_02067698: + ldrh r4, [r6, #0x1a] + b _0206781A +_0206769C: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _020676B2 + ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG + ldr r2, [sp, #0x8] + add r1, r4, #0x0 + bl GetSpeciesName + b _0206781A +_020676B2: + ldr r1, [sp, #0x8] +_020676B4: + ldrh r0, [r7, #0x0] + add r4, r4, #0x1 + add r7, r7, #0x2 + strh r0, [r1, #0x0] + add r1, r1, #0x2 + cmp r4, #0xa + blo _020676B4 + ldr r2, _02067828 ; =0x0000FFFF + ldr r0, [sp, #0x8] + lsl r1, r4, #0x1 + strh r2, [r0, r1] + b _0206781A +_020676CC: + ldr r0, [r6, #0x10] + lsr r4, r0, #0x1f +_020676D0: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _020676F4 + ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG + mov r1, #0x0 + bl FUN_0200AA50 + add r5, r0, #0x0 + ldr r0, [sp, #0x8] + add r1, r5, #0x0 + bl FUN_02021A74 + add r0, r5, #0x0 + bl FUN_02021A20 + b _0206781A +_020676F4: + ldr r0, [sp, #0x8] + add r1, r7, #0x0 + bl FUN_02021E28 + b _0206781A +_020676FE: + ldrb r4, [r7, #0x16] + b _0206781A +_02067702: + ldrb r4, [r7, #0x17] + b _0206781A +_02067706: + ldr r2, [sp, #0x4] + mov r0, #0x1 + sub r2, #0x7a + add r1, r4, #0x0 + str r2, [sp, #0x4] + bl _ll_shl + ldr r3, [r7, #0x18] + ldr r2, [r7, #0x1c] + and r3, r0 + and r2, r1 + mov r1, #0x0 + mov r0, #0x0 + eor r1, r2 + eor r0, r3 + orr r0, r1 + beq _0206781A + mov r4, #0x1 + b _0206781A +_0206772C: + ldr r2, [sp, #0x8] +_0206772E: + ldrh r0, [r1, #0x0] + add r4, r4, #0x1 + add r1, r1, #0x2 + strh r0, [r2, #0x0] + add r2, r2, #0x2 + cmp r4, #0x7 + blo _0206772E + ldr r2, _02067828 ; =0x0000FFFF + ldr r0, [sp, #0x8] + lsl r1, r4, #0x1 + strh r2, [r0, r1] + b _0206781A +_02067746: + ldr r0, [sp, #0x8] + bl FUN_02021E28 + b _0206781A +_0206774E: + ldrb r4, [r1, #0x10] + b _0206781A +_02067752: + ldrb r4, [r1, #0x11] + b _0206781A +_02067756: + ldrb r4, [r1, #0x12] + b _0206781A +_0206775A: + ldrb r4, [r1, #0x13] + b _0206781A +_0206775E: + ldrb r4, [r1, #0x14] + b _0206781A +_02067762: + ldrb r4, [r1, #0x15] + b _0206781A +_02067766: + ldrh r4, [r1, #0x16] + b _0206781A +_0206776A: + ldrh r4, [r1, #0x18] + b _0206781A +_0206776E: + ldrb r4, [r1, #0x1a] + b _0206781A +_02067772: + ldrb r4, [r1, #0x1b] + b _0206781A +_02067776: + ldrb r0, [r1, #0x1c] + lsl r0, r0, #0x19 + lsr r4, r0, #0x19 + b _0206781A +_0206777E: + ldrb r0, [r1, #0x1c] + lsl r0, r0, #0x18 + lsr r4, r0, #0x1f + b _0206781A +_02067786: + ldrb r4, [r1, #0x1d] + b _0206781A +_0206778A: + ldrh r4, [r1, #0x1e] + b _0206781A +_0206778E: + ldr r4, [r6, #0x10] + lsl r0, r4, #0x2 + lsr r0, r0, #0x1b + lsl r5, r0, #0x19 + lsl r0, r4, #0x7 + lsr r0, r0, #0x1b + lsl r3, r0, #0x14 + lsl r0, r4, #0xc + lsr r0, r0, #0x1b + lsl r2, r0, #0xf + lsl r0, r4, #0x11 + lsr r0, r0, #0x1b + lsl r1, r0, #0xa + lsl r0, r4, #0x1b + lsl r4, r4, #0x16 + lsr r4, r4, #0x1b + lsr r0, r0, #0x1b + lsl r4, r4, #0x5 + orr r0, r4 + orr r0, r1 + orr r0, r2 + orr r0, r3 + add r4, r5, #0x0 + orr r4, r0 + b _0206781A +_020677C0: + ldrh r0, [r5, #0x0] + cmp r0, #0x1d + beq _020677CA + cmp r0, #0x20 + bne _020677D4 +_020677CA: + ldr r0, [r6, #0x10] + lsr r0, r0, #0x1f + bne _020677D4 + mov r4, #0x0 + b _0206781A +_020677D4: + mov r4, #0x1 + b _0206781A +_020677D8: + ldrh r0, [r5, #0x0] + ldr r1, _0206782C ; =SPECIES_ARCEUS + cmp r0, r1 + bne _020677FC + ldrb r1, [r5, #0xd] + cmp r1, #0x79 + bne _020677FC + ldrh r0, [r5, #0x2] + mov r1, #0x1 + add r2, r4, #0x0 + bl FUN_0206E7B8 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl GetArceusTypeByPlate + add r4, r0, #0x0 + b _0206781A +_020677FC: + ldrb r1, [r6, #0x18] + ldr r2, [sp, #0x4] + lsl r1, r1, #0x18 + sub r2, #0xaa + lsr r1, r1, #0x1b + str r2, [sp, #0x4] + bl GetMonBaseStat_HandleFormeConversion + add r4, r0, #0x0 + b _0206781A +_02067810: + ldrh r0, [r5, #0x0] + ldr r2, [sp, #0x8] + add r1, r4, #0x0 + bl GetSpeciesName +_0206781A: + add r0, r4, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02067820: .word SPECIES_EGG +_02067824: .word SPECIES_MANAPHY_EGG +_02067828: .word 0x0000FFFF +_0206782C: .word SPECIES_ARCEUS + + thumb_func_start SetMonDataEncrypted +SetMonDataEncrypted: ; 0x02067830 + push {r4-r6, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _02067886 + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl MonDecryptSegment + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl MonDecryptSegment + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl CalcMonChecksum + ldrh r1, [r5, #0x6] + cmp r0, r1 + beq _02067886 + cmp r0, r1 + beq _02067870 + bl ErrorHandling +_02067870: + ldrh r1, [r5, #0x4] + mov r0, #0x4 + orr r0, r1 + strh r0, [r5, #0x4] + ldrh r2, [r5, #0x6] + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl MonEncryptSegment + pop {r4-r6, pc} +_02067886: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl SetMonData + ldrh r0, [r5, #0x4] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _020678BC + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl MonEncryptSegment + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl CalcMonChecksum + strh r0, [r5, #0x6] + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl MonEncryptSegment +_020678BC: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start SetMonData +SetMonData: ; 0x020678C0 + push {r3, lr} + add r3, r0, #0x0 + add r0, r1, #0x0 + sub r0, #0x9f + cmp r0, #0xb + bhi _02067958 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020678D8: ; jump table (using 16-bit offset) + .short _020678F0 - _020678D8 - 2; case 0 + .short _020678F8 - _020678D8 - 2; case 1 + .short _02067900 - _020678D8 - 2; case 2 + .short _02067908 - _020678D8 - 2; case 3 + .short _02067910 - _020678D8 - 2; case 4 + .short _02067918 - _020678D8 - 2; case 5 + .short _02067920 - _020678D8 - 2; case 6 + .short _02067928 - _020678D8 - 2; case 7 + .short _02067930 - _020678D8 - 2; case 8 + .short _02067938 - _020678D8 - 2; case 9 + .short _02067940 - _020678D8 - 2; case 10 + .short _0206794C - _020678D8 - 2; case 11 +_020678F0: + ldr r0, [r2, #0x0] + add r3, #0x88 + str r0, [r3, #0x0] + pop {r3, pc} +_020678F8: + ldrb r0, [r2, #0x0] + add r3, #0x8c + strb r0, [r3, #0x0] + pop {r3, pc} +_02067900: + ldrb r0, [r2, #0x0] + add r3, #0x8d + strb r0, [r3, #0x0] + pop {r3, pc} +_02067908: + ldrh r0, [r2, #0x0] + add r3, #0x8e + strh r0, [r3, #0x0] + pop {r3, pc} +_02067910: + ldrh r0, [r2, #0x0] + add r3, #0x90 + strh r0, [r3, #0x0] + pop {r3, pc} +_02067918: + ldrh r0, [r2, #0x0] + add r3, #0x92 + strh r0, [r3, #0x0] + pop {r3, pc} +_02067920: + ldrh r0, [r2, #0x0] + add r3, #0x94 + strh r0, [r3, #0x0] + pop {r3, pc} +_02067928: + ldrh r0, [r2, #0x0] + add r3, #0x96 + strh r0, [r3, #0x0] + pop {r3, pc} +_02067930: + ldrh r0, [r2, #0x0] + add r3, #0x98 + strh r0, [r3, #0x0] + pop {r3, pc} +_02067938: + ldrh r0, [r2, #0x0] + add r3, #0x9a + strh r0, [r3, #0x0] + pop {r3, pc} +_02067940: + add r3, #0x9c + add r0, r2, #0x0 + add r1, r3, #0x0 + bl CopySealsObject + pop {r3, pc} +_0206794C: + add r3, #0xd4 + add r0, r2, #0x0 + add r1, r3, #0x0 + bl FUN_02029C74 + pop {r3, pc} +_02067958: + add r0, r3, #0x0 + bl SetBoxMonData + pop {r3, pc} + + thumb_func_start SetBoxMonDataEncrypted +SetBoxMonDataEncrypted: ; 0x02067960 + push {r4-r6, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _020679AA + ldrh r2, [r5, #0x6] + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl MonDecryptSegment + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl CalcMonChecksum + ldrh r1, [r5, #0x6] + cmp r0, r1 + beq _020679AA + cmp r0, r1 + beq _02067994 + bl ErrorHandling +_02067994: + ldrh r1, [r5, #0x4] + mov r0, #0x4 + orr r0, r1 + strh r0, [r5, #0x4] + ldrh r2, [r5, #0x6] + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl MonEncryptSegment + pop {r4-r6, pc} +_020679AA: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl SetBoxMonData + ldrh r0, [r5, #0x4] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _020679D4 + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl CalcMonChecksum + strh r0, [r5, #0x6] + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl MonEncryptSegment +_020679D4: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start SetBoxMonData +SetBoxMonData: ; 0x020679D8 + push {r4-r7, lr} + sub sp, #0x4c + str r1, [sp, #0x4] + add r1, r0, #0x0 + add r4, r2, #0x0 + ldr r1, [r1, #0x0] + str r0, [sp, #0x0] + mov r2, #0x0 + bl GetSubstruct + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x1 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl GetSubstruct + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x2 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl GetSubstruct + add r6, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x3 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl GetSubstruct + add r1, r0, #0x0 + ldr r0, [sp, #0x4] + cmp r0, #0xb2 + bls _02067A20 + b _02067FF6 +_02067A20: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02067A2C: ; jump table (using 16-bit offset) + .short _02067B92 - _02067A2C - 2; case 0 + .short _02067B9C - _02067A2C - 2; case 1 + .short _02067BBA - _02067A2C - 2; case 2 + .short _02067BD6 - _02067A2C - 2; case 3 + .short _02067BEE - _02067A2C - 2; case 4 + .short _02067BF8 - _02067A2C - 2; case 5 + .short _02067C00 - _02067A2C - 2; case 6 + .short _02067C08 - _02067A2C - 2; case 7 + .short _02067C10 - _02067A2C - 2; case 8 + .short _02067C18 - _02067A2C - 2; case 9 + .short _02067C20 - _02067A2C - 2; case 10 + .short _02067C28 - _02067A2C - 2; case 11 + .short _02067C30 - _02067A2C - 2; case 12 + .short _02067C38 - _02067A2C - 2; case 13 + .short _02067C40 - _02067A2C - 2; case 14 + .short _02067C48 - _02067A2C - 2; case 15 + .short _02067C50 - _02067A2C - 2; case 16 + .short _02067C58 - _02067A2C - 2; case 17 + .short _02067C60 - _02067A2C - 2; case 18 + .short _02067C68 - _02067A2C - 2; case 19 + .short _02067C70 - _02067A2C - 2; case 20 + .short _02067C78 - _02067A2C - 2; case 21 + .short _02067C80 - _02067A2C - 2; case 22 + .short _02067C88 - _02067A2C - 2; case 23 + .short _02067C90 - _02067A2C - 2; case 24 + .short _02067C98 - _02067A2C - 2; case 25 + .short _02067C98 - _02067A2C - 2; case 26 + .short _02067C98 - _02067A2C - 2; case 27 + .short _02067C98 - _02067A2C - 2; case 28 + .short _02067C98 - _02067A2C - 2; case 29 + .short _02067C98 - _02067A2C - 2; case 30 + .short _02067C98 - _02067A2C - 2; case 31 + .short _02067C98 - _02067A2C - 2; case 32 + .short _02067C98 - _02067A2C - 2; case 33 + .short _02067C98 - _02067A2C - 2; case 34 + .short _02067C98 - _02067A2C - 2; case 35 + .short _02067C98 - _02067A2C - 2; case 36 + .short _02067C98 - _02067A2C - 2; case 37 + .short _02067C98 - _02067A2C - 2; case 38 + .short _02067C98 - _02067A2C - 2; case 39 + .short _02067C98 - _02067A2C - 2; case 40 + .short _02067C98 - _02067A2C - 2; case 41 + .short _02067C98 - _02067A2C - 2; case 42 + .short _02067C98 - _02067A2C - 2; case 43 + .short _02067C98 - _02067A2C - 2; case 44 + .short _02067C98 - _02067A2C - 2; case 45 + .short _02067C98 - _02067A2C - 2; case 46 + .short _02067C98 - _02067A2C - 2; case 47 + .short _02067C98 - _02067A2C - 2; case 48 + .short _02067C98 - _02067A2C - 2; case 49 + .short _02067C98 - _02067A2C - 2; case 50 + .short _02067C98 - _02067A2C - 2; case 51 + .short _02067C98 - _02067A2C - 2; case 52 + .short _02067C98 - _02067A2C - 2; case 53 + .short _02067CC6 - _02067A2C - 2; case 54 + .short _02067CC6 - _02067A2C - 2; case 55 + .short _02067CC6 - _02067A2C - 2; case 56 + .short _02067CC6 - _02067A2C - 2; case 57 + .short _02067CD6 - _02067A2C - 2; case 58 + .short _02067CD6 - _02067A2C - 2; case 59 + .short _02067CD6 - _02067A2C - 2; case 60 + .short _02067CD6 - _02067A2C - 2; case 61 + .short _02067CE6 - _02067A2C - 2; case 62 + .short _02067CE6 - _02067A2C - 2; case 63 + .short _02067CE6 - _02067A2C - 2; case 64 + .short _02067CE6 - _02067A2C - 2; case 65 + .short _02067FF6 - _02067A2C - 2; case 66 + .short _02067FF6 - _02067A2C - 2; case 67 + .short _02067FF6 - _02067A2C - 2; case 68 + .short _02067FF6 - _02067A2C - 2; case 69 + .short _02067CF6 - _02067A2C - 2; case 70 + .short _02067D0A - _02067A2C - 2; case 71 + .short _02067D1E - _02067A2C - 2; case 72 + .short _02067D32 - _02067A2C - 2; case 73 + .short _02067D46 - _02067A2C - 2; case 74 + .short _02067D5A - _02067A2C - 2; case 75 + .short _02067D6E - _02067A2C - 2; case 76 + .short _02067D82 - _02067A2C - 2; case 77 + .short _02067D94 - _02067A2C - 2; case 78 + .short _02067D94 - _02067A2C - 2; case 79 + .short _02067D94 - _02067A2C - 2; case 80 + .short _02067D94 - _02067A2C - 2; case 81 + .short _02067D94 - _02067A2C - 2; case 82 + .short _02067D94 - _02067A2C - 2; case 83 + .short _02067D94 - _02067A2C - 2; case 84 + .short _02067D94 - _02067A2C - 2; case 85 + .short _02067D94 - _02067A2C - 2; case 86 + .short _02067D94 - _02067A2C - 2; case 87 + .short _02067D94 - _02067A2C - 2; case 88 + .short _02067D94 - _02067A2C - 2; case 89 + .short _02067D94 - _02067A2C - 2; case 90 + .short _02067D94 - _02067A2C - 2; case 91 + .short _02067D94 - _02067A2C - 2; case 92 + .short _02067D94 - _02067A2C - 2; case 93 + .short _02067D94 - _02067A2C - 2; case 94 + .short _02067D94 - _02067A2C - 2; case 95 + .short _02067D94 - _02067A2C - 2; case 96 + .short _02067D94 - _02067A2C - 2; case 97 + .short _02067D94 - _02067A2C - 2; case 98 + .short _02067D94 - _02067A2C - 2; case 99 + .short _02067D94 - _02067A2C - 2; case 100 + .short _02067D94 - _02067A2C - 2; case 101 + .short _02067D94 - _02067A2C - 2; case 102 + .short _02067D94 - _02067A2C - 2; case 103 + .short _02067D94 - _02067A2C - 2; case 104 + .short _02067D94 - _02067A2C - 2; case 105 + .short _02067D94 - _02067A2C - 2; case 106 + .short _02067D94 - _02067A2C - 2; case 107 + .short _02067D94 - _02067A2C - 2; case 108 + .short _02067D94 - _02067A2C - 2; case 109 + .short _02067DC2 - _02067A2C - 2; case 110 + .short _02067DD6 - _02067A2C - 2; case 111 + .short _02067DEA - _02067A2C - 2; case 112 + .short _02067DFE - _02067A2C - 2; case 113 + .short _02067E06 - _02067A2C - 2; case 114 + .short _02067FF6 - _02067A2C - 2; case 115 + .short _02067E2C - _02067A2C - 2; case 116 + .short _02067E0E - _02067A2C - 2; case 117 + .short _02067E6C - _02067A2C - 2; case 118 + .short _02067E40 - _02067A2C - 2; case 119 + .short _02067E7A - _02067A2C - 2; case 120 + .short _02067E82 - _02067A2C - 2; case 121 + .short _02067E8A - _02067A2C - 2; case 122 + .short _02067E8A - _02067A2C - 2; case 123 + .short _02067E8A - _02067A2C - 2; case 124 + .short _02067E8A - _02067A2C - 2; case 125 + .short _02067E8A - _02067A2C - 2; case 126 + .short _02067E8A - _02067A2C - 2; case 127 + .short _02067E8A - _02067A2C - 2; case 128 + .short _02067E8A - _02067A2C - 2; case 129 + .short _02067E8A - _02067A2C - 2; case 130 + .short _02067E8A - _02067A2C - 2; case 131 + .short _02067E8A - _02067A2C - 2; case 132 + .short _02067E8A - _02067A2C - 2; case 133 + .short _02067E8A - _02067A2C - 2; case 134 + .short _02067E8A - _02067A2C - 2; case 135 + .short _02067E8A - _02067A2C - 2; case 136 + .short _02067E8A - _02067A2C - 2; case 137 + .short _02067E8A - _02067A2C - 2; case 138 + .short _02067E8A - _02067A2C - 2; case 139 + .short _02067E8A - _02067A2C - 2; case 140 + .short _02067E8A - _02067A2C - 2; case 141 + .short _02067E8A - _02067A2C - 2; case 142 + .short _02067ECE - _02067A2C - 2; case 143 + .short _02067EE2 - _02067A2C - 2; case 144 + .short _02067EEE - _02067A2C - 2; case 145 + .short _02067EF6 - _02067A2C - 2; case 146 + .short _02067EFE - _02067A2C - 2; case 147 + .short _02067F06 - _02067A2C - 2; case 148 + .short _02067F0E - _02067A2C - 2; case 149 + .short _02067F16 - _02067A2C - 2; case 150 + .short _02067F1E - _02067A2C - 2; case 151 + .short _02067F26 - _02067A2C - 2; case 152 + .short _02067F2E - _02067A2C - 2; case 153 + .short _02067F36 - _02067A2C - 2; case 154 + .short _02067F3E - _02067A2C - 2; case 155 + .short _02067F52 - _02067A2C - 2; case 156 + .short _02067F66 - _02067A2C - 2; case 157 + .short _02067F6E - _02067A2C - 2; case 158 + .short _02067FF6 - _02067A2C - 2; case 159 + .short _02067FF6 - _02067A2C - 2; case 160 + .short _02067FF6 - _02067A2C - 2; case 161 + .short _02067FF6 - _02067A2C - 2; case 162 + .short _02067FF6 - _02067A2C - 2; case 163 + .short _02067FF6 - _02067A2C - 2; case 164 + .short _02067FF6 - _02067A2C - 2; case 165 + .short _02067FF6 - _02067A2C - 2; case 166 + .short _02067FF6 - _02067A2C - 2; case 167 + .short _02067FF6 - _02067A2C - 2; case 168 + .short _02067FF6 - _02067A2C - 2; case 169 + .short _02067FF6 - _02067A2C - 2; case 170 + .short _02067FF6 - _02067A2C - 2; case 171 + .short _02067FF6 - _02067A2C - 2; case 172 + .short _02067FF6 - _02067A2C - 2; case 173 + .short _02067F76 - _02067A2C - 2; case 174 + .short _02067FF6 - _02067A2C - 2; case 175 + .short _02067FF6 - _02067A2C - 2; case 176 + .short _02067FF6 - _02067A2C - 2; case 177 + .short _02067FDE - _02067A2C - 2; case 178 +_02067B92: + ldr r0, [sp, #0x0] + ldr r1, [r4, #0x0] + add sp, #0x4c + str r1, [r0, #0x0] + pop {r4-r7, pc} +_02067B9C: + bl ErrorHandling + ldr r0, [sp, #0x0] + ldrb r1, [r4, #0x0] + ldrh r2, [r0, #0x4] + mov r0, #0x1 + bic r2, r0 + mov r0, #0x1 + and r0, r1 + add r1, r2, #0x0 + orr r1, r0 + ldr r0, [sp, #0x0] + add sp, #0x4c + strh r1, [r0, #0x4] + pop {r4-r7, pc} +_02067BBA: + bl ErrorHandling + ldr r0, [sp, #0x0] + ldrh r1, [r0, #0x4] + mov r0, #0x2 + bic r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1e + orr r1, r0 + ldr r0, [sp, #0x0] + add sp, #0x4c + strh r1, [r0, #0x4] + pop {r4-r7, pc} +_02067BD6: + ldr r0, [sp, #0x0] + ldrh r1, [r0, #0x4] + mov r0, #0x4 + bic r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1d + orr r1, r0 + ldr r0, [sp, #0x0] + add sp, #0x4c + strh r1, [r0, #0x4] + pop {r4-r7, pc} +_02067BEE: + ldrh r1, [r4, #0x0] + ldr r0, [sp, #0x0] + add sp, #0x4c + strh r1, [r0, #0x6] + pop {r4-r7, pc} +_02067BF8: + ldrh r0, [r4, #0x0] + add sp, #0x4c + strh r0, [r7, #0x0] + pop {r4-r7, pc} +_02067C00: + ldrh r0, [r4, #0x0] + add sp, #0x4c + strh r0, [r7, #0x2] + pop {r4-r7, pc} +_02067C08: + ldr r0, [r4, #0x0] + add sp, #0x4c + str r0, [r7, #0x4] + pop {r4-r7, pc} +_02067C10: + ldr r0, [r4, #0x0] + add sp, #0x4c + str r0, [r7, #0x8] + pop {r4-r7, pc} +_02067C18: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0xc] + pop {r4-r7, pc} +_02067C20: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0xd] + pop {r4-r7, pc} +_02067C28: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0xe] + pop {r4-r7, pc} +_02067C30: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0xf] + pop {r4-r7, pc} +_02067C38: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x10] + pop {r4-r7, pc} +_02067C40: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x11] + pop {r4-r7, pc} +_02067C48: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x12] + pop {r4-r7, pc} +_02067C50: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x13] + pop {r4-r7, pc} +_02067C58: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x14] + pop {r4-r7, pc} +_02067C60: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x15] + pop {r4-r7, pc} +_02067C68: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x16] + pop {r4-r7, pc} +_02067C70: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x17] + pop {r4-r7, pc} +_02067C78: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x18] + pop {r4-r7, pc} +_02067C80: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x19] + pop {r4-r7, pc} +_02067C88: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x1a] + pop {r4-r7, pc} +_02067C90: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x1b] + pop {r4-r7, pc} +_02067C98: + ldrb r4, [r4, #0x0] + ldr r2, [sp, #0x4] + mov r1, #0x0 + sub r2, #0x19 + add r0, r4, #0x0 + str r2, [sp, #0x4] + bl _ll_shl + cmp r4, #0x0 + beq _02067CB6 + ldr r1, [r7, #0x1c] + add sp, #0x4c + orr r0, r1 + str r0, [r7, #0x1c] + pop {r4-r7, pc} +_02067CB6: + mov r1, #0x0 + sub r1, r1, #0x1 + ldr r2, [r7, #0x1c] + eor r0, r1 + and r0, r2 + add sp, #0x4c + str r0, [r7, #0x1c] + pop {r4-r7, pc} +_02067CC6: + ldr r0, [sp, #0x4] + ldrh r1, [r4, #0x0] + sub r0, #0x36 + str r0, [sp, #0x4] + lsl r0, r0, #0x1 + add sp, #0x4c + strh r1, [r5, r0] + pop {r4-r7, pc} +_02067CD6: + ldr r0, [sp, #0x4] + ldrb r1, [r4, #0x0] + sub r0, #0x3a + str r0, [sp, #0x4] + add r0, r5, r0 + strb r1, [r0, #0x8] + add sp, #0x4c + pop {r4-r7, pc} +_02067CE6: + ldr r0, [sp, #0x4] + ldrb r1, [r4, #0x0] + sub r0, #0x3e + str r0, [sp, #0x4] + add r0, r5, r0 + strb r1, [r0, #0xc] + add sp, #0x4c + pop {r4-r7, pc} +_02067CF6: + ldr r2, [r5, #0x10] + mov r0, #0x1f + bic r2, r0 + ldrb r1, [r4, #0x0] + mov r0, #0x1f + add sp, #0x4c + and r0, r1 + orr r0, r2 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D0A: + ldr r1, [r5, #0x10] + ldr r0, _02067FFC ; =0xFFFFFC1F + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x16 + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D1E: + ldr r1, [r5, #0x10] + ldr r0, _02068000 ; =0xFFFF83FF + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x11 + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D32: + ldr r1, [r5, #0x10] + ldr r0, _02068004 ; =0xFFF07FFF + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0xc + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D46: + ldr r1, [r5, #0x10] + ldr r0, _02068008 ; =0xFE0FFFFF + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x7 + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D5A: + ldr r1, [r5, #0x10] + ldr r0, _0206800C ; =0xC1FFFFFF + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x2 + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D6E: + ldr r1, [r5, #0x10] + ldr r0, _02068010 ; =0xBFFFFFFF + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1 + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D82: + ldr r1, [r5, #0x10] + ldr r0, _02068014 ; =0x7FFFFFFF + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1f + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D94: + ldrb r4, [r4, #0x0] + ldr r2, [sp, #0x4] + mov r1, #0x0 + sub r2, #0x4e + add r0, r4, #0x0 + str r2, [sp, #0x4] + bl _ll_shl + cmp r4, #0x0 + beq _02067DB2 + ldr r1, [r5, #0x14] + add sp, #0x4c + orr r0, r1 + str r0, [r5, #0x14] + pop {r4-r7, pc} +_02067DB2: + mov r1, #0x0 + sub r1, r1, #0x1 + ldr r2, [r5, #0x14] + eor r0, r1 + and r0, r2 + add sp, #0x4c + str r0, [r5, #0x14] + pop {r4-r7, pc} +_02067DC2: + ldrb r2, [r5, #0x18] + ldrb r1, [r4, #0x0] + mov r0, #0x1 + bic r2, r0 + mov r0, #0x1 + and r0, r1 + orr r0, r2 + add sp, #0x4c + strb r0, [r5, #0x18] + pop {r4-r7, pc} +_02067DD6: + ldrb r1, [r5, #0x18] + mov r0, #0x6 + add sp, #0x4c + bic r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1d + orr r0, r1 + strb r0, [r5, #0x18] + pop {r4-r7, pc} +_02067DEA: + ldrb r1, [r5, #0x18] + mov r0, #0xf8 + add sp, #0x4c + bic r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x18 + orr r0, r1 + strb r0, [r5, #0x18] + pop {r4-r7, pc} +_02067DFE: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r5, #0x19] + pop {r4-r7, pc} +_02067E06: + ldrh r0, [r4, #0x0] + add sp, #0x4c + strh r0, [r5, #0x1a] + pop {r4-r7, pc} +_02067E0E: + ldrh r0, [r7, #0x0] + mov r1, #0x0 + add r2, sp, #0x34 + bl GetSpeciesName + add r0, sp, #0x34 + add r1, r4, #0x0 + bl StringNotEqual + ldr r2, [r5, #0x10] + ldr r1, _02068014 ; =0x7FFFFFFF + lsl r0, r0, #0x1f + and r1, r2 + orr r0, r1 + str r0, [r5, #0x10] +_02067E2C: + mov r1, #0x0 +_02067E2E: + ldrh r0, [r4, #0x0] + add r1, r1, #0x1 + add r4, r4, #0x2 + strh r0, [r6, #0x0] + add r6, r6, #0x2 + cmp r1, #0xb + blo _02067E2E + add sp, #0x4c + pop {r4-r7, pc} +_02067E40: + ldrh r0, [r7, #0x0] + add r2, sp, #0x1c + mov r1, #0x0 + add r2, #0x2 + bl GetSpeciesName + add r0, r4, #0x0 + add r1, sp, #0x8 + mov r2, #0xb + bl FUN_02021EF0 + add r0, sp, #0x1c + add r0, #0x2 + add r1, sp, #0x8 + bl StringNotEqual + ldr r2, [r5, #0x10] + ldr r1, _02068014 ; =0x7FFFFFFF + lsl r0, r0, #0x1f + and r1, r2 + orr r0, r1 + str r0, [r5, #0x10] +_02067E6C: + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r2, #0xb + bl FUN_02021EF0 + add sp, #0x4c + pop {r4-r7, pc} +_02067E7A: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r6, #0x16] + pop {r4-r7, pc} +_02067E82: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r6, #0x17] + pop {r4-r7, pc} +_02067E8A: + ldrb r4, [r4, #0x0] + ldr r2, [sp, #0x4] + mov r1, #0x0 + sub r2, #0x7a + add r0, r4, #0x0 + str r2, [sp, #0x4] + bl _ll_shl + cmp r4, #0x0 + beq _02067EB2 + add r4, r6, #0x0 + add r4, #0x18 + ldr r3, [r6, #0x18] + ldr r2, [r4, #0x4] + orr r0, r3 + orr r1, r2 + str r0, [r6, #0x18] + add sp, #0x4c + str r1, [r4, #0x4] + pop {r4-r7, pc} +_02067EB2: + add r4, r6, #0x0 + mov r5, #0x0 + mvn r5, r5 + add r4, #0x18 + ldr r3, [r6, #0x18] + eor r0, r5 + ldr r2, [r4, #0x4] + eor r1, r5 + and r0, r3 + and r1, r2 + str r0, [r6, #0x18] + add sp, #0x4c + str r1, [r4, #0x4] + pop {r4-r7, pc} +_02067ECE: + mov r2, #0x0 +_02067ED0: + ldrh r0, [r4, #0x0] + add r2, r2, #0x1 + add r4, r4, #0x2 + strh r0, [r1, #0x0] + add r1, r1, #0x2 + cmp r2, #0x8 + blo _02067ED0 + add sp, #0x4c + pop {r4-r7, pc} +_02067EE2: + add r0, r4, #0x0 + mov r2, #0x8 + bl FUN_02021EF0 + add sp, #0x4c + pop {r4-r7, pc} +_02067EEE: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x10] + pop {r4-r7, pc} +_02067EF6: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x11] + pop {r4-r7, pc} +_02067EFE: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x12] + pop {r4-r7, pc} +_02067F06: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x13] + pop {r4-r7, pc} +_02067F0E: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x14] + pop {r4-r7, pc} +_02067F16: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x15] + pop {r4-r7, pc} +_02067F1E: + ldrh r0, [r4, #0x0] + add sp, #0x4c + strh r0, [r1, #0x16] + pop {r4-r7, pc} +_02067F26: + ldrh r0, [r4, #0x0] + add sp, #0x4c + strh r0, [r1, #0x18] + pop {r4-r7, pc} +_02067F2E: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x1a] + pop {r4-r7, pc} +_02067F36: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x1b] + pop {r4-r7, pc} +_02067F3E: + ldrb r3, [r1, #0x1c] + ldrb r2, [r4, #0x0] + mov r0, #0x7f + bic r3, r0 + mov r0, #0x7f + and r0, r2 + orr r0, r3 + strb r0, [r1, #0x1c] + add sp, #0x4c + pop {r4-r7, pc} +_02067F52: + ldrb r2, [r1, #0x1c] + mov r0, #0x80 + add sp, #0x4c + bic r2, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x18 + orr r0, r2 + strb r0, [r1, #0x1c] + pop {r4-r7, pc} +_02067F66: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x1d] + pop {r4-r7, pc} +_02067F6E: + ldrh r0, [r4, #0x0] + add sp, #0x4c + strh r0, [r1, #0x1e] + pop {r4-r7, pc} +_02067F76: + ldr r2, [r5, #0x10] + mov r0, #0x1f + bic r2, r0 + ldr r1, [r4, #0x0] + mov r0, #0x1f + and r1, r0 + and r0, r1 + add r1, r2, #0x0 + orr r1, r0 + ldr r0, _02067FFC ; =0xFFFFFC1F + str r1, [r5, #0x10] + and r1, r0 + ldr r0, [r4, #0x0] + add sp, #0x4c + lsr r0, r0, #0x5 + lsl r0, r0, #0x1b + lsr r0, r0, #0x16 + orr r1, r0 + ldr r0, _02068000 ; =0xFFFF83FF + str r1, [r5, #0x10] + and r1, r0 + ldr r0, [r4, #0x0] + lsr r0, r0, #0xa + lsl r0, r0, #0x1b + lsr r0, r0, #0x11 + orr r1, r0 + ldr r0, _02068004 ; =0xFFF07FFF + str r1, [r5, #0x10] + and r1, r0 + ldr r0, [r4, #0x0] + lsr r0, r0, #0xf + lsl r0, r0, #0x1b + lsr r0, r0, #0xc + orr r1, r0 + ldr r0, _02068008 ; =0xFE0FFFFF + str r1, [r5, #0x10] + and r1, r0 + ldr r0, [r4, #0x0] + lsr r0, r0, #0x14 + lsl r0, r0, #0x1b + lsr r0, r0, #0x7 + orr r1, r0 + ldr r0, _0206800C ; =0xC1FFFFFF + str r1, [r5, #0x10] + and r1, r0 + ldr r0, [r4, #0x0] + lsr r0, r0, #0x19 + lsl r0, r0, #0x1b + lsr r0, r0, #0x2 + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067FDE: + ldrh r0, [r7, #0x0] + mov r1, #0x0 + bl FUN_0200AA50 + add r4, r0, #0x0 + add r1, r6, #0x0 + mov r2, #0xb + bl FUN_02021EF0 + add r0, r4, #0x0 + bl FUN_02021A20 +_02067FF6: + add sp, #0x4c + pop {r4-r7, pc} + nop +_02067FFC: .word 0xFFFFFC1F +_02068000: .word 0xFFFF83FF +_02068004: .word 0xFFF07FFF +_02068008: .word 0xFE0FFFFF +_0206800C: .word 0xC1FFFFFF +_02068010: .word 0xBFFFFFFF +_02068014: .word 0x7FFFFFFF + + thumb_func_start AddMonPartyStatEncrypted +AddMonPartyStatEncrypted: ; 0x02068018 + push {r4-r6, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _02068066 + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl MonDecryptSegment + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl MonDecryptSegment + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl CalcMonChecksum + ldrh r1, [r5, #0x6] + cmp r0, r1 + beq _02068066 + cmp r0, r1 + beq _02068058 + bl ErrorHandling +_02068058: + ldrh r2, [r5, #0x6] + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl MonEncryptSegment + pop {r4-r6, pc} +_02068066: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl AddMonData + ldrh r0, [r5, #0x4] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _0206809C + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl MonEncryptSegment + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl CalcMonChecksum + strh r0, [r5, #0x6] + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl MonEncryptSegment +_0206809C: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start AddMonData +AddMonData: ; 0x020680A0 + push {r3, lr} + add r3, r1, #0x0 + sub r3, #0x9f + cmp r3, #0xa + bhi _020680F8 + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #0x6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_020680B6: ; jump table (using 16-bit offset) + .short _020680F2 - _020680B6 - 2; case 0 + .short _020680F2 - _020680B6 - 2; case 1 + .short _020680F2 - _020680B6 - 2; case 2 + .short _020680CC - _020680B6 - 2; case 3 + .short _020680F2 - _020680B6 - 2; case 4 + .short _020680F2 - _020680B6 - 2; case 5 + .short _020680F2 - _020680B6 - 2; case 6 + .short _020680F2 - _020680B6 - 2; case 7 + .short _020680F2 - _020680B6 - 2; case 8 + .short _020680F2 - _020680B6 - 2; case 9 + .short _020680F2 - _020680B6 - 2; case 10 +_020680CC: + add r1, r0, #0x0 + add r1, #0x90 + ldrh r3, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x8e + ldrh r1, [r1, #0x0] + add r1, r1, r2 + cmp r1, r3 + ble _020680E4 + add r0, #0x8e + strh r3, [r0, #0x0] + pop {r3, pc} +_020680E4: + add r1, r0, #0x0 + add r1, #0x8e + ldrh r1, [r1, #0x0] + add r0, #0x8e + add r1, r1, r2 + strh r1, [r0, #0x0] + pop {r3, pc} +_020680F2: + bl ErrorHandling + pop {r3, pc} +_020680F8: + bl AddBoxMonData + pop {r3, pc} + .balign 4 + + thumb_func_start AddBoxMonData +AddBoxMonData: ; 0x02068100 + push {r4-r7, lr} + sub sp, #0xc + add r7, r1, #0x0 + add r1, r0, #0x0 + add r6, r2, #0x0 + ldr r1, [r1, #0x0] + str r0, [sp, #0x0] + mov r2, #0x0 + bl GetSubstruct + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x1 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl GetSubstruct + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x2 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl GetSubstruct + ldr r0, [sp, #0x0] + mov r2, #0x3 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl GetSubstruct + cmp r7, #0xb2 + bls _02068142 + b _02068500 +_02068142: + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0206814E: ; jump table (using 16-bit offset) + .short _02068500 - _0206814E - 2; case 0 + .short _02068500 - _0206814E - 2; case 1 + .short _02068500 - _0206814E - 2; case 2 + .short _02068500 - _0206814E - 2; case 3 + .short _02068500 - _0206814E - 2; case 4 + .short _02068500 - _0206814E - 2; case 5 + .short _02068500 - _0206814E - 2; case 6 + .short _02068500 - _0206814E - 2; case 7 + .short _020682B4 - _0206814E - 2; case 8 + .short _020682D8 - _0206814E - 2; case 9 + .short _02068500 - _0206814E - 2; case 10 + .short _02068500 - _0206814E - 2; case 11 + .short _02068500 - _0206814E - 2; case 12 + .short _020682EE - _0206814E - 2; case 13 + .short _020682F8 - _0206814E - 2; case 14 + .short _02068302 - _0206814E - 2; case 15 + .short _0206830C - _0206814E - 2; case 16 + .short _02068316 - _0206814E - 2; case 17 + .short _02068320 - _0206814E - 2; case 18 + .short _0206832A - _0206814E - 2; case 19 + .short _02068340 - _0206814E - 2; case 20 + .short _02068356 - _0206814E - 2; case 21 + .short _0206836C - _0206814E - 2; case 22 + .short _02068382 - _0206814E - 2; case 23 + .short _02068398 - _0206814E - 2; case 24 + .short _02068500 - _0206814E - 2; case 25 + .short _02068500 - _0206814E - 2; case 26 + .short _02068500 - _0206814E - 2; case 27 + .short _02068500 - _0206814E - 2; case 28 + .short _02068500 - _0206814E - 2; case 29 + .short _02068500 - _0206814E - 2; case 30 + .short _02068500 - _0206814E - 2; case 31 + .short _02068500 - _0206814E - 2; case 32 + .short _02068500 - _0206814E - 2; case 33 + .short _02068500 - _0206814E - 2; case 34 + .short _02068500 - _0206814E - 2; case 35 + .short _02068500 - _0206814E - 2; case 36 + .short _02068500 - _0206814E - 2; case 37 + .short _02068500 - _0206814E - 2; case 38 + .short _02068500 - _0206814E - 2; case 39 + .short _02068500 - _0206814E - 2; case 40 + .short _02068500 - _0206814E - 2; case 41 + .short _02068500 - _0206814E - 2; case 42 + .short _02068500 - _0206814E - 2; case 43 + .short _02068500 - _0206814E - 2; case 44 + .short _02068500 - _0206814E - 2; case 45 + .short _02068500 - _0206814E - 2; case 46 + .short _02068500 - _0206814E - 2; case 47 + .short _02068500 - _0206814E - 2; case 48 + .short _02068500 - _0206814E - 2; case 49 + .short _02068500 - _0206814E - 2; case 50 + .short _02068500 - _0206814E - 2; case 51 + .short _02068500 - _0206814E - 2; case 52 + .short _02068500 - _0206814E - 2; case 53 + .short _02068500 - _0206814E - 2; case 54 + .short _02068500 - _0206814E - 2; case 55 + .short _02068500 - _0206814E - 2; case 56 + .short _02068500 - _0206814E - 2; case 57 + .short _020683AE - _0206814E - 2; case 58 + .short _020683AE - _0206814E - 2; case 59 + .short _020683AE - _0206814E - 2; case 60 + .short _020683AE - _0206814E - 2; case 61 + .short _020683EA - _0206814E - 2; case 62 + .short _020683EA - _0206814E - 2; case 63 + .short _020683EA - _0206814E - 2; case 64 + .short _020683EA - _0206814E - 2; case 65 + .short _02068504 - _0206814E - 2; case 66 + .short _02068504 - _0206814E - 2; case 67 + .short _02068504 - _0206814E - 2; case 68 + .short _02068504 - _0206814E - 2; case 69 + .short _02068404 - _0206814E - 2; case 70 + .short _0206842E - _0206814E - 2; case 71 + .short _02068458 - _0206814E - 2; case 72 + .short _02068482 - _0206814E - 2; case 73 + .short _020684AC - _0206814E - 2; case 74 + .short _020684D6 - _0206814E - 2; case 75 + .short _02068500 - _0206814E - 2; case 76 + .short _02068500 - _0206814E - 2; case 77 + .short _02068500 - _0206814E - 2; case 78 + .short _02068500 - _0206814E - 2; case 79 + .short _02068500 - _0206814E - 2; case 80 + .short _02068500 - _0206814E - 2; case 81 + .short _02068500 - _0206814E - 2; case 82 + .short _02068500 - _0206814E - 2; case 83 + .short _02068500 - _0206814E - 2; case 84 + .short _02068500 - _0206814E - 2; case 85 + .short _02068500 - _0206814E - 2; case 86 + .short _02068500 - _0206814E - 2; case 87 + .short _02068500 - _0206814E - 2; case 88 + .short _02068500 - _0206814E - 2; case 89 + .short _02068500 - _0206814E - 2; case 90 + .short _02068500 - _0206814E - 2; case 91 + .short _02068500 - _0206814E - 2; case 92 + .short _02068500 - _0206814E - 2; case 93 + .short _02068500 - _0206814E - 2; case 94 + .short _02068500 - _0206814E - 2; case 95 + .short _02068500 - _0206814E - 2; case 96 + .short _02068500 - _0206814E - 2; case 97 + .short _02068500 - _0206814E - 2; case 98 + .short _02068500 - _0206814E - 2; case 99 + .short _02068500 - _0206814E - 2; case 100 + .short _02068500 - _0206814E - 2; case 101 + .short _02068500 - _0206814E - 2; case 102 + .short _02068500 - _0206814E - 2; case 103 + .short _02068500 - _0206814E - 2; case 104 + .short _02068500 - _0206814E - 2; case 105 + .short _02068500 - _0206814E - 2; case 106 + .short _02068500 - _0206814E - 2; case 107 + .short _02068500 - _0206814E - 2; case 108 + .short _02068500 - _0206814E - 2; case 109 + .short _02068500 - _0206814E - 2; case 110 + .short _02068500 - _0206814E - 2; case 111 + .short _02068500 - _0206814E - 2; case 112 + .short _02068500 - _0206814E - 2; case 113 + .short _02068500 - _0206814E - 2; case 114 + .short _02068500 - _0206814E - 2; case 115 + .short _02068500 - _0206814E - 2; case 116 + .short _02068500 - _0206814E - 2; case 117 + .short _02068500 - _0206814E - 2; case 118 + .short _02068500 - _0206814E - 2; case 119 + .short _02068500 - _0206814E - 2; case 120 + .short _02068500 - _0206814E - 2; case 121 + .short _02068500 - _0206814E - 2; case 122 + .short _02068500 - _0206814E - 2; case 123 + .short _02068500 - _0206814E - 2; case 124 + .short _02068500 - _0206814E - 2; case 125 + .short _02068500 - _0206814E - 2; case 126 + .short _02068500 - _0206814E - 2; case 127 + .short _02068500 - _0206814E - 2; case 128 + .short _02068500 - _0206814E - 2; case 129 + .short _02068500 - _0206814E - 2; case 130 + .short _02068500 - _0206814E - 2; case 131 + .short _02068500 - _0206814E - 2; case 132 + .short _02068500 - _0206814E - 2; case 133 + .short _02068500 - _0206814E - 2; case 134 + .short _02068500 - _0206814E - 2; case 135 + .short _02068500 - _0206814E - 2; case 136 + .short _02068500 - _0206814E - 2; case 137 + .short _02068500 - _0206814E - 2; case 138 + .short _02068500 - _0206814E - 2; case 139 + .short _02068500 - _0206814E - 2; case 140 + .short _02068500 - _0206814E - 2; case 141 + .short _02068500 - _0206814E - 2; case 142 + .short _02068500 - _0206814E - 2; case 143 + .short _02068500 - _0206814E - 2; case 144 + .short _02068500 - _0206814E - 2; case 145 + .short _02068500 - _0206814E - 2; case 146 + .short _02068500 - _0206814E - 2; case 147 + .short _02068500 - _0206814E - 2; case 148 + .short _02068500 - _0206814E - 2; case 149 + .short _02068500 - _0206814E - 2; case 150 + .short _02068500 - _0206814E - 2; case 151 + .short _02068500 - _0206814E - 2; case 152 + .short _02068500 - _0206814E - 2; case 153 + .short _02068500 - _0206814E - 2; case 154 + .short _02068500 - _0206814E - 2; case 155 + .short _02068500 - _0206814E - 2; case 156 + .short _02068500 - _0206814E - 2; case 157 + .short _02068500 - _0206814E - 2; case 158 + .short _02068500 - _0206814E - 2; case 159 + .short _02068500 - _0206814E - 2; case 160 + .short _02068500 - _0206814E - 2; case 161 + .short _02068500 - _0206814E - 2; case 162 + .short _02068500 - _0206814E - 2; case 163 + .short _02068500 - _0206814E - 2; case 164 + .short _02068500 - _0206814E - 2; case 165 + .short _02068500 - _0206814E - 2; case 166 + .short _02068500 - _0206814E - 2; case 167 + .short _02068500 - _0206814E - 2; case 168 + .short _02068500 - _0206814E - 2; case 169 + .short _02068500 - _0206814E - 2; case 170 + .short _02068500 - _0206814E - 2; case 171 + .short _02068500 - _0206814E - 2; case 172 + .short _02068500 - _0206814E - 2; case 173 + .short _02068500 - _0206814E - 2; case 174 + .short _02068500 - _0206814E - 2; case 175 + .short _02068500 - _0206814E - 2; case 176 + .short _02068500 - _0206814E - 2; case 177 + .short _02068500 - _0206814E - 2; case 178 +_020682B4: + ldrh r0, [r4, #0x0] + mov r1, #0x64 + bl GetMonExpBySpeciesAndLevel + ldr r1, [r4, #0x8] + add r1, r1, r6 + cmp r1, r0 + bls _020682D2 + ldrh r0, [r4, #0x0] + mov r1, #0x64 + bl GetMonExpBySpeciesAndLevel + add sp, #0xc + str r0, [r4, #0x8] + pop {r4-r7, pc} +_020682D2: + add sp, #0xc + str r1, [r4, #0x8] + pop {r4-r7, pc} +_020682D8: + ldrb r0, [r4, #0xc] + add r0, r0, r6 + cmp r0, #0xff + ble _020682E8 + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0xc] + pop {r4-r7, pc} +_020682E8: + add sp, #0xc + strb r0, [r4, #0xc] + pop {r4-r7, pc} +_020682EE: + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, r6 + strb r0, [r4, #0x10] + pop {r4-r7, pc} +_020682F8: + ldrb r0, [r4, #0x11] + add sp, #0xc + add r0, r0, r6 + strb r0, [r4, #0x11] + pop {r4-r7, pc} +_02068302: + ldrb r0, [r4, #0x12] + add sp, #0xc + add r0, r0, r6 + strb r0, [r4, #0x12] + pop {r4-r7, pc} +_0206830C: + ldrb r0, [r4, #0x13] + add sp, #0xc + add r0, r0, r6 + strb r0, [r4, #0x13] + pop {r4-r7, pc} +_02068316: + ldrb r0, [r4, #0x14] + add sp, #0xc + add r0, r0, r6 + strb r0, [r4, #0x14] + pop {r4-r7, pc} +_02068320: + ldrb r0, [r4, #0x15] + add sp, #0xc + add r0, r0, r6 + strb r0, [r4, #0x15] + pop {r4-r7, pc} +_0206832A: + ldrb r0, [r4, #0x16] + add r0, r0, r6 + cmp r0, #0xff + ble _0206833A + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0x16] + pop {r4-r7, pc} +_0206833A: + add sp, #0xc + strb r0, [r4, #0x16] + pop {r4-r7, pc} +_02068340: + ldrb r0, [r4, #0x17] + add r0, r0, r6 + cmp r0, #0xff + ble _02068350 + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0x17] + pop {r4-r7, pc} +_02068350: + add sp, #0xc + strb r0, [r4, #0x17] + pop {r4-r7, pc} +_02068356: + ldrb r0, [r4, #0x18] + add r0, r0, r6 + cmp r0, #0xff + ble _02068366 + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0x18] + pop {r4-r7, pc} +_02068366: + add sp, #0xc + strb r0, [r4, #0x18] + pop {r4-r7, pc} +_0206836C: + ldrb r0, [r4, #0x19] + add r0, r0, r6 + cmp r0, #0xff + ble _0206837C + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0x19] + pop {r4-r7, pc} +_0206837C: + add sp, #0xc + strb r0, [r4, #0x19] + pop {r4-r7, pc} +_02068382: + ldrb r0, [r4, #0x1a] + add r0, r0, r6 + cmp r0, #0xff + ble _02068392 + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0x1a] + pop {r4-r7, pc} +_02068392: + add sp, #0xc + strb r0, [r4, #0x1a] + pop {r4-r7, pc} +_02068398: + ldrb r0, [r4, #0x1b] + add r0, r0, r6 + cmp r0, #0xff + ble _020683A8 + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0x1b] + pop {r4-r7, pc} +_020683A8: + add sp, #0xc + strb r0, [r4, #0x1b] + pop {r4-r7, pc} +_020683AE: + add r0, r5, #0x0 + str r0, [sp, #0x4] + add r0, #0xc + str r0, [sp, #0x4] + sub r7, #0x3a + ldr r1, [sp, #0x4] + lsl r0, r7, #0x1 + str r0, [sp, #0x8] + add r4, r5, #0x0 + ldrh r0, [r5, r0] + ldrb r1, [r1, r7] + add r4, #0x8 + bl FUN_0206AB30 + ldrb r1, [r4, r7] + add r1, r6, r1 + cmp r1, r0 + ble _020683E4 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x4] + ldrh r0, [r5, r0] + ldrb r1, [r1, r7] + bl FUN_0206AB30 + add sp, #0xc + strb r0, [r4, r7] + pop {r4-r7, pc} +_020683E4: + add sp, #0xc + strb r1, [r4, r7] + pop {r4-r7, pc} +_020683EA: + add r5, #0xc + sub r7, #0x3e + ldrb r0, [r5, r7] + add r0, r6, r0 + cmp r0, #0x3 + ble _020683FE + mov r0, #0x3 + add sp, #0xc + strb r0, [r5, r7] + pop {r4-r7, pc} +_020683FE: + add sp, #0xc + strb r0, [r5, r7] + pop {r4-r7, pc} +_02068404: + ldr r1, [r5, #0x10] + lsl r0, r1, #0x1b + lsr r0, r0, #0x1b + add r2, r0, r6 + cmp r2, #0x1f + bls _0206841E + mov r0, #0x1f + bic r1, r0 + mov r0, #0x1f + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_0206841E: + mov r0, #0x1f + bic r1, r0 + mov r0, #0x1f + and r0, r2 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_0206842E: + ldr r1, [r5, #0x10] + lsl r0, r1, #0x16 + lsr r0, r0, #0x1b + add r2, r0, r6 + cmp r2, #0x1f + ldr r0, _02068508 ; =0xFFFFFC1F + bls _0206844A + and r1, r0 + mov r0, #0x3e + lsl r0, r0, #0x4 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_0206844A: + and r1, r0 + lsl r0, r2, #0x1b + lsr r0, r0, #0x16 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02068458: + ldr r1, [r5, #0x10] + lsl r0, r1, #0x11 + lsr r0, r0, #0x1b + add r2, r0, r6 + cmp r2, #0x1f + ldr r0, _0206850C ; =0xFFFF83FF + bls _02068474 + and r1, r0 + mov r0, #0x1f + lsl r0, r0, #0xa + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02068474: + and r1, r0 + lsl r0, r2, #0x1b + lsr r0, r0, #0x11 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02068482: + ldr r1, [r5, #0x10] + lsl r0, r1, #0xc + lsr r0, r0, #0x1b + add r2, r0, r6 + cmp r2, #0x1f + ldr r0, _02068510 ; =0xFFF07FFF + bls _0206849E + and r1, r0 + mov r0, #0x3e + lsl r0, r0, #0xe + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_0206849E: + and r1, r0 + lsl r0, r2, #0x1b + lsr r0, r0, #0xc + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_020684AC: + ldr r1, [r5, #0x10] + lsl r0, r1, #0x7 + lsr r0, r0, #0x1b + add r2, r0, r6 + cmp r2, #0x1f + ldr r0, _02068514 ; =0xFE0FFFFF + bls _020684C8 + and r1, r0 + mov r0, #0x1f + lsl r0, r0, #0x14 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_020684C8: + and r1, r0 + lsl r0, r2, #0x1b + lsr r0, r0, #0x7 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_020684D6: + ldr r1, [r5, #0x10] + lsl r0, r1, #0x2 + lsr r0, r0, #0x1b + add r2, r0, r6 + cmp r2, #0x1f + ldr r0, _02068518 ; =0xC1FFFFFF + bls _020684F2 + and r1, r0 + mov r0, #0x3e + lsl r0, r0, #0x18 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_020684F2: + and r1, r0 + lsl r0, r2, #0x1b + lsr r0, r0, #0x2 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02068500: + bl ErrorHandling +_02068504: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02068508: .word 0xFFFFFC1F +_0206850C: .word 0xFFFF83FF +_02068510: .word 0xFFF07FFF +_02068514: .word 0xFE0FFFFF +_02068518: .word 0xC1FFFFFF + + thumb_func_start AllocAndLoadMonPersonal +AllocAndLoadMonPersonal: ; 0x0206851C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x2c + bl AllocFromHeap + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl LoadMonPersonal + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start GetPersonalAttr +GetPersonalAttr: ; 0x02068538 + push {r4-r6, lr} + add r4, r0, #0x0 + add r6, r1, #0x0 + cmp r4, #0x0 + bne _02068546 + bl ErrorHandling +_02068546: + cmp r6, #0x20 + bhi _0206863A + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02068556: ; jump table (using 16-bit offset) + .short _02068598 - _02068556 - 2; case 0 + .short _0206859C - _02068556 - 2; case 1 + .short _020685A0 - _02068556 - 2; case 2 + .short _020685A4 - _02068556 - 2; case 3 + .short _020685A8 - _02068556 - 2; case 4 + .short _020685AC - _02068556 - 2; case 5 + .short _020685B0 - _02068556 - 2; case 6 + .short _020685B4 - _02068556 - 2; case 7 + .short _020685B8 - _02068556 - 2; case 8 + .short _020685BC - _02068556 - 2; case 9 + .short _020685C0 - _02068556 - 2; case 10 + .short _020685C8 - _02068556 - 2; case 11 + .short _020685D0 - _02068556 - 2; case 12 + .short _020685D8 - _02068556 - 2; case 13 + .short _020685E0 - _02068556 - 2; case 14 + .short _020685E8 - _02068556 - 2; case 15 + .short _020685F0 - _02068556 - 2; case 16 + .short _020685F4 - _02068556 - 2; case 17 + .short _020685F8 - _02068556 - 2; case 18 + .short _020685FC - _02068556 - 2; case 19 + .short _02068600 - _02068556 - 2; case 20 + .short _02068604 - _02068556 - 2; case 21 + .short _02068608 - _02068556 - 2; case 22 + .short _0206860C - _02068556 - 2; case 23 + .short _02068610 - _02068556 - 2; case 24 + .short _02068614 - _02068556 - 2; case 25 + .short _02068618 - _02068556 - 2; case 26 + .short _0206861C - _02068556 - 2; case 27 + .short _02068624 - _02068556 - 2; case 28 + .short _0206862C - _02068556 - 2; case 29 + .short _02068630 - _02068556 - 2; case 30 + .short _02068634 - _02068556 - 2; case 31 + .short _02068638 - _02068556 - 2; case 32 +_02068598: + ldrb r5, [r4, #0x0] + b _0206863A +_0206859C: + ldrb r5, [r4, #0x1] + b _0206863A +_020685A0: + ldrb r5, [r4, #0x2] + b _0206863A +_020685A4: + ldrb r5, [r4, #0x3] + b _0206863A +_020685A8: + ldrb r5, [r4, #0x4] + b _0206863A +_020685AC: + ldrb r5, [r4, #0x5] + b _0206863A +_020685B0: + ldrb r5, [r4, #0x6] + b _0206863A +_020685B4: + ldrb r5, [r4, #0x7] + b _0206863A +_020685B8: + ldrb r5, [r4, #0x8] + b _0206863A +_020685BC: + ldrb r5, [r4, #0x9] + b _0206863A +_020685C0: + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x1e + lsr r5, r0, #0x1e + b _0206863A +_020685C8: + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x1c + lsr r5, r0, #0x1e + b _0206863A +_020685D0: + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x1a + lsr r5, r0, #0x1e + b _0206863A +_020685D8: + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x18 + lsr r5, r0, #0x1e + b _0206863A +_020685E0: + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x16 + lsr r5, r0, #0x1e + b _0206863A +_020685E8: + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x14 + lsr r5, r0, #0x1e + b _0206863A +_020685F0: + ldrh r5, [r4, #0xc] + b _0206863A +_020685F4: + ldrh r5, [r4, #0xe] + b _0206863A +_020685F8: + ldrb r5, [r4, #0x10] + b _0206863A +_020685FC: + ldrb r5, [r4, #0x11] + b _0206863A +_02068600: + ldrb r5, [r4, #0x12] + b _0206863A +_02068604: + ldrb r5, [r4, #0x13] + b _0206863A +_02068608: + ldrb r5, [r4, #0x14] + b _0206863A +_0206860C: + ldrb r5, [r4, #0x15] + b _0206863A +_02068610: + ldrb r5, [r4, #0x16] + b _0206863A +_02068614: + ldrb r5, [r4, #0x17] + b _0206863A +_02068618: + ldrb r5, [r4, #0x18] + b _0206863A +_0206861C: + ldrb r0, [r4, #0x19] + lsl r0, r0, #0x19 + lsr r5, r0, #0x19 + b _0206863A +_02068624: + ldrb r0, [r4, #0x19] + lsl r0, r0, #0x18 + lsr r5, r0, #0x1f + b _0206863A +_0206862C: + ldr r5, [r4, #0x1c] + b _0206863A +_02068630: + ldr r5, [r4, #0x20] + b _0206863A +_02068634: + ldr r5, [r4, #0x24] + b _0206863A +_02068638: + ldr r5, [r4, #0x28] +_0206863A: + add r0, r5, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FreeMonPersonal +FreeMonPersonal: ; 0x02068640 + push {r4, lr} + add r4, r0, #0x0 + bne _0206864A + bl ErrorHandling +_0206864A: + add r0, r4, #0x0 + bl FreeToHeap + pop {r4, pc} + .balign 4 + + thumb_func_start GetMonBaseStat_HandleFormeConversion +GetMonBaseStat_HandleFormeConversion: ; 0x02068654 + push {r3-r5, lr} + add r4, r2, #0x0 + bl ResolveMonForme + mov r1, #0x0 + bl AllocAndLoadMonPersonal + add r5, r0, #0x0 + add r1, r4, #0x0 + bl GetPersonalAttr + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FreeMonPersonal + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start GetMonBaseStat +GetMonBaseStat: ; 0x02068678 + push {r3-r5, lr} + add r4, r1, #0x0 + mov r1, #0x0 + bl AllocAndLoadMonPersonal + add r5, r0, #0x0 + add r1, r4, #0x0 + bl GetPersonalAttr + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FreeMonPersonal + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start GetPercentProgressTowardsNextLevel +GetPercentProgressTowardsNextLevel: ; 0x02068698 + push {r3-r7, lr} + add r5, r0, #0x0 + bl TryDecryptMon + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r5, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r6, #0x0 + add r1, r7, #0x0 + bl GetMonExpBySpeciesAndLevel + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r7, #0x1 + bl GetMonExpBySpeciesAndLevel + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x8 + mov r2, #0x0 + bl GetMonDataEncrypted + add r7, r0, #0x0 + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + bl TryEncryptMon + sub r1, r7, r4 + mov r0, #0x64 + mul r0, r1 + sub r1, r6, r4 + bl _u32_div_f + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3-r7, pc} + + thumb_func_start CalcMonExpToNextLevelEncrypted +CalcMonExpToNextLevelEncrypted: ; 0x020686F8 + ldr r3, _020686FC ; =CalcBoxMonExpToNextLevelEncrypted + bx r3 + .balign 4 +_020686FC: .word CalcBoxMonExpToNextLevelEncrypted + + thumb_func_start CalcBoxMonExpToNextLevelEncrypted +CalcBoxMonExpToNextLevelEncrypted: ; 0x02068700 + push {r4-r6, lr} + mov r1, #0x5 + mov r2, #0x0 + add r4, r0, #0x0 + bl GetBoxMonDataEncrypted + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r4, #0x0 + bl CalcBoxMonLevelEncrypted + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, #0x0 + mov r1, #0x8 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl GetMonExpBySpeciesAndLevel + sub r0, r0, r4 + pop {r4-r6, pc} + + thumb_func_start GetMonBaseExperienceAtCurrentLevel +GetMonBaseExperienceAtCurrentLevel: ; 0x02068734 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetMonDataEncrypted + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl GetMonDataEncrypted + add r1, r0, #0x0 + add r0, r4, #0x0 + bl GetMonExpBySpeciesAndLevel + pop {r3-r5, pc} + .balign 4 + + thumb_func_start GetMonExpBySpeciesAndLevel +GetMonExpBySpeciesAndLevel: ; 0x02068758 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x15 + bl GetMonBaseStat + add r1, r4, #0x0 + bl GetExpByGrowthRateAndLevel + pop {r4, pc} + .balign 4 + + thumb_func_start LoadGrowthTable +LoadGrowthTable: ; 0x0206876C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x8 + blt _0206877A + bl ErrorHandling +_0206877A: + add r0, r4, #0x0 + mov r1, #0x3 ; NARC_POKETOOL_PERSONAL_GROWTBL + add r2, r5, #0x0 + bl ReadWholeNarcMemberByIdPair + pop {r3-r5, pc} + .balign 4 + + thumb_func_start GetExpByGrowthRateAndLevel +GetExpByGrowthRateAndLevel: ; 0x02068788 + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + cmp r6, #0x8 + blt _02068796 + bl ErrorHandling +_02068796: + cmp r5, #0x65 + ble _0206879E + bl ErrorHandling +_0206879E: + mov r1, #0x65 + mov r0, #0x0 + lsl r1, r1, #0x2 + bl AllocFromHeap + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl LoadGrowthTable + lsl r0, r5, #0x2 + ldr r5, [r4, r0] + add r0, r4, #0x0 + bl FreeToHeap + add r0, r5, #0x0 + pop {r4-r6, pc} + + thumb_func_start CalcMonLevelEncrypted +CalcMonLevelEncrypted: ; 0x020687C0 + ldr r3, _020687C4 ; =CalcBoxMonLevelEncrypted + bx r3 + .balign 4 +_020687C4: .word CalcBoxMonLevelEncrypted + + thumb_func_start CalcBoxMonLevelEncrypted +CalcBoxMonLevelEncrypted: ; 0x020687C8 + push {r3-r7, lr} + add r5, r0, #0x0 + bl TryDecryptBoxMon + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x8 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl TryEncryptBoxMon + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + add r1, r7, #0x0 + bl CalcLevelBySpeciesAndExp + pop {r3-r7, pc} + .balign 4 + + thumb_func_start CalcLevelBySpeciesAndExp +CalcLevelBySpeciesAndExp: ; 0x02068800 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + mov r1, #0x0 + bl AllocAndLoadMonPersonal + add r6, r0, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl CalcLevelBySpeciesAndExp_PreloadedPersonal + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FreeMonPersonal + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start CalcLevelBySpeciesAndExp_PreloadedPersonal +CalcLevelBySpeciesAndExp_PreloadedPersonal: ; 0x02068824 + push {r4, lr} + mov r1, #0x15 + add r4, r2, #0x0 + bl GetPersonalAttr + ldr r1, _0206884C ; =UNK_021C5AC0 + bl LoadGrowthTable + ldr r2, _02068850 ; =UNK_021C5AC0 + 4 + mov r1, #0x1 +_02068838: + ldr r0, [r2, #0x0] + cmp r0, r4 + bhi _02068846 + add r1, r1, #0x1 + add r2, r2, #0x4 + cmp r1, #0x65 + blt _02068838 +_02068846: + sub r0, r1, #0x1 + pop {r4, pc} + nop +_0206884C: .word UNK_021C5AC0 +_02068850: .word UNK_021C5AC0 + 4 + + thumb_func_start GetMonNatureEncrypted +GetMonNatureEncrypted: ; 0x02068854 + ldr r3, _02068858 ; =GetBoxMonNatureEncrypted + bx r3 + .balign 4 +_02068858: .word GetBoxMonNatureEncrypted + + thumb_func_start GetBoxMonNatureEncrypted +GetBoxMonNatureEncrypted: ; 0x0206885C + push {r4-r6, lr} + add r5, r0, #0x0 + bl TryDecryptBoxMon + mov r1, #0x0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl GetBoxMonDataEncrypted + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl TryEncryptBoxMon + add r0, r6, #0x0 + bl GetNatureFromPersonality + pop {r4-r6, pc} + .balign 4 + + thumb_func_start GetNatureFromPersonality +GetNatureFromPersonality: ; 0x02068884 + push {r3, lr} + mov r1, #0x19 + bl _u32_div_f + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} + .balign 4 + + thumb_func_start ApplyNatureModToStat +ApplyNatureModToStat: ; 0x02068894 + push {r3, lr} + cmp r2, #0x1 + blo _0206889E + cmp r2, #0x5 + bls _020688A2 +_0206889E: + add r0, r1, #0x0 + pop {r3, pc} +_020688A2: + lsl r3, r0, #0x2 + add r3, r0, r3 + ldr r0, _020688E4 ; =sNatureStatMods + sub r2, r2, #0x1 + add r0, r0, r3 + ldrsb r2, [r2, r0] + mov r0, #0x0 + mvn r0, r0 + cmp r2, r0 + beq _020688CE + cmp r2, #0x1 + bne _020688E0 + mov r0, #110 + mul r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #100 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + b _020688E0 +_020688CE: + mov r0, #90 + mul r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #100 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 +_020688E0: + add r0, r1, #0x0 + pop {r3, pc} + .balign 4 +_020688E4: .word sNatureStatMods + + thumb_func_start MonApplyFriendshipModEncrypted +MonApplyFriendshipModEncrypted: ; 0x020688E8 + push {r3-r7, lr} + sub sp, #0x8 + add r6, r1, #0x0 + add r5, r0, #0x0 + str r2, [sp, #0x0] + cmp r6, #0x5 + bne _02068900 + bl rand_LC + mov r1, #0x1 + tst r0, r1 + bne _020689D4 +_02068900: + add r0, r5, #0x0 + mov r1, #0xad + mov r2, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + beq _020689D4 + ldr r0, _020689D8 ; =SPECIES_EGG + cmp r1, r0 + beq _020689D4 + add r0, r5, #0x0 + mov r1, #0x6 + mov r2, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #0x1 + mov r2, #0x0 + bl FUN_0206E7B8 + lsl r0, r0, #0x18 + mov r4, #0x0 + lsr r7, r0, #0x18 + add r0, r5, #0x0 + mov r1, #0x9 + add r2, r4, #0x0 + bl GetMonDataEncrypted + add r1, sp, #0x4 + strh r0, [r1, #0x0] + add r0, r4, #0x0 + ldrsh r1, [r1, r0] + cmp r1, #0x64 + blt _0206894E + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_0206894E: + cmp r1, #0xc8 + blt _02068958 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02068958: + lsl r0, r6, #0x1 + add r1, r6, r0 + ldr r0, _020689DC ; =sFriendshipModTable + add r0, r0, r1 + ldrsb r4, [r4, r0] + cmp r4, #0x0 + ble _0206897A + add r0, r5, #0x0 + mov r1, #0x9a + mov r2, #0x0 + bl GetMonDataEncrypted + cmp r0, #0xb + bne _0206897A + add r0, r4, #0x1 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 +_0206897A: + cmp r4, #0x0 + ble _02068994 + add r0, r5, #0x0 + mov r1, #0x97 + mov r2, #0x0 + bl GetMonDataEncrypted + ldr r1, [sp, #0x0] + cmp r1, r0 + bne _02068994 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 +_02068994: + cmp r4, #0x0 + ble _020689AA + cmp r7, #0x34 + bne _020689AA + mov r0, #0x96 + mul r0, r4 + mov r1, #0x64 + bl _s32_div_f + lsl r0, r0, #0x18 + asr r4, r0, #0x18 +_020689AA: + add r0, sp, #0x4 + mov r1, #0x0 + ldrsh r2, [r0, r1] + add r2, r2, r4 + strh r2, [r0, #0x0] + ldrsh r2, [r0, r1] + cmp r2, #0x0 + bge _020689BC + strh r1, [r0, #0x0] +_020689BC: + add r1, sp, #0x4 + mov r0, #0x0 + ldrsh r0, [r1, r0] + cmp r0, #0xff + ble _020689CA + mov r0, #0xff + strh r0, [r1, #0x0] +_020689CA: + add r0, r5, #0x0 + mov r1, #0x9 + add r2, sp, #0x4 + bl SetMonDataEncrypted +_020689D4: + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020689D8: .word SPECIES_EGG +_020689DC: .word sFriendshipModTable + + thumb_func_start GetMonGenderEncrypted +GetMonGenderEncrypted: ; 0x020689E0 + ldr r3, _020689E4 ; =GetBoxMonGenderEncrypted + bx r3 + .balign 4 +_020689E4: .word GetBoxMonGenderEncrypted + + thumb_func_start GetBoxMonGenderEncrypted +GetBoxMonGenderEncrypted: ; 0x020689E8 + push {r3-r7, lr} + add r5, r0, #0x0 + bl TryDecryptBoxMon + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + lsl r0, r0, #0x10 + mov r1, #0x0 + lsr r4, r0, #0x10 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl GetBoxMonDataEncrypted + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl TryEncryptBoxMon + add r0, r4, #0x0 + add r1, r7, #0x0 + bl GetGenderBySpeciesAndPersonality + pop {r3-r7, pc} + .balign 4 + + thumb_func_start GetGenderBySpeciesAndPersonality +GetGenderBySpeciesAndPersonality: ; 0x02068A20 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + mov r1, #0x0 + bl AllocAndLoadMonPersonal + add r6, r0, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl GetGenderBySpeciesAndPersonality_PreloadedPersonal + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FreeMonPersonal + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start GetGenderBySpeciesAndPersonality_PreloadedPersonal +GetGenderBySpeciesAndPersonality_PreloadedPersonal: ; 0x02068A44 + push {r4, lr} + mov r1, #0x12 + add r4, r2, #0x0 + bl GetPersonalAttr + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + beq _02068A5E + cmp r1, #0xfe + beq _02068A62 + cmp r1, #0xff + beq _02068A66 + b _02068A6A +_02068A5E: + mov r0, #0x0 + pop {r4, pc} +_02068A62: + mov r0, #0x1 + pop {r4, pc} +_02068A66: + mov r0, #0x2 + pop {r4, pc} +_02068A6A: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + cmp r1, r0 + bls _02068A76 + mov r0, #0x1 + b _02068A78 +_02068A76: + mov r0, #0x0 +_02068A78: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, pc} + .balign 4 + + thumb_func_start MonIsShiny +MonIsShiny: ; 0x02068A80 + ldr r3, _02068A84 ; =BoxMonIsShiny + bx r3 + .balign 4 +_02068A84: .word BoxMonIsShiny + + thumb_func_start BoxMonIsShiny +BoxMonIsShiny: ; 0x02068A88 + push {r3-r5, lr} + mov r1, #0x7 + mov r2, #0x0 + add r5, r0, #0x0 + bl GetBoxMonDataEncrypted + mov r1, #0x0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl GetBoxMonDataEncrypted + add r1, r0, #0x0 + add r0, r4, #0x0 + bl CalcShininessByOtIdAndPersonality + pop {r3-r5, pc} + .balign 4 + + thumb_func_start CalcShininessByOtIdAndPersonality +CalcShininessByOtIdAndPersonality: ; 0x02068AAC + ldr r3, _02068AD4 ; =0xFFFF0000 + lsl r2, r1, #0x10 + and r1, r3 + and r3, r0 + lsl r0, r0, #0x10 + lsr r3, r3, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + eor r0, r3 + lsr r2, r2, #0x10 + eor r0, r1 + eor r0, r2 + cmp r0, #0x8 + bhs _02068ACC + mov r0, #0x1 + b _02068ACE +_02068ACC: + mov r0, #0x0 +_02068ACE: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + .balign 4 +_02068AD4: .word 0xFFFF0000 + + thumb_func_start GenerateShinyPersonality +GenerateShinyPersonality: ; 0x02068AD8 + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, _02068B64 ; =0xFFFF0000 + and r0, r7 + lsr r1, r0, #0x10 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + eor r0, r1 + lsr r7, r0, #0x3 + bl rand_LC + mov r1, #0x7 + and r0, r1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + bl rand_LC + mov r1, #0x7 + and r0, r1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + mov r4, #0x0 +_02068B04: + add r0, r4, #0x0 + bl MaskOfFlagNo + tst r0, r7 + beq _02068B34 + bl rand_LC + mov r1, #0x1 + tst r0, r1 + beq _02068B26 + add r0, r4, #0x3 + bl MaskOfFlagNo + orr r0, r6 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + b _02068B56 +_02068B26: + add r0, r4, #0x3 + bl MaskOfFlagNo + orr r0, r5 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + b _02068B56 +_02068B34: + bl rand_LC + mov r1, #0x1 + tst r0, r1 + beq _02068B56 + add r0, r4, #0x3 + bl MaskOfFlagNo + orr r0, r6 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r4, #0x3 + bl MaskOfFlagNo + orr r0, r5 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 +_02068B56: + add r4, r4, #0x1 + cmp r4, #0xd + blt _02068B04 + lsl r0, r5, #0x10 + orr r0, r6 + pop {r3-r7, pc} + nop +_02068B64: .word 0xFFFF0000 + + thumb_func_start FUN_02068B68 +FUN_02068B68: ; 0x02068B68 + ldr r3, _02068B6C ; =FUN_02068B70 + bx r3 + .balign 4 +_02068B6C: .word FUN_02068B70 + + thumb_func_start FUN_02068B70 +FUN_02068B70: ; 0x02068B70 + push {r4-r7, lr} + sub sp, #0x1c + add r5, r1, #0x0 + str r0, [sp, #0xc] + add r0, r5, #0x0 + str r2, [sp, #0x10] + bl TryDecryptBoxMon + str r0, [sp, #0x18] + add r0, r5, #0x0 + mov r1, #0xad + mov r2, #0x0 + bl GetBoxMonDataEncrypted + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0x0 + bl GetBoxMonGenderEncrypted + str r0, [sp, #0x14] + add r0, r5, #0x0 + bl BoxMonIsShiny + mov r1, #0x0 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl GetBoxMonDataEncrypted + add r6, r0, #0x0 + ldr r0, _02068BF8 ; =SPECIES_EGG + cmp r4, r0 + bne _02068BCA + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + ldr r1, _02068BFC ; =SPECIES_MANAPHY + cmp r0, r1 + bne _02068BC6 + mov r0, #0x1 + b _02068BD8 +_02068BC6: + mov r0, #0x0 + b _02068BD8 +_02068BCA: + add r0, r5, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 +_02068BD8: + str r7, [sp, #0x0] + str r0, [sp, #0x4] + str r6, [sp, #0x8] + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x10] + add r1, r4, #0x0 + bl FUN_02068C00 + ldr r1, [sp, #0x18] + add r0, r5, #0x0 + bl TryEncryptBoxMon + add sp, #0x1c + pop {r4-r7, pc} + nop +_02068BF8: .word SPECIES_EGG +_02068BFC: .word SPECIES_MANAPHY + + thumb_func_start FUN_02068C00 +FUN_02068C00: ; 0x02068C00 + push {r4-r7} + add r7, r2, #0x0 + add r5, r3, #0x0 + add r4, r0, #0x0 + add r0, r1, #0x0 + ldr r3, [sp, #0x10] + ldr r2, [sp, #0x14] + mov r1, #0x0 + strh r1, [r4, #0x6] + strb r1, [r4, #0x8] + str r1, [r4, #0xc] + ldr r1, _02068E0C ; =SPECIES_CHERRIM + cmp r0, r1 + bgt _02068C68 + bge _02068D1E + add r6, r1, #0x0 + sub r6, #SPECIES_CHERRIM-SPECIES_CASTFORM + cmp r0, r6 + bgt _02068C36 + sub r1, #SPECIES_CHERRIM-SPECIES_CASTFORM + cmp r0, r1 + blt _02068C2E + b _02068D58 +_02068C2E: + cmp r0, #SPECIES_UNOWN + bne _02068C34 + b _02068D90 +_02068C34: + b _02068DD4 +_02068C36: + add r6, r1, #0x0 + sub r6, #SPECIES_CHERRIM-SPECIES_DEOXYS + cmp r0, r6 + bgt _02068C48 + sub r1, #SPECIES_CHERRIM-SPECIES_DEOXYS + cmp r0, r1 + bne _02068C46 + b _02068D76 +_02068C46: + b _02068DD4 +_02068C48: + add r6, r1, #0x0 + sub r6, #SPECIES_CHERRIM-SPECIES_WORMADAM + cmp r0, r6 + bgt _02068C66 + add r6, r1, #0x0 + sub r6, #SPECIES_CHERRIM-SPECIES_BURMY + cmp r0, r6 + blt _02068C66 + add r6, r1, #0x0 + sub r6, #SPECIES_CHERRIM-SPECIES_BURMY + cmp r0, r6 + beq _02068CAA + sub r1, #SPECIES_CHERRIM-SPECIES_WORMADAM + cmp r0, r1 + beq _02068CC8 +_02068C66: + b _02068DD4 +_02068C68: + add r6, r1, #0x0 + add r6, #SPECIES_ARCEUS-SPECIES_CHERRIM + cmp r0, r6 + bgt _02068C8E + add r6, r1, #0x0 + add r6, #SPECIES_ARCEUS-SPECIES_CHERRIM + cmp r0, r6 + bge _02068D3A + add r6, r1, #SPECIES_GASTRODON-SPECIES_CHERRIM + cmp r0, r6 + bgt _02068C8C + add r6, r1, #SPECIES_SHELLOS-SPECIES_CHERRIM + cmp r0, r6 + blt _02068C8C + beq _02068CE6 + add r1, r1, #SPECIES_GASTRODON-SPECIES_CHERRIM + cmp r0, r1 + beq _02068D02 +_02068C8C: + b _02068DD4 +_02068C8E: + add r6, r1, #0x0 + add r6, #SPECIES_EGG-SPECIES_CHERRIM + cmp r0, r6 + bgt _02068CA0 + add r1, #SPECIES_EGG-SPECIES_CHERRIM + cmp r0, r1 + bne _02068C9E + b _02068DAC +_02068C9E: + b _02068DD4 +_02068CA0: + add r1, #SPECIES_MANAPHY_EGG-SPECIES_CHERRIM + cmp r0, r1 + bne _02068CA8 + b _02068DC4 +_02068CA8: + b _02068DD4 +_02068CAA: + cmp r2, #0x2 + bls _02068CB0 + mov r2, #0x0 +_02068CB0: + mov r0, #0x75 + strh r0, [r4, #0x0] + lsr r0, r5, #0x1 + lsl r1, r2, #0x1 + add r0, #0x48 + add r0, r0, r1 + add r3, #0x92 + strh r0, [r4, #0x2] + add r0, r3, r1 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068CC8: + cmp r2, #0x2 + bls _02068CCE + mov r2, #0x0 +_02068CCE: + mov r0, #0x75 + strh r0, [r4, #0x0] + lsr r0, r5, #0x1 + lsl r1, r2, #0x1 + add r0, #0x4e + add r0, r0, r1 + add r3, #0x98 + strh r0, [r4, #0x2] + add r0, r3, r1 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068CE6: + cmp r2, #0x1 + bls _02068CEC + mov r2, #0x0 +_02068CEC: + mov r0, #0x75 + add r5, #0x54 + strh r0, [r4, #0x0] + add r0, r5, r2 + strh r0, [r4, #0x2] + add r3, #0x9e + lsl r0, r2, #0x1 + add r0, r3, r0 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068D02: + cmp r2, #0x1 + bls _02068D08 + mov r2, #0x0 +_02068D08: + mov r0, #0x75 + add r5, #0x58 + strh r0, [r4, #0x0] + add r0, r5, r2 + strh r0, [r4, #0x2] + add r3, #0xa2 + lsl r0, r2, #0x1 + add r0, r3, r0 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068D1E: + cmp r2, #0x1 + bls _02068D24 + mov r2, #0x0 +_02068D24: + mov r0, #0x75 + add r5, #0x5c + strh r0, [r4, #0x0] + add r0, r5, r2 + strh r0, [r4, #0x2] + lsl r0, r3, #0x1 + add r0, #0xa6 + add r0, r2, r0 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068D3A: + cmp r2, #0x11 + bls _02068D40 + mov r2, #0x0 +_02068D40: + mov r0, #0x75 + strh r0, [r4, #0x0] + lsr r0, r5, #0x1 + lsl r1, r2, #0x1 + add r0, #0x60 + add r0, r0, r1 + add r3, #0xaa + strh r0, [r4, #0x2] + add r0, r3, r1 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068D58: + cmp r2, #0x3 + bls _02068D5E + mov r2, #0x0 +_02068D5E: + mov r0, #0x75 + strh r0, [r4, #0x0] + lsl r0, r5, #0x1 + add r0, #0x40 + add r0, r2, r0 + strh r0, [r4, #0x2] + lsl r0, r3, #0x2 + add r0, #0x8a + add r0, r2, r0 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068D76: + cmp r2, #0x3 + bls _02068D7C + mov r2, #0x0 +_02068D7C: + mov r0, #0x75 + strh r0, [r4, #0x0] + lsr r1, r5, #0x1 + lsl r0, r2, #0x1 + add r0, r1, r0 + strh r0, [r4, #0x2] + add r3, #0x86 + strh r3, [r4, #0x4] + pop {r4-r7} + bx lr +_02068D90: + cmp r2, #0x1c + blo _02068D96 + mov r2, #0x0 +_02068D96: + mov r0, #0x75 + lsr r1, r5, #0x1 + strh r0, [r4, #0x0] + add r1, #0x8 + lsl r0, r2, #0x1 + add r0, r1, r0 + strh r0, [r4, #0x2] + add r3, #0x88 + strh r3, [r4, #0x4] + pop {r4-r7} + bx lr +_02068DAC: + cmp r2, #0x1 + bls _02068DB2 + mov r2, #0x0 +_02068DB2: + mov r0, #0x75 + strh r0, [r4, #0x0] + add r0, r2, #0x0 + add r0, #0x84 + strh r0, [r4, #0x2] + add r2, #0xce + strh r2, [r4, #0x4] + pop {r4-r7} + bx lr +_02068DC4: + mov r0, #0x75 + strh r0, [r4, #0x0] + mov r0, #0x84 + strh r0, [r4, #0x2] + mov r0, #0xce + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068DD4: + mov r1, #0x4 + strh r1, [r4, #0x0] + cmp r7, #0x1 + beq _02068DE0 + mov r2, #0x1 + b _02068DE2 +_02068DE0: + mov r2, #0x0 +_02068DE2: + mov r1, #0x6 + mul r1, r0 + add r6, r5, r1 + add r2, r6, r2 + add r1, r1, #0x4 + strh r2, [r4, #0x2] + add r1, r3, r1 + strh r1, [r4, #0x4] + ldr r1, _02068E10 ; =SPECIES_SPINDA + cmp r0, r1 + bne _02068E06 + cmp r5, #0x2 + bne _02068E06 + strh r1, [r4, #0x6] + mov r0, #0x0 + strb r0, [r4, #0x8] + ldr r0, [sp, #0x18] + str r0, [r4, #0xc] +_02068E06: + pop {r4-r7} + bx lr + nop +_02068E0C: .word SPECIES_CHERRIM +_02068E10: .word SPECIES_SPINDA + + thumb_func_start FUN_02068E14 +FUN_02068E14: ; 0x02068E14 + ldr r3, _02068E18 ; =FUN_02068E1C + bx r3 + .balign 4 +_02068E18: .word FUN_02068E1C + + thumb_func_start FUN_02068E1C +FUN_02068E1C: ; 0x02068E1C + push {r3-r7, lr} + sub sp, #0x8 + add r7, r1, #0x0 + mov r1, #0xad + mov r2, #0x0 + add r5, r0, #0x0 + bl GetBoxMonDataEncrypted + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0x0 + bl GetBoxMonGenderEncrypted + mov r1, #0x0 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r2, r1, #0x0 + bl GetBoxMonDataEncrypted + add r6, r0, #0x0 + ldr r0, _02068E80 ; =SPECIES_EGG + cmp r4, r0 + bne _02068E62 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + ldr r1, _02068E84 ; =SPECIES_MANAPHY + cmp r0, r1 + bne _02068E5E + mov r3, #0x1 + b _02068E70 +_02068E5E: + mov r3, #0x0 + b _02068E70 +_02068E62: + add r0, r5, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 +_02068E70: + str r6, [sp, #0x0] + ldr r1, [sp, #0x4] + add r0, r4, #0x0 + add r2, r7, #0x0 + bl FUN_02068E88 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02068E80: .word SPECIES_EGG +_02068E84: .word 0x000001EA + + thumb_func_start FUN_02068E88 +FUN_02068E88: ; 0x02068E88 + push {r3-r5, lr} + ldr r4, _02068FDC ; =SPECIES_CHERRIM + cmp r0, r4 + bgt _02068ED6 + bge _02068F54 + add r5, r4, #0x0 + sub r5, #0x46 + cmp r0, r5 + bgt _02068EA6 + sub r4, #0x46 + cmp r0, r4 + bge _02068F74 + cmp r0, #0xc9 + beq _02068F94 + b _02068FB8 +_02068EA6: + add r5, r4, #0x0 + sub r5, #0x23 + cmp r0, r5 + bgt _02068EB6 + sub r4, #0x23 + cmp r0, r4 + beq _02068F84 + b _02068FB8 +_02068EB6: + add r5, r4, #0x0 + sub r5, #0x8 + cmp r0, r5 + bgt _02068FB8 + add r5, r4, #0x0 + sub r5, #0x9 + cmp r0, r5 + blt _02068FB8 + add r5, r4, #0x0 + sub r5, #0x9 + cmp r0, r5 + beq _02068F14 + sub r4, #0x8 + cmp r0, r4 + beq _02068F26 + b _02068FB8 +_02068ED6: + add r5, r4, #0x0 + add r5, #0x48 + cmp r0, r5 + bgt _02068EFC + add r5, r4, #0x0 + add r5, #0x48 + cmp r0, r5 + bge _02068F62 + add r5, r4, #0x2 + cmp r0, r5 + bgt _02068FB8 + add r5, r4, #0x1 + cmp r0, r5 + blt _02068FB8 + beq _02068F38 + add r4, r4, #0x2 + cmp r0, r4 + beq _02068F46 + b _02068FB8 +_02068EFC: + add r5, r4, #0x0 + add r5, #0x49 + cmp r0, r5 + bgt _02068F0C + add r4, #0x49 + cmp r0, r4 + beq _02068FA6 + b _02068FB8 +_02068F0C: + add r4, #0x4a + cmp r0, r4 + beq _02068FB2 + b _02068FB8 +_02068F14: + cmp r3, #0x2 + bls _02068F1A + mov r3, #0x0 +_02068F1A: + lsr r1, r2, #0x1 + add r1, #0x48 + lsl r0, r3, #0x1 + mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O + add r3, r1, r0 + b _02068FCA +_02068F26: + cmp r3, #0x2 + bls _02068F2C + mov r3, #0x0 +_02068F2C: + lsr r1, r2, #0x1 + add r1, #0x4e + lsl r0, r3, #0x1 + mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O + add r3, r1, r0 + b _02068FCA +_02068F38: + cmp r3, #0x1 + bls _02068F3E + mov r3, #0x0 +_02068F3E: + add r2, #0x54 + mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O + add r3, r2, r3 + b _02068FCA +_02068F46: + cmp r3, #0x1 + bls _02068F4C + mov r3, #0x0 +_02068F4C: + add r2, #0x58 + mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O + add r3, r2, r3 + b _02068FCA +_02068F54: + cmp r3, #0x1 + bls _02068F5A + mov r3, #0x0 +_02068F5A: + add r2, #0x5c + mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O + add r3, r2, r3 + b _02068FCA +_02068F62: + cmp r3, #0x11 + bls _02068F68 + mov r3, #0x0 +_02068F68: + lsr r1, r2, #0x1 + add r1, #0x60 + lsl r0, r3, #0x1 + mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O + add r3, r1, r0 + b _02068FCA +_02068F74: + cmp r3, #0x3 + bls _02068F7A + mov r3, #0x0 +_02068F7A: + lsl r0, r2, #0x1 + add r0, #0x40 + mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O + add r3, r3, r0 + b _02068FCA +_02068F84: + cmp r3, #0x3 + bls _02068F8A + mov r3, #0x0 +_02068F8A: + lsr r1, r2, #0x1 + lsl r0, r3, #0x1 + mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O + add r3, r1, r0 + b _02068FCA +_02068F94: + cmp r3, #0x1c + blo _02068F9A + mov r3, #0x0 +_02068F9A: + lsr r1, r2, #0x1 + add r1, #0x8 + lsl r0, r3, #0x1 + mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O + add r3, r1, r0 + b _02068FCA +_02068FA6: + cmp r3, #0x1 + bls _02068FAC + mov r3, #0x0 +_02068FAC: + mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O + add r3, #0x84 + b _02068FCA +_02068FB2: + mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O + mov r3, #0x84 + b _02068FCA +_02068FB8: + mov r4, #0x5 ; NARC_POKETOOL_POKEGRA_HEIGHT + cmp r1, #0x1 + beq _02068FC2 + mov r1, #0x1 + b _02068FC4 +_02068FC2: + mov r1, #0x0 +_02068FC4: + lsl r0, r0, #0x2 + add r0, r2, r0 + add r3, r0, r1 +_02068FCA: + add r0, sp, #0x0 + add r1, r4, #0x0 + add r2, r3, #0x0 + bl ReadWholeNarcMemberByIdPair + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + pop {r3-r5, pc} + nop +_02068FDC: .word SPECIES_CHERRIM + + thumb_func_start FUN_02068FE0 +FUN_02068FE0: ; 0x02068FE0 + push {r4, lr} + add r4, r0, #0x0 + cmp r2, #0x2 + bne _02068FEE + mov r0, #0x3c + strh r0, [r4, #0x0] + b _02068FFC +_02068FEE: + mov r0, #0x6 + strh r0, [r4, #0x0] + add r0, r1, #0x0 + bl FUN_0206AA30 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 +_02068FFC: + lsl r0, r1, #0x1 + strh r0, [r4, #0x2] + add r0, r0, #0x1 + strh r0, [r4, #0x4] + mov r0, #0x0 + strh r0, [r4, #0x6] + strb r0, [r4, #0x8] + str r0, [r4, #0xc] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02069010 +FUN_02069010: ; 0x02069010 + push {r3-r5, lr} + sub sp, #0x20 + add r5, r1, #0x0 + mov r3, #0x1c + add r4, r0, #0x0 + str r3, [sp, #0x0] + add r0, sp, #0x4 + mov r1, #0x72 ; NARC_POKETOOL_POKEANM_POKEANM + mov r2, #0x0 + mul r3, r5 + bl ReadFromNarcMemberByIdPair + add r0, sp, #0xc + add r1, r4, #0x0 + mov r2, #0x14 + bl MI_CpuCopy8 + add sp, #0x20 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02069038 +FUN_02069038: ; 0x02069038 + push {r3-r7, lr} + sub sp, #0x28 + add r4, r0, #0x0 + add r6, r2, #0x0 + add r5, r3, #0x0 + mov r3, #0x1c + add r0, sp, #0x8 + add r7, r1, #0x0 + str r3, [sp, #0x0] + add r0, #0x2 + mov r1, #0x72 ; NARC_POKETOOL_POKEANM_POKEANM + mov r2, #0x0 + mul r3, r6 + bl ReadFromNarcMemberByIdPair + cmp r5, #0x2 + bne _0206906C + add r1, sp, #0x4 + mov r0, #0x6 + ldrsb r0, [r1, r0] + strh r0, [r1, #0x0] + ldrb r0, [r1, #0x7] + strh r0, [r1, #0x2] + ldr r0, [sp, #0x44] + strb r0, [r1, #0x4] + b _02069096 +_0206906C: + ldr r0, [sp, #0x40] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02014C3C + add r5, r0, #0x0 + cmp r5, #0x3 + blt _02069080 + bl ErrorHandling +_02069080: + lsl r2, r5, #0x1 + add r0, sp, #0xc + ldrsb r1, [r0, r2] + add r0, sp, #0x4 + strh r1, [r0, #0x0] + add r1, sp, #0xc + add r1, #0x1 + ldrb r1, [r1, r2] + strh r1, [r0, #0x2] + ldr r1, [sp, #0x44] + strb r1, [r0, #0x4] +_02069096: + ldr r3, [sp, #0x48] + add r0, r4, #0x0 + lsl r3, r3, #0x18 + add r1, r7, #0x0 + add r2, sp, #0x4 + lsr r3, r3, #0x18 + bl FUN_02014C54 + add sp, #0x28 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020690AC +FUN_020690AC: ; 0x020690AC + mov r2, #0x3c + strh r2, [r0, #0x0] + lsl r1, r1, #0x1 + strh r1, [r0, #0x2] + add r1, r1, #0x1 + strh r1, [r0, #0x4] + mov r1, #0x0 + strh r1, [r0, #0x6] + strb r1, [r0, #0x8] + str r1, [r0, #0xc] + bx lr + .balign 4 + + thumb_func_start FUN_020690C4 +FUN_020690C4: ; 0x020690C4 + mov r0, #0xec + bx lr + + thumb_func_start FUN_020690C8 +FUN_020690C8: ; 0x020690C8 + mov r0, #0x88 + bx lr + + thumb_func_start FUN_020690CC +FUN_020690CC: ; 0x020690CC + ldr r3, _020690D0 ; =FUN_020690D4 + bx r3 + .balign 4 +_020690D0: .word FUN_020690D4 + + thumb_func_start FUN_020690D4 +FUN_020690D4: ; 0x020690D4 + push {r3, lr} + mov r1, #0x70 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} + + thumb_func_start FUN_020690E4 +FUN_020690E4: ; 0x020690E4 + bx lr + .balign 4 + + thumb_func_start FUN_020690E8 +FUN_020690E8: ; 0x020690E8 + push {r3-r5, lr} + sub sp, #0x8 + mov r1, #0x5 + mov r2, #0x0 + add r4, r0, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl GetMonDataEncrypted + add r1, r0, #0x1 + add r0, sp, #0x0 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x8 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x15 + bl GetMonBaseStat + mov r1, #0x64 + add r5, r0, #0x0 + bl GetExpByGrowthRateAndLevel + ldr r1, [sp, #0x4] + cmp r1, r0 + bls _02069138 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0x8 + add r2, sp, #0x4 + bl SetMonDataEncrypted +_02069138: + add r0, sp, #0x0 + ldrb r1, [r0, #0x0] + cmp r1, #0x64 + bls _02069146 + add sp, #0x8 + mov r0, #0x0 + pop {r3-r5, pc} +_02069146: + add r0, r5, #0x0 + bl GetExpByGrowthRateAndLevel + ldr r1, [sp, #0x4] + cmp r1, r0 + blo _02069162 + add r0, r4, #0x0 + mov r1, #0xa0 + add r2, sp, #0x0 + bl SetMonDataEncrypted + add sp, #0x8 + mov r0, #0x1 + pop {r3-r5, pc} +_02069162: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r5, pc} + + thumb_func_start FUN_02069168 +FUN_02069168: ; 0x02069168 + push {r4-r7, lr} + sub sp, #0x44 + add r7, r1, #0x0 + str r0, [sp, #0x0] + mov r6, #0x0 + add r4, r2, #0x0 + add r0, r7, #0x0 + mov r1, #0x5 + add r2, r6, #0x0 + str r3, [sp, #0x4] + ldr r5, [sp, #0x58] + bl GetMonDataEncrypted + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x2c] + add r0, r7, #0x0 + mov r1, #0x6 + add r2, r6, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r1, r6, #0x0 + str r0, [sp, #0x28] + add r0, r7, #0x0 + add r2, r1, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x30] + add r0, r7, #0x0 + mov r1, #0x14 + add r2, r6, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + ldr r1, _020694A0 ; =0xFFFF0000 + ldr r0, [sp, #0x30] + add r2, r6, #0x0 + and r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x28] + mov r1, #0x1 + bl FUN_0206E7B8 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #0x2c] + cmp r0, #0x40 + beq _020691E4 + cmp r1, #0x3f + bne _020691E4 + cmp r4, #0x3 + beq _020691E4 + add sp, #0x44 + add r0, r6, #0x0 + pop {r4-r7, pc} +_020691E4: + cmp r5, #0x0 + bne _020691EA + add r5, sp, #0x40 +_020691EA: + mov r0, #0x0 + mov r1, #0x2a + bl AllocFromHeap + str r0, [sp, #0x18] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x18] + bl LoadMonEvolutionTable + cmp r4, #0x3 + bls _02069202 + b _0206954A +_02069202: + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0206920E: ; jump table (using 16-bit offset) + .short _02069216 - _0206920E - 2; case 0 + .short _02069486 - _0206920E - 2; case 1 + .short _020694BE - _0206920E - 2; case 2 + .short _020694BE - _0206920E - 2; case 3 +_02069216: + add r0, r7, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x14] + add r0, r7, #0x0 + mov r1, #0x9 + mov r2, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x20] + mov r0, #0x0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x1c] + mov r1, #0xa + ldr r4, [sp, #0x18] + bl _s32_div_f + str r1, [sp, #0x8] +_02069246: + ldrh r0, [r4, #0x0] + cmp r0, #0x1a + bls _0206924E + b _02069472 +_0206924E: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0206925A: ; jump table (using 16-bit offset) + .short _02069472 - _0206925A - 2; case 0 + .short _02069290 - _0206925A - 2; case 1 + .short _0206929E - _0206925A - 2; case 2 + .short _020692B4 - _0206925A - 2; case 3 + .short _020692CA - _0206925A - 2; case 4 + .short _02069472 - _0206925A - 2; case 5 + .short _02069472 - _0206925A - 2; case 6 + .short _02069472 - _0206925A - 2; case 7 + .short _020692DA - _0206925A - 2; case 8 + .short _02069306 - _0206925A - 2; case 9 + .short _02069332 - _0206925A - 2; case 10 + .short _0206935E - _0206925A - 2; case 11 + .short _02069376 - _0206925A - 2; case 12 + .short _0206938C - _0206925A - 2; case 13 + .short _0206939C - _0206925A - 2; case 14 + .short _020693A2 - _0206925A - 2; case 15 + .short _02069472 - _0206925A - 2; case 16 + .short _02069472 - _0206925A - 2; case 17 + .short _020693B2 - _0206925A - 2; case 18 + .short _020693CA - _0206925A - 2; case 19 + .short _020693E2 - _0206925A - 2; case 20 + .short _020693F6 - _0206925A - 2; case 21 + .short _0206940E - _0206925A - 2; case 22 + .short _0206942C - _0206925A - 2; case 23 + .short _0206944A - _0206925A - 2; case 24 + .short _02069458 - _0206925A - 2; case 25 + .short _02069466 - _0206925A - 2; case 26 +_02069290: + ldr r0, [sp, #0x20] + cmp r0, #0xdc + blo _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0x1 + str r0, [r5, #0x0] + b _02069472 +_0206929E: + bl FUN_0201277C + cmp r0, #0x0 + bne _0206936C + ldr r0, [sp, #0x20] + cmp r0, #0xdc + blo _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0x2 + str r0, [r5, #0x0] + b _02069472 +_020692B4: + bl FUN_0201277C + cmp r0, #0x1 + bne _0206936C + ldr r0, [sp, #0x20] + cmp r0, #0xdc + blo _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0x3 + str r0, [r5, #0x0] + b _02069472 +_020692CA: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0x4 + str r0, [r5, #0x0] + b _02069472 +_020692DA: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _0206936C + add r0, r7, #0x0 + mov r1, #0xa4 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x34] + add r0, r7, #0x0 + mov r1, #0xa5 + mov r2, #0x0 + bl GetMonDataEncrypted + ldr r1, [sp, #0x34] + cmp r1, r0 + bls _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0x8 + str r0, [r5, #0x0] + b _02069472 +_02069306: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _0206936C + add r0, r7, #0x0 + mov r1, #0xa4 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x38] + add r0, r7, #0x0 + mov r1, #0xa5 + mov r2, #0x0 + bl GetMonDataEncrypted + ldr r1, [sp, #0x38] + cmp r1, r0 + bne _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0x9 + str r0, [r5, #0x0] + b _02069472 +_02069332: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _0206936C + add r0, r7, #0x0 + mov r1, #0xa4 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x3c] + add r0, r7, #0x0 + mov r1, #0xa5 + mov r2, #0x0 + bl GetMonDataEncrypted + ldr r1, [sp, #0x3c] + cmp r1, r0 + bhs _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0xa + str r0, [r5, #0x0] + b _02069472 +_0206935E: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _0206936C + ldr r0, [sp, #0x8] + cmp r0, #0x5 + blt _0206936E +_0206936C: + b _02069472 +_0206936E: + ldrh r6, [r4, #0x4] + mov r0, #0xb + str r0, [r5, #0x0] + b _02069472 +_02069376: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _02069472 + ldr r0, [sp, #0x8] + cmp r0, #0x5 + blt _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0xc + str r0, [r5, #0x0] + b _02069472 +_0206938C: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0xd + str r0, [r5, #0x0] + b _02069472 +_0206939C: + mov r0, #0xe + str r0, [r5, #0x0] + b _02069472 +_020693A2: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x10] + cmp r1, r0 + bgt _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0xf + str r0, [r5, #0x0] + b _02069472 +_020693B2: + bl FUN_0201277C + cmp r0, #0x0 + bne _02069472 + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x28] + cmp r0, r1 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x12 + str r0, [r5, #0x0] + b _02069472 +_020693CA: + bl FUN_0201277C + cmp r0, #0x1 + bne _02069472 + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x28] + cmp r0, r1 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x13 + str r0, [r5, #0x0] + b _02069472 +_020693E2: + ldrh r1, [r4, #0x2] + add r0, r7, #0x0 + bl FUN_02069A38 + cmp r0, #0x1 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x14 + str r0, [r5, #0x0] + b _02069472 +_020693F6: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _02069472 + ldrh r1, [r4, #0x2] + bl FUN_0206BAE4 + cmp r0, #0x1 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x15 + str r0, [r5, #0x0] + b _02069472 +_0206940E: + add r0, r7, #0x0 + mov r1, #0x6f + mov r2, #0x0 + bl GetMonDataEncrypted + cmp r0, #0x0 + bne _02069472 + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x16 + str r0, [r5, #0x0] + b _02069472 +_0206942C: + add r0, r7, #0x0 + mov r1, #0x6f + mov r2, #0x0 + bl GetMonDataEncrypted + cmp r0, #0x1 + bne _02069472 + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x17 + str r0, [r5, #0x0] + b _02069472 +_0206944A: + ldr r1, [sp, #0x4] + cmp r1, r0 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x18 + str r0, [r5, #0x0] + b _02069472 +_02069458: + ldr r1, [sp, #0x4] + cmp r1, r0 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x19 + str r0, [r5, #0x0] + b _02069472 +_02069466: + ldr r1, [sp, #0x4] + cmp r1, r0 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x1a + str r0, [r5, #0x0] +_02069472: + cmp r6, #0x0 + bne _0206954A + ldr r0, [sp, #0x24] + add r4, r4, #0x6 + add r0, r0, #0x1 + str r0, [sp, #0x24] + cmp r0, #0x7 + bge _02069484 + b _02069246 +_02069484: + b _0206954A +_02069486: + ldr r3, [sp, #0x18] + mov r4, #0x0 + mov r7, #0x6 + mov r2, #0x5 +_0206948E: + ldrh r0, [r3, #0x0] + cmp r0, #0x5 + beq _0206949A + cmp r0, #0x6 + beq _020694A4 + b _020694B0 +_0206949A: + ldrh r6, [r3, #0x4] + str r2, [r5, #0x0] + b _020694B0 + .balign 4 +_020694A0: .word 0xFFFF0000 +_020694A4: + ldrh r1, [r3, #0x2] + ldr r0, [sp, #0x28] + cmp r0, r1 + bne _020694B0 + ldrh r6, [r3, #0x4] + str r7, [r5, #0x0] +_020694B0: + cmp r6, #0x0 + bne _0206954A + add r4, r4, #0x1 + add r3, r3, #0x6 + cmp r4, #0x7 + blt _0206948E + b _0206954A +_020694BE: + mov r0, #0x0 + ldr r4, [sp, #0x18] + str r0, [sp, #0xc] +_020694C4: + ldrh r2, [r4, #0x0] + cmp r2, #0x7 + bne _020694E4 + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x4] + cmp r0, r1 + bne _020694E4 + ldr r0, [sp, #0xc] + mov r1, #0x6 + mul r1, r0 + ldr r0, [sp, #0x18] + add r0, r0, r1 + ldrh r6, [r0, #0x4] + mov r0, #0x0 + str r0, [r5, #0x0] + b _0206954A +_020694E4: + cmp r2, #0x10 + bne _02069510 + add r0, r7, #0x0 + mov r1, #0x6f + mov r2, #0x0 + bl GetMonDataEncrypted + cmp r0, #0x0 + bne _02069510 + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x4] + cmp r0, r1 + bne _02069510 + ldr r0, [sp, #0xc] + mov r1, #0x6 + mul r1, r0 + ldr r0, [sp, #0x18] + add r0, r0, r1 + ldrh r6, [r0, #0x4] + mov r0, #0x0 + str r0, [r5, #0x0] + b _0206954A +_02069510: + ldrh r0, [r4, #0x0] + cmp r0, #0x11 + bne _0206953E + add r0, r7, #0x0 + mov r1, #0x6f + mov r2, #0x0 + bl GetMonDataEncrypted + cmp r0, #0x1 + bne _0206953E + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x4] + cmp r0, r1 + bne _0206953E + ldr r0, [sp, #0xc] + mov r1, #0x6 + mul r1, r0 + ldr r0, [sp, #0x18] + add r0, r0, r1 + ldrh r6, [r0, #0x4] + mov r0, #0x0 + str r0, [r5, #0x0] + b _0206954A +_0206953E: + ldr r0, [sp, #0xc] + add r4, r4, #0x6 + add r0, r0, #0x1 + str r0, [sp, #0xc] + cmp r0, #0x7 + blt _020694C4 +_0206954A: + ldr r0, [sp, #0x18] + bl FreeToHeap + add r0, r6, #0x0 + add sp, #0x44 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start ReadFromPersonalPmsNarc +ReadFromPersonalPmsNarc: ; 0x02069558 + push {r3-r4, lr} + sub sp, #0x4c + add r4, r0, #0x0 + mov r1, #0x0 + add r0, sp, #0x0 + strh r1, [r0, #0x0] + ldr r0, _020695A0 ; =SPECIES_EGG + cmp r4, r0 + blo _0206956E + bl ErrorHandling +_0206956E: + add r0, sp, #0x4 + bl FS_InitFile + ldr r1, _020695A4 ; =__local_str_poketool_personal_pms_narc + add r0, sp, #0x4 + bl FS_OpenFile + add r0, sp, #0x4 + lsl r1, r4, #0x1 + mov r2, #0x0 + bl FS_SeekFile + add r0, sp, #0x4 + add r1, sp, #0x0 + mov r2, #0x2 + bl FS_ReadFile + add r0, sp, #0x4 + bl FS_CloseFile + add r0, sp, #0x0 + ldrh r0, [r0, #0x0] + add sp, #0x4c + pop {r3-r4, pc} + nop +_020695A0: .word SPECIES_EGG +_020695A4: .word __local_str_poketool_personal_pms_narc + + thumb_func_start GetEggSpecies +GetEggSpecies: ; 0x020695A8 + push {r3, lr} + cmp r0, #SPECIES_SUDOWOODO + bgt _020695CC + cmp r0, #SPECIES_MARILL + blt _020695BA + beq _020695EC + cmp r0, #SPECIES_SUDOWOODO + beq _020695EC + b _020695E8 +_020695BA: + cmp r0, #SPECIES_MR_MIME + bgt _020695C6 + bge _020695EC + cmp r0, #SPECIES_CHANSEY + beq _020695EC + b _020695E8 +_020695C6: + cmp r0, #SPECIES_SNORLAX + beq _020695EC + b _020695E8 +_020695CC: + cmp r0, #SPECIES_MANTINE + bgt _020695D8 + bge _020695EC + cmp r0, #SPECIES_WOBBUFFET + beq _020695EC + b _020695E8 +_020695D8: + ldr r1, _020695F0 ; =SPECIES_ROSELIA + cmp r0, r1 + bgt _020695E2 + beq _020695EC + b _020695E8 +_020695E2: + add r1, #SPECIES_CHIMECHO-SPECIES_ROSELIA + cmp r0, r1 + beq _020695EC +_020695E8: + bl ReadFromPersonalPmsNarc +_020695EC: + pop {r3, pc} + nop +_020695F0: .word SPECIES_ROSELIA + + thumb_func_start InitBoxMonMoveset +InitBoxMonMoveset: ; 0x020695F4 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + mov r0, #0x0 + mov r1, #0x2c + bl AllocFromHeap + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl TryDecryptBoxMon + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + add r7, r0, #0x0 + add r0, r5, #0x0 + bl CalcBoxMonLevelEncrypted + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r2, [sp, #0x0] + add r0, r4, #0x0 + add r1, r7, #0x0 + bl LoadWotbl_HandleAlternateForme + ldr r0, [sp, #0x0] + ldrh r1, [r0, #0x0] + ldr r0, _02069690 ; =0x0000FFFF + cmp r1, r0 + beq _0206967C + ldr r4, [sp, #0x0] + lsl r7, r6, #0x9 +_02069648: + ldrh r1, [r4, #0x0] + mov r0, #0xfe + lsl r0, r0, #0x8 + and r0, r1 + cmp r0, r7 + bgt _0206967C + ldr r0, _02069694 ; =0x000001FF + and r0, r1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020696A8 + ldr r1, _02069690 ; =0x0000FFFF + cmp r0, r1 + bne _02069672 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02069718 +_02069672: + add r4, r4, #0x2 + ldrh r1, [r4, #0x0] + ldr r0, _02069690 ; =0x0000FFFF + cmp r1, r0 + bne _02069648 +_0206967C: + ldr r0, [sp, #0x0] + bl FreeToHeap + ldr r1, [sp, #0x4] + add r0, r5, #0x0 + bl TryEncryptBoxMon + add sp, #0x8 + pop {r3-r7, pc} + nop +_02069690: .word 0x0000FFFF +_02069694: .word 0x000001FF + + thumb_func_start FUN_02069698 +FUN_02069698: ; 0x02069698 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_020690E4 + add r1, r4, #0x0 + bl FUN_020696A8 + pop {r4, pc} + + thumb_func_start FUN_020696A8 +FUN_020696A8: ; 0x020696A8 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r1, #0x0 + ldr r1, _02069700 ; =0x0000FFFF + add r6, r0, #0x0 + str r1, [sp, #0x4] + bl TryDecryptBoxMon + mov r4, #0x0 + str r0, [sp, #0x0] + add r7, r4, #0x0 +_020696BE: + add r1, r4, #0x0 + add r0, r6, #0x0 + add r1, #0x36 + add r2, r7, #0x0 + bl GetBoxMonDataEncrypted + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bne _020696E0 + lsl r2, r4, #0x18 + add r0, r6, #0x0 + add r1, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_020697D4 + str r5, [sp, #0x4] + b _020696F0 +_020696E0: + cmp r0, r5 + bne _020696EA + ldr r0, _02069704 ; =0x0000FFFE + str r0, [sp, #0x4] + b _020696F0 +_020696EA: + add r4, r4, #0x1 + cmp r4, #0x4 + blt _020696BE +_020696F0: + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + bl TryEncryptBoxMon + ldr r0, [sp, #0x4] + add sp, #0x8 + pop {r3-r7, pc} + nop +_02069700: .word 0x0000FFFF +_02069704: .word 0x0000FFFE + + thumb_func_start FUN_02069708 +FUN_02069708: ; 0x02069708 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_020690E4 + add r1, r4, #0x0 + bl FUN_02069718 + pop {r4, pc} + + thumb_func_start FUN_02069718 +FUN_02069718: ; 0x02069718 + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + str r1, [sp, #0x0] + bl TryDecryptBoxMon + str r0, [sp, #0xc] + add r0, sp, #0x18 + mov r4, #0x0 + str r0, [sp, #0x4] + add r7, sp, #0x14 + add r6, sp, #0x10 +_02069730: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x37 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + ldr r1, [sp, #0x4] + mov r2, #0x0 + strh r0, [r1, #0x0] + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3b + bl GetBoxMonDataEncrypted + add r1, r4, #0x0 + strb r0, [r7, #0x0] + add r0, r5, #0x0 + add r1, #0x3f + mov r2, #0x0 + bl GetBoxMonDataEncrypted + strb r0, [r6, #0x0] + ldr r0, [sp, #0x4] + add r4, r4, #0x1 + add r0, r0, #0x2 + str r0, [sp, #0x4] + add r7, r7, #0x1 + add r6, r6, #0x1 + cmp r4, #0x3 + blt _02069730 + ldr r0, [sp, #0x0] + add r1, sp, #0x10 + strh r0, [r1, #0xe] + ldr r0, [sp, #0x0] + mov r1, #0x5 + bl FUN_0206AB18 + add r1, sp, #0x10 + strb r0, [r1, #0x7] + mov r4, #0x0 + add r0, sp, #0x18 + strb r4, [r1, #0x3] + str r0, [sp, #0x8] + add r7, sp, #0x14 + add r6, sp, #0x10 +_0206978A: + add r1, r4, #0x0 + ldr r2, [sp, #0x8] + add r0, r5, #0x0 + add r1, #0x36 + bl SetBoxMonDataEncrypted + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3a + add r2, r7, #0x0 + bl SetBoxMonDataEncrypted + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3e + add r2, r6, #0x0 + bl SetBoxMonDataEncrypted + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r0, r0, #0x2 + str r0, [sp, #0x8] + add r7, r7, #0x1 + add r6, r6, #0x1 + cmp r4, #0x4 + blt _0206978A + ldr r1, [sp, #0xc] + add r0, r5, #0x0 + bl TryEncryptBoxMon + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020697CC +FUN_020697CC: ; 0x020697CC + ldr r3, _020697D0 ; =FUN_020697D4 + bx r3 + .balign 4 +_020697D0: .word FUN_020697D4 + + thumb_func_start FUN_020697D4 +FUN_020697D4: ; 0x020697D4 + push {r0-r3} + push {r3-r5, lr} + add r4, r2, #0x0 + add r1, r4, #0x0 + add r1, #0x36 + add r2, sp, #0x14 + add r5, r0, #0x0 + bl SetBoxMonDataEncrypted + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3e + mov r2, #0x0 + bl GetBoxMonDataEncrypted + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + add r0, sp, #0x10 + ldrh r0, [r0, #0x4] + bl FUN_0206AB30 + add r1, sp, #0x0 + strb r0, [r1, #0x0] + add r4, #0x3a + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, sp, #0x0 + bl SetBoxMonDataEncrypted + pop {r3-r5} + pop {r3} + add sp, #0x10 + bx r3 + .balign 4 + + thumb_func_start FUN_02069818 +FUN_02069818: ; 0x02069818 + push {r3-r7, lr} + sub sp, #0x10 + add r7, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0x0 + mov r1, #0x2c + str r2, [sp, #0x0] + str r0, [sp, #0x8] + bl AllocFromHeap + add r4, r0, #0x0 + add r0, r7, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + add r0, r7, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0xc] + add r0, r7, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r0, [sp, #0x4] + ldr r1, [sp, #0xc] + add r2, r4, #0x0 + bl LoadWotbl_HandleAlternateForme + ldr r0, [r5, #0x0] + lsl r0, r0, #0x1 + ldrh r2, [r4, r0] + ldr r0, _020698D8 ; =0x0000FFFF + cmp r2, r0 + bne _0206987A + add r0, r4, #0x0 + bl FreeToHeap + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0206987A: + mov r0, #0xfe + lsl r0, r0, #0x8 + add r3, r2, #0x0 + and r3, r0 + lsl r6, r6, #0x9 + cmp r6, r3 + beq _020698AC + ldr r1, _020698D8 ; =0x0000FFFF +_0206988A: + ldr r2, [r5, #0x0] + add r2, r2, #0x1 + str r2, [r5, #0x0] + lsl r2, r2, #0x1 + ldrh r2, [r4, r2] + cmp r2, r1 + bne _020698A4 + add r0, r4, #0x0 + bl FreeToHeap + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_020698A4: + add r3, r2, #0x0 + and r3, r0 + cmp r6, r3 + bne _0206988A +_020698AC: + cmp r6, r3 + bne _020698CC + ldr r0, _020698DC ; =0x000001FF + add r1, r2, #0x0 + and r1, r0 + ldr r0, [sp, #0x0] + strh r1, [r0, #0x0] + ldr r0, [r5, #0x0] + ldr r1, [sp, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] + ldrh r1, [r1, #0x0] + add r0, r7, #0x0 + bl FUN_02069698 + str r0, [sp, #0x8] +_020698CC: + add r0, r4, #0x0 + bl FreeToHeap + ldr r0, [sp, #0x8] + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_020698D8: .word 0x0000FFFF +_020698DC: .word 0x000001FF + + thumb_func_start FUN_020698E0 +FUN_020698E0: ; 0x020698E0 + ldr r3, _020698E4 ; =FUN_020698E8 + bx r3 + .balign 4 +_020698E4: .word FUN_020698E8 + + thumb_func_start FUN_020698E8 +FUN_020698E8: ; 0x020698E8 + push {r4-r6, lr} + sub sp, #0x8 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r1, #0x36 + mov r2, #0x0 + add r5, r0, #0x0 + bl GetBoxMonDataEncrypted + add r1, sp, #0x0 + strh r0, [r1, #0x4] + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3a + mov r2, #0x0 + bl GetBoxMonDataEncrypted + add r1, sp, #0x0 + strb r0, [r1, #0x2] + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3e + mov r2, #0x0 + bl GetBoxMonDataEncrypted + add r1, sp, #0x0 + strb r0, [r1, #0x0] + add r1, r6, #0x0 + add r0, r5, #0x0 + add r1, #0x36 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + add r1, sp, #0x0 + strh r0, [r1, #0x6] + add r1, r6, #0x0 + add r0, r5, #0x0 + add r1, #0x3a + mov r2, #0x0 + bl GetBoxMonDataEncrypted + add r1, sp, #0x0 + strb r0, [r1, #0x3] + add r1, r6, #0x0 + add r0, r5, #0x0 + add r1, #0x3e + mov r2, #0x0 + bl GetBoxMonDataEncrypted + add r1, sp, #0x0 + strb r0, [r1, #0x1] + add r1, r4, #0x0 + add r2, sp, #0x4 + add r0, r5, #0x0 + add r1, #0x36 + add r2, #0x2 + bl SetBoxMonDataEncrypted + add r1, r4, #0x0 + add r2, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x3a + add r2, #0x3 + bl SetBoxMonDataEncrypted + add r4, #0x3e + add r2, sp, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, #0x1 + bl SetBoxMonDataEncrypted + add r1, r6, #0x0 + add r0, r5, #0x0 + add r1, #0x36 + add r2, sp, #0x4 + bl SetBoxMonDataEncrypted + add r1, r6, #0x0 + add r2, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x3a + add r2, #0x2 + bl SetBoxMonDataEncrypted + add r6, #0x3e + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, sp, #0x0 + bl SetBoxMonDataEncrypted + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020699A4 +FUN_020699A4: ; 0x020699A4 + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x3 + bhs _02069A0A + mov r7, #0x0 + add r6, sp, #0x0 +_020699B2: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x37 + add r2, r7, #0x0 + bl GetMonDataEncrypted + add r1, r4, #0x0 + strh r0, [r6, #0x2] + add r0, r5, #0x0 + add r1, #0x3b + mov r2, #0x0 + bl GetMonDataEncrypted + add r1, r4, #0x0 + strb r0, [r6, #0x1] + add r0, r5, #0x0 + add r1, #0x3f + mov r2, #0x0 + bl GetMonDataEncrypted + add r1, r4, #0x0 + add r2, sp, #0x0 + strb r0, [r6, #0x0] + add r0, r5, #0x0 + add r1, #0x36 + add r2, #0x2 + bl SetMonDataEncrypted + add r1, r4, #0x0 + add r2, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x3a + add r2, #0x1 + bl SetMonDataEncrypted + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3e + add r2, sp, #0x0 + bl SetMonDataEncrypted + add r4, r4, #0x1 + cmp r4, #0x3 + blo _020699B2 +_02069A0A: + mov r1, #0x0 + add r0, sp, #0x0 + strh r1, [r0, #0x2] + strb r1, [r0, #0x1] + strb r1, [r0, #0x0] + add r2, sp, #0x0 + add r0, r5, #0x0 + mov r1, #0x39 + add r2, #0x2 + bl SetMonDataEncrypted + add r2, sp, #0x0 + add r0, r5, #0x0 + mov r1, #0x3d + add r2, #0x1 + bl SetMonDataEncrypted + add r0, r5, #0x0 + mov r1, #0x41 + add r2, sp, #0x0 + bl SetMonDataEncrypted + pop {r3-r7, pc} + + thumb_func_start FUN_02069A38 +FUN_02069A38: ; 0x02069A38 + push {r3-r7, lr} + mov r4, #0x0 + add r6, r0, #0x0 + add r5, r1, #0x0 + add r7, r4, #0x0 +_02069A42: + add r1, r4, #0x0 + add r0, r6, #0x0 + add r1, #0x36 + add r2, r7, #0x0 + bl GetMonDataEncrypted + cmp r5, r0 + beq _02069A58 + add r4, r4, #0x1 + cmp r4, #0x4 + blt _02069A42 +_02069A58: + cmp r4, #0x4 + beq _02069A60 + mov r0, #0x1 + pop {r3-r7, pc} +_02069A60: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02069A64 +FUN_02069A64: ; 0x02069A64 + push {r4-r5, lr} + sub sp, #0x1c + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + add r3, r4, #0x0 + mov r2, #0x11 +_02069A74: + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02069A74 + ldrh r1, [r4, #0x4] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1f + beq _02069A8E + mov r0, #0x1 + bic r1, r0 + mov r0, #0x1 + orr r0, r1 + strh r0, [r4, #0x4] +_02069A8E: + add r0, r4, #0x0 + mov r1, #0x9f + add r2, sp, #0x0 + bl SetMonDataEncrypted + add r0, r4, #0x0 + mov r1, #0xa2 + add r2, sp, #0x0 + bl SetMonDataEncrypted + add r0, r4, #0x0 + mov r1, #0xa3 + add r2, sp, #0x0 + bl SetMonDataEncrypted + mov r0, #0x0 + bl CreateNewSealsObject + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0xa9 + add r2, r5, #0x0 + bl SetMonDataEncrypted + add r0, r5, #0x0 + bl FreeToHeap + add r0, r4, #0x0 + mov r1, #0xa1 + add r2, sp, #0x0 + bl SetMonDataEncrypted + mov r0, #0x0 + add r1, sp, #0x4 + mov r2, #0x18 + bl MIi_CpuClearFast + add r0, r4, #0x0 + mov r1, #0xaa + add r2, sp, #0x4 + bl SetMonDataEncrypted + add r0, r4, #0x0 + bl UpdateMonLevelAndRecalcStats + add sp, #0x1c + pop {r4-r5, pc} + + thumb_func_start FUN_02069AEC +FUN_02069AEC: ; 0x02069AEC + push {r3-r7, lr} + str r0, [sp, #0x0] + bl FUN_0206B9AC + add r7, r0, #0x0 + mov r6, #0x1 + mov r5, #0x0 + cmp r7, #0x0 + ble _02069B3C +_02069AFE: + ldr r0, [sp, #0x0] + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + add r4, r0, #0x0 + bl GetMonDataEncrypted + cmp r0, #0x0 + beq _02069B36 + add r0, r4, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl GetMonDataEncrypted + cmp r0, #0x0 + bne _02069B36 + add r0, r4, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, r6 + bls _02069B36 + add r6, r0, #0x0 +_02069B36: + add r5, r5, #0x1 + cmp r5, r7 + blt _02069AFE +_02069B3C: + add r0, r6, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02069B40 +FUN_02069B40: ; 0x02069B40 + push {r3, lr} + sub sp, #0x8 + add r3, r0, #0x0 + mov r0, #0x2 + str r0, [sp, #0x0] + add r0, sp, #0x4 + mov r1, #0x6d ; NARC_POKETOOL_POKEZUKAN + mov r2, #0x0 + lsl r3, r3, #0x1 + bl ReadFromNarcMemberByIdPair + add r0, sp, #0x4 + ldrh r0, [r0, #0x0] + add sp, #0x8 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02069B60 +FUN_02069B60: ; 0x02069B60 + push {r3, lr} + sub sp, #0x8 + add r3, r0, #0x0 + mov r2, #0x0 + add r0, sp, #0x4 + strh r2, [r0, #0x0] + cmp r3, #0x97 + bhi _02069B7E + mov r0, #0x2 + str r0, [sp, #0x0] + add r0, sp, #0x4 + mov r1, #0x91 ; NARC_POKETOOL_SHINZUKAN + lsl r3, r3, #0x1 + bl ReadFromNarcMemberByIdPair +_02069B7E: + add r0, sp, #0x4 + ldrh r0, [r0, #0x0] + add sp, #0x8 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02069B88 +FUN_02069B88: ; 0x02069B88 + push {r3-r4} + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r2, #0x1d +_02069B90: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02069B90 + ldr r0, [r4, #0x0] + str r0, [r3, #0x0] + pop {r3-r4} + bx lr + + thumb_func_start FUN_02069BA0 +FUN_02069BA0: ; 0x02069BA0 + push {r3-r4} + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r2, #0x11 +_02069BA8: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02069BA8 + pop {r3-r4} + bx lr + + thumb_func_start FUN_02069BB4 +FUN_02069BB4: ; 0x02069BB4 + push {r3-r4} + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r2, #0x11 +_02069BBC: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02069BBC + pop {r3-r4} + bx lr + + thumb_func_start FUN_02069BC8 +FUN_02069BC8: ; 0x02069BC8 + ldr r3, _02069BCC ; =FUN_02069BD0 + bx r3 + .balign 4 +_02069BCC: .word FUN_02069BD0 + + thumb_func_start FUN_02069BD0 +FUN_02069BD0: ; 0x02069BD0 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x0 + add r2, r1, #0x0 + bl GetBoxMonDataEncrypted + add r1, r4, #0x0 + bl FUN_02069BE4 + pop {r4, pc} + + thumb_func_start FUN_02069BE4 +FUN_02069BE4: ; 0x02069BE4 + push {r4, lr} + add r4, r1, #0x0 + bl GetNatureFromPersonality + lsl r1, r0, #0x2 + add r1, r0, r1 + ldr r0, _02069BF8 ; =UNK_020F7F16 + add r0, r0, r1 + ldrsb r0, [r4, r0] + pop {r4, pc} + .balign 4 +_02069BF8: .word UNK_020F7F16 + + thumb_func_start FUN_02069BFC +FUN_02069BFC: ; 0x02069BFC + push {r3-r7, lr} + add r4, r0, #0x0 + add r7, r1, #0x0 + mov r0, #0x0 + mov r1, #0x2c + add r5, r2, #0x0 + bl AllocFromHeap + add r6, r0, #0x0 + add r0, r4, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + bl LoadWotbl_HandleAlternateForme + ldrh r1, [r6, #0x0] + ldr r0, _02069C44 ; =0x0000FFFF + mov r4, #0x0 + cmp r1, r0 + beq _02069C3A + ldr r1, _02069C48 ; =0x000001FF + ldr r2, _02069C44 ; =0x0000FFFF + add r0, r6, #0x0 +_02069C28: + ldrh r3, [r0, #0x0] + add r0, r0, #0x2 + add r4, r4, #0x1 + and r3, r1 + strh r3, [r5, #0x0] + ldrh r3, [r0, #0x0] + add r5, r5, #0x2 + cmp r3, r2 + bne _02069C28 +_02069C3A: + add r0, r6, #0x0 + bl FreeToHeap + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 +_02069C44: .word 0x0000FFFF +_02069C48: .word 0x000001FF + + thumb_func_start FUN_02069C4C +FUN_02069C4C: ; 0x02069C4C + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_0206B9AC + add r6, r0, #0x0 + bl rand_LC + mov r1, #0x1 + lsl r1, r1, #0xe + cmp r0, r1 + beq _02069C70 + lsl r1, r1, #0x1 + cmp r0, r1 + beq _02069C70 + mov r1, #0x3 + lsl r1, r1, #0xe + cmp r0, r1 + bne _02069CF2 +_02069C70: + bl rand_LC + add r1, r6, #0x0 + bl _s32_div_f + add r0, r5, #0x0 + add r7, r1, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + add r4, r0, #0x0 + bl GetMonDataEncrypted + cmp r0, #0x0 + beq _02069C70 + add r0, r4, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl GetMonDataEncrypted + cmp r0, #0x0 + bne _02069C70 + add r0, r7, #0x0 + bl MaskOfFlagNo + add r1, r0, #0x0 + lsl r1, r1, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + bl FUN_02069CF4 + cmp r0, #0x0 + bne _02069CF2 + add r5, sp, #0x0 + mov r6, #0x7 +_02069CB8: + bl rand_LC + strb r0, [r5, #0x0] + ldrb r2, [r5, #0x0] + add r1, r2, #0x0 + and r1, r6 + beq _02069CB8 + mov r0, #0xf0 + tst r0, r2 + beq _02069CD0 + add r0, sp, #0x0 + strb r1, [r0, #0x0] +_02069CD0: + add r1, sp, #0x0 + ldrb r2, [r1, #0x0] + lsl r0, r2, #0x4 + orr r0, r2 + strb r0, [r1, #0x0] + ldrb r2, [r1, #0x0] + mov r0, #0xf3 + and r0, r2 + strb r0, [r1, #0x0] + ldrb r0, [r1, #0x0] + add r2, sp, #0x0 + add r0, r0, #0x1 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x99 + bl SetMonDataEncrypted +_02069CF2: + pop {r3-r7, pc} + + thumb_func_start FUN_02069CF4 +FUN_02069CF4: ; 0x02069CF4 + push {r3-r7, lr} + mov r6, #0x0 + add r5, r1, #0x0 + str r0, [sp, #0x0] + mov r4, #0x1 + add r7, r6, #0x0 + cmp r5, #0x0 + beq _02069D32 +_02069D04: + mov r0, #0x1 + tst r0, r5 + beq _02069D26 + ldr r0, [sp, #0x0] + add r1, r6, #0x0 + bl FUN_0206B9B0 + mov r1, #0x99 + mov r2, #0x0 + bl GetMonDataEncrypted + cmp r0, #0x0 + beq _02069D26 + add r0, r7, #0x0 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_02069D26: + lsl r0, r5, #0x17 + add r6, r6, #0x1 + lsl r4, r4, #0x1 + lsr r5, r0, #0x18 + bne _02069D04 + b _02069D4A +_02069D32: + add r1, r6, #0x0 + bl FUN_0206B9B0 + mov r1, #0x99 + add r2, r6, #0x0 + bl GetMonDataEncrypted + cmp r0, #0x0 + beq _02069D4A + add r0, r7, #0x1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_02069D4A: + add r0, r7, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02069D50 +FUN_02069D50: ; 0x02069D50 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + add r5, r1, #0x0 + bl FUN_0206B9AC + mov r6, #0x0 + str r0, [sp, #0x4] + cmp r0, #0x0 + ble _02069DC2 + add r4, sp, #0x8 +_02069D66: + ldr r0, [sp, #0x0] + add r1, r6, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + add r7, r0, #0x0 + bl GetMonDataEncrypted + cmp r0, #0x0 + beq _02069DBA + add r0, r7, #0x0 + mov r1, #0x99 + mov r2, #0x0 + bl GetMonDataEncrypted + strb r0, [r4, #0x0] + ldrb r1, [r4, #0x0] + mov r0, #0xf + and r0, r1 + beq _02069DBA + cmp r0, r5 + blt _02069D98 + cmp r5, #0x4 + ble _02069DA2 +_02069D98: + ldrb r1, [r4, #0x0] + mov r0, #0xf0 + and r0, r1 + strb r0, [r4, #0x0] + b _02069DA6 +_02069DA2: + sub r0, r1, r5 + strb r0, [r4, #0x0] +_02069DA6: + ldrb r0, [r4, #0x0] + cmp r0, #0x0 + bne _02069DB0 + mov r0, #0x10 + strb r0, [r4, #0x0] +_02069DB0: + add r0, r7, #0x0 + mov r1, #0x99 + add r2, sp, #0x8 + bl SetMonDataEncrypted +_02069DBA: + ldr r0, [sp, #0x4] + add r6, r6, #0x1 + cmp r6, r0 + blt _02069D66 +_02069DC2: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02069DC8 +FUN_02069DC8: ; 0x02069DC8 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl FUN_0206B9AC + add r7, r0, #0x0 + bl rand_LC + mov r1, #0x3 + bl _s32_div_f + cmp r1, #0x0 + bne _02069E70 + mov r4, #0x0 + cmp r7, #0x0 + ble _02069E70 + sub r0, r7, #0x1 + str r0, [sp, #0x0] +_02069DEC: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + add r6, r0, #0x0 + bl GetMonDataEncrypted + cmp r0, #0x0 + beq _02069E6A + add r0, r6, #0x0 + mov r1, #0x99 + mov r2, #0x0 + bl GetMonDataEncrypted + add r1, sp, #0x4 + strb r0, [r1, #0x0] + add r0, r1, #0x0 + ldrb r1, [r0, #0x0] + mov r0, #0xf + tst r0, r1 + beq _02069E6A + cmp r4, #0x0 + beq _02069E40 + add r0, r5, #0x0 + sub r1, r4, #0x1 + bl FUN_0206B9B0 + mov r1, #0x99 + mov r2, #0x0 + add r6, r0, #0x0 + bl GetMonDataEncrypted + mov r1, #0xf0 + tst r0, r1 + bne _02069E40 + add r0, r6, #0x0 + mov r1, #0x99 + add r2, sp, #0x4 + bl SetMonDataEncrypted +_02069E40: + ldr r0, [sp, #0x0] + cmp r4, r0 + bge _02069E6A + add r0, r5, #0x0 + add r1, r4, #0x1 + bl FUN_0206B9B0 + mov r1, #0x99 + mov r2, #0x0 + add r6, r0, #0x0 + bl GetMonDataEncrypted + mov r1, #0xf0 + tst r0, r1 + bne _02069E6A + add r0, r6, #0x0 + mov r1, #0x99 + add r2, sp, #0x4 + bl SetMonDataEncrypted + add r4, r4, #0x1 +_02069E6A: + add r4, r4, #0x1 + cmp r4, r7 + blt _02069DEC +_02069E70: + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02069E74 +FUN_02069E74: ; 0x02069E74 + ldr r3, _02069E78 ; =FUN_02069E7C + bx r3 + .balign 4 +_02069E78: .word FUN_02069E7C + + thumb_func_start FUN_02069E7C +FUN_02069E7C: ; 0x02069E7C + push {r3, lr} + mov r1, #0x99 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + mov r1, #0xf + tst r0, r1 + beq _02069E90 + mov r0, #0x1 + pop {r3, pc} +_02069E90: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02069E94 +FUN_02069E94: ; 0x02069E94 + ldr r3, _02069E98 ; =FUN_02069E9C + bx r3 + .balign 4 +_02069E98: .word FUN_02069E9C + + thumb_func_start FUN_02069E9C +FUN_02069E9C: ; 0x02069E9C + push {r3, lr} + mov r1, #0x99 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0xf + tst r0, r1 + beq _02069EB4 + mov r0, #0x0 + pop {r3, pc} +_02069EB4: + mov r0, #0xf0 + tst r0, r1 + beq _02069EBE + mov r0, #0x1 + pop {r3, pc} +_02069EBE: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02069EC4 +FUN_02069EC4: ; 0x02069EC4 + ldr r3, _02069EC8 ; =FUN_02069ECC + bx r3 + .balign 4 +_02069EC8: .word FUN_02069ECC + + thumb_func_start FUN_02069ECC +FUN_02069ECC: ; 0x02069ECC + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xa + mov r2, #0x0 + bl GetBoxMonDataEncrypted + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x6 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + ldr r1, _02069F20 ; =SPECIES_ARCEUS + cmp r4, r1 + bne _02069F1C + cmp r6, #0x79 + bne _02069F1C + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #0x1 + mov r2, #0x0 + bl FUN_0206E7B8 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl GetArceusTypeByPlate + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0x70 + add r2, sp, #0x0 + bl SetBoxMonDataEncrypted +_02069F1C: + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02069F20: .word SPECIES_ARCEUS + + thumb_func_start GetArceusTypeByPlate +GetArceusTypeByPlate: ; 0x02069F24 + sub r0, #0x7d + cmp r0, #0xf + bhi _02069F96 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02069F36: ; jump table (using 16-bit offset) + .short _02069F56 - _02069F36 - 2; case 0 + .short _02069F5A - _02069F36 - 2; case 1 + .short _02069F5E - _02069F36 - 2; case 2 + .short _02069F62 - _02069F36 - 2; case 3 + .short _02069F66 - _02069F36 - 2; case 4 + .short _02069F6A - _02069F36 - 2; case 5 + .short _02069F6E - _02069F36 - 2; case 6 + .short _02069F72 - _02069F36 - 2; case 7 + .short _02069F76 - _02069F36 - 2; case 8 + .short _02069F7A - _02069F36 - 2; case 9 + .short _02069F7E - _02069F36 - 2; case 10 + .short _02069F82 - _02069F36 - 2; case 11 + .short _02069F86 - _02069F36 - 2; case 12 + .short _02069F8A - _02069F36 - 2; case 13 + .short _02069F8E - _02069F36 - 2; case 14 + .short _02069F92 - _02069F36 - 2; case 15 +_02069F56: + mov r0, #0xa + bx lr +_02069F5A: + mov r0, #0xb + bx lr +_02069F5E: + mov r0, #0xd + bx lr +_02069F62: + mov r0, #0xc + bx lr +_02069F66: + mov r0, #0xf + bx lr +_02069F6A: + mov r0, #0x1 + bx lr +_02069F6E: + mov r0, #0x3 + bx lr +_02069F72: + mov r0, #0x4 + bx lr +_02069F76: + mov r0, #0x2 + bx lr +_02069F7A: + mov r0, #0xe + bx lr +_02069F7E: + mov r0, #0x6 + bx lr +_02069F82: + mov r0, #0x5 + bx lr +_02069F86: + mov r0, #0x7 + bx lr +_02069F8A: + mov r0, #0x10 + bx lr +_02069F8E: + mov r0, #0x11 + bx lr +_02069F92: + mov r0, #0x8 + bx lr +_02069F96: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start LoadWotbl_HandleAlternateForme +LoadWotbl_HandleAlternateForme: ; 0x02069F9C + push {r4, lr} + add r4, r2, #0x0 + bl ResolveMonForme + add r2, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x21 ; NARC_POKETOOL_PERSONAL_WOTBL + bl ReadWholeNarcMemberByIdPair + pop {r4, pc} + + thumb_func_start FUN_02069FB0 +FUN_02069FB0: ; 0x02069FB0 + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, _0206A010 ; =0x000001B9 + add r4, r2, #0x0 + add r5, r1, #0x0 + add r6, r3, #0x0 + cmp r4, r0 + bne _02069FFC + add r0, r5, #0x0 + bl FUN_02005F14 + cmp r0, #0x0 + bne _02069FE2 + mov r0, #0x1 + bl FUN_02005E80 + ldr r0, [sp, #0x20] + ldr r3, [sp, #0x18] + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020056AC + pop {r3-r7, pc} +_02069FE2: + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + beq _02069FEE + mov r0, #0x1 + bl FUN_02005E80 +_02069FEE: + ldr r2, [sp, #0x18] + add r0, r7, #0x0 + mov r1, #0x0 + add r3, r6, #0x0 + bl FUN_02005E90 + pop {r3-r7, pc} +_02069FFC: + ldr r0, [sp, #0x20] + ldr r3, [sp, #0x18] + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020056AC + pop {r3-r7, pc} + nop +_0206A010: .word 0x000001B9 + + thumb_func_start FUN_0206A014 +FUN_0206A014: ; 0x0206A014 + push {r3-r6, lr} + sub sp, #0xc + ldr r6, [sp, #0x20] + add r5, r0, #0x0 + str r6, [sp, #0x0] + ldr r6, [sp, #0x24] + add r4, r2, #0x0 + str r6, [sp, #0x4] + bl FUN_0206A054 + cmp r4, #0xe + bne _0206A050 + add r0, r5, #0x0 + mov r1, #0xa3 + mov r2, #0x0 + bl GetMonDataEncrypted + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0xa2 + add r2, sp, #0x8 + bl SetMonDataEncrypted + mov r0, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x9f + add r2, sp, #0x8 + bl SetMonDataEncrypted +_0206A050: + add sp, #0xc + pop {r3-r6, pc} + + thumb_func_start FUN_0206A054 +FUN_0206A054: ; 0x0206A054 + push {r0-r3} + push {r3-r4, lr} + sub sp, #0x4 + ldr r2, [sp, #0x24] + add r4, r0, #0x0 + str r2, [sp, #0x0] + mov r2, #0x0 + bl FUN_020808AC + ldr r2, _0206A090 ; =gGameVersion + add r0, r4, #0x0 + mov r1, #0x79 + bl SetBoxMonDataEncrypted + add r0, r4, #0x0 + mov r1, #0x9a + add r2, sp, #0x18 + bl SetBoxMonDataEncrypted + add r0, r4, #0x0 + mov r1, #0x9d + add r2, sp, #0x20 + bl SetBoxMonDataEncrypted + add sp, #0x4 + pop {r3-r4} + pop {r3} + add sp, #0x10 + bx r3 + nop +_0206A090: .word gGameVersion + + thumb_func_start FUN_0206A094 +FUN_0206A094: ; 0x0206A094 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + mov r0, #0x81 + add r7, r2, #0x0 + tst r0, r1 + bne _0206A12E + bl rand_LC + mov r1, #0x64 + bl _s32_div_f + add r4, r1, #0x0 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r5, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x0] + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + mov r2, #0x10 + bl GetMonBaseStat_HandleFormeConversion + add r1, sp, #0x4 + strh r0, [r1, #0x2] + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + mov r2, #0x11 + bl GetMonBaseStat_HandleFormeConversion + add r1, sp, #0x4 + strh r0, [r1, #0x0] + ldrh r2, [r1, #0x2] + ldrh r0, [r1, #0x0] + cmp r2, r0 + bne _0206A104 + cmp r2, #0x0 + beq _0206A104 + add r2, sp, #0x4 + add r0, r5, #0x0 + mov r1, #0x6 + add r2, #0x2 + bl SetMonDataEncrypted + add sp, #0x8 + pop {r3-r7, pc} +_0206A104: + ldr r0, _0206A134 ; =sItemOdds + lsl r1, r7, #0x2 + ldrh r0, [r0, r1] + cmp r4, r0 + blo _0206A12E + ldr r0, _0206A138 ; =sItemOdds + 2 + ldrh r0, [r0, r1] + cmp r4, r0 + add r2, sp, #0x4 + bhs _0206A126 + add r0, r5, #0x0 + mov r1, #0x6 + add r2, #0x2 + bl SetMonDataEncrypted + add sp, #0x8 + pop {r3-r7, pc} +_0206A126: + add r0, r5, #0x0 + mov r1, #0x6 + bl SetMonDataEncrypted +_0206A12E: + add sp, #0x8 + pop {r3-r7, pc} + nop +_0206A134: .word sItemOdds +_0206A138: .word sItemOdds + 2 + + thumb_func_start FUN_0206A13C +FUN_0206A13C: ; 0x0206A13C + ldr r3, _0206A140 ; =FUN_0206A144 + bx r3 + .balign 4 +_0206A140: .word FUN_0206A144 + + thumb_func_start FUN_0206A144 +FUN_0206A144: ; 0x0206A144 + push {r4-r6, lr} + add r6, r1, #0x0 + mov r1, #0xad + mov r2, #0x0 + add r5, r0, #0x0 + bl GetBoxMonDataEncrypted + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + add r1, r0, #0x0 + add r0, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0206A16C + pop {r4-r6, pc} + + thumb_func_start FUN_0206A16C +FUN_0206A16C: ; 0x0206A16C + push {r4, lr} + ldr r3, _0206A1C0 ; =SPECIES_EGG + cmp r0, r3 + bne _0206A178 + mov r0, #0x0 + pop {r4, pc} +_0206A178: + cmp r2, #0x20 + bhs _0206A186 + mov r3, #0x1 + add r4, r3, #0x0 + lsl r4, r2 + mov r2, #0x1d + b _0206A1B0 +_0206A186: + cmp r2, #0x40 + bhs _0206A196 + mov r3, #0x1 + sub r2, #0x20 + add r4, r3, #0x0 + lsl r4, r2 + mov r2, #0x1e + b _0206A1B0 +_0206A196: + cmp r2, #0x60 + bhs _0206A1A6 + mov r3, #0x1 + sub r2, #0x40 + add r4, r3, #0x0 + lsl r4, r2 + mov r2, #0x1f + b _0206A1B0 +_0206A1A6: + mov r3, #0x1 + sub r2, #0x60 + add r4, r3, #0x0 + lsl r4, r2 + mov r2, #0x20 +_0206A1B0: + bl GetMonBaseStat_HandleFormeConversion + tst r0, r4 + beq _0206A1BC + mov r0, #0x1 + pop {r4, pc} +_0206A1BC: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_0206A1C0: .word SPECIES_EGG + + thumb_func_start FUN_0206A1C4 +FUN_0206A1C4: ; 0x0206A1C4 + ldr r3, _0206A1C8 ; =FUN_0206A1CC + bx r3 + .balign 4 +_0206A1C8: .word FUN_0206A1CC + + thumb_func_start FUN_0206A1CC +FUN_0206A1CC: ; 0x0206A1CC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl TryDecryptBoxMon + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + mov r1, #0x0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl GetBoxMonDataEncrypted + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x18 + bl GetMonBaseStat + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0x19 + bl GetMonBaseStat + str r0, [sp, #0x0] + cmp r0, #0x0 + beq _0206A226 + mov r0, #0x1 + tst r0, r6 + beq _0206A21A + add r0, r5, #0x0 + mov r1, #0xa + add r2, sp, #0x0 + bl SetBoxMonDataEncrypted + b _0206A230 +_0206A21A: + add r0, r5, #0x0 + mov r1, #0xa + add r2, sp, #0x4 + bl SetBoxMonDataEncrypted + b _0206A230 +_0206A226: + add r0, r5, #0x0 + mov r1, #0xa + add r2, sp, #0x4 + bl SetBoxMonDataEncrypted +_0206A230: + add r0, r5, #0x0 + add r1, r7, #0x0 + bl TryEncryptBoxMon + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0206A23C +FUN_0206A23C: ; 0x0206A23C + push {r4-r7, lr} + sub sp, #0x1c + add r5, r0, #0x0 + mov r0, #0x0 + str r1, [sp, #0x0] + bl AllocMonZeroed + str r0, [sp, #0x4] + ldr r1, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02069B88 + ldr r0, [sp, #0x4] + ldr r1, [r5, #0x0] + mov r2, #0x0 + bl GetSubstruct + add r4, r0, #0x0 + ldr r0, [sp, #0x4] + ldr r1, [r5, #0x0] + mov r2, #0x1 + bl GetSubstruct + add r6, r0, #0x0 + ldr r0, [sp, #0x4] + ldr r1, [r5, #0x0] + mov r2, #0x2 + bl GetSubstruct + add r7, r0, #0x0 + ldr r0, [sp, #0x4] + ldr r1, [r5, #0x0] + mov r2, #0x3 + bl GetSubstruct + str r0, [sp, #0x8] + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + mov r2, #0x0 + bl GetSubstruct + str r0, [sp, #0xc] + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + mov r2, #0x1 + bl GetSubstruct + str r0, [sp, #0x10] + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + mov r2, #0x2 + bl GetSubstruct + str r0, [sp, #0x14] + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + mov r2, #0x3 + bl GetSubstruct + ldr r2, [sp, #0x4] + str r0, [sp, #0x18] + ldr r0, [sp, #0x4] + ldrh r2, [r2, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl MonDecryptSegment + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl MonDecryptSegment + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl MonDecryptSegment + ldr r0, [sp, #0x0] + str r0, [r5, #0x0] + ldr r2, [sp, #0xc] + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0xc] + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0xc] + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0xc] + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0xc] + ldr r2, [sp, #0x10] + ldmia r6!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x10] + ldmia r6!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x10] + ldmia r6!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x10] + ldmia r6!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x10] + ldr r2, [sp, #0x14] + ldmia r7!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x14] + ldmia r7!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x14] + ldmia r7!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x14] + ldmia r7!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x14] + mov r0, #0x10 +_0206A32E: + ldr r1, [sp, #0x8] + ldrh r2, [r1, #0x0] + add r1, r1, #0x2 + str r1, [sp, #0x8] + ldr r1, [sp, #0x18] + strh r2, [r1, #0x0] + add r1, r1, #0x2 + str r1, [sp, #0x18] + sub r0, r0, #0x1 + bne _0206A32E + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl CalcMonChecksum + strh r0, [r5, #0x6] + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl MonEncryptSegment + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl MonEncryptSegment + ldr r0, [sp, #0x4] + bl FreeToHeap + add sp, #0x1c + pop {r4-r7, pc} + + thumb_func_start LoadMonPersonal +LoadMonPersonal: ; 0x0206A370 + ldr r3, _0206A37C ; =ReadWholeNarcMemberByIdPair + add r2, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x2 ; NARC_POKETOOL_PERSONAL_PERSONAL + bx r3 + nop +_0206A37C: .word ReadWholeNarcMemberByIdPair + + thumb_func_start LoadMonBaseStats_HandleAlternateForme +LoadMonBaseStats_HandleAlternateForme: ; 0x0206A380 + push {r4, lr} + add r4, r2, #0x0 + bl ResolveMonForme + add r2, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x2 ; NARC_POKETOOL_PERSONAL_PERSONAL + bl ReadWholeNarcMemberByIdPair + pop {r4, pc} + + thumb_func_start LoadMonEvolutionTable +LoadMonEvolutionTable: ; 0x0206A394 + ldr r3, _0206A3A0 ; =ReadWholeNarcMemberByIdPair + add r2, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x22 ; NARC_POKETOOL_PERSONAL_EVO + bx r3 + nop +_0206A3A0: .word ReadWholeNarcMemberByIdPair + + thumb_func_start MonEncryptSegment +MonEncryptSegment: ; 0x0206A3A4 + push {r0-r3} + push {r3-r7, lr} + add r5, r0, #0x0 + mov r4, #0x0 + lsr r6, r1, #0x1 + beq _0206A3C6 + add r7, sp, #0x20 +_0206A3B2: + add r0, r7, #0x0 + bl MonEncryptionLCRNG + ldrh r1, [r5, #0x0] + add r4, r4, #0x1 + eor r0, r1 + strh r0, [r5, #0x0] + add r5, r5, #0x2 + cmp r4, r6 + blo _0206A3B2 +_0206A3C6: + pop {r3-r7} + pop {r3} + add sp, #0x10 + bx r3 + .balign 4 + + thumb_func_start MonDecryptSegment +MonDecryptSegment: ; 0x0206A3D0 + ldr r3, _0206A3D4 ; =MonEncryptSegment + bx r3 + .balign 4 +_0206A3D4: .word MonEncryptSegment + + thumb_func_start MonEncryptionLCRNG +MonEncryptionLCRNG: ; 0x0206A3D8 + ldr r2, [r0, #0x0] + ldr r1, _0206A3F0 ; =0x41C64E6D + add r3, r2, #0x0 + mul r3, r1 + ldr r1, _0206A3F4 ; =0x00006073 + add r1, r3, r1 + str r1, [r0, #0x0] + lsr r0, r1, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr + nop +_0206A3F0: .word 0x41C64E6D +_0206A3F4: .word 0x00006073 + + thumb_func_start CalcMonChecksum +CalcMonChecksum: ; 0x0206A3F8 + push {r3-r4} + mov r3, #0x0 + add r2, r3, #0x0 + lsr r4, r1, #0x1 + beq _0206A412 +_0206A402: + ldrh r1, [r0, #0x0] + add r2, r2, #0x1 + add r0, r0, #0x2 + add r1, r3, r1 + lsl r1, r1, #0x10 + lsr r3, r1, #0x10 + cmp r2, r4 + blo _0206A402 +_0206A412: + add r0, r3, #0x0 + pop {r3-r4} + bx lr + + thumb_func_start GetSubstruct +GetSubstruct: ; 0x0206A418 + push {r3, lr} + mov r3, #0x3e + lsl r3, r3, #0xc + and r3, r1 + lsr r3, r3, #0xd + cmp r3, #0x1f + bhi _0206A478 + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #0x6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_0206A432: ; jump table (using 16-bit offset) + .short _0206A472 - _0206A432 - 2; case 0 + .short _0206A4A4 - _0206A432 - 2; case 1 + .short _0206A4D4 - _0206A432 - 2; case 2 + .short _0206A504 - _0206A432 - 2; case 3 + .short _0206A534 - _0206A432 - 2; case 4 + .short _0206A564 - _0206A432 - 2; case 5 + .short _0206A594 - _0206A432 - 2; case 6 + .short _0206A5C6 - _0206A432 - 2; case 7 + .short _0206A5F6 - _0206A432 - 2; case 8 + .short _0206A626 - _0206A432 - 2; case 9 + .short _0206A656 - _0206A432 - 2; case 10 + .short _0206A686 - _0206A432 - 2; case 11 + .short _0206A6B6 - _0206A432 - 2; case 12 + .short _0206A6E8 - _0206A432 - 2; case 13 + .short _0206A718 - _0206A432 - 2; case 14 + .short _0206A748 - _0206A432 - 2; case 15 + .short _0206A778 - _0206A432 - 2; case 16 + .short _0206A7A8 - _0206A432 - 2; case 17 + .short _0206A7D8 - _0206A432 - 2; case 18 + .short _0206A80A - _0206A432 - 2; case 19 + .short _0206A83A - _0206A432 - 2; case 20 + .short _0206A86A - _0206A432 - 2; case 21 + .short _0206A89A - _0206A432 - 2; case 22 + .short _0206A8CA - _0206A432 - 2; case 23 + .short _0206A472 - _0206A432 - 2; case 24 + .short _0206A4A4 - _0206A432 - 2; case 25 + .short _0206A4D4 - _0206A432 - 2; case 26 + .short _0206A504 - _0206A432 - 2; case 27 + .short _0206A534 - _0206A432 - 2; case 28 + .short _0206A564 - _0206A432 - 2; case 29 + .short _0206A594 - _0206A432 - 2; case 30 + .short _0206A5C6 - _0206A432 - 2; case 31 +_0206A472: + add r0, #0x8 + cmp r2, #0x3 + bls _0206A47A +_0206A478: + b _0206A8F8 +_0206A47A: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A486: ; jump table (using 16-bit offset) + .short _0206A48E - _0206A486 - 2; case 0 + .short _0206A492 - _0206A486 - 2; case 1 + .short _0206A498 - _0206A486 - 2; case 2 + .short _0206A49E - _0206A486 - 2; case 3 +_0206A48E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A492: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A498: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A49E: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A4A4: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A59A + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A4B6: ; jump table (using 16-bit offset) + .short _0206A4BE - _0206A4B6 - 2; case 0 + .short _0206A4C2 - _0206A4B6 - 2; case 1 + .short _0206A4C8 - _0206A4B6 - 2; case 2 + .short _0206A4CE - _0206A4B6 - 2; case 3 +_0206A4BE: + add r1, r0, #0x0 + b _0206A8F8 +_0206A4C2: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A4C8: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A4CE: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A4D4: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A59A + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A4E6: ; jump table (using 16-bit offset) + .short _0206A4EE - _0206A4E6 - 2; case 0 + .short _0206A4F2 - _0206A4E6 - 2; case 1 + .short _0206A4F8 - _0206A4E6 - 2; case 2 + .short _0206A4FE - _0206A4E6 - 2; case 3 +_0206A4EE: + add r1, r0, #0x0 + b _0206A8F8 +_0206A4F2: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A4F8: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A4FE: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A504: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A59A + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A516: ; jump table (using 16-bit offset) + .short _0206A51E - _0206A516 - 2; case 0 + .short _0206A522 - _0206A516 - 2; case 1 + .short _0206A528 - _0206A516 - 2; case 2 + .short _0206A52E - _0206A516 - 2; case 3 +_0206A51E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A522: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A528: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A52E: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A534: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A59A + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A546: ; jump table (using 16-bit offset) + .short _0206A54E - _0206A546 - 2; case 0 + .short _0206A552 - _0206A546 - 2; case 1 + .short _0206A558 - _0206A546 - 2; case 2 + .short _0206A55E - _0206A546 - 2; case 3 +_0206A54E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A552: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A558: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A55E: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A564: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A59A + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A576: ; jump table (using 16-bit offset) + .short _0206A57E - _0206A576 - 2; case 0 + .short _0206A582 - _0206A576 - 2; case 1 + .short _0206A588 - _0206A576 - 2; case 2 + .short _0206A58E - _0206A576 - 2; case 3 +_0206A57E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A582: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A588: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A58E: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A594: + add r0, #0x8 + cmp r2, #0x3 + bls _0206A59C +_0206A59A: + b _0206A8F8 +_0206A59C: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A5A8: ; jump table (using 16-bit offset) + .short _0206A5B0 - _0206A5A8 - 2; case 0 + .short _0206A5B6 - _0206A5A8 - 2; case 1 + .short _0206A5BA - _0206A5A8 - 2; case 2 + .short _0206A5C0 - _0206A5A8 - 2; case 3 +_0206A5B0: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A5B6: + add r1, r0, #0x0 + b _0206A8F8 +_0206A5BA: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A5C0: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A5C6: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A6BC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A5D8: ; jump table (using 16-bit offset) + .short _0206A5E0 - _0206A5D8 - 2; case 0 + .short _0206A5E6 - _0206A5D8 - 2; case 1 + .short _0206A5EA - _0206A5D8 - 2; case 2 + .short _0206A5F0 - _0206A5D8 - 2; case 3 +_0206A5E0: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A5E6: + add r1, r0, #0x0 + b _0206A8F8 +_0206A5EA: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A5F0: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A5F6: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A6BC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A608: ; jump table (using 16-bit offset) + .short _0206A610 - _0206A608 - 2; case 0 + .short _0206A616 - _0206A608 - 2; case 1 + .short _0206A61A - _0206A608 - 2; case 2 + .short _0206A620 - _0206A608 - 2; case 3 +_0206A610: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A616: + add r1, r0, #0x0 + b _0206A8F8 +_0206A61A: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A620: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A626: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A6BC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A638: ; jump table (using 16-bit offset) + .short _0206A640 - _0206A638 - 2; case 0 + .short _0206A646 - _0206A638 - 2; case 1 + .short _0206A64A - _0206A638 - 2; case 2 + .short _0206A650 - _0206A638 - 2; case 3 +_0206A640: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A646: + add r1, r0, #0x0 + b _0206A8F8 +_0206A64A: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A650: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A656: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A6BC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A668: ; jump table (using 16-bit offset) + .short _0206A670 - _0206A668 - 2; case 0 + .short _0206A676 - _0206A668 - 2; case 1 + .short _0206A67A - _0206A668 - 2; case 2 + .short _0206A680 - _0206A668 - 2; case 3 +_0206A670: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A676: + add r1, r0, #0x0 + b _0206A8F8 +_0206A67A: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A680: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A686: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A6BC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A698: ; jump table (using 16-bit offset) + .short _0206A6A0 - _0206A698 - 2; case 0 + .short _0206A6A6 - _0206A698 - 2; case 1 + .short _0206A6AA - _0206A698 - 2; case 2 + .short _0206A6B0 - _0206A698 - 2; case 3 +_0206A6A0: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A6A6: + add r1, r0, #0x0 + b _0206A8F8 +_0206A6AA: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A6B0: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A6B6: + add r0, #0x8 + cmp r2, #0x3 + bls _0206A6BE +_0206A6BC: + b _0206A8F8 +_0206A6BE: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A6CA: ; jump table (using 16-bit offset) + .short _0206A6D2 - _0206A6CA - 2; case 0 + .short _0206A6D8 - _0206A6CA - 2; case 1 + .short _0206A6DE - _0206A6CA - 2; case 2 + .short _0206A6E2 - _0206A6CA - 2; case 3 +_0206A6D2: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A6D8: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A6DE: + add r1, r0, #0x0 + b _0206A8F8 +_0206A6E2: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A6E8: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A7DE + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A6FA: ; jump table (using 16-bit offset) + .short _0206A702 - _0206A6FA - 2; case 0 + .short _0206A708 - _0206A6FA - 2; case 1 + .short _0206A70E - _0206A6FA - 2; case 2 + .short _0206A712 - _0206A6FA - 2; case 3 +_0206A702: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A708: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A70E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A712: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A718: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A7DE + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A72A: ; jump table (using 16-bit offset) + .short _0206A732 - _0206A72A - 2; case 0 + .short _0206A738 - _0206A72A - 2; case 1 + .short _0206A73E - _0206A72A - 2; case 2 + .short _0206A742 - _0206A72A - 2; case 3 +_0206A732: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A738: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A73E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A742: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A748: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A7DE + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A75A: ; jump table (using 16-bit offset) + .short _0206A762 - _0206A75A - 2; case 0 + .short _0206A768 - _0206A75A - 2; case 1 + .short _0206A76E - _0206A75A - 2; case 2 + .short _0206A772 - _0206A75A - 2; case 3 +_0206A762: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A768: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A76E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A772: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A778: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A7DE + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A78A: ; jump table (using 16-bit offset) + .short _0206A792 - _0206A78A - 2; case 0 + .short _0206A798 - _0206A78A - 2; case 1 + .short _0206A79E - _0206A78A - 2; case 2 + .short _0206A7A2 - _0206A78A - 2; case 3 +_0206A792: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A798: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A79E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A7A2: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A7A8: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A7DE + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A7BA: ; jump table (using 16-bit offset) + .short _0206A7C2 - _0206A7BA - 2; case 0 + .short _0206A7C8 - _0206A7BA - 2; case 1 + .short _0206A7CE - _0206A7BA - 2; case 2 + .short _0206A7D2 - _0206A7BA - 2; case 3 +_0206A7C2: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A7C8: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A7CE: + add r1, r0, #0x0 + b _0206A8F8 +_0206A7D2: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A7D8: + add r0, #0x8 + cmp r2, #0x3 + bls _0206A7E0 +_0206A7DE: + b _0206A8F8 +_0206A7E0: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A7EC: ; jump table (using 16-bit offset) + .short _0206A7F4 - _0206A7EC - 2; case 0 + .short _0206A7FA - _0206A7EC - 2; case 1 + .short _0206A800 - _0206A7EC - 2; case 2 + .short _0206A806 - _0206A7EC - 2; case 3 +_0206A7F4: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A7FA: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A800: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A806: + add r1, r0, #0x0 + b _0206A8F8 +_0206A80A: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A8F8 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A81C: ; jump table (using 16-bit offset) + .short _0206A824 - _0206A81C - 2; case 0 + .short _0206A82A - _0206A81C - 2; case 1 + .short _0206A830 - _0206A81C - 2; case 2 + .short _0206A836 - _0206A81C - 2; case 3 +_0206A824: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A82A: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A830: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A836: + add r1, r0, #0x0 + b _0206A8F8 +_0206A83A: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A8F8 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A84C: ; jump table (using 16-bit offset) + .short _0206A854 - _0206A84C - 2; case 0 + .short _0206A85A - _0206A84C - 2; case 1 + .short _0206A860 - _0206A84C - 2; case 2 + .short _0206A866 - _0206A84C - 2; case 3 +_0206A854: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A85A: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A860: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A866: + add r1, r0, #0x0 + b _0206A8F8 +_0206A86A: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A8F8 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A87C: ; jump table (using 16-bit offset) + .short _0206A884 - _0206A87C - 2; case 0 + .short _0206A88A - _0206A87C - 2; case 1 + .short _0206A890 - _0206A87C - 2; case 2 + .short _0206A896 - _0206A87C - 2; case 3 +_0206A884: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A88A: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A890: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A896: + add r1, r0, #0x0 + b _0206A8F8 +_0206A89A: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A8F8 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A8AC: ; jump table (using 16-bit offset) + .short _0206A8B4 - _0206A8AC - 2; case 0 + .short _0206A8BA - _0206A8AC - 2; case 1 + .short _0206A8C0 - _0206A8AC - 2; case 2 + .short _0206A8C6 - _0206A8AC - 2; case 3 +_0206A8B4: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A8BA: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A8C0: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A8C6: + add r1, r0, #0x0 + b _0206A8F8 +_0206A8CA: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A8F8 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A8DC: ; jump table (using 16-bit offset) + .short _0206A8E4 - _0206A8DC - 2; case 0 + .short _0206A8EA - _0206A8DC - 2; case 1 + .short _0206A8F0 - _0206A8DC - 2; case 2 + .short _0206A8F6 - _0206A8DC - 2; case 3 +_0206A8E4: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A8EA: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A8F0: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A8F6: + add r1, r0, #0x0 +_0206A8F8: + add r0, r1, #0x0 + pop {r3, pc} + + thumb_func_start ResolveMonForme +ResolveMonForme: ; 0x0206A8FC + ldr r3, _0206A928 ; =SPECIES_DEOXYS + cmp r0, r3 + beq _0206A90C + add r2, r3, #0x0 + add r2, #SPECIES_WORMADAM-SPECIES_DEOXYS + cmp r0, r2 + beq _0206A91A + bx lr +_0206A90C: + cmp r1, #0x0 + beq _0206A926 + cmp r1, #0x3 + bgt _0206A926 + add r3, #SPECIES_DEOXYS_ATK-SPECIES_DEOXYS-1 + add r0, r1, r3 + bx lr +_0206A91A: + cmp r1, #0x0 + beq _0206A926 + cmp r1, #0x2 + bgt _0206A926 + add r3, #SPECIES_WORMADAM_SANDY-SPECIES_DEOXYS-1 + add r0, r1, r3 +_0206A926: + bx lr + .balign 4 +_0206A928: .word SPECIES_DEOXYS + + thumb_func_start MaskOfFlagNo +MaskOfFlagNo: ; 0x0206A92C + push {r3-r5, lr} + add r5, r0, #0x0 + mov r4, #0x1 + cmp r5, #0x20 + blt _0206A93A + bl ErrorHandling +_0206A93A: + mov r0, #0x0 + cmp r5, #0x0 + ble _0206A948 +_0206A940: + add r0, r0, #0x1 + lsl r4, r4, #0x1 + cmp r0, r5 + blt _0206A940 +_0206A948: + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start LowestFlagNo +LowestFlagNo: ; 0x0206A94C + mov r3, #0x1 + mov r2, #0x0 +_0206A950: + add r1, r0, #0x0 + tst r1, r3 + bne _0206A95E + add r2, r2, #0x1 + lsl r3, r3, #0x1 + cmp r2, #0x20 + blt _0206A950 +_0206A95E: + add r0, r2, #0x0 + bx lr + .balign 4 + + thumb_func_start IsPokemonLegendaryOrMythical +IsPokemonLegendaryOrMythical: ; 0x0206A964 + ldr r3, _0206A980 ; =sLegendaryMonsList + mov r2, #0x0 +_0206A968: + ldrh r1, [r3, #0x0] + cmp r0, r1 + bne _0206A972 + mov r0, #0x1 + bx lr +_0206A972: + add r2, r2, #0x1 + add r3, r3, #0x2 + cmp r2, #0x12 + blo _0206A968 + mov r0, #0x0 + bx lr + nop +_0206A980: .word sLegendaryMonsList + + thumb_func_start GetLegendaryMon +GetLegendaryMon: ; 0x0206A984 + cmp r0, #0x12 + blo _0206A98A + mov r0, #0x0 +_0206A98A: + lsl r1, r0, #0x1 + ldr r0, _0206A994 ; =sLegendaryMonsList + ldrh r0, [r0, r1] + bx lr + nop +_0206A994: .word sLegendaryMonsList + + thumb_func_start FUN_0206A998 +FUN_0206A998: ; 0x0206A998 + push {r3, lr} + mov r1, #0x5 + mov r2, #0x0 + bl GetMonDataEncrypted + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl IsPokemonLegendaryOrMythical + pop {r3, pc} + + thumb_func_start FUN_0206A9AC +FUN_0206A9AC: ; 0x0206A9AC + push {r3-r7, lr} + sub sp, #0x10 + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r6, r2, #0x0 + bl FUN_020239BC + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0x7 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_020239CC + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x9c + mov r2, #0x0 + bl GetBoxMonDataEncrypted + str r0, [sp, #0xc] + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_020239A0 + add r7, r0, #0x0 + mov r0, #0x8 + add r1, r6, #0x0 + bl FUN_020219F4 + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x90 + add r2, r6, #0x0 + mov r4, #0x0 + bl GetBoxMonDataEncrypted + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x4] + cmp r1, r0 + bne _0206AA1C + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + cmp r1, r0 + bne _0206AA1C + add r0, r7, #0x0 + add r1, r6, #0x0 + bl FUN_02021CE0 + cmp r0, #0x0 + bne _0206AA1C + mov r4, #0x1 +_0206AA1C: + add r0, r6, #0x0 + bl FUN_02021A20 + add r0, r7, #0x0 + bl FUN_02021A20 + add r0, r4, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206AA30 +FUN_0206AA30: ; 0x0206AA30 + push {r3, lr} + cmp r0, #0x3f + bgt _0206AA48 + bge _0206AA6C + cmp r0, #0x1 + bgt _0206AA74 + cmp r0, #0x0 + blt _0206AA74 + beq _0206AA82 + cmp r0, #0x1 + beq _0206AA82 + b _0206AA74 +_0206AA48: + cmp r0, #0x5a + bgt _0206AA50 + beq _0206AA70 + b _0206AA74 +_0206AA50: + add r1, r0, #0x0 + sub r1, #0x5b + cmp r1, #0x3 + bhi _0206AA74 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0206AA64: ; jump table (using 16-bit offset) + .short _0206AA70 - _0206AA64 - 2; case 0 + .short _0206AA70 - _0206AA64 - 2; case 1 + .short _0206AA70 - _0206AA64 - 2; case 2 + .short _0206AA70 - _0206AA64 - 2; case 3 +_0206AA6C: + mov r0, #0x2 + pop {r3, pc} +_0206AA70: + sub r0, #0x57 + pop {r3, pc} +_0206AA74: + bl FUN_0206AE00 + cmp r0, #0x1 + bne _0206AA80 + mov r0, #0x1 + pop {r3, pc} +_0206AA80: + mov r0, #0x0 +_0206AA82: + pop {r3, pc} + + thumb_func_start FUN_0206AA84 +FUN_0206AA84: ; 0x0206AA84 + push {r3-r4, lr} + sub sp, #0x1c + add r4, r0, #0x0 + mov r0, #0x0 + add r1, sp, #0x0 + strb r0, [r1, #0x0] + add r1, sp, #0x0 + add r1, #0x1 + mov r2, #0x18 + bl MIi_CpuClearFast + add r0, r4, #0x0 + mov r1, #0xa1 + add r2, sp, #0x0 + bl SetMonDataEncrypted + add r2, sp, #0x0 + add r0, r4, #0x0 + mov r1, #0xaa + add r2, #0x1 + bl SetMonDataEncrypted + add sp, #0x1c + pop {r3-r4, pc} + + thumb_func_start FUN_0206AAB4 +FUN_0206AAB4: ; 0x0206AAB4 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl TryDecryptBoxMon + mov r4, #0x0 + str r0, [sp, #0x0] + add r7, r4, #0x0 + add r6, sp, #0x4 +_0206AAC6: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x36 + add r2, r7, #0x0 + bl GetBoxMonDataEncrypted + cmp r0, #0x0 + beq _0206AAF0 + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x42 + mov r2, #0x0 + bl GetBoxMonDataEncrypted + add r1, r4, #0x0 + strb r0, [r6, #0x0] + add r0, r5, #0x0 + add r1, #0x3a + add r2, sp, #0x4 + bl SetBoxMonDataEncrypted +_0206AAF0: + add r4, r4, #0x1 + cmp r4, #0x4 + blt _0206AAC6 + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + bl TryEncryptBoxMon + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 diff --git a/arm9/asm/unk_02023C40.s b/arm9/asm/unk_02023C40.s index 30aa59a0..9b5622d0 100644 --- a/arm9/asm/unk_02023C40.s +++ b/arm9/asm/unk_02023C40.s @@ -26,10 +26,10 @@ FUN_02023C48: ; 0x02023C48 lsl r2, r2, #0x4 bl memset add r0, r4, #0x0 - bl WipeBoxMonDataAndEncrypt + bl ZeroBoxMonData add r0, r4, #0x0 add r0, #0xec - bl WipeBoxMonDataAndEncrypt + bl ZeroBoxMonData mov r0, #0x76 mov r1, #0x0 lsl r0, r0, #0x2 @@ -187,7 +187,7 @@ _02023D38: .word 0x0000FFFF FUN_02023D3C: ; 0x02023D3C push {r4, lr} add r4, r0, #0x0 - bl WipeBoxMonDataAndEncrypt + bl ZeroBoxMonData add r0, r4, #0x0 mov r1, #0x0 add r0, #0xe8 diff --git a/arm9/asm/unk_0206B16C.s b/arm9/asm/unk_0206B16C.s index b6ec1416..465dbabb 100644 --- a/arm9/asm/unk_0206B16C.s +++ b/arm9/asm/unk_0206B16C.s @@ -28,7 +28,7 @@ _0206B188: add r5, r6, #0x0 _0206B18C: add r0, r5, #0x0 - bl WipeBoxMonDataAndEncrypt + bl ZeroBoxMonData add r4, r4, #0x1 add r5, #0x88 cmp r4, #0x1e @@ -241,7 +241,7 @@ _0206B308: mov r0, #0x88 mul r0, r2 add r0, r1, r0 - bl WipeBoxMonDataAndEncrypt + bl ZeroBoxMonData bl FUN_02022830 pop {r3, pc} _0206B32A: diff --git a/arm9/global.inc b/arm9/global.inc index ce1debbd..28f325a6 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4705,7 +4705,7 @@ .extern FUN_02066818 .extern FUN_02066840 .extern ZeroMonData -.extern WipeBoxMonDataAndEncrypt +.extern ZeroBoxMonData .extern SizeOfStructPokemon .extern AllocMonZeroed .extern TryDecryptMon diff --git a/arm9/lib/include/MI_memory.h b/arm9/lib/include/MI_memory.h index bf6c0ca5..e1e5fe11 100644 --- a/arm9/lib/include/MI_memory.h +++ b/arm9/lib/include/MI_memory.h @@ -22,4 +22,6 @@ static inline void MI_CpuClear32(void *dest, u32 size) MI_CpuFill32(dest, 0, size); } +void MIi_CpuClearFast(u32 data, void *destp, u32 size); + #endif //NITRO_MI_MEMORY_H_ diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index f351ccb6..0dba71bb 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -43348,7 +43348,7 @@ _021EC6FA: add r1, r4, #0 bl FUN_0206B900 add r0, r5, #0 - bl WipeBoxMonDataAndEncrypt + bl ZeroBoxMonData add r0, r6, #0 mov r1, #0 bl FUN_02023CA0 diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index 00b933b8..8fe02035 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -9122,7 +9122,7 @@ MOD14_021DBE34: ; 0x021DBE34 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x14] - bl WipeBoxMonDataAndEncrypt + bl ZeroBoxMonData mov r0, #1 strb r0, [r4, #0x13] add r0, r4, #0 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index e1d37212..922e6bb5 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -21864,7 +21864,7 @@ MOD83_02237F6C: ; 0x02237F6C add r4, r1, #0 add r6, r0, #0 add r0, r4, #0 - bl WipeBoxMonDataAndEncrypt + bl ZeroBoxMonData add r0, r4, #0 bl TryDecryptBoxMon mov r1, #0 diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c new file mode 100644 index 00000000..60381e75 --- /dev/null +++ b/arm9/src/pokemon.c @@ -0,0 +1,59 @@ +#include "global.h" +#define IN_POKEMON_C +#include "pokemon.h" +#include "heap.h" +#include "MI_memory.h" + +#pragma thumb on + +void MonEncryptSegment(void * datap, u32 size, u32 key, ...); +void MonDecryptSegment(void * datap, u32 size, u32 key, ...); +u16 MonEncryptionLCRNG(u32 * seed); + +#define ENCRY_ARGS_PTY(mon) &(mon)->party, sizeof((mon)->party), (mon)->box.pid +#define ENCRY_ARGS_BOX(boxmon) &(boxmon)->substructs, sizeof((boxmon)->substructs), (boxmon)->checksum +#define ENCRYPT_PTY(mon) MonEncryptSegment(ENCRY_ARGS_PTY(mon)) +#define ENCRYPT_BOX(boxmon) MonEncryptSegment(ENCRY_ARGS_BOX(boxmon)) +#define DECRYPT_PTY(mon) MonDecryptSegment(ENCRY_ARGS_PTY(mon)) +#define DECRYPT_BOX(boxmon) MonDecryptSegment(ENCRY_ARGS_BOX(boxmon)) + +void ZeroMonData(struct Pokemon * pokemon) +{ + MIi_CpuClearFast(0, pokemon, sizeof(struct Pokemon)); + ENCRYPT_BOX(&pokemon->box); + ENCRYPT_PTY(pokemon); +} + +void ZeroBoxMonData(struct BoxPokemon * boxmon) +{ + MIi_CpuClearFast(0, boxmon, sizeof(struct BoxPokemon)); + ENCRYPT_BOX(boxmon); +} + +u32 SizeOfStructPokemon(void) +{ + return sizeof(struct Pokemon); +} + +struct Pokemon * AllocMonZeroed(u32 heap_id) +{ + struct Pokemon * pokemon = (struct Pokemon *)AllocFromHeap(heap_id, sizeof(struct Pokemon)); + ZeroMonData(pokemon); + return pokemon; +} + +BOOL TryDecryptMon(struct Pokemon * mon) +{ + BOOL ret = FALSE; + + if (!mon->box.no_encrypt) + { + ret = TRUE; + GF_ASSERT(!mon->box.control_4_1); + mon->box.no_encrypt = TRUE; + mon->box.control_4_1 = TRUE; + DECRYPT_PTY(mon); + DECRYPT_BOX(&mon->box); + } + return ret; +} diff --git a/include/global.h b/include/global.h index 2f31fa3d..bffce9f0 100644 --- a/include/global.h +++ b/include/global.h @@ -27,4 +27,6 @@ enum GameLanguage { extern void ErrorHandling(void); +#define GF_ASSERT(expr) do {if (!(expr)) ErrorHandling();} while (0) + #endif //GUARD_GLOBAL_H diff --git a/include/pokemon.h b/include/pokemon.h index 71c1fb67..410e4bc5 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -103,13 +103,17 @@ #define MON_DATA_SEAL_COORDS 170 #define MON_DATA_SPECIES_EXISTS 171 #define MON_DATA_SANITY_CHECK_172 172 -#define MON_DATA_SANITY_CHECK_173 173 +#define MON_DATA_SPECIES2 173 #define MON_DATA_IVS_WORD 174 #define MON_DATA_IS_FEMALE 175 #define MON_DATA_TYPE_1 176 #define MON_DATA_TYPE_2 177 #define MON_DATA_SPECIES_NAME 178 +#define MON_MALE 0 +#define MON_FEMALE 254 +#define MON_GENDER_UNKNOWN 255 + // TODO: Identify the rest of these enum BaseStat { BASE_HP = 0, @@ -202,69 +206,69 @@ typedef enum GameLanguage OriginLanguage; typedef enum { ARCEUS_NORMAL = 0, - ARCEUS_FIST = 8, - ARCEUS_SKY = 16, - ARCEUS_TOXIC = 24, - ARCEUS_EARTH = 32, - ARCEUS_STONE = 40, - ARCEUS_INSECT = 48, - ARCEUS_SPOOKY = 56, - ARCEUS_IRON = 64, - ARCEUS_FLAME = 72, - ARCEUS_SPLASH = 80, - ARCEUS_MEADOW = 88, - ARCEUS_ZAP = 96, - ARCEUS_MIND = 104, - ARCEUS_ICICLE = 112, - ARCEUS_DRACO = 120, - ARCEUS_DREAD = 128, + ARCEUS_FIST = 1, + ARCEUS_SKY = 2, + ARCEUS_TOXIC = 3, + ARCEUS_EARTH = 4, + ARCEUS_STONE = 5, + ARCEUS_INSECT = 6, + ARCEUS_SPOOKY = 7, + ARCEUS_IRON = 8, + ARCEUS_FLAME = 9, + ARCEUS_SPLASH = 10, + ARCEUS_MEADOW = 11, + ARCEUS_ZAP = 12, + ARCEUS_MIND = 13, + ARCEUS_ICICLE = 14, + ARCEUS_DRACO = 15, + ARCEUS_DREAD = 16, BURMY_PLANT = 0, - BURMY_SANDY = 8, - BURMY_TRASH = 16, + BURMY_SANDY = 1, + BURMY_TRASH = 2, DEOXYS_NORMAL = 0, - DEOXYS_ATTACK = 8, - DEOXYS_DEFENSE = 16, - DEOXYS_SPEED = 24, + DEOXYS_ATTACK = 1, + DEOXYS_DEFENSE = 2, + DEOXYS_SPEED = 3, GIRATINA_ALTERED = 0, - GIRATINA_ORIGIN = 8, + GIRATINA_ORIGIN = 1, ROTOM_NORMAL = 0, - ROTOM_HEAT = 8, - ROTOM_WASH = 16, - ROTOM_FROST = 24, - ROTOM_FAN = 32, - ROTOM_MOW = 40, + ROTOM_HEAT = 1, + ROTOM_WASH = 2, + ROTOM_FROST = 3, + ROTOM_FAN = 4, + ROTOM_MOW = 5, SHAYMIN_LAND = 0, - SHAYMIN_SKY = 8, + SHAYMIN_SKY = 1, SHELLOS_WEST = 0, - SHELLOS_EAST = 8, + SHELLOS_EAST = 1, UNOWN_A = 0, - UNOWN_B = 8, - UNOWN_C = 16, - UNOWN_D = 24, - UNOWN_E = 32, - UNOWN_F = 40, - UNOWN_G = 48, - UNOWN_H = 56, - UNOWN_I = 64, - UNOWN_J = 72, - UNOWN_K = 80, - UNOWN_L = 88, - UNOWN_M = 96, - UNOWN_N = 104, - UNOWN_O = 112, - UNOWN_P = 120, - UNOWN_Q = 128, - UNOWN_R = 136, - UNOWN_S = 144, - UNOWN_T = 152, - UNOWN_U = 160, - UNOWN_V = 168, - UNOWN_W = 176, - UNOWN_X = 184, - UNOWN_Y = 192, - UNOWN_Z = 200, - UNOWN_EXCLAMATION_MARK = 208, - UNOWN_QUESTION_MARK = 216 + UNOWN_B = 1, + UNOWN_C = 2, + UNOWN_D = 3, + UNOWN_E = 4, + UNOWN_F = 5, + UNOWN_G = 6, + UNOWN_H = 7, + UNOWN_I = 8, + UNOWN_J = 9, + UNOWN_K = 10, + UNOWN_L = 11, + UNOWN_M = 12, + UNOWN_N = 13, + UNOWN_O = 14, + UNOWN_P = 15, + UNOWN_Q = 16, + UNOWN_R = 17, + UNOWN_S = 18, + UNOWN_T = 19, + UNOWN_U = 20, + UNOWN_V = 21, + UNOWN_W = 22, + UNOWN_X = 23, + UNOWN_Y = 24, + UNOWN_Z = 25, + UNOWN_EXCLAMATION_MARK = 26, + UNOWN_QUESTION_MARK = 27 } AlternateForms; // Structs @@ -341,18 +345,17 @@ typedef union { } PokemonDataBlock; struct BoxPokemon { - /* 0x000 */ u32 personalityValue; + /* 0x000 */ u32 pid; /* 0x004 */ u16 no_encrypt:1; u16 control_4_1:1; u16 control_4_2:1; u16 Unused:13; // Might be used for validity checks /* 0x006 */ u16 checksum; // Stored checksum of pokemon - /* 0x008 */ PokemonDataBlock box[4]; + /* 0x008 */ PokemonDataBlock substructs[4]; }; struct PartyPokemon { - /* 0x000 */ struct BoxPokemon box; /* 0x088 */ u8 slp:3; u8 psn:1; u8 brn:1; @@ -379,6 +382,11 @@ struct Pokemon { /* 0x088 */ struct PartyPokemon party; }; // size: 0xEC +void ZeroMonData(struct Pokemon * pokemon); +void ZeroBoxMonData(struct BoxPokemon * boxmon); +u32 SizeOfStructPokemon(void); +struct Pokemon * AllocMonZeroed(u32 heap_id); +BOOL TryDecryptMon(struct Pokemon * mon); int GetMonBaseStat_HandleFormeConversion(int species, int form, int stat_id); int GetMonBaseStat(int species, int stat_id); int GetMonExpBySpeciesAndLevel(int species, int level); -- cgit v1.2.3 From 5dcce3a7303e45667967689361513cb2920be3f4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Jun 2020 12:50:21 -0400 Subject: through GenPersonalityByGenderAndNature --- arm9/asm/pokemon_s.s | 554 +--------------------------------------- arm9/asm/scrcmd.s | 2 +- arm9/asm/scrcmd_12.s | 2 +- arm9/asm/unk_020476CC.s | 2 +- arm9/asm/unk_0206C700.s | 6 +- arm9/asm/unk_020828BC.s | 2 +- arm9/asm/unk_020842DC.s | 14 +- arm9/global.inc | 6 +- arm9/modules/05/asm/module_05.s | 4 +- arm9/modules/06/asm/module_06.s | 8 +- arm9/modules/67/asm/module_67.s | 2 +- arm9/src/pokemon.c | 208 ++++++++++++++- include/global.h | 3 + include/math_util.h | 6 + include/pokemon.h | 49 ++-- include/seals.h | 12 + 16 files changed, 287 insertions(+), 593 deletions(-) create mode 100644 include/math_util.h create mode 100644 include/seals.h diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 2395e7f1..97650972 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -116,552 +116,6 @@ UNK_021C5AC0: ; 0x021C5AC0 .text - thumb_func_start TryEncryptMon -TryEncryptMon: ; 0x02066A20 - push {r3-r5, lr} - add r5, r0, #0x0 - ldrh r2, [r5, #0x4] - mov r4, #0x0 - lsl r0, r2, #0x1f - lsr r0, r0, #0x1f - cmp r0, #0x1 - bne _02066A68 - cmp r1, #0x1 - bne _02066A68 - mov r0, #0x1 - bic r2, r0 - strh r2, [r5, #0x4] - ldrh r1, [r5, #0x4] - mov r0, #0x2 - mov r4, #0x1 - bic r1, r0 - strh r1, [r5, #0x4] - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonEncryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - strh r0, [r5, #0x6] - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_02066A68: - add r0, r4, #0x0 - pop {r3-r5, pc} - - thumb_func_start TryDecryptBoxMon -TryDecryptBoxMon: ; 0x02066A6C - push {r4, lr} - add r2, r0, #0x0 - ldrh r1, [r2, #0x4] - mov r4, #0x0 - lsl r0, r1, #0x1e - lsr r0, r0, #0x1f - bne _02066A8E - mov r0, #0x2 - orr r0, r1 - strh r0, [r2, #0x4] - add r0, r2, #0x0 - ldrh r2, [r2, #0x6] - add r0, #0x8 - mov r1, #0x80 - mov r4, #0x1 - bl MonDecryptSegment -_02066A8E: - add r0, r4, #0x0 - pop {r4, pc} - .balign 4 - - thumb_func_start TryEncryptBoxMon -TryEncryptBoxMon: ; 0x02066A94 - push {r3-r5, lr} - add r5, r0, #0x0 - ldrh r2, [r5, #0x4] - mov r4, #0x0 - lsl r0, r2, #0x1e - lsr r0, r0, #0x1f - cmp r0, #0x1 - bne _02066AC8 - cmp r1, #0x1 - bne _02066AC8 - mov r0, #0x2 - bic r2, r0 - add r0, r5, #0x0 - strh r2, [r5, #0x4] - add r0, #0x8 - mov r1, #0x80 - mov r4, #0x1 - bl CalcMonChecksum - strh r0, [r5, #0x6] - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_02066AC8: - add r0, r4, #0x0 - pop {r3-r5, pc} - - thumb_func_start CreateMon -CreateMon: ; 0x02066ACC - push {r0-r3} - push {r3-r6, lr} - sub sp, #0x2c - add r5, r0, #0x0 - add r4, r1, #0x0 - add r6, r3, #0x0 - bl ZeroMonData - ldr r0, [sp, #0x50] - add r1, r4, #0x0 - str r0, [sp, #0x0] - ldr r0, [sp, #0x54] - add r3, r6, #0x0 - str r0, [sp, #0x4] - ldr r0, [sp, #0x58] - str r0, [sp, #0x8] - ldr r0, [sp, #0x5c] - str r0, [sp, #0xc] - ldr r2, [sp, #0x48] - add r0, r5, #0x0 - bl CreateBoxMon - add r0, r5, #0x0 - add r0, #0x88 - mov r1, #0x64 - mov r2, #0x0 - bl MonEncryptSegment - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonEncryptSegment - add r0, r5, #0x0 - mov r1, #0xa0 - add r2, sp, #0x48 - bl SetMonDataEncrypted - mov r0, #0x0 - bl CreateNewSealsObject - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xa9 - add r2, r4, #0x0 - bl SetMonDataEncrypted - add r0, r4, #0x0 - bl FreeToHeap - mov r0, #0x0 - str r0, [sp, #0x10] - add r0, r5, #0x0 - mov r1, #0xa1 - add r2, sp, #0x10 - bl SetMonDataEncrypted - mov r0, #0x0 - add r1, sp, #0x14 - mov r2, #0x18 - bl MIi_CpuClearFast - add r0, r5, #0x0 - mov r1, #0xaa - add r2, sp, #0x14 - bl SetMonDataEncrypted - add r0, r5, #0x0 - bl UpdateMonLevelAndRecalcStats - add sp, #0x2c - pop {r3-r6} - pop {r3} - add sp, #0x10 - bx r3 - - thumb_func_start CreateBoxMon -CreateBoxMon: ; 0x02066B64 - push {r0-r3} - push {r4-r7, lr} - sub sp, #0xc - add r5, r0, #0x0 - bl ZeroBoxMonData - add r0, r5, #0x0 - bl TryDecryptBoxMon - str r0, [sp, #0x0] - ldr r0, [sp, #0x30] - cmp r0, #0x0 - bne _02066B8E - bl rand_LC - add r4, r0, #0x0 - bl rand_LC - lsl r0, r0, #0x10 - orr r0, r4 - str r0, [sp, #0x34] -_02066B8E: - add r0, r5, #0x0 - mov r1, #0x0 - add r2, sp, #0x34 - bl SetBoxMonDataEncrypted - // If otIdType == 2, generate a random OT ID that prevents shininess - ldr r0, [sp, #0x38] - cmp r0, #0x2 - bne _02066BD6 - ldr r7, _02066D84 ; =0xFFFF0000 - add r6, r7, #0x0 -_02066BA2: - bl rand_LC - add r4, r0, #0x0 - bl rand_LC - ldr r1, [sp, #0x34] - lsl r0, r0, #0x10 - add r3, r4, #0x0 - orr r3, r0 - lsl r0, r1, #0x10 - lsr r2, r0, #0x10 - add r0, r1, #0x0 - and r0, r7 - lsr r1, r0, #0x10 - add r0, r3, #0x0 - str r3, [sp, #0x3c] - and r0, r6 - lsl r3, r3, #0x10 - lsr r0, r0, #0x10 - lsr r3, r3, #0x10 - eor r0, r3 - eor r0, r1 - eor r0, r2 - cmp r0, #0x8 - blo _02066BA2 - b _02066BDE -_02066BD6: - cmp r0, #0x1 - beq _02066BDE - mov r0, #0x0 - str r0, [sp, #0x3c] -_02066BDE: - add r0, r5, #0x0 - mov r1, #0x7 - add r2, sp, #0x3c - bl SetBoxMonDataEncrypted - ldr r2, _02066D88 ; =gGameLanguage - add r0, r5, #0x0 - mov r1, #0xc - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x5 - add r2, sp, #0x24 - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0xb2 - mov r2, #0x0 - bl SetBoxMonDataEncrypted - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x28] - bl GetMonExpBySpeciesAndLevel - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x8 - add r2, sp, #0x8 - bl SetBoxMonDataEncrypted - ldr r0, [sp, #0x24] - mov r1, #0x14 - bl GetMonBaseStat - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x9 - add r2, sp, #0x8 - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x9b - add r2, sp, #0x28 - bl SetBoxMonDataEncrypted - ldr r2, _02066D8C ; =gGameVersion - add r0, r5, #0x0 - mov r1, #0x79 - bl SetBoxMonDataEncrypted - mov r0, #0x4 - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x9a - add r2, sp, #0x8 - bl SetBoxMonDataEncrypted - ldr r0, [sp, #0x2c] - cmp r0, #0x20 - bge _02066C94 - add r0, r5, #0x0 - mov r1, #0x46 - add r2, sp, #0x2c - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x47 - add r2, sp, #0x2c - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x48 - add r2, sp, #0x2c - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x49 - add r2, sp, #0x2c - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x4a - add r2, sp, #0x2c - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - mov r1, #0x4b - add r2, sp, #0x2c - bl SetBoxMonDataEncrypted - b _02066D18 -_02066C94: - bl rand_LC - mov r1, #0x1f - str r0, [sp, #0x8] - and r0, r1 - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x46 - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - mov r0, #0x3e - ldr r1, [sp, #0x8] - lsl r0, r0, #0x4 - and r0, r1 - lsr r0, r0, #0x5 - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x47 - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - mov r0, #0x1f - ldr r1, [sp, #0x8] - lsl r0, r0, #0xa - and r0, r1 - lsr r0, r0, #0xa - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x48 - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - bl rand_LC - mov r1, #0x1f - str r0, [sp, #0x8] - and r0, r1 - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x49 - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - mov r0, #0x3e - ldr r1, [sp, #0x8] - lsl r0, r0, #0x4 - and r0, r1 - lsr r0, r0, #0x5 - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x4a - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - mov r0, #0x1f - ldr r1, [sp, #0x8] - lsl r0, r0, #0xa - and r0, r1 - lsr r0, r0, #0xa - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x4b - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted -_02066D18: - ldr r0, [sp, #0x24] - mov r1, #0x18 - bl GetMonBaseStat - str r0, [sp, #0x8] - ldr r0, [sp, #0x24] - mov r1, #0x19 - bl GetMonBaseStat - str r0, [sp, #0x4] - cmp r0, #0x0 - beq _02066D50 - ldr r1, [sp, #0x34] - mov r0, #0x1 - tst r0, r1 - beq _02066D44 - add r0, r5, #0x0 - mov r1, #0xa - add r2, sp, #0x4 - bl SetBoxMonDataEncrypted - b _02066D5A -_02066D44: - add r0, r5, #0x0 - mov r1, #0xa - add r2, sp, #0x8 - bl SetBoxMonDataEncrypted - b _02066D5A -_02066D50: - add r0, r5, #0x0 - mov r1, #0xa - add r2, sp, #0x8 - bl SetBoxMonDataEncrypted -_02066D5A: - add r0, r5, #0x0 - bl GetBoxMonGenderEncrypted - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x6f - add r2, sp, #0x8 - bl SetBoxMonDataEncrypted - add r0, r5, #0x0 - bl InitBoxMonMoveset - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - bl TryEncryptBoxMon - add sp, #0xc - pop {r4-r7} - pop {r3} - add sp, #0x10 - bx r3 - .balign 4 -_02066D84: .word 0xFFFF0000 -_02066D88: .word gGameLanguage -_02066D8C: .word gGameVersion - - thumb_func_start CreateMonWithNature -CreateMonWithNature: ; 0x02066D90 - push {r3-r7, lr} - sub sp, #0x18 - str r2, [sp, #0x10] - str r3, [sp, #0x14] - ldr r4, [sp, #0x30] - add r6, r0, #0x0 - add r7, r1, #0x0 -_02066D9E: - bl rand_LC - add r5, r0, #0x0 - bl rand_LC - lsl r0, r0, #0x10 - orr r5, r0 - add r0, r5, #0x0 - bl GetNatureFromPersonality - cmp r4, r0 - bne _02066D9E - mov r0, #0x1 - str r0, [sp, #0x0] - str r5, [sp, #0x4] - mov r0, #0x0 - str r0, [sp, #0x8] - str r0, [sp, #0xc] - ldr r2, [sp, #0x10] - ldr r3, [sp, #0x14] - add r0, r6, #0x0 - add r1, r7, #0x0 - bl CreateMon - add sp, #0x18 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start CreateMonWithNatureGenderLetter -CreateMonWithNatureGenderLetter: ; 0x02066DD4 - push {r4-r7, lr} - sub sp, #0x24 - str r1, [sp, #0x14] - str r2, [sp, #0x18] - str r3, [sp, #0x1c] - str r0, [sp, #0x10] - add r0, sp, #0x28 - ldrb r0, [r0, #0x18] - ldr r6, [sp, #0x38] - ldr r7, [sp, #0x3c] - cmp r0, #0x0 - beq _02066E4C - cmp r0, #0x1d - bhs _02066E4C - sub r0, r0, #0x1 - str r0, [sp, #0x20] -_02066DF4: - bl rand_LC - add r4, r0, #0x0 - bl rand_LC - lsl r0, r0, #0x10 - orr r4, r0 - mov r3, #0x3 - lsl r3, r3, #0x10 - and r3, r4 - mov r0, #0x3 - add r2, r4, #0x0 - and r2, r0 - lsl r0, r0, #0x8 - and r0, r4 - lsr r1, r0, #0x6 - mov r0, #0x3 - lsl r0, r0, #0x18 - and r0, r4 - lsr r0, r0, #0x12 - lsr r3, r3, #0xc - orr r0, r3 - orr r0, r1 - orr r0, r2 - mov r1, #0x1c - bl _u32_div_f - lsl r0, r1, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0x0 - bl GetNatureFromPersonality - cmp r7, r0 - bne _02066DF4 - ldr r0, [sp, #0x14] - add r1, r4, #0x0 - bl GetGenderBySpeciesAndPersonality - cmp r6, r0 - bne _02066DF4 - ldr r0, [sp, #0x20] - cmp r5, r0 - bne _02066DF4 - b _02066E58 -_02066E4C: - ldr r0, [sp, #0x14] - add r1, r6, #0x0 - add r2, r7, #0x0 - bl AdjustPersonalityToForceGenderAndNature - add r4, r0, #0x0 -_02066E58: - mov r0, #0x1 - str r0, [sp, #0x0] - str r4, [sp, #0x4] - mov r0, #0x0 - str r0, [sp, #0x8] - str r0, [sp, #0xc] - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - ldr r2, [sp, #0x18] - ldr r3, [sp, #0x1c] - bl CreateMon - add sp, #0x24 - pop {r4-r7, pc} - - thumb_func_start AdjustPersonalityToForceGenderAndNature -AdjustPersonalityToForceGenderAndNature: ; 0x02066E74 - push {r3-r5, lr} - add r5, r1, #0x0 - mov r1, #0x12 - add r4, r2, #0x0 - bl GetMonBaseStat - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - beq _02066EA0 - cmp r0, #0xfe - beq _02066EA0 - cmp r0, #0xff - beq _02066EA0 - cmp r5, #0x0 - bne _02066EA0 - mov r1, #0x19 - bl _s32_div_f - add r1, r0, #0x1 - mov r0, #0x19 - mul r0, r1 - add r4, r0, r4 -_02066EA0: - add r0, r4, #0x0 - pop {r3-r5, pc} - thumb_func_start CreateMonWithFixedIVs CreateMonWithFixedIVs: ; 0x02066EA4 push {r0-r3} @@ -681,15 +135,15 @@ CreateMonWithFixedIVs: ; 0x02066EA4 add r2, sp, #0x24 bl SetMonDataEncrypted add r0, r4, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats add sp, #0x10 pop {r4} pop {r3} add sp, #0x10 bx r3 - thumb_func_start UpdateMonLevelAndRecalcStats -UpdateMonLevelAndRecalcStats: ; 0x02066ED8 + thumb_func_start CalcMonStats +CalcMonStats: ; 0x02066ED8 push {r3-r5, lr} add r5, r0, #0x0 bl TryDecryptMon @@ -6641,7 +6095,7 @@ _02069A8E: add r2, sp, #0x4 bl SetMonDataEncrypted add r0, r4, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats add sp, #0x1c pop {r4-r5, pc} diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s index 275875f4..09f2b266 100644 --- a/arm9/asm/scrcmd.s +++ b/arm9/asm/scrcmd.s @@ -10729,7 +10729,7 @@ _0203EF18: add r2, sp, #0x4 bl SetMonDataEncrypted add r0, r4, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats add r0, r7, #0x0 add r1, r4, #0x0 bl FUN_02024AF0 diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s index 37665648..d326b254 100644 --- a/arm9/asm/scrcmd_12.s +++ b/arm9/asm/scrcmd_12.s @@ -653,7 +653,7 @@ _0204322C: mov r2, #0x4 bl FUN_0208089C add r0, r4, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats ldr r0, [sp, #0x4] ldr r0, [r0, #0xc] bl FUN_0206BB1C diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s index dce3e575..24d4a9b4 100644 --- a/arm9/asm/unk_020476CC.s +++ b/arm9/asm/unk_020476CC.s @@ -684,7 +684,7 @@ _02047C40: add r2, sp, #0x18 bl SetMonDataEncrypted add r0, r5, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats _02047C82: add r0, r6, #0x0 add r1, r5, #0x0 diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index 561ba6c3..506fbef0 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -1044,7 +1044,7 @@ _0206CF7E: ldr r0, [r4, #0x28] bl FUN_0206A1C4 ldr r0, [r4, #0x28] - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats ldr r0, [r4, #0x28] bl FUN_020690E4 add r2, r0, #0x0 @@ -2192,7 +2192,7 @@ _0206D8EA: add r0, r5, #0x0 bl FUN_0206A1C4 add r0, r5, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats ldr r0, [r4, #0x24] add r1, r5, #0x0 bl FUN_0206B900 @@ -2583,7 +2583,7 @@ FUN_0206DC80: ; 0x0206DC80 add r2, #0x62 bl SetMonDataEncrypted add r0, r5, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats add r0, sp, #0x10 add r1, r5, #0x0 mov r2, #0x2 diff --git a/arm9/asm/unk_020828BC.s b/arm9/asm/unk_020828BC.s index d3c740aa..8a04ec14 100644 --- a/arm9/asm/unk_020828BC.s +++ b/arm9/asm/unk_020828BC.s @@ -765,7 +765,7 @@ FUN_02082D60: ; 0x02082D60 lsl r1, r1, #0x18 lsr r1, r1, #0x18 mov r2, #0x0 - bl AdjustPersonalityToForceGenderAndNature + bl GenPersonalityByGenderAndNature mov r1, #0x1 str r1, [sp, #0x0] str r0, [sp, #0x4] diff --git a/arm9/asm/unk_020842DC.s b/arm9/asm/unk_020842DC.s index 17aec9b7..15ec2abe 100644 --- a/arm9/asm/unk_020842DC.s +++ b/arm9/asm/unk_020842DC.s @@ -803,7 +803,7 @@ _0208495C: mov r1, #0x8 bl AddMonPartyStatEncrypted add r0, r5, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats ldr r0, [sp, #0x50] cmp r0, #0x0 bne _020849B0 @@ -987,7 +987,7 @@ _02084A66: add r2, sp, #0x50 bl SetMonDataEncrypted add r0, r5, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats mov r6, #0x1 _02084B18: ldr r0, [sp, #0x6c] @@ -1032,7 +1032,7 @@ _02084B20: add r2, sp, #0x54 bl SetMonDataEncrypted add r0, r5, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats mov r6, #0x1 _02084B78: ldr r0, [sp, #0x6c] @@ -1077,7 +1077,7 @@ _02084B80: add r2, sp, #0x58 bl SetMonDataEncrypted add r0, r5, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats mov r6, #0x1 _02084BD8: ldr r0, [sp, #0x6c] @@ -1122,7 +1122,7 @@ _02084BE0: add r2, sp, #0x5c bl SetMonDataEncrypted add r0, r5, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats mov r6, #0x1 _02084C38: ldr r0, [sp, #0x6c] @@ -1167,7 +1167,7 @@ _02084C40: add r2, sp, #0x60 bl SetMonDataEncrypted add r0, r5, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats mov r6, #0x1 _02084C98: ldr r0, [sp, #0x6c] @@ -1212,7 +1212,7 @@ _02084CA0: add r2, sp, #0x64 bl SetMonDataEncrypted add r0, r5, #0x0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats mov r6, #0x1 _02084CF8: ldr r0, [sp, #0x6c] diff --git a/arm9/global.inc b/arm9/global.inc index 28f325a6..04644f92 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4714,10 +4714,10 @@ .extern TryEncryptBoxMon .extern CreateMon .extern CreateMonWithNature -.extern CreateMonWithNatureGenderLetter -.extern AdjustPersonalityToForceGenderAndNature +.extern CreateMonWithGenderNatureLetter +.extern GenPersonalityByGenderAndNature .extern CreateMonWithFixedIVs -.extern UpdateMonLevelAndRecalcStats +.extern CalcMonStats .extern CalcMonStatsMaybeEncrypted .extern GetMonDataEncrypted .extern GetBoxMonDataEncrypted diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 0dba71bb..9a62ca73 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -43275,7 +43275,7 @@ _021EC64E: blt _021EC616 _021EC658: add r0, r5, #0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats add sp, #0xc pop {r4, r5, r6, r7, pc} nop @@ -45678,7 +45678,7 @@ MOD05_021ED940: ; 0x021ED940 add r2, sp, #0 bl SetMonDataEncrypted add r0, r4, #0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats add sp, #0x1c pop {r4, r5, pc} .balign 4, 0 diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index bb887c23..c4c4559d 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -6748,7 +6748,7 @@ _0223C9E4: add r0, r4, #0 add r1, r7, #0 mov r3, #0x20 - bl CreateMonWithNatureGenderLetter + bl CreateMonWithGenderNatureLetter add r0, r4, #0 mov r1, #7 add r2, r5, #0 @@ -22071,7 +22071,7 @@ _02244508: add r2, r6, #0 bl SetMonDataEncrypted add r0, r5, #0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop @@ -22172,7 +22172,7 @@ _022445A6: add r2, sp, #8 bl SetMonDataEncrypted add r0, r4, #0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats _022445E8: add r0, r7, #0 add r1, r4, #0 @@ -31213,7 +31213,7 @@ MOD06_022489D4: ; 0x022489D4 mov r2, #1 bl FUN_0208089C add r0, r5, #0 - bl UpdateMonLevelAndRecalcStats + bl CalcMonStats add r0, r5, #0 bl MonIsShiny cmp r0, #0 diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s index 7d7666f9..03dbe420 100644 --- a/arm9/modules/67/asm/module_67.s +++ b/arm9/modules/67/asm/module_67.s @@ -3307,7 +3307,7 @@ MOD67_021D8F00: ; 0x021D8F00 add r1, r7, #0 mov r2, #1 mov r3, #0x20 - bl CreateMonWithNatureGenderLetter + bl CreateMonWithGenderNatureLetter add r0, r6, #0 bl FUN_020690E4 add r2, r0, #0 diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 60381e75..c59cfe4e 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -3,12 +3,15 @@ #include "pokemon.h" #include "heap.h" #include "MI_memory.h" +#include "math_util.h" #pragma thumb on void MonEncryptSegment(void * datap, u32 size, u32 key, ...); void MonDecryptSegment(void * datap, u32 size, u32 key, ...); u16 MonEncryptionLCRNG(u32 * seed); +u16 CalcMonChecksum(void * datap, u32 size); +void InitBoxMonMoveset(struct BoxPokemon * boxmon); #define ENCRY_ARGS_PTY(mon) &(mon)->party, sizeof((mon)->party), (mon)->box.pid #define ENCRY_ARGS_BOX(boxmon) &(boxmon)->substructs, sizeof((boxmon)->substructs), (boxmon)->checksum @@ -16,6 +19,13 @@ u16 MonEncryptionLCRNG(u32 * seed); #define ENCRYPT_BOX(boxmon) MonEncryptSegment(ENCRY_ARGS_BOX(boxmon)) #define DECRYPT_PTY(mon) MonDecryptSegment(ENCRY_ARGS_PTY(mon)) #define DECRYPT_BOX(boxmon) MonDecryptSegment(ENCRY_ARGS_BOX(boxmon)) +#define SHINY_CHECK(otid, pid) (( \ + ((((otid) & 0xFFFF0000u) >> 16u)) ^ \ + (((otid) & 0xFFFFu)) ^ \ + ((((pid) & 0xFFFF0000u) >> 16u))^ \ + (((pid) & 0xFFFFu))) \ + < 8u) +#define CALC_UNOWN_LETTER(pid) ((u32)((((pid) & 0x3000000) >> 18) | (((pid) & 0x30000) >> 12) | (((pid) & 0x300) >> 6) | (((pid) & 0x3) >> 0)) % 28u) void ZeroMonData(struct Pokemon * pokemon) { @@ -46,14 +56,204 @@ BOOL TryDecryptMon(struct Pokemon * mon) { BOOL ret = FALSE; - if (!mon->box.no_encrypt) + if (!mon->box.party_lock) { ret = TRUE; - GF_ASSERT(!mon->box.control_4_1); - mon->box.no_encrypt = TRUE; - mon->box.control_4_1 = TRUE; + GF_ASSERT(!mon->box.box_lock); + mon->box.party_lock = TRUE; + mon->box.box_lock = TRUE; DECRYPT_PTY(mon); DECRYPT_BOX(&mon->box); } return ret; } + +BOOL TryEncryptMon(struct Pokemon * mon, BOOL decrypt_result) +{ + BOOL ret = FALSE; + if (mon->box.party_lock == TRUE && decrypt_result == TRUE) + { + ret = TRUE; + mon->box.party_lock = FALSE; + mon->box.box_lock = FALSE; + ENCRYPT_PTY(mon); + mon->box.checksum = CalcMonChecksum(&mon->box.substructs, sizeof(mon->box.substructs)); + ENCRYPT_BOX(&mon->box); + } + return ret; +} + +BOOL TryDecryptBoxMon(struct BoxPokemon * mon) +{ + BOOL ret = FALSE; + + if (!mon->box_lock) + { + ret = TRUE; + mon->box_lock = TRUE; + DECRYPT_BOX(mon); + } + return ret; +} + +BOOL TryEncryptBoxMon(struct BoxPokemon * mon, BOOL decrypt_result) +{ + BOOL ret = FALSE; + if (mon->box_lock == TRUE && decrypt_result == TRUE) + { + ret = TRUE; + mon->box_lock = FALSE; + mon->checksum = CalcMonChecksum(&mon->substructs, sizeof(mon->substructs)); + ENCRYPT_BOX(mon); + } + return ret; +} + +void CreateMon(struct Pokemon * pokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId, ...) +{ + struct SealStruct * seal; + u32 capsule; + u8 seal_coords[0x18]; + ZeroMonData(pokemon); + CreateBoxMon(&pokemon->box, species, level, fixedIV, hasFixedPersonality, fixedPersonality, otIdType, fixedOtId); + // Not your average encryption call + MonEncryptSegment(&pokemon->party, sizeof(pokemon->party), 0); + ENCRYPT_PTY(pokemon); + SetMonDataEncrypted(pokemon, MON_DATA_LEVEL, &level); + seal = CreateNewSealsObject(0); + SetMonDataEncrypted(pokemon, MON_DATA_SEAL_STRUCT, seal); + FreeToHeap(seal); + capsule = 0; + SetMonDataEncrypted(pokemon, MON_DATA_CAPSULE, &capsule); + MIi_CpuClearFast(0, seal_coords, sizeof(seal_coords)); + SetMonDataEncrypted(pokemon, MON_DATA_SEAL_COORDS, seal_coords); + CalcMonStats(pokemon); +} + +void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId, ...) +{ + BOOL decry; + u32 exp; + u32 iv; + ZeroBoxMonData(boxPokemon); + decry = TryDecryptBoxMon(boxPokemon); + if (hasFixedPersonality == 0) + { + fixedPersonality = (rand_LC() | (rand_LC() << 16)); + } + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_PERSONALITY, &fixedPersonality); + if (otIdType == 2) + { + do + { + fixedOtId = (rand_LC() | (rand_LC() << 16)); + } while (SHINY_CHECK(fixedOtId, fixedPersonality)); + } + else if (otIdType != 1) + fixedOtId = 0; + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_OTID, &fixedOtId); + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_GAME_LANGUAGE, &gGameLanguage); + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPECIES, &species); + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPECIES_NAME, NULL); + exp = GetMonExpBySpeciesAndLevel(species, level); + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_EXPERIENCE, &exp); + exp = GetMonBaseStat(species, BASE_FRIENDSHIP); + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_FRIENDSHIP, &exp); + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_MET_LEVEL, &level); + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_GAME_VERSION, &gGameVersion); + exp = 4; + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_POKEBALL, &exp); + if (fixedIV < 0x20) + { + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_HP_IV, &fixedIV); + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ATK_IV, &fixedIV); + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_DEF_IV, &fixedIV); + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPEED_IV, &fixedIV); + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPATK_IV, &fixedIV); + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPDEF_IV, &fixedIV); + } + else + { + exp = rand_LC(); + iv = exp & 0x1F; + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_HP_IV, &iv); + iv = (exp & 0x3E0) >> 5; + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ATK_IV, &iv); + iv = (exp & 0x7C00) >> 10; + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_DEF_IV, &iv); + exp = rand_LC(); + iv = exp & 0x1F; + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPEED_IV, &iv); + iv = (exp & 0x3E0) >> 5; + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPATK_IV, &iv); + iv = (exp & 0x7C00) >> 10; + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPDEF_IV, &iv); + } + exp = GetMonBaseStat(species, BASE_ABILITY_1); + iv = GetMonBaseStat(species, BASE_ABILITY_2); + if (iv != 0) + { + if (fixedPersonality & 1) + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ABILITY, &iv); + else + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ABILITY, &exp); + } + else + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ABILITY, &exp); + exp = GetBoxMonGenderEncrypted(boxPokemon); + SetBoxMonDataEncrypted(boxPokemon, MON_DATA_GENDER, &exp); + InitBoxMonMoveset(boxPokemon); + TryEncryptBoxMon(boxPokemon, decry); +} + +void CreateMonWithNature(struct Pokemon * pokemon, u16 species, u8 level, u8 fixedIv, u8 nature) +{ + u32 personality; + do + { + personality = (u32)(rand_LC() | (rand_LC() << 16)); + } while (nature != GetNatureFromPersonality(personality)); + CreateMon(pokemon, (int)species, (int)level, (int)fixedIv, 1, (int)personality, (int)0, (int)0); +} + +// FIXME: stack storage of pokemon, fixedIv swapped +void CreateMonWithGenderNatureLetter(struct Pokemon * pokemon, u16 species, u8 level, u8 fixedIv, u8 gender, u8 nature, u8 letter) +{ + u32 pid = 0; + u16 test = 0; + if (letter != 0 && letter < 29) + { + do { + pid = (u32)(rand_LC() | (rand_LC() << 16)); + test = (u16)CALC_UNOWN_LETTER(pid); + } while (nature != GetNatureFromPersonality(pid) || gender != GetGenderBySpeciesAndPersonality(species, pid) || test != letter - 1); + } + else + { + pid = GenPersonalityByGenderAndNature(species, gender, nature); + } + CreateMon(pokemon, (int)species, (int)level, (int)fixedIv, 1, (int)pid, 0, 0); +} + +u32 GenPersonalityByGenderAndNature(u16 species, u8 gender, u8 nature) +{ + int pid = nature; + u8 ratio = (u8)GetMonBaseStat(species, BASE_GENDER_RATIO); + switch (ratio) + { + case MON_RATIO_MALE: + case MON_RATIO_FEMALE: + case MON_RATIO_UNKNOWN: + break; + default: + if (gender == MON_MALE) + { + // Smallest increment that forces the low byte to exceed the + // gender ratio, thus making the mon male + pid = 25 * ((ratio / 25) + 1); + pid += nature; + } + break; + } + return (u32)pid; +} diff --git a/include/global.h b/include/global.h index bffce9f0..35d0c3aa 100644 --- a/include/global.h +++ b/include/global.h @@ -29,4 +29,7 @@ extern void ErrorHandling(void); #define GF_ASSERT(expr) do {if (!(expr)) ErrorHandling();} while (0) +extern const enum GameLanguage gGameLanguage; +extern const enum GameVersion gGameVersion; + #endif //GUARD_GLOBAL_H diff --git a/include/math_util.h b/include/math_util.h new file mode 100644 index 00000000..f7169956 --- /dev/null +++ b/include/math_util.h @@ -0,0 +1,6 @@ +#ifndef POKEDIAMOND_MATH_UTIL_H +#define POKEDIAMOND_MATH_UTIL_H + +u16 rand_LC(void); + +#endif //POKEDIAMOND_MATH_UTIL_H diff --git a/include/pokemon.h b/include/pokemon.h index 410e4bc5..d5ab1fd9 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -6,6 +6,7 @@ // Enums #include "constants/species.h" +#include "seals.h" #define MON_DATA_PERSONALITY 0 #define MON_DATA_IS_ENCRYPTED 1 @@ -110,9 +111,16 @@ #define MON_DATA_TYPE_2 177 #define MON_DATA_SPECIES_NAME 178 -#define MON_MALE 0 -#define MON_FEMALE 254 -#define MON_GENDER_UNKNOWN 255 +#define MON_RATIO_MALE 0 +#define MON_RATIO_FEMALE 254 +#define MON_RATIO_UNKNOWN 255 + +enum MonGender +{ + MON_MALE = 0, + MON_FEMALE = 1, + MON_GENDERLESS = 2 +}; // TODO: Identify the rest of these enum BaseStat { @@ -136,7 +144,7 @@ enum BaseStat { BASE_ITEM_2, BASE_GENDER_RATIO, BASE_EGG_CYCLES, - BASE_FIRENDSHIP, + BASE_FRIENDSHIP, BASE_GROWTH_RATE, BASE_EGG_GROUP_1, GASE_EGG_GROUP_2, @@ -346,8 +354,8 @@ typedef union { struct BoxPokemon { /* 0x000 */ u32 pid; - /* 0x004 */ u16 no_encrypt:1; - u16 control_4_1:1; + /* 0x004 */ u16 party_lock:1; + u16 box_lock:1; u16 control_4_2:1; u16 Unused:13; // Might be used for validity checks /* 0x006 */ u16 checksum; // Stored checksum of pokemon @@ -373,7 +381,7 @@ struct PartyPokemon /* 0x096 */ u16 speed; /* 0x098 */ u16 spatk; /* 0x09A */ u16 spdef; - /* 0x09C */ u8 seal_something[0x38]; // a struct? + /* 0x09C */ struct SealStruct seal_something; // a struct? /* 0x0D4 */ u8 sealCoords[0x18]; // u8 pairs? }; @@ -387,15 +395,24 @@ void ZeroBoxMonData(struct BoxPokemon * boxmon); u32 SizeOfStructPokemon(void); struct Pokemon * AllocMonZeroed(u32 heap_id); BOOL TryDecryptMon(struct Pokemon * mon); -int GetMonBaseStat_HandleFormeConversion(int species, int form, int stat_id); -int GetMonBaseStat(int species, int stat_id); -int GetMonExpBySpeciesAndLevel(int species, int level); +BOOL TryEncryptMon(struct Pokemon * mon, BOOL decrypt_result); +BOOL TryDecryptBoxMon(struct BoxPokemon * mon); +BOOL TryEncryptBoxMon(struct BoxPokemon * mon, BOOL decrypt_result); +void CreateMon(struct Pokemon * pokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId, ...); +void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId, ...); +void CreateMonWithNature(struct Pokemon * pokemon, u16 species, u8 level, u8 fixedIv, u8 nature); +void CreateMonWithGenderNatureLetter(struct Pokemon * pokemon, u16 species, u8 level, u8 fixedIv, u8 gender, u8 nature, u8 letter); +u8 GetNatureFromPersonality(u32 pid); +u8 GetGenderBySpeciesAndPersonality(u16 species, u32 pid); +u32 GenPersonalityByGenderAndNature(u16 species, u8 gender, u8 nature); +void CalcMonStats(struct Pokemon * pokemon); +u32 GetBoxMonGenderEncrypted(struct BoxPokemon * boxmon); +int GetMonBaseStat_HandleFormeConversion(int species, int form, enum BaseStat stat_id); +u32 GetMonBaseStat(int species, enum BaseStat stat_id); +u32 GetMonExpBySpeciesAndLevel(int species, int level); void LoadGrowthTable(int species, int * table); int GetExpByGrowthRateAndLevel(int rate, int level); int CalcLevelBySpeciesAndExp(int species, int experience); -void CreateMon(struct Pokemon * pokemon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId, ...); -void CreateBoxMon(struct BoxPokemon * boxPokemon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId, ...); -void CreateMonWithNatureGenderLetter(struct Pokemon * pokemon, u16 species, u8 level, u8 nature, u8 gender, u8 letter); #ifndef IN_POKEMON_C u32 GetMonData(); @@ -408,8 +425,10 @@ u32 GetMonDataEncrypted(struct Pokemon * pokemon, u32 attr, void * ptr); u32 GetBoxMonData(struct BoxPokemon * pokemon, u32 attr, void * ptr); u32 GetBoxMonDataEncrypted(struct BoxPokemon * pokemon, u32 attr, void * ptr); #endif -void SetMonData(struct Pokemon * pokemon, u32 attr, void * ptr); -void SetBoxMonData(struct BoxPokemon * pokemon, u32 attr, void * ptr); +void SetMonData(struct Pokemon * pokemon, u32 attr, const void * ptr); +void SetMonDataEncrypted(struct Pokemon * pokemon, u32 attr, const void * ptr); +void SetBoxMonData(struct BoxPokemon * pokemon, u32 attr, const void * ptr); +void SetBoxMonDataEncrypted(struct BoxPokemon * pokemon, u32 attr, const void * ptr); void AddMonData(struct Pokemon * pokemon, u32 attr, u32 amount); void AddBoxMonData(struct Pokemon * pokemon, u32 attr, u32 amount); diff --git a/include/seals.h b/include/seals.h new file mode 100644 index 00000000..89808176 --- /dev/null +++ b/include/seals.h @@ -0,0 +1,12 @@ +#ifndef POKEDIAMOND_SEALS_H +#define POKEDIAMOND_SEALS_H + +struct SealStruct +{ + // TODO: define + u8 filler_00[0x38]; +}; + +struct SealStruct * CreateNewSealsObject(u32 heap_id); + +#endif //POKEDIAMOND_SEALS_H -- cgit v1.2.3 From e15304cdb698c9350e4d4e80ca2a4076b9b44d6c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Jun 2020 14:02:09 -0400 Subject: through CalcMonStats --- arm9/asm/pokemon_s.s | 655 +++++++++------------------------------- arm9/asm/scrcmd.s | 30 +- arm9/asm/scrcmd_12.s | 60 ++-- arm9/asm/scrcmd_18.s | 114 +++---- arm9/asm/scrcmd_4.s | 2 +- arm9/asm/scrcmd_5.s | 10 +- arm9/asm/unk_0200AA80.s | 8 +- arm9/asm/unk_02023C40.s | 24 +- arm9/asm/unk_02025658.s | 6 +- arm9/asm/unk_02026CD0.s | 18 +- arm9/asm/unk_0202B034.s | 24 +- arm9/asm/unk_0202BE98.s | 6 +- arm9/asm/unk_0202C144.s | 4 +- arm9/asm/unk_02035068.s | 2 +- arm9/asm/unk_020377F0.s | 8 +- arm9/asm/unk_0204653C.s | 12 +- arm9/asm/unk_02047500.s | 2 +- arm9/asm/unk_020476CC.s | 8 +- arm9/asm/unk_0204A01C.s | 34 +-- arm9/asm/unk_0204B9EC.s | 6 +- arm9/asm/unk_0204BE14.s | 2 +- arm9/asm/unk_02050E48.s | 2 +- arm9/asm/unk_02054C14.s | 4 +- arm9/asm/unk_020603B0.s | 6 +- arm9/asm/unk_02060CCC.s | 20 +- arm9/asm/unk_0206ABC4.s | 4 +- arm9/asm/unk_0206B16C.s | 14 +- arm9/asm/unk_0206B688.s | 12 +- arm9/asm/unk_0206B8A4.s | 6 +- arm9/asm/unk_0206BB5C.s | 16 +- arm9/asm/unk_0206C700.s | 48 +-- arm9/asm/unk_0206F3FC.s | 70 ++--- arm9/asm/unk_02072548.s | 12 +- arm9/asm/unk_02073710.s | 2 +- arm9/asm/unk_02073DA8.s | 6 +- arm9/asm/unk_0207550C.s | 70 ++--- arm9/asm/unk_02079C70.s | 92 +++--- arm9/asm/unk_0207FD00.s | 112 +++---- arm9/asm/unk_02080C38.s | 18 +- arm9/asm/unk_020828BC.s | 18 +- arm9/asm/unk_020842DC.s | 124 ++++---- arm9/asm/unk_020854E0.s | 14 +- arm9/asm/unk_020859C0.s | 6 +- arm9/asm/unk_02086084.s | 14 +- arm9/asm/unk_02086414.s | 8 +- arm9/asm/unk_02086FA8.s | 4 +- arm9/asm/unk_02087D00.s | 10 +- arm9/asm/unk_02088DD8.s | 8 +- arm9/global.inc | 12 +- arm9/modules/05/asm/module_05.s | 272 ++++++++--------- arm9/modules/06/asm/module_06.s | 174 +++++------ arm9/modules/07/asm/module_07.s | 22 +- arm9/modules/08/asm/module_08.s | 6 +- arm9/modules/09/asm/module_09.s | 62 ++-- arm9/modules/11/asm/module_11.s | 510 +++++++++++++++---------------- arm9/modules/12/asm/module_12.s | 84 +++--- arm9/modules/14/asm/module_14.s | 116 +++---- arm9/modules/16/asm/module_16.s | 154 +++++----- arm9/modules/17/asm/module_17.s | 2 +- arm9/modules/27/asm/module_27.s | 14 +- arm9/modules/28/asm/module_28.s | 8 +- arm9/modules/35/asm/module_35.s | 4 +- arm9/modules/39/asm/module_39.s | 4 +- arm9/modules/56/asm/module_56.s | 8 +- arm9/modules/62/asm/module_62.s | 30 +- arm9/modules/65/asm/module_65.s | 6 +- arm9/modules/69/asm/module_69.s | 24 +- arm9/modules/70/asm/module_70.s | 2 +- arm9/modules/71/asm/module_71.s | 32 +- arm9/modules/76/asm/module_76.s | 10 +- arm9/modules/80/asm/module_80.s | 72 ++--- arm9/modules/81/asm/module_81.s | 14 +- arm9/modules/83/asm/module_83.s | 14 +- arm9/src/pokemon.c | 130 +++++++- include/pokemon.h | 19 +- 75 files changed, 1657 insertions(+), 1903 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 97650972..a7b3107c 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -116,367 +116,8 @@ UNK_021C5AC0: ; 0x021C5AC0 .text - thumb_func_start CreateMonWithFixedIVs -CreateMonWithFixedIVs: ; 0x02066EA4 - push {r0-r3} - push {r4, lr} - sub sp, #0x10 - mov r3, #0x1 - str r3, [sp, #0x0] - ldr r3, [sp, #0x28] - add r4, r0, #0x0 - str r3, [sp, #0x4] - mov r3, #0x0 - str r3, [sp, #0x8] - str r3, [sp, #0xc] - bl CreateMon - add r0, r4, #0x0 - mov r1, #0xae - add r2, sp, #0x24 - bl SetMonDataEncrypted - add r0, r4, #0x0 - bl CalcMonStats - add sp, #0x10 - pop {r4} - pop {r3} - add sp, #0x10 - bx r3 - - thumb_func_start CalcMonStats -CalcMonStats: ; 0x02066ED8 - push {r3-r5, lr} - add r5, r0, #0x0 - bl TryDecryptMon - add r4, r0, #0x0 - add r0, r5, #0x0 - bl CalcMonLevelEncrypted - str r0, [sp, #0x0] - add r0, r5, #0x0 - mov r1, #0xa0 - add r2, sp, #0x0 - bl SetMonDataEncrypted - add r0, r5, #0x0 - bl CalcMonStatsMaybeEncrypted - add r0, r5, #0x0 - add r1, r4, #0x0 - bl TryEncryptMon - pop {r3-r5, pc} - - thumb_func_start CalcMonStatsMaybeEncrypted -CalcMonStatsMaybeEncrypted: ; 0x02066F04 - push {r3-r7, lr} - sub sp, #0x58 - add r5, r0, #0x0 - bl TryDecryptMon - str r0, [sp, #0x0] - add r0, r5, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonDataEncrypted - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xa3 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x2c] - add r0, r5, #0x0 - mov r1, #0xa2 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x54] - add r0, r5, #0x0 - mov r1, #0x46 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x30] - add r0, r5, #0x0 - mov r1, #0xd - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x34] - add r0, r5, #0x0 - mov r1, #0x47 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x28] - add r0, r5, #0x0 - mov r1, #0xe - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x14] - add r0, r5, #0x0 - mov r1, #0x48 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x24] - add r0, r5, #0x0 - mov r1, #0xf - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x10] - add r0, r5, #0x0 - mov r1, #0x49 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x20] - add r0, r5, #0x0 - mov r1, #0x10 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0xc] - add r0, r5, #0x0 - mov r1, #0x4a - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x1c] - add r0, r5, #0x0 - mov r1, #0x11 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x4b - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x18] - add r0, r5, #0x0 - mov r1, #0x12 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetMonDataEncrypted - str r0, [sp, #0x38] - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonDataEncrypted - add r7, r0, #0x0 - mov r0, #0x0 - mov r1, #0x2c - bl AllocFromHeap - add r6, r0, #0x0 - ldr r1, [sp, #0x38] - add r0, r7, #0x0 - add r2, r6, #0x0 - bl LoadMonBaseStats_HandleAlternateForme - mov r0, #0x49 - lsl r0, r0, #0x2 - cmp r7, r0 - bne _02066FFC - mov r0, #0x1 - b _0206701E -_02066FFC: - ldr r0, [sp, #0x34] - asr r0, r0, #0x1 - lsr r1, r0, #0x1e - ldr r0, [sp, #0x34] - add r1, r0, r1 - asr r0, r1, #0x2 - ldrb r1, [r6, #0x0] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x30] - add r1, r1, r2 - add r0, r0, r1 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - add r0, r4, r0 - add r0, #0xa -_0206701E: - str r0, [sp, #0x50] - add r0, r5, #0x0 - mov r1, #0xa3 - add r2, sp, #0x50 - bl SetMonDataEncrypted - ldr r0, [sp, #0x14] - asr r0, r0, #0x1 - lsr r1, r0, #0x1e - ldr r0, [sp, #0x14] - add r1, r0, r1 - asr r0, r1, #0x2 - ldrb r1, [r6, #0x1] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x28] - add r1, r1, r2 - add r0, r0, r1 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - add r0, r0, #0x5 - str r0, [sp, #0x4c] - add r0, r5, #0x0 - bl GetMonNatureEncrypted - ldr r1, [sp, #0x4c] - mov r2, #0x1 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl ApplyNatureModToStat - str r0, [sp, #0x4c] - add r0, r5, #0x0 - mov r1, #0xa4 - add r2, sp, #0x4c - bl SetMonDataEncrypted - ldr r0, [sp, #0x10] - asr r0, r0, #0x1 - lsr r1, r0, #0x1e - ldr r0, [sp, #0x10] - add r1, r0, r1 - asr r0, r1, #0x2 - ldrb r1, [r6, #0x2] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x24] - add r1, r1, r2 - add r0, r0, r1 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - add r0, r0, #0x5 - str r0, [sp, #0x48] - add r0, r5, #0x0 - bl GetMonNatureEncrypted - ldr r1, [sp, #0x48] - mov r2, #0x2 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl ApplyNatureModToStat - str r0, [sp, #0x48] - add r0, r5, #0x0 - mov r1, #0xa5 - add r2, sp, #0x48 - bl SetMonDataEncrypted - ldr r0, [sp, #0xc] - asr r0, r0, #0x1 - lsr r1, r0, #0x1e - ldr r0, [sp, #0xc] - add r1, r0, r1 - asr r0, r1, #0x2 - ldrb r1, [r6, #0x3] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x20] - add r1, r1, r2 - add r0, r0, r1 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - add r0, r0, #0x5 - str r0, [sp, #0x44] - add r0, r5, #0x0 - bl GetMonNatureEncrypted - ldr r1, [sp, #0x44] - mov r2, #0x3 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl ApplyNatureModToStat - str r0, [sp, #0x44] - add r0, r5, #0x0 - mov r1, #0xa6 - add r2, sp, #0x44 - bl SetMonDataEncrypted - ldr r0, [sp, #0x8] - asr r0, r0, #0x1 - lsr r1, r0, #0x1e - ldr r0, [sp, #0x8] - add r1, r0, r1 - asr r0, r1, #0x2 - ldrb r1, [r6, #0x4] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x1c] - add r1, r1, r2 - add r0, r0, r1 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - add r0, r0, #0x5 - str r0, [sp, #0x40] - add r0, r5, #0x0 - bl GetMonNatureEncrypted - ldr r1, [sp, #0x40] - mov r2, #0x4 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl ApplyNatureModToStat - str r0, [sp, #0x40] - add r0, r5, #0x0 - mov r1, #0xa7 - add r2, sp, #0x40 - bl SetMonDataEncrypted - ldr r0, [sp, #0x4] - asr r0, r0, #0x1 - lsr r1, r0, #0x1e - ldr r0, [sp, #0x4] - add r1, r0, r1 - asr r0, r1, #0x2 - ldrb r1, [r6, #0x5] - lsl r2, r1, #0x1 - ldr r1, [sp, #0x18] - add r1, r1, r2 - add r0, r0, r1 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - add r0, r0, #0x5 - str r0, [sp, #0x3c] - add r0, r5, #0x0 - bl GetMonNatureEncrypted - ldr r1, [sp, #0x3c] - mov r2, #0x5 - lsl r1, r1, #0x10 - lsr r1, r1, #0x10 - bl ApplyNatureModToStat - str r0, [sp, #0x3c] - add r0, r5, #0x0 - mov r1, #0xa8 - add r2, sp, #0x3c - bl SetMonDataEncrypted - add r0, r6, #0x0 - bl FreeToHeap - ldr r1, [sp, #0x54] - cmp r1, #0x0 - bne _0206717C - ldr r0, [sp, #0x2c] - cmp r0, #0x0 - bne _020671A0 -_0206717C: - mov r0, #0x49 - lsl r0, r0, #0x2 - cmp r7, r0 - bne _0206718A - mov r0, #0x1 - str r0, [sp, #0x54] - b _020671A0 -_0206718A: - cmp r1, #0x0 - bne _02067194 - ldr r0, [sp, #0x50] - str r0, [sp, #0x54] - b _020671A0 -_02067194: - ldr r1, [sp, #0x50] - ldr r0, [sp, #0x2c] - ldr r2, [sp, #0x54] - sub r0, r1, r0 - add r0, r2, r0 - str r0, [sp, #0x54] -_020671A0: - ldr r0, [sp, #0x54] - cmp r0, #0x0 - beq _020671B0 - add r0, r5, #0x0 - mov r1, #0xa2 - add r2, sp, #0x54 - bl SetMonDataEncrypted -_020671B0: - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - bl TryEncryptMon - add sp, #0x58 - pop {r3-r7, pc} - - thumb_func_start GetMonDataEncrypted -GetMonDataEncrypted: ; 0x020671BC + thumb_func_start GetMonData +GetMonData: ; 0x020671BC push {r4-r6, lr} add r5, r0, #0x0 ldrh r0, [r5, #0x4] @@ -514,7 +155,7 @@ _02067204: add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 - bl GetMonData + bl GetMonDataInternal add r4, r0, #0x0 ldrh r0, [r5, #0x4] lsl r0, r0, #0x1f @@ -534,8 +175,8 @@ _02067230: add r0, r4, #0x0 pop {r4-r6, pc} - thumb_func_start GetMonData -GetMonData: ; 0x02067234 + thumb_func_start GetMonDataInternal +GetMonDataInternal: ; 0x02067234 push {r3, lr} add r3, r1, #0x0 sub r3, #0x9f @@ -613,11 +254,11 @@ _020672AA: mov r0, #0x1 pop {r3, pc} _020672B6: - bl GetBoxMonData + bl GetBoxMonDataInternal pop {r3, pc} - thumb_func_start GetBoxMonDataEncrypted -GetBoxMonDataEncrypted: ; 0x020672BC + thumb_func_start GetBoxMonData +GetBoxMonData: ; 0x020672BC push {r4-r6, lr} add r5, r0, #0x0 ldrh r0, [r5, #0x4] @@ -650,7 +291,7 @@ _020672F8: add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 - bl GetBoxMonData + bl GetBoxMonDataInternal add r4, r0, #0x0 ldrh r0, [r5, #0x4] lsl r0, r0, #0x1e @@ -665,8 +306,8 @@ _02067318: add r0, r4, #0x0 pop {r4-r6, pc} - thumb_func_start GetBoxMonData -GetBoxMonData: ; 0x0206731C + thumb_func_start GetBoxMonDataInternal +GetBoxMonDataInternal: ; 0x0206731C push {r4-r7, lr} sub sp, #0xc str r1, [sp, #0x4] @@ -1390,8 +1031,8 @@ _02067824: .word SPECIES_MANAPHY_EGG _02067828: .word 0x0000FFFF _0206782C: .word SPECIES_ARCEUS - thumb_func_start SetMonDataEncrypted -SetMonDataEncrypted: ; 0x02067830 + thumb_func_start SetMonData +SetMonData: ; 0x02067830 push {r4-r6, lr} add r5, r0, #0x0 ldrh r0, [r5, #0x4] @@ -1435,7 +1076,7 @@ _02067886: add r0, r5, #0x0 add r1, r4, #0x0 add r2, r6, #0x0 - bl SetMonData + bl SetMonDataInternal ldrh r0, [r5, #0x4] lsl r0, r0, #0x1f lsr r0, r0, #0x1f @@ -1459,8 +1100,8 @@ _020678BC: pop {r4-r6, pc} .balign 4 - thumb_func_start SetMonData -SetMonData: ; 0x020678C0 + thumb_func_start SetMonDataInternal +SetMonDataInternal: ; 0x020678C0 push {r3, lr} add r3, r0, #0x0 add r0, r1, #0x0 @@ -3381,13 +3022,13 @@ GetPercentProgressTowardsNextLevel: ; 0x02068698 add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r5, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r7, r0, #0x18 add r0, r6, #0x0 @@ -3401,7 +3042,7 @@ GetPercentProgressTowardsNextLevel: ; 0x02068698 add r0, r5, #0x0 mov r1, #0x8 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0x0 ldr r1, [sp, #0x0] add r0, r5, #0x0 @@ -3428,7 +3069,7 @@ CalcBoxMonExpToNextLevelEncrypted: ; 0x02068700 mov r1, #0x5 mov r2, #0x0 add r4, r0, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r4, #0x0 @@ -3439,7 +3080,7 @@ CalcBoxMonExpToNextLevelEncrypted: ; 0x02068700 add r0, r4, #0x0 mov r1, #0x8 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r4, r0, #0x0 add r0, r6, #0x0 add r1, r5, #0x0 @@ -3453,12 +3094,12 @@ GetMonBaseExperienceAtCurrentLevel: ; 0x02068734 add r5, r0, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r0, #0x0 add r0, r4, #0x0 bl GetMonExpBySpeciesAndLevel @@ -3536,12 +3177,12 @@ CalcBoxMonLevelEncrypted: ; 0x020687C8 add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x8 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r7, r0, #0x0 add r0, r5, #0x0 add r1, r6, #0x0 @@ -3596,15 +3237,15 @@ _02068846: _0206884C: .word UNK_021C5AC0 _02068850: .word UNK_021C5AC0 + 4 - thumb_func_start GetMonNatureEncrypted -GetMonNatureEncrypted: ; 0x02068854 - ldr r3, _02068858 ; =GetBoxMonNatureEncrypted + thumb_func_start GetMonNature +GetMonNature: ; 0x02068854 + ldr r3, _02068858 ; =GetBoxMonNature bx r3 .balign 4 -_02068858: .word GetBoxMonNatureEncrypted +_02068858: .word GetBoxMonNature - thumb_func_start GetBoxMonNatureEncrypted -GetBoxMonNatureEncrypted: ; 0x0206885C + thumb_func_start GetBoxMonNature +GetBoxMonNature: ; 0x0206885C push {r4-r6, lr} add r5, r0, #0x0 bl TryDecryptBoxMon @@ -3612,7 +3253,7 @@ GetBoxMonNatureEncrypted: ; 0x0206885C add r4, r0, #0x0 add r0, r5, #0x0 add r2, r1, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r6, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -3696,7 +3337,7 @@ _02068900: add r0, r5, #0x0 mov r1, #0xad mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r1, r0, #0x10 beq _020689D4 @@ -3706,7 +3347,7 @@ _02068900: add r0, r5, #0x0 mov r1, #0x6 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 mov r1, #0x1 @@ -3718,7 +3359,7 @@ _02068900: add r0, r5, #0x0 mov r1, #0x9 add r2, r4, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x4 strh r0, [r1, #0x0] add r0, r4, #0x0 @@ -3745,7 +3386,7 @@ _02068958: add r0, r5, #0x0 mov r1, #0x9a mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0xb bne _0206897A add r0, r4, #0x1 @@ -3757,7 +3398,7 @@ _0206897A: add r0, r5, #0x0 mov r1, #0x97 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x0] cmp r1, r0 bne _02068994 @@ -3797,7 +3438,7 @@ _020689CA: add r0, r5, #0x0 mov r1, #0x9 add r2, sp, #0x4 - bl SetMonDataEncrypted + bl SetMonData _020689D4: add sp, #0x8 pop {r3-r7, pc} @@ -3821,13 +3462,13 @@ GetBoxMonGenderEncrypted: ; 0x020689E8 add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 mov r1, #0x0 lsr r4, r0, #0x10 add r0, r5, #0x0 add r2, r1, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r7, r0, #0x0 add r0, r5, #0x0 add r1, r6, #0x0 @@ -3907,12 +3548,12 @@ BoxMonIsShiny: ; 0x02068A88 mov r1, #0x7 mov r2, #0x0 add r5, r0, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData mov r1, #0x0 add r4, r0, #0x0 add r0, r5, #0x0 add r2, r1, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, r0, #0x0 add r0, r4, #0x0 bl CalcShininessByOtIdAndPersonality @@ -4035,7 +3676,7 @@ FUN_02068B70: ; 0x02068B70 add r0, r5, #0x0 mov r1, #0xad mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r5, #0x0 @@ -4047,7 +3688,7 @@ FUN_02068B70: ; 0x02068B70 add r7, r0, #0x0 add r0, r5, #0x0 add r2, r1, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r6, r0, #0x0 ldr r0, _02068BF8 ; =SPECIES_EGG cmp r4, r0 @@ -4055,7 +3696,7 @@ FUN_02068B70: ; 0x02068B70 add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r1, _02068BFC ; =SPECIES_MANAPHY cmp r0, r1 bne _02068BC6 @@ -4068,7 +3709,7 @@ _02068BCA: add r0, r5, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 _02068BD8: @@ -4408,7 +4049,7 @@ FUN_02068E1C: ; 0x02068E1C mov r1, #0xad mov r2, #0x0 add r5, r0, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r5, #0x0 @@ -4417,7 +4058,7 @@ FUN_02068E1C: ; 0x02068E1C str r0, [sp, #0x4] add r0, r5, #0x0 add r2, r1, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r6, r0, #0x0 ldr r0, _02068E80 ; =SPECIES_EGG cmp r4, r0 @@ -4425,7 +4066,7 @@ FUN_02068E1C: ; 0x02068E1C add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r1, _02068E84 ; =SPECIES_MANAPHY cmp r0, r1 bne _02068E5E @@ -4438,7 +4079,7 @@ _02068E62: add r0, r5, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x18 lsr r3, r0, #0x18 _02068E70: @@ -4802,7 +4443,7 @@ FUN_020690D4: ; 0x020690D4 push {r3, lr} mov r1, #0x70 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 pop {r3, pc} @@ -4819,20 +4460,20 @@ FUN_020690E8: ; 0x020690E8 mov r1, #0x5 mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r4, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r0, #0x1 add r0, sp, #0x0 strb r1, [r0, #0x0] add r0, r4, #0x0 mov r1, #0x8 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x4] add r0, r5, #0x0 mov r1, #0x15 @@ -4847,7 +4488,7 @@ FUN_020690E8: ; 0x020690E8 add r0, r4, #0x0 mov r1, #0x8 add r2, sp, #0x4 - bl SetMonDataEncrypted + bl SetMonData _02069138: add r0, sp, #0x0 ldrb r1, [r0, #0x0] @@ -4865,7 +4506,7 @@ _02069146: add r0, r4, #0x0 mov r1, #0xa0 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData add sp, #0x8 mov r0, #0x1 pop {r3-r5, pc} @@ -4887,26 +4528,26 @@ FUN_02069168: ; 0x02069168 add r2, r6, #0x0 str r3, [sp, #0x4] ldr r5, [sp, #0x58] - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x2c] add r0, r7, #0x0 mov r1, #0x6 add r2, r6, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 add r1, r6, #0x0 str r0, [sp, #0x28] add r0, r7, #0x0 add r2, r1, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x30] add r0, r7, #0x0 mov r1, #0x14 add r2, r6, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x10] @@ -4964,14 +4605,14 @@ _02069216: add r0, r7, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x14] add r0, r7, #0x0 mov r1, #0x9 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x20] @@ -5069,12 +4710,12 @@ _020692DA: add r0, r7, #0x0 mov r1, #0xa4 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x34] add r0, r7, #0x0 mov r1, #0xa5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x34] cmp r1, r0 bls _0206936C @@ -5090,12 +4731,12 @@ _02069306: add r0, r7, #0x0 mov r1, #0xa4 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x38] add r0, r7, #0x0 mov r1, #0xa5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x38] cmp r1, r0 bne _0206936C @@ -5111,12 +4752,12 @@ _02069332: add r0, r7, #0x0 mov r1, #0xa4 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x3c] add r0, r7, #0x0 mov r1, #0xa5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x3c] cmp r1, r0 bhs _0206936C @@ -5223,7 +4864,7 @@ _0206940E: add r0, r7, #0x0 mov r1, #0x6f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02069472 ldrh r1, [r4, #0x2] @@ -5238,7 +4879,7 @@ _0206942C: add r0, r7, #0x0 mov r1, #0x6f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x1 bne _02069472 ldrh r1, [r4, #0x2] @@ -5344,7 +4985,7 @@ _020694E4: add r0, r7, #0x0 mov r1, #0x6f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02069510 ldrh r1, [r4, #0x2] @@ -5367,7 +5008,7 @@ _02069510: add r0, r7, #0x0 mov r1, #0x6f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x1 bne _0206953E ldrh r1, [r4, #0x2] @@ -5495,13 +5136,13 @@ InitBoxMonMoveset: ; 0x020695F4 add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r5, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r7, r0, #0x0 add r0, r5, #0x0 bl CalcBoxMonLevelEncrypted @@ -5582,7 +5223,7 @@ _020696BE: add r0, r6, #0x0 add r1, #0x36 add r2, r7, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 bne _020696E0 @@ -5641,20 +5282,20 @@ _02069730: add r0, r5, #0x0 add r1, #0x37 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r1, [sp, #0x4] mov r2, #0x0 strh r0, [r1, #0x0] add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3b - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, r4, #0x0 strb r0, [r7, #0x0] add r0, r5, #0x0 add r1, #0x3f mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strb r0, [r6, #0x0] ldr r0, [sp, #0x4] add r4, r4, #0x1 @@ -5730,7 +5371,7 @@ FUN_020697D4: ; 0x020697D4 add r0, r5, #0x0 add r1, #0x3e mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x18 lsr r1, r0, #0x18 add r0, sp, #0x10 @@ -5764,19 +5405,19 @@ FUN_02069818: ; 0x02069818 add r0, r7, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x4] add r0, r7, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xc] add r0, r7, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r6, r0, #0x18 ldr r0, [sp, #0x4] @@ -5863,42 +5504,42 @@ FUN_020698E8: ; 0x020698E8 add r1, #0x36 mov r2, #0x0 add r5, r0, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, sp, #0x0 strh r0, [r1, #0x4] add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3a mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, sp, #0x0 strb r0, [r1, #0x2] add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3e mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, sp, #0x0 strb r0, [r1, #0x0] add r1, r6, #0x0 add r0, r5, #0x0 add r1, #0x36 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, sp, #0x0 strh r0, [r1, #0x6] add r1, r6, #0x0 add r0, r5, #0x0 add r1, #0x3a mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, sp, #0x0 strb r0, [r1, #0x3] add r1, r6, #0x0 add r0, r5, #0x0 add r1, #0x3e mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, sp, #0x0 strb r0, [r1, #0x1] add r1, r4, #0x0 @@ -5953,37 +5594,37 @@ _020699B2: add r0, r5, #0x0 add r1, #0x37 add r2, r7, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0x0 strh r0, [r6, #0x2] add r0, r5, #0x0 add r1, #0x3b mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0x0 strb r0, [r6, #0x1] add r0, r5, #0x0 add r1, #0x3f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0x0 add r2, sp, #0x0 strb r0, [r6, #0x0] add r0, r5, #0x0 add r1, #0x36 add r2, #0x2 - bl SetMonDataEncrypted + bl SetMonData add r1, r4, #0x0 add r2, sp, #0x0 add r0, r5, #0x0 add r1, #0x3a add r2, #0x1 - bl SetMonDataEncrypted + bl SetMonData add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3e add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r4, r4, #0x1 cmp r4, #0x3 blo _020699B2 @@ -5997,16 +5638,16 @@ _02069A0A: add r0, r5, #0x0 mov r1, #0x39 add r2, #0x2 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x0 add r0, r5, #0x0 mov r1, #0x3d add r2, #0x1 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 mov r1, #0x41 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData pop {r3-r7, pc} thumb_func_start FUN_02069A38 @@ -6021,7 +5662,7 @@ _02069A42: add r0, r6, #0x0 add r1, #0x36 add r2, r7, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 beq _02069A58 add r4, r4, #0x1 @@ -6064,28 +5705,28 @@ _02069A8E: add r0, r4, #0x0 mov r1, #0x9f add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0x0 mov r1, #0xa2 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0x0 mov r1, #0xa3 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x0 bl CreateNewSealsObject add r5, r0, #0x0 add r0, r4, #0x0 mov r1, #0xa9 add r2, r5, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 bl FreeToHeap add r0, r4, #0x0 mov r1, #0xa1 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x0 add r1, sp, #0x4 mov r2, #0x18 @@ -6093,9 +5734,9 @@ _02069A8E: add r0, r4, #0x0 mov r1, #0xaa add r2, sp, #0x4 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0x0 - bl CalcMonStats + bl CalcMonLevelAndStats add sp, #0x1c pop {r4-r5, pc} @@ -6116,19 +5757,19 @@ _02069AFE: mov r1, #0x5 mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02069B36 add r0, r4, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02069B36 add r0, r4, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 cmp r0, r6 @@ -6240,7 +5881,7 @@ FUN_02069BD0: ; 0x02069BD0 add r4, r1, #0x0 mov r1, #0x0 add r2, r1, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, r4, #0x0 bl FUN_02069BE4 pop {r4, pc} @@ -6328,13 +5969,13 @@ _02069C70: mov r1, #0x5 mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02069C70 add r0, r4, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02069C70 add r0, r7, #0x0 @@ -6376,7 +6017,7 @@ _02069CD0: strb r0, [r1, #0x0] add r0, r4, #0x0 mov r1, #0x99 - bl SetMonDataEncrypted + bl SetMonData _02069CF2: pop {r3-r7, pc} @@ -6399,7 +6040,7 @@ _02069D04: bl FUN_0206B9B0 mov r1, #0x99 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02069D26 add r0, r7, #0x0 @@ -6418,7 +6059,7 @@ _02069D32: bl FUN_0206B9B0 mov r1, #0x99 add r2, r6, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02069D4A add r0, r7, #0x1 @@ -6448,13 +6089,13 @@ _02069D66: mov r1, #0x5 mov r2, #0x0 add r7, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02069DBA add r0, r7, #0x0 mov r1, #0x99 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r4, #0x0] ldrb r1, [r4, #0x0] mov r0, #0xf @@ -6483,7 +6124,7 @@ _02069DB0: add r0, r7, #0x0 mov r1, #0x99 add r2, sp, #0x8 - bl SetMonDataEncrypted + bl SetMonData _02069DBA: ldr r0, [sp, #0x4] add r6, r6, #0x1 @@ -6518,13 +6159,13 @@ _02069DEC: mov r1, #0x5 mov r2, #0x0 add r6, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02069E6A add r0, r6, #0x0 mov r1, #0x99 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x4 strb r0, [r1, #0x0] add r0, r1, #0x0 @@ -6540,14 +6181,14 @@ _02069DEC: mov r1, #0x99 mov r2, #0x0 add r6, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0xf0 tst r0, r1 bne _02069E40 add r0, r6, #0x0 mov r1, #0x99 add r2, sp, #0x4 - bl SetMonDataEncrypted + bl SetMonData _02069E40: ldr r0, [sp, #0x0] cmp r4, r0 @@ -6558,14 +6199,14 @@ _02069E40: mov r1, #0x99 mov r2, #0x0 add r6, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0xf0 tst r0, r1 bne _02069E6A add r0, r6, #0x0 mov r1, #0x99 add r2, sp, #0x4 - bl SetMonDataEncrypted + bl SetMonData add r4, r4, #0x1 _02069E6A: add r4, r4, #0x1 @@ -6587,7 +6228,7 @@ FUN_02069E7C: ; 0x02069E7C push {r3, lr} mov r1, #0x99 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData mov r1, #0xf tst r0, r1 beq _02069E90 @@ -6609,7 +6250,7 @@ FUN_02069E9C: ; 0x02069E9C push {r3, lr} mov r1, #0x99 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x18 lsr r1, r0, #0x18 mov r0, #0xf @@ -6642,17 +6283,17 @@ FUN_02069ECC: ; 0x02069ECC add r5, r0, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0x6 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r1, _02069F20 ; =SPECIES_ARCEUS cmp r4, r1 bne _02069F1C @@ -6834,18 +6475,18 @@ FUN_0206A014: ; 0x0206A014 add r0, r5, #0x0 mov r1, #0xa3 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0xa2 add r2, sp, #0x8 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x0 str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0x9f add r2, sp, #0x8 - bl SetMonDataEncrypted + bl SetMonData _0206A050: add sp, #0xc pop {r3-r6, pc} @@ -6896,13 +6537,13 @@ FUN_0206A094: ; 0x0206A094 add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r5, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x0] @@ -6928,7 +6569,7 @@ FUN_0206A094: ; 0x0206A094 add r0, r5, #0x0 mov r1, #0x6 add r2, #0x2 - bl SetMonDataEncrypted + bl SetMonData add sp, #0x8 pop {r3-r7, pc} _0206A104: @@ -6945,13 +6586,13 @@ _0206A104: add r0, r5, #0x0 mov r1, #0x6 add r2, #0x2 - bl SetMonDataEncrypted + bl SetMonData add sp, #0x8 pop {r3-r7, pc} _0206A126: add r0, r5, #0x0 mov r1, #0x6 - bl SetMonDataEncrypted + bl SetMonData _0206A12E: add sp, #0x8 pop {r3-r7, pc} @@ -6973,13 +6614,13 @@ FUN_0206A144: ; 0x0206A144 mov r1, #0xad mov r2, #0x0 add r5, r0, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r5, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, r0, #0x0 add r0, r4, #0x0 add r2, r6, #0x0 @@ -7055,12 +6696,12 @@ FUN_0206A1CC: ; 0x0206A1CC add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData mov r1, #0x0 add r4, r0, #0x0 add r0, r5, #0x0 add r2, r1, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r6, r0, #0x0 add r0, r4, #0x0 mov r1, #0x18 @@ -8230,7 +7871,7 @@ FUN_0206A998: ; 0x0206A998 push {r3, lr} mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl IsPokemonLegendaryOrMythical @@ -8249,7 +7890,7 @@ FUN_0206A9AC: ; 0x0206A9AC add r0, r5, #0x0 mov r1, #0x7 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0x4] add r0, r4, #0x0 bl FUN_020239CC @@ -8257,7 +7898,7 @@ FUN_0206A9AC: ; 0x0206A9AC add r0, r5, #0x0 mov r1, #0x9c mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0xc] add r0, r4, #0x0 add r1, r6, #0x0 @@ -8271,7 +7912,7 @@ FUN_0206A9AC: ; 0x0206A9AC mov r1, #0x90 add r2, r6, #0x0 mov r4, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r1, [sp, #0x0] ldr r0, [sp, #0x4] cmp r1, r0 @@ -8363,12 +8004,12 @@ FUN_0206AA84: ; 0x0206AA84 add r0, r4, #0x0 mov r1, #0xa1 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x0 add r0, r4, #0x0 mov r1, #0xaa add r2, #0x1 - bl SetMonDataEncrypted + bl SetMonData add sp, #0x1c pop {r3-r4, pc} @@ -8387,14 +8028,14 @@ _0206AAC6: add r0, r5, #0x0 add r1, #0x36 add r2, r7, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 beq _0206AAF0 add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x42 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, r4, #0x0 strb r0, [r6, #0x0] add r0, r5, #0x0 diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s index 09f2b266..aee5d3ff 100644 --- a/arm9/asm/scrcmd.s +++ b/arm9/asm/scrcmd.s @@ -4635,7 +4635,7 @@ FUN_0203BDB8: ; 0x0203BDB8 add r0, r4, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r0, #0x0 add r5, #0x80 lsl r1, r1, #0x10 @@ -5530,7 +5530,7 @@ FUN_0203C520: ; 0x0203C520 mov r1, #0x74 add r2, sp, #0xc add r7, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r0, r5, #0x0 bl ScriptReadHalfword add r1, r0, #0x0 @@ -5542,7 +5542,7 @@ FUN_0203C520: ; 0x0203C520 add r0, r7, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 str r6, [sp, #0x0] add r0, sp, #0xc @@ -10085,32 +10085,32 @@ FUN_0203E9CC: ; 0x0203E9CC add r5, r0, #0x0 mov r1, #0xd mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xe mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0xf mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0x0 add r0, r5, #0x0 mov r1, #0x10 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x4] add r0, r5, #0x0 mov r1, #0x11 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0x12 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, r6 add r2, r7, r1 ldr r1, [sp, #0x4] @@ -10196,7 +10196,7 @@ FUN_0203EAB0: ; 0x0203EAB0 bl FUN_0206B9B0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r5, #0x0 @@ -10720,16 +10720,16 @@ _0203EF18: mov r1, #0x5 mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _0203EF54 ; =0x00000182 cmp r0, r1 bne _0203EF48 add r0, r4, #0x0 mov r1, #0x70 add r2, sp, #0x4 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0x0 - bl CalcMonStats + bl CalcMonLevelAndStats add r0, r7, #0x0 add r1, r4, #0x0 bl FUN_02024AF0 @@ -10786,12 +10786,12 @@ _0203EFA2: add r6, r0, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x10] add r0, r6, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r3, r0, #0x0 mov r0, #0x67 ldr r1, [sp, #0x10] diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s index d326b254..a941eb48 100644 --- a/arm9/asm/scrcmd_12.s +++ b/arm9/asm/scrcmd_12.s @@ -349,17 +349,17 @@ FUN_02042F6C: ; 0x02042F6C mov r1, #0x97 add r2, r7, #0x0 add r5, #0xf0 - bl GetMonDataEncrypted + bl GetMonData add r1, r7, #0x0 str r0, [sp, #0x8] add r0, r4, #0x0 add r2, r1, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x14] add r0, r4, #0x0 mov r1, #0x7 add r2, r7, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 bl OS_GetTick bl rand_ALT @@ -396,36 +396,36 @@ _02042FE8: add r0, r4, #0x0 mov r1, #0x6f add r2, sp, #0x30 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0x0 mov r1, #0x4b mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x18] add r0, r4, #0x0 mov r1, #0x4a mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x1c] add r0, r4, #0x0 mov r1, #0x49 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x20] add r0, r4, #0x0 mov r1, #0x48 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x24] add r0, r4, #0x0 mov r1, #0x46 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 add r0, r4, #0x0 mov r1, #0x47 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r6, r0 ldr r0, [sp, #0x24] add r1, r0, r1 @@ -445,7 +445,7 @@ _02042FE8: add r0, r4, #0x0 mov r1, #0x46 add r2, sp, #0x34 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x3e lsl r0, r0, #0x4 and r0, r6 @@ -454,7 +454,7 @@ _02042FE8: add r0, r4, #0x0 mov r1, #0x47 add r2, sp, #0x34 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x1f lsl r0, r0, #0xa and r0, r6 @@ -463,7 +463,7 @@ _02042FE8: add r0, r4, #0x0 mov r1, #0x48 add r2, sp, #0x34 - bl SetMonDataEncrypted + bl SetMonData bl rand_LC add r6, r0, #0x0 mov r0, #0x1f @@ -472,7 +472,7 @@ _02042FE8: add r0, r4, #0x0 mov r1, #0x49 add r2, sp, #0x34 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x3e lsl r0, r0, #0x4 and r0, r6 @@ -481,7 +481,7 @@ _02042FE8: add r0, r4, #0x0 mov r1, #0x4a add r2, sp, #0x34 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x1f lsl r0, r0, #0xa and r0, r6 @@ -490,7 +490,7 @@ _02042FE8: add r0, r4, #0x0 mov r1, #0x4b add r2, sp, #0x34 - bl SetMonDataEncrypted + bl SetMonData _020430DA: ldr r0, [sp, #0x4] ldr r0, [r0, #0xc] @@ -499,7 +499,7 @@ _020430DA: add r0, r4, #0x0 mov r1, #0x2e mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _020430FC mov r0, #0x49 @@ -510,7 +510,7 @@ _020430FC: add r0, r4, #0x0 mov r1, #0x2f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02043114 mov r0, #0x4a @@ -521,7 +521,7 @@ _02043114: add r0, r4, #0x0 mov r1, #0x30 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0204312C mov r0, #0x4b @@ -532,7 +532,7 @@ _0204312C: add r0, r4, #0x0 mov r1, #0x31 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02043144 mov r0, #0x4c @@ -543,7 +543,7 @@ _02043144: add r0, r4, #0x0 mov r1, #0x32 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0204315C mov r0, #0x4d @@ -554,7 +554,7 @@ _0204315C: add r0, r4, #0x0 mov r1, #0x33 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02043174 mov r0, #0x4e @@ -565,7 +565,7 @@ _02043174: add r0, r4, #0x0 mov r1, #0x34 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0204318C mov r0, #0x4f @@ -576,7 +576,7 @@ _0204318C: add r0, r4, #0x0 mov r1, #0x67 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _020431A4 mov r0, #0x19 @@ -587,7 +587,7 @@ _020431A4: add r0, r4, #0x0 mov r1, #0x68 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _020431BC mov r0, #0x1a @@ -598,7 +598,7 @@ _020431BC: add r0, r4, #0x0 mov r1, #0x69 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _020431D4 mov r0, #0x1b @@ -629,15 +629,15 @@ _020431D4: add r0, r7, #0x0 mov r1, #0x90 add r2, r5, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r7, #0x0 mov r1, #0x7 add r2, sp, #0x2c - bl SetMonDataEncrypted + bl SetMonData add r0, r7, #0x0 mov r1, #0x9c add r2, sp, #0x28 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 add r4, r7, #0x0 bl FUN_02021A20 @@ -653,7 +653,7 @@ _0204322C: mov r2, #0x4 bl FUN_0208089C add r0, r4, #0x0 - bl CalcMonStats + bl CalcMonLevelAndStats ldr r0, [sp, #0x4] ldr r0, [r0, #0xc] bl FUN_0206BB1C diff --git a/arm9/asm/scrcmd_18.s b/arm9/asm/scrcmd_18.s index f52aaf69..4b248a90 100644 --- a/arm9/asm/scrcmd_18.s +++ b/arm9/asm/scrcmd_18.s @@ -95,13 +95,13 @@ FUN_0204434C: ; 0x0204434C mov r1, #0x4c mov r2, #0x0 add r5, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _020443A0 add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData b _020443A2 _020443A0: mov r0, #0x0 @@ -141,7 +141,7 @@ FUN_020443A8: ; 0x020443A8 bl FUN_0206B9B0 mov r1, #0x7 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r7, #0x0 @@ -294,7 +294,7 @@ FUN_020444F4: ; 0x020444F4 mov r1, #0x4c add r4, r0, #0x0 strh r2, [r6, #0x0] - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02044556 mov r0, #0x0 @@ -303,25 +303,25 @@ _02044556: add r0, r4, #0x0 mov r1, #0x36 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 beq _0204458E add r0, r4, #0x0 mov r1, #0x37 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 beq _0204458E add r0, r4, #0x0 mov r1, #0x38 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 beq _0204458E add r0, r4, #0x0 mov r1, #0x39 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 bne _02044592 _0204458E: @@ -375,31 +375,31 @@ _020445E4: mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _0204463E add r0, r4, #0x0 mov r1, #0x36 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 beq _02044638 add r0, r4, #0x0 mov r1, #0x37 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 beq _02044638 add r0, r4, #0x0 mov r1, #0x38 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 beq _02044638 add r0, r4, #0x0 mov r1, #0x39 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 bne _0204463E _02044638: @@ -493,13 +493,13 @@ _020446EA: mov r1, #0x4c mov r2, #0x0 add r6, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _0204471A add r0, r6, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x0] cmp r0, r1 bhi _0204471A @@ -549,13 +549,13 @@ FUN_02044730: ; 0x02044730 mov r1, #0x4c add r5, r0, #0x0 strh r2, [r4, #0x0] - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02044786 add r0, r5, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x0] _02044786: mov r0, #0x0 @@ -601,7 +601,7 @@ _020447D2: mov r1, #0x4c mov r2, #0x0 add r5, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _020447F2 mov r0, #0x0 @@ -609,7 +609,7 @@ _020447D2: pop {r4-r6, pc} _020447F2: add r0, r5, #0x0 - bl GetMonNatureEncrypted + bl GetMonNature strh r0, [r4, #0x0] mov r0, #0x0 pop {r4-r6, pc} @@ -655,11 +655,11 @@ _02044848: mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02044874 add r0, r4, #0x0 - bl GetMonNatureEncrypted + bl GetMonNature ldr r1, [sp, #0x0] cmp r1, r0 bne _02044874 @@ -707,7 +707,7 @@ FUN_0204488C: ; 0x0204488C bl FUN_0206B9B0 mov r1, #0x9 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r6, #0x0] mov r0, #0x0 pop {r4-r6, pc} @@ -748,7 +748,7 @@ FUN_020448D4: ; 0x020448D4 mov r1, #0x9 mov r2, #0x0 add r5, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x4 strh r0, [r1, #0x0] cmp r4, #0x0 @@ -756,7 +756,7 @@ FUN_020448D4: ; 0x020448D4 add r0, r5, #0x0 mov r1, #0x6 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 mov r1, #0x1 @@ -774,7 +774,7 @@ _0204495A: add r0, r5, #0x0 mov r1, #0x9a mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0xb bne _0204496E add r0, r4, #0x1 @@ -784,7 +784,7 @@ _0204496E: add r0, r5, #0x0 mov r1, #0x97 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r7, r0 bne _02044982 add r0, r4, #0x1 @@ -804,7 +804,7 @@ _02044994: add r0, r5, #0x0 mov r1, #0x9 add r2, sp, #0x4 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x0 add sp, #0x8 pop {r3-r7, pc} @@ -838,7 +838,7 @@ FUN_020449A4: ; 0x020449A4 mov r1, #0x9 mov r2, #0x0 add r5, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x0 strh r0, [r1, #0x0] ldrh r0, [r1, #0x0] @@ -853,7 +853,7 @@ _020449FA: add r0, r5, #0x0 mov r1, #0x9 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x0 add sp, #0x4 pop {r3-r6, pc} @@ -894,7 +894,7 @@ FUN_02044A0C: ; 0x02044A0C add r4, #0x13 add r1, r4, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r6, #0x0] mov r0, #0x0 pop {r3-r7, pc} @@ -956,12 +956,12 @@ FUN_02044A94: ; 0x02044A94 add r4, r0, #0x0 mov r1, #0xb0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r6, #0x0] add r0, r4, #0x0 mov r1, #0xb1 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r7, #0x0] mov r0, #0x0 pop {r3-r7, pc} @@ -1016,7 +1016,7 @@ _02044B5A: bl FUN_0206B9B0 mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02044B74 add r4, r4, #0x1 @@ -1072,13 +1072,13 @@ _02044BC8: mov r1, #0x4c mov r2, #0x0 add r6, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02044BF8 add r0, r6, #0x0 mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02044BF8 add r4, r4, #0x1 @@ -1128,13 +1128,13 @@ _02044C44: mov r1, #0x4c mov r2, #0x0 add r6, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02044C6E add r0, r6, #0x0 mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02044C6E add r4, r4, #0x1 @@ -1181,7 +1181,7 @@ _02044CB6: bl FUN_0206B9B0 mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02044CD0 add r4, r4, #0x1 @@ -1226,7 +1226,7 @@ _02044D12: bl FUN_0206B9B0 add r1, r7, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02044D32 ldr r0, [sp, #0x0] @@ -1272,7 +1272,7 @@ FUN_02044D44: ; 0x02044D44 bl FUN_0206B9B0 mov r1, #0x6f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x0] mov r0, #0x0 pop {r4-r6, pc} @@ -1305,7 +1305,7 @@ FUN_02044D8C: ; 0x02044D8C mov r1, #0x4c mov r2, #0x0 add r6, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02044DDA mov r0, #0x0 @@ -1316,7 +1316,7 @@ _02044DDA: add r0, r6, #0x0 mov r1, #0x36 add r2, r4, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02044DF0 add r0, r4, #0x1 @@ -1326,7 +1326,7 @@ _02044DF0: add r0, r6, #0x0 mov r1, #0x37 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02044E04 add r0, r4, #0x1 @@ -1336,7 +1336,7 @@ _02044E04: add r0, r6, #0x0 mov r1, #0x38 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02044E18 add r0, r4, #0x1 @@ -1346,7 +1346,7 @@ _02044E18: add r0, r6, #0x0 mov r1, #0x39 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02044E2C add r0, r4, #0x1 @@ -1424,7 +1424,7 @@ FUN_02044E78: ; 0x02044E78 add r4, #0x36 add r1, r4, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r6, #0x0] mov r0, #0x0 pop {r3-r7, pc} @@ -1457,7 +1457,7 @@ FUN_02044ED8: ; 0x02044ED8 bl FUN_0206B9B0 mov r1, #0x6 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r6, #0x0] mov r0, #0x0 pop {r4-r6, pc} @@ -1484,7 +1484,7 @@ FUN_02044F20: ; 0x02044F20 strh r2, [r1, #0x0] mov r1, #0x6 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x0 pop {r3-r5, pc} @@ -1527,13 +1527,13 @@ _02044F9E: mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02044FD4 add r0, r4, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r1, r0, #0x10 ldr r0, [sp, #0x0] @@ -1593,7 +1593,7 @@ _0204502A: add r1, r0, #0x0 add r0, r6, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02045048 add r0, r5, #0x1 @@ -1653,7 +1653,7 @@ _020450A6: mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _020450E8 add r0, r7, #0x0 @@ -1662,7 +1662,7 @@ _020450A6: add r1, r0, #0x0 add r0, r4, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _020450DE ldr r0, [sp, #0x4] @@ -1734,7 +1734,7 @@ FUN_02045104: ; 0x02045104 add r1, r0, #0x0 add r0, r5, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x0] mov r0, #0x0 pop {r3-r7, pc} @@ -1777,7 +1777,7 @@ FUN_02045170: ; 0x02045170 add r1, r0, #0x0 add r0, r5, #0x0 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x0 add sp, #0x4 pop {r3-r6, pc} @@ -1821,13 +1821,13 @@ _02045212: mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02045242 add r0, r4, #0x0 mov r1, #0x3 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02045242 ldr r0, [sp, #0x0] diff --git a/arm9/asm/scrcmd_4.s b/arm9/asm/scrcmd_4.s index 7310f545..ad51e8aa 100644 --- a/arm9/asm/scrcmd_4.s +++ b/arm9/asm/scrcmd_4.s @@ -947,7 +947,7 @@ FUN_02040E4C: ; 0x02040E4C add r4, #0x36 add r1, r4, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r2, r0, #0x10 ldr r0, [r7, #0x0] diff --git a/arm9/asm/scrcmd_5.s b/arm9/asm/scrcmd_5.s index bb367973..0a13ac22 100644 --- a/arm9/asm/scrcmd_5.s +++ b/arm9/asm/scrcmd_5.s @@ -91,13 +91,13 @@ _0204123C: mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _0204127C add r0, r4, #0x0 mov r1, #0x7 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r1, r0, #0x10 lsl r1, r1, #0x10 @@ -132,19 +132,19 @@ _02041290: mov r1, #0x5 mov r2, #0x0 add r4, r0, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 beq _020412E0 add r0, r4, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 bne _020412E0 add r0, r4, #0x0 mov r1, #0x7 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r1, r0, #0x10 lsl r1, r1, #0x10 diff --git a/arm9/asm/unk_0200AA80.s b/arm9/asm/unk_0200AA80.s index 2da52f7f..42a4d3a4 100644 --- a/arm9/asm/unk_0200AA80.s +++ b/arm9/asm/unk_0200AA80.s @@ -285,7 +285,7 @@ FUN_0200AC60: ; 0x0200AC60 add r0, r7, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, r0, #0x0 ldr r2, [r5, #0xc] add r0, r4, #0x0 @@ -309,7 +309,7 @@ FUN_0200ACA4: ; 0x0200ACA4 add r0, r2, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r2, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -350,7 +350,7 @@ FUN_0200ACF8: ; 0x0200ACF8 add r4, r1, #0x0 ldr r2, [r5, #0xc] mov r1, #0x76 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r2, [r5, #0xc] add r0, r5, #0x0 add r1, r4, #0x0 @@ -367,7 +367,7 @@ FUN_0200AD18: ; 0x0200AD18 add r4, r1, #0x0 ldr r2, [r5, #0xc] mov r1, #0x90 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r2, [r5, #0xc] add r0, r5, #0x0 add r1, r4, #0x0 diff --git a/arm9/asm/unk_02023C40.s b/arm9/asm/unk_02023C40.s index 9b5622d0..480a9e7a 100644 --- a/arm9/asm/unk_02023C40.s +++ b/arm9/asm/unk_02023C40.s @@ -120,13 +120,13 @@ FUN_02023CC8: ; 0x02023CC8 add r5, r0, #0x0 mov r1, #0xc mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r5, #0xec add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xc mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r4, r0 beq _02023CEA mov r0, #0x1 @@ -785,7 +785,7 @@ FUN_0202415C: ; 0x0202415C add r0, r2, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r4, r0, #0x18 ldr r0, _02024198 ; =0x00000182 @@ -884,7 +884,7 @@ _02024210: add r0, r2, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -897,7 +897,7 @@ _0202422E: add r0, r2, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -911,7 +911,7 @@ _0202424A: add r0, r2, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -925,7 +925,7 @@ _02024268: add r0, r2, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 @@ -1916,14 +1916,14 @@ FUN_0202498C: ; 0x0202498C add r0, r1, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x4] mov r1, #0x0 ldr r0, [sp, #0x0] add r2, r1, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0x0 ldr r0, [sp, #0x0] bl GetMonGenderEncrypted @@ -2099,18 +2099,18 @@ FUN_02024AF0: ; 0x02024AF0 add r0, r1, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r6, r0, #0x10 ldr r0, [sp, #0x0] mov r1, #0xc mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x8] mov r1, #0x0 ldr r0, [sp, #0x0] add r2, r1, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x4] ldr r0, [sp, #0x0] bl GetMonGenderEncrypted diff --git a/arm9/asm/unk_02025658.s b/arm9/asm/unk_02025658.s index a0a09b95..b18eca9c 100644 --- a/arm9/asm/unk_02025658.s +++ b/arm9/asm/unk_02025658.s @@ -120,19 +120,19 @@ _0202572A: mov r1, #0x5 mov r2, #0x0 add r7, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x4] add r0, r7, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x8] add r0, r7, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xc] add r0, r7, #0x0 bl FUN_0206B6C8 diff --git a/arm9/asm/unk_02026CD0.s b/arm9/asm/unk_02026CD0.s index 98d65c78..ec6fd057 100644 --- a/arm9/asm/unk_02026CD0.s +++ b/arm9/asm/unk_02026CD0.s @@ -15,27 +15,27 @@ FUN_02026CD0: ; 0x02026CD0 mov r1, #0x5 mov r2, #0x0 add r7, r3, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r5, #0x0 strh r0, [r5, #0x8] add r0, r4, #0x0 mov r1, #0x74 add r2, #0xa - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x0 add r0, r4, #0x0 add r2, r1, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [r5, #0x0] add r0, r4, #0x0 mov r1, #0x7 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [r5, #0x4] add r0, r4, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0x0 add r1, #0x33 strb r0, [r1, #0x0] @@ -2125,12 +2125,12 @@ _02027B9C: add r0, r4, #0x0 mov r1, #0x74 add r2, #0x12 - bl SetMonDataEncrypted + bl SetMonData add r5, #0x3b add r0, r4, #0x0 mov r1, #0x70 add r2, r5, #0x0 - bl SetMonDataEncrypted + bl SetMonData add sp, #0x10 pop {r3-r5, pc} nop @@ -2300,12 +2300,12 @@ FUN_02027CB8: ; 0x02027CB8 add r0, r4, #0x0 mov r1, #0x74 add r2, #0xa - bl SetMonDataEncrypted + bl SetMonData add r5, #0x33 add r0, r4, #0x0 mov r1, #0x70 add r2, r5, #0x0 - bl SetMonDataEncrypted + bl SetMonData add sp, #0x10 pop {r3-r5, pc} .balign 4 diff --git a/arm9/asm/unk_0202B034.s b/arm9/asm/unk_0202B034.s index a72a3829..9caae8d5 100644 --- a/arm9/asm/unk_0202B034.s +++ b/arm9/asm/unk_0202B034.s @@ -84,60 +84,60 @@ _0202B0BA: add r0, r4, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _0202B17E add r0, r4, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x0] add r0, r4, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r5, #0x2] add r0, r4, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x0 strb r0, [r5, #0x3] add r0, r4, #0x0 add r2, r1, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [r5, #0x4] add r0, r4, #0x0 mov r1, #0x7 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [r5, #0x8] add r0, r4, #0x0 mov r1, #0x36 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x32] add r0, r4, #0x0 mov r1, #0x37 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x34] add r0, r4, #0x0 mov r1, #0x38 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x36] add r0, r4, #0x0 mov r1, #0x39 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x38] cmp r6, #0x0 beq _0202B176 add r0, r4, #0x0 mov r1, #0x76 add r2, r6, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0x0 add r0, r6, #0x0 add r1, #0xc @@ -146,7 +146,7 @@ _0202B0BA: add r0, r4, #0x0 mov r1, #0x90 add r2, r6, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0x0 add r0, r6, #0x0 add r1, #0x22 diff --git a/arm9/asm/unk_0202BE98.s b/arm9/asm/unk_0202BE98.s index edec1ae4..8e7a28c2 100644 --- a/arm9/asm/unk_0202BE98.s +++ b/arm9/asm/unk_0202BE98.s @@ -27,7 +27,7 @@ _0202BEB4: add r0, r5, #0x0 add r1, r6, #0x0 add r2, r7, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0202BECC bl ErrorHandling @@ -57,7 +57,7 @@ _0202BEF0: add r0, r5, #0x0 add r1, r6, #0x0 add r2, r7, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0202BF08 bl ErrorHandling @@ -205,7 +205,7 @@ _0202C00A: add r0, r5, #0x0 add r1, r7, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0202C01A add r4, r4, #0x1 diff --git a/arm9/asm/unk_0202C144.s b/arm9/asm/unk_0202C144.s index 50c7240b..fdda34d3 100644 --- a/arm9/asm/unk_0202C144.s +++ b/arm9/asm/unk_0202C144.s @@ -11,7 +11,7 @@ FUN_0202C144: ; 0x0202C144 add r0, r4, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _0202C194 add r0, r5, #0x0 @@ -23,7 +23,7 @@ FUN_0202C144: ; 0x0202C144 add r0, r4, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 lsl r2, r2, #0x10 add r0, r7, #0x0 diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s index 74c41707..3b0e21b2 100644 --- a/arm9/asm/unk_02035068.s +++ b/arm9/asm/unk_02035068.s @@ -2457,7 +2457,7 @@ _020363F6: ldr r0, [sp, #0xc] mov r1, #0x6 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02036474 add r0, r5, #0x0 diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s index 1b513296..0c8fe8c6 100644 --- a/arm9/asm/unk_020377F0.s +++ b/arm9/asm/unk_020377F0.s @@ -1585,7 +1585,7 @@ _020382F6: ldr r0, [r4, #0x44] mov r1, #0x6 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r3, r0, #0x0 add r0, sp, #0x30 str r0, [sp, #0x0] @@ -1910,7 +1910,7 @@ _02038590: ldr r2, [r4, #0xc] mov r1, #0x75 add r2, #0x1c - bl SetMonDataEncrypted + bl SetMonData pop {r3-r5, pc} _020385A8: ldr r0, [r5, #0xc] @@ -1977,13 +1977,13 @@ _02038620: mov r1, #0x6f mov r2, #0x0 add r6, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [r4, #0xc] mov r2, #0x0 str r0, [r1, #0x10] add r0, r6, #0x0 mov r1, #0x70 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [r4, #0xc] cmp r5, #0x0 str r0, [r1, #0x8] diff --git a/arm9/asm/unk_0204653C.s b/arm9/asm/unk_0204653C.s index bbe445d7..cc6edb17 100644 --- a/arm9/asm/unk_0204653C.s +++ b/arm9/asm/unk_0204653C.s @@ -1714,7 +1714,7 @@ _0204732A: bl FUN_0206B9B0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r0, #0x0 mov r0, #0x0 bl FUN_0206BB48 @@ -1761,7 +1761,7 @@ _02047390: bl FUN_0206B9B0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r0, #0x0 mov r0, #0x0 bl FUN_0206BB48 @@ -1835,12 +1835,12 @@ _02047400: add r0, r6, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0x0 add r0, r6, #0x0 mov r1, #0x6f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 mov r3, #0xb str r3, [sp, #0x0] @@ -1879,12 +1879,12 @@ _02047470: add r0, r6, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0x0 add r0, r6, #0x0 mov r1, #0x6f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 mov r3, #0xb str r3, [sp, #0x0] diff --git a/arm9/asm/unk_02047500.s b/arm9/asm/unk_02047500.s index 8668643a..04d99ac3 100644 --- a/arm9/asm/unk_02047500.s +++ b/arm9/asm/unk_02047500.s @@ -242,7 +242,7 @@ FUN_02047668: ; 0x02047668 bl FUN_0204A1D8 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020476C8 ; =0x000001DF sub r0, r0, r1 cmp r0, #0xe diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s index 24d4a9b4..619b8594 100644 --- a/arm9/asm/unk_020476CC.s +++ b/arm9/asm/unk_020476CC.s @@ -667,7 +667,7 @@ _02047C40: add r0, r5, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r7, r0 beq _02047C82 cmp r7, #0x0 @@ -675,16 +675,16 @@ _02047C40: add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r7, #0x0 bl GetMonExpBySpeciesAndLevel str r0, [sp, #0x18] add r0, r5, #0x0 mov r1, #0x8 add r2, sp, #0x18 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 - bl CalcMonStats + bl CalcMonLevelAndStats _02047C82: add r0, r6, #0x0 add r1, r5, #0x0 diff --git a/arm9/asm/unk_0204A01C.s b/arm9/asm/unk_0204A01C.s index 83324f37..2864246e 100644 --- a/arm9/asm/unk_0204A01C.s +++ b/arm9/asm/unk_0204A01C.s @@ -9,7 +9,7 @@ FUN_0204A01C: ; 0x0204A01C mov r1, #0xa2 mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _0204A030 mov r0, #0x0 @@ -18,7 +18,7 @@ _0204A030: add r0, r4, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _0204A042 mov r0, #0x1 @@ -70,7 +70,7 @@ FUN_0204A048: ; 0x0204A048 add r2, sp, #0x1c str r0, [sp, #0x1c] add r0, r4, #0x0 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x18] add r1, r4, #0x0 bl FUN_0206B900 @@ -155,31 +155,31 @@ _0204A14A: mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _0204A19C add r0, r4, #0x0 mov r1, #0x36 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 beq _0204A198 add r0, r4, #0x0 mov r1, #0x37 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 beq _0204A198 add r0, r4, #0x0 mov r1, #0x38 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 beq _0204A198 add r0, r4, #0x0 mov r1, #0x39 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 bne _0204A19C _0204A198: @@ -265,7 +265,7 @@ _0204A21C: mov r1, #0x4c mov r2, #0x0 add r7, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _0204A236 add r0, r7, #0x0 @@ -314,13 +314,13 @@ _0204A272: mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _0204A292 add r0, r4, #0x0 mov r1, #0x19 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData _0204A292: add r5, r5, #0x1 cmp r5, r6 @@ -353,14 +353,14 @@ _0204A2B4: add r0, r5, #0x0 mov r1, #0x9f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x88 tst r0, r1 beq _0204A308 add r0, r5, #0x0 mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xc] cmp r0, #0x1 bls _0204A2EA @@ -370,7 +370,7 @@ _0204A2EA: add r0, r5, #0x0 mov r1, #0xa2 add r2, sp, #0xc - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0xc] cmp r0, #0x1 bne _0204A306 @@ -411,14 +411,14 @@ FUN_0204A32C: ; 0x0204A32C mov r1, #0x9f mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x88 tst r0, r1 beq _0204A362 add r0, r4, #0x0 mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x1 bne _0204A362 mov r0, #0x0 @@ -426,7 +426,7 @@ FUN_0204A32C: ; 0x0204A32C add r0, r4, #0x0 mov r1, #0x9f add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData add sp, #0x4 mov r0, #0x1 pop {r3-r4, pc} diff --git a/arm9/asm/unk_0204B9EC.s b/arm9/asm/unk_0204B9EC.s index 2d779ce3..56db4ed5 100644 --- a/arm9/asm/unk_0204B9EC.s +++ b/arm9/asm/unk_0204B9EC.s @@ -198,7 +198,7 @@ _0204BB3C: add r0, r4, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 strh r0, [r5, #0x0] @@ -220,12 +220,12 @@ _0204BB72: ldrb r0, [r7, #0x2] strh r0, [r5, #0x4] add r0, r4, #0x0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r5, #0x6] add r0, r4, #0x0 mov r1, #0xb1 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r5, #0x7] add r6, r6, #0x1 add r5, #0x8 diff --git a/arm9/asm/unk_0204BE14.s b/arm9/asm/unk_0204BE14.s index afb3bc59..0e8be8cc 100644 --- a/arm9/asm/unk_0204BE14.s +++ b/arm9/asm/unk_0204BE14.s @@ -497,7 +497,7 @@ _0204C138: add r0, r6, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, r5, r4 add r1, #0xb6 strh r0, [r1, #0x0] diff --git a/arm9/asm/unk_02050E48.s b/arm9/asm/unk_02050E48.s index cfaf8e37..08d3b46d 100644 --- a/arm9/asm/unk_02050E48.s +++ b/arm9/asm/unk_02050E48.s @@ -1720,7 +1720,7 @@ _02051BD6: mov r1, #0x5 add r0, r0, r6 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r0, #0x0 ldr r0, [sp, #0x18] ldr r2, [r5, #0xc] diff --git a/arm9/asm/unk_02054C14.s b/arm9/asm/unk_02054C14.s index 46c1432a..a2114d7c 100644 --- a/arm9/asm/unk_02054C14.s +++ b/arm9/asm/unk_02054C14.s @@ -302,7 +302,7 @@ _02054E02: bl FUN_0206B9B0 add r1, r7, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02054E1E add r0, r4, #0x0 @@ -338,7 +338,7 @@ _02054E4A: bl FUN_0206B9B0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x0] add r6, r6, #0x1 add r5, r5, #0x2 diff --git a/arm9/asm/unk_020603B0.s b/arm9/asm/unk_020603B0.s index 53b84d9a..a49266bd 100644 --- a/arm9/asm/unk_020603B0.s +++ b/arm9/asm/unk_020603B0.s @@ -242,7 +242,7 @@ _020604D0: ldr r0, [sp, #0x1c] mov r1, #0xae mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 add r0, r4, #0x0 mov r1, #0x2 @@ -250,7 +250,7 @@ _020604D0: mov r1, #0x0 ldr r0, [sp, #0x1c] add r2, r1, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 add r0, r4, #0x0 mov r1, #0x3 @@ -258,7 +258,7 @@ _020604D0: ldr r0, [sp, #0x1c] mov r1, #0xa3 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 add r0, r4, #0x0 mov r1, #0x5 diff --git a/arm9/asm/unk_02060CCC.s b/arm9/asm/unk_02060CCC.s index 2910f716..1a57968f 100644 --- a/arm9/asm/unk_02060CCC.s +++ b/arm9/asm/unk_02060CCC.s @@ -323,7 +323,7 @@ FUN_02060E04: ; 0x02060E04 add r0, r6, #0x0 mov r1, #0x76 add r2, r4, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r0, r4, #0x0 add r1, r5, #0x0 mov r2, #0xb @@ -342,22 +342,22 @@ FUN_02060E34: ; 0x02060E34 mov r1, #0x5 mov r2, #0x0 add r7, r3, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x0] add r0, r5, #0x0 mov r1, #0x6f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r6, #0x0] add r0, r5, #0x0 mov r1, #0xc mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r7, #0x0] add r0, r5, #0x0 mov r1, #0x79 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x18] strb r0, [r1, #0x0] pop {r3-r7, pc} @@ -420,7 +420,7 @@ FUN_02060ECC: ; 0x02060ECC mov r1, #0x4d mov r2, #0x0 add r7, r3, #0x0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r4, #0x0] ldrb r0, [r4, #0x0] cmp r0, #0x0 @@ -432,7 +432,7 @@ FUN_02060ECC: ; 0x02060ECC add r0, r5, #0x0 mov r1, #0x76 add r2, r4, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r0, r4, #0x0 add r1, r7, #0x0 mov r2, #0xb @@ -479,7 +479,7 @@ FUN_02060F3C: ; 0x02060F3C mov r0, #0x0 strb r0, [r4, #0x1f] add r0, r5, #0x0 - bl GetMonNatureEncrypted + bl GetMonNature strb r0, [r4, #0x1e] add r0, r4, #0x6 str r0, [sp, #0x0] @@ -491,7 +491,7 @@ FUN_02060F3C: ; 0x02060F3C add r0, r5, #0x0 mov r1, #0x4d mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r4, #0x7] add r2, r4, #0x7 add r4, #0x8 @@ -624,7 +624,7 @@ FUN_02061028: ; 0x02061028 add r0, r4, #0x0 mov r1, #0x9a mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x22] ldrh r0, [r5, #0x22] cmp r0, #0x0 diff --git a/arm9/asm/unk_0206ABC4.s b/arm9/asm/unk_0206ABC4.s index 776bd5c3..caab2e45 100644 --- a/arm9/asm/unk_0206ABC4.s +++ b/arm9/asm/unk_0206ABC4.s @@ -622,7 +622,7 @@ _0206B030: ldr r0, [sp, #0x40] mov r1, #0x6 add r2, r7, #0x6 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x34] ldr r1, [sp, #0x40] ldr r0, [r0, #0x4] @@ -709,7 +709,7 @@ _0206B0DA: ldr r0, [sp, #0x40] mov r1, #0x6 add r2, r2, #0x6 - bl SetMonDataEncrypted + bl SetMonData ldr r7, [sp, #0x3c] mov r6, #0x0 _0206B120: diff --git a/arm9/asm/unk_0206B16C.s b/arm9/asm/unk_0206B16C.s index 465dbabb..3d75fe2c 100644 --- a/arm9/asm/unk_0206B16C.s +++ b/arm9/asm/unk_0206B16C.s @@ -149,7 +149,7 @@ _0206B270: add r0, r5, #0x0 add r1, r6, #0x0 add r2, r7, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 bne _0206B2A0 mov r0, #0x88 @@ -274,7 +274,7 @@ _0206B350: add r0, r5, #0x0 add r1, r7, #0x0 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 bne _0206B364 add sp, #0x8 @@ -327,7 +327,7 @@ _0206B3A2: add r0, r1, r0 mov r1, #0xab mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 bne _0206B3C6 ldr r0, [sp, #0x0] @@ -371,7 +371,7 @@ _0206B3F6: add r0, r5, #0x0 add r1, r7, #0x0 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 beq _0206B406 add r6, r6, #0x1 @@ -521,7 +521,7 @@ _0206B504: add r0, r5, #0x0 add r1, r7, #0x0 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 beq _0206B514 add r4, r4, #0x1 @@ -560,13 +560,13 @@ _0206B548: add r0, r5, #0x0 add r1, r7, #0x0 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 beq _0206B566 add r0, r5, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 bne _0206B566 add r4, r4, #0x1 diff --git a/arm9/asm/unk_0206B688.s b/arm9/asm/unk_0206B688.s index 2e4a392b..dc966ba6 100644 --- a/arm9/asm/unk_0206B688.s +++ b/arm9/asm/unk_0206B688.s @@ -51,12 +51,12 @@ FUN_0206B688: ; 0x0206B688 add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r6, r0, #0x0 add r0, r5, #0x0 bl FUN_0206B754 @@ -158,7 +158,7 @@ FUN_0206B754: ; 0x0206B754 mov r1, #0xad mov r2, #0x0 add r4, r0, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r2, _0206B7B8 ; =0x0000019D cmp r0, r2 bhi _0206B784 @@ -201,7 +201,7 @@ _0206B7A4: add r0, r4, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 pop {r4, pc} @@ -297,12 +297,12 @@ FUN_0206B83C: ; 0x0206B83C add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r7, r0, #0x0 add r0, r5, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0x0] add r0, r5, #0x0 add r1, r4, #0x0 diff --git a/arm9/asm/unk_0206B8A4.s b/arm9/asm/unk_0206B8A4.s index 6938e252..aa6b8a28 100644 --- a/arm9/asm/unk_0206B8A4.s +++ b/arm9/asm/unk_0206B8A4.s @@ -211,12 +211,12 @@ _0206BA00: add r0, r4, #0x0 mov r1, #0xab mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0x0 add r0, r6, #0x0 mov r1, #0xab mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData sub r2, r7, r0 mov r3, #0x1d _0206BA24: @@ -340,7 +340,7 @@ _0206BAF6: add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r7, r0 beq _0206BB0E ldr r0, [r6, #0x4] diff --git a/arm9/asm/unk_0206BB5C.s b/arm9/asm/unk_0206BB5C.s index 70465dd6..29d28032 100644 --- a/arm9/asm/unk_0206BB5C.s +++ b/arm9/asm/unk_0206BB5C.s @@ -34,7 +34,7 @@ FUN_0206BB84: ; 0x0206BB84 add r0, r7, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r6, r0, #0x10 cmp r4, #0x0 @@ -49,7 +49,7 @@ _0206BBA2: add r0, r7, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, r5 bls _0206BBBE mov r0, #0x0 @@ -58,7 +58,7 @@ _0206BBBE: add r0, r7, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0206BBD0 mov r0, #0x0 @@ -208,17 +208,17 @@ _0206BCE2: add r0, r4, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r7, #0x0] add r0, r4, #0x0 mov r1, #0x6 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r6, #0x0] add r0, r4, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x10] add r0, r1, r0 str r0, [sp, #0x10] @@ -427,12 +427,12 @@ _0206BE72: str r0, [sp, #0x24] mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x0] ldr r0, [sp, #0x24] mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x0] ldr r0, [sp, #0xc] ldr r1, [sp, #0x24] diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index 506fbef0..270bcd79 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -76,7 +76,7 @@ FUN_0206C700: ; 0x0206C700 mov r1, #0x5 mov r2, #0x0 str r0, [r4, #0x28] - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0x0 add r1, #0x60 strh r0, [r1, #0x0] @@ -1040,11 +1040,11 @@ _0206CF7E: ldr r0, [r4, #0x28] mov r1, #0x5 add r2, #0x62 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [r4, #0x28] bl FUN_0206A1C4 ldr r0, [r4, #0x28] - bl CalcMonStats + bl CalcMonLevelAndStats ldr r0, [r4, #0x28] bl FUN_020690E4 add r2, r0, #0x0 @@ -1111,13 +1111,13 @@ _0206CFFA: ldr r0, [r4, #0x28] mov r1, #0x4d mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _0206D05E ldr r0, [r4, #0x28] mov r1, #0xb2 mov r2, #0x0 - bl SetMonDataEncrypted + bl SetMonData _0206D05E: add r0, r4, #0x0 add r0, #0x64 @@ -1652,7 +1652,7 @@ _0206D4A6: ldr r0, [r4, #0x28] mov r2, #0x0 add r1, #0x36 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 ldr r0, [r4, #0xc] mov r1, #0x1 @@ -1736,7 +1736,7 @@ _0206D560: ldr r0, [r4, #0x28] add r2, #0x66 add r1, #0x3e - bl SetMonDataEncrypted + bl SetMonData add r1, r4, #0x0 add r2, r4, #0x0 add r1, #0x6c @@ -2103,30 +2103,30 @@ _0206D86E: add r0, r5, #0x0 mov r1, #0x5 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x4 str r0, [sp, #0x0] add r0, r5, #0x0 mov r1, #0x9a add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x0 str r0, [sp, #0x0] add r0, r5, #0x0 mov r1, #0x6 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 mov r1, #0xb add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData mov r1, #0x19 str r1, [sp, #0x4] add r6, sp, #0x0 _0206D8BA: add r0, r5, #0x0 add r2, r6, #0x0 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x4] add r1, r0, #0x1 str r1, [sp, #0x4] @@ -2138,7 +2138,7 @@ _0206D8BA: _0206D8D2: add r0, r5, #0x0 add r2, r6, #0x0 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x4] add r1, r0, #0x1 str r1, [sp, #0x4] @@ -2150,7 +2150,7 @@ _0206D8D2: _0206D8EA: add r0, r5, #0x0 add r2, r6, #0x0 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x4] add r1, r0, #0x1 str r1, [sp, #0x4] @@ -2159,28 +2159,28 @@ _0206D8EA: add r0, r5, #0x0 mov r1, #0xb2 mov r2, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 mov r1, #0x4d add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 mov r1, #0x9f add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [r4, #0x5c] bl CreateNewSealsObject add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa9 add r2, r6, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0x0 bl FreeToHeap add r0, r5, #0x0 mov r1, #0xa1 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x0 add r1, sp, #0x8 mov r2, #0x18 @@ -2188,11 +2188,11 @@ _0206D8EA: add r0, r5, #0x0 mov r1, #0xaa add r2, sp, #0x8 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 bl FUN_0206A1C4 add r0, r5, #0x0 - bl CalcMonStats + bl CalcMonLevelAndStats ldr r0, [r4, #0x24] add r1, r5, #0x0 bl FUN_0206B900 @@ -2225,7 +2225,7 @@ _0206D9A0: ldr r0, [r4, #0x28] mov r1, #0x6 add r2, sp, #0x4 - bl SetMonDataEncrypted + bl SetMonData _0206D9AE: add sp, #0x20 pop {r4-r6, pc} @@ -2581,9 +2581,9 @@ FUN_0206DC80: ; 0x0206DC80 add r0, r5, #0x0 mov r1, #0x5 add r2, #0x62 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 - bl CalcMonStats + bl CalcMonLevelAndStats add r0, sp, #0x10 add r1, r5, #0x0 mov r2, #0x2 diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index 2a03ef5f..eddf119f 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -1681,7 +1681,7 @@ _020700BC: mov r1, #0x5 mov r2, #0x0 add r7, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x4] @@ -1705,42 +1705,42 @@ _020700DE: add r0, r7, #0x0 mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020701E4 ; =0x00000706 add r2, r5, r6 strh r0, [r2, r1] add r0, r7, #0x0 mov r1, #0xa3 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020701E8 ; =0x00000708 add r2, r5, r6 strh r0, [r2, r1] add r0, r7, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020701EC ; =0x0000070A add r2, r5, r6 strh r0, [r2, r1] add r0, r7, #0x0 mov r1, #0x6 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020701F0 ; =0x0000070C add r2, r5, r6 strh r0, [r2, r1] add r0, r7, #0x0 mov r1, #0xa1 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020701F4 ; =0x00000712 add r2, r5, r6 strh r0, [r2, r1] add r0, r7, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x71 add r2, r5, r6 lsl r1, r1, #0x4 @@ -1748,14 +1748,14 @@ _020700DE: add r0, r7, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020701F8 ; =0x00000711 add r2, r5, r6 strb r0, [r2, r1] add r0, r7, #0x0 mov r1, #0xaf mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x1 ldr r0, _020701FC ; =0x0000070E bne _02070184 @@ -1864,7 +1864,7 @@ _02070256: add r0, r5, #0x0 add r1, #0x36 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0207026C add r4, r4, #0x1 @@ -1925,106 +1925,106 @@ _020702BE: ; jump table (using 16-bit offset) _020702C8: mov r1, #0x7a mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x7b mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 add r0, r5, #0x0 mov r1, #0x7c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 add r0, r5, #0x0 mov r1, #0x7d mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 b _020703B6 _020702F8: mov r1, #0x7e mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x7f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 add r0, r5, #0x0 mov r1, #0x80 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 add r0, r5, #0x0 mov r1, #0x81 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 b _020703B6 _02070328: mov r1, #0x82 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x83 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 add r0, r5, #0x0 mov r1, #0x84 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 add r0, r5, #0x0 mov r1, #0x85 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 b _020703B6 _02070358: mov r1, #0x86 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x87 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 add r0, r5, #0x0 mov r1, #0x88 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 add r0, r5, #0x0 mov r1, #0x89 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 b _020703B6 _02070388: mov r1, #0x8a mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0x8b mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 add r0, r5, #0x0 mov r1, #0x8c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 add r0, r5, #0x0 mov r1, #0x8d mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r4, r0 _020703B6: add r0, r4, #0x0 @@ -2839,7 +2839,7 @@ _02070A38: _02070A3A: mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02070A4E add r0, r4, #0x2 @@ -3790,7 +3790,7 @@ _020711D0: ldr r0, [sp, #0x8] add r1, #0x36 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r7, r0, #0x10 beq _02071210 @@ -5249,7 +5249,7 @@ _02071D14: add r2, sp, #0x0 str r1, [sp, #0x0] mov r1, #0xa2 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x1 pop {r3-r7, pc} _02071D30: @@ -5670,7 +5670,7 @@ FUN_02072080: ; 0x02072080 add r0, r5, #0x0 mov r1, #0x6 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 bl FUN_02069EC4 ldr r1, _020720D8 ; =0x00000B25 @@ -5713,7 +5713,7 @@ FUN_020720E0: ; 0x020720E0 add r0, r5, #0x0 mov r1, #0x6 add r2, sp, #0x1c - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 bl FUN_02069EC4 ldr r1, _02072138 ; =0x00000B25 diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s index 8c630d8e..8b491bc6 100644 --- a/arm9/asm/unk_02072548.s +++ b/arm9/asm/unk_02072548.s @@ -1987,37 +1987,37 @@ FUN_020734C0: ; 0x020734C0 mov r1, #0xa3 mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x20 strh r0, [r1, #0x0] add r0, r4, #0x0 mov r1, #0xa4 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x20 strh r0, [r1, #0x2] add r0, r4, #0x0 mov r1, #0xa5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x20 strh r0, [r1, #0x4] add r0, r4, #0x0 mov r1, #0xa7 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x20 strh r0, [r1, #0x6] add r0, r4, #0x0 mov r1, #0xa8 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x20 strh r0, [r1, #0x8] add r0, r4, #0x0 mov r1, #0xa6 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x20 strh r0, [r1, #0xa] mov r3, #0x1 diff --git a/arm9/asm/unk_02073710.s b/arm9/asm/unk_02073710.s index 7a217fbe..b7a572da 100644 --- a/arm9/asm/unk_02073710.s +++ b/arm9/asm/unk_02073710.s @@ -248,7 +248,7 @@ FUN_020737D0: ; 0x020737D0 ldr r0, [sp, #0x10] mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 str r7, [sp, #0x14] add r0, sp, #0x14 diff --git a/arm9/asm/unk_02073DA8.s b/arm9/asm/unk_02073DA8.s index 9afd1e10..94f4426e 100644 --- a/arm9/asm/unk_02073DA8.s +++ b/arm9/asm/unk_02073DA8.s @@ -244,7 +244,7 @@ _02073F66: add r6, r0, #0x0 mov r1, #0x6 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0x0 bl FUN_02069EC4 ldr r2, _02074058 ; =0x0000069C @@ -631,7 +631,7 @@ FUN_020742A8: ; 0x020742A8 add r5, r0, #0x0 mov r1, #0x6 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 bl FUN_02069EC4 ldr r1, _02074330 ; =0x00000B25 @@ -2386,7 +2386,7 @@ FUN_02075118: ; 0x02075118 bl FUN_0206B9B0 mov r1, #0xa1 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 ldr r2, _02075198 ; =0x0000069C bne _0207515C diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s index 7186cf11..879b13ea 100644 --- a/arm9/asm/unk_0207550C.s +++ b/arm9/asm/unk_0207550C.s @@ -1049,49 +1049,49 @@ FUN_02075DC0: ; 0x02075DC0 mov r1, #0xd mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x1c] add r0, r4, #0x0 mov r1, #0xe mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x18] add r0, r4, #0x0 mov r1, #0xf mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x14] add r0, r4, #0x0 mov r1, #0x10 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x10] add r0, r4, #0x0 mov r1, #0x11 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0xc] add r0, r4, #0x0 mov r1, #0x12 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x8] add r0, r4, #0x0 mov r1, #0x9 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r7, r0, #0x18 ldr r0, _02075F4C ; =0x000005A4 @@ -1135,42 +1135,42 @@ FUN_02075DC0: ; 0x02075DC0 add r0, r4, #0x0 mov r1, #0xd mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x1c] cmp r1, r0 bne _02075EFA add r0, r4, #0x0 mov r1, #0xe mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x18] cmp r1, r0 bne _02075EFA add r0, r4, #0x0 mov r1, #0xf mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x14] cmp r1, r0 bne _02075EFA add r0, r4, #0x0 mov r1, #0x10 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x10] cmp r1, r0 bne _02075EFA add r0, r4, #0x0 mov r1, #0x11 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0xc] cmp r1, r0 bne _02075EFA add r0, r4, #0x0 mov r1, #0x12 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x8] cmp r1, r0 beq _02075F26 @@ -1178,7 +1178,7 @@ _02075EFA: add r0, r4, #0x0 mov r1, #0x9 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r7, r0 ldr r1, _02075F4C ; =0x000005A4 beq _02075F18 @@ -1247,7 +1247,7 @@ FUN_02075F60: ; 0x02075F60 mov r1, #0xa2 mov r2, #0x0 str r0, [sp, #0x8] - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0x0 ldr r0, _02076084 ; =0x00000B25 ldrb r1, [r5, r0] @@ -1375,7 +1375,7 @@ FUN_020760A0: ; 0x020760A0 bl FUN_0206B9B0 mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02076134 ; =0x00000B25 add r4, r0, #0x0 ldrb r2, [r5, r1] @@ -1574,7 +1574,7 @@ _02076212: add r0, r5, #0x0 mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r0, _020763E4 ; =0x0000069C mov r1, #0x46 ldr r0, [r4, r0] @@ -1649,7 +1649,7 @@ _020762DC: bl FUN_0206B9B0 mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, _020763E0 ; =0x00000B25 add r5, r0, #0x0 ldr r0, _02076400 ; =0x00000706 @@ -1786,38 +1786,38 @@ FUN_0207640C: ; 0x0207640C mov r1, #0xa3 mov r2, #0x0 add r4, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020765B8 ; =0x00000B28 mov r2, #0x0 strh r0, [r5, r1] add r0, r4, #0x0 mov r1, #0xa4 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020765BC ; =0x00000B2A mov r2, #0x0 strh r0, [r5, r1] add r0, r4, #0x0 mov r1, #0xa5 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020765C0 ; =0x00000B2C mov r2, #0x0 strh r0, [r5, r1] add r0, r4, #0x0 mov r1, #0xa7 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020765C4 ; =0x00000B2E mov r2, #0x0 strh r0, [r5, r1] add r0, r4, #0x0 mov r1, #0xa8 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0xb3 lsl r1, r1, #0x4 strh r0, [r5, r1] add r0, r4, #0x0 mov r1, #0xa6 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020765C8 ; =0x00000B32 strh r0, [r5, r1] ldr r0, _020765B0 ; =0x000005A4 @@ -1836,7 +1836,7 @@ FUN_0207640C: ; 0x0207640C add r0, r4, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020765B4 ; =0x00000B25 ldrb r2, [r5, r1] mov r1, #0x2c @@ -1847,7 +1847,7 @@ FUN_0207640C: ; 0x0207640C add r0, r4, #0x0 mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020765B4 ; =0x00000B25 ldrb r2, [r5, r1] mov r1, #0x2c @@ -1858,7 +1858,7 @@ FUN_0207640C: ; 0x0207640C add r0, r4, #0x0 mov r1, #0xa3 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020765B4 ; =0x00000B25 ldrb r2, [r5, r1] mov r1, #0x2c @@ -2335,7 +2335,7 @@ _020768E6: add r0, r5, #0x0 add r1, #0x36 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 mov r0, #0x6a lsl r0, r0, #0x4 @@ -2540,7 +2540,7 @@ _02076AAA: add r0, r6, #0x0 add r1, #0x36 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r2, r0, #0x10 ldr r0, [r5, r7] @@ -2803,7 +2803,7 @@ _02076CDC: add r0, r5, #0x0 add r1, #0x36 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 mov r0, #0x6a lsl r0, r0, #0x4 @@ -3080,14 +3080,14 @@ FUN_02076F2C: ; 0x02076F2C str r0, [sp, #0x0] add r0, r4, #0x0 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x0 add r1, r6, #0x0 str r0, [sp, #0x0] add r0, r4, #0x0 add r1, #0x3e add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData ldr r0, _02076FAC ; =0x000005A4 mov r1, #0x0 ldr r0, [r5, r0] @@ -3098,7 +3098,7 @@ FUN_02076F2C: ; 0x02076F2C add r0, r4, #0x0 add r1, r6, #0x0 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData ldr r0, _02076FAC ; =0x000005A4 ldr r1, [r5, r0] ldrh r0, [r1, #0x24] @@ -3142,7 +3142,7 @@ FUN_02076FB0: ; 0x02076FB0 add r1, r6, #0x0 add r1, #0x36 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r4, r0, #0x10 ldr r0, _02077034 ; =0x0000069C @@ -3379,7 +3379,7 @@ _0207716A: add r4, #0x36 add r1, r4, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02077234 ; =0x000005A4 add r2, r0, #0x0 ldr r1, [r5, r1] diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index 241778d5..b3b27fb5 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -1555,7 +1555,7 @@ _0207A8C0: mov r1, #0x13 ldrb r6, [r5, r0] add r0, r4, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _0207AA08 ; =0x00000295 strb r0, [r5, r1] ldrb r0, [r5, r1] @@ -1572,7 +1572,7 @@ _0207A8F4: ldrb r6, [r5, r0] add r0, r4, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _0207AA0C ; =0x00000296 strb r0, [r5, r1] ldrb r0, [r5, r1] @@ -1589,7 +1589,7 @@ _0207A916: ldrb r6, [r5, r0] add r0, r4, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _0207AA10 ; =0x00000297 strb r0, [r5, r1] ldrb r0, [r5, r1] @@ -1607,7 +1607,7 @@ _0207A938: add r0, r4, #0x0 mov r1, #0x16 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0xa6 lsl r1, r1, #0x2 strb r0, [r5, r1] @@ -1625,7 +1625,7 @@ _0207A95E: ldrb r6, [r5, r0] add r0, r4, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _0207AA14 ; =0x00000299 strb r0, [r5, r1] ldrb r0, [r5, r1] @@ -1640,7 +1640,7 @@ _0207A980: add r0, r4, #0x0 mov r1, #0x18 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _0207AA18 ; =0x0000029A strb r0, [r5, r1] sub r1, #0x4e @@ -1848,7 +1848,7 @@ FUN_0207AB0C: ; 0x0207AB0C add r0, r6, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0xc] add r0, r6, #0x0 bl FUN_020690E4 @@ -1913,12 +1913,12 @@ FUN_0207AB0C: ; 0x0207AB0C add r0, r6, #0x0 mov r1, #0x6 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0xe] add r0, r6, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldrb r1, [r5, #0x12] mov r2, #0x7f lsl r0, r0, #0x18 @@ -1931,7 +1931,7 @@ FUN_0207AB0C: ; 0x0207AB0C add r0, r6, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x1f ldr r2, [r5, #0x50] ldr r1, _0207AEB4 ; =0xEFFFFFFF @@ -1942,7 +1942,7 @@ FUN_0207AB0C: ; 0x0207AB0C add r0, r6, #0x0 mov r1, #0xaf mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x1 bne _0207AC16 ldr r0, [r5, #0x50] @@ -1972,7 +1972,7 @@ _0207AC1E: add r0, r6, #0x0 mov r1, #0x9a mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 lsl r0, r0, #0x1a @@ -1985,27 +1985,27 @@ _0207AC1E: add r0, r6, #0x0 mov r1, #0xb0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r5, #0x10] add r0, r6, #0x0 mov r1, #0xb1 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r5, #0x11] add r0, r6, #0x0 mov r1, #0x7 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [r5, #0x14] add r0, r6, #0x0 mov r1, #0x8 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [r5, #0x18] add r0, r6, #0x0 mov r1, #0x9c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0x0 add r1, #0x44 strb r0, [r1, #0x0] @@ -2031,47 +2031,47 @@ _0207ACB2: add r0, r6, #0x0 mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x24] add r0, r6, #0x0 mov r1, #0xa3 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x26] add r0, r6, #0x0 mov r1, #0xa4 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x28] add r0, r6, #0x0 mov r1, #0xa5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x2a] add r0, r6, #0x0 mov r1, #0xa7 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x2c] add r0, r6, #0x0 mov r1, #0xa8 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x2e] add r0, r6, #0x0 mov r1, #0xa6 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x30] add r0, r6, #0x0 mov r1, #0xa mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0x0 add r1, #0x32 strb r0, [r1, #0x0] add r0, r6, #0x0 - bl GetMonNatureEncrypted + bl GetMonNature add r1, r5, #0x0 add r1, #0x33 strb r0, [r1, #0x0] @@ -2084,14 +2084,14 @@ _0207AD26: add r0, r6, #0x0 add r1, #0x36 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x0] mov r2, #0x0 strh r0, [r1, #0x34] add r1, r4, #0x0 add r0, r6, #0x0 add r1, #0x3a - bl GetMonDataEncrypted + bl GetMonData add r1, r5, r4 add r1, #0x3c strb r0, [r1, #0x0] @@ -2099,7 +2099,7 @@ _0207AD26: add r0, r6, #0x0 add r1, #0x3e mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r1, r0, #0x18 ldr r0, [sp, #0x0] @@ -2116,42 +2116,42 @@ _0207AD26: add r0, r6, #0x0 mov r1, #0x13 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0x0 add r1, #0x45 strb r0, [r1, #0x0] add r0, r6, #0x0 mov r1, #0x14 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0x0 add r1, #0x46 strb r0, [r1, #0x0] add r0, r6, #0x0 mov r1, #0x15 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0x0 add r1, #0x47 strb r0, [r1, #0x0] add r0, r6, #0x0 mov r1, #0x16 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0x0 add r1, #0x48 strb r0, [r1, #0x0] add r0, r6, #0x0 mov r1, #0x17 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0x0 add r1, #0x49 strb r0, [r1, #0x0] add r0, r6, #0x0 mov r1, #0x18 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0x0 add r1, #0x4a strb r0, [r1, #0x0] @@ -2180,14 +2180,14 @@ _0207ADFE: add r0, r6, #0x0 mov r1, #0xb mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0x0 add r1, #0x4c strh r0, [r1, #0x0] add r0, r6, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0x0 add r1, #0x4e strh r0, [r1, #0x0] @@ -2281,7 +2281,7 @@ _0207AECC: add r1, r0, #0x0 add r0, r6, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0207AF04 lsr r0, r4, #0x5 @@ -3123,13 +3123,13 @@ _0207B528: add r0, r6, r7 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0207B50C add r0, r6, r7 mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0207B55E add r0, r5, #0x0 @@ -3173,13 +3173,13 @@ _0207B58E: mov r1, #0x5 mov r2, #0x0 add r6, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0207B574 add r0, r6, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0207B5BC add r0, r5, #0x0 @@ -3227,13 +3227,13 @@ _0207B5EC: add r0, r6, r7 mov r1, #0x5 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 beq _0207B5D0 add r0, r6, r7 mov r1, #0x4c mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 beq _0207B622 add r0, r5, #0x0 @@ -4814,12 +4814,12 @@ FUN_0207C2D4: ; 0x0207C2D4 add r5, r0, #0x0 mov r1, #0x9f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0x0 add r0, r5, #0x0 mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _0207C2F4 mov r0, #0x6 diff --git a/arm9/asm/unk_0207FD00.s b/arm9/asm/unk_0207FD00.s index 903c4d94..8103e3c4 100644 --- a/arm9/asm/unk_0207FD00.s +++ b/arm9/asm/unk_0207FD00.s @@ -472,7 +472,7 @@ FUN_020800E0: ; 0x020800E0 push {r3-r5, lr} add r5, r0, #0x0 ldr r0, [r5, #0xc] - bl GetMonNatureEncrypted + bl GetMonNature add r4, r0, #0x0 cmp r4, #0x18 bgt _02080106 @@ -511,7 +511,7 @@ FUN_02080108: ; 0x02080108 ldr r0, [r5, #0xc] mov r1, #0x94 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r3, #0x2 add r2, r0, #0x0 str r3, [sp, #0x0] @@ -523,7 +523,7 @@ FUN_02080108: ; 0x02080108 ldr r0, [r5, #0xc] mov r1, #0x95 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 ldr r0, [r5, #0x8] mov r1, #0x1 @@ -531,7 +531,7 @@ FUN_02080108: ; 0x02080108 ldr r0, [r5, #0xc] mov r1, #0x96 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 mov r0, #0x0 str r0, [sp, #0x0] @@ -544,7 +544,7 @@ FUN_02080108: ; 0x02080108 ldr r0, [r5, #0xc] mov r1, #0x9b mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 mov r0, #0x0 str r0, [sp, #0x0] @@ -557,7 +557,7 @@ FUN_02080108: ; 0x02080108 ldr r0, [r5, #0xc] mov r1, #0x98 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 ldr r0, [r5, #0x8] mov r1, #0x4 @@ -565,7 +565,7 @@ FUN_02080108: ; 0x02080108 ldr r0, [r5, #0xc] mov r1, #0x91 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r3, #0x2 add r2, r0, #0x0 str r3, [sp, #0x0] @@ -577,7 +577,7 @@ FUN_02080108: ; 0x02080108 ldr r0, [r5, #0xc] mov r1, #0x92 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 ldr r0, [r5, #0x8] mov r1, #0x6 @@ -585,7 +585,7 @@ FUN_02080108: ; 0x02080108 ldr r0, [r5, #0xc] mov r1, #0x93 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 mov r0, #0x0 str r0, [sp, #0x0] @@ -598,7 +598,7 @@ FUN_02080108: ; 0x02080108 ldr r0, [r5, #0xc] mov r1, #0x97 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 ldr r0, [r5, #0x8] mov r1, #0x8 @@ -635,7 +635,7 @@ FUN_02080228: ; 0x02080228 ldr r0, [r4, #0xc] mov r1, #0x94 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r3, #0x2 add r2, r0, #0x0 str r3, [sp, #0x0] @@ -647,7 +647,7 @@ FUN_02080228: ; 0x02080228 ldr r0, [r4, #0xc] mov r1, #0x95 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 ldr r0, [r4, #0x8] mov r1, #0x1 @@ -655,7 +655,7 @@ FUN_02080228: ; 0x02080228 ldr r0, [r4, #0xc] mov r1, #0x96 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 mov r0, #0x0 str r0, [sp, #0x0] @@ -668,7 +668,7 @@ FUN_02080228: ; 0x02080228 ldr r0, [r4, #0xc] mov r1, #0x9b mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 mov r0, #0x0 str r0, [sp, #0x0] @@ -681,7 +681,7 @@ FUN_02080228: ; 0x02080228 ldr r0, [r4, #0xc] mov r1, #0x79 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0xf bhi _020802F8 add r0, r0, r0 @@ -797,7 +797,7 @@ FUN_02080384: ; 0x02080384 bne _02080418 mov r1, #0x91 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r3, #0x2 add r2, r0, #0x0 str r3, [sp, #0x0] @@ -809,7 +809,7 @@ FUN_02080384: ; 0x02080384 ldr r0, [r5, #0xc] mov r1, #0x92 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 ldr r0, [r5, #0x8] mov r1, #0x6 @@ -817,7 +817,7 @@ FUN_02080384: ; 0x02080384 ldr r0, [r5, #0xc] mov r1, #0x93 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 mov r0, #0x0 str r0, [sp, #0x0] @@ -830,7 +830,7 @@ FUN_02080384: ; 0x02080384 ldr r0, [r5, #0xc] mov r1, #0x97 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 ldr r0, [r5, #0x8] mov r1, #0x8 @@ -839,7 +839,7 @@ FUN_02080384: ; 0x02080384 _02080418: mov r1, #0x94 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r3, #0x2 add r2, r0, #0x0 str r3, [sp, #0x0] @@ -851,7 +851,7 @@ _02080418: ldr r0, [r5, #0xc] mov r1, #0x95 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 ldr r0, [r5, #0x8] mov r1, #0x6 @@ -859,7 +859,7 @@ _02080418: ldr r0, [r5, #0xc] mov r1, #0x96 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 mov r0, #0x0 str r0, [sp, #0x0] @@ -872,7 +872,7 @@ _02080418: ldr r0, [r5, #0xc] mov r1, #0x98 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 ldr r0, [r5, #0x8] mov r1, #0x8 @@ -899,37 +899,37 @@ FUN_0208048C: ; 0x0208048C ldr r0, [r4, #0xc] mov r1, #0x46 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xc] ldr r0, [r4, #0xc] mov r1, #0x47 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x8] ldr r0, [r4, #0xc] mov r1, #0x48 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x4] ldr r0, [r4, #0xc] mov r1, #0x49 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x0] ldr r0, [r4, #0xc] mov r1, #0x4a mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0x0 ldr r0, [r4, #0xc] mov r1, #0x4b mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 mov r1, #0x0 ldr r0, [r4, #0xc] add r2, r1, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x6 bl _u32_div_f cmp r1, #0x5 @@ -1196,7 +1196,7 @@ FUN_020806B4: ; 0x020806B4 ldr r0, [r5, #0xc] mov r1, #0x9 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0x0 mov r0, #0x12 ldr r1, [r5, #0x0] @@ -1232,7 +1232,7 @@ FUN_020806F4: ; 0x020806F4 mov r1, #0x4c mov r2, #0x0 add r5, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02080708 b _0208084E @@ -1240,13 +1240,13 @@ _02080708: add r0, r5, #0x0 mov r1, #0x97 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _02080774 add r0, r5, #0x0 mov r1, #0x98 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 mov r0, #0x0 mov r1, #0x37 @@ -1259,7 +1259,7 @@ _02080732: add r0, r5, #0x0 mov r1, #0x6e mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x1 bne _0208074C cmp r4, #0x1 @@ -1273,7 +1273,7 @@ _0208074C: add r0, r5, #0x0 mov r1, #0x98 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r5, r0, #0x0 mov r0, #0x1 add r1, r0, #0x0 @@ -1294,13 +1294,13 @@ _02080774: add r0, r5, #0x0 mov r1, #0x6e mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x1 bne _020807D6 add r0, r5, #0x0 mov r1, #0x97 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 mov r0, #0x1 mov r1, #0x2 @@ -1318,7 +1318,7 @@ _020807A6: add r0, r5, #0x0 mov r1, #0x97 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r5, r0, #0x0 mov r0, #0x2 mov r1, #0x1 @@ -1344,7 +1344,7 @@ _020807D6: add r0, r5, #0x0 mov r1, #0x97 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 mov r0, #0x1 add r1, r0, #0x0 @@ -1354,7 +1354,7 @@ _020807D6: add r0, r5, #0x0 mov r1, #0x97 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 mov r0, #0x1 mov r1, #0x0 @@ -1364,7 +1364,7 @@ _020807D6: add r0, r5, #0x0 mov r1, #0x97 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 mov r0, #0x1 mov r1, #0x9 @@ -1374,7 +1374,7 @@ _020807D6: add r0, r5, #0x0 mov r1, #0x97 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r5, r0, #0x0 mov r0, #0x1 mov r1, #0xa @@ -1403,13 +1403,13 @@ _0208084E: add r0, r5, #0x0 mov r1, #0x6e mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x1 bne _02080880 add r0, r5, #0x0 mov r1, #0x97 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0x0 mov r0, #0x2 mov r1, #0x1 @@ -1428,7 +1428,7 @@ _02080884: add r0, r5, #0x0 mov r1, #0x6e mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x1 bne _02080896 mov r0, #0x13 @@ -1484,7 +1484,7 @@ _020808E4: add r0, r4, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 bne _0208090C add r0, r4, #0x0 @@ -1514,7 +1514,7 @@ _0208091E: _0208092A: mov r1, #0x4c mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 bne _02080958 add r0, r4, #0x0 @@ -1575,7 +1575,7 @@ _020809B0: add r0, r4, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 bne _020809E2 add r0, r4, #0x0 @@ -1601,7 +1601,7 @@ _020809F6: add r0, r4, #0x0 mov r1, #0x4c mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 bne _02080A1E add r0, r4, #0x0 @@ -1629,7 +1629,7 @@ _02080A30: _02080A38: mov r1, #0x4c mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0x0 beq _02080AE0 mov r0, #0x1 @@ -1657,7 +1657,7 @@ _02080A66: add r0, r4, #0x0 mov r1, #0x98 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0x0] add r0, r4, #0x0 mov r1, #0x97 @@ -1666,7 +1666,7 @@ _02080A66: add r0, r4, #0x0 mov r1, #0x94 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0x0] add r0, r4, #0x0 mov r1, #0x91 @@ -1675,7 +1675,7 @@ _02080A66: add r0, r4, #0x0 mov r1, #0x95 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0x0] add r0, r4, #0x0 mov r1, #0x92 @@ -1684,7 +1684,7 @@ _02080A66: add r0, r4, #0x0 mov r1, #0x96 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0x0] add r0, r4, #0x0 mov r1, #0x93 @@ -1843,7 +1843,7 @@ FUN_02080C08: ; 0x02080C08 add r4, r0, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0x0] add r0, r4, #0x0 mov r1, #0x9b diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s index f40af68a..3437cc36 100644 --- a/arm9/asm/unk_02080C38.s +++ b/arm9/asm/unk_02080C38.s @@ -1083,7 +1083,7 @@ _02081454: ldr r0, [r4, #0x0] ldr r2, [r2, #0x0] mov r1, #0x90 - bl GetMonDataEncrypted + bl GetMonData add r6, r6, #0x1 add r4, r4, #0x4 cmp r6, #0x4 @@ -1223,7 +1223,7 @@ _02081566: add r0, r5, #0x0 add r1, #0x7a mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 b _020815BA _02081576: @@ -1231,7 +1231,7 @@ _02081576: add r0, r5, #0x0 add r1, #0x7e mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 b _020815BA _02081586: @@ -1239,7 +1239,7 @@ _02081586: add r0, r5, #0x0 add r1, #0x82 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 b _020815BA _02081596: @@ -1247,7 +1247,7 @@ _02081596: add r0, r5, #0x0 add r1, #0x86 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 b _020815BA _020815A6: @@ -1255,7 +1255,7 @@ _020815A6: add r0, r5, #0x0 add r1, #0x8a mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 b _020815BA _020815B6: @@ -2973,7 +2973,7 @@ FUN_02082254: ; 0x02082254 ldr r0, _02082280 ; =0x00001990 mov r2, #0x0 ldr r0, [r4, r0] - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _0208227A mov r0, #0x1 @@ -3590,7 +3590,7 @@ _020826AC: add r1, r6, #0x0 ldr r0, [r4, r0] mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 bne _020826DE mov r5, #0x1 @@ -3599,7 +3599,7 @@ _020826DE: add r1, r6, #0x0 ldr r0, [r4, r0] add r2, sp, #0x8 - bl SetMonDataEncrypted + bl SetMonData _020826EA: ldr r0, _02082848 ; =0x0000198C ldr r0, [r4, r0] diff --git a/arm9/asm/unk_020828BC.s b/arm9/asm/unk_020828BC.s index 8a04ec14..316c13b0 100644 --- a/arm9/asm/unk_020828BC.s +++ b/arm9/asm/unk_020828BC.s @@ -789,7 +789,7 @@ _02082D9A: add r0, r6, #0x0 add r1, #0x36 add r2, #0x2 - bl SetMonDataEncrypted + bl SetMonData add r4, r4, #0x1 add r5, r5, #0x2 cmp r4, #0x4 @@ -810,11 +810,11 @@ _02082D9A: add r0, r6, #0x0 mov r1, #0x76 add r2, r5, #0x0 - bl SetMonDataEncrypted + bl SetMonData ldr r2, [sp, #0x14] add r0, r6, #0x0 mov r1, #0x90 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 bl FUN_02021A20 ldr r0, [sp, #0x14] @@ -838,30 +838,30 @@ _02082D9A: strb r1, [r0, #0x0] add r0, r6, #0x0 mov r1, #0x13 - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0x0 mov r1, #0x14 add r2, sp, #0x1c - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x18 add r0, r6, #0x0 mov r1, #0x15 add r2, #0x3 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x18 add r0, r6, #0x0 mov r1, #0x16 add r2, #0x2 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x18 add r0, r6, #0x0 mov r1, #0x17 add r2, #0x1 - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0x0 mov r1, #0x18 add r2, sp, #0x18 - bl SetMonDataEncrypted + bl SetMonData add sp, #0x20 pop {r3-r7, pc} nop diff --git a/arm9/asm/unk_020842DC.s b/arm9/asm/unk_020842DC.s index 15ec2abe..f57fe7e9 100644 --- a/arm9/asm/unk_020842DC.s +++ b/arm9/asm/unk_020842DC.s @@ -28,7 +28,7 @@ _02084308: add r0, r6, #0x0 mov r1, #0x9f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r5, r0, #0x0 add r0, r4, #0x0 mov r1, #0xf @@ -103,7 +103,7 @@ _020843AA: add r0, r6, #0x0 mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r5, r0, #0x0 add r0, r4, #0x0 mov r1, #0x17 @@ -139,7 +139,7 @@ _020843EA: add r0, r6, #0x0 mov r1, #0xa3 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 bhs _02084414 add r0, r4, #0x0 @@ -156,7 +156,7 @@ _02084414: add r0, r6, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x64 bhs _0208443A add r0, r4, #0x0 @@ -199,14 +199,14 @@ _0208447C: add r0, r6, #0x0 add r1, #0x3e mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x3 bhs _020844B2 add r1, r7, #0x0 add r0, r6, #0x0 add r1, #0x36 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 mov r1, #0x0 @@ -260,37 +260,37 @@ _02084502: add r0, r6, #0x0 mov r1, #0xd mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r5, r0, #0x0 add r0, r6, #0x0 mov r1, #0xe mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x14] add r0, r6, #0x0 mov r1, #0xf mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x10] add r0, r6, #0x0 mov r1, #0x10 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xc] add r0, r6, #0x0 mov r1, #0x11 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x8] add r0, r6, #0x0 mov r1, #0x12 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0x0 add r0, r6, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x49 lsl r1, r1, #0x2 cmp r0, r1 @@ -652,7 +652,7 @@ _02084840: mov r1, #0x9f add r2, r6, #0x0 add r7, r6, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x50] str r0, [sp, #0x54] add r0, r4, #0x0 @@ -717,18 +717,18 @@ _020848C0: add r0, r5, #0x0 mov r1, #0x9f add r2, sp, #0x54 - bl SetMonDataEncrypted + bl SetMonData mov r6, #0x1 _020848D4: add r0, r5, #0x0 mov r1, #0xa2 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x50] add r0, r5, #0x0 mov r1, #0xa3 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x54] add r0, r4, #0x0 mov r1, #0x17 @@ -786,7 +786,7 @@ _0208495C: add r0, r5, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x58] add r0, r4, #0x0 mov r1, #0x19 @@ -803,14 +803,14 @@ _0208495C: mov r1, #0x8 bl AddMonPartyStatEncrypted add r0, r5, #0x0 - bl CalcMonStats + bl CalcMonLevelAndStats ldr r0, [sp, #0x50] cmp r0, #0x0 bne _020849B0 add r0, r5, #0x0 mov r1, #0xa3 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0x0 ldr r3, [sp, #0x54] ldr r1, [sp, #0x50] @@ -915,37 +915,37 @@ _02084A66: add r0, r5, #0x0 mov r1, #0xd mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x50] add r0, r5, #0x0 mov r1, #0xe mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x54] add r0, r5, #0x0 mov r1, #0xf mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x58] add r0, r5, #0x0 mov r1, #0x10 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x5c] add r0, r5, #0x0 mov r1, #0x11 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x60] add r0, r5, #0x0 mov r1, #0x12 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x64] add r0, r5, #0x0 mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x49 lsl r1, r1, #0x2 cmp r0, r1 @@ -985,9 +985,9 @@ _02084A66: add r0, r5, #0x0 mov r1, #0xd add r2, sp, #0x50 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 - bl CalcMonStats + bl CalcMonLevelAndStats mov r6, #0x1 _02084B18: ldr r0, [sp, #0x6c] @@ -1030,9 +1030,9 @@ _02084B20: add r0, r5, #0x0 mov r1, #0xe add r2, sp, #0x54 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 - bl CalcMonStats + bl CalcMonLevelAndStats mov r6, #0x1 _02084B78: ldr r0, [sp, #0x6c] @@ -1075,9 +1075,9 @@ _02084B80: add r0, r5, #0x0 mov r1, #0xf add r2, sp, #0x58 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 - bl CalcMonStats + bl CalcMonLevelAndStats mov r6, #0x1 _02084BD8: ldr r0, [sp, #0x6c] @@ -1120,9 +1120,9 @@ _02084BE0: add r0, r5, #0x0 mov r1, #0x10 add r2, sp, #0x5c - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 - bl CalcMonStats + bl CalcMonLevelAndStats mov r6, #0x1 _02084C38: ldr r0, [sp, #0x6c] @@ -1165,9 +1165,9 @@ _02084C40: add r0, r5, #0x0 mov r1, #0x11 add r2, sp, #0x60 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 - bl CalcMonStats + bl CalcMonLevelAndStats mov r6, #0x1 _02084C98: ldr r0, [sp, #0x6c] @@ -1210,9 +1210,9 @@ _02084CA0: add r0, r5, #0x0 mov r1, #0x12 add r2, sp, #0x64 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 - bl CalcMonStats + bl CalcMonLevelAndStats mov r6, #0x1 _02084CF8: ldr r0, [sp, #0x6c] @@ -1233,7 +1233,7 @@ _02084D14: add r0, r5, #0x0 mov r1, #0x9 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x50] cmp r0, #0x64 bge _02084D54 @@ -1338,7 +1338,7 @@ FUN_02084DF0: ; 0x02084DF0 add r1, #0x36 mov r2, #0x0 add r5, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r7, r0, #0x10 bne _02084E08 @@ -1349,14 +1349,14 @@ _02084E08: add r0, r5, #0x0 add r1, #0x3a mov r2, #0x0 - bl GetMonDataEncrypted + 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 GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r1, r0, #0x18 add r0, r7, #0x0 @@ -1382,7 +1382,7 @@ FUN_02084E40: ; 0x02084E40 add r1, #0x36 mov r2, #0x0 add r6, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r7, r0, #0x10 bne _02084E5E @@ -1397,14 +1397,14 @@ _02084E5E: ldr r1, [sp, #0x0] add r0, r6, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + 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 GetMonDataEncrypted + bl GetMonData add r1, r0, #0x0 lsl r1, r1, #0x18 add r0, r7, #0x0 @@ -1429,7 +1429,7 @@ _02084EA8: ldr r1, [sp, #0x0] add r0, r6, #0x0 add r2, sp, #0x4 - bl SetMonDataEncrypted + bl SetMonData add sp, #0x8 mov r0, #0x1 pop {r3-r7, pc} @@ -1450,7 +1450,7 @@ FUN_02084EC0: ; 0x02084EC0 mov r2, #0x0 add r5, r0, #0x0 str r1, [sp, #0x0] - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x8 strb r0, [r1, #0x0] ldrb r0, [r1, #0x0] @@ -1464,7 +1464,7 @@ _02084EE6: add r0, r5, #0x0 add r1, #0x36 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 mov r1, #0x0 @@ -1480,7 +1480,7 @@ _02084F08: add r0, r5, #0x0 add r1, r4, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x8 strb r0, [r1, #0x1] ldrb r1, [r1, #0x0] @@ -1511,12 +1511,12 @@ _02084F34: ldr r1, [sp, #0x0] add r0, r5, #0x0 add r2, sp, #0x8 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x8 add r0, r5, #0x0 add r1, r4, #0x0 add r2, #0x1 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x1 add sp, #0xc pop {r4-r7, pc} @@ -1556,7 +1556,7 @@ _02084F96: _02084F98: mov r1, #0xa2 add r2, sp, #0xc - bl SetMonDataEncrypted + bl SetMonData pop {r3} pop {r3} add sp, #0x10 @@ -1621,7 +1621,7 @@ FUN_02085000: ; 0x02085000 add r4, r1, #0x0 mov r1, #0x9 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0xff blt _02085014 mov r0, #0x0 @@ -1723,7 +1723,7 @@ _020850BE: add r0, r5, #0x0 mov r1, #0x6 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 ldr r2, [sp, #0x20] lsr r0, r0, #0x10 @@ -1741,7 +1741,7 @@ _020850EC: add r0, r5, #0x0 mov r1, #0x9a mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0xb bne _02085100 ldr r0, [sp, #0x18] @@ -1751,7 +1751,7 @@ _02085100: add r0, r5, #0x0 mov r1, #0x97 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r6, r0 bne _02085114 ldr r0, [sp, #0x18] @@ -1775,7 +1775,7 @@ _0208512C: add r0, r5, #0x0 mov r1, #0x9 add r2, sp, #0x18 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x1 pop {r4-r6} pop {r3} @@ -1800,24 +1800,24 @@ _02085154: mov r1, #0xab mov r2, #0x0 add r5, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _020851AC add r0, r5, #0x0 mov r1, #0xa3 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0xa2 add r2, sp, #0x8 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x0 str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0x9f add r2, sp, #0x8 - bl SetMonDataEncrypted + bl SetMonData mov r4, #0x0 _02085190: add r0, r5, #0x0 diff --git a/arm9/asm/unk_020854E0.s b/arm9/asm/unk_020854E0.s index 8cee9952..b2b33741 100644 --- a/arm9/asm/unk_020854E0.s +++ b/arm9/asm/unk_020854E0.s @@ -111,7 +111,7 @@ FUN_02085578: ; 0x02085578 ldr r2, [r4, #0x14] add r0, r6, #0x0 mov r1, #0xa9 - bl GetMonDataEncrypted + bl GetMonData add r0, r4, #0x0 pop {r3-r7, pc} .balign 4 @@ -180,7 +180,7 @@ _0208561E: ldr r2, [r5, #0x14] add r0, r4, #0x0 mov r1, #0xa9 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x1 pop {r3-r5, pc} @@ -218,7 +218,7 @@ FUN_02085644: ; 0x02085644 add r0, r5, #0x0 mov r1, #0xa9 add r2, r4, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r0, r7, #0x0 mov r1, #0x0 add r2, r6, #0x0 @@ -229,11 +229,11 @@ FUN_02085644: ; 0x02085644 add r0, r5, #0x0 mov r1, #0xa9 add r2, r4, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x0 mov r1, #0x6 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0x0 bl FreeToHeap add r0, r6, #0x0 @@ -262,11 +262,11 @@ _020856BC: add r0, r4, #0x0 mov r1, #0xa9 add r2, r6, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0x0 mov r1, #0x6 add r2, sp, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r7, #0x0 mov r1, #0x0 add r2, r5, #0x0 diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s index ed131b94..8eb483b3 100644 --- a/arm9/asm/unk_020859C0.s +++ b/arm9/asm/unk_020859C0.s @@ -178,7 +178,7 @@ _02085A7C: beq _02085A9A add r1, r7, #0x0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x0 beq _02085A9A lsl r0, r0, #0x3 @@ -675,7 +675,7 @@ _02085EA6: mov r1, #0xa1 add r2, sp, #0x8 add r5, r0, #0x0 - bl SetMonDataEncrypted + bl SetMonData ldr r1, [sp, #0x8] ldr r0, [r7, #0x20] sub r1, r1, #0x1 @@ -683,7 +683,7 @@ _02085EA6: add r2, r0, #0x0 add r0, r5, #0x0 mov r1, #0xaa - bl SetMonDataEncrypted + bl SetMonData ldr r1, [sp, #0x8] ldr r0, [r7, #0x20] sub r1, r1, #0x1 diff --git a/arm9/asm/unk_02086084.s b/arm9/asm/unk_02086084.s index 8a6d5079..98f5d44f 100644 --- a/arm9/asm/unk_02086084.s +++ b/arm9/asm/unk_02086084.s @@ -125,7 +125,7 @@ _0208618C: mov r1, #0x5 ldr r0, [r0, #0xc] mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _020861D8 ; =0x000001EA cmp r0, r1 bne _020861A4 @@ -286,7 +286,7 @@ _020862D6: add r0, r5, #0x0 mov r1, #0x4c add r2, sp, #0x8 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0xb str r0, [sp, #0x0] ldr r3, [sp, #0x4] @@ -297,7 +297,7 @@ _020862D6: add r0, r5, #0x0 mov r1, #0xb2 mov r2, #0x0 - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0x0 bl FUN_020377AC ldr r1, [r4, #0xc] @@ -319,7 +319,7 @@ _0208633A: ldr r0, [r4, #0xc] mov r1, #0x5 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0x0 add r0, r6, #0x0 bl FUN_020377AC @@ -334,13 +334,13 @@ _0208633A: ldr r0, [r4, #0xc] mov r1, #0x6f mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [r4, #0x8] mov r2, #0x0 str r0, [r1, #0x10] ldr r0, [r4, #0xc] mov r1, #0x70 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [r4, #0x8] str r0, [r1, #0x8] ldr r1, _020863D8 ; =UNK_020FA5FC @@ -359,7 +359,7 @@ _02086396: ldr r0, [r4, #0xc] ldr r2, [r2, #0x18] mov r1, #0x77 - bl SetMonDataEncrypted + bl SetMonData _020863A8: ldr r0, [r4, #0x8] bl FUN_02077AC4 diff --git a/arm9/asm/unk_02086414.s b/arm9/asm/unk_02086414.s index 83a10e29..ef50db3f 100644 --- a/arm9/asm/unk_02086414.s +++ b/arm9/asm/unk_02086414.s @@ -1441,7 +1441,7 @@ FUN_02086EE8: ; 0x02086EE8 ldr r4, [r0, #0xc] mov r2, #0x0 add r0, r4, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0x0 add r0, r4, #0x0 mov r1, #0x2 @@ -1452,7 +1452,7 @@ FUN_02086EE8: ; 0x02086EE8 add r0, r4, #0x0 mov r1, #0x4c add r2, sp, #0x10 - bl SetMonDataEncrypted + bl SetMonData add r0, sp, #0x28 add r1, r4, #0x0 mov r2, #0x2 @@ -1487,11 +1487,11 @@ FUN_02086F4C: ; 0x02086F4C mov r1, #0x5 ldr r0, [r0, #0xc] mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0x0 ldr r0, [r5, #0x0] ldr r0, [r0, #0xc] - bl GetMonNatureEncrypted + bl GetMonNature add r6, r0, #0x0 ldr r0, [r5, #0x68] mov r1, #0x1 diff --git a/arm9/asm/unk_02086FA8.s b/arm9/asm/unk_02086FA8.s index f27865fe..e728ee4a 100644 --- a/arm9/asm/unk_02086FA8.s +++ b/arm9/asm/unk_02086FA8.s @@ -164,7 +164,7 @@ _020870D2: mov r1, #0x5 ldr r0, [r0, #0xc] mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_02005578 @@ -447,7 +447,7 @@ _02087322: mov r1, #0x5 ldr r0, [r0, #0xc] mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_02005578 diff --git a/arm9/asm/unk_02087D00.s b/arm9/asm/unk_02087D00.s index c3c27acb..835e4fea 100644 --- a/arm9/asm/unk_02087D00.s +++ b/arm9/asm/unk_02087D00.s @@ -704,7 +704,7 @@ FUN_0208821C: ; 0x0208821C add r6, r1, #0x0 add r4, r0, #0x0 add r0, r6, #0x0 - bl GetMonNatureEncrypted + bl GetMonNature lsl r1, r0, #0x1 ldr r0, _02088310 ; =UNK_020FD17C ldrb r0, [r0, r1] @@ -723,7 +723,7 @@ _02088246: add r0, r6, #0x0 add r1, #0x13 add r2, r7, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r1, r4, #0x2 str r0, [r5, r1] add r0, r4, #0x1 @@ -791,7 +791,7 @@ _020882D4: add r0, r6, #0x0 add r1, #0x13 add r2, r4, r2 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0x1 lsl r0, r0, #0x18 lsr r5, r0, #0x18 @@ -800,7 +800,7 @@ _020882D4: add r0, r6, #0x0 mov r1, #0x9 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x8 strb r0, [r1, #0x0] ldrb r0, [r1, #0x0] @@ -811,7 +811,7 @@ _020882D4: add r0, r6, #0x0 mov r1, #0x9 add r2, sp, #0x8 - bl SetMonDataEncrypted + bl SetMonData _0208830C: add sp, #0x30 pop {r3-r7, pc} diff --git a/arm9/asm/unk_02088DD8.s b/arm9/asm/unk_02088DD8.s index 9e8c27a7..1dda59b0 100644 --- a/arm9/asm/unk_02088DD8.s +++ b/arm9/asm/unk_02088DD8.s @@ -33,21 +33,21 @@ FUN_02088DF8: ; 0x02088DF8 mov r1, #0x5 mov r2, #0x0 add r5, r0, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0xc] add r0, r5, #0x0 mov r1, #0x70 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x8] add r0, r5, #0x0 mov r1, #0xa0 mov r2, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 mov r4, #0x0 @@ -59,7 +59,7 @@ _02088E34: add r0, r5, #0x0 add r1, #0x36 add r2, r7, #0x0 - bl GetMonDataEncrypted + bl GetMonData lsl r1, r4, #0x1 strh r0, [r6, r1] add r0, r4, #0x1 diff --git a/arm9/global.inc b/arm9/global.inc index 04644f92..c35613ab 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4717,11 +4717,11 @@ .extern CreateMonWithGenderNatureLetter .extern GenPersonalityByGenderAndNature .extern CreateMonWithFixedIVs +.extern CalcMonLevelAndStats .extern CalcMonStats -.extern CalcMonStatsMaybeEncrypted -.extern GetMonDataEncrypted -.extern GetBoxMonDataEncrypted -.extern SetMonDataEncrypted +.extern GetMonData +.extern GetBoxMonData +.extern SetMonData .extern SetBoxMonDataEncrypted .extern AddMonPartyStatEncrypted .extern AllocAndLoadMonPersonal @@ -4737,8 +4737,8 @@ .extern CalcBoxMonLevelEncrypted .extern CalcLevelBySpeciesAndExp .extern CalcLevelBySpeciesAndExp_PreloadedPersonal -.extern GetMonNatureEncrypted -.extern GetBoxMonNatureEncrypted +.extern GetMonNature +.extern GetBoxMonNature .extern GetNatureFromPersonality .extern MonApplyFriendshipModEncrypted .extern GetMonGenderEncrypted diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 9a62ca73..442a394e 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -27440,12 +27440,12 @@ _021E4980: add r0, r7, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 ldr r0, [sp] mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x55 lsl r1, r1, #2 ldr r1, [r5, r1] @@ -43049,7 +43049,7 @@ _021EC46E: bl FUN_02023C7C add r1, r7, #0 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021EC48C add r0, r4, #1 @@ -43081,7 +43081,7 @@ _021EC4AA: bl FUN_02023C7C add r1, r6, #0 add r2, r7, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 bne _021EC4C6 add r0, r4, #0 @@ -43103,7 +43103,7 @@ MOD05_021EC4DC: ; 0x021EC4DC push {r3, lr} mov r1, #6 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_0206EA98 @@ -43131,7 +43131,7 @@ MOD05_021EC4F0: ; 0x021EC4F0 add r0, r4, #0 mov r1, #0x74 add r2, sp, #0xc - bl GetMonDataEncrypted + bl GetMonData add r0, r4, #0 bl FUN_020690E4 bl MOD05_021EC4DC @@ -43142,7 +43142,7 @@ MOD05_021EC4F0: ; 0x021EC4F0 add r2, r0, #0 add r0, r4, #0 mov r1, #0xa9 - bl GetMonDataEncrypted + bl GetMonData _021EC544: ldr r1, [sp, #4] add r0, r4, #0 @@ -43211,13 +43211,13 @@ MOD05_021EC5B0: ; 0x021EC5B0 add r0, r6, #0 mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 bne _021EC600 add r0, r7, #0 mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021EC600 add r0, r5, #0 @@ -43275,7 +43275,7 @@ _021EC64E: blt _021EC616 _021EC658: add r0, r5, #0 - bl CalcMonStats + bl CalcMonLevelAndStats add sp, #0xc pop {r4, r5, r6, r7, pc} nop @@ -43304,7 +43304,7 @@ MOD05_021EC668: ; 0x021EC668 add r0, r5, #0 mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r7, r0, #0x10 add r0, r5, #0 @@ -43313,13 +43313,13 @@ MOD05_021EC668: ; 0x021EC668 add r0, r4, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x64 beq _021EC6E0 add r0, r4, #0 mov r1, #8 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #8] add r0, r6, #0 bl FUN_02023C84 @@ -43329,7 +43329,7 @@ MOD05_021EC668: ; 0x021EC668 str r0, [sp, #8] add r0, r4, #0 mov r1, #8 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0 bl MOD05_021EC604 _021EC6E0: @@ -43342,7 +43342,7 @@ _021EC6E0: add r2, r0, #0 add r0, r4, #0 mov r1, #0xa9 - bl SetMonDataEncrypted + bl SetMonData _021EC6FA: ldr r0, [sp] add r1, r4, #0 @@ -43394,7 +43394,7 @@ MOD05_021EC744: ; 0x021EC744 add r0, r4, #0 mov r1, #8 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp] add r0, r0, r5 str r0, [sp] @@ -43525,7 +43525,7 @@ MOD05_021EC864: ; 0x021EC864 bl FUN_02023C7C mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021EC888 add r0, r4, #0 @@ -43581,7 +43581,7 @@ _021EC8D8: ldr r0, [r4] mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [r5] cmp r0, #0x84 bne _021EC8EC @@ -43612,7 +43612,7 @@ _021EC90E: add r0, sp, #4 ldr r0, [r0, r1] mov r1, #6 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0xe5 bne _021EC938 bl rand_LC @@ -43652,7 +43652,7 @@ _021EC960: bl MOD05_021EC458 add r1, r5, #0 add r2, r1, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData bl GetNatureFromPersonality mov r7, #0x96 add r6, r0, #0 @@ -43791,62 +43791,62 @@ _021ECA60: ; jump table _021ECA6C: mov r1, #0x46 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strb r0, [r6] add r0, r4, #0 mov r1, #0x46 add r2, r7, #0 - bl SetMonDataEncrypted + bl SetMonData b _021ECAEE _021ECA82: mov r1, #0x47 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strb r0, [r6] add r0, r4, #0 mov r1, #0x47 add r2, r7, #0 - bl SetMonDataEncrypted + bl SetMonData b _021ECAEE _021ECA98: mov r1, #0x48 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strb r0, [r6] add r0, r4, #0 mov r1, #0x48 add r2, r7, #0 - bl SetMonDataEncrypted + bl SetMonData b _021ECAEE _021ECAAE: mov r1, #0x49 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strb r0, [r6] add r0, r4, #0 mov r1, #0x49 add r2, r7, #0 - bl SetMonDataEncrypted + bl SetMonData b _021ECAEE _021ECAC4: mov r1, #0x4a mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strb r0, [r6] add r0, r4, #0 mov r1, #0x4a add r2, r7, #0 - bl SetMonDataEncrypted + bl SetMonData b _021ECAEE _021ECADA: mov r1, #0x4b mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strb r0, [r6] add r0, r4, #0 mov r1, #0x4b add r2, r7, #0 - bl SetMonDataEncrypted + bl SetMonData _021ECAEE: add r0, r5, #1 lsl r0, r0, #0x18 @@ -43864,7 +43864,7 @@ MOD05_021ECAFC: ; 0x021ECAFC mov r1, #5 add r2, r4, #0 add r6, r4, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r2, r0, #0x10 ldr r0, _021ECB60 ; =0x00004E20 @@ -43935,14 +43935,14 @@ MOD05_021ECB6C: ; 0x021ECB6C add r0, r7, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x18] add r0, r7, #0 mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0xc] @@ -43965,13 +43965,13 @@ _021ECBC0: ldr r0, [sp] add r1, r6, #0 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r1, [sp, #0x20] mov r2, #0 str r0, [r4, r1] ldr r0, [sp, #4] add r1, r6, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r1, [sp, #0x10] str r0, [r1, #0x20] add r0, r5, #1 @@ -44218,13 +44218,13 @@ _021ECDAE: ldr r0, [sp] mov r1, #6 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r4, r0, #0x10 ldr r0, [sp, #4] mov r1, #6 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r2, r0, #0x10 mov r0, #6 @@ -44258,12 +44258,12 @@ MOD05_021ECDF4: ; 0x021ECDF4 ldr r0, [sp] mov r1, #6 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r5, r0, #0 ldr r0, [sp, #4] mov r1, #6 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r5, #0xec beq _021ECE20 cmp r0, #0xec @@ -44301,7 +44301,7 @@ _021ECE56: ldr r0, [r7, r6] mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r1, r4, #1 add r2, sp, #0xc strh r0, [r2, r1] @@ -44424,16 +44424,16 @@ MOD05_021ECF14: ; 0x021ECF14 add r0, r5, #0 mov r1, #0x9a add r2, sp, #0x14 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0 mov r1, #9 add r2, sp, #0x10 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x10 add r0, r5, #0 mov r1, #0x9b add r2, #2 - bl SetMonDataEncrypted + bl SetMonData add r0, sp, #0x30 ldrb r0, [r0, #8] cmp r0, #0 @@ -44441,7 +44441,7 @@ MOD05_021ECF14: ; 0x021ECF14 add r0, r5, #0 mov r1, #0x97 add r2, sp, #0x38 - bl SetMonDataEncrypted + bl SetMonData _021ECF7E: add r2, sp, #0x10 mov r1, #1 @@ -44450,7 +44450,7 @@ _021ECF7E: add r0, r5, #0 mov r1, #0x4c add r2, #1 - bl SetMonDataEncrypted + bl SetMonData ldr r0, _021ED008 ; =0x000001EE mov r1, #4 bl FUN_0200AA50 @@ -44458,7 +44458,7 @@ _021ECF7E: add r0, r5, #0 mov r1, #0x76 add r2, r6, #0 - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0 bl FUN_02021A20 ldr r0, [sp, #0x40] @@ -44477,15 +44477,15 @@ _021ECF7E: add r0, r5, #0 mov r1, #0x90 add r2, r6, #0 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0 mov r1, #7 add r2, sp, #0x1c - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0 mov r1, #0x9c add r2, sp, #0x18 - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0 bl FUN_02021A20 _021ECFEE: @@ -44562,20 +44562,20 @@ _021ED05E: add r0, r7, #0 mov r1, #0x9a add r2, #2 - bl SetMonDataEncrypted + bl SetMonData add r0, r7, #0 mov r1, #9 add r2, sp, #0x14 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x14 add r0, r7, #0 mov r1, #0x9b add r2, #1 - bl SetMonDataEncrypted + bl SetMonData add r0, r7, #0 mov r1, #0x70 add r2, sp, #0x30 - bl SetMonDataEncrypted + bl SetMonData ldr r0, _021ED0C8 ; =0x000001EE mov r1, #4 bl FUN_0200AA50 @@ -44583,7 +44583,7 @@ _021ED05E: add r0, r7, #0 mov r1, #0x76 add r2, r4, #0 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0 bl FUN_02021A20 add sp, #0x18 @@ -44617,7 +44617,7 @@ MOD05_021ED0CC: ; 0x021ED0CC bl MOD05_021EC458 mov r1, #0x70 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp] @@ -44664,7 +44664,7 @@ _021ED168: add r0, r4, #0 mov r1, #0x4c add r2, sp, #0x10 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #4] add r1, r4, #0 bl FUN_0206B900 @@ -44691,7 +44691,7 @@ _021ED1A2: bl FUN_0206B9B0 add r1, r7, #0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _021ED1D6 add r0, r5, #0 @@ -44699,7 +44699,7 @@ _021ED1A2: bl FUN_0206B9B0 mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 cmp r0, #0x28 @@ -44765,18 +44765,18 @@ _021ED228: ldr r0, [r5] mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strh r0, [r4] ldr r0, [r5] mov r1, #7 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r1, [sp] str r0, [r1] mov r1, #0 ldr r0, [r5] add r2, r1, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, r0, #0 ldrh r0, [r4] bl GetGenderBySpeciesAndPersonality @@ -44956,7 +44956,7 @@ _021ED38E: ldr r0, [r5] mov r1, #0xab mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021ED3AC ldr r0, [sp] @@ -45027,19 +45027,19 @@ _021ED430: mov r1, #0x4c mov r2, #0 add r4, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021ED484 add r0, r4, #0 mov r1, #3 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _021ED484 add r0, r4, #0 mov r1, #9 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x10] cmp r0, #0 beq _021ED47E @@ -45055,7 +45055,7 @@ _021ED472: add r0, r4, #0 mov r1, #9 add r2, sp, #0x10 - bl SetMonDataEncrypted + bl SetMonData b _021ED484 _021ED47E: add sp, #0x14 @@ -45090,13 +45090,13 @@ _021ED4AC: mov r1, #0x4c mov r2, #0 add r4, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021ED4D4 add r0, r4, #0 mov r1, #9 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _021ED4D4 add r0, r4, #0 @@ -45120,7 +45120,7 @@ MOD05_021ED4E0: ; 0x021ED4E0 ldr r0, [sp] mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021ED50E ldr r2, [sp] @@ -45135,7 +45135,7 @@ _021ED50E: ldr r0, [sp, #4] mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021ED526 ldr r2, [sp, #4] @@ -45186,7 +45186,7 @@ MOD05_021ED52C: ; 0x021ED52C add r0, r5, #0 mov r1, #0x6f mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x18 lsr r4, r0, #0x18 cmp r4, #2 @@ -45194,7 +45194,7 @@ MOD05_021ED52C: ; 0x021ED52C add r0, r5, #0 mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 cmp r0, #0x1d @@ -45205,7 +45205,7 @@ _021ED5A4: add r0, r5, #0 mov r1, #0x4d mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 bne _021ED5B4 mov r4, #2 @@ -45232,7 +45232,7 @@ MOD05_021ED5C4: ; 0x021ED5C4 add r0, r4, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 pop {r3, r4, r5, pc} @@ -45316,7 +45316,7 @@ MOD05_021ED650: ; 0x021ED650 add r0, r4, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x14] @@ -45327,14 +45327,14 @@ _021ED67C: add r0, r4, #0 add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r1, r5, #1 strh r0, [r7, r1] add r1, r5, #0 add r0, r4, #0 add r1, #0x3a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x30 strb r0, [r1, r5] add r0, r5, #1 @@ -45345,7 +45345,7 @@ _021ED67C: mov r1, #0 add r0, r4, #0 add r2, r1, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 mov r5, #0 _021ED6B4: @@ -45353,7 +45353,7 @@ _021ED6B4: add r0, r4, #0 add r1, #0x46 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x24 add r1, #2 strb r0, [r1, r5] @@ -45365,52 +45365,52 @@ _021ED6B4: add r0, r4, #0 mov r1, #0xc mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strb r0, [r1, #9] add r0, r4, #0 mov r1, #0x79 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strb r0, [r1, #8] add r0, r4, #0 mov r1, #0xb mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strb r0, [r1, #7] add r0, r4, #0 mov r1, #0x99 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strb r0, [r1, #0xa] add r0, r4, #0 mov r1, #0x6e mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strb r0, [r1, #5] ldr r2, [sp, #0x10] add r0, r4, #0 mov r1, #0x90 - bl GetMonDataEncrypted + bl GetMonData add r0, r4, #0 mov r1, #0x9c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strb r0, [r1, #3] add r0, r4, #0 mov r1, #7 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x2c] add r0, r4, #0 mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strb r0, [r1, #4] ldr r1, _021ED93C ; =0x000001EA @@ -45420,7 +45420,7 @@ _021ED6B4: add r0, r4, #0 mov r1, #0x97 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r5, r0, #0 mov r0, #2 mov r1, #1 @@ -45460,13 +45460,13 @@ _021ED7A2: add r0, r6, #0 add r1, #0x36 add r2, r7, r2 - bl SetMonDataEncrypted + bl SetMonData add r1, r5, #0 add r2, sp, #0x30 add r0, r6, #0 add r1, #0x3a add r2, r2, r5 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #1 lsl r0, r0, #0x18 lsr r5, r0, #0x18 @@ -45480,7 +45480,7 @@ _021ED7CE: add r0, r6, #0 add r1, #0x46 add r2, r7, r5 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #1 lsl r0, r0, #0x18 lsr r5, r0, #0x18 @@ -45490,16 +45490,16 @@ _021ED7CE: add r0, r6, #0 mov r1, #0xc add r2, #1 - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0 mov r1, #0x79 add r2, sp, #0x20 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x1c add r0, r6, #0 mov r1, #0xb add r2, #3 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x1c mov r1, #0x78 add r0, sp, #0x18 @@ -45507,118 +45507,118 @@ _021ED7CE: add r0, r6, #0 mov r1, #9 add r2, #2 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x20 add r0, r6, #0 mov r1, #0x99 add r2, #2 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x1c add r0, r6, #0 mov r1, #0x6e add r2, #1 - bl SetMonDataEncrypted + bl SetMonData ldr r2, [sp, #0x10] add r0, r6, #0 mov r1, #0x90 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x18 add r0, r6, #0 mov r1, #0x9c add r2, #3 - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0 mov r1, #7 add r2, sp, #0x2c - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0 mov r1, #0x70 add r2, sp, #0x1c - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0 mov r1, #0x97 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strh r0, [r1, #0xc] add r0, r4, #0 mov r1, #0x91 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strb r0, [r1, #2] add r0, r4, #0 mov r1, #0x92 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strb r0, [r1, #1] add r0, r4, #0 mov r1, #0x93 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strb r0, [r1] add r0, r6, #0 mov r1, #0x97 add r2, sp, #0x24 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x18 add r0, r6, #0 mov r1, #0x91 add r2, #2 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x18 add r0, r6, #0 mov r1, #0x92 add r2, #1 - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0 mov r1, #0x93 add r2, sp, #0x18 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0 mov r1, #0x98 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strh r0, [r1, #0xc] add r0, r4, #0 mov r1, #0x94 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strb r0, [r1, #2] add r0, r4, #0 mov r1, #0x95 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strb r0, [r1, #1] add r0, r4, #0 mov r1, #0x96 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x18 strb r0, [r1] add r0, r6, #0 mov r1, #0x98 add r2, sp, #0x24 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x18 add r0, r6, #0 mov r1, #0x94 add r2, #2 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0x18 add r0, r6, #0 mov r1, #0x95 add r2, #1 - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0 mov r1, #0x96 add r2, sp, #0x18 - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0 add r1, r4, #0 bl FUN_02069B88 @@ -45649,11 +45649,11 @@ MOD05_021ED940: ; 0x021ED940 add r0, r4, #0 mov r1, #0x4c add r2, #3 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0 mov r1, #5 add r2, r5, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 add r1, r5, #0 @@ -45662,23 +45662,23 @@ MOD05_021ED940: ; 0x021ED940 add r0, r4, #0 mov r1, #0x74 add r2, sp, #4 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0 add r0, r4, #0 mov r1, #0x4d add r2, #2 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #0 add r0, r4, #0 mov r1, #0x9a add r2, #1 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0 mov r1, #0x9b add r2, sp, #0 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0 - bl CalcMonStats + bl CalcMonLevelAndStats add sp, #0x1c pop {r4, r5, pc} .balign 4, 0 @@ -58115,13 +58115,13 @@ MOD05_021F38CC: ; 0x021F38CC mov r1, #0 add r2, r1, #0 add r5, r0, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r5, #0 mov r1, #0x46 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0xf and r0, r1 lsl r0, r0, #0x10 @@ -58130,7 +58130,7 @@ MOD05_021F38CC: ; 0x021F38CC add r0, r5, #0 mov r1, #0x47 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0xf and r0, r1 lsl r0, r0, #0x10 @@ -58139,7 +58139,7 @@ MOD05_021F38CC: ; 0x021F38CC add r0, r5, #0 mov r1, #0x48 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0xf and r0, r1 lsl r0, r0, #0x10 @@ -58148,7 +58148,7 @@ MOD05_021F38CC: ; 0x021F38CC add r0, r5, #0 mov r1, #0x49 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0xf and r0, r1 lsl r0, r0, #0x10 @@ -58156,7 +58156,7 @@ MOD05_021F38CC: ; 0x021F38CC add r0, r5, #0 mov r1, #0x4a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0xf and r0, r1 lsl r0, r0, #0x10 @@ -58164,7 +58164,7 @@ MOD05_021F38CC: ; 0x021F38CC add r0, r5, #0 mov r1, #0x4b mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0xf and r0, r1 lsl r0, r0, #0x10 @@ -58279,7 +58279,7 @@ MOD05_021F3A18: ; 0x021F3A18 mov r1, #5 mov r2, #0 str r0, [sp] - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r5, r0, #0x10 ldr r0, [sp] @@ -58444,7 +58444,7 @@ MOD05_021F3B7C: ; 0x021F3B7C mov r1, #5 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r6, #0 diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index c4c4559d..a857283f 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -4804,7 +4804,7 @@ _0223BA42: str r1, [sp, #0x34] mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x24 strb r0, [r1, #0x18] _0223BA8C: @@ -5586,7 +5586,7 @@ _0223C0CE: str r1, [sp, #0x2c] mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x20 strb r0, [r1, #0x14] _0223C118: @@ -6400,7 +6400,7 @@ MOD06_0223C738: ; 0x0223C738 add r4, r1, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r1, r0, #0x10 cmp r1, #0xe0 @@ -6464,7 +6464,7 @@ _0223C7AC: mov r1, #0 add r0, r4, #0 add r2, r1, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x19 bl _u32_div_f lsl r0, r1, #0x18 @@ -6588,7 +6588,7 @@ _0223C8A6: ldr r0, [sp, #0x44] mov r1, #0x6f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x24] @@ -6607,7 +6607,7 @@ _0223C8D2: cmp r4, #0 bne _0223C8E0 ldr r0, [sp, #0x44] - bl GetMonNatureEncrypted + bl GetMonNature str r0, [sp, #0x20] mov r7, #1 _0223C8E0: @@ -6722,7 +6722,7 @@ _0223C9BE: ldr r0, [sp, #0x28] mov r1, #0x6f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r6, r0, #0x18 cmp r6, #1 @@ -6752,7 +6752,7 @@ _0223C9E4: add r0, r4, #0 mov r1, #7 add r2, r5, #0 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x10] ldr r3, [sp, #0x2c] add r1, r5, #0 @@ -6779,7 +6779,7 @@ _0223CA28: add r0, r4, #0 mov r1, #7 add r2, r5, #0 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x10] ldr r3, [sp, #0x2c] add r1, r5, #0 @@ -7488,7 +7488,7 @@ _0223CF96: add r0, r1, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 cmp r0, #5 @@ -7626,15 +7626,15 @@ MOD06_0223D044: ; 0x0223D044 add r0, r4, #0 mov r1, #7 add r2, sp, #0x30 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0 mov r1, #0x9f add r2, sp, #0x14 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0 mov r1, #0xa2 add r2, sp, #0x10 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [r6, #8] add r1, r4, #0 bl FUN_0206B900 @@ -7782,7 +7782,7 @@ _0223D1DA: add r0, r6, #0 mov r1, #5 add r2, r4, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _0223D270 ; =0x000001A6 cmp r0, r1 bne _0223D208 @@ -7839,7 +7839,7 @@ _0223D24E: add r0, r6, #0 mov r1, #0x70 add r2, sp, #8 - bl SetMonDataEncrypted + bl SetMonData _0223D25C: ldr r0, [sp] add r1, r6, #0 @@ -7919,14 +7919,14 @@ MOD06_0223D2DC: ; 0x0223D2DC mov r1, #0x4c mov r2, #0 add r4, r3, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0223D302 mov r2, #0 add r0, r7, #0 mov r1, #0xa strb r2, [r4, #0xd] - bl GetMonDataEncrypted + bl GetMonData b _0223D308 _0223D302: mov r0, #1 @@ -19758,19 +19758,19 @@ _02243312: mov r1, #5 mov r2, #0 str r0, [sp, #0xc] - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r5, r0, #0x10 ldr r0, [sp, #0xc] mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r6, r0, #0x10 ldr r0, [sp, #0xc] mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0224336E add r0, r5, #0 @@ -20287,12 +20287,12 @@ _02243726: add r7, r0, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r6, #0x2e] add r0, r7, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r6, #0x36] add r0, r4, #1 lsl r0, r0, #0x10 @@ -20338,12 +20338,12 @@ _0224379C: lsl r6, r5, #1 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, r6] ldr r0, [sp, #8] mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r7, r6] cmp r5, #0 beq _022437FA @@ -21457,13 +21457,13 @@ _02243FFA: add r1, r6, #0 mov r2, #0 str r0, [sp, #4] - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _02244024 ldr r0, [sp, #4] add r1, r6, #0 add r2, sp, #8 - bl SetMonDataEncrypted + bl SetMonData add r0, r7, #1 lsl r0, r0, #0x18 lsr r7, r0, #0x18 @@ -21522,7 +21522,7 @@ MOD06_0224406C: ; 0x0224406C add r0, r5, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp] lsl r0, r0, #0x10 ldrh r1, [r1] @@ -21537,7 +21537,7 @@ MOD06_0224406C: ; 0x0224406C strh r1, [r0] add r0, r5, #0 mov r1, #0x70 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp] lsl r0, r0, #0x10 ldrh r2, [r1] @@ -21552,7 +21552,7 @@ MOD06_0224406C: ; 0x0224406C strh r1, [r0] add r0, r5, #0 mov r1, #6 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp] mov r4, #0 strh r0, [r1, #2] @@ -21567,13 +21567,13 @@ _022440D0: add r0, r5, #0 add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0 strh r0, [r6, #4] add r0, r5, #0 add r1, #0x3e mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #4] lsl r0, r7 ldrb r1, [r1] @@ -21588,25 +21588,25 @@ _022440D0: add r0, r5, #0 mov r1, #0xc mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp] mov r2, #0 strb r0, [r1, #0x1f] add r0, r5, #0 mov r1, #7 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp] str r0, [r1, #0xc] mov r1, #0 add r0, r5, #0 add r2, r1, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp] mov r2, #0 str r0, [r1, #0x10] add r0, r5, #0 mov r1, #0xae - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp] mov r4, #0 str r0, [r1, #0x14] @@ -21616,7 +21616,7 @@ _0224413C: add r0, r5, #0 add r1, #0xd add r2, r6, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp] add r1, r1, r4 add r4, r4, #1 @@ -21626,14 +21626,14 @@ _0224413C: add r0, r5, #0 mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp] mov r2, #0 add r1, #0x20 strb r0, [r1] add r0, r5, #0 mov r1, #9 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp] ldr r2, [sp] add r1, #0x21 @@ -21642,7 +21642,7 @@ _0224413C: add r0, r5, #0 mov r1, #0x74 str r2, [sp] - bl GetMonDataEncrypted + bl GetMonData add sp, #8 pop {r3, r4, r5, r6, r7, pc} nop @@ -21919,11 +21919,11 @@ MOD06_02244388: ; 0x02244388 strb r1, [r0, #1] add r0, r5, #0 mov r1, #0x70 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0 mov r1, #6 add r2, r6, #2 - bl SetMonDataEncrypted + bl SetMonData mov r4, #0 str r6, [sp, #4] add r7, r4, #0 @@ -21937,7 +21937,7 @@ _022443D4: add r1, r4, #0 add r0, r5, #0 add r1, #0x36 - bl SetMonDataEncrypted + bl SetMonData ldrb r0, [r6, #0x1e] add r2, sp, #8 add r2, #1 @@ -21950,19 +21950,19 @@ _022443D4: add r1, r4, #0 add r0, r5, #0 add r1, #0x3e - bl SetMonDataEncrypted + bl SetMonData add r1, r4, #0 add r0, r5, #0 add r1, #0x42 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #8 strb r0, [r1] add r1, r4, #0 add r0, r5, #0 add r1, #0x3a add r2, sp, #8 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #4] add r4, r4, #1 add r0, r0, #2 @@ -21975,7 +21975,7 @@ _022443D4: str r0, [sp, #0xc] add r0, r5, #0 add r2, sp, #0xc - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #8 ldrb r1, [r6, #0x18] add r0, sp, #8 @@ -21983,7 +21983,7 @@ _022443D4: strb r1, [r0, #1] add r0, r5, #0 mov r1, #0xd - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #8 ldrb r1, [r6, #0x19] add r0, sp, #8 @@ -21991,7 +21991,7 @@ _022443D4: strb r1, [r0, #1] add r0, r5, #0 mov r1, #0xe - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #8 ldrb r1, [r6, #0x1a] add r0, sp, #8 @@ -21999,7 +21999,7 @@ _022443D4: strb r1, [r0, #1] add r0, r5, #0 mov r1, #0xf - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #8 ldrb r1, [r6, #0x1b] add r0, sp, #8 @@ -22007,7 +22007,7 @@ _022443D4: strb r1, [r0, #1] add r0, r5, #0 mov r1, #0x10 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #8 ldrb r1, [r6, #0x1c] add r0, sp, #8 @@ -22015,7 +22015,7 @@ _022443D4: strb r1, [r0, #1] add r0, r5, #0 mov r1, #0x11 - bl SetMonDataEncrypted + bl SetMonData add r2, sp, #8 ldrb r1, [r6, #0x1d] add r0, sp, #8 @@ -22023,17 +22023,17 @@ _022443D4: strb r1, [r0, #1] add r0, r5, #0 mov r1, #0x12 - bl SetMonDataEncrypted + bl SetMonData add r2, r6, #0 add r0, r5, #0 mov r1, #0xa add r2, #0x20 - bl SetMonDataEncrypted + bl SetMonData add r2, r6, #0 add r0, r5, #0 mov r1, #9 add r2, #0x21 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [r6, #0x14] lsl r0, r0, #1 lsr r0, r0, #0x1f @@ -22052,7 +22052,7 @@ _022443D4: add r0, r5, #0 mov r1, #0x76 add r2, r7, #0 - bl SetMonDataEncrypted + bl SetMonData add r0, r7, #0 bl FUN_02021A20 add r0, r4, #0 @@ -22063,15 +22063,15 @@ _022444FC: add r0, r5, #0 mov r1, #0x74 add r2, #0x22 - bl SetMonDataEncrypted + bl SetMonData _02244508: add r6, #0x1f add r0, r5, #0 mov r1, #0xc add r2, r6, #0 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0 - bl CalcMonStats + bl CalcMonLevelAndStats add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop @@ -22157,22 +22157,22 @@ _022445A6: add r0, r4, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x32 bls _022445E8 add r0, r4, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x32 bl GetMonExpBySpeciesAndLevel str r0, [sp, #8] add r0, r4, #0 mov r1, #8 add r2, sp, #8 - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0 - bl CalcMonStats + bl CalcMonLevelAndStats _022445E8: add r0, r7, #0 add r1, r4, #0 @@ -22348,7 +22348,7 @@ _0224471C: bl FUN_0206B9B0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x21 lsl r1, r1, #6 strh r0, [r5, r1] @@ -26833,7 +26833,7 @@ MOD06_0224690C: ; 0x0224690C str r0, [r4] ldr r0, [r4, #0x5c] mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_02005578 @@ -28745,7 +28745,7 @@ _022477A8: mov r1, #0 add r0, r6, #0 add r2, r1, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp] mov r0, #0 str r0, [sp, #4] @@ -30769,7 +30769,7 @@ MOD06_02248724: ; 0x02248724 add r0, r6, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r0, #0 add r0, r7, #0 bl MOD06_02248810 @@ -30779,13 +30779,13 @@ MOD06_02248724: ; 0x02248724 add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r6, #0 mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r6, r0, #0x18 ldr r0, [sp] @@ -31018,7 +31018,7 @@ MOD06_0224891C: ; 0x0224891C mov r1, #0xa0 mov r2, #0 add r7, r0, #0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0 ldr r0, [r5, #0x10] str r0, [sp] @@ -31114,7 +31114,7 @@ MOD06_022489D4: ; 0x022489D4 add r0, r5, #0 mov r1, #0x76 add r2, r7, #0 - bl SetMonDataEncrypted + bl SetMonData add r0, r7, #0 bl FUN_02021A20 mov r1, #1 @@ -31123,66 +31123,66 @@ MOD06_022489D4: ; 0x022489D4 add r0, r5, #0 mov r1, #0x4d add r2, sp, #0x10 - bl SetMonDataEncrypted + bl SetMonData add r0, r5, #0 mov r1, #0x46 add r2, r4, #4 - bl SetMonDataEncrypted + bl SetMonData add r2, r4, #0 add r0, r5, #0 mov r1, #0x47 add r2, #8 - bl SetMonDataEncrypted + bl SetMonData add r2, r4, #0 add r0, r5, #0 mov r1, #0x48 add r2, #0xc - bl SetMonDataEncrypted + bl SetMonData add r2, r4, #0 add r0, r5, #0 mov r1, #0x49 add r2, #0x10 - bl SetMonDataEncrypted + bl SetMonData add r2, r4, #0 add r0, r5, #0 mov r1, #0x4a add r2, #0x14 - bl SetMonDataEncrypted + bl SetMonData add r2, r4, #0 add r0, r5, #0 mov r1, #0x4b add r2, #0x18 - bl SetMonDataEncrypted + bl SetMonData add r2, r4, #0 add r0, r5, #0 mov r1, #0x13 add r2, #0x24 - bl SetMonDataEncrypted + bl SetMonData add r2, r4, #0 add r0, r5, #0 mov r1, #0x14 add r2, #0x28 - bl SetMonDataEncrypted + bl SetMonData add r2, r4, #0 add r0, r5, #0 mov r1, #0x15 add r2, #0x2c - bl SetMonDataEncrypted + bl SetMonData add r2, r4, #0 add r0, r5, #0 mov r1, #0x16 add r2, #0x30 - bl SetMonDataEncrypted + bl SetMonData add r2, r4, #0 add r0, r5, #0 mov r1, #0x17 add r2, #0x34 - bl SetMonDataEncrypted + bl SetMonData add r2, r4, #0 add r0, r5, #0 mov r1, #6 add r2, #0x3c - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x28] add r1, r6, #4 bl MOD06_022489AC @@ -31190,19 +31190,19 @@ MOD06_022489D4: ; 0x022489D4 add r0, r5, #0 mov r1, #0x90 add r2, r6, #0 - bl SetMonDataEncrypted + bl SetMonData add r0, r6, #0 bl FUN_02021A20 add r2, r4, #0 add r0, r5, #0 mov r1, #0x9c add r2, #0x40 - bl SetMonDataEncrypted + bl SetMonData add r4, #0x48 add r0, r5, #0 mov r1, #0xc add r2, r4, #0 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x2c] bl FUN_02034824 add r3, r0, #0 @@ -31213,7 +31213,7 @@ MOD06_022489D4: ; 0x022489D4 mov r2, #1 bl FUN_0208089C add r0, r5, #0 - bl CalcMonStats + bl CalcMonLevelAndStats add r0, r5, #0 bl MonIsShiny cmp r0, #0 diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s index cb716405..116ffbed 100644 --- a/arm9/modules/07/asm/module_07.s +++ b/arm9/modules/07/asm/module_07.s @@ -2333,13 +2333,13 @@ _0221312A: mov r1, #5 mov r2, #0 add r7, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022131B0 add r0, r7, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _022131B0 add r0, r7, #0 @@ -3686,7 +3686,7 @@ _02213C2E: add r0, r4, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x86 lsl r1, r1, #2 strh r0, [r7, r1] @@ -3702,52 +3702,52 @@ _02213C2E: add r5, r0, r1 add r0, r4, #0 mov r1, #0x4c - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02213D18 ; =0x00000223 mov r2, #0 strb r0, [r5, r1] add r0, r4, #0 mov r1, #0xa2 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02213D1C ; =0x0000021A mov r2, #0 strh r0, [r5, r1] add r0, r4, #0 mov r1, #0xa3 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x87 lsl r1, r1, #2 strh r0, [r5, r1] add r0, r4, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x22 lsl r1, r1, #4 strb r0, [r5, r1] add r0, r4, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02213D20 ; =0x0000021E mov r2, #0 strh r0, [r5, r1] add r0, r4, #0 mov r1, #0xa1 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x89 lsl r1, r1, #2 strb r0, [r5, r1] add r0, r4, #0 mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02213D24 ; =0x00000225 mov r2, #0 strb r0, [r5, r1] add r0, r4, #0 mov r1, #0xaf - bl GetMonDataEncrypted + bl GetMonData cmp r0, #1 bne _02213CE8 mov r1, #0 diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s index 6c672cb0..e09211f8 100644 --- a/arm9/modules/08/asm/module_08.s +++ b/arm9/modules/08/asm/module_08.s @@ -45038,7 +45038,7 @@ MOD08_02228244: ; 0x02228244 str r0, [r2] ldr r0, [r4, #0xc] mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0 add r1, #0x9c str r0, [r1] @@ -45067,7 +45067,7 @@ _02228272: _02228290: ldr r0, [r4, #0xc] mov r1, #0x9a - bl GetMonDataEncrypted + bl GetMonData add r4, #0x98 str r0, [r4] pop {r4, pc} @@ -45080,7 +45080,7 @@ _0222829E: add r4, #0xa0 mov r1, #0xaa add r2, r4, #0 - bl GetMonDataEncrypted + bl GetMonData pop {r4, pc} thumb_func_start MOD08_022282B4 diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s index 69df6bf9..6312dd4f 100644 --- a/arm9/modules/09/asm/module_09.s +++ b/arm9/modules/09/asm/module_09.s @@ -576,7 +576,7 @@ _022122BA: add r0, r5, r1 ldr r0, [r0, #4] mov r1, #0xa2 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x20] ldrb r1, [r4, #0x11] mov r0, #0x50 @@ -1630,7 +1630,7 @@ _02212B0A: ldr r0, [r0, #4] add r1, #0x3a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r7, #4 strh r0, [r4, r1] mov r2, #2 @@ -1686,7 +1686,7 @@ _02212BAA: add r0, r4, r0 ldr r0, [r0, #4] mov r1, #0xa2 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02212C84 ; =0x0000207E mov r2, #4 strh r0, [r4, r1] @@ -1841,7 +1841,7 @@ _02212CD0: add r1, r7, #0 add r1, #0x3a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x82 lsl r1, r1, #6 strh r0, [r4, r1] @@ -2441,7 +2441,7 @@ _022131E2: str r0, [r4, #4] mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #8] ldrh r0, [r4, #8] cmp r0, #0 @@ -2457,54 +2457,54 @@ _0221320C: add r4, r0, r5 ldr r0, [r4, #4] mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0xa] ldr r0, [r4, #4] mov r1, #0xa5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0xc] ldr r0, [r4, #4] mov r1, #0xa6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0xe] ldr r0, [r4, #4] mov r1, #0xa7 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x10] ldr r0, [r4, #4] mov r1, #0xa8 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x12] ldr r0, [r4, #4] mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x14] ldr r0, [r4, #4] mov r1, #0xa3 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x16] ldr r0, [r4, #4] mov r1, #0xb0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r4, #0x18] ldr r0, [r4, #4] mov r1, #0xb1 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r6, [sp] strb r0, [r4, #0x19] ldr r0, [r4, #4] add r6, #0x1a mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldrb r1, [r6, r5] mov r2, #0x7f lsl r0, r0, #0x18 @@ -2517,7 +2517,7 @@ _0221320C: ldr r0, [r4, #4] mov r1, #0xaf mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #1 ldrb r1, [r6, r5] bne _022132BC @@ -2557,7 +2557,7 @@ _022132C2: ldr r0, [r4, #4] mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 lsl r0, r0, #0x1f @@ -2570,17 +2570,17 @@ _022132C2: ldr r0, [r4, #4] mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x1c] ldr r0, [r4, #4] mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x1e] ldr r0, [r4, #4] mov r1, #8 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r6, [sp] str r0, [r4, #0x20] add r6, #0x1a @@ -2610,49 +2610,49 @@ _02213366: ldr r0, [r4, #4] mov r1, #0x13 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0 add r1, #0x2c strb r0, [r1] ldr r0, [r4, #4] mov r1, #0x14 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0 add r1, #0x2d strb r0, [r1] ldr r0, [r4, #4] mov r1, #0x15 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0 add r1, #0x2e strb r0, [r1] ldr r0, [r4, #4] mov r1, #0x16 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0 add r1, #0x2f strb r0, [r1] ldr r0, [r4, #4] mov r1, #0x17 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0 add r1, #0x30 strb r0, [r1] ldr r0, [r4, #4] mov r1, #0xa1 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0 add r1, #0x31 strb r0, [r1] ldr r0, [r4, #4] mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r4, #0x32 strb r0, [r4] ldr r1, [sp] @@ -2670,7 +2670,7 @@ _022133E4: ldr r0, [r6, #4] add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0xc] strh r0, [r7, r1] add r0, r1, #0 @@ -2681,13 +2681,13 @@ _022133E4: ldr r0, [r6, #4] add r1, #0x3a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r5, #2] add r1, r4, #0 ldr r0, [r6, #4] add r1, #0x3e mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r5, #3] ldrh r0, [r5] ldrb r1, [r5, #3] @@ -8336,7 +8336,7 @@ MOD09_02216378: ; 0x02216378 mov r1, #0xa2 mov r2, #0 add r7, r0, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #8] diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index dba629d4..ab76b727 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -1685,7 +1685,7 @@ _0222E4AC: bl MOD11_02230014 mov r1, #0x9a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0 ldr r1, [r6, #0x34] add r0, r5, #0 @@ -2024,19 +2024,19 @@ _0222E76C: mov r1, #5 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222E79E add r0, r6, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222E79E add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222E7AA _0222E79E: @@ -2129,19 +2129,19 @@ _0222E848: mov r1, #5 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222E87A add r0, r6, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222E87A add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222E886 _0222E87A: @@ -2255,38 +2255,38 @@ _0222E938: add r0, r5, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222E9AC add r0, r5, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222E9AC add r0, r5, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222E9B8 b _0222E9AC _0222E984: mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222E9AC add r0, r5, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222E9AC add r0, r5, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222E9B8 _0222E9AC: @@ -2355,19 +2355,19 @@ _0222EA22: mov r1, #5 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222EA54 add r0, r6, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222EA54 add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222EA60 _0222EA54: @@ -2457,19 +2457,19 @@ _0222EAEE: bne _0222EB2E mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222EB56 add r0, r6, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222EB56 add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222EB56 ldr r0, [sp, #0x38] @@ -2479,19 +2479,19 @@ _0222EAEE: _0222EB2E: mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222EB56 add r0, r6, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222EB56 add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222EB64 _0222EB56: @@ -2582,19 +2582,19 @@ _0222EBF6: mov r1, #5 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222EC28 add r0, r6, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222EC28 add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222EC34 _0222EC28: @@ -2707,38 +2707,38 @@ _0222ECE0: add r0, r5, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222ED54 add r0, r5, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222ED54 add r0, r5, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222ED60 b _0222ED54 _0222ED2C: mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222ED54 add r0, r5, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222ED54 add r0, r5, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222ED60 _0222ED54: @@ -2810,19 +2810,19 @@ _0222EDD2: mov r1, #5 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222EE04 add r0, r6, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222EE04 add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222EE10 _0222EE04: @@ -2865,7 +2865,7 @@ _0222EE3E: add r2, r4, #0 mov r1, #0x8f add r2, #0xf4 - bl GetMonDataEncrypted + bl GetMonData _0222EE5A: ldr r1, [r4, #0x2c] mov r0, #1 @@ -5703,7 +5703,7 @@ _022303E4: ldr r0, [sp, #0x18] mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #7 str r0, [sp, #0x20] tst r1, r0 @@ -5714,7 +5714,7 @@ _022303E4: ldr r0, [sp, #0x18] mov r1, #0x9f add r2, sp, #0x20 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x10] cmp r0, r5 beq _02230434 @@ -5765,7 +5765,7 @@ _02230478: ldr r0, [sp, #0x18] mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _0223068C ; =0x00000F88 str r0, [sp, #0x20] tst r1, r0 @@ -5776,7 +5776,7 @@ _02230478: str r0, [sp, #0x20] ldr r0, [sp, #0x18] mov r1, #0x9f - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x10] cmp r0, r5 beq _022304B8 @@ -5813,7 +5813,7 @@ _022304DC: ldr r0, [sp, #0x18] mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x10 str r0, [sp, #0x20] tst r1, r0 @@ -5824,7 +5824,7 @@ _022304DC: ldr r0, [sp, #0x18] mov r1, #0x9f add r2, sp, #0x20 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x10] cmp r0, r5 beq _0223051C @@ -5861,7 +5861,7 @@ _02230540: ldr r0, [sp, #0x18] mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x20 str r0, [sp, #0x20] tst r1, r0 @@ -5872,7 +5872,7 @@ _02230540: ldr r0, [sp, #0x18] mov r1, #0x9f add r2, sp, #0x20 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x10] cmp r0, r5 beq _02230580 @@ -5909,7 +5909,7 @@ _022305A4: ldr r0, [sp, #0x18] mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x40 str r0, [sp, #0x20] tst r1, r0 @@ -5920,7 +5920,7 @@ _022305A4: ldr r0, [sp, #0x18] mov r1, #0x9f add r2, sp, #0x20 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x10] cmp r0, r5 beq _022305E4 @@ -6300,13 +6300,13 @@ _022308C4: ldr r0, [sp, #0x18] add r1, #0x3a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 add r1, r4, #0 ldr r0, [sp, #0x18] add r1, #0x42 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r7, r0 beq _0223095A add r1, r4, #0 @@ -6371,13 +6371,13 @@ _0223097E: ldr r0, [sp, #0x18] add r1, #0x3a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 add r1, r4, #0 ldr r0, [sp, #0x18] add r1, #0x42 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r7, r0 beq _022309F2 add r1, r4, #0 @@ -6448,7 +6448,7 @@ _02230A0C: ldr r0, [sp, #0x18] mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _02230A42 mov r0, #1 @@ -6458,7 +6458,7 @@ _02230A36: ldr r0, [sp, #0x18] mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x20] _02230A42: ldr r0, [sp, #0x20] @@ -6467,12 +6467,12 @@ _02230A42: ldr r0, [sp, #0x18] mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0 ldr r0, [sp, #0x18] mov r1, #0xa3 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r4, r0 beq _02230B14 ldr r0, [sp, #0x38] @@ -6491,14 +6491,14 @@ _02230A42: ldr r0, [sp, #0x18] mov r1, #0xa3 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x20] b _02230AC2 _02230A8C: ldr r0, [sp, #0x18] mov r1, #0xa3 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsr r0, r0, #1 str r0, [sp, #0x20] bne _02230AC2 @@ -6509,7 +6509,7 @@ _02230AA2: ldr r0, [sp, #0x18] mov r1, #0xa3 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x19 mul r1, r0 add r0, r1, #0 @@ -6572,7 +6572,7 @@ _02230B14: ldr r0, [sp, #0x18] mov r1, #9 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x64 bhs _02230B4A ldr r0, [sp, #0x14] @@ -6597,13 +6597,13 @@ _02230B4A: ldr r0, [sp, #0x18] mov r1, #9 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x64 blo _02230B8E ldr r0, [sp, #0x18] mov r1, #9 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0xc8 bhs _02230B8E ldr r0, [sp, #0x14] @@ -6628,7 +6628,7 @@ _02230B8E: ldr r0, [sp, #0x18] mov r1, #9 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0xc8 blo _02230BC4 ldr r0, [sp, #0x14] @@ -6649,7 +6649,7 @@ _02230BC4: ldr r0, [sp, #0x18] mov r1, #0x9a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0xb bne _02230BE0 ldr r0, [sp, #8] @@ -6659,7 +6659,7 @@ _02230BE0: ldr r0, [sp, #0x18] mov r1, #0x97 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0 ldr r0, [sp, #4] bl MOD11_022302B0 @@ -6672,7 +6672,7 @@ _02230BFC: ldr r0, [sp, #0x18] mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x20] ldr r0, [sp, #0x38] mov r1, #1 @@ -7102,7 +7102,7 @@ _02230EE4: mov r1, #0xad mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r1, r0, #0x10 mov r0, #0x67 @@ -7152,7 +7152,7 @@ _02230F4E: add r0, r6, #0 mov r1, #0x70 add r2, sp, #0 - bl SetMonDataEncrypted + bl SetMonData _02230F58: add r0, r5, #0 mov r1, #0 @@ -8141,7 +8141,7 @@ _02231606: add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x67 lsl r1, r1, #2 cmp r0, r1 @@ -12589,13 +12589,13 @@ _02233950: mov r1, #5 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022339B4 add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022339B4 add r0, r4, #0 @@ -12616,7 +12616,7 @@ _02233994: add r0, r6, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r1, r0, #0x10 add r0, r5, #0 @@ -18484,19 +18484,19 @@ _02236794: mov r1, #5 mov r2, #0 add r4, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022367C8 add r0, r4, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _022367C8 add r0, r4, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022367C8 add r7, r7, #1 @@ -18537,19 +18537,19 @@ _022367EA: add r1, r7, #0 mov r2, #0 add r4, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022367EA add r0, r4, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #1 beq _022367EA add r0, r4, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022367EA ldr r0, [sp] @@ -20636,26 +20636,26 @@ _022378A2: beq _02237900 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022378F8 add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022378F8 add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02237AAC ; =0x000001EE cmp r0, r1 beq _022378F8 add r0, r4, #0 mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02237900 _022378F8: @@ -20672,17 +20672,17 @@ _02237900: add r4, r0, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #4] add r0, r4, #0 mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0 add r0, r4, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0 ldr r0, [sp, #4] add r1, r6, #0 @@ -20818,26 +20818,26 @@ _02237A2A: beq _02237A9A mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02237A7C add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02237A7C add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02237AAC ; =0x000001EE cmp r0, r1 beq _02237A7C add r0, r4, #0 mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02237A9A _02237A7C: @@ -21174,13 +21174,13 @@ _02237D16: mov r1, #0xad mov r2, #0 str r0, [sp, #8] - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02237D7E ldr r0, [sp, #8] mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02237DBC ; =0x000001EE cmp r0, r1 beq _02237D7E @@ -21190,7 +21190,7 @@ _02237D4E: ldr r0, [sp, #8] add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r6, #0 @@ -23876,20 +23876,20 @@ _02239222: mov r1, #0xad mov r2, #0 add r4, r0, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r4, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #8] add r0, r4, #0 mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #4] @@ -23915,7 +23915,7 @@ _02239222: add r0, r4, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData sub r0, r0, #1 mov r1, #0xa bl _u32_div_f @@ -23939,7 +23939,7 @@ _022392AA: add r0, r4, #0 mov r1, #6 add r2, r5, r2 - bl SetMonDataEncrypted + bl SetMonData b _022392EC _022392C4: cmp r5, #0x62 @@ -23954,7 +23954,7 @@ _022392C4: add r0, r4, #0 mov r1, #6 add r2, r2, r3 - bl SetMonDataEncrypted + bl SetMonData b _022392EC _022392E2: add r1, r1, #1 @@ -23979,7 +23979,7 @@ _022392EC: mov r1, #0xa0 str r2, [sp, #0xc] mov r5, #0xa - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r1, r0, #0x18 cmp r1, #0xa @@ -24010,7 +24010,7 @@ _0223932E: add r0, r4, #0 mov r1, #6 add r2, sp, #0xc - bl SetMonDataEncrypted + bl SetMonData _02239350: ldr r0, [sp] mov r1, #0 @@ -25362,20 +25362,20 @@ _02239E2A: mov r1, #0xad mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02239E5C add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02239F48 ; =0x000001EE cmp r0, r1 beq _02239E5C add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r5, r5, r0 _02239E5C: add r0, r7, #0 @@ -25411,19 +25411,19 @@ _02239E90: mov r1, #0xad mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02239EC0 add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, r7 beq _02239EC0 add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r5, r5, r0 _02239EC0: ldr r0, [sp, #8] @@ -25458,20 +25458,20 @@ _02239EF8: mov r1, #0xad mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02239F2A add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02239F48 ; =0x000001EE cmp r0, r1 beq _02239F2A add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r5, r5, r0 _02239F2A: add r0, r7, #0 @@ -25807,12 +25807,12 @@ MOD11_0223A178: ; 0x0223A178 add r6, r0, #0 mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp] add r0, r6, #0 mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0 ldr r0, _0223A210 ; =0x00002D67 add r1, r5, r4 @@ -26642,7 +26642,7 @@ _0223A7D6: mov r1, #6 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 mov r1, #1 @@ -26746,7 +26746,7 @@ _0223A8B0: add r0, r6, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 mov r1, #1 @@ -26768,7 +26768,7 @@ _0223A8B0: add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0223A90E ldr r1, [r4, #4] @@ -26794,7 +26794,7 @@ _0223A90E: ldr r2, [sp, #0x34] add r0, r6, #0 mov r1, #0xa2 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0223A928 b _0223AA34 @@ -26802,7 +26802,7 @@ _0223A928: add r0, r6, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0x64 beq _0223AA34 ldr r0, [r4, #4] @@ -26861,7 +26861,7 @@ _0223A994: add r0, r6, #0 mov r1, #0xc mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _0223ABAC ; =0x020ECAC4 ldrb r1, [r1] cmp r1, r0 @@ -26888,7 +26888,7 @@ _0223A9D6: add r0, r6, #0 mov r1, #8 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x48] add r0, r6, #0 bl GetMonBaseExperienceAtCurrentLevel @@ -26914,7 +26914,7 @@ _0223AA0C: add r0, r6, #0 mov r1, #8 add r2, sp, #0x48 - bl SetMonDataEncrypted + bl SetMonData ldr r6, [r4, #4] ldr r0, [r4] add r1, r7, #0 @@ -27062,7 +27062,7 @@ _0223AB22: add r0, r6, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x30] mov r0, #5 mov r1, #0x18 @@ -27082,7 +27082,7 @@ _0223AB58: ldr r1, [r1, r2] add r0, r6, #0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x4c] lsl r2, r1, #2 ldr r1, [sp, #0x2c] @@ -27101,7 +27101,7 @@ _0223AB58: lsr r2, r2, #0x10 bl MonApplyFriendshipModEncrypted add r0, r6, #0 - bl CalcMonStatsMaybeEncrypted + bl CalcMonStats ldr r1, [r4, #4] ldr r0, _0223ABB0 ; =0x0000219C b _0223ABBC @@ -27324,7 +27324,7 @@ _0223AD30: ldr r1, [r1, r2] add r0, r6, #0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x28] lsl r2, r5, #2 ldr r1, [r1, r2] @@ -27390,7 +27390,7 @@ _0223ADEC: strb r0, [r5, #1] add r0, r6, #0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xb4] mov r0, #3 str r0, [sp, #0xcc] @@ -27838,7 +27838,7 @@ _0223B192: add r0, r6, #0 add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xb8] ldr r0, [r4] bl MOD11_02230E54 @@ -27897,7 +27897,7 @@ _0223B1F6: add r0, r6, #0 add r1, #0x3e add r2, sp, #0x4c - bl SetMonDataEncrypted + bl SetMonData ldr r1, [r4, #0x40] ldr r2, [r4, #0x44] lsl r1, r1, #0x10 @@ -27992,7 +27992,7 @@ MOD11_0223B2DC: ; 0x0223B2DC mov r1, #6 add r2, r4, #0 str r0, [sp, #0x14] - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r6, r0, #0x10 add r0, r6, #0 @@ -28015,7 +28015,7 @@ _0223B328: ldr r0, [sp, #0x14] add r1, #0xd mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0xc] strb r0, [r1] add r0, r1, #0 @@ -28183,7 +28183,7 @@ _0223B45A: str r0, [sp, #0x18] ldr r0, [sp, #0x14] add r1, #0xd - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x10] add r0, r0, #1 str r0, [sp, #0x10] @@ -28638,7 +28638,7 @@ _0223B83C: add r0, r6, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r0, #0 ldr r0, [r4] bl MOD11_02231668 @@ -29020,7 +29020,7 @@ _0223BB76: mov r1, #5 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData add r5, r0, #0 ldr r0, [r4] bl MOD11_02230E18 @@ -29058,7 +29058,7 @@ _0223BBEE: add r0, r6, #0 mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [r5, #8] ldr r0, [r4] bl MOD11_02230290 @@ -29066,7 +29066,7 @@ _0223BBEE: add r0, r6, #0 mov r1, #0x6f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [r5, #0x10] ldr r0, _0223BF18 ; =0x020FA5FC add r1, r5, #0 @@ -29102,7 +29102,7 @@ _0223BC38: bne _0223BC62 ldr r2, [r5, #0x18] mov r1, #0x77 - bl SetMonDataEncrypted + bl SetMonData _0223BC62: add r0, r5, #0 bl FUN_02077AC4 @@ -29204,13 +29204,13 @@ _0223BD3E: add r0, r6, #0 add r1, #0x42 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r5, #0 str r0, [sp, #0x2c] add r0, r6, #0 add r1, #0x3a add r2, sp, #0x2c - bl SetMonDataEncrypted + bl SetMonData add r5, r5, #1 cmp r5, #4 blt _0223BD3E @@ -31430,7 +31430,7 @@ MOD11_0223CDC4: ; 0x0223CDC4 ldr r0, [sp, #0x18] mov r1, #0xaf mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0223CF26 mov r0, #2 @@ -31439,7 +31439,7 @@ _0223CF26: ldr r0, [sp, #0x18] mov r1, #0x6f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData _0223CF30: cmp r0, #0 bne _0223CF42 @@ -31472,7 +31472,7 @@ _0223CF5C: ldr r0, [sp, #0x18] mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0 mov r0, #0 str r0, [sp] @@ -41623,20 +41623,20 @@ _02241DFE: mov r1, #0xad mov r2, #0 add r4, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02241E3E add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02241FCC ; =0x000001EE cmp r0, r1 beq _02241E3E add r0, r4, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02241E3E ldr r2, [sp, #8] @@ -41710,20 +41710,20 @@ _02241EB4: mov r1, #0xad mov r2, #0 add r4, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02241EE6 add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02241FCC ; =0x000001EE cmp r0, r1 beq _02241EE6 add r0, r4, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r7, r0 _02241EE6: add r0, r6, #0 @@ -41915,20 +41915,20 @@ _02242056: mov r1, #0xad mov r2, #0 add r5, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02242088 add r0, r5, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242340 ; =0x000001EE cmp r0, r1 beq _02242088 add r0, r5, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r7, r0 _02242088: add r0, r6, #0 @@ -41995,20 +41995,20 @@ _022420FE: mov r1, #0xad mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02242130 add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242340 ; =0x000001EE cmp r0, r1 beq _02242130 add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r5, r5, r0 _02242130: add r0, r7, #0 @@ -42030,19 +42030,19 @@ _0224214A: mov r1, #0xad mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0224217A add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, r7 beq _0224217A add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r5, r5, r0 _0224217A: ldr r0, [sp, #0x18] @@ -42099,20 +42099,20 @@ _022421DC: mov r1, #0xad mov r2, #0 add r5, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0224220E add r0, r5, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242340 ; =0x000001EE cmp r0, r1 beq _0224220E add r0, r5, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r7, r0 _0224220E: add r0, r6, #0 @@ -43364,41 +43364,41 @@ MOD11_02242B78: ; 0x02242B78 mov r1, #5 mov r2, #0 add r4, r0, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x18] mov r2, #0 strh r0, [r1, r5] add r0, r4, #0 mov r1, #0xa4 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242F4C ; =0x00002D42 add r2, r7, r5 strh r0, [r2, r1] add r0, r4, #0 mov r1, #0xa5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242F50 ; =0x00002D44 add r2, r7, r5 strh r0, [r2, r1] add r0, r4, #0 mov r1, #0xa6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242F54 ; =0x00002D46 add r2, r7, r5 strh r0, [r2, r1] add r0, r4, #0 mov r1, #0xa7 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242F58 ; =0x00002D48 add r2, r7, r5 strh r0, [r2, r1] add r0, r4, #0 mov r1, #0xa8 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r7, r5 ldr r2, _02242F5C ; =0x00002D4A str r1, [sp, #0xc] @@ -43412,7 +43412,7 @@ _02242C02: add r0, r4, #0 add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [sp, #0x14] ldr r1, _02242F60 ; =0x00002D4C strh r0, [r2, r1] @@ -43420,7 +43420,7 @@ _02242C02: add r0, r4, #0 add r1, #0x3a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [sp, #0x10] ldr r1, _02242F64 ; =0x00002D6C strb r0, [r2, r1] @@ -43428,7 +43428,7 @@ _02242C02: add r0, r4, #0 add r1, #0x3e mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [sp, #0x10] ldr r1, _02242F68 ; =0x00002D70 add r6, r6, #1 @@ -43447,7 +43447,7 @@ _02242C02: add r0, r4, #0 mov r1, #0x46 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [r6, r5] mov r2, #0x1f bic r1, r2 @@ -43458,7 +43458,7 @@ _02242C02: add r0, r4, #0 mov r1, #0x47 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x1b ldr r2, [r6, r5] ldr r1, _02242F6C ; =0xFFFFFC1F @@ -43469,7 +43469,7 @@ _02242C02: add r0, r4, #0 mov r1, #0x48 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x1b ldr r2, [r6, r5] ldr r1, _02242F70 ; =0xFFFF83FF @@ -43480,7 +43480,7 @@ _02242C02: add r0, r4, #0 mov r1, #0x49 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x1b ldr r2, [r6, r5] ldr r1, _02242F74 ; =0xFFF07FFF @@ -43491,7 +43491,7 @@ _02242C02: add r0, r4, #0 mov r1, #0x4a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x1b ldr r2, [r6, r5] ldr r1, _02242F78 ; =0xFE0FFFFF @@ -43502,7 +43502,7 @@ _02242C02: add r0, r4, #0 mov r1, #0x4b mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x1b ldr r2, [r6, r5] ldr r1, _02242F7C ; =0xC1FFFFFF @@ -43513,7 +43513,7 @@ _02242C02: add r0, r4, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [r6, r5] ldr r1, _02242F80 ; =0xBFFFFFFF lsl r0, r0, #0x1f @@ -43524,7 +43524,7 @@ _02242C02: add r0, r4, #0 mov r1, #0x4d mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [r6, r5] ldr r1, _02242F84 ; =0x7FFFFFFF lsl r0, r0, #0x1f @@ -43598,14 +43598,14 @@ _02242D2E: add r0, r4, #0 mov r1, #0xb0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242FA0 ; =0x00002D64 add r2, r7, r5 strb r0, [r2, r1] add r0, r4, #0 mov r1, #0xb1 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242FA4 ; =0x00002D65 add r2, r7, r5 strb r0, [r2, r1] @@ -43637,7 +43637,7 @@ _02242D2E: add r0, r4, #0 mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldrb r1, [r6, r5] mov r2, #0x1f lsl r0, r0, #0x18 @@ -43670,14 +43670,14 @@ _02242E24: add r0, r4, #0 mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242FAC ; =0x00002D67 add r2, r7, r5 strb r0, [r2, r1] add r0, r4, #0 mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242FB0 ; =0x00002DAC add r2, r7, r5 str r0, [r2, r1] @@ -43688,7 +43688,7 @@ _02242E24: add r0, r4, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r6, r5] _02242E58: ldr r0, [sp, #4] @@ -43698,56 +43698,56 @@ _02242E58: add r0, r4, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242FB4 ; =0x00002D74 add r2, r7, r6 strb r0, [r2, r1] add r0, r4, #0 mov r1, #9 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242FB8 ; =0x00002D75 add r2, r7, r6 strb r0, [r2, r1] add r0, r4, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242FBC ; =0x00002D8C add r2, r7, r6 str r0, [r2, r1] add r0, r4, #0 mov r1, #0xa3 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242FC0 ; =0x00002D90 add r2, r7, r6 str r0, [r2, r1] add r0, r4, #0 mov r1, #8 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242FC4 ; =0x00002DA4 add r2, r7, r6 str r0, [r2, r1] mov r1, #0 add r0, r4, #0 add r2, r1, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242FC8 ; =0x00002DA8 add r2, r7, r6 str r0, [r2, r1] add r0, r4, #0 mov r1, #7 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242FCC ; =0x00002DB4 add r2, r7, r6 str r0, [r2, r1] add r0, r4, #0 mov r1, #0x9c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x1c] lsl r0, r0, #0x18 lsr r0, r0, #0x18 @@ -43762,7 +43762,7 @@ _02242E58: strb r1, [r0, r5] add r0, r4, #0 mov r1, #0x9a - bl GetMonDataEncrypted + bl GetMonData ldr r1, _02242FD0 ; =0x00002DBF add r2, r7, r6 strb r0, [r2, r1] @@ -43788,13 +43788,13 @@ _02242E58: add r2, r7, r2 mov r1, #0x74 add r2, r2, r6 - bl GetMonDataEncrypted + bl GetMonData ldr r2, _02242FDC ; =0x00002D94 add r0, r4, #0 add r2, r7, r2 mov r1, #0x8f add r2, r2, r6 - bl GetMonDataEncrypted + bl GetMonData ldr r0, _02242FE0 ; =0x00002DBC b _02242FE4 .align 2, 0 @@ -43906,7 +43906,7 @@ MOD11_02243054: ; 0x02243054 mov r1, #0xa4 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [sp] ldr r1, [sp, #4] add r2, r2, r1 @@ -43915,7 +43915,7 @@ MOD11_02243054: ; 0x02243054 add r0, r6, #0 mov r1, #0xa5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [sp] ldr r1, [sp, #4] add r2, r2, r1 @@ -43924,7 +43924,7 @@ MOD11_02243054: ; 0x02243054 add r0, r6, #0 mov r1, #0xa6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [sp] ldr r1, [sp, #4] add r2, r2, r1 @@ -43933,7 +43933,7 @@ MOD11_02243054: ; 0x02243054 add r0, r6, #0 mov r1, #0xa7 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [sp] ldr r1, [sp, #4] add r2, r2, r1 @@ -43942,7 +43942,7 @@ MOD11_02243054: ; 0x02243054 add r0, r6, #0 mov r1, #0xa8 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [sp] ldr r1, [sp, #4] add r2, r2, r1 @@ -43951,7 +43951,7 @@ MOD11_02243054: ; 0x02243054 add r0, r6, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [sp] ldr r1, [sp, #4] add r2, r2, r1 @@ -43960,7 +43960,7 @@ MOD11_02243054: ; 0x02243054 add r0, r6, #0 mov r1, #9 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [sp] ldr r1, [sp, #4] add r2, r2, r1 @@ -43969,7 +43969,7 @@ MOD11_02243054: ; 0x02243054 add r0, r6, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [sp] ldr r1, [sp, #4] add r2, r2, r1 @@ -43978,7 +43978,7 @@ MOD11_02243054: ; 0x02243054 add r0, r6, #0 mov r1, #0xa3 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [sp] ldr r1, [sp, #4] add r2, r2, r1 @@ -44016,21 +44016,21 @@ _02243142: add r0, r6, #0 add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _022431CC ; =0x00002D4C mov r2, #0 strh r0, [r7, r1] add r1, r4, #0 add r0, r6, #0 add r1, #0x3a - bl GetMonDataEncrypted + bl GetMonData ldr r1, _022431D0 ; =0x00002D6C mov r2, #0 strb r0, [r5, r1] add r1, r4, #0 add r0, r6, #0 add r1, #0x3e - bl GetMonDataEncrypted + bl GetMonData ldr r1, _022431D4 ; =0x00002D70 strb r0, [r5, r1] _02243186: @@ -44042,7 +44042,7 @@ _02243186: add r0, r6, #0 mov r1, #8 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r2, [sp] ldr r1, [sp, #4] add r2, r2, r1 @@ -48649,7 +48649,7 @@ _022453A4: bl FUN_0206B9B0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022453BA add r6, r6, #1 @@ -48706,7 +48706,7 @@ _02245418: bl FUN_0206B9B0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0224542E add r6, r6, #1 @@ -52136,19 +52136,19 @@ _02246E76: mov r1, #5 mov r2, #0 add r4, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02246EB6 add r0, r4, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _02246EB6 add r0, r4, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02246EB6 ldr r0, [sp, #0xc] @@ -60443,7 +60443,7 @@ MOD11_0224AD38: ; 0x0224AD38 add r0, r6, #0 mov r1, #0x9a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0 b _0224AD7A _0224AD76: @@ -60552,17 +60552,17 @@ MOD11_0224AE14: ; 0x0224AE14 add r0, r5, #0 mov r1, #0x8f add r2, sp, #0 - bl GetMonDataEncrypted + bl GetMonData add r0, r5, #0 mov r1, #7 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r6, r0 bne _0224AE72 add r0, r5, #0 mov r1, #0x9c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r7, r0 bne _0224AE72 add r0, r4, #0 @@ -64908,13 +64908,13 @@ _0224CEE2: add r0, r7, #0 add r1, #0x36 add r2, r5, #0 - bl SetMonDataEncrypted + bl SetMonData ldr r2, [sp, #8] add r1, r4, #0 add r0, r7, #0 add r1, #0x3a add r2, r2, r4 - bl SetMonDataEncrypted + bl SetMonData _0224CF0C: add r4, r4, #1 add r5, r5, #2 @@ -64932,16 +64932,16 @@ _0224CF14: add r0, r7, #0 mov r1, #6 add r2, #0xc - bl SetMonDataEncrypted + bl SetMonData _0224CF30: add r0, r7, #0 mov r1, #0xa2 add r2, r6, #2 - bl SetMonDataEncrypted + bl SetMonData add r0, r7, #0 mov r1, #0x9f add r2, r6, #4 - bl SetMonDataEncrypted + bl SetMonData mov r2, #0x65 ldr r1, [sp, #4] lsl r2, r2, #2 @@ -65054,7 +65054,7 @@ _0224D00A: _0224D024: mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData _0224D02C: ldrh r1, [r4, #2] cmp r1, #0xd7 @@ -65066,7 +65066,7 @@ _0224D038: add r0, r6, #0 mov r1, #0x9f add r2, sp, #8 - bl SetMonDataEncrypted + bl SetMonData _0224D042: ldr r0, [sp, #4] add r5, r5, #1 @@ -65596,13 +65596,13 @@ _0224D466: mov r1, #5 mov r2, #0 add r4, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0224D4B4 add r0, r4, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0224D4B4 ldr r0, [sp] @@ -65613,7 +65613,7 @@ _0224D466: add r0, r4, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #8] add r0, r1, r0 str r0, [sp, #8] @@ -65622,7 +65622,7 @@ _0224D4A8: add r0, r4, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r7, r0 _0224D4B4: add r0, r6, #0 @@ -74596,7 +74596,7 @@ _02251CEC: mov r1, #0xa2 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [r4, #8] mov r2, #0 ldr r1, [r1, #4] @@ -74605,7 +74605,7 @@ _02251CEC: str r0, [r5, #0x28] add r0, r6, #0 mov r1, #0xa3 - bl GetMonDataEncrypted + bl GetMonData str r0, [r5, #0x2c] ldr r0, [r4, #8] mov r1, #0x9f @@ -74614,7 +74614,7 @@ _02251CEC: ldrh r0, [r0, #0x20] str r0, [r5, #0x30] add r0, r6, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _02251D72 add r0, r5, #0 @@ -74735,7 +74735,7 @@ _02251E2E: bl MOD11_02230014 mov r1, #0x9f add r2, r5, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _02251E6A ldr r0, [sp, #0x10] @@ -75527,7 +75527,7 @@ _022524D0: bl MOD11_02230014 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022524F2 ldrb r0, [r7, #0xc] @@ -81046,12 +81046,12 @@ MOD11_02255034: ; 0x02255034 add r6, r0, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x10] add r0, r6, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xc] mov r0, #0xc add r2, sp, #0x14 @@ -81287,7 +81287,7 @@ _0225523A: mov r1, #0xad mov r2, #0 add r4, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02255298 ldr r1, _02255500 ; =0x000001EE @@ -81296,13 +81296,13 @@ _0225523A: add r0, r4, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02255280 add r0, r4, #0 mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0225527A mov r0, #3 @@ -81388,7 +81388,7 @@ _02255304: mov r1, #0xad mov r2, #0 add r7, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02255350 ldr r1, _02255500 ; =0x000001EE @@ -81397,13 +81397,13 @@ _02255304: add r0, r7, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0225534A add r0, r7, #0 mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02255344 mov r0, #3 @@ -81464,7 +81464,7 @@ _022553A0: mov r1, #0xad mov r2, #0 add r7, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022553EC ldr r1, _02255500 ; =0x000001EE @@ -81473,13 +81473,13 @@ _022553A0: add r0, r7, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022553E6 add r0, r7, #0 mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022553E0 mov r0, #3 @@ -81530,7 +81530,7 @@ _02255428: mov r1, #0xad mov r2, #0 add r7, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02255474 ldr r1, _02255500 ; =0x000001EE @@ -81539,13 +81539,13 @@ _02255428: add r0, r7, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0225546E add r0, r7, #0 mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02255468 mov r0, #3 @@ -82376,12 +82376,12 @@ MOD11_02255A8C: ; 0x02255A8C add r4, r0, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 add r0, r4, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0 mov r0, #0x18 add r2, sp, #0xc @@ -82480,12 +82480,12 @@ MOD11_02255B68: ; 0x02255B68 add r6, r0, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 add r0, r6, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0 mov r1, #0x19 add r0, sp, #0xc @@ -83105,12 +83105,12 @@ MOD11_02256020: ; 0x02256020 add r6, r0, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xc] add r0, r6, #0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #8] mov r0, #0x26 add r2, sp, #0x10 @@ -84470,7 +84470,7 @@ _02256A80: mov r1, #0xad mov r2, #0 str r0, [sp, #0x14] - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02256AD2 ldr r1, _02256C04 ; =0x000001EE @@ -84479,13 +84479,13 @@ _02256A80: ldr r0, [sp, #0x14] mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02256ACA ldr r0, [sp, #0x14] mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02256AC2 add r1, r5, r4 @@ -84535,7 +84535,7 @@ _02256B02: mov r1, #0xad mov r2, #0 str r0, [sp, #0x18] - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02256B54 ldr r1, _02256C04 ; =0x000001EE @@ -84544,13 +84544,13 @@ _02256B02: ldr r0, [sp, #0x18] mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02256B4C ldr r0, [sp, #0x18] mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02256B44 add r1, r5, r4 @@ -84611,7 +84611,7 @@ _02256B9A: mov r1, #0xad mov r2, #0 str r0, [sp, #0x1c] - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02256BEC ldr r1, _02256C04 ; =0x000001EE @@ -84620,13 +84620,13 @@ _02256B9A: ldr r0, [sp, #0x1c] mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02256BE4 ldr r0, [sp, #0x1c] mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02256BDC add r1, r5, r4 diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s index 68dae7ae..6862284e 100644 --- a/arm9/modules/12/asm/module_12.s +++ b/arm9/modules/12/asm/module_12.s @@ -217,7 +217,7 @@ _0222D7BC: ldr r0, [r1, r0] add r1, r6, #0 add r1, #0x36 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5] add r6, r6, #1 add r5, r5, #2 @@ -975,7 +975,7 @@ _0222DE9E: ldr r0, [r1, r0] add r1, r4, #0 add r1, #0x36 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222DEBE mov r1, #0xb @@ -5972,7 +5972,7 @@ _0223072E: mov r1, #5 ldr r0, [r0, r6] mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData bl MOD12_0223EE70 add r1, r5, r4 add r4, r4, #1 @@ -7750,7 +7750,7 @@ _0223151C: ldr r0, [r4] mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r6, #0x64 add r5, r0, #0 add r0, r6, #0 @@ -7777,17 +7777,17 @@ _0223154E: ldr r0, [r4] mov r1, #0x13 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xc] ldr r0, [r4] mov r1, #0x17 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #8] ldr r0, [r4] mov r1, #0x14 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 add r0, r6, #0 add r0, #0xa0 @@ -7812,17 +7812,17 @@ _02231594: ldr r0, [r4] mov r1, #0x14 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xc] ldr r0, [r4] mov r1, #0x13 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #8] ldr r0, [r4] mov r1, #0x15 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 add r0, r6, #0 add r0, #0xa0 @@ -7847,17 +7847,17 @@ _022315DA: ldr r0, [r4] mov r1, #0x15 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xc] ldr r0, [r4] mov r1, #0x14 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #8] ldr r0, [r4] mov r1, #0x16 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 add r0, r6, #0 add r0, #0xa1 @@ -7882,17 +7882,17 @@ _02231620: ldr r0, [r4] mov r1, #0x16 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xc] ldr r0, [r4] mov r1, #0x15 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #8] ldr r0, [r4] mov r1, #0x17 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 add r0, r6, #0 add r0, #0xa2 @@ -7917,17 +7917,17 @@ _02231666: ldr r0, [r4] mov r1, #0x17 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xc] ldr r0, [r4] mov r1, #0x16 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #8] ldr r0, [r4] mov r1, #0x13 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 add r0, r6, #0 add r0, #0xa0 @@ -7954,7 +7954,7 @@ _022316B2: ldr r0, [r4] mov r1, #0x18 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #8] add r1, r1, r7 add r1, r0, r1 @@ -8951,7 +8951,7 @@ _02231E5E: ldr r0, [r0, r1] add r1, r4, #0 add r1, #0x36 - bl GetMonDataEncrypted + bl GetMonData lsl r1, r4, #1 add r2, sp, #0x3c strh r0, [r2, r1] @@ -9369,7 +9369,7 @@ _022321A6: ldr r0, [r1, r0] add r1, r5, #0 add r1, #0x36 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022321C8 ldr r0, _0223220C ; =0x000002E1 @@ -10201,7 +10201,7 @@ _022327EC: ldr r0, [r0, r1] add r1, r6, #0 add r1, #0x36 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5] add r6, r6, #1 add r5, r5, #2 @@ -11076,7 +11076,7 @@ _02232EB2: ldr r0, [r0, r1] add r1, r4, #0 add r1, #0x36 - bl GetMonDataEncrypted + bl GetMonData lsl r2, r4, #1 add r1, sp, #0x10 strh r0, [r1, r2] @@ -12221,7 +12221,7 @@ _022336D4: mov r1, #5 ldr r0, [r0, r4] mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData bl MOD08_0222A6C8 cmp r0, #1 bne _02233750 @@ -12296,7 +12296,7 @@ _0223377C: ldr r0, [r0] mov r2, #0 ldr r0, [r0, r4] - bl GetMonDataEncrypted + bl GetMonData bl MOD08_0222A6C8 cmp r0, #1 bne _022337E6 @@ -15395,7 +15395,7 @@ MOD12_02235038: ; 0x02235038 ldr r0, [r1, r0] ldr r2, [sp, #0x30] mov r1, #0x76 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [r5] ldr r0, _022350E8 ; =0x00000123 ldrb r0, [r1, r0] @@ -16862,12 +16862,12 @@ _02235B9C: ldr r0, [r6, r5] mov r1, #0xb0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 ldr r0, [r6, r5] mov r1, #0xb1 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r7, #7 beq _02235BBC cmp r0, #7 @@ -18438,7 +18438,7 @@ _02236736: lsl r0, r0, #2 ldr r0, [r1, r0] mov r1, #5 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0 ldr r0, [r4] mov r2, #0 @@ -18447,7 +18447,7 @@ _02236736: lsl r0, r0, #2 ldr r0, [r1, r0] mov r1, #0x6f - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 ldr r0, [r4] ldr r1, [r0, #0xc] @@ -18463,7 +18463,7 @@ _02236736: lsl r0, r0, #2 ldr r0, [r1, r0] mov r1, #0x70 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x1c] ldr r0, [r4] ldr r1, [r0, #0xc] @@ -18472,7 +18472,7 @@ _02236736: ldr r0, [r1, r0] mov r1, #0 add r2, r1, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #8] ldr r0, [r4] lsl r5, r5, #2 @@ -18480,14 +18480,14 @@ _02236736: mov r1, #5 ldr r0, [r0, r5] mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x18] ldr r0, [r4] mov r1, #0x6f ldr r0, [r0, #0xc] mov r2, #0 ldr r0, [r0, r5] - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x14] ldr r0, [r4] ldr r0, [r0, #0xc] @@ -18499,14 +18499,14 @@ _02236736: ldr r0, [r0, #0xc] mov r2, #0 ldr r0, [r0, r5] - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xc] ldr r0, [r4] mov r1, #0 ldr r0, [r0, #0xc] add r2, r1, #0 ldr r0, [r0, r5] - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #4] mov r2, #0x47 mov r0, #0 @@ -19010,7 +19010,7 @@ _02236BD0: lsl r0, r0, #2 ldr r0, [r2, r0] mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x10] ldr r0, _02236CF0 ; =0x000005DD bl FUN_020054C8 @@ -23971,7 +23971,7 @@ _02239080: ldr r0, [r0, r1] add r1, r4, #0 add r1, #0x36 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5] mov r0, #0x23 lsl r0, r0, #4 @@ -27801,7 +27801,7 @@ _0223AC68: lsl r0, r0, #2 ldr r0, [r1, r0] mov r1, #5 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0 mov r0, #0x7f str r0, [sp] @@ -43888,7 +43888,7 @@ _022428E6: str r0, [sp, #0x10] ldr r0, [r1, r0] mov r1, #0x76 - bl GetMonDataEncrypted + bl GetMonData add r0, r5, #1 lsl r0, r0, #4 str r0, [sp, #0x14] @@ -47346,7 +47346,7 @@ _022443A4: lsl r0, r0, #2 ldr r0, [r1, r0] mov r1, #5 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0 mov r0, #0x7f str r0, [sp] diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index 8fe02035..7b09367a 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -3868,7 +3868,7 @@ _021D9488: bl FUN_0206B5E4 mov r1, #0xab mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021D94AE mov r0, #0 @@ -4718,13 +4718,13 @@ _021D9B9E: add r0, r4, #0 mov r1, #0xac mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _021D9BD2 add r0, r4, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021D9BD2 add r5, r5, #1 @@ -5301,7 +5301,7 @@ _021DA042: mov r1, #0xab mov r2, #0 add r7, r0, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021DA080 ldr r4, _021DA164 ; =0x021E6224 @@ -5460,7 +5460,7 @@ MOD14_021DA168: ; 0x021DA168 add r0, r5, #0 mov r1, #0xac mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 bne _021DA1A8 mov r4, #0 @@ -5470,7 +5470,7 @@ _021DA18C: add r0, r5, #0 add r1, #0x36 add r2, r7, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r6, r0 bne _021DA1A2 mov r0, #1 @@ -8518,7 +8518,7 @@ _021DB998: beq _021DB9C4 mov r1, #0xab mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021DB9C4 mov r0, #1 @@ -8739,7 +8739,7 @@ _021DBB36: mov r1, #0xab mov r2, #0 str r0, [sp, #0x20] - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021DBB86 ldr r0, [sp, #0x20] @@ -9195,12 +9195,12 @@ MOD14_021DBEAC: ; 0x021DBEAC add r0, r5, #0 mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strh r0, [r4, #4] add r0, r5, #0 mov r1, #6 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strh r0, [r4, #6] mov r0, #0x47 lsl r0, r0, #2 @@ -9212,7 +9212,7 @@ MOD14_021DBEAC: ; 0x021DBEAC add r0, r5, #0 mov r1, #0xac mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strb r0, [r4, #0xf] ldrh r0, [r4, #4] mov r1, #9 @@ -9221,7 +9221,7 @@ MOD14_021DBEAC: ; 0x021DBEAC add r0, r5, #0 mov r1, #8 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r2, r0, #0 ldrh r1, [r4, #4] add r0, r7, #0 @@ -9230,17 +9230,17 @@ MOD14_021DBEAC: ; 0x021DBEAC add r0, r5, #0 mov r1, #0xb mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strb r0, [r4, #0xb] add r0, r5, #0 mov r1, #0xb0 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strb r0, [r4, #0xc] add r0, r5, #0 mov r1, #0xb1 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strb r0, [r4, #0xd] ldrb r0, [r4, #0xf] cmp r0, #0 @@ -9248,13 +9248,13 @@ MOD14_021DBEAC: ; 0x021DBEAC add r0, r5, #0 mov r1, #0xaf mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021DBF68 mov r1, #0 add r0, r5, #0 add r2, r1, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r2, r0, #0 ldrh r1, [r4, #4] add r0, r7, #0 @@ -9268,7 +9268,7 @@ _021DBF6C: ldr r2, [r4, #0x14] add r0, r5, #0 mov r1, #0x76 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldrb r0, [r4, #0xf] cmp r0, #0 bne _021DBF8C @@ -9302,7 +9302,7 @@ _021DBFAA: bl FUN_0200A8E0 _021DBFB8: add r0, r5, #0 - bl GetBoxMonNatureEncrypted + bl GetBoxMonNature add r1, r0, #0 mov r0, #0x65 lsl r0, r0, #2 @@ -9312,7 +9312,7 @@ _021DBFB8: add r0, r5, #0 mov r1, #0xa mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, r0, #0 mov r0, #0x66 lsl r0, r0, #2 @@ -9378,112 +9378,112 @@ _021DC034: ldr r0, [r5, r0] mov r1, #0xa3 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0xa] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0xa4 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0xc] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0xa5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0xe] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0xa7 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x10] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0xa8 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x12] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0xa6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x14] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0x13 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x16] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0x14 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x18] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0x15 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x1a] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0x16 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x1c] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0x17 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x1e] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x20] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0x37 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x22] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0x38 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x24] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0x39 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x26] mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r4, #7] mov r0, #0x1a lsl r0, r0, #4 @@ -9628,7 +9628,7 @@ _021DC254: ldr r0, [r4] mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r1, _021DC274 ; =0x000001ED cmp r0, r1 bne _021DC26A @@ -10215,7 +10215,7 @@ MOD14_021DC58C: ; 0x021DC58C ldr r0, [r5, #0x4c] add r1, r4, #0 add r2, r6, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData pop {r4, r5, r6, pc} _021DC5B2: ldrb r0, [r5, #0x1f] @@ -10224,13 +10224,13 @@ _021DC5B2: ldr r0, [r5, #0x4c] add r1, r4, #0 add r2, r6, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData pop {r4, r5, r6, pc} _021DC5C4: ldr r0, [r5, #0x4c] add r1, r4, #0 add r2, r6, #0 - bl GetMonDataEncrypted + bl GetMonData pop {r4, r5, r6, pc} thumb_func_start MOD14_021DC5D0 @@ -10245,13 +10245,13 @@ MOD14_021DC5D0: ; 0x021DC5D0 ldr r0, [r5, #0x4c] add r1, r4, #0 add r2, r6, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData pop {r4, r5, r6, pc} _021DC5EC: ldr r0, [r5, #8] add r1, r4, #0 add r2, r6, #0 - bl GetMonDataEncrypted + bl GetMonData pop {r4, r5, r6, pc} thumb_func_start MOD14_021DC5F8 @@ -14333,7 +14333,7 @@ _021DE5FE: mov r1, #0xab mov r2, #0 str r0, [sp, #0x34] - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021DE64E add r0, r4, #0 @@ -14434,7 +14434,7 @@ _021DE6D0: mov r1, #5 mov r2, #0 add r7, r0, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021DE70A ldr r1, _021DE724 ; =0x00005814 @@ -14908,7 +14908,7 @@ _021DEA70: mov r1, #0xab mov r2, #0 str r0, [sp, #0x20] - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021DEB02 ldrb r1, [r5, #2] @@ -15025,7 +15025,7 @@ _021DEB5C: mov r1, #5 mov r2, #0 str r0, [sp, #0x2c] - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _021DEBA0 add r0, r4, #0 @@ -18877,21 +18877,21 @@ MOD14_021E0940: ; 0x021E0940 add r0, r6, #0 mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x18] add r0, r6, #0 mov r1, #0x4c mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x14] add r0, r6, #0 mov r1, #0x70 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x18 lsr r7, r0, #0x18 add r0, r6, #0 @@ -18905,12 +18905,12 @@ MOD14_021E0940: ; 0x021E0940 add r0, r6, #0 mov r1, #6 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strh r0, [r4, #0x30] add r0, r6, #0 mov r1, #0xb mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strh r0, [r4, #0x2e] add r0, r4, #4 bl FUN_020B1A24 @@ -18992,14 +18992,14 @@ MOD14_021E0A60: ; 0x021E0A60 add r0, r6, #0 mov r1, #0x4c mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x10] add r0, r6, #0 mov r1, #0x70 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0xc] @@ -19023,12 +19023,12 @@ MOD14_021E0A60: ; 0x021E0A60 add r0, r6, #0 mov r1, #6 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strh r0, [r4, #0x30] add r0, r6, #0 mov r1, #0xb mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strh r0, [r4, #0x2e] add r0, r4, #4 bl FUN_020B1A24 @@ -21826,19 +21826,19 @@ _021E204A: add r0, r5, #0 mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r7, r0, #0 beq _021E20C8 add r0, r5, #0 mov r1, #0x4c mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 bne _021E209A add r0, r5, #0 mov r1, #0x70 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r1, r0, #0x10 add r0, r7, #0 diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s index 3191e90c..dfa30774 100644 --- a/arm9/modules/16/asm/module_16.s +++ b/arm9/modules/16/asm/module_16.s @@ -51043,7 +51043,7 @@ MOD16_021EEFA4: ; 0x021EEFA4 ldr r0, [r4, #0x10] mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x6f lsl r1, r1, #2 str r0, [r5, r1] @@ -55028,19 +55028,19 @@ _021F0E68: beq _021F0EB6 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F0EB6 add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F0EB6 add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _021F0ECC ; =0x000001EE cmp r0, r1 beq _021F0EB6 @@ -55578,26 +55578,26 @@ _021F128E: beq _021F12EA mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F12EA add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F12EA add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _021F1300 ; =0x000001EE cmp r0, r1 beq _021F12EA add r0, r4, #0 mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x10] tst r0, r1 beq _021F12EA @@ -55693,26 +55693,26 @@ _021F1382: beq _021F13DE mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F13DE add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F13DE add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _021F13F4 ; =0x000001EE cmp r0, r1 beq _021F13DE add r0, r4, #0 mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x10] tst r0, r1 bne _021F13DE @@ -57075,12 +57075,12 @@ _021F1E2C: beq _021F1E66 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 ldr r0, [sp, #0xc] mov r1, #0xa3 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r7, r0 beq _021F1E66 ldr r0, [sp] @@ -57149,13 +57149,13 @@ _021F1ED6: add r0, r5, #0 add r1, #0x3a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0 add r6, r0, #0 add r0, r5, #0 add r1, #0x42 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r6, r0 beq _021F1EFE ldr r0, [sp, #4] @@ -57555,19 +57555,19 @@ _021F21D8: mov r1, #0xa2 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F22A0 add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F22A0 add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _021F22C0 ; =0x000001EE cmp r0, r1 beq _021F22A0 @@ -57579,7 +57579,7 @@ _021F221E: add r0, r6, #0 add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5] add r4, r4, #1 add r5, r5, #2 @@ -57592,7 +57592,7 @@ _021F2238: add r0, r6, #0 add r1, #0x46 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r4] add r5, r5, #1 add r4, r4, #1 @@ -57601,12 +57601,12 @@ _021F2238: add r0, r6, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0 add r0, r6, #0 mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, sp, #0x44 str r1, [sp] lsl r1, r4, #0x10 @@ -60065,7 +60065,7 @@ _021F3486: add r0, r4, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r0, #0 lsl r1, r1, #0x10 add r0, r6, #0 @@ -60078,7 +60078,7 @@ _021F34A2: add r0, r4, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r0, #0 lsl r1, r1, #0x10 add r0, r6, #0 @@ -60166,32 +60166,32 @@ _021F3530: add r0, r4, #0 mov r1, #0x4b mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r5, r0, #0 add r0, r4, #0 mov r1, #0x4a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0 add r0, r4, #0 mov r1, #0x49 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 add r0, r4, #0 mov r1, #0x48 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #4] add r0, r4, #0 mov r1, #0x46 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #8] add r0, r4, #0 mov r1, #0x47 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r0, #0 lsl r2, r6, #0x1f lsl r0, r5, #0x1f @@ -60398,19 +60398,19 @@ _021F36EC: mov r1, #0xa2 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F37DE add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F37DE add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _021F3804 ; =0x000001EE cmp r0, r1 beq _021F37DE @@ -60426,7 +60426,7 @@ _021F3730: add r0, r6, #0 add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x1c] @@ -60444,7 +60444,7 @@ _021F3730: add r0, r6, #0 mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x30] add r0, r5, #0 add r1, r4, #0 @@ -60700,19 +60700,19 @@ _021F3956: mov r1, #0xa2 mov r2, #0 str r0, [sp, #0x50] - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F39BC ldr r0, [sp, #0x50] mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F39BC ldr r0, [sp, #0x50] mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _021F3B84 ; =0x000001EE cmp r0, r1 beq _021F39BC @@ -60750,7 +60750,7 @@ _021F39C2: ldr r0, [sp, #0x50] add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r7, r0, #0x10 ldr r0, [sp, #0x14] @@ -60780,7 +60780,7 @@ _021F39F2: ldr r0, [sp, #0x50] mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x70] add r0, r5, #0 add r1, r6, #0 @@ -60844,7 +60844,7 @@ _021F3A7E: ldr r0, [sp, #0x50] mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x80] add r0, r5, #0 add r1, r4, #0 @@ -60934,19 +60934,19 @@ _021F3B3C: mov r1, #0xa2 mov r2, #0 str r0, [sp, #0x20] - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F3BBE ldr r0, [sp, #0x20] mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F3BBE ldr r0, [sp, #0x20] mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _021F3B84 ; =0x000001EE cmp r0, r1 beq _021F3BBE @@ -60993,7 +60993,7 @@ _021F3BC4: ldr r0, [sp, #0x20] add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r7, r0, #0x10 ldr r0, [sp, #0x14] @@ -61023,7 +61023,7 @@ _021F3BF4: ldr r0, [sp, #0x20] mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x90] add r0, r5, #0 add r1, r6, #0 @@ -61089,7 +61089,7 @@ _021F3C82: ldr r0, [sp, #0x20] mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0xa0] add r0, r5, #0 add r1, r4, #0 @@ -61455,19 +61455,19 @@ _021F3F62: mov r1, #0xa2 mov r2, #0 add r4, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F3FE6 add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F3FE6 add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _021F3FFC ; =0x000001EE cmp r0, r1 beq _021F3FE6 @@ -61490,7 +61490,7 @@ _021F3F62: add r0, r4, #0 mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r1, r0, #0x18 ldr r0, [sp, #0x10] @@ -61608,19 +61608,19 @@ _021F4094: mov r1, #0xa2 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F40FA add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F40FA add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _021F4254 ; =0x000001EE cmp r0, r1 beq _021F40FA @@ -61669,12 +61669,12 @@ _021F40FC: add r0, r6, #0 mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x40] add r0, r6, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r0, #0 lsl r1, r1, #0x10 add r0, r5, #0 @@ -61685,12 +61685,12 @@ _021F40FC: add r0, r6, #0 mov r1, #0xb0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 add r0, r6, #0 mov r1, #0xb1 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [sp, #0x40] ldr r2, [sp, #0x38] str r1, [sp] @@ -61715,7 +61715,7 @@ _021F4182: add r0, r6, #0 add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x20] @@ -61733,7 +61733,7 @@ _021F4182: add r0, r6, #0 mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _021F425C ; =0x0000306C str r0, [sp, #0x4c] ldrh r1, [r4, r1] @@ -62080,19 +62080,19 @@ _021F445C: mov r1, #0xa2 mov r2, #0 add r4, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F44BA add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F44BA add r0, r4, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _021F4598 ; =0x000001EE cmp r0, r1 beq _021F44BA @@ -62308,7 +62308,7 @@ _021F462E: bl MOD11_02230014 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F4664 ldr r0, _021F4694 ; =0x0000219C @@ -62420,7 +62420,7 @@ _021F4704: mov r1, #0xad mov r2, #0 str r0, [sp, #0x68] - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r1, r0, #0x10 beq _021F47E0 @@ -62430,7 +62430,7 @@ _021F4704: ldr r0, [sp, #0x68] mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F47E0 add r0, r4, #0 @@ -62477,14 +62477,14 @@ _021F4704: ldr r0, [sp, #0x68] mov r1, #0xb0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x58] ldr r0, [sp, #0x68] mov r1, #0xb1 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x54] @@ -62542,7 +62542,7 @@ _021F480E: add r0, r4, #0 add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x3c] @@ -62560,7 +62560,7 @@ _021F480E: add r0, r4, #0 mov r1, #0xa mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x70] add r0, r5, #0 add r1, r6, #0 @@ -62648,7 +62648,7 @@ _021F48E0: mov r1, #0xad mov r2, #0 str r0, [sp, #0x1c] - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r1, r0, #0x10 beq _021F4900 @@ -62661,7 +62661,7 @@ _021F4902: ldr r0, [sp, #0x1c] mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F4A06 ldr r0, _021F4A20 ; =0x0000219C @@ -62703,7 +62703,7 @@ _021F4954: ldr r0, [sp, #0x1c] add r1, #0x36 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x8c] @@ -62876,19 +62876,19 @@ _021F4AA8: mov r1, #0xa2 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F4AE6 add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021F4AE6 add r0, r6, #0 mov r1, #0xad mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _021F4D70 ; =0x000001EE cmp r0, r1 beq _021F4AE6 diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s index 4f74dada..a9ad0efd 100644 --- a/arm9/modules/17/asm/module_17.s +++ b/arm9/modules/17/asm/module_17.s @@ -8856,7 +8856,7 @@ MOD17_021DB700: ; 0x021DB700 add r0, r4, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r0, r6, #0 add r1, r4, #0 mov r2, #2 diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s index 8b3921cf..58b7d707 100644 --- a/arm9/modules/27/asm/module_27.s +++ b/arm9/modules/27/asm/module_27.s @@ -313,27 +313,27 @@ _02254A62: add r0, r4, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #8] add r0, r4, #0 mov r1, #0xa2 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0xa] add r0, r4, #0 mov r1, #0xa3 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0xc] add r0, r4, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0xe] add r0, r4, #0 mov r1, #0x9f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02254ABC mov r0, #1 @@ -345,12 +345,12 @@ _02254ABE: add r0, r4, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r5, #0x12] add r0, r4, #0 mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r5, #0x13] add r0, r4, #0 add r1, r7, #0 diff --git a/arm9/modules/28/asm/module_28.s b/arm9/modules/28/asm/module_28.s index 89222d17..e4a0b678 100644 --- a/arm9/modules/28/asm/module_28.s +++ b/arm9/modules/28/asm/module_28.s @@ -86,18 +86,18 @@ _022548D6: mov r1, #0x4c mov r2, #0 add r5, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _02254962 add r0, r5, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0xc] add r0, r5, #0 mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x10] add r0, r5, #0 bl FUN_0206B688 @@ -105,7 +105,7 @@ _022548D6: add r0, r5, #0 mov r1, #9 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData bl MOD28_0225498C cmp r0, #6 bhi _02254944 diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s index d24971d9..5ef1d37f 100644 --- a/arm9/modules/35/asm/module_35.s +++ b/arm9/modules/35/asm/module_35.s @@ -338,12 +338,12 @@ _02254A7A: add r0, r4, #0 mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strh r0, [r6, #0x1c] add r0, r4, #0 mov r1, #0x70 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strh r0, [r6, #0x20] ldr r0, [sp, #8] bl MOD05_021EC7B4 diff --git a/arm9/modules/39/asm/module_39.s b/arm9/modules/39/asm/module_39.s index 0f1fecfb..863492a4 100644 --- a/arm9/modules/39/asm/module_39.s +++ b/arm9/modules/39/asm/module_39.s @@ -85,12 +85,12 @@ _022548CC: add r0, r7, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x1c] add r0, r7, #0 mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r5, #0x28] ldr r0, [sp, #4] str r7, [r4, #0x48] diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index 3abecf47..a4bf2048 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -225,13 +225,13 @@ _02211FA2: mov r1, #0xa2 mov r2, #0 add r6, r0, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _02211FC8 add r0, r6, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _02211FC8 add r5, r5, #1 @@ -2005,13 +2005,13 @@ _02212E52: mov r1, #5 mov r2, #0 add r7, r0, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [r5, #4] mov r2, #0 strh r0, [r1, r4] add r0, r7, #0 mov r1, #6 - bl GetMonDataEncrypted + bl GetMonData ldr r1, [r5, #4] add r6, r6, #1 add r1, r1, r4 diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s index 6fff3ef5..b187276b 100644 --- a/arm9/modules/62/asm/module_62.s +++ b/arm9/modules/62/asm/module_62.s @@ -2218,17 +2218,17 @@ _0222E5EC: add r0, r7, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x10] add r0, r7, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x14] add r0, r7, #0 mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r1, r0, #0 ldr r0, [sp, #0x10] ldr r2, [sp, #0x14] @@ -3004,7 +3004,7 @@ MOD62_0222EC54: ; 0x0222EC54 ldr r0, [r0, #4] mov r1, #0xa1 add r2, sp, #0xc - bl SetMonDataEncrypted + bl SetMonData _0222EC80: cmp r7, #0xff beq _0222EC9A @@ -3017,7 +3017,7 @@ _0222EC80: add r0, r1, r0 ldr r0, [r0, #4] mov r1, #0xa1 - bl SetMonDataEncrypted + bl SetMonData _0222EC9A: add r2, r5, #4 ldr r1, [r2, r6] @@ -4492,7 +4492,7 @@ _0222F83E: mov r1, #0x4c add r0, r7, #0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222F85C ldr r1, _0222F86C ; =0x00000428 @@ -5701,7 +5701,7 @@ MOD62_022301AC: ; 0x022301AC mov r1, #5 ldr r0, [r5, r0] mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0 ldr r0, _02230214 ; =0x00000428 mov r1, #2 @@ -5749,11 +5749,11 @@ MOD62_0223021C: ; 0x0223021C mov r1, #5 ldr r0, [r5, r0] mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r4, r0, #0 ldr r0, _02230268 ; =0x00000428 ldr r0, [r5, r0] - bl GetMonNatureEncrypted + bl GetMonNature add r6, r0, #0 mov r0, #0x6a lsl r0, r0, #2 @@ -6199,7 +6199,7 @@ _0223059A: str r0, [sp, #0x9c] ldr r0, _02230724 ; =0x00000428 ldr r0, [r4, r0] - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x8c] add r0, sp, #0x7c bl MOD08_02229918 @@ -6235,12 +6235,12 @@ _022305E2: mov r1, #0xa1 ldr r0, [r4, r0] add r2, sp, #0x18 - bl SetMonDataEncrypted + bl SetMonData ldr r0, _02230724 ; =0x00000428 mov r1, #0xaa ldr r0, [r4, r0] add r2, sp, #0x64 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0x35 add r1, sp, #0x58 bl MOD08_02228218 @@ -6396,7 +6396,7 @@ _0223072C: str r0, [sp, #0x50] ldr r0, [r4, r1] mov r1, #0x9a - bl GetMonDataEncrypted + bl GetMonData str r0, [sp, #0x40] add r0, sp, #0x30 bl MOD08_02229918 @@ -6531,7 +6531,7 @@ _02230860: add r2, r0, #0 add r0, r5, #0 mov r1, #0xaa - bl SetMonDataEncrypted + bl SetMonData _022308A8: mov r0, #0xf5 mov r1, #8 @@ -7091,7 +7091,7 @@ MOD62_02230D38: ; 0x02230D38 ldr r0, [r0, #4] mov r1, #0xa1 add r2, sp, #0 - bl SetMonDataEncrypted + bl SetMonData _02230D5C: mov r0, #0xff str r0, [r4, r6] diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s index 20b90cb6..c62ef6e6 100644 --- a/arm9/modules/65/asm/module_65.s +++ b/arm9/modules/65/asm/module_65.s @@ -3372,7 +3372,7 @@ MOD65_021D8F34: ; 0x021D8F34 str r0, [r4, #0x30] ldr r0, [r4, #0x10] ldr r0, [r0] - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #0x34] ldr r0, [r4, #0x10] ldr r0, [r0] @@ -3382,7 +3382,7 @@ MOD65_021D8F34: ; 0x021D8F34 strb r0, [r1] ldr r0, [r4, #0x10] ldr r0, [r0] - bl GetMonNatureEncrypted + bl GetMonNature add r1, r4, #0 add r1, #0x36 strb r0, [r1] @@ -3402,7 +3402,7 @@ MOD65_021D8F34: ; 0x021D8F34 ldr r2, [r4, #0x3c] ldr r0, [r0] mov r1, #0x76 - bl GetMonDataEncrypted + bl GetMonData add r1, r4, #0 ldr r0, [r4, #0x10] add r1, #0x36 diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s index c0a49cfe..2e724605 100644 --- a/arm9/modules/69/asm/module_69.s +++ b/arm9/modules/69/asm/module_69.s @@ -64,7 +64,7 @@ _0222D63A: bl FUN_0206B9B0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222D65E ldr r0, [r4, #4] @@ -1233,14 +1233,14 @@ _0222DF98: ldr r0, [sp, #0x2c] mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x81 lsl r1, r1, #2 str r0, [r5, r1] mov r1, #0 ldr r0, [sp, #0x2c] add r2, r1, #0 - bl GetMonDataEncrypted + bl GetMonData str r4, [sp] str r0, [sp, #4] mov r0, #1 @@ -1268,7 +1268,7 @@ _0222DF98: mov r1, #0 ldr r0, [sp, #0x2c] add r2, r1, #0 - bl GetMonDataEncrypted + bl GetMonData str r4, [sp] str r0, [sp, #4] mov r0, #1 @@ -2418,7 +2418,7 @@ _0222E982: ldr r0, [r5, #0x24] mov r1, #0x98 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0 ldr r0, [r5, #0x14] mov r1, #0 @@ -2480,7 +2480,7 @@ _0222E9FC: ldr r0, [r4, #0x24] ldr r2, [r4, #0x1c] mov r1, #0x76 - bl GetMonDataEncrypted + bl GetMonData add r0, r4, #0 mov r1, #0x48 bl MOD69_0222E89C @@ -4042,7 +4042,7 @@ MOD69_0222F6C4: ; 0x0222F6C4 add r0, r4, #0 mov r1, #0x79 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData sub r1, r0, #1 cmp r1, #2 bhi _0222F6E8 @@ -4063,7 +4063,7 @@ _0222F6FA: add r0, r4, #0 mov r1, #0x6e mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _0222F70C mov r5, #6 @@ -4075,7 +4075,7 @@ _0222F70C: add r0, r4, #0 mov r1, #7 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r7, r0 beq _0222F726 mov r5, #2 @@ -4089,7 +4089,7 @@ _0222F726: add r0, r4, #0 ldr r2, [r5, r2] mov r1, #0x90 - bl GetMonDataEncrypted + bl GetMonData ldr r1, _0222F788 ; =0x00001B54 ldr r0, [r5, r1] add r1, r1, #4 @@ -4103,7 +4103,7 @@ _0222F750: add r0, r4, #0 mov r1, #0x98 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r1, #0x7d lsl r1, r1, #4 cmp r0, r1 @@ -4114,7 +4114,7 @@ _0222F766: add r0, r4, #0 mov r1, #0x92 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222F778 mov r5, #0 diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s index ec5af814..6ab711fd 100644 --- a/arm9/modules/70/asm/module_70.s +++ b/arm9/modules/70/asm/module_70.s @@ -1562,7 +1562,7 @@ _021D80F4: ldr r0, [r7, r0] ldr r2, [sp, #0x1c] mov r1, #0x70 - bl SetMonDataEncrypted + bl SetMonData mov r1, #0x66 lsl r1, r1, #2 ldr r1, [r7, r1] diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index a6e576b3..3e877d49 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -1348,37 +1348,37 @@ MOD71_0222E118: ; 0x0222E118 add r0, r5, #0 mov r1, #0x9a mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r4, #4] add r0, r5, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4] add r0, r5, #0 mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r4, #6] add r0, r5, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strb r0, [r4, #5] add r0, r5, #0 mov r1, #0x6f mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData strh r0, [r4, #8] add r0, r5, #0 mov r1, #0xa1 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData str r0, [r4, #0xc] add r0, r5, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0 add r0, r5, #0 add r1, r7, #0 @@ -2647,12 +2647,12 @@ MOD71_0222EBFC: ; 0x0222EBFC mov r1, #0 add r0, r6, #0 add r2, r1, #0 - bl GetMonDataEncrypted + bl GetMonData add r7, r0, #0 add r0, r6, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r3, #0 str r3, [sp] mov r1, #0xa @@ -2697,7 +2697,7 @@ MOD71_0222EC5C: ; 0x0222EC5C bl FUN_0206B9B0 mov r1, #0x76 add r2, r4, #0 - bl GetMonDataEncrypted + bl GetMonData add r0, r5, #0 mov r1, #0 bl FUN_02019620 @@ -2731,7 +2731,7 @@ _0222ECB6: bl FUN_0206B9B0 mov r1, #0x4d mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _0222ECCE mov r0, #2 @@ -2932,7 +2932,7 @@ _0222EE14: bl FUN_0206B9B0 mov r1, #0xa0 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r1, r0, #0x10 mov r0, #1 @@ -2978,7 +2978,7 @@ _0222EEA6: bl FUN_0206B9B0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r5, #0x20 lsl r0, r0, #0x10 lsl r4, r5, #4 @@ -6338,7 +6338,7 @@ MOD71_022309E8: ; 0x022309E8 add r0, r4, #0 mov r1, #0x4c mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 bne _02230A40 mov r1, #0x46 @@ -6347,7 +6347,7 @@ MOD71_022309E8: ; 0x022309E8 add r0, r4, #0 mov r1, #9 add r2, sp, #0x10 - bl SetMonDataEncrypted + bl SetMonData _02230A40: bl FUN_02031190 bl FUN_0202DFA4 @@ -6427,7 +6427,7 @@ MOD71_02230AE4: ; 0x02230AE4 add r0, r4, #0 mov r1, #0x74 add r2, sp, #4 - bl GetMonDataEncrypted + bl GetMonData add r0, r5, #0 bl FUN_0202398C add r7, r0, #0 diff --git a/arm9/modules/76/asm/module_76.s b/arm9/modules/76/asm/module_76.s index 6f7aff75..e40f2c19 100644 --- a/arm9/modules/76/asm/module_76.s +++ b/arm9/modules/76/asm/module_76.s @@ -801,7 +801,7 @@ MOD76_021D7B2C: ; 0x021D7B2C ldr r0, [r1] ldrb r1, [r1, #0x17] add r1, #0x36 - bl SetMonDataEncrypted + bl SetMonData mov r0, #0 str r0, [sp] ldr r1, [r4] @@ -809,7 +809,7 @@ MOD76_021D7B2C: ; 0x021D7B2C ldr r0, [r1] ldrb r1, [r1, #0x17] add r1, #0x3e - bl SetMonDataEncrypted + bl SetMonData add r0, r4, #0 bl MOD76_021D8514 mov r1, #0 @@ -820,7 +820,7 @@ MOD76_021D7B2C: ; 0x021D7B2C ldr r0, [r1] ldrb r1, [r1, #0x17] add r1, #0x3a - bl SetMonDataEncrypted + bl SetMonData ldr r0, [r4] mov r1, #0 strb r1, [r0, #0x16] @@ -2028,7 +2028,7 @@ MOD76_021D8524: ; 0x021D8524 ldr r0, [r1] ldrb r1, [r1, #0x17] add r1, #0x36 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 pop {r3, pc} @@ -2131,7 +2131,7 @@ _021D85EC: ldr r0, [r0] add r1, #0x36 add r2, r6, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _021D8608 add r0, r4, #1 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index ca042f7e..4762946f 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -4855,7 +4855,7 @@ MOD80_0222FBC0: ; 0x0222FBC0 ldr r0, [sp, #0x48] ldr r2, [sp, #0x1c] mov r1, #0x76 - bl GetBoxMonDataEncrypted + bl GetBoxMonData mov r2, #0 ldrsh r0, [r4, r2] mov r1, #6 @@ -4866,7 +4866,7 @@ MOD80_0222FBC0: ; 0x0222FBC0 mov r0, #3 ldrsb r4, [r4, r0] ldr r0, [sp, #0x48] - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0x30] add r0, r5, #0 mov r1, #0x46 @@ -5058,12 +5058,12 @@ MOD80_0222FD88: ; 0x0222FD88 mov r1, #0 add r0, r5, #0 add r2, r1, #0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0 add r0, r5, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData mov r3, #0 str r3, [sp] mov r1, #0xa @@ -9979,7 +9979,7 @@ _022325CE: bl FUN_0206B9B0 mov r1, #0xa1 add r2, r4, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022325FE mov r0, #0xe @@ -10219,7 +10219,7 @@ _022327CE: bl FUN_0206B9B0 mov r1, #0xa1 add r2, r4, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 beq _022327FE mov r0, #0xb @@ -10836,34 +10836,34 @@ MOD80_02232C88: ; 0x02232C88 add r0, r5, #0 mov r1, #0xab mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0x1c] add r0, r5, #0 mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strh r0, [r6] add r0, r5, #0 mov r1, #0x70 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0x10] add r0, r5, #0 mov r1, #0x4c mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0x14] add r0, r5, #0 mov r1, #6 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0x18] ldrh r0, [r6] mov r1, #0x6f mov r2, #0 strh r0, [r4] add r0, r5, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r0, r0, #1 strb r0, [r4, #2] ldr r0, [sp, #0x14] @@ -11076,7 +11076,7 @@ _02232E4A: ldr r0, [sp, #0x24] mov r1, #0xa1 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r0, #0 ldr r0, _02232F90 ; =0x00000E54 beq _02232EB4 @@ -11274,7 +11274,7 @@ _02233028: ldrh r1, [r5] add r0, r7, #0 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r6, r6, #1 add r4, r4, r0 add r5, r5, #2 @@ -11305,7 +11305,7 @@ MOD80_02233054: ; 0x02233054 _02233062: mov r1, #0xab mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 bne _02233072 mov r0, #0 @@ -11314,7 +11314,7 @@ _02233072: add r0, r4, #0 mov r1, #0xac mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 beq _02233084 mov r0, #2 @@ -11386,13 +11386,13 @@ MOD80_022330E4: ; 0x022330E4 mov r1, #5 mov r2, #0 add r5, r0, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, sp, #0 strh r0, [r1] add r0, r5, #0 mov r1, #0x6f mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, r0, #1 add r0, sp, #0 strb r1, [r0, #2] @@ -11418,7 +11418,7 @@ MOD80_0223311C: ; 0x0223311C ldr r0, [r0] mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, sp, #0 strh r0, [r1, #6] add r0, r5, #0 @@ -11426,7 +11426,7 @@ MOD80_0223311C: ; 0x0223311C ldr r0, [r0] mov r1, #0x6f mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, r0, #1 add r0, sp, #0 strb r1, [r0, #8] @@ -11459,13 +11459,13 @@ MOD80_0223311C: ; 0x0223311C mov r1, #5 mov r2, #0 add r5, r0, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, sp, #0 strh r0, [r1] add r0, r5, #0 mov r1, #0x6f mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r0, r0, #1 add r1, sp, #0 strb r0, [r1, #2] @@ -11524,7 +11524,7 @@ MOD80_022331F8: ; 0x022331F8 push {r3, lr} mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_0206EA98 @@ -13374,11 +13374,11 @@ MOD80_022340DC: ; 0x022340DC ldr r0, [sp, #0xc] ldr r2, [sp, #0x18] mov r1, #0x76 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r0, [sp, #0xc] mov r1, #0x6f mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r6, r0, #1 ldr r0, [sp, #0xc] bl CalcBoxMonLevelEncrypted @@ -13467,7 +13467,7 @@ _022341CA: ldr r0, [sp, #0xc] mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData strh r0, [r7] ldr r0, [sp, #0x10] strb r6, [r7, #2] @@ -16152,7 +16152,7 @@ MOD80_022355F0: ; 0x022355F0 mov r1, #6 mov r2, #0 add r6, r3, #0 - bl GetMonDataEncrypted + bl GetMonData ldr r0, [r5] add r1, r4, #0 ldr r0, [r0, #0x20] @@ -16175,7 +16175,7 @@ _02235624: add r0, r4, #0 mov r1, #9 add r2, sp, #0 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [r5] ldr r0, [r0] bl MOD80_02235754 @@ -16258,7 +16258,7 @@ _022356D2: add r0, r4, #0 mov r1, #9 add r2, sp, #0 - bl SetMonDataEncrypted + bl SetMonData ldr r0, [sp, #0x20] cmp r0, #0x12 bne _02235706 @@ -16364,7 +16364,7 @@ MOD80_022357A0: ; 0x022357A0 add r0, r4, #0 mov r1, #0x74 add r2, sp, #4 - bl GetMonDataEncrypted + bl GetMonData add r0, r4, #0 bl GetMonGenderEncrypted add r3, r0, #0 @@ -17434,7 +17434,7 @@ _02235FDE: mov r1, #6 mov r2, #0 add r7, r0, #0 - bl GetMonDataEncrypted + bl GetMonData add r3, r0, #0 add r0, sp, #0x30 lsl r3, r3, #0x10 @@ -17502,30 +17502,30 @@ _02236068: add r0, r7, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r5, r0, #0 ldr r0, [sp, #0x20] mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 bne _022360B6 mov r1, #0 add r0, r7, #0 add r2, r1, #0 - bl GetMonDataEncrypted + bl GetMonData add r5, r0, #0 mov r1, #0 ldr r0, [sp, #0x20] add r2, r1, #0 - bl GetMonDataEncrypted + bl GetMonData cmp r5, r0 beq _02236126 _022360B6: add r0, r7, #0 mov r1, #6 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r3, r0, #0 add r0, sp, #0x2c lsl r3, r3, #0x10 diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s index 87239548..abe12301 100644 --- a/arm9/modules/81/asm/module_81.s +++ b/arm9/modules/81/asm/module_81.s @@ -136,7 +136,7 @@ _02237F22: mov r1, #5 ldr r0, [r0] mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData mov r1, #0x53 lsl r1, r1, #2 strh r0, [r4, r1] @@ -144,7 +144,7 @@ _02237F22: mov r1, #5 ldr r0, [r0, #4] mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r1, _02237FD8 ; =0x0000014E strh r0, [r4, r1] mov r0, #0 @@ -197,7 +197,7 @@ MOD81_02237FE8: ; 0x02237FE8 push {r3, lr} mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData mov r1, #0x1c bl GetMonBaseStat cmp r0, #0 @@ -1008,12 +1008,12 @@ _02238610: mov r1, #0 add r0, r4, #0 add r2, r1, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData str r0, [sp, #0x1c] add r0, r4, #0 mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 ldr r1, [sp, #0x58] lsr r0, r0, #0x10 @@ -2514,7 +2514,7 @@ _02239138: bl MOD81_02238818 mov r1, #0x4c mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 bne _0223918A ldr r0, [r4, #0x10] @@ -9501,7 +9501,7 @@ _0223C8D6: bl MOD81_02238820 mov r1, #0x4c mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0 bne _0223C902 ldr r0, [r4] diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 922e6bb5..21f1b081 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -21809,7 +21809,7 @@ MOD83_02237F04: ; 0x02237F04 add r0, r1, #0 mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r4, #0 @@ -22095,7 +22095,7 @@ _0223815E: add r0, r4, #0 add r1, #0x42 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData add r1, r5, #0 str r0, [sp, #8] add r0, r4, #0 @@ -22406,7 +22406,7 @@ _02238332: add r0, r4, #0 mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData cmp r0, #0xc9 bne _022384AE mov r1, #0 @@ -22441,7 +22441,7 @@ _022384AE: add r0, r4, #0 mov r1, #5 mov r2, #0 - bl GetBoxMonDataEncrypted + bl GetBoxMonData ldr r1, _022385F0 ; =0x00000182 cmp r0, r1 bne _022384FE @@ -23908,7 +23908,7 @@ MOD83_02238F94: ; 0x02238F94 mov r1, #0 ldr r0, [sp, #0x20] add r2, r1, #0 - bl GetMonDataEncrypted + bl GetMonData mov r3, #0 str r3, [sp] mov r1, #0xa @@ -24027,12 +24027,12 @@ _022390C2: add r0, r4, #0 mov r1, #5 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r6, r0, #0 add r0, r4, #0 mov r1, #0x70 mov r2, #0 - bl GetMonDataEncrypted + bl GetMonData add r2, r0, #0 mov r0, #0xe9 lsl r0, r0, #4 diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index c59cfe4e..9fd9de3b 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -7,11 +7,15 @@ #pragma thumb on -void MonEncryptSegment(void * datap, u32 size, u32 key, ...); -void MonDecryptSegment(void * datap, u32 size, u32 key, ...); +void MonEncryptSegment(void * datap, u32 size, u32 key); +void MonDecryptSegment(void * datap, u32 size, u32 key); u16 MonEncryptionLCRNG(u32 * seed); u16 CalcMonChecksum(void * datap, u32 size); void InitBoxMonMoveset(struct BoxPokemon * boxmon); +u32 GetMonDataInternal(struct Pokemon * pokemon, u32 attr, void * ptr); +u32 GetBoxMonDataInternal(struct BoxPokemon * pokemon, u32 attr, void * ptr); +void LoadMonBaseStats_HandleAlternateForme(u32 species, u32 forme, struct BaseStats * baseStats); +int ApplyNatureModToStat(u8 nature, u16 statval, u32 statno); #define ENCRY_ARGS_PTY(mon) &(mon)->party, sizeof((mon)->party), (mon)->box.pid #define ENCRY_ARGS_BOX(boxmon) &(boxmon)->substructs, sizeof((boxmon)->substructs), (boxmon)->checksum @@ -109,7 +113,7 @@ BOOL TryEncryptBoxMon(struct BoxPokemon * mon, BOOL decrypt_result) return ret; } -void CreateMon(struct Pokemon * pokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId, ...) +void CreateMon(struct Pokemon * pokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId) { struct SealStruct * seal; u32 capsule; @@ -119,18 +123,18 @@ void CreateMon(struct Pokemon * pokemon, int species, int level, int fixedIV, in // Not your average encryption call MonEncryptSegment(&pokemon->party, sizeof(pokemon->party), 0); ENCRYPT_PTY(pokemon); - SetMonDataEncrypted(pokemon, MON_DATA_LEVEL, &level); + SetMonData(pokemon, MON_DATA_LEVEL, &level); seal = CreateNewSealsObject(0); - SetMonDataEncrypted(pokemon, MON_DATA_SEAL_STRUCT, seal); + SetMonData(pokemon, MON_DATA_SEAL_STRUCT, seal); FreeToHeap(seal); capsule = 0; - SetMonDataEncrypted(pokemon, MON_DATA_CAPSULE, &capsule); + SetMonData(pokemon, MON_DATA_CAPSULE, &capsule); MIi_CpuClearFast(0, seal_coords, sizeof(seal_coords)); - SetMonDataEncrypted(pokemon, MON_DATA_SEAL_COORDS, seal_coords); - CalcMonStats(pokemon); + SetMonData(pokemon, MON_DATA_SEAL_COORDS, seal_coords); + CalcMonLevelAndStats(pokemon); } -void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId, ...) +void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId) { BOOL decry; u32 exp; @@ -257,3 +261,111 @@ u32 GenPersonalityByGenderAndNature(u16 species, u8 gender, u8 nature) } return (u32)pid; } + +void CreateMonWithFixedIVs(struct Pokemon * pokemon, int species, int level, int ivs, int personality) +{ + CreateMon(pokemon, species, level, 0, 1, personality, 0, 0); + SetMonData(pokemon, MON_DATA_IVS_WORD, &ivs); + CalcMonLevelAndStats(pokemon); +} + +void CalcMonLevelAndStats(struct Pokemon * pokemon) +{ + BOOL decry = TryDecryptMon(pokemon); + u32 level = CalcMonLevelEncrypted(pokemon); + SetMonData(pokemon, MON_DATA_LEVEL, &level); + CalcMonStats(pokemon); + TryEncryptMon(pokemon, decry); +} + +void CalcMonStats(struct Pokemon * pokemon) +{ + struct BaseStats * baseStats; + int level; + int maxHp; + int hpIv; + int hpEv; + int atkIv; + int defIv; + int speedIv; + int spatkIv; + int spdefIv; + int atkEv; + int defEv; + int speedEv; + int spatkEv; + int spdefEv; + int forme; + int hp; + int species; + int newMaxHp; + int newAtk; + int newDef; + int newSpeed; + int newSpatk; + int newSpdef; + BOOL decry = TryDecryptMon(pokemon); + level = (int)GetMonData(pokemon, MON_DATA_LEVEL, NULL); + maxHp = (int)GetMonData(pokemon, MON_DATA_MAXHP, NULL); + hp = (int)GetMonData(pokemon, MON_DATA_HP, NULL); + hpIv = (int)GetMonData(pokemon, MON_DATA_HP_IV, NULL); + hpEv = (int)GetMonData(pokemon, MON_DATA_HP_EV, NULL); + atkIv = (int)GetMonData(pokemon, MON_DATA_ATK_IV, NULL); + atkEv = (int)GetMonData(pokemon, MON_DATA_ATK_EV, NULL); + defIv = (int)GetMonData(pokemon, MON_DATA_DEF_IV, NULL); + defEv = (int)GetMonData(pokemon, MON_DATA_DEF_EV, NULL); + speedIv = (int)GetMonData(pokemon, MON_DATA_SPEED_IV, NULL); + speedEv = (int)GetMonData(pokemon, MON_DATA_SPEED_EV, NULL); + spatkIv = (int)GetMonData(pokemon, MON_DATA_SPATK_IV, NULL); + spatkEv = (int)GetMonData(pokemon, MON_DATA_SPATK_EV, NULL); + spdefIv = (int)GetMonData(pokemon, MON_DATA_SPDEF_IV, NULL); + spdefEv = (int)GetMonData(pokemon, MON_DATA_SPDEF_EV, NULL); + forme = (int)GetMonData(pokemon, MON_DATA_FORME, NULL); + species = (int)GetMonData(pokemon, MON_DATA_SPECIES, NULL); + + baseStats = (struct BaseStats *)AllocFromHeap(0, sizeof(struct BaseStats)); + LoadMonBaseStats_HandleAlternateForme(species, forme, baseStats); + + if (species == SPECIES_SHEDINJA) + newMaxHp = 1; + else + { + newMaxHp = (baseStats->hp * 2 + hpIv + hpEv / 4) * level / 100 + level + 10; + } + SetMonData(pokemon, MON_DATA_MAXHP, &newMaxHp); + + newAtk = (baseStats->atk * 2 + atkIv + atkEv / 4) * level / 100 + 5; + newAtk = ApplyNatureModToStat(GetMonNature(pokemon), newAtk, 1); + SetMonData(pokemon, MON_DATA_ATK, &newAtk); + + newDef = (baseStats->def * 2 + defIv + defEv / 4) * level / 100 + 5; + newDef = ApplyNatureModToStat(GetMonNature(pokemon), newDef, 2); + SetMonData(pokemon, MON_DATA_DEF, &newDef); + + newSpeed = (baseStats->speed * 2 + speedIv + speedEv / 4) * level / 100 + 5; + newSpeed = ApplyNatureModToStat(GetMonNature(pokemon), newSpeed, 3); + SetMonData(pokemon, MON_DATA_SPEED, &newSpeed); + + newSpatk = (baseStats->spatk * 2 + spatkIv + spatkEv / 4) * level / 100 + 5; + newSpatk = ApplyNatureModToStat(GetMonNature(pokemon), newSpatk, 4); + SetMonData(pokemon, MON_DATA_SPATK, &newSpatk); + + newSpdef = (baseStats->spdef * 2 + spdefIv + spdefEv / 4) * level / 100 + 5; + newSpdef = ApplyNatureModToStat(GetMonNature(pokemon), newSpdef, 5); + SetMonData(pokemon, MON_DATA_SPDEF, &newSpdef); + + FreeToHeap(baseStats); + + if (hp != 0 || maxHp == 0) + { + if (species == SPECIES_SHEDINJA) + hp = 1; + else if (hp == 0) + hp = newMaxHp; + else + hp += newMaxHp - maxHp; + } + if (hp != 0) + SetMonData(pokemon, MON_DATA_HP, &hp); + TryEncryptMon(pokemon, decry); +} diff --git a/include/pokemon.h b/include/pokemon.h index d5ab1fd9..3f5660e9 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -398,14 +398,19 @@ BOOL TryDecryptMon(struct Pokemon * mon); BOOL TryEncryptMon(struct Pokemon * mon, BOOL decrypt_result); BOOL TryDecryptBoxMon(struct BoxPokemon * mon); BOOL TryEncryptBoxMon(struct BoxPokemon * mon, BOOL decrypt_result); -void CreateMon(struct Pokemon * pokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId, ...); -void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId, ...); +void CreateMon(struct Pokemon * pokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId); +void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId); void CreateMonWithNature(struct Pokemon * pokemon, u16 species, u8 level, u8 fixedIv, u8 nature); void CreateMonWithGenderNatureLetter(struct Pokemon * pokemon, u16 species, u8 level, u8 fixedIv, u8 gender, u8 nature, u8 letter); -u8 GetNatureFromPersonality(u32 pid); -u8 GetGenderBySpeciesAndPersonality(u16 species, u32 pid); u32 GenPersonalityByGenderAndNature(u16 species, u8 gender, u8 nature); +void CreateMonWithFixedIVs(struct Pokemon * pokemon, int species, int level, int ivs, int personality); +void CalcMonLevelAndStats(struct Pokemon * pokemon); void CalcMonStats(struct Pokemon * pokemon); +u32 CalcMonLevelEncrypted(struct Pokemon * pokemon); +u8 GetBoxMonNature(struct BoxPokemon * boxmon); +u8 GetMonNature(struct Pokemon * mon); +u8 GetNatureFromPersonality(u32 pid); +u8 GetGenderBySpeciesAndPersonality(u16 species, u32 pid); u32 GetBoxMonGenderEncrypted(struct BoxPokemon * boxmon); int GetMonBaseStat_HandleFormeConversion(int species, int form, enum BaseStat stat_id); u32 GetMonBaseStat(int species, enum BaseStat stat_id); @@ -416,17 +421,13 @@ int CalcLevelBySpeciesAndExp(int species, int experience); #ifndef IN_POKEMON_C u32 GetMonData(); -u32 GetMonDataEncrypted(); u32 GetBoxMonData(); -u32 GetBoxMonDataEncrypted(); #else u32 GetMonData(struct Pokemon * pokemon, u32 attr, void * ptr); -u32 GetMonDataEncrypted(struct Pokemon * pokemon, u32 attr, void * ptr); u32 GetBoxMonData(struct BoxPokemon * pokemon, u32 attr, void * ptr); -u32 GetBoxMonDataEncrypted(struct BoxPokemon * pokemon, u32 attr, void * ptr); #endif +void SetMonDataInternal(struct Pokemon * pokemon, u32 attr, const void * ptr); void SetMonData(struct Pokemon * pokemon, u32 attr, const void * ptr); -void SetMonDataEncrypted(struct Pokemon * pokemon, u32 attr, const void * ptr); void SetBoxMonData(struct BoxPokemon * pokemon, u32 attr, const void * ptr); void SetBoxMonDataEncrypted(struct BoxPokemon * pokemon, u32 attr, const void * ptr); void AddMonData(struct Pokemon * pokemon, u32 attr, u32 amount); -- cgit v1.2.3 From 2d8d454dfe8691f4cd1077c50ab6f3c286c28ce1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Jun 2020 14:21:06 -0400 Subject: through GetBoxMonData --- arm9/asm/pokemon_s.s | 190 --------------------------------------------------- arm9/src/pokemon.c | 81 ++++++++++++++++++++++ include/pokemon.h | 11 +-- include/seals.h | 3 + 4 files changed, 86 insertions(+), 199 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index a7b3107c..ab47775b 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -116,196 +116,6 @@ UNK_021C5AC0: ; 0x021C5AC0 .text - thumb_func_start GetMonData -GetMonData: ; 0x020671BC - push {r4-r6, lr} - add r5, r0, #0x0 - ldrh r0, [r5, #0x4] - add r4, r1, #0x0 - add r6, r2, #0x0 - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - bne _02067204 - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonDecryptSegment - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - ldrh r1, [r5, #0x6] - cmp r0, r1 - beq _02067204 - cmp r0, r1 - beq _020671FC - bl ErrorHandling -_020671FC: - ldrh r1, [r5, #0x4] - mov r0, #0x4 - orr r0, r1 - strh r0, [r5, #0x4] -_02067204: - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl GetMonDataInternal - add r4, r0, #0x0 - ldrh r0, [r5, #0x4] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - bne _02067230 - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonEncryptSegment - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_02067230: - add r0, r4, #0x0 - pop {r4-r6, pc} - - thumb_func_start GetMonDataInternal -GetMonDataInternal: ; 0x02067234 - push {r3, lr} - add r3, r1, #0x0 - sub r3, #0x9f - cmp r3, #0xb - bhi _020672B6 - add r3, r3, r3 - add r3, pc - ldrh r3, [r3, #0x6] - lsl r3, r3, #0x10 - asr r3, r3, #0x10 - add pc, r3 -_0206724A: ; jump table (using 16-bit offset) - .short _02067262 - _0206724A - 2; case 0 - .short _02067268 - _0206724A - 2; case 1 - .short _0206726E - _0206724A - 2; case 2 - .short _02067274 - _0206724A - 2; case 3 - .short _0206727A - _0206724A - 2; case 4 - .short _02067280 - _0206724A - 2; case 5 - .short _02067286 - _0206724A - 2; case 6 - .short _0206728C - _0206724A - 2; case 7 - .short _02067292 - _0206724A - 2; case 8 - .short _02067298 - _0206724A - 2; case 9 - .short _0206729E - _0206724A - 2; case 10 - .short _020672AA - _0206724A - 2; case 11 -_02067262: - add r0, #0x88 - ldr r0, [r0, #0x0] - pop {r3, pc} -_02067268: - add r0, #0x8c - ldrb r0, [r0, #0x0] - pop {r3, pc} -_0206726E: - add r0, #0x8d - ldrb r0, [r0, #0x0] - pop {r3, pc} -_02067274: - add r0, #0x8e - ldrh r0, [r0, #0x0] - pop {r3, pc} -_0206727A: - add r0, #0x90 - ldrh r0, [r0, #0x0] - pop {r3, pc} -_02067280: - add r0, #0x92 - ldrh r0, [r0, #0x0] - pop {r3, pc} -_02067286: - add r0, #0x94 - ldrh r0, [r0, #0x0] - pop {r3, pc} -_0206728C: - add r0, #0x96 - ldrh r0, [r0, #0x0] - pop {r3, pc} -_02067292: - add r0, #0x98 - ldrh r0, [r0, #0x0] - pop {r3, pc} -_02067298: - add r0, #0x9a - ldrh r0, [r0, #0x0] - pop {r3, pc} -_0206729E: - add r0, #0x9c - add r1, r2, #0x0 - bl CopySealsObject - mov r0, #0x1 - pop {r3, pc} -_020672AA: - add r0, #0xd4 - add r1, r2, #0x0 - bl FUN_02029C74 - mov r0, #0x1 - pop {r3, pc} -_020672B6: - bl GetBoxMonDataInternal - pop {r3, pc} - - thumb_func_start GetBoxMonData -GetBoxMonData: ; 0x020672BC - push {r4-r6, lr} - add r5, r0, #0x0 - ldrh r0, [r5, #0x4] - add r4, r1, #0x0 - add r6, r2, #0x0 - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - bne _020672F8 - ldrh r2, [r5, #0x6] - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - ldrh r1, [r5, #0x6] - cmp r0, r1 - beq _020672F8 - cmp r0, r1 - beq _020672F0 - bl ErrorHandling -_020672F0: - ldrh r1, [r5, #0x4] - mov r0, #0x4 - orr r0, r1 - strh r0, [r5, #0x4] -_020672F8: - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl GetBoxMonDataInternal - add r4, r0, #0x0 - ldrh r0, [r5, #0x4] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - bne _02067318 - ldrh r2, [r5, #0x6] - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_02067318: - add r0, r4, #0x0 - pop {r4-r6, pc} - thumb_func_start GetBoxMonDataInternal GetBoxMonDataInternal: ; 0x0206731C push {r4-r7, lr} diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 9fd9de3b..7905046d 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -369,3 +369,84 @@ void CalcMonStats(struct Pokemon * pokemon) SetMonData(pokemon, MON_DATA_HP, &hp); TryEncryptMon(pokemon, decry); } + +u32 GetMonData(struct Pokemon * pokemon, u32 attr, void * dest) +{ + u32 ret; + u32 checksum; + if (!pokemon->box.party_lock) + { + DECRYPT_PTY(pokemon); + DECRYPT_BOX(&pokemon->box); + checksum = CalcMonChecksum(&pokemon->box.substructs, sizeof(pokemon->box.substructs)); + if (checksum != pokemon->box.checksum) + { + GF_ASSERT(checksum == pokemon->box.checksum); + pokemon->box.checksum_fail = TRUE; + } + } + ret = GetMonDataInternal(pokemon, attr, dest); + if (!pokemon->box.party_lock) + { + ENCRYPT_PTY(pokemon); + ENCRYPT_BOX(&pokemon->box); + } + return ret; +} + +u32 GetMonDataInternal(struct Pokemon * pokemon, u32 attr, void * dest) +{ + switch (attr) + { + case MON_DATA_STATUS: + return pokemon->party.status; + case MON_DATA_LEVEL: + return pokemon->party.level; + case MON_DATA_CAPSULE: + return pokemon->party.capsule; + case MON_DATA_HP: + return pokemon->party.hp; + case MON_DATA_MAXHP: + return pokemon->party.maxHp; + case MON_DATA_ATK: + return pokemon->party.atk; + case MON_DATA_DEF: + return pokemon->party.def; + case MON_DATA_SPEED: + return pokemon->party.speed; + case MON_DATA_SPATK: + return pokemon->party.spatk; + case MON_DATA_SPDEF: + return pokemon->party.spdef; + case MON_DATA_SEAL_STRUCT: + CopySealsObject(&pokemon->party.seal_something, dest); + return 1; + case MON_DATA_SEAL_COORDS: + FUN_02029C74(pokemon->party.sealCoords, dest); + return 1; + default: + return GetBoxMonDataInternal(&pokemon->box, attr, dest); + } +} + +u32 GetBoxMonData(struct BoxPokemon * boxmon, u32 attr, void * dest) +{ + u32 ret; + u32 checksum; + if (!boxmon->box_lock) + { + DECRYPT_BOX(boxmon); + checksum = CalcMonChecksum(&boxmon->substructs, sizeof(boxmon->substructs)); + if (checksum != boxmon->checksum) + { + GF_ASSERT(checksum == boxmon->checksum); + boxmon->checksum_fail = TRUE; + } + } + ret = GetBoxMonDataInternal(boxmon, attr, dest); + if (!boxmon->box_lock) + { + ENCRYPT_BOX(boxmon); + } + return ret; +} diff --git a/include/pokemon.h b/include/pokemon.h index 3f5660e9..e2a32e83 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -356,7 +356,7 @@ struct BoxPokemon { /* 0x000 */ u32 pid; /* 0x004 */ u16 party_lock:1; u16 box_lock:1; - u16 control_4_2:1; + u16 checksum_fail:1; u16 Unused:13; // Might be used for validity checks /* 0x006 */ u16 checksum; // Stored checksum of pokemon /* 0x008 */ PokemonDataBlock substructs[4]; @@ -364,14 +364,7 @@ struct BoxPokemon { struct PartyPokemon { - /* 0x088 */ u8 slp:3; - u8 psn:1; - u8 brn:1; - u8 frz:1; - u8 prz:1; - u8 tox:1; - /* 0x089 */ u8 unk89; - /* 0x08A */ u8 filler8A[2]; + /* 0x088 */ u32 status; // slp:3, psn:1, brn:1, frz:1, prz:1, tox:1, ... /* 0x08C */ u8 level; /* 0x08D */ u8 capsule; /* 0x08E */ u16 hp; diff --git a/include/seals.h b/include/seals.h index 89808176..fc0fc449 100644 --- a/include/seals.h +++ b/include/seals.h @@ -9,4 +9,7 @@ struct SealStruct struct SealStruct * CreateNewSealsObject(u32 heap_id); +void CopySealsObject(struct SealStruct *, struct SealStruct *); +void FUN_02029C74(u8 *, u8 *); + #endif //POKEDIAMOND_SEALS_H -- cgit v1.2.3 From 6e12ebdda862b77eb4d6afa6533e82373e5834ce Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Jun 2020 16:23:27 -0400 Subject: Transfer pokemon .rodata to C --- arm9/asm/pokemon_s.s | 102 +++------------------------------------------------ arm9/src/pokemon.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+), 97 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index ab47775b..0371e142 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -4,103 +4,11 @@ .extern gGameLanguage .extern gGameVersion - - .section .rodata - - .global sItemOdds -sItemOdds: ; 0x020F7ECC - .short 0x002D, 0x005F - .short 0x0014, 0x0050 - - .global sFriendshipModTable -sFriendshipModTable: ; 0x020F7ED4 - .byte 5, 3, 2 - .byte 5, 3, 2 - .byte 1, 1, 0 - .byte 3, 2, 1 - .byte 1, 1, 0 - .byte 1, 1, 1 - .byte -1, -1, -1 - .byte -5, -5, -10 - .byte -5, -5, -10 - .byte 3, 2, 1 - - .global sLegendaryMonsList -sLegendaryMonsList: ; 0x020F7EF2 - .short SPECIES_MEWTWO - .short SPECIES_MEW - .short SPECIES_HO_OH - .short SPECIES_LUGIA - .short SPECIES_CELEBI - .short SPECIES_KYOGRE - .short SPECIES_GROUDON - .short SPECIES_RAYQUAZA - .short SPECIES_JIRACHI - .short SPECIES_DEOXYS - .short SPECIES_DIALGA - .short SPECIES_PALKIA - .short SPECIES_GIRATINA - .short SPECIES_PHIONE - .short SPECIES_MANAPHY - .short SPECIES_DARKRAI - .short SPECIES_SHAYMIN - .short SPECIES_ARCEUS - - .global UNK_020F7F16 -UNK_020F7F16: ; 0x020F7F16 - .byte 0, 0, 0, 0, 0 - .byte 1, 0, 0, 0, -1 - .byte 1, 0, -1, 0, 0 - .byte 1, -1, 0, 0, 0 - .byte 1, 0, 0, -1, 0 - .byte -1, 0, 0, 0, 1 - .byte 0, 0, 0, 0, 0 - .byte 0, 0, -1, 0, 1 - .byte 0, -1, 0, 0, 1 - .byte 0, 0, 0, -1, 1 - .byte -1, 0, 1, 0, 0 - .byte 0, 0, 1, 0, -1 - .byte 0, 0, 0, 0, 0 - .byte 0, -1, 1, 0, 0 - .byte 0, 0, 1, -1, 0 - .byte -1, 1, 0, 0, 0 - .byte 0, 1, 0, 0, -1 - .byte 0, 1, -1, 0, 0 - .byte 0, 0, 0, 0, 0 - .byte 0, 1, 0, -1, 0 - .byte -1, 0, 0, 1, 0 - .byte 0, 0, 0, 1, -1 - .byte 0, 0, -1, 1, 0 - .byte 0, -1, 0, 1, 0 - .byte 0, 0, 0, 0, 0 - - .global sNatureStatMods -sNatureStatMods: ; 0x020F7F93 - .byte 0, 0, 0, 0, 0 - .byte 1, -1, 0, 0, 0 - .byte 1, 0, -1, 0, 0 - .byte 1, 0, 0, -1, 0 - .byte 1, 0, 0, 0, -1 - .byte -1, 1, 0, 0, 0 - .byte 0, 0, 0, 0, 0 - .byte 0, 1, -1, 0, 0 - .byte 0, 1, 0, -1, 0 - .byte 0, 1, 0, 0, -1 - .byte -1, 0, 1, 0, 0 - .byte 0, -1, 1, 0, 0 - .byte 0, 0, 0, 0, 0 - .byte 0, 0, 1, -1, 0 - .byte 0, 0, 1, 0, -1 - .byte -1, 0, 0, 1, 0 - .byte 0, -1, 0, 1, 0 - .byte 0, 0, -1, 1, 0 - .byte 0, 0, 0, 0, 0 - .byte 0, 0, 0, 1, -1 - .byte -1, 0, 0, 0, 1 - .byte 0, -1, 0, 0, 1 - .byte 0, 0, -1, 0, 1 - .byte 0, 0, 0, -1, 1 - .byte 0, 0, 0, 0, 0 + .extern sItemOdds + .extern sFriendshipModTable + .extern sLegendaryMonsList + .extern UNK_020F7F16 + .extern sNatureStatMods .section .data diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 7905046d..591bf401 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -31,6 +31,102 @@ int ApplyNatureModToStat(u8 nature, u16 statval, u32 statno); < 8u) #define CALC_UNOWN_LETTER(pid) ((u32)((((pid) & 0x3000000) >> 18) | (((pid) & 0x30000) >> 12) | (((pid) & 0x300) >> 6) | (((pid) & 0x3) >> 0)) % 28u) +const u16 sItemOdds[2][2] = { + { 45, 95 }, + { 20, 80 }, +}; + +const s8 sFriendshipModTable[][3] = { + { 5, 3, 2 }, + { 5, 3, 2 }, + { 1, 1, 0 }, + { 3, 2, 1 }, + { 1, 1, 0 }, + { 1, 1, 1 }, + { -1, -1, -1 }, + { -5, -5, -10 }, + { -5, -5, -10 }, + { 3, 2, 1 }, +}; + +const u16 sLegendaryMonsList[] = { + SPECIES_MEWTWO, + SPECIES_MEW, + SPECIES_HO_OH, + SPECIES_LUGIA, + SPECIES_CELEBI, + SPECIES_KYOGRE, + SPECIES_GROUDON, + SPECIES_RAYQUAZA, + SPECIES_JIRACHI, + SPECIES_DEOXYS, + SPECIES_DIALGA, + SPECIES_PALKIA, + SPECIES_GIRATINA, + SPECIES_PHIONE, + SPECIES_MANAPHY, + SPECIES_DARKRAI, + SPECIES_SHAYMIN, + SPECIES_ARCEUS, +}; + +const s8 UNK_020F7F16[][5] = { + // Atk, Def, Spd, SpA, SpD + { 0, 0, 0, 0, 0}, + { 1, 0, 0, 0, -1}, + { 1, 0, -1, 0, 0}, + { 1, -1, 0, 0, 0}, + { 1, 0, 0, -1, 0}, + { -1, 0, 0, 0, 1}, + { 0, 0, 0, 0, 0}, + { 0, 0, -1, 0, 1}, + { 0, -1, 0, 0, 1}, + { 0, 0, 0, -1, 1}, + { -1, 0, 1, 0, 0}, + { 0, 0, 1, 0, -1}, + { 0, 0, 0, 0, 0}, + { 0, -1, 1, 0, 0}, + { 0, 0, 1, -1, 0}, + { -1, 1, 0, 0, 0}, + { 0, 1, 0, 0, -1}, + { 0, 1, -1, 0, 0}, + { 0, 0, 0, 0, 0}, + { 0, 1, 0, -1, 0}, + { -1, 0, 0, 1, 0}, + { 0, 0, 0, 1, -1}, + { 0, 0, -1, 1, 0}, + { 0, -1, 0, 1, 0}, + { 0, 0, 0, 0, 0}, +}; + +const u8 sNatureStatMods[][5] = { + { 0, 0, 0, 0, 0 }, + { 1, -1, 0, 0, 0 }, + { 1, 0, -1, 0, 0 }, + { 1, 0, 0, -1, 0 }, + { 1, 0, 0, 0, -1 }, + { -1, 1, 0, 0, 0 }, + { 0, 0, 0, 0, 0 }, + { 0, 1, -1, 0, 0 }, + { 0, 1, 0, -1, 0 }, + { 0, 1, 0, 0, -1 }, + { -1, 0, 1, 0, 0 }, + { 0, -1, 1, 0, 0 }, + { 0, 0, 0, 0, 0 }, + { 0, 0, 1, -1, 0 }, + { 0, 0, 1, 0, -1 }, + { -1, 0, 0, 1, 0 }, + { 0, -1, 0, 1, 0 }, + { 0, 0, -1, 1, 0 }, + { 0, 0, 0, 0, 0 }, + { 0, 0, 0, 1, -1 }, + { -1, 0, 0, 0, 1 }, + { 0, -1, 0, 0, 1 }, + { 0, 0, -1, 0, 1 }, + { 0, 0, 0, -1, 1 }, + { 0, 0, 0, 0, 0 }, +}; + void ZeroMonData(struct Pokemon * pokemon) { MIi_CpuClearFast(0, pokemon, sizeof(struct Pokemon)); -- cgit v1.2.3 From 0747fe684c46d010d8917c4257dd1f1a52241385 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 12 Jun 2020 20:54:34 -0400 Subject: GetBoxMonDataInternal --- arm9/asm/pokemon_s.s | 725 ----------------------------------------- arm9/asm/unk_0206E5B4.s | 730 +++++++++++++++++++++++++++--------------- arm9/src/pokemon.c | 415 +++++++++++++++++++++++- arm9/src/string_util.c | 3 - include/constants/abilities.h | 129 ++++++++ include/move_data.h | 6 + include/pokemon.h | 123 +++++-- include/proto.h | 13 + include/string_util.h | 3 + include/text.h | 6 + 10 files changed, 1144 insertions(+), 1009 deletions(-) create mode 100644 include/constants/abilities.h create mode 100644 include/move_data.h create mode 100644 include/proto.h create mode 100644 include/text.h diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 0371e142..ecd0ba95 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -24,731 +24,6 @@ UNK_021C5AC0: ; 0x021C5AC0 .text - thumb_func_start GetBoxMonDataInternal -GetBoxMonDataInternal: ; 0x0206731C - push {r4-r7, lr} - sub sp, #0xc - str r1, [sp, #0x4] - add r1, r0, #0x0 - mov r4, #0x0 - str r2, [sp, #0x8] - ldr r1, [r1, #0x0] - str r0, [sp, #0x0] - add r2, r4, #0x0 - bl GetSubstruct - add r5, r0, #0x0 - - ldr r0, [sp, #0x0] - mov r2, #0x1 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r6, r0, #0x0 - - ldr r0, [sp, #0x0] - mov r2, #0x2 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r7, r0, #0x0 - - ldr r0, [sp, #0x0] - mov r2, #0x3 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r1, r0, #0x0 - - ldr r0, [sp, #0x4] - cmp r0, #0xb2 - bls _02067366 - b _020674D8 -_02067366: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02067372: ; jump table (using 16-bit offset) - .short _020674DC - _02067372 - 2; case 0 - .short _020674E2 - _02067372 - 2; case 1 - .short _020674EC - _02067372 - 2; case 2 - .short _020674F6 - _02067372 - 2; case 3 - .short _02067500 - _02067372 - 2; case 4 - .short _0206754C - _02067372 - 2; case 5 - .short _0206755E - _02067372 - 2; case 6 - .short _02067562 - _02067372 - 2; case 7 - .short _02067566 - _02067372 - 2; case 8 - .short _0206756A - _02067372 - 2; case 9 - .short _0206756E - _02067372 - 2; case 10 - .short _02067572 - _02067372 - 2; case 11 - .short _02067576 - _02067372 - 2; case 12 - .short _0206757A - _02067372 - 2; case 13 - .short _0206757E - _02067372 - 2; case 14 - .short _02067582 - _02067372 - 2; case 15 - .short _02067586 - _02067372 - 2; case 16 - .short _0206758A - _02067372 - 2; case 17 - .short _0206758E - _02067372 - 2; case 18 - .short _02067592 - _02067372 - 2; case 19 - .short _02067596 - _02067372 - 2; case 20 - .short _0206759A - _02067372 - 2; case 21 - .short _0206759E - _02067372 - 2; case 22 - .short _020675A2 - _02067372 - 2; case 23 - .short _020675A6 - _02067372 - 2; case 24 - .short _020675AA - _02067372 - 2; case 25 - .short _020675AA - _02067372 - 2; case 26 - .short _020675AA - _02067372 - 2; case 27 - .short _020675AA - _02067372 - 2; case 28 - .short _020675AA - _02067372 - 2; case 29 - .short _020675AA - _02067372 - 2; case 30 - .short _020675AA - _02067372 - 2; case 31 - .short _020675AA - _02067372 - 2; case 32 - .short _020675AA - _02067372 - 2; case 33 - .short _020675AA - _02067372 - 2; case 34 - .short _020675AA - _02067372 - 2; case 35 - .short _020675AA - _02067372 - 2; case 36 - .short _020675AA - _02067372 - 2; case 37 - .short _020675AA - _02067372 - 2; case 38 - .short _020675AA - _02067372 - 2; case 39 - .short _020675AA - _02067372 - 2; case 40 - .short _020675AA - _02067372 - 2; case 41 - .short _020675AA - _02067372 - 2; case 42 - .short _020675AA - _02067372 - 2; case 43 - .short _020675AA - _02067372 - 2; case 44 - .short _020675AA - _02067372 - 2; case 45 - .short _020675AA - _02067372 - 2; case 46 - .short _020675AA - _02067372 - 2; case 47 - .short _020675AA - _02067372 - 2; case 48 - .short _020675AA - _02067372 - 2; case 49 - .short _020675AA - _02067372 - 2; case 50 - .short _020675AA - _02067372 - 2; case 51 - .short _020675AA - _02067372 - 2; case 52 - .short _020675AA - _02067372 - 2; case 53 - .short _020675D0 - _02067372 - 2; case 54 - .short _020675D0 - _02067372 - 2; case 55 - .short _020675D0 - _02067372 - 2; case 56 - .short _020675D0 - _02067372 - 2; case 57 - .short _020675DC - _02067372 - 2; case 58 - .short _020675DC - _02067372 - 2; case 59 - .short _020675DC - _02067372 - 2; case 60 - .short _020675DC - _02067372 - 2; case 61 - .short _020675E8 - _02067372 - 2; case 62 - .short _020675E8 - _02067372 - 2; case 63 - .short _020675E8 - _02067372 - 2; case 64 - .short _020675E8 - _02067372 - 2; case 65 - .short _020675F4 - _02067372 - 2; case 66 - .short _020675F4 - _02067372 - 2; case 67 - .short _020675F4 - _02067372 - 2; case 68 - .short _020675F4 - _02067372 - 2; case 69 - .short _0206760C - _02067372 - 2; case 70 - .short _02067614 - _02067372 - 2; case 71 - .short _0206761C - _02067372 - 2; case 72 - .short _02067624 - _02067372 - 2; case 73 - .short _0206762C - _02067372 - 2; case 74 - .short _02067634 - _02067372 - 2; case 75 - .short _0206763C - _02067372 - 2; case 76 - .short _0206764E - _02067372 - 2; case 77 - .short _02067654 - _02067372 - 2; case 78 - .short _02067654 - _02067372 - 2; case 79 - .short _02067654 - _02067372 - 2; case 80 - .short _02067654 - _02067372 - 2; case 81 - .short _02067654 - _02067372 - 2; case 82 - .short _02067654 - _02067372 - 2; case 83 - .short _02067654 - _02067372 - 2; case 84 - .short _02067654 - _02067372 - 2; case 85 - .short _02067654 - _02067372 - 2; case 86 - .short _02067654 - _02067372 - 2; case 87 - .short _02067654 - _02067372 - 2; case 88 - .short _02067654 - _02067372 - 2; case 89 - .short _02067654 - _02067372 - 2; case 90 - .short _02067654 - _02067372 - 2; case 91 - .short _02067654 - _02067372 - 2; case 92 - .short _02067654 - _02067372 - 2; case 93 - .short _02067654 - _02067372 - 2; case 94 - .short _02067654 - _02067372 - 2; case 95 - .short _02067654 - _02067372 - 2; case 96 - .short _02067654 - _02067372 - 2; case 97 - .short _02067654 - _02067372 - 2; case 98 - .short _02067654 - _02067372 - 2; case 99 - .short _02067654 - _02067372 - 2; case 100 - .short _02067654 - _02067372 - 2; case 101 - .short _02067654 - _02067372 - 2; case 102 - .short _02067654 - _02067372 - 2; case 103 - .short _02067654 - _02067372 - 2; case 104 - .short _02067654 - _02067372 - 2; case 105 - .short _02067654 - _02067372 - 2; case 106 - .short _02067654 - _02067372 - 2; case 107 - .short _02067654 - _02067372 - 2; case 108 - .short _02067654 - _02067372 - 2; case 109 - .short _0206767C - _02067372 - 2; case 110 - .short _02067684 - _02067372 - 2; case 111 - .short _0206768C - _02067372 - 2; case 112 - .short _02067694 - _02067372 - 2; case 113 - .short _02067698 - _02067372 - 2; case 114 - .short _020674D8 - _02067372 - 2; case 115 - .short _0206769C - _02067372 - 2; case 116 - .short _020674D8 - _02067372 - 2; case 117 - .short _020676D0 - _02067372 - 2; case 118 - .short _020676CC - _02067372 - 2; case 119 - .short _020676FE - _02067372 - 2; case 120 - .short _02067702 - _02067372 - 2; case 121 - .short _02067706 - _02067372 - 2; case 122 - .short _02067706 - _02067372 - 2; case 123 - .short _02067706 - _02067372 - 2; case 124 - .short _02067706 - _02067372 - 2; case 125 - .short _02067706 - _02067372 - 2; case 126 - .short _02067706 - _02067372 - 2; case 127 - .short _02067706 - _02067372 - 2; case 128 - .short _02067706 - _02067372 - 2; case 129 - .short _02067706 - _02067372 - 2; case 130 - .short _02067706 - _02067372 - 2; case 131 - .short _02067706 - _02067372 - 2; case 132 - .short _02067706 - _02067372 - 2; case 133 - .short _02067706 - _02067372 - 2; case 134 - .short _02067706 - _02067372 - 2; case 135 - .short _02067706 - _02067372 - 2; case 136 - .short _02067706 - _02067372 - 2; case 137 - .short _02067706 - _02067372 - 2; case 138 - .short _02067706 - _02067372 - 2; case 139 - .short _02067706 - _02067372 - 2; case 140 - .short _02067706 - _02067372 - 2; case 141 - .short _02067706 - _02067372 - 2; case 142 - .short _0206772C - _02067372 - 2; case 143 - .short _02067746 - _02067372 - 2; case 144 - .short _0206774E - _02067372 - 2; case 145 - .short _02067752 - _02067372 - 2; case 146 - .short _02067756 - _02067372 - 2; case 147 - .short _0206775A - _02067372 - 2; case 148 - .short _0206775E - _02067372 - 2; case 149 - .short _02067762 - _02067372 - 2; case 150 - .short _02067766 - _02067372 - 2; case 151 - .short _0206776A - _02067372 - 2; case 152 - .short _0206776E - _02067372 - 2; case 153 - .short _02067772 - _02067372 - 2; case 154 - .short _02067776 - _02067372 - 2; case 155 - .short _0206777E - _02067372 - 2; case 156 - .short _02067786 - _02067372 - 2; case 157 - .short _0206778A - _02067372 - 2; case 158 - .short _020674D8 - _02067372 - 2; case 159 - .short _02067540 - _02067372 - 2; case 160 - .short _020674D8 - _02067372 - 2; case 161 - .short _020674D8 - _02067372 - 2; case 162 - .short _020674D8 - _02067372 - 2; case 163 - .short _020674D8 - _02067372 - 2; case 164 - .short _020674D8 - _02067372 - 2; case 165 - .short _020674D8 - _02067372 - 2; case 166 - .short _020674D8 - _02067372 - 2; case 167 - .short _020674D8 - _02067372 - 2; case 168 - .short _020674D8 - _02067372 - 2; case 169 - .short _020674D8 - _02067372 - 2; case 170 - .short _02067506 - _02067372 - 2; case 171 - .short _02067510 - _02067372 - 2; case 172 - .short _02067522 - _02067372 - 2; case 173 - .short _0206778E - _02067372 - 2; case 174 - .short _020677C0 - _02067372 - 2; case 175 - .short _020677D8 - _02067372 - 2; case 176 - .short _020677D8 - _02067372 - 2; case 177 - .short _02067810 - _02067372 - 2; case 178 -_020674D8: - mov r4, #0x0 - b _0206781A -_020674DC: - ldr r0, [sp, #0x0] - ldr r4, [r0, #0x0] - b _0206781A -_020674E2: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1f - lsr r4, r0, #0x1f - b _0206781A -_020674EC: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1e - lsr r4, r0, #0x1f - b _0206781A -_020674F6: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r4, r0, #0x1f - b _0206781A -_02067500: - ldr r0, [sp, #0x0] - ldrh r4, [r0, #0x6] - b _0206781A -_02067506: - ldrh r0, [r5, #0x0] - cmp r0, #0x0 - beq _0206753A - mov r4, #0x1 - b _0206781A -_02067510: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r4, r0, #0x1f - bne _0206753A - ldr r0, [r6, #0x10] - lsl r0, r0, #0x1 - lsr r4, r0, #0x1f - b _0206781A -_02067522: - ldrh r4, [r5, #0x0] - cmp r4, #0x0 - beq _0206753A - ldr r0, [r6, #0x10] - lsl r0, r0, #0x1 - lsr r0, r0, #0x1f - bne _0206753C - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - bne _0206753C -_0206753A: - b _0206781A -_0206753C: - ldr r4, _02067820 ; =SPECIES_EGG - b _0206781A -_02067540: - ldrh r0, [r5, #0x0] - ldr r1, [r5, #0x8] - bl CalcLevelBySpeciesAndExp - add r4, r0, #0x0 - b _0206781A -_0206754C: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - beq _0206755A - ldr r4, _02067820 ; =SPECIES_EGG - b _0206781A -_0206755A: - ldrh r4, [r5, #0x0] - b _0206781A -_0206755E: - ldrh r4, [r5, #0x2] - b _0206781A -_02067562: - ldr r4, [r5, #0x4] - b _0206781A -_02067566: - ldr r4, [r5, #0x8] - b _0206781A -_0206756A: - ldrb r4, [r5, #0xc] - b _0206781A -_0206756E: - ldrb r4, [r5, #0xd] - b _0206781A -_02067572: - ldrb r4, [r5, #0xe] - b _0206781A -_02067576: - ldrb r4, [r5, #0xf] - b _0206781A -_0206757A: - ldrb r4, [r5, #0x10] - b _0206781A -_0206757E: - ldrb r4, [r5, #0x11] - b _0206781A -_02067582: - ldrb r4, [r5, #0x12] - b _0206781A -_02067586: - ldrb r4, [r5, #0x13] - b _0206781A -_0206758A: - ldrb r4, [r5, #0x14] - b _0206781A -_0206758E: - ldrb r4, [r5, #0x15] - b _0206781A -_02067592: - ldrb r4, [r5, #0x16] - b _0206781A -_02067596: - ldrb r4, [r5, #0x17] - b _0206781A -_0206759A: - ldrb r4, [r5, #0x18] - b _0206781A -_0206759E: - ldrb r4, [r5, #0x19] - b _0206781A -_020675A2: - ldrb r4, [r5, #0x1a] - b _0206781A -_020675A6: - ldrb r4, [r5, #0x1b] - b _0206781A -_020675AA: - ldr r2, [sp, #0x4] - mov r0, #0x1 - sub r2, #0x19 - add r1, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - ldr r2, [r5, #0x1c] - add r3, r4, #0x0 - and r3, r1 - and r2, r0 - mov r1, #0x0 - mov r0, #0x0 - eor r1, r3 - eor r0, r2 - orr r0, r1 - beq _02067676 - mov r4, #0x1 - b _0206781A -_020675D0: - ldr r0, [sp, #0x4] - sub r0, #0x36 - str r0, [sp, #0x4] - lsl r0, r0, #0x1 - ldrh r4, [r6, r0] - b _0206781A -_020675DC: - ldr r0, [sp, #0x4] - sub r0, #0x3a - str r0, [sp, #0x4] - add r0, r6, r0 - ldrb r4, [r0, #0x8] - b _0206781A -_020675E8: - ldr r0, [sp, #0x4] - sub r0, #0x3e - str r0, [sp, #0x4] - add r0, r6, r0 - ldrb r4, [r0, #0xc] - b _0206781A -_020675F4: - ldr r0, [sp, #0x4] - sub r0, #0x42 - str r0, [sp, #0x4] - ldr r1, [sp, #0x4] - lsl r0, r0, #0x1 - add r1, r6, r1 - ldrh r0, [r6, r0] - ldrb r1, [r1, #0xc] - bl FUN_0206AB30 - add r4, r0, #0x0 - b _0206781A -_0206760C: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x1b - lsr r4, r0, #0x1b - b _0206781A -_02067614: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x16 - lsr r4, r0, #0x1b - b _0206781A -_0206761C: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x11 - lsr r4, r0, #0x1b - b _0206781A -_02067624: - ldr r0, [r6, #0x10] - lsl r0, r0, #0xc - lsr r4, r0, #0x1b - b _0206781A -_0206762C: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x7 - lsr r4, r0, #0x1b - b _0206781A -_02067634: - ldr r0, [r6, #0x10] - lsl r0, r0, #0x2 - lsr r4, r0, #0x1b - b _0206781A -_0206763C: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r4, r0, #0x1f - bne _02067676 - ldr r0, [r6, #0x10] - lsl r0, r0, #0x1 - lsr r4, r0, #0x1f - b _0206781A -_0206764E: - ldr r0, [r6, #0x10] - lsr r4, r0, #0x1f - b _0206781A -_02067654: - ldr r2, [sp, #0x4] - mov r0, #0x1 - sub r2, #0x4e - add r1, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - ldr r2, [r6, #0x14] - add r3, r4, #0x0 - and r3, r1 - and r2, r0 - mov r1, #0x0 - mov r0, #0x0 - eor r1, r3 - eor r0, r2 - orr r0, r1 - bne _02067678 -_02067676: - b _0206781A -_02067678: - mov r4, #0x1 - b _0206781A -_0206767C: - ldrb r0, [r6, #0x18] - lsl r0, r0, #0x1f - lsr r4, r0, #0x1f - b _0206781A -_02067684: - ldrb r0, [r6, #0x18] - lsl r0, r0, #0x1d - lsr r4, r0, #0x1e - b _0206781A -_0206768C: - ldrb r0, [r6, #0x18] - lsl r0, r0, #0x18 - lsr r4, r0, #0x1b - b _0206781A -_02067694: - ldrb r4, [r6, #0x19] - b _0206781A -_02067698: - ldrh r4, [r6, #0x1a] - b _0206781A -_0206769C: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - beq _020676B2 - ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG - ldr r2, [sp, #0x8] - add r1, r4, #0x0 - bl GetSpeciesName - b _0206781A -_020676B2: - ldr r1, [sp, #0x8] -_020676B4: - ldrh r0, [r7, #0x0] - add r4, r4, #0x1 - add r7, r7, #0x2 - strh r0, [r1, #0x0] - add r1, r1, #0x2 - cmp r4, #0xa - blo _020676B4 - ldr r2, _02067828 ; =0x0000FFFF - ldr r0, [sp, #0x8] - lsl r1, r4, #0x1 - strh r2, [r0, r1] - b _0206781A -_020676CC: - ldr r0, [r6, #0x10] - lsr r4, r0, #0x1f -_020676D0: - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x4] - lsl r0, r0, #0x1d - lsr r0, r0, #0x1f - beq _020676F4 - ldr r0, _02067824 ; =SPECIES_MANAPHY_EGG - mov r1, #0x0 - bl FUN_0200AA50 - add r5, r0, #0x0 - ldr r0, [sp, #0x8] - add r1, r5, #0x0 - bl FUN_02021A74 - add r0, r5, #0x0 - bl FUN_02021A20 - b _0206781A -_020676F4: - ldr r0, [sp, #0x8] - add r1, r7, #0x0 - bl FUN_02021E28 - b _0206781A -_020676FE: - ldrb r4, [r7, #0x16] - b _0206781A -_02067702: - ldrb r4, [r7, #0x17] - b _0206781A -_02067706: - ldr r2, [sp, #0x4] - mov r0, #0x1 - sub r2, #0x7a - add r1, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - ldr r3, [r7, #0x18] - ldr r2, [r7, #0x1c] - and r3, r0 - and r2, r1 - mov r1, #0x0 - mov r0, #0x0 - eor r1, r2 - eor r0, r3 - orr r0, r1 - beq _0206781A - mov r4, #0x1 - b _0206781A -_0206772C: - ldr r2, [sp, #0x8] -_0206772E: - ldrh r0, [r1, #0x0] - add r4, r4, #0x1 - add r1, r1, #0x2 - strh r0, [r2, #0x0] - add r2, r2, #0x2 - cmp r4, #0x7 - blo _0206772E - ldr r2, _02067828 ; =0x0000FFFF - ldr r0, [sp, #0x8] - lsl r1, r4, #0x1 - strh r2, [r0, r1] - b _0206781A -_02067746: - ldr r0, [sp, #0x8] - bl FUN_02021E28 - b _0206781A -_0206774E: - ldrb r4, [r1, #0x10] - b _0206781A -_02067752: - ldrb r4, [r1, #0x11] - b _0206781A -_02067756: - ldrb r4, [r1, #0x12] - b _0206781A -_0206775A: - ldrb r4, [r1, #0x13] - b _0206781A -_0206775E: - ldrb r4, [r1, #0x14] - b _0206781A -_02067762: - ldrb r4, [r1, #0x15] - b _0206781A -_02067766: - ldrh r4, [r1, #0x16] - b _0206781A -_0206776A: - ldrh r4, [r1, #0x18] - b _0206781A -_0206776E: - ldrb r4, [r1, #0x1a] - b _0206781A -_02067772: - ldrb r4, [r1, #0x1b] - b _0206781A -_02067776: - ldrb r0, [r1, #0x1c] - lsl r0, r0, #0x19 - lsr r4, r0, #0x19 - b _0206781A -_0206777E: - ldrb r0, [r1, #0x1c] - lsl r0, r0, #0x18 - lsr r4, r0, #0x1f - b _0206781A -_02067786: - ldrb r4, [r1, #0x1d] - b _0206781A -_0206778A: - ldrh r4, [r1, #0x1e] - b _0206781A -_0206778E: - ldr r4, [r6, #0x10] - lsl r0, r4, #0x2 - lsr r0, r0, #0x1b - lsl r5, r0, #0x19 - lsl r0, r4, #0x7 - lsr r0, r0, #0x1b - lsl r3, r0, #0x14 - lsl r0, r4, #0xc - lsr r0, r0, #0x1b - lsl r2, r0, #0xf - lsl r0, r4, #0x11 - lsr r0, r0, #0x1b - lsl r1, r0, #0xa - lsl r0, r4, #0x1b - lsl r4, r4, #0x16 - lsr r4, r4, #0x1b - lsr r0, r0, #0x1b - lsl r4, r4, #0x5 - orr r0, r4 - orr r0, r1 - orr r0, r2 - orr r0, r3 - add r4, r5, #0x0 - orr r4, r0 - b _0206781A -_020677C0: - ldrh r0, [r5, #0x0] - cmp r0, #0x1d - beq _020677CA - cmp r0, #0x20 - bne _020677D4 -_020677CA: - ldr r0, [r6, #0x10] - lsr r0, r0, #0x1f - bne _020677D4 - mov r4, #0x0 - b _0206781A -_020677D4: - mov r4, #0x1 - b _0206781A -_020677D8: - ldrh r0, [r5, #0x0] - ldr r1, _0206782C ; =SPECIES_ARCEUS - cmp r0, r1 - bne _020677FC - ldrb r1, [r5, #0xd] - cmp r1, #0x79 - bne _020677FC - ldrh r0, [r5, #0x2] - mov r1, #0x1 - add r2, r4, #0x0 - bl FUN_0206E7B8 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl GetArceusTypeByPlate - add r4, r0, #0x0 - b _0206781A -_020677FC: - ldrb r1, [r6, #0x18] - ldr r2, [sp, #0x4] - lsl r1, r1, #0x18 - sub r2, #0xaa - lsr r1, r1, #0x1b - str r2, [sp, #0x4] - bl GetMonBaseStat_HandleFormeConversion - add r4, r0, #0x0 - b _0206781A -_02067810: - ldrh r0, [r5, #0x0] - ldr r2, [sp, #0x8] - add r1, r4, #0x0 - bl GetSpeciesName -_0206781A: - add r0, r4, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_02067820: .word SPECIES_EGG -_02067824: .word SPECIES_MANAPHY_EGG -_02067828: .word 0x0000FFFF -_0206782C: .word SPECIES_ARCEUS - thumb_func_start SetMonData SetMonData: ; 0x02067830 push {r4-r6, lr} diff --git a/arm9/asm/unk_0206E5B4.s b/arm9/asm/unk_0206E5B4.s index e527bfb2..316ba0db 100644 --- a/arm9/asm/unk_0206E5B4.s +++ b/arm9/asm/unk_0206E5B4.s @@ -37,251 +37,471 @@ UNK_020F84EC: ; 0x020F84EC .global UNK_020F85B4 UNK_020F85B4: ; 0x020F85B4 - .byte 0x00, 0x00 - - .global UNK_020F85B6 -UNK_020F85B6: ; 0x020F85B6 - .byte 0xBB, 0x02 - - .global UNK_020F85B8 -UNK_020F85B8: ; 0x020F85B8 - .byte 0xBC, 0x02 - - .global UNK_020F85BA -UNK_020F85BA: ; 0x020F85BA - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x05, 0x00 - .byte 0x02, 0x00, 0x03, 0x00, 0x06, 0x00, 0x07, 0x00, 0x03, 0x00, 0x04, 0x00, 0x08, 0x00, 0x09, 0x00 - .byte 0x04, 0x00, 0x05, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x05, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x0D, 0x00 - .byte 0x06, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x08, 0x00, 0x10, 0x00, 0x11, 0x00 - .byte 0x08, 0x00, 0x09, 0x00, 0x12, 0x00, 0x13, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x13, 0x00 - .byte 0x0A, 0x00, 0x0B, 0x00, 0x15, 0x00, 0x16, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x17, 0x00, 0x16, 0x00 - .byte 0x0C, 0x00, 0x0D, 0x00, 0x97, 0x02, 0x98, 0x02, 0x00, 0x00, 0x0E, 0x00, 0x99, 0x02, 0x9A, 0x02 - .byte 0x00, 0x00, 0x0F, 0x00, 0x9B, 0x02, 0x9C, 0x02, 0x00, 0x00, 0x10, 0x00, 0x9D, 0x02, 0x9E, 0x02 - .byte 0x00, 0x00, 0x11, 0x00, 0x18, 0x00, 0x19, 0x00, 0x0D, 0x00, 0x12, 0x00, 0x1A, 0x00, 0x1B, 0x00 - .byte 0x0E, 0x00, 0x13, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x14, 0x00, 0x1E, 0x00, 0x1D, 0x00 - .byte 0x10, 0x00, 0x15, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x16, 0x00, 0x1E, 0x00, 0x20, 0x00 - .byte 0x12, 0x00, 0x17, 0x00, 0x21, 0x00, 0x22, 0x00, 0x13, 0x00, 0x18, 0x00, 0x21, 0x00, 0x23, 0x00 - .byte 0x14, 0x00, 0x19, 0x00, 0x18, 0x00, 0x24, 0x00, 0x15, 0x00, 0x1A, 0x00, 0x18, 0x00, 0x25, 0x00 - .byte 0x16, 0x00, 0x1B, 0x00, 0x26, 0x00, 0x27, 0x00, 0x17, 0x00, 0x1C, 0x00, 0x28, 0x00, 0x2A, 0x00 - .byte 0x18, 0x00, 0x1D, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x19, 0x00, 0x1E, 0x00, 0x2B, 0x00, 0x2C, 0x00 - .byte 0x1A, 0x00, 0x1F, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x1B, 0x00, 0x20, 0x00, 0x2F, 0x00, 0x30, 0x00 - .byte 0x1C, 0x00, 0x21, 0x00, 0x31, 0x00, 0x32, 0x00, 0x1D, 0x00, 0x22, 0x00, 0x33, 0x00, 0x34, 0x00 - .byte 0x1E, 0x00, 0x23, 0x00, 0x35, 0x00, 0x36, 0x00, 0x1F, 0x00, 0x24, 0x00, 0x33, 0x00, 0x37, 0x00 - .byte 0x20, 0x00, 0x25, 0x00, 0x38, 0x00, 0x39, 0x00, 0x21, 0x00, 0x26, 0x00, 0x3A, 0x00, 0x3B, 0x00 - .byte 0x22, 0x00, 0x27, 0x00, 0x3A, 0x00, 0x3C, 0x00, 0x23, 0x00, 0x28, 0x00, 0x3A, 0x00, 0x3D, 0x00 - .byte 0x24, 0x00, 0x29, 0x00, 0x3A, 0x00, 0x3E, 0x00, 0x25, 0x00, 0x2A, 0x00, 0x3F, 0x00, 0x40, 0x00 - .byte 0x26, 0x00, 0x2B, 0x00, 0x47, 0x00, 0x48, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x49, 0x00, 0x4A, 0x00 - .byte 0x2D, 0x00, 0x2D, 0x00, 0x53, 0x00, 0x54, 0x00, 0x3F, 0x00, 0x2E, 0x00, 0x55, 0x00, 0x56, 0x00 - .byte 0x40, 0x00, 0x2F, 0x00, 0x55, 0x00, 0x57, 0x00, 0x41, 0x00, 0x30, 0x00, 0x55, 0x00, 0x58, 0x00 - .byte 0x42, 0x00, 0x31, 0x00, 0x55, 0x00, 0x59, 0x00, 0x43, 0x00, 0x32, 0x00, 0x5A, 0x00, 0x5B, 0x00 - .byte 0x44, 0x00, 0x33, 0x00, 0x5C, 0x00, 0x5D, 0x00, 0x45, 0x00, 0x34, 0x00, 0x55, 0x00, 0x5E, 0x00 - .byte 0x46, 0x00, 0x35, 0x00, 0x5F, 0x00, 0x60, 0x00, 0x47, 0x00, 0x36, 0x00, 0xD2, 0x01, 0xD3, 0x01 - .byte 0x00, 0x00, 0x37, 0x00, 0x64, 0x00, 0x61, 0x00, 0x49, 0x00, 0x38, 0x00, 0x64, 0x00, 0x62, 0x00 - .byte 0x4A, 0x00, 0x39, 0x00, 0x64, 0x00, 0x63, 0x00, 0x4B, 0x00, 0x3A, 0x00, 0x64, 0x00, 0x65, 0x00 - .byte 0x4C, 0x00, 0x3B, 0x00, 0x64, 0x00, 0x66, 0x00, 0x4D, 0x00, 0x3C, 0x00, 0x64, 0x00, 0x67, 0x00 - .byte 0x4E, 0x00, 0x3D, 0x00, 0x64, 0x00, 0x68, 0x00, 0x4F, 0x00, 0x3E, 0x00, 0x64, 0x00, 0xD5, 0x01 - .byte 0x00, 0x00, 0x3F, 0x00, 0x69, 0x00, 0x6A, 0x00, 0x50, 0x00, 0x40, 0x00, 0x6B, 0x00, 0x6C, 0x00 - .byte 0x51, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 0x27, 0x00, 0x42, 0x00, 0x41, 0x00, 0x43, 0x00 - .byte 0x28, 0x00, 0x43, 0x00, 0x41, 0x00, 0x44, 0x00, 0x29, 0x00, 0x44, 0x00, 0x41, 0x00, 0x45, 0x00 - .byte 0x2A, 0x00, 0x45, 0x00, 0x41, 0x00, 0x46, 0x00, 0x2B, 0x00, 0x46, 0x00, 0x33, 0x00, 0x4B, 0x00 - .byte 0x2E, 0x00, 0x47, 0x00, 0x4C, 0x00, 0x4D, 0x00, 0x2F, 0x00, 0x48, 0x00, 0x4E, 0x00, 0x4F, 0x00 - .byte 0x30, 0x00, 0x49, 0x00, 0x4E, 0x00, 0x50, 0x00, 0x31, 0x00, 0x4A, 0x00, 0x4E, 0x00, 0x51, 0x00 - .byte 0x32, 0x00, 0x4B, 0x00, 0x4E, 0x00, 0x52, 0x00, 0x33, 0x00, 0x4C, 0x00, 0x6D, 0x00, 0x6E, 0x00 - .byte 0x53, 0x00, 0x4D, 0x00, 0x6D, 0x00, 0x6F, 0x00, 0x54, 0x00, 0x4E, 0x00, 0x70, 0x00, 0x71, 0x00 - .byte 0x55, 0x00, 0x4F, 0x00, 0x6D, 0x00, 0x72, 0x00, 0x56, 0x00, 0x50, 0x00, 0x73, 0x00, 0x74, 0x00 - .byte 0x5D, 0x00, 0x51, 0x00, 0x75, 0x00, 0x76, 0x00, 0x5E, 0x00, 0x52, 0x00, 0x77, 0x00, 0x78, 0x00 - .byte 0x5F, 0x00, 0x53, 0x00, 0x79, 0x00, 0x7A, 0x00, 0x60, 0x00, 0x54, 0x00, 0x7B, 0x00, 0x7C, 0x00 - .byte 0x61, 0x00, 0x55, 0x00, 0x7D, 0x00, 0x7E, 0x00, 0x62, 0x00, 0x56, 0x00, 0x7F, 0x00, 0x81, 0x00 - .byte 0x67, 0x00, 0x57, 0x00, 0x80, 0x00, 0x81, 0x00, 0x68, 0x00, 0x58, 0x00, 0x82, 0x00, 0x83, 0x00 - .byte 0x6A, 0x00, 0x59, 0x00, 0x84, 0x00, 0x83, 0x00, 0x6B, 0x00, 0x5A, 0x00, 0x85, 0x00, 0x86, 0x00 - .byte 0x6C, 0x00, 0x5B, 0x00, 0x87, 0x00, 0x86, 0x00, 0x6D, 0x00, 0x5C, 0x00, 0x88, 0x00, 0x89, 0x00 - .byte 0x6E, 0x00, 0x5D, 0x00, 0x8A, 0x00, 0x8B, 0x00, 0x6F, 0x00, 0x5E, 0x00, 0xD6, 0x01, 0xD7, 0x01 - .byte 0x00, 0x00, 0x5F, 0x00, 0xD8, 0x01, 0xD9, 0x01, 0x00, 0x00, 0x60, 0x00, 0xDA, 0x01, 0xDB, 0x01 - .byte 0x00, 0x00, 0x61, 0x00, 0xDC, 0x01, 0xDD, 0x01, 0x00, 0x00, 0x62, 0x00, 0xDE, 0x01, 0xDF, 0x01 - .byte 0x00, 0x00, 0x63, 0x00, 0x88, 0x01, 0x89, 0x01, 0x1E, 0x01, 0x64, 0x00, 0x8A, 0x01, 0x89, 0x01 - .byte 0x1F, 0x01, 0x65, 0x00, 0xAF, 0x01, 0xB0, 0x01, 0x65, 0x01, 0x66, 0x00, 0xB1, 0x01, 0xB0, 0x01 - .byte 0x66, 0x01, 0x67, 0x00, 0xA9, 0x01, 0xAA, 0x01, 0x62, 0x01, 0x68, 0x00, 0x69, 0x02, 0x6A, 0x02 - .byte 0x00, 0x00, 0x69, 0x00, 0x67, 0x02, 0x68, 0x02, 0x00, 0x00, 0x6A, 0x00, 0x51, 0x01, 0x52, 0x01 - .byte 0x00, 0x00, 0x6B, 0x00, 0xE0, 0x01, 0xE1, 0x01, 0x00, 0x00, 0x6C, 0x00, 0xE2, 0x01, 0xE3, 0x01 - .byte 0x00, 0x00, 0x6D, 0x00, 0xE4, 0x01, 0xE5, 0x01, 0x00, 0x00, 0x6E, 0x00, 0xE6, 0x01, 0xE7, 0x01 - .byte 0x00, 0x00, 0x6F, 0x00, 0xE8, 0x01, 0xE9, 0x01, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x02, 0xBC, 0x02 - .byte 0x00, 0x00, 0x70, 0x00, 0x88, 0x02, 0x89, 0x02, 0x00, 0x00, 0x71, 0x00, 0x86, 0x02, 0x87, 0x02 - .byte 0x00, 0x00, 0x72, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x73, 0x00, 0x8E, 0x00, 0x8F, 0x00 - .byte 0x00, 0x00, 0x74, 0x00, 0x90, 0x00, 0x91, 0x00, 0x00, 0x00, 0x75, 0x00, 0x92, 0x00, 0x93, 0x00 - .byte 0x00, 0x00, 0x76, 0x00, 0x94, 0x00, 0x95, 0x00, 0x00, 0x00, 0x77, 0x00, 0x96, 0x00, 0x97, 0x00 - .byte 0x00, 0x00, 0x78, 0x00, 0x98, 0x00, 0x99, 0x00, 0x00, 0x00, 0x79, 0x00, 0x9A, 0x00, 0x9B, 0x00 - .byte 0x00, 0x00, 0x7A, 0x00, 0x9C, 0x00, 0x9D, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x9E, 0x00, 0x9F, 0x00 - .byte 0x00, 0x00, 0x7C, 0x00, 0xA0, 0x00, 0xA1, 0x00, 0x00, 0x00, 0x7D, 0x00, 0xA2, 0x00, 0xA3, 0x00 - .byte 0x00, 0x00, 0x7E, 0x00, 0xA4, 0x00, 0xA5, 0x00, 0x85, 0x00, 0x7F, 0x00, 0xA6, 0x00, 0xA7, 0x00 - .byte 0x86, 0x00, 0x80, 0x00, 0xA8, 0x00, 0xA9, 0x00, 0x87, 0x00, 0x81, 0x00, 0xAA, 0x00, 0xAB, 0x00 - .byte 0x88, 0x00, 0x82, 0x00, 0xAC, 0x00, 0xAD, 0x00, 0x89, 0x00, 0x83, 0x00, 0xAE, 0x00, 0xAF, 0x00 - .byte 0x8A, 0x00, 0x84, 0x00, 0xB0, 0x00, 0xB1, 0x00, 0x8B, 0x00, 0x85, 0x00, 0xB2, 0x00, 0xB3, 0x00 - .byte 0x8C, 0x00, 0x86, 0x00, 0xB4, 0x00, 0xB5, 0x00, 0x8D, 0x00, 0x87, 0x00, 0xB6, 0x00, 0xB7, 0x00 - .byte 0x8E, 0x00, 0x88, 0x00, 0xB8, 0x00, 0xB9, 0x00, 0x8F, 0x00, 0x89, 0x00, 0xBA, 0x00, 0xBB, 0x00 - .byte 0x90, 0x00, 0x8A, 0x00, 0xBC, 0x00, 0xBD, 0x00, 0x91, 0x00, 0x8B, 0x00, 0xBE, 0x00, 0xBF, 0x00 - .byte 0x92, 0x00, 0x8C, 0x00, 0xC0, 0x00, 0xC1, 0x00, 0x93, 0x00, 0x8D, 0x00, 0xC2, 0x00, 0xC3, 0x00 - .byte 0x94, 0x00, 0x8E, 0x00, 0xC4, 0x00, 0xC5, 0x00, 0x95, 0x00, 0x8F, 0x00, 0xC6, 0x00, 0xC7, 0x00 - .byte 0x96, 0x00, 0x90, 0x00, 0xC8, 0x00, 0xC9, 0x00, 0x97, 0x00, 0x91, 0x00, 0xCA, 0x00, 0xCB, 0x00 - .byte 0x98, 0x00, 0x92, 0x00, 0xCC, 0x00, 0xCD, 0x00, 0x99, 0x00, 0x93, 0x00, 0xCE, 0x00, 0xCF, 0x00 - .byte 0x9A, 0x00, 0x94, 0x00, 0xD0, 0x00, 0xD1, 0x00, 0x9B, 0x00, 0x95, 0x00, 0xD2, 0x00, 0xD3, 0x00 - .byte 0x9C, 0x00, 0x96, 0x00, 0xD4, 0x00, 0xD5, 0x00, 0x9D, 0x00, 0x97, 0x00, 0xD6, 0x00, 0xD7, 0x00 - .byte 0x9E, 0x00, 0x98, 0x00, 0xD8, 0x00, 0xD9, 0x00, 0x9F, 0x00, 0x99, 0x00, 0xDA, 0x00, 0xDB, 0x00 - .byte 0xA0, 0x00, 0x9A, 0x00, 0xDC, 0x00, 0xDD, 0x00, 0xA1, 0x00, 0x9B, 0x00, 0xDE, 0x00, 0xDF, 0x00 - .byte 0xA2, 0x00, 0x9C, 0x00, 0xE0, 0x00, 0xE1, 0x00, 0xA3, 0x00, 0x9D, 0x00, 0xE2, 0x00, 0xE3, 0x00 - .byte 0xA4, 0x00, 0x9E, 0x00, 0xE4, 0x00, 0xE5, 0x00, 0xA5, 0x00, 0x9F, 0x00, 0xE6, 0x00, 0xE7, 0x00 - .byte 0xA6, 0x00, 0xA0, 0x00, 0xE8, 0x00, 0xE9, 0x00, 0xA7, 0x00, 0xA1, 0x00, 0x2A, 0x02, 0x2B, 0x02 - .byte 0x00, 0x00, 0xA2, 0x00, 0x2C, 0x02, 0x2D, 0x02, 0x00, 0x00, 0xA3, 0x00, 0x2E, 0x02, 0x2F, 0x02 - .byte 0x00, 0x00, 0xA4, 0x00, 0x30, 0x02, 0x31, 0x02, 0x00, 0x00, 0xA5, 0x00, 0x32, 0x02, 0x33, 0x02 - .byte 0x00, 0x00, 0xA6, 0x00, 0x34, 0x02, 0x35, 0x02, 0x00, 0x00, 0xA7, 0x00, 0x36, 0x02, 0x37, 0x02 - .byte 0x00, 0x00, 0xA8, 0x00, 0x38, 0x02, 0x39, 0x02, 0x00, 0x00, 0xA9, 0x00, 0x3A, 0x02, 0x3B, 0x02 - .byte 0x00, 0x00, 0xAA, 0x00, 0x3C, 0x02, 0x3D, 0x02, 0x00, 0x00, 0xAB, 0x00, 0x3E, 0x02, 0x3F, 0x02 - .byte 0x00, 0x00, 0xAC, 0x00, 0x40, 0x02, 0x41, 0x02, 0x00, 0x00, 0xAD, 0x00, 0x42, 0x02, 0x43, 0x02 - .byte 0x00, 0x00, 0xAE, 0x00, 0x44, 0x02, 0x45, 0x02, 0x00, 0x00, 0xAF, 0x00, 0x46, 0x02, 0x47, 0x02 - .byte 0x00, 0x00, 0xB0, 0x00, 0x48, 0x02, 0x49, 0x02, 0x00, 0x00, 0xB1, 0x00, 0x4A, 0x02, 0x4B, 0x02 - .byte 0x00, 0x00, 0xB2, 0x00, 0xEA, 0x00, 0xEB, 0x00, 0xA8, 0x00, 0xB3, 0x00, 0xEC, 0x00, 0xED, 0x00 - .byte 0xA9, 0x00, 0xB4, 0x00, 0xEE, 0x00, 0xEF, 0x00, 0xAA, 0x00, 0xB5, 0x00, 0xF0, 0x00, 0xF1, 0x00 - .byte 0xAB, 0x00, 0xB6, 0x00, 0xF2, 0x00, 0xF3, 0x00, 0xAC, 0x00, 0xB7, 0x00, 0xF4, 0x00, 0xF5, 0x00 - .byte 0xAD, 0x00, 0xB8, 0x00, 0xF6, 0x00, 0xF7, 0x00, 0xAE, 0x00, 0xB9, 0x00, 0xF8, 0x00, 0xF9, 0x00 - .byte 0xAF, 0x00, 0xBA, 0x00, 0x4C, 0x02, 0x4D, 0x02, 0x00, 0x00, 0xBB, 0x00, 0x4E, 0x02, 0x4F, 0x02 - .byte 0x00, 0x00, 0xBC, 0x00, 0x50, 0x02, 0x51, 0x02, 0x00, 0x00, 0xBD, 0x00, 0x52, 0x02, 0x53, 0x02 - .byte 0x00, 0x00, 0xBE, 0x00, 0xFA, 0x00, 0xFB, 0x00, 0xB3, 0x00, 0xBF, 0x00, 0xFC, 0x00, 0xFD, 0x00 - .byte 0xB4, 0x00, 0xC0, 0x00, 0xFE, 0x00, 0xFF, 0x00, 0xB5, 0x00, 0xC1, 0x00, 0x00, 0x01, 0x01, 0x01 - .byte 0xB6, 0x00, 0xC2, 0x00, 0x02, 0x01, 0x03, 0x01, 0xB7, 0x00, 0xC3, 0x00, 0x04, 0x01, 0x05, 0x01 - .byte 0xB8, 0x00, 0xC4, 0x00, 0xFC, 0x00, 0x06, 0x01, 0xB9, 0x00, 0xC5, 0x00, 0x07, 0x01, 0x08, 0x01 - .byte 0xBA, 0x00, 0xC6, 0x00, 0x09, 0x01, 0x0A, 0x01, 0xBB, 0x00, 0xC7, 0x00, 0x0B, 0x01, 0x0C, 0x01 - .byte 0xBC, 0x00, 0xC8, 0x00, 0x0D, 0x01, 0x0E, 0x01, 0xBD, 0x00, 0xC9, 0x00, 0x0F, 0x01, 0x10, 0x01 - .byte 0xBE, 0x00, 0xCA, 0x00, 0x11, 0x01, 0x12, 0x01, 0xBF, 0x00, 0xCB, 0x00, 0x13, 0x01, 0x14, 0x01 - .byte 0xC0, 0x00, 0xCC, 0x00, 0x15, 0x01, 0x16, 0x01, 0xC1, 0x00, 0xCD, 0x00, 0x17, 0x01, 0x18, 0x01 - .byte 0xC2, 0x00, 0xCE, 0x00, 0x19, 0x01, 0x1A, 0x01, 0xC3, 0x00, 0xCF, 0x00, 0x1B, 0x01, 0x1C, 0x01 - .byte 0xC4, 0x00, 0xD0, 0x00, 0x1D, 0x01, 0x1E, 0x01, 0xC5, 0x00, 0xD1, 0x00, 0x1F, 0x01, 0x20, 0x01 - .byte 0xC6, 0x00, 0xD2, 0x00, 0x21, 0x01, 0x22, 0x01, 0xC7, 0x00, 0xD3, 0x00, 0x23, 0x01, 0x24, 0x01 - .byte 0xC8, 0x00, 0xD4, 0x00, 0x25, 0x01, 0x26, 0x01, 0xC9, 0x00, 0xD5, 0x00, 0x27, 0x01, 0x28, 0x01 - .byte 0xCA, 0x00, 0xD6, 0x00, 0x29, 0x01, 0x2A, 0x01, 0xCB, 0x00, 0xD7, 0x00, 0x2B, 0x01, 0x2C, 0x01 - .byte 0xCC, 0x00, 0xD8, 0x00, 0x2D, 0x01, 0x2E, 0x01, 0xCD, 0x00, 0xD9, 0x00, 0x2F, 0x01, 0x30, 0x01 - .byte 0xCE, 0x00, 0xDA, 0x00, 0x31, 0x01, 0x30, 0x01, 0xCF, 0x00, 0xDB, 0x00, 0x32, 0x01, 0x33, 0x01 - .byte 0xD0, 0x00, 0xDC, 0x00, 0x34, 0x01, 0x35, 0x01, 0xD1, 0x00, 0xDD, 0x00, 0x36, 0x01, 0x37, 0x01 - .byte 0xD2, 0x00, 0xDE, 0x00, 0x38, 0x01, 0x39, 0x01, 0xD3, 0x00, 0xDF, 0x00, 0x3A, 0x01, 0x3B, 0x01 - .byte 0xD4, 0x00, 0xE0, 0x00, 0x3C, 0x01, 0x3D, 0x01, 0xD5, 0x00, 0xE1, 0x00, 0x3E, 0x01, 0x3F, 0x01 - .byte 0xD6, 0x00, 0xE2, 0x00, 0x40, 0x01, 0x41, 0x01, 0xD7, 0x00, 0xE3, 0x00, 0x42, 0x01, 0x43, 0x01 - .byte 0xD8, 0x00, 0xE4, 0x00, 0x44, 0x01, 0x45, 0x01, 0xD9, 0x00, 0xE5, 0x00, 0x46, 0x01, 0x47, 0x01 - .byte 0xDA, 0x00, 0xE6, 0x00, 0x48, 0x01, 0x4D, 0x00, 0xDB, 0x00, 0xE7, 0x00, 0x49, 0x01, 0x4A, 0x01 - .byte 0xDC, 0x00, 0xE8, 0x00, 0x4B, 0x01, 0x4C, 0x01, 0xDD, 0x00, 0xE9, 0x00, 0x4D, 0x01, 0x4E, 0x01 - .byte 0xDE, 0x00, 0xEA, 0x00, 0x4F, 0x01, 0x50, 0x01, 0xDF, 0x00, 0xEB, 0x00, 0x51, 0x01, 0x52, 0x01 - .byte 0xE0, 0x00, 0xEC, 0x00, 0x53, 0x01, 0x54, 0x01, 0xE1, 0x00, 0xED, 0x00, 0x55, 0x01, 0x56, 0x01 - .byte 0xFE, 0x00, 0xEE, 0x00, 0x55, 0x01, 0x57, 0x01, 0xFF, 0x00, 0xEF, 0x00, 0x55, 0x01, 0x58, 0x01 - .byte 0x00, 0x01, 0xF0, 0x00, 0x55, 0x01, 0x59, 0x01, 0x01, 0x01, 0xF1, 0x00, 0x55, 0x01, 0x5A, 0x01 - .byte 0x02, 0x01, 0xF2, 0x00, 0xEA, 0x01, 0xEB, 0x01, 0x00, 0x00, 0xF3, 0x00, 0xEC, 0x01, 0xED, 0x01 - .byte 0x00, 0x00, 0xF4, 0x00, 0xEE, 0x01, 0xEF, 0x01, 0x00, 0x00, 0xF5, 0x00, 0xF0, 0x01, 0xF1, 0x01 - .byte 0x00, 0x00, 0xF6, 0x00, 0x63, 0x02, 0x64, 0x02, 0x00, 0x00, 0xF7, 0x00, 0xF2, 0x01, 0xF3, 0x01 - .byte 0x00, 0x00, 0xF8, 0x00, 0xF4, 0x01, 0xF5, 0x01, 0x00, 0x00, 0xF9, 0x00, 0xF6, 0x01, 0xF7, 0x01 - .byte 0x00, 0x00, 0xFA, 0x00, 0xF8, 0x01, 0xF9, 0x01, 0x00, 0x00, 0xFB, 0x00, 0x4F, 0x01, 0x92, 0x02 - .byte 0x00, 0x00, 0xFC, 0x00, 0x93, 0x02, 0x94, 0x02, 0x00, 0x00, 0xFD, 0x00, 0xFA, 0x01, 0xFB, 0x01 - .byte 0x00, 0x00, 0xFE, 0x00, 0xFC, 0x01, 0xFD, 0x01, 0x00, 0x00, 0xFF, 0x00, 0x65, 0x02, 0x66, 0x02 - .byte 0x00, 0x00, 0x00, 0x01, 0x8A, 0x02, 0x8B, 0x02, 0x00, 0x00, 0x01, 0x01, 0x8E, 0x02, 0x8F, 0x02 - .byte 0x00, 0x00, 0x02, 0x01, 0xFE, 0x01, 0xFF, 0x01, 0x00, 0x00, 0x03, 0x01, 0x7C, 0x02, 0x7D, 0x02 - .byte 0x00, 0x00, 0x04, 0x01, 0x7E, 0x02, 0x7F, 0x02, 0x00, 0x00, 0x05, 0x01, 0x80, 0x02, 0x81, 0x02 - .byte 0x00, 0x00, 0x06, 0x01, 0x82, 0x02, 0x83, 0x02, 0x00, 0x00, 0x07, 0x01, 0x8C, 0x02, 0x8D, 0x02 - .byte 0x00, 0x00, 0x08, 0x01, 0x00, 0x02, 0x01, 0x02, 0x00, 0x00, 0x09, 0x01, 0x02, 0x02, 0x03, 0x02 - .byte 0x00, 0x00, 0x0A, 0x01, 0xAB, 0x02, 0xAC, 0x02, 0x00, 0x00, 0x0B, 0x01, 0xB3, 0x02, 0xB4, 0x02 - .byte 0x00, 0x00, 0x0C, 0x01, 0xB5, 0x02, 0xB6, 0x02, 0x00, 0x00, 0x0D, 0x01, 0xAD, 0x02, 0xAE, 0x02 - .byte 0x00, 0x00, 0x0E, 0x01, 0xAF, 0x02, 0xB0, 0x02, 0x00, 0x00, 0x0F, 0x01, 0xB1, 0x02, 0xB2, 0x02 - .byte 0x00, 0x00, 0x10, 0x01, 0x04, 0x02, 0x05, 0x02, 0x00, 0x00, 0x11, 0x01, 0x06, 0x02, 0x07, 0x02 - .byte 0x00, 0x00, 0x12, 0x01, 0x08, 0x02, 0x09, 0x02, 0x00, 0x00, 0x13, 0x01, 0x6B, 0x02, 0x6C, 0x02 - .byte 0x00, 0x00, 0x14, 0x01, 0x6B, 0x02, 0x6D, 0x02, 0x00, 0x00, 0x15, 0x01, 0x6B, 0x02, 0x6E, 0x02 - .byte 0x00, 0x00, 0x16, 0x01, 0x6B, 0x02, 0x6F, 0x02, 0x00, 0x00, 0x17, 0x01, 0x6B, 0x02, 0x70, 0x02 - .byte 0x00, 0x00, 0x18, 0x01, 0x6B, 0x02, 0x71, 0x02, 0x00, 0x00, 0x19, 0x01, 0x6B, 0x02, 0x72, 0x02 - .byte 0x00, 0x00, 0x1A, 0x01, 0x6B, 0x02, 0x73, 0x02, 0x00, 0x00, 0x1B, 0x01, 0x6B, 0x02, 0x74, 0x02 - .byte 0x00, 0x00, 0x1C, 0x01, 0x6B, 0x02, 0x75, 0x02, 0x00, 0x00, 0x1D, 0x01, 0x6B, 0x02, 0x76, 0x02 - .byte 0x00, 0x00, 0x1E, 0x01, 0x6B, 0x02, 0x77, 0x02, 0x00, 0x00, 0x1F, 0x01, 0x6B, 0x02, 0x78, 0x02 - .byte 0x00, 0x00, 0x20, 0x01, 0x6B, 0x02, 0x79, 0x02, 0x00, 0x00, 0x21, 0x01, 0x6B, 0x02, 0x7A, 0x02 - .byte 0x00, 0x00, 0x22, 0x01, 0x6B, 0x02, 0x7B, 0x02, 0x00, 0x00, 0x23, 0x01, 0x0A, 0x02, 0x0B, 0x02 - .byte 0x00, 0x00, 0x24, 0x01, 0x0C, 0x02, 0x0D, 0x02, 0x00, 0x00, 0x25, 0x01, 0x0E, 0x02, 0x0F, 0x02 - .byte 0x00, 0x00, 0x26, 0x01, 0x10, 0x02, 0x11, 0x02, 0x00, 0x00, 0x27, 0x01, 0x12, 0x02, 0x13, 0x02 - .byte 0x00, 0x00, 0x28, 0x01, 0x14, 0x02, 0x15, 0x02, 0x00, 0x00, 0x29, 0x01, 0x16, 0x02, 0x17, 0x02 - .byte 0x00, 0x00, 0x2A, 0x01, 0xB7, 0x02, 0xB8, 0x02, 0x00, 0x00, 0x2B, 0x01, 0x18, 0x02, 0x19, 0x02 - .byte 0x00, 0x00, 0x2C, 0x01, 0x1A, 0x02, 0x1B, 0x02, 0x00, 0x00, 0x2D, 0x01, 0x1C, 0x02, 0x1D, 0x02 - .byte 0x00, 0x00, 0x2E, 0x01, 0x1E, 0x02, 0x1F, 0x02, 0x00, 0x00, 0x2F, 0x01, 0x20, 0x02, 0x21, 0x02 - .byte 0x00, 0x00, 0x30, 0x01, 0x22, 0x02, 0x23, 0x02, 0x00, 0x00, 0x31, 0x01, 0x8D, 0x01, 0x8E, 0x01 - .byte 0x21, 0x01, 0x32, 0x01, 0x8D, 0x01, 0x8F, 0x01, 0x22, 0x01, 0x33, 0x01, 0x8D, 0x01, 0x90, 0x01 - .byte 0x23, 0x01, 0x34, 0x01, 0x8D, 0x01, 0x91, 0x01, 0x24, 0x01, 0x35, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x25, 0x01, 0x36, 0x01, 0x8D, 0x01, 0x93, 0x01, 0x26, 0x01, 0x37, 0x01, 0x8D, 0x01, 0x94, 0x01 - .byte 0x27, 0x01, 0x38, 0x01, 0x8D, 0x01, 0x8E, 0x01, 0x28, 0x01, 0x39, 0x01, 0x8D, 0x01, 0x95, 0x01 - .byte 0x29, 0x01, 0x3A, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x2A, 0x01, 0x3B, 0x01, 0x8D, 0x01, 0x96, 0x01 - .byte 0x2B, 0x01, 0x3C, 0x01, 0x8D, 0x01, 0x97, 0x01, 0x2C, 0x01, 0x3D, 0x01, 0x8D, 0x01, 0x94, 0x01 - .byte 0x2D, 0x01, 0x3E, 0x01, 0x8D, 0x01, 0x94, 0x01, 0x2E, 0x01, 0x3F, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x2F, 0x01, 0x40, 0x01, 0x8D, 0x01, 0x91, 0x01, 0x30, 0x01, 0x41, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x31, 0x01, 0x42, 0x01, 0x8D, 0x01, 0x90, 0x01, 0x32, 0x01, 0x43, 0x01, 0x8D, 0x01, 0x95, 0x01 - .byte 0x33, 0x01, 0x44, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x34, 0x01, 0x45, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x35, 0x01, 0x46, 0x01, 0x8D, 0x01, 0x95, 0x01, 0x36, 0x01, 0x47, 0x01, 0x8D, 0x01, 0x98, 0x01 - .byte 0x37, 0x01, 0x48, 0x01, 0x8D, 0x01, 0x99, 0x01, 0x38, 0x01, 0x49, 0x01, 0x8D, 0x01, 0x99, 0x01 - .byte 0x39, 0x01, 0x4A, 0x01, 0x8D, 0x01, 0x9A, 0x01, 0x3A, 0x01, 0x4B, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x3B, 0x01, 0x4C, 0x01, 0x8D, 0x01, 0x9A, 0x01, 0x3C, 0x01, 0x4D, 0x01, 0x8D, 0x01, 0x91, 0x01 - .byte 0x3D, 0x01, 0x4E, 0x01, 0x8D, 0x01, 0x9B, 0x01, 0x3E, 0x01, 0x4F, 0x01, 0x8D, 0x01, 0x8E, 0x01 - .byte 0x3F, 0x01, 0x50, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x40, 0x01, 0x51, 0x01, 0x8D, 0x01, 0x91, 0x01 - .byte 0x41, 0x01, 0x52, 0x01, 0x8D, 0x01, 0x99, 0x01, 0x42, 0x01, 0x53, 0x01, 0x8D, 0x01, 0x96, 0x01 - .byte 0x43, 0x01, 0x54, 0x01, 0x8D, 0x01, 0x93, 0x01, 0x44, 0x01, 0x55, 0x01, 0x8D, 0x01, 0x9C, 0x01 - .byte 0x45, 0x01, 0x56, 0x01, 0x8D, 0x01, 0x96, 0x01, 0x46, 0x01, 0x57, 0x01, 0x8D, 0x01, 0x9C, 0x01 - .byte 0x47, 0x01, 0x58, 0x01, 0x8D, 0x01, 0x9D, 0x01, 0x48, 0x01, 0x59, 0x01, 0x8D, 0x01, 0x97, 0x01 - .byte 0x49, 0x01, 0x5A, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x4A, 0x01, 0x5B, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x4B, 0x01, 0x5C, 0x01, 0x8D, 0x01, 0x91, 0x01, 0x4C, 0x01, 0x5D, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x4D, 0x01, 0x5E, 0x01, 0x8D, 0x01, 0x97, 0x01, 0x4E, 0x01, 0x5F, 0x01, 0x8D, 0x01, 0x98, 0x01 - .byte 0x4F, 0x01, 0x60, 0x01, 0x8D, 0x01, 0x91, 0x01, 0x50, 0x01, 0x61, 0x01, 0x8D, 0x01, 0x97, 0x01 - .byte 0x51, 0x01, 0x62, 0x01, 0x8D, 0x01, 0x96, 0x01, 0x52, 0x01, 0x63, 0x01, 0x8D, 0x01, 0x9D, 0x01 - .byte 0x00, 0x00, 0x64, 0x01, 0x8D, 0x01, 0x8E, 0x01, 0x00, 0x00, 0x65, 0x01, 0x8D, 0x01, 0x95, 0x01 - .byte 0x00, 0x00, 0x66, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x67, 0x01, 0x8D, 0x01, 0x90, 0x01 - .byte 0x00, 0x00, 0x68, 0x01, 0x8D, 0x01, 0x97, 0x01, 0x00, 0x00, 0x69, 0x01, 0x8D, 0x01, 0x99, 0x01 - .byte 0x00, 0x00, 0x6A, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x6B, 0x01, 0x8D, 0x01, 0x8F, 0x01 - .byte 0x00, 0x00, 0x6C, 0x01, 0x8D, 0x01, 0x8E, 0x01, 0x00, 0x00, 0x6D, 0x01, 0x8D, 0x01, 0x96, 0x01 - .byte 0x00, 0x00, 0x6E, 0x01, 0x8D, 0x01, 0x62, 0x02, 0x00, 0x00, 0x6F, 0x01, 0x8D, 0x01, 0x97, 0x01 - .byte 0x00, 0x00, 0x70, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x71, 0x01, 0x8D, 0x01, 0x9B, 0x01 - .byte 0x00, 0x00, 0x72, 0x01, 0x8D, 0x01, 0x97, 0x01, 0x00, 0x00, 0x73, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x00, 0x00, 0x74, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x75, 0x01, 0x8D, 0x01, 0x9C, 0x01 - .byte 0x00, 0x00, 0x76, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x77, 0x01, 0x8D, 0x01, 0x9C, 0x01 - .byte 0x00, 0x00, 0x78, 0x01, 0x8D, 0x01, 0x94, 0x01, 0x00, 0x00, 0x79, 0x01, 0x8D, 0x01, 0x99, 0x01 - .byte 0x00, 0x00, 0x7A, 0x01, 0x8D, 0x01, 0x98, 0x01, 0x00, 0x00, 0x7B, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x00, 0x00, 0x7C, 0x01, 0x8D, 0x01, 0x9C, 0x01, 0x00, 0x00, 0x7D, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x00, 0x00, 0x7E, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x7F, 0x01, 0x8D, 0x01, 0x97, 0x01 - .byte 0x00, 0x00, 0x80, 0x01, 0x8D, 0x01, 0x9C, 0x01, 0x00, 0x00, 0x81, 0x01, 0x8D, 0x01, 0x62, 0x02 - .byte 0x00, 0x00, 0x82, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x83, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x00, 0x00, 0x84, 0x01, 0x8D, 0x01, 0x93, 0x01, 0x00, 0x00, 0x85, 0x01, 0x8D, 0x01, 0x91, 0x01 - .byte 0x00, 0x00, 0x86, 0x01, 0x8D, 0x01, 0x95, 0x01, 0x00, 0x00, 0x87, 0x01, 0x8D, 0x01, 0x92, 0x01 - .byte 0x00, 0x00, 0x88, 0x01, 0x8D, 0x01, 0x9D, 0x01, 0x00, 0x00, 0x89, 0x01, 0x8D, 0x01, 0x62, 0x02 - .byte 0x00, 0x00, 0x8A, 0x01, 0x8D, 0x01, 0x92, 0x01, 0x00, 0x00, 0x8B, 0x01, 0x8D, 0x01, 0x98, 0x01 - .byte 0x00, 0x00, 0x8C, 0x01, 0x8D, 0x01, 0x91, 0x01, 0x00, 0x00, 0x8D, 0x01, 0x9E, 0x01, 0x92, 0x01 - .byte 0x53, 0x01, 0x8E, 0x01, 0x9E, 0x01, 0x9D, 0x01, 0x54, 0x01, 0x8F, 0x01, 0x9E, 0x01, 0x90, 0x01 - .byte 0x55, 0x01, 0x90, 0x01, 0x9E, 0x01, 0x92, 0x01, 0x56, 0x01, 0x91, 0x01, 0x9E, 0x01, 0x90, 0x01 - .byte 0x57, 0x01, 0x92, 0x01, 0x9E, 0x01, 0x8E, 0x01, 0x58, 0x01, 0x93, 0x01, 0x9E, 0x01, 0x90, 0x01 - .byte 0x59, 0x01, 0x94, 0x01, 0x9E, 0x01, 0x92, 0x01, 0x5A, 0x01, 0x95, 0x01, 0x24, 0x02, 0x25, 0x02 - .byte 0x00, 0x00, 0x96, 0x01, 0x26, 0x02, 0x27, 0x02, 0x00, 0x00, 0x97, 0x01, 0x28, 0x02, 0x29, 0x02 - .byte 0x00, 0x00, 0x98, 0x01, 0xB9, 0x02, 0xBA, 0x02, 0x00, 0x00, 0x99, 0x01, 0xA9, 0x02, 0xAA, 0x02 - .byte 0x00, 0x00, 0x9A, 0x01, 0x5E, 0x02, 0x5F, 0x02, 0x00, 0x00, 0x9B, 0x01, 0x9F, 0x02, 0xA0, 0x02 - .byte 0x00, 0x00, 0x9C, 0x01, 0xA3, 0x02, 0xA4, 0x02, 0x00, 0x00, 0x9D, 0x01, 0xA1, 0x02, 0xA2, 0x02 - .byte 0x00, 0x00, 0x9E, 0x01, 0x95, 0x02, 0x96, 0x02, 0x00, 0x00, 0x9F, 0x01, 0x84, 0x02, 0x85, 0x02 - .byte 0x00, 0x00, 0xA0, 0x01, 0x5C, 0x02, 0x5D, 0x02, 0x00, 0x00, 0xA1, 0x01, 0x90, 0x02, 0x91, 0x02 - .byte 0x00, 0x00, 0xA2, 0x01, 0xA7, 0x02, 0xA8, 0x02, 0x00, 0x00, 0xA3, 0x01, 0xB7, 0x01, 0xB8, 0x01 - .byte 0x69, 0x01, 0xA4, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0x6A, 0x01, 0xA5, 0x01, 0x5D, 0x01, 0x5E, 0x01 - .byte 0x04, 0x01, 0xA6, 0x01, 0x61, 0x01, 0x62, 0x01, 0x06, 0x01, 0xA7, 0x01, 0x63, 0x01, 0x64, 0x01 - .byte 0x07, 0x01, 0xA8, 0x01, 0x65, 0x01, 0x66, 0x01, 0x08, 0x01, 0xA9, 0x01, 0x6B, 0x01, 0x6C, 0x01 - .byte 0x00, 0x00, 0xAA, 0x01, 0x75, 0x01, 0x76, 0x01, 0x00, 0x00, 0xAB, 0x01, 0xB5, 0x01, 0xB6, 0x01 - .byte 0x68, 0x01, 0xAC, 0x01, 0xAD, 0x01, 0xAE, 0x01, 0x00, 0x00, 0xAD, 0x01, 0x77, 0x01, 0x40, 0x00 - .byte 0x00, 0x00, 0xAE, 0x01, 0x5A, 0x02, 0x5B, 0x02, 0x00, 0x00, 0xAF, 0x01, 0x60, 0x02, 0x61, 0x02 - .byte 0x00, 0x00, 0xB0, 0x01, 0xA5, 0x02, 0xA6, 0x02, 0x00, 0x00, 0xB1, 0x01, 0x67, 0x01, 0x68, 0x01 - .byte 0x09, 0x01, 0xB2, 0x01, 0x69, 0x01, 0x6A, 0x01, 0x0A, 0x01, 0xB3, 0x01, 0x54, 0x02, 0x55, 0x02 - .byte 0x00, 0x00, 0xB4, 0x01, 0x9F, 0x01, 0xA0, 0x01, 0x5D, 0x01, 0xB5, 0x01, 0xA1, 0x01, 0xA2, 0x01 - .byte 0x00, 0x00, 0xB6, 0x01, 0xA3, 0x01, 0xA4, 0x01, 0x00, 0x00, 0xB7, 0x01, 0xA5, 0x01, 0xA6, 0x01 - .byte 0x00, 0x00, 0xB8, 0x01, 0x56, 0x02, 0x57, 0x02, 0x1D, 0x01, 0xB9, 0x01, 0x58, 0x02, 0x59, 0x02 - .byte 0x00, 0x00 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0001, 0x0002, 0x0003, 0x0001 + .short 0x0002, 0x0004, 0x0005, 0x0002 + .short 0x0003, 0x0006, 0x0007, 0x0003 + .short 0x0004, 0x0008, 0x0009, 0x0004 + .short 0x0005, 0x000A, 0x000B, 0x0005 + .short 0x0006, 0x000C, 0x000D, 0x0006 + .short 0x0007, 0x000E, 0x000F, 0x0007 + .short 0x0008, 0x0010, 0x0011, 0x0008 + .short 0x0009, 0x0012, 0x0013, 0x0009 + .short 0x000A, 0x0014, 0x0013, 0x000A + .short 0x000B, 0x0015, 0x0016, 0x000B + .short 0x000C, 0x0017, 0x0016, 0x000C + .short 0x000D, 0x0297, 0x0298, 0x0000 + .short 0x000E, 0x0299, 0x029A, 0x0000 + .short 0x000F, 0x029B, 0x029C, 0x0000 + .short 0x0010, 0x029D, 0x029E, 0x0000 + .short 0x0011, 0x0018, 0x0019, 0x000D + .short 0x0012, 0x001A, 0x001B, 0x000E + .short 0x0013, 0x001E, 0x001C, 0x000F + .short 0x0014, 0x001E, 0x001D, 0x0010 + .short 0x0015, 0x001E, 0x001F, 0x0011 + .short 0x0016, 0x001E, 0x0020, 0x0012 + .short 0x0017, 0x0021, 0x0022, 0x0013 + .short 0x0018, 0x0021, 0x0023, 0x0014 + .short 0x0019, 0x0018, 0x0024, 0x0015 + .short 0x001A, 0x0018, 0x0025, 0x0016 + .short 0x001B, 0x0026, 0x0027, 0x0017 + .short 0x001C, 0x0028, 0x002A, 0x0018 + .short 0x001D, 0x0029, 0x002A, 0x0019 + .short 0x001E, 0x002B, 0x002C, 0x001A + .short 0x001F, 0x002D, 0x002E, 0x001B + .short 0x0020, 0x002F, 0x0030, 0x001C + .short 0x0021, 0x0031, 0x0032, 0x001D + .short 0x0022, 0x0033, 0x0034, 0x001E + .short 0x0023, 0x0035, 0x0036, 0x001F + .short 0x0024, 0x0033, 0x0037, 0x0020 + .short 0x0025, 0x0038, 0x0039, 0x0021 + .short 0x0026, 0x003A, 0x003B, 0x0022 + .short 0x0027, 0x003A, 0x003C, 0x0023 + .short 0x0028, 0x003A, 0x003D, 0x0024 + .short 0x0029, 0x003A, 0x003E, 0x0025 + .short 0x002A, 0x003F, 0x0040, 0x0026 + .short 0x002B, 0x0047, 0x0048, 0x002C + .short 0x002C, 0x0049, 0x004A, 0x002D + .short 0x002D, 0x0053, 0x0054, 0x003F + .short 0x002E, 0x0055, 0x0056, 0x0040 + .short 0x002F, 0x0055, 0x0057, 0x0041 + .short 0x0030, 0x0055, 0x0058, 0x0042 + .short 0x0031, 0x0055, 0x0059, 0x0043 + .short 0x0032, 0x005A, 0x005B, 0x0044 + .short 0x0033, 0x005C, 0x005D, 0x0045 + .short 0x0034, 0x0055, 0x005E, 0x0046 + .short 0x0035, 0x005F, 0x0060, 0x0047 + .short 0x0036, 0x01D2, 0x01D3, 0x0000 + .short 0x0037, 0x0064, 0x0061, 0x0049 + .short 0x0038, 0x0064, 0x0062, 0x004A + .short 0x0039, 0x0064, 0x0063, 0x004B + .short 0x003A, 0x0064, 0x0065, 0x004C + .short 0x003B, 0x0064, 0x0066, 0x004D + .short 0x003C, 0x0064, 0x0067, 0x004E + .short 0x003D, 0x0064, 0x0068, 0x004F + .short 0x003E, 0x0064, 0x01D5, 0x0000 + .short 0x003F, 0x0069, 0x006A, 0x0050 + .short 0x0040, 0x006B, 0x006C, 0x0051 + .short 0x0041, 0x0041, 0x0042, 0x0027 + .short 0x0042, 0x0041, 0x0043, 0x0028 + .short 0x0043, 0x0041, 0x0044, 0x0029 + .short 0x0044, 0x0041, 0x0045, 0x002A + .short 0x0045, 0x0041, 0x0046, 0x002B + .short 0x0046, 0x0033, 0x004B, 0x002E + .short 0x0047, 0x004C, 0x004D, 0x002F + .short 0x0048, 0x004E, 0x004F, 0x0030 + .short 0x0049, 0x004E, 0x0050, 0x0031 + .short 0x004A, 0x004E, 0x0051, 0x0032 + .short 0x004B, 0x004E, 0x0052, 0x0033 + .short 0x004C, 0x006D, 0x006E, 0x0053 + .short 0x004D, 0x006D, 0x006F, 0x0054 + .short 0x004E, 0x0070, 0x0071, 0x0055 + .short 0x004F, 0x006D, 0x0072, 0x0056 + .short 0x0050, 0x0073, 0x0074, 0x005D + .short 0x0051, 0x0075, 0x0076, 0x005E + .short 0x0052, 0x0077, 0x0078, 0x005F + .short 0x0053, 0x0079, 0x007A, 0x0060 + .short 0x0054, 0x007B, 0x007C, 0x0061 + .short 0x0055, 0x007D, 0x007E, 0x0062 + .short 0x0056, 0x007F, 0x0081, 0x0067 + .short 0x0057, 0x0080, 0x0081, 0x0068 + .short 0x0058, 0x0082, 0x0083, 0x006A + .short 0x0059, 0x0084, 0x0083, 0x006B + .short 0x005A, 0x0085, 0x0086, 0x006C + .short 0x005B, 0x0087, 0x0086, 0x006D + .short 0x005C, 0x0088, 0x0089, 0x006E + .short 0x005D, 0x008A, 0x008B, 0x006F + .short 0x005E, 0x01D6, 0x01D7, 0x0000 + .short 0x005F, 0x01D8, 0x01D9, 0x0000 + .short 0x0060, 0x01DA, 0x01DB, 0x0000 + .short 0x0061, 0x01DC, 0x01DD, 0x0000 + .short 0x0062, 0x01DE, 0x01DF, 0x0000 + .short 0x0063, 0x0188, 0x0189, 0x011E + .short 0x0064, 0x018A, 0x0189, 0x011F + .short 0x0065, 0x01AF, 0x01B0, 0x0165 + .short 0x0066, 0x01B1, 0x01B0, 0x0166 + .short 0x0067, 0x01A9, 0x01AA, 0x0162 + .short 0x0068, 0x0269, 0x026A, 0x0000 + .short 0x0069, 0x0267, 0x0268, 0x0000 + .short 0x006A, 0x0151, 0x0152, 0x0000 + .short 0x006B, 0x01E0, 0x01E1, 0x0000 + .short 0x006C, 0x01E2, 0x01E3, 0x0000 + .short 0x006D, 0x01E4, 0x01E5, 0x0000 + .short 0x006E, 0x01E6, 0x01E7, 0x0000 + .short 0x006F, 0x01E8, 0x01E9, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0000, 0x02BB, 0x02BC, 0x0000 + .short 0x0070, 0x0288, 0x0289, 0x0000 + .short 0x0071, 0x0286, 0x0287, 0x0000 + .short 0x0072, 0x008C, 0x008D, 0x0000 + .short 0x0073, 0x008E, 0x008F, 0x0000 + .short 0x0074, 0x0090, 0x0091, 0x0000 + .short 0x0075, 0x0092, 0x0093, 0x0000 + .short 0x0076, 0x0094, 0x0095, 0x0000 + .short 0x0077, 0x0096, 0x0097, 0x0000 + .short 0x0078, 0x0098, 0x0099, 0x0000 + .short 0x0079, 0x009A, 0x009B, 0x0000 + .short 0x007A, 0x009C, 0x009D, 0x0000 + .short 0x007B, 0x009E, 0x009F, 0x0000 + .short 0x007C, 0x00A0, 0x00A1, 0x0000 + .short 0x007D, 0x00A2, 0x00A3, 0x0000 + .short 0x007E, 0x00A4, 0x00A5, 0x0085 + .short 0x007F, 0x00A6, 0x00A7, 0x0086 + .short 0x0080, 0x00A8, 0x00A9, 0x0087 + .short 0x0081, 0x00AA, 0x00AB, 0x0088 + .short 0x0082, 0x00AC, 0x00AD, 0x0089 + .short 0x0083, 0x00AE, 0x00AF, 0x008A + .short 0x0084, 0x00B0, 0x00B1, 0x008B + .short 0x0085, 0x00B2, 0x00B3, 0x008C + .short 0x0086, 0x00B4, 0x00B5, 0x008D + .short 0x0087, 0x00B6, 0x00B7, 0x008E + .short 0x0088, 0x00B8, 0x00B9, 0x008F + .short 0x0089, 0x00BA, 0x00BB, 0x0090 + .short 0x008A, 0x00BC, 0x00BD, 0x0091 + .short 0x008B, 0x00BE, 0x00BF, 0x0092 + .short 0x008C, 0x00C0, 0x00C1, 0x0093 + .short 0x008D, 0x00C2, 0x00C3, 0x0094 + .short 0x008E, 0x00C4, 0x00C5, 0x0095 + .short 0x008F, 0x00C6, 0x00C7, 0x0096 + .short 0x0090, 0x00C8, 0x00C9, 0x0097 + .short 0x0091, 0x00CA, 0x00CB, 0x0098 + .short 0x0092, 0x00CC, 0x00CD, 0x0099 + .short 0x0093, 0x00CE, 0x00CF, 0x009A + .short 0x0094, 0x00D0, 0x00D1, 0x009B + .short 0x0095, 0x00D2, 0x00D3, 0x009C + .short 0x0096, 0x00D4, 0x00D5, 0x009D + .short 0x0097, 0x00D6, 0x00D7, 0x009E + .short 0x0098, 0x00D8, 0x00D9, 0x009F + .short 0x0099, 0x00DA, 0x00DB, 0x00A0 + .short 0x009A, 0x00DC, 0x00DD, 0x00A1 + .short 0x009B, 0x00DE, 0x00DF, 0x00A2 + .short 0x009C, 0x00E0, 0x00E1, 0x00A3 + .short 0x009D, 0x00E2, 0x00E3, 0x00A4 + .short 0x009E, 0x00E4, 0x00E5, 0x00A5 + .short 0x009F, 0x00E6, 0x00E7, 0x00A6 + .short 0x00A0, 0x00E8, 0x00E9, 0x00A7 + .short 0x00A1, 0x022A, 0x022B, 0x0000 + .short 0x00A2, 0x022C, 0x022D, 0x0000 + .short 0x00A3, 0x022E, 0x022F, 0x0000 + .short 0x00A4, 0x0230, 0x0231, 0x0000 + .short 0x00A5, 0x0232, 0x0233, 0x0000 + .short 0x00A6, 0x0234, 0x0235, 0x0000 + .short 0x00A7, 0x0236, 0x0237, 0x0000 + .short 0x00A8, 0x0238, 0x0239, 0x0000 + .short 0x00A9, 0x023A, 0x023B, 0x0000 + .short 0x00AA, 0x023C, 0x023D, 0x0000 + .short 0x00AB, 0x023E, 0x023F, 0x0000 + .short 0x00AC, 0x0240, 0x0241, 0x0000 + .short 0x00AD, 0x0242, 0x0243, 0x0000 + .short 0x00AE, 0x0244, 0x0245, 0x0000 + .short 0x00AF, 0x0246, 0x0247, 0x0000 + .short 0x00B0, 0x0248, 0x0249, 0x0000 + .short 0x00B1, 0x024A, 0x024B, 0x0000 + .short 0x00B2, 0x00EA, 0x00EB, 0x00A8 + .short 0x00B3, 0x00EC, 0x00ED, 0x00A9 + .short 0x00B4, 0x00EE, 0x00EF, 0x00AA + .short 0x00B5, 0x00F0, 0x00F1, 0x00AB + .short 0x00B6, 0x00F2, 0x00F3, 0x00AC + .short 0x00B7, 0x00F4, 0x00F5, 0x00AD + .short 0x00B8, 0x00F6, 0x00F7, 0x00AE + .short 0x00B9, 0x00F8, 0x00F9, 0x00AF + .short 0x00BA, 0x024C, 0x024D, 0x0000 + .short 0x00BB, 0x024E, 0x024F, 0x0000 + .short 0x00BC, 0x0250, 0x0251, 0x0000 + .short 0x00BD, 0x0252, 0x0253, 0x0000 + .short 0x00BE, 0x00FA, 0x00FB, 0x00B3 + .short 0x00BF, 0x00FC, 0x00FD, 0x00B4 + .short 0x00C0, 0x00FE, 0x00FF, 0x00B5 + .short 0x00C1, 0x0100, 0x0101, 0x00B6 + .short 0x00C2, 0x0102, 0x0103, 0x00B7 + .short 0x00C3, 0x0104, 0x0105, 0x00B8 + .short 0x00C4, 0x00FC, 0x0106, 0x00B9 + .short 0x00C5, 0x0107, 0x0108, 0x00BA + .short 0x00C6, 0x0109, 0x010A, 0x00BB + .short 0x00C7, 0x010B, 0x010C, 0x00BC + .short 0x00C8, 0x010D, 0x010E, 0x00BD + .short 0x00C9, 0x010F, 0x0110, 0x00BE + .short 0x00CA, 0x0111, 0x0112, 0x00BF + .short 0x00CB, 0x0113, 0x0114, 0x00C0 + .short 0x00CC, 0x0115, 0x0116, 0x00C1 + .short 0x00CD, 0x0117, 0x0118, 0x00C2 + .short 0x00CE, 0x0119, 0x011A, 0x00C3 + .short 0x00CF, 0x011B, 0x011C, 0x00C4 + .short 0x00D0, 0x011D, 0x011E, 0x00C5 + .short 0x00D1, 0x011F, 0x0120, 0x00C6 + .short 0x00D2, 0x0121, 0x0122, 0x00C7 + .short 0x00D3, 0x0123, 0x0124, 0x00C8 + .short 0x00D4, 0x0125, 0x0126, 0x00C9 + .short 0x00D5, 0x0127, 0x0128, 0x00CA + .short 0x00D6, 0x0129, 0x012A, 0x00CB + .short 0x00D7, 0x012B, 0x012C, 0x00CC + .short 0x00D8, 0x012D, 0x012E, 0x00CD + .short 0x00D9, 0x012F, 0x0130, 0x00CE + .short 0x00DA, 0x0131, 0x0130, 0x00CF + .short 0x00DB, 0x0132, 0x0133, 0x00D0 + .short 0x00DC, 0x0134, 0x0135, 0x00D1 + .short 0x00DD, 0x0136, 0x0137, 0x00D2 + .short 0x00DE, 0x0138, 0x0139, 0x00D3 + .short 0x00DF, 0x013A, 0x013B, 0x00D4 + .short 0x00E0, 0x013C, 0x013D, 0x00D5 + .short 0x00E1, 0x013E, 0x013F, 0x00D6 + .short 0x00E2, 0x0140, 0x0141, 0x00D7 + .short 0x00E3, 0x0142, 0x0143, 0x00D8 + .short 0x00E4, 0x0144, 0x0145, 0x00D9 + .short 0x00E5, 0x0146, 0x0147, 0x00DA + .short 0x00E6, 0x0148, 0x004D, 0x00DB + .short 0x00E7, 0x0149, 0x014A, 0x00DC + .short 0x00E8, 0x014B, 0x014C, 0x00DD + .short 0x00E9, 0x014D, 0x014E, 0x00DE + .short 0x00EA, 0x014F, 0x0150, 0x00DF + .short 0x00EB, 0x0151, 0x0152, 0x00E0 + .short 0x00EC, 0x0153, 0x0154, 0x00E1 + .short 0x00ED, 0x0155, 0x0156, 0x00FE + .short 0x00EE, 0x0155, 0x0157, 0x00FF + .short 0x00EF, 0x0155, 0x0158, 0x0100 + .short 0x00F0, 0x0155, 0x0159, 0x0101 + .short 0x00F1, 0x0155, 0x015A, 0x0102 + .short 0x00F2, 0x01EA, 0x01EB, 0x0000 + .short 0x00F3, 0x01EC, 0x01ED, 0x0000 + .short 0x00F4, 0x01EE, 0x01EF, 0x0000 + .short 0x00F5, 0x01F0, 0x01F1, 0x0000 + .short 0x00F6, 0x0263, 0x0264, 0x0000 + .short 0x00F7, 0x01F2, 0x01F3, 0x0000 + .short 0x00F8, 0x01F4, 0x01F5, 0x0000 + .short 0x00F9, 0x01F6, 0x01F7, 0x0000 + .short 0x00FA, 0x01F8, 0x01F9, 0x0000 + .short 0x00FB, 0x014F, 0x0292, 0x0000 + .short 0x00FC, 0x0293, 0x0294, 0x0000 + .short 0x00FD, 0x01FA, 0x01FB, 0x0000 + .short 0x00FE, 0x01FC, 0x01FD, 0x0000 + .short 0x00FF, 0x0265, 0x0266, 0x0000 + .short 0x0100, 0x028A, 0x028B, 0x0000 + .short 0x0101, 0x028E, 0x028F, 0x0000 + .short 0x0102, 0x01FE, 0x01FF, 0x0000 + .short 0x0103, 0x027C, 0x027D, 0x0000 + .short 0x0104, 0x027E, 0x027F, 0x0000 + .short 0x0105, 0x0280, 0x0281, 0x0000 + .short 0x0106, 0x0282, 0x0283, 0x0000 + .short 0x0107, 0x028C, 0x028D, 0x0000 + .short 0x0108, 0x0200, 0x0201, 0x0000 + .short 0x0109, 0x0202, 0x0203, 0x0000 + .short 0x010A, 0x02AB, 0x02AC, 0x0000 + .short 0x010B, 0x02B3, 0x02B4, 0x0000 + .short 0x010C, 0x02B5, 0x02B6, 0x0000 + .short 0x010D, 0x02AD, 0x02AE, 0x0000 + .short 0x010E, 0x02AF, 0x02B0, 0x0000 + .short 0x010F, 0x02B1, 0x02B2, 0x0000 + .short 0x0110, 0x0204, 0x0205, 0x0000 + .short 0x0111, 0x0206, 0x0207, 0x0000 + .short 0x0112, 0x0208, 0x0209, 0x0000 + .short 0x0113, 0x026B, 0x026C, 0x0000 + .short 0x0114, 0x026B, 0x026D, 0x0000 + .short 0x0115, 0x026B, 0x026E, 0x0000 + .short 0x0116, 0x026B, 0x026F, 0x0000 + .short 0x0117, 0x026B, 0x0270, 0x0000 + .short 0x0118, 0x026B, 0x0271, 0x0000 + .short 0x0119, 0x026B, 0x0272, 0x0000 + .short 0x011A, 0x026B, 0x0273, 0x0000 + .short 0x011B, 0x026B, 0x0274, 0x0000 + .short 0x011C, 0x026B, 0x0275, 0x0000 + .short 0x011D, 0x026B, 0x0276, 0x0000 + .short 0x011E, 0x026B, 0x0277, 0x0000 + .short 0x011F, 0x026B, 0x0278, 0x0000 + .short 0x0120, 0x026B, 0x0279, 0x0000 + .short 0x0121, 0x026B, 0x027A, 0x0000 + .short 0x0122, 0x026B, 0x027B, 0x0000 + .short 0x0123, 0x020A, 0x020B, 0x0000 + .short 0x0124, 0x020C, 0x020D, 0x0000 + .short 0x0125, 0x020E, 0x020F, 0x0000 + .short 0x0126, 0x0210, 0x0211, 0x0000 + .short 0x0127, 0x0212, 0x0213, 0x0000 + .short 0x0128, 0x0214, 0x0215, 0x0000 + .short 0x0129, 0x0216, 0x0217, 0x0000 + .short 0x012A, 0x02B7, 0x02B8, 0x0000 + .short 0x012B, 0x0218, 0x0219, 0x0000 + .short 0x012C, 0x021A, 0x021B, 0x0000 + .short 0x012D, 0x021C, 0x021D, 0x0000 + .short 0x012E, 0x021E, 0x021F, 0x0000 + .short 0x012F, 0x0220, 0x0221, 0x0000 + .short 0x0130, 0x0222, 0x0223, 0x0000 + .short 0x0131, 0x018D, 0x018E, 0x0121 + .short 0x0132, 0x018D, 0x018F, 0x0122 + .short 0x0133, 0x018D, 0x0190, 0x0123 + .short 0x0134, 0x018D, 0x0191, 0x0124 + .short 0x0135, 0x018D, 0x0192, 0x0125 + .short 0x0136, 0x018D, 0x0193, 0x0126 + .short 0x0137, 0x018D, 0x0194, 0x0127 + .short 0x0138, 0x018D, 0x018E, 0x0128 + .short 0x0139, 0x018D, 0x0195, 0x0129 + .short 0x013A, 0x018D, 0x0192, 0x012A + .short 0x013B, 0x018D, 0x0196, 0x012B + .short 0x013C, 0x018D, 0x0197, 0x012C + .short 0x013D, 0x018D, 0x0194, 0x012D + .short 0x013E, 0x018D, 0x0194, 0x012E + .short 0x013F, 0x018D, 0x0192, 0x012F + .short 0x0140, 0x018D, 0x0191, 0x0130 + .short 0x0141, 0x018D, 0x0192, 0x0131 + .short 0x0142, 0x018D, 0x0190, 0x0132 + .short 0x0143, 0x018D, 0x0195, 0x0133 + .short 0x0144, 0x018D, 0x0192, 0x0134 + .short 0x0145, 0x018D, 0x0192, 0x0135 + .short 0x0146, 0x018D, 0x0195, 0x0136 + .short 0x0147, 0x018D, 0x0198, 0x0137 + .short 0x0148, 0x018D, 0x0199, 0x0138 + .short 0x0149, 0x018D, 0x0199, 0x0139 + .short 0x014A, 0x018D, 0x019A, 0x013A + .short 0x014B, 0x018D, 0x0192, 0x013B + .short 0x014C, 0x018D, 0x019A, 0x013C + .short 0x014D, 0x018D, 0x0191, 0x013D + .short 0x014E, 0x018D, 0x019B, 0x013E + .short 0x014F, 0x018D, 0x018E, 0x013F + .short 0x0150, 0x018D, 0x0192, 0x0140 + .short 0x0151, 0x018D, 0x0191, 0x0141 + .short 0x0152, 0x018D, 0x0199, 0x0142 + .short 0x0153, 0x018D, 0x0196, 0x0143 + .short 0x0154, 0x018D, 0x0193, 0x0144 + .short 0x0155, 0x018D, 0x019C, 0x0145 + .short 0x0156, 0x018D, 0x0196, 0x0146 + .short 0x0157, 0x018D, 0x019C, 0x0147 + .short 0x0158, 0x018D, 0x019D, 0x0148 + .short 0x0159, 0x018D, 0x0197, 0x0149 + .short 0x015A, 0x018D, 0x0192, 0x014A + .short 0x015B, 0x018D, 0x0192, 0x014B + .short 0x015C, 0x018D, 0x0191, 0x014C + .short 0x015D, 0x018D, 0x0192, 0x014D + .short 0x015E, 0x018D, 0x0197, 0x014E + .short 0x015F, 0x018D, 0x0198, 0x014F + .short 0x0160, 0x018D, 0x0191, 0x0150 + .short 0x0161, 0x018D, 0x0197, 0x0151 + .short 0x0162, 0x018D, 0x0196, 0x0152 + .short 0x0163, 0x018D, 0x019D, 0x0000 + .short 0x0164, 0x018D, 0x018E, 0x0000 + .short 0x0165, 0x018D, 0x0195, 0x0000 + .short 0x0166, 0x018D, 0x0192, 0x0000 + .short 0x0167, 0x018D, 0x0190, 0x0000 + .short 0x0168, 0x018D, 0x0197, 0x0000 + .short 0x0169, 0x018D, 0x0199, 0x0000 + .short 0x016A, 0x018D, 0x0192, 0x0000 + .short 0x016B, 0x018D, 0x018F, 0x0000 + .short 0x016C, 0x018D, 0x018E, 0x0000 + .short 0x016D, 0x018D, 0x0196, 0x0000 + .short 0x016E, 0x018D, 0x0262, 0x0000 + .short 0x016F, 0x018D, 0x0197, 0x0000 + .short 0x0170, 0x018D, 0x0192, 0x0000 + .short 0x0171, 0x018D, 0x019B, 0x0000 + .short 0x0172, 0x018D, 0x0197, 0x0000 + .short 0x0173, 0x018D, 0x0192, 0x0000 + .short 0x0174, 0x018D, 0x0192, 0x0000 + .short 0x0175, 0x018D, 0x019C, 0x0000 + .short 0x0176, 0x018D, 0x0192, 0x0000 + .short 0x0177, 0x018D, 0x019C, 0x0000 + .short 0x0178, 0x018D, 0x0194, 0x0000 + .short 0x0179, 0x018D, 0x0199, 0x0000 + .short 0x017A, 0x018D, 0x0198, 0x0000 + .short 0x017B, 0x018D, 0x0192, 0x0000 + .short 0x017C, 0x018D, 0x019C, 0x0000 + .short 0x017D, 0x018D, 0x0192, 0x0000 + .short 0x017E, 0x018D, 0x0192, 0x0000 + .short 0x017F, 0x018D, 0x0197, 0x0000 + .short 0x0180, 0x018D, 0x019C, 0x0000 + .short 0x0181, 0x018D, 0x0262, 0x0000 + .short 0x0182, 0x018D, 0x0192, 0x0000 + .short 0x0183, 0x018D, 0x0192, 0x0000 + .short 0x0184, 0x018D, 0x0193, 0x0000 + .short 0x0185, 0x018D, 0x0191, 0x0000 + .short 0x0186, 0x018D, 0x0195, 0x0000 + .short 0x0187, 0x018D, 0x0192, 0x0000 + .short 0x0188, 0x018D, 0x019D, 0x0000 + .short 0x0189, 0x018D, 0x0262, 0x0000 + .short 0x018A, 0x018D, 0x0192, 0x0000 + .short 0x018B, 0x018D, 0x0198, 0x0000 + .short 0x018C, 0x018D, 0x0191, 0x0000 + .short 0x018D, 0x019E, 0x0192, 0x0153 + .short 0x018E, 0x019E, 0x019D, 0x0154 + .short 0x018F, 0x019E, 0x0190, 0x0155 + .short 0x0190, 0x019E, 0x0192, 0x0156 + .short 0x0191, 0x019E, 0x0190, 0x0157 + .short 0x0192, 0x019E, 0x018E, 0x0158 + .short 0x0193, 0x019E, 0x0190, 0x0159 + .short 0x0194, 0x019E, 0x0192, 0x015A + .short 0x0195, 0x0224, 0x0225, 0x0000 + .short 0x0196, 0x0226, 0x0227, 0x0000 + .short 0x0197, 0x0228, 0x0229, 0x0000 + .short 0x0198, 0x02B9, 0x02BA, 0x0000 + .short 0x0199, 0x02A9, 0x02AA, 0x0000 + .short 0x019A, 0x025E, 0x025F, 0x0000 + .short 0x019B, 0x029F, 0x02A0, 0x0000 + .short 0x019C, 0x02A3, 0x02A4, 0x0000 + .short 0x019D, 0x02A1, 0x02A2, 0x0000 + .short 0x019E, 0x0295, 0x0296, 0x0000 + .short 0x019F, 0x0284, 0x0285, 0x0000 + .short 0x01A0, 0x025C, 0x025D, 0x0000 + .short 0x01A1, 0x0290, 0x0291, 0x0000 + .short 0x01A2, 0x02A7, 0x02A8, 0x0000 + .short 0x01A3, 0x01B7, 0x01B8, 0x0169 + .short 0x01A4, 0x01B9, 0x01BA, 0x016A + .short 0x01A5, 0x015D, 0x015E, 0x0104 + .short 0x01A6, 0x0161, 0x0162, 0x0106 + .short 0x01A7, 0x0163, 0x0164, 0x0107 + .short 0x01A8, 0x0165, 0x0166, 0x0108 + .short 0x01A9, 0x016B, 0x016C, 0x0000 + .short 0x01AA, 0x0175, 0x0176, 0x0000 + .short 0x01AB, 0x01B5, 0x01B6, 0x0168 + .short 0x01AC, 0x01AD, 0x01AE, 0x0000 + .short 0x01AD, 0x0177, 0x0040, 0x0000 + .short 0x01AE, 0x025A, 0x025B, 0x0000 + .short 0x01AF, 0x0260, 0x0261, 0x0000 + .short 0x01B0, 0x02A5, 0x02A6, 0x0000 + .short 0x01B1, 0x0167, 0x0168, 0x0109 + .short 0x01B2, 0x0169, 0x016A, 0x010A + .short 0x01B3, 0x0254, 0x0255, 0x0000 + .short 0x01B4, 0x019F, 0x01A0, 0x015D + .short 0x01B5, 0x01A1, 0x01A2, 0x0000 + .short 0x01B6, 0x01A3, 0x01A4, 0x0000 + .short 0x01B7, 0x01A5, 0x01A6, 0x0000 + .short 0x01B8, 0x0256, 0x0257, 0x011D + .short 0x01B9, 0x0258, 0x0259, 0x0000 .text @@ -401,7 +621,7 @@ _0206E672: bx lr _0206E67C: lsl r1, r0, #0x3 - ldr r0, _0206E6C8 ; =UNK_020F85B6 + ldr r0, _0206E6C8 ; =UNK_020F85B4 + 2 ldrh r0, [r0, r1] bx lr _0206E684: @@ -418,7 +638,7 @@ _0206E68E: bx lr _0206E698: lsl r1, r0, #0x3 - ldr r0, _0206E6D0 ; =UNK_020F85B8 + ldr r0, _0206E6D0 ; =UNK_020F85B4 + 4 ldrh r0, [r0, r1] bx lr _0206E6A0: @@ -428,7 +648,7 @@ _0206E6A0: cmp r0, r1 beq _0206E6B2 lsl r1, r0, #0x3 - ldr r0, _0206E6D4 ; =UNK_020F85BA + ldr r0, _0206E6D4 ; =UNK_020F85B4 + 6 ldrh r0, [r0, r1] bx lr _0206E6B2: @@ -439,10 +659,10 @@ _0206E6B8: .word 0x0000FFFF _0206E6BC: .word UNK_020F85B4 _0206E6C0: .word 0x000002BB _0206E6C4: .word 0x000002BD -_0206E6C8: .word UNK_020F85B6 +_0206E6C8: .word UNK_020F85B4 + 2 _0206E6CC: .word 0x000002BE -_0206E6D0: .word UNK_020F85B8 -_0206E6D4: .word UNK_020F85BA +_0206E6D0: .word UNK_020F85B4 + 4 +_0206E6D4: .word UNK_020F85B4 + 6 thumb_func_start FUN_0206E6D8 FUN_0206E6D8: ; 0x0206E6D8 @@ -507,14 +727,14 @@ _0206E72C: bl AllocAndReadWholeNarcMemberByIdPair pop {r3, pc} _0206E73A: - ldr r1, _0206E760 ; =UNK_020F85B6 + ldr r1, _0206E760 ; =UNK_020F85B4 + 2 lsl r3, r3, #0x3 ldrh r1, [r1, r3] mov r0, #0x10 bl AllocAndReadWholeNarcMemberByIdPair pop {r3, pc} _0206E748: - ldr r1, _0206E764 ; =UNK_020F85B8 + ldr r1, _0206E764 ; =UNK_020F85B4 + 4 lsl r3, r3, #0x3 ldrh r1, [r1, r3] mov r0, #0x10 @@ -525,8 +745,8 @@ _0206E756: pop {r3, pc} nop _0206E75C: .word UNK_020F85B4 -_0206E760: .word UNK_020F85B6 -_0206E764: .word UNK_020F85B8 +_0206E760: .word UNK_020F85B4 + 2 +_0206E764: .word UNK_020F85B4 + 4 thumb_func_start FUN_0206E768 FUN_0206E768: ; 0x0206E768 diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 591bf401..43404100 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -1,9 +1,14 @@ #include "global.h" #define IN_POKEMON_C +#include "proto.h" #include "pokemon.h" #include "heap.h" #include "MI_memory.h" #include "math_util.h" +#include "move_data.h" +#include "string_util.h" +#include "text.h" +#include "constants/abilities.h" #pragma thumb on @@ -12,8 +17,9 @@ void MonDecryptSegment(void * datap, u32 size, u32 key); u16 MonEncryptionLCRNG(u32 * seed); u16 CalcMonChecksum(void * datap, u32 size); void InitBoxMonMoveset(struct BoxPokemon * boxmon); -u32 GetMonDataInternal(struct Pokemon * pokemon, u32 attr, void * ptr); -u32 GetBoxMonDataInternal(struct BoxPokemon * pokemon, u32 attr, void * ptr); +u32 GetMonDataInternal(struct Pokemon * pokemon, int attr, void * ptr); +PokemonDataBlock * GetSubstruct(struct BoxPokemon * boxmon, u32 personality, u32 which_struct); +u32 GetBoxMonDataInternal(struct BoxPokemon * pokemon, int attr, void * ptr); void LoadMonBaseStats_HandleAlternateForme(u32 species, u32 forme, struct BaseStats * baseStats); int ApplyNatureModToStat(u8 nature, u16 statval, u32 statno); @@ -466,7 +472,7 @@ void CalcMonStats(struct Pokemon * pokemon) TryEncryptMon(pokemon, decry); } -u32 GetMonData(struct Pokemon * pokemon, u32 attr, void * dest) +u32 GetMonData(struct Pokemon * pokemon, int attr, void * dest) { u32 ret; u32 checksum; @@ -490,7 +496,7 @@ u32 GetMonData(struct Pokemon * pokemon, u32 attr, void * dest) return ret; } -u32 GetMonDataInternal(struct Pokemon * pokemon, u32 attr, void * dest) +u32 GetMonDataInternal(struct Pokemon * pokemon, int attr, void * dest) { switch (attr) { @@ -525,7 +531,7 @@ u32 GetMonDataInternal(struct Pokemon * pokemon, u32 attr, void * dest) } } -u32 GetBoxMonData(struct BoxPokemon * boxmon, u32 attr, void * dest) +u32 GetBoxMonData(struct BoxPokemon * boxmon, int attr, void * dest) { u32 ret; u32 checksum; @@ -546,3 +552,402 @@ u32 GetBoxMonData(struct BoxPokemon * boxmon, u32 attr, void * dest) } return ret; } + +u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest) +{ + u32 ret = 0; + PokemonDataBlockA * blockA = &GetSubstruct(boxmon, boxmon->pid, 0)->blockA; + PokemonDataBlockB * blockB = &GetSubstruct(boxmon, boxmon->pid, 1)->blockB; + PokemonDataBlockC * blockC = &GetSubstruct(boxmon, boxmon->pid, 2)->blockC; + PokemonDataBlockD * blockD = &GetSubstruct(boxmon, boxmon->pid, 3)->blockD; + + switch (attr) + { + default: + ret = 0; + break; + case MON_DATA_PERSONALITY: + ret = boxmon->pid; + break; + case MON_DATA_PARTY_LOCK: + ret = boxmon->party_lock; + break; + case MON_DATA_BOX_LOCK: + ret = boxmon->box_lock; + break; + case MON_DATA_CHECKSUM_FAILED: + ret = boxmon->checksum_fail; + break; + case MON_DATA_CHECKSUM: + ret = boxmon->checksum; + break; + case MON_DATA_SPECIES_EXISTS: + if (blockA->species != SPECIES_NONE) + ret = TRUE; + else + ret = FALSE; + break; + case MON_DATA_SANITY_IS_EGG: + ret = boxmon->checksum_fail; + if (!ret) + ret = blockB->isEgg; + break; + case MON_DATA_SPECIES2: + ret = blockA->species; + if (ret != SPECIES_NONE && (blockB->isEgg || boxmon->checksum_fail)) + ret = SPECIES_EGG; + break; + case MON_DATA_LEVEL: + ret = CalcLevelBySpeciesAndExp(blockA->species, blockA->exp); + break; + case MON_DATA_SPECIES: + if (boxmon->checksum_fail) + ret = SPECIES_EGG; + else + ret = blockA->species; + break; + case MON_DATA_HELD_ITEM: + ret = blockA->heldItem; + break; + case MON_DATA_OTID: + ret = blockA->otID; + break; + case MON_DATA_EXPERIENCE: + ret = blockA->exp; + break; + case MON_DATA_FRIENDSHIP: + ret = blockA->friendship; + break; + case MON_DATA_ABILITY: + ret = blockA->ability; + break; + case MON_DATA_MARKINGS: + ret = blockA->markings; + break; + case MON_DATA_GAME_LANGUAGE: + ret = blockA->originLanguage; + break; + case MON_DATA_HP_EV: + ret = blockA->hpEV; + break; + case MON_DATA_ATK_EV: + ret = blockA->atkEV; + break; + case MON_DATA_DEF_EV: + ret = blockA->defEV; + break; + case MON_DATA_SPEED_EV: + ret = blockA->spdEV; + break; + case MON_DATA_SPATK_EV: + ret = blockA->spatkEV; + break; + case MON_DATA_SPDEF_EV: + ret = blockA->spdefEV; + break; + case MON_DATA_COOL: + ret = blockA->coolStat; + break; + case MON_DATA_BEAUTY: + ret = blockA->beautyStat; + break; + case MON_DATA_CUTE: + ret = blockA->cuteStat; + break; + case MON_DATA_SMART: + ret = blockA->smartStat; + break; + case MON_DATA_TOUGH: + ret = blockA->toughStat; + break; + case MON_DATA_SHEEN: + ret = blockA->sheen; + break; + case MON_DATA_SINNOH_CHAMP_RIBBON: + case MON_DATA_SINNOH_RIBBON_26: + case MON_DATA_SINNOH_RIBBON_27: + case MON_DATA_SINNOH_RIBBON_28: + case MON_DATA_SINNOH_RIBBON_29: + case MON_DATA_SINNOH_RIBBON_30: + case MON_DATA_SINNOH_RIBBON_31: + case MON_DATA_SINNOH_RIBBON_32: + case MON_DATA_SINNOH_RIBBON_33: + case MON_DATA_SINNOH_RIBBON_34: + case MON_DATA_SINNOH_RIBBON_35: + case MON_DATA_SINNOH_RIBBON_36: + case MON_DATA_SINNOH_RIBBON_37: + case MON_DATA_SINNOH_RIBBON_38: + case MON_DATA_SINNOH_RIBBON_39: + case MON_DATA_SINNOH_RIBBON_40: + case MON_DATA_SINNOH_RIBBON_41: + case MON_DATA_SINNOH_RIBBON_42: + case MON_DATA_SINNOH_RIBBON_43: + case MON_DATA_SINNOH_RIBBON_44: + case MON_DATA_SINNOH_RIBBON_45: + case MON_DATA_SINNOH_RIBBON_46: + case MON_DATA_SINNOH_RIBBON_47: + case MON_DATA_SINNOH_RIBBON_48: + case MON_DATA_SINNOH_RIBBON_49: + case MON_DATA_SINNOH_RIBBON_50: + case MON_DATA_SINNOH_RIBBON_51: + case MON_DATA_SINNOH_RIBBON_52: + case MON_DATA_SINNOH_RIBBON_53: + { + if (blockA->sinnohRibbons & (1ll << (attr - MON_DATA_SINNOH_CHAMP_RIBBON))) + { + ret = TRUE; + } + else + { + ret = FALSE; + } + } + break; + case MON_DATA_MOVE1: + case MON_DATA_MOVE2: + case MON_DATA_MOVE3: + case MON_DATA_MOVE4: + attr -= MON_DATA_MOVE1; + ret = blockB->moves[attr]; + break; + case MON_DATA_MOVE1PP: + case MON_DATA_MOVE2PP: + case MON_DATA_MOVE3PP: + case MON_DATA_MOVE4PP: + attr -= MON_DATA_MOVE1PP; + ret = blockB->movePP[attr]; + break; + case MON_DATA_MOVE1PPUP: + case MON_DATA_MOVE2PPUP: + case MON_DATA_MOVE3PPUP: + case MON_DATA_MOVE4PPUP: + attr -= MON_DATA_MOVE1PPUP; + ret = blockB->movePpUps[attr]; + break; + case MON_DATA_MOVE1MAXPP: + case MON_DATA_MOVE2MAXPP: + case MON_DATA_MOVE3MAXPP: + case MON_DATA_MOVE4MAXPP: + attr -= MON_DATA_MOVE1MAXPP; + ret = FUN_0206AB30(blockB->moves[attr], blockB->movePpUps[attr]); + break; + case MON_DATA_HP_IV: + ret = blockB->hpIV; + break; + case MON_DATA_ATK_IV: + ret = blockB->atkIV; + break; + case MON_DATA_DEF_IV: + ret = blockB->defIV; + break; + case MON_DATA_SPEED_IV: + ret = blockB->spdIV; + break; + case MON_DATA_SPATK_IV: + ret = blockB->spatkIV; + break; + case MON_DATA_SPDEF_IV: + ret = blockB->spdefIV; + break; + case MON_DATA_IS_EGG: + ret = boxmon->checksum_fail; + if (!ret) + ret = blockB->isEgg; + break; + case MON_DATA_HAS_NICKNAME: + ret = blockB->isNicknamed; + break; + case MON_DATA_COOL_RIBBON: + case MON_DATA_HOENN_RIBBON_79: + case MON_DATA_HOENN_RIBBON_80: + case MON_DATA_HOENN_RIBBON_81: + case MON_DATA_HOENN_RIBBON_82: + case MON_DATA_HOENN_RIBBON_83: + case MON_DATA_HOENN_RIBBON_84: + case MON_DATA_HOENN_RIBBON_85: + case MON_DATA_HOENN_RIBBON_86: + case MON_DATA_HOENN_RIBBON_87: + case MON_DATA_HOENN_RIBBON_88: + case MON_DATA_HOENN_RIBBON_89: + case MON_DATA_HOENN_RIBBON_90: + case MON_DATA_HOENN_RIBBON_91: + case MON_DATA_HOENN_RIBBON_92: + case MON_DATA_HOENN_RIBBON_93: + case MON_DATA_HOENN_RIBBON_94: + case MON_DATA_HOENN_RIBBON_95: + case MON_DATA_HOENN_RIBBON_96: + case MON_DATA_HOENN_RIBBON_97: + case MON_DATA_HOENN_RIBBON_98: + case MON_DATA_HOENN_RIBBON_99: + case MON_DATA_HOENN_RIBBON_100: + case MON_DATA_HOENN_RIBBON_101: + case MON_DATA_HOENN_RIBBON_102: + case MON_DATA_HOENN_RIBBON_103: + case MON_DATA_HOENN_RIBBON_104: + case MON_DATA_HOENN_RIBBON_105: + case MON_DATA_HOENN_RIBBON_106: + case MON_DATA_HOENN_RIBBON_107: + case MON_DATA_HOENN_RIBBON_108: + case MON_DATA_HOENN_RIBBON_109: + if (blockB->ribbonFlags & (1ll << (attr - MON_DATA_COOL_RIBBON))) + ret = TRUE; + else + ret = FALSE; + break; + case MON_DATA_FATEFUL_ENCOUNTER: + ret = blockB->fatefulEncounter; + break; + case MON_DATA_GENDER: + ret = blockB->gender; + break; + case MON_DATA_FORME: + ret = blockB->alternateForm; + break; + case MON_DATA_RESERVED_113: + ret = blockB->HGSS_shinyLeaves; + break; + case MON_DATA_RESERVED_114: + ret = blockB->Unused; + break; + case MON_DATA_NICKNAME: + if (boxmon->checksum_fail) + GetSpeciesName(SPECIES_MANAPHY_EGG, 0, dest); + else + { + u16 * dest16 = (u16 *)dest; + for (ret = 0; ret < POKEMON_NAME_LENGTH; ret++) + { + dest16[ret] = blockC->nickname[ret]; + } + dest16[ret] = EOS; + } + break; + case MON_DATA_NICKNAME_3: + ret = blockB->isNicknamed; + // fallthrough + case MON_DATA_NICKNAME_2: + if (boxmon->checksum_fail) + { + u16 * buffer = FUN_0200AA50(SPECIES_MANAPHY_EGG, 0); + FUN_02021A74(dest, buffer); + FUN_02021A20(buffer); + } + else + { + FUN_02021E28(dest, blockC->nickname); + } + break; + case MON_DATA_UNK_120: + ret = blockC->Unused; + break; + case MON_DATA_GAME_VERSION: + ret = blockC->originGame; + break; + case MON_DATA_SINNOH_RIBBON_122: + case MON_DATA_SINNOH_RIBBON_123: + case MON_DATA_SINNOH_RIBBON_124: + case MON_DATA_SINNOH_RIBBON_125: + case MON_DATA_SINNOH_RIBBON_126: + case MON_DATA_SINNOH_RIBBON_127: + case MON_DATA_SINNOH_RIBBON_128: + case MON_DATA_SINNOH_RIBBON_129: + case MON_DATA_SINNOH_RIBBON_130: + case MON_DATA_SINNOH_RIBBON_131: + case MON_DATA_SINNOH_RIBBON_132: + case MON_DATA_SINNOH_RIBBON_133: + case MON_DATA_SINNOH_RIBBON_134: + case MON_DATA_SINNOH_RIBBON_135: + case MON_DATA_SINNOH_RIBBON_136: + case MON_DATA_SINNOH_RIBBON_137: + case MON_DATA_SINNOH_RIBBON_138: + case MON_DATA_SINNOH_RIBBON_139: + case MON_DATA_SINNOH_RIBBON_140: + case MON_DATA_SINNOH_RIBBON_141: + case MON_DATA_SINNOH_RIBBON_142: + if (blockC->sinnohRibbons2 & (1ll << (attr - MON_DATA_SINNOH_RIBBON_122))) + ret = TRUE; + else + ret = FALSE; + break; + case MON_DATA_OT_NAME: + { + u16 * dest16 = (u16 *)dest; + for (ret = 0; ret < OT_NAME_LENGTH; ret++) + dest16[ret] = blockD->otTrainerName[ret]; + dest16[ret] = EOS; + } + break; + case MON_DATA_OT_NAME_2: + FUN_02021E28(dest, blockD->otTrainerName); + break; + case MON_DATA_EGG_MET_YEAR: + ret = blockD->dateEggReceived[0]; + break; + case MON_DATA_EGG_MET_MONTH: + ret = blockD->dateEggReceived[1]; + break; + case MON_DATA_EGG_MET_DAY: + ret = blockD->dateEggReceived[2]; + break; + case MON_DATA_MET_YEAR: + ret = blockD->dateMet[0]; + break; + case MON_DATA_MET_MONTH: + ret = blockD->dateMet[1]; + break; + case MON_DATA_MET_DAY: + ret = blockD->dateMet[2]; + break; + case MON_DATA_EGG_MET_LOCATION: + ret = blockD->DP_EggLocation; + break; + case MON_DATA_MET_LOCATION: + ret = blockD->DP_MetLocation; + break; + case MON_DATA_POKERUS: + ret = blockD->pokerus; + break; + case MON_DATA_POKEBALL: + ret = blockD->pokeball; + break; + case MON_DATA_MET_LEVEL: + ret = blockD->metLevel; + break; + case MON_DATA_MET_GENDER: + ret = blockD->metGender; + break; + case MON_DATA_ENCOUNTER_TYPE: + ret = blockD->encounterType; + break; + case MON_DATA_RESERVED_158: + ret = blockD->HGSS_Pokeball; + break; + case MON_DATA_IVS_WORD: + ret = (blockB->hpIV) | \ + (blockB->atkIV << 5) | \ + (blockB->defIV << 10) | \ + (blockB->spdIV << 15) | \ + (blockB->spatkIV << 20) | \ + (blockB->spdefIV << 25); + break; + case MON_DATA_UNK_175: + if ((blockA->species == SPECIES_NIDORAN_F || blockA->species == SPECIES_NIDORAN_M) && !blockB->isNicknamed) + ret = FALSE; + else + ret = TRUE; + break; + case MON_DATA_TYPE_1: + case MON_DATA_TYPE_2: + if (blockA->species == SPECIES_ARCEUS && blockA->ability == ABILITY_MULTITYPE) + ret = GetArceusTypeByPlate(FUN_0206E7B8(blockA->heldItem, 1, 0)); + else + { + ret = GetMonBaseStat_HandleFormeConversion(blockA->species, blockB->alternateForm, attr - MON_DATA_TYPE_1 + BASE_TYPE1); + } + break; + case MON_DATA_SPECIES_NAME: + GetSpeciesName(blockA->species, 0, dest); + break; + } + return ret; +} diff --git a/arm9/src/string_util.c b/arm9/src/string_util.c index e36f1a30..54ad61fc 100644 --- a/arm9/src/string_util.c +++ b/arm9/src/string_util.c @@ -1,8 +1,5 @@ #include "string_util.h" -#define EOS 0xFFFF -#define NON_DIGIT 0xE2 - const u16 gDigitTable[] = { 0xA2, 0xA3, diff --git a/include/constants/abilities.h b/include/constants/abilities.h new file mode 100644 index 00000000..f107e623 --- /dev/null +++ b/include/constants/abilities.h @@ -0,0 +1,129 @@ +#ifndef POKEDIAMOND_CONSTANTS_ABILITIES_H +#define POKEDIAMOND_CONSTANTS_ABILITIES_H + +#define ABILITY_NONE 0 +#define ABILITY_STENCH 1 +#define ABILITY_DRIZZLE 2 +#define ABILITY_SPEED_BOOST 3 +#define ABILITY_BATTLE_ARMOR 4 +#define ABILITY_STURDY 5 +#define ABILITY_DAMP 6 +#define ABILITY_LIMBER 7 +#define ABILITY_SAND_VEIL 8 +#define ABILITY_STATIC 9 +#define ABILITY_VOLT_ABSORB 10 +#define ABILITY_WATER_ABSORB 11 +#define ABILITY_OBLIVIOUS 12 +#define ABILITY_CLOUD_NINE 13 +#define ABILITY_COMPOUND_EYES 14 +#define ABILITY_INSOMNIA 15 +#define ABILITY_COLOR_CHANGE 16 +#define ABILITY_IMMUNITY 17 +#define ABILITY_FLASH_FIRE 18 +#define ABILITY_SHIELD_DUST 19 +#define ABILITY_OWN_TEMPO 20 +#define ABILITY_SUCTION_CUPS 21 +#define ABILITY_INTIMIDATE 22 +#define ABILITY_SHADOW_TAG 23 +#define ABILITY_ROUGH_SKIN 24 +#define ABILITY_WONDER_GUARD 25 +#define ABILITY_LEVITATE 26 +#define ABILITY_EFFECT_SPORE 27 +#define ABILITY_SYNCHRONIZE 28 +#define ABILITY_CLEAR_BODY 29 +#define ABILITY_NATURAL_CURE 30 +#define ABILITY_LIGHTNING_ROD 31 +#define ABILITY_SERENE_GRACE 32 +#define ABILITY_SWIFT_SWIM 33 +#define ABILITY_CHLOROPHYLL 34 +#define ABILITY_ILLUMINATE 35 +#define ABILITY_TRACE 36 +#define ABILITY_HUGE_POWER 37 +#define ABILITY_POISON_POINT 38 +#define ABILITY_INNER_FOCUS 39 +#define ABILITY_MAGMA_ARMOR 40 +#define ABILITY_WATER_VEIL 41 +#define ABILITY_MAGNET_PULL 42 +#define ABILITY_SOUNDPROOF 43 +#define ABILITY_RAIN_DISH 44 +#define ABILITY_SAND_STREAM 45 +#define ABILITY_PRESSURE 46 +#define ABILITY_THICK_FAT 47 +#define ABILITY_EARLY_BIRD 48 +#define ABILITY_FLAME_BODY 49 +#define ABILITY_RUN_AWAY 50 +#define ABILITY_KEEN_EYE 51 +#define ABILITY_HYPER_CUTTER 52 +#define ABILITY_PICKUP 53 +#define ABILITY_TRUANT 54 +#define ABILITY_HUSTLE 55 +#define ABILITY_CUTE_CHARM 56 +#define ABILITY_PLUS 57 +#define ABILITY_MINUS 58 +#define ABILITY_FORECAST 59 +#define ABILITY_STICKY_HOLD 60 +#define ABILITY_SHED_SKIN 61 +#define ABILITY_GUTS 62 +#define ABILITY_MARVEL_SCALE 63 +#define ABILITY_LIQUID_OOZE 64 +#define ABILITY_OVERGROW 65 +#define ABILITY_BLAZE 66 +#define ABILITY_TORRENT 67 +#define ABILITY_SWARM 68 +#define ABILITY_ROCK_HEAD 69 +#define ABILITY_DROUGHT 70 +#define ABILITY_ARENA_TRAP 71 +#define ABILITY_VITAL_SPIRIT 72 +#define ABILITY_WHITE_SMOKE 73 +#define ABILITY_PURE_POWER 74 +#define ABILITY_SHELL_ARMOR 75 +#define ABILITY_AIR_LOCK 76 +#define ABILITY_TANGLED_FEET 77 +#define ABILITY_MOTOR_DRIVE 78 +#define ABILITY_RIVALRY 79 +#define ABILITY_STEADFAST 80 +#define ABILITY_SNOW_CLOAK 81 +#define ABILITY_GLUTTONY 82 +#define ABILITY_ANGER_POINT 83 +#define ABILITY_UNBURDEN 84 +#define ABILITY_HEATPROOF 85 +#define ABILITY_SIMPLE 86 +#define ABILITY_DRY_SKIN 87 +#define ABILITY_DOWNLOAD 88 +#define ABILITY_IRON_FIST 89 +#define ABILITY_POISON_HEAL 90 +#define ABILITY_ADAPTABILITY 91 +#define ABILITY_SKILL_LINK 92 +#define ABILITY_HYDRATION 93 +#define ABILITY_SOLAR_POWER 94 +#define ABILITY_QUICK_FEET 95 +#define ABILITY_NORMALIZE 96 +#define ABILITY_SNIPER 97 +#define ABILITY_MAGIC_GUARD 98 +#define ABILITY_NO_GUARD 99 +#define ABILITY_STALL 100 +#define ABILITY_TECHNICIAN 101 +#define ABILITY_LEAF_GUARD 102 +#define ABILITY_KLUTZ 103 +#define ABILITY_MOLD_BREAKER 104 +#define ABILITY_SUPER_LUCK 105 +#define ABILITY_AFTERMATH 106 +#define ABILITY_ANTICIPATION 107 +#define ABILITY_FOREWARN 108 +#define ABILITY_UNAWARE 109 +#define ABILITY_TINTED_LENS 110 +#define ABILITY_FILTER 111 +#define ABILITY_SLOW_START 112 +#define ABILITY_SCRAPPY 113 +#define ABILITY_STORM_DRAIN 114 +#define ABILITY_ICE_BODY 115 +#define ABILITY_SOLID_ROCK 116 +#define ABILITY_SNOW_WARNING 117 +#define ABILITY_HONEY_GATHER 118 +#define ABILITY_FRISK 119 +#define ABILITY_RECKLESS 120 +#define ABILITY_MULTITYPE 121 +#define ABILITY_FLOWER_GIFT 122 +#define ABILITY_BAD_DREAMS 123 + +#endif //POKEDIAMOND_CONSTANTS_ABILITIES_H diff --git a/include/move_data.h b/include/move_data.h new file mode 100644 index 00000000..d4e3c128 --- /dev/null +++ b/include/move_data.h @@ -0,0 +1,6 @@ +#ifndef POKEDIAMOND_MOVE_DATA_H +#define POKEDIAMOND_MOVE_DATA_H + +u32 FUN_0206AB30(u16 move, u8 ppUp); + +#endif //POKEDIAMOND_MOVE_DATA_H diff --git a/include/pokemon.h b/include/pokemon.h index e2a32e83..7cc5ef5d 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -9,9 +9,9 @@ #include "seals.h" #define MON_DATA_PERSONALITY 0 -#define MON_DATA_IS_ENCRYPTED 1 -#define MON_DATA_CONTROL_4_1 2 -#define MON_DATA_CONTROL_4_2 3 +#define MON_DATA_PARTY_LOCK 1 +#define MON_DATA_BOX_LOCK 2 +#define MON_DATA_CHECKSUM_FAILED 3 #define MON_DATA_CHECKSUM 4 #define MON_DATA_SPECIES 5 #define MON_DATA_HELD_ITEM 6 @@ -34,7 +34,34 @@ #define MON_DATA_TOUGH 23 #define MON_DATA_SHEEN 24 #define MON_DATA_SINNOH_CHAMP_RIBBON 25 -// TODO: ribbon flags through 53 +#define MON_DATA_SINNOH_RIBBON_26 26 +#define MON_DATA_SINNOH_RIBBON_27 27 +#define MON_DATA_SINNOH_RIBBON_28 28 +#define MON_DATA_SINNOH_RIBBON_29 29 +#define MON_DATA_SINNOH_RIBBON_30 30 +#define MON_DATA_SINNOH_RIBBON_31 31 +#define MON_DATA_SINNOH_RIBBON_32 32 +#define MON_DATA_SINNOH_RIBBON_33 33 +#define MON_DATA_SINNOH_RIBBON_34 34 +#define MON_DATA_SINNOH_RIBBON_35 35 +#define MON_DATA_SINNOH_RIBBON_36 36 +#define MON_DATA_SINNOH_RIBBON_37 37 +#define MON_DATA_SINNOH_RIBBON_38 38 +#define MON_DATA_SINNOH_RIBBON_39 39 +#define MON_DATA_SINNOH_RIBBON_40 40 +#define MON_DATA_SINNOH_RIBBON_41 41 +#define MON_DATA_SINNOH_RIBBON_42 42 +#define MON_DATA_SINNOH_RIBBON_43 43 +#define MON_DATA_SINNOH_RIBBON_44 44 +#define MON_DATA_SINNOH_RIBBON_45 45 +#define MON_DATA_SINNOH_RIBBON_46 46 +#define MON_DATA_SINNOH_RIBBON_47 47 +#define MON_DATA_SINNOH_RIBBON_48 48 +#define MON_DATA_SINNOH_RIBBON_49 49 +#define MON_DATA_SINNOH_RIBBON_50 50 +#define MON_DATA_SINNOH_RIBBON_51 51 +#define MON_DATA_SINNOH_RIBBON_52 52 +#define MON_DATA_SINNOH_RIBBON_53 53 #define MON_DATA_MOVE1 54 #define MON_DATA_MOVE2 55 #define MON_DATA_MOVE3 56 @@ -60,7 +87,37 @@ #define MON_DATA_IS_EGG 76 #define MON_DATA_HAS_NICKNAME 77 #define MON_DATA_COOL_RIBBON 78 -// TODO: ribbon flags through 109 +#define MON_DATA_HOENN_RIBBON_79 79 +#define MON_DATA_HOENN_RIBBON_80 80 +#define MON_DATA_HOENN_RIBBON_81 81 +#define MON_DATA_HOENN_RIBBON_82 82 +#define MON_DATA_HOENN_RIBBON_83 83 +#define MON_DATA_HOENN_RIBBON_84 84 +#define MON_DATA_HOENN_RIBBON_85 85 +#define MON_DATA_HOENN_RIBBON_86 86 +#define MON_DATA_HOENN_RIBBON_87 87 +#define MON_DATA_HOENN_RIBBON_88 88 +#define MON_DATA_HOENN_RIBBON_89 89 +#define MON_DATA_HOENN_RIBBON_90 90 +#define MON_DATA_HOENN_RIBBON_91 91 +#define MON_DATA_HOENN_RIBBON_92 92 +#define MON_DATA_HOENN_RIBBON_93 93 +#define MON_DATA_HOENN_RIBBON_94 94 +#define MON_DATA_HOENN_RIBBON_95 95 +#define MON_DATA_HOENN_RIBBON_96 96 +#define MON_DATA_HOENN_RIBBON_97 97 +#define MON_DATA_HOENN_RIBBON_98 98 +#define MON_DATA_HOENN_RIBBON_99 99 +#define MON_DATA_HOENN_RIBBON_100 100 +#define MON_DATA_HOENN_RIBBON_101 101 +#define MON_DATA_HOENN_RIBBON_102 102 +#define MON_DATA_HOENN_RIBBON_103 103 +#define MON_DATA_HOENN_RIBBON_104 104 +#define MON_DATA_HOENN_RIBBON_105 105 +#define MON_DATA_HOENN_RIBBON_106 106 +#define MON_DATA_HOENN_RIBBON_107 107 +#define MON_DATA_HOENN_RIBBON_108 108 +#define MON_DATA_HOENN_RIBBON_109 109 #define MON_DATA_FATEFUL_ENCOUNTER 110 #define MON_DATA_GENDER 111 #define MON_DATA_FORME 112 @@ -73,7 +130,27 @@ #define MON_DATA_NICKNAME_3 119 // ??? #define MON_DATA_UNK_120 120 #define MON_DATA_GAME_VERSION 121 -// TODO: ribbon flags 122-142 +#define MON_DATA_SINNOH_RIBBON_122 122 +#define MON_DATA_SINNOH_RIBBON_123 123 +#define MON_DATA_SINNOH_RIBBON_124 124 +#define MON_DATA_SINNOH_RIBBON_125 125 +#define MON_DATA_SINNOH_RIBBON_126 126 +#define MON_DATA_SINNOH_RIBBON_127 127 +#define MON_DATA_SINNOH_RIBBON_128 128 +#define MON_DATA_SINNOH_RIBBON_129 129 +#define MON_DATA_SINNOH_RIBBON_130 130 +#define MON_DATA_SINNOH_RIBBON_131 131 +#define MON_DATA_SINNOH_RIBBON_132 132 +#define MON_DATA_SINNOH_RIBBON_133 133 +#define MON_DATA_SINNOH_RIBBON_134 134 +#define MON_DATA_SINNOH_RIBBON_135 135 +#define MON_DATA_SINNOH_RIBBON_136 136 +#define MON_DATA_SINNOH_RIBBON_137 137 +#define MON_DATA_SINNOH_RIBBON_138 138 +#define MON_DATA_SINNOH_RIBBON_139 139 +#define MON_DATA_SINNOH_RIBBON_140 140 +#define MON_DATA_SINNOH_RIBBON_141 141 +#define MON_DATA_SINNOH_RIBBON_142 142 #define MON_DATA_OT_NAME 143 #define MON_DATA_OT_NAME_2 144 // ??? #define MON_DATA_EGG_MET_YEAR 145 @@ -103,10 +180,10 @@ #define MON_DATA_SEAL_STRUCT 169 #define MON_DATA_SEAL_COORDS 170 #define MON_DATA_SPECIES_EXISTS 171 -#define MON_DATA_SANITY_CHECK_172 172 +#define MON_DATA_SANITY_IS_EGG 172 #define MON_DATA_SPECIES2 173 #define MON_DATA_IVS_WORD 174 -#define MON_DATA_IS_FEMALE 175 +#define MON_DATA_UNK_175 175 #define MON_DATA_TYPE_1 176 #define MON_DATA_TYPE_2 177 #define MON_DATA_SPECIES_NAME 178 @@ -115,6 +192,9 @@ #define MON_RATIO_FEMALE 254 #define MON_RATIO_UNKNOWN 255 +#define POKEMON_NAME_LENGTH 10 +#define OT_NAME_LENGTH 7 + enum MonGender { MON_MALE = 0, @@ -317,7 +397,7 @@ typedef struct { /* 0x10 */ u32 hpIV:5, atkIV:5, defIV:5, spdIV:5, spatkIV:5, spdefIV:5, isEgg:1, isNicknamed:1; // TODO: Finish HoennRibbonSet /* 0x14 */ u32 ribbonFlags; // cool, ... - /* 0x18 */ u8 fatefulEncounter:1, female:1, genderless:1, alternateForm:5; + /* 0x18 */ u8 fatefulEncounter:1, gender:2, alternateForm:5; /* 0x19 */ u8 HGSS_shinyLeaves; // TODO: Turn into bitfield /* 0x1A */ u16 Unused; /* 0x1C */ u16 Platinum_EggLocation; @@ -326,10 +406,10 @@ typedef struct { typedef struct { /* 0x00 */ u16 nickname[11]; - /* 0x1A */ u8 Unused; - /* 0x1B */ u8 originGame; + /* 0x16 */ u8 Unused; + /* 0x17 */ u8 originGame; // TODO: Finish SinnohRibbonSet2 - /* 0x1C */ u32 sinnohRibbons2; // cool, ... + /* 0x18 */ u64 sinnohRibbons2; // cool, ... } PokemonDataBlockC; typedef struct { @@ -340,7 +420,8 @@ typedef struct { /* 0x18 */ u16 DP_MetLocation; /* 0x1A */ u8 pokerus; /* 0x1B */ u8 pokeball; - /* 0x1C */ u8 flags; + /* 0x1C */ u8 metLevel:7; + u8 metGender:1; /* 0x1D */ u8 encounterType; /* 0x1E */ u16 HGSS_Pokeball; } PokemonDataBlockD; @@ -416,14 +497,14 @@ int CalcLevelBySpeciesAndExp(int species, int experience); u32 GetMonData(); u32 GetBoxMonData(); #else -u32 GetMonData(struct Pokemon * pokemon, u32 attr, void * ptr); -u32 GetBoxMonData(struct BoxPokemon * pokemon, u32 attr, void * ptr); +u32 GetMonData(struct Pokemon * pokemon, int attr, void * ptr); +u32 GetBoxMonData(struct BoxPokemon * pokemon, int attr, void * ptr); #endif -void SetMonDataInternal(struct Pokemon * pokemon, u32 attr, const void * ptr); -void SetMonData(struct Pokemon * pokemon, u32 attr, const void * ptr); -void SetBoxMonData(struct BoxPokemon * pokemon, u32 attr, const void * ptr); -void SetBoxMonDataEncrypted(struct BoxPokemon * pokemon, u32 attr, const void * ptr); -void AddMonData(struct Pokemon * pokemon, u32 attr, u32 amount); -void AddBoxMonData(struct Pokemon * pokemon, u32 attr, u32 amount); +void SetMonDataInternal(struct Pokemon * pokemon, int attr, const void * ptr); +void SetMonData(struct Pokemon * pokemon, int attr, const void * ptr); +void SetBoxMonData(struct BoxPokemon * pokemon, int attr, const void * ptr); +void SetBoxMonDataEncrypted(struct BoxPokemon * pokemon, int attr, const void * ptr); +void AddMonData(struct Pokemon * pokemon, int attr, u32 amount); +void AddBoxMonData(struct Pokemon * pokemon, int attr, u32 amount); #endif //POKEDIAMOND_POKEMON_H diff --git a/include/proto.h b/include/proto.h new file mode 100644 index 00000000..37655429 --- /dev/null +++ b/include/proto.h @@ -0,0 +1,13 @@ +#ifndef POKEDIAMOND_PROTO_H +#define POKEDIAMOND_PROTO_H + +// For homeless function declarations + +u16 * FUN_0200AA50(u16 species, u32 heap_id); +void FUN_02021A74(u16 * dest, u16 * src); +void FUN_02021A20(void * ptr); +void FUN_02021E28(u16 * dest, u16 * src); +u32 FUN_0206E7B8(u16 item, u32 a1, u32 a2); +u32 GetArceusTypeByPlate(u16 plate); + +#endif //POKEDIAMOND_PROTO_H diff --git a/include/string_util.h b/include/string_util.h index 53d4e5f4..e9079229 100644 --- a/include/string_util.h +++ b/include/string_util.h @@ -7,6 +7,9 @@ #include "global.h" +#define EOS 0xFFFF +#define NON_DIGIT 0xE2 + enum PrintingMode { NORMAL, PAD_SPACE, diff --git a/include/text.h b/include/text.h new file mode 100644 index 00000000..cec36a30 --- /dev/null +++ b/include/text.h @@ -0,0 +1,6 @@ +#ifndef POKEDIAMOND_TEXT_H +#define POKEDIAMOND_TEXT_H + +void GetSpeciesName(u16 species, u32 heap_id, u16 * dest); + +#endif //POKEDIAMOND_TEXT_H -- cgit v1.2.3 From e81dfc98e26bece01763110254648d7c20cb198d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jun 2020 11:26:10 -0400 Subject: through SetBoxMonDataInternal --- arm9/asm/pokemon_s.s | 1113 +-------------------------------------- arm9/asm/unk_0206B16C.s | 2 +- arm9/asm/unk_0207FD00.s | 50 +- arm9/global.inc | 2 +- arm9/modules/05/asm/module_05.s | 2 +- arm9/modules/14/asm/module_14.s | 4 +- arm9/modules/83/asm/module_83.s | 122 ++--- arm9/src/pokemon.c | 522 ++++++++++++++++-- include/pokemon.h | 14 +- include/proto.h | 1 + include/seals.h | 4 +- 11 files changed, 602 insertions(+), 1234 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index ecd0ba95..c901ba32 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -24,1081 +24,6 @@ UNK_021C5AC0: ; 0x021C5AC0 .text - thumb_func_start SetMonData -SetMonData: ; 0x02067830 - push {r4-r6, lr} - add r5, r0, #0x0 - ldrh r0, [r5, #0x4] - add r4, r1, #0x0 - add r6, r2, #0x0 - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - bne _02067886 - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonDecryptSegment - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - ldrh r1, [r5, #0x6] - cmp r0, r1 - beq _02067886 - cmp r0, r1 - beq _02067870 - bl ErrorHandling -_02067870: - ldrh r1, [r5, #0x4] - mov r0, #0x4 - orr r0, r1 - strh r0, [r5, #0x4] - ldrh r2, [r5, #0x6] - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment - pop {r4-r6, pc} -_02067886: - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl SetMonDataInternal - ldrh r0, [r5, #0x4] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - bne _020678BC - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonEncryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - strh r0, [r5, #0x6] - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_020678BC: - pop {r4-r6, pc} - .balign 4 - - thumb_func_start SetMonDataInternal -SetMonDataInternal: ; 0x020678C0 - push {r3, lr} - add r3, r0, #0x0 - add r0, r1, #0x0 - sub r0, #0x9f - cmp r0, #0xb - bhi _02067958 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020678D8: ; jump table (using 16-bit offset) - .short _020678F0 - _020678D8 - 2; case 0 - .short _020678F8 - _020678D8 - 2; case 1 - .short _02067900 - _020678D8 - 2; case 2 - .short _02067908 - _020678D8 - 2; case 3 - .short _02067910 - _020678D8 - 2; case 4 - .short _02067918 - _020678D8 - 2; case 5 - .short _02067920 - _020678D8 - 2; case 6 - .short _02067928 - _020678D8 - 2; case 7 - .short _02067930 - _020678D8 - 2; case 8 - .short _02067938 - _020678D8 - 2; case 9 - .short _02067940 - _020678D8 - 2; case 10 - .short _0206794C - _020678D8 - 2; case 11 -_020678F0: - ldr r0, [r2, #0x0] - add r3, #0x88 - str r0, [r3, #0x0] - pop {r3, pc} -_020678F8: - ldrb r0, [r2, #0x0] - add r3, #0x8c - strb r0, [r3, #0x0] - pop {r3, pc} -_02067900: - ldrb r0, [r2, #0x0] - add r3, #0x8d - strb r0, [r3, #0x0] - pop {r3, pc} -_02067908: - ldrh r0, [r2, #0x0] - add r3, #0x8e - strh r0, [r3, #0x0] - pop {r3, pc} -_02067910: - ldrh r0, [r2, #0x0] - add r3, #0x90 - strh r0, [r3, #0x0] - pop {r3, pc} -_02067918: - ldrh r0, [r2, #0x0] - add r3, #0x92 - strh r0, [r3, #0x0] - pop {r3, pc} -_02067920: - ldrh r0, [r2, #0x0] - add r3, #0x94 - strh r0, [r3, #0x0] - pop {r3, pc} -_02067928: - ldrh r0, [r2, #0x0] - add r3, #0x96 - strh r0, [r3, #0x0] - pop {r3, pc} -_02067930: - ldrh r0, [r2, #0x0] - add r3, #0x98 - strh r0, [r3, #0x0] - pop {r3, pc} -_02067938: - ldrh r0, [r2, #0x0] - add r3, #0x9a - strh r0, [r3, #0x0] - pop {r3, pc} -_02067940: - add r3, #0x9c - add r0, r2, #0x0 - add r1, r3, #0x0 - bl CopySealsObject - pop {r3, pc} -_0206794C: - add r3, #0xd4 - add r0, r2, #0x0 - add r1, r3, #0x0 - bl FUN_02029C74 - pop {r3, pc} -_02067958: - add r0, r3, #0x0 - bl SetBoxMonData - pop {r3, pc} - - thumb_func_start SetBoxMonDataEncrypted -SetBoxMonDataEncrypted: ; 0x02067960 - push {r4-r6, lr} - add r5, r0, #0x0 - ldrh r0, [r5, #0x4] - add r4, r1, #0x0 - add r6, r2, #0x0 - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - bne _020679AA - ldrh r2, [r5, #0x6] - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - ldrh r1, [r5, #0x6] - cmp r0, r1 - beq _020679AA - cmp r0, r1 - beq _02067994 - bl ErrorHandling -_02067994: - ldrh r1, [r5, #0x4] - mov r0, #0x4 - orr r0, r1 - strh r0, [r5, #0x4] - ldrh r2, [r5, #0x6] - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment - pop {r4-r6, pc} -_020679AA: - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl SetBoxMonData - ldrh r0, [r5, #0x4] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1f - bne _020679D4 - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - strh r0, [r5, #0x6] - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_020679D4: - pop {r4-r6, pc} - .balign 4 - - thumb_func_start SetBoxMonData -SetBoxMonData: ; 0x020679D8 - push {r4-r7, lr} - sub sp, #0x4c - str r1, [sp, #0x4] - add r1, r0, #0x0 - add r4, r2, #0x0 - ldr r1, [r1, #0x0] - str r0, [sp, #0x0] - mov r2, #0x0 - bl GetSubstruct - add r7, r0, #0x0 - ldr r0, [sp, #0x0] - mov r2, #0x1 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r5, r0, #0x0 - ldr r0, [sp, #0x0] - mov r2, #0x2 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r6, r0, #0x0 - ldr r0, [sp, #0x0] - mov r2, #0x3 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r1, r0, #0x0 - ldr r0, [sp, #0x4] - cmp r0, #0xb2 - bls _02067A20 - b _02067FF6 -_02067A20: - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02067A2C: ; jump table (using 16-bit offset) - .short _02067B92 - _02067A2C - 2; case 0 - .short _02067B9C - _02067A2C - 2; case 1 - .short _02067BBA - _02067A2C - 2; case 2 - .short _02067BD6 - _02067A2C - 2; case 3 - .short _02067BEE - _02067A2C - 2; case 4 - .short _02067BF8 - _02067A2C - 2; case 5 - .short _02067C00 - _02067A2C - 2; case 6 - .short _02067C08 - _02067A2C - 2; case 7 - .short _02067C10 - _02067A2C - 2; case 8 - .short _02067C18 - _02067A2C - 2; case 9 - .short _02067C20 - _02067A2C - 2; case 10 - .short _02067C28 - _02067A2C - 2; case 11 - .short _02067C30 - _02067A2C - 2; case 12 - .short _02067C38 - _02067A2C - 2; case 13 - .short _02067C40 - _02067A2C - 2; case 14 - .short _02067C48 - _02067A2C - 2; case 15 - .short _02067C50 - _02067A2C - 2; case 16 - .short _02067C58 - _02067A2C - 2; case 17 - .short _02067C60 - _02067A2C - 2; case 18 - .short _02067C68 - _02067A2C - 2; case 19 - .short _02067C70 - _02067A2C - 2; case 20 - .short _02067C78 - _02067A2C - 2; case 21 - .short _02067C80 - _02067A2C - 2; case 22 - .short _02067C88 - _02067A2C - 2; case 23 - .short _02067C90 - _02067A2C - 2; case 24 - .short _02067C98 - _02067A2C - 2; case 25 - .short _02067C98 - _02067A2C - 2; case 26 - .short _02067C98 - _02067A2C - 2; case 27 - .short _02067C98 - _02067A2C - 2; case 28 - .short _02067C98 - _02067A2C - 2; case 29 - .short _02067C98 - _02067A2C - 2; case 30 - .short _02067C98 - _02067A2C - 2; case 31 - .short _02067C98 - _02067A2C - 2; case 32 - .short _02067C98 - _02067A2C - 2; case 33 - .short _02067C98 - _02067A2C - 2; case 34 - .short _02067C98 - _02067A2C - 2; case 35 - .short _02067C98 - _02067A2C - 2; case 36 - .short _02067C98 - _02067A2C - 2; case 37 - .short _02067C98 - _02067A2C - 2; case 38 - .short _02067C98 - _02067A2C - 2; case 39 - .short _02067C98 - _02067A2C - 2; case 40 - .short _02067C98 - _02067A2C - 2; case 41 - .short _02067C98 - _02067A2C - 2; case 42 - .short _02067C98 - _02067A2C - 2; case 43 - .short _02067C98 - _02067A2C - 2; case 44 - .short _02067C98 - _02067A2C - 2; case 45 - .short _02067C98 - _02067A2C - 2; case 46 - .short _02067C98 - _02067A2C - 2; case 47 - .short _02067C98 - _02067A2C - 2; case 48 - .short _02067C98 - _02067A2C - 2; case 49 - .short _02067C98 - _02067A2C - 2; case 50 - .short _02067C98 - _02067A2C - 2; case 51 - .short _02067C98 - _02067A2C - 2; case 52 - .short _02067C98 - _02067A2C - 2; case 53 - .short _02067CC6 - _02067A2C - 2; case 54 - .short _02067CC6 - _02067A2C - 2; case 55 - .short _02067CC6 - _02067A2C - 2; case 56 - .short _02067CC6 - _02067A2C - 2; case 57 - .short _02067CD6 - _02067A2C - 2; case 58 - .short _02067CD6 - _02067A2C - 2; case 59 - .short _02067CD6 - _02067A2C - 2; case 60 - .short _02067CD6 - _02067A2C - 2; case 61 - .short _02067CE6 - _02067A2C - 2; case 62 - .short _02067CE6 - _02067A2C - 2; case 63 - .short _02067CE6 - _02067A2C - 2; case 64 - .short _02067CE6 - _02067A2C - 2; case 65 - .short _02067FF6 - _02067A2C - 2; case 66 - .short _02067FF6 - _02067A2C - 2; case 67 - .short _02067FF6 - _02067A2C - 2; case 68 - .short _02067FF6 - _02067A2C - 2; case 69 - .short _02067CF6 - _02067A2C - 2; case 70 - .short _02067D0A - _02067A2C - 2; case 71 - .short _02067D1E - _02067A2C - 2; case 72 - .short _02067D32 - _02067A2C - 2; case 73 - .short _02067D46 - _02067A2C - 2; case 74 - .short _02067D5A - _02067A2C - 2; case 75 - .short _02067D6E - _02067A2C - 2; case 76 - .short _02067D82 - _02067A2C - 2; case 77 - .short _02067D94 - _02067A2C - 2; case 78 - .short _02067D94 - _02067A2C - 2; case 79 - .short _02067D94 - _02067A2C - 2; case 80 - .short _02067D94 - _02067A2C - 2; case 81 - .short _02067D94 - _02067A2C - 2; case 82 - .short _02067D94 - _02067A2C - 2; case 83 - .short _02067D94 - _02067A2C - 2; case 84 - .short _02067D94 - _02067A2C - 2; case 85 - .short _02067D94 - _02067A2C - 2; case 86 - .short _02067D94 - _02067A2C - 2; case 87 - .short _02067D94 - _02067A2C - 2; case 88 - .short _02067D94 - _02067A2C - 2; case 89 - .short _02067D94 - _02067A2C - 2; case 90 - .short _02067D94 - _02067A2C - 2; case 91 - .short _02067D94 - _02067A2C - 2; case 92 - .short _02067D94 - _02067A2C - 2; case 93 - .short _02067D94 - _02067A2C - 2; case 94 - .short _02067D94 - _02067A2C - 2; case 95 - .short _02067D94 - _02067A2C - 2; case 96 - .short _02067D94 - _02067A2C - 2; case 97 - .short _02067D94 - _02067A2C - 2; case 98 - .short _02067D94 - _02067A2C - 2; case 99 - .short _02067D94 - _02067A2C - 2; case 100 - .short _02067D94 - _02067A2C - 2; case 101 - .short _02067D94 - _02067A2C - 2; case 102 - .short _02067D94 - _02067A2C - 2; case 103 - .short _02067D94 - _02067A2C - 2; case 104 - .short _02067D94 - _02067A2C - 2; case 105 - .short _02067D94 - _02067A2C - 2; case 106 - .short _02067D94 - _02067A2C - 2; case 107 - .short _02067D94 - _02067A2C - 2; case 108 - .short _02067D94 - _02067A2C - 2; case 109 - .short _02067DC2 - _02067A2C - 2; case 110 - .short _02067DD6 - _02067A2C - 2; case 111 - .short _02067DEA - _02067A2C - 2; case 112 - .short _02067DFE - _02067A2C - 2; case 113 - .short _02067E06 - _02067A2C - 2; case 114 - .short _02067FF6 - _02067A2C - 2; case 115 - .short _02067E2C - _02067A2C - 2; case 116 - .short _02067E0E - _02067A2C - 2; case 117 - .short _02067E6C - _02067A2C - 2; case 118 - .short _02067E40 - _02067A2C - 2; case 119 - .short _02067E7A - _02067A2C - 2; case 120 - .short _02067E82 - _02067A2C - 2; case 121 - .short _02067E8A - _02067A2C - 2; case 122 - .short _02067E8A - _02067A2C - 2; case 123 - .short _02067E8A - _02067A2C - 2; case 124 - .short _02067E8A - _02067A2C - 2; case 125 - .short _02067E8A - _02067A2C - 2; case 126 - .short _02067E8A - _02067A2C - 2; case 127 - .short _02067E8A - _02067A2C - 2; case 128 - .short _02067E8A - _02067A2C - 2; case 129 - .short _02067E8A - _02067A2C - 2; case 130 - .short _02067E8A - _02067A2C - 2; case 131 - .short _02067E8A - _02067A2C - 2; case 132 - .short _02067E8A - _02067A2C - 2; case 133 - .short _02067E8A - _02067A2C - 2; case 134 - .short _02067E8A - _02067A2C - 2; case 135 - .short _02067E8A - _02067A2C - 2; case 136 - .short _02067E8A - _02067A2C - 2; case 137 - .short _02067E8A - _02067A2C - 2; case 138 - .short _02067E8A - _02067A2C - 2; case 139 - .short _02067E8A - _02067A2C - 2; case 140 - .short _02067E8A - _02067A2C - 2; case 141 - .short _02067E8A - _02067A2C - 2; case 142 - .short _02067ECE - _02067A2C - 2; case 143 - .short _02067EE2 - _02067A2C - 2; case 144 - .short _02067EEE - _02067A2C - 2; case 145 - .short _02067EF6 - _02067A2C - 2; case 146 - .short _02067EFE - _02067A2C - 2; case 147 - .short _02067F06 - _02067A2C - 2; case 148 - .short _02067F0E - _02067A2C - 2; case 149 - .short _02067F16 - _02067A2C - 2; case 150 - .short _02067F1E - _02067A2C - 2; case 151 - .short _02067F26 - _02067A2C - 2; case 152 - .short _02067F2E - _02067A2C - 2; case 153 - .short _02067F36 - _02067A2C - 2; case 154 - .short _02067F3E - _02067A2C - 2; case 155 - .short _02067F52 - _02067A2C - 2; case 156 - .short _02067F66 - _02067A2C - 2; case 157 - .short _02067F6E - _02067A2C - 2; case 158 - .short _02067FF6 - _02067A2C - 2; case 159 - .short _02067FF6 - _02067A2C - 2; case 160 - .short _02067FF6 - _02067A2C - 2; case 161 - .short _02067FF6 - _02067A2C - 2; case 162 - .short _02067FF6 - _02067A2C - 2; case 163 - .short _02067FF6 - _02067A2C - 2; case 164 - .short _02067FF6 - _02067A2C - 2; case 165 - .short _02067FF6 - _02067A2C - 2; case 166 - .short _02067FF6 - _02067A2C - 2; case 167 - .short _02067FF6 - _02067A2C - 2; case 168 - .short _02067FF6 - _02067A2C - 2; case 169 - .short _02067FF6 - _02067A2C - 2; case 170 - .short _02067FF6 - _02067A2C - 2; case 171 - .short _02067FF6 - _02067A2C - 2; case 172 - .short _02067FF6 - _02067A2C - 2; case 173 - .short _02067F76 - _02067A2C - 2; case 174 - .short _02067FF6 - _02067A2C - 2; case 175 - .short _02067FF6 - _02067A2C - 2; case 176 - .short _02067FF6 - _02067A2C - 2; case 177 - .short _02067FDE - _02067A2C - 2; case 178 -_02067B92: - ldr r0, [sp, #0x0] - ldr r1, [r4, #0x0] - add sp, #0x4c - str r1, [r0, #0x0] - pop {r4-r7, pc} -_02067B9C: - bl ErrorHandling - ldr r0, [sp, #0x0] - ldrb r1, [r4, #0x0] - ldrh r2, [r0, #0x4] - mov r0, #0x1 - bic r2, r0 - mov r0, #0x1 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, [sp, #0x0] - add sp, #0x4c - strh r1, [r0, #0x4] - pop {r4-r7, pc} -_02067BBA: - bl ErrorHandling - ldr r0, [sp, #0x0] - ldrh r1, [r0, #0x4] - mov r0, #0x2 - bic r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1e - orr r1, r0 - ldr r0, [sp, #0x0] - add sp, #0x4c - strh r1, [r0, #0x4] - pop {r4-r7, pc} -_02067BD6: - ldr r0, [sp, #0x0] - ldrh r1, [r0, #0x4] - mov r0, #0x4 - bic r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1d - orr r1, r0 - ldr r0, [sp, #0x0] - add sp, #0x4c - strh r1, [r0, #0x4] - pop {r4-r7, pc} -_02067BEE: - ldrh r1, [r4, #0x0] - ldr r0, [sp, #0x0] - add sp, #0x4c - strh r1, [r0, #0x6] - pop {r4-r7, pc} -_02067BF8: - ldrh r0, [r4, #0x0] - add sp, #0x4c - strh r0, [r7, #0x0] - pop {r4-r7, pc} -_02067C00: - ldrh r0, [r4, #0x0] - add sp, #0x4c - strh r0, [r7, #0x2] - pop {r4-r7, pc} -_02067C08: - ldr r0, [r4, #0x0] - add sp, #0x4c - str r0, [r7, #0x4] - pop {r4-r7, pc} -_02067C10: - ldr r0, [r4, #0x0] - add sp, #0x4c - str r0, [r7, #0x8] - pop {r4-r7, pc} -_02067C18: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0xc] - pop {r4-r7, pc} -_02067C20: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0xd] - pop {r4-r7, pc} -_02067C28: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0xe] - pop {r4-r7, pc} -_02067C30: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0xf] - pop {r4-r7, pc} -_02067C38: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x10] - pop {r4-r7, pc} -_02067C40: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x11] - pop {r4-r7, pc} -_02067C48: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x12] - pop {r4-r7, pc} -_02067C50: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x13] - pop {r4-r7, pc} -_02067C58: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x14] - pop {r4-r7, pc} -_02067C60: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x15] - pop {r4-r7, pc} -_02067C68: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x16] - pop {r4-r7, pc} -_02067C70: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x17] - pop {r4-r7, pc} -_02067C78: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x18] - pop {r4-r7, pc} -_02067C80: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x19] - pop {r4-r7, pc} -_02067C88: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x1a] - pop {r4-r7, pc} -_02067C90: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r7, #0x1b] - pop {r4-r7, pc} -_02067C98: - ldrb r4, [r4, #0x0] - ldr r2, [sp, #0x4] - mov r1, #0x0 - sub r2, #0x19 - add r0, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - cmp r4, #0x0 - beq _02067CB6 - ldr r1, [r7, #0x1c] - add sp, #0x4c - orr r0, r1 - str r0, [r7, #0x1c] - pop {r4-r7, pc} -_02067CB6: - mov r1, #0x0 - sub r1, r1, #0x1 - ldr r2, [r7, #0x1c] - eor r0, r1 - and r0, r2 - add sp, #0x4c - str r0, [r7, #0x1c] - pop {r4-r7, pc} -_02067CC6: - ldr r0, [sp, #0x4] - ldrh r1, [r4, #0x0] - sub r0, #0x36 - str r0, [sp, #0x4] - lsl r0, r0, #0x1 - add sp, #0x4c - strh r1, [r5, r0] - pop {r4-r7, pc} -_02067CD6: - ldr r0, [sp, #0x4] - ldrb r1, [r4, #0x0] - sub r0, #0x3a - str r0, [sp, #0x4] - add r0, r5, r0 - strb r1, [r0, #0x8] - add sp, #0x4c - pop {r4-r7, pc} -_02067CE6: - ldr r0, [sp, #0x4] - ldrb r1, [r4, #0x0] - sub r0, #0x3e - str r0, [sp, #0x4] - add r0, r5, r0 - strb r1, [r0, #0xc] - add sp, #0x4c - pop {r4-r7, pc} -_02067CF6: - ldr r2, [r5, #0x10] - mov r0, #0x1f - bic r2, r0 - ldrb r1, [r4, #0x0] - mov r0, #0x1f - add sp, #0x4c - and r0, r1 - orr r0, r2 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D0A: - ldr r1, [r5, #0x10] - ldr r0, _02067FFC ; =0xFFFFFC1F - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x16 - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D1E: - ldr r1, [r5, #0x10] - ldr r0, _02068000 ; =0xFFFF83FF - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x11 - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D32: - ldr r1, [r5, #0x10] - ldr r0, _02068004 ; =0xFFF07FFF - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0xc - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D46: - ldr r1, [r5, #0x10] - ldr r0, _02068008 ; =0xFE0FFFFF - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x7 - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D5A: - ldr r1, [r5, #0x10] - ldr r0, _0206800C ; =0xC1FFFFFF - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x2 - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D6E: - ldr r1, [r5, #0x10] - ldr r0, _02068010 ; =0xBFFFFFFF - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1 - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D82: - ldr r1, [r5, #0x10] - ldr r0, _02068014 ; =0x7FFFFFFF - add sp, #0x4c - and r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1f - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067D94: - ldrb r4, [r4, #0x0] - ldr r2, [sp, #0x4] - mov r1, #0x0 - sub r2, #0x4e - add r0, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - cmp r4, #0x0 - beq _02067DB2 - ldr r1, [r5, #0x14] - add sp, #0x4c - orr r0, r1 - str r0, [r5, #0x14] - pop {r4-r7, pc} -_02067DB2: - mov r1, #0x0 - sub r1, r1, #0x1 - ldr r2, [r5, #0x14] - eor r0, r1 - and r0, r2 - add sp, #0x4c - str r0, [r5, #0x14] - pop {r4-r7, pc} -_02067DC2: - ldrb r2, [r5, #0x18] - ldrb r1, [r4, #0x0] - mov r0, #0x1 - bic r2, r0 - mov r0, #0x1 - and r0, r1 - orr r0, r2 - add sp, #0x4c - strb r0, [r5, #0x18] - pop {r4-r7, pc} -_02067DD6: - ldrb r1, [r5, #0x18] - mov r0, #0x6 - add sp, #0x4c - bic r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1e - lsr r0, r0, #0x1d - orr r0, r1 - strb r0, [r5, #0x18] - pop {r4-r7, pc} -_02067DEA: - ldrb r1, [r5, #0x18] - mov r0, #0xf8 - add sp, #0x4c - bic r1, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1b - lsr r0, r0, #0x18 - orr r0, r1 - strb r0, [r5, #0x18] - pop {r4-r7, pc} -_02067DFE: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r5, #0x19] - pop {r4-r7, pc} -_02067E06: - ldrh r0, [r4, #0x0] - add sp, #0x4c - strh r0, [r5, #0x1a] - pop {r4-r7, pc} -_02067E0E: - ldrh r0, [r7, #0x0] - mov r1, #0x0 - add r2, sp, #0x34 - bl GetSpeciesName - add r0, sp, #0x34 - add r1, r4, #0x0 - bl StringNotEqual - ldr r2, [r5, #0x10] - ldr r1, _02068014 ; =0x7FFFFFFF - lsl r0, r0, #0x1f - and r1, r2 - orr r0, r1 - str r0, [r5, #0x10] -_02067E2C: - mov r1, #0x0 -_02067E2E: - ldrh r0, [r4, #0x0] - add r1, r1, #0x1 - add r4, r4, #0x2 - strh r0, [r6, #0x0] - add r6, r6, #0x2 - cmp r1, #0xb - blo _02067E2E - add sp, #0x4c - pop {r4-r7, pc} -_02067E40: - ldrh r0, [r7, #0x0] - add r2, sp, #0x1c - mov r1, #0x0 - add r2, #0x2 - bl GetSpeciesName - add r0, r4, #0x0 - add r1, sp, #0x8 - mov r2, #0xb - bl FUN_02021EF0 - add r0, sp, #0x1c - add r0, #0x2 - add r1, sp, #0x8 - bl StringNotEqual - ldr r2, [r5, #0x10] - ldr r1, _02068014 ; =0x7FFFFFFF - lsl r0, r0, #0x1f - and r1, r2 - orr r0, r1 - str r0, [r5, #0x10] -_02067E6C: - add r0, r4, #0x0 - add r1, r6, #0x0 - mov r2, #0xb - bl FUN_02021EF0 - add sp, #0x4c - pop {r4-r7, pc} -_02067E7A: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r6, #0x16] - pop {r4-r7, pc} -_02067E82: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r6, #0x17] - pop {r4-r7, pc} -_02067E8A: - ldrb r4, [r4, #0x0] - ldr r2, [sp, #0x4] - mov r1, #0x0 - sub r2, #0x7a - add r0, r4, #0x0 - str r2, [sp, #0x4] - bl _ll_shl - cmp r4, #0x0 - beq _02067EB2 - add r4, r6, #0x0 - add r4, #0x18 - ldr r3, [r6, #0x18] - ldr r2, [r4, #0x4] - orr r0, r3 - orr r1, r2 - str r0, [r6, #0x18] - add sp, #0x4c - str r1, [r4, #0x4] - pop {r4-r7, pc} -_02067EB2: - add r4, r6, #0x0 - mov r5, #0x0 - mvn r5, r5 - add r4, #0x18 - ldr r3, [r6, #0x18] - eor r0, r5 - ldr r2, [r4, #0x4] - eor r1, r5 - and r0, r3 - and r1, r2 - str r0, [r6, #0x18] - add sp, #0x4c - str r1, [r4, #0x4] - pop {r4-r7, pc} -_02067ECE: - mov r2, #0x0 -_02067ED0: - ldrh r0, [r4, #0x0] - add r2, r2, #0x1 - add r4, r4, #0x2 - strh r0, [r1, #0x0] - add r1, r1, #0x2 - cmp r2, #0x8 - blo _02067ED0 - add sp, #0x4c - pop {r4-r7, pc} -_02067EE2: - add r0, r4, #0x0 - mov r2, #0x8 - bl FUN_02021EF0 - add sp, #0x4c - pop {r4-r7, pc} -_02067EEE: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x10] - pop {r4-r7, pc} -_02067EF6: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x11] - pop {r4-r7, pc} -_02067EFE: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x12] - pop {r4-r7, pc} -_02067F06: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x13] - pop {r4-r7, pc} -_02067F0E: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x14] - pop {r4-r7, pc} -_02067F16: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x15] - pop {r4-r7, pc} -_02067F1E: - ldrh r0, [r4, #0x0] - add sp, #0x4c - strh r0, [r1, #0x16] - pop {r4-r7, pc} -_02067F26: - ldrh r0, [r4, #0x0] - add sp, #0x4c - strh r0, [r1, #0x18] - pop {r4-r7, pc} -_02067F2E: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x1a] - pop {r4-r7, pc} -_02067F36: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x1b] - pop {r4-r7, pc} -_02067F3E: - ldrb r3, [r1, #0x1c] - ldrb r2, [r4, #0x0] - mov r0, #0x7f - bic r3, r0 - mov r0, #0x7f - and r0, r2 - orr r0, r3 - strb r0, [r1, #0x1c] - add sp, #0x4c - pop {r4-r7, pc} -_02067F52: - ldrb r2, [r1, #0x1c] - mov r0, #0x80 - add sp, #0x4c - bic r2, r0 - ldrb r0, [r4, #0x0] - lsl r0, r0, #0x1f - lsr r0, r0, #0x18 - orr r0, r2 - strb r0, [r1, #0x1c] - pop {r4-r7, pc} -_02067F66: - ldrb r0, [r4, #0x0] - add sp, #0x4c - strb r0, [r1, #0x1d] - pop {r4-r7, pc} -_02067F6E: - ldrh r0, [r4, #0x0] - add sp, #0x4c - strh r0, [r1, #0x1e] - pop {r4-r7, pc} -_02067F76: - ldr r2, [r5, #0x10] - mov r0, #0x1f - bic r2, r0 - ldr r1, [r4, #0x0] - mov r0, #0x1f - and r1, r0 - and r0, r1 - add r1, r2, #0x0 - orr r1, r0 - ldr r0, _02067FFC ; =0xFFFFFC1F - str r1, [r5, #0x10] - and r1, r0 - ldr r0, [r4, #0x0] - add sp, #0x4c - lsr r0, r0, #0x5 - lsl r0, r0, #0x1b - lsr r0, r0, #0x16 - orr r1, r0 - ldr r0, _02068000 ; =0xFFFF83FF - str r1, [r5, #0x10] - and r1, r0 - ldr r0, [r4, #0x0] - lsr r0, r0, #0xa - lsl r0, r0, #0x1b - lsr r0, r0, #0x11 - orr r1, r0 - ldr r0, _02068004 ; =0xFFF07FFF - str r1, [r5, #0x10] - and r1, r0 - ldr r0, [r4, #0x0] - lsr r0, r0, #0xf - lsl r0, r0, #0x1b - lsr r0, r0, #0xc - orr r1, r0 - ldr r0, _02068008 ; =0xFE0FFFFF - str r1, [r5, #0x10] - and r1, r0 - ldr r0, [r4, #0x0] - lsr r0, r0, #0x14 - lsl r0, r0, #0x1b - lsr r0, r0, #0x7 - orr r1, r0 - ldr r0, _0206800C ; =0xC1FFFFFF - str r1, [r5, #0x10] - and r1, r0 - ldr r0, [r4, #0x0] - lsr r0, r0, #0x19 - lsl r0, r0, #0x1b - lsr r0, r0, #0x2 - orr r0, r1 - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02067FDE: - ldrh r0, [r7, #0x0] - mov r1, #0x0 - bl FUN_0200AA50 - add r4, r0, #0x0 - add r1, r6, #0x0 - mov r2, #0xb - bl FUN_02021EF0 - add r0, r4, #0x0 - bl FUN_02021A20 -_02067FF6: - add sp, #0x4c - pop {r4-r7, pc} - nop -_02067FFC: .word 0xFFFFFC1F -_02068000: .word 0xFFFF83FF -_02068004: .word 0xFFF07FFF -_02068008: .word 0xFE0FFFFF -_0206800C: .word 0xC1FFFFFF -_02068010: .word 0xBFFFFFFF -_02068014: .word 0x7FFFFFFF - thumb_func_start AddMonPartyStatEncrypted AddMonPartyStatEncrypted: ; 0x02068018 push {r4-r6, lr} @@ -4317,17 +3242,17 @@ _0206978A: ldr r2, [sp, #0x8] add r0, r5, #0x0 add r1, #0x36 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3a add r2, r7, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3e add r2, r6, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData ldr r0, [sp, #0x8] add r4, r4, #0x1 add r0, r0, #0x2 @@ -4359,7 +3284,7 @@ FUN_020697D4: ; 0x020697D4 add r1, #0x36 add r2, sp, #0x14 add r5, r0, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r1, r4, #0x0 add r0, r5, #0x0 add r1, #0x3e @@ -4376,7 +3301,7 @@ FUN_020697D4: ; 0x020697D4 add r0, r5, #0x0 add r1, r4, #0x0 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData pop {r3-r5} pop {r3} add sp, #0x10 @@ -4540,35 +3465,35 @@ FUN_020698E8: ; 0x020698E8 add r0, r5, #0x0 add r1, #0x36 add r2, #0x2 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r1, r4, #0x0 add r2, sp, #0x0 add r0, r5, #0x0 add r1, #0x3a add r2, #0x3 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r4, #0x3e add r2, sp, #0x0 add r0, r5, #0x0 add r1, r4, #0x0 add r2, #0x1 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r1, r6, #0x0 add r0, r5, #0x0 add r1, #0x36 add r2, sp, #0x4 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r1, r6, #0x0 add r2, sp, #0x0 add r0, r5, #0x0 add r1, #0x3a add r2, #0x2 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r6, #0x3e add r0, r5, #0x0 add r1, r6, #0x0 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add sp, #0x8 pop {r4-r6, pc} .balign 4 @@ -5304,7 +4229,7 @@ FUN_02069ECC: ; 0x02069ECC add r0, r5, #0x0 mov r1, #0x70 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData _02069F1C: add sp, #0x4 pop {r3-r6, pc} @@ -5497,15 +4422,15 @@ FUN_0206A054: ; 0x0206A054 ldr r2, _0206A090 ; =gGameVersion add r0, r4, #0x0 mov r1, #0x79 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0x0 mov r1, #0x9a add r2, sp, #0x18 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0x0 mov r1, #0x9d add r2, sp, #0x20 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add sp, #0x4 pop {r3-r4} pop {r3} @@ -5712,19 +4637,19 @@ FUN_0206A1CC: ; 0x0206A1CC add r0, r5, #0x0 mov r1, #0xa add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData b _0206A230 _0206A21A: add r0, r5, #0x0 mov r1, #0xa add r2, sp, #0x4 - bl SetBoxMonDataEncrypted + bl SetBoxMonData b _0206A230 _0206A226: add r0, r5, #0x0 mov r1, #0xa add r2, sp, #0x4 - bl SetBoxMonDataEncrypted + bl SetBoxMonData _0206A230: add r0, r5, #0x0 add r1, r7, #0x0 @@ -7034,7 +5959,7 @@ _0206AAC6: add r0, r5, #0x0 add r1, #0x3a add r2, sp, #0x4 - bl SetBoxMonDataEncrypted + bl SetBoxMonData _0206AAF0: add r4, r4, #0x1 cmp r4, #0x4 diff --git a/arm9/asm/unk_0206B16C.s b/arm9/asm/unk_0206B16C.s index 3d75fe2c..f454c441 100644 --- a/arm9/asm/unk_0206B16C.s +++ b/arm9/asm/unk_0206B16C.s @@ -635,7 +635,7 @@ _0206B5C4: add r0, r1, r0 ldr r2, [sp, #0x18] add r1, r7, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData bl FUN_02022830 pop {r3-r7, pc} .balign 4 diff --git a/arm9/asm/unk_0207FD00.s b/arm9/asm/unk_0207FD00.s index 8103e3c4..1f17ee0a 100644 --- a/arm9/asm/unk_0207FD00.s +++ b/arm9/asm/unk_0207FD00.s @@ -1662,7 +1662,7 @@ _02080A66: add r0, r4, #0x0 mov r1, #0x97 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0x0 mov r1, #0x94 mov r2, #0x0 @@ -1671,7 +1671,7 @@ _02080A66: add r0, r4, #0x0 mov r1, #0x91 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0x0 mov r1, #0x95 mov r2, #0x0 @@ -1680,7 +1680,7 @@ _02080A66: add r0, r4, #0x0 mov r1, #0x92 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0x0 mov r1, #0x96 mov r2, #0x0 @@ -1689,7 +1689,7 @@ _02080A66: add r0, r4, #0x0 mov r1, #0x93 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData _02080ACC: add r0, r4, #0x0 add r1, r5, #0x0 @@ -1723,15 +1723,15 @@ FUN_02080AE4: ; 0x02080AE4 add r0, r5, #0x0 mov r1, #0x7 add r2, sp, #0x4 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r5, #0x0 mov r1, #0x9c add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r5, #0x0 mov r1, #0x90 add r2, r4, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0x0 bl FUN_02021A20 add sp, #0x8 @@ -1751,19 +1751,19 @@ FUN_02080B30: ; 0x02080B30 bne _02080B76 add r0, r5, #0x0 mov r1, #0x97 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r5, #0x0 mov r1, #0x91 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r5, #0x0 mov r1, #0x92 add r2, sp, #0x4 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r5, #0x0 mov r1, #0x93 add r2, sp, #0x8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add sp, #0x10 pop {r3-r5} pop {r3} @@ -1772,19 +1772,19 @@ FUN_02080B30: ; 0x02080B30 _02080B76: add r0, r5, #0x0 mov r1, #0x98 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r5, #0x0 mov r1, #0x94 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r5, #0x0 mov r1, #0x95 add r2, sp, #0x4 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r5, #0x0 mov r1, #0x96 add r2, sp, #0x8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add sp, #0x10 pop {r3-r5} pop {r3} @@ -1803,36 +1803,36 @@ FUN_02080BA8: ; 0x02080BA8 add r2, sp, #0x0 bne _02080BE0 mov r1, #0x97 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0x0 mov r1, #0x91 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0x0 mov r1, #0x92 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0x0 mov r1, #0x93 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add sp, #0x4 pop {r3-r4, pc} _02080BE0: mov r1, #0x98 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0x0 mov r1, #0x94 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0x0 mov r1, #0x95 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0x0 mov r1, #0x96 add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add sp, #0x4 pop {r3-r4, pc} @@ -1848,7 +1848,7 @@ FUN_02080C08: ; 0x02080C08 add r0, r4, #0x0 mov r1, #0x9b add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add sp, #0x4 pop {r3-r4, pc} .balign 4 @@ -1860,5 +1860,5 @@ FUN_02080C28: ; 0x02080C28 str r1, [sp, #0x0] mov r1, #0x6e add r2, sp, #0x0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData pop {r3, pc} diff --git a/arm9/global.inc b/arm9/global.inc index c35613ab..f7346352 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4722,7 +4722,7 @@ .extern GetMonData .extern GetBoxMonData .extern SetMonData -.extern SetBoxMonDataEncrypted +.extern SetBoxMonData .extern AddMonPartyStatEncrypted .extern AllocAndLoadMonPersonal .extern GetPersonalAttr diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 442a394e..cb8c25bd 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -43401,7 +43401,7 @@ MOD05_021EC744: ; 0x021EC744 add r0, r4, #0 mov r1, #8 add r2, sp, #0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0 bl CalcBoxMonLevelEncrypted add r4, r0, #0 diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index 7b09367a..e8b7dfbc 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -9557,7 +9557,7 @@ MOD14_021DC1AC: ; 0x021DC1AC ldr r0, [r4, #0x4c] mov r1, #0xb add r2, sp, #0 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0 bl MOD14_021DC3CC cmp r0, #0 @@ -9623,7 +9623,7 @@ _021DC24A: ldr r0, [r4] mov r1, #6 add r2, sp, #0x1c - bl SetBoxMonDataEncrypted + bl SetBoxMonData _021DC254: ldr r0, [r4] mov r1, #5 diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 21f1b081..1dbf90c3 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -21876,7 +21876,7 @@ MOD83_02237F6C: ; 0x02237F6C add r0, r4, #0 mov r1, #0 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0xb mov r2, #0 @@ -21887,7 +21887,7 @@ MOD83_02237F6C: ; 0x02237F6C add r0, r4, #0 mov r1, #5 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0xc mov r2, #0 @@ -21903,7 +21903,7 @@ _02237FCE: add r0, r4, #0 mov r1, #6 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #1 mov r2, #0 @@ -21912,7 +21912,7 @@ _02237FCE: add r0, r4, #0 mov r1, #7 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x19 mov r2, #0 @@ -21921,13 +21921,13 @@ _02237FCE: add r0, r4, #0 mov r1, #8 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData mov r0, #0x46 str r0, [sp, #8] add r0, r4, #0 mov r1, #9 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 add r1, r4, #0 bl MOD83_02237F04 @@ -21935,7 +21935,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0xa add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #8 mov r2, #0 @@ -21944,7 +21944,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0xb add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #3 mov r2, #0 @@ -21953,7 +21953,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0xc add r2, sp, #4 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x1a mov r2, #0 @@ -21962,7 +21962,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0xd add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x1b mov r2, #0 @@ -21971,7 +21971,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0xe add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x1c mov r2, #0 @@ -21980,7 +21980,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0xf add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x1d mov r2, #0 @@ -21989,7 +21989,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0x10 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x1e mov r2, #0 @@ -21998,7 +21998,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0x11 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x1f mov r2, #0 @@ -22007,7 +22007,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0x12 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x16 mov r2, #0 @@ -22016,7 +22016,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0x13 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x17 mov r2, #0 @@ -22025,7 +22025,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0x14 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x18 mov r2, #0 @@ -22034,7 +22034,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0x15 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x21 mov r2, #0 @@ -22043,7 +22043,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0x16 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x2f mov r2, #0 @@ -22052,7 +22052,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0x17 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x30 mov r2, #0 @@ -22061,7 +22061,7 @@ _02237FCE: add r0, r4, #0 mov r1, #0x18 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData mov r5, #0 add r7, r5, #0 _0223815E: @@ -22075,7 +22075,7 @@ _0223815E: add r0, r4, #0 add r1, #0x36 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x15 mov r2, #0 @@ -22090,7 +22090,7 @@ _0223815E: add r0, r4, #0 add r1, #0x3e add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r1, r5, #0 add r0, r4, #0 add r1, #0x42 @@ -22101,7 +22101,7 @@ _0223815E: add r0, r4, #0 add r1, #0x3a add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r5, r5, #1 add r7, r7, #2 cmp r5, #4 @@ -22114,7 +22114,7 @@ _0223815E: add r0, r4, #0 mov r1, #0x46 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x28 mov r2, #0 @@ -22123,7 +22123,7 @@ _0223815E: add r0, r4, #0 mov r1, #0x47 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x29 mov r2, #0 @@ -22132,7 +22132,7 @@ _0223815E: add r0, r4, #0 mov r1, #0x48 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x2a mov r2, #0 @@ -22141,7 +22141,7 @@ _0223815E: add r0, r4, #0 mov r1, #0x49 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x2b mov r2, #0 @@ -22150,7 +22150,7 @@ _0223815E: add r0, r4, #0 mov r1, #0x4a add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x2c mov r2, #0 @@ -22159,7 +22159,7 @@ _0223815E: add r0, r4, #0 mov r1, #0x4b add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x2d mov r2, #0 @@ -22168,7 +22168,7 @@ _0223815E: add r0, r4, #0 mov r1, #0x4c add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x32 mov r2, #0 @@ -22186,7 +22186,7 @@ _0223826C: add r0, r4, #0 add r1, #0x4e add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r5, r5, #1 cmp r5, r7 blt _0223826C @@ -22208,7 +22208,7 @@ _02238298: add r0, r4, #0 add r1, #0x52 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r5, r5, #1 cmp r5, r7 blt _02238298 @@ -22230,7 +22230,7 @@ _022382C4: add r0, r4, #0 add r1, #0x56 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r5, r5, #1 cmp r5, r7 blt _022382C4 @@ -22252,7 +22252,7 @@ _022382F0: add r0, r4, #0 add r1, #0x5a add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r5, r5, #1 cmp r5, r7 blt _022382F0 @@ -22274,7 +22274,7 @@ _0223831C: add r0, r4, #0 add r1, #0x5e add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r5, r5, #1 cmp r5, r7 blt _0223831C @@ -22287,7 +22287,7 @@ _02238332: add r0, r4, #0 mov r1, #0x62 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x44 mov r2, #0 @@ -22296,7 +22296,7 @@ _02238332: add r0, r4, #0 mov r1, #0x63 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x45 mov r2, #0 @@ -22305,7 +22305,7 @@ _02238332: add r0, r4, #0 mov r1, #0x64 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x46 mov r2, #0 @@ -22314,7 +22314,7 @@ _02238332: add r0, r4, #0 mov r1, #0x65 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x47 mov r2, #0 @@ -22323,7 +22323,7 @@ _02238332: add r0, r4, #0 mov r1, #0x66 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x48 mov r2, #0 @@ -22332,7 +22332,7 @@ _02238332: add r0, r4, #0 mov r1, #0x67 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x49 mov r2, #0 @@ -22341,7 +22341,7 @@ _02238332: add r0, r4, #0 mov r1, #0x68 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x4a mov r2, #0 @@ -22350,7 +22350,7 @@ _02238332: add r0, r4, #0 mov r1, #0x69 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x4b mov r2, #0 @@ -22359,7 +22359,7 @@ _02238332: add r0, r4, #0 mov r1, #0x6a add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x4c mov r2, #0 @@ -22368,7 +22368,7 @@ _02238332: add r0, r4, #0 mov r1, #0x6b add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x4d mov r2, #0 @@ -22377,7 +22377,7 @@ _02238332: add r0, r4, #0 mov r1, #0x6c add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x4e mov r2, #0 @@ -22386,7 +22386,7 @@ _02238332: add r0, r4, #0 mov r1, #0x6d add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x50 mov r2, #0 @@ -22395,14 +22395,14 @@ _02238332: add r0, r4, #0 mov r1, #0x6e add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0 bl GetBoxMonGenderEncrypted str r0, [sp, #8] add r0, r4, #0 mov r1, #0x6f add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r4, #0 mov r1, #5 mov r2, #0 @@ -22436,7 +22436,7 @@ _02238332: add r0, r4, #0 mov r1, #0x70 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData _022384AE: add r0, r4, #0 mov r1, #5 @@ -22481,7 +22481,7 @@ _022384F4: add r0, r4, #0 mov r1, #0x70 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData _022384FE: add r0, r6, #0 mov r1, #2 @@ -22495,7 +22495,7 @@ _022384FE: add r0, r4, #0 mov r1, #0x75 add r2, sp, #0xc - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #3 mov r2, #0 @@ -22509,7 +22509,7 @@ _022384FE: add r0, r4, #0 mov r1, #0x4d add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData _0223853E: add r0, r6, #0 mov r1, #0x25 @@ -22519,7 +22519,7 @@ _0223853E: add r0, r4, #0 mov r1, #0x79 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #7 add r2, sp, #0x24 @@ -22532,7 +22532,7 @@ _0223853E: add r0, r4, #0 mov r1, #0x8f add r2, sp, #0xc - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x23 mov r2, #0 @@ -22541,7 +22541,7 @@ _0223853E: add r0, r4, #0 mov r1, #0x98 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x22 mov r2, #0 @@ -22550,7 +22550,7 @@ _0223853E: add r0, r4, #0 mov r1, #0x99 add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x26 mov r2, #0 @@ -22559,7 +22559,7 @@ _0223853E: add r0, r4, #0 mov r1, #0x9a add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x24 mov r2, #0 @@ -22568,7 +22568,7 @@ _0223853E: add r0, r4, #0 mov r1, #0x9b add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData add r0, r6, #0 mov r1, #0x31 mov r2, #0 @@ -22577,7 +22577,7 @@ _0223853E: add r0, r4, #0 mov r1, #0x9c add r2, sp, #8 - bl SetBoxMonDataEncrypted + bl SetBoxMonData ldr r1, [sp] add r0, r4, #0 bl TryEncryptBoxMon diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 43404100..c1f69ded 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -29,6 +29,7 @@ int ApplyNatureModToStat(u8 nature, u16 statval, u32 statno); #define ENCRYPT_BOX(boxmon) MonEncryptSegment(ENCRY_ARGS_BOX(boxmon)) #define DECRYPT_PTY(mon) MonDecryptSegment(ENCRY_ARGS_PTY(mon)) #define DECRYPT_BOX(boxmon) MonDecryptSegment(ENCRY_ARGS_BOX(boxmon)) +#define CHECKSUM(boxmon) CalcMonChecksum((boxmon)->substructs, sizeof((boxmon)->substructs)) #define SHINY_CHECK(otid, pid) (( \ ((((otid) & 0xFFFF0000u) >> 16u)) ^ \ (((otid) & 0xFFFFu)) ^ \ @@ -183,7 +184,7 @@ BOOL TryEncryptMon(struct Pokemon * mon, BOOL decrypt_result) mon->box.party_lock = FALSE; mon->box.box_lock = FALSE; ENCRYPT_PTY(mon); - mon->box.checksum = CalcMonChecksum(&mon->box.substructs, sizeof(mon->box.substructs)); + mon->box.checksum = CHECKSUM(&mon->box); ENCRYPT_BOX(&mon->box); } return ret; @@ -209,7 +210,7 @@ BOOL TryEncryptBoxMon(struct BoxPokemon * mon, BOOL decrypt_result) { ret = TRUE; mon->box_lock = FALSE; - mon->checksum = CalcMonChecksum(&mon->substructs, sizeof(mon->substructs)); + mon->checksum = CHECKSUM(mon); ENCRYPT_BOX(mon); } return ret; @@ -247,7 +248,7 @@ void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fi { fixedPersonality = (rand_LC() | (rand_LC() << 16)); } - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_PERSONALITY, &fixedPersonality); + SetBoxMonData(boxPokemon, MON_DATA_PERSONALITY, &fixedPersonality); if (otIdType == 2) { do @@ -257,57 +258,57 @@ void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fi } else if (otIdType != 1) fixedOtId = 0; - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_OTID, &fixedOtId); - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_GAME_LANGUAGE, &gGameLanguage); - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPECIES, &species); - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPECIES_NAME, NULL); + SetBoxMonData(boxPokemon, MON_DATA_OTID, &fixedOtId); + SetBoxMonData(boxPokemon, MON_DATA_GAME_LANGUAGE, (void *)&gGameLanguage); + SetBoxMonData(boxPokemon, MON_DATA_SPECIES, &species); + SetBoxMonData(boxPokemon, MON_DATA_SPECIES_NAME, NULL); exp = GetMonExpBySpeciesAndLevel(species, level); - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_EXPERIENCE, &exp); + SetBoxMonData(boxPokemon, MON_DATA_EXPERIENCE, &exp); exp = GetMonBaseStat(species, BASE_FRIENDSHIP); - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_FRIENDSHIP, &exp); - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_MET_LEVEL, &level); - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_GAME_VERSION, &gGameVersion); + SetBoxMonData(boxPokemon, MON_DATA_FRIENDSHIP, &exp); + SetBoxMonData(boxPokemon, MON_DATA_MET_LEVEL, &level); + SetBoxMonData(boxPokemon, MON_DATA_GAME_VERSION, (void *)&gGameVersion); exp = 4; - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_POKEBALL, &exp); + SetBoxMonData(boxPokemon, MON_DATA_POKEBALL, &exp); if (fixedIV < 0x20) { - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_HP_IV, &fixedIV); - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ATK_IV, &fixedIV); - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_DEF_IV, &fixedIV); - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPEED_IV, &fixedIV); - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPATK_IV, &fixedIV); - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPDEF_IV, &fixedIV); + SetBoxMonData(boxPokemon, MON_DATA_HP_IV, &fixedIV); + SetBoxMonData(boxPokemon, MON_DATA_ATK_IV, &fixedIV); + SetBoxMonData(boxPokemon, MON_DATA_DEF_IV, &fixedIV); + SetBoxMonData(boxPokemon, MON_DATA_SPEED_IV, &fixedIV); + SetBoxMonData(boxPokemon, MON_DATA_SPATK_IV, &fixedIV); + SetBoxMonData(boxPokemon, MON_DATA_SPDEF_IV, &fixedIV); } else { exp = rand_LC(); iv = exp & 0x1F; - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_HP_IV, &iv); + SetBoxMonData(boxPokemon, MON_DATA_HP_IV, &iv); iv = (exp & 0x3E0) >> 5; - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ATK_IV, &iv); + SetBoxMonData(boxPokemon, MON_DATA_ATK_IV, &iv); iv = (exp & 0x7C00) >> 10; - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_DEF_IV, &iv); + SetBoxMonData(boxPokemon, MON_DATA_DEF_IV, &iv); exp = rand_LC(); iv = exp & 0x1F; - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPEED_IV, &iv); + SetBoxMonData(boxPokemon, MON_DATA_SPEED_IV, &iv); iv = (exp & 0x3E0) >> 5; - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPATK_IV, &iv); + SetBoxMonData(boxPokemon, MON_DATA_SPATK_IV, &iv); iv = (exp & 0x7C00) >> 10; - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_SPDEF_IV, &iv); + SetBoxMonData(boxPokemon, MON_DATA_SPDEF_IV, &iv); } exp = GetMonBaseStat(species, BASE_ABILITY_1); iv = GetMonBaseStat(species, BASE_ABILITY_2); if (iv != 0) { if (fixedPersonality & 1) - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ABILITY, &iv); + SetBoxMonData(boxPokemon, MON_DATA_ABILITY, &iv); else - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ABILITY, &exp); + SetBoxMonData(boxPokemon, MON_DATA_ABILITY, &exp); } else - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_ABILITY, &exp); + SetBoxMonData(boxPokemon, MON_DATA_ABILITY, &exp); exp = GetBoxMonGenderEncrypted(boxPokemon); - SetBoxMonDataEncrypted(boxPokemon, MON_DATA_GENDER, &exp); + SetBoxMonData(boxPokemon, MON_DATA_GENDER, &exp); InitBoxMonMoveset(boxPokemon); TryEncryptBoxMon(boxPokemon, decry); } @@ -480,7 +481,7 @@ u32 GetMonData(struct Pokemon * pokemon, int attr, void * dest) { DECRYPT_PTY(pokemon); DECRYPT_BOX(&pokemon->box); - checksum = CalcMonChecksum(&pokemon->box.substructs, sizeof(pokemon->box.substructs)); + checksum = CHECKSUM(&pokemon->box); if (checksum != pokemon->box.checksum) { GF_ASSERT(checksum == pokemon->box.checksum); @@ -538,7 +539,7 @@ u32 GetBoxMonData(struct BoxPokemon * boxmon, int attr, void * dest) if (!boxmon->box_lock) { DECRYPT_BOX(boxmon); - checksum = CalcMonChecksum(&boxmon->substructs, sizeof(boxmon->substructs)); + checksum = CHECKSUM(boxmon); if (checksum != boxmon->checksum) { GF_ASSERT(checksum == boxmon->checksum); @@ -707,29 +708,25 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest) case MON_DATA_MOVE2: case MON_DATA_MOVE3: case MON_DATA_MOVE4: - attr -= MON_DATA_MOVE1; - ret = blockB->moves[attr]; + ret = blockB->moves[attr - MON_DATA_MOVE1]; break; case MON_DATA_MOVE1PP: case MON_DATA_MOVE2PP: case MON_DATA_MOVE3PP: case MON_DATA_MOVE4PP: - attr -= MON_DATA_MOVE1PP; - ret = blockB->movePP[attr]; + ret = blockB->movePP[attr - MON_DATA_MOVE1PP]; break; case MON_DATA_MOVE1PPUP: case MON_DATA_MOVE2PPUP: case MON_DATA_MOVE3PPUP: case MON_DATA_MOVE4PPUP: - attr -= MON_DATA_MOVE1PPUP; - ret = blockB->movePpUps[attr]; + ret = blockB->movePpUps[attr - MON_DATA_MOVE1PPUP]; break; case MON_DATA_MOVE1MAXPP: case MON_DATA_MOVE2MAXPP: case MON_DATA_MOVE3MAXPP: case MON_DATA_MOVE4MAXPP: - attr -= MON_DATA_MOVE1MAXPP; - ret = FUN_0206AB30(blockB->moves[attr], blockB->movePpUps[attr]); + ret = FUN_0206AB30(blockB->moves[attr - MON_DATA_MOVE1MAXPP], blockB->movePpUps[attr - MON_DATA_MOVE1MAXPP]); break; case MON_DATA_HP_IV: ret = blockB->hpIV; @@ -822,10 +819,10 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest) dest16[ret] = EOS; } break; - case MON_DATA_NICKNAME_3: + case MON_DATA_NICKNAME_4: ret = blockB->isNicknamed; // fallthrough - case MON_DATA_NICKNAME_2: + case MON_DATA_NICKNAME_3: if (boxmon->checksum_fail) { u16 * buffer = FUN_0200AA50(SPECIES_MANAPHY_EGG, 0); @@ -951,3 +948,448 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest) } return ret; } + +void SetMonData(struct Pokemon * pokemon, int attr, void * value) +{ + u16 checksum; + if (!pokemon->box.party_lock) + { + DECRYPT_PTY(pokemon); + DECRYPT_BOX(&pokemon->box); + checksum = CHECKSUM(&pokemon->box); + if (checksum != pokemon->box.checksum) + { + GF_ASSERT(checksum == pokemon->box.checksum); + pokemon->box.checksum_fail = TRUE; + ENCRYPT_BOX(&pokemon->box); + return; + } + } + SetMonDataInternal(pokemon, attr, value); + if (!pokemon->box.party_lock) + { + ENCRYPT_PTY(pokemon); + pokemon->box.checksum = CHECKSUM(&pokemon->box); + ENCRYPT_BOX(&pokemon->box); + } +} + +void SetMonDataInternal(struct Pokemon * pokemon, int attr, void * value) +{ +#define VALUE(type) (*(const type *)value) + switch (attr) + { + case MON_DATA_STATUS: + pokemon->party.status = VALUE(u32); + break; + case MON_DATA_LEVEL: + pokemon->party.level = VALUE(u8); + break; + case MON_DATA_CAPSULE: + pokemon->party.capsule = VALUE(u8); + break; + case MON_DATA_HP: + pokemon->party.hp = VALUE(u16); + break; + case MON_DATA_MAXHP: + pokemon->party.maxHp = VALUE(u16); + break; + case MON_DATA_ATK: + pokemon->party.atk = VALUE(u16); + break; + case MON_DATA_DEF: + pokemon->party.def = VALUE(u16); + break; + case MON_DATA_SPEED: + pokemon->party.speed = VALUE(u16); + break; + case MON_DATA_SPATK: + pokemon->party.spatk = VALUE(u16); + break; + case MON_DATA_SPDEF: + pokemon->party.spdef = VALUE(u16); + break; + case MON_DATA_SEAL_STRUCT: + CopySealsObject((const struct SealStruct *)value, &pokemon->party.seal_something); + break; + case MON_DATA_SEAL_COORDS: + FUN_02029C74((const u8 *)value, pokemon->party.sealCoords); + break; + default: + SetBoxMonDataInternal(&pokemon->box, attr, value); + break; + } +#undef VALUE +} + +void SetBoxMonData(struct BoxPokemon * boxmon, int attr, void * value) +{ + u16 checksum; + if (!boxmon->box_lock) + { + DECRYPT_BOX(boxmon); + checksum = CHECKSUM(boxmon); + if (checksum != boxmon->checksum) + { + GF_ASSERT(checksum == boxmon->checksum); + boxmon->checksum_fail = TRUE; + ENCRYPT_BOX(boxmon); + return; + } + } + SetBoxMonDataInternal(boxmon, attr, value); + if (!boxmon->box_lock) + { + boxmon->checksum = CHECKSUM(boxmon); + ENCRYPT_BOX(boxmon); + } +} + + +void SetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * value) +{ +#define VALUE(type) (*(const type *)value) + u8 flag; + u64 mask; + u32 i; + u16 namebuf[POKEMON_NAME_LENGTH + 1]; + u16 namebuf2[POKEMON_NAME_LENGTH + 1]; + u16 namebuf3[POKEMON_NAME_LENGTH + 1]; + u16 * speciesName; + u8 iv; + + PokemonDataBlockA *blockA = &GetSubstruct(boxmon, boxmon->pid, 0)->blockA; + PokemonDataBlockB *blockB = &GetSubstruct(boxmon, boxmon->pid, 1)->blockB; + PokemonDataBlockC *blockC = &GetSubstruct(boxmon, boxmon->pid, 2)->blockC; + PokemonDataBlockD *blockD = &GetSubstruct(boxmon, boxmon->pid, 3)->blockD; + + switch (attr) + { + case MON_DATA_PERSONALITY: + boxmon->pid = VALUE(u32); + break; + case MON_DATA_PARTY_LOCK: + GF_ASSERT(0); + boxmon->party_lock = VALUE(u8); + break; + case MON_DATA_BOX_LOCK: + GF_ASSERT(0); + boxmon->box_lock = VALUE(u8); + break; + case MON_DATA_CHECKSUM_FAILED: + boxmon->checksum_fail = VALUE(u8); + break; + case MON_DATA_CHECKSUM: + boxmon->checksum = VALUE(u16); + break; + case MON_DATA_SPECIES: + blockA->species = VALUE(u16); + break; + case MON_DATA_HELD_ITEM: + blockA->heldItem = VALUE(u16); + break; + case MON_DATA_OTID: + blockA->otID = VALUE(u32); + break; + case MON_DATA_EXPERIENCE: + blockA->exp = VALUE(u32); + break; + case MON_DATA_FRIENDSHIP: + blockA->friendship = VALUE(u8); + break; + case MON_DATA_ABILITY: + blockA->ability = VALUE(u8); + break; + case MON_DATA_MARKINGS: + blockA->markings = VALUE(u8); + break; + case MON_DATA_GAME_LANGUAGE: + blockA->originLanguage = VALUE(u8); + break; + case MON_DATA_HP_EV: + blockA->hpEV = VALUE(u8); + break; + case MON_DATA_ATK_EV: + blockA->atkEV = VALUE(u8); + break; + case MON_DATA_DEF_EV: + blockA->defEV = VALUE(u8); + break; + case MON_DATA_SPEED_EV: + blockA->spdEV = VALUE(u8); + break; + case MON_DATA_SPATK_EV: + blockA->spatkEV = VALUE(u8); + break; + case MON_DATA_SPDEF_EV: + blockA->spdefEV = VALUE(u8); + break; + case MON_DATA_COOL: + blockA->coolStat = VALUE(u8); + break; + case MON_DATA_BEAUTY: + blockA->beautyStat = VALUE(u8); + break; + case MON_DATA_CUTE: + blockA->cuteStat = VALUE(u8); + break; + case MON_DATA_SMART: + blockA->smartStat = VALUE(u8); + break; + case MON_DATA_TOUGH: + blockA->toughStat = VALUE(u8); + break; + case MON_DATA_SHEEN: + blockA->sheen = VALUE(u8); + break; + case MON_DATA_SINNOH_CHAMP_RIBBON: + case MON_DATA_SINNOH_RIBBON_26: + case MON_DATA_SINNOH_RIBBON_27: + case MON_DATA_SINNOH_RIBBON_28: + case MON_DATA_SINNOH_RIBBON_29: + case MON_DATA_SINNOH_RIBBON_30: + case MON_DATA_SINNOH_RIBBON_31: + case MON_DATA_SINNOH_RIBBON_32: + case MON_DATA_SINNOH_RIBBON_33: + case MON_DATA_SINNOH_RIBBON_34: + case MON_DATA_SINNOH_RIBBON_35: + case MON_DATA_SINNOH_RIBBON_36: + case MON_DATA_SINNOH_RIBBON_37: + case MON_DATA_SINNOH_RIBBON_38: + case MON_DATA_SINNOH_RIBBON_39: + case MON_DATA_SINNOH_RIBBON_40: + case MON_DATA_SINNOH_RIBBON_41: + case MON_DATA_SINNOH_RIBBON_42: + case MON_DATA_SINNOH_RIBBON_43: + case MON_DATA_SINNOH_RIBBON_44: + case MON_DATA_SINNOH_RIBBON_45: + case MON_DATA_SINNOH_RIBBON_46: + case MON_DATA_SINNOH_RIBBON_47: + case MON_DATA_SINNOH_RIBBON_48: + case MON_DATA_SINNOH_RIBBON_49: + case MON_DATA_SINNOH_RIBBON_50: + case MON_DATA_SINNOH_RIBBON_51: + case MON_DATA_SINNOH_RIBBON_52: + case MON_DATA_SINNOH_RIBBON_53: + flag = VALUE(u8); + mask = (u64)flag << (attr - MON_DATA_SINNOH_CHAMP_RIBBON); + if (flag) + blockA->sinnohRibbons |= mask; + else + blockA->sinnohRibbons &= -1ull ^ mask; + break; + case MON_DATA_MOVE1: + case MON_DATA_MOVE2: + case MON_DATA_MOVE3: + case MON_DATA_MOVE4: + blockB->moves[attr - MON_DATA_MOVE1] = VALUE(u16); + break; + case MON_DATA_MOVE1PP: + case MON_DATA_MOVE2PP: + case MON_DATA_MOVE3PP: + case MON_DATA_MOVE4PP: + blockB->movePP[attr - MON_DATA_MOVE1PP] = VALUE(u8); + break; + case MON_DATA_MOVE1PPUP: + case MON_DATA_MOVE2PPUP: + case MON_DATA_MOVE3PPUP: + case MON_DATA_MOVE4PPUP: + blockB->movePpUps[attr - MON_DATA_MOVE1PPUP] = VALUE(u8); + break; + case MON_DATA_HP_IV: + blockB->hpIV = VALUE(u8); + break; + case MON_DATA_ATK_IV: + blockB->atkIV = VALUE(u8); + break; + case MON_DATA_DEF_IV: + blockB->defIV = VALUE(u8); + break; + case MON_DATA_SPEED_IV: + blockB->spdIV = VALUE(u8); + break; + case MON_DATA_SPATK_IV: + blockB->spatkIV = VALUE(u8); + break; + case MON_DATA_SPDEF_IV: + blockB->spdefIV = VALUE(u8); + break; + case MON_DATA_IS_EGG: + blockB->isEgg = VALUE(u8); + break; + case MON_DATA_HAS_NICKNAME: + blockB->isNicknamed = VALUE(u8); + break; + case MON_DATA_COOL_RIBBON: + case MON_DATA_HOENN_RIBBON_79: + case MON_DATA_HOENN_RIBBON_80: + case MON_DATA_HOENN_RIBBON_81: + case MON_DATA_HOENN_RIBBON_82: + case MON_DATA_HOENN_RIBBON_83: + case MON_DATA_HOENN_RIBBON_84: + case MON_DATA_HOENN_RIBBON_85: + case MON_DATA_HOENN_RIBBON_86: + case MON_DATA_HOENN_RIBBON_87: + case MON_DATA_HOENN_RIBBON_88: + case MON_DATA_HOENN_RIBBON_89: + case MON_DATA_HOENN_RIBBON_90: + case MON_DATA_HOENN_RIBBON_91: + case MON_DATA_HOENN_RIBBON_92: + case MON_DATA_HOENN_RIBBON_93: + case MON_DATA_HOENN_RIBBON_94: + case MON_DATA_HOENN_RIBBON_95: + case MON_DATA_HOENN_RIBBON_96: + case MON_DATA_HOENN_RIBBON_97: + case MON_DATA_HOENN_RIBBON_98: + case MON_DATA_HOENN_RIBBON_99: + case MON_DATA_HOENN_RIBBON_100: + case MON_DATA_HOENN_RIBBON_101: + case MON_DATA_HOENN_RIBBON_102: + case MON_DATA_HOENN_RIBBON_103: + case MON_DATA_HOENN_RIBBON_104: + case MON_DATA_HOENN_RIBBON_105: + case MON_DATA_HOENN_RIBBON_106: + case MON_DATA_HOENN_RIBBON_107: + case MON_DATA_HOENN_RIBBON_108: + case MON_DATA_HOENN_RIBBON_109: + flag = VALUE(u8); + mask = (u64)flag << (attr - MON_DATA_COOL_RIBBON); + if (flag) + blockB->ribbonFlags |= mask; + else + blockB->ribbonFlags &= -1ull ^ mask; + break; + case MON_DATA_FATEFUL_ENCOUNTER: + blockB->fatefulEncounter = VALUE(u8); + break; + case MON_DATA_GENDER: + blockB->gender = VALUE(u8); + break; + case MON_DATA_FORME: + blockB->alternateForm = VALUE(u8); + break; + case MON_DATA_RESERVED_113: + blockB->HGSS_shinyLeaves = VALUE(u8); + break; + case MON_DATA_RESERVED_114: + blockB->Unused = VALUE(u16); + break; + case MON_DATA_NICKNAME_2: + GetSpeciesName(blockA->species, 0, namebuf); + blockB->isNicknamed = StringNotEqual(namebuf, value); + // fallthrough + case MON_DATA_NICKNAME: + for (i = 0; i < POKEMON_NAME_LENGTH + 1; i++) + { + blockC->nickname[i] = VALUE(u16); value = (void *const )((char *)value + 2); + } + break; + case MON_DATA_NICKNAME_4: + GetSpeciesName(blockA->species, 0, namebuf2); + FUN_02021EF0(value, namebuf3, POKEMON_NAME_LENGTH + 1); + blockB->isNicknamed = StringNotEqual(namebuf2, namebuf3); + // fallthrough + case MON_DATA_NICKNAME_3: + FUN_02021EF0(value, blockC->nickname, POKEMON_NAME_LENGTH + 1); + break; + case MON_DATA_UNK_120: + blockC->Unused = VALUE(u8); + break; + case MON_DATA_GAME_VERSION: + blockC->originGame = VALUE(u8); + break; + case MON_DATA_SINNOH_RIBBON_122: + case MON_DATA_SINNOH_RIBBON_123: + case MON_DATA_SINNOH_RIBBON_124: + case MON_DATA_SINNOH_RIBBON_125: + case MON_DATA_SINNOH_RIBBON_126: + case MON_DATA_SINNOH_RIBBON_127: + case MON_DATA_SINNOH_RIBBON_128: + case MON_DATA_SINNOH_RIBBON_129: + case MON_DATA_SINNOH_RIBBON_130: + case MON_DATA_SINNOH_RIBBON_131: + case MON_DATA_SINNOH_RIBBON_132: + case MON_DATA_SINNOH_RIBBON_133: + case MON_DATA_SINNOH_RIBBON_134: + case MON_DATA_SINNOH_RIBBON_135: + case MON_DATA_SINNOH_RIBBON_136: + case MON_DATA_SINNOH_RIBBON_137: + case MON_DATA_SINNOH_RIBBON_138: + case MON_DATA_SINNOH_RIBBON_139: + case MON_DATA_SINNOH_RIBBON_140: + case MON_DATA_SINNOH_RIBBON_141: + case MON_DATA_SINNOH_RIBBON_142: + flag = VALUE(u8); + mask = (u64)flag << (attr - MON_DATA_SINNOH_RIBBON_122); + if (flag) + blockC->sinnohRibbons2 |= mask; + else + blockC->sinnohRibbons2 &= -1ull ^ mask; + break; + case MON_DATA_OT_NAME: + for (i = 0; i < OT_NAME_LENGTH + 1; i++) + { + blockD->otTrainerName[i] = VALUE(u16); value = (void *)((char *)value + 2); + } + break; + case MON_DATA_OT_NAME_2: + FUN_02021EF0(value, blockD->otTrainerName, OT_NAME_LENGTH + 1); + break; + case MON_DATA_EGG_MET_YEAR: + blockD->dateEggReceived[0] = VALUE(u8); + break; + case MON_DATA_EGG_MET_MONTH: + blockD->dateEggReceived[1] = VALUE(u8); + break; + case MON_DATA_EGG_MET_DAY: + blockD->dateEggReceived[2] = VALUE(u8); + break; + case MON_DATA_MET_YEAR: + blockD->dateMet[0] = VALUE(u8); + break; + case MON_DATA_MET_MONTH: + blockD->dateMet[1] = VALUE(u8); + break; + case MON_DATA_MET_DAY: + blockD->dateMet[2] = VALUE(u8); + break; + case MON_DATA_EGG_MET_LOCATION: + blockD->DP_EggLocation = VALUE(u16); + break; + case MON_DATA_MET_LOCATION: + blockD->DP_MetLocation = VALUE(u16); + break; + case MON_DATA_POKERUS: + blockD->pokerus = VALUE(u8); + break; + case MON_DATA_POKEBALL: + blockD->pokeball = VALUE(u8); + break; + case MON_DATA_MET_LEVEL: + blockD->metLevel = VALUE(u8); + break; + case MON_DATA_MET_GENDER: + blockD->metGender = VALUE(u8); + break; + case MON_DATA_ENCOUNTER_TYPE: + blockD->encounterType = VALUE(u8); + break; + case MON_DATA_RESERVED_158: + blockD->HGSS_Pokeball = VALUE(u16); + break; + case MON_DATA_IVS_WORD: + blockB->hpIV = (VALUE(u32) >> 0) & 0x1F; + blockB->atkIV = (VALUE(u32) >> 5) & 0x1F; + blockB->defIV = (VALUE(u32) >> 10) & 0x1F; + blockB->spdIV = (VALUE(u32) >> 15) & 0x1F; + blockB->spatkIV = (VALUE(u32) >> 20) & 0x1F; + blockB->spdefIV = (VALUE(u32) >> 25) & 0x1F; + break; + case MON_DATA_SPECIES_NAME: + speciesName = FUN_0200AA50(blockA->species, 0); + FUN_02021EF0(speciesName, blockC->nickname, POKEMON_NAME_LENGTH + 1); + FUN_02021A20(speciesName); + break; + } +#undef VALUE +} diff --git a/include/pokemon.h b/include/pokemon.h index 7cc5ef5d..451c7d1b 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -125,9 +125,9 @@ #define MON_DATA_RESERVED_114 114 // Plat #define MON_DATA_UNUSED_115 115 #define MON_DATA_NICKNAME 116 -#define MON_DATA_UNUSED_117 117 -#define MON_DATA_NICKNAME_2 118 // ??? -#define MON_DATA_NICKNAME_3 119 // ??? +#define MON_DATA_NICKNAME_2 117 +#define MON_DATA_NICKNAME_3 118 // ??? +#define MON_DATA_NICKNAME_4 119 // ??? #define MON_DATA_UNK_120 120 #define MON_DATA_GAME_VERSION 121 #define MON_DATA_SINNOH_RIBBON_122 122 @@ -500,10 +500,10 @@ u32 GetBoxMonData(); u32 GetMonData(struct Pokemon * pokemon, int attr, void * ptr); u32 GetBoxMonData(struct BoxPokemon * pokemon, int attr, void * ptr); #endif -void SetMonDataInternal(struct Pokemon * pokemon, int attr, const void * ptr); -void SetMonData(struct Pokemon * pokemon, int attr, const void * ptr); -void SetBoxMonData(struct BoxPokemon * pokemon, int attr, const void * ptr); -void SetBoxMonDataEncrypted(struct BoxPokemon * pokemon, int attr, const void * ptr); +void SetMonDataInternal(struct Pokemon * pokemon, int attr, void * ptr); +void SetMonData(struct Pokemon * pokemon, int attr, void * ptr); +void SetBoxMonDataInternal(struct BoxPokemon * pokemon, int attr, void * ptr); +void SetBoxMonData(struct BoxPokemon * pokemon, int attr, void * ptr); void AddMonData(struct Pokemon * pokemon, int attr, u32 amount); void AddBoxMonData(struct Pokemon * pokemon, int attr, u32 amount); diff --git a/include/proto.h b/include/proto.h index 37655429..c8f50d33 100644 --- a/include/proto.h +++ b/include/proto.h @@ -7,6 +7,7 @@ u16 * FUN_0200AA50(u16 species, u32 heap_id); void FUN_02021A74(u16 * dest, u16 * src); void FUN_02021A20(void * ptr); void FUN_02021E28(u16 * dest, u16 * src); +void FUN_02021EF0(const u16 * src, u16 * dest, u32 count); u32 FUN_0206E7B8(u16 item, u32 a1, u32 a2); u32 GetArceusTypeByPlate(u16 plate); diff --git a/include/seals.h b/include/seals.h index fc0fc449..8fda23b9 100644 --- a/include/seals.h +++ b/include/seals.h @@ -9,7 +9,7 @@ struct SealStruct struct SealStruct * CreateNewSealsObject(u32 heap_id); -void CopySealsObject(struct SealStruct *, struct SealStruct *); -void FUN_02029C74(u8 *, u8 *); +void CopySealsObject(const struct SealStruct *, struct SealStruct *); +void FUN_02029C74(const u8 *, u8 *); #endif //POKEDIAMOND_SEALS_H -- cgit v1.2.3 From 3646495249e8e553fb0335ffd287f979499204ce Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jun 2020 12:30:58 -0400 Subject: Through AddBoxMonData --- arm9/asm/pokemon_s.s | 677 ---------------------------------------- arm9/asm/unk_020842DC.s | 2 +- arm9/global.inc | 2 +- arm9/modules/11/asm/module_11.s | 8 +- arm9/src/pokemon.c | 341 ++++++++++++++++++++ include/move_data.h | 2 +- include/pokemon.h | 5 +- 7 files changed, 351 insertions(+), 686 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index c901ba32..d88114bc 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -24,683 +24,6 @@ UNK_021C5AC0: ; 0x021C5AC0 .text - thumb_func_start AddMonPartyStatEncrypted -AddMonPartyStatEncrypted: ; 0x02068018 - push {r4-r6, lr} - add r5, r0, #0x0 - ldrh r0, [r5, #0x4] - add r4, r1, #0x0 - add r6, r2, #0x0 - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - bne _02068066 - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonDecryptSegment - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - ldrh r1, [r5, #0x6] - cmp r0, r1 - beq _02068066 - cmp r0, r1 - beq _02068058 - bl ErrorHandling -_02068058: - ldrh r2, [r5, #0x6] - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment - pop {r4-r6, pc} -_02068066: - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl AddMonData - ldrh r0, [r5, #0x4] - lsl r0, r0, #0x1f - lsr r0, r0, #0x1f - bne _0206809C - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonEncryptSegment - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - strh r0, [r5, #0x6] - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment -_0206809C: - pop {r4-r6, pc} - .balign 4 - - thumb_func_start AddMonData -AddMonData: ; 0x020680A0 - push {r3, lr} - add r3, r1, #0x0 - sub r3, #0x9f - cmp r3, #0xa - bhi _020680F8 - add r3, r3, r3 - add r3, pc - ldrh r3, [r3, #0x6] - lsl r3, r3, #0x10 - asr r3, r3, #0x10 - add pc, r3 -_020680B6: ; jump table (using 16-bit offset) - .short _020680F2 - _020680B6 - 2; case 0 - .short _020680F2 - _020680B6 - 2; case 1 - .short _020680F2 - _020680B6 - 2; case 2 - .short _020680CC - _020680B6 - 2; case 3 - .short _020680F2 - _020680B6 - 2; case 4 - .short _020680F2 - _020680B6 - 2; case 5 - .short _020680F2 - _020680B6 - 2; case 6 - .short _020680F2 - _020680B6 - 2; case 7 - .short _020680F2 - _020680B6 - 2; case 8 - .short _020680F2 - _020680B6 - 2; case 9 - .short _020680F2 - _020680B6 - 2; case 10 -_020680CC: - add r1, r0, #0x0 - add r1, #0x90 - ldrh r3, [r1, #0x0] - add r1, r0, #0x0 - add r1, #0x8e - ldrh r1, [r1, #0x0] - add r1, r1, r2 - cmp r1, r3 - ble _020680E4 - add r0, #0x8e - strh r3, [r0, #0x0] - pop {r3, pc} -_020680E4: - add r1, r0, #0x0 - add r1, #0x8e - ldrh r1, [r1, #0x0] - add r0, #0x8e - add r1, r1, r2 - strh r1, [r0, #0x0] - pop {r3, pc} -_020680F2: - bl ErrorHandling - pop {r3, pc} -_020680F8: - bl AddBoxMonData - pop {r3, pc} - .balign 4 - - thumb_func_start AddBoxMonData -AddBoxMonData: ; 0x02068100 - push {r4-r7, lr} - sub sp, #0xc - add r7, r1, #0x0 - add r1, r0, #0x0 - add r6, r2, #0x0 - ldr r1, [r1, #0x0] - str r0, [sp, #0x0] - mov r2, #0x0 - bl GetSubstruct - add r4, r0, #0x0 - ldr r0, [sp, #0x0] - mov r2, #0x1 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - add r5, r0, #0x0 - ldr r0, [sp, #0x0] - mov r2, #0x2 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - ldr r0, [sp, #0x0] - mov r2, #0x3 - add r1, r0, #0x0 - ldr r1, [r1, #0x0] - bl GetSubstruct - cmp r7, #0xb2 - bls _02068142 - b _02068500 -_02068142: - add r0, r7, r7 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0206814E: ; jump table (using 16-bit offset) - .short _02068500 - _0206814E - 2; case 0 - .short _02068500 - _0206814E - 2; case 1 - .short _02068500 - _0206814E - 2; case 2 - .short _02068500 - _0206814E - 2; case 3 - .short _02068500 - _0206814E - 2; case 4 - .short _02068500 - _0206814E - 2; case 5 - .short _02068500 - _0206814E - 2; case 6 - .short _02068500 - _0206814E - 2; case 7 - .short _020682B4 - _0206814E - 2; case 8 - .short _020682D8 - _0206814E - 2; case 9 - .short _02068500 - _0206814E - 2; case 10 - .short _02068500 - _0206814E - 2; case 11 - .short _02068500 - _0206814E - 2; case 12 - .short _020682EE - _0206814E - 2; case 13 - .short _020682F8 - _0206814E - 2; case 14 - .short _02068302 - _0206814E - 2; case 15 - .short _0206830C - _0206814E - 2; case 16 - .short _02068316 - _0206814E - 2; case 17 - .short _02068320 - _0206814E - 2; case 18 - .short _0206832A - _0206814E - 2; case 19 - .short _02068340 - _0206814E - 2; case 20 - .short _02068356 - _0206814E - 2; case 21 - .short _0206836C - _0206814E - 2; case 22 - .short _02068382 - _0206814E - 2; case 23 - .short _02068398 - _0206814E - 2; case 24 - .short _02068500 - _0206814E - 2; case 25 - .short _02068500 - _0206814E - 2; case 26 - .short _02068500 - _0206814E - 2; case 27 - .short _02068500 - _0206814E - 2; case 28 - .short _02068500 - _0206814E - 2; case 29 - .short _02068500 - _0206814E - 2; case 30 - .short _02068500 - _0206814E - 2; case 31 - .short _02068500 - _0206814E - 2; case 32 - .short _02068500 - _0206814E - 2; case 33 - .short _02068500 - _0206814E - 2; case 34 - .short _02068500 - _0206814E - 2; case 35 - .short _02068500 - _0206814E - 2; case 36 - .short _02068500 - _0206814E - 2; case 37 - .short _02068500 - _0206814E - 2; case 38 - .short _02068500 - _0206814E - 2; case 39 - .short _02068500 - _0206814E - 2; case 40 - .short _02068500 - _0206814E - 2; case 41 - .short _02068500 - _0206814E - 2; case 42 - .short _02068500 - _0206814E - 2; case 43 - .short _02068500 - _0206814E - 2; case 44 - .short _02068500 - _0206814E - 2; case 45 - .short _02068500 - _0206814E - 2; case 46 - .short _02068500 - _0206814E - 2; case 47 - .short _02068500 - _0206814E - 2; case 48 - .short _02068500 - _0206814E - 2; case 49 - .short _02068500 - _0206814E - 2; case 50 - .short _02068500 - _0206814E - 2; case 51 - .short _02068500 - _0206814E - 2; case 52 - .short _02068500 - _0206814E - 2; case 53 - .short _02068500 - _0206814E - 2; case 54 - .short _02068500 - _0206814E - 2; case 55 - .short _02068500 - _0206814E - 2; case 56 - .short _02068500 - _0206814E - 2; case 57 - .short _020683AE - _0206814E - 2; case 58 - .short _020683AE - _0206814E - 2; case 59 - .short _020683AE - _0206814E - 2; case 60 - .short _020683AE - _0206814E - 2; case 61 - .short _020683EA - _0206814E - 2; case 62 - .short _020683EA - _0206814E - 2; case 63 - .short _020683EA - _0206814E - 2; case 64 - .short _020683EA - _0206814E - 2; case 65 - .short _02068504 - _0206814E - 2; case 66 - .short _02068504 - _0206814E - 2; case 67 - .short _02068504 - _0206814E - 2; case 68 - .short _02068504 - _0206814E - 2; case 69 - .short _02068404 - _0206814E - 2; case 70 - .short _0206842E - _0206814E - 2; case 71 - .short _02068458 - _0206814E - 2; case 72 - .short _02068482 - _0206814E - 2; case 73 - .short _020684AC - _0206814E - 2; case 74 - .short _020684D6 - _0206814E - 2; case 75 - .short _02068500 - _0206814E - 2; case 76 - .short _02068500 - _0206814E - 2; case 77 - .short _02068500 - _0206814E - 2; case 78 - .short _02068500 - _0206814E - 2; case 79 - .short _02068500 - _0206814E - 2; case 80 - .short _02068500 - _0206814E - 2; case 81 - .short _02068500 - _0206814E - 2; case 82 - .short _02068500 - _0206814E - 2; case 83 - .short _02068500 - _0206814E - 2; case 84 - .short _02068500 - _0206814E - 2; case 85 - .short _02068500 - _0206814E - 2; case 86 - .short _02068500 - _0206814E - 2; case 87 - .short _02068500 - _0206814E - 2; case 88 - .short _02068500 - _0206814E - 2; case 89 - .short _02068500 - _0206814E - 2; case 90 - .short _02068500 - _0206814E - 2; case 91 - .short _02068500 - _0206814E - 2; case 92 - .short _02068500 - _0206814E - 2; case 93 - .short _02068500 - _0206814E - 2; case 94 - .short _02068500 - _0206814E - 2; case 95 - .short _02068500 - _0206814E - 2; case 96 - .short _02068500 - _0206814E - 2; case 97 - .short _02068500 - _0206814E - 2; case 98 - .short _02068500 - _0206814E - 2; case 99 - .short _02068500 - _0206814E - 2; case 100 - .short _02068500 - _0206814E - 2; case 101 - .short _02068500 - _0206814E - 2; case 102 - .short _02068500 - _0206814E - 2; case 103 - .short _02068500 - _0206814E - 2; case 104 - .short _02068500 - _0206814E - 2; case 105 - .short _02068500 - _0206814E - 2; case 106 - .short _02068500 - _0206814E - 2; case 107 - .short _02068500 - _0206814E - 2; case 108 - .short _02068500 - _0206814E - 2; case 109 - .short _02068500 - _0206814E - 2; case 110 - .short _02068500 - _0206814E - 2; case 111 - .short _02068500 - _0206814E - 2; case 112 - .short _02068500 - _0206814E - 2; case 113 - .short _02068500 - _0206814E - 2; case 114 - .short _02068500 - _0206814E - 2; case 115 - .short _02068500 - _0206814E - 2; case 116 - .short _02068500 - _0206814E - 2; case 117 - .short _02068500 - _0206814E - 2; case 118 - .short _02068500 - _0206814E - 2; case 119 - .short _02068500 - _0206814E - 2; case 120 - .short _02068500 - _0206814E - 2; case 121 - .short _02068500 - _0206814E - 2; case 122 - .short _02068500 - _0206814E - 2; case 123 - .short _02068500 - _0206814E - 2; case 124 - .short _02068500 - _0206814E - 2; case 125 - .short _02068500 - _0206814E - 2; case 126 - .short _02068500 - _0206814E - 2; case 127 - .short _02068500 - _0206814E - 2; case 128 - .short _02068500 - _0206814E - 2; case 129 - .short _02068500 - _0206814E - 2; case 130 - .short _02068500 - _0206814E - 2; case 131 - .short _02068500 - _0206814E - 2; case 132 - .short _02068500 - _0206814E - 2; case 133 - .short _02068500 - _0206814E - 2; case 134 - .short _02068500 - _0206814E - 2; case 135 - .short _02068500 - _0206814E - 2; case 136 - .short _02068500 - _0206814E - 2; case 137 - .short _02068500 - _0206814E - 2; case 138 - .short _02068500 - _0206814E - 2; case 139 - .short _02068500 - _0206814E - 2; case 140 - .short _02068500 - _0206814E - 2; case 141 - .short _02068500 - _0206814E - 2; case 142 - .short _02068500 - _0206814E - 2; case 143 - .short _02068500 - _0206814E - 2; case 144 - .short _02068500 - _0206814E - 2; case 145 - .short _02068500 - _0206814E - 2; case 146 - .short _02068500 - _0206814E - 2; case 147 - .short _02068500 - _0206814E - 2; case 148 - .short _02068500 - _0206814E - 2; case 149 - .short _02068500 - _0206814E - 2; case 150 - .short _02068500 - _0206814E - 2; case 151 - .short _02068500 - _0206814E - 2; case 152 - .short _02068500 - _0206814E - 2; case 153 - .short _02068500 - _0206814E - 2; case 154 - .short _02068500 - _0206814E - 2; case 155 - .short _02068500 - _0206814E - 2; case 156 - .short _02068500 - _0206814E - 2; case 157 - .short _02068500 - _0206814E - 2; case 158 - .short _02068500 - _0206814E - 2; case 159 - .short _02068500 - _0206814E - 2; case 160 - .short _02068500 - _0206814E - 2; case 161 - .short _02068500 - _0206814E - 2; case 162 - .short _02068500 - _0206814E - 2; case 163 - .short _02068500 - _0206814E - 2; case 164 - .short _02068500 - _0206814E - 2; case 165 - .short _02068500 - _0206814E - 2; case 166 - .short _02068500 - _0206814E - 2; case 167 - .short _02068500 - _0206814E - 2; case 168 - .short _02068500 - _0206814E - 2; case 169 - .short _02068500 - _0206814E - 2; case 170 - .short _02068500 - _0206814E - 2; case 171 - .short _02068500 - _0206814E - 2; case 172 - .short _02068500 - _0206814E - 2; case 173 - .short _02068500 - _0206814E - 2; case 174 - .short _02068500 - _0206814E - 2; case 175 - .short _02068500 - _0206814E - 2; case 176 - .short _02068500 - _0206814E - 2; case 177 - .short _02068500 - _0206814E - 2; case 178 -_020682B4: - ldrh r0, [r4, #0x0] - mov r1, #0x64 - bl GetMonExpBySpeciesAndLevel - ldr r1, [r4, #0x8] - add r1, r1, r6 - cmp r1, r0 - bls _020682D2 - ldrh r0, [r4, #0x0] - mov r1, #0x64 - bl GetMonExpBySpeciesAndLevel - add sp, #0xc - str r0, [r4, #0x8] - pop {r4-r7, pc} -_020682D2: - add sp, #0xc - str r1, [r4, #0x8] - pop {r4-r7, pc} -_020682D8: - ldrb r0, [r4, #0xc] - add r0, r0, r6 - cmp r0, #0xff - ble _020682E8 - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0xc] - pop {r4-r7, pc} -_020682E8: - add sp, #0xc - strb r0, [r4, #0xc] - pop {r4-r7, pc} -_020682EE: - ldrb r0, [r4, #0x10] - add sp, #0xc - add r0, r0, r6 - strb r0, [r4, #0x10] - pop {r4-r7, pc} -_020682F8: - ldrb r0, [r4, #0x11] - add sp, #0xc - add r0, r0, r6 - strb r0, [r4, #0x11] - pop {r4-r7, pc} -_02068302: - ldrb r0, [r4, #0x12] - add sp, #0xc - add r0, r0, r6 - strb r0, [r4, #0x12] - pop {r4-r7, pc} -_0206830C: - ldrb r0, [r4, #0x13] - add sp, #0xc - add r0, r0, r6 - strb r0, [r4, #0x13] - pop {r4-r7, pc} -_02068316: - ldrb r0, [r4, #0x14] - add sp, #0xc - add r0, r0, r6 - strb r0, [r4, #0x14] - pop {r4-r7, pc} -_02068320: - ldrb r0, [r4, #0x15] - add sp, #0xc - add r0, r0, r6 - strb r0, [r4, #0x15] - pop {r4-r7, pc} -_0206832A: - ldrb r0, [r4, #0x16] - add r0, r0, r6 - cmp r0, #0xff - ble _0206833A - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0x16] - pop {r4-r7, pc} -_0206833A: - add sp, #0xc - strb r0, [r4, #0x16] - pop {r4-r7, pc} -_02068340: - ldrb r0, [r4, #0x17] - add r0, r0, r6 - cmp r0, #0xff - ble _02068350 - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0x17] - pop {r4-r7, pc} -_02068350: - add sp, #0xc - strb r0, [r4, #0x17] - pop {r4-r7, pc} -_02068356: - ldrb r0, [r4, #0x18] - add r0, r0, r6 - cmp r0, #0xff - ble _02068366 - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0x18] - pop {r4-r7, pc} -_02068366: - add sp, #0xc - strb r0, [r4, #0x18] - pop {r4-r7, pc} -_0206836C: - ldrb r0, [r4, #0x19] - add r0, r0, r6 - cmp r0, #0xff - ble _0206837C - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0x19] - pop {r4-r7, pc} -_0206837C: - add sp, #0xc - strb r0, [r4, #0x19] - pop {r4-r7, pc} -_02068382: - ldrb r0, [r4, #0x1a] - add r0, r0, r6 - cmp r0, #0xff - ble _02068392 - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0x1a] - pop {r4-r7, pc} -_02068392: - add sp, #0xc - strb r0, [r4, #0x1a] - pop {r4-r7, pc} -_02068398: - ldrb r0, [r4, #0x1b] - add r0, r0, r6 - cmp r0, #0xff - ble _020683A8 - mov r0, #0xff - add sp, #0xc - strb r0, [r4, #0x1b] - pop {r4-r7, pc} -_020683A8: - add sp, #0xc - strb r0, [r4, #0x1b] - pop {r4-r7, pc} -_020683AE: - add r0, r5, #0x0 - str r0, [sp, #0x4] - add r0, #0xc - str r0, [sp, #0x4] - sub r7, #0x3a - ldr r1, [sp, #0x4] - lsl r0, r7, #0x1 - str r0, [sp, #0x8] - add r4, r5, #0x0 - ldrh r0, [r5, r0] - ldrb r1, [r1, r7] - add r4, #0x8 - bl FUN_0206AB30 - ldrb r1, [r4, r7] - add r1, r6, r1 - cmp r1, r0 - ble _020683E4 - ldr r0, [sp, #0x8] - ldr r1, [sp, #0x4] - ldrh r0, [r5, r0] - ldrb r1, [r1, r7] - bl FUN_0206AB30 - add sp, #0xc - strb r0, [r4, r7] - pop {r4-r7, pc} -_020683E4: - add sp, #0xc - strb r1, [r4, r7] - pop {r4-r7, pc} -_020683EA: - add r5, #0xc - sub r7, #0x3e - ldrb r0, [r5, r7] - add r0, r6, r0 - cmp r0, #0x3 - ble _020683FE - mov r0, #0x3 - add sp, #0xc - strb r0, [r5, r7] - pop {r4-r7, pc} -_020683FE: - add sp, #0xc - strb r0, [r5, r7] - pop {r4-r7, pc} -_02068404: - ldr r1, [r5, #0x10] - lsl r0, r1, #0x1b - lsr r0, r0, #0x1b - add r2, r0, r6 - cmp r2, #0x1f - bls _0206841E - mov r0, #0x1f - bic r1, r0 - mov r0, #0x1f - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_0206841E: - mov r0, #0x1f - bic r1, r0 - mov r0, #0x1f - and r0, r2 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_0206842E: - ldr r1, [r5, #0x10] - lsl r0, r1, #0x16 - lsr r0, r0, #0x1b - add r2, r0, r6 - cmp r2, #0x1f - ldr r0, _02068508 ; =0xFFFFFC1F - bls _0206844A - and r1, r0 - mov r0, #0x3e - lsl r0, r0, #0x4 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_0206844A: - and r1, r0 - lsl r0, r2, #0x1b - lsr r0, r0, #0x16 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02068458: - ldr r1, [r5, #0x10] - lsl r0, r1, #0x11 - lsr r0, r0, #0x1b - add r2, r0, r6 - cmp r2, #0x1f - ldr r0, _0206850C ; =0xFFFF83FF - bls _02068474 - and r1, r0 - mov r0, #0x1f - lsl r0, r0, #0xa - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02068474: - and r1, r0 - lsl r0, r2, #0x1b - lsr r0, r0, #0x11 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02068482: - ldr r1, [r5, #0x10] - lsl r0, r1, #0xc - lsr r0, r0, #0x1b - add r2, r0, r6 - cmp r2, #0x1f - ldr r0, _02068510 ; =0xFFF07FFF - bls _0206849E - and r1, r0 - mov r0, #0x3e - lsl r0, r0, #0xe - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_0206849E: - and r1, r0 - lsl r0, r2, #0x1b - lsr r0, r0, #0xc - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_020684AC: - ldr r1, [r5, #0x10] - lsl r0, r1, #0x7 - lsr r0, r0, #0x1b - add r2, r0, r6 - cmp r2, #0x1f - ldr r0, _02068514 ; =0xFE0FFFFF - bls _020684C8 - and r1, r0 - mov r0, #0x1f - lsl r0, r0, #0x14 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_020684C8: - and r1, r0 - lsl r0, r2, #0x1b - lsr r0, r0, #0x7 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_020684D6: - ldr r1, [r5, #0x10] - lsl r0, r1, #0x2 - lsr r0, r0, #0x1b - add r2, r0, r6 - cmp r2, #0x1f - ldr r0, _02068518 ; =0xC1FFFFFF - bls _020684F2 - and r1, r0 - mov r0, #0x3e - lsl r0, r0, #0x18 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_020684F2: - and r1, r0 - lsl r0, r2, #0x1b - lsr r0, r0, #0x2 - orr r0, r1 - add sp, #0xc - str r0, [r5, #0x10] - pop {r4-r7, pc} -_02068500: - bl ErrorHandling -_02068504: - add sp, #0xc - pop {r4-r7, pc} - .balign 4 -_02068508: .word 0xFFFFFC1F -_0206850C: .word 0xFFFF83FF -_02068510: .word 0xFFF07FFF -_02068514: .word 0xFE0FFFFF -_02068518: .word 0xC1FFFFFF - thumb_func_start AllocAndLoadMonPersonal AllocAndLoadMonPersonal: ; 0x0206851C push {r3-r5, lr} diff --git a/arm9/asm/unk_020842DC.s b/arm9/asm/unk_020842DC.s index f57fe7e9..f06037c2 100644 --- a/arm9/asm/unk_020842DC.s +++ b/arm9/asm/unk_020842DC.s @@ -801,7 +801,7 @@ _0208495C: add r2, r0, #0x0 add r0, r5, #0x0 mov r1, #0x8 - bl AddMonPartyStatEncrypted + bl AddMonData add r0, r5, #0x0 bl CalcMonLevelAndStats ldr r0, [sp, #0x50] diff --git a/arm9/global.inc b/arm9/global.inc index f7346352..21cfb40c 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4723,7 +4723,7 @@ .extern GetBoxMonData .extern SetMonData .extern SetBoxMonData -.extern AddMonPartyStatEncrypted +.extern AddMonData .extern AllocAndLoadMonPersonal .extern GetPersonalAttr .extern FreeMonPersonal diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index ab76b727..2e80cbba 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -6313,7 +6313,7 @@ _022308C4: ldr r0, [sp, #0x18] ldr r2, [sp, #0x20] add r1, #0x3a - bl AddMonPartyStatEncrypted + bl AddMonData ldr r0, [sp, #0x10] cmp r0, r5 beq _0223091C @@ -6384,7 +6384,7 @@ _0223097E: ldr r0, [sp, #0x18] ldr r2, [sp, #0x20] add r1, #0x3a - bl AddMonPartyStatEncrypted + bl AddMonData ldr r0, [sp, #0x10] cmp r0, r5 beq _022309B4 @@ -6524,7 +6524,7 @@ _02230AC2: ldr r0, [sp, #0x18] ldr r2, [sp, #0x20] mov r1, #0xa2 - bl AddMonPartyStatEncrypted + bl AddMonData ldr r0, [sp, #0x38] mov r1, #0x17 lsl r0, r0, #0x10 @@ -6692,7 +6692,7 @@ _02230C28: ldr r0, [sp, #0x18] ldr r2, [sp, #8] mov r1, #9 - bl AddMonPartyStatEncrypted + bl AddMonData ldr r0, [sp, #0x10] cmp r0, r5 beq _02230C3E diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index c1f69ded..4e673496 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -1393,3 +1393,344 @@ void SetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * value) } #undef VALUE } + +void AddMonData(struct Pokemon * pokemon, int attr, int value) +{ + u16 checksum; + if (!pokemon->box.party_lock) + { + DECRYPT_PTY(pokemon); + DECRYPT_BOX(&pokemon->box); + checksum = CHECKSUM(&pokemon->box); + if (checksum != pokemon->box.checksum) + { + GF_ASSERT(checksum == pokemon->box.checksum); + ENCRYPT_BOX(&pokemon->box); + return; + } + } + AddMonDataInternal(pokemon, attr, value); + if (!pokemon->box.party_lock) + { + ENCRYPT_PTY(pokemon); + pokemon->box.checksum = CHECKSUM(&pokemon->box); + ENCRYPT_BOX(&pokemon->box); + } +} + +void AddMonDataInternal(struct Pokemon * pokemon, int attr, int value) +{ + s32 maxHp; + switch (attr) + { + case MON_DATA_HP: + maxHp = pokemon->party.maxHp; + if ((s32)(pokemon->party.hp + value) > maxHp) + pokemon->party.hp = maxHp; + else + pokemon->party.hp += value; + break; + case MON_DATA_STATUS: + case MON_DATA_LEVEL: + case MON_DATA_CAPSULE: + case MON_DATA_MAXHP: + case MON_DATA_ATK: + case MON_DATA_DEF: + case MON_DATA_SPEED: + case MON_DATA_SPATK: + case MON_DATA_SPDEF: + case MON_DATA_SEAL_STRUCT: + // case MON_DATA_SEAL_COORDS: + GF_ASSERT(0); + break; + default: + AddBoxMonData(&pokemon->box, attr, value); + break; + } +} + +void AddBoxMonData(struct BoxPokemon * boxmon, int attr, int value) +{ + PokemonDataBlockA *blockA = &GetSubstruct(boxmon, boxmon->pid, 0)->blockA; + PokemonDataBlockB *blockB = &GetSubstruct(boxmon, boxmon->pid, 1)->blockB; + PokemonDataBlockC *blockC = &GetSubstruct(boxmon, boxmon->pid, 2)->blockC; + PokemonDataBlockD *blockD = &GetSubstruct(boxmon, boxmon->pid, 3)->blockD; + + switch (attr) + { + case MON_DATA_EXPERIENCE: + if (blockA->exp + value > GetMonExpBySpeciesAndLevel(blockA->species, 100)) + blockA->exp = GetMonExpBySpeciesAndLevel(blockA->species, 100); + else + blockA->exp += value; + break; + case MON_DATA_FRIENDSHIP: + if (blockA->friendship + value > 255) + blockA->friendship = 255; + else + blockA->friendship += value; + break; + case MON_DATA_HP_EV: + blockA->hpEV += value; + break; + case MON_DATA_ATK_EV: + blockA->atkEV += value; + break; + case MON_DATA_DEF_EV: + blockA->defEV += value; + break; + case MON_DATA_SPEED_EV: + blockA->spdEV += value; + break; + case MON_DATA_SPATK_EV: + blockA->spatkEV += value; + break; + case MON_DATA_SPDEF_EV: + blockA->spdefEV += value; + break; + case MON_DATA_COOL: + if (blockA->coolStat + value > 255) + blockA->coolStat = 255; + else + blockA->coolStat += value; + break; + case MON_DATA_BEAUTY: + if (blockA->beautyStat + value > 255) + blockA->beautyStat = 255; + else + blockA->beautyStat += value; + break; + case MON_DATA_CUTE: + if (blockA->cuteStat + value > 255) + blockA->cuteStat = 255; + else + blockA->cuteStat += value; + break; + case MON_DATA_SMART: + if (blockA->smartStat + value > 255) + blockA->smartStat = 255; + else + blockA->smartStat += value; + break; + case MON_DATA_TOUGH: + if (blockA->toughStat + value > 255) + blockA->toughStat = 255; + else + blockA->toughStat += value; + break; + case MON_DATA_SHEEN: + if (blockA->sheen + value > 255) + blockA->sheen = 255; + else + blockA->sheen += value; + break; + case MON_DATA_MOVE1PP: + case MON_DATA_MOVE2PP: + case MON_DATA_MOVE3PP: + case MON_DATA_MOVE4PP: + if (blockB->movePP[attr - MON_DATA_MOVE1PP] + value > FUN_0206AB30(blockB->moves[attr - MON_DATA_MOVE1PP], blockB->movePpUps[attr - MON_DATA_MOVE1PP])) + blockB->movePP[attr - MON_DATA_MOVE1PP] = FUN_0206AB30(blockB->moves[attr - MON_DATA_MOVE1PP], blockB->movePpUps[attr - MON_DATA_MOVE1PP]); + else + blockB->movePP[attr - MON_DATA_MOVE1PP] += value; + break; + case MON_DATA_MOVE1PPUP: + case MON_DATA_MOVE2PPUP: + case MON_DATA_MOVE3PPUP: + case MON_DATA_MOVE4PPUP: + if (blockB->movePpUps[attr - MON_DATA_MOVE1PPUP] + value > 3) + blockB->movePpUps[attr - MON_DATA_MOVE1PPUP] = 3; + else + blockB->movePpUps[attr - MON_DATA_MOVE1PPUP] += value; + break; + case MON_DATA_MOVE1MAXPP: + case MON_DATA_MOVE2MAXPP: + case MON_DATA_MOVE3MAXPP: + case MON_DATA_MOVE4MAXPP: + break; + case MON_DATA_HP_IV: + if (blockB->hpIV + value > 31) + blockB->hpIV = 31; + else + blockB->hpIV += value; + break; + case MON_DATA_ATK_IV: + if (blockB->atkIV + value > 31) + blockB->atkIV = 31; + else + blockB->atkIV += value; + break; + case MON_DATA_DEF_IV: + if (blockB->defIV + value > 31) + blockB->defIV = 31; + else + blockB->defIV += value; + break; + case MON_DATA_SPEED_IV: + if (blockB->spdIV + value > 31) + blockB->spdIV = 31; + else + blockB->spdIV += value; + break; + case MON_DATA_SPATK_IV: + if (blockB->spatkIV + value > 31) + blockB->spatkIV = 31; + else + blockB->spatkIV += value; + break; + case MON_DATA_SPDEF_IV: + if (blockB->spdefIV + value > 31) + blockB->spdefIV = 31; + else + blockB->spdefIV += value; + break; + case MON_DATA_PERSONALITY: + case MON_DATA_PARTY_LOCK: + case MON_DATA_BOX_LOCK: + case MON_DATA_CHECKSUM_FAILED: + case MON_DATA_CHECKSUM: + case MON_DATA_SPECIES: + case MON_DATA_HELD_ITEM: + case MON_DATA_OTID: + case MON_DATA_ABILITY: + case MON_DATA_MARKINGS: + case MON_DATA_GAME_LANGUAGE: + case MON_DATA_SINNOH_CHAMP_RIBBON: + case MON_DATA_SINNOH_RIBBON_26: + case MON_DATA_SINNOH_RIBBON_27: + case MON_DATA_SINNOH_RIBBON_28: + case MON_DATA_SINNOH_RIBBON_29: + case MON_DATA_SINNOH_RIBBON_30: + case MON_DATA_SINNOH_RIBBON_31: + case MON_DATA_SINNOH_RIBBON_32: + case MON_DATA_SINNOH_RIBBON_33: + case MON_DATA_SINNOH_RIBBON_34: + case MON_DATA_SINNOH_RIBBON_35: + case MON_DATA_SINNOH_RIBBON_36: + case MON_DATA_SINNOH_RIBBON_37: + case MON_DATA_SINNOH_RIBBON_38: + case MON_DATA_SINNOH_RIBBON_39: + case MON_DATA_SINNOH_RIBBON_40: + case MON_DATA_SINNOH_RIBBON_41: + case MON_DATA_SINNOH_RIBBON_42: + case MON_DATA_SINNOH_RIBBON_43: + case MON_DATA_SINNOH_RIBBON_44: + case MON_DATA_SINNOH_RIBBON_45: + case MON_DATA_SINNOH_RIBBON_46: + case MON_DATA_SINNOH_RIBBON_47: + case MON_DATA_SINNOH_RIBBON_48: + case MON_DATA_SINNOH_RIBBON_49: + case MON_DATA_SINNOH_RIBBON_50: + case MON_DATA_SINNOH_RIBBON_51: + case MON_DATA_SINNOH_RIBBON_52: + case MON_DATA_SINNOH_RIBBON_53: + case MON_DATA_MOVE1: + case MON_DATA_MOVE2: + case MON_DATA_MOVE3: + case MON_DATA_MOVE4: + case MON_DATA_IS_EGG: + case MON_DATA_HAS_NICKNAME: + case MON_DATA_COOL_RIBBON: + case MON_DATA_HOENN_RIBBON_79: + case MON_DATA_HOENN_RIBBON_80: + case MON_DATA_HOENN_RIBBON_81: + case MON_DATA_HOENN_RIBBON_82: + case MON_DATA_HOENN_RIBBON_83: + case MON_DATA_HOENN_RIBBON_84: + case MON_DATA_HOENN_RIBBON_85: + case MON_DATA_HOENN_RIBBON_86: + case MON_DATA_HOENN_RIBBON_87: + case MON_DATA_HOENN_RIBBON_88: + case MON_DATA_HOENN_RIBBON_89: + case MON_DATA_HOENN_RIBBON_90: + case MON_DATA_HOENN_RIBBON_91: + case MON_DATA_HOENN_RIBBON_92: + case MON_DATA_HOENN_RIBBON_93: + case MON_DATA_HOENN_RIBBON_94: + case MON_DATA_HOENN_RIBBON_95: + case MON_DATA_HOENN_RIBBON_96: + case MON_DATA_HOENN_RIBBON_97: + case MON_DATA_HOENN_RIBBON_98: + case MON_DATA_HOENN_RIBBON_99: + case MON_DATA_HOENN_RIBBON_100: + case MON_DATA_HOENN_RIBBON_101: + case MON_DATA_HOENN_RIBBON_102: + case MON_DATA_HOENN_RIBBON_103: + case MON_DATA_HOENN_RIBBON_104: + case MON_DATA_HOENN_RIBBON_105: + case MON_DATA_HOENN_RIBBON_106: + case MON_DATA_HOENN_RIBBON_107: + case MON_DATA_HOENN_RIBBON_108: + case MON_DATA_HOENN_RIBBON_109: + case MON_DATA_FATEFUL_ENCOUNTER: + case MON_DATA_GENDER: + case MON_DATA_FORME: + case MON_DATA_RESERVED_113: + case MON_DATA_RESERVED_114: + case MON_DATA_UNUSED_115: + case MON_DATA_NICKNAME: + case MON_DATA_NICKNAME_2: + case MON_DATA_NICKNAME_3: + case MON_DATA_NICKNAME_4: + case MON_DATA_UNK_120: + case MON_DATA_GAME_VERSION: + case MON_DATA_SINNOH_RIBBON_122: + case MON_DATA_SINNOH_RIBBON_123: + case MON_DATA_SINNOH_RIBBON_124: + case MON_DATA_SINNOH_RIBBON_125: + case MON_DATA_SINNOH_RIBBON_126: + case MON_DATA_SINNOH_RIBBON_127: + case MON_DATA_SINNOH_RIBBON_128: + case MON_DATA_SINNOH_RIBBON_129: + case MON_DATA_SINNOH_RIBBON_130: + case MON_DATA_SINNOH_RIBBON_131: + case MON_DATA_SINNOH_RIBBON_132: + case MON_DATA_SINNOH_RIBBON_133: + case MON_DATA_SINNOH_RIBBON_134: + case MON_DATA_SINNOH_RIBBON_135: + case MON_DATA_SINNOH_RIBBON_136: + case MON_DATA_SINNOH_RIBBON_137: + case MON_DATA_SINNOH_RIBBON_138: + case MON_DATA_SINNOH_RIBBON_139: + case MON_DATA_SINNOH_RIBBON_140: + case MON_DATA_SINNOH_RIBBON_141: + case MON_DATA_SINNOH_RIBBON_142: + case MON_DATA_OT_NAME: + case MON_DATA_OT_NAME_2: + case MON_DATA_EGG_MET_YEAR: + case MON_DATA_EGG_MET_MONTH: + case MON_DATA_EGG_MET_DAY: + case MON_DATA_MET_YEAR: + case MON_DATA_MET_MONTH: + case MON_DATA_MET_DAY: + case MON_DATA_EGG_MET_LOCATION: + case MON_DATA_MET_LOCATION: + case MON_DATA_POKERUS: + case MON_DATA_POKEBALL: + case MON_DATA_MET_LEVEL: + case MON_DATA_MET_GENDER: + case MON_DATA_ENCOUNTER_TYPE: + case MON_DATA_RESERVED_158: + case MON_DATA_STATUS: + case MON_DATA_LEVEL: + case MON_DATA_CAPSULE: + case MON_DATA_HP: + case MON_DATA_MAXHP: + case MON_DATA_ATK: + case MON_DATA_DEF: + case MON_DATA_SPEED: + case MON_DATA_SPATK: + case MON_DATA_SPDEF: + case MON_DATA_SEAL_STRUCT: + case MON_DATA_SEAL_COORDS: + case MON_DATA_SPECIES_EXISTS: + case MON_DATA_SANITY_IS_EGG: + case MON_DATA_SPECIES2: + case MON_DATA_IVS_WORD: + case MON_DATA_UNK_175: + case MON_DATA_TYPE_1: + case MON_DATA_TYPE_2: + case MON_DATA_SPECIES_NAME: + default: + GF_ASSERT(0); + } +} diff --git a/include/move_data.h b/include/move_data.h index d4e3c128..975bcf8d 100644 --- a/include/move_data.h +++ b/include/move_data.h @@ -1,6 +1,6 @@ #ifndef POKEDIAMOND_MOVE_DATA_H #define POKEDIAMOND_MOVE_DATA_H -u32 FUN_0206AB30(u16 move, u8 ppUp); +int FUN_0206AB30(u16 move, u8 ppUp); #endif //POKEDIAMOND_MOVE_DATA_H diff --git a/include/pokemon.h b/include/pokemon.h index 451c7d1b..d2166c22 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -504,7 +504,8 @@ void SetMonDataInternal(struct Pokemon * pokemon, int attr, void * ptr); void SetMonData(struct Pokemon * pokemon, int attr, void * ptr); void SetBoxMonDataInternal(struct BoxPokemon * pokemon, int attr, void * ptr); void SetBoxMonData(struct BoxPokemon * pokemon, int attr, void * ptr); -void AddMonData(struct Pokemon * pokemon, int attr, u32 amount); -void AddBoxMonData(struct Pokemon * pokemon, int attr, u32 amount); +void AddMonData(struct Pokemon * pokemon, int attr, int amount); +void AddMonDataInternal(struct Pokemon * pokemon, int attr, int amount); +void AddBoxMonData(struct BoxPokemon * pokemon, int attr, int amount); #endif //POKEDIAMOND_POKEMON_H -- cgit v1.2.3 From f93a6043eb52c63d1a64a3e9f10c113d4e5acc02 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jun 2020 12:53:41 -0400 Subject: Through GetMonBaseStat --- arm9/asm/pokemon_s.s | 230 --------------------------------------------------- arm9/src/pokemon.c | 151 ++++++++++++++++++++++++++++++++- include/pokemon.h | 100 +++++++++++----------- 3 files changed, 199 insertions(+), 282 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index d88114bc..987aaf06 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -24,236 +24,6 @@ UNK_021C5AC0: ; 0x021C5AC0 .text - thumb_func_start AllocAndLoadMonPersonal -AllocAndLoadMonPersonal: ; 0x0206851C - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x2c - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl LoadMonPersonal - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start GetPersonalAttr -GetPersonalAttr: ; 0x02068538 - push {r4-r6, lr} - add r4, r0, #0x0 - add r6, r1, #0x0 - cmp r4, #0x0 - bne _02068546 - bl ErrorHandling -_02068546: - cmp r6, #0x20 - bhi _0206863A - add r0, r6, r6 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02068556: ; jump table (using 16-bit offset) - .short _02068598 - _02068556 - 2; case 0 - .short _0206859C - _02068556 - 2; case 1 - .short _020685A0 - _02068556 - 2; case 2 - .short _020685A4 - _02068556 - 2; case 3 - .short _020685A8 - _02068556 - 2; case 4 - .short _020685AC - _02068556 - 2; case 5 - .short _020685B0 - _02068556 - 2; case 6 - .short _020685B4 - _02068556 - 2; case 7 - .short _020685B8 - _02068556 - 2; case 8 - .short _020685BC - _02068556 - 2; case 9 - .short _020685C0 - _02068556 - 2; case 10 - .short _020685C8 - _02068556 - 2; case 11 - .short _020685D0 - _02068556 - 2; case 12 - .short _020685D8 - _02068556 - 2; case 13 - .short _020685E0 - _02068556 - 2; case 14 - .short _020685E8 - _02068556 - 2; case 15 - .short _020685F0 - _02068556 - 2; case 16 - .short _020685F4 - _02068556 - 2; case 17 - .short _020685F8 - _02068556 - 2; case 18 - .short _020685FC - _02068556 - 2; case 19 - .short _02068600 - _02068556 - 2; case 20 - .short _02068604 - _02068556 - 2; case 21 - .short _02068608 - _02068556 - 2; case 22 - .short _0206860C - _02068556 - 2; case 23 - .short _02068610 - _02068556 - 2; case 24 - .short _02068614 - _02068556 - 2; case 25 - .short _02068618 - _02068556 - 2; case 26 - .short _0206861C - _02068556 - 2; case 27 - .short _02068624 - _02068556 - 2; case 28 - .short _0206862C - _02068556 - 2; case 29 - .short _02068630 - _02068556 - 2; case 30 - .short _02068634 - _02068556 - 2; case 31 - .short _02068638 - _02068556 - 2; case 32 -_02068598: - ldrb r5, [r4, #0x0] - b _0206863A -_0206859C: - ldrb r5, [r4, #0x1] - b _0206863A -_020685A0: - ldrb r5, [r4, #0x2] - b _0206863A -_020685A4: - ldrb r5, [r4, #0x3] - b _0206863A -_020685A8: - ldrb r5, [r4, #0x4] - b _0206863A -_020685AC: - ldrb r5, [r4, #0x5] - b _0206863A -_020685B0: - ldrb r5, [r4, #0x6] - b _0206863A -_020685B4: - ldrb r5, [r4, #0x7] - b _0206863A -_020685B8: - ldrb r5, [r4, #0x8] - b _0206863A -_020685BC: - ldrb r5, [r4, #0x9] - b _0206863A -_020685C0: - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x1e - lsr r5, r0, #0x1e - b _0206863A -_020685C8: - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x1c - lsr r5, r0, #0x1e - b _0206863A -_020685D0: - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x1a - lsr r5, r0, #0x1e - b _0206863A -_020685D8: - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x18 - lsr r5, r0, #0x1e - b _0206863A -_020685E0: - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x16 - lsr r5, r0, #0x1e - b _0206863A -_020685E8: - ldrh r0, [r4, #0xa] - lsl r0, r0, #0x14 - lsr r5, r0, #0x1e - b _0206863A -_020685F0: - ldrh r5, [r4, #0xc] - b _0206863A -_020685F4: - ldrh r5, [r4, #0xe] - b _0206863A -_020685F8: - ldrb r5, [r4, #0x10] - b _0206863A -_020685FC: - ldrb r5, [r4, #0x11] - b _0206863A -_02068600: - ldrb r5, [r4, #0x12] - b _0206863A -_02068604: - ldrb r5, [r4, #0x13] - b _0206863A -_02068608: - ldrb r5, [r4, #0x14] - b _0206863A -_0206860C: - ldrb r5, [r4, #0x15] - b _0206863A -_02068610: - ldrb r5, [r4, #0x16] - b _0206863A -_02068614: - ldrb r5, [r4, #0x17] - b _0206863A -_02068618: - ldrb r5, [r4, #0x18] - b _0206863A -_0206861C: - ldrb r0, [r4, #0x19] - lsl r0, r0, #0x19 - lsr r5, r0, #0x19 - b _0206863A -_02068624: - ldrb r0, [r4, #0x19] - lsl r0, r0, #0x18 - lsr r5, r0, #0x1f - b _0206863A -_0206862C: - ldr r5, [r4, #0x1c] - b _0206863A -_02068630: - ldr r5, [r4, #0x20] - b _0206863A -_02068634: - ldr r5, [r4, #0x24] - b _0206863A -_02068638: - ldr r5, [r4, #0x28] -_0206863A: - add r0, r5, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FreeMonPersonal -FreeMonPersonal: ; 0x02068640 - push {r4, lr} - add r4, r0, #0x0 - bne _0206864A - bl ErrorHandling -_0206864A: - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - .balign 4 - - thumb_func_start GetMonBaseStat_HandleFormeConversion -GetMonBaseStat_HandleFormeConversion: ; 0x02068654 - push {r3-r5, lr} - add r4, r2, #0x0 - bl ResolveMonForme - mov r1, #0x0 - bl AllocAndLoadMonPersonal - add r5, r0, #0x0 - add r1, r4, #0x0 - bl GetPersonalAttr - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FreeMonPersonal - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start GetMonBaseStat -GetMonBaseStat: ; 0x02068678 - push {r3-r5, lr} - add r4, r1, #0x0 - mov r1, #0x0 - bl AllocAndLoadMonPersonal - add r5, r0, #0x0 - add r1, r4, #0x0 - bl GetPersonalAttr - add r4, r0, #0x0 - add r0, r5, #0x0 - bl FreeMonPersonal - add r0, r4, #0x0 - pop {r3-r5, pc} - .balign 4 - thumb_func_start GetPercentProgressTowardsNextLevel GetPercentProgressTowardsNextLevel: ; 0x02068698 push {r3-r7, lr} diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 4e673496..02428ff6 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -12,14 +12,21 @@ #pragma thumb on +u32 GetMonDataInternal(struct Pokemon * pokemon, int attr, void * ptr); +u32 GetBoxMonDataInternal(struct BoxPokemon * pokemon, int attr, void * ptr); +void SetMonDataInternal(struct Pokemon * pokemon, int attr, void * ptr); +void SetBoxMonDataInternal(struct BoxPokemon * pokemon, int attr, void * ptr); +void AddMonDataInternal(struct Pokemon * pokemon, int attr, int amount); +void AddBoxMonData(struct BoxPokemon * pokemon, int attr, int amount); +void LoadMonPersonal(int species, struct BaseStats * personal); +int ResolveMonForme(int species, int forme); + void MonEncryptSegment(void * datap, u32 size, u32 key); void MonDecryptSegment(void * datap, u32 size, u32 key); u16 MonEncryptionLCRNG(u32 * seed); u16 CalcMonChecksum(void * datap, u32 size); void InitBoxMonMoveset(struct BoxPokemon * boxmon); -u32 GetMonDataInternal(struct Pokemon * pokemon, int attr, void * ptr); PokemonDataBlock * GetSubstruct(struct BoxPokemon * boxmon, u32 personality, u32 which_struct); -u32 GetBoxMonDataInternal(struct BoxPokemon * pokemon, int attr, void * ptr); void LoadMonBaseStats_HandleAlternateForme(u32 species, u32 forme, struct BaseStats * baseStats); int ApplyNatureModToStat(u8 nature, u16 statval, u32 statno); @@ -1734,3 +1741,143 @@ void AddBoxMonData(struct BoxPokemon * boxmon, int attr, int value) GF_ASSERT(0); } } + +struct BaseStats * AllocAndLoadMonPersonal(int species, u32 heap_id) +{ + struct BaseStats * baseStats = (struct BaseStats *)AllocFromHeap(heap_id, sizeof(struct BaseStats)); + LoadMonPersonal(species, baseStats); + return baseStats; +} + +int GetPersonalAttr(struct BaseStats * baseStats, enum BaseStat attr) +{ + int ret; + GF_ASSERT(baseStats != NULL); + switch (attr) + { + case BASE_HP: + ret = baseStats->hp; + break; + case BASE_ATK: + ret = baseStats->atk; + break; + case BASE_DEF: + ret = baseStats->def; + break; + case BASE_SPEED: + ret = baseStats->speed; + break; + case BASE_SPATK: + ret = baseStats->spatk; + break; + case BASE_SPDEF: + ret = baseStats->spdef; + break; + case BASE_TYPE1: + ret = baseStats->types[0]; + break; + case BASE_TYPE2: + ret = baseStats->types[1]; + break; + case BASE_CATCH_RATE: + ret = baseStats->catchRate; + break; + case BASE_EXP_YIELD: + ret = baseStats->expYield; + break; + case BASE_HP_YIELD: + ret = baseStats->hp_yield; + break; + case BASE_ATK_YIELD: + ret = baseStats->atk_yield; + break; + case BASE_DEF_YIELD: + ret = baseStats->def_yield; + break; + case BASE_SPEED_YIELD: + ret = baseStats->speed_yield; + break; + case BASE_SPATK_YIELD: + ret = baseStats->spatk_yield; + break; + case BASE_SPDEF_YIELD: + ret = baseStats->spdef_yield; + break; + case BASE_ITEM_1: + ret = baseStats->item1; + break; + case BASE_ITEM_2: + ret = baseStats->item2; + break; + case BASE_GENDER_RATIO: + ret = baseStats->genderRatio; + break; + case BASE_EGG_CYCLES: + ret = baseStats->eggCycles; + break; + case BASE_FRIENDSHIP: + ret = baseStats->friendship; + break; + case BASE_GROWTH_RATE: + ret = baseStats->growthRate; + break; + case BASE_EGG_GROUP_1: + ret = baseStats->eggGroups[0]; + break; + case GASE_EGG_GROUP_2: + ret = baseStats->eggGroups[1]; + break; + case BASE_ABILITY_1: + ret = baseStats->abilities[0]; + break; + case BASE_ABILITY_2: + ret = baseStats->abilities[1]; + break; + case BASE_GREAT_MARSH_RATE: + ret = baseStats->greatMarshRate; + break; + case BASE_COLOR: + ret = baseStats->color; + break; + case BASE_FLIP: + ret = baseStats->flip; + break; + case BASE_UNKNOWN_29: + ret = baseStats->unk1C; + break; + case BASE_UNKNOWN_30: + ret = baseStats->unk20; + break; + case BASE_UNKNOWN_31: + ret = baseStats->unk24; + break; + case BASE_UNKNOWN_32: + ret = baseStats->unk28; + break; + } + return ret; +} + +void FreeMonPersonal(struct BaseStats * personal) +{ + GF_ASSERT(personal != NULL); + FreeToHeap(personal); +} + +int GetMonBaseStat_HandleFormeConversion(int species, int forme, enum BaseStat attr) +{ + int ret; + struct BaseStats * personal = AllocAndLoadMonPersonal(ResolveMonForme(species, forme), 0); + ret = GetPersonalAttr(personal, attr); + FreeMonPersonal(personal); + return ret; +} + +int GetMonBaseStat(int species, enum BaseStat attr) +{ + int ret; + struct BaseStats * personal = AllocAndLoadMonPersonal(species, 0); + ret = GetPersonalAttr(personal, attr); + FreeMonPersonal(personal); + return ret; +} diff --git a/include/pokemon.h b/include/pokemon.h index d2166c22..b7642f74 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -220,7 +220,7 @@ enum BaseStat { BASE_SPEED_YIELD, BASE_SPATK_YIELD, BASE_SPDEF_YIELD, - BASE_ITEM_1 = 16, + BASE_ITEM_1, BASE_ITEM_2, BASE_GENDER_RATIO, BASE_EGG_CYCLES, @@ -233,42 +233,45 @@ enum BaseStat { BASE_GREAT_MARSH_RATE, BASE_COLOR, BASE_FLIP, + BASE_UNKNOWN_29, + BASE_UNKNOWN_30, + BASE_UNKNOWN_31, + BASE_UNKNOWN_32, }; struct BaseStats { - u8 hp; - u8 atk; - u8 def; - u8 speed; - u8 spatk; - u8 spdef; - u8 types[2]; - u8 catchRate; - u8 expYield; - u16 hp_yield:2; - u16 atk_yield:2; - u16 def_yield:2; - u16 speed_yield:2; - u16 spatk_yield:2; - u16 spdef_yield:2; - u16 unkB_4:2; - u16 padding_B_6:2; - u16 item1; - u16 item2; - u8 genderRatio; - u8 eggCycles; - u8 friendship; - u8 growthRate; - u8 eggGroups[2]; - u8 abilities[2]; - u8 greatMarshRate; - u8 color:7; - u8 flip:1; - u8 padding_1A[2]; - u32 unk1C; - u32 unk20; - u32 unk24; - u32 unk28; + /* 0x00 */ u8 hp; + /* 0x01 */ u8 atk; + /* 0x02 */ u8 def; + /* 0x03 */ u8 speed; + /* 0x04 */ u8 spatk; + /* 0x05 */ u8 spdef; + /* 0x06 */ u8 types[2]; + /* 0x08 */ u8 catchRate; + /* 0x09 */ u8 expYield; + /* 0x0A */ u16 hp_yield:2; + u16 atk_yield:2; + u16 def_yield:2; + u16 speed_yield:2; + /* 0x0B */ u16 spatk_yield:2; + u16 spdef_yield:2; + u16 padding_B_4:4; + /* 0x0C */ u16 item1; + /* 0x0E */ u16 item2; + /* 0x10 */ u8 genderRatio; + /* 0x11 */ u8 eggCycles; + /* 0x12 */ u8 friendship; + /* 0x13 */ u8 growthRate; + /* 0x14 */ u8 eggGroups[2]; + /* 0x16 */ u8 abilities[2]; + /* 0x18 */ u8 greatMarshRate; + /* 0x19 */ u8 color:7; + u8 flip:1; + u8 padding_1A[2]; + /* 0x1C */ u32 unk1C; + /* 0x20 */ u32 unk20; + /* 0x24 */ u32 unk24; + /* 0x28 */ u32 unk28; }; typedef enum { @@ -480,6 +483,18 @@ u32 GenPersonalityByGenderAndNature(u16 species, u8 gender, u8 nature); void CreateMonWithFixedIVs(struct Pokemon * pokemon, int species, int level, int ivs, int personality); void CalcMonLevelAndStats(struct Pokemon * pokemon); void CalcMonStats(struct Pokemon * pokemon); +#ifndef IN_POKEMON_C +u32 GetMonData(); +u32 GetBoxMonData(); +#else +u32 GetMonData(struct Pokemon * pokemon, int attr, void * ptr); +u32 GetBoxMonData(struct BoxPokemon * pokemon, int attr, void * ptr); +#endif +void SetMonData(struct Pokemon * pokemon, int attr, void * ptr); +void SetBoxMonData(struct BoxPokemon * pokemon, int attr, void * ptr); +void AddMonData(struct Pokemon * pokemon, int attr, int amount); +struct BaseStats * AllocAndLoadMonPersonal(int species, u32 heap_id); + u32 CalcMonLevelEncrypted(struct Pokemon * pokemon); u8 GetBoxMonNature(struct BoxPokemon * boxmon); u8 GetMonNature(struct Pokemon * mon); @@ -487,25 +502,10 @@ u8 GetNatureFromPersonality(u32 pid); u8 GetGenderBySpeciesAndPersonality(u16 species, u32 pid); u32 GetBoxMonGenderEncrypted(struct BoxPokemon * boxmon); int GetMonBaseStat_HandleFormeConversion(int species, int form, enum BaseStat stat_id); -u32 GetMonBaseStat(int species, enum BaseStat stat_id); +int GetMonBaseStat(int species, enum BaseStat stat_id); u32 GetMonExpBySpeciesAndLevel(int species, int level); void LoadGrowthTable(int species, int * table); int GetExpByGrowthRateAndLevel(int rate, int level); int CalcLevelBySpeciesAndExp(int species, int experience); -#ifndef IN_POKEMON_C -u32 GetMonData(); -u32 GetBoxMonData(); -#else -u32 GetMonData(struct Pokemon * pokemon, int attr, void * ptr); -u32 GetBoxMonData(struct BoxPokemon * pokemon, int attr, void * ptr); -#endif -void SetMonDataInternal(struct Pokemon * pokemon, int attr, void * ptr); -void SetMonData(struct Pokemon * pokemon, int attr, void * ptr); -void SetBoxMonDataInternal(struct BoxPokemon * pokemon, int attr, void * ptr); -void SetBoxMonData(struct BoxPokemon * pokemon, int attr, void * ptr); -void AddMonData(struct Pokemon * pokemon, int attr, int amount); -void AddMonDataInternal(struct Pokemon * pokemon, int attr, int amount); -void AddBoxMonData(struct BoxPokemon * pokemon, int attr, int amount); - #endif //POKEDIAMOND_POKEMON_H -- cgit v1.2.3 From 321da97e6fdd66192484ca9aa60581b69fb3e7a4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jun 2020 13:49:41 -0400 Subject: Through ModifyStatByNature --- arm9/asm/pokemon_s.s | 344 ++-------------------------------------- arm9/asm/unk_0202B034.s | 4 +- arm9/asm/unk_0206B688.s | 8 +- arm9/asm/unk_02079C70.s | 4 +- arm9/asm/unk_020842DC.s | 2 +- arm9/global.inc | 14 +- arm9/modules/05/asm/module_05.s | 4 +- arm9/modules/14/asm/module_14.s | 28 ++-- arm9/modules/27/asm/module_27.s | 4 +- arm9/modules/35/asm/module_35.s | 4 +- arm9/modules/69/asm/module_69.s | 6 +- arm9/modules/71/asm/module_71.s | 4 +- arm9/modules/80/asm/module_80.s | 16 +- arm9/modules/81/asm/module_81.s | 4 +- arm9/modules/83/asm/module_83.s | 4 +- arm9/src/pokemon.c | 172 +++++++++++++++++--- include/filesystem.h | 1 + include/pokemon.h | 24 +-- 18 files changed, 238 insertions(+), 409 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 987aaf06..a2fb59bb 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -16,320 +16,10 @@ __local_str_poketool_personal_pms_narc: ; 0x02105FC8 .asciz "poketool/personal/pms.narc" - .section .bss - - .global UNK_021C5AC0 -UNK_021C5AC0: ; 0x021C5AC0 - .space 0x194 - .text - thumb_func_start GetPercentProgressTowardsNextLevel -GetPercentProgressTowardsNextLevel: ; 0x02068698 - push {r3-r7, lr} - add r5, r0, #0x0 - bl TryDecryptMon - str r0, [sp, #0x0] - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - add r0, r5, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 - add r0, r6, #0x0 - add r1, r7, #0x0 - bl GetMonExpBySpeciesAndLevel - add r4, r0, #0x0 - add r0, r6, #0x0 - add r1, r7, #0x1 - bl GetMonExpBySpeciesAndLevel - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x8 - mov r2, #0x0 - bl GetMonData - add r7, r0, #0x0 - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - bl TryEncryptMon - sub r1, r7, r4 - mov r0, #0x64 - mul r0, r1 - sub r1, r6, r4 - bl _u32_div_f - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3-r7, pc} - - thumb_func_start CalcMonExpToNextLevelEncrypted -CalcMonExpToNextLevelEncrypted: ; 0x020686F8 - ldr r3, _020686FC ; =CalcBoxMonExpToNextLevelEncrypted - bx r3 - .balign 4 -_020686FC: .word CalcBoxMonExpToNextLevelEncrypted - - thumb_func_start CalcBoxMonExpToNextLevelEncrypted -CalcBoxMonExpToNextLevelEncrypted: ; 0x02068700 - push {r4-r6, lr} - mov r1, #0x5 - mov r2, #0x0 - add r4, r0, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - add r0, r4, #0x0 - bl CalcBoxMonLevelEncrypted - add r0, r0, #0x1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0x0 - mov r1, #0x8 - mov r2, #0x0 - bl GetBoxMonData - add r4, r0, #0x0 - add r0, r6, #0x0 - add r1, r5, #0x0 - bl GetMonExpBySpeciesAndLevel - sub r0, r0, r4 - pop {r4-r6, pc} - - thumb_func_start GetMonBaseExperienceAtCurrentLevel -GetMonBaseExperienceAtCurrentLevel: ; 0x02068734 - push {r3-r5, lr} - add r5, r0, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonData - add r1, r0, #0x0 - add r0, r4, #0x0 - bl GetMonExpBySpeciesAndLevel - pop {r3-r5, pc} - .balign 4 - - thumb_func_start GetMonExpBySpeciesAndLevel -GetMonExpBySpeciesAndLevel: ; 0x02068758 - push {r4, lr} - add r4, r1, #0x0 - mov r1, #0x15 - bl GetMonBaseStat - add r1, r4, #0x0 - bl GetExpByGrowthRateAndLevel - pop {r4, pc} - .balign 4 - - thumb_func_start LoadGrowthTable -LoadGrowthTable: ; 0x0206876C - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r5, #0x8 - blt _0206877A - bl ErrorHandling -_0206877A: - add r0, r4, #0x0 - mov r1, #0x3 ; NARC_POKETOOL_PERSONAL_GROWTBL - add r2, r5, #0x0 - bl ReadWholeNarcMemberByIdPair - pop {r3-r5, pc} - .balign 4 - - thumb_func_start GetExpByGrowthRateAndLevel -GetExpByGrowthRateAndLevel: ; 0x02068788 - push {r4-r6, lr} - add r6, r0, #0x0 - add r5, r1, #0x0 - cmp r6, #0x8 - blt _02068796 - bl ErrorHandling -_02068796: - cmp r5, #0x65 - ble _0206879E - bl ErrorHandling -_0206879E: - mov r1, #0x65 - mov r0, #0x0 - lsl r1, r1, #0x2 - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r6, #0x0 - add r1, r4, #0x0 - bl LoadGrowthTable - lsl r0, r5, #0x2 - ldr r5, [r4, r0] - add r0, r4, #0x0 - bl FreeToHeap - add r0, r5, #0x0 - pop {r4-r6, pc} - - thumb_func_start CalcMonLevelEncrypted -CalcMonLevelEncrypted: ; 0x020687C0 - ldr r3, _020687C4 ; =CalcBoxMonLevelEncrypted - bx r3 - .balign 4 -_020687C4: .word CalcBoxMonLevelEncrypted - - thumb_func_start CalcBoxMonLevelEncrypted -CalcBoxMonLevelEncrypted: ; 0x020687C8 - push {r3-r7, lr} - add r5, r0, #0x0 - bl TryDecryptBoxMon - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonData - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x8 - mov r2, #0x0 - bl GetBoxMonData - add r7, r0, #0x0 - add r0, r5, #0x0 - add r1, r6, #0x0 - bl TryEncryptBoxMon - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - add r1, r7, #0x0 - bl CalcLevelBySpeciesAndExp - pop {r3-r7, pc} - .balign 4 - - thumb_func_start CalcLevelBySpeciesAndExp -CalcLevelBySpeciesAndExp: ; 0x02068800 - push {r4-r6, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - mov r1, #0x0 - bl AllocAndLoadMonPersonal - add r6, r0, #0x0 - add r1, r5, #0x0 - add r2, r4, #0x0 - bl CalcLevelBySpeciesAndExp_PreloadedPersonal - add r4, r0, #0x0 - add r0, r6, #0x0 - bl FreeMonPersonal - add r0, r4, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start CalcLevelBySpeciesAndExp_PreloadedPersonal -CalcLevelBySpeciesAndExp_PreloadedPersonal: ; 0x02068824 - push {r4, lr} - mov r1, #0x15 - add r4, r2, #0x0 - bl GetPersonalAttr - ldr r1, _0206884C ; =UNK_021C5AC0 - bl LoadGrowthTable - ldr r2, _02068850 ; =UNK_021C5AC0 + 4 - mov r1, #0x1 -_02068838: - ldr r0, [r2, #0x0] - cmp r0, r4 - bhi _02068846 - add r1, r1, #0x1 - add r2, r2, #0x4 - cmp r1, #0x65 - blt _02068838 -_02068846: - sub r0, r1, #0x1 - pop {r4, pc} - nop -_0206884C: .word UNK_021C5AC0 -_02068850: .word UNK_021C5AC0 + 4 - - thumb_func_start GetMonNature -GetMonNature: ; 0x02068854 - ldr r3, _02068858 ; =GetBoxMonNature - bx r3 - .balign 4 -_02068858: .word GetBoxMonNature - - thumb_func_start GetBoxMonNature -GetBoxMonNature: ; 0x0206885C - push {r4-r6, lr} - add r5, r0, #0x0 - bl TryDecryptBoxMon - mov r1, #0x0 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r2, r1, #0x0 - bl GetBoxMonData - add r6, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl TryEncryptBoxMon - add r0, r6, #0x0 - bl GetNatureFromPersonality - pop {r4-r6, pc} - .balign 4 - - thumb_func_start GetNatureFromPersonality -GetNatureFromPersonality: ; 0x02068884 - push {r3, lr} - mov r1, #0x19 - bl _u32_div_f - lsl r0, r1, #0x18 - lsr r0, r0, #0x18 - pop {r3, pc} - .balign 4 - - thumb_func_start ApplyNatureModToStat -ApplyNatureModToStat: ; 0x02068894 - push {r3, lr} - cmp r2, #0x1 - blo _0206889E - cmp r2, #0x5 - bls _020688A2 -_0206889E: - add r0, r1, #0x0 - pop {r3, pc} -_020688A2: - lsl r3, r0, #0x2 - add r3, r0, r3 - ldr r0, _020688E4 ; =sNatureStatMods - sub r2, r2, #0x1 - add r0, r0, r3 - ldrsb r2, [r2, r0] - mov r0, #0x0 - mvn r0, r0 - cmp r2, r0 - beq _020688CE - cmp r2, #0x1 - bne _020688E0 - mov r0, #110 - mul r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r1, #100 - bl _s32_div_f - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - b _020688E0 -_020688CE: - mov r0, #90 - mul r0, r1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r1, #100 - bl _s32_div_f - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 -_020688E0: - add r0, r1, #0x0 - pop {r3, pc} - .balign 4 -_020688E4: .word sNatureStatMods + .extern LoadGrowthTable + .extern GetExpByGrowthRateAndLevel thumb_func_start MonApplyFriendshipModEncrypted MonApplyFriendshipModEncrypted: ; 0x020688E8 @@ -468,7 +158,7 @@ _020689E4: .word GetBoxMonGenderEncrypted GetBoxMonGenderEncrypted: ; 0x020689E8 push {r3-r7, lr} add r5, r0, #0x0 - bl TryDecryptBoxMon + bl AcquireBoxMonLock add r6, r0, #0x0 add r0, r5, #0x0 mov r1, #0x5 @@ -483,7 +173,7 @@ GetBoxMonGenderEncrypted: ; 0x020689E8 add r7, r0, #0x0 add r0, r5, #0x0 add r1, r6, #0x0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock add r0, r4, #0x0 add r1, r7, #0x0 bl GetGenderBySpeciesAndPersonality @@ -682,7 +372,7 @@ FUN_02068B70: ; 0x02068B70 str r0, [sp, #0xc] add r0, r5, #0x0 str r2, [sp, #0x10] - bl TryDecryptBoxMon + bl AcquireBoxMonLock str r0, [sp, #0x18] add r0, r5, #0x0 mov r1, #0xad @@ -734,7 +424,7 @@ _02068BD8: bl FUN_02068C00 ldr r1, [sp, #0x18] add r0, r5, #0x0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock add sp, #0x1c pop {r4-r7, pc} nop @@ -2142,7 +1832,7 @@ InitBoxMonMoveset: ; 0x020695F4 bl AllocFromHeap str r0, [sp, #0x0] add r0, r5, #0x0 - bl TryDecryptBoxMon + bl AcquireBoxMonLock str r0, [sp, #0x4] add r0, r5, #0x0 mov r1, #0x5 @@ -2156,7 +1846,7 @@ InitBoxMonMoveset: ; 0x020695F4 bl GetBoxMonData add r7, r0, #0x0 add r0, r5, #0x0 - bl CalcBoxMonLevelEncrypted + bl CalcBoxMonLevel lsl r0, r0, #0x18 lsr r6, r0, #0x18 ldr r2, [sp, #0x0] @@ -2201,7 +1891,7 @@ _0206967C: bl FreeToHeap ldr r1, [sp, #0x4] add r0, r5, #0x0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock add sp, #0x8 pop {r3-r7, pc} nop @@ -2225,7 +1915,7 @@ FUN_020696A8: ; 0x020696A8 ldr r1, _02069700 ; =0x0000FFFF add r6, r0, #0x0 str r1, [sp, #0x4] - bl TryDecryptBoxMon + bl AcquireBoxMonLock mov r4, #0x0 str r0, [sp, #0x0] add r7, r4, #0x0 @@ -2258,7 +1948,7 @@ _020696EA: _020696F0: ldr r1, [sp, #0x0] add r0, r6, #0x0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock ldr r0, [sp, #0x4] add sp, #0x8 pop {r3-r7, pc} @@ -2281,7 +1971,7 @@ FUN_02069718: ; 0x02069718 sub sp, #0x20 add r5, r0, #0x0 str r1, [sp, #0x0] - bl TryDecryptBoxMon + bl AcquireBoxMonLock str r0, [sp, #0xc] add r0, sp, #0x18 mov r4, #0x0 @@ -2356,7 +2046,7 @@ _0206978A: blt _0206978A ldr r1, [sp, #0xc] add r0, r5, #0x0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock add sp, #0x20 pop {r3-r7, pc} .balign 4 @@ -3702,7 +3392,7 @@ FUN_0206A1CC: ; 0x0206A1CC push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 - bl TryDecryptBoxMon + bl AcquireBoxMonLock add r7, r0, #0x0 add r0, r5, #0x0 mov r1, #0x5 @@ -3746,7 +3436,7 @@ _0206A226: _0206A230: add r0, r5, #0x0 add r1, r7, #0x0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock add sp, #0x8 pop {r3-r7, pc} @@ -5029,7 +4719,7 @@ FUN_0206AAB4: ; 0x0206AAB4 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 - bl TryDecryptBoxMon + bl AcquireBoxMonLock mov r4, #0x0 str r0, [sp, #0x0] add r7, r4, #0x0 @@ -5059,7 +4749,7 @@ _0206AAF0: blt _0206AAC6 ldr r1, [sp, #0x0] add r0, r5, #0x0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock add sp, #0x8 pop {r3-r7, pc} .balign 4 diff --git a/arm9/asm/unk_0202B034.s b/arm9/asm/unk_0202B034.s index 9caae8d5..1f26f48a 100644 --- a/arm9/asm/unk_0202B034.s +++ b/arm9/asm/unk_0202B034.s @@ -79,7 +79,7 @@ _0202B0BA: add r1, r7, #0x0 bl FUN_0206B9B0 add r4, r0, #0x0 - bl TryDecryptMon + bl AcquireMonLock str r0, [sp, #0xc] add r0, r4, #0x0 mov r1, #0x4c @@ -162,7 +162,7 @@ _0202B17C: _0202B17E: ldr r1, [sp, #0xc] add r0, r4, #0x0 - bl TryEncryptMon + bl ReleaseMonLock ldr r0, [sp, #0x10] add r7, r7, #0x1 cmp r7, r0 diff --git a/arm9/asm/unk_0206B688.s b/arm9/asm/unk_0206B688.s index dc966ba6..9b6e863e 100644 --- a/arm9/asm/unk_0206B688.s +++ b/arm9/asm/unk_0206B688.s @@ -46,7 +46,7 @@ UNK_020F8074: ; 0x020F8074 FUN_0206B688: ; 0x0206B688 push {r3-r7, lr} add r5, r0, #0x0 - bl TryDecryptBoxMon + bl AcquireBoxMonLock add r7, r0, #0x0 add r0, r5, #0x0 mov r1, #0x5 @@ -67,7 +67,7 @@ FUN_0206B688: ; 0x0206B688 add r4, r0, #0x0 add r0, r5, #0x0 add r1, r7, #0x0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock add r0, r4, #0x0 pop {r3-r7, pc} @@ -289,7 +289,7 @@ _0206B838: .word UNK_020F8074 FUN_0206B83C: ; 0x0206B83C push {r3-r7, lr} add r5, r0, #0x0 - bl TryDecryptBoxMon + bl AcquireBoxMonLock add r4, r0, #0x0 add r0, r5, #0x0 bl FUN_0206B754 @@ -306,7 +306,7 @@ FUN_0206B83C: ; 0x0206B83C str r0, [sp, #0x0] add r0, r5, #0x0 add r1, r4, #0x0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock ldr r2, [sp, #0x0] add r0, r7, #0x0 add r1, r6, #0x0 diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index b3b27fb5..978c1f6d 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -1843,7 +1843,7 @@ FUN_0207AB0C: ; 0x0207AB0C add r7, r0, #0x0 add r0, r6, #0x0 add r5, r2, #0x0 - bl TryDecryptMon + bl AcquireMonLock str r0, [sp, #0x4] add r0, r6, #0x0 mov r1, #0x5 @@ -2308,7 +2308,7 @@ _0207AF04: blo _0207AECC ldr r1, [sp, #0x4] add r0, r6, #0x0 - bl TryEncryptMon + bl ReleaseMonLock add sp, #0x8 pop {r3-r7, pc} nop diff --git a/arm9/asm/unk_020842DC.s b/arm9/asm/unk_020842DC.s index f06037c2..fa59f95c 100644 --- a/arm9/asm/unk_020842DC.s +++ b/arm9/asm/unk_020842DC.s @@ -797,7 +797,7 @@ _0208495C: cmp r0, #0x64 bge _020849B2 add r0, r5, #0x0 - bl CalcMonExpToNextLevelEncrypted + bl CalcMonExpToNextLevel add r2, r0, #0x0 add r0, r5, #0x0 mov r1, #0x8 diff --git a/arm9/global.inc b/arm9/global.inc index 21cfb40c..e61ae077 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4708,10 +4708,10 @@ .extern ZeroBoxMonData .extern SizeOfStructPokemon .extern AllocMonZeroed -.extern TryDecryptMon -.extern TryEncryptMon -.extern TryDecryptBoxMon -.extern TryEncryptBoxMon +.extern AcquireMonLock +.extern ReleaseMonLock +.extern AcquireBoxMonLock +.extern ReleaseBoxMonLock .extern CreateMon .extern CreateMonWithNature .extern CreateMonWithGenderNatureLetter @@ -4730,11 +4730,11 @@ .extern GetMonBaseStat_HandleFormeConversion .extern GetMonBaseStat .extern GetPercentProgressTowardsNextLevel -.extern CalcMonExpToNextLevelEncrypted +.extern CalcMonExpToNextLevel .extern GetMonBaseExperienceAtCurrentLevel .extern GetMonExpBySpeciesAndLevel -.extern CalcMonLevelEncrypted -.extern CalcBoxMonLevelEncrypted +.extern CalcMonLevel +.extern CalcBoxMonLevel .extern CalcLevelBySpeciesAndExp .extern CalcLevelBySpeciesAndExp_PreloadedPersonal .extern GetMonNature diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index cb8c25bd..736c4f38 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -43403,7 +43403,7 @@ MOD05_021EC744: ; 0x021EC744 add r2, sp, #0 bl SetBoxMonData add r0, r4, #0 - bl CalcBoxMonLevelEncrypted + bl CalcBoxMonLevel add r4, r0, #0 add r0, r7, #0 bl FreeToHeap @@ -43416,7 +43416,7 @@ MOD05_021EC78C: ; 0x021EC78C add r5, r0, #0 bl FUN_02023C7C add r6, r0, #0 - bl CalcBoxMonLevelEncrypted + bl CalcBoxMonLevel lsl r0, r0, #0x18 lsr r4, r0, #0x18 add r0, r5, #0 diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index e8b7dfbc..0b764ed1 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -4713,7 +4713,7 @@ _021D9B9E: add r1, r6, #0 bl FUN_0206B9B0 add r4, r0, #0 - bl TryDecryptMon + bl AcquireMonLock add r7, r0, #0 add r0, r4, #0 mov r1, #0xac @@ -4731,7 +4731,7 @@ _021D9B9E: _021D9BD2: add r0, r4, #0 add r1, r7, #0 - bl TryEncryptMon + bl ReleaseMonLock cmp r5, #2 blt _021D9BE4 add sp, #8 @@ -5455,7 +5455,7 @@ MOD14_021DA168: ; 0x021DA168 mov r1, #0 add r5, r0, #0 str r1, [sp, #4] - bl TryDecryptBoxMon + bl AcquireBoxMonLock str r0, [sp] add r0, r5, #0 mov r1, #0xac @@ -5483,7 +5483,7 @@ _021DA1A2: _021DA1A8: ldr r1, [sp] add r0, r5, #0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock ldr r0, [sp, #4] add sp, #8 pop {r3, r4, r5, r6, r7, pc} @@ -9189,7 +9189,7 @@ MOD14_021DBEAC: ; 0x021DBEAC add r0, r5, #0 add r6, r2, #0 add r4, #0x4c - bl TryDecryptBoxMon + bl AcquireBoxMonLock str r0, [sp] str r5, [r7, #0x4c] add r0, r5, #0 @@ -9323,7 +9323,7 @@ _021DBFB8: bl FreeMonPersonal ldr r1, [sp] add r0, r5, #0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD14_021DBFF4 @@ -9371,7 +9371,7 @@ _021DC034: mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] - bl TryDecryptMon + bl AcquireMonLock add r6, r0, #0 mov r0, #0x1a lsl r0, r0, #4 @@ -9489,7 +9489,7 @@ _021DC034: lsl r0, r0, #4 ldr r0, [r5, r0] add r1, r6, #0 - bl TryEncryptMon + bl ReleaseMonLock add r0, r7, #0 add r0, #0xa4 ldrb r0, [r0] @@ -18859,7 +18859,7 @@ MOD14_021E0940: ; 0x021E0940 str r2, [sp, #8] str r3, [sp, #0xc] ldr r4, [sp, #0x64] - bl TryDecryptBoxMon + bl AcquireBoxMonLock lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x10] @@ -18971,7 +18971,7 @@ _021E0A36: bl MOD14_021E0B54 ldr r1, [sp, #0x10] add r0, r6, #0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock add sp, #0x44 pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -18987,7 +18987,7 @@ MOD14_021E0A60: ; 0x021E0A60 str r2, [sp, #8] add r7, r3, #0 ldr r4, [sp, #0x70] - bl TryDecryptBoxMon + bl AcquireBoxMonLock str r0, [sp, #0x14] add r0, r6, #0 mov r1, #0x4c @@ -19079,7 +19079,7 @@ _021E0B28: bl MOD14_021E0B54 ldr r1, [sp, #0x14] add r0, r6, #0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} nop @@ -21819,7 +21819,7 @@ _021E204A: bl FUN_0206B5E4 add r4, r4, #1 add r5, r0, #0 - bl TryDecryptBoxMon + bl AcquireBoxMonLock lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x1c] @@ -21876,7 +21876,7 @@ _021E20AA: _021E20C8: ldr r1, [sp, #0x1c] add r0, r5, #0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock ldr r0, [sp, #0x24] add r6, r6, #2 add r0, r0, #1 diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s index 58b7d707..ee9a4bd1 100644 --- a/arm9/modules/27/asm/module_27.s +++ b/arm9/modules/27/asm/module_27.s @@ -305,7 +305,7 @@ _02254A62: add r1, r6, #0 bl FUN_0206B9B0 add r4, r0, #0 - bl TryDecryptMon + bl AcquireMonLock add r7, r0, #0 add r0, r4, #0 bl FUN_0206B688 @@ -354,7 +354,7 @@ _02254ABE: strb r0, [r5, #0x13] add r0, r4, #0 add r1, r7, #0 - bl TryEncryptMon + bl ReleaseMonLock ldr r0, [sp] add r6, r6, #1 ldr r0, [r0] diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s index 5ef1d37f..760c2f64 100644 --- a/arm9/modules/35/asm/module_35.s +++ b/arm9/modules/35/asm/module_35.s @@ -330,7 +330,7 @@ _02254A7A: str r0, [sp, #8] bl FUN_02023C7C add r4, r0, #0 - bl TryDecryptBoxMon + bl AcquireBoxMonLock str r0, [sp, #0xc] add r0, r4, #0 bl FUN_0206B688 @@ -353,7 +353,7 @@ _02254A7A: str r0, [r5, #0x14] ldr r1, [sp, #0xc] add r0, r4, #0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock ldr r0, [sp] add r7, r7, #1 ldrb r0, [r0] diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s index 2e724605..3199be5d 100644 --- a/arm9/modules/69/asm/module_69.s +++ b/arm9/modules/69/asm/module_69.s @@ -2360,7 +2360,7 @@ MOD69_0222E8FC: ; 0x0222E8FC mov r1, #0 bl FUN_0200AC60 ldr r0, [r4, #0x24] - bl CalcMonLevelEncrypted + bl CalcMonLevel add r2, r0, #0 mov r0, #0 str r0, [sp] @@ -4037,7 +4037,7 @@ MOD69_0222F6C4: ; 0x0222F6C4 add r5, r0, #0 add r0, r4, #0 add r6, r2, #0 - bl TryDecryptMon + bl AcquireMonLock str r0, [sp] add r0, r4, #0 mov r1, #0x79 @@ -4124,7 +4124,7 @@ _0222F778: _0222F77A: ldr r1, [sp] add r0, r4, #0 - bl TryEncryptMon + bl ReleaseMonLock add r0, r5, #0 pop {r3, r4, r5, r6, r7, pc} nop diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index 3e877d49..bc13fe8f 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -1343,7 +1343,7 @@ MOD71_0222E118: ; 0x0222E118 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r4, r1, #0 - bl TryDecryptMon + bl AcquireMonLock add r7, r0, #0 add r0, r5, #0 mov r1, #0x9a @@ -1382,7 +1382,7 @@ MOD71_0222E118: ; 0x0222E118 add r6, r0, #0 add r0, r5, #0 add r1, r7, #0 - bl TryEncryptMon + bl ReleaseMonLock ldrh r0, [r4] cmp r0, #0 beq _0222E18E diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index 4762946f..ffa44bd8 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -10777,7 +10777,7 @@ MOD80_02232BD4: ; 0x02232BD4 MOD80_02232C2C: ; 0x02232C2C push {r4, lr} add r4, r1, #0 - bl CalcBoxMonLevelEncrypted + bl CalcBoxMonLevel strb r0, [r4, #3] pop {r4, pc} thumb_func_end MOD80_02232C2C @@ -10832,7 +10832,7 @@ MOD80_02232C88: ; 0x02232C88 add r7, r2, #0 add r6, r3, #0 ldr r4, [sp, #0x40] - bl TryDecryptBoxMon + bl AcquireBoxMonLock add r0, r5, #0 mov r1, #0xab mov r2, #0 @@ -10874,7 +10874,7 @@ MOD80_02232C88: ; 0x02232C88 _02232CF2: add r0, r5, #0 mov r1, #1 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock ldr r0, [sp, #0x1c] cmp r0, #0 beq _02232D60 @@ -11266,7 +11266,7 @@ MOD80_02233018: ; 0x02233018 push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 mov r4, #0 - bl TryDecryptBoxMon + bl AcquireBoxMonLock ldr r5, _02233050 ; =0x02237220 str r0, [sp] add r6, r4, #0 @@ -11282,7 +11282,7 @@ _02233028: blt _02233028 ldr r1, [sp] add r0, r7, #0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock cmp r4, #0 beq _0223304C mov r0, #1 @@ -11397,7 +11397,7 @@ MOD80_022330E4: ; 0x022330E4 add r0, sp, #0 strb r1, [r0, #2] add r0, r5, #0 - bl CalcBoxMonLevelEncrypted + bl CalcBoxMonLevel add r1, sp, #0 strb r0, [r1, #3] add r0, sp, #0 @@ -11433,7 +11433,7 @@ MOD80_0223311C: ; 0x0223311C add r0, r5, #0 add r0, #0xbc ldr r0, [r0] - bl CalcBoxMonLevelEncrypted + bl CalcBoxMonLevel add r1, sp, #0 strb r0, [r1, #9] add r0, r4, #0 @@ -13381,7 +13381,7 @@ MOD80_022340DC: ; 0x022340DC bl GetBoxMonData add r6, r0, #1 ldr r0, [sp, #0xc] - bl CalcBoxMonLevelEncrypted + bl CalcBoxMonLevel str r0, [sp, #0x10] add r0, r4, #0 mov r1, #0x64 diff --git a/arm9/modules/81/asm/module_81.s b/arm9/modules/81/asm/module_81.s index abe12301..82f5fbd1 100644 --- a/arm9/modules/81/asm/module_81.s +++ b/arm9/modules/81/asm/module_81.s @@ -999,7 +999,7 @@ _0223860E: ldr r4, [r0, #4] _02238610: add r0, r4, #0 - bl TryDecryptBoxMon + bl AcquireBoxMonLock str r0, [sp, #0x20] add r0, sp, #0x34 add r1, r4, #0 @@ -1051,7 +1051,7 @@ _02238648: bl FUN_02017E14 ldr r1, [sp, #0x20] add r0, r4, #0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock add r0, r7, #0 bl FreeToHeap _02238690: diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index 1dbf90c3..bd2f6d2f 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -21866,7 +21866,7 @@ MOD83_02237F6C: ; 0x02237F6C add r0, r4, #0 bl ZeroBoxMonData add r0, r4, #0 - bl TryDecryptBoxMon + bl AcquireBoxMonLock mov r1, #0 str r0, [sp] add r0, r6, #0 @@ -22580,7 +22580,7 @@ _0223853E: bl SetBoxMonData ldr r1, [sp] add r0, r4, #0 - bl TryEncryptBoxMon + bl ReleaseBoxMonLock add sp, #0x30 pop {r3, r4, r5, r6, r7, pc} nop diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 02428ff6..663b581a 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -2,6 +2,7 @@ #define IN_POKEMON_C #include "proto.h" #include "pokemon.h" +#include "filesystem.h" #include "heap.h" #include "MI_memory.h" #include "math_util.h" @@ -18,6 +19,7 @@ void SetMonDataInternal(struct Pokemon * pokemon, int attr, void * ptr); void SetBoxMonDataInternal(struct BoxPokemon * pokemon, int attr, void * ptr); void AddMonDataInternal(struct Pokemon * pokemon, int attr, int amount); void AddBoxMonData(struct BoxPokemon * pokemon, int attr, int amount); +u32 CalcBoxMonExpToNextLevel(struct BoxPokemon * boxmon); void LoadMonPersonal(int species, struct BaseStats * personal); int ResolveMonForme(int species, int forme); @@ -28,7 +30,7 @@ u16 CalcMonChecksum(void * datap, u32 size); void InitBoxMonMoveset(struct BoxPokemon * boxmon); PokemonDataBlock * GetSubstruct(struct BoxPokemon * boxmon, u32 personality, u32 which_struct); void LoadMonBaseStats_HandleAlternateForme(u32 species, u32 forme, struct BaseStats * baseStats); -int ApplyNatureModToStat(u8 nature, u16 statval, u32 statno); +u16 ModifyStatByNature(u8 nature, u16 statval, u8 statno); #define ENCRY_ARGS_PTY(mon) &(mon)->party, sizeof((mon)->party), (mon)->box.pid #define ENCRY_ARGS_BOX(boxmon) &(boxmon)->substructs, sizeof((boxmon)->substructs), (boxmon)->checksum @@ -113,7 +115,7 @@ const s8 UNK_020F7F16[][5] = { { 0, 0, 0, 0, 0}, }; -const u8 sNatureStatMods[][5] = { +const s8 sNatureStatMods[][5] = { { 0, 0, 0, 0, 0 }, { 1, -1, 0, 0, 0 }, { 1, 0, -1, 0, 0 }, @@ -166,7 +168,7 @@ struct Pokemon * AllocMonZeroed(u32 heap_id) return pokemon; } -BOOL TryDecryptMon(struct Pokemon * mon) +BOOL AcquireMonLock(struct Pokemon * mon) { BOOL ret = FALSE; @@ -182,7 +184,7 @@ BOOL TryDecryptMon(struct Pokemon * mon) return ret; } -BOOL TryEncryptMon(struct Pokemon * mon, BOOL decrypt_result) +BOOL ReleaseMonLock(struct Pokemon * mon, BOOL decrypt_result) { BOOL ret = FALSE; if (mon->box.party_lock == TRUE && decrypt_result == TRUE) @@ -197,7 +199,7 @@ BOOL TryEncryptMon(struct Pokemon * mon, BOOL decrypt_result) return ret; } -BOOL TryDecryptBoxMon(struct BoxPokemon * mon) +BOOL AcquireBoxMonLock(struct BoxPokemon * mon) { BOOL ret = FALSE; @@ -210,7 +212,7 @@ BOOL TryDecryptBoxMon(struct BoxPokemon * mon) return ret; } -BOOL TryEncryptBoxMon(struct BoxPokemon * mon, BOOL decrypt_result) +BOOL ReleaseBoxMonLock(struct BoxPokemon * mon, BOOL decrypt_result) { BOOL ret = FALSE; if (mon->box_lock == TRUE && decrypt_result == TRUE) @@ -250,7 +252,7 @@ void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fi u32 exp; u32 iv; ZeroBoxMonData(boxPokemon); - decry = TryDecryptBoxMon(boxPokemon); + decry = AcquireBoxMonLock(boxPokemon); if (hasFixedPersonality == 0) { fixedPersonality = (rand_LC() | (rand_LC() << 16)); @@ -317,7 +319,7 @@ void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fi exp = GetBoxMonGenderEncrypted(boxPokemon); SetBoxMonData(boxPokemon, MON_DATA_GENDER, &exp); InitBoxMonMoveset(boxPokemon); - TryEncryptBoxMon(boxPokemon, decry); + ReleaseBoxMonLock(boxPokemon, decry); } void CreateMonWithNature(struct Pokemon * pokemon, u16 species, u8 level, u8 fixedIv, u8 nature) @@ -381,11 +383,11 @@ void CreateMonWithFixedIVs(struct Pokemon * pokemon, int species, int level, int void CalcMonLevelAndStats(struct Pokemon * pokemon) { - BOOL decry = TryDecryptMon(pokemon); - u32 level = CalcMonLevelEncrypted(pokemon); + BOOL decry = AcquireMonLock(pokemon); + u32 level = CalcMonLevel(pokemon); SetMonData(pokemon, MON_DATA_LEVEL, &level); CalcMonStats(pokemon); - TryEncryptMon(pokemon, decry); + ReleaseMonLock(pokemon, decry); } void CalcMonStats(struct Pokemon * pokemon) @@ -414,7 +416,7 @@ void CalcMonStats(struct Pokemon * pokemon) int newSpeed; int newSpatk; int newSpdef; - BOOL decry = TryDecryptMon(pokemon); + BOOL decry = AcquireMonLock(pokemon); level = (int)GetMonData(pokemon, MON_DATA_LEVEL, NULL); maxHp = (int)GetMonData(pokemon, MON_DATA_MAXHP, NULL); hp = (int)GetMonData(pokemon, MON_DATA_HP, NULL); @@ -445,23 +447,23 @@ void CalcMonStats(struct Pokemon * pokemon) SetMonData(pokemon, MON_DATA_MAXHP, &newMaxHp); newAtk = (baseStats->atk * 2 + atkIv + atkEv / 4) * level / 100 + 5; - newAtk = ApplyNatureModToStat(GetMonNature(pokemon), newAtk, 1); + newAtk = ModifyStatByNature(GetMonNature(pokemon), newAtk, 1); SetMonData(pokemon, MON_DATA_ATK, &newAtk); newDef = (baseStats->def * 2 + defIv + defEv / 4) * level / 100 + 5; - newDef = ApplyNatureModToStat(GetMonNature(pokemon), newDef, 2); + newDef = ModifyStatByNature(GetMonNature(pokemon), newDef, 2); SetMonData(pokemon, MON_DATA_DEF, &newDef); newSpeed = (baseStats->speed * 2 + speedIv + speedEv / 4) * level / 100 + 5; - newSpeed = ApplyNatureModToStat(GetMonNature(pokemon), newSpeed, 3); + newSpeed = ModifyStatByNature(GetMonNature(pokemon), newSpeed, 3); SetMonData(pokemon, MON_DATA_SPEED, &newSpeed); newSpatk = (baseStats->spatk * 2 + spatkIv + spatkEv / 4) * level / 100 + 5; - newSpatk = ApplyNatureModToStat(GetMonNature(pokemon), newSpatk, 4); + newSpatk = ModifyStatByNature(GetMonNature(pokemon), newSpatk, 4); SetMonData(pokemon, MON_DATA_SPATK, &newSpatk); newSpdef = (baseStats->spdef * 2 + spdefIv + spdefEv / 4) * level / 100 + 5; - newSpdef = ApplyNatureModToStat(GetMonNature(pokemon), newSpdef, 5); + newSpdef = ModifyStatByNature(GetMonNature(pokemon), newSpdef, 5); SetMonData(pokemon, MON_DATA_SPDEF, &newSpdef); FreeToHeap(baseStats); @@ -477,7 +479,7 @@ void CalcMonStats(struct Pokemon * pokemon) } if (hp != 0) SetMonData(pokemon, MON_DATA_HP, &hp); - TryEncryptMon(pokemon, decry); + ReleaseMonLock(pokemon, decry); } u32 GetMonData(struct Pokemon * pokemon, int attr, void * dest) @@ -1881,3 +1883,137 @@ int GetMonBaseStat(int species, enum BaseStat attr) FreeMonPersonal(personal); return ret; } + +u8 GetPercentProgressTowardsNextLevel(struct Pokemon * pokemon) +{ + BOOL decry = AcquireMonLock(pokemon); + u16 species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); + u8 level = GetMonData(pokemon, MON_DATA_LEVEL, NULL); + u32 lo = GetMonExpBySpeciesAndLevel(species, level); + u32 hi = GetMonExpBySpeciesAndLevel(species, level + 1); + u32 cur = GetMonData(pokemon, MON_DATA_EXPERIENCE, NULL); + ReleaseMonLock(pokemon, decry); + return 100 * (cur - lo) / (hi - lo); +} + +u32 CalcMonExpToNextLevel(struct Pokemon * pokemon) +{ + return CalcBoxMonExpToNextLevel(&pokemon->box); +} + +u32 CalcBoxMonExpToNextLevel(struct BoxPokemon * boxmon) +{ + u16 species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + u16 level = CalcBoxMonLevel(boxmon) + 1; + u32 cur = GetBoxMonData(boxmon, MON_DATA_EXPERIENCE, NULL); + u32 hi = GetMonExpBySpeciesAndLevel(species, level); + return hi - cur; +} + +u32 GetMonBaseExperienceAtCurrentLevel(struct Pokemon * pokemon) +{ + int species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); + int level = GetMonData(pokemon, MON_DATA_LEVEL, NULL); + return GetMonExpBySpeciesAndLevel(species, level); +} + +u32 GetMonExpBySpeciesAndLevel(int species, int level) +{ + return GetExpByGrowthRateAndLevel(GetMonBaseStat(species, BASE_GROWTH_RATE), level); +} + +void LoadGrowthTable(int growthRate, u32 * dest) +{ + GF_ASSERT(growthRate < 8); + ReadWholeNarcMemberByIdPair(dest, NARC_POKETOOL_PERSONAL_GROWTBL, growthRate); +} + +u32 GetExpByGrowthRateAndLevel(int growthRate, int level) +{ + u32 * table; + u32 ret; + GF_ASSERT(growthRate < 8); + GF_ASSERT(level <= 101); + table = (u32 *)AllocFromHeap(0, 101 * sizeof(u32)); + LoadGrowthTable(growthRate, table); + ret = table[level]; + FreeToHeap(table); + return ret; +} + +int CalcMonLevel(struct Pokemon * pokemon) +{ + return CalcBoxMonLevel(&pokemon->box); +} + +int CalcBoxMonLevel(struct BoxPokemon * boxmon) +{ + BOOL decry = AcquireBoxMonLock(boxmon); + int species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + int exp = GetBoxMonData(boxmon, MON_DATA_EXPERIENCE, NULL); + ReleaseBoxMonLock(boxmon, decry); + return CalcLevelBySpeciesAndExp(species, exp); +} + +int CalcLevelBySpeciesAndExp(u16 species, u32 exp) +{ + int level; + struct BaseStats * personal = AllocAndLoadMonPersonal(species, 0); + level = CalcLevelBySpeciesAndExp_PreloadedPersonal(personal, species, exp); + FreeMonPersonal(personal); + return level; +} + +int CalcLevelBySpeciesAndExp_PreloadedPersonal(struct BaseStats * personal, u16 species, u32 exp) +{ + static u32 table[101]; + int i; + LoadGrowthTable(GetPersonalAttr(personal, BASE_GROWTH_RATE), table); + for (i = 1; i < 101; i++) + { + if (table[i] > exp) + break; + } + return i - 1; +} + +u8 GetMonNature(struct Pokemon * pokemon) +{ + return GetBoxMonNature(&pokemon->box); +} + +u8 GetBoxMonNature(struct BoxPokemon * boxmon) +{ + BOOL decry = AcquireBoxMonLock(boxmon); + u32 personality = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL); + ReleaseBoxMonLock(boxmon, decry); + return GetNatureFromPersonality(personality); +} + +u8 GetNatureFromPersonality(u32 pid) +{ + return pid % 25; +} + +u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex) +{ + u16 retVal; + + // Dont modify HP, Accuracy, or Evasion by nature + if (statIndex < 1 || statIndex > 5) + return n; + + switch (sNatureStatMods[nature][statIndex - 1]) + { + case 1: + retVal = (u16)(n * 110) / 100; // NOTE: will overflow for n > 595 because the intermediate value is cast to u16 before the division. Fix by removing (u16) cast + break; + case -1: + retVal = (u16)(n * 90) / 100; // NOTE: will overflow for n > 728, see above + break; + default: + retVal = n; + break; + } + return retVal; +} diff --git a/include/filesystem.h b/include/filesystem.h index 37f73bb0..6b5a16d6 100644 --- a/include/filesystem.h +++ b/include/filesystem.h @@ -2,6 +2,7 @@ #define POKEDIAMOND_FILESYSTEM_H #include "nitro/types.h" +#include "FS_file.h" typedef struct NARC { diff --git a/include/pokemon.h b/include/pokemon.h index b7642f74..3e277ee1 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -471,10 +471,10 @@ void ZeroMonData(struct Pokemon * pokemon); void ZeroBoxMonData(struct BoxPokemon * boxmon); u32 SizeOfStructPokemon(void); struct Pokemon * AllocMonZeroed(u32 heap_id); -BOOL TryDecryptMon(struct Pokemon * mon); -BOOL TryEncryptMon(struct Pokemon * mon, BOOL decrypt_result); -BOOL TryDecryptBoxMon(struct BoxPokemon * mon); -BOOL TryEncryptBoxMon(struct BoxPokemon * mon, BOOL decrypt_result); +BOOL AcquireMonLock(struct Pokemon * mon); +BOOL ReleaseMonLock(struct Pokemon * mon, BOOL decrypt_result); +BOOL AcquireBoxMonLock(struct BoxPokemon * mon); +BOOL ReleaseBoxMonLock(struct BoxPokemon * mon, BOOL decrypt_result); void CreateMon(struct Pokemon * pokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId); void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fixedIV, int hasFixedPersonality, int fixedPersonality, int otIdType, int fixedOtId); void CreateMonWithNature(struct Pokemon * pokemon, u16 species, u8 level, u8 fixedIv, u8 nature); @@ -494,18 +494,20 @@ void SetMonData(struct Pokemon * pokemon, int attr, void * ptr); void SetBoxMonData(struct BoxPokemon * pokemon, int attr, void * ptr); void AddMonData(struct Pokemon * pokemon, int attr, int amount); struct BaseStats * AllocAndLoadMonPersonal(int species, u32 heap_id); +int GetMonBaseStat_HandleFormeConversion(int species, int form, enum BaseStat stat_id); +int GetMonBaseStat(int species, enum BaseStat stat_id); +u32 GetMonExpBySpeciesAndLevel(int species, int level); +void LoadGrowthTable(int growthRate, u32 * table); +u32 GetExpByGrowthRateAndLevel(int rate, int level); +int CalcMonLevel(struct Pokemon * pokemon); +int CalcBoxMonLevel(struct BoxPokemon * boxmon); +int CalcLevelBySpeciesAndExp(u16 species, u32 experience); +int CalcLevelBySpeciesAndExp_PreloadedPersonal(struct BaseStats * personal, u16 species, u32 experience); -u32 CalcMonLevelEncrypted(struct Pokemon * pokemon); u8 GetBoxMonNature(struct BoxPokemon * boxmon); u8 GetMonNature(struct Pokemon * mon); u8 GetNatureFromPersonality(u32 pid); u8 GetGenderBySpeciesAndPersonality(u16 species, u32 pid); u32 GetBoxMonGenderEncrypted(struct BoxPokemon * boxmon); -int GetMonBaseStat_HandleFormeConversion(int species, int form, enum BaseStat stat_id); -int GetMonBaseStat(int species, enum BaseStat stat_id); -u32 GetMonExpBySpeciesAndLevel(int species, int level); -void LoadGrowthTable(int species, int * table); -int GetExpByGrowthRateAndLevel(int rate, int level); -int CalcLevelBySpeciesAndExp(int species, int experience); #endif //POKEDIAMOND_POKEMON_H -- cgit v1.2.3 From 01eea396ed25500e15752d7edfe76cb1031bee60 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jun 2020 15:07:54 -0400 Subject: through CalcShininessByOtIdAndPersonality --- arm9/asm/pokemon_s.s | 271 +----------------------- arm9/asm/scrcmd_12.s | 2 +- arm9/asm/unk_02023C40.s | 4 +- arm9/asm/unk_0204A01C.s | 2 +- arm9/asm/unk_0206F3FC.s | 2 +- arm9/asm/unk_0207550C.s | 2 +- arm9/asm/unk_02079C70.s | 2 +- arm9/asm/unk_02080C38.s | 2 +- arm9/global.inc | 6 +- arm9/modules/05/asm/module_05.s | 8 +- arm9/modules/07/asm/module_07.s | 2 +- arm9/modules/09/asm/module_09.s | 2 +- arm9/modules/11/asm/module_11.s | 14 +- arm9/modules/35/asm/module_35.s | 2 +- arm9/modules/65/asm/module_65.s | 2 +- arm9/modules/69/asm/module_69.s | 2 +- arm9/modules/71/asm/module_71.s | 2 +- arm9/modules/80/asm/module_80.s | 2 +- arm9/modules/83/asm/module_83.s | 4 +- arm9/src/pokemon.c | 105 +++++++++- include/constants/items.h | 448 ++++++++++++++++++++++++++++++++++++++++ include/pokemon.h | 2 +- 22 files changed, 585 insertions(+), 303 deletions(-) create mode 100644 include/constants/items.h diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index a2fb59bb..82548f30 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -21,272 +21,7 @@ __local_str_poketool_personal_pms_narc: ; 0x02105FC8 .extern LoadGrowthTable .extern GetExpByGrowthRateAndLevel - thumb_func_start MonApplyFriendshipModEncrypted -MonApplyFriendshipModEncrypted: ; 0x020688E8 - push {r3-r7, lr} - sub sp, #0x8 - add r6, r1, #0x0 - add r5, r0, #0x0 - str r2, [sp, #0x0] - cmp r6, #0x5 - bne _02068900 - bl rand_LC - mov r1, #0x1 - tst r0, r1 - bne _020689D4 -_02068900: - add r0, r5, #0x0 - mov r1, #0xad - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - beq _020689D4 - ldr r0, _020689D8 ; =SPECIES_EGG - cmp r1, r0 - beq _020689D4 - add r0, r5, #0x0 - mov r1, #0x6 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r1, #0x1 - mov r2, #0x0 - bl FUN_0206E7B8 - lsl r0, r0, #0x18 - mov r4, #0x0 - lsr r7, r0, #0x18 - add r0, r5, #0x0 - mov r1, #0x9 - add r2, r4, #0x0 - bl GetMonData - add r1, sp, #0x4 - strh r0, [r1, #0x0] - add r0, r4, #0x0 - ldrsh r1, [r1, r0] - cmp r1, #0x64 - blt _0206894E - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 -_0206894E: - cmp r1, #0xc8 - blt _02068958 - add r0, r4, #0x1 - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 -_02068958: - lsl r0, r6, #0x1 - add r1, r6, r0 - ldr r0, _020689DC ; =sFriendshipModTable - add r0, r0, r1 - ldrsb r4, [r4, r0] - cmp r4, #0x0 - ble _0206897A - add r0, r5, #0x0 - mov r1, #0x9a - mov r2, #0x0 - bl GetMonData - cmp r0, #0xb - bne _0206897A - add r0, r4, #0x1 - lsl r0, r0, #0x18 - asr r4, r0, #0x18 -_0206897A: - cmp r4, #0x0 - ble _02068994 - add r0, r5, #0x0 - mov r1, #0x97 - mov r2, #0x0 - bl GetMonData - ldr r1, [sp, #0x0] - cmp r1, r0 - bne _02068994 - add r0, r4, #0x1 - lsl r0, r0, #0x18 - asr r4, r0, #0x18 -_02068994: - cmp r4, #0x0 - ble _020689AA - cmp r7, #0x34 - bne _020689AA - mov r0, #0x96 - mul r0, r4 - mov r1, #0x64 - bl _s32_div_f - lsl r0, r0, #0x18 - asr r4, r0, #0x18 -_020689AA: - add r0, sp, #0x4 - mov r1, #0x0 - ldrsh r2, [r0, r1] - add r2, r2, r4 - strh r2, [r0, #0x0] - ldrsh r2, [r0, r1] - cmp r2, #0x0 - bge _020689BC - strh r1, [r0, #0x0] -_020689BC: - add r1, sp, #0x4 - mov r0, #0x0 - ldrsh r0, [r1, r0] - cmp r0, #0xff - ble _020689CA - mov r0, #0xff - strh r0, [r1, #0x0] -_020689CA: - add r0, r5, #0x0 - mov r1, #0x9 - add r2, sp, #0x4 - bl SetMonData -_020689D4: - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_020689D8: .word SPECIES_EGG -_020689DC: .word sFriendshipModTable - - thumb_func_start GetMonGenderEncrypted -GetMonGenderEncrypted: ; 0x020689E0 - ldr r3, _020689E4 ; =GetBoxMonGenderEncrypted - bx r3 - .balign 4 -_020689E4: .word GetBoxMonGenderEncrypted - - thumb_func_start GetBoxMonGenderEncrypted -GetBoxMonGenderEncrypted: ; 0x020689E8 - push {r3-r7, lr} - add r5, r0, #0x0 - bl AcquireBoxMonLock - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x10 - mov r1, #0x0 - lsr r4, r0, #0x10 - add r0, r5, #0x0 - add r2, r1, #0x0 - bl GetBoxMonData - add r7, r0, #0x0 - add r0, r5, #0x0 - add r1, r6, #0x0 - bl ReleaseBoxMonLock - add r0, r4, #0x0 - add r1, r7, #0x0 - bl GetGenderBySpeciesAndPersonality - pop {r3-r7, pc} - .balign 4 - - thumb_func_start GetGenderBySpeciesAndPersonality -GetGenderBySpeciesAndPersonality: ; 0x02068A20 - push {r4-r6, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - mov r1, #0x0 - bl AllocAndLoadMonPersonal - add r6, r0, #0x0 - add r1, r5, #0x0 - add r2, r4, #0x0 - bl GetGenderBySpeciesAndPersonality_PreloadedPersonal - add r4, r0, #0x0 - add r0, r6, #0x0 - bl FreeMonPersonal - add r0, r4, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start GetGenderBySpeciesAndPersonality_PreloadedPersonal -GetGenderBySpeciesAndPersonality_PreloadedPersonal: ; 0x02068A44 - push {r4, lr} - mov r1, #0x12 - add r4, r2, #0x0 - bl GetPersonalAttr - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - beq _02068A5E - cmp r1, #0xfe - beq _02068A62 - cmp r1, #0xff - beq _02068A66 - b _02068A6A -_02068A5E: - mov r0, #0x0 - pop {r4, pc} -_02068A62: - mov r0, #0x1 - pop {r4, pc} -_02068A66: - mov r0, #0x2 - pop {r4, pc} -_02068A6A: - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - cmp r1, r0 - bls _02068A76 - mov r0, #0x1 - b _02068A78 -_02068A76: - mov r0, #0x0 -_02068A78: - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r4, pc} - .balign 4 - - thumb_func_start MonIsShiny -MonIsShiny: ; 0x02068A80 - ldr r3, _02068A84 ; =BoxMonIsShiny - bx r3 - .balign 4 -_02068A84: .word BoxMonIsShiny - - thumb_func_start BoxMonIsShiny -BoxMonIsShiny: ; 0x02068A88 - push {r3-r5, lr} - mov r1, #0x7 - mov r2, #0x0 - add r5, r0, #0x0 - bl GetBoxMonData - mov r1, #0x0 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r2, r1, #0x0 - bl GetBoxMonData - add r1, r0, #0x0 - add r0, r4, #0x0 - bl CalcShininessByOtIdAndPersonality - pop {r3-r5, pc} - .balign 4 - - thumb_func_start CalcShininessByOtIdAndPersonality -CalcShininessByOtIdAndPersonality: ; 0x02068AAC - ldr r3, _02068AD4 ; =0xFFFF0000 - lsl r2, r1, #0x10 - and r1, r3 - and r3, r0 - lsl r0, r0, #0x10 - lsr r3, r3, #0x10 - lsr r0, r0, #0x10 - lsr r1, r1, #0x10 - eor r0, r3 - lsr r2, r2, #0x10 - eor r0, r1 - eor r0, r2 - cmp r0, #0x8 - bhs _02068ACC - mov r0, #0x1 - b _02068ACE -_02068ACC: - mov r0, #0x0 -_02068ACE: - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bx lr - .balign 4 -_02068AD4: .word 0xFFFF0000 + .extern BoxMonIsShiny thumb_func_start GenerateShinyPersonality GenerateShinyPersonality: ; 0x02068AD8 @@ -381,7 +116,7 @@ FUN_02068B70: ; 0x02068B70 lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r5, #0x0 - bl GetBoxMonGenderEncrypted + bl GetBoxMonGender str r0, [sp, #0x14] add r0, r5, #0x0 bl BoxMonIsShiny @@ -754,7 +489,7 @@ FUN_02068E1C: ; 0x02068E1C lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r5, #0x0 - bl GetBoxMonGenderEncrypted + bl GetBoxMonGender mov r1, #0x0 str r0, [sp, #0x4] add r0, r5, #0x0 diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s index a941eb48..3c0ac2f0 100644 --- a/arm9/asm/scrcmd_12.s +++ b/arm9/asm/scrcmd_12.s @@ -391,7 +391,7 @@ _02042FE8: add r0, r4, #0x0 bl FUN_0206A23C add r0, r4, #0x0 - bl GetMonGenderEncrypted + bl GetMonGender str r0, [sp, #0x30] add r0, r4, #0x0 mov r1, #0x6f diff --git a/arm9/asm/unk_02023C40.s b/arm9/asm/unk_02023C40.s index 480a9e7a..46a01c79 100644 --- a/arm9/asm/unk_02023C40.s +++ b/arm9/asm/unk_02023C40.s @@ -1926,7 +1926,7 @@ FUN_0202498C: ; 0x0202498C bl GetMonData add r7, r0, #0x0 ldr r0, [sp, #0x0] - bl GetMonGenderEncrypted + bl GetMonGender add r6, r0, #0x0 ldr r1, [r5, #0x0] ldr r0, _02024AE4 ; =0xBEEFCAFE @@ -2113,7 +2113,7 @@ FUN_02024AF0: ; 0x02024AF0 bl GetMonData str r0, [sp, #0x4] ldr r0, [sp, #0x0] - bl GetMonGenderEncrypted + bl GetMonGender add r7, r0, #0x0 ldr r1, [r4, #0x0] ldr r0, _02024C78 ; =0xBEEFCAFE diff --git a/arm9/asm/unk_0204A01C.s b/arm9/asm/unk_0204A01C.s index 2864246e..5ea5d8c5 100644 --- a/arm9/asm/unk_0204A01C.s +++ b/arm9/asm/unk_0204A01C.s @@ -378,7 +378,7 @@ _0204A2EA: add r0, r5, #0x0 mov r1, #0x7 add r6, r6, #0x1 - bl MonApplyFriendshipModEncrypted + bl MonApplyFriendshipMod _0204A306: add r7, r7, #0x1 _0204A308: diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index eddf119f..984a657d 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -1775,7 +1775,7 @@ _0207018E: ldr r0, _020701FC ; =0x0000070E add r6, r5, r0 add r0, r7, #0x0 - bl GetMonGenderEncrypted + bl GetMonGender lsl r0, r0, #0x1e ldrh r2, [r6, r4] ldr r1, _02070204 ; =0xFFFF9FFF diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s index 879b13ea..ca869d5a 100644 --- a/arm9/asm/unk_0207550C.s +++ b/arm9/asm/unk_0207550C.s @@ -3121,7 +3121,7 @@ _02076F98: add r2, r0, #0x0 add r0, r4, #0x0 mov r1, #0x4 - bl MonApplyFriendshipModEncrypted + bl MonApplyFriendshipMod _02076FA8: add sp, #0x4 pop {r3-r6, pc} diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index 978c1f6d..8b972fcc 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -1961,7 +1961,7 @@ _0207AC16: strb r0, [r5, #0x12] _0207AC1E: add r0, r6, #0x0 - bl GetMonGenderEncrypted + bl GetMonGender ldrb r1, [r5, #0x13] mov r2, #0x3 bic r1, r2 diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s index 3437cc36..bf8c6901 100644 --- a/arm9/asm/unk_02080C38.s +++ b/arm9/asm/unk_02080C38.s @@ -3748,7 +3748,7 @@ _02082820: lsl r2, r2, #0x10 mov r1, #0x9 lsr r2, r2, #0x10 - bl MonApplyFriendshipModEncrypted + bl MonApplyFriendshipMod _0208283A: add sp, #0xc pop {r4-r7, pc} diff --git a/arm9/global.inc b/arm9/global.inc index e61ae077..c033aa3e 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4740,9 +4740,9 @@ .extern GetMonNature .extern GetBoxMonNature .extern GetNatureFromPersonality -.extern MonApplyFriendshipModEncrypted -.extern GetMonGenderEncrypted -.extern GetBoxMonGenderEncrypted +.extern MonApplyFriendshipMod +.extern GetMonGender +.extern GetBoxMonGender .extern GetGenderBySpeciesAndPersonality .extern GetGenderBySpeciesAndPersonality_PreloadedPersonal .extern MonIsShiny diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 736c4f38..ea4a9191 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -3290,7 +3290,7 @@ _021D8FF6: bl FUN_0206B9B0 mov r1, #5 add r2, r5, #0 - bl MonApplyFriendshipModEncrypted + bl MonApplyFriendshipMod add r4, r4, #1 cmp r4, r7 blt _021D8FF6 @@ -43564,7 +43564,7 @@ MOD05_021EC8A8: ; 0x021EC8A8 add r5, sp, #4 _021EC8BC: ldr r0, [r5] - bl GetBoxMonGenderEncrypted + bl GetBoxMonGender cmp r0, #1 bne _021EC8C8 str r4, [sp] @@ -44316,7 +44316,7 @@ _021ECE56: b _021ECE8C _021ECE7A: ldr r0, [r7, r6] - bl GetBoxMonGenderEncrypted + bl GetBoxMonGender cmp r0, #1 bne _021ECE8C mov r0, #1 @@ -44377,7 +44377,7 @@ _021ECEDE: lsl r1, r0, #2 add r0, sp, #4 ldr r0, [r0, r1] - bl GetBoxMonGenderEncrypted + bl GetBoxMonGender cmp r0, #1 beq _021ECF02 ldrb r1, [r5, #1] diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s index 116ffbed..5f048017 100644 --- a/arm9/modules/07/asm/module_07.s +++ b/arm9/modules/07/asm/module_07.s @@ -3758,7 +3758,7 @@ _02213CEA: ldr r0, _02213D28 ; =0x00000222 strb r1, [r7, r0] add r0, r4, #0 - bl GetMonGenderEncrypted + bl GetMonGender ldr r1, _02213D2C ; =0x00000221 strb r0, [r5, r1] add r0, r4, #0 diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s index 6312dd4f..26c682ce 100644 --- a/arm9/modules/09/asm/module_09.s +++ b/arm9/modules/09/asm/module_09.s @@ -2535,7 +2535,7 @@ _022132C2: add r6, r0, #0 ldr r0, [r4, #4] add r6, #0x1b - bl GetMonGenderEncrypted + bl GetMonGender ldrb r1, [r6, r5] mov r2, #7 bic r1, r2 diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index 2e80cbba..f8a593a1 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -2898,7 +2898,7 @@ _0222EE8C: add r1, r7, #0 lsl r2, r2, #0x10 lsr r2, r2, #0x10 - bl MonApplyFriendshipModEncrypted + bl MonApplyFriendshipMod ldr r0, [r4, #0x68] add r5, r5, #1 bl FUN_0206B9AC @@ -2920,7 +2920,7 @@ _0222EEBC: add r1, r7, #0 lsl r2, r2, #0x10 lsr r2, r2, #0x10 - bl MonApplyFriendshipModEncrypted + bl MonApplyFriendshipMod ldr r0, [r4, #0x70] add r5, r5, #1 bl FUN_0206B9AC @@ -27099,7 +27099,7 @@ _0223AB58: add r0, r6, #0 mov r1, #0 lsr r2, r2, #0x10 - bl MonApplyFriendshipModEncrypted + bl MonApplyFriendshipMod add r0, r6, #0 bl CalcMonStats ldr r1, [r4, #4] @@ -31697,7 +31697,7 @@ _0223D148: add r0, r7, #0 mov r1, #8 lsr r2, r2, #0x10 - bl MonApplyFriendshipModEncrypted + bl MonApplyFriendshipMod pop {r3, r4, r5, r6, r7, pc} _0223D18E: add r0, r5, #0 @@ -31707,7 +31707,7 @@ _0223D18E: add r0, r7, #0 mov r1, #6 lsr r2, r2, #0x10 - bl MonApplyFriendshipModEncrypted + bl MonApplyFriendshipMod pop {r3, r4, r5, r6, r7, pc} _0223D1A4: add r0, r5, #0 @@ -31717,7 +31717,7 @@ _0223D1A4: add r0, r7, #0 mov r1, #6 lsr r2, r2, #0x10 - bl MonApplyFriendshipModEncrypted + bl MonApplyFriendshipMod _0223D1B8: pop {r3, r4, r5, r6, r7, pc} nop @@ -43613,7 +43613,7 @@ _02242D2E: add r0, r7, r1 str r0, [sp, #0x1c] add r0, r4, #0 - bl GetMonGenderEncrypted + bl GetMonGender ldr r1, [sp, #0x1c] mov r2, #0xf ldrb r1, [r1, r5] diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s index 760c2f64..a07a6426 100644 --- a/arm9/modules/35/asm/module_35.s +++ b/arm9/modules/35/asm/module_35.s @@ -349,7 +349,7 @@ _02254A7A: bl MOD05_021EC7B4 str r0, [r5, #0xc] add r0, r4, #0 - bl GetBoxMonGenderEncrypted + bl GetBoxMonGender str r0, [r5, #0x14] ldr r1, [sp, #0xc] add r0, r4, #0 diff --git a/arm9/modules/65/asm/module_65.s b/arm9/modules/65/asm/module_65.s index c62ef6e6..fa4d0c5b 100644 --- a/arm9/modules/65/asm/module_65.s +++ b/arm9/modules/65/asm/module_65.s @@ -3376,7 +3376,7 @@ MOD65_021D8F34: ; 0x021D8F34 strh r0, [r4, #0x34] ldr r0, [r4, #0x10] ldr r0, [r0] - bl GetMonGenderEncrypted + bl GetMonGender add r1, r4, #0 add r1, #0x37 strb r0, [r1] diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s index 3199be5d..32eb8847 100644 --- a/arm9/modules/69/asm/module_69.s +++ b/arm9/modules/69/asm/module_69.s @@ -2370,7 +2370,7 @@ MOD69_0222E8FC: ; 0x0222E8FC mov r3, #3 bl FUN_0200AD38 ldr r0, [r4, #0x24] - bl GetMonGenderEncrypted + bl GetMonGender cmp r0, #0 beq _0222E93C cmp r0, #1 diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index bc13fe8f..e9d79012 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -6435,7 +6435,7 @@ MOD71_02230AE4: ; 0x02230AE4 bl FUN_020239CC add r5, r0, #0 add r0, r4, #0 - bl GetMonGenderEncrypted + bl GetMonGender add r3, r0, #0 mov r0, #0x1a lsl r1, r5, #0x18 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index ffa44bd8..8b553253 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -16366,7 +16366,7 @@ MOD80_022357A0: ; 0x022357A0 add r2, sp, #4 bl GetMonData add r0, r4, #0 - bl GetMonGenderEncrypted + bl GetMonGender add r3, r0, #0 mov r0, #0x3e str r0, [sp] diff --git a/arm9/modules/83/asm/module_83.s b/arm9/modules/83/asm/module_83.s index bd2f6d2f..2aa02a59 100644 --- a/arm9/modules/83/asm/module_83.s +++ b/arm9/modules/83/asm/module_83.s @@ -22397,7 +22397,7 @@ _02238332: add r2, sp, #8 bl SetBoxMonData add r0, r4, #0 - bl GetBoxMonGenderEncrypted + bl GetBoxMonGender str r0, [sp, #8] add r0, r4, #0 mov r1, #0x6f @@ -23885,7 +23885,7 @@ MOD83_02238F94: ; 0x02238F94 add r7, r2, #0 add r6, r3, #0 ldr r4, [sp, #0x40] - bl GetMonGenderEncrypted + bl GetMonGender str r0, [sp, #0x24] ldr r0, [sp, #0x20] bl MonIsShiny diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 663b581a..58030ee1 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -10,6 +10,7 @@ #include "string_util.h" #include "text.h" #include "constants/abilities.h" +#include "constants/items.h" #pragma thumb on @@ -20,9 +21,13 @@ void SetBoxMonDataInternal(struct BoxPokemon * pokemon, int attr, void * ptr); void AddMonDataInternal(struct Pokemon * pokemon, int attr, int amount); void AddBoxMonData(struct BoxPokemon * pokemon, int attr, int amount); u32 CalcBoxMonExpToNextLevel(struct BoxPokemon * boxmon); +u16 ModifyStatByNature(u8 nature, u16 statval, u8 statno); +u8 GetGenderBySpeciesAndPersonality_PreloadedPersonal(struct BaseStats * personal, u16 species, u32 pid); +u8 BoxMonIsShiny(struct BoxPokemon * boxmon); +u8 CalcShininessByOtIdAndPersonality(u32 otid, u32 pid); void LoadMonPersonal(int species, struct BaseStats * personal); -int ResolveMonForme(int species, int forme); +int ResolveMonForme(int species, int forme); void MonEncryptSegment(void * datap, u32 size, u32 key); void MonDecryptSegment(void * datap, u32 size, u32 key); u16 MonEncryptionLCRNG(u32 * seed); @@ -30,7 +35,6 @@ u16 CalcMonChecksum(void * datap, u32 size); void InitBoxMonMoveset(struct BoxPokemon * boxmon); PokemonDataBlock * GetSubstruct(struct BoxPokemon * boxmon, u32 personality, u32 which_struct); void LoadMonBaseStats_HandleAlternateForme(u32 species, u32 forme, struct BaseStats * baseStats); -u16 ModifyStatByNature(u8 nature, u16 statval, u8 statno); #define ENCRY_ARGS_PTY(mon) &(mon)->party, sizeof((mon)->party), (mon)->box.pid #define ENCRY_ARGS_BOX(boxmon) &(boxmon)->substructs, sizeof((boxmon)->substructs), (boxmon)->checksum @@ -316,7 +320,7 @@ void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fi } else SetBoxMonData(boxPokemon, MON_DATA_ABILITY, &exp); - exp = GetBoxMonGenderEncrypted(boxPokemon); + exp = GetBoxMonGender(boxPokemon); SetBoxMonData(boxPokemon, MON_DATA_GENDER, &exp); InitBoxMonMoveset(boxPokemon); ReleaseBoxMonLock(boxPokemon, decry); @@ -2017,3 +2021,98 @@ u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex) } return retVal; } + +void MonApplyFriendshipMod(struct Pokemon * pokemon, u32 kind, u32 location) +{ + u16 species; + u8 effect; + u8 r4; + s16 friendship; + s8 mod; + + if (kind == 5 && (rand_LC() & 1)) + return; + + species = GetMonData(pokemon, MON_DATA_SPECIES2, NULL); + if (species == SPECIES_NONE || species == SPECIES_EGG) + return; + + effect = FUN_0206E7B8(GetMonData(pokemon, MON_DATA_HELD_ITEM, NULL), 1, 0); + r4 = 0; + friendship = GetMonData(pokemon, MON_DATA_FRIENDSHIP, NULL); + if (friendship >= 100) + r4++; + if (friendship >= 200) + r4++; + mod = sFriendshipModTable[kind][r4]; + if (mod > 0 && GetMonData(pokemon, MON_DATA_POKEBALL, NULL) == ITEM_LUXURY_BALL) + mod++; + if (mod > 0 && GetMonData(pokemon, MON_DATA_EGG_MET_LOCATION, NULL) == location) + mod++; + if (mod > 0 && effect == 52) // Soothe Bell effect? + mod = mod * 150 / 100; + friendship += mod; + if (friendship < 0) + friendship = 0; + if (friendship > 255) + friendship = 255; + SetMonData(pokemon, MON_DATA_FRIENDSHIP, &friendship); +} + +u8 GetMonGender(struct Pokemon * pokemon) +{ + return GetBoxMonGender(&pokemon->box); +} + +u8 GetBoxMonGender(struct BoxPokemon * boxmon) +{ + BOOL decry = AcquireBoxMonLock(boxmon); + u16 species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + u32 personality = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL); + ReleaseBoxMonLock(boxmon, decry); + return GetGenderBySpeciesAndPersonality(species, personality); +} + +u8 GetGenderBySpeciesAndPersonality(u16 species, u32 pid) +{ + struct BaseStats * personal = AllocAndLoadMonPersonal(species, 0); + u8 gender = GetGenderBySpeciesAndPersonality_PreloadedPersonal(personal, species, pid); + FreeMonPersonal(personal); + return gender; +} + +u8 GetGenderBySpeciesAndPersonality_PreloadedPersonal(struct BaseStats * personal, u16 species, u32 pid) +{ + u8 ratio = GetPersonalAttr(personal, BASE_GENDER_RATIO); + switch (ratio) + { + case MON_RATIO_MALE: + return MON_MALE; + case MON_RATIO_FEMALE: + return MON_FEMALE; + case MON_RATIO_UNKNOWN: + return MON_GENDERLESS; + default: + if (ratio > (u8)pid) + return MON_FEMALE; + else + return MON_MALE; + } +} + +u8 MonIsShiny(struct Pokemon * pokemon) +{ + return BoxMonIsShiny(&pokemon->box); +} + +u8 BoxMonIsShiny(struct BoxPokemon * boxmon) +{ + u32 otid = GetBoxMonData(boxmon, MON_DATA_OTID, NULL); + u32 pid = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL); + return CalcShininessByOtIdAndPersonality(otid, pid); +} + +u8 CalcShininessByOtIdAndPersonality(u32 otid, u32 pid) +{ + return SHINY_CHECK(otid, pid); +} diff --git a/include/constants/items.h b/include/constants/items.h new file mode 100644 index 00000000..98c3dd97 --- /dev/null +++ b/include/constants/items.h @@ -0,0 +1,448 @@ +#ifndef POKEDIAMOND_CONSTANTS_ITEMS_H +#define POKEDIAMOND_CONSTANTS_ITEMS_H + +#define ITEM_NONE 0 +#define ITEM_MASTER_BALL 1 +#define ITEM_ULTRA_BALL 2 +#define ITEM_GREAT_BALL 3 +#define ITEM_POKE_BALL 4 +#define ITEM_SAFARI_BALL 5 +#define ITEM_NET_BALL 6 +#define ITEM_DIVE_BALL 7 +#define ITEM_NEST_BALL 8 +#define ITEM_REPEAT_BALL 9 +#define ITEM_TIMER_BALL 10 +#define ITEM_LUXURY_BALL 11 +#define ITEM_PREMIER_BALL 12 +#define ITEM_DUSK_BALL 13 +#define ITEM_HEAL_BALL 14 +#define ITEM_QUICK_BALL 15 +#define ITEM_CHERISH_BALL 16 +#define ITEM_POTION 17 +#define ITEM_ANTIDOTE 18 +#define ITEM_BURN_HEAL 19 +#define ITEM_ICE_HEAL 20 +#define ITEM_AWAKENING 21 +#define ITEM_PARLYZ_HEAL 22 +#define ITEM_FULL_RESTORE 23 +#define ITEM_MAX_POTION 24 +#define ITEM_HYPER_POTION 25 +#define ITEM_SUPER_POTION 26 +#define ITEM_FULL_HEAL 27 +#define ITEM_REVIVE 28 +#define ITEM_MAX_REVIVE 29 +#define ITEM_FRESH_WATER 30 +#define ITEM_SODA_POP 31 +#define ITEM_LEMONADE 32 +#define ITEM_MOOMOO_MILK 33 +#define ITEM_ENERGYPOWDER 34 +#define ITEM_ENERGY_ROOT 35 +#define ITEM_HEAL_POWDER 36 +#define ITEM_REVIVAL_HERB 37 +#define ITEM_ETHER 38 +#define ITEM_MAX_ETHER 39 +#define ITEM_ELIXIR 40 +#define ITEM_MAX_ELIXIR 41 +#define ITEM_LAVA_COOKIE 42 +#define ITEM_BERRY_JUICE 43 +#define ITEM_SACRED_ASH 44 +#define ITEM_HP_UP 45 +#define ITEM_PROTEIN 46 +#define ITEM_IRON 47 +#define ITEM_CARBOS 48 +#define ITEM_CALCIUM 49 +#define ITEM_RARE_CANDY 50 +#define ITEM_PP_UP 51 +#define ITEM_ZINC 52 +#define ITEM_PP_MAX 53 +#define ITEM_OLD_GATEAU 54 +#define ITEM_GUARD_SPEC_ 55 +#define ITEM_DIRE_HIT 56 +#define ITEM_X_ATTACK 57 +#define ITEM_X_DEFENSE 58 +#define ITEM_X_SPEED 59 +#define ITEM_X_ACCURACY 60 +#define ITEM_X_SPECIAL 61 +#define ITEM_X_SP__DEF 62 +#define ITEM_POKE_DOLL 63 +#define ITEM_FLUFFY_TAIL 64 +#define ITEM_BLUE_FLUTE 65 +#define ITEM_YELLOW_FLUTE 66 +#define ITEM_RED_FLUTE 67 +#define ITEM_BLACK_FLUTE 68 +#define ITEM_WHITE_FLUTE 69 +#define ITEM_SHOAL_SALT 70 +#define ITEM_SHOAL_SHELL 71 +#define ITEM_RED_SHARD 72 +#define ITEM_BLUE_SHARD 73 +#define ITEM_YELLOW_SHARD 74 +#define ITEM_GREEN_SHARD 75 +#define ITEM_SUPER_REPEL 76 +#define ITEM_MAX_REPEL 77 +#define ITEM_ESCAPE_ROPE 78 +#define ITEM_REPEL 79 +#define ITEM_SUN_STONE 80 +#define ITEM_MOON_STONE 81 +#define ITEM_FIRE_STONE 82 +#define ITEM_THUNDERSTONE 83 +#define ITEM_WATER_STONE 84 +#define ITEM_LEAF_STONE 85 +#define ITEM_TINYMUSHROOM 86 +#define ITEM_BIG_MUSHROOM 87 +#define ITEM_PEARL 88 +#define ITEM_BIG_PEARL 89 +#define ITEM_STARDUST 90 +#define ITEM_STAR_PIECE 91 +#define ITEM_NUGGET 92 +#define ITEM_HEART_SCALE 93 +#define ITEM_HONEY 94 +#define ITEM_GROWTH_MULCH 95 +#define ITEM_DAMP_MULCH 96 +#define ITEM_STABLE_MULCH 97 +#define ITEM_GOOEY_MULCH 98 +#define ITEM_ROOT_FOSSIL 99 +#define ITEM_CLAW_FOSSIL 100 +#define ITEM_HELIX_FOSSIL 101 +#define ITEM_DOME_FOSSIL 102 +#define ITEM_OLD_AMBER 103 +#define ITEM_ARMOR_FOSSIL 104 +#define ITEM_SKULL_FOSSIL 105 +#define ITEM_RARE_BONE 106 +#define ITEM_SHINY_STONE 107 +#define ITEM_DUSK_STONE 108 +#define ITEM_DAWN_STONE 109 +#define ITEM_OVAL_STONE 110 +#define ITEM_ODD_KEYSTONE 111 + +#define ITEM_ADAMANT_ORB 135 +#define ITEM_LUSTROUS_ORB 136 +#define ITEM_GRASS_MAIL 137 +#define ITEM_FLAME_MAIL 138 +#define ITEM_BUBBLE_MAIL 139 +#define ITEM_BLOOM_MAIL 140 +#define ITEM_TUNNEL_MAIL 141 +#define ITEM_STEEL_MAIL 142 +#define ITEM_HEART_MAIL 143 +#define ITEM_SNOW_MAIL 144 +#define ITEM_SPACE_MAIL 145 +#define ITEM_AIR_MAIL 146 +#define ITEM_MOSAIC_MAIL 147 +#define ITEM_BRICK_MAIL 148 +#define ITEM_CHERI_BERRY 149 +#define ITEM_CHESTO_BERRY 150 +#define ITEM_PECHA_BERRY 151 +#define ITEM_RAWST_BERRY 152 +#define ITEM_ASPEAR_BERRY 153 +#define ITEM_LEPPA_BERRY 154 +#define ITEM_ORAN_BERRY 155 +#define ITEM_PERSIM_BERRY 156 +#define ITEM_LUM_BERRY 157 +#define ITEM_SITRUS_BERRY 158 +#define ITEM_FIGY_BERRY 159 +#define ITEM_WIKI_BERRY 160 +#define ITEM_MAGO_BERRY 161 +#define ITEM_AGUAV_BERRY 162 +#define ITEM_IAPAPA_BERRY 163 +#define ITEM_RAZZ_BERRY 164 +#define ITEM_BLUK_BERRY 165 +#define ITEM_NANAB_BERRY 166 +#define ITEM_WEPEAR_BERRY 167 +#define ITEM_PINAP_BERRY 168 +#define ITEM_POMEG_BERRY 169 +#define ITEM_KELPSY_BERRY 170 +#define ITEM_QUALOT_BERRY 171 +#define ITEM_HONDEW_BERRY 172 +#define ITEM_GREPA_BERRY 173 +#define ITEM_TAMATO_BERRY 174 +#define ITEM_CORNN_BERRY 175 +#define ITEM_MAGOST_BERRY 176 +#define ITEM_RABUTA_BERRY 177 +#define ITEM_NOMEL_BERRY 178 +#define ITEM_SPELON_BERRY 179 +#define ITEM_PAMTRE_BERRY 180 +#define ITEM_WATMEL_BERRY 181 +#define ITEM_DURIN_BERRY 182 +#define ITEM_BELUE_BERRY 183 +#define ITEM_OCCA_BERRY 184 +#define ITEM_PASSHO_BERRY 185 +#define ITEM_WACAN_BERRY 186 +#define ITEM_RINDO_BERRY 187 +#define ITEM_YACHE_BERRY 188 +#define ITEM_CHOPLE_BERRY 189 +#define ITEM_KEBIA_BERRY 190 +#define ITEM_SHUCA_BERRY 191 +#define ITEM_COBA_BERRY 192 +#define ITEM_PAYAPA_BERRY 193 +#define ITEM_TANGA_BERRY 194 +#define ITEM_CHARTI_BERRY 195 +#define ITEM_KASIB_BERRY 196 +#define ITEM_HABAN_BERRY 197 +#define ITEM_COLBUR_BERRY 198 +#define ITEM_BABIRI_BERRY 199 +#define ITEM_CHILAN_BERRY 200 +#define ITEM_LIECHI_BERRY 201 +#define ITEM_GANLON_BERRY 202 +#define ITEM_SALAC_BERRY 203 +#define ITEM_PETAYA_BERRY 204 +#define ITEM_APICOT_BERRY 205 +#define ITEM_LANSAT_BERRY 206 +#define ITEM_STARF_BERRY 207 +#define ITEM_ENIGMA_BERRY 208 +#define ITEM_MICLE_BERRY 209 +#define ITEM_CUSTAP_BERRY 210 +#define ITEM_JABOCA_BERRY 211 +#define ITEM_ROWAP_BERRY 212 +#define ITEM_BRIGHTPOWDER 213 +#define ITEM_WHITE_HERB 214 +#define ITEM_MACHO_BRACE 215 +#define ITEM_EXP__SHARE 216 +#define ITEM_QUICK_CLAW 217 +#define ITEM_SOOTHE_BELL 218 +#define ITEM_MENTAL_HERB 219 +#define ITEM_CHOICE_BAND 220 +#define ITEM_KINGS_ROCK 221 +#define ITEM_SILVERPOWDER 222 +#define ITEM_AMULET_COIN 223 +#define ITEM_CLEANSE_TAG 224 +#define ITEM_SOUL_DEW 225 +#define ITEM_DEEPSEATOOTH 226 +#define ITEM_DEEPSEASCALE 227 +#define ITEM_SMOKE_BALL 228 +#define ITEM_EVERSTONE 229 +#define ITEM_FOCUS_BAND 230 +#define ITEM_LUCKY_EGG 231 +#define ITEM_SCOPE_LENS 232 +#define ITEM_METAL_COAT 233 +#define ITEM_LEFTOVERS 234 +#define ITEM_DRAGON_SCALE 235 +#define ITEM_LIGHT_BALL 236 +#define ITEM_SOFT_SAND 237 +#define ITEM_HARD_STONE 238 +#define ITEM_MIRACLE_SEED 239 +#define ITEM_BLACKGLASSES 240 +#define ITEM_BLACK_BELT 241 +#define ITEM_MAGNET 242 +#define ITEM_MYSTIC_WATER 243 +#define ITEM_SHARP_BEAK 244 +#define ITEM_POISON_BARB 245 +#define ITEM_NEVERMELTICE 246 +#define ITEM_SPELL_TAG 247 +#define ITEM_TWISTEDSPOON 248 +#define ITEM_CHARCOAL 249 +#define ITEM_DRAGON_FANG 250 +#define ITEM_SILK_SCARF 251 +#define ITEM_UPGRADE 252 +#define ITEM_SHELL_BELL 253 +#define ITEM_SEA_INCENSE 254 +#define ITEM_LAX_INCENSE 255 +#define ITEM_LUCKY_PUNCH 256 +#define ITEM_METAL_POWDER 257 +#define ITEM_THICK_CLUB 258 +#define ITEM_STICK 259 +#define ITEM_RED_SCARF 260 +#define ITEM_BLUE_SCARF 261 +#define ITEM_PINK_SCARF 262 +#define ITEM_GREEN_SCARF 263 +#define ITEM_YELLOW_SCARF 264 +#define ITEM_WIDE_LENS 265 +#define ITEM_MUSCLE_BAND 266 +#define ITEM_WISE_GLASSES 267 +#define ITEM_EXPERT_BELT 268 +#define ITEM_LIGHT_CLAY 269 +#define ITEM_LIFE_ORB 270 +#define ITEM_POWER_HERB 271 +#define ITEM_TOXIC_ORB 272 +#define ITEM_FLAME_ORB 273 +#define ITEM_QUICK_POWDER 274 +#define ITEM_FOCUS_SASH 275 +#define ITEM_ZOOM_LENS 276 +#define ITEM_METRONOME 277 +#define ITEM_IRON_BALL 278 +#define ITEM_LAGGING_TAIL 279 +#define ITEM_DESTINY_KNOT 280 +#define ITEM_BLACK_SLUDGE 281 +#define ITEM_ICY_ROCK 282 +#define ITEM_SMOOTH_ROCK 283 +#define ITEM_HEAT_ROCK 284 +#define ITEM_DAMP_ROCK 285 +#define ITEM_GRIP_CLAW 286 +#define ITEM_CHOICE_SCARF 287 +#define ITEM_STICKY_BARB 288 +#define ITEM_POWER_BRACER 289 +#define ITEM_POWER_BELT 290 +#define ITEM_POWER_LENS 291 +#define ITEM_POWER_BAND 292 +#define ITEM_POWER_ANKLET 293 +#define ITEM_POWER_WEIGHT 294 +#define ITEM_SHED_SHELL 295 +#define ITEM_BIG_ROOT 296 +#define ITEM_CHOICE_SPECS 297 +#define ITEM_FLAME_PLATE 298 +#define ITEM_SPLASH_PLATE 299 +#define ITEM_ZAP_PLATE 300 +#define ITEM_MEADOW_PLATE 301 +#define ITEM_ICICLE_PLATE 302 +#define ITEM_FIST_PLATE 303 +#define ITEM_TOXIC_PLATE 304 +#define ITEM_EARTH_PLATE 305 +#define ITEM_SKY_PLATE 306 +#define ITEM_MIND_PLATE 307 +#define ITEM_INSECT_PLATE 308 +#define ITEM_STONE_PLATE 309 +#define ITEM_SPOOKY_PLATE 310 +#define ITEM_DRACO_PLATE 311 +#define ITEM_DREAD_PLATE 312 +#define ITEM_IRON_PLATE 313 +#define ITEM_ODD_INCENSE 314 +#define ITEM_ROCK_INCENSE 315 +#define ITEM_FULL_INCENSE 316 +#define ITEM_WAVE_INCENSE 317 +#define ITEM_ROSE_INCENSE 318 +#define ITEM_LUCK_INCENSE 319 +#define ITEM_PURE_INCENSE 320 +#define ITEM_PROTECTOR 321 +#define ITEM_ELECTIRIZER 322 +#define ITEM_MAGMARIZER 323 +#define ITEM_DUBIOUS_DISC 324 +#define ITEM_REAPER_CLOTH 325 +#define ITEM_RAZOR_CLAW 326 +#define ITEM_RAZOR_FANG 327 +#define ITEM_TM01 328 +#define ITEM_TM02 329 +#define ITEM_TM03 330 +#define ITEM_TM04 331 +#define ITEM_TM05 332 +#define ITEM_TM06 333 +#define ITEM_TM07 334 +#define ITEM_TM08 335 +#define ITEM_TM09 336 +#define ITEM_TM10 337 +#define ITEM_TM11 338 +#define ITEM_TM12 339 +#define ITEM_TM13 340 +#define ITEM_TM14 341 +#define ITEM_TM15 342 +#define ITEM_TM16 343 +#define ITEM_TM17 344 +#define ITEM_TM18 345 +#define ITEM_TM19 346 +#define ITEM_TM20 347 +#define ITEM_TM21 348 +#define ITEM_TM22 349 +#define ITEM_TM23 350 +#define ITEM_TM24 351 +#define ITEM_TM25 352 +#define ITEM_TM26 353 +#define ITEM_TM27 354 +#define ITEM_TM28 355 +#define ITEM_TM29 356 +#define ITEM_TM30 357 +#define ITEM_TM31 358 +#define ITEM_TM32 359 +#define ITEM_TM33 360 +#define ITEM_TM34 361 +#define ITEM_TM35 362 +#define ITEM_TM36 363 +#define ITEM_TM37 364 +#define ITEM_TM38 365 +#define ITEM_TM39 366 +#define ITEM_TM40 367 +#define ITEM_TM41 368 +#define ITEM_TM42 369 +#define ITEM_TM43 370 +#define ITEM_TM44 371 +#define ITEM_TM45 372 +#define ITEM_TM46 373 +#define ITEM_TM47 374 +#define ITEM_TM48 375 +#define ITEM_TM49 376 +#define ITEM_TM50 377 +#define ITEM_TM51 378 +#define ITEM_TM52 379 +#define ITEM_TM53 380 +#define ITEM_TM54 381 +#define ITEM_TM55 382 +#define ITEM_TM56 383 +#define ITEM_TM57 384 +#define ITEM_TM58 385 +#define ITEM_TM59 386 +#define ITEM_TM60 387 +#define ITEM_TM61 388 +#define ITEM_TM62 389 +#define ITEM_TM63 390 +#define ITEM_TM64 391 +#define ITEM_TM65 392 +#define ITEM_TM66 393 +#define ITEM_TM67 394 +#define ITEM_TM68 395 +#define ITEM_TM69 396 +#define ITEM_TM70 397 +#define ITEM_TM71 398 +#define ITEM_TM72 399 +#define ITEM_TM73 400 +#define ITEM_TM74 401 +#define ITEM_TM75 402 +#define ITEM_TM76 403 +#define ITEM_TM77 404 +#define ITEM_TM78 405 +#define ITEM_TM79 406 +#define ITEM_TM80 407 +#define ITEM_TM81 408 +#define ITEM_TM82 409 +#define ITEM_TM83 410 +#define ITEM_TM84 411 +#define ITEM_TM85 412 +#define ITEM_TM86 413 +#define ITEM_TM87 414 +#define ITEM_TM88 415 +#define ITEM_TM89 416 +#define ITEM_TM90 417 +#define ITEM_TM91 418 +#define ITEM_TM92 419 +#define ITEM_HM01 420 +#define ITEM_HM02 421 +#define ITEM_HM03 422 +#define ITEM_HM04 423 +#define ITEM_HM05 424 +#define ITEM_HM06 425 +#define ITEM_HM07 426 +#define ITEM_HM08 427 +#define ITEM_EXPLORER_KIT 428 +#define ITEM_LOOT_SACK 429 +#define ITEM_RULE_BOOK 430 +#define ITEM_POKE_RADAR 431 +#define ITEM_POINT_CARD 432 +#define ITEM_JOURNAL 433 +#define ITEM_SEAL_CASE 434 +#define ITEM_FASHION_CASE 435 +#define ITEM_SEAL_BAG 436 +#define ITEM_PAL_PAD 437 +#define ITEM_WORKS_KEY 438 +#define ITEM_OLD_CHARM 439 +#define ITEM_GALACTIC_KEY 440 +#define ITEM_RED_CHAIN 441 +#define ITEM_TOWN_MAP 442 +#define ITEM_VS__SEEKER 443 +#define ITEM_COIN_CASE 444 +#define ITEM_OLD_ROD 445 +#define ITEM_GOOD_ROD 446 +#define ITEM_SUPER_ROD 447 +#define ITEM_SPRAYDUCK 448 +#define ITEM_POFFIN_CASE 449 +#define ITEM_BICYCLE 450 +#define ITEM_SUITE_KEY 451 +#define ITEM_OAKS_LETTER 452 +#define ITEM_LUNAR_WING 453 +#define ITEM_MEMBER_CARD 454 +#define ITEM_AZURE_FLUTE 455 +#define ITEM_S_S__TICKET 456 +#define ITEM_CONTEST_PASS 457 +#define ITEM_MAGMA_STONE 458 +#define ITEM_PARCEL 459 +#define ITEM_COUPON_1 460 +#define ITEM_COUPON_2 461 +#define ITEM_COUPON_3 462 +#define ITEM_STORAGE_KEY 463 +#define ITEM_SECRETPOTION 464 + +#endif //POKEDIAMOND_CONSTANTS_ITEMS_H diff --git a/include/pokemon.h b/include/pokemon.h index 3e277ee1..db15ac14 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -507,7 +507,7 @@ int CalcLevelBySpeciesAndExp_PreloadedPersonal(struct BaseStats * personal, u16 u8 GetBoxMonNature(struct BoxPokemon * boxmon); u8 GetMonNature(struct Pokemon * mon); u8 GetNatureFromPersonality(u32 pid); +u8 GetBoxMonGender(struct BoxPokemon * boxmon); u8 GetGenderBySpeciesAndPersonality(u16 species, u32 pid); -u32 GetBoxMonGenderEncrypted(struct BoxPokemon * boxmon); #endif //POKEDIAMOND_POKEMON_H -- cgit v1.2.3 From e8e76fcd320eea906d2746f0315bd0918bd40cb3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jun 2020 16:30:14 -0400 Subject: Fix warnings --- arm9/src/pokemon.c | 83 +++++++++++++++++++++++++++--------------------------- include/pokemon.h | 9 +++++- 2 files changed, 50 insertions(+), 42 deletions(-) diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 58030ee1..99dea6d5 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -277,11 +277,11 @@ void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fi SetBoxMonData(boxPokemon, MON_DATA_SPECIES_NAME, NULL); exp = GetMonExpBySpeciesAndLevel(species, level); SetBoxMonData(boxPokemon, MON_DATA_EXPERIENCE, &exp); - exp = GetMonBaseStat(species, BASE_FRIENDSHIP); + exp = (u32)GetMonBaseStat(species, BASE_FRIENDSHIP); SetBoxMonData(boxPokemon, MON_DATA_FRIENDSHIP, &exp); SetBoxMonData(boxPokemon, MON_DATA_MET_LEVEL, &level); SetBoxMonData(boxPokemon, MON_DATA_GAME_VERSION, (void *)&gGameVersion); - exp = 4; + exp = ITEM_POKE_BALL; SetBoxMonData(boxPokemon, MON_DATA_POKEBALL, &exp); if (fixedIV < 0x20) { @@ -309,8 +309,8 @@ void CreateBoxMon(struct BoxPokemon * boxPokemon, int species, int level, int fi iv = (exp & 0x7C00) >> 10; SetBoxMonData(boxPokemon, MON_DATA_SPDEF_IV, &iv); } - exp = GetMonBaseStat(species, BASE_ABILITY_1); - iv = GetMonBaseStat(species, BASE_ABILITY_2); + exp = (u32)GetMonBaseStat(species, BASE_ABILITY_1); + iv = (u32)GetMonBaseStat(species, BASE_ABILITY_2); if (iv != 0) { if (fixedPersonality & 1) @@ -388,7 +388,7 @@ void CreateMonWithFixedIVs(struct Pokemon * pokemon, int species, int level, int void CalcMonLevelAndStats(struct Pokemon * pokemon) { BOOL decry = AcquireMonLock(pokemon); - u32 level = CalcMonLevel(pokemon); + u32 level = (u32)CalcMonLevel(pokemon); SetMonData(pokemon, MON_DATA_LEVEL, &level); CalcMonStats(pokemon); ReleaseMonLock(pokemon, decry); @@ -440,7 +440,7 @@ void CalcMonStats(struct Pokemon * pokemon) species = (int)GetMonData(pokemon, MON_DATA_SPECIES, NULL); baseStats = (struct BaseStats *)AllocFromHeap(0, sizeof(struct BaseStats)); - LoadMonBaseStats_HandleAlternateForme(species, forme, baseStats); + LoadMonBaseStats_HandleAlternateForme((u32)species, (u32)forme, baseStats); if (species == SPECIES_SHEDINJA) newMaxHp = 1; @@ -451,23 +451,23 @@ void CalcMonStats(struct Pokemon * pokemon) SetMonData(pokemon, MON_DATA_MAXHP, &newMaxHp); newAtk = (baseStats->atk * 2 + atkIv + atkEv / 4) * level / 100 + 5; - newAtk = ModifyStatByNature(GetMonNature(pokemon), newAtk, 1); + newAtk = ModifyStatByNature(GetMonNature(pokemon), (u16)newAtk, 1); SetMonData(pokemon, MON_DATA_ATK, &newAtk); newDef = (baseStats->def * 2 + defIv + defEv / 4) * level / 100 + 5; - newDef = ModifyStatByNature(GetMonNature(pokemon), newDef, 2); + newDef = ModifyStatByNature(GetMonNature(pokemon), (u16)newDef, 2); SetMonData(pokemon, MON_DATA_DEF, &newDef); newSpeed = (baseStats->speed * 2 + speedIv + speedEv / 4) * level / 100 + 5; - newSpeed = ModifyStatByNature(GetMonNature(pokemon), newSpeed, 3); + newSpeed = ModifyStatByNature(GetMonNature(pokemon), (u16)newSpeed, 3); SetMonData(pokemon, MON_DATA_SPEED, &newSpeed); newSpatk = (baseStats->spatk * 2 + spatkIv + spatkEv / 4) * level / 100 + 5; - newSpatk = ModifyStatByNature(GetMonNature(pokemon), newSpatk, 4); + newSpatk = ModifyStatByNature(GetMonNature(pokemon), (u16)newSpatk, 4); SetMonData(pokemon, MON_DATA_SPATK, &newSpatk); newSpdef = (baseStats->spdef * 2 + spdefIv + spdefEv / 4) * level / 100 + 5; - newSpdef = ModifyStatByNature(GetMonNature(pokemon), newSpdef, 5); + newSpdef = ModifyStatByNature(GetMonNature(pokemon), (u16)newSpdef, 5); SetMonData(pokemon, MON_DATA_SPDEF, &newSpdef); FreeToHeap(baseStats); @@ -612,7 +612,7 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest) ret = SPECIES_EGG; break; case MON_DATA_LEVEL: - ret = CalcLevelBySpeciesAndExp(blockA->species, blockA->exp); + ret = (u32)CalcLevelBySpeciesAndExp(blockA->species, blockA->exp); break; case MON_DATA_SPECIES: if (boxmon->checksum_fail) @@ -739,7 +739,7 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest) case MON_DATA_MOVE2MAXPP: case MON_DATA_MOVE3MAXPP: case MON_DATA_MOVE4MAXPP: - ret = FUN_0206AB30(blockB->moves[attr - MON_DATA_MOVE1MAXPP], blockB->movePpUps[attr - MON_DATA_MOVE1MAXPP]); + ret = (u32)FUN_0206AB30(blockB->moves[attr - MON_DATA_MOVE1MAXPP], blockB->movePpUps[attr - MON_DATA_MOVE1MAXPP]); break; case MON_DATA_HP_IV: ret = blockB->hpIV; @@ -949,10 +949,10 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest) case MON_DATA_TYPE_1: case MON_DATA_TYPE_2: if (blockA->species == SPECIES_ARCEUS && blockA->ability == ABILITY_MULTITYPE) - ret = GetArceusTypeByPlate(FUN_0206E7B8(blockA->heldItem, 1, 0)); + ret = (u32)GetArceusTypeByPlate((u16)FUN_0206E7B8(blockA->heldItem, 1, 0)); else { - ret = GetMonBaseStat_HandleFormeConversion(blockA->species, blockB->alternateForm, attr - MON_DATA_TYPE_1 + BASE_TYPE1); + ret = (u32)GetMonBaseStat_HandleFormeConversion(blockA->species, blockB->alternateForm, (enum BaseStat)(attr - MON_DATA_TYPE_1 + BASE_TYPE1)); } break; case MON_DATA_SPECIES_NAME: @@ -1069,7 +1069,6 @@ void SetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * value) u16 namebuf2[POKEMON_NAME_LENGTH + 1]; u16 namebuf3[POKEMON_NAME_LENGTH + 1]; u16 * speciesName; - u8 iv; PokemonDataBlockA *blockA = &GetSubstruct(boxmon, boxmon->pid, 0)->blockA; PokemonDataBlockB *blockB = &GetSubstruct(boxmon, boxmon->pid, 1)->blockB; @@ -1439,7 +1438,7 @@ void AddMonDataInternal(struct Pokemon * pokemon, int attr, int value) case MON_DATA_HP: maxHp = pokemon->party.maxHp; if ((s32)(pokemon->party.hp + value) > maxHp) - pokemon->party.hp = maxHp; + pokemon->party.hp = (u16)maxHp; else pokemon->party.hp += value; break; @@ -1542,7 +1541,7 @@ void AddBoxMonData(struct BoxPokemon * boxmon, int attr, int value) case MON_DATA_MOVE3PP: case MON_DATA_MOVE4PP: if (blockB->movePP[attr - MON_DATA_MOVE1PP] + value > FUN_0206AB30(blockB->moves[attr - MON_DATA_MOVE1PP], blockB->movePpUps[attr - MON_DATA_MOVE1PP])) - blockB->movePP[attr - MON_DATA_MOVE1PP] = FUN_0206AB30(blockB->moves[attr - MON_DATA_MOVE1PP], blockB->movePpUps[attr - MON_DATA_MOVE1PP]); + blockB->movePP[attr - MON_DATA_MOVE1PP] = (u8)FUN_0206AB30(blockB->moves[attr - MON_DATA_MOVE1PP], blockB->movePpUps[attr - MON_DATA_MOVE1PP]); else blockB->movePP[attr - MON_DATA_MOVE1PP] += value; break; @@ -1849,16 +1848,16 @@ int GetPersonalAttr(struct BaseStats * baseStats, enum BaseStat attr) ret = baseStats->flip; break; case BASE_UNKNOWN_29: - ret = baseStats->unk1C; + ret = (int)baseStats->unk1C; break; case BASE_UNKNOWN_30: - ret = baseStats->unk20; + ret = (int)baseStats->unk20; break; case BASE_UNKNOWN_31: - ret = baseStats->unk24; + ret = (int)baseStats->unk24; break; case BASE_UNKNOWN_32: - ret = baseStats->unk28; + ret = (int)baseStats->unk28; break; } return ret; @@ -1891,13 +1890,13 @@ int GetMonBaseStat(int species, enum BaseStat attr) u8 GetPercentProgressTowardsNextLevel(struct Pokemon * pokemon) { BOOL decry = AcquireMonLock(pokemon); - u16 species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); - u8 level = GetMonData(pokemon, MON_DATA_LEVEL, NULL); + u16 species = (u16)GetMonData(pokemon, MON_DATA_SPECIES, NULL); + u8 level = (u8)GetMonData(pokemon, MON_DATA_LEVEL, NULL); u32 lo = GetMonExpBySpeciesAndLevel(species, level); u32 hi = GetMonExpBySpeciesAndLevel(species, level + 1); u32 cur = GetMonData(pokemon, MON_DATA_EXPERIENCE, NULL); ReleaseMonLock(pokemon, decry); - return 100 * (cur - lo) / (hi - lo); + return (u8)(100 * (cur - lo) / (hi - lo)); } u32 CalcMonExpToNextLevel(struct Pokemon * pokemon) @@ -1907,8 +1906,8 @@ u32 CalcMonExpToNextLevel(struct Pokemon * pokemon) u32 CalcBoxMonExpToNextLevel(struct BoxPokemon * boxmon) { - u16 species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); - u16 level = CalcBoxMonLevel(boxmon) + 1; + u16 species = (u16)GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + u16 level = (u16)(CalcBoxMonLevel(boxmon) + 1); u32 cur = GetBoxMonData(boxmon, MON_DATA_EXPERIENCE, NULL); u32 hi = GetMonExpBySpeciesAndLevel(species, level); return hi - cur; @@ -1916,8 +1915,8 @@ u32 CalcBoxMonExpToNextLevel(struct BoxPokemon * boxmon) u32 GetMonBaseExperienceAtCurrentLevel(struct Pokemon * pokemon) { - int species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); - int level = GetMonData(pokemon, MON_DATA_LEVEL, NULL); + int species = (int)GetMonData(pokemon, MON_DATA_SPECIES, NULL); + int level = (int)GetMonData(pokemon, MON_DATA_LEVEL, NULL); return GetMonExpBySpeciesAndLevel(species, level); } @@ -1953,10 +1952,10 @@ int CalcMonLevel(struct Pokemon * pokemon) int CalcBoxMonLevel(struct BoxPokemon * boxmon) { BOOL decry = AcquireBoxMonLock(boxmon); - int species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); - int exp = GetBoxMonData(boxmon, MON_DATA_EXPERIENCE, NULL); + int species = (int)GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + int exp = (int)GetBoxMonData(boxmon, MON_DATA_EXPERIENCE, NULL); ReleaseBoxMonLock(boxmon, decry); - return CalcLevelBySpeciesAndExp(species, exp); + return CalcLevelBySpeciesAndExp((u16)species, (u32)exp); } int CalcLevelBySpeciesAndExp(u16 species, u32 exp) @@ -1970,6 +1969,7 @@ int CalcLevelBySpeciesAndExp(u16 species, u32 exp) int CalcLevelBySpeciesAndExp_PreloadedPersonal(struct BaseStats * personal, u16 species, u32 exp) { +#pragma unused(species) static u32 table[101]; int i; LoadGrowthTable(GetPersonalAttr(personal, BASE_GROWTH_RATE), table); @@ -1996,7 +1996,7 @@ u8 GetBoxMonNature(struct BoxPokemon * boxmon) u8 GetNatureFromPersonality(u32 pid) { - return pid % 25; + return (u8)(pid % 25); } u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex) @@ -2010,10 +2010,10 @@ u16 ModifyStatByNature(u8 nature, u16 n, u8 statIndex) switch (sNatureStatMods[nature][statIndex - 1]) { case 1: - retVal = (u16)(n * 110) / 100; // NOTE: will overflow for n > 595 because the intermediate value is cast to u16 before the division. Fix by removing (u16) cast + retVal = (u16)((u16)(n * 110) / 100); // NOTE: will overflow for n > 595 because the intermediate value is cast to u16 before the division. Fix by removing (u16) cast break; case -1: - retVal = (u16)(n * 90) / 100; // NOTE: will overflow for n > 728, see above + retVal = (u16)((u16)(n * 90) / 100); // NOTE: will overflow for n > 728, see above break; default: retVal = n; @@ -2033,13 +2033,13 @@ void MonApplyFriendshipMod(struct Pokemon * pokemon, u32 kind, u32 location) if (kind == 5 && (rand_LC() & 1)) return; - species = GetMonData(pokemon, MON_DATA_SPECIES2, NULL); + species = (u16)GetMonData(pokemon, MON_DATA_SPECIES2, NULL); if (species == SPECIES_NONE || species == SPECIES_EGG) return; - effect = FUN_0206E7B8(GetMonData(pokemon, MON_DATA_HELD_ITEM, NULL), 1, 0); + effect = (u8)FUN_0206E7B8((u16)GetMonData(pokemon, MON_DATA_HELD_ITEM, NULL), 1, 0); r4 = 0; - friendship = GetMonData(pokemon, MON_DATA_FRIENDSHIP, NULL); + friendship = (s16)GetMonData(pokemon, MON_DATA_FRIENDSHIP, NULL); if (friendship >= 100) r4++; if (friendship >= 200) @@ -2050,7 +2050,7 @@ void MonApplyFriendshipMod(struct Pokemon * pokemon, u32 kind, u32 location) if (mod > 0 && GetMonData(pokemon, MON_DATA_EGG_MET_LOCATION, NULL) == location) mod++; if (mod > 0 && effect == 52) // Soothe Bell effect? - mod = mod * 150 / 100; + mod = (s8)(mod * 150 / 100); friendship += mod; if (friendship < 0) friendship = 0; @@ -2067,7 +2067,7 @@ u8 GetMonGender(struct Pokemon * pokemon) u8 GetBoxMonGender(struct BoxPokemon * boxmon) { BOOL decry = AcquireBoxMonLock(boxmon); - u16 species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + u16 species = (u16)GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); u32 personality = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL); ReleaseBoxMonLock(boxmon, decry); return GetGenderBySpeciesAndPersonality(species, personality); @@ -2083,7 +2083,8 @@ u8 GetGenderBySpeciesAndPersonality(u16 species, u32 pid) u8 GetGenderBySpeciesAndPersonality_PreloadedPersonal(struct BaseStats * personal, u16 species, u32 pid) { - u8 ratio = GetPersonalAttr(personal, BASE_GENDER_RATIO); +#pragma unused(species) + u8 ratio = (u8)GetPersonalAttr(personal, BASE_GENDER_RATIO); switch (ratio) { case MON_RATIO_MALE: diff --git a/include/pokemon.h b/include/pokemon.h index db15ac14..897b6731 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -494,8 +494,13 @@ void SetMonData(struct Pokemon * pokemon, int attr, void * ptr); void SetBoxMonData(struct BoxPokemon * pokemon, int attr, void * ptr); void AddMonData(struct Pokemon * pokemon, int attr, int amount); struct BaseStats * AllocAndLoadMonPersonal(int species, u32 heap_id); +int GetPersonalAttr(struct BaseStats * baseStats, enum BaseStat attr); +void FreeMonPersonal(struct BaseStats * personal); int GetMonBaseStat_HandleFormeConversion(int species, int form, enum BaseStat stat_id); int GetMonBaseStat(int species, enum BaseStat stat_id); +u8 GetPercentProgressTowardsNextLevel(struct Pokemon * pokemon); +u32 CalcMonExpToNextLevel(struct Pokemon * pokemon); +u32 GetMonBaseExperienceAtCurrentLevel(struct Pokemon * pokemon); u32 GetMonExpBySpeciesAndLevel(int species, int level); void LoadGrowthTable(int growthRate, u32 * table); u32 GetExpByGrowthRateAndLevel(int rate, int level); @@ -503,11 +508,13 @@ int CalcMonLevel(struct Pokemon * pokemon); int CalcBoxMonLevel(struct BoxPokemon * boxmon); int CalcLevelBySpeciesAndExp(u16 species, u32 experience); int CalcLevelBySpeciesAndExp_PreloadedPersonal(struct BaseStats * personal, u16 species, u32 experience); - u8 GetBoxMonNature(struct BoxPokemon * boxmon); u8 GetMonNature(struct Pokemon * mon); u8 GetNatureFromPersonality(u32 pid); +void MonApplyFriendshipMod(struct Pokemon * pokemon, u32 kind, u32 location); +u8 GetMonGender(struct Pokemon * pokemon); u8 GetBoxMonGender(struct BoxPokemon * boxmon); u8 GetGenderBySpeciesAndPersonality(u16 species, u32 pid); +u8 MonIsShiny(struct Pokemon * pokemon); #endif //POKEDIAMOND_POKEMON_H -- cgit v1.2.3 From 1539bc21bce1ad6c80bd7ead5a9658ea6f2182e3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jun 2020 17:08:36 -0400 Subject: GenerateShinyPersonality --- arm9/asm/pokemon_s.s | 69 ---------------------------------------------------- arm9/src/pokemon.c | 27 ++++++++++++++++++++ include/pokemon.h | 1 + 3 files changed, 28 insertions(+), 69 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 82548f30..80eadfe8 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -23,75 +23,6 @@ __local_str_poketool_personal_pms_narc: ; 0x02105FC8 .extern BoxMonIsShiny - thumb_func_start GenerateShinyPersonality -GenerateShinyPersonality: ; 0x02068AD8 - push {r3-r7, lr} - add r7, r0, #0x0 - ldr r0, _02068B64 ; =0xFFFF0000 - and r0, r7 - lsr r1, r0, #0x10 - lsl r0, r7, #0x10 - lsr r0, r0, #0x10 - eor r0, r1 - lsr r7, r0, #0x3 - bl rand_LC - mov r1, #0x7 - and r0, r1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - bl rand_LC - mov r1, #0x7 - and r0, r1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - mov r4, #0x0 -_02068B04: - add r0, r4, #0x0 - bl MaskOfFlagNo - tst r0, r7 - beq _02068B34 - bl rand_LC - mov r1, #0x1 - tst r0, r1 - beq _02068B26 - add r0, r4, #0x3 - bl MaskOfFlagNo - orr r0, r6 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - b _02068B56 -_02068B26: - add r0, r4, #0x3 - bl MaskOfFlagNo - orr r0, r5 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - b _02068B56 -_02068B34: - bl rand_LC - mov r1, #0x1 - tst r0, r1 - beq _02068B56 - add r0, r4, #0x3 - bl MaskOfFlagNo - orr r0, r6 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - add r0, r4, #0x3 - bl MaskOfFlagNo - orr r0, r5 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 -_02068B56: - add r4, r4, #0x1 - cmp r4, #0xd - blt _02068B04 - lsl r0, r5, #0x10 - orr r0, r6 - pop {r3-r7, pc} - nop -_02068B64: .word 0xFFFF0000 - thumb_func_start FUN_02068B68 FUN_02068B68: ; 0x02068B68 ldr r3, _02068B6C ; =FUN_02068B70 diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 99dea6d5..c253c709 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -25,6 +25,7 @@ u16 ModifyStatByNature(u8 nature, u16 statval, u8 statno); u8 GetGenderBySpeciesAndPersonality_PreloadedPersonal(struct BaseStats * personal, u16 species, u32 pid); u8 BoxMonIsShiny(struct BoxPokemon * boxmon); u8 CalcShininessByOtIdAndPersonality(u32 otid, u32 pid); +u32 MaskOfFlagNo(int flagno); void LoadMonPersonal(int species, struct BaseStats * personal); int ResolveMonForme(int species, int forme); @@ -2117,3 +2118,29 @@ u8 CalcShininessByOtIdAndPersonality(u32 otid, u32 pid) { return SHINY_CHECK(otid, pid); } + +u32 GenerateShinyPersonality(u32 otid) +{ + int r4; + u16 r6; + u16 r5; + otid = (u32)((((otid & 0xFFFF0000) >> 16) ^ (otid & 0xFFFF)) >> 3u); + r6 = (u16)(rand_LC() & 7); + r5 = (u16)(rand_LC() & 7); + for (r4 = 0; r4 < 13; r4++) + { + if (MaskOfFlagNo(r4) & otid) + { + if (rand_LC() & 1) + r6 |= MaskOfFlagNo(r4 + 3); + else + r5 |= MaskOfFlagNo(r4 + 3); + } + else if (rand_LC() & 1) + { + r6 |= MaskOfFlagNo(r4 + 3); + r5 |= MaskOfFlagNo(r4 + 3); + } + } + return (u32)((r5 << 16) | r6); +} diff --git a/include/pokemon.h b/include/pokemon.h index 897b6731..6d2c8cf7 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -516,5 +516,6 @@ u8 GetMonGender(struct Pokemon * pokemon); u8 GetBoxMonGender(struct BoxPokemon * boxmon); u8 GetGenderBySpeciesAndPersonality(u16 species, u32 pid); u8 MonIsShiny(struct Pokemon * pokemon); +u32 GenerateShinyPersonality(u32 otid); #endif //POKEDIAMOND_POKEMON_H -- cgit v1.2.3 From a17f767a50a874e3d0ebb6b38a8b5c4a81062bd5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jun 2020 18:23:31 -0400 Subject: through FUN_02068C00 --- arm9/asm/pokemon_s.s | 378 --------------------------------------------------- arm9/src/pokemon.c | 122 +++++++++++++++++ include/pokemon.h | 13 ++ 3 files changed, 135 insertions(+), 378 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 80eadfe8..320c6252 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -23,384 +23,6 @@ __local_str_poketool_personal_pms_narc: ; 0x02105FC8 .extern BoxMonIsShiny - thumb_func_start FUN_02068B68 -FUN_02068B68: ; 0x02068B68 - ldr r3, _02068B6C ; =FUN_02068B70 - bx r3 - .balign 4 -_02068B6C: .word FUN_02068B70 - - thumb_func_start FUN_02068B70 -FUN_02068B70: ; 0x02068B70 - push {r4-r7, lr} - sub sp, #0x1c - add r5, r1, #0x0 - str r0, [sp, #0xc] - add r0, r5, #0x0 - str r2, [sp, #0x10] - bl AcquireBoxMonLock - str r0, [sp, #0x18] - add r0, r5, #0x0 - mov r1, #0xad - mov r2, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r5, #0x0 - bl GetBoxMonGender - str r0, [sp, #0x14] - add r0, r5, #0x0 - bl BoxMonIsShiny - mov r1, #0x0 - add r7, r0, #0x0 - add r0, r5, #0x0 - add r2, r1, #0x0 - bl GetBoxMonData - add r6, r0, #0x0 - ldr r0, _02068BF8 ; =SPECIES_EGG - cmp r4, r0 - bne _02068BCA - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonData - ldr r1, _02068BFC ; =SPECIES_MANAPHY - cmp r0, r1 - bne _02068BC6 - mov r0, #0x1 - b _02068BD8 -_02068BC6: - mov r0, #0x0 - b _02068BD8 -_02068BCA: - add r0, r5, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 -_02068BD8: - str r7, [sp, #0x0] - str r0, [sp, #0x4] - str r6, [sp, #0x8] - ldr r0, [sp, #0xc] - ldr r2, [sp, #0x14] - ldr r3, [sp, #0x10] - add r1, r4, #0x0 - bl FUN_02068C00 - ldr r1, [sp, #0x18] - add r0, r5, #0x0 - bl ReleaseBoxMonLock - add sp, #0x1c - pop {r4-r7, pc} - nop -_02068BF8: .word SPECIES_EGG -_02068BFC: .word SPECIES_MANAPHY - - thumb_func_start FUN_02068C00 -FUN_02068C00: ; 0x02068C00 - push {r4-r7} - add r7, r2, #0x0 - add r5, r3, #0x0 - add r4, r0, #0x0 - add r0, r1, #0x0 - ldr r3, [sp, #0x10] - ldr r2, [sp, #0x14] - mov r1, #0x0 - strh r1, [r4, #0x6] - strb r1, [r4, #0x8] - str r1, [r4, #0xc] - ldr r1, _02068E0C ; =SPECIES_CHERRIM - cmp r0, r1 - bgt _02068C68 - bge _02068D1E - add r6, r1, #0x0 - sub r6, #SPECIES_CHERRIM-SPECIES_CASTFORM - cmp r0, r6 - bgt _02068C36 - sub r1, #SPECIES_CHERRIM-SPECIES_CASTFORM - cmp r0, r1 - blt _02068C2E - b _02068D58 -_02068C2E: - cmp r0, #SPECIES_UNOWN - bne _02068C34 - b _02068D90 -_02068C34: - b _02068DD4 -_02068C36: - add r6, r1, #0x0 - sub r6, #SPECIES_CHERRIM-SPECIES_DEOXYS - cmp r0, r6 - bgt _02068C48 - sub r1, #SPECIES_CHERRIM-SPECIES_DEOXYS - cmp r0, r1 - bne _02068C46 - b _02068D76 -_02068C46: - b _02068DD4 -_02068C48: - add r6, r1, #0x0 - sub r6, #SPECIES_CHERRIM-SPECIES_WORMADAM - cmp r0, r6 - bgt _02068C66 - add r6, r1, #0x0 - sub r6, #SPECIES_CHERRIM-SPECIES_BURMY - cmp r0, r6 - blt _02068C66 - add r6, r1, #0x0 - sub r6, #SPECIES_CHERRIM-SPECIES_BURMY - cmp r0, r6 - beq _02068CAA - sub r1, #SPECIES_CHERRIM-SPECIES_WORMADAM - cmp r0, r1 - beq _02068CC8 -_02068C66: - b _02068DD4 -_02068C68: - add r6, r1, #0x0 - add r6, #SPECIES_ARCEUS-SPECIES_CHERRIM - cmp r0, r6 - bgt _02068C8E - add r6, r1, #0x0 - add r6, #SPECIES_ARCEUS-SPECIES_CHERRIM - cmp r0, r6 - bge _02068D3A - add r6, r1, #SPECIES_GASTRODON-SPECIES_CHERRIM - cmp r0, r6 - bgt _02068C8C - add r6, r1, #SPECIES_SHELLOS-SPECIES_CHERRIM - cmp r0, r6 - blt _02068C8C - beq _02068CE6 - add r1, r1, #SPECIES_GASTRODON-SPECIES_CHERRIM - cmp r0, r1 - beq _02068D02 -_02068C8C: - b _02068DD4 -_02068C8E: - add r6, r1, #0x0 - add r6, #SPECIES_EGG-SPECIES_CHERRIM - cmp r0, r6 - bgt _02068CA0 - add r1, #SPECIES_EGG-SPECIES_CHERRIM - cmp r0, r1 - bne _02068C9E - b _02068DAC -_02068C9E: - b _02068DD4 -_02068CA0: - add r1, #SPECIES_MANAPHY_EGG-SPECIES_CHERRIM - cmp r0, r1 - bne _02068CA8 - b _02068DC4 -_02068CA8: - b _02068DD4 -_02068CAA: - cmp r2, #0x2 - bls _02068CB0 - mov r2, #0x0 -_02068CB0: - mov r0, #0x75 - strh r0, [r4, #0x0] - lsr r0, r5, #0x1 - lsl r1, r2, #0x1 - add r0, #0x48 - add r0, r0, r1 - add r3, #0x92 - strh r0, [r4, #0x2] - add r0, r3, r1 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068CC8: - cmp r2, #0x2 - bls _02068CCE - mov r2, #0x0 -_02068CCE: - mov r0, #0x75 - strh r0, [r4, #0x0] - lsr r0, r5, #0x1 - lsl r1, r2, #0x1 - add r0, #0x4e - add r0, r0, r1 - add r3, #0x98 - strh r0, [r4, #0x2] - add r0, r3, r1 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068CE6: - cmp r2, #0x1 - bls _02068CEC - mov r2, #0x0 -_02068CEC: - mov r0, #0x75 - add r5, #0x54 - strh r0, [r4, #0x0] - add r0, r5, r2 - strh r0, [r4, #0x2] - add r3, #0x9e - lsl r0, r2, #0x1 - add r0, r3, r0 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068D02: - cmp r2, #0x1 - bls _02068D08 - mov r2, #0x0 -_02068D08: - mov r0, #0x75 - add r5, #0x58 - strh r0, [r4, #0x0] - add r0, r5, r2 - strh r0, [r4, #0x2] - add r3, #0xa2 - lsl r0, r2, #0x1 - add r0, r3, r0 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068D1E: - cmp r2, #0x1 - bls _02068D24 - mov r2, #0x0 -_02068D24: - mov r0, #0x75 - add r5, #0x5c - strh r0, [r4, #0x0] - add r0, r5, r2 - strh r0, [r4, #0x2] - lsl r0, r3, #0x1 - add r0, #0xa6 - add r0, r2, r0 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068D3A: - cmp r2, #0x11 - bls _02068D40 - mov r2, #0x0 -_02068D40: - mov r0, #0x75 - strh r0, [r4, #0x0] - lsr r0, r5, #0x1 - lsl r1, r2, #0x1 - add r0, #0x60 - add r0, r0, r1 - add r3, #0xaa - strh r0, [r4, #0x2] - add r0, r3, r1 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068D58: - cmp r2, #0x3 - bls _02068D5E - mov r2, #0x0 -_02068D5E: - mov r0, #0x75 - strh r0, [r4, #0x0] - lsl r0, r5, #0x1 - add r0, #0x40 - add r0, r2, r0 - strh r0, [r4, #0x2] - lsl r0, r3, #0x2 - add r0, #0x8a - add r0, r2, r0 - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068D76: - cmp r2, #0x3 - bls _02068D7C - mov r2, #0x0 -_02068D7C: - mov r0, #0x75 - strh r0, [r4, #0x0] - lsr r1, r5, #0x1 - lsl r0, r2, #0x1 - add r0, r1, r0 - strh r0, [r4, #0x2] - add r3, #0x86 - strh r3, [r4, #0x4] - pop {r4-r7} - bx lr -_02068D90: - cmp r2, #0x1c - blo _02068D96 - mov r2, #0x0 -_02068D96: - mov r0, #0x75 - lsr r1, r5, #0x1 - strh r0, [r4, #0x0] - add r1, #0x8 - lsl r0, r2, #0x1 - add r0, r1, r0 - strh r0, [r4, #0x2] - add r3, #0x88 - strh r3, [r4, #0x4] - pop {r4-r7} - bx lr -_02068DAC: - cmp r2, #0x1 - bls _02068DB2 - mov r2, #0x0 -_02068DB2: - mov r0, #0x75 - strh r0, [r4, #0x0] - add r0, r2, #0x0 - add r0, #0x84 - strh r0, [r4, #0x2] - add r2, #0xce - strh r2, [r4, #0x4] - pop {r4-r7} - bx lr -_02068DC4: - mov r0, #0x75 - strh r0, [r4, #0x0] - mov r0, #0x84 - strh r0, [r4, #0x2] - mov r0, #0xce - strh r0, [r4, #0x4] - pop {r4-r7} - bx lr -_02068DD4: - mov r1, #0x4 - strh r1, [r4, #0x0] - cmp r7, #0x1 - beq _02068DE0 - mov r2, #0x1 - b _02068DE2 -_02068DE0: - mov r2, #0x0 -_02068DE2: - mov r1, #0x6 - mul r1, r0 - add r6, r5, r1 - add r2, r6, r2 - add r1, r1, #0x4 - strh r2, [r4, #0x2] - add r1, r3, r1 - strh r1, [r4, #0x4] - ldr r1, _02068E10 ; =SPECIES_SPINDA - cmp r0, r1 - bne _02068E06 - cmp r5, #0x2 - bne _02068E06 - strh r1, [r4, #0x6] - mov r0, #0x0 - strb r0, [r4, #0x8] - ldr r0, [sp, #0x18] - str r0, [r4, #0xc] -_02068E06: - pop {r4-r7} - bx lr - nop -_02068E0C: .word SPECIES_CHERRIM -_02068E10: .word SPECIES_SPINDA - thumb_func_start FUN_02068E14 FUN_02068E14: ; 0x02068E14 ldr r3, _02068E18 ; =FUN_02068E1C diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index c253c709..5ecfb39b 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -2144,3 +2144,125 @@ u32 GenerateShinyPersonality(u32 otid) } return (u32)((r5 << 16) | r6); } + +void FUN_02068B68(struct SomeDrawPokemonStruct * spC, struct Pokemon * pokemon, u8 sp10) +{ + FUN_02068B70(spC, &pokemon->box, sp10); +} + +void FUN_02068B70(struct SomeDrawPokemonStruct * spC, struct BoxPokemon * boxmon, u8 sp10) +{ + BOOL decry = AcquireBoxMonLock(boxmon); + u16 species = GetBoxMonData(boxmon, MON_DATA_SPECIES2, NULL); + u8 gender = GetBoxMonGender(boxmon); + u8 shiny = BoxMonIsShiny(boxmon); + u32 personality = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL); + u8 forme; + if (species == SPECIES_EGG) + { + if (GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL) == SPECIES_MANAPHY) + forme = 1; + else + forme = 0; + } + else + forme = GetBoxMonData(boxmon, MON_DATA_FORME, NULL); + FUN_02068C00(spC, species, gender, sp10, shiny, forme, personality); + ReleaseBoxMonLock(boxmon, decry); +} + +void FUN_02068C00(struct SomeDrawPokemonStruct * spC, int species, u8 gender, u8 sp10, u8 shiny, u8 forme, u32 personality) +{ + spC->unk6 = 0; + spC->unk8 = 0; + spC->unkC = 0; + switch (species) + { + case SPECIES_BURMY: + if (forme > 2) + forme = 0; + spC->unk0 = 0x75; + spC->unk2 = sp10 / 2 + 0x48 + forme * 2; + spC->unk4 = shiny + 0x92 + forme * 2; + break; + case SPECIES_WORMADAM: + if (forme > 2) + forme = 0; + spC->unk0 = 0x75; + spC->unk2 = sp10 / 2 + 0x4E + forme * 2; + spC->unk4 = shiny + 0x98 + forme * 2; + break; + case SPECIES_SHELLOS: + if (forme > 1) + forme = 0; + spC->unk0 = 0x75; + spC->unk2 = sp10 + 0x54 + forme; + spC->unk4 = shiny + 0x9E + forme * 2; + break; + case SPECIES_GASTRODON: + if (forme > 1) + forme = 0; + spC->unk0 = 0x75; + spC->unk2 = sp10 + 0x58 + forme; + spC->unk4 = shiny + 0xA2 + forme * 2; + break; + case SPECIES_CHERRIM: + if (forme > 1) + forme = 0; + spC->unk0 = 0x75; + spC->unk2 = sp10 + 0x5C + forme; + spC->unk4 = shiny * 2 + 0xA6 + forme; + break; + case SPECIES_ARCEUS: + if (forme > 17) + forme = 0; + spC->unk0 = 0x75; + spC->unk2 = sp10 / 2 + 0x60 + forme * 2; + spC->unk4 = shiny + 0xAA + forme * 2; + break; + case SPECIES_CASTFORM: + if (forme > 3) + forme = 0; + spC->unk0 = 0x75; + spC->unk2 = sp10 * 2 + 0x40 + forme; + spC->unk4 = shiny * 4 + 0x8A + forme; + break; + case SPECIES_DEOXYS: + if (forme > 3) + forme = 0; + spC->unk0 = 0x75; + spC->unk2 = sp10 / 2 + forme * 2; + spC->unk4 = shiny + 0x86; + break; + case SPECIES_UNOWN: + if (forme >= 28) + forme = 0; + spC->unk0 = 0x75; + spC->unk2 = sp10 / 2 + 0x8 + forme * 2; + spC->unk4 = shiny + 0x88; + break; + case SPECIES_EGG: + if (forme > 1) + forme = 0; + spC->unk0 = 0x75; + spC->unk2 = 0x84 + forme; + spC->unk4 = 0xCE + forme; + break; + case SPECIES_MANAPHY_EGG: + spC->unk0 = 0x75; + spC->unk2 = 0x84; + spC->unk4 = 0xCE; + break; + default: + spC->unk0 = 0x4; + spC->unk2 = species * 6 + sp10 + (gender == MON_FEMALE ? 0 : 1); + spC->unk4 = shiny + (species * 6 + 4); + if (species == SPECIES_SPINDA && sp10 == 2) + { + spC->unk6 = SPECIES_SPINDA; + spC->unk8 = 0; + spC->unkC = personality; + } + break; + } +} diff --git a/include/pokemon.h b/include/pokemon.h index 6d2c8cf7..7c358370 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -467,6 +467,17 @@ struct Pokemon { /* 0x088 */ struct PartyPokemon party; }; // size: 0xEC +struct SomeDrawPokemonStruct +{ + u16 unk0; + u16 unk2; + u16 unk4; + u16 unk6; + u8 unk8; + u8 filler_9[3]; + u32 unkC; +}; + void ZeroMonData(struct Pokemon * pokemon); void ZeroBoxMonData(struct BoxPokemon * boxmon); u32 SizeOfStructPokemon(void); @@ -517,5 +528,7 @@ u8 GetBoxMonGender(struct BoxPokemon * boxmon); u8 GetGenderBySpeciesAndPersonality(u16 species, u32 pid); u8 MonIsShiny(struct Pokemon * pokemon); u32 GenerateShinyPersonality(u32 otid); +void FUN_02068B70(struct SomeDrawPokemonStruct * spC, struct BoxPokemon * boxmon, u8 sp10); +void FUN_02068C00(struct SomeDrawPokemonStruct * spC, int species, u8 gender, u8 sp10, u8 shiny, u8 forme, u32 personality); #endif //POKEDIAMOND_POKEMON_H -- cgit v1.2.3 From b98a4f3b8a0a8665ace6cc8c1065992bb848b8ec Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jun 2020 19:35:11 -0400 Subject: through FUN_02068E88 --- arm9/asm/pokemon_s.s | 263 --------------------------------------------------- arm9/src/pokemon.c | 103 ++++++++++++++++++++ include/pokemon.h | 3 + 3 files changed, 106 insertions(+), 263 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 320c6252..e53b2d48 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -23,269 +23,6 @@ __local_str_poketool_personal_pms_narc: ; 0x02105FC8 .extern BoxMonIsShiny - thumb_func_start FUN_02068E14 -FUN_02068E14: ; 0x02068E14 - ldr r3, _02068E18 ; =FUN_02068E1C - bx r3 - .balign 4 -_02068E18: .word FUN_02068E1C - - thumb_func_start FUN_02068E1C -FUN_02068E1C: ; 0x02068E1C - push {r3-r7, lr} - sub sp, #0x8 - add r7, r1, #0x0 - mov r1, #0xad - mov r2, #0x0 - add r5, r0, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r5, #0x0 - bl GetBoxMonGender - mov r1, #0x0 - str r0, [sp, #0x4] - add r0, r5, #0x0 - add r2, r1, #0x0 - bl GetBoxMonData - add r6, r0, #0x0 - ldr r0, _02068E80 ; =SPECIES_EGG - cmp r4, r0 - bne _02068E62 - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonData - ldr r1, _02068E84 ; =SPECIES_MANAPHY - cmp r0, r1 - bne _02068E5E - mov r3, #0x1 - b _02068E70 -_02068E5E: - mov r3, #0x0 - b _02068E70 -_02068E62: - add r0, r5, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x18 - lsr r3, r0, #0x18 -_02068E70: - str r6, [sp, #0x0] - ldr r1, [sp, #0x4] - add r0, r4, #0x0 - add r2, r7, #0x0 - bl FUN_02068E88 - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_02068E80: .word SPECIES_EGG -_02068E84: .word 0x000001EA - - thumb_func_start FUN_02068E88 -FUN_02068E88: ; 0x02068E88 - push {r3-r5, lr} - ldr r4, _02068FDC ; =SPECIES_CHERRIM - cmp r0, r4 - bgt _02068ED6 - bge _02068F54 - add r5, r4, #0x0 - sub r5, #0x46 - cmp r0, r5 - bgt _02068EA6 - sub r4, #0x46 - cmp r0, r4 - bge _02068F74 - cmp r0, #0xc9 - beq _02068F94 - b _02068FB8 -_02068EA6: - add r5, r4, #0x0 - sub r5, #0x23 - cmp r0, r5 - bgt _02068EB6 - sub r4, #0x23 - cmp r0, r4 - beq _02068F84 - b _02068FB8 -_02068EB6: - add r5, r4, #0x0 - sub r5, #0x8 - cmp r0, r5 - bgt _02068FB8 - add r5, r4, #0x0 - sub r5, #0x9 - cmp r0, r5 - blt _02068FB8 - add r5, r4, #0x0 - sub r5, #0x9 - cmp r0, r5 - beq _02068F14 - sub r4, #0x8 - cmp r0, r4 - beq _02068F26 - b _02068FB8 -_02068ED6: - add r5, r4, #0x0 - add r5, #0x48 - cmp r0, r5 - bgt _02068EFC - add r5, r4, #0x0 - add r5, #0x48 - cmp r0, r5 - bge _02068F62 - add r5, r4, #0x2 - cmp r0, r5 - bgt _02068FB8 - add r5, r4, #0x1 - cmp r0, r5 - blt _02068FB8 - beq _02068F38 - add r4, r4, #0x2 - cmp r0, r4 - beq _02068F46 - b _02068FB8 -_02068EFC: - add r5, r4, #0x0 - add r5, #0x49 - cmp r0, r5 - bgt _02068F0C - add r4, #0x49 - cmp r0, r4 - beq _02068FA6 - b _02068FB8 -_02068F0C: - add r4, #0x4a - cmp r0, r4 - beq _02068FB2 - b _02068FB8 -_02068F14: - cmp r3, #0x2 - bls _02068F1A - mov r3, #0x0 -_02068F1A: - lsr r1, r2, #0x1 - add r1, #0x48 - lsl r0, r3, #0x1 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r1, r0 - b _02068FCA -_02068F26: - cmp r3, #0x2 - bls _02068F2C - mov r3, #0x0 -_02068F2C: - lsr r1, r2, #0x1 - add r1, #0x4e - lsl r0, r3, #0x1 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r1, r0 - b _02068FCA -_02068F38: - cmp r3, #0x1 - bls _02068F3E - mov r3, #0x0 -_02068F3E: - add r2, #0x54 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r2, r3 - b _02068FCA -_02068F46: - cmp r3, #0x1 - bls _02068F4C - mov r3, #0x0 -_02068F4C: - add r2, #0x58 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r2, r3 - b _02068FCA -_02068F54: - cmp r3, #0x1 - bls _02068F5A - mov r3, #0x0 -_02068F5A: - add r2, #0x5c - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r2, r3 - b _02068FCA -_02068F62: - cmp r3, #0x11 - bls _02068F68 - mov r3, #0x0 -_02068F68: - lsr r1, r2, #0x1 - add r1, #0x60 - lsl r0, r3, #0x1 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r1, r0 - b _02068FCA -_02068F74: - cmp r3, #0x3 - bls _02068F7A - mov r3, #0x0 -_02068F7A: - lsl r0, r2, #0x1 - add r0, #0x40 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r3, r0 - b _02068FCA -_02068F84: - cmp r3, #0x3 - bls _02068F8A - mov r3, #0x0 -_02068F8A: - lsr r1, r2, #0x1 - lsl r0, r3, #0x1 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r1, r0 - b _02068FCA -_02068F94: - cmp r3, #0x1c - blo _02068F9A - mov r3, #0x0 -_02068F9A: - lsr r1, r2, #0x1 - add r1, #0x8 - lsl r0, r3, #0x1 - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, r1, r0 - b _02068FCA -_02068FA6: - cmp r3, #0x1 - bls _02068FAC - mov r3, #0x0 -_02068FAC: - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - add r3, #0x84 - b _02068FCA -_02068FB2: - mov r4, #0x79 ; NARC_POKETOOL_POKEGRA_HEIGHT_O - mov r3, #0x84 - b _02068FCA -_02068FB8: - mov r4, #0x5 ; NARC_POKETOOL_POKEGRA_HEIGHT - cmp r1, #0x1 - beq _02068FC2 - mov r1, #0x1 - b _02068FC4 -_02068FC2: - mov r1, #0x0 -_02068FC4: - lsl r0, r0, #0x2 - add r0, r2, r0 - add r3, r0, r1 -_02068FCA: - add r0, sp, #0x0 - add r1, r4, #0x0 - add r2, r3, #0x0 - bl ReadWholeNarcMemberByIdPair - add r0, sp, #0x0 - ldrb r0, [r0, #0x0] - pop {r3-r5, pc} - nop -_02068FDC: .word SPECIES_CHERRIM - thumb_func_start FUN_02068FE0 FUN_02068FE0: ; 0x02068FE0 push {r4, lr} diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 5ecfb39b..882a138a 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -2266,3 +2266,106 @@ void FUN_02068C00(struct SomeDrawPokemonStruct * spC, int species, u8 gender, u8 break; } } + +u8 FUN_02068E14(struct Pokemon * pokemon, u32 a1) +{ + return FUN_02068E1C(&pokemon->box, a1); +} + +u8 FUN_02068E1C(struct BoxPokemon * boxmon, u32 a1) +{ + u16 species = GetBoxMonData(boxmon, MON_DATA_SPECIES2, NULL); + u8 gender = GetBoxMonGender(boxmon); + u32 pid = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL); + u8 forme; + if (species == SPECIES_EGG) + { + if (GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL) == SPECIES_MANAPHY) + forme = 1; + else + forme = 0; + } + else + forme = GetBoxMonData(boxmon, MON_DATA_FORME, NULL); + return FUN_02068E88(species, gender, a1, forme, pid); +} + +u8 FUN_02068E88(int species, u8 gender, u32 a1, u8 forme, u32 pid) +{ + u8 ret; + s32 fileId; + enum NarcId narc; + switch (species) + { + case SPECIES_BURMY: + if (forme > 2) + forme = 0; + narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; + fileId = a1 / 2 + 0x48 + forme * 2; + break; + case SPECIES_WORMADAM: + if (forme > 2) + forme = 0; + narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; + fileId = a1 / 2 + 0x4E + forme * 2; + break; + case SPECIES_SHELLOS: + if (forme > 1) + forme = 0; + narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; + fileId = a1 + 0x54 + forme; + break; + case SPECIES_GASTRODON: + if (forme > 1) + forme = 0; + narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; + fileId = a1 + 0x58 + forme; + break; + case SPECIES_CHERRIM: + if (forme > 1) + forme = 0; + narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; + fileId = a1 + 0x5C + forme; + break; + case SPECIES_ARCEUS: + if (forme > 17) + forme = 0; + narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; + fileId = a1 / 2 + 0x60 + 2 * forme; + break; + case SPECIES_CASTFORM: + if (forme > 3) + forme = 0; + narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; + fileId = a1 * 2 + 0x40 + forme; + break; + case SPECIES_DEOXYS: + if (forme > 3) + forme = 0; + narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; + fileId = a1 / 2 + forme * 2; + break; + case SPECIES_UNOWN: + if (forme >= 28) + forme = 0; + narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; + fileId = a1 / 2 + 0x8 + forme * 2; + break; + case SPECIES_EGG: + if (forme > 1) + forme = 0; + narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; + fileId = 0x84 + forme; + break; + case SPECIES_MANAPHY_EGG: + narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; + fileId = 0x84; + break; + default: + narc = NARC_POKETOOL_POKEGRA_HEIGHT; + fileId = 4 * species + a1 + (gender != MON_FEMALE ? 1 : 0); + break; + } + ReadWholeNarcMemberByIdPair(&ret, narc, fileId); + return ret; +} diff --git a/include/pokemon.h b/include/pokemon.h index 7c358370..d4df2bce 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -530,5 +530,8 @@ u8 MonIsShiny(struct Pokemon * pokemon); u32 GenerateShinyPersonality(u32 otid); void FUN_02068B70(struct SomeDrawPokemonStruct * spC, struct BoxPokemon * boxmon, u8 sp10); void FUN_02068C00(struct SomeDrawPokemonStruct * spC, int species, u8 gender, u8 sp10, u8 shiny, u8 forme, u32 personality); +u8 FUN_02068E14(struct Pokemon * pokemon, u32 a1); +u8 FUN_02068E1C(struct BoxPokemon * boxmon, u32 a1); +u8 FUN_02068E88(int species, u8 gender, u32 a2, u8 forme, u32 pid); #endif //POKEDIAMOND_POKEMON_H -- cgit v1.2.3 From d716e7b851b9949689985eedb24dfa2bc8619496 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jun 2020 19:49:55 -0400 Subject: through FUN_02069010 --- arm9/asm/pokemon_s.s | 49 ------------------------------------------------- arm9/src/pokemon.c | 23 +++++++++++++++++++++++ include/pokemon.h | 1 + 3 files changed, 24 insertions(+), 49 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index e53b2d48..7cd8fca4 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -23,55 +23,6 @@ __local_str_poketool_personal_pms_narc: ; 0x02105FC8 .extern BoxMonIsShiny - thumb_func_start FUN_02068FE0 -FUN_02068FE0: ; 0x02068FE0 - push {r4, lr} - add r4, r0, #0x0 - cmp r2, #0x2 - bne _02068FEE - mov r0, #0x3c - strh r0, [r4, #0x0] - b _02068FFC -_02068FEE: - mov r0, #0x6 - strh r0, [r4, #0x0] - add r0, r1, #0x0 - bl FUN_0206AA30 - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 -_02068FFC: - lsl r0, r1, #0x1 - strh r0, [r4, #0x2] - add r0, r0, #0x1 - strh r0, [r4, #0x4] - mov r0, #0x0 - strh r0, [r4, #0x6] - strb r0, [r4, #0x8] - str r0, [r4, #0xc] - pop {r4, pc} - .balign 4 - - thumb_func_start FUN_02069010 -FUN_02069010: ; 0x02069010 - push {r3-r5, lr} - sub sp, #0x20 - add r5, r1, #0x0 - mov r3, #0x1c - add r4, r0, #0x0 - str r3, [sp, #0x0] - add r0, sp, #0x4 - mov r1, #0x72 ; NARC_POKETOOL_POKEANM_POKEANM - mov r2, #0x0 - mul r3, r5 - bl ReadFromNarcMemberByIdPair - add r0, sp, #0xc - add r1, r4, #0x0 - mov r2, #0x14 - bl MI_CpuCopy8 - add sp, #0x20 - pop {r3-r5, pc} - .balign 4 - thumb_func_start FUN_02069038 FUN_02069038: ; 0x02069038 push {r3-r7, lr} diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 882a138a..f6875b10 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -2369,3 +2369,26 @@ u8 FUN_02068E88(int species, u8 gender, u32 a1, u8 forme, u32 pid) ReadWholeNarcMemberByIdPair(&ret, narc, fileId); return ret; } + +void FUN_02068FE0(struct SomeDrawPokemonStruct * a0, u16 a1, int a2) +{ + if (a2 == 2) + a0->unk0 = 60; + else + { + a0->unk0 = 6; + a1 = FUN_0206AA30(a1); + } + a0->unk2 = a1 * 2; + a0->unk4 = a1 * 2 + 1; + a0->unk6 = 0; + a0->unk8 = 0; + a0->unkC = 0; +} + +void FUN_02069010(void * dest, int a1) +{ + u8 buffer[28]; + ReadFromNarcMemberByIdPair(buffer, NARC_POKETOOL_POKEANM_POKEANM, 0, 28 * a1, 28); + MI_CpuCopy8(buffer + 8, dest, 20); +} diff --git a/include/pokemon.h b/include/pokemon.h index d4df2bce..5ba57915 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -533,5 +533,6 @@ void FUN_02068C00(struct SomeDrawPokemonStruct * spC, int species, u8 gender, u8 u8 FUN_02068E14(struct Pokemon * pokemon, u32 a1); u8 FUN_02068E1C(struct BoxPokemon * boxmon, u32 a1); u8 FUN_02068E88(int species, u8 gender, u32 a2, u8 forme, u32 pid); +int FUN_0206AA30(int a0); #endif //POKEDIAMOND_POKEMON_H -- cgit v1.2.3 From c5eb6d2669cdb27cc9f5ad35fae73577edf8aac6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 13 Jun 2020 21:04:04 -0400 Subject: through FUN_020690E8 --- arm9/asm/pokemon_s.s | 173 +--------------------------------------- arm9/asm/unk_020377F0.s | 2 +- arm9/asm/unk_0206F3FC.s | 2 +- arm9/asm/unk_02072548.s | 2 +- arm9/asm/unk_0207550C.s | 2 +- arm9/asm/unk_020842DC.s | 2 +- arm9/global.inc | 2 +- arm9/modules/11/asm/module_11.s | 2 +- arm9/modules/80/asm/module_80.s | 4 +- arm9/src/pokemon.c | 86 +++++++++++++++++++- include/pokemon.h | 21 +++++ include/proto.h | 3 + 12 files changed, 118 insertions(+), 183 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 7cd8fca4..706b19f4 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -23,177 +23,8 @@ __local_str_poketool_personal_pms_narc: ; 0x02105FC8 .extern BoxMonIsShiny - thumb_func_start FUN_02069038 -FUN_02069038: ; 0x02069038 - push {r3-r7, lr} - sub sp, #0x28 - add r4, r0, #0x0 - add r6, r2, #0x0 - add r5, r3, #0x0 - mov r3, #0x1c - add r0, sp, #0x8 - add r7, r1, #0x0 - str r3, [sp, #0x0] - add r0, #0x2 - mov r1, #0x72 ; NARC_POKETOOL_POKEANM_POKEANM - mov r2, #0x0 - mul r3, r6 - bl ReadFromNarcMemberByIdPair - cmp r5, #0x2 - bne _0206906C - add r1, sp, #0x4 - mov r0, #0x6 - ldrsb r0, [r1, r0] - strh r0, [r1, #0x0] - ldrb r0, [r1, #0x7] - strh r0, [r1, #0x2] - ldr r0, [sp, #0x44] - strb r0, [r1, #0x4] - b _02069096 -_0206906C: - ldr r0, [sp, #0x40] - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - bl FUN_02014C3C - add r5, r0, #0x0 - cmp r5, #0x3 - blt _02069080 - bl ErrorHandling -_02069080: - lsl r2, r5, #0x1 - add r0, sp, #0xc - ldrsb r1, [r0, r2] - add r0, sp, #0x4 - strh r1, [r0, #0x0] - add r1, sp, #0xc - add r1, #0x1 - ldrb r1, [r1, r2] - strh r1, [r0, #0x2] - ldr r1, [sp, #0x44] - strb r1, [r0, #0x4] -_02069096: - ldr r3, [sp, #0x48] - add r0, r4, #0x0 - lsl r3, r3, #0x18 - add r1, r7, #0x0 - add r2, sp, #0x4 - lsr r3, r3, #0x18 - bl FUN_02014C54 - add sp, #0x28 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020690AC -FUN_020690AC: ; 0x020690AC - mov r2, #0x3c - strh r2, [r0, #0x0] - lsl r1, r1, #0x1 - strh r1, [r0, #0x2] - add r1, r1, #0x1 - strh r1, [r0, #0x4] - mov r1, #0x0 - strh r1, [r0, #0x6] - strb r1, [r0, #0x8] - str r1, [r0, #0xc] - bx lr - .balign 4 - - thumb_func_start FUN_020690C4 -FUN_020690C4: ; 0x020690C4 - mov r0, #0xec - bx lr - - thumb_func_start FUN_020690C8 -FUN_020690C8: ; 0x020690C8 - mov r0, #0x88 - bx lr - - thumb_func_start FUN_020690CC -FUN_020690CC: ; 0x020690CC - ldr r3, _020690D0 ; =FUN_020690D4 - bx r3 - .balign 4 -_020690D0: .word FUN_020690D4 - - thumb_func_start FUN_020690D4 -FUN_020690D4: ; 0x020690D4 - push {r3, lr} - mov r1, #0x70 - mov r2, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - pop {r3, pc} - - thumb_func_start FUN_020690E4 -FUN_020690E4: ; 0x020690E4 - bx lr - .balign 4 - - thumb_func_start FUN_020690E8 -FUN_020690E8: ; 0x020690E8 - push {r3-r5, lr} - sub sp, #0x8 - mov r1, #0x5 - mov r2, #0x0 - add r4, r0, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - add r0, r4, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonData - add r1, r0, #0x1 - add r0, sp, #0x0 - strb r1, [r0, #0x0] - add r0, r4, #0x0 - mov r1, #0x8 - mov r2, #0x0 - bl GetMonData - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x15 - bl GetMonBaseStat - mov r1, #0x64 - add r5, r0, #0x0 - bl GetExpByGrowthRateAndLevel - ldr r1, [sp, #0x4] - cmp r1, r0 - bls _02069138 - str r0, [sp, #0x4] - add r0, r4, #0x0 - mov r1, #0x8 - add r2, sp, #0x4 - bl SetMonData -_02069138: - add r0, sp, #0x0 - ldrb r1, [r0, #0x0] - cmp r1, #0x64 - bls _02069146 - add sp, #0x8 - mov r0, #0x0 - pop {r3-r5, pc} -_02069146: - add r0, r5, #0x0 - bl GetExpByGrowthRateAndLevel - ldr r1, [sp, #0x4] - cmp r1, r0 - blo _02069162 - add r0, r4, #0x0 - mov r1, #0xa0 - add r2, sp, #0x0 - bl SetMonData - add sp, #0x8 - mov r0, #0x1 - pop {r3-r5, pc} -_02069162: - mov r0, #0x0 - add sp, #0x8 - pop {r3-r5, pc} - - thumb_func_start FUN_02069168 -FUN_02069168: ; 0x02069168 + thumb_func_start GetMonEvolution +GetMonEvolution: ; 0x02069168 push {r4-r7, lr} sub sp, #0x44 add r7, r1, #0x0 diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s index 0c8fe8c6..3959856b 100644 --- a/arm9/asm/unk_020377F0.s +++ b/arm9/asm/unk_020377F0.s @@ -1594,7 +1594,7 @@ _020382F6: mov r0, #0x0 mov r2, #0x1 lsr r3, r3, #0x10 - bl FUN_02069168 + bl GetMonEvolution str r0, [sp, #0x20] cmp r0, #0x0 beq _02038380 diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index 984a657d..05ed529d 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -5436,7 +5436,7 @@ _02071E5A: str r0, [sp, #0x0] ldrh r3, [r3, #0x24] mov r0, #0x0 - bl FUN_02069168 + bl GetMonEvolution ldr r1, _02071F1C ; =0x000005A4 ldr r2, [r5, r1] strh r0, [r2, #0x38] diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s index 8b491bc6..ca80e1db 100644 --- a/arm9/asm/unk_02072548.s +++ b/arm9/asm/unk_02072548.s @@ -1219,7 +1219,7 @@ _02072E98: ldr r3, [r5, r3] mov r2, #0x3 ldrh r3, [r3, #0x24] - bl FUN_02069168 + bl GetMonEvolution cmp r0, #0x0 bne _02072ED0 add r0, r5, #0x0 diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s index ca869d5a..dfbddd58 100644 --- a/arm9/asm/unk_0207550C.s +++ b/arm9/asm/unk_0207550C.s @@ -2260,7 +2260,7 @@ _02076814: ldr r0, [r1, #0x0] add r1, r5, #0x0 lsr r3, r3, #0x10 - bl FUN_02069168 + bl GetMonEvolution ldr r1, _02076878 ; =0x000005A4 ldr r2, [r4, r1] strh r0, [r2, #0x38] diff --git a/arm9/asm/unk_020842DC.s b/arm9/asm/unk_020842DC.s index fa59f95c..a1b65c4a 100644 --- a/arm9/asm/unk_020842DC.s +++ b/arm9/asm/unk_020842DC.s @@ -175,7 +175,7 @@ _0208443A: ldr r3, [sp, #0x4] add r1, r6, #0x0 mov r2, #0x3 - bl FUN_02069168 + bl GetMonEvolution cmp r0, #0x0 beq _02084464 add r0, r4, #0x0 diff --git a/arm9/global.inc b/arm9/global.inc index c033aa3e..0dc52bc5 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4764,7 +4764,7 @@ .extern FUN_020690D4 .extern FUN_020690E4 .extern FUN_020690E8 -.extern FUN_02069168 +.extern GetMonEvolution .extern ReadFromPersonalPmsNarc .extern GetEggSpecies .extern FUN_02069698 diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index f8a593a1..2a3e4f64 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -6911,7 +6911,7 @@ _02230D9C: ldr r0, [r5, #4] mov r2, #0 lsr r3, r3, #0x10 - bl FUN_02069168 + bl GetMonEvolution str r0, [sp, #4] cmp r0, #0 bne _02230DD0 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index 8b553253..52e2cc5f 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -17443,7 +17443,7 @@ _02235FDE: add r1, r7, #0 mov r2, #1 lsr r3, r3, #0x10 - bl FUN_02069168 + bl GetMonEvolution str r0, [sp, #0x24] cmp r0, #0 beq _02236052 @@ -17534,7 +17534,7 @@ _022360B6: add r1, r7, #0 mov r2, #1 lsr r3, r3, #0x10 - bl FUN_02069168 + bl GetMonEvolution str r0, [sp, #0x28] cmp r0, #0 beq _02236118 diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index f6875b10..0a2e160c 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -2388,7 +2388,87 @@ void FUN_02068FE0(struct SomeDrawPokemonStruct * a0, u16 a1, int a2) void FUN_02069010(void * dest, int a1) { - u8 buffer[28]; - ReadFromNarcMemberByIdPair(buffer, NARC_POKETOOL_POKEANM_POKEANM, 0, 28 * a1, 28); - MI_CpuCopy8(buffer + 8, dest, 20); + struct Pokeanm buffer; + ReadFromNarcMemberByIdPair(&buffer, NARC_POKETOOL_POKEANM_POKEANM, 0, 28 * a1, 28); + MI_CpuCopy8(buffer.unk8, dest, 20); +} + +void FUN_02069038(u32 a0, u32 a1, u32 a2, s32 a3, u32 a4, u32 a5, u32 a6) +{ + struct UnkStruct_02069038 sp4; + ReadFromNarcMemberByIdPair(&sp4.anim, NARC_POKETOOL_POKEANM_POKEANM, 0, a2 * 28, 28); + if (a3 == 2) + { + sp4.unk0 = sp4.anim.unk0[0].unk0; + sp4.unk2 = sp4.anim.unk0[0].unk1; + sp4.unk4 = a5; + } + else + { + a3 = FUN_02014C3C(a4); + GF_ASSERT(a3 < 3); + sp4.unk0 = sp4.anim.unk0[a3 + 1].unk0; + sp4.unk2 = sp4.anim.unk0[a3 + 1].unk1; + sp4.unk4 = a5; + } + FUN_02014C54(a0, a1, &sp4, a6); +} + +void FUN_020690AC(struct SomeDrawPokemonStruct * a0, u32 a1) +{ + a0->unk0 = 60; + a0->unk2 = a1 * 2; + a0->unk4 = a1 * 2 + 1; + a0->unk6 = 0; + a0->unk8 = 0; + a0->unkC = 0; +} + +u32 FUN_020690C4(void) +{ + return sizeof(struct Pokemon); +} + +u32 FUN_020690C8(void) +{ + return sizeof(struct BoxPokemon); +} + +u8 FUN_020690D4(struct BoxPokemon * boxmon); + +u8 FUN_020690CC(struct Pokemon * pokemon) +{ + return FUN_020690D4(&pokemon->box); +} + +u8 FUN_020690D4(struct BoxPokemon * boxmon) +{ + return GetBoxMonData(boxmon, MON_DATA_FORME, NULL); +} + +void FUN_020690E4(void) +{ + +} + +BOOL FUN_020690E8(struct Pokemon * pokemon) +{ + u16 species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); + u8 level = GetMonData(pokemon, MON_DATA_LEVEL, NULL) + 1; + u32 exp = GetMonData(pokemon, MON_DATA_EXPERIENCE, NULL); + u32 growthrate = GetMonBaseStat(species, BASE_GROWTH_RATE); + u32 maxexp = GetExpByGrowthRateAndLevel(growthrate, 100); + if (exp > maxexp) + { + exp = maxexp; + SetMonData(pokemon, MON_DATA_EXPERIENCE, &exp); + } + if (level > 100) + return FALSE; + if (exp >= GetExpByGrowthRateAndLevel(growthrate, level)) + { + SetMonData(pokemon, MON_DATA_LEVEL, &level); + return TRUE; + } + return FALSE; } diff --git a/include/pokemon.h b/include/pokemon.h index 5ba57915..66ad03f2 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -478,6 +478,27 @@ struct SomeDrawPokemonStruct u32 unkC; }; +struct PokeanmSub +{ + s8 unk0; + u8 unk1; +}; + +struct Pokeanm +{ + struct PokeanmSub unk0[4]; + u8 unk8[20]; +}; + +struct UnkStruct_02069038 +{ + u16 unk0; + u16 unk2; + u8 unk4; + u8 padding; + struct Pokeanm anim; +}; + void ZeroMonData(struct Pokemon * pokemon); void ZeroBoxMonData(struct BoxPokemon * boxmon); u32 SizeOfStructPokemon(void); diff --git a/include/proto.h b/include/proto.h index c8f50d33..3a6081b4 100644 --- a/include/proto.h +++ b/include/proto.h @@ -2,6 +2,7 @@ #define POKEDIAMOND_PROTO_H // For homeless function declarations +struct UnkStruct_02069038; u16 * FUN_0200AA50(u16 species, u32 heap_id); void FUN_02021A74(u16 * dest, u16 * src); @@ -10,5 +11,7 @@ void FUN_02021E28(u16 * dest, u16 * src); void FUN_02021EF0(const u16 * src, u16 * dest, u32 count); u32 FUN_0206E7B8(u16 item, u32 a1, u32 a2); u32 GetArceusTypeByPlate(u16 plate); +int FUN_02014C3C(u8); +void FUN_02014C54(int, int, struct UnkStruct_02069038 *, u8); #endif //POKEDIAMOND_PROTO_H -- cgit v1.2.3 From d6543eb215c80769469bf352330aa9d6387f859a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Jun 2020 12:45:27 -0400 Subject: GetMonEvolution --- arm9/arm9.lcf | 2 +- arm9/arm9.lsf | 2 +- arm9/asm/party.s | 367 ++++++++++++++++++++++++++++ arm9/asm/pokemon_s.s | 528 +--------------------------------------- arm9/asm/scrcmd.s | 2 +- arm9/asm/unk_02011744.s | 4 +- arm9/asm/unk_0204AB0C.s | 4 +- arm9/asm/unk_0205EC84.s | 10 +- arm9/asm/unk_0206B8A4.s | 367 ---------------------------- arm9/global.inc | 4 +- arm9/modules/05/asm/module_05.s | 2 +- arm9/modules/14/asm/module_14.s | 2 +- arm9/modules/71/asm/module_71.s | 4 +- arm9/modules/80/asm/module_80.s | 2 +- arm9/src/pokemon.c | 248 +++++++++++++++++++ include/pokemon.h | 47 ++++ include/proto.h | 5 + 17 files changed, 688 insertions(+), 912 deletions(-) create mode 100644 arm9/asm/party.s delete mode 100644 arm9/asm/unk_0206B8A4.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index d4544ed6..ddccf15b 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -367,7 +367,7 @@ SECTIONS { unk_0206ABC4.o (.text) unk_0206B16C.o (.text) unk_0206B688.o (.text) - unk_0206B8A4.o (.text) + party.o (.text) unk_0206BB28.o (.text) unk_0206BB5C.o (.text) unk_0206BF90.o (.text) diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index dfb38bb4..261c41d5 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -246,7 +246,7 @@ Static arm9 Object unk_0206ABC4.o Object unk_0206B16C.o Object unk_0206B688.o - Object unk_0206B8A4.o + Object party.o Object unk_0206BB28.o Object unk_0206BB5C.o Object unk_0206BF90.o diff --git a/arm9/asm/party.s b/arm9/asm/party.s new file mode 100644 index 00000000..12a63f73 --- /dev/null +++ b/arm9/asm/party.s @@ -0,0 +1,367 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + thumb_func_start FUN_0206B8A4 +FUN_0206B8A4: ; 0x0206B8A4 + mov r0, #0x59 + lsl r0, r0, #0x4 + bx lr + .balign 4 + + thumb_func_start FUN_0206B8AC +FUN_0206B8AC: ; 0x0206B8AC + push {r4, lr} + mov r1, #0x59 + lsl r1, r1, #0x4 + bl AllocFromHeap + add r4, r0, #0x0 + bl FUN_0206B8C0 + add r0, r4, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0206B8C0 +FUN_0206B8C0: ; 0x0206B8C0 + ldr r3, _0206B8C8 ; =FUN_0206B8CC + mov r1, #0x6 + bx r3 + nop +_0206B8C8: .word FUN_0206B8CC + + thumb_func_start FUN_0206B8CC +FUN_0206B8CC: ; 0x0206B8CC + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + cmp r6, #0x6 + ble _0206B8DA + bl ErrorHandling +_0206B8DA: + mov r2, #0x59 + add r0, r5, #0x0 + mov r1, #0x0 + lsl r2, r2, #0x4 + bl memset + mov r4, #0x0 + str r4, [r5, #0x4] + str r6, [r5, #0x0] + add r5, #0x8 +_0206B8EE: + add r0, r5, #0x0 + bl ZeroMonData + add r4, r4, #0x1 + add r5, #0xec + cmp r4, #0x6 + blt _0206B8EE + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0206B900 +FUN_0206B900: ; 0x0206B900 + push {r4-r5} + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r1, [r3, #0x4] + ldr r0, [r3, #0x0] + cmp r1, r0 + blt _0206B914 + mov r0, #0x0 + pop {r4-r5} + bx lr +_0206B914: + mov r0, #0xec + mul r0, r1 + add r5, r3, r0 + add r5, #0x8 + mov r4, #0x1d +_0206B91E: + ldmia r2!, {r0-r1} + stmia r5!, {r0-r1} + sub r4, r4, #0x1 + bne _0206B91E + ldr r0, [r2, #0x0] + str r0, [r5, #0x0] + ldr r0, [r3, #0x4] + add r0, r0, #0x1 + str r0, [r3, #0x4] + mov r0, #0x1 + pop {r4-r5} + bx lr + .balign 4 + + thumb_func_start FUN_0206B938 +FUN_0206B938: ; 0x0206B938 + push {r3-r7, lr} + add r7, r0, #0x0 + add r4, r1, #0x0 + bpl _0206B944 + bl ErrorHandling +_0206B944: + ldr r0, [r7, #0x4] + cmp r4, r0 + blt _0206B94E + bl ErrorHandling +_0206B94E: + ldr r0, [r7, #0x0] + cmp r4, r0 + blt _0206B958 + bl ErrorHandling +_0206B958: + ldr r0, [r7, #0x4] + cmp r0, #0x0 + bgt _0206B962 + bl ErrorHandling +_0206B962: + ldr r0, [r7, #0x4] + sub r0, r0, #0x1 + cmp r4, r0 + bge _0206B992 + mov r0, #0xec + mul r0, r4 + add r6, r7, r0 +_0206B970: + add r5, r6, #0x0 + add r3, r6, #0x0 + add r5, #0xf4 + add r3, #0x8 + mov r2, #0x1d +_0206B97A: + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0206B97A + ldr r0, [r5, #0x0] + add r4, r4, #0x1 + str r0, [r3, #0x0] + ldr r0, [r7, #0x4] + add r6, #0xec + sub r0, r0, #0x1 + cmp r4, r0 + blt _0206B970 +_0206B992: + add r1, r7, #0x0 + mov r0, #0xec + add r1, #0x8 + mul r0, r4 + add r0, r1, r0 + bl ZeroMonData + ldr r0, [r7, #0x4] + sub r0, r0, #0x1 + str r0, [r7, #0x4] + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206B9AC +FUN_0206B9AC: ; 0x0206B9AC + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_0206B9B0 +FUN_0206B9B0: ; 0x0206B9B0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bpl _0206B9BC + bl ErrorHandling +_0206B9BC: + ldr r0, [r5, #0x4] + cmp r4, r0 + blt _0206B9C6 + bl ErrorHandling +_0206B9C6: + ldr r0, [r5, #0x0] + cmp r4, r0 + blt _0206B9D0 + bl ErrorHandling +_0206B9D0: + mov r0, #0xec + add r5, #0x8 + mul r0, r4 + add r0, r5, r0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0206B9DC +FUN_0206B9DC: ; 0x0206B9DC + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x0 + bge _0206B9EC + bl ErrorHandling +_0206B9EC: + ldr r0, [r5, #0x4] + cmp r4, r0 + blt _0206B9F6 + bl ErrorHandling +_0206B9F6: + ldr r0, [r5, #0x0] + cmp r4, r0 + blt _0206BA00 + bl ErrorHandling +_0206BA00: + add r1, r5, #0x0 + mov r0, #0xec + add r1, #0x8 + mul r0, r4 + add r4, r1, r0 + add r0, r4, #0x0 + mov r1, #0xab + mov r2, #0x0 + bl GetMonData + add r7, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0xab + mov r2, #0x0 + bl GetMonData + sub r2, r7, r0 + mov r3, #0x1d +_0206BA24: + ldmia r6!, {r0-r1} + stmia r4!, {r0-r1} + sub r3, r3, #0x1 + bne _0206BA24 + ldr r0, [r6, #0x0] + str r0, [r4, #0x0] + ldr r0, [r5, #0x4] + add r0, r0, r2 + str r0, [r5, #0x4] + pop {r3-r7, pc} + + thumb_func_start FUN_0206BA38 +FUN_0206BA38: ; 0x0206BA38 + push {r3-r7, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + add r6, r2, #0x0 + cmp r5, #0x0 + bge _0206BA48 + bl ErrorHandling +_0206BA48: + ldr r0, [r4, #0x4] + cmp r5, r0 + blt _0206BA52 + bl ErrorHandling +_0206BA52: + ldr r0, [r4, #0x0] + cmp r5, r0 + blt _0206BA5C + bl ErrorHandling +_0206BA5C: + cmp r6, #0x0 + bge _0206BA64 + bl ErrorHandling +_0206BA64: + ldr r0, [r4, #0x4] + cmp r6, r0 + blt _0206BA6E + bl ErrorHandling +_0206BA6E: + ldr r0, [r4, #0x0] + cmp r6, r0 + blt _0206BA78 + bl ErrorHandling +_0206BA78: + mov r0, #0x0 + mov r1, #0xec + bl AllocFromHeap + mov r12, r0 + add r1, r4, #0x0 + mov r0, #0xec + add r1, #0x8 + mul r0, r5 + add r3, r1, r0 + add r5, r3, #0x0 + mov r2, r12 + mov r7, #0x1d +_0206BA92: + ldmia r5!, {r0-r1} + stmia r2!, {r0-r1} + sub r7, r7, #0x1 + bne _0206BA92 + ldr r0, [r5, #0x0] + add r4, #0x8 + str r0, [r2, #0x0] + mov r0, #0xec + mul r0, r6 + add r2, r4, r0 + add r5, r2, #0x0 + mov r4, #0x1d +_0206BAAA: + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + sub r4, r4, #0x1 + bne _0206BAAA + ldr r0, [r5, #0x0] + mov r4, r12 + str r0, [r3, #0x0] + mov r3, #0x1d +_0206BABA: + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + sub r3, r3, #0x1 + bne _0206BABA + ldr r0, [r4, #0x0] + str r0, [r2, #0x0] + mov r0, r12 + bl FreeToHeap + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0206BAD0 +FUN_0206BAD0: ; 0x0206BAD0 + push {r3-r4} + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r2, #0xb2 +_0206BAD8: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0206BAD8 + pop {r3-r4} + bx lr + + thumb_func_start PartyHasMon +PartyHasMon: ; 0x0206BAE4 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r0, [r6, #0x4] + add r7, r1, #0x0 + mov r4, #0x0 + cmp r0, #0x0 + ble _0206BB0E + add r5, r6, #0x0 + add r5, #0x8 +_0206BAF6: + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl GetMonData + cmp r7, r0 + beq _0206BB0E + ldr r0, [r6, #0x4] + add r4, r4, #0x1 + add r5, #0xec + cmp r4, r0 + blt _0206BAF6 +_0206BB0E: + ldr r0, [r6, #0x4] + cmp r4, r0 + beq _0206BB18 + mov r0, #0x1 + pop {r3-r7, pc} +_0206BB18: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0206BB1C +FUN_0206BB1C: ; 0x0206BB1C + ldr r3, _0206BB24 ; =FUN_02022610 + mov r1, #0x2 + bx r3 + nop +_0206BB24: .word FUN_02022610 diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 706b19f4..b0657999 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -23,530 +23,6 @@ __local_str_poketool_personal_pms_narc: ; 0x02105FC8 .extern BoxMonIsShiny - thumb_func_start GetMonEvolution -GetMonEvolution: ; 0x02069168 - push {r4-r7, lr} - sub sp, #0x44 - add r7, r1, #0x0 - str r0, [sp, #0x0] - mov r6, #0x0 - add r4, r2, #0x0 - add r0, r7, #0x0 - mov r1, #0x5 - add r2, r6, #0x0 - str r3, [sp, #0x4] - ldr r5, [sp, #0x58] - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x2c] - add r0, r7, #0x0 - mov r1, #0x6 - add r2, r6, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - add r1, r6, #0x0 - str r0, [sp, #0x28] - add r0, r7, #0x0 - add r2, r1, #0x0 - bl GetMonData - str r0, [sp, #0x30] - add r0, r7, #0x0 - mov r1, #0x14 - add r2, r6, #0x0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x10] - ldr r1, _020694A0 ; =0xFFFF0000 - ldr r0, [sp, #0x30] - add r2, r6, #0x0 - and r0, r1 - lsr r0, r0, #0x10 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x1c] - ldr r0, [sp, #0x28] - mov r1, #0x1 - bl FUN_0206E7B8 - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - ldr r0, [sp, #0x2c] - cmp r0, #0x40 - beq _020691E4 - cmp r1, #0x3f - bne _020691E4 - cmp r4, #0x3 - beq _020691E4 - add sp, #0x44 - add r0, r6, #0x0 - pop {r4-r7, pc} -_020691E4: - cmp r5, #0x0 - bne _020691EA - add r5, sp, #0x40 -_020691EA: - mov r0, #0x0 - mov r1, #0x2a - bl AllocFromHeap - str r0, [sp, #0x18] - ldr r0, [sp, #0x2c] - ldr r1, [sp, #0x18] - bl LoadMonEvolutionTable - cmp r4, #0x3 - bls _02069202 - b _0206954A -_02069202: - add r0, r4, r4 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0206920E: ; jump table (using 16-bit offset) - .short _02069216 - _0206920E - 2; case 0 - .short _02069486 - _0206920E - 2; case 1 - .short _020694BE - _0206920E - 2; case 2 - .short _020694BE - _0206920E - 2; case 3 -_02069216: - add r0, r7, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - str r0, [sp, #0x14] - add r0, r7, #0x0 - mov r1, #0x9 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x20] - mov r0, #0x0 - str r0, [sp, #0x24] - ldr r0, [sp, #0x1c] - mov r1, #0xa - ldr r4, [sp, #0x18] - bl _s32_div_f - str r1, [sp, #0x8] -_02069246: - ldrh r0, [r4, #0x0] - cmp r0, #0x1a - bls _0206924E - b _02069472 -_0206924E: - add r1, r0, r0 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0206925A: ; jump table (using 16-bit offset) - .short _02069472 - _0206925A - 2; case 0 - .short _02069290 - _0206925A - 2; case 1 - .short _0206929E - _0206925A - 2; case 2 - .short _020692B4 - _0206925A - 2; case 3 - .short _020692CA - _0206925A - 2; case 4 - .short _02069472 - _0206925A - 2; case 5 - .short _02069472 - _0206925A - 2; case 6 - .short _02069472 - _0206925A - 2; case 7 - .short _020692DA - _0206925A - 2; case 8 - .short _02069306 - _0206925A - 2; case 9 - .short _02069332 - _0206925A - 2; case 10 - .short _0206935E - _0206925A - 2; case 11 - .short _02069376 - _0206925A - 2; case 12 - .short _0206938C - _0206925A - 2; case 13 - .short _0206939C - _0206925A - 2; case 14 - .short _020693A2 - _0206925A - 2; case 15 - .short _02069472 - _0206925A - 2; case 16 - .short _02069472 - _0206925A - 2; case 17 - .short _020693B2 - _0206925A - 2; case 18 - .short _020693CA - _0206925A - 2; case 19 - .short _020693E2 - _0206925A - 2; case 20 - .short _020693F6 - _0206925A - 2; case 21 - .short _0206940E - _0206925A - 2; case 22 - .short _0206942C - _0206925A - 2; case 23 - .short _0206944A - _0206925A - 2; case 24 - .short _02069458 - _0206925A - 2; case 25 - .short _02069466 - _0206925A - 2; case 26 -_02069290: - ldr r0, [sp, #0x20] - cmp r0, #0xdc - blo _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0x1 - str r0, [r5, #0x0] - b _02069472 -_0206929E: - bl FUN_0201277C - cmp r0, #0x0 - bne _0206936C - ldr r0, [sp, #0x20] - cmp r0, #0xdc - blo _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0x2 - str r0, [r5, #0x0] - b _02069472 -_020692B4: - bl FUN_0201277C - cmp r0, #0x1 - bne _0206936C - ldr r0, [sp, #0x20] - cmp r0, #0xdc - blo _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0x3 - str r0, [r5, #0x0] - b _02069472 -_020692CA: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0x4 - str r0, [r5, #0x0] - b _02069472 -_020692DA: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _0206936C - add r0, r7, #0x0 - mov r1, #0xa4 - mov r2, #0x0 - bl GetMonData - str r0, [sp, #0x34] - add r0, r7, #0x0 - mov r1, #0xa5 - mov r2, #0x0 - bl GetMonData - ldr r1, [sp, #0x34] - cmp r1, r0 - bls _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0x8 - str r0, [r5, #0x0] - b _02069472 -_02069306: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _0206936C - add r0, r7, #0x0 - mov r1, #0xa4 - mov r2, #0x0 - bl GetMonData - str r0, [sp, #0x38] - add r0, r7, #0x0 - mov r1, #0xa5 - mov r2, #0x0 - bl GetMonData - ldr r1, [sp, #0x38] - cmp r1, r0 - bne _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0x9 - str r0, [r5, #0x0] - b _02069472 -_02069332: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _0206936C - add r0, r7, #0x0 - mov r1, #0xa4 - mov r2, #0x0 - bl GetMonData - str r0, [sp, #0x3c] - add r0, r7, #0x0 - mov r1, #0xa5 - mov r2, #0x0 - bl GetMonData - ldr r1, [sp, #0x3c] - cmp r1, r0 - bhs _0206936C - ldrh r6, [r4, #0x4] - mov r0, #0xa - str r0, [r5, #0x0] - b _02069472 -_0206935E: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _0206936C - ldr r0, [sp, #0x8] - cmp r0, #0x5 - blt _0206936E -_0206936C: - b _02069472 -_0206936E: - ldrh r6, [r4, #0x4] - mov r0, #0xb - str r0, [r5, #0x0] - b _02069472 -_02069376: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _02069472 - ldr r0, [sp, #0x8] - cmp r0, #0x5 - blt _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0xc - str r0, [r5, #0x0] - b _02069472 -_0206938C: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0xd - str r0, [r5, #0x0] - b _02069472 -_0206939C: - mov r0, #0xe - str r0, [r5, #0x0] - b _02069472 -_020693A2: - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x10] - cmp r1, r0 - bgt _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0xf - str r0, [r5, #0x0] - b _02069472 -_020693B2: - bl FUN_0201277C - cmp r0, #0x0 - bne _02069472 - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x28] - cmp r0, r1 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x12 - str r0, [r5, #0x0] - b _02069472 -_020693CA: - bl FUN_0201277C - cmp r0, #0x1 - bne _02069472 - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x28] - cmp r0, r1 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x13 - str r0, [r5, #0x0] - b _02069472 -_020693E2: - ldrh r1, [r4, #0x2] - add r0, r7, #0x0 - bl FUN_02069A38 - cmp r0, #0x1 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x14 - str r0, [r5, #0x0] - b _02069472 -_020693F6: - ldr r0, [sp, #0x0] - cmp r0, #0x0 - beq _02069472 - ldrh r1, [r4, #0x2] - bl FUN_0206BAE4 - cmp r0, #0x1 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x15 - str r0, [r5, #0x0] - b _02069472 -_0206940E: - add r0, r7, #0x0 - mov r1, #0x6f - mov r2, #0x0 - bl GetMonData - cmp r0, #0x0 - bne _02069472 - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x16 - str r0, [r5, #0x0] - b _02069472 -_0206942C: - add r0, r7, #0x0 - mov r1, #0x6f - mov r2, #0x0 - bl GetMonData - cmp r0, #0x1 - bne _02069472 - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x14] - cmp r1, r0 - bgt _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x17 - str r0, [r5, #0x0] - b _02069472 -_0206944A: - ldr r1, [sp, #0x4] - cmp r1, r0 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x18 - str r0, [r5, #0x0] - b _02069472 -_02069458: - ldr r1, [sp, #0x4] - cmp r1, r0 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x19 - str r0, [r5, #0x0] - b _02069472 -_02069466: - ldr r1, [sp, #0x4] - cmp r1, r0 - bne _02069472 - ldrh r6, [r4, #0x4] - mov r0, #0x1a - str r0, [r5, #0x0] -_02069472: - cmp r6, #0x0 - bne _0206954A - ldr r0, [sp, #0x24] - add r4, r4, #0x6 - add r0, r0, #0x1 - str r0, [sp, #0x24] - cmp r0, #0x7 - bge _02069484 - b _02069246 -_02069484: - b _0206954A -_02069486: - ldr r3, [sp, #0x18] - mov r4, #0x0 - mov r7, #0x6 - mov r2, #0x5 -_0206948E: - ldrh r0, [r3, #0x0] - cmp r0, #0x5 - beq _0206949A - cmp r0, #0x6 - beq _020694A4 - b _020694B0 -_0206949A: - ldrh r6, [r3, #0x4] - str r2, [r5, #0x0] - b _020694B0 - .balign 4 -_020694A0: .word 0xFFFF0000 -_020694A4: - ldrh r1, [r3, #0x2] - ldr r0, [sp, #0x28] - cmp r0, r1 - bne _020694B0 - ldrh r6, [r3, #0x4] - str r7, [r5, #0x0] -_020694B0: - cmp r6, #0x0 - bne _0206954A - add r4, r4, #0x1 - add r3, r3, #0x6 - cmp r4, #0x7 - blt _0206948E - b _0206954A -_020694BE: - mov r0, #0x0 - ldr r4, [sp, #0x18] - str r0, [sp, #0xc] -_020694C4: - ldrh r2, [r4, #0x0] - cmp r2, #0x7 - bne _020694E4 - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x4] - cmp r0, r1 - bne _020694E4 - ldr r0, [sp, #0xc] - mov r1, #0x6 - mul r1, r0 - ldr r0, [sp, #0x18] - add r0, r0, r1 - ldrh r6, [r0, #0x4] - mov r0, #0x0 - str r0, [r5, #0x0] - b _0206954A -_020694E4: - cmp r2, #0x10 - bne _02069510 - add r0, r7, #0x0 - mov r1, #0x6f - mov r2, #0x0 - bl GetMonData - cmp r0, #0x0 - bne _02069510 - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x4] - cmp r0, r1 - bne _02069510 - ldr r0, [sp, #0xc] - mov r1, #0x6 - mul r1, r0 - ldr r0, [sp, #0x18] - add r0, r0, r1 - ldrh r6, [r0, #0x4] - mov r0, #0x0 - str r0, [r5, #0x0] - b _0206954A -_02069510: - ldrh r0, [r4, #0x0] - cmp r0, #0x11 - bne _0206953E - add r0, r7, #0x0 - mov r1, #0x6f - mov r2, #0x0 - bl GetMonData - cmp r0, #0x1 - bne _0206953E - ldrh r1, [r4, #0x2] - ldr r0, [sp, #0x4] - cmp r0, r1 - bne _0206953E - ldr r0, [sp, #0xc] - mov r1, #0x6 - mul r1, r0 - ldr r0, [sp, #0x18] - add r0, r0, r1 - ldrh r6, [r0, #0x4] - mov r0, #0x0 - str r0, [r5, #0x0] - b _0206954A -_0206953E: - ldr r0, [sp, #0xc] - add r4, r4, #0x6 - add r0, r0, #0x1 - str r0, [sp, #0xc] - cmp r0, #0x7 - blt _020694C4 -_0206954A: - ldr r0, [sp, #0x18] - bl FreeToHeap - add r0, r6, #0x0 - add sp, #0x44 - pop {r4-r7, pc} - .balign 4 - thumb_func_start ReadFromPersonalPmsNarc ReadFromPersonalPmsNarc: ; 0x02069558 push {r3-r4, lr} @@ -1158,8 +634,8 @@ _02069A0A: bl SetMonData pop {r3-r7, pc} - thumb_func_start FUN_02069A38 -FUN_02069A38: ; 0x02069A38 + thumb_func_start MonHasMove +MonHasMove: ; 0x02069A38 push {r3-r7, lr} mov r4, #0x0 add r6, r0, #0x0 diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s index aee5d3ff..8594afe7 100644 --- a/arm9/asm/scrcmd.s +++ b/arm9/asm/scrcmd.s @@ -10679,7 +10679,7 @@ FUN_0203EE98: ; 0x0203EE98 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r6, #0x0 - bl FUN_0206BAE4 + bl PartyHasMon strh r0, [r4, #0x0] mov r0, #0x1 pop {r4-r6, pc} diff --git a/arm9/asm/unk_02011744.s b/arm9/asm/unk_02011744.s index 4c1cb051..c8fec74e 100644 --- a/arm9/asm/unk_02011744.s +++ b/arm9/asm/unk_02011744.s @@ -2285,8 +2285,8 @@ _02012752: .balign 4 _02012778: .word UNK_020ED4B2 - thumb_func_start FUN_0201277C -FUN_0201277C: ; 0x0201277C + thumb_func_start IsNighttime +IsNighttime: ; 0x0201277C push {r3, lr} bl FUN_02012794 cmp r0, #0x3 diff --git a/arm9/asm/unk_0204AB0C.s b/arm9/asm/unk_0204AB0C.s index 0de63e29..f078e422 100644 --- a/arm9/asm/unk_0204AB0C.s +++ b/arm9/asm/unk_0204AB0C.s @@ -117,7 +117,7 @@ FUN_0204ABA8: ; 0x0204ABA8 push {r4-r6, lr} add r5, r0, #0x0 add r4, r1, #0x0 - bl FUN_0201277C + bl IsNighttime cmp r0, #0x0 bne _0204ABBE add r0, r4, #0x0 @@ -334,7 +334,7 @@ _0204AD40: .word UNK_020F471A FUN_0204AD44: ; 0x0204AD44 push {r4, lr} add r4, r0, #0x0 - bl FUN_0201277C + bl IsNighttime cmp r0, #0x0 bne _0204AD58 add r0, r4, #0x0 diff --git a/arm9/asm/unk_0205EC84.s b/arm9/asm/unk_0205EC84.s index 25427134..93afcc59 100644 --- a/arm9/asm/unk_0205EC84.s +++ b/arm9/asm/unk_0205EC84.s @@ -541,7 +541,7 @@ _0205F036: bl FUN_0205EC94 cmp r0, #0x1 bne _0205F054 - bl FUN_0201277C + bl IsNighttime cmp r0, #0x0 bne _0205F050 mov r5, #0xfe @@ -566,7 +566,7 @@ _0205F06A: bl FUN_0205EC94 cmp r0, #0x1 bne _0205F0E0 - bl FUN_0201277C + bl IsNighttime cmp r0, #0x0 bne _0205F080 ldr r5, _0205F128 ; =0x000003F5 @@ -579,7 +579,7 @@ _0205F084: bl FUN_0205EC94 cmp r0, #0x1 bne _0205F0E0 - bl FUN_0201277C + bl IsNighttime cmp r0, #0x0 bne _0205F09A ldr r5, _0205F134 ; =0x000003FF @@ -592,7 +592,7 @@ _0205F09E: bl FUN_0205EC94 cmp r0, #0x1 bne _0205F0E0 - bl FUN_0201277C + bl IsNighttime cmp r0, #0x0 bne _0205F0B4 ldr r5, _0205F140 ; =0x000003EE @@ -605,7 +605,7 @@ _0205F0B8: bl FUN_0205EC94 cmp r0, #0x1 bne _0205F0E0 - bl FUN_0201277C + bl IsNighttime cmp r0, #0x0 bne _0205F0CE ldr r5, _0205F140 ; =0x000003EE diff --git a/arm9/asm/unk_0206B8A4.s b/arm9/asm/unk_0206B8A4.s deleted file mode 100644 index aa6b8a28..00000000 --- a/arm9/asm/unk_0206B8A4.s +++ /dev/null @@ -1,367 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0206B8A4 -FUN_0206B8A4: ; 0x0206B8A4 - mov r0, #0x59 - lsl r0, r0, #0x4 - bx lr - .balign 4 - - thumb_func_start FUN_0206B8AC -FUN_0206B8AC: ; 0x0206B8AC - push {r4, lr} - mov r1, #0x59 - lsl r1, r1, #0x4 - bl AllocFromHeap - add r4, r0, #0x0 - bl FUN_0206B8C0 - add r0, r4, #0x0 - pop {r4, pc} - - thumb_func_start FUN_0206B8C0 -FUN_0206B8C0: ; 0x0206B8C0 - ldr r3, _0206B8C8 ; =FUN_0206B8CC - mov r1, #0x6 - bx r3 - nop -_0206B8C8: .word FUN_0206B8CC - - thumb_func_start FUN_0206B8CC -FUN_0206B8CC: ; 0x0206B8CC - push {r4-r6, lr} - add r6, r1, #0x0 - add r5, r0, #0x0 - cmp r6, #0x6 - ble _0206B8DA - bl ErrorHandling -_0206B8DA: - mov r2, #0x59 - add r0, r5, #0x0 - mov r1, #0x0 - lsl r2, r2, #0x4 - bl memset - mov r4, #0x0 - str r4, [r5, #0x4] - str r6, [r5, #0x0] - add r5, #0x8 -_0206B8EE: - add r0, r5, #0x0 - bl ZeroMonData - add r4, r4, #0x1 - add r5, #0xec - cmp r4, #0x6 - blt _0206B8EE - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_0206B900 -FUN_0206B900: ; 0x0206B900 - push {r4-r5} - add r3, r0, #0x0 - add r2, r1, #0x0 - ldr r1, [r3, #0x4] - ldr r0, [r3, #0x0] - cmp r1, r0 - blt _0206B914 - mov r0, #0x0 - pop {r4-r5} - bx lr -_0206B914: - mov r0, #0xec - mul r0, r1 - add r5, r3, r0 - add r5, #0x8 - mov r4, #0x1d -_0206B91E: - ldmia r2!, {r0-r1} - stmia r5!, {r0-r1} - sub r4, r4, #0x1 - bne _0206B91E - ldr r0, [r2, #0x0] - str r0, [r5, #0x0] - ldr r0, [r3, #0x4] - add r0, r0, #0x1 - str r0, [r3, #0x4] - mov r0, #0x1 - pop {r4-r5} - bx lr - .balign 4 - - thumb_func_start FUN_0206B938 -FUN_0206B938: ; 0x0206B938 - push {r3-r7, lr} - add r7, r0, #0x0 - add r4, r1, #0x0 - bpl _0206B944 - bl ErrorHandling -_0206B944: - ldr r0, [r7, #0x4] - cmp r4, r0 - blt _0206B94E - bl ErrorHandling -_0206B94E: - ldr r0, [r7, #0x0] - cmp r4, r0 - blt _0206B958 - bl ErrorHandling -_0206B958: - ldr r0, [r7, #0x4] - cmp r0, #0x0 - bgt _0206B962 - bl ErrorHandling -_0206B962: - ldr r0, [r7, #0x4] - sub r0, r0, #0x1 - cmp r4, r0 - bge _0206B992 - mov r0, #0xec - mul r0, r4 - add r6, r7, r0 -_0206B970: - add r5, r6, #0x0 - add r3, r6, #0x0 - add r5, #0xf4 - add r3, #0x8 - mov r2, #0x1d -_0206B97A: - ldmia r5!, {r0-r1} - stmia r3!, {r0-r1} - sub r2, r2, #0x1 - bne _0206B97A - ldr r0, [r5, #0x0] - add r4, r4, #0x1 - str r0, [r3, #0x0] - ldr r0, [r7, #0x4] - add r6, #0xec - sub r0, r0, #0x1 - cmp r4, r0 - blt _0206B970 -_0206B992: - add r1, r7, #0x0 - mov r0, #0xec - add r1, #0x8 - mul r0, r4 - add r0, r1, r0 - bl ZeroMonData - ldr r0, [r7, #0x4] - sub r0, r0, #0x1 - str r0, [r7, #0x4] - mov r0, #0x1 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0206B9AC -FUN_0206B9AC: ; 0x0206B9AC - ldr r0, [r0, #0x4] - bx lr - - thumb_func_start FUN_0206B9B0 -FUN_0206B9B0: ; 0x0206B9B0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - bpl _0206B9BC - bl ErrorHandling -_0206B9BC: - ldr r0, [r5, #0x4] - cmp r4, r0 - blt _0206B9C6 - bl ErrorHandling -_0206B9C6: - ldr r0, [r5, #0x0] - cmp r4, r0 - blt _0206B9D0 - bl ErrorHandling -_0206B9D0: - mov r0, #0xec - add r5, #0x8 - mul r0, r4 - add r0, r5, r0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_0206B9DC -FUN_0206B9DC: ; 0x0206B9DC - push {r3-r7, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - add r6, r2, #0x0 - cmp r4, #0x0 - bge _0206B9EC - bl ErrorHandling -_0206B9EC: - ldr r0, [r5, #0x4] - cmp r4, r0 - blt _0206B9F6 - bl ErrorHandling -_0206B9F6: - ldr r0, [r5, #0x0] - cmp r4, r0 - blt _0206BA00 - bl ErrorHandling -_0206BA00: - add r1, r5, #0x0 - mov r0, #0xec - add r1, #0x8 - mul r0, r4 - add r4, r1, r0 - add r0, r4, #0x0 - mov r1, #0xab - mov r2, #0x0 - bl GetMonData - add r7, r0, #0x0 - add r0, r6, #0x0 - mov r1, #0xab - mov r2, #0x0 - bl GetMonData - sub r2, r7, r0 - mov r3, #0x1d -_0206BA24: - ldmia r6!, {r0-r1} - stmia r4!, {r0-r1} - sub r3, r3, #0x1 - bne _0206BA24 - ldr r0, [r6, #0x0] - str r0, [r4, #0x0] - ldr r0, [r5, #0x4] - add r0, r0, r2 - str r0, [r5, #0x4] - pop {r3-r7, pc} - - thumb_func_start FUN_0206BA38 -FUN_0206BA38: ; 0x0206BA38 - push {r3-r7, lr} - add r5, r1, #0x0 - add r4, r0, #0x0 - add r6, r2, #0x0 - cmp r5, #0x0 - bge _0206BA48 - bl ErrorHandling -_0206BA48: - ldr r0, [r4, #0x4] - cmp r5, r0 - blt _0206BA52 - bl ErrorHandling -_0206BA52: - ldr r0, [r4, #0x0] - cmp r5, r0 - blt _0206BA5C - bl ErrorHandling -_0206BA5C: - cmp r6, #0x0 - bge _0206BA64 - bl ErrorHandling -_0206BA64: - ldr r0, [r4, #0x4] - cmp r6, r0 - blt _0206BA6E - bl ErrorHandling -_0206BA6E: - ldr r0, [r4, #0x0] - cmp r6, r0 - blt _0206BA78 - bl ErrorHandling -_0206BA78: - mov r0, #0x0 - mov r1, #0xec - bl AllocFromHeap - mov r12, r0 - add r1, r4, #0x0 - mov r0, #0xec - add r1, #0x8 - mul r0, r5 - add r3, r1, r0 - add r5, r3, #0x0 - mov r2, r12 - mov r7, #0x1d -_0206BA92: - ldmia r5!, {r0-r1} - stmia r2!, {r0-r1} - sub r7, r7, #0x1 - bne _0206BA92 - ldr r0, [r5, #0x0] - add r4, #0x8 - str r0, [r2, #0x0] - mov r0, #0xec - mul r0, r6 - add r2, r4, r0 - add r5, r2, #0x0 - mov r4, #0x1d -_0206BAAA: - ldmia r5!, {r0-r1} - stmia r3!, {r0-r1} - sub r4, r4, #0x1 - bne _0206BAAA - ldr r0, [r5, #0x0] - mov r4, r12 - str r0, [r3, #0x0] - mov r3, #0x1d -_0206BABA: - ldmia r4!, {r0-r1} - stmia r2!, {r0-r1} - sub r3, r3, #0x1 - bne _0206BABA - ldr r0, [r4, #0x0] - str r0, [r2, #0x0] - mov r0, r12 - bl FreeToHeap - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_0206BAD0 -FUN_0206BAD0: ; 0x0206BAD0 - push {r3-r4} - add r4, r0, #0x0 - add r3, r1, #0x0 - mov r2, #0xb2 -_0206BAD8: - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - sub r2, r2, #0x1 - bne _0206BAD8 - pop {r3-r4} - bx lr - - thumb_func_start FUN_0206BAE4 -FUN_0206BAE4: ; 0x0206BAE4 - push {r3-r7, lr} - add r6, r0, #0x0 - ldr r0, [r6, #0x4] - add r7, r1, #0x0 - mov r4, #0x0 - cmp r0, #0x0 - ble _0206BB0E - add r5, r6, #0x0 - add r5, #0x8 -_0206BAF6: - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - cmp r7, r0 - beq _0206BB0E - ldr r0, [r6, #0x4] - add r4, r4, #0x1 - add r5, #0xec - cmp r4, r0 - blt _0206BAF6 -_0206BB0E: - ldr r0, [r6, #0x4] - cmp r4, r0 - beq _0206BB18 - mov r0, #0x1 - pop {r3-r7, pc} -_0206BB18: - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_0206BB1C -FUN_0206BB1C: ; 0x0206BB1C - ldr r3, _0206BB24 ; =FUN_02022610 - mov r1, #0x2 - bx r3 - nop -_0206BB24: .word FUN_02022610 diff --git a/arm9/global.inc b/arm9/global.inc index 0dc52bc5..840fe78b 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -805,7 +805,7 @@ .extern FUN_020126D8 .extern FUN_020126FC .extern FUN_02012710 -.extern FUN_0201277C +.extern IsNighttime .extern FUN_02012794 .extern FUN_020127A8 .extern FUN_020127C0 @@ -4867,7 +4867,7 @@ .extern FUN_0206B9DC .extern FUN_0206BA38 .extern FUN_0206BAD0 -.extern FUN_0206BAE4 +.extern PartyHasMon .extern FUN_0206BB1C .extern FUN_0206BB28 .extern FUN_0206BB34 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index ea4a9191..b5f89157 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -43155,7 +43155,7 @@ _021EC544: bl FUN_0206B938 ldr r1, _021EC578 ; =0x000001B9 add r0, r6, #0 - bl FUN_0206BAE4 + bl PartyHasMon cmp r0, #0 bne _021EC572 add r0, r7, #0 diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index 0b764ed1..e0034fd2 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -116,7 +116,7 @@ MOD14_021D75B8: ; 0x021D75B8 lsl r1, r1, #2 ldr r0, [r4, r1] add r1, #0x95 - bl FUN_0206BAE4 + bl PartyHasMon cmp r0, #0 bne _021D75DE mov r0, #0x47 diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index e9d79012..606353f1 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -138,7 +138,7 @@ MOD71_0222D5C0: ; 0x0222D5C0 mov r0, #0x1a bl FUN_020335F0 bl FUN_02033E74 - bl FUN_0201277C + bl IsNighttime cmp r0, #0 bne _0222D71A ldr r1, _0222D748 ; =0x0000043D @@ -6375,7 +6375,7 @@ _02230A40: ldr r0, [sp, #4] ldr r1, _02230AE0 ; =0x000001B9 str r6, [r5, #0x2c] - bl FUN_0206BAE4 + bl PartyHasMon cmp r0, #0 bne _02230A98 ldr r0, [r5, #0x10] diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index 52e2cc5f..71ef95f1 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -16121,7 +16121,7 @@ _02235590: ldr r0, [r5] ldr r1, _022355EC ; =0x000001B9 ldr r0, [r0, #8] - bl FUN_0206BAE4 + bl PartyHasMon cmp r0, #0 bne _022355DC ldr r0, [r5] diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 0a2e160c..f1fbcd1d 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -27,6 +27,8 @@ u8 BoxMonIsShiny(struct BoxPokemon * boxmon); u8 CalcShininessByOtIdAndPersonality(u32 otid, u32 pid); u32 MaskOfFlagNo(int flagno); void LoadMonPersonal(int species, struct BaseStats * personal); +void LoadMonEvolutionTable(u16 species, struct Evolution * dest); +BOOL MonHasMove(struct Pokemon * pokemon, u16 move); int ResolveMonForme(int species, int forme); void MonEncryptSegment(void * datap, u32 size, u32 key); @@ -2472,3 +2474,249 @@ BOOL FUN_020690E8(struct Pokemon * pokemon) } return FALSE; } + +u16 GetMonEvolution(struct PlayerParty * party, struct Pokemon * pokemon, u32 context, u32 usedItem, u32 * method_ret) +{ + u16 target = SPECIES_NONE; + u32 sp40; + u16 species; + u16 heldItem; + u32 personality; + int i; + u8 beauty; + u8 level; + u16 friendship; + u16 pid_hi; + struct Evolution * evoTable; + u8 r1; + + species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); + heldItem = GetMonData(pokemon, MON_DATA_HELD_ITEM, NULL); + personality = GetMonData(pokemon, MON_DATA_PERSONALITY, NULL); + beauty = GetMonData(pokemon, MON_DATA_BEAUTY, NULL); + pid_hi = (personality & 0xFFFF0000) >> 16; + r1 = FUN_0206E7B8(heldItem, 1, 0); + if (species != SPECIES_KADABRA && r1 == 0x3F && context != 3) + return SPECIES_NONE; + if (method_ret == NULL) + method_ret = &sp40; + evoTable = AllocFromHeap(0, 7 * sizeof(struct Evolution)); + LoadMonEvolutionTable(species, evoTable); + switch (context) + { + case 0: + level = GetMonData(pokemon, MON_DATA_LEVEL, NULL); + friendship = GetMonData(pokemon, MON_DATA_FRIENDSHIP, NULL); + for (i = 0; i < 7; i++) + { + switch (evoTable[i].method) + { + case EVO_NONE: + break; + case EVO_FRIENDSHIP: + if (friendship >= 220) + { + target = evoTable[i].target; + *method_ret = EVO_FRIENDSHIP; + } + break; + case EVO_FRIENDSHIP_DAY: + if (IsNighttime() == 0 && friendship >= 220) + { + target = evoTable[i].target; + *method_ret = EVO_FRIENDSHIP_DAY; + } + break; + case EVO_FRIENDSHIP_NIGHT: + if (IsNighttime() == 1 && friendship >= 220) + { + target = evoTable[i].target; + *method_ret = EVO_FRIENDSHIP_NIGHT; + } + break; + case EVO_LEVEL: + if (evoTable[i].param <= level) + { + target = evoTable[i].target; + *method_ret = EVO_LEVEL; + } + break; + case EVO_TRADE: + break; + case EVO_TRADE_ITEM: + break; + case EVO_STONE: + break; + case EVO_LEVEL_ATK_GT_DEF: + if (evoTable[i].param <= level && GetMonData(pokemon, MON_DATA_ATK, NULL) > GetMonData(pokemon, 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 && GetMonData(pokemon, MON_DATA_ATK, NULL) == GetMonData(pokemon, 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 && GetMonData(pokemon, MON_DATA_ATK, NULL) < GetMonData(pokemon, MON_DATA_DEF, NULL)) + { + target = evoTable[i].target; + *method_ret = EVO_LEVEL_ATK_LT_DEF; + } + break; + case EVO_LEVEL_PID_LO: + if (evoTable[i].param <= level && pid_hi % 10 < 5) + { + target = evoTable[i].target; + *method_ret = EVO_LEVEL_PID_LO; + } + break; + case EVO_LEVEL_PID_HI: + if (evoTable[i].param <= level && pid_hi % 10 >= 5) + { + target = evoTable[i].target; + *method_ret = EVO_LEVEL_PID_HI; + } + break; + case EVO_LEVEL_NINJASK: + if (evoTable[i].param <= level) + { + target = evoTable[i].target; + *method_ret = EVO_LEVEL_NINJASK; + } + break; + case EVO_LEVEL_SHEDINJA: + *method_ret = EVO_LEVEL_SHEDINJA; + break; + case EVO_BEAUTY: + if (evoTable[i].param <= beauty) + { + target = evoTable[i].target; + *method_ret = EVO_BEAUTY; + } + break; + case EVO_STONE_MALE: + break; + case EVO_STONE_FEMALE: + break; + case EVO_ITEM_DAY: + if (IsNighttime() == 0 && evoTable[i].param == heldItem) + { + target = evoTable[i].target; + *method_ret = EVO_ITEM_DAY; + } + break; + case EVO_ITEM_NIGHT: + if (IsNighttime() == 1 && evoTable[i].param == heldItem) + { + target = evoTable[i].target; + *method_ret = EVO_ITEM_NIGHT; + } + break; + case EVO_HAS_MOVE: + if (MonHasMove(pokemon, evoTable[i].param) == TRUE) + { + target = evoTable[i].target; + *method_ret = EVO_HAS_MOVE; + } + break; + case EVO_OTHER_PARTY_MON: + if (party != NULL && PartyHasMon(party, evoTable[i].param) == 1) + { + target = evoTable[i].target; + *method_ret = EVO_OTHER_PARTY_MON; + } + break; + case EVO_LEVEL_MALE: + if (GetMonData(pokemon, 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 (GetMonData(pokemon, MON_DATA_GENDER, NULL) == MON_FEMALE && evoTable[i].param <= level) + { + target = evoTable[i].target; + *method_ret = EVO_LEVEL_FEMALE; + } + break; + case EVO_CORONET: + if (usedItem == evoTable[i].method) + { + target = evoTable[i].target; + *method_ret = EVO_CORONET; + } + break; + case EVO_ETERNA: + if (usedItem == evoTable[i].method) + { + target = evoTable[i].target; + *method_ret = EVO_ETERNA; + } + break; + case EVO_ROUTE217: + if (usedItem == evoTable[i].method) + { + target = evoTable[i].target; + *method_ret = EVO_ROUTE217; + } + break; + } + if (target != SPECIES_NONE) + break; + } + break; + case 1: + for (i = 0; i < 7; i++) + { + switch (evoTable[i].method) + { + case EVO_TRADE: + target = evoTable[i].target; + *method_ret = EVO_TRADE; + break; + case EVO_TRADE_ITEM: + if (heldItem == evoTable[i].param) + { + target = evoTable[i].target; + *method_ret = EVO_TRADE_ITEM; + } + break; + } + if (target != SPECIES_NONE) + break; + } + break; + case 2: + case 3: + for (i = 0; i < 7; i++) + { + if (evoTable[i].method == EVO_STONE && usedItem == evoTable[i].param) + { + target = evoTable[i].target; + *method_ret = 0; + break; + } + if (evoTable[i].method == EVO_STONE_MALE && GetMonData(pokemon, 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 && GetMonData(pokemon, MON_DATA_GENDER, NULL) == MON_FEMALE && usedItem == evoTable[i].param) + { + target = evoTable[i].target; + *method_ret = 0; + break; + } + } + break; + } + FreeToHeap(evoTable); + return target; +} diff --git a/include/pokemon.h b/include/pokemon.h index 66ad03f2..83630d39 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -362,6 +362,37 @@ typedef enum { UNOWN_QUESTION_MARK = 27 } AlternateForms; +typedef enum EvoMethod +{ + EVO_NONE = 0, + EVO_FRIENDSHIP, + EVO_FRIENDSHIP_DAY, + EVO_FRIENDSHIP_NIGHT, + EVO_LEVEL, + EVO_TRADE, + EVO_TRADE_ITEM, + EVO_STONE, + EVO_LEVEL_ATK_GT_DEF, + EVO_LEVEL_ATK_EQ_DEF, + EVO_LEVEL_ATK_LT_DEF, + EVO_LEVEL_PID_LO, + EVO_LEVEL_PID_HI, + EVO_LEVEL_NINJASK, + EVO_LEVEL_SHEDINJA, + EVO_BEAUTY, + EVO_STONE_MALE, + EVO_STONE_FEMALE, + EVO_ITEM_DAY, + EVO_ITEM_NIGHT, + EVO_HAS_MOVE, + EVO_OTHER_PARTY_MON, + EVO_LEVEL_MALE, + EVO_LEVEL_FEMALE, + EVO_CORONET, + EVO_ETERNA, + EVO_ROUTE217, +} EvoMethod; + // Structs typedef struct { @@ -499,6 +530,22 @@ struct UnkStruct_02069038 struct Pokeanm anim; }; +struct Evolution +{ + u16 method; + u16 param; + u16 target; +}; + +#define PARTY_SIZE 6 + +struct PlayerParty +{ + u32 maxCount; + u32 curCount; + struct Pokemon mons[PARTY_SIZE]; +}; + void ZeroMonData(struct Pokemon * pokemon); void ZeroBoxMonData(struct BoxPokemon * boxmon); u32 SizeOfStructPokemon(void); diff --git a/include/proto.h b/include/proto.h index 3a6081b4..d9a5ec2a 100644 --- a/include/proto.h +++ b/include/proto.h @@ -2,7 +2,10 @@ #define POKEDIAMOND_PROTO_H // For homeless function declarations + +// Declare these here so that we don't have to include pokemon.h struct UnkStruct_02069038; +struct PlayerParty; u16 * FUN_0200AA50(u16 species, u32 heap_id); void FUN_02021A74(u16 * dest, u16 * src); @@ -13,5 +16,7 @@ u32 FUN_0206E7B8(u16 item, u32 a1, u32 a2); u32 GetArceusTypeByPlate(u16 plate); int FUN_02014C3C(u8); void FUN_02014C54(int, int, struct UnkStruct_02069038 *, u8); +u32 IsNighttime(void); // is day or night +u32 PartyHasMon(struct PlayerParty *, u16); #endif //POKEDIAMOND_PROTO_H -- cgit v1.2.3 From 654acf33f071db80179fa556097f5663ca4dc311 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Jun 2020 14:00:44 -0400 Subject: through FUN_020697D4 --- arm9/asm/pokemon_s.s | 365 ----------------------------------- arm9/src/pokemon.c | 160 +++++++++++++++- include/constants/moves.h | 473 ++++++++++++++++++++++++++++++++++++++++++++++ include/move_data.h | 1 + 4 files changed, 631 insertions(+), 368 deletions(-) create mode 100644 include/constants/moves.h diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index b0657999..472197ae 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -2,378 +2,13 @@ .include "global.inc" .include "constants/species.h" - .extern gGameLanguage .extern gGameVersion .extern sItemOdds - .extern sFriendshipModTable .extern sLegendaryMonsList .extern UNK_020F7F16 - .extern sNatureStatMods - - .section .data - - .global __local_str_poketool_personal_pms_narc -__local_str_poketool_personal_pms_narc: ; 0x02105FC8 - .asciz "poketool/personal/pms.narc" .text - .extern LoadGrowthTable - .extern GetExpByGrowthRateAndLevel - - .extern BoxMonIsShiny - - thumb_func_start ReadFromPersonalPmsNarc -ReadFromPersonalPmsNarc: ; 0x02069558 - push {r3-r4, lr} - sub sp, #0x4c - add r4, r0, #0x0 - mov r1, #0x0 - add r0, sp, #0x0 - strh r1, [r0, #0x0] - ldr r0, _020695A0 ; =SPECIES_EGG - cmp r4, r0 - blo _0206956E - bl ErrorHandling -_0206956E: - add r0, sp, #0x4 - bl FS_InitFile - ldr r1, _020695A4 ; =__local_str_poketool_personal_pms_narc - add r0, sp, #0x4 - bl FS_OpenFile - add r0, sp, #0x4 - lsl r1, r4, #0x1 - mov r2, #0x0 - bl FS_SeekFile - add r0, sp, #0x4 - add r1, sp, #0x0 - mov r2, #0x2 - bl FS_ReadFile - add r0, sp, #0x4 - bl FS_CloseFile - add r0, sp, #0x0 - ldrh r0, [r0, #0x0] - add sp, #0x4c - pop {r3-r4, pc} - nop -_020695A0: .word SPECIES_EGG -_020695A4: .word __local_str_poketool_personal_pms_narc - - thumb_func_start GetEggSpecies -GetEggSpecies: ; 0x020695A8 - push {r3, lr} - cmp r0, #SPECIES_SUDOWOODO - bgt _020695CC - cmp r0, #SPECIES_MARILL - blt _020695BA - beq _020695EC - cmp r0, #SPECIES_SUDOWOODO - beq _020695EC - b _020695E8 -_020695BA: - cmp r0, #SPECIES_MR_MIME - bgt _020695C6 - bge _020695EC - cmp r0, #SPECIES_CHANSEY - beq _020695EC - b _020695E8 -_020695C6: - cmp r0, #SPECIES_SNORLAX - beq _020695EC - b _020695E8 -_020695CC: - cmp r0, #SPECIES_MANTINE - bgt _020695D8 - bge _020695EC - cmp r0, #SPECIES_WOBBUFFET - beq _020695EC - b _020695E8 -_020695D8: - ldr r1, _020695F0 ; =SPECIES_ROSELIA - cmp r0, r1 - bgt _020695E2 - beq _020695EC - b _020695E8 -_020695E2: - add r1, #SPECIES_CHIMECHO-SPECIES_ROSELIA - cmp r0, r1 - beq _020695EC -_020695E8: - bl ReadFromPersonalPmsNarc -_020695EC: - pop {r3, pc} - nop -_020695F0: .word SPECIES_ROSELIA - - thumb_func_start InitBoxMonMoveset -InitBoxMonMoveset: ; 0x020695F4 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - mov r0, #0x0 - mov r1, #0x2c - bl AllocFromHeap - str r0, [sp, #0x0] - add r0, r5, #0x0 - bl AcquireBoxMonLock - str r0, [sp, #0x4] - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r5, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetBoxMonData - add r7, r0, #0x0 - add r0, r5, #0x0 - bl CalcBoxMonLevel - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - ldr r2, [sp, #0x0] - add r0, r4, #0x0 - add r1, r7, #0x0 - bl LoadWotbl_HandleAlternateForme - ldr r0, [sp, #0x0] - ldrh r1, [r0, #0x0] - ldr r0, _02069690 ; =0x0000FFFF - cmp r1, r0 - beq _0206967C - ldr r4, [sp, #0x0] - lsl r7, r6, #0x9 -_02069648: - ldrh r1, [r4, #0x0] - mov r0, #0xfe - lsl r0, r0, #0x8 - and r0, r1 - cmp r0, r7 - bgt _0206967C - ldr r0, _02069694 ; =0x000001FF - and r0, r1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_020696A8 - ldr r1, _02069690 ; =0x0000FFFF - cmp r0, r1 - bne _02069672 - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_02069718 -_02069672: - add r4, r4, #0x2 - ldrh r1, [r4, #0x0] - ldr r0, _02069690 ; =0x0000FFFF - cmp r1, r0 - bne _02069648 -_0206967C: - ldr r0, [sp, #0x0] - bl FreeToHeap - ldr r1, [sp, #0x4] - add r0, r5, #0x0 - bl ReleaseBoxMonLock - add sp, #0x8 - pop {r3-r7, pc} - nop -_02069690: .word 0x0000FFFF -_02069694: .word 0x000001FF - - thumb_func_start FUN_02069698 -FUN_02069698: ; 0x02069698 - push {r4, lr} - add r4, r1, #0x0 - bl FUN_020690E4 - add r1, r4, #0x0 - bl FUN_020696A8 - pop {r4, pc} - - thumb_func_start FUN_020696A8 -FUN_020696A8: ; 0x020696A8 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r1, #0x0 - ldr r1, _02069700 ; =0x0000FFFF - add r6, r0, #0x0 - str r1, [sp, #0x4] - bl AcquireBoxMonLock - mov r4, #0x0 - str r0, [sp, #0x0] - add r7, r4, #0x0 -_020696BE: - add r1, r4, #0x0 - add r0, r6, #0x0 - add r1, #0x36 - add r2, r7, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bne _020696E0 - lsl r2, r4, #0x18 - add r0, r6, #0x0 - add r1, r5, #0x0 - lsr r2, r2, #0x18 - bl FUN_020697D4 - str r5, [sp, #0x4] - b _020696F0 -_020696E0: - cmp r0, r5 - bne _020696EA - ldr r0, _02069704 ; =0x0000FFFE - str r0, [sp, #0x4] - b _020696F0 -_020696EA: - add r4, r4, #0x1 - cmp r4, #0x4 - blt _020696BE -_020696F0: - ldr r1, [sp, #0x0] - add r0, r6, #0x0 - bl ReleaseBoxMonLock - ldr r0, [sp, #0x4] - add sp, #0x8 - pop {r3-r7, pc} - nop -_02069700: .word 0x0000FFFF -_02069704: .word 0x0000FFFE - - thumb_func_start FUN_02069708 -FUN_02069708: ; 0x02069708 - push {r4, lr} - add r4, r1, #0x0 - bl FUN_020690E4 - add r1, r4, #0x0 - bl FUN_02069718 - pop {r4, pc} - - thumb_func_start FUN_02069718 -FUN_02069718: ; 0x02069718 - push {r3-r7, lr} - sub sp, #0x20 - add r5, r0, #0x0 - str r1, [sp, #0x0] - bl AcquireBoxMonLock - str r0, [sp, #0xc] - add r0, sp, #0x18 - mov r4, #0x0 - str r0, [sp, #0x4] - add r7, sp, #0x14 - add r6, sp, #0x10 -_02069730: - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x37 - mov r2, #0x0 - bl GetBoxMonData - ldr r1, [sp, #0x4] - mov r2, #0x0 - strh r0, [r1, #0x0] - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3b - bl GetBoxMonData - add r1, r4, #0x0 - strb r0, [r7, #0x0] - add r0, r5, #0x0 - add r1, #0x3f - mov r2, #0x0 - bl GetBoxMonData - strb r0, [r6, #0x0] - ldr r0, [sp, #0x4] - add r4, r4, #0x1 - add r0, r0, #0x2 - str r0, [sp, #0x4] - add r7, r7, #0x1 - add r6, r6, #0x1 - cmp r4, #0x3 - blt _02069730 - ldr r0, [sp, #0x0] - add r1, sp, #0x10 - strh r0, [r1, #0xe] - ldr r0, [sp, #0x0] - mov r1, #0x5 - bl FUN_0206AB18 - add r1, sp, #0x10 - strb r0, [r1, #0x7] - mov r4, #0x0 - add r0, sp, #0x18 - strb r4, [r1, #0x3] - str r0, [sp, #0x8] - add r7, sp, #0x14 - add r6, sp, #0x10 -_0206978A: - add r1, r4, #0x0 - ldr r2, [sp, #0x8] - add r0, r5, #0x0 - add r1, #0x36 - bl SetBoxMonData - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3a - add r2, r7, #0x0 - bl SetBoxMonData - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3e - add r2, r6, #0x0 - bl SetBoxMonData - ldr r0, [sp, #0x8] - add r4, r4, #0x1 - add r0, r0, #0x2 - str r0, [sp, #0x8] - add r7, r7, #0x1 - add r6, r6, #0x1 - cmp r4, #0x4 - blt _0206978A - ldr r1, [sp, #0xc] - add r0, r5, #0x0 - bl ReleaseBoxMonLock - add sp, #0x20 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_020697CC -FUN_020697CC: ; 0x020697CC - ldr r3, _020697D0 ; =FUN_020697D4 - bx r3 - .balign 4 -_020697D0: .word FUN_020697D4 - - thumb_func_start FUN_020697D4 -FUN_020697D4: ; 0x020697D4 - push {r0-r3} - push {r3-r5, lr} - add r4, r2, #0x0 - add r1, r4, #0x0 - add r1, #0x36 - add r2, sp, #0x14 - add r5, r0, #0x0 - bl SetBoxMonData - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3e - mov r2, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - add r0, sp, #0x10 - ldrh r0, [r0, #0x4] - bl FUN_0206AB30 - add r1, sp, #0x0 - strb r0, [r1, #0x0] - add r4, #0x3a - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, sp, #0x0 - bl SetBoxMonData - pop {r3-r5} - pop {r3} - add sp, #0x10 - bx r3 - .balign 4 - thumb_func_start FUN_02069818 FUN_02069818: ; 0x02069818 push {r3-r7, lr} diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index f1fbcd1d..d3c4ead6 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -11,6 +11,7 @@ #include "text.h" #include "constants/abilities.h" #include "constants/items.h" +#include "constants/moves.h" #pragma thumb on @@ -25,6 +26,11 @@ u16 ModifyStatByNature(u8 nature, u16 statval, u8 statno); u8 GetGenderBySpeciesAndPersonality_PreloadedPersonal(struct BaseStats * personal, u16 species, u32 pid); u8 BoxMonIsShiny(struct BoxPokemon * boxmon); u8 CalcShininessByOtIdAndPersonality(u32 otid, u32 pid); +void InitBoxMonMoveset(struct BoxPokemon * boxmon); +u32 FUN_020696A8(struct BoxPokemon * boxmon, u16 move); +void FUN_02069718(struct BoxPokemon * boxmon, u16 move); +void FUN_020697D4(struct BoxPokemon * boxmon, u16 move, u8 slot); +void LoadWotbl_HandleAlternateForme(int species, int forme, u16 * wotbl); u32 MaskOfFlagNo(int flagno); void LoadMonPersonal(int species, struct BaseStats * personal); void LoadMonEvolutionTable(u16 species, struct Evolution * dest); @@ -35,7 +41,6 @@ void MonEncryptSegment(void * datap, u32 size, u32 key); void MonDecryptSegment(void * datap, u32 size, u32 key); u16 MonEncryptionLCRNG(u32 * seed); u16 CalcMonChecksum(void * datap, u32 size); -void InitBoxMonMoveset(struct BoxPokemon * boxmon); PokemonDataBlock * GetSubstruct(struct BoxPokemon * boxmon, u32 personality, u32 which_struct); void LoadMonBaseStats_HandleAlternateForme(u32 species, u32 forme, struct BaseStats * baseStats); @@ -2448,9 +2453,9 @@ u8 FUN_020690D4(struct BoxPokemon * boxmon) return GetBoxMonData(boxmon, MON_DATA_FORME, NULL); } -void FUN_020690E4(void) +struct BoxPokemon * FUN_020690E4(struct Pokemon * pokemon) { - + return &pokemon->box; } BOOL FUN_020690E8(struct Pokemon * pokemon) @@ -2720,3 +2725,152 @@ u16 GetMonEvolution(struct PlayerParty * party, struct Pokemon * pokemon, u32 co FreeToHeap(evoTable); return target; } + +u16 ReadFromPersonalPmsNarc(u16 species) +{ + u16 ret = SPECIES_NONE; + GF_ASSERT(species < SPECIES_EGG); + { + FSFile file; + FS_InitFile(&file); + FS_OpenFile(&file, "poketool/personal/pms.narc"); + FS_SeekFile(&file, species * sizeof(u16), FS_SEEK_SET); + FS_ReadFile(&file, &ret, sizeof(u16)); + FS_CloseFile(&file); + } + return ret; +} + +u16 GetEggSpecies(u16 species) +{ + switch (species) + { + case SPECIES_SUDOWOODO: + case SPECIES_MARILL: + case SPECIES_MR_MIME: + case SPECIES_CHANSEY: + case SPECIES_SNORLAX: + case SPECIES_MANTINE: + case SPECIES_WOBBUFFET: + case SPECIES_ROSELIA: + case SPECIES_CHIMECHO: + return species; + default: + return ReadFromPersonalPmsNarc(species); + } +} + +#define WOTBL_END 0xFFFF +#define WOTBL_MOVE_MASK 0x01FF +#define WOTBL_MOVE_SHIFT 0 +#define WOTBL_LVL_MASK 0xFE00 +#define WOTBL_LVL_SHIFT 9 +#define WOTBL_MOVE(x) (((x) & WOTBL_MOVE_MASK) >> WOTBL_MOVE_SHIFT) +#define WOTBL_LVL(x) (((x) & WOTBL_LVL_MASK) >> WOTBL_LVL_SHIFT) + +void InitBoxMonMoveset(struct BoxPokemon * boxmon) +{ + BOOL decry; + u16 * wotbl; + int i; + u16 species; + u32 forme; + u8 level; + u16 move; + wotbl = AllocFromHeap(0, 22 * sizeof(u16)); + decry = AcquireBoxMonLock(boxmon); + species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + forme = GetBoxMonData(boxmon, MON_DATA_FORME, NULL); + level = CalcBoxMonLevel(boxmon); + LoadWotbl_HandleAlternateForme(species, forme, wotbl); + for (i = 0; wotbl[i] != WOTBL_END; i++) + { + if ((wotbl[i] & WOTBL_LVL_MASK) > (level << WOTBL_LVL_SHIFT)) + break; + move = WOTBL_MOVE(wotbl[i]); + if (FUN_020696A8(boxmon, move) == 0xFFFF) + FUN_02069718(boxmon, move); + } + FreeToHeap(wotbl); + ReleaseBoxMonLock(boxmon, decry); +} + +u32 FUN_02069698(struct Pokemon * pokemon, u16 move) +{ + return FUN_020696A8(FUN_020690E4(pokemon), move); +} + +u32 FUN_020696A8(struct BoxPokemon * boxmon, u16 move) +{ + u32 ret = 0xFFFF; + int i; + BOOL decry = AcquireBoxMonLock(boxmon); + u16 cur_move; + for (i = 0; i < 4; i++) + { + cur_move = GetBoxMonData(boxmon, MON_DATA_MOVE1 + i, NULL); + if (cur_move == MOVE_NONE) + { + FUN_020697D4(boxmon, move, i); + ret = move; + break; + } + if (cur_move == move) + { + ret = 0xFFFE; + break; + } + } + ReleaseBoxMonLock(boxmon, decry); + return ret; +} + +void FUN_02069708(struct Pokemon * pokemon, u16 move) +{ + FUN_02069718(FUN_020690E4(pokemon), move); +} + +void FUN_02069718(struct BoxPokemon * boxmon, u16 move) +{ + BOOL decry = AcquireBoxMonLock(boxmon); + int i; + u16 moves[4]; + u8 pp[4]; + u8 ppUp[4]; + + for (i = 0; i < 3; i++) + { + moves[i] = GetBoxMonData(boxmon, MON_DATA_MOVE1 + i + 1, NULL); + pp[i] = GetBoxMonData(boxmon, MON_DATA_MOVE1PP + i + 1, NULL); + ppUp[i] = GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + i + 1, NULL); + } + + moves[3] = move; + pp[3] = FUN_0206AB18(move, 5); + ppUp[3] = 0; + + for (i = 0; i < 4; i++) + { + SetBoxMonData(boxmon, MON_DATA_MOVE1 + i, &moves[i]); + SetBoxMonData(boxmon, MON_DATA_MOVE1PP + i, &pp[i]); + SetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + i, &ppUp[i]); + } + + ReleaseBoxMonLock(boxmon, decry); +} + +void FUN_020697CC(struct Pokemon * pokemon, u16 move, u8 slot) +{ + FUN_020697D4(&pokemon->box, move, slot); +} + +void FUN_020697D4(struct BoxPokemon * boxmon, u16 move, u8 slot) +{ + u8 ppUp; + u8 pp; + + SetBoxMonData(boxmon, MON_DATA_MOVE1 + slot, &move); + ppUp = GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + slot, NULL); + pp = FUN_0206AB30(move, ppUp); + SetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot, &pp); +} diff --git a/include/constants/moves.h b/include/constants/moves.h new file mode 100644 index 00000000..e25c16c9 --- /dev/null +++ b/include/constants/moves.h @@ -0,0 +1,473 @@ +#ifndef POKEDIAMOND_CONSTANTS_MOVES_H +#define POKEDIAMOND_CONSTANTS_MOVES_H + +#define MOVE_NONE 0 +#define MOVE_POUND 1 +#define MOVE_KARATE_CHOP 2 +#define MOVE_DOUBLE_SLAP 3 +#define MOVE_COMET_PUNCH 4 +#define MOVE_MEGA_PUNCH 5 +#define MOVE_PAY_DAY 6 +#define MOVE_FIRE_PUNCH 7 +#define MOVE_ICE_PUNCH 8 +#define MOVE_THUNDER_PUNCH 9 +#define MOVE_SCRATCH 10 +#define MOVE_VISE_GRIP 11 +#define MOVE_GUILLOTINE 12 +#define MOVE_RAZOR_WIND 13 +#define MOVE_SWORDS_DANCE 14 +#define MOVE_CUT 15 +#define MOVE_GUST 16 +#define MOVE_WING_ATTACK 17 +#define MOVE_WHIRLWIND 18 +#define MOVE_FLY 19 +#define MOVE_BIND 20 +#define MOVE_SLAM 21 +#define MOVE_VINE_WHIP 22 +#define MOVE_STOMP 23 +#define MOVE_DOUBLE_KICK 24 +#define MOVE_MEGA_KICK 25 +#define MOVE_JUMP_KICK 26 +#define MOVE_ROLLING_KICK 27 +#define MOVE_SAND_ATTACK 28 +#define MOVE_HEADBUTT 29 +#define MOVE_HORN_ATTACK 30 +#define MOVE_FURY_ATTACK 31 +#define MOVE_HORN_DRILL 32 +#define MOVE_TACKLE 33 +#define MOVE_BODY_SLAM 34 +#define MOVE_WRAP 35 +#define MOVE_TAKE_DOWN 36 +#define MOVE_THRASH 37 +#define MOVE_DOUBLE_EDGE 38 +#define MOVE_TAIL_WHIP 39 +#define MOVE_POISON_STING 40 +#define MOVE_TWINEEDLE 41 +#define MOVE_PIN_MISSILE 42 +#define MOVE_LEER 43 +#define MOVE_BITE 44 +#define MOVE_GROWL 45 +#define MOVE_ROAR 46 +#define MOVE_SING 47 +#define MOVE_SUPERSONIC 48 +#define MOVE_SONIC_BOOM 49 +#define MOVE_DISABLE 50 +#define MOVE_ACID 51 +#define MOVE_EMBER 52 +#define MOVE_FLAMETHROWER 53 +#define MOVE_MIST 54 +#define MOVE_WATER_GUN 55 +#define MOVE_HYDRO_PUMP 56 +#define MOVE_SURF 57 +#define MOVE_ICE_BEAM 58 +#define MOVE_BLIZZARD 59 +#define MOVE_PSYBEAM 60 +#define MOVE_BUBBLE_BEAM 61 +#define MOVE_AURORA_BEAM 62 +#define MOVE_HYPER_BEAM 63 +#define MOVE_PECK 64 +#define MOVE_DRILL_PECK 65 +#define MOVE_SUBMISSION 66 +#define MOVE_LOW_KICK 67 +#define MOVE_COUNTER 68 +#define MOVE_SEISMIC_TOSS 69 +#define MOVE_STRENGTH 70 +#define MOVE_ABSORB 71 +#define MOVE_MEGA_DRAIN 72 +#define MOVE_LEECH_SEED 73 +#define MOVE_GROWTH 74 +#define MOVE_RAZOR_LEAF 75 +#define MOVE_SOLAR_BEAM 76 +#define MOVE_POISON_POWDER 77 +#define MOVE_STUN_SPORE 78 +#define MOVE_SLEEP_POWDER 79 +#define MOVE_PETAL_DANCE 80 +#define MOVE_STRING_SHOT 81 +#define MOVE_DRAGON_RAGE 82 +#define MOVE_FIRE_SPIN 83 +#define MOVE_THUNDER_SHOCK 84 +#define MOVE_THUNDERBOLT 85 +#define MOVE_THUNDER_WAVE 86 +#define MOVE_THUNDER 87 +#define MOVE_ROCK_THROW 88 +#define MOVE_EARTHQUAKE 89 +#define MOVE_FISSURE 90 +#define MOVE_DIG 91 +#define MOVE_TOXIC 92 +#define MOVE_CONFUSION 93 +#define MOVE_PSYCHIC 94 +#define MOVE_HYPNOSIS 95 +#define MOVE_MEDITATE 96 +#define MOVE_AGILITY 97 +#define MOVE_QUICK_ATTACK 98 +#define MOVE_RAGE 99 +#define MOVE_TELEPORT 100 +#define MOVE_NIGHT_SHADE 101 +#define MOVE_MIMIC 102 +#define MOVE_SCREECH 103 +#define MOVE_DOUBLE_TEAM 104 +#define MOVE_RECOVER 105 +#define MOVE_HARDEN 106 +#define MOVE_MINIMIZE 107 +#define MOVE_SMOKESCREEN 108 +#define MOVE_CONFUSE_RAY 109 +#define MOVE_WITHDRAW 110 +#define MOVE_DEFENSE_CURL 111 +#define MOVE_BARRIER 112 +#define MOVE_LIGHT_SCREEN 113 +#define MOVE_HAZE 114 +#define MOVE_REFLECT 115 +#define MOVE_FOCUS_ENERGY 116 +#define MOVE_BIDE 117 +#define MOVE_METRONOME 118 +#define MOVE_MIRROR_MOVE 119 +#define MOVE_SELF_DESTRUCT 120 +#define MOVE_EGG_BOMB 121 +#define MOVE_LICK 122 +#define MOVE_SMOG 123 +#define MOVE_SLUDGE 124 +#define MOVE_BONE_CLUB 125 +#define MOVE_FIRE_BLAST 126 +#define MOVE_WATERFALL 127 +#define MOVE_CLAMP 128 +#define MOVE_SWIFT 129 +#define MOVE_SKULL_BASH 130 +#define MOVE_SPIKE_CANNON 131 +#define MOVE_CONSTRICT 132 +#define MOVE_AMNESIA 133 +#define MOVE_KINESIS 134 +#define MOVE_SOFT_BOILED 135 +#define MOVE_HIGH_JUMP_KICK 136 +#define MOVE_GLARE 137 +#define MOVE_DREAM_EATER 138 +#define MOVE_POISON_GAS 139 +#define MOVE_BARRAGE 140 +#define MOVE_LEECH_LIFE 141 +#define MOVE_LOVELY_KISS 142 +#define MOVE_SKY_ATTACK 143 +#define MOVE_TRANSFORM 144 +#define MOVE_BUBBLE 145 +#define MOVE_DIZZY_PUNCH 146 +#define MOVE_SPORE 147 +#define MOVE_FLASH 148 +#define MOVE_PSYWAVE 149 +#define MOVE_SPLASH 150 +#define MOVE_ACID_ARMOR 151 +#define MOVE_CRABHAMMER 152 +#define MOVE_EXPLOSION 153 +#define MOVE_FURY_SWIPES 154 +#define MOVE_BONEMERANG 155 +#define MOVE_REST 156 +#define MOVE_ROCK_SLIDE 157 +#define MOVE_HYPER_FANG 158 +#define MOVE_SHARPEN 159 +#define MOVE_CONVERSION 160 +#define MOVE_TRI_ATTACK 161 +#define MOVE_SUPER_FANG 162 +#define MOVE_SLASH 163 +#define MOVE_SUBSTITUTE 164 +#define MOVE_STRUGGLE 165 +#define MOVE_SKETCH 166 +#define MOVE_TRIPLE_KICK 167 +#define MOVE_THIEF 168 +#define MOVE_SPIDER_WEB 169 +#define MOVE_MIND_READER 170 +#define MOVE_NIGHTMARE 171 +#define MOVE_FLAME_WHEEL 172 +#define MOVE_SNORE 173 +#define MOVE_CURSE 174 +#define MOVE_FLAIL 175 +#define MOVE_CONVERSION_2 176 +#define MOVE_AEROBLAST 177 +#define MOVE_COTTON_SPORE 178 +#define MOVE_REVERSAL 179 +#define MOVE_SPITE 180 +#define MOVE_POWDER_SNOW 181 +#define MOVE_PROTECT 182 +#define MOVE_MACH_PUNCH 183 +#define MOVE_SCARY_FACE 184 +#define MOVE_FEINT_ATTACK 185 +#define MOVE_SWEET_KISS 186 +#define MOVE_BELLY_DRUM 187 +#define MOVE_SLUDGE_BOMB 188 +#define MOVE_MUD_SLAP 189 +#define MOVE_OCTAZOOKA 190 +#define MOVE_SPIKES 191 +#define MOVE_ZAP_CANNON 192 +#define MOVE_FORESIGHT 193 +#define MOVE_DESTINY_BOND 194 +#define MOVE_PERISH_SONG 195 +#define MOVE_ICY_WIND 196 +#define MOVE_DETECT 197 +#define MOVE_BONE_RUSH 198 +#define MOVE_LOCK_ON 199 +#define MOVE_OUTRAGE 200 +#define MOVE_SANDSTORM 201 +#define MOVE_GIGA_DRAIN 202 +#define MOVE_ENDURE 203 +#define MOVE_CHARM 204 +#define MOVE_ROLLOUT 205 +#define MOVE_FALSE_SWIPE 206 +#define MOVE_SWAGGER 207 +#define MOVE_MILK_DRINK 208 +#define MOVE_SPARK 209 +#define MOVE_FURY_CUTTER 210 +#define MOVE_STEEL_WING 211 +#define MOVE_MEAN_LOOK 212 +#define MOVE_ATTRACT 213 +#define MOVE_SLEEP_TALK 214 +#define MOVE_HEAL_BELL 215 +#define MOVE_RETURN 216 +#define MOVE_PRESENT 217 +#define MOVE_FRUSTRATION 218 +#define MOVE_SAFEGUARD 219 +#define MOVE_PAIN_SPLIT 220 +#define MOVE_SACRED_FIRE 221 +#define MOVE_MAGNITUDE 222 +#define MOVE_DYNAMIC_PUNCH 223 +#define MOVE_MEGAHORN 224 +#define MOVE_DRAGON_BREATH 225 +#define MOVE_BATON_PASS 226 +#define MOVE_ENCORE 227 +#define MOVE_PURSUIT 228 +#define MOVE_RAPID_SPIN 229 +#define MOVE_SWEET_SCENT 230 +#define MOVE_IRON_TAIL 231 +#define MOVE_METAL_CLAW 232 +#define MOVE_VITAL_THROW 233 +#define MOVE_MORNING_SUN 234 +#define MOVE_SYNTHESIS 235 +#define MOVE_MOONLIGHT 236 +#define MOVE_HIDDEN_POWER 237 +#define MOVE_CROSS_CHOP 238 +#define MOVE_TWISTER 239 +#define MOVE_RAIN_DANCE 240 +#define MOVE_SUNNY_DAY 241 +#define MOVE_CRUNCH 242 +#define MOVE_MIRROR_COAT 243 +#define MOVE_PSYCH_UP 244 +#define MOVE_EXTREME_SPEED 245 +#define MOVE_ANCIENT_POWER 246 +#define MOVE_SHADOW_BALL 247 +#define MOVE_FUTURE_SIGHT 248 +#define MOVE_ROCK_SMASH 249 +#define MOVE_WHIRLPOOL 250 +#define MOVE_BEAT_UP 251 +#define MOVE_FAKE_OUT 252 +#define MOVE_UPROAR 253 +#define MOVE_STOCKPILE 254 +#define MOVE_SPIT_UP 255 +#define MOVE_SWALLOW 256 +#define MOVE_HEAT_WAVE 257 +#define MOVE_HAIL 258 +#define MOVE_TORMENT 259 +#define MOVE_FLATTER 260 +#define MOVE_WILL_O_WISP 261 +#define MOVE_MEMENTO 262 +#define MOVE_FACADE 263 +#define MOVE_FOCUS_PUNCH 264 +#define MOVE_SMELLING_SALTS 265 +#define MOVE_FOLLOW_ME 266 +#define MOVE_NATURE_POWER 267 +#define MOVE_CHARGE 268 +#define MOVE_TAUNT 269 +#define MOVE_HELPING_HAND 270 +#define MOVE_TRICK 271 +#define MOVE_ROLE_PLAY 272 +#define MOVE_WISH 273 +#define MOVE_ASSIST 274 +#define MOVE_INGRAIN 275 +#define MOVE_SUPERPOWER 276 +#define MOVE_MAGIC_COAT 277 +#define MOVE_RECYCLE 278 +#define MOVE_REVENGE 279 +#define MOVE_BRICK_BREAK 280 +#define MOVE_YAWN 281 +#define MOVE_KNOCK_OFF 282 +#define MOVE_ENDEAVOR 283 +#define MOVE_ERUPTION 284 +#define MOVE_SKILL_SWAP 285 +#define MOVE_IMPRISON 286 +#define MOVE_REFRESH 287 +#define MOVE_GRUDGE 288 +#define MOVE_SNATCH 289 +#define MOVE_SECRET_POWER 290 +#define MOVE_DIVE 291 +#define MOVE_ARM_THRUST 292 +#define MOVE_CAMOUFLAGE 293 +#define MOVE_TAIL_GLOW 294 +#define MOVE_LUSTER_PURGE 295 +#define MOVE_MIST_BALL 296 +#define MOVE_FEATHER_DANCE 297 +#define MOVE_TEETER_DANCE 298 +#define MOVE_BLAZE_KICK 299 +#define MOVE_MUD_SPORT 300 +#define MOVE_ICE_BALL 301 +#define MOVE_NEEDLE_ARM 302 +#define MOVE_SLACK_OFF 303 +#define MOVE_HYPER_VOICE 304 +#define MOVE_POISON_FANG 305 +#define MOVE_CRUSH_CLAW 306 +#define MOVE_BLAST_BURN 307 +#define MOVE_HYDRO_CANNON 308 +#define MOVE_METEOR_MASH 309 +#define MOVE_ASTONISH 310 +#define MOVE_WEATHER_BALL 311 +#define MOVE_AROMATHERAPY 312 +#define MOVE_FAKE_TEARS 313 +#define MOVE_AIR_CUTTER 314 +#define MOVE_OVERHEAT 315 +#define MOVE_ODOR_SLEUTH 316 +#define MOVE_ROCK_TOMB 317 +#define MOVE_SILVER_WIND 318 +#define MOVE_METAL_SOUND 319 +#define MOVE_GRASS_WHISTLE 320 +#define MOVE_TICKLE 321 +#define MOVE_COSMIC_POWER 322 +#define MOVE_WATER_SPOUT 323 +#define MOVE_SIGNAL_BEAM 324 +#define MOVE_SHADOW_PUNCH 325 +#define MOVE_EXTRASENSORY 326 +#define MOVE_SKY_UPPERCUT 327 +#define MOVE_SAND_TOMB 328 +#define MOVE_SHEER_COLD 329 +#define MOVE_MUDDY_WATER 330 +#define MOVE_BULLET_SEED 331 +#define MOVE_AERIAL_ACE 332 +#define MOVE_ICICLE_SPEAR 333 +#define MOVE_IRON_DEFENSE 334 +#define MOVE_BLOCK 335 +#define MOVE_HOWL 336 +#define MOVE_DRAGON_CLAW 337 +#define MOVE_FRENZY_PLANT 338 +#define MOVE_BULK_UP 339 +#define MOVE_BOUNCE 340 +#define MOVE_MUD_SHOT 341 +#define MOVE_POISON_TAIL 342 +#define MOVE_COVET 343 +#define MOVE_VOLT_TACKLE 344 +#define MOVE_MAGICAL_LEAF 345 +#define MOVE_WATER_SPORT 346 +#define MOVE_CALM_MIND 347 +#define MOVE_LEAF_BLADE 348 +#define MOVE_DRAGON_DANCE 349 +#define MOVE_ROCK_BLAST 350 +#define MOVE_SHOCK_WAVE 351 +#define MOVE_WATER_PULSE 352 +#define MOVE_DOOM_DESIRE 353 +#define MOVE_PSYCHO_BOOST 354 +#define MOVE_ROOST 355 +#define MOVE_GRAVITY 356 +#define MOVE_MIRACLE_EYE 357 +#define MOVE_WAKE_UP_SLAP 358 +#define MOVE_HAMMER_ARM 359 +#define MOVE_GYRO_BALL 360 +#define MOVE_HEALING_WISH 361 +#define MOVE_BRINE 362 +#define MOVE_NATURAL_GIFT 363 +#define MOVE_FEINT 364 +#define MOVE_PLUCK 365 +#define MOVE_TAILWIND 366 +#define MOVE_ACUPRESSURE 367 +#define MOVE_METAL_BURST 368 +#define MOVE_U_TURN 369 +#define MOVE_CLOSE_COMBAT 370 +#define MOVE_PAYBACK 371 +#define MOVE_ASSURANCE 372 +#define MOVE_EMBARGO 373 +#define MOVE_FLING 374 +#define MOVE_PSYCHO_SHIFT 375 +#define MOVE_TRUMP_CARD 376 +#define MOVE_HEAL_BLOCK 377 +#define MOVE_WRING_OUT 378 +#define MOVE_POWER_TRICK 379 +#define MOVE_GASTRO_ACID 380 +#define MOVE_LUCKY_CHANT 381 +#define MOVE_ME_FIRST 382 +#define MOVE_COPYCAT 383 +#define MOVE_POWER_SWAP 384 +#define MOVE_GUARD_SWAP 385 +#define MOVE_PUNISHMENT 386 +#define MOVE_LAST_RESORT 387 +#define MOVE_WORRY_SEED 388 +#define MOVE_SUCKER_PUNCH 389 +#define MOVE_TOXIC_SPIKES 390 +#define MOVE_HEART_SWAP 391 +#define MOVE_AQUA_RING 392 +#define MOVE_MAGNET_RISE 393 +#define MOVE_FLARE_BLITZ 394 +#define MOVE_FORCE_PALM 395 +#define MOVE_AURA_SPHERE 396 +#define MOVE_ROCK_POLISH 397 +#define MOVE_POISON_JAB 398 +#define MOVE_DARK_PULSE 399 +#define MOVE_NIGHT_SLASH 400 +#define MOVE_AQUA_TAIL 401 +#define MOVE_SEED_BOMB 402 +#define MOVE_AIR_SLASH 403 +#define MOVE_X_SCISSOR 404 +#define MOVE_BUG_BUZZ 405 +#define MOVE_DRAGON_PULSE 406 +#define MOVE_DRAGON_RUSH 407 +#define MOVE_POWER_GEM 408 +#define MOVE_DRAIN_PUNCH 409 +#define MOVE_VACUUM_WAVE 410 +#define MOVE_FOCUS_BLAST 411 +#define MOVE_ENERGY_BALL 412 +#define MOVE_BRAVE_BIRD 413 +#define MOVE_EARTH_POWER 414 +#define MOVE_SWITCHEROO 415 +#define MOVE_GIGA_IMPACT 416 +#define MOVE_NASTY_PLOT 417 +#define MOVE_BULLET_PUNCH 418 +#define MOVE_AVALANCHE 419 +#define MOVE_ICE_SHARD 420 +#define MOVE_SHADOW_CLAW 421 +#define MOVE_THUNDER_FANG 422 +#define MOVE_ICE_FANG 423 +#define MOVE_FIRE_FANG 424 +#define MOVE_SHADOW_SNEAK 425 +#define MOVE_MUD_BOMB 426 +#define MOVE_PSYCHO_CUT 427 +#define MOVE_ZEN_HEADBUTT 428 +#define MOVE_MIRROR_SHOT 429 +#define MOVE_FLASH_CANNON 430 +#define MOVE_ROCK_CLIMB 431 +#define MOVE_DEFOG 432 +#define MOVE_TRICK_ROOM 433 +#define MOVE_DRACO_METEOR 434 +#define MOVE_DISCHARGE 435 +#define MOVE_LAVA_PLUME 436 +#define MOVE_LEAF_STORM 437 +#define MOVE_POWER_WHIP 438 +#define MOVE_ROCK_WRECKER 439 +#define MOVE_CROSS_POISON 440 +#define MOVE_GUNK_SHOT 441 +#define MOVE_IRON_HEAD 442 +#define MOVE_MAGNET_BOMB 443 +#define MOVE_STONE_EDGE 444 +#define MOVE_CAPTIVATE 445 +#define MOVE_STEALTH_ROCK 446 +#define MOVE_GRASS_KNOT 447 +#define MOVE_CHATTER 448 +#define MOVE_JUDGMENT 449 +#define MOVE_BUG_BITE 450 +#define MOVE_CHARGE_BEAM 451 +#define MOVE_WOOD_HAMMER 452 +#define MOVE_AQUA_JET 453 +#define MOVE_ATTACK_ORDER 454 +#define MOVE_DEFEND_ORDER 455 +#define MOVE_HEAL_ORDER 456 +#define MOVE_HEAD_SMASH 457 +#define MOVE_DOUBLE_HIT 458 +#define MOVE_ROAR_OF_TIME 459 +#define MOVE_SPACIAL_REND 460 +#define MOVE_LUNAR_DANCE 461 +#define MOVE_CRUSH_GRIP 462 +#define MOVE_MAGMA_STORM 463 +#define MOVE_DARK_VOID 464 +#define MOVE_SEED_FLARE 465 +#define MOVE_OMINOUS_WIND 466 +#define MOVE_SHADOW_FORCE 467 + +#endif //POKEDIAMOND_CONSTANTS_MOVES_H diff --git a/include/move_data.h b/include/move_data.h index 975bcf8d..8da864b0 100644 --- a/include/move_data.h +++ b/include/move_data.h @@ -2,5 +2,6 @@ #define POKEDIAMOND_MOVE_DATA_H int FUN_0206AB30(u16 move, u8 ppUp); +u32 FUN_0206AB18(u16 move, u32 attr); #endif //POKEDIAMOND_MOVE_DATA_H -- cgit v1.2.3 From 8ce183851366b01c1bda5b2272f95e27ae7ef2fd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Jun 2020 17:03:39 -0400 Subject: through FUN_02069CF4 --- arm9/asm/party.s | 8 +- arm9/asm/pokemon_s.s | 692 +--------------------------------------- arm9/asm/scrcmd.s | 20 +- arm9/asm/scrcmd_12.s | 2 +- arm9/asm/scrcmd_18.s | 90 +++--- arm9/asm/scrcmd_24.s | 6 +- arm9/asm/scrcmd_3.s | 2 +- arm9/asm/scrcmd_4.s | 6 +- arm9/asm/scrcmd_5.s | 4 +- arm9/asm/scrcmd_9.s | 4 +- arm9/asm/unk_02025658.s | 6 +- arm9/asm/unk_0202B034.s | 4 +- arm9/asm/unk_02035068.s | 12 +- arm9/asm/unk_020377F0.s | 12 +- arm9/asm/unk_0204653C.s | 12 +- arm9/asm/unk_020476CC.s | 10 +- arm9/asm/unk_0204A01C.s | 26 +- arm9/asm/unk_02050E48.s | 6 +- arm9/asm/unk_02054C14.s | 8 +- arm9/asm/unk_0205FA2C.s | 2 +- arm9/asm/unk_0206439C.s | 2 +- arm9/asm/unk_020653EC.s | 2 +- arm9/asm/unk_0206BB5C.s | 6 +- arm9/asm/unk_0206C700.s | 2 +- arm9/asm/unk_0206F3FC.s | 24 +- arm9/asm/unk_02072548.s | 8 +- arm9/asm/unk_02073710.s | 2 +- arm9/asm/unk_02073DA8.s | 12 +- arm9/asm/unk_0207550C.s | 32 +- arm9/asm/unk_02079C70.s | 4 +- arm9/asm/unk_02080C38.s | 2 +- arm9/asm/unk_020842DC.s | 8 +- arm9/asm/unk_020859C0.s | 4 +- arm9/asm/unk_02087D00.s | 6 +- arm9/global.inc | 4 +- arm9/modules/05/asm/module_05.s | 34 +- arm9/modules/06/asm/module_06.s | 36 +-- arm9/modules/07/asm/module_07.s | 12 +- arm9/modules/09/asm/module_09.s | 16 +- arm9/modules/11/asm/module_11.s | 216 ++++++------- arm9/modules/14/asm/module_14.s | 36 +-- arm9/modules/16/asm/module_16.s | 12 +- arm9/modules/27/asm/module_27.s | 4 +- arm9/modules/28/asm/module_28.s | 4 +- arm9/modules/39/asm/module_39.s | 4 +- arm9/modules/56/asm/module_56.s | 8 +- arm9/modules/69/asm/module_69.s | 8 +- arm9/modules/71/asm/module_71.s | 76 ++--- arm9/modules/80/asm/module_80.s | 34 +- arm9/src/pokemon.c | 264 +++++++++++++++ include/constants/sinnoh_dex.h | 158 +++++++++ include/party.h | 19 ++ include/pokemon.h | 9 - include/proto.h | 1 - 54 files changed, 876 insertions(+), 1125 deletions(-) create mode 100644 include/constants/sinnoh_dex.h create mode 100644 include/party.h diff --git a/arm9/asm/party.s b/arm9/asm/party.s index 12a63f73..de141e25 100644 --- a/arm9/asm/party.s +++ b/arm9/asm/party.s @@ -153,13 +153,13 @@ _0206B992: pop {r3-r7, pc} .balign 4 - thumb_func_start FUN_0206B9AC -FUN_0206B9AC: ; 0x0206B9AC + thumb_func_start GetPartyCount +GetPartyCount: ; 0x0206B9AC ldr r0, [r0, #0x4] bx lr - thumb_func_start FUN_0206B9B0 -FUN_0206B9B0: ; 0x0206B9B0 + thumb_func_start GetPartyMonByIndex +GetPartyMonByIndex: ; 0x0206B9B0 push {r3-r5, lr} add r5, r0, #0x0 add r4, r1, #0x0 diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 472197ae..7e0497d2 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -9,693 +9,13 @@ .text - thumb_func_start FUN_02069818 -FUN_02069818: ; 0x02069818 - push {r3-r7, lr} - sub sp, #0x10 - add r7, r0, #0x0 - add r5, r1, #0x0 - mov r0, #0x0 - mov r1, #0x2c - str r2, [sp, #0x0] - str r0, [sp, #0x8] - bl AllocFromHeap - add r4, r0, #0x0 - add r0, r7, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x4] - add r0, r7, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetMonData - str r0, [sp, #0xc] - add r0, r7, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r6, r0, #0x18 - ldr r0, [sp, #0x4] - ldr r1, [sp, #0xc] - add r2, r4, #0x0 - bl LoadWotbl_HandleAlternateForme - ldr r0, [r5, #0x0] - lsl r0, r0, #0x1 - ldrh r2, [r4, r0] - ldr r0, _020698D8 ; =0x0000FFFF - cmp r2, r0 - bne _0206987A - add r0, r4, #0x0 - bl FreeToHeap - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_0206987A: - mov r0, #0xfe - lsl r0, r0, #0x8 - add r3, r2, #0x0 - and r3, r0 - lsl r6, r6, #0x9 - cmp r6, r3 - beq _020698AC - ldr r1, _020698D8 ; =0x0000FFFF -_0206988A: - ldr r2, [r5, #0x0] - add r2, r2, #0x1 - str r2, [r5, #0x0] - lsl r2, r2, #0x1 - ldrh r2, [r4, r2] - cmp r2, r1 - bne _020698A4 - add r0, r4, #0x0 - bl FreeToHeap - add sp, #0x10 - mov r0, #0x0 - pop {r3-r7, pc} -_020698A4: - add r3, r2, #0x0 - and r3, r0 - cmp r6, r3 - bne _0206988A -_020698AC: - cmp r6, r3 - bne _020698CC - ldr r0, _020698DC ; =0x000001FF - add r1, r2, #0x0 - and r1, r0 - ldr r0, [sp, #0x0] - strh r1, [r0, #0x0] - ldr r0, [r5, #0x0] - ldr r1, [sp, #0x0] - add r0, r0, #0x1 - str r0, [r5, #0x0] - ldrh r1, [r1, #0x0] - add r0, r7, #0x0 - bl FUN_02069698 - str r0, [sp, #0x8] -_020698CC: - add r0, r4, #0x0 - bl FreeToHeap - ldr r0, [sp, #0x8] - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 -_020698D8: .word 0x0000FFFF -_020698DC: .word 0x000001FF - - thumb_func_start FUN_020698E0 -FUN_020698E0: ; 0x020698E0 - ldr r3, _020698E4 ; =FUN_020698E8 - bx r3 - .balign 4 -_020698E4: .word FUN_020698E8 - - thumb_func_start FUN_020698E8 -FUN_020698E8: ; 0x020698E8 - push {r4-r6, lr} - sub sp, #0x8 - add r4, r1, #0x0 - add r6, r2, #0x0 - add r1, #0x36 - mov r2, #0x0 - add r5, r0, #0x0 - bl GetBoxMonData - add r1, sp, #0x0 - strh r0, [r1, #0x4] - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3a - mov r2, #0x0 - bl GetBoxMonData - add r1, sp, #0x0 - strb r0, [r1, #0x2] - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3e - mov r2, #0x0 - bl GetBoxMonData - add r1, sp, #0x0 - strb r0, [r1, #0x0] - add r1, r6, #0x0 - add r0, r5, #0x0 - add r1, #0x36 - mov r2, #0x0 - bl GetBoxMonData - add r1, sp, #0x0 - strh r0, [r1, #0x6] - add r1, r6, #0x0 - add r0, r5, #0x0 - add r1, #0x3a - mov r2, #0x0 - bl GetBoxMonData - add r1, sp, #0x0 - strb r0, [r1, #0x3] - add r1, r6, #0x0 - add r0, r5, #0x0 - add r1, #0x3e - mov r2, #0x0 - bl GetBoxMonData - add r1, sp, #0x0 - strb r0, [r1, #0x1] - add r1, r4, #0x0 - add r2, sp, #0x4 - add r0, r5, #0x0 - add r1, #0x36 - add r2, #0x2 - bl SetBoxMonData - add r1, r4, #0x0 - add r2, sp, #0x0 - add r0, r5, #0x0 - add r1, #0x3a - add r2, #0x3 - bl SetBoxMonData - add r4, #0x3e - add r2, sp, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, #0x1 - bl SetBoxMonData - add r1, r6, #0x0 - add r0, r5, #0x0 - add r1, #0x36 - add r2, sp, #0x4 - bl SetBoxMonData - add r1, r6, #0x0 - add r2, sp, #0x0 - add r0, r5, #0x0 - add r1, #0x3a - add r2, #0x2 - bl SetBoxMonData - add r6, #0x3e - add r0, r5, #0x0 - add r1, r6, #0x0 - add r2, sp, #0x0 - bl SetBoxMonData - add sp, #0x8 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_020699A4 -FUN_020699A4: ; 0x020699A4 - push {r3-r7, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - cmp r4, #0x3 - bhs _02069A0A - mov r7, #0x0 - add r6, sp, #0x0 -_020699B2: - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x37 - add r2, r7, #0x0 - bl GetMonData - add r1, r4, #0x0 - strh r0, [r6, #0x2] - add r0, r5, #0x0 - add r1, #0x3b - mov r2, #0x0 - bl GetMonData - add r1, r4, #0x0 - strb r0, [r6, #0x1] - add r0, r5, #0x0 - add r1, #0x3f - mov r2, #0x0 - bl GetMonData - add r1, r4, #0x0 - add r2, sp, #0x0 - strb r0, [r6, #0x0] - add r0, r5, #0x0 - add r1, #0x36 - add r2, #0x2 - bl SetMonData - add r1, r4, #0x0 - add r2, sp, #0x0 - add r0, r5, #0x0 - add r1, #0x3a - add r2, #0x1 - bl SetMonData - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x3e - add r2, sp, #0x0 - bl SetMonData - add r4, r4, #0x1 - cmp r4, #0x3 - blo _020699B2 -_02069A0A: - mov r1, #0x0 - add r0, sp, #0x0 - strh r1, [r0, #0x2] - strb r1, [r0, #0x1] - strb r1, [r0, #0x0] - add r2, sp, #0x0 - add r0, r5, #0x0 - mov r1, #0x39 - add r2, #0x2 - bl SetMonData - add r2, sp, #0x0 - add r0, r5, #0x0 - mov r1, #0x3d - add r2, #0x1 - bl SetMonData - add r0, r5, #0x0 - mov r1, #0x41 - add r2, sp, #0x0 - bl SetMonData - pop {r3-r7, pc} - - thumb_func_start MonHasMove -MonHasMove: ; 0x02069A38 - push {r3-r7, lr} - mov r4, #0x0 - add r6, r0, #0x0 - add r5, r1, #0x0 - add r7, r4, #0x0 -_02069A42: - add r1, r4, #0x0 - add r0, r6, #0x0 - add r1, #0x36 - add r2, r7, #0x0 - bl GetMonData - cmp r5, r0 - beq _02069A58 - add r4, r4, #0x1 - cmp r4, #0x4 - blt _02069A42 -_02069A58: - cmp r4, #0x4 - beq _02069A60 - mov r0, #0x1 - pop {r3-r7, pc} -_02069A60: - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02069A64 -FUN_02069A64: ; 0x02069A64 - push {r4-r5, lr} - sub sp, #0x1c - add r5, r0, #0x0 - add r4, r1, #0x0 - mov r0, #0x0 - str r0, [sp, #0x0] - add r3, r4, #0x0 - mov r2, #0x11 -_02069A74: - ldmia r5!, {r0-r1} - stmia r3!, {r0-r1} - sub r2, r2, #0x1 - bne _02069A74 - ldrh r1, [r4, #0x4] - lsl r0, r1, #0x1e - lsr r0, r0, #0x1f - beq _02069A8E - mov r0, #0x1 - bic r1, r0 - mov r0, #0x1 - orr r0, r1 - strh r0, [r4, #0x4] -_02069A8E: - add r0, r4, #0x0 - mov r1, #0x9f - add r2, sp, #0x0 - bl SetMonData - add r0, r4, #0x0 - mov r1, #0xa2 - add r2, sp, #0x0 - bl SetMonData - add r0, r4, #0x0 - mov r1, #0xa3 - add r2, sp, #0x0 - bl SetMonData - mov r0, #0x0 - bl CreateNewSealsObject - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0xa9 - add r2, r5, #0x0 - bl SetMonData - add r0, r5, #0x0 - bl FreeToHeap - add r0, r4, #0x0 - mov r1, #0xa1 - add r2, sp, #0x0 - bl SetMonData - mov r0, #0x0 - add r1, sp, #0x4 - mov r2, #0x18 - bl MIi_CpuClearFast - add r0, r4, #0x0 - mov r1, #0xaa - add r2, sp, #0x4 - bl SetMonData - add r0, r4, #0x0 - bl CalcMonLevelAndStats - add sp, #0x1c - pop {r4-r5, pc} - - thumb_func_start FUN_02069AEC -FUN_02069AEC: ; 0x02069AEC - push {r3-r7, lr} - str r0, [sp, #0x0] - bl FUN_0206B9AC - add r7, r0, #0x0 - mov r6, #0x1 - mov r5, #0x0 - cmp r7, #0x0 - ble _02069B3C -_02069AFE: - ldr r0, [sp, #0x0] - add r1, r5, #0x0 - bl FUN_0206B9B0 - mov r1, #0x5 - mov r2, #0x0 - add r4, r0, #0x0 - bl GetMonData - cmp r0, #0x0 - beq _02069B36 - add r0, r4, #0x0 - mov r1, #0x4c - mov r2, #0x0 - bl GetMonData - cmp r0, #0x0 - bne _02069B36 - add r0, r4, #0x0 - mov r1, #0xa0 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, r6 - bls _02069B36 - add r6, r0, #0x0 -_02069B36: - add r5, r5, #0x1 - cmp r5, r7 - blt _02069AFE -_02069B3C: - add r0, r6, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02069B40 -FUN_02069B40: ; 0x02069B40 - push {r3, lr} - sub sp, #0x8 - add r3, r0, #0x0 - mov r0, #0x2 - str r0, [sp, #0x0] - add r0, sp, #0x4 - mov r1, #0x6d ; NARC_POKETOOL_POKEZUKAN - mov r2, #0x0 - lsl r3, r3, #0x1 - bl ReadFromNarcMemberByIdPair - add r0, sp, #0x4 - ldrh r0, [r0, #0x0] - add sp, #0x8 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02069B60 -FUN_02069B60: ; 0x02069B60 - push {r3, lr} - sub sp, #0x8 - add r3, r0, #0x0 - mov r2, #0x0 - add r0, sp, #0x4 - strh r2, [r0, #0x0] - cmp r3, #0x97 - bhi _02069B7E - mov r0, #0x2 - str r0, [sp, #0x0] - add r0, sp, #0x4 - mov r1, #0x91 ; NARC_POKETOOL_SHINZUKAN - lsl r3, r3, #0x1 - bl ReadFromNarcMemberByIdPair -_02069B7E: - add r0, sp, #0x4 - ldrh r0, [r0, #0x0] - add sp, #0x8 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02069B88 -FUN_02069B88: ; 0x02069B88 - push {r3-r4} - add r4, r0, #0x0 - add r3, r1, #0x0 - mov r2, #0x1d -_02069B90: - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - sub r2, r2, #0x1 - bne _02069B90 - ldr r0, [r4, #0x0] - str r0, [r3, #0x0] - pop {r3-r4} - bx lr - - thumb_func_start FUN_02069BA0 -FUN_02069BA0: ; 0x02069BA0 - push {r3-r4} - add r4, r0, #0x0 - add r3, r1, #0x0 - mov r2, #0x11 -_02069BA8: - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - sub r2, r2, #0x1 - bne _02069BA8 - pop {r3-r4} - bx lr - - thumb_func_start FUN_02069BB4 -FUN_02069BB4: ; 0x02069BB4 - push {r3-r4} - add r4, r0, #0x0 - add r3, r1, #0x0 - mov r2, #0x11 -_02069BBC: - ldmia r4!, {r0-r1} - stmia r3!, {r0-r1} - sub r2, r2, #0x1 - bne _02069BBC - pop {r3-r4} - bx lr - - thumb_func_start FUN_02069BC8 -FUN_02069BC8: ; 0x02069BC8 - ldr r3, _02069BCC ; =FUN_02069BD0 - bx r3 - .balign 4 -_02069BCC: .word FUN_02069BD0 - - thumb_func_start FUN_02069BD0 -FUN_02069BD0: ; 0x02069BD0 - push {r4, lr} - add r4, r1, #0x0 - mov r1, #0x0 - add r2, r1, #0x0 - bl GetBoxMonData - add r1, r4, #0x0 - bl FUN_02069BE4 - pop {r4, pc} - - thumb_func_start FUN_02069BE4 -FUN_02069BE4: ; 0x02069BE4 - push {r4, lr} - add r4, r1, #0x0 - bl GetNatureFromPersonality - lsl r1, r0, #0x2 - add r1, r0, r1 - ldr r0, _02069BF8 ; =UNK_020F7F16 - add r0, r0, r1 - ldrsb r0, [r4, r0] - pop {r4, pc} - .balign 4 -_02069BF8: .word UNK_020F7F16 - - thumb_func_start FUN_02069BFC -FUN_02069BFC: ; 0x02069BFC - push {r3-r7, lr} - add r4, r0, #0x0 - add r7, r1, #0x0 - mov r0, #0x0 - mov r1, #0x2c - add r5, r2, #0x0 - bl AllocFromHeap - add r6, r0, #0x0 - add r0, r4, #0x0 - add r1, r7, #0x0 - add r2, r6, #0x0 - bl LoadWotbl_HandleAlternateForme - ldrh r1, [r6, #0x0] - ldr r0, _02069C44 ; =0x0000FFFF - mov r4, #0x0 - cmp r1, r0 - beq _02069C3A - ldr r1, _02069C48 ; =0x000001FF - ldr r2, _02069C44 ; =0x0000FFFF - add r0, r6, #0x0 -_02069C28: - ldrh r3, [r0, #0x0] - add r0, r0, #0x2 - add r4, r4, #0x1 - and r3, r1 - strh r3, [r5, #0x0] - ldrh r3, [r0, #0x0] - add r5, r5, #0x2 - cmp r3, r2 - bne _02069C28 -_02069C3A: - add r0, r6, #0x0 - bl FreeToHeap - add r0, r4, #0x0 - pop {r3-r7, pc} - .balign 4 -_02069C44: .word 0x0000FFFF -_02069C48: .word 0x000001FF - - thumb_func_start FUN_02069C4C -FUN_02069C4C: ; 0x02069C4C - push {r3-r7, lr} - add r5, r0, #0x0 - bl FUN_0206B9AC - add r6, r0, #0x0 - bl rand_LC - mov r1, #0x1 - lsl r1, r1, #0xe - cmp r0, r1 - beq _02069C70 - lsl r1, r1, #0x1 - cmp r0, r1 - beq _02069C70 - mov r1, #0x3 - lsl r1, r1, #0xe - cmp r0, r1 - bne _02069CF2 -_02069C70: - bl rand_LC - add r1, r6, #0x0 - bl _s32_div_f - add r0, r5, #0x0 - add r7, r1, #0x0 - bl FUN_0206B9B0 - mov r1, #0x5 - mov r2, #0x0 - add r4, r0, #0x0 - bl GetMonData - cmp r0, #0x0 - beq _02069C70 - add r0, r4, #0x0 - mov r1, #0x4c - mov r2, #0x0 - bl GetMonData - cmp r0, #0x0 - bne _02069C70 - add r0, r7, #0x0 - bl MaskOfFlagNo - add r1, r0, #0x0 - lsl r1, r1, #0x18 - add r0, r5, #0x0 - lsr r1, r1, #0x18 - bl FUN_02069CF4 - cmp r0, #0x0 - bne _02069CF2 - add r5, sp, #0x0 - mov r6, #0x7 -_02069CB8: - bl rand_LC - strb r0, [r5, #0x0] - ldrb r2, [r5, #0x0] - add r1, r2, #0x0 - and r1, r6 - beq _02069CB8 - mov r0, #0xf0 - tst r0, r2 - beq _02069CD0 - add r0, sp, #0x0 - strb r1, [r0, #0x0] -_02069CD0: - add r1, sp, #0x0 - ldrb r2, [r1, #0x0] - lsl r0, r2, #0x4 - orr r0, r2 - strb r0, [r1, #0x0] - ldrb r2, [r1, #0x0] - mov r0, #0xf3 - and r0, r2 - strb r0, [r1, #0x0] - ldrb r0, [r1, #0x0] - add r2, sp, #0x0 - add r0, r0, #0x1 - strb r0, [r1, #0x0] - add r0, r4, #0x0 - mov r1, #0x99 - bl SetMonData -_02069CF2: - pop {r3-r7, pc} - - thumb_func_start FUN_02069CF4 -FUN_02069CF4: ; 0x02069CF4 - push {r3-r7, lr} - mov r6, #0x0 - add r5, r1, #0x0 - str r0, [sp, #0x0] - mov r4, #0x1 - add r7, r6, #0x0 - cmp r5, #0x0 - beq _02069D32 -_02069D04: - mov r0, #0x1 - tst r0, r5 - beq _02069D26 - ldr r0, [sp, #0x0] - add r1, r6, #0x0 - bl FUN_0206B9B0 - mov r1, #0x99 - mov r2, #0x0 - bl GetMonData - cmp r0, #0x0 - beq _02069D26 - add r0, r7, #0x0 - orr r0, r4 - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 -_02069D26: - lsl r0, r5, #0x17 - add r6, r6, #0x1 - lsl r4, r4, #0x1 - lsr r5, r0, #0x18 - bne _02069D04 - b _02069D4A -_02069D32: - add r1, r6, #0x0 - bl FUN_0206B9B0 - mov r1, #0x99 - add r2, r6, #0x0 - bl GetMonData - cmp r0, #0x0 - beq _02069D4A - add r0, r7, #0x1 - lsl r0, r0, #0x18 - lsr r7, r0, #0x18 -_02069D4A: - add r0, r7, #0x0 - pop {r3-r7, pc} - .balign 4 - thumb_func_start FUN_02069D50 FUN_02069D50: ; 0x02069D50 push {r4-r7, lr} sub sp, #0xc str r0, [sp, #0x0] add r5, r1, #0x0 - bl FUN_0206B9AC + bl GetPartyCount mov r6, #0x0 str r0, [sp, #0x4] cmp r0, #0x0 @@ -704,7 +24,7 @@ FUN_02069D50: ; 0x02069D50 _02069D66: ldr r0, [sp, #0x0] add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x5 mov r2, #0x0 add r7, r0, #0x0 @@ -759,7 +79,7 @@ FUN_02069DC8: ; 0x02069DC8 push {r3-r7, lr} sub sp, #0x8 add r5, r0, #0x0 - bl FUN_0206B9AC + bl GetPartyCount add r7, r0, #0x0 bl rand_LC mov r1, #0x3 @@ -774,7 +94,7 @@ FUN_02069DC8: ; 0x02069DC8 _02069DEC: add r0, r5, #0x0 add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x5 mov r2, #0x0 add r6, r0, #0x0 @@ -796,7 +116,7 @@ _02069DEC: beq _02069E40 add r0, r5, #0x0 sub r1, r4, #0x1 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x99 mov r2, #0x0 add r6, r0, #0x0 @@ -814,7 +134,7 @@ _02069E40: bge _02069E6A add r0, r5, #0x0 add r1, r4, #0x1 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x99 mov r2, #0x0 add r6, r0, #0x0 diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s index 8594afe7..4a3c3f82 100644 --- a/arm9/asm/scrcmd.s +++ b/arm9/asm/scrcmd.s @@ -3953,7 +3953,7 @@ FUN_0203B8A0: ; 0x0203B8A0 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex bl FUN_020690CC strh r0, [r4, #0x0] mov r0, #0x0 @@ -4602,7 +4602,7 @@ FUN_0203BDB8: ; 0x0203BDB8 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, r0, #0x0 mov r0, #0x0 str r0, [sp, #0x0] @@ -5526,7 +5526,7 @@ FUN_0203C520: ; 0x0203C520 ldr r0, [r4, #0xc] bl FUN_0206BB1C add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x74 add r2, sp, #0xc add r7, r0, #0x0 @@ -6063,7 +6063,7 @@ FUN_0203C990: ; 0x0203C990 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r6, r0, #0x0 add r0, r5, #0x0 add r0, #0x80 @@ -10081,7 +10081,7 @@ FUN_0203E9CC: ; 0x0203E9CC ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r5, r0, #0x0 mov r1, #0xd mov r2, #0x0 @@ -10193,7 +10193,7 @@ FUN_0203EAB0: ; 0x0203EAB0 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r7, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x5 mov r2, #0x0 bl GetMonData @@ -10703,7 +10703,7 @@ FUN_0203EED8: ; 0x0203EED8 ldr r0, [r0, #0xc] bl FUN_0206BB1C str r0, [sp, #0x0] - bl FUN_0206B9AC + bl GetPartyCount add r4, #0x80 add r6, r0, #0x0 ldr r0, [r4, #0x0] @@ -10716,7 +10716,7 @@ FUN_0203EED8: ; 0x0203EED8 _0203EF18: ldr r0, [sp, #0x0] add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x5 mov r2, #0x0 add r4, r0, #0x0 @@ -10761,7 +10761,7 @@ FUN_0203EF58: ; 0x0203EF58 ldr r0, [r0, #0xc] bl FUN_0206BB1C str r0, [sp, #0xc] - bl FUN_0206B9AC + bl GetPartyCount add r2, sp, #0x18 mov r4, #0x0 ldr r3, _0203F008 ; =UNK_020F34FC @@ -10782,7 +10782,7 @@ FUN_0203EF58: ; 0x0203EF58 _0203EFA2: ldr r0, [sp, #0xc] add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r6, r0, #0x0 mov r1, #0x5 mov r2, #0x0 diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s index 3c0ac2f0..e97249d2 100644 --- a/arm9/asm/scrcmd_12.s +++ b/arm9/asm/scrcmd_12.s @@ -284,7 +284,7 @@ FUN_02042F10: ; 0x02042F10 push {r3, lr} ldr r0, [r0, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0x6 bge _02042F24 mov r0, #0x1 diff --git a/arm9/asm/scrcmd_18.s b/arm9/asm/scrcmd_18.s index 4b248a90..bcd4dc70 100644 --- a/arm9/asm/scrcmd_18.s +++ b/arm9/asm/scrcmd_18.s @@ -91,7 +91,7 @@ FUN_0204434C: ; 0x0204434C ldr r0, [r5, #0xc] bl FUN_0206BB1C ldrh r1, [r6, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r5, r0, #0x0 @@ -138,7 +138,7 @@ FUN_020443A8: ; 0x020443A8 ldr r0, [r5, #0xc] bl FUN_0206BB1C ldrh r1, [r6, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x7 mov r2, #0x0 bl GetMonData @@ -187,7 +187,7 @@ FUN_02044414: ; 0x02044414 ldr r0, [r4, #0xc] bl FUN_0206BB1C add r6, r0, #0x0 - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x18 lsr r0, r0, #0x18 cmp r0, #0x6 @@ -289,7 +289,7 @@ FUN_020444F4: ; 0x020444F4 ldr r0, [r7, #0xc] bl FUN_0206BB1C add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r2, #0x0 mov r1, #0x4c add r4, r0, #0x0 @@ -358,7 +358,7 @@ FUN_02044598: ; 0x02044598 ldr r0, [sp, #0x4] ldr r0, [r0, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x18 lsr r7, r0, #0x18 ldr r1, _02044650 ; =0x00000006 @@ -371,7 +371,7 @@ _020445E4: ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 @@ -444,7 +444,7 @@ FUN_02044658: ; 0x02044658 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex bl FUN_0204A32C strh r0, [r4, #0x0] mov r0, #0x0 @@ -474,7 +474,7 @@ FUN_0204469C: ; 0x0204469C str r0, [sp, #0x0] ldr r0, [r7, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x8] @@ -489,7 +489,7 @@ _020446EA: ldr r0, [r7, #0xc] bl FUN_0206BB1C add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r6, r0, #0x0 @@ -544,7 +544,7 @@ FUN_02044730: ; 0x02044730 ldr r0, [r6, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r2, #0x0 mov r1, #0x4c add r5, r0, #0x0 @@ -585,7 +585,7 @@ FUN_0204478C: ; 0x0204478C add r6, r0, #0x0 ldr r0, [r5, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x18 lsr r0, r0, #0x18 cmp r6, r0 @@ -597,7 +597,7 @@ _020447D2: ldr r0, [r5, #0xc] bl FUN_0206BB1C add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r5, r0, #0x0 @@ -639,7 +639,7 @@ FUN_02044800: ; 0x02044800 str r0, [sp, #0x0] ldr r0, [r7, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x18 lsr r6, r0, #0x18 ldr r1, _02044884 ; =0x000000FF @@ -651,7 +651,7 @@ _02044848: ldr r0, [r7, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 @@ -704,7 +704,7 @@ FUN_0204488C: ; 0x0204488C ldr r0, [r4, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x9 mov r2, #0x0 bl GetMonData @@ -744,7 +744,7 @@ FUN_020448D4: ; 0x020448D4 ldr r0, [r6, #0xc] bl FUN_0206BB1C ldr r1, [sp, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x9 mov r2, #0x0 add r5, r0, #0x0 @@ -834,7 +834,7 @@ FUN_020449A4: ; 0x020449A4 ldr r0, [r6, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x9 mov r2, #0x0 add r5, r0, #0x0 @@ -890,7 +890,7 @@ FUN_02044A0C: ; 0x02044A0C ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r7, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, #0x13 add r1, r4, #0x0 mov r2, #0x0 @@ -952,7 +952,7 @@ FUN_02044A94: ; 0x02044A94 ldr r0, [r4, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, r0, #0x0 mov r1, #0xb0 mov r2, #0x0 @@ -982,7 +982,7 @@ FUN_02044B00: ; 0x02044B00 add r5, r0, #0x0 ldr r0, [r4, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount strh r0, [r5, #0x0] mov r0, #0x0 pop {r3-r5, pc} @@ -1003,7 +1003,7 @@ FUN_02044B2C: ; 0x02044B2C str r0, [sp, #0x0] ldr r0, [r6, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount mov r5, #0x0 add r7, r0, #0x0 add r4, r5, #0x0 @@ -1013,7 +1013,7 @@ _02044B5A: ldr r0, [r6, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 bl GetMonData @@ -1055,7 +1055,7 @@ FUN_02044B84: ; 0x02044B84 str r0, [sp, #0x0] ldr r0, [r7, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount mov r5, #0x0 add r4, r5, #0x0 str r0, [sp, #0x8] @@ -1068,7 +1068,7 @@ _02044BC8: ldr r0, [r7, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r6, r0, #0x0 @@ -1114,7 +1114,7 @@ FUN_02044C0C: ; 0x02044C0C str r0, [sp, #0x4] ldr r0, [r7, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount mov r5, #0x0 add r4, r5, #0x0 str r0, [sp, #0x8] @@ -1124,7 +1124,7 @@ _02044C44: ldr r0, [r7, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r6, r0, #0x0 @@ -1168,7 +1168,7 @@ FUN_02044C88: ; 0x02044C88 str r0, [sp, #0x0] ldr r0, [r6, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount mov r5, #0x0 add r7, r0, #0x0 add r4, r5, #0x0 @@ -1178,7 +1178,7 @@ _02044CB6: ldr r0, [r6, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 bl GetMonData @@ -1211,7 +1211,7 @@ FUN_02044CE0: ; 0x02044CE0 str r0, [sp, #0x0] ldr r0, [r5, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x10 lsr r6, r0, #0x10 ldr r4, _02044D40 ; =0x00000000 @@ -1223,7 +1223,7 @@ _02044D12: ldr r0, [r5, #0xc] bl FUN_0206BB1C add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r7, #0x0 mov r2, #0x0 bl GetMonData @@ -1269,7 +1269,7 @@ FUN_02044D44: ; 0x02044D44 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x6f mov r2, #0x0 bl GetMonData @@ -1301,7 +1301,7 @@ FUN_02044D8C: ; 0x02044D8C ldr r0, [r6, #0xc] bl FUN_0206BB1C add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r6, r0, #0x0 @@ -1382,7 +1382,7 @@ FUN_02044E34: ; 0x02044E34 ldr r0, [r5, #0xc] bl FUN_0206BB1C add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r4, #0x0 bl FUN_020699A4 mov r0, #0x0 @@ -1420,7 +1420,7 @@ FUN_02044E78: ; 0x02044E78 ldr r0, [r5, #0xc] bl FUN_0206BB1C add r1, r7, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, #0x36 add r1, r4, #0x0 mov r2, #0x0 @@ -1454,7 +1454,7 @@ FUN_02044ED8: ; 0x02044ED8 ldr r0, [r4, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x6 mov r2, #0x0 bl GetMonData @@ -1478,7 +1478,7 @@ FUN_02044F20: ; 0x02044F20 ldr r0, [r4, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r2, #0x0 add r1, sp, #0x0 strh r2, [r1, #0x0] @@ -1512,7 +1512,7 @@ FUN_02044F58: ; 0x02044F58 str r0, [sp, #0x0] ldr r0, [r7, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x18 lsr r6, r0, #0x18 ldr r5, _02044FE4 ; =0x00000000 @@ -1523,7 +1523,7 @@ _02044F9E: ldr r0, [r7, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 @@ -1580,7 +1580,7 @@ FUN_02044FE8: ; 0x02044FE8 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r4, #0x0 add r6, r0, #0x0 add r5, r4, #0x0 @@ -1628,7 +1628,7 @@ FUN_0204505C: ; 0x0204505C ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x10 add r4, #0x80 lsr r6, r0, #0x10 @@ -1649,7 +1649,7 @@ _0204509A: _020450A6: ldr r0, [sp, #0xc] add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 @@ -1725,7 +1725,7 @@ FUN_02045104: ; 0x02045104 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r7, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r5, r0, #0x0 lsl r0, r6, #0x18 lsr r0, r0, #0x18 @@ -1768,7 +1768,7 @@ FUN_02045170: ; 0x02045170 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r5, r0, #0x0 lsl r0, r4, #0x18 lsr r0, r0, #0x18 @@ -1800,7 +1800,7 @@ FUN_020451D0: ; 0x020451D0 ldr r0, [r0, #0x0] ldr r0, [r0, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x10 add r4, #0x80 lsr r6, r0, #0x10 @@ -1817,7 +1817,7 @@ _0204520C: _02045212: add r0, r7, #0x0 add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 diff --git a/arm9/asm/scrcmd_24.s b/arm9/asm/scrcmd_24.s index ed57d780..85f03ebe 100644 --- a/arm9/asm/scrcmd_24.s +++ b/arm9/asm/scrcmd_24.s @@ -102,7 +102,7 @@ FUN_02045E20: ; 0x02045E20 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x20 bl FUN_02088DF8 add r5, r0, #0x0 @@ -185,7 +185,7 @@ FUN_02045EE4: ; 0x02045EE4 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, r0, #0x0 mov r1, #0x20 bl FUN_02088DF8 @@ -222,7 +222,7 @@ FUN_02045F24: ; 0x02045F24 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r6, r0, #0x0 mov r0, #0x20 mov r1, #0x4 diff --git a/arm9/asm/scrcmd_3.s b/arm9/asm/scrcmd_3.s index 54c1e00c..959b85d1 100644 --- a/arm9/asm/scrcmd_3.s +++ b/arm9/asm/scrcmd_3.s @@ -119,7 +119,7 @@ FUN_0203FF10: ; 0x0203FF10 ldr r0, [r0, #0xc] bl FUN_0206BB1C add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0x10] add r0, r4, #0x0 mov r1, #0x4 diff --git a/arm9/asm/scrcmd_4.s b/arm9/asm/scrcmd_4.s index ad51e8aa..078e899f 100644 --- a/arm9/asm/scrcmd_4.s +++ b/arm9/asm/scrcmd_4.s @@ -92,7 +92,7 @@ FUN_02040748: ; 0x02040748 ldr r0, [r6, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r2, r0, #0x0 ldr r0, [r7, #0x0] add r1, r4, #0x0 @@ -315,7 +315,7 @@ FUN_0204091C: ; 0x0204091C ldr r0, [r6, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r2, r0, #0x0 ldr r0, [r7, #0x0] add r1, r4, #0x0 @@ -943,7 +943,7 @@ FUN_02040E4C: ; 0x02040E4C ldr r0, [r6, #0xc] bl FUN_0206BB1C ldr r1, [sp, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, #0x36 add r1, r4, #0x0 mov r2, #0x0 diff --git a/arm9/asm/scrcmd_5.s b/arm9/asm/scrcmd_5.s index 0a13ac22..bb5b7be6 100644 --- a/arm9/asm/scrcmd_5.s +++ b/arm9/asm/scrcmd_5.s @@ -75,7 +75,7 @@ FUN_020411C4: ; 0x020411C4 str r0, [sp, #0x0] ldr r0, [r7, #0xc] bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x10 lsr r6, r0, #0x10 ldr r0, _0204133C ; =0x00000000 @@ -87,7 +87,7 @@ _0204123C: ldr r0, [r7, #0xc] bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 diff --git a/arm9/asm/scrcmd_9.s b/arm9/asm/scrcmd_9.s index f75ac5ce..8ea6313d 100644 --- a/arm9/asm/scrcmd_9.s +++ b/arm9/asm/scrcmd_9.s @@ -253,7 +253,7 @@ FUN_02042000: ; 0x02042000 bl FUN_020394F0 add r1, r0, #0x0 add r0, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r5, #0x80 add r1, r0, #0x0 ldr r0, [r5, #0x0] @@ -417,7 +417,7 @@ _02042170: bl FUN_020394F0 add r1, r0, #0x0 add r0, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0x0 add r0, r4, #0x0 mov r2, #0x4 diff --git a/arm9/asm/unk_02025658.s b/arm9/asm/unk_02025658.s index b18eca9c..9cf2dfa2 100644 --- a/arm9/asm/unk_02025658.s +++ b/arm9/asm/unk_02025658.s @@ -109,14 +109,14 @@ FUN_020256DC: ; 0x020256DC str r0, [r5, #0x0] ldr r0, [sp, #0x0] mov r6, #0x0 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 bge _020257AE add r5, #0x18 _0202572A: ldr r0, [sp, #0x0] add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x5 mov r2, #0x0 add r7, r0, #0x0 @@ -170,7 +170,7 @@ _0202572A: lsl r0, r0, #0x18 lsr r4, r0, #0x18 ldr r0, [sp, #0x0] - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _0202572A _020257AE: diff --git a/arm9/asm/unk_0202B034.s b/arm9/asm/unk_0202B034.s index 1f26f48a..2708bee6 100644 --- a/arm9/asm/unk_0202B034.s +++ b/arm9/asm/unk_0202B034.s @@ -58,7 +58,7 @@ _0202B07E: add r0, r0, r2 str r0, [sp, #0x14] ldr r0, [sp, #0x4] - bl FUN_0206B9AC + bl GetPartyCount str r0, [sp, #0x10] mov r0, #0xb mov r1, #0x0 @@ -77,7 +77,7 @@ _0202B07E: _0202B0BA: ldr r0, [sp, #0x4] add r1, r7, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, r0, #0x0 bl AcquireMonLock str r0, [sp, #0xc] diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s index 3b0e21b2..6cb0e026 100644 --- a/arm9/asm/unk_02035068.s +++ b/arm9/asm/unk_02035068.s @@ -1855,7 +1855,7 @@ _02035ECC: ldrb r0, [r0, #0x0] strb r0, [r7, #0x14] ldr r0, [r7, #0x0] - bl FUN_0206B9AC + bl GetPartyCount strb r0, [r7, #0x13] mov r0, #0x0 strh r0, [r7, #0x18] @@ -2050,7 +2050,7 @@ _020360AC: add r1, r6, #0x0 add r1, #0x22 ldrb r1, [r1, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0x0 add r0, r5, #0x0 mov r2, #0xb @@ -2444,7 +2444,7 @@ _020363F6: add r5, r0, #0x0 ldr r0, [sp, #0x4] add r1, r7, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0xc] mov r0, #0x7f lsl r0, r0, #0x2 @@ -3277,7 +3277,7 @@ _02036B0E: ldr r0, [r6, #0xc] bl FUN_0206BB1C add r1, r7, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r2, r0, #0x0 ldr r0, [r5, #0x14] add r1, r6, #0x0 @@ -3547,7 +3547,7 @@ FUN_02036CEC: ; 0x02036CEC str r5, [r4, #0x1c] ldrb r1, [r7, #0x2] ldr r0, [r4, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0x0 mov r0, #0x7e lsl r0, r0, #0x2 @@ -3648,7 +3648,7 @@ FUN_02036E08: ; 0x02036E08 bl FUN_0206BB1C ldrb r1, [r5, #0x0] str r0, [sp, #0x20] - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0x24] ldrb r0, [r5, #0x1] cmp r0, #0x0 diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s index 3959856b..2e9774eb 100644 --- a/arm9/asm/unk_020377F0.s +++ b/arm9/asm/unk_020377F0.s @@ -732,7 +732,7 @@ FUN_02037C00: ; 0x02037C00 strb r0, [r4, #0x11] strb r6, [r4, #0x14] ldr r0, [r4, #0x0] - bl FUN_0206B9AC + bl GetPartyCount strb r0, [r4, #0x13] mov r0, #0x0 strh r0, [r4, #0x18] @@ -789,7 +789,7 @@ FUN_02037C7C: ; 0x02037C7C mov r0, #0x0 strb r0, [r4, #0x14] ldr r0, [r4, #0x0] - bl FUN_0206B9AC + bl GetPartyCount strb r0, [r4, #0x13] mov r0, #0x0 strh r0, [r4, #0x18] @@ -1231,7 +1231,7 @@ FUN_0203800C: ; 0x0203800C add r0, r5, #0x0 bl FUN_0206BB1C add r1, r7, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [r4, #0x0] add r0, r5, #0x0 bl FUN_02027E24 @@ -1652,7 +1652,7 @@ _02038386: beq _020383C8 ldr r0, [r4, #0xc] ldr r1, [r4, #0x30] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0x0 ldr r0, [r4, #0x44] bl FUN_02069B88 @@ -1906,7 +1906,7 @@ _02038590: ldr r0, [r5, #0xc] bl FUN_0206BB1C ldr r1, [r4, #0x4] - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r2, [r4, #0xc] mov r1, #0x75 add r2, #0x1c @@ -1973,7 +1973,7 @@ _02038620: ldr r0, [r7, #0xc] bl FUN_0206BB1C ldr r1, [r4, #0x4] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x6f mov r2, #0x0 add r6, r0, #0x0 diff --git a/arm9/asm/unk_0204653C.s b/arm9/asm/unk_0204653C.s index cc6edb17..8a0cf5cd 100644 --- a/arm9/asm/unk_0204653C.s +++ b/arm9/asm/unk_0204653C.s @@ -945,7 +945,7 @@ _02046CAA: ldr r0, [r5, #0x10] mov r1, #0x0 ldr r0, [r0, #0x8] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0x0 ldr r0, [sp, #0x4] bl FUN_02060FE0 @@ -1025,7 +1025,7 @@ _02046D5C: cmp r0, #0x12 bne _02046D8C add r0, r5, #0x0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0x6 bne _02046D8C mov r2, #0x0 @@ -1711,7 +1711,7 @@ _0204732A: bne _020473C8 ldr r0, [r1, #0x8] mov r1, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x5 mov r2, #0x0 bl GetMonData @@ -1758,7 +1758,7 @@ _02047390: bne _020473C8 ldr r0, [r1, #0x8] mov r1, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x5 mov r2, #0x0 bl GetMonData @@ -1827,7 +1827,7 @@ _02047400: blo _020474FC ldr r0, [r4, #0x8] mov r1, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r6, r0, #0x0 ldr r0, [r5, #0xc] bl FUN_02023918 @@ -1871,7 +1871,7 @@ _02047470: lsl r0, r0, #0x2 add r0, r4, r0 ldr r0, [r0, #0x4] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r6, r0, #0x0 ldr r0, [r5, #0xc] bl FUN_02023918 diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s index 619b8594..e167517a 100644 --- a/arm9/asm/unk_020476CC.s +++ b/arm9/asm/unk_020476CC.s @@ -649,19 +649,19 @@ FUN_02047BC0: ; 0x02047BC0 bl AllocMonZeroed add r5, r0, #0x0 ldr r0, [sp, #0x14] - bl FUN_0206B9AC + bl GetPartyCount add r1, r0, #0x0 ldr r0, [r6, #0x4] bl FUN_0206B8CC ldr r0, [sp, #0x14] mov r4, #0x0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0x0 ble _02047C98 _02047C40: ldr r0, [sp, #0x14] add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r5, #0x0 bl FUN_02069B88 add r0, r5, #0x0 @@ -692,7 +692,7 @@ _02047C82: bl FUN_020479FC ldr r0, [sp, #0x14] add r4, r4, #0x1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _02047C40 _02047C98: @@ -856,7 +856,7 @@ _02047DEE: ldrb r1, [r7, r6] ldr r0, [sp, #0x4] sub r1, r1, #0x1 - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r1, [sp, #0x8] bl FUN_02069B88 ldr r1, [sp, #0x8] diff --git a/arm9/asm/unk_0204A01C.s b/arm9/asm/unk_0204A01C.s index 5ea5d8c5..10664314 100644 --- a/arm9/asm/unk_0204A01C.s +++ b/arm9/asm/unk_0204A01C.s @@ -130,7 +130,7 @@ FUN_0204A120: ; 0x0204A120 push {r3-r5, lr} add r5, r2, #0x0 add r4, r3, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex lsl r2, r5, #0x18 add r1, r4, #0x0 lsr r2, r2, #0x18 @@ -143,7 +143,7 @@ FUN_0204A138: ; 0x0204A138 push {r3-r7, lr} str r0, [sp, #0x0] add r5, r1, #0x0 - bl FUN_0206B9AC + bl GetPartyCount add r7, r0, #0x0 mov r6, #0x0 cmp r7, #0x0 @@ -151,7 +151,7 @@ FUN_0204A138: ; 0x0204A138 _0204A14A: ldr r0, [sp, #0x0] add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 @@ -198,7 +198,7 @@ _0204A1A2: FUN_0204A1A8: ; 0x0204A1A8 push {r3-r7, lr} add r7, r0, #0x0 - bl FUN_0206B9AC + bl GetPartyCount mov r5, #0x0 add r6, r0, #0x0 add r4, r5, #0x0 @@ -207,7 +207,7 @@ FUN_0204A1A8: ; 0x0204A1A8 _0204A1BA: add r0, r7, #0x0 add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex bl FUN_0204A01C cmp r0, #0x0 beq _0204A1CC @@ -225,7 +225,7 @@ _0204A1D2: FUN_0204A1D8: ; 0x0204A1D8 push {r3-r7, lr} add r6, r0, #0x0 - bl FUN_0206B9AC + bl GetPartyCount add r5, r0, #0x0 mov r4, #0x0 cmp r5, #0x0 @@ -233,7 +233,7 @@ FUN_0204A1D8: ; 0x0204A1D8 _0204A1E8: add r0, r6, #0x0 add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r7, r0, #0x0 bl FUN_0204A01C cmp r0, #0x0 @@ -253,7 +253,7 @@ _0204A204: FUN_0204A20C: ; 0x0204A20C push {r3-r7, lr} add r6, r0, #0x0 - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x10 lsr r5, r0, #0x10 ldr r4, _0204A244 ; =0x00000000 @@ -261,7 +261,7 @@ FUN_0204A20C: ; 0x0204A20C _0204A21C: add r0, r6, #0x0 add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r7, r0, #0x0 @@ -302,7 +302,7 @@ FUN_0204A25C: ; 0x0204A25C add r1, sp, #0x0 add r7, r0, #0x0 strb r2, [r1, #0x0] - bl FUN_0206B9AC + bl GetPartyCount add r6, r0, #0x0 mov r5, #0x0 cmp r6, #0x0 @@ -310,7 +310,7 @@ FUN_0204A25C: ; 0x0204A25C _0204A272: add r0, r7, #0x0 add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0x0 add r4, r0, #0x0 @@ -337,7 +337,7 @@ FUN_0204A29C: ; 0x0204A29C str r0, [sp, #0x0] str r1, [sp, #0x4] add r6, r7, #0x0 - bl FUN_0206B9AC + bl GetPartyCount add r4, r7, #0x0 str r0, [sp, #0x8] cmp r0, #0x0 @@ -345,7 +345,7 @@ FUN_0204A29C: ; 0x0204A29C _0204A2B4: ldr r0, [sp, #0x0] add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r5, r0, #0x0 bl FUN_0204A01C cmp r0, #0x0 diff --git a/arm9/asm/unk_02050E48.s b/arm9/asm/unk_02050E48.s index 08d3b46d..d2267271 100644 --- a/arm9/asm/unk_02050E48.s +++ b/arm9/asm/unk_02050E48.s @@ -50,7 +50,7 @@ FUN_02050E48: ; 0x02050E48 ldr r0, [sp, #0x4] strb r0, [r4, #0x14] ldr r0, [r4, #0x0] - bl FUN_0206B9AC + bl GetPartyCount strb r0, [r4, #0x13] mov r0, #0x0 strh r0, [r4, #0x18] @@ -957,7 +957,7 @@ _020515BA: add r1, #0x84 ldrb r1, [r1, #0x0] ldr r0, [r4, #0x50] - bl FUN_0206B9B0 + bl GetPartyMonByIndex bl FUN_020690E4 add r2, r0, #0x0 ldr r0, [r4, #0x28] @@ -1482,7 +1482,7 @@ _02051A16: ldrb r1, [r1, #0x0] ldr r0, [sp, #0x0] sub r1, r1, #0x1 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r4, #0x0 add r2, r6, #0x0 bl MI_CpuCopy8 diff --git a/arm9/asm/unk_02054C14.s b/arm9/asm/unk_02054C14.s index a2114d7c..1c47a7c6 100644 --- a/arm9/asm/unk_02054C14.s +++ b/arm9/asm/unk_02054C14.s @@ -289,7 +289,7 @@ FUN_02054DEC: ; 0x02054DEC push {r3-r7, lr} add r6, r0, #0x0 bl FUN_0206BB1C - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x10 lsr r5, r0, #0x10 ldr r4, _02054E2C ; =0x00000000 @@ -299,7 +299,7 @@ _02054E02: add r0, r6, #0x0 bl FUN_0206BB1C add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r7, #0x0 mov r2, #0x0 bl GetMonData @@ -326,7 +326,7 @@ FUN_02054E30: ; 0x02054E30 mov r7, #0x0 bl FUN_0206BB1C str r0, [sp, #0x0] - bl FUN_0206B9AC + bl GetPartyCount add r4, r0, #0x0 add r6, r7, #0x0 cmp r4, #0x0 @@ -335,7 +335,7 @@ FUN_02054E30: ; 0x02054E30 _02054E4A: ldr r0, [sp, #0x0] add r1, r6, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x5 mov r2, #0x0 bl GetMonData diff --git a/arm9/asm/unk_0205FA2C.s b/arm9/asm/unk_0205FA2C.s index 21beb029..c06deaff 100644 --- a/arm9/asm/unk_0205FA2C.s +++ b/arm9/asm/unk_0205FA2C.s @@ -175,7 +175,7 @@ FUN_0205FB34: ; 0x0205FB34 ldrb r0, [r6, #0xd] strb r0, [r4, #0x14] ldr r0, [r4, #0x0] - bl FUN_0206B9AC + bl GetPartyCount strb r0, [r4, #0x13] mov r0, #0x0 strh r0, [r4, #0x18] diff --git a/arm9/asm/unk_0206439C.s b/arm9/asm/unk_0206439C.s index e9d72f9f..76ea9f7f 100644 --- a/arm9/asm/unk_0206439C.s +++ b/arm9/asm/unk_0206439C.s @@ -14,7 +14,7 @@ FUN_0206439C: ; 0x0206439C add r0, r6, #0x0 bl FUN_0206BB1C add r1, r5, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [r4, #0x0] mov r0, #0x0 str r0, [r4, #0x4] diff --git a/arm9/asm/unk_020653EC.s b/arm9/asm/unk_020653EC.s index cc2e0ae8..ec33a0a1 100644 --- a/arm9/asm/unk_020653EC.s +++ b/arm9/asm/unk_020653EC.s @@ -1810,7 +1810,7 @@ FUN_020661F8: ; 0x020661F8 bl FUN_020377AC bl FUN_0206BB1C add r1, r7, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r2, r0, #0x0 mov r0, #0x6b lsl r0, r0, #0x2 diff --git a/arm9/asm/unk_0206BB5C.s b/arm9/asm/unk_0206BB5C.s index 29d28032..afcace47 100644 --- a/arm9/asm/unk_0206BB5C.s +++ b/arm9/asm/unk_0206BB5C.s @@ -193,7 +193,7 @@ _0206BCBC: beq _0206BD0A ldr r0, [sp, #0x4] sub r1, r1, #0x1 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, r0, #0x0 ldr r0, [sp, #0x0] ldr r2, [sp, #0x8] @@ -407,7 +407,7 @@ FUN_0206BE48: ; 0x0206BE48 add r0, r1, #0x0 str r1, [sp, #0x10] str r2, [sp, #0x14] - bl FUN_0206B9AC + bl GetPartyCount str r0, [sp, #0x20] add r6, r0, #0x0 add r0, sp, #0x30 @@ -423,7 +423,7 @@ FUN_0206BE48: ; 0x0206BE48 _0206BE72: ldr r0, [sp, #0x10] add r1, r7, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0x24] mov r1, #0x5 mov r2, #0x0 diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index 270bcd79..81a90ae3 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -2085,7 +2085,7 @@ _0206D854: cmp r0, #0x0 beq _0206D86C ldr r0, [r4, #0x24] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0x6 blt _0206D86E _0206D86C: diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index 05ed529d..4534dc1b 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -1666,7 +1666,7 @@ FUN_0207008C: ; 0x0207008C ldr r0, _020701DC ; =0x000005A4 ldr r0, [r5, r0] ldr r0, [r0, #0x0] - bl FUN_0206B9AC + bl GetPartyCount ldr r1, [sp, #0x0] cmp r0, r1 bgt _020700BC @@ -1677,7 +1677,7 @@ _020700BC: ldr r0, _020701DC ; =0x000005A4 ldr r0, [r5, r0] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x5 mov r2, #0x0 add r7, r0, #0x0 @@ -2809,7 +2809,7 @@ FUN_020709FC: ; 0x020709FC add r6, r1, #0x0 ldr r0, [r5, r0] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r1, _02070A7C ; =0x00000B23 ldrb r2, [r5, r1] lsl r3, r2, #0x19 @@ -3755,7 +3755,7 @@ FUN_0207117C: ; 0x0207117C ldr r1, [sp, #0x0] ldr r0, [r0, #0x0] ldrb r1, [r1, r2] - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0x8] ldr r0, [sp, #0x4] mov r1, #0x1 @@ -3996,7 +3996,7 @@ FUN_02071340: ; 0x02071340 cmp r0, #0x0 beq _0207136E ldr r0, [r2, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0x0 ldr r0, _020713E0 ; =0x000005A4 ldr r2, _020713E4 ; =0x00000B34 @@ -5033,7 +5033,7 @@ _02071B34: ldr r0, [r4, r0] ldrb r1, [r4, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r6, r0, #0x0 ldr r0, _02071C3C ; =0x0000069C mov r1, #0x40 @@ -5244,7 +5244,7 @@ _02071D14: add r1, r6, #0x0 ldr r0, [r5, r0] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldrh r1, [r7, r4] add r2, sp, #0x0 str r1, [sp, #0x0] @@ -5426,7 +5426,7 @@ _02071E5A: ldr r0, [r5, r0] ldrb r1, [r5, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0x0 ldr r0, _02071F1C ; =0x000005A4 mov r2, #0x3 @@ -5460,7 +5460,7 @@ _02071ECC: ldr r0, [r1, #0x0] ldr r1, _02071F20 ; =0x00000B25 ldrb r1, [r5, r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0x0 ldr r0, _02071F1C ; =0x000005A4 ldr r2, [r5, r0] @@ -5526,7 +5526,7 @@ FUN_02071F58: ; 0x02071F58 ldr r0, [r5, r0] ldrb r1, [r5, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r6, r0, #0x0 mov r7, #0x89 add r0, r5, #0x0 @@ -5804,7 +5804,7 @@ _020721B0: ldr r0, [r5, r0] ldrb r1, [r5, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r7, r0, #0x0 ldr r0, _020722A8 ; =0x000005A4 ldr r0, [r5, r0] @@ -5968,7 +5968,7 @@ FUN_0207230C: ; 0x0207230C ldr r0, [r5, r0] ldrb r1, [r5, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r7, r0, #0x0 ldr r0, _02072410 ; =0x000005A4 ldr r0, [r5, r0] diff --git a/arm9/asm/unk_02072548.s b/arm9/asm/unk_02072548.s index ca80e1db..062862b7 100644 --- a/arm9/asm/unk_02072548.s +++ b/arm9/asm/unk_02072548.s @@ -582,7 +582,7 @@ _0207297E: ldr r1, _020729CC ; =0x00000B25 ldr r0, [r2, #0x0] ldrb r1, [r5, r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r6, r0, #0x0 ldr r0, _020729D0 ; =0x0000069C mov r1, #0x25 @@ -1211,7 +1211,7 @@ _02072E98: add r1, r4, #0x0 ldr r0, [r5, r0] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0x0 mov r0, #0x0 ldr r3, _02072EE0 ; =0x000005A4 @@ -1280,7 +1280,7 @@ _02072F2C: add r1, r4, #0x0 ldr r0, [r5, r0] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0x0 add r0, r5, #0x0 bl FUN_02076AA0 @@ -1983,7 +1983,7 @@ FUN_020734C0: ; 0x020734C0 ldr r0, [r5, r0] ldrb r1, [r5, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa3 mov r2, #0x0 add r4, r0, #0x0 diff --git a/arm9/asm/unk_02073710.s b/arm9/asm/unk_02073710.s index b7a572da..16631f9e 100644 --- a/arm9/asm/unk_02073710.s +++ b/arm9/asm/unk_02073710.s @@ -218,7 +218,7 @@ FUN_020737D0: ; 0x020737D0 add r4, r2, #0x0 ldr r0, [r0, #0x0] add r7, r1, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex lsl r1, r4, #0x10 asr r6, r1, #0x10 mov r1, #0x2c diff --git a/arm9/asm/unk_02073DA8.s b/arm9/asm/unk_02073DA8.s index 94f4426e..cb5d7a22 100644 --- a/arm9/asm/unk_02073DA8.s +++ b/arm9/asm/unk_02073DA8.s @@ -199,7 +199,7 @@ FUN_02073EEC: ; 0x02073EEC bne _02073F66 ldr r0, [r5, r0] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r2, _02074058 ; =0x0000069C add r6, r0, #0x0 ldr r0, [r5, r2] @@ -238,7 +238,7 @@ _02073F66: ldr r0, [r5, r0] ldrb r1, [r5, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x0 str r1, [sp, #0x0] add r6, r0, #0x0 @@ -530,7 +530,7 @@ FUN_02074200: ; 0x02074200 ldr r0, [r4, r0] ldrb r1, [r4, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0x0 ldr r0, _02074268 ; =0x000005A4 mov r2, #0xc @@ -625,7 +625,7 @@ FUN_020742A8: ; 0x020742A8 ldr r0, [r4, r0] ldrb r1, [r4, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x0 str r1, [sp, #0x0] add r5, r0, #0x0 @@ -789,7 +789,7 @@ FUN_02074428: ; 0x02074428 ldr r0, [r4, r0] ldrb r1, [r4, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex bl FUN_0206AA84 ldr r0, _0207444C ; =0x000005A4 mov r1, #0x0 @@ -2383,7 +2383,7 @@ FUN_02075118: ; 0x02075118 ldr r0, [r4, r0] ldrb r1, [r4, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa1 mov r2, #0x0 bl GetMonData diff --git a/arm9/asm/unk_0207550C.s b/arm9/asm/unk_0207550C.s index dfbddd58..995ebf7e 100644 --- a/arm9/asm/unk_0207550C.s +++ b/arm9/asm/unk_0207550C.s @@ -365,7 +365,7 @@ FUN_020757F4: ; 0x020757F4 ldrb r1, [r4, r1] ldr r0, [r0, #0x0] add r5, r2, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex bl FUN_020690E4 add r2, r0, #0x0 mov r0, #0x6a @@ -1045,7 +1045,7 @@ FUN_02075DC0: ; 0x02075DC0 ldr r0, [r5, r0] ldrb r1, [r5, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xd mov r2, #0x0 add r4, r0, #0x0 @@ -1243,7 +1243,7 @@ FUN_02075F60: ; 0x02075F60 ldr r0, [r5, r0] ldrb r1, [r5, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa2 mov r2, #0x0 str r0, [sp, #0x8] @@ -1372,7 +1372,7 @@ FUN_020760A0: ; 0x020760A0 ldr r0, [r5, r0] ldrb r1, [r5, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa2 mov r2, #0x0 bl GetMonData @@ -1558,7 +1558,7 @@ _02076212: ldr r0, [r4, r0] ldrb r1, [r4, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r5, r0, #0x0 add r0, r4, #0x0 bl FUN_020772CC @@ -1646,7 +1646,7 @@ _020762DC: ldr r0, [r4, r0] ldrb r1, [r4, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa2 mov r2, #0x0 bl GetMonData @@ -1782,7 +1782,7 @@ FUN_0207640C: ; 0x0207640C ldr r0, [r5, r0] ldrb r1, [r5, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa3 mov r2, #0x0 add r4, r0, #0x0 @@ -2056,7 +2056,7 @@ _02076680: ldr r0, [r4, r0] ldrb r1, [r4, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r1, _02076878 ; =0x000005A4 add r5, r0, #0x0 ldr r2, [r4, r1] @@ -2196,7 +2196,7 @@ _020767A4: ldr r0, [r4, r0] ldrb r1, [r4, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r2, _02076878 ; =0x000005A4 add r1, r0, #0x0 ldr r2, [r4, r2] @@ -2241,7 +2241,7 @@ _02076814: ldr r0, [r4, r0] ldrb r1, [r4, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r5, r0, #0x0 ldr r0, _02076878 ; =0x000005A4 ldr r0, [r4, r0] @@ -2307,7 +2307,7 @@ FUN_02076890: ; 0x02076890 ldr r0, [r4, r0] ldrb r1, [r4, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r5, r0, #0x0 bl FUN_020690E4 add r2, r0, #0x0 @@ -2586,7 +2586,7 @@ FUN_02076AF8: ; 0x02076AF8 ldr r0, [r4, r0] ldrb r1, [r4, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r6, r0, #0x0 add r0, r4, #0x0 add r1, r6, #0x0 @@ -2775,7 +2775,7 @@ FUN_02076C94: ; 0x02076C94 ldr r0, [r4, r0] ldrb r1, [r4, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r5, r0, #0x0 bl FUN_020690E4 add r2, r0, #0x0 @@ -2854,7 +2854,7 @@ FUN_02076D3C: ; 0x02076D3C ldr r0, [r5, r0] ldrb r1, [r5, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r2, _02076DC4 ; =0x000005A4 add r1, r0, #0x0 ldr r2, [r5, r2] @@ -3138,7 +3138,7 @@ FUN_02076FB0: ; 0x02076FB0 ldr r0, [r5, r0] ldrb r1, [r5, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r6, #0x0 add r1, #0x36 mov r2, #0x0 @@ -3375,7 +3375,7 @@ _0207716A: ldr r0, [r5, r0] ldrb r1, [r5, r1] ldr r0, [r0, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, #0x36 add r1, r4, #0x0 mov r2, #0x0 diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index 8b972fcc..9da982ce 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -3169,7 +3169,7 @@ _0207B588: _0207B58E: ldr r0, [r1, #0x0] add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x5 mov r2, #0x0 add r6, r0, #0x0 @@ -3269,7 +3269,7 @@ _0207B640: _0207B64E: ldrb r1, [r4, #0x14] ldr r0, [r4, #0x0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex pop {r4, pc} _0207B658: bl FUN_020690C8 diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s index bf8c6901..86eedd81 100644 --- a/arm9/asm/unk_02080C38.s +++ b/arm9/asm/unk_02080C38.s @@ -108,7 +108,7 @@ _02080CB4: ldr r0, [r6, #0xc] bl FUN_0206BB1C mov r1, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r7, r0, #0x0 add r0, r6, #0x0 bl FUN_020377AC diff --git a/arm9/asm/unk_020842DC.s b/arm9/asm/unk_020842DC.s index a1b65c4a..b4f2fa48 100644 --- a/arm9/asm/unk_020842DC.s +++ b/arm9/asm/unk_020842DC.s @@ -616,7 +616,7 @@ FUN_020847F8: ; 0x020847F8 add r5, r1, #0x0 add r1, r2, #0x0 add r4, r3, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r3, [sp, #0x10] add r1, r5, #0x0 add r2, r4, #0x0 @@ -1320,7 +1320,7 @@ FUN_02084DD0: ; 0x02084DD0 add r5, r1, #0x0 add r1, r2, #0x0 add r4, r3, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r1, [sp, #0x14] add r3, sp, #0x0 str r1, [sp, #0x0] @@ -1787,7 +1787,7 @@ FUN_02085140: ; 0x02085140 push {r4-r7, lr} sub sp, #0xc str r0, [sp, #0x0] - bl FUN_0206B9AC + bl GetPartyCount mov r7, #0x0 str r0, [sp, #0x4] cmp r0, #0x0 @@ -1796,7 +1796,7 @@ FUN_02085140: ; 0x02085140 _02085154: ldr r0, [sp, #0x0] add r1, r7, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xab mov r2, #0x0 add r5, r0, #0x0 diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s index 8eb483b3..0111206a 100644 --- a/arm9/asm/unk_020859C0.s +++ b/arm9/asm/unk_020859C0.s @@ -573,7 +573,7 @@ _02085DDC: ldr r0, [r6, #0x10] bl FUN_0206BB1C str r0, [r7, #0x1c] - bl FUN_0206B9AC + bl GetPartyCount mov r4, #0x0 str r0, [sp, #0x0] str r0, [r7, #0x0] @@ -583,7 +583,7 @@ _02085DDC: _02085E0A: ldr r0, [r7, #0x1c] add r1, r4, #0x0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [r5, #0x4] ldr r0, [sp, #0x0] add r4, r4, #0x1 diff --git a/arm9/asm/unk_02087D00.s b/arm9/asm/unk_02087D00.s index 835e4fea..644d8dc5 100644 --- a/arm9/asm/unk_02087D00.s +++ b/arm9/asm/unk_02087D00.s @@ -446,7 +446,7 @@ _02087FFE: strb r0, [r4, #0x11] strb r6, [r4, #0x14] ldr r0, [r4, #0x0] - bl FUN_0206B9AC + bl GetPartyCount strb r0, [r4, #0x13] mov r1, #0x0 strh r1, [r4, #0x18] @@ -540,7 +540,7 @@ FUN_020880A0: ; 0x020880A0 ldr r0, [r5, #0xc] ldrb r1, [r5, #0x8] ldr r0, [r0, #0x10] - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [r4, #0x0] ldr r0, [r5, #0xc] ldr r0, [r0, #0x18] @@ -608,7 +608,7 @@ FUN_02088130: ; 0x02088130 ldrb r0, [r5, #0x8] strb r0, [r4, #0x14] ldr r0, [r4, #0x0] - bl FUN_0206B9AC + bl GetPartyCount strb r0, [r4, #0x13] mov r1, #0x0 strh r1, [r4, #0x18] diff --git a/arm9/global.inc b/arm9/global.inc index 840fe78b..ec19fbfe 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4862,8 +4862,8 @@ .extern FUN_0206B8CC .extern FUN_0206B900 .extern FUN_0206B938 -.extern FUN_0206B9AC -.extern FUN_0206B9B0 +.extern GetPartyCount +.extern GetPartyMonByIndex .extern FUN_0206B9DC .extern FUN_0206BA38 .extern FUN_0206BAD0 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index b5f89157..a05f9c76 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -3279,7 +3279,7 @@ MOD05_021D8FD0: ; 0x021D8FD0 lsl r0, r0, #0x10 lsr r5, r0, #0x10 add r0, r6, #0 - bl FUN_0206B9AC + bl GetPartyCount add r7, r0, #0 mov r4, #0 cmp r7, #0 @@ -3287,7 +3287,7 @@ MOD05_021D8FD0: ; 0x021D8FD0 _021D8FF6: add r0, r6, #0 add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 add r2, r5, #0 bl MonApplyFriendshipMod @@ -32853,7 +32853,7 @@ MOD05_021E72E8: ; 0x021E72E8 add r4, r1, #0 bl FUN_0206BB1C add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex pop {r4, pc} .balign 4, 0 @@ -43117,7 +43117,7 @@ MOD05_021EC4F0: ; 0x021EC4F0 add r6, r0, #0 str r1, [sp] add r7, r3, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, r0, #0 add r0, r5, #0 bl FUN_02023C80 @@ -44679,7 +44679,7 @@ _021ED168: MOD05_021ED190: ; 0x021ED190 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 - bl FUN_0206B9AC + bl GetPartyCount add r6, r0, #0 mov r4, #0 cmp r6, #0 @@ -44688,7 +44688,7 @@ MOD05_021ED190: ; 0x021ED190 _021ED1A2: add r0, r5, #0 add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r7, #0 mov r2, #0 bl GetMonData @@ -44696,7 +44696,7 @@ _021ED1A2: bne _021ED1D6 add r0, r5, #0 add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa mov r2, #0 bl GetMonData @@ -45017,13 +45017,13 @@ _021ED3F8: add r6, r0, #0 add r0, r7, #0 mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 bls _021ED490 _021ED430: add r0, r7, #0 add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0 add r4, r0, #0 @@ -45064,7 +45064,7 @@ _021ED47E: _021ED484: add r0, r7, #0 add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blo _021ED430 _021ED490: @@ -45078,7 +45078,7 @@ _021ED498: .word 0x0000FFFF MOD05_021ED49C: ; 0x021ED49C push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 - bl FUN_0206B9AC + bl GetPartyCount add r6, r0, #0 mov r5, #0 cmp r6, #0 @@ -45086,7 +45086,7 @@ MOD05_021ED49C: ; 0x021ED49C _021ED4AC: add r0, r7, #0 add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0 add r4, r0, #0 @@ -45222,7 +45222,7 @@ _021ED5B4: MOD05_021ED5C4: ; 0x021ED5C4 push {r3, r4, r5, lr} add r5, r2, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, r0, #0 bl FUN_020690E4 add r2, r0, #0 @@ -58275,7 +58275,7 @@ MOD05_021F3A18: ; 0x021F3A18 add r5, r1, #0 bl FUN_0206BB1C add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 str r0, [sp] @@ -58344,7 +58344,7 @@ MOD05_021F3AB4: ; 0x021F3AB4 add r5, r1, #0 bl FUN_0206BB1C add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex bl MOD05_021F38CC add r1, sp, #0 strh r0, [r1] @@ -58440,7 +58440,7 @@ MOD05_021F3B7C: ; 0x021F3B7C add r7, r1, #0 bl FUN_0206BB1C add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 add r6, r0, #0 @@ -62943,7 +62943,7 @@ _021F5CBA: bne _021F5D10 ldr r0, [r0, #8] mov r1, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r2, [r5, #4] add r3, r0, #0 lsl r2, r2, #0x10 diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index a857283f..a7f8e367 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -4786,7 +4786,7 @@ _0223BA42: add r4, r0, #0 add r0, r7, #0 mov r1, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0x20] ldr r1, [sp, #0x20] add r0, r5, #0 @@ -5130,7 +5130,7 @@ _0223BD2E: ldr r0, [r0, #0xc] bl FUN_0206BB1C mov r1, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0x14] ldr r0, [sp, #8] ldr r1, [sp, #0x14] @@ -5312,7 +5312,7 @@ _0223BEA4: add r4, r0, #0 add r0, r6, #0 mov r1, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0x18] ldr r1, [sp, #0x18] add r0, r5, #0 @@ -5568,7 +5568,7 @@ _0223C0CE: str r0, [sp, #0x14] add r0, r6, #0 mov r1, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0x1c] ldr r1, [sp, #0x1c] ldr r2, [sp, #0x14] @@ -7118,7 +7118,7 @@ MOD06_0223CCDC: ; 0x0223CCDC ldr r0, [r5, #0xc] bl FUN_0206BB1C mov r1, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0xc] ldr r1, [sp, #0xc] add r0, r5, #0 @@ -7194,7 +7194,7 @@ MOD06_0223CD7C: ; 0x0223CD7C add r6, r3, #0 bl FUN_0206BB1C mov r1, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 @@ -19735,7 +19735,7 @@ MOD06_022432E4: ; 0x022432E4 add r0, r1, #0 bl FUN_0206BB1C str r0, [sp, #4] - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x18 lsr r1, r0, #0x18 str r1, [sp, #8] @@ -19754,7 +19754,7 @@ _02243308: _02243312: ldr r0, [sp, #4] add r1, r7, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 str r0, [sp, #0xc] @@ -20281,7 +20281,7 @@ _02243726: add r1, #0x2a ldrb r1, [r1] ldr r0, [sp, #8] - bl FUN_0206B9B0 + bl GetPartyMonByIndex lsl r1, r4, #1 add r6, r5, r1 add r7, r0, #0 @@ -20333,7 +20333,7 @@ _0224379C: add r1, r1, r5 add r1, #0x2a ldrb r1, [r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #8] lsl r6, r5, #1 mov r1, #5 @@ -20579,7 +20579,7 @@ _0224394A: bne _0224396C add r5, #0x2a ldrb r1, [r5] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r2, r0, #0 add r0, r4, #0 add r1, r6, #0 @@ -20589,7 +20589,7 @@ _0224394A: _0224396C: add r5, #0x2a ldrb r1, [r5] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r2, r0, #0 add r0, r4, #0 add r1, r6, #0 @@ -21453,7 +21453,7 @@ _02243FFA: add r1, #0x2a ldrb r1, [r1] ldr r0, [sp] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r6, #0 mov r2, #0 str r0, [sp, #4] @@ -21673,7 +21673,7 @@ _022441B8: add r1, #0x2a ldrb r1, [r1] add r0, r7, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0 add r0, r5, #0 bl MOD06_0224406C @@ -22151,7 +22151,7 @@ _022445A6: add r1, #0x2a ldrb r1, [r1] ldr r0, [sp, #4] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r4, #0 bl FUN_02069B88 add r0, r4, #0 @@ -22345,7 +22345,7 @@ _0224471C: add r1, #0x2a ldrb r1, [r1] add r0, r7, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 bl GetMonData @@ -30761,7 +30761,7 @@ MOD06_02248724: ; 0x02248724 ldr r0, [r1, #8] str r1, [sp] mov r1, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r6, r0, #0 ldr r0, [r5, #0xc] bl FUN_0202A9B0 @@ -31014,7 +31014,7 @@ MOD06_0224891C: ; 0x0224891C add r4, r3, #0 bl FUN_0206BB1C add r1, r7, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa0 mov r2, #0 add r7, r0, #0 diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s index 5f048017..c9c4dd87 100644 --- a/arm9/modules/07/asm/module_07.s +++ b/arm9/modules/07/asm/module_07.s @@ -2305,7 +2305,7 @@ MOD07_02213104: ; 0x02213104 str r1, [sp] str r2, [sp, #4] add r7, r3, #0 - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #8] @@ -2329,7 +2329,7 @@ _0221312A: bls _022131B0 ldr r0, [sp] add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 add r7, r0, #0 @@ -3643,7 +3643,7 @@ MOD07_02213BEC: ; 0x02213BEC add r0, r1, #0 str r1, [sp] add r5, r2, #0 - bl FUN_0206B9AC + bl GetPartyCount lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #8] @@ -3672,7 +3672,7 @@ _02213C0C: _02213C2E: ldr r0, [sp] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x18 add r2, r6, #0 mul r2, r1 @@ -4488,13 +4488,13 @@ MOD07_0221428C: ; 0x0221428C bhs _022142B4 ldr r0, [r0, #4] add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0x18] b _022142BE _022142B4: ldr r0, [r0, #0xc] sub r1, r4, #3 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0x18] _022142BE: add r1, r4, #0 diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s index 26c682ce..50557058 100644 --- a/arm9/modules/09/asm/module_09.s +++ b/arm9/modules/09/asm/module_09.s @@ -2423,7 +2423,7 @@ MOD09_022131C8: ; 0x022131C8 ldr r0, [sp] ldr r0, [r0] ldr r0, [r0] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 bgt _022131E2 b _02213476 @@ -2437,7 +2437,7 @@ _022131E2: ldr r0, [r0] ldr r1, [sp, #8] ldr r0, [r0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [r4, #4] mov r1, #5 mov r2, #0 @@ -2724,7 +2724,7 @@ _0221345A: ldr r0, [sp] ldr r0, [r0] ldr r0, [r0] - bl FUN_0206B9AC + bl GetPartyCount ldr r1, [sp, #8] cmp r1, r0 bge _02213476 @@ -6734,7 +6734,7 @@ MOD09_022155D0: ; 0x022155D0 ldr r0, [r5] mov r4, #0 ldr r0, [r0] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _02215656 add r0, r4, #0 @@ -6788,7 +6788,7 @@ _0221563E: add r7, #0x50 ldr r0, [r0] add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _022155EE _02215656: @@ -10495,7 +10495,7 @@ MOD09_02217580: ; 0x02217580 ldr r0, [r5] mov r4, #0 ldr r0, [r0] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _022175D8 add r7, r5, #4 @@ -10528,7 +10528,7 @@ _022175C6: lsr r4, r0, #0x10 ldr r0, [r5] ldr r0, [r0] - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _02217594 _022175D8: @@ -13506,7 +13506,7 @@ _02218DF2: bl MOD11_02230290 add r4, r0, #0 add r0, r6, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #6 bne _02218E32 add r0, r4, #0 diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index 2a3e4f64..5558b99a 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -213,7 +213,7 @@ _0222D752: bl FUN_0201681C ldr r0, [r5, #4] ldr r1, [sp, #0x24] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0 mov r0, #0x5a lsl r0, r0, #2 @@ -1141,7 +1141,7 @@ MOD11_0222DFA4: ; 0x0222DFA4 beq _0222DFE4 ldr r0, [r4, #0x6c] mov r1, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0 add r0, r4, #0 bl MOD11_02230FA8 @@ -2014,13 +2014,13 @@ _0222E734: _0222E760: ldr r0, [r7, #0x68] mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222E7AA _0222E76C: ldr r0, [r7, #0x68] add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 add r6, r0, #0 @@ -2042,7 +2042,7 @@ _0222E76C: _0222E79E: ldr r0, [r7, #0x68] add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _0222E76C _0222E7AA: @@ -2119,13 +2119,13 @@ _0222E810: _0222E83C: ldr r0, [r7, #0x68] mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222E886 _0222E848: ldr r0, [r7, #0x68] add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 add r6, r0, #0 @@ -2147,7 +2147,7 @@ _0222E848: _0222E87A: ldr r0, [r7, #0x68] add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _0222E848 _0222E886: @@ -2234,13 +2234,13 @@ _0222E920: add r7, r4, r0 ldr r0, [r7, #0x68] mov r6, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222E9B8 _0222E938: ldr r0, [r7, #0x68] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r1, [sp, #0x14] add r5, r0, #0 cmp r1, #1 @@ -2292,7 +2292,7 @@ _0222E984: _0222E9AC: ldr r0, [r7, #0x68] add r6, r6, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r6, r0 blt _0222E938 _0222E9B8: @@ -2345,13 +2345,13 @@ _0222EA0C: bl FUN_0206BAD0 ldr r0, [r7, #0x68] mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222EA60 _0222EA22: ldr r0, [r7, #0x68] add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 add r6, r0, #0 @@ -2373,7 +2373,7 @@ _0222EA22: _0222EA54: ldr r0, [r7, #0x68] add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _0222EA22 _0222EA60: @@ -2572,13 +2572,13 @@ _0222EBC6: _0222EBEA: ldr r0, [r7, #0x68] mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222EC34 _0222EBF6: ldr r0, [r7, #0x68] add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 add r6, r0, #0 @@ -2600,7 +2600,7 @@ _0222EBF6: _0222EC28: ldr r0, [r7, #0x68] add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _0222EBF6 _0222EC34: @@ -2686,13 +2686,13 @@ _0222ECC8: add r7, r4, r0 ldr r0, [r7, #0x68] mov r6, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222ED60 _0222ECE0: ldr r0, [r7, #0x68] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r1, [sp, #0x20] add r5, r0, #0 cmp r1, #1 @@ -2744,7 +2744,7 @@ _0222ED2C: _0222ED54: ldr r0, [r7, #0x68] add r6, r6, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r6, r0 blt _0222ECE0 _0222ED60: @@ -2800,13 +2800,13 @@ _0222EDBC: bl FUN_0206BAD0 ldr r0, [r7, #0x68] mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222EE10 _0222EDD2: ldr r0, [r7, #0x68] add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 add r6, r0, #0 @@ -2828,7 +2828,7 @@ _0222EDD2: _0222EE04: ldr r0, [r7, #0x68] add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _0222EDD2 _0222EE10: @@ -2861,7 +2861,7 @@ _0222EE3E: beq _0222EE5A ldr r0, [r4, #0x6c] mov r1, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r2, r4, #0 mov r1, #0x8f add r2, #0xf4 @@ -2885,7 +2885,7 @@ _0222EE5A: _0222EE7C: ldr r0, [r4, #0x68] mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222EEAC ldr r6, _0222EEEC ; =0x00002404 @@ -2893,7 +2893,7 @@ _0222EE7C: _0222EE8C: ldr r0, [r4, #0x68] add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r2, [r4, r6] add r1, r7, #0 lsl r2, r2, #0x10 @@ -2901,13 +2901,13 @@ _0222EE8C: bl MonApplyFriendshipMod ldr r0, [r4, #0x68] add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _0222EE8C _0222EEAC: ldr r0, [r4, #0x70] mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222EEDC ldr r6, _0222EEEC ; =0x00002404 @@ -2915,7 +2915,7 @@ _0222EEAC: _0222EEBC: ldr r0, [r4, #0x70] add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r2, [r4, r6] add r1, r7, #0 lsl r2, r2, #0x10 @@ -2923,7 +2923,7 @@ _0222EEBC: bl MonApplyFriendshipMod ldr r0, [r4, #0x70] add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _0222EEBC _0222EEDC: @@ -5057,7 +5057,7 @@ _0222FFE6: lsl r0, r4, #2 add r0, r5, r0 ldr r0, [r0, #0x68] - bl FUN_0206B9AC + bl GetPartyCount pop {r3, r4, r5, pc} _0222FFF2: ldr r1, [r5, #0x2c] @@ -5068,13 +5068,13 @@ _0222FFF2: lsr r0, r0, #0x1d add r0, r5, r0 ldr r0, [r0, #0x68] - bl FUN_0206B9AC + bl GetPartyCount pop {r3, r4, r5, pc} _02230008: lsl r0, r4, #2 add r0, r5, r0 ldr r0, [r0, #0x68] - bl FUN_0206B9AC + bl GetPartyCount pop {r3, r4, r5, pc} thumb_func_start MOD11_02230014 @@ -5099,7 +5099,7 @@ _02230034: add r0, r5, r0 ldr r0, [r0, #0x68] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex pop {r4, r5, r6, pc} _02230042: ldr r1, [r5, #0x2c] @@ -5111,14 +5111,14 @@ _02230042: add r0, r5, r0 ldr r0, [r0, #0x68] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex pop {r4, r5, r6, pc} _0223005A: lsl r0, r4, #2 add r0, r5, r0 ldr r0, [r0, #0x68] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex pop {r4, r5, r6, pc} thumb_func_start MOD11_02230068 @@ -6901,7 +6901,7 @@ _02230D9C: cmp r1, #6 bge _02230DC4 ldr r0, [r5, #4] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r3, #0x59 str r7, [sp] lsl r3, r3, #2 @@ -12578,7 +12578,7 @@ _02233938: add r4, r0, #0 add r0, r7, #0 bl MOD11_0222FF88 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _022339C6 _02233950: @@ -12632,7 +12632,7 @@ _022339B4: mov r1, #0 add r4, r4, #1 bl MOD11_0222FF88 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _02233950 _022339C6: @@ -18480,7 +18480,7 @@ _0223678C: _02236794: ldr r0, [sp, #0x14] add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 add r4, r0, #0 @@ -18533,7 +18533,7 @@ _022367EA: beq _022367EA ldr r0, [sp, #0x14] add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r7, #0 mov r2, #0 add r4, r0, #0 @@ -25352,13 +25352,13 @@ _02239DFA: bl MOD11_0222FF7C add r0, r7, #0 mov r4, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _02239E68 _02239E2A: add r0, r7, #0 add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 add r6, r0, #0 @@ -25380,7 +25380,7 @@ _02239E2A: _02239E5C: add r0, r7, #0 add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _02239E2A _02239E68: @@ -25400,14 +25400,14 @@ _02239E76: _02239E82: ldr r0, [sp, #8] mov r4, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _02239ECC ldr r7, _02239F48 ; =0x000001EE _02239E90: ldr r0, [sp, #8] add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 add r6, r0, #0 @@ -25428,7 +25428,7 @@ _02239E90: _02239EC0: ldr r0, [sp, #8] add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _02239E90 _02239ECC: @@ -25448,13 +25448,13 @@ _02239EDA: bl MOD11_0222FF7C add r0, r7, #0 mov r4, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _02239F36 _02239EF8: add r0, r7, #0 add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 add r6, r0, #0 @@ -25476,7 +25476,7 @@ _02239EF8: _02239F2A: add r0, r7, #0 add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _02239EF8 _02239F36: @@ -27988,7 +27988,7 @@ MOD11_0223B2DC: ; 0x0223B2DC add r7, r0, #0 ldr r0, [sp] ldr r1, [sp, #4] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #6 add r2, r4, #0 str r0, [sp, #0x14] @@ -41607,7 +41607,7 @@ _02241DD2: bl MOD11_0222FF7C add r0, r6, #0 add r5, r7, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _02241E4A ldr r0, [sp, #0x2c] @@ -41619,7 +41619,7 @@ _02241DD2: _02241DFE: add r0, r6, #0 add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 add r4, r0, #0 @@ -41648,7 +41648,7 @@ _02241DFE: _02241E3E: add r0, r6, #0 add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _02241DFE _02241E4A: @@ -41700,13 +41700,13 @@ _02241E8A: bl MOD11_0222FF7C add r0, r6, #0 add r5, r7, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _02241EF2 _02241EB4: add r0, r6, #0 add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 add r4, r0, #0 @@ -41728,7 +41728,7 @@ _02241EB4: _02241EE6: add r0, r6, #0 add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _02241EB4 _02241EF2: @@ -41905,13 +41905,13 @@ _0224200C: bl MOD11_0222FF7C add r0, r6, #0 add r4, r7, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _02242094 _02242056: add r0, r6, #0 add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 add r5, r0, #0 @@ -41933,7 +41933,7 @@ _02242056: _02242088: add r0, r6, #0 add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _02242056 _02242094: @@ -41985,13 +41985,13 @@ _022420CA: str r0, [sp, #0x14] add r0, r7, #0 add r4, r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0224213C _022420FE: add r0, r7, #0 add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 add r6, r0, #0 @@ -42013,20 +42013,20 @@ _022420FE: _02242130: add r0, r7, #0 add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _022420FE _0224213C: ldr r0, [sp, #0x18] mov r4, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _02242186 ldr r7, _02242340 ; =0x000001EE _0224214A: ldr r0, [sp, #0x18] add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 add r6, r0, #0 @@ -42047,7 +42047,7 @@ _0224214A: _0224217A: ldr r0, [sp, #0x18] add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _0224214A _02242186: @@ -42089,13 +42089,13 @@ _022421B0: str r0, [sp, #0x10] add r0, r6, #0 add r4, r7, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0224221A _022421DC: add r0, r6, #0 add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 add r5, r0, #0 @@ -42117,7 +42117,7 @@ _022421DC: _0224220E: add r0, r6, #0 add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _022421DC _0224221A: @@ -48640,13 +48640,13 @@ _02245384: mov r6, #0 add r5, r0, #0 add r4, r6, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _022453C6 _022453A4: add r0, r5, #0 add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa2 mov r2, #0 bl GetMonData @@ -48656,7 +48656,7 @@ _022453A4: _022453BA: add r0, r5, #0 add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _022453A4 _022453C6: @@ -48697,13 +48697,13 @@ _022453F8: mov r6, #0 add r5, r0, #0 add r4, r6, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0224543A _02245418: add r0, r5, #0 add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa2 mov r2, #0 bl GetMonData @@ -48713,7 +48713,7 @@ _02245418: _0224542E: add r0, r5, #0 add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _02245418 _0224543A: @@ -52132,7 +52132,7 @@ _02246E72: _02246E76: ldr r0, [sp, #0x14] add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 add r4, r0, #0 @@ -65586,13 +65586,13 @@ _0224D452: bl MOD11_0222FF88 add r6, r0, #0 mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0224D4C0 _0224D466: add r0, r6, #0 add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 add r4, r0, #0 @@ -65627,7 +65627,7 @@ _0224D4A8: _0224D4B4: add r0, r6, #0 add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _0224D466 _0224D4C0: @@ -73750,7 +73750,7 @@ _02251662: bl FUN_0206B8CC ldr r0, [sp, #0x14] mov r6, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _022516B0 mov r0, #6 @@ -73775,7 +73775,7 @@ _02251680: strb r0, [r1] ldr r0, [sp, #0x14] add r6, r6, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r6, r0 blt _02251680 _022516B0: @@ -75168,7 +75168,7 @@ _022521DC: ldr r0, [r4, #4] add r1, r6, #0 ldr r0, [r0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0 ldr r0, [sp, #0x1c] bl FUN_02069B88 @@ -75208,7 +75208,7 @@ _02252232: ldr r0, [r4, #4] ldr r1, [sp, #0xc] ldr r0, [r0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0 ldr r0, [sp, #0x20] bl FUN_02069B88 @@ -75279,7 +75279,7 @@ _022522C4: bl MOD11_0222FF88 str r0, [sp, #0x10] mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0225230E mov r0, #6 @@ -75302,7 +75302,7 @@ _022522E2: ldr r0, [sp, #0x10] add r6, r6, #1 add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _022522E2 _0225230E: @@ -75514,7 +75514,7 @@ _0225249A: bl MOD11_0222FF88 str r0, [sp, #8] mov r4, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _022524FE ldr r0, [sp, #4] @@ -75539,7 +75539,7 @@ _022524D0: _022524F2: ldr r0, [sp, #8] add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _022524D0 _022524FE: @@ -81265,7 +81265,7 @@ _02255210: bl MOD11_0222FF88 str r0, [sp, #0x24] mov r6, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _022552A6 mov r0, #6 @@ -81283,7 +81283,7 @@ _0225523A: ldr r1, _022554FC ; =0x0000312C ldr r0, [sp, #0x24] ldrb r1, [r7, r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 add r4, r0, #0 @@ -81331,7 +81331,7 @@ _02255298: ldr r0, [sp, #0x24] add r7, r7, #1 add r6, r6, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r6, r0 blt _0225523A _022552A6: @@ -81371,7 +81371,7 @@ _022552E2: bl MOD11_0222FF88 str r0, [sp, #0x10] mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0225535E add r1, r4, #0 @@ -81384,7 +81384,7 @@ _02255304: ldr r1, _022554FC ; =0x0000312C ldr r0, [sp, #0x10] ldrb r1, [r6, r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 add r7, r0, #0 @@ -81422,7 +81422,7 @@ _02255350: ldr r0, [sp, #0x10] add r6, r6, #1 add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _02255304 _0225535E: @@ -81446,7 +81446,7 @@ _0225537C: bl MOD11_0222FF88 str r0, [sp, #0x14] mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _02255482 add r1, r4, #0 @@ -81460,7 +81460,7 @@ _022553A0: ldr r1, _022554FC ; =0x0000312C ldr r0, [sp, #0x14] ldrb r1, [r6, r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 add r7, r0, #0 @@ -81498,7 +81498,7 @@ _022553EC: ldr r0, [sp, #0x14] add r6, r6, #1 add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _022553A0 b _02255482 @@ -81513,7 +81513,7 @@ _022553FC: bl MOD11_0222FF88 str r0, [sp, #0x18] mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _02255482 add r1, r4, #0 @@ -81526,7 +81526,7 @@ _02255428: ldr r1, _022554FC ; =0x0000312C ldr r0, [sp, #0x18] ldrb r1, [r6, r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 add r7, r0, #0 @@ -81564,7 +81564,7 @@ _02255474: ldr r0, [sp, #0x18] add r6, r6, #1 add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _02255428 _02255482: @@ -84454,7 +84454,7 @@ _02256A60: mov r4, #0 str r0, [sp, #0x10] add r7, r4, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _02256AE0 mov r0, #6 @@ -84466,7 +84466,7 @@ _02256A80: ldr r1, _02256C00 ; =0x0000312C ldr r0, [sp, #0x10] ldrb r1, [r6, r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 str r0, [sp, #0x14] @@ -84507,7 +84507,7 @@ _02256AD2: ldr r0, [sp, #0x10] add r6, r6, #1 add r7, r7, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r7, r0 blt _02256A80 _02256AE0: @@ -84517,7 +84517,7 @@ _02256AE0: str r0, [sp, #8] mov r4, #3 mov r6, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 bgt _02256AF8 b _02256BFA @@ -84531,7 +84531,7 @@ _02256B02: ldr r1, _02256C00 ; =0x0000312C ldr r0, [sp, #8] ldrb r1, [r7, r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 str r0, [sp, #0x18] @@ -84572,7 +84572,7 @@ _02256B54: ldr r0, [sp, #8] add r7, r7, #1 add r6, r6, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r6, r0 blt _02256B02 add sp, #0x20 @@ -84595,7 +84595,7 @@ _02256B7A: mov r4, #0 str r0, [sp, #0xc] add r7, r4, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _02256BFA ldr r0, [sp, #0x38] @@ -84607,7 +84607,7 @@ _02256B9A: ldr r1, _02256C00 ; =0x0000312C ldr r0, [sp, #0xc] ldrb r1, [r6, r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xad mov r2, #0 str r0, [sp, #0x1c] @@ -84648,7 +84648,7 @@ _02256BEC: ldr r0, [sp, #0xc] add r6, r6, #1 add r7, r7, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r7, r0 blt _02256B9A _02256BFA: diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index e0034fd2..191de449 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -1905,7 +1905,7 @@ _021D8476: add r0, #0x19 strb r2, [r4, r0] ldr r0, [r4, r1] - bl FUN_0206B9AC + bl GetPartyCount ldr r1, _021D8504 ; =0x0000013F strb r0, [r4, r1] add r0, r4, #0 @@ -4031,7 +4031,7 @@ _021D95CA: mov r0, #0x49 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_0206B9AC + bl GetPartyCount sub r0, r0, #1 cmp r6, r0 beq _021D9610 @@ -4238,7 +4238,7 @@ _021D979C: mov r0, #0x49 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #6 beq _021D97F2 mov r0, #0x45 @@ -4699,7 +4699,7 @@ MOD14_021D9B84: ; 0x021D9B84 lsl r1, r1, #2 str r0, [sp] ldr r0, [r0, r1] - bl FUN_0206B9AC + bl GetPartyCount mov r6, #0 add r5, r6, #0 str r0, [sp, #4] @@ -4711,7 +4711,7 @@ _021D9B9E: lsl r0, r0, #2 ldr r0, [r1, r0] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, r0, #0 bl AcquireMonLock add r7, r0, #0 @@ -5351,7 +5351,7 @@ _021DA0A4: _021DA0AE: add r0, r1, #0 ldr r0, [r0, #0x18] - bl FUN_0206B9AC + bl GetPartyCount str r0, [sp, #0x10] mov r0, #0 str r0, [sp, #8] @@ -5362,7 +5362,7 @@ _021DA0C2: ldr r0, [sp, #4] ldr r1, [sp, #8] ldr r0, [r0, #0x18] - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r4, _021DA164 ; =0x021E6224 ldr r5, [sp, #4] add r7, r0, #0 @@ -8416,7 +8416,7 @@ MOD14_021DB8D0: ; 0x021DB8D0 mov r0, #0x49 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_0206B9AC + bl GetPartyCount strb r0, [r4, #8] mov r0, #8 ldrsb r0, [r4, r0] @@ -8495,14 +8495,14 @@ _021DB96C: mov r0, #0x49 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_0206B9AC + bl GetPartyCount cmp r6, r0 bge _021DB98E mov r0, #0x49 lsl r0, r0, #2 ldr r0, [r5, r0] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [r4] b _021DB998 _021DB98E: @@ -8896,13 +8896,13 @@ _021DBC70: mov r0, #0x49 lsl r0, r0, #2 ldr r0, [r5, r0] - bl FUN_0206B9AC + bl GetPartyCount add r1, r0, #0 mov r0, #0x49 lsl r0, r0, #2 ldr r0, [r5, r0] sub r1, r1, #1 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0 _021DBC8A: add r0, r7, #0 @@ -23402,7 +23402,7 @@ MOD14_021E2C7C: ; 0x021E2C7C add r6, r0, #0 ldr r0, [r6, #0xc] ldr r0, [r0, #4] - bl FUN_0206B9AC + bl GetPartyCount add r1, r6, #0 add r1, #0x28 ldrb r4, [r1] @@ -23570,7 +23570,7 @@ MOD14_021E2DB4: ; 0x021E2DB4 add r5, r0, #0 ldr r0, [r5, #0xc] ldr r0, [r0, #4] - bl FUN_0206B9AC + bl GetPartyCount sub r4, r0, #1 add r0, r5, #0 add r0, #0x28 @@ -23975,7 +23975,7 @@ MOD14_021E30C0: ; 0x021E30C0 str r1, [sp] ldr r0, [r0, #4] str r2, [sp, #4] - bl FUN_0206B9AC + bl GetPartyCount sub r6, r0, #1 add r4, r5, #0 mov r0, #0x34 @@ -24281,7 +24281,7 @@ _021E330E: ldr r0, [sp, #0x24] ldr r0, [r0, #0xc] ldr r0, [r0, #4] - bl FUN_0206B9AC + bl GetPartyCount mov r4, #0 str r0, [sp, #0x20] cmp r0, #0 @@ -24299,7 +24299,7 @@ _021E3330: add r1, r4, #0 ldr r0, [r0, #0xc] ldr r0, [r0, #4] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0 mov r0, #1 str r0, [sp] @@ -24347,7 +24347,7 @@ MOD14_021E3390: ; 0x021E3390 add r7, r0, #0 ldr r0, [r7, #0xc] ldr r0, [r0, #4] - bl FUN_0206B9AC + bl GetPartyCount mov r6, #0 str r0, [sp] cmp r0, #0 diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s index dfa30774..0dae9777 100644 --- a/arm9/modules/16/asm/module_16.s +++ b/arm9/modules/16/asm/module_16.s @@ -55018,7 +55018,7 @@ _021F0E5A: _021F0E68: ldr r0, [sp, #0xc] add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r1, [sp, #8] add r6, r0, #0 cmp r4, r1 @@ -55568,7 +55568,7 @@ _021F1276: _021F128E: ldr r0, [sp, #0x14] add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r1, [sp, #8] add r4, r0, #0 cmp r5, r1 @@ -55683,7 +55683,7 @@ _021F136A: _021F1382: ldr r0, [sp, #0x14] add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex ldr r1, [sp, #8] add r4, r0, #0 cmp r5, r1 @@ -62866,13 +62866,13 @@ _021F4A94: bl MOD11_0222FF88 add r7, r0, #0 mov r5, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _021F4AF2 _021F4AA8: add r0, r7, #0 add r1, r5, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa2 mov r2, #0 add r6, r0, #0 @@ -62900,7 +62900,7 @@ _021F4AA8: _021F4AE6: add r0, r7, #0 add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _021F4AA8 _021F4AF2: diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s index ee9a4bd1..7bd6fc00 100644 --- a/arm9/modules/27/asm/module_27.s +++ b/arm9/modules/27/asm/module_27.s @@ -293,7 +293,7 @@ MOD27_02254A48: ; 0x02254A48 str r0, [sp] add r0, r1, #0 str r1, [sp, #4] - bl FUN_0206B9AC + bl GetPartyCount ldr r1, [sp] mov r6, #0 str r0, [r1] @@ -303,7 +303,7 @@ MOD27_02254A48: ; 0x02254A48 _02254A62: ldr r0, [sp, #4] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, r0, #0 bl AcquireMonLock add r7, r0, #0 diff --git a/arm9/modules/28/asm/module_28.s b/arm9/modules/28/asm/module_28.s index e4a0b678..2ba07ed6 100644 --- a/arm9/modules/28/asm/module_28.s +++ b/arm9/modules/28/asm/module_28.s @@ -73,7 +73,7 @@ MOD28_0225489C: ; 0x0225489C mov r1, #0 str r0, [sp, #4] str r1, [sp] - bl FUN_0206B9AC + bl GetPartyCount mov r6, #0 str r0, [r7, #4] cmp r0, #0 @@ -82,7 +82,7 @@ MOD28_0225489C: ; 0x0225489C _022548D6: ldr r0, [sp, #4] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0 add r5, r0, #0 diff --git a/arm9/modules/39/asm/module_39.s b/arm9/modules/39/asm/module_39.s index 863492a4..f7c09bfc 100644 --- a/arm9/modules/39/asm/module_39.s +++ b/arm9/modules/39/asm/module_39.s @@ -63,7 +63,7 @@ MOD39_0225489C: ; 0x0225489C bl MOD20_02252C40 bl FUN_0206BB1C str r0, [sp, #0x10] - bl FUN_0206B9AC + bl GetPartyCount ldr r1, [sp, #4] mov r6, #0 add r1, #0x34 @@ -78,7 +78,7 @@ MOD39_0225489C: ; 0x0225489C _022548CC: ldr r0, [sp, #0x10] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r7, r0, #0 bl FUN_0206B688 str r0, [r4, #4] diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s index a4bf2048..ee020bca 100644 --- a/arm9/modules/56/asm/module_56.s +++ b/arm9/modules/56/asm/module_56.s @@ -212,7 +212,7 @@ MOD56_02211F88: ; 0x02211F88 ldr r0, [r0] bl FUN_0206BB1C str r0, [sp] - bl FUN_0206B9AC + bl GetPartyCount mov r5, #0 add r7, r0, #0 add r4, r5, #0 @@ -221,7 +221,7 @@ MOD56_02211F88: ; 0x02211F88 _02211FA2: ldr r0, [sp] add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa2 mov r2, #0 add r6, r0, #0 @@ -1992,7 +1992,7 @@ MOD56_02212E0C: ; 0x02212E0C bl FUN_02029AFC str r0, [sp, #8] ldr r0, [sp, #0xc] - bl FUN_0206B9AC + bl GetPartyCount mov r6, #0 str r0, [sp, #4] cmp r0, #0 @@ -2001,7 +2001,7 @@ MOD56_02212E0C: ; 0x02212E0C _02212E52: ldr r0, [sp, #0xc] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #5 mov r2, #0 add r7, r0, #0 diff --git a/arm9/modules/69/asm/module_69.s b/arm9/modules/69/asm/module_69.s index 32eb8847..bdd1afca 100644 --- a/arm9/modules/69/asm/module_69.s +++ b/arm9/modules/69/asm/module_69.s @@ -50,7 +50,7 @@ MOD69_0222D5C0: ; 0x0222D5C0 str r0, [r4, #4] ldr r0, [r4, #0xc] ldr r0, [r0, #4] - bl FUN_0206B9AC + bl GetPartyCount add r6, r0, #0 mov r5, #0 cmp r6, #0 @@ -61,7 +61,7 @@ _0222D63A: ldr r0, [r4, #0xc] add r1, r5, #0 ldr r0, [r0, #4] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4c mov r2, #0 bl GetMonData @@ -1224,7 +1224,7 @@ _0222DF98: lsl r1, r1, #2 ldr r0, [r0, #4] ldr r1, [r5, r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0x2c] ldr r1, [sp, #0x2c] add r0, sp, #0xc4 @@ -2281,7 +2281,7 @@ _0222E860: lsl r1, r1, #2 ldr r0, [r0, #4] ldr r1, [r2, r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [r4, #0x24] ldr r0, [r5, #0xc] mov r2, #0 diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index 606353f1..a480a3f6 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -420,11 +420,11 @@ MOD71_0222D93C: ; 0x0222D93C bl MOD71_0222DB94 ldr r0, _0222D9B8 ; =0x00002218 ldr r0, [r5, r0] - bl FUN_0206B9AC + bl GetPartyCount add r4, r0, #0 ldr r0, _0222D9BC ; =0x0000221C ldr r0, [r5, r0] - bl FUN_0206B9AC + bl GetPartyCount add r2, r0, #0 mov r0, #0x5d lsl r0, r0, #2 @@ -644,13 +644,13 @@ MOD71_0222DB5C: ; 0x0222DB5C add r0, r5, #0 add r6, r2, #0 mov r4, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222DB92 _0222DB70: add r0, r5, #0 add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex bl FUN_020690E4 add r2, r0, #0 add r0, r7, #0 @@ -658,7 +658,7 @@ _0222DB70: bl FUN_0200ACF8 add r0, r5, #0 add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _0222DB70 _0222DB92: @@ -676,7 +676,7 @@ MOD71_0222DB94: ; 0x0222DB94 str r3, [sp, #0x10] ldr r6, [sp, #0x28] mov r4, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222DBE6 add r7, r6, #1 @@ -701,7 +701,7 @@ _0222DBB0: ldr r0, [sp, #0x10] add r5, #0x10 add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _0222DBB0 _0222DBE6: @@ -718,7 +718,7 @@ MOD71_0222DBEC: ; 0x0222DBEC str r1, [sp, #0xc] str r2, [sp, #0x20] mov r7, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 bgt _0222DC02 b _0222DD10 @@ -847,7 +847,7 @@ _0222DCE2: _0222DD02: ldr r0, [sp, #8] add r7, r7, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r7, r0 bge _0222DD10 b _0222DC0C @@ -1086,7 +1086,7 @@ _0222DED6: blt _0222DED6 ldr r0, _0222E0F8 ; =0x00002218 ldr r0, [r4, r0] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222DF12 mov r0, #0x69 @@ -1097,20 +1097,20 @@ _0222DEF4: ldr r0, _0222E0F8 ; =0x00002218 add r1, r5, #0 ldr r0, [r4, r0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r6, #0 bl MOD71_0222E118 ldr r0, [r4, r7] add r6, #0x10 add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _0222DEF4 _0222DF12: ldr r0, _0222E0FC ; =0x0000221C mov r5, #0 ldr r0, [r4, r0] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222DF48 mov r0, #0x69 @@ -1121,14 +1121,14 @@ _0222DF28: ldr r0, _0222E0FC ; =0x0000221C add r1, r5, #0 ldr r0, [r4, r0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r5, #6 lsl r1, r1, #4 add r1, r6, r1 bl MOD71_0222E118 ldr r0, [r4, r7] add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _0222DF28 _0222DF48: @@ -1233,7 +1233,7 @@ _0222E010: ldr r0, _0222E0F8 ; =0x00002218 mov r1, #0 ldr r0, [r4, r0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r2, #0x7f ldr r3, _0222E104 ; =0x000020F0 lsl r2, r2, #4 @@ -1412,7 +1412,7 @@ MOD71_0222E1A0: ; 0x0222E1A0 ldr r0, _0222E20C ; =0x0000221C add r7, r1, #0 ldr r0, [r5, r0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r6, r0, #0 add r0, r4, #0 mov r1, #6 @@ -1473,7 +1473,7 @@ MOD71_0222E224: ; 0x0222E224 bge _0222E29E ldr r0, _0222E2BC ; =0x00002218 ldr r0, [r5, r0] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, r0, #0 add r0, r5, #0 add r0, #0x88 @@ -1675,7 +1675,7 @@ MOD71_0222E3D4: ; 0x0222E3D4 ldr r0, _0222E42C ; =0x00002218 mov r4, #0 ldr r0, [r6, r0] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222E402 ldr r7, _0222E42C ; =0x00002218 @@ -1688,14 +1688,14 @@ _0222E3EA: ldr r0, [r6, r7] add r5, r5, #4 add r4, r4, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r4, r0 blt _0222E3EA _0222E402: ldr r0, _0222E430 ; =0x0000221C mov r5, #0 ldr r0, [r6, r0] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #0 ble _0222E42A ldr r7, _0222E430 ; =0x0000221C @@ -1707,7 +1707,7 @@ _0222E414: ldr r0, [r6, r7] add r4, r4, #4 add r5, r5, #1 - bl FUN_0206B9AC + bl GetPartyCount cmp r5, r0 blt _0222E414 _0222E42A: @@ -2694,7 +2694,7 @@ MOD71_0222EC5C: ; 0x0222EC5C add r4, r0, #0 add r0, r6, #0 add r1, r7, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x76 add r2, r4, #0 bl GetMonData @@ -2728,7 +2728,7 @@ MOD71_0222ECA8: ; 0x0222ECA8 _0222ECB6: add r0, r1, #0 add r1, r2, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0x4d mov r2, #0 bl GetMonData @@ -2753,7 +2753,7 @@ MOD71_0222ECD4: ; 0x0222ECD4 str r2, [sp, #8] str r3, [sp, #0xc] ldr r4, [sp, #0x50] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #2 bl FUN_02068E14 str r0, [sp, #0x10] @@ -2929,7 +2929,7 @@ _0222EE14: bl MOD71_02230EFC ldr r0, [sp, #8] ldr r1, [sp, #0xc] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa0 mov r2, #0 bl GetMonData @@ -2975,7 +2975,7 @@ _0222EEA6: bl MOD71_02230EFC ldr r0, [sp, #8] ldr r1, [sp, #0xc] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #6 mov r2, #0 bl GetMonData @@ -3864,7 +3864,7 @@ MOD71_0222F59C: ; 0x0222F59C str r0, [r5, #0xc] ldr r0, [r5, #8] ldr r0, [r0, #8] - bl FUN_0206B9AC + bl GetPartyCount strb r0, [r5, #0x1f] mov r0, #0 str r0, [r5, #0x34] @@ -3880,7 +3880,7 @@ _0222F5CC: ldr r1, [r5, r0] str r1, [r5, #0xc] ldr r0, [r5, r0] - bl FUN_0206B9AC + bl GetPartyCount strb r0, [r5, #0x1f] bl FUN_02031190 mov r2, #1 @@ -4875,7 +4875,7 @@ MOD71_0222FDD8: ; 0x0222FDD8 add r1, #0x88 ldr r0, [r4, r0] ldr r1, [r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex bl FUN_020690E4 add r2, r0, #0 mov r0, #0x5f @@ -5694,7 +5694,7 @@ MOD71_022304AC: ; 0x022304AC add r1, #0x88 ldr r0, [r4, r0] ldr r1, [r1] - bl FUN_0206B9B0 + bl GetPartyMonByIndex bl FUN_020690E4 add r2, r0, #0 mov r0, #0x5f @@ -5708,7 +5708,7 @@ MOD71_022304AC: ; 0x022304AC ldr r1, [r1] ldr r0, [r4, r0] sub r1, r1, #6 - bl FUN_0206B9B0 + bl GetPartyMonByIndex bl FUN_020690E4 add r2, r0, #0 mov r0, #0x5f @@ -6121,7 +6121,7 @@ MOD71_02230810: ; 0x02230810 ldr r1, [r1] ldr r0, [r4, r0] sub r1, r1, #6 - bl FUN_0206B9B0 + bl GetPartyMonByIndex bl FUN_020690E4 add r2, r0, #0 mov r0, #0x5f @@ -6327,12 +6327,12 @@ MOD71_022309E8: ; 0x022309E8 add r4, r0, #0 ldr r0, [sp, #4] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r7, #0 bl FUN_02069B88 ldr r0, [sp, #8] ldr r1, [sp, #0xc] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r4, #0 bl FUN_02069B88 add r0, r4, #0 @@ -6387,13 +6387,13 @@ _02230A98: bl FUN_0202C144 ldr r0, [sp, #4] add r1, r6, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0 add r0, r4, #0 bl FUN_02069B88 ldr r0, [sp, #8] ldr r1, [sp, #0xc] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0 add r0, r7, #0 bl FUN_02069B88 @@ -6538,7 +6538,7 @@ MOD71_02230BC4: ; 0x02230BC4 ldr r0, _02230C00 ; =0x00002218 mov r4, #0 ldr r0, [r5, r0] - bl FUN_0206B9AC + bl GetPartyCount add r3, r4, #0 cmp r0, #0 ble _02230BF0 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index 71ef95f1..2ff872c5 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -4660,7 +4660,7 @@ _0222FA26: beq _0222FA80 ldr r0, [r5] ldr r0, [r0, #8] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #6 bne _0222FA80 ldr r0, _0222FAE4 ; =0x00000F0F @@ -9976,7 +9976,7 @@ _022325CE: add r1, #0xba ldrh r1, [r1] ldr r0, [r0, #8] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa1 add r2, r4, #0 bl GetMonData @@ -10216,7 +10216,7 @@ _022327CE: add r1, #0xba ldrh r1, [r1] ldr r0, [r0, #8] - bl FUN_0206B9B0 + bl GetPartyMonByIndex mov r1, #0xa1 add r2, r4, #0 bl GetMonData @@ -10458,7 +10458,7 @@ MOD80_02232990: ; 0x02232990 beq _022329E6 ldr r0, [r4] ldr r0, [r0, #8] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #6 bne _022329E6 ldr r0, _02232A2C ; =0x00000F0F @@ -11031,7 +11031,7 @@ _02232E22: _02232E3A: ldr r0, [r5] ldr r0, [r0, #8] - bl FUN_0206B9AC + bl GetPartyCount mov r4, #0 str r0, [sp, #0x14] cmp r0, #0 @@ -11040,7 +11040,7 @@ _02232E4A: ldr r0, [r5] add r1, r4, #0 ldr r0, [r0, #8] - bl FUN_0206B9B0 + bl GetPartyMonByIndex str r0, [sp, #0x24] bl FUN_020690E4 ldr r1, _02232F84 ; =0x00001004 @@ -11221,7 +11221,7 @@ MOD80_02232FB8: ; 0x02232FB8 cmp r0, #0 beq _02232FEA add r0, r5, #0 - bl FUN_0206B9AC + bl GetPartyCount sub r0, r0, #1 cmp r4, r0 ble _02232FDC @@ -11230,7 +11230,7 @@ MOD80_02232FB8: ; 0x02232FB8 _02232FDC: add r0, r5, #0 add r1, r4, #0 - bl FUN_0206B9B0 + bl GetPartyMonByIndex bl FUN_020690E4 pop {r3, r4, r5, r6, r7, pc} _02232FEA: @@ -11251,7 +11251,7 @@ MOD80_02232FF8: ; 0x02232FF8 cmp r0, #0 beq _02233014 add r0, r4, #0 - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #2 bge _02233014 mov r0, #0 @@ -16102,7 +16102,7 @@ _02235590: add r1, #0xba ldrh r1, [r1] ldr r0, [r0, #8] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r4, r0, #0 bl FUN_0206AA84 add r2, r5, #0 @@ -16161,7 +16161,7 @@ MOD80_022355F0: ; 0x022355F0 str r0, [sp, #0x20] ldr r0, [r5] ldr r0, [r0, #8] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #6 bne _02235624 mov r0, #0 @@ -16189,7 +16189,7 @@ _02235640: bl FUN_0206B900 ldr r0, [r5] ldr r0, [r0, #8] - bl FUN_0206B9AC + bl GetPartyCount add r1, r5, #0 mov r2, #0x12 add r1, #0xcc @@ -16246,7 +16246,7 @@ MOD80_022356AC: ; 0x022356AC str r0, [sp, #0x20] ldr r0, [r5] ldr r0, [r0, #8] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #6 bne _022356D2 mov r0, #0 @@ -16268,7 +16268,7 @@ _022356D2: bl FUN_0206B900 ldr r0, [r5] ldr r0, [r0, #8] - bl FUN_0206B9AC + bl GetPartyCount add r1, r5, #0 mov r2, #0x12 add r1, #0xcc @@ -16395,7 +16395,7 @@ MOD80_022357DC: ; 0x022357DC beq _022357FA ldr r0, [r4] ldr r0, [r0, #8] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #6 bne _022357FA mov r0, #2 @@ -16409,7 +16409,7 @@ _022357FA: bne _02235816 ldr r0, [r4] ldr r0, [r0, #8] - bl FUN_0206B9AC + bl GetPartyCount cmp r0, #6 bne _02235816 mov r0, #1 @@ -17717,7 +17717,7 @@ MOD80_02236218: ; 0x02236218 add r5, #0xd0 ldr r0, [r0, #8] ldr r1, [r5] - bl FUN_0206B9B0 + bl GetPartyMonByIndex add r1, r0, #0 add r0, r4, #0 bl FUN_02069B88 diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index d3c4ead6..24d95575 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -1,6 +1,7 @@ #include "global.h" #define IN_POKEMON_C #include "proto.h" +#include "party.h" #include "pokemon.h" #include "filesystem.h" #include "heap.h" @@ -12,6 +13,7 @@ #include "constants/abilities.h" #include "constants/items.h" #include "constants/moves.h" +#include "constants/sinnoh_dex.h" #pragma thumb on @@ -30,6 +32,10 @@ void InitBoxMonMoveset(struct BoxPokemon * boxmon); u32 FUN_020696A8(struct BoxPokemon * boxmon, u16 move); void FUN_02069718(struct BoxPokemon * boxmon, u16 move); void FUN_020697D4(struct BoxPokemon * boxmon, u16 move, u8 slot); +void FUN_020698E8(struct BoxPokemon * boxmon, int slot1, int slot2); +s8 FUN_02069BD0(struct BoxPokemon * boxmon, int flavor); +s8 FUN_02069BE4(u32 personality, int flavor); +u8 FUN_02069CF4(struct PlayerParty * party_p, u8 mask); void LoadWotbl_HandleAlternateForme(int species, int forme, u16 * wotbl); u32 MaskOfFlagNo(int flagno); void LoadMonPersonal(int species, struct BaseStats * personal); @@ -2874,3 +2880,261 @@ void FUN_020697D4(struct BoxPokemon * boxmon, u16 move, u8 slot) pp = FUN_0206AB30(move, ppUp); SetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot, &pp); } + +u32 FUN_02069818(struct Pokemon * pokemon, u32 * r5, u16 * sp0) +{ + u32 ret = 0; + u16 * wotbl = AllocFromHeap(0, 22 * sizeof(u16)); + u16 species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); + u32 forme = GetMonData(pokemon, MON_DATA_FORME, NULL); + u8 level = GetMonData(pokemon, MON_DATA_LEVEL, NULL); + LoadWotbl_HandleAlternateForme(species, forme, wotbl); + + + if (wotbl[*r5] == 0xFFFF) + { + FreeToHeap(wotbl); + return 0; + } + while ((wotbl[*r5] & WOTBL_LVL_MASK) != (level << WOTBL_LVL_SHIFT)) + { + (*r5)++; + if (wotbl[*r5] == 0xFFFF) + { + FreeToHeap(wotbl); + return 0; + } + } + if ((wotbl[*r5] & WOTBL_LVL_MASK) == (level << WOTBL_LVL_SHIFT)) + { + *sp0 = WOTBL_MOVE(wotbl[*r5]); + (*r5)++; + ret = FUN_02069698(pokemon, *sp0); + } + FreeToHeap(wotbl); + return ret; +} + +void FUN_020698E0(struct Pokemon * pokemon, int slot1, int slot2) +{ + FUN_020698E8(&pokemon->box, slot1, slot2); +} + +void FUN_020698E8(struct BoxPokemon * boxmon, int slot1, int slot2) +{ + u16 moves[2]; + u8 pp[2]; + u8 ppUp[2]; + + moves[0] = GetBoxMonData(boxmon, MON_DATA_MOVE1 + slot1, NULL); + pp[0] = GetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot1, NULL); + ppUp[0] = GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + slot1, NULL); + moves[1] = GetBoxMonData(boxmon, MON_DATA_MOVE1 + slot2, NULL); + pp[1] = GetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot2, NULL); + ppUp[1] = GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + slot2, NULL); + + SetBoxMonData(boxmon, MON_DATA_MOVE1 + slot1, &moves[1]); + SetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot1, &pp[1]); + SetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + slot1, &ppUp[1]); + SetBoxMonData(boxmon, MON_DATA_MOVE1 + slot2, &moves[0]); + SetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot2, &pp[0]); + SetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + slot2, &ppUp[0]); +} + +void FUN_020699A4(struct Pokemon * pokemon, u32 slot) +{ + u16 move; + u8 pp; + u8 ppUp; + for (; slot < 3; slot++) + { + move = GetMonData(pokemon, MON_DATA_MOVE1 + slot + 1, NULL); + pp = GetMonData(pokemon, MON_DATA_MOVE1PP + slot + 1, NULL); + ppUp = GetMonData(pokemon, MON_DATA_MOVE1PPUP + slot + 1, NULL); + SetMonData(pokemon, MON_DATA_MOVE1 + slot, &move); + SetMonData(pokemon, MON_DATA_MOVE1PP + slot, &pp); + SetMonData(pokemon, MON_DATA_MOVE1PPUP + slot, &ppUp); + } + move = MOVE_NONE; + pp = 0; + ppUp = 0; + SetMonData(pokemon, MON_DATA_MOVE1 + 3, &move); + SetMonData(pokemon, MON_DATA_MOVE1PP + 3, &pp); + SetMonData(pokemon, MON_DATA_MOVE1PPUP + 3, &ppUp); +} + +BOOL MonHasMove(struct Pokemon * pokemon, u16 move) +{ + int i; + for (i = 0; i < 4; i++) + { + if (GetMonData(pokemon, MON_DATA_MOVE1 + i, NULL) == move) + break; + } + if (i != 4) + return TRUE; + else + return FALSE; +} + +void FUN_02069A64(struct BoxPokemon * src, struct Pokemon * dest) +{ + u32 sp0 = 0; + u8 sp4[12][2]; + struct SealStruct * seals; + dest->box = *src; + if (dest->box.box_lock) + dest->box.party_lock = TRUE; + SetMonData(dest, MON_DATA_STATUS, &sp0); + SetMonData(dest, MON_DATA_HP, &sp0); + SetMonData(dest, MON_DATA_MAXHP, &sp0); + seals = CreateNewSealsObject(0); + SetMonData(dest, MON_DATA_SEAL_STRUCT, seals); + FreeToHeap(seals); + SetMonData(dest, MON_DATA_CAPSULE, &sp0); + MIi_CpuClearFast(0, sp4, sizeof(sp4)); + SetMonData(dest, MON_DATA_SEAL_COORDS, sp4); + CalcMonLevelAndStats(dest); +} + +u8 FUN_02069AEC(struct PlayerParty * party) +{ + int i; + int r7 = GetPartyCount(party); + u8 ret = 1; + u8 level; + for (i = 0; i < r7; i++) + { + struct Pokemon * pokemon = GetPartyMonByIndex(party, i); + if (GetMonData(pokemon, MON_DATA_SPECIES, NULL) != SPECIES_NONE + && !GetMonData(pokemon, MON_DATA_IS_EGG, NULL)) + { + level = GetMonData(pokemon, MON_DATA_LEVEL, NULL); + if (level > ret) + ret = level; + } + } + return ret; +} + +u16 FUN_02069B40(u16 species) +{ + u16 ret; + ReadFromNarcMemberByIdPair(&ret, NARC_POKETOOL_POKEZUKAN, 0, species * sizeof(u16), sizeof(u16)); + return ret; +} + +u16 FUN_02069B60(u16 sinnoh_dex) +{ + u16 ret = SPECIES_NONE; + if (sinnoh_dex <= SINNOH_DEX_COUNT) + ReadFromNarcMemberByIdPair(&ret, NARC_POKETOOL_SHINZUKAN, 0, sinnoh_dex * sizeof(u16), sizeof(u16)); + return ret; +} + +void FUN_02069B88(struct Pokemon * src, struct Pokemon * dest) +{ + *dest = *src; +} + +void FUN_02069BA0(struct Pokemon * src, struct BoxPokemon * dest) +{ + *dest = src->box; +} + +void FUN_02069BB4(struct BoxPokemon * src, struct BoxPokemon * dest) +{ + *dest = *src; +} + +s8 FUN_02069BC8(struct Pokemon * pokemon, int flavor) +{ + return FUN_02069BD0(&pokemon->box, flavor); +} + +s8 FUN_02069BD0(struct BoxPokemon * boxmon, int flavor) +{ + u32 personality = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL); + return FUN_02069BE4(personality, flavor); +} + +s8 FUN_02069BE4(u32 personality, int flavor) +{ + return UNK_020F7F16[GetNatureFromPersonality(personality)][flavor]; +} + +int FUN_02069BFC(u16 species, u32 forme, u16 * dest) +{ + int i; + u16 * wotbl = AllocFromHeap(0, 22 * sizeof(u16)); + LoadWotbl_HandleAlternateForme(species, forme, wotbl); + for (i = 0; wotbl[i] != WOTBL_END; i++) + { + dest[i] = WOTBL_MOVE(wotbl[i]); + } + FreeToHeap(wotbl); + return i; +} + +void FUN_02069C4C(struct PlayerParty * party) +{ + int count = GetPartyCount(party); + int idx; + struct Pokemon * pokemon; + u8 sp0; + switch (rand_LC()) + { + case 0x4000: + case 0x8000: + case 0xC000: + do + { + idx = rand_LC() % count; + pokemon = GetPartyMonByIndex(party, idx); + } while (GetMonData(pokemon, MON_DATA_SPECIES, NULL) == SPECIES_NONE || GetMonData(pokemon, MON_DATA_IS_EGG, NULL)); + if (!FUN_02069CF4(party, MaskOfFlagNo(idx))) + { + do + { + sp0 = rand_LC(); + } while (!(sp0 & 7)); + if (sp0 & 0xF0) + sp0 &= 7; + sp0 |= sp0 << 4; + sp0 &= 0xF3; + sp0++; + SetMonData(pokemon, MON_DATA_POKERUS, &sp0); + } + } +} + +u8 FUN_02069CF4(struct PlayerParty * party, u8 mask) +{ + int i = 0; + u32 flag = 1; + u8 ret = 0; + struct Pokemon * pokemon; + if (mask != 0) + { + do + { + if (mask & 1) + { + pokemon = GetPartyMonByIndex(party, i); + if (GetMonData(pokemon, MON_DATA_POKERUS, NULL)) + ret |= flag; + } + i++; + flag <<= 1; + mask >>= 1; + } + while (mask != 0); + } + else + { + pokemon = GetPartyMonByIndex(party, 0); + if (GetMonData(pokemon, MON_DATA_POKERUS, NULL)) + ret++; + } + return ret; +} diff --git a/include/constants/sinnoh_dex.h b/include/constants/sinnoh_dex.h new file mode 100644 index 00000000..555ced8b --- /dev/null +++ b/include/constants/sinnoh_dex.h @@ -0,0 +1,158 @@ +#ifndef POKEDIAMOND_CONSTANTS_SINNOH_DEX_H +#define POKEDIAMOND_CONSTANTS_SINNOH_DEX_H + +#define SINNOH_DEX_ARCEUS 0 +#define SINNOH_DEX_TURTWIG 1 +#define SINNOH_DEX_GROTLE 2 +#define SINNOH_DEX_TORTERRA 3 +#define SINNOH_DEX_CHIMCHAR 4 +#define SINNOH_DEX_MONFERNO 5 +#define SINNOH_DEX_INFERNAPE 6 +#define SINNOH_DEX_PIPLUP 7 +#define SINNOH_DEX_PRINPLUP 8 +#define SINNOH_DEX_EMPOLEON 9 +#define SINNOH_DEX_STARLY 10 +#define SINNOH_DEX_STARAVIA 11 +#define SINNOH_DEX_STARAPTOR 12 +#define SINNOH_DEX_BIDOOF 13 +#define SINNOH_DEX_BIBAREL 14 +#define SINNOH_DEX_KRICKETOT 15 +#define SINNOH_DEX_KRICKETUNE 16 +#define SINNOH_DEX_SHINX 17 +#define SINNOH_DEX_LUXIO 18 +#define SINNOH_DEX_LUXRAY 19 +#define SINNOH_DEX_ABRA 20 +#define SINNOH_DEX_KADABRA 21 +#define SINNOH_DEX_ALAKAZAM 22 +#define SINNOH_DEX_MAGIKARP 23 +#define SINNOH_DEX_GYARADOS 24 +#define SINNOH_DEX_BUDEW 25 +#define SINNOH_DEX_ROSELIA 26 +#define SINNOH_DEX_ROSERADE 27 +#define SINNOH_DEX_ZUBAT 28 +#define SINNOH_DEX_GOLBAT 29 +#define SINNOH_DEX_CROBAT 30 +#define SINNOH_DEX_GEODUDE 31 +#define SINNOH_DEX_GRAVELER 32 +#define SINNOH_DEX_GOLEM 33 +#define SINNOH_DEX_ONIX 34 +#define SINNOH_DEX_STEELIX 35 +#define SINNOH_DEX_CRANIDOS 36 +#define SINNOH_DEX_RAMPARDOS 37 +#define SINNOH_DEX_SHIELDON 38 +#define SINNOH_DEX_BASTIODON 39 +#define SINNOH_DEX_MACHOP 40 +#define SINNOH_DEX_MACHOKE 41 +#define SINNOH_DEX_MACHAMP 42 +#define SINNOH_DEX_PSYDUCK 43 +#define SINNOH_DEX_GOLDUCK 44 +#define SINNOH_DEX_BURMY 45 +#define SINNOH_DEX_WORMADAM 46 +#define SINNOH_DEX_MOTHIM 47 +#define SINNOH_DEX_WURMPLE 48 +#define SINNOH_DEX_SILCOON 49 +#define SINNOH_DEX_BEAUTIFLY 50 +#define SINNOH_DEX_CASCOON 51 +#define SINNOH_DEX_DUSTOX 52 +#define SINNOH_DEX_COMBEE 53 +#define SINNOH_DEX_VESPIQUEN 54 +#define SINNOH_DEX_PACHIRISU 55 +#define SINNOH_DEX_BUIZEL 56 +#define SINNOH_DEX_FLOATZEL 57 +#define SINNOH_DEX_CHERUBI 58 +#define SINNOH_DEX_CHERRIM 59 +#define SINNOH_DEX_SHELLOS 60 +#define SINNOH_DEX_GASTRODON 61 +#define SINNOH_DEX_HERACROSS 62 +#define SINNOH_DEX_AIPOM 63 +#define SINNOH_DEX_AMBIPOM 64 +#define SINNOH_DEX_DRIFLOON 65 +#define SINNOH_DEX_DRIFBLIM 66 +#define SINNOH_DEX_BUNEARY 67 +#define SINNOH_DEX_LOPUNNY 68 +#define SINNOH_DEX_GASTLY 69 +#define SINNOH_DEX_HAUNTER 70 +#define SINNOH_DEX_GENGAR 71 +#define SINNOH_DEX_MISDREAVUS 72 +#define SINNOH_DEX_MISMAGIUS 73 +#define SINNOH_DEX_MURKROW 74 +#define SINNOH_DEX_HONCHKROW 75 +#define SINNOH_DEX_GLAMEOW 76 +#define SINNOH_DEX_PURUGLY 77 +#define SINNOH_DEX_GOLDEEN 78 +#define SINNOH_DEX_SEAKING 79 +#define SINNOH_DEX_BARBOACH 80 +#define SINNOH_DEX_WHISCASH 81 +#define SINNOH_DEX_CHINGLING 82 +#define SINNOH_DEX_CHIMECHO 83 +#define SINNOH_DEX_STUNKY 84 +#define SINNOH_DEX_SKUNTANK 85 +#define SINNOH_DEX_MEDITITE 86 +#define SINNOH_DEX_MEDICHAM 87 +#define SINNOH_DEX_BRONZOR 88 +#define SINNOH_DEX_BRONZONG 89 +#define SINNOH_DEX_PONYTA 90 +#define SINNOH_DEX_RAPIDASH 91 +#define SINNOH_DEX_BONSLY 92 +#define SINNOH_DEX_SUDOWOODO 93 +#define SINNOH_DEX_MIME_JR 94 +#define SINNOH_DEX_MR_MIME 95 +#define SINNOH_DEX_HAPPINY 96 +#define SINNOH_DEX_CHANSEY 97 +#define SINNOH_DEX_BLISSEY 98 +#define SINNOH_DEX_CLEFFA 99 +#define SINNOH_DEX_CLEFAIRY 100 +#define SINNOH_DEX_CLEFABLE 101 +#define SINNOH_DEX_CHATOT 102 +#define SINNOH_DEX_PICHU 103 +#define SINNOH_DEX_PIKACHU 104 +#define SINNOH_DEX_RAICHU 105 +#define SINNOH_DEX_HOOTHOOT 106 +#define SINNOH_DEX_NOCTOWL 107 +#define SINNOH_DEX_SPIRITOMB 108 +#define SINNOH_DEX_GIBLE 109 +#define SINNOH_DEX_GABITE 110 +#define SINNOH_DEX_GARCHOMP 111 +#define SINNOH_DEX_MUNCHLAX 112 +#define SINNOH_DEX_SNORLAX 113 +#define SINNOH_DEX_UNOWN 114 +#define SINNOH_DEX_RIOLU 115 +#define SINNOH_DEX_LUCARIO 116 +#define SINNOH_DEX_WOOPER 117 +#define SINNOH_DEX_QUAGSIRE 118 +#define SINNOH_DEX_WINGULL 119 +#define SINNOH_DEX_PELIPPER 120 +#define SINNOH_DEX_GIRAFARIG 121 +#define SINNOH_DEX_HIPPOPOTAS 122 +#define SINNOH_DEX_HIPPOWDON 123 +#define SINNOH_DEX_AZURILL 124 +#define SINNOH_DEX_MARILL 125 +#define SINNOH_DEX_AZUMARILL 126 +#define SINNOH_DEX_SKORUPI 127 +#define SINNOH_DEX_DRAPION 128 +#define SINNOH_DEX_CROAGUNK 129 +#define SINNOH_DEX_TOXICROAK 130 +#define SINNOH_DEX_CARNIVINE 131 +#define SINNOH_DEX_REMORAID 132 +#define SINNOH_DEX_OCTILLERY 133 +#define SINNOH_DEX_FINNEON 134 +#define SINNOH_DEX_LUMINEON 135 +#define SINNOH_DEX_TENTACOOL 136 +#define SINNOH_DEX_TENTACRUEL 137 +#define SINNOH_DEX_FEEBAS 138 +#define SINNOH_DEX_MILOTIC 139 +#define SINNOH_DEX_MANTYKE 140 +#define SINNOH_DEX_MANTINE 141 +#define SINNOH_DEX_SNOVER 142 +#define SINNOH_DEX_ABOMASNOW 143 +#define SINNOH_DEX_SNEASEL 144 +#define SINNOH_DEX_WEAVILE 145 +#define SINNOH_DEX_UXIE 146 +#define SINNOH_DEX_MESPRIT 147 +#define SINNOH_DEX_AZELF 148 +#define SINNOH_DEX_DIALGA 149 +#define SINNOH_DEX_PALKIA 150 +#define SINNOH_DEX_MANAPHY 151 +#define SINNOH_DEX_COUNT SINNOH_DEX_MANAPHY + +#endif //POKEDIAMOND_CONSTANTS_SINNOH_DEX_H diff --git a/include/party.h b/include/party.h new file mode 100644 index 00000000..b6065a3f --- /dev/null +++ b/include/party.h @@ -0,0 +1,19 @@ +#ifndef POKEDIAMOND_PARTY_H +#define POKEDIAMOND_PARTY_H + +#include "pokemon.h" + +#define PARTY_SIZE 6 + +struct PlayerParty +{ + u32 maxCount; + u32 curCount; + struct Pokemon mons[PARTY_SIZE]; +}; + +BOOL PartyHasMon(struct PlayerParty * party_p, u16 species); +int GetPartyCount(struct PlayerParty * party_p); +struct Pokemon * GetPartyMonByIndex(struct PlayerParty * party_p, int idx); + +#endif //POKEDIAMOND_PARTY_H diff --git a/include/pokemon.h b/include/pokemon.h index 83630d39..166a1c7e 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -537,15 +537,6 @@ struct Evolution u16 target; }; -#define PARTY_SIZE 6 - -struct PlayerParty -{ - u32 maxCount; - u32 curCount; - struct Pokemon mons[PARTY_SIZE]; -}; - void ZeroMonData(struct Pokemon * pokemon); void ZeroBoxMonData(struct BoxPokemon * boxmon); u32 SizeOfStructPokemon(void); diff --git a/include/proto.h b/include/proto.h index d9a5ec2a..d26b7750 100644 --- a/include/proto.h +++ b/include/proto.h @@ -17,6 +17,5 @@ u32 GetArceusTypeByPlate(u16 plate); int FUN_02014C3C(u8); void FUN_02014C54(int, int, struct UnkStruct_02069038 *, u8); u32 IsNighttime(void); // is day or night -u32 PartyHasMon(struct PlayerParty *, u16); #endif //POKEDIAMOND_PROTO_H -- cgit v1.2.3 From 925f63ba7497576698c14f0598113294d19b37d9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Jun 2020 18:09:26 -0400 Subject: through FUN_0206A054 --- arm9/asm/pokemon_s.s | 461 +--------------------------------------- arm9/global.inc | 2 +- arm9/modules/11/asm/module_11.s | 2 +- arm9/src/pokemon.c | 201 +++++++++++++++++- include/constants/pokemon.h | 410 +++++++++++++++++++++++++++++++++++ include/pokemon.h | 321 +--------------------------- include/proto.h | 7 +- 7 files changed, 624 insertions(+), 780 deletions(-) create mode 100644 include/constants/pokemon.h diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 7e0497d2..2d6f2579 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -1,465 +1,12 @@ - .include "asm/macros.inc" - .include "global.inc" - .include "constants/species.h" + .include "asm/macros.inc" + .include "global.inc" + .include "constants/species.h" - .extern gGameVersion .extern sItemOdds - .extern sLegendaryMonsList - .extern UNK_020F7F16 + .extern sLegendaryMonsList .text - thumb_func_start FUN_02069D50 -FUN_02069D50: ; 0x02069D50 - push {r4-r7, lr} - sub sp, #0xc - str r0, [sp, #0x0] - add r5, r1, #0x0 - bl GetPartyCount - mov r6, #0x0 - str r0, [sp, #0x4] - cmp r0, #0x0 - ble _02069DC2 - add r4, sp, #0x8 -_02069D66: - ldr r0, [sp, #0x0] - add r1, r6, #0x0 - bl GetPartyMonByIndex - mov r1, #0x5 - mov r2, #0x0 - add r7, r0, #0x0 - bl GetMonData - cmp r0, #0x0 - beq _02069DBA - add r0, r7, #0x0 - mov r1, #0x99 - mov r2, #0x0 - bl GetMonData - strb r0, [r4, #0x0] - ldrb r1, [r4, #0x0] - mov r0, #0xf - and r0, r1 - beq _02069DBA - cmp r0, r5 - blt _02069D98 - cmp r5, #0x4 - ble _02069DA2 -_02069D98: - ldrb r1, [r4, #0x0] - mov r0, #0xf0 - and r0, r1 - strb r0, [r4, #0x0] - b _02069DA6 -_02069DA2: - sub r0, r1, r5 - strb r0, [r4, #0x0] -_02069DA6: - ldrb r0, [r4, #0x0] - cmp r0, #0x0 - bne _02069DB0 - mov r0, #0x10 - strb r0, [r4, #0x0] -_02069DB0: - add r0, r7, #0x0 - mov r1, #0x99 - add r2, sp, #0x8 - bl SetMonData -_02069DBA: - ldr r0, [sp, #0x4] - add r6, r6, #0x1 - cmp r6, r0 - blt _02069D66 -_02069DC2: - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_02069DC8 -FUN_02069DC8: ; 0x02069DC8 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl GetPartyCount - add r7, r0, #0x0 - bl rand_LC - mov r1, #0x3 - bl _s32_div_f - cmp r1, #0x0 - bne _02069E70 - mov r4, #0x0 - cmp r7, #0x0 - ble _02069E70 - sub r0, r7, #0x1 - str r0, [sp, #0x0] -_02069DEC: - add r0, r5, #0x0 - add r1, r4, #0x0 - bl GetPartyMonByIndex - mov r1, #0x5 - mov r2, #0x0 - add r6, r0, #0x0 - bl GetMonData - cmp r0, #0x0 - beq _02069E6A - add r0, r6, #0x0 - mov r1, #0x99 - mov r2, #0x0 - bl GetMonData - add r1, sp, #0x4 - strb r0, [r1, #0x0] - add r0, r1, #0x0 - ldrb r1, [r0, #0x0] - mov r0, #0xf - tst r0, r1 - beq _02069E6A - cmp r4, #0x0 - beq _02069E40 - add r0, r5, #0x0 - sub r1, r4, #0x1 - bl GetPartyMonByIndex - mov r1, #0x99 - mov r2, #0x0 - add r6, r0, #0x0 - bl GetMonData - mov r1, #0xf0 - tst r0, r1 - bne _02069E40 - add r0, r6, #0x0 - mov r1, #0x99 - add r2, sp, #0x4 - bl SetMonData -_02069E40: - ldr r0, [sp, #0x0] - cmp r4, r0 - bge _02069E6A - add r0, r5, #0x0 - add r1, r4, #0x1 - bl GetPartyMonByIndex - mov r1, #0x99 - mov r2, #0x0 - add r6, r0, #0x0 - bl GetMonData - mov r1, #0xf0 - tst r0, r1 - bne _02069E6A - add r0, r6, #0x0 - mov r1, #0x99 - add r2, sp, #0x4 - bl SetMonData - add r4, r4, #0x1 -_02069E6A: - add r4, r4, #0x1 - cmp r4, r7 - blt _02069DEC -_02069E70: - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_02069E74 -FUN_02069E74: ; 0x02069E74 - ldr r3, _02069E78 ; =FUN_02069E7C - bx r3 - .balign 4 -_02069E78: .word FUN_02069E7C - - thumb_func_start FUN_02069E7C -FUN_02069E7C: ; 0x02069E7C - push {r3, lr} - mov r1, #0x99 - mov r2, #0x0 - bl GetBoxMonData - mov r1, #0xf - tst r0, r1 - beq _02069E90 - mov r0, #0x1 - pop {r3, pc} -_02069E90: - mov r0, #0x0 - pop {r3, pc} - - thumb_func_start FUN_02069E94 -FUN_02069E94: ; 0x02069E94 - ldr r3, _02069E98 ; =FUN_02069E9C - bx r3 - .balign 4 -_02069E98: .word FUN_02069E9C - - thumb_func_start FUN_02069E9C -FUN_02069E9C: ; 0x02069E9C - push {r3, lr} - mov r1, #0x99 - mov r2, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x18 - lsr r1, r0, #0x18 - mov r0, #0xf - tst r0, r1 - beq _02069EB4 - mov r0, #0x0 - pop {r3, pc} -_02069EB4: - mov r0, #0xf0 - tst r0, r1 - beq _02069EBE - mov r0, #0x1 - pop {r3, pc} -_02069EBE: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02069EC4 -FUN_02069EC4: ; 0x02069EC4 - ldr r3, _02069EC8 ; =FUN_02069ECC - bx r3 - .balign 4 -_02069EC8: .word FUN_02069ECC - - thumb_func_start FUN_02069ECC -FUN_02069ECC: ; 0x02069ECC - push {r3-r6, lr} - sub sp, #0x4 - add r5, r0, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonData - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0xa - mov r2, #0x0 - bl GetBoxMonData - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x6 - mov r2, #0x0 - bl GetBoxMonData - ldr r1, _02069F20 ; =SPECIES_ARCEUS - cmp r4, r1 - bne _02069F1C - cmp r6, #0x79 - bne _02069F1C - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r1, #0x1 - mov r2, #0x0 - bl FUN_0206E7B8 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl GetArceusTypeByPlate - str r0, [sp, #0x0] - add r0, r5, #0x0 - mov r1, #0x70 - add r2, sp, #0x0 - bl SetBoxMonData -_02069F1C: - add sp, #0x4 - pop {r3-r6, pc} - .balign 4 -_02069F20: .word SPECIES_ARCEUS - - thumb_func_start GetArceusTypeByPlate -GetArceusTypeByPlate: ; 0x02069F24 - sub r0, #0x7d - cmp r0, #0xf - bhi _02069F96 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02069F36: ; jump table (using 16-bit offset) - .short _02069F56 - _02069F36 - 2; case 0 - .short _02069F5A - _02069F36 - 2; case 1 - .short _02069F5E - _02069F36 - 2; case 2 - .short _02069F62 - _02069F36 - 2; case 3 - .short _02069F66 - _02069F36 - 2; case 4 - .short _02069F6A - _02069F36 - 2; case 5 - .short _02069F6E - _02069F36 - 2; case 6 - .short _02069F72 - _02069F36 - 2; case 7 - .short _02069F76 - _02069F36 - 2; case 8 - .short _02069F7A - _02069F36 - 2; case 9 - .short _02069F7E - _02069F36 - 2; case 10 - .short _02069F82 - _02069F36 - 2; case 11 - .short _02069F86 - _02069F36 - 2; case 12 - .short _02069F8A - _02069F36 - 2; case 13 - .short _02069F8E - _02069F36 - 2; case 14 - .short _02069F92 - _02069F36 - 2; case 15 -_02069F56: - mov r0, #0xa - bx lr -_02069F5A: - mov r0, #0xb - bx lr -_02069F5E: - mov r0, #0xd - bx lr -_02069F62: - mov r0, #0xc - bx lr -_02069F66: - mov r0, #0xf - bx lr -_02069F6A: - mov r0, #0x1 - bx lr -_02069F6E: - mov r0, #0x3 - bx lr -_02069F72: - mov r0, #0x4 - bx lr -_02069F76: - mov r0, #0x2 - bx lr -_02069F7A: - mov r0, #0xe - bx lr -_02069F7E: - mov r0, #0x6 - bx lr -_02069F82: - mov r0, #0x5 - bx lr -_02069F86: - mov r0, #0x7 - bx lr -_02069F8A: - mov r0, #0x10 - bx lr -_02069F8E: - mov r0, #0x11 - bx lr -_02069F92: - mov r0, #0x8 - bx lr -_02069F96: - mov r0, #0x0 - bx lr - .balign 4 - - thumb_func_start LoadWotbl_HandleAlternateForme -LoadWotbl_HandleAlternateForme: ; 0x02069F9C - push {r4, lr} - add r4, r2, #0x0 - bl ResolveMonForme - add r2, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x21 ; NARC_POKETOOL_PERSONAL_WOTBL - bl ReadWholeNarcMemberByIdPair - pop {r4, pc} - - thumb_func_start FUN_02069FB0 -FUN_02069FB0: ; 0x02069FB0 - push {r3-r7, lr} - add r7, r0, #0x0 - ldr r0, _0206A010 ; =0x000001B9 - add r4, r2, #0x0 - add r5, r1, #0x0 - add r6, r3, #0x0 - cmp r4, r0 - bne _02069FFC - add r0, r5, #0x0 - bl FUN_02005F14 - cmp r0, #0x0 - bne _02069FE2 - mov r0, #0x1 - bl FUN_02005E80 - ldr r0, [sp, #0x20] - ldr r3, [sp, #0x18] - str r0, [sp, #0x0] - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_020056AC - pop {r3-r7, pc} -_02069FE2: - ldr r0, [sp, #0x1c] - cmp r0, #0x0 - beq _02069FEE - mov r0, #0x1 - bl FUN_02005E80 -_02069FEE: - ldr r2, [sp, #0x18] - add r0, r7, #0x0 - mov r1, #0x0 - add r3, r6, #0x0 - bl FUN_02005E90 - pop {r3-r7, pc} -_02069FFC: - ldr r0, [sp, #0x20] - ldr r3, [sp, #0x18] - str r0, [sp, #0x0] - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_020056AC - pop {r3-r7, pc} - nop -_0206A010: .word 0x000001B9 - - thumb_func_start FUN_0206A014 -FUN_0206A014: ; 0x0206A014 - push {r3-r6, lr} - sub sp, #0xc - ldr r6, [sp, #0x20] - add r5, r0, #0x0 - str r6, [sp, #0x0] - ldr r6, [sp, #0x24] - add r4, r2, #0x0 - str r6, [sp, #0x4] - bl FUN_0206A054 - cmp r4, #0xe - bne _0206A050 - 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 -_0206A050: - add sp, #0xc - pop {r3-r6, pc} - - thumb_func_start FUN_0206A054 -FUN_0206A054: ; 0x0206A054 - push {r0-r3} - push {r3-r4, lr} - sub sp, #0x4 - ldr r2, [sp, #0x24] - add r4, r0, #0x0 - str r2, [sp, #0x0] - mov r2, #0x0 - bl FUN_020808AC - ldr r2, _0206A090 ; =gGameVersion - add r0, r4, #0x0 - mov r1, #0x79 - bl SetBoxMonData - add r0, r4, #0x0 - mov r1, #0x9a - add r2, sp, #0x18 - bl SetBoxMonData - add r0, r4, #0x0 - mov r1, #0x9d - add r2, sp, #0x20 - bl SetBoxMonData - add sp, #0x4 - pop {r3-r4} - pop {r3} - add sp, #0x10 - bx r3 - nop -_0206A090: .word gGameVersion - thumb_func_start FUN_0206A094 FUN_0206A094: ; 0x0206A094 push {r3-r7, lr} diff --git a/arm9/global.inc b/arm9/global.inc index ec19fbfe..08442742 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4792,7 +4792,7 @@ .extern FUN_02069E94 .extern FUN_02069EC4 .extern FUN_02069ECC -.extern GetArceusTypeByPlate +.extern GetArceusTypeByHeldItemEffect .extern LoadWotbl_HandleAlternateForme .extern FUN_02069FB0 .extern FUN_0206A014 diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s index 5558b99a..5b67e5a9 100644 --- a/arm9/modules/11/asm/module_11.s +++ b/arm9/modules/11/asm/module_11.s @@ -61031,7 +61031,7 @@ _0224B1D8: bl FUN_0206E7B8 lsl r0, r0, #0x10 lsr r0, r0, #0x10 - bl GetArceusTypeByPlate + bl GetArceusTypeByHeldItemEffect mov r1, #0x46 lsl r1, r1, #2 ldr r1, [r5, r1] diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 24d95575..ccd6bf54 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -36,7 +36,11 @@ void FUN_020698E8(struct BoxPokemon * boxmon, int slot1, int slot2); s8 FUN_02069BD0(struct BoxPokemon * boxmon, int flavor); s8 FUN_02069BE4(u32 personality, int flavor); u8 FUN_02069CF4(struct PlayerParty * party_p, u8 mask); +BOOL FUN_02069E7C(struct BoxPokemon * boxmon); +BOOL FUN_02069E9C(struct BoxPokemon * boxmon); +void FUN_02069ECC(struct BoxPokemon * boxmon); void LoadWotbl_HandleAlternateForme(int species, int forme, u16 * wotbl); +void FUN_0206A054(struct BoxPokemon * boxmon, u32 a1, u32 pokeball, u32 a3, u32 encounterType, u32 a5); u32 MaskOfFlagNo(int flagno); void LoadMonPersonal(int species, struct BaseStats * personal); void LoadMonEvolutionTable(u16 species, struct Evolution * dest); @@ -963,7 +967,7 @@ u32 GetBoxMonDataInternal(struct BoxPokemon * boxmon, int attr, void * dest) case MON_DATA_TYPE_1: case MON_DATA_TYPE_2: if (blockA->species == SPECIES_ARCEUS && blockA->ability == ABILITY_MULTITYPE) - ret = (u32)GetArceusTypeByPlate((u16)FUN_0206E7B8(blockA->heldItem, 1, 0)); + ret = (u32)GetArceusTypeByHeldItemEffect((u16)FUN_0206E7B8(blockA->heldItem, 1, 0)); else { ret = (u32)GetMonBaseStat_HandleFormeConversion(blockA->species, blockB->alternateForm, (enum BaseStat)(attr - MON_DATA_TYPE_1 + BASE_TYPE1)); @@ -3138,3 +3142,198 @@ u8 FUN_02069CF4(struct PlayerParty * party, u8 mask) } return ret; } + +void FUN_02069D50(struct PlayerParty * party, int r5) +{ + int i; + u8 pokerus; + struct Pokemon * pokemon; + int count = GetPartyCount(party); + for (i = 0; i < count; i++) + { + pokemon = GetPartyMonByIndex(party, i); + if (GetMonData(pokemon, MON_DATA_SPECIES, NULL) != SPECIES_NONE) + { + pokerus = GetMonData(pokemon, MON_DATA_POKERUS, NULL); + if (pokerus & 0xF) + { + if ((pokerus & 0xF) < r5 || r5 > 4) + pokerus &= 0xF0; + else + pokerus -= r5; + if (pokerus == 0) + pokerus = 0x10; // immune + SetMonData(pokemon, MON_DATA_POKERUS, &pokerus); + } + } + } +} + +void FUN_02069DC8(struct PlayerParty * party) +{ + int count = GetPartyCount(party); + int i; + struct Pokemon * pokemon; + u8 pokerus; + if ((rand_LC() % 3) == 0) + { + for (i = 0; i < count; i++) + { + pokemon = GetPartyMonByIndex(party, i); + if (GetMonData(pokemon, MON_DATA_SPECIES, NULL) != SPECIES_NONE) + { + pokerus = GetMonData(pokemon, MON_DATA_POKERUS, NULL); + if (pokerus & 0xF) + { + if (i != 0) + { + pokemon = GetPartyMonByIndex(party, i - 1); + if (!(GetMonData(pokemon, MON_DATA_POKERUS, NULL) & 0xF0)) + SetMonData(pokemon, MON_DATA_POKERUS, &pokerus); + } + if (i < count - 1) + { + pokemon = GetPartyMonByIndex(party, i + 1); + if (!(GetMonData(pokemon, MON_DATA_POKERUS, NULL) & 0xF0)) + { + SetMonData(pokemon, MON_DATA_POKERUS, &pokerus); + i++; // don't infect the rest of the party + } + } + } + } + } + } +} + +BOOL FUN_02069E74(struct Pokemon * pokemon) +{ + return FUN_02069E7C(&pokemon->box); +} + +BOOL FUN_02069E7C(struct BoxPokemon * boxmon) +{ + return !!(GetBoxMonData(boxmon, MON_DATA_POKERUS, NULL) & 0xF); +} + +BOOL FUN_02069E94(struct Pokemon * pokemon) +{ + return FUN_02069E9C(&pokemon->box); +} + +BOOL FUN_02069E9C(struct BoxPokemon * boxmon) +{ + u8 pokerus = GetBoxMonData(boxmon, MON_DATA_POKERUS, NULL); + if (pokerus & 0xF) + return FALSE; + if (pokerus & 0xF0) + return TRUE; + return FALSE; +} + +void FUN_02069EC4(struct Pokemon * pokemon) +{ + FUN_02069ECC(&pokemon->box); +} + +void FUN_02069ECC(struct BoxPokemon * boxmon) +{ + u32 species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + u32 ability = GetBoxMonData(boxmon, MON_DATA_ABILITY, NULL); + u32 heldItem = GetBoxMonData(boxmon, MON_DATA_HELD_ITEM, NULL); + u32 forme; + if (species == SPECIES_ARCEUS && ability == ABILITY_MULTITYPE) + { + forme = GetArceusTypeByHeldItemEffect(FUN_0206E7B8(heldItem, 1, 0)); + SetBoxMonData(boxmon, MON_DATA_FORME, &forme); + } +} + +u32 GetArceusTypeByHeldItemEffect(u16 heldEffect) +{ + switch (heldEffect) + { + case 0x7D: + return TYPE_FIRE; + case 0x7E: + return TYPE_WATER; + case 0x7F: + return TYPE_ELECTRIC; + case 0x80: + return TYPE_GRASS; + case 0x81: + return TYPE_ICE; + case 0x82: + return TYPE_FIGHTING; + case 0x83: + return TYPE_POISON; + case 0x84: + return TYPE_GROUND; + case 0x85: + return TYPE_FLYING; + case 0x86: + return TYPE_PSYCHIC; + case 0x87: + return TYPE_BUG; + case 0x88: + return TYPE_ROCK; + case 0x89: + return TYPE_GHOST; + case 0x8A: + return TYPE_DRAGON; + case 0x8B: + return TYPE_DARK; + case 0x8C: + return TYPE_STEEL; + default: + return TYPE_NORMAL; + } +} + +void LoadWotbl_HandleAlternateForme(int species, int forme, u16 * wotbl) +{ + ReadWholeNarcMemberByIdPair(wotbl, NARC_POKETOOL_PERSONAL_WOTBL, ResolveMonForme(species, forme)); +} + +void FUN_02069FB0(u32 r7, u32 r5, u32 r4, u32 r6, u32 sp18, u32 sp1C, u32 sp20) +{ + if (r4 == SPECIES_CHATOT) + { + if (!FUN_02005F14(r5)) + { + FUN_02005E80(1); + FUN_020056AC(r5, r4, r6, sp18, sp20); + } + else + { + if (sp1C) + FUN_02005E80(1); + FUN_02005E90(r7, 0, sp18, r6); + } + } + else + { + FUN_020056AC(r5, r4, r6, sp18, sp20); + } +} + +void FUN_0206A014(struct Pokemon * pokemon, u32 a1, u32 pokeball, u32 a3, u32 encounterType, u32 a5) +{ + u32 hp; + FUN_0206A054(&pokemon->box, a1, pokeball, a3, encounterType, a5); + if (pokeball == ITEM_HEAL_BALL) + { + hp = GetMonData(pokemon, MON_DATA_MAXHP, NULL); + SetMonData(pokemon, MON_DATA_HP, &hp); + hp = 0; + SetMonData(pokemon, MON_DATA_STATUS, &hp); + } +} + +void FUN_0206A054(struct BoxPokemon * boxmon, u32 a1, u32 pokeball, u32 a3, u32 encounterType, u32 a5) +{ + FUN_020808AC(boxmon, a1, 0, a3, a5); + SetBoxMonData(boxmon, MON_DATA_GAME_VERSION, (void *)&gGameVersion); + SetBoxMonData(boxmon, MON_DATA_POKEBALL, &pokeball); + SetBoxMonData(boxmon, MON_DATA_ENCOUNTER_TYPE, &encounterType); +} diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h new file mode 100644 index 00000000..41ae10fe --- /dev/null +++ b/include/constants/pokemon.h @@ -0,0 +1,410 @@ +#ifndef POKEDIAMOND_CONSTANTS_POKEMON_H +#define POKEDIAMOND_CONSTANTS_POKEMON_H + + +// Pokemon types +#define TYPE_NONE 255 +#define TYPE_NORMAL 0 +#define TYPE_FIGHTING 1 +#define TYPE_FLYING 2 +#define TYPE_POISON 3 +#define TYPE_GROUND 4 +#define TYPE_ROCK 5 +#define TYPE_BUG 6 +#define TYPE_GHOST 7 +#define TYPE_STEEL 8 +#define TYPE_MYSTERY 9 +#define TYPE_FIRE 10 +#define TYPE_WATER 11 +#define TYPE_GRASS 12 +#define TYPE_ELECTRIC 13 +#define TYPE_PSYCHIC 14 +#define TYPE_ICE 15 +#define TYPE_DRAGON 16 +#define TYPE_DARK 17 +#define NUMBER_OF_MON_TYPES 18 + +// Pokemon egg groups +#define EGG_GROUP_NONE 0 +#define EGG_GROUP_MONSTER 1 +#define EGG_GROUP_WATER_1 2 +#define EGG_GROUP_BUG 3 +#define EGG_GROUP_FLYING 4 +#define EGG_GROUP_FIELD 5 +#define EGG_GROUP_FAIRY 6 +#define EGG_GROUP_GRASS 7 +#define EGG_GROUP_HUMAN_LIKE 8 +#define EGG_GROUP_WATER_3 9 +#define EGG_GROUP_MINERAL 10 +#define EGG_GROUP_AMORPHOUS 11 +#define EGG_GROUP_WATER_2 12 +#define EGG_GROUP_DITTO 13 +#define EGG_GROUP_DRAGON 14 +#define EGG_GROUP_UNDISCOVERED 15 + +#define EGG_GROUPS_PER_MON 2 + +// Pokemon natures +#define NATURE_HARDY 0 +#define NATURE_LONELY 1 +#define NATURE_BRAVE 2 +#define NATURE_ADAMANT 3 +#define NATURE_NAUGHTY 4 +#define NATURE_BOLD 5 +#define NATURE_DOCILE 6 +#define NATURE_RELAXED 7 +#define NATURE_IMPISH 8 +#define NATURE_LAX 9 +#define NATURE_TIMID 10 +#define NATURE_HASTY 11 +#define NATURE_SERIOUS 12 +#define NATURE_JOLLY 13 +#define NATURE_NAIVE 14 +#define NATURE_MODEST 15 +#define NATURE_MILD 16 +#define NATURE_QUIET 17 +#define NATURE_BASHFUL 18 +#define NATURE_RASH 19 +#define NATURE_CALM 20 +#define NATURE_GENTLE 21 +#define NATURE_SASSY 22 +#define NATURE_CAREFUL 23 +#define NATURE_QUIRKY 24 + +// Pokemon Stats +#define STAT_HP 0 +#define STAT_ATK 1 +#define STAT_DEF 2 +#define STAT_SPEED 3 +#define STAT_SPATK 4 +#define STAT_SPDEF 5 +#define STAT_ACC 6 // Only in battles. +#define STAT_EVASION 7 // Only in battles. + +#define NUM_EV_STATS NUM_STATS - 1 // excludes HP +#define NUM_BATTLE_STATS NUM_STATS + 2 // includes Accuracy and Evasion + +// Shiny odds +#define SHINY_ODDS 8 // Actual probability is SHINY_ODDS/65536 + + +#define MON_DATA_PERSONALITY 0 +#define MON_DATA_PARTY_LOCK 1 +#define MON_DATA_BOX_LOCK 2 +#define MON_DATA_CHECKSUM_FAILED 3 +#define MON_DATA_CHECKSUM 4 +#define MON_DATA_SPECIES 5 +#define MON_DATA_HELD_ITEM 6 +#define MON_DATA_OTID 7 +#define MON_DATA_EXPERIENCE 8 +#define MON_DATA_FRIENDSHIP 9 +#define MON_DATA_ABILITY 10 +#define MON_DATA_MARKINGS 11 +#define MON_DATA_GAME_LANGUAGE 12 +#define MON_DATA_HP_EV 13 +#define MON_DATA_ATK_EV 14 +#define MON_DATA_DEF_EV 15 +#define MON_DATA_SPEED_EV 16 +#define MON_DATA_SPATK_EV 17 +#define MON_DATA_SPDEF_EV 18 +#define MON_DATA_COOL 19 +#define MON_DATA_BEAUTY 20 +#define MON_DATA_CUTE 21 +#define MON_DATA_SMART 22 +#define MON_DATA_TOUGH 23 +#define MON_DATA_SHEEN 24 +#define MON_DATA_SINNOH_CHAMP_RIBBON 25 +#define MON_DATA_SINNOH_RIBBON_26 26 +#define MON_DATA_SINNOH_RIBBON_27 27 +#define MON_DATA_SINNOH_RIBBON_28 28 +#define MON_DATA_SINNOH_RIBBON_29 29 +#define MON_DATA_SINNOH_RIBBON_30 30 +#define MON_DATA_SINNOH_RIBBON_31 31 +#define MON_DATA_SINNOH_RIBBON_32 32 +#define MON_DATA_SINNOH_RIBBON_33 33 +#define MON_DATA_SINNOH_RIBBON_34 34 +#define MON_DATA_SINNOH_RIBBON_35 35 +#define MON_DATA_SINNOH_RIBBON_36 36 +#define MON_DATA_SINNOH_RIBBON_37 37 +#define MON_DATA_SINNOH_RIBBON_38 38 +#define MON_DATA_SINNOH_RIBBON_39 39 +#define MON_DATA_SINNOH_RIBBON_40 40 +#define MON_DATA_SINNOH_RIBBON_41 41 +#define MON_DATA_SINNOH_RIBBON_42 42 +#define MON_DATA_SINNOH_RIBBON_43 43 +#define MON_DATA_SINNOH_RIBBON_44 44 +#define MON_DATA_SINNOH_RIBBON_45 45 +#define MON_DATA_SINNOH_RIBBON_46 46 +#define MON_DATA_SINNOH_RIBBON_47 47 +#define MON_DATA_SINNOH_RIBBON_48 48 +#define MON_DATA_SINNOH_RIBBON_49 49 +#define MON_DATA_SINNOH_RIBBON_50 50 +#define MON_DATA_SINNOH_RIBBON_51 51 +#define MON_DATA_SINNOH_RIBBON_52 52 +#define MON_DATA_SINNOH_RIBBON_53 53 +#define MON_DATA_MOVE1 54 +#define MON_DATA_MOVE2 55 +#define MON_DATA_MOVE3 56 +#define MON_DATA_MOVE4 57 +#define MON_DATA_MOVE1PP 58 +#define MON_DATA_MOVE2PP 59 +#define MON_DATA_MOVE3PP 60 +#define MON_DATA_MOVE4PP 61 +#define MON_DATA_MOVE1PPUP 62 +#define MON_DATA_MOVE2PPUP 63 +#define MON_DATA_MOVE3PPUP 64 +#define MON_DATA_MOVE4PPUP 65 +#define MON_DATA_MOVE1MAXPP 66 +#define MON_DATA_MOVE2MAXPP 67 +#define MON_DATA_MOVE3MAXPP 68 +#define MON_DATA_MOVE4MAXPP 69 +#define MON_DATA_HP_IV 70 +#define MON_DATA_ATK_IV 71 +#define MON_DATA_DEF_IV 72 +#define MON_DATA_SPEED_IV 73 +#define MON_DATA_SPATK_IV 74 +#define MON_DATA_SPDEF_IV 75 +#define MON_DATA_IS_EGG 76 +#define MON_DATA_HAS_NICKNAME 77 +#define MON_DATA_COOL_RIBBON 78 +#define MON_DATA_HOENN_RIBBON_79 79 +#define MON_DATA_HOENN_RIBBON_80 80 +#define MON_DATA_HOENN_RIBBON_81 81 +#define MON_DATA_HOENN_RIBBON_82 82 +#define MON_DATA_HOENN_RIBBON_83 83 +#define MON_DATA_HOENN_RIBBON_84 84 +#define MON_DATA_HOENN_RIBBON_85 85 +#define MON_DATA_HOENN_RIBBON_86 86 +#define MON_DATA_HOENN_RIBBON_87 87 +#define MON_DATA_HOENN_RIBBON_88 88 +#define MON_DATA_HOENN_RIBBON_89 89 +#define MON_DATA_HOENN_RIBBON_90 90 +#define MON_DATA_HOENN_RIBBON_91 91 +#define MON_DATA_HOENN_RIBBON_92 92 +#define MON_DATA_HOENN_RIBBON_93 93 +#define MON_DATA_HOENN_RIBBON_94 94 +#define MON_DATA_HOENN_RIBBON_95 95 +#define MON_DATA_HOENN_RIBBON_96 96 +#define MON_DATA_HOENN_RIBBON_97 97 +#define MON_DATA_HOENN_RIBBON_98 98 +#define MON_DATA_HOENN_RIBBON_99 99 +#define MON_DATA_HOENN_RIBBON_100 100 +#define MON_DATA_HOENN_RIBBON_101 101 +#define MON_DATA_HOENN_RIBBON_102 102 +#define MON_DATA_HOENN_RIBBON_103 103 +#define MON_DATA_HOENN_RIBBON_104 104 +#define MON_DATA_HOENN_RIBBON_105 105 +#define MON_DATA_HOENN_RIBBON_106 106 +#define MON_DATA_HOENN_RIBBON_107 107 +#define MON_DATA_HOENN_RIBBON_108 108 +#define MON_DATA_HOENN_RIBBON_109 109 +#define MON_DATA_FATEFUL_ENCOUNTER 110 +#define MON_DATA_GENDER 111 +#define MON_DATA_FORME 112 +#define MON_DATA_RESERVED_113 113 // HGSS +#define MON_DATA_RESERVED_114 114 // Plat +#define MON_DATA_UNUSED_115 115 +#define MON_DATA_NICKNAME 116 +#define MON_DATA_NICKNAME_2 117 +#define MON_DATA_NICKNAME_3 118 // ??? +#define MON_DATA_NICKNAME_4 119 // ??? +#define MON_DATA_UNK_120 120 +#define MON_DATA_GAME_VERSION 121 +#define MON_DATA_SINNOH_RIBBON_122 122 +#define MON_DATA_SINNOH_RIBBON_123 123 +#define MON_DATA_SINNOH_RIBBON_124 124 +#define MON_DATA_SINNOH_RIBBON_125 125 +#define MON_DATA_SINNOH_RIBBON_126 126 +#define MON_DATA_SINNOH_RIBBON_127 127 +#define MON_DATA_SINNOH_RIBBON_128 128 +#define MON_DATA_SINNOH_RIBBON_129 129 +#define MON_DATA_SINNOH_RIBBON_130 130 +#define MON_DATA_SINNOH_RIBBON_131 131 +#define MON_DATA_SINNOH_RIBBON_132 132 +#define MON_DATA_SINNOH_RIBBON_133 133 +#define MON_DATA_SINNOH_RIBBON_134 134 +#define MON_DATA_SINNOH_RIBBON_135 135 +#define MON_DATA_SINNOH_RIBBON_136 136 +#define MON_DATA_SINNOH_RIBBON_137 137 +#define MON_DATA_SINNOH_RIBBON_138 138 +#define MON_DATA_SINNOH_RIBBON_139 139 +#define MON_DATA_SINNOH_RIBBON_140 140 +#define MON_DATA_SINNOH_RIBBON_141 141 +#define MON_DATA_SINNOH_RIBBON_142 142 +#define MON_DATA_OT_NAME 143 +#define MON_DATA_OT_NAME_2 144 // ??? +#define MON_DATA_EGG_MET_YEAR 145 +#define MON_DATA_EGG_MET_MONTH 146 +#define MON_DATA_EGG_MET_DAY 147 +#define MON_DATA_MET_YEAR 148 +#define MON_DATA_MET_MONTH 149 +#define MON_DATA_MET_DAY 150 +#define MON_DATA_EGG_MET_LOCATION 151 +#define MON_DATA_MET_LOCATION 152 +#define MON_DATA_POKERUS 153 +#define MON_DATA_POKEBALL 154 +#define MON_DATA_MET_LEVEL 155 +#define MON_DATA_MET_GENDER 156 +#define MON_DATA_ENCOUNTER_TYPE 157 +#define MON_DATA_RESERVED_158 158 // HGSS +#define MON_DATA_STATUS 159 +#define MON_DATA_LEVEL 160 +#define MON_DATA_CAPSULE 161 +#define MON_DATA_HP 162 +#define MON_DATA_MAXHP 163 +#define MON_DATA_ATK 164 +#define MON_DATA_DEF 165 +#define MON_DATA_SPEED 166 +#define MON_DATA_SPATK 167 +#define MON_DATA_SPDEF 168 +#define MON_DATA_SEAL_STRUCT 169 +#define MON_DATA_SEAL_COORDS 170 +#define MON_DATA_SPECIES_EXISTS 171 +#define MON_DATA_SANITY_IS_EGG 172 +#define MON_DATA_SPECIES2 173 +#define MON_DATA_IVS_WORD 174 +#define MON_DATA_UNK_175 175 +#define MON_DATA_TYPE_1 176 +#define MON_DATA_TYPE_2 177 +#define MON_DATA_SPECIES_NAME 178 + +#define MON_RATIO_MALE 0 +#define MON_RATIO_FEMALE 254 +#define MON_RATIO_UNKNOWN 255 + +#define POKEMON_NAME_LENGTH 10 +#define OT_NAME_LENGTH 7 + +enum MonGender +{ + MON_MALE = 0, + MON_FEMALE = 1, + MON_GENDERLESS = 2 +}; + +// TODO: Identify the rest of these +enum BaseStat { + BASE_HP = 0, + BASE_ATK, + BASE_DEF, + BASE_SPEED, + BASE_SPATK, + BASE_SPDEF, + BASE_TYPE1, + BASE_TYPE2, + BASE_CATCH_RATE, + BASE_EXP_YIELD, + BASE_HP_YIELD, + BASE_ATK_YIELD, + BASE_DEF_YIELD, + BASE_SPEED_YIELD, + BASE_SPATK_YIELD, + BASE_SPDEF_YIELD, + BASE_ITEM_1, + BASE_ITEM_2, + BASE_GENDER_RATIO, + BASE_EGG_CYCLES, + BASE_FRIENDSHIP, + BASE_GROWTH_RATE, + BASE_EGG_GROUP_1, + GASE_EGG_GROUP_2, + BASE_ABILITY_1, + BASE_ABILITY_2, + BASE_GREAT_MARSH_RATE, + BASE_COLOR, + BASE_FLIP, + BASE_UNKNOWN_29, + BASE_UNKNOWN_30, + BASE_UNKNOWN_31, + BASE_UNKNOWN_32, +}; + +typedef enum { + EGG = 0, + EVENT = 0, + HATCHED = 0, + PAL_PARK = 0, + TALL_GRASS = 2, + DIALGA_GAME_EVENT = 4, + PALKIA_GAME_EVENT = 4, + CAVE = 5, + HALL_OF_ORIGIN = 5, + SURFING = 7, + FISHING = 7, + BUILDING = 9, + SAFARI_ZONE = 10, + STARTER = 12, + FOSSIL = 12, + GIFT_EEVEE = 12 +} EncounterType; + +typedef enum GameLanguage OriginLanguage; + +typedef enum { + ARCEUS_NORMAL = 0, + ARCEUS_FIST = 1, + ARCEUS_SKY = 2, + ARCEUS_TOXIC = 3, + ARCEUS_EARTH = 4, + ARCEUS_STONE = 5, + ARCEUS_INSECT = 6, + ARCEUS_SPOOKY = 7, + ARCEUS_IRON = 8, + ARCEUS_FLAME = 9, + ARCEUS_SPLASH = 10, + ARCEUS_MEADOW = 11, + ARCEUS_ZAP = 12, + ARCEUS_MIND = 13, + ARCEUS_ICICLE = 14, + ARCEUS_DRACO = 15, + ARCEUS_DREAD = 16, + BURMY_PLANT = 0, + BURMY_SANDY = 1, + BURMY_TRASH = 2, + DEOXYS_NORMAL = 0, + DEOXYS_ATTACK = 1, + DEOXYS_DEFENSE = 2, + DEOXYS_SPEED = 3, + GIRATINA_ALTERED = 0, + GIRATINA_ORIGIN = 1, + ROTOM_NORMAL = 0, + ROTOM_HEAT = 1, + ROTOM_WASH = 2, + ROTOM_FROST = 3, + ROTOM_FAN = 4, + ROTOM_MOW = 5, + SHAYMIN_LAND = 0, + SHAYMIN_SKY = 1, + SHELLOS_WEST = 0, + SHELLOS_EAST = 1, + UNOWN_A = 0, + UNOWN_B = 1, + UNOWN_C = 2, + UNOWN_D = 3, + UNOWN_E = 4, + UNOWN_F = 5, + UNOWN_G = 6, + UNOWN_H = 7, + UNOWN_I = 8, + UNOWN_J = 9, + UNOWN_K = 10, + UNOWN_L = 11, + UNOWN_M = 12, + UNOWN_N = 13, + UNOWN_O = 14, + UNOWN_P = 15, + UNOWN_Q = 16, + UNOWN_R = 17, + UNOWN_S = 18, + UNOWN_T = 19, + UNOWN_U = 20, + UNOWN_V = 21, + UNOWN_W = 22, + UNOWN_X = 23, + UNOWN_Y = 24, + UNOWN_Z = 25, + UNOWN_EXCLAMATION_MARK = 26, + UNOWN_QUESTION_MARK = 27 +} AlternateForms; + +#endif //POKEDIAMOND_CONSTANTS_POKEMON_H diff --git a/include/pokemon.h b/include/pokemon.h index 166a1c7e..7b990263 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -7,237 +7,7 @@ #include "constants/species.h" #include "seals.h" - -#define MON_DATA_PERSONALITY 0 -#define MON_DATA_PARTY_LOCK 1 -#define MON_DATA_BOX_LOCK 2 -#define MON_DATA_CHECKSUM_FAILED 3 -#define MON_DATA_CHECKSUM 4 -#define MON_DATA_SPECIES 5 -#define MON_DATA_HELD_ITEM 6 -#define MON_DATA_OTID 7 -#define MON_DATA_EXPERIENCE 8 -#define MON_DATA_FRIENDSHIP 9 -#define MON_DATA_ABILITY 10 -#define MON_DATA_MARKINGS 11 -#define MON_DATA_GAME_LANGUAGE 12 -#define MON_DATA_HP_EV 13 -#define MON_DATA_ATK_EV 14 -#define MON_DATA_DEF_EV 15 -#define MON_DATA_SPEED_EV 16 -#define MON_DATA_SPATK_EV 17 -#define MON_DATA_SPDEF_EV 18 -#define MON_DATA_COOL 19 -#define MON_DATA_BEAUTY 20 -#define MON_DATA_CUTE 21 -#define MON_DATA_SMART 22 -#define MON_DATA_TOUGH 23 -#define MON_DATA_SHEEN 24 -#define MON_DATA_SINNOH_CHAMP_RIBBON 25 -#define MON_DATA_SINNOH_RIBBON_26 26 -#define MON_DATA_SINNOH_RIBBON_27 27 -#define MON_DATA_SINNOH_RIBBON_28 28 -#define MON_DATA_SINNOH_RIBBON_29 29 -#define MON_DATA_SINNOH_RIBBON_30 30 -#define MON_DATA_SINNOH_RIBBON_31 31 -#define MON_DATA_SINNOH_RIBBON_32 32 -#define MON_DATA_SINNOH_RIBBON_33 33 -#define MON_DATA_SINNOH_RIBBON_34 34 -#define MON_DATA_SINNOH_RIBBON_35 35 -#define MON_DATA_SINNOH_RIBBON_36 36 -#define MON_DATA_SINNOH_RIBBON_37 37 -#define MON_DATA_SINNOH_RIBBON_38 38 -#define MON_DATA_SINNOH_RIBBON_39 39 -#define MON_DATA_SINNOH_RIBBON_40 40 -#define MON_DATA_SINNOH_RIBBON_41 41 -#define MON_DATA_SINNOH_RIBBON_42 42 -#define MON_DATA_SINNOH_RIBBON_43 43 -#define MON_DATA_SINNOH_RIBBON_44 44 -#define MON_DATA_SINNOH_RIBBON_45 45 -#define MON_DATA_SINNOH_RIBBON_46 46 -#define MON_DATA_SINNOH_RIBBON_47 47 -#define MON_DATA_SINNOH_RIBBON_48 48 -#define MON_DATA_SINNOH_RIBBON_49 49 -#define MON_DATA_SINNOH_RIBBON_50 50 -#define MON_DATA_SINNOH_RIBBON_51 51 -#define MON_DATA_SINNOH_RIBBON_52 52 -#define MON_DATA_SINNOH_RIBBON_53 53 -#define MON_DATA_MOVE1 54 -#define MON_DATA_MOVE2 55 -#define MON_DATA_MOVE3 56 -#define MON_DATA_MOVE4 57 -#define MON_DATA_MOVE1PP 58 -#define MON_DATA_MOVE2PP 59 -#define MON_DATA_MOVE3PP 60 -#define MON_DATA_MOVE4PP 61 -#define MON_DATA_MOVE1PPUP 62 -#define MON_DATA_MOVE2PPUP 63 -#define MON_DATA_MOVE3PPUP 64 -#define MON_DATA_MOVE4PPUP 65 -#define MON_DATA_MOVE1MAXPP 66 -#define MON_DATA_MOVE2MAXPP 67 -#define MON_DATA_MOVE3MAXPP 68 -#define MON_DATA_MOVE4MAXPP 69 -#define MON_DATA_HP_IV 70 -#define MON_DATA_ATK_IV 71 -#define MON_DATA_DEF_IV 72 -#define MON_DATA_SPEED_IV 73 -#define MON_DATA_SPATK_IV 74 -#define MON_DATA_SPDEF_IV 75 -#define MON_DATA_IS_EGG 76 -#define MON_DATA_HAS_NICKNAME 77 -#define MON_DATA_COOL_RIBBON 78 -#define MON_DATA_HOENN_RIBBON_79 79 -#define MON_DATA_HOENN_RIBBON_80 80 -#define MON_DATA_HOENN_RIBBON_81 81 -#define MON_DATA_HOENN_RIBBON_82 82 -#define MON_DATA_HOENN_RIBBON_83 83 -#define MON_DATA_HOENN_RIBBON_84 84 -#define MON_DATA_HOENN_RIBBON_85 85 -#define MON_DATA_HOENN_RIBBON_86 86 -#define MON_DATA_HOENN_RIBBON_87 87 -#define MON_DATA_HOENN_RIBBON_88 88 -#define MON_DATA_HOENN_RIBBON_89 89 -#define MON_DATA_HOENN_RIBBON_90 90 -#define MON_DATA_HOENN_RIBBON_91 91 -#define MON_DATA_HOENN_RIBBON_92 92 -#define MON_DATA_HOENN_RIBBON_93 93 -#define MON_DATA_HOENN_RIBBON_94 94 -#define MON_DATA_HOENN_RIBBON_95 95 -#define MON_DATA_HOENN_RIBBON_96 96 -#define MON_DATA_HOENN_RIBBON_97 97 -#define MON_DATA_HOENN_RIBBON_98 98 -#define MON_DATA_HOENN_RIBBON_99 99 -#define MON_DATA_HOENN_RIBBON_100 100 -#define MON_DATA_HOENN_RIBBON_101 101 -#define MON_DATA_HOENN_RIBBON_102 102 -#define MON_DATA_HOENN_RIBBON_103 103 -#define MON_DATA_HOENN_RIBBON_104 104 -#define MON_DATA_HOENN_RIBBON_105 105 -#define MON_DATA_HOENN_RIBBON_106 106 -#define MON_DATA_HOENN_RIBBON_107 107 -#define MON_DATA_HOENN_RIBBON_108 108 -#define MON_DATA_HOENN_RIBBON_109 109 -#define MON_DATA_FATEFUL_ENCOUNTER 110 -#define MON_DATA_GENDER 111 -#define MON_DATA_FORME 112 -#define MON_DATA_RESERVED_113 113 // HGSS -#define MON_DATA_RESERVED_114 114 // Plat -#define MON_DATA_UNUSED_115 115 -#define MON_DATA_NICKNAME 116 -#define MON_DATA_NICKNAME_2 117 -#define MON_DATA_NICKNAME_3 118 // ??? -#define MON_DATA_NICKNAME_4 119 // ??? -#define MON_DATA_UNK_120 120 -#define MON_DATA_GAME_VERSION 121 -#define MON_DATA_SINNOH_RIBBON_122 122 -#define MON_DATA_SINNOH_RIBBON_123 123 -#define MON_DATA_SINNOH_RIBBON_124 124 -#define MON_DATA_SINNOH_RIBBON_125 125 -#define MON_DATA_SINNOH_RIBBON_126 126 -#define MON_DATA_SINNOH_RIBBON_127 127 -#define MON_DATA_SINNOH_RIBBON_128 128 -#define MON_DATA_SINNOH_RIBBON_129 129 -#define MON_DATA_SINNOH_RIBBON_130 130 -#define MON_DATA_SINNOH_RIBBON_131 131 -#define MON_DATA_SINNOH_RIBBON_132 132 -#define MON_DATA_SINNOH_RIBBON_133 133 -#define MON_DATA_SINNOH_RIBBON_134 134 -#define MON_DATA_SINNOH_RIBBON_135 135 -#define MON_DATA_SINNOH_RIBBON_136 136 -#define MON_DATA_SINNOH_RIBBON_137 137 -#define MON_DATA_SINNOH_RIBBON_138 138 -#define MON_DATA_SINNOH_RIBBON_139 139 -#define MON_DATA_SINNOH_RIBBON_140 140 -#define MON_DATA_SINNOH_RIBBON_141 141 -#define MON_DATA_SINNOH_RIBBON_142 142 -#define MON_DATA_OT_NAME 143 -#define MON_DATA_OT_NAME_2 144 // ??? -#define MON_DATA_EGG_MET_YEAR 145 -#define MON_DATA_EGG_MET_MONTH 146 -#define MON_DATA_EGG_MET_DAY 147 -#define MON_DATA_MET_YEAR 148 -#define MON_DATA_MET_MONTH 149 -#define MON_DATA_MET_DAY 150 -#define MON_DATA_EGG_MET_LOCATION 151 -#define MON_DATA_MET_LOCATION 152 -#define MON_DATA_POKERUS 153 -#define MON_DATA_POKEBALL 154 -#define MON_DATA_MET_LEVEL 155 -#define MON_DATA_MET_GENDER 156 -#define MON_DATA_ENCOUNTER_TYPE 157 -#define MON_DATA_RESERVED_158 158 // HGSS -#define MON_DATA_STATUS 159 -#define MON_DATA_LEVEL 160 -#define MON_DATA_CAPSULE 161 -#define MON_DATA_HP 162 -#define MON_DATA_MAXHP 163 -#define MON_DATA_ATK 164 -#define MON_DATA_DEF 165 -#define MON_DATA_SPEED 166 -#define MON_DATA_SPATK 167 -#define MON_DATA_SPDEF 168 -#define MON_DATA_SEAL_STRUCT 169 -#define MON_DATA_SEAL_COORDS 170 -#define MON_DATA_SPECIES_EXISTS 171 -#define MON_DATA_SANITY_IS_EGG 172 -#define MON_DATA_SPECIES2 173 -#define MON_DATA_IVS_WORD 174 -#define MON_DATA_UNK_175 175 -#define MON_DATA_TYPE_1 176 -#define MON_DATA_TYPE_2 177 -#define MON_DATA_SPECIES_NAME 178 - -#define MON_RATIO_MALE 0 -#define MON_RATIO_FEMALE 254 -#define MON_RATIO_UNKNOWN 255 - -#define POKEMON_NAME_LENGTH 10 -#define OT_NAME_LENGTH 7 - -enum MonGender -{ - MON_MALE = 0, - MON_FEMALE = 1, - MON_GENDERLESS = 2 -}; - -// TODO: Identify the rest of these -enum BaseStat { - BASE_HP = 0, - BASE_ATK, - BASE_DEF, - BASE_SPEED, - BASE_SPATK, - BASE_SPDEF, - BASE_TYPE1, - BASE_TYPE2, - BASE_CATCH_RATE, - BASE_EXP_YIELD, - BASE_HP_YIELD, - BASE_ATK_YIELD, - BASE_DEF_YIELD, - BASE_SPEED_YIELD, - BASE_SPATK_YIELD, - BASE_SPDEF_YIELD, - BASE_ITEM_1, - BASE_ITEM_2, - BASE_GENDER_RATIO, - BASE_EGG_CYCLES, - BASE_FRIENDSHIP, - BASE_GROWTH_RATE, - BASE_EGG_GROUP_1, - GASE_EGG_GROUP_2, - BASE_ABILITY_1, - BASE_ABILITY_2, - BASE_GREAT_MARSH_RATE, - BASE_COLOR, - BASE_FLIP, - BASE_UNKNOWN_29, - BASE_UNKNOWN_30, - BASE_UNKNOWN_31, - BASE_UNKNOWN_32, -}; +#include "constants/pokemon.h" struct BaseStats { /* 0x00 */ u8 hp; @@ -274,94 +44,6 @@ struct BaseStats { /* 0x28 */ u32 unk28; }; -typedef enum { - EGG = 0, - EVENT = 0, - HATCHED = 0, - PAL_PARK = 0, - TALL_GRASS = 2, - DIALGA_GAME_EVENT = 4, - PALKIA_GAME_EVENT = 4, - CAVE = 5, - HALL_OF_ORIGIN = 5, - SURFING = 7, - FISHING = 7, - BUILDING = 9, - SAFARI_ZONE = 10, - STARTER = 12, - FOSSIL = 12, - GIFT_EEVEE = 12 -} EncounterType; - -typedef enum GameLanguage OriginLanguage; - -typedef enum { - ARCEUS_NORMAL = 0, - ARCEUS_FIST = 1, - ARCEUS_SKY = 2, - ARCEUS_TOXIC = 3, - ARCEUS_EARTH = 4, - ARCEUS_STONE = 5, - ARCEUS_INSECT = 6, - ARCEUS_SPOOKY = 7, - ARCEUS_IRON = 8, - ARCEUS_FLAME = 9, - ARCEUS_SPLASH = 10, - ARCEUS_MEADOW = 11, - ARCEUS_ZAP = 12, - ARCEUS_MIND = 13, - ARCEUS_ICICLE = 14, - ARCEUS_DRACO = 15, - ARCEUS_DREAD = 16, - BURMY_PLANT = 0, - BURMY_SANDY = 1, - BURMY_TRASH = 2, - DEOXYS_NORMAL = 0, - DEOXYS_ATTACK = 1, - DEOXYS_DEFENSE = 2, - DEOXYS_SPEED = 3, - GIRATINA_ALTERED = 0, - GIRATINA_ORIGIN = 1, - ROTOM_NORMAL = 0, - ROTOM_HEAT = 1, - ROTOM_WASH = 2, - ROTOM_FROST = 3, - ROTOM_FAN = 4, - ROTOM_MOW = 5, - SHAYMIN_LAND = 0, - SHAYMIN_SKY = 1, - SHELLOS_WEST = 0, - SHELLOS_EAST = 1, - UNOWN_A = 0, - UNOWN_B = 1, - UNOWN_C = 2, - UNOWN_D = 3, - UNOWN_E = 4, - UNOWN_F = 5, - UNOWN_G = 6, - UNOWN_H = 7, - UNOWN_I = 8, - UNOWN_J = 9, - UNOWN_K = 10, - UNOWN_L = 11, - UNOWN_M = 12, - UNOWN_N = 13, - UNOWN_O = 14, - UNOWN_P = 15, - UNOWN_Q = 16, - UNOWN_R = 17, - UNOWN_S = 18, - UNOWN_T = 19, - UNOWN_U = 20, - UNOWN_V = 21, - UNOWN_W = 22, - UNOWN_X = 23, - UNOWN_Y = 24, - UNOWN_Z = 25, - UNOWN_EXCLAMATION_MARK = 26, - UNOWN_QUESTION_MARK = 27 -} AlternateForms; - typedef enum EvoMethod { EVO_NONE = 0, @@ -592,6 +274,7 @@ void FUN_02068C00(struct SomeDrawPokemonStruct * spC, int species, u8 gender, u8 u8 FUN_02068E14(struct Pokemon * pokemon, u32 a1); u8 FUN_02068E1C(struct BoxPokemon * boxmon, u32 a1); u8 FUN_02068E88(int species, u8 gender, u32 a2, u8 forme, u32 pid); +u32 GetArceusTypeByHeldItemEffect(u16 plate); int FUN_0206AA30(int a0); #endif //POKEDIAMOND_POKEMON_H diff --git a/include/proto.h b/include/proto.h index d26b7750..8c35cca5 100644 --- a/include/proto.h +++ b/include/proto.h @@ -6,6 +6,7 @@ // Declare these here so that we don't have to include pokemon.h struct UnkStruct_02069038; struct PlayerParty; +struct BoxPokemon; u16 * FUN_0200AA50(u16 species, u32 heap_id); void FUN_02021A74(u16 * dest, u16 * src); @@ -13,9 +14,13 @@ void FUN_02021A20(void * ptr); void FUN_02021E28(u16 * dest, u16 * src); void FUN_02021EF0(const u16 * src, u16 * dest, u32 count); u32 FUN_0206E7B8(u16 item, u32 a1, u32 a2); -u32 GetArceusTypeByPlate(u16 plate); int FUN_02014C3C(u8); void FUN_02014C54(int, int, struct UnkStruct_02069038 *, u8); u32 IsNighttime(void); // is day or night +int FUN_02005F14(int); +void FUN_02005E80(int); +void FUN_02005E90(int, int, int, int); +void FUN_020056AC(int, int, int, int, int); +void FUN_020808AC(struct BoxPokemon *, int, int, int, int); #endif //POKEDIAMOND_PROTO_H -- cgit v1.2.3 From 670efff0ec376f9445d9cf552f6b51465b56ac06 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Jun 2020 21:01:41 -0400 Subject: Through GetSubstruct --- arm9/asm/pokemon_s.s | 1245 -------------------------------------------------- arm9/src/pokemon.c | 291 +++++++++++- 2 files changed, 281 insertions(+), 1255 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 2d6f2579..546d113b 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -2,1255 +2,10 @@ .include "global.inc" .include "constants/species.h" - .extern sItemOdds .extern sLegendaryMonsList .text - thumb_func_start FUN_0206A094 -FUN_0206A094: ; 0x0206A094 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - mov r0, #0x81 - add r7, r2, #0x0 - tst r0, r1 - bne _0206A12E - bl rand_LC - mov r1, #0x64 - bl _s32_div_f - add r4, r1, #0x0 - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - add r0, r5, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x0] - ldr r1, [sp, #0x0] - add r0, r6, #0x0 - mov r2, #0x10 - bl GetMonBaseStat_HandleFormeConversion - add r1, sp, #0x4 - strh r0, [r1, #0x2] - ldr r1, [sp, #0x0] - add r0, r6, #0x0 - mov r2, #0x11 - bl GetMonBaseStat_HandleFormeConversion - add r1, sp, #0x4 - strh r0, [r1, #0x0] - ldrh r2, [r1, #0x2] - ldrh r0, [r1, #0x0] - cmp r2, r0 - bne _0206A104 - cmp r2, #0x0 - beq _0206A104 - add r2, sp, #0x4 - add r0, r5, #0x0 - mov r1, #0x6 - add r2, #0x2 - bl SetMonData - add sp, #0x8 - pop {r3-r7, pc} -_0206A104: - ldr r0, _0206A134 ; =sItemOdds - lsl r1, r7, #0x2 - ldrh r0, [r0, r1] - cmp r4, r0 - blo _0206A12E - ldr r0, _0206A138 ; =sItemOdds + 2 - ldrh r0, [r0, r1] - cmp r4, r0 - add r2, sp, #0x4 - bhs _0206A126 - add r0, r5, #0x0 - mov r1, #0x6 - add r2, #0x2 - bl SetMonData - add sp, #0x8 - pop {r3-r7, pc} -_0206A126: - add r0, r5, #0x0 - mov r1, #0x6 - bl SetMonData -_0206A12E: - add sp, #0x8 - pop {r3-r7, pc} - nop -_0206A134: .word sItemOdds -_0206A138: .word sItemOdds + 2 - - thumb_func_start FUN_0206A13C -FUN_0206A13C: ; 0x0206A13C - ldr r3, _0206A140 ; =FUN_0206A144 - bx r3 - .balign 4 -_0206A140: .word FUN_0206A144 - - thumb_func_start FUN_0206A144 -FUN_0206A144: ; 0x0206A144 - push {r4-r6, lr} - add r6, r1, #0x0 - mov r1, #0xad - mov r2, #0x0 - add r5, r0, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - add r0, r5, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetBoxMonData - add r1, r0, #0x0 - add r0, r4, #0x0 - add r2, r6, #0x0 - bl FUN_0206A16C - pop {r4-r6, pc} - - thumb_func_start FUN_0206A16C -FUN_0206A16C: ; 0x0206A16C - push {r4, lr} - ldr r3, _0206A1C0 ; =SPECIES_EGG - cmp r0, r3 - bne _0206A178 - mov r0, #0x0 - pop {r4, pc} -_0206A178: - cmp r2, #0x20 - bhs _0206A186 - mov r3, #0x1 - add r4, r3, #0x0 - lsl r4, r2 - mov r2, #0x1d - b _0206A1B0 -_0206A186: - cmp r2, #0x40 - bhs _0206A196 - mov r3, #0x1 - sub r2, #0x20 - add r4, r3, #0x0 - lsl r4, r2 - mov r2, #0x1e - b _0206A1B0 -_0206A196: - cmp r2, #0x60 - bhs _0206A1A6 - mov r3, #0x1 - sub r2, #0x40 - add r4, r3, #0x0 - lsl r4, r2 - mov r2, #0x1f - b _0206A1B0 -_0206A1A6: - mov r3, #0x1 - sub r2, #0x60 - add r4, r3, #0x0 - lsl r4, r2 - mov r2, #0x20 -_0206A1B0: - bl GetMonBaseStat_HandleFormeConversion - tst r0, r4 - beq _0206A1BC - mov r0, #0x1 - pop {r4, pc} -_0206A1BC: - mov r0, #0x0 - pop {r4, pc} - .balign 4 -_0206A1C0: .word SPECIES_EGG - - thumb_func_start FUN_0206A1C4 -FUN_0206A1C4: ; 0x0206A1C4 - ldr r3, _0206A1C8 ; =FUN_0206A1CC - bx r3 - .balign 4 -_0206A1C8: .word FUN_0206A1CC - - thumb_func_start FUN_0206A1CC -FUN_0206A1CC: ; 0x0206A1CC - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl AcquireBoxMonLock - add r7, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonData - mov r1, #0x0 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r2, r1, #0x0 - bl GetBoxMonData - add r6, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x18 - bl GetMonBaseStat - str r0, [sp, #0x4] - add r0, r4, #0x0 - mov r1, #0x19 - bl GetMonBaseStat - str r0, [sp, #0x0] - cmp r0, #0x0 - beq _0206A226 - mov r0, #0x1 - tst r0, r6 - beq _0206A21A - add r0, r5, #0x0 - mov r1, #0xa - add r2, sp, #0x0 - bl SetBoxMonData - b _0206A230 -_0206A21A: - add r0, r5, #0x0 - mov r1, #0xa - add r2, sp, #0x4 - bl SetBoxMonData - b _0206A230 -_0206A226: - add r0, r5, #0x0 - mov r1, #0xa - add r2, sp, #0x4 - bl SetBoxMonData -_0206A230: - add r0, r5, #0x0 - add r1, r7, #0x0 - bl ReleaseBoxMonLock - add sp, #0x8 - pop {r3-r7, pc} - - thumb_func_start FUN_0206A23C -FUN_0206A23C: ; 0x0206A23C - push {r4-r7, lr} - sub sp, #0x1c - add r5, r0, #0x0 - mov r0, #0x0 - str r1, [sp, #0x0] - bl AllocMonZeroed - str r0, [sp, #0x4] - ldr r1, [sp, #0x4] - add r0, r5, #0x0 - bl FUN_02069B88 - ldr r0, [sp, #0x4] - ldr r1, [r5, #0x0] - mov r2, #0x0 - bl GetSubstruct - add r4, r0, #0x0 - ldr r0, [sp, #0x4] - ldr r1, [r5, #0x0] - mov r2, #0x1 - bl GetSubstruct - add r6, r0, #0x0 - ldr r0, [sp, #0x4] - ldr r1, [r5, #0x0] - mov r2, #0x2 - bl GetSubstruct - add r7, r0, #0x0 - ldr r0, [sp, #0x4] - ldr r1, [r5, #0x0] - mov r2, #0x3 - bl GetSubstruct - str r0, [sp, #0x8] - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - mov r2, #0x0 - bl GetSubstruct - str r0, [sp, #0xc] - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - mov r2, #0x1 - bl GetSubstruct - str r0, [sp, #0x10] - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - mov r2, #0x2 - bl GetSubstruct - str r0, [sp, #0x14] - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - mov r2, #0x3 - bl GetSubstruct - ldr r2, [sp, #0x4] - str r0, [sp, #0x18] - ldr r0, [sp, #0x4] - ldrh r2, [r2, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonDecryptSegment - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonDecryptSegment - ldr r0, [sp, #0x0] - str r0, [r5, #0x0] - ldr r2, [sp, #0xc] - ldmia r4!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0xc] - ldmia r4!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0xc] - ldmia r4!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0xc] - ldmia r4!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0xc] - ldr r2, [sp, #0x10] - ldmia r6!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x10] - ldmia r6!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x10] - ldmia r6!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x10] - ldmia r6!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x10] - ldr r2, [sp, #0x14] - ldmia r7!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x14] - ldmia r7!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x14] - ldmia r7!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x14] - ldmia r7!, {r0-r1} - stmia r2!, {r0-r1} - str r2, [sp, #0x14] - mov r0, #0x10 -_0206A32E: - ldr r1, [sp, #0x8] - ldrh r2, [r1, #0x0] - add r1, r1, #0x2 - str r1, [sp, #0x8] - ldr r1, [sp, #0x18] - strh r2, [r1, #0x0] - add r1, r1, #0x2 - str r1, [sp, #0x18] - sub r0, r0, #0x1 - bne _0206A32E - add r0, r5, #0x0 - add r0, #0x8 - mov r1, #0x80 - bl CalcMonChecksum - strh r0, [r5, #0x6] - add r0, r5, #0x0 - ldrh r2, [r5, #0x6] - add r0, #0x8 - mov r1, #0x80 - bl MonEncryptSegment - add r0, r5, #0x0 - ldr r2, [r5, #0x0] - add r0, #0x88 - mov r1, #0x64 - bl MonEncryptSegment - ldr r0, [sp, #0x4] - bl FreeToHeap - add sp, #0x1c - pop {r4-r7, pc} - - thumb_func_start LoadMonPersonal -LoadMonPersonal: ; 0x0206A370 - ldr r3, _0206A37C ; =ReadWholeNarcMemberByIdPair - add r2, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x2 ; NARC_POKETOOL_PERSONAL_PERSONAL - bx r3 - nop -_0206A37C: .word ReadWholeNarcMemberByIdPair - - thumb_func_start LoadMonBaseStats_HandleAlternateForme -LoadMonBaseStats_HandleAlternateForme: ; 0x0206A380 - push {r4, lr} - add r4, r2, #0x0 - bl ResolveMonForme - add r2, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x2 ; NARC_POKETOOL_PERSONAL_PERSONAL - bl ReadWholeNarcMemberByIdPair - pop {r4, pc} - - thumb_func_start LoadMonEvolutionTable -LoadMonEvolutionTable: ; 0x0206A394 - ldr r3, _0206A3A0 ; =ReadWholeNarcMemberByIdPair - add r2, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x22 ; NARC_POKETOOL_PERSONAL_EVO - bx r3 - nop -_0206A3A0: .word ReadWholeNarcMemberByIdPair - - thumb_func_start MonEncryptSegment -MonEncryptSegment: ; 0x0206A3A4 - push {r0-r3} - push {r3-r7, lr} - add r5, r0, #0x0 - mov r4, #0x0 - lsr r6, r1, #0x1 - beq _0206A3C6 - add r7, sp, #0x20 -_0206A3B2: - add r0, r7, #0x0 - bl MonEncryptionLCRNG - ldrh r1, [r5, #0x0] - add r4, r4, #0x1 - eor r0, r1 - strh r0, [r5, #0x0] - add r5, r5, #0x2 - cmp r4, r6 - blo _0206A3B2 -_0206A3C6: - pop {r3-r7} - pop {r3} - add sp, #0x10 - bx r3 - .balign 4 - - thumb_func_start MonDecryptSegment -MonDecryptSegment: ; 0x0206A3D0 - ldr r3, _0206A3D4 ; =MonEncryptSegment - bx r3 - .balign 4 -_0206A3D4: .word MonEncryptSegment - - thumb_func_start MonEncryptionLCRNG -MonEncryptionLCRNG: ; 0x0206A3D8 - ldr r2, [r0, #0x0] - ldr r1, _0206A3F0 ; =0x41C64E6D - add r3, r2, #0x0 - mul r3, r1 - ldr r1, _0206A3F4 ; =0x00006073 - add r1, r3, r1 - str r1, [r0, #0x0] - lsr r0, r1, #0x10 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bx lr - nop -_0206A3F0: .word 0x41C64E6D -_0206A3F4: .word 0x00006073 - - thumb_func_start CalcMonChecksum -CalcMonChecksum: ; 0x0206A3F8 - push {r3-r4} - mov r3, #0x0 - add r2, r3, #0x0 - lsr r4, r1, #0x1 - beq _0206A412 -_0206A402: - ldrh r1, [r0, #0x0] - add r2, r2, #0x1 - add r0, r0, #0x2 - add r1, r3, r1 - lsl r1, r1, #0x10 - lsr r3, r1, #0x10 - cmp r2, r4 - blo _0206A402 -_0206A412: - add r0, r3, #0x0 - pop {r3-r4} - bx lr - - thumb_func_start GetSubstruct -GetSubstruct: ; 0x0206A418 - push {r3, lr} - mov r3, #0x3e - lsl r3, r3, #0xc - and r3, r1 - lsr r3, r3, #0xd - cmp r3, #0x1f - bhi _0206A478 - add r3, r3, r3 - add r3, pc - ldrh r3, [r3, #0x6] - lsl r3, r3, #0x10 - asr r3, r3, #0x10 - add pc, r3 -_0206A432: ; jump table (using 16-bit offset) - .short _0206A472 - _0206A432 - 2; case 0 - .short _0206A4A4 - _0206A432 - 2; case 1 - .short _0206A4D4 - _0206A432 - 2; case 2 - .short _0206A504 - _0206A432 - 2; case 3 - .short _0206A534 - _0206A432 - 2; case 4 - .short _0206A564 - _0206A432 - 2; case 5 - .short _0206A594 - _0206A432 - 2; case 6 - .short _0206A5C6 - _0206A432 - 2; case 7 - .short _0206A5F6 - _0206A432 - 2; case 8 - .short _0206A626 - _0206A432 - 2; case 9 - .short _0206A656 - _0206A432 - 2; case 10 - .short _0206A686 - _0206A432 - 2; case 11 - .short _0206A6B6 - _0206A432 - 2; case 12 - .short _0206A6E8 - _0206A432 - 2; case 13 - .short _0206A718 - _0206A432 - 2; case 14 - .short _0206A748 - _0206A432 - 2; case 15 - .short _0206A778 - _0206A432 - 2; case 16 - .short _0206A7A8 - _0206A432 - 2; case 17 - .short _0206A7D8 - _0206A432 - 2; case 18 - .short _0206A80A - _0206A432 - 2; case 19 - .short _0206A83A - _0206A432 - 2; case 20 - .short _0206A86A - _0206A432 - 2; case 21 - .short _0206A89A - _0206A432 - 2; case 22 - .short _0206A8CA - _0206A432 - 2; case 23 - .short _0206A472 - _0206A432 - 2; case 24 - .short _0206A4A4 - _0206A432 - 2; case 25 - .short _0206A4D4 - _0206A432 - 2; case 26 - .short _0206A504 - _0206A432 - 2; case 27 - .short _0206A534 - _0206A432 - 2; case 28 - .short _0206A564 - _0206A432 - 2; case 29 - .short _0206A594 - _0206A432 - 2; case 30 - .short _0206A5C6 - _0206A432 - 2; case 31 -_0206A472: - add r0, #0x8 - cmp r2, #0x3 - bls _0206A47A -_0206A478: - b _0206A8F8 -_0206A47A: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A486: ; jump table (using 16-bit offset) - .short _0206A48E - _0206A486 - 2; case 0 - .short _0206A492 - _0206A486 - 2; case 1 - .short _0206A498 - _0206A486 - 2; case 2 - .short _0206A49E - _0206A486 - 2; case 3 -_0206A48E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A492: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A498: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A49E: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A4A4: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A59A - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A4B6: ; jump table (using 16-bit offset) - .short _0206A4BE - _0206A4B6 - 2; case 0 - .short _0206A4C2 - _0206A4B6 - 2; case 1 - .short _0206A4C8 - _0206A4B6 - 2; case 2 - .short _0206A4CE - _0206A4B6 - 2; case 3 -_0206A4BE: - add r1, r0, #0x0 - b _0206A8F8 -_0206A4C2: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A4C8: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A4CE: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A4D4: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A59A - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A4E6: ; jump table (using 16-bit offset) - .short _0206A4EE - _0206A4E6 - 2; case 0 - .short _0206A4F2 - _0206A4E6 - 2; case 1 - .short _0206A4F8 - _0206A4E6 - 2; case 2 - .short _0206A4FE - _0206A4E6 - 2; case 3 -_0206A4EE: - add r1, r0, #0x0 - b _0206A8F8 -_0206A4F2: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A4F8: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A4FE: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A504: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A59A - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A516: ; jump table (using 16-bit offset) - .short _0206A51E - _0206A516 - 2; case 0 - .short _0206A522 - _0206A516 - 2; case 1 - .short _0206A528 - _0206A516 - 2; case 2 - .short _0206A52E - _0206A516 - 2; case 3 -_0206A51E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A522: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A528: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A52E: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A534: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A59A - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A546: ; jump table (using 16-bit offset) - .short _0206A54E - _0206A546 - 2; case 0 - .short _0206A552 - _0206A546 - 2; case 1 - .short _0206A558 - _0206A546 - 2; case 2 - .short _0206A55E - _0206A546 - 2; case 3 -_0206A54E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A552: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A558: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A55E: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A564: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A59A - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A576: ; jump table (using 16-bit offset) - .short _0206A57E - _0206A576 - 2; case 0 - .short _0206A582 - _0206A576 - 2; case 1 - .short _0206A588 - _0206A576 - 2; case 2 - .short _0206A58E - _0206A576 - 2; case 3 -_0206A57E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A582: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A588: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A58E: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A594: - add r0, #0x8 - cmp r2, #0x3 - bls _0206A59C -_0206A59A: - b _0206A8F8 -_0206A59C: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A5A8: ; jump table (using 16-bit offset) - .short _0206A5B0 - _0206A5A8 - 2; case 0 - .short _0206A5B6 - _0206A5A8 - 2; case 1 - .short _0206A5BA - _0206A5A8 - 2; case 2 - .short _0206A5C0 - _0206A5A8 - 2; case 3 -_0206A5B0: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A5B6: - add r1, r0, #0x0 - b _0206A8F8 -_0206A5BA: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A5C0: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A5C6: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A6BC - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A5D8: ; jump table (using 16-bit offset) - .short _0206A5E0 - _0206A5D8 - 2; case 0 - .short _0206A5E6 - _0206A5D8 - 2; case 1 - .short _0206A5EA - _0206A5D8 - 2; case 2 - .short _0206A5F0 - _0206A5D8 - 2; case 3 -_0206A5E0: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A5E6: - add r1, r0, #0x0 - b _0206A8F8 -_0206A5EA: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A5F0: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A5F6: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A6BC - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A608: ; jump table (using 16-bit offset) - .short _0206A610 - _0206A608 - 2; case 0 - .short _0206A616 - _0206A608 - 2; case 1 - .short _0206A61A - _0206A608 - 2; case 2 - .short _0206A620 - _0206A608 - 2; case 3 -_0206A610: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A616: - add r1, r0, #0x0 - b _0206A8F8 -_0206A61A: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A620: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A626: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A6BC - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A638: ; jump table (using 16-bit offset) - .short _0206A640 - _0206A638 - 2; case 0 - .short _0206A646 - _0206A638 - 2; case 1 - .short _0206A64A - _0206A638 - 2; case 2 - .short _0206A650 - _0206A638 - 2; case 3 -_0206A640: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A646: - add r1, r0, #0x0 - b _0206A8F8 -_0206A64A: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A650: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A656: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A6BC - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A668: ; jump table (using 16-bit offset) - .short _0206A670 - _0206A668 - 2; case 0 - .short _0206A676 - _0206A668 - 2; case 1 - .short _0206A67A - _0206A668 - 2; case 2 - .short _0206A680 - _0206A668 - 2; case 3 -_0206A670: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A676: - add r1, r0, #0x0 - b _0206A8F8 -_0206A67A: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A680: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A686: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A6BC - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A698: ; jump table (using 16-bit offset) - .short _0206A6A0 - _0206A698 - 2; case 0 - .short _0206A6A6 - _0206A698 - 2; case 1 - .short _0206A6AA - _0206A698 - 2; case 2 - .short _0206A6B0 - _0206A698 - 2; case 3 -_0206A6A0: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A6A6: - add r1, r0, #0x0 - b _0206A8F8 -_0206A6AA: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A6B0: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A6B6: - add r0, #0x8 - cmp r2, #0x3 - bls _0206A6BE -_0206A6BC: - b _0206A8F8 -_0206A6BE: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A6CA: ; jump table (using 16-bit offset) - .short _0206A6D2 - _0206A6CA - 2; case 0 - .short _0206A6D8 - _0206A6CA - 2; case 1 - .short _0206A6DE - _0206A6CA - 2; case 2 - .short _0206A6E2 - _0206A6CA - 2; case 3 -_0206A6D2: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A6D8: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A6DE: - add r1, r0, #0x0 - b _0206A8F8 -_0206A6E2: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A6E8: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A7DE - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A6FA: ; jump table (using 16-bit offset) - .short _0206A702 - _0206A6FA - 2; case 0 - .short _0206A708 - _0206A6FA - 2; case 1 - .short _0206A70E - _0206A6FA - 2; case 2 - .short _0206A712 - _0206A6FA - 2; case 3 -_0206A702: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A708: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A70E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A712: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A718: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A7DE - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A72A: ; jump table (using 16-bit offset) - .short _0206A732 - _0206A72A - 2; case 0 - .short _0206A738 - _0206A72A - 2; case 1 - .short _0206A73E - _0206A72A - 2; case 2 - .short _0206A742 - _0206A72A - 2; case 3 -_0206A732: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A738: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A73E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A742: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A748: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A7DE - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A75A: ; jump table (using 16-bit offset) - .short _0206A762 - _0206A75A - 2; case 0 - .short _0206A768 - _0206A75A - 2; case 1 - .short _0206A76E - _0206A75A - 2; case 2 - .short _0206A772 - _0206A75A - 2; case 3 -_0206A762: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A768: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A76E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A772: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A778: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A7DE - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A78A: ; jump table (using 16-bit offset) - .short _0206A792 - _0206A78A - 2; case 0 - .short _0206A798 - _0206A78A - 2; case 1 - .short _0206A79E - _0206A78A - 2; case 2 - .short _0206A7A2 - _0206A78A - 2; case 3 -_0206A792: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A798: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A79E: - add r1, r0, #0x0 - b _0206A8F8 -_0206A7A2: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A7A8: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A7DE - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A7BA: ; jump table (using 16-bit offset) - .short _0206A7C2 - _0206A7BA - 2; case 0 - .short _0206A7C8 - _0206A7BA - 2; case 1 - .short _0206A7CE - _0206A7BA - 2; case 2 - .short _0206A7D2 - _0206A7BA - 2; case 3 -_0206A7C2: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A7C8: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A7CE: - add r1, r0, #0x0 - b _0206A8F8 -_0206A7D2: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A7D8: - add r0, #0x8 - cmp r2, #0x3 - bls _0206A7E0 -_0206A7DE: - b _0206A8F8 -_0206A7E0: - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A7EC: ; jump table (using 16-bit offset) - .short _0206A7F4 - _0206A7EC - 2; case 0 - .short _0206A7FA - _0206A7EC - 2; case 1 - .short _0206A800 - _0206A7EC - 2; case 2 - .short _0206A806 - _0206A7EC - 2; case 3 -_0206A7F4: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A7FA: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A800: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A806: - add r1, r0, #0x0 - b _0206A8F8 -_0206A80A: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A8F8 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A81C: ; jump table (using 16-bit offset) - .short _0206A824 - _0206A81C - 2; case 0 - .short _0206A82A - _0206A81C - 2; case 1 - .short _0206A830 - _0206A81C - 2; case 2 - .short _0206A836 - _0206A81C - 2; case 3 -_0206A824: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A82A: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A830: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A836: - add r1, r0, #0x0 - b _0206A8F8 -_0206A83A: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A8F8 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A84C: ; jump table (using 16-bit offset) - .short _0206A854 - _0206A84C - 2; case 0 - .short _0206A85A - _0206A84C - 2; case 1 - .short _0206A860 - _0206A84C - 2; case 2 - .short _0206A866 - _0206A84C - 2; case 3 -_0206A854: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A85A: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A860: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A866: - add r1, r0, #0x0 - b _0206A8F8 -_0206A86A: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A8F8 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A87C: ; jump table (using 16-bit offset) - .short _0206A884 - _0206A87C - 2; case 0 - .short _0206A88A - _0206A87C - 2; case 1 - .short _0206A890 - _0206A87C - 2; case 2 - .short _0206A896 - _0206A87C - 2; case 3 -_0206A884: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A88A: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A890: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A896: - add r1, r0, #0x0 - b _0206A8F8 -_0206A89A: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A8F8 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A8AC: ; jump table (using 16-bit offset) - .short _0206A8B4 - _0206A8AC - 2; case 0 - .short _0206A8BA - _0206A8AC - 2; case 1 - .short _0206A8C0 - _0206A8AC - 2; case 2 - .short _0206A8C6 - _0206A8AC - 2; case 3 -_0206A8B4: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A8BA: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A8C0: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A8C6: - add r1, r0, #0x0 - b _0206A8F8 -_0206A8CA: - add r0, #0x8 - cmp r2, #0x3 - bhi _0206A8F8 - add r2, r2, r2 - add r2, pc - ldrh r2, [r2, #0x6] - lsl r2, r2, #0x10 - asr r2, r2, #0x10 - add pc, r2 -_0206A8DC: ; jump table (using 16-bit offset) - .short _0206A8E4 - _0206A8DC - 2; case 0 - .short _0206A8EA - _0206A8DC - 2; case 1 - .short _0206A8F0 - _0206A8DC - 2; case 2 - .short _0206A8F6 - _0206A8DC - 2; case 3 -_0206A8E4: - add r1, r0, #0x0 - add r1, #0x60 - b _0206A8F8 -_0206A8EA: - add r1, r0, #0x0 - add r1, #0x40 - b _0206A8F8 -_0206A8F0: - add r1, r0, #0x0 - add r1, #0x20 - b _0206A8F8 -_0206A8F6: - add r1, r0, #0x0 -_0206A8F8: - add r0, r1, #0x0 - pop {r3, pc} - thumb_func_start ResolveMonForme ResolveMonForme: ; 0x0206A8FC ldr r3, _0206A928 ; =SPECIES_DEOXYS diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index ccd6bf54..4376285e 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -41,26 +41,29 @@ BOOL FUN_02069E9C(struct BoxPokemon * boxmon); void FUN_02069ECC(struct BoxPokemon * boxmon); void LoadWotbl_HandleAlternateForme(int species, int forme, u16 * wotbl); void FUN_0206A054(struct BoxPokemon * boxmon, u32 a1, u32 pokeball, u32 a3, u32 encounterType, u32 a5); +BOOL MonHasMove(struct Pokemon * pokemon, u16 move); +BOOL FUN_0206A144(struct BoxPokemon * boxmon, u32 a1); +BOOL FUN_0206A16C(u16 species, int forme, u32 a2); +void FUN_0206A1CC(struct BoxPokemon * boxmon); u32 MaskOfFlagNo(int flagno); void LoadMonPersonal(int species, struct BaseStats * personal); void LoadMonEvolutionTable(u16 species, struct Evolution * dest); -BOOL MonHasMove(struct Pokemon * pokemon, u16 move); int ResolveMonForme(int species, int forme); -void MonEncryptSegment(void * datap, u32 size, u32 key); -void MonDecryptSegment(void * datap, u32 size, u32 key); +void MonEncryptSegment(u16 * datap, u32 size, u32 key); +void MonDecryptSegment(u16 * datap, u32 size, u32 key); u16 MonEncryptionLCRNG(u32 * seed); -u16 CalcMonChecksum(void * datap, u32 size); -PokemonDataBlock * GetSubstruct(struct BoxPokemon * boxmon, u32 personality, u32 which_struct); -void LoadMonBaseStats_HandleAlternateForme(u32 species, u32 forme, struct BaseStats * baseStats); +u16 CalcMonChecksum(u16 * datap, u32 size); +PokemonDataBlock * GetSubstruct(struct BoxPokemon * boxmon, u32 personality, u8 which_struct); +void LoadMonBaseStats_HandleAlternateForme(int species, int forme, struct BaseStats * baseStats); -#define ENCRY_ARGS_PTY(mon) &(mon)->party, sizeof((mon)->party), (mon)->box.pid -#define ENCRY_ARGS_BOX(boxmon) &(boxmon)->substructs, sizeof((boxmon)->substructs), (boxmon)->checksum +#define ENCRY_ARGS_PTY(mon) (u16 *)&(mon)->party, sizeof((mon)->party), (mon)->box.pid +#define ENCRY_ARGS_BOX(boxmon) (u16 *)&(boxmon)->substructs, sizeof((boxmon)->substructs), (boxmon)->checksum #define ENCRYPT_PTY(mon) MonEncryptSegment(ENCRY_ARGS_PTY(mon)) #define ENCRYPT_BOX(boxmon) MonEncryptSegment(ENCRY_ARGS_BOX(boxmon)) #define DECRYPT_PTY(mon) MonDecryptSegment(ENCRY_ARGS_PTY(mon)) #define DECRYPT_BOX(boxmon) MonDecryptSegment(ENCRY_ARGS_BOX(boxmon)) -#define CHECKSUM(boxmon) CalcMonChecksum((boxmon)->substructs, sizeof((boxmon)->substructs)) +#define CHECKSUM(boxmon) CalcMonChecksum((u16 *)(boxmon)->substructs, sizeof((boxmon)->substructs)) #define SHINY_CHECK(otid, pid) (( \ ((((otid) & 0xFFFF0000u) >> 16u)) ^ \ (((otid) & 0xFFFFu)) ^ \ @@ -255,7 +258,7 @@ void CreateMon(struct Pokemon * pokemon, int species, int level, int fixedIV, in ZeroMonData(pokemon); CreateBoxMon(&pokemon->box, species, level, fixedIV, hasFixedPersonality, fixedPersonality, otIdType, fixedOtId); // Not your average encryption call - MonEncryptSegment(&pokemon->party, sizeof(pokemon->party), 0); + MonEncryptSegment((u16 *)&pokemon->party, sizeof(pokemon->party), 0); ENCRYPT_PTY(pokemon); SetMonData(pokemon, MON_DATA_LEVEL, &level); seal = CreateNewSealsObject(0); @@ -3337,3 +3340,271 @@ void FUN_0206A054(struct BoxPokemon * boxmon, u32 a1, u32 pokeball, u32 a3, u32 SetBoxMonData(boxmon, MON_DATA_POKEBALL, &pokeball); SetBoxMonData(boxmon, MON_DATA_ENCOUNTER_TYPE, &encounterType); } + +void FUN_0206A094(struct Pokemon * pokemon, u32 a1, u32 a2) +{ + u32 chance; + u16 species; + u16 forme; + u16 item1; + u16 item2; + if (!(a1 & 0x81)) { + chance = rand_LC() % 100; + species = GetMonData(pokemon, MON_DATA_SPECIES, 0); + forme = GetMonData(pokemon, MON_DATA_FORME, 0); + item1 = GetMonBaseStat_HandleFormeConversion(species, forme, BASE_ITEM_1); + item2 = GetMonBaseStat_HandleFormeConversion(species, forme, BASE_ITEM_2); + if (item1 == item2 && item1 != ITEM_NONE) + { + SetMonData(pokemon, MON_DATA_HELD_ITEM, &item1); + } + else + { + if (chance >= sItemOdds[a2][0]) + { + if (chance < sItemOdds[a2][1]) + { + SetMonData(pokemon, MON_DATA_HELD_ITEM, &item1); + } + else + { + SetMonData(pokemon, MON_DATA_HELD_ITEM, &item2); + } + } + } + } +} + +BOOL FUN_0206A13C(struct Pokemon * pokemon, u32 a1) +{ + return FUN_0206A144(&pokemon->box, a1); +} + +BOOL FUN_0206A144(struct BoxPokemon * boxmon, u32 a1) +{ + u16 species = GetBoxMonData(boxmon, MON_DATA_SPECIES2, NULL); + int forme = GetBoxMonData(boxmon, MON_DATA_FORME, NULL); + return FUN_0206A16C(species, forme, a1); +} + +BOOL FUN_0206A16C(u16 species, int forme, u32 a2) +{ + u32 r4; + enum BaseStat r2; + if (species == SPECIES_EGG) + return FALSE; + if (a2 < 32) + { + r4 = 1 << a2; + r2 = BASE_UNKNOWN_29; + } + else if (a2 < 64) + { + r4 = 1 << (a2 - 32); + r2 = BASE_UNKNOWN_30; + } + else if (a2 < 96) + { + r4 = 1 << (a2 - 64); + r2 = BASE_UNKNOWN_31; + } + else + { + r4 = 1 << (a2 - 96); + r2 = BASE_UNKNOWN_32; + } + return !!(GetMonBaseStat_HandleFormeConversion(species, forme, r2) & r4); +} + +void FUN_0206A1C4(struct Pokemon * pokemon) +{ + FUN_0206A1CC(&pokemon->box); +} + +void FUN_0206A1CC(struct BoxPokemon * boxmon) +{ + BOOL decry = AcquireBoxMonLock(boxmon); + int species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + int pid = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL); + int ability1 = GetMonBaseStat(species, BASE_ABILITY_1); + int ability2 = GetMonBaseStat(species, BASE_ABILITY_2); + + if (ability2 != ABILITY_NONE) + { + if (pid & 1) + SetBoxMonData(boxmon, MON_DATA_ABILITY, &ability2); + else + SetBoxMonData(boxmon, MON_DATA_ABILITY, &ability1); + } + else + SetBoxMonData(boxmon, MON_DATA_ABILITY, &ability1); + ReleaseBoxMonLock(boxmon, decry); +} + +void FUN_0206A23C(struct Pokemon * r5, u32 personality) +{ + PokemonDataBlockA * r4; + PokemonDataBlockB * r6; + PokemonDataBlockC * r7; + PokemonDataBlockD * sp8; + PokemonDataBlockA * spC; + PokemonDataBlockB * sp10; + PokemonDataBlockC * sp14; + PokemonDataBlockD * sp18; + struct Pokemon * sp4; + + sp4 = AllocMonZeroed(0); + FUN_02069B88(r5, sp4); + r4 = &GetSubstruct(&sp4->box, r5->box.pid, 0)->blockA; + r6 = &GetSubstruct(&sp4->box, r5->box.pid, 1)->blockB; + r7 = &GetSubstruct(&sp4->box, r5->box.pid, 2)->blockC; + sp8 = &GetSubstruct(&sp4->box, r5->box.pid, 3)->blockD; + spC = &GetSubstruct(&r5->box, personality, 0)->blockA; + sp10 = &GetSubstruct(&r5->box, personality, 1)->blockB; + sp14 = &GetSubstruct(&r5->box, personality, 2)->blockC; + sp18 = &GetSubstruct(&r5->box, personality, 3)->blockD; + + DECRYPT_BOX(&sp4->box); + DECRYPT_PTY(r5); + DECRYPT_BOX(&r5->box); + r5->box.pid = personality; + *spC = *r4; + *sp10 = *r6; + *sp14 = *r7; + *sp18 = *sp8; + r5->box.checksum = CHECKSUM(&r5->box); + ENCRYPT_BOX(&r5->box); + ENCRYPT_PTY(r5); + FreeToHeap(sp4); +} + +void LoadMonPersonal(int species, struct BaseStats * personal) +{ + ReadWholeNarcMemberByIdPair(personal, NARC_POKETOOL_PERSONAL_PERSONAL, species); +} + +void LoadMonBaseStats_HandleAlternateForme(int species, int forme, struct BaseStats * personal) +{ + ReadWholeNarcMemberByIdPair(personal, NARC_POKETOOL_PERSONAL_PERSONAL, ResolveMonForme(species, forme)); +} + +void LoadMonEvolutionTable(u16 species, struct Evolution * evo) +{ + ReadWholeNarcMemberByIdPair(evo, NARC_POKETOOL_PERSONAL_EVO, species); +} + + +void MonEncryptSegment(u16 * data, u32 size, u32 seed) { + int i; + for (i = 0; i < size / 2; i++) + { + data[i] ^= MonEncryptionLCRNG(&seed); + } +} + +void MonDecryptSegment(u16 * data, u32 size, u32 seed) { + MonEncryptSegment(data, size, seed); +} + +u16 MonEncryptionLCRNG(u32 * seed) +{ + *seed = *seed * 1103515245 + 24691; + return *seed >> 16; +} + +u16 CalcMonChecksum(u16 * data, u32 size) +{ + int i; + u16 ret = 0; + for (i = 0; i < size / 2; i++) + { + ret += data[i]; + } + return ret; +} + +#define SUBSTRUCT_CASE(v1, v2, v3, v4)({ \ + PokemonDataBlock *substructs = boxMon->substructs; \ + switch (substructType) \ + { \ + case 0: \ + result = &substructs[v1]; \ + break; \ + case 1: \ + result = &substructs[v2]; \ + break; \ + case 2: \ + result = &substructs[v3]; \ + break; \ + case 3: \ + result = &substructs[v4]; \ + break; \ + } \ +});\ + break; \ + +PokemonDataBlock *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType) +{ + PokemonDataBlock *result; + + switch ((personality & 0x3E000) >> 13) + { + case 0: + case 24: + SUBSTRUCT_CASE(0,1,2,3) + case 1: + case 25: + SUBSTRUCT_CASE(0,1,3,2) + case 2: + case 26: + SUBSTRUCT_CASE(0,2,1,3) + case 3: + case 27: + SUBSTRUCT_CASE(0,3,1,2) + case 4: + case 28: + SUBSTRUCT_CASE(0,2,3,1) + case 5: + case 29: + SUBSTRUCT_CASE(0,3,2,1) + case 6: + case 30: + SUBSTRUCT_CASE(1,0,2,3) + case 7: + case 31: + SUBSTRUCT_CASE(1,0,3,2) + case 8: + SUBSTRUCT_CASE(2,0,1,3) + case 9: + SUBSTRUCT_CASE(3,0,1,2) + case 10: + SUBSTRUCT_CASE(2,0,3,1) + case 11: + SUBSTRUCT_CASE(3,0,2,1) + case 12: + SUBSTRUCT_CASE(1,2,0,3) + case 13: + SUBSTRUCT_CASE(1,3,0,2) + case 14: + SUBSTRUCT_CASE(2,1,0,3) + case 15: + SUBSTRUCT_CASE(3,1,0,2) + case 16: + SUBSTRUCT_CASE(2,3,0,1) + case 17: + SUBSTRUCT_CASE(3,2,0,1) + case 18: + SUBSTRUCT_CASE(1,2,3,0) + case 19: + SUBSTRUCT_CASE(1,3,2,0) + case 20: + SUBSTRUCT_CASE(2,1,3,0) + case 21: + SUBSTRUCT_CASE(3,1,2,0) + case 22: + SUBSTRUCT_CASE(2,3,1,0) + case 23: + SUBSTRUCT_CASE(3,2,1,0) + } + return result; +} -- cgit v1.2.3 From 62e926d5217f1f4cd8efd610e7d38374535836e1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 14 Jun 2020 21:18:07 -0400 Subject: through FUN_0206A998 --- arm9/asm/pokemon_s.s | 112 --------------------------------------------------- arm9/src/pokemon.c | 80 ++++++++++++++++++++++++++++++++---- include/global.h | 2 + 3 files changed, 75 insertions(+), 119 deletions(-) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s index 546d113b..c34a280a 100644 --- a/arm9/asm/pokemon_s.s +++ b/arm9/asm/pokemon_s.s @@ -6,118 +6,6 @@ .text - thumb_func_start ResolveMonForme -ResolveMonForme: ; 0x0206A8FC - ldr r3, _0206A928 ; =SPECIES_DEOXYS - cmp r0, r3 - beq _0206A90C - add r2, r3, #0x0 - add r2, #SPECIES_WORMADAM-SPECIES_DEOXYS - cmp r0, r2 - beq _0206A91A - bx lr -_0206A90C: - cmp r1, #0x0 - beq _0206A926 - cmp r1, #0x3 - bgt _0206A926 - add r3, #SPECIES_DEOXYS_ATK-SPECIES_DEOXYS-1 - add r0, r1, r3 - bx lr -_0206A91A: - cmp r1, #0x0 - beq _0206A926 - cmp r1, #0x2 - bgt _0206A926 - add r3, #SPECIES_WORMADAM_SANDY-SPECIES_DEOXYS-1 - add r0, r1, r3 -_0206A926: - bx lr - .balign 4 -_0206A928: .word SPECIES_DEOXYS - - thumb_func_start MaskOfFlagNo -MaskOfFlagNo: ; 0x0206A92C - push {r3-r5, lr} - add r5, r0, #0x0 - mov r4, #0x1 - cmp r5, #0x20 - blt _0206A93A - bl ErrorHandling -_0206A93A: - mov r0, #0x0 - cmp r5, #0x0 - ble _0206A948 -_0206A940: - add r0, r0, #0x1 - lsl r4, r4, #0x1 - cmp r0, r5 - blt _0206A940 -_0206A948: - add r0, r4, #0x0 - pop {r3-r5, pc} - - thumb_func_start LowestFlagNo -LowestFlagNo: ; 0x0206A94C - mov r3, #0x1 - mov r2, #0x0 -_0206A950: - add r1, r0, #0x0 - tst r1, r3 - bne _0206A95E - add r2, r2, #0x1 - lsl r3, r3, #0x1 - cmp r2, #0x20 - blt _0206A950 -_0206A95E: - add r0, r2, #0x0 - bx lr - .balign 4 - - thumb_func_start IsPokemonLegendaryOrMythical -IsPokemonLegendaryOrMythical: ; 0x0206A964 - ldr r3, _0206A980 ; =sLegendaryMonsList - mov r2, #0x0 -_0206A968: - ldrh r1, [r3, #0x0] - cmp r0, r1 - bne _0206A972 - mov r0, #0x1 - bx lr -_0206A972: - add r2, r2, #0x1 - add r3, r3, #0x2 - cmp r2, #0x12 - blo _0206A968 - mov r0, #0x0 - bx lr - nop -_0206A980: .word sLegendaryMonsList - - thumb_func_start GetLegendaryMon -GetLegendaryMon: ; 0x0206A984 - cmp r0, #0x12 - blo _0206A98A - mov r0, #0x0 -_0206A98A: - lsl r1, r0, #0x1 - ldr r0, _0206A994 ; =sLegendaryMonsList - ldrh r0, [r0, r1] - bx lr - nop -_0206A994: .word sLegendaryMonsList - - thumb_func_start FUN_0206A998 -FUN_0206A998: ; 0x0206A998 - push {r3, lr} - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - bl IsPokemonLegendaryOrMythical - pop {r3, pc} - thumb_func_start FUN_0206A9AC FUN_0206A9AC: ; 0x0206A9AC push {r3-r7, lr} diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 4376285e..4fba962b 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -3523,25 +3523,27 @@ u16 CalcMonChecksum(u16 * data, u32 size) return ret; } -#define SUBSTRUCT_CASE(v1, v2, v3, v4)({ \ - PokemonDataBlock *substructs = boxMon->substructs; \ +#define SUBSTRUCT_CASE(v1, v2, v3, v4) \ +{ \ + PokemonDataBlock *substructs = boxMon->substructs; \ switch (substructType) \ { \ case 0: \ - result = &substructs[v1]; \ + result = &substructs[v1]; \ break; \ case 1: \ - result = &substructs[v2]; \ + result = &substructs[v2]; \ break; \ case 2: \ - result = &substructs[v3]; \ + result = &substructs[v3]; \ break; \ case 3: \ - result = &substructs[v4]; \ + result = &substructs[v4]; \ break; \ } \ -});\ + \ break; \ +} PokemonDataBlock *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 substructType) { @@ -3608,3 +3610,67 @@ PokemonDataBlock *GetSubstruct(struct BoxPokemon *boxMon, u32 personality, u8 su } return result; } + +int ResolveMonForme(int species, int forme) +{ + switch (species) + { + case SPECIES_DEOXYS: + if (forme != 0 && forme <= 3) + return SPECIES_DEOXYS_ATK + forme - 1; + break; + case SPECIES_WORMADAM: + if (forme != 0 && forme <= 2) + return SPECIES_WORMADAM_SANDY + forme - 1; + break; + } + return species; +} + +u32 MaskOfFlagNo(int flagno) +{ + // This is completely inane. + int i; + u32 ret = 1; + GF_ASSERT(flagno < 32); + for (i = 0; i < flagno; i++) + ret <<= 1; + return ret; +} + +int LowestFlagNo(u32 mask) +{ + int i; + u32 bit = 1; + for (i = 0; i < 32; i++) + { + if (mask & bit) + break; + bit <<= 1; + } + return i; +} + +BOOL IsPokemonLegendaryOrMythical(u16 species) +{ + int i; + for (i = 0; i < NELEMS(sLegendaryMonsList); i++) + { + if (species == sLegendaryMonsList[i]) + return TRUE; + } + return FALSE; +} + +u16 GetLegendaryMon(u32 idx) +{ + if (idx >= NELEMS(sLegendaryMonsList)) + idx = 0; + return sLegendaryMonsList[idx]; +} + +BOOL FUN_0206A998(struct Pokemon * pokemon) +{ + u16 species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); + return IsPokemonLegendaryOrMythical(species); +} diff --git a/include/global.h b/include/global.h index 35d0c3aa..67744d42 100644 --- a/include/global.h +++ b/include/global.h @@ -5,6 +5,8 @@ #include "function_target.h" #include "nitro.h" +#define NELEMS(a) (sizeof(a) / sizeof(*(a))) + enum GameVersion { VERSION_SAPPHIRE = 1, VERSION_RUBY = 2, -- cgit v1.2.3 From c2f8c12c6f92c2e43e117c9a156ebe58120e0a80 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Jun 2020 08:55:45 -0400 Subject: Finish pokemon.c --- arm9/arm9.lcf | 4 -- arm9/asm/pokemon_s.s | 183 --------------------------------------------------- arm9/src/pokemon.c | 65 ++++++++++++++++++ include/proto.h | 16 +++++ 4 files changed, 81 insertions(+), 187 deletions(-) delete mode 100644 arm9/asm/pokemon_s.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index ddccf15b..adf49127 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -362,7 +362,6 @@ SECTIONS { unk_020653EC.o (.text) unk_02066840.o (.text) pokemon.o (.text) - pokemon_s.o (.text) unk_0206AB04.o (.text) unk_0206ABC4.o (.text) unk_0206B16C.o (.text) @@ -691,7 +690,6 @@ SECTIONS { unk_02064CA8.o (.rodata) unk_020653EC.o (.rodata) pokemon.o (.rodata) - pokemon_s.o (.rodata) unk_0206ABC4.o (.rodata) unk_0206B688.o (.rodata) unk_0206BF90.o (.rodata) @@ -798,7 +796,6 @@ SECTIONS { unk_0205F7A0.o (.data) unk_02060CCC.o (.data) pokemon.o (.data) - pokemon_s.o (.data) unk_02073710.o (.data) unk_020772F0.o (.data) unk_0207C328.o (.data) @@ -891,7 +888,6 @@ SECTIONS { unk_020520AC.o (.bss) unk_02052EE8.o (.bss) pokemon.o (.bss) - pokemon_s.o (.bss) unk_020772F0.o (.bss) unk_020893E0.o (.bss) unk_0208A998.o (.bss) diff --git a/arm9/asm/pokemon_s.s b/arm9/asm/pokemon_s.s deleted file mode 100644 index c34a280a..00000000 --- a/arm9/asm/pokemon_s.s +++ /dev/null @@ -1,183 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .include "constants/species.h" - - .extern sLegendaryMonsList - - .text - - thumb_func_start FUN_0206A9AC -FUN_0206A9AC: ; 0x0206A9AC - push {r3-r7, lr} - sub sp, #0x10 - add r4, r1, #0x0 - add r5, r0, #0x0 - add r0, r4, #0x0 - add r6, r2, #0x0 - bl FUN_020239BC - str r0, [sp, #0x0] - add r0, r5, #0x0 - mov r1, #0x7 - mov r2, #0x0 - bl GetBoxMonData - str r0, [sp, #0x4] - add r0, r4, #0x0 - bl FUN_020239CC - str r0, [sp, #0x8] - add r0, r5, #0x0 - mov r1, #0x9c - mov r2, #0x0 - bl GetBoxMonData - str r0, [sp, #0xc] - add r0, r4, #0x0 - add r1, r6, #0x0 - bl FUN_020239A0 - add r7, r0, #0x0 - mov r0, #0x8 - add r1, r6, #0x0 - bl FUN_020219F4 - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x90 - add r2, r6, #0x0 - mov r4, #0x0 - bl GetBoxMonData - ldr r1, [sp, #0x0] - ldr r0, [sp, #0x4] - cmp r1, r0 - bne _0206AA1C - ldr r1, [sp, #0x8] - ldr r0, [sp, #0xc] - cmp r1, r0 - bne _0206AA1C - add r0, r7, #0x0 - add r1, r6, #0x0 - bl FUN_02021CE0 - cmp r0, #0x0 - bne _0206AA1C - mov r4, #0x1 -_0206AA1C: - add r0, r6, #0x0 - bl FUN_02021A20 - add r0, r7, #0x0 - bl FUN_02021A20 - add r0, r4, #0x0 - add sp, #0x10 - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0206AA30 -FUN_0206AA30: ; 0x0206AA30 - push {r3, lr} - cmp r0, #0x3f - bgt _0206AA48 - bge _0206AA6C - cmp r0, #0x1 - bgt _0206AA74 - cmp r0, #0x0 - blt _0206AA74 - beq _0206AA82 - cmp r0, #0x1 - beq _0206AA82 - b _0206AA74 -_0206AA48: - cmp r0, #0x5a - bgt _0206AA50 - beq _0206AA70 - b _0206AA74 -_0206AA50: - add r1, r0, #0x0 - sub r1, #0x5b - cmp r1, #0x3 - bhi _0206AA74 - add r1, r1, r1 - add r1, pc - ldrh r1, [r1, #0x6] - lsl r1, r1, #0x10 - asr r1, r1, #0x10 - add pc, r1 -_0206AA64: ; jump table (using 16-bit offset) - .short _0206AA70 - _0206AA64 - 2; case 0 - .short _0206AA70 - _0206AA64 - 2; case 1 - .short _0206AA70 - _0206AA64 - 2; case 2 - .short _0206AA70 - _0206AA64 - 2; case 3 -_0206AA6C: - mov r0, #0x2 - pop {r3, pc} -_0206AA70: - sub r0, #0x57 - pop {r3, pc} -_0206AA74: - bl FUN_0206AE00 - cmp r0, #0x1 - bne _0206AA80 - mov r0, #0x1 - pop {r3, pc} -_0206AA80: - mov r0, #0x0 -_0206AA82: - pop {r3, pc} - - thumb_func_start FUN_0206AA84 -FUN_0206AA84: ; 0x0206AA84 - push {r3-r4, lr} - sub sp, #0x1c - add r4, r0, #0x0 - mov r0, #0x0 - add r1, sp, #0x0 - strb r0, [r1, #0x0] - add r1, sp, #0x0 - add r1, #0x1 - mov r2, #0x18 - bl MIi_CpuClearFast - add r0, r4, #0x0 - mov r1, #0xa1 - add r2, sp, #0x0 - bl SetMonData - add r2, sp, #0x0 - add r0, r4, #0x0 - mov r1, #0xaa - add r2, #0x1 - bl SetMonData - add sp, #0x1c - pop {r3-r4, pc} - - thumb_func_start FUN_0206AAB4 -FUN_0206AAB4: ; 0x0206AAB4 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl AcquireBoxMonLock - mov r4, #0x0 - str r0, [sp, #0x0] - add r7, r4, #0x0 - add r6, sp, #0x4 -_0206AAC6: - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x36 - add r2, r7, #0x0 - bl GetBoxMonData - cmp r0, #0x0 - beq _0206AAF0 - add r1, r4, #0x0 - add r0, r5, #0x0 - add r1, #0x42 - mov r2, #0x0 - bl GetBoxMonData - add r1, r4, #0x0 - strb r0, [r6, #0x0] - add r0, r5, #0x0 - add r1, #0x3a - add r2, sp, #0x4 - bl SetBoxMonData -_0206AAF0: - add r4, r4, #0x1 - cmp r4, #0x4 - blt _0206AAC6 - ldr r1, [sp, #0x0] - add r0, r5, #0x0 - bl ReleaseBoxMonLock - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 4fba962b..e307f351 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -3674,3 +3674,68 @@ BOOL FUN_0206A998(struct Pokemon * pokemon) u16 species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); return IsPokemonLegendaryOrMythical(species); } + +BOOL FUN_0206A9AC(struct BoxPokemon * boxmon, struct SaveBlock2 * sb2, u32 heap_id) +{ + u32 myId = FUN_020239BC(sb2); + u32 otId = GetBoxMonData(boxmon, MON_DATA_OTID, NULL); + u32 myGender = FUN_020239CC(sb2); + u32 otGender = GetBoxMonData(boxmon, MON_DATA_MET_GENDER, NULL); + struct String * r7 = FUN_020239A0(sb2, heap_id); + struct String * r6 = FUN_020219F4(OT_NAME_LENGTH + 1, heap_id); + BOOL ret = FALSE; + GetBoxMonData(boxmon, MON_DATA_OT_NAME_2, r6); + if (myId == otId && myGender == otGender && FUN_02021CE0(r7, r6) == 0) + ret = TRUE; + FUN_02021A20(r6); + FUN_02021A20(r7); + return ret; +} + +int FUN_0206AA30(int x) +{ + switch (x) + { + case 63: + return 2; + case 90: + case 91: + case 92: + case 93: + case 94: + return x - 87; + default: + if (FUN_0206AE00(x) == 1) + return 1; + else + return 0; + case 0: + case 1: + return x; + } +} + +void FUN_0206AA84(struct Pokemon * pokemon) +{ + u8 sp0 = 0; + u8 sp1[12][2]; + MIi_CpuClearFast(0, sp1, sizeof(sp1)); + SetMonData(pokemon, MON_DATA_CAPSULE, &sp0); + SetMonData(pokemon, MON_DATA_SEAL_COORDS, sp1); +} + +void FUN_0206AAB4(struct BoxPokemon * boxmon) +{ + int i; + u8 pp; + BOOL decry = AcquireBoxMonLock(boxmon); + for (i = 0; i < 4; i++) + { + if (GetBoxMonData(boxmon, MON_DATA_MOVE1 + i, NULL) != MOVE_NONE) + { + pp = GetBoxMonData(boxmon, MON_DATA_MOVE1MAXPP + i, NULL); + SetBoxMonData(boxmon, MON_DATA_MOVE1PP + i, &pp); + } + } + ReleaseBoxMonLock(boxmon, decry); +} diff --git a/include/proto.h b/include/proto.h index 8c35cca5..24ddff07 100644 --- a/include/proto.h +++ b/include/proto.h @@ -7,6 +7,15 @@ struct UnkStruct_02069038; struct PlayerParty; struct BoxPokemon; +struct SaveBlock2; +struct String +{ + u16 len; + u16 pos; + u32 magic; + u16 unk8; + u16 data[0]; +}; u16 * FUN_0200AA50(u16 species, u32 heap_id); void FUN_02021A74(u16 * dest, u16 * src); @@ -23,4 +32,11 @@ void FUN_02005E90(int, int, int, int); void FUN_020056AC(int, int, int, int, int); void FUN_020808AC(struct BoxPokemon *, int, int, int, int); +struct String * FUN_020239A0(struct SaveBlock2 *, u32 heap_id); +u32 FUN_020239BC(struct SaveBlock2 *); +u32 FUN_020239CC(struct SaveBlock2 *); +struct String * FUN_020219F4(u32 count, u32 heap_id); +int FUN_02021CE0(struct String *, struct String *); +int FUN_0206AE00(int x); + #endif //POKEDIAMOND_PROTO_H -- cgit v1.2.3 From 9e33176367974197195a9c9f8e58ede7569d665d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 Jun 2020 10:14:29 -0400 Subject: Resolve compiler warnings --- arm9/src/pokemon.c | 248 ++++++++++++++++++++++---------------------- include/constants/global.h | 7 ++ include/constants/pokemon.h | 3 - include/global.h | 1 + include/pokemon.h | 53 ++++++++++ include/proto.h | 21 +--- include/save_block_2.h | 18 ++++ include/string16.h | 17 +++ 8 files changed, 221 insertions(+), 147 deletions(-) create mode 100644 include/constants/global.h create mode 100644 include/save_block_2.h create mode 100644 include/string16.h diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index e307f351..4a4b8a6d 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -56,6 +56,7 @@ u16 MonEncryptionLCRNG(u32 * seed); u16 CalcMonChecksum(u16 * datap, u32 size); PokemonDataBlock * GetSubstruct(struct BoxPokemon * boxmon, u32 personality, u8 which_struct); void LoadMonBaseStats_HandleAlternateForme(int species, int forme, struct BaseStats * baseStats); +u8 FUN_020690D4(struct BoxPokemon * boxmon); #define ENCRY_ARGS_PTY(mon) (u16 *)&(mon)->party, sizeof((mon)->party), (mon)->box.pid #define ENCRY_ARGS_BOX(boxmon) (u16 *)&(boxmon)->substructs, sizeof((boxmon)->substructs), (boxmon)->checksum @@ -461,7 +462,7 @@ void CalcMonStats(struct Pokemon * pokemon) species = (int)GetMonData(pokemon, MON_DATA_SPECIES, NULL); baseStats = (struct BaseStats *)AllocFromHeap(0, sizeof(struct BaseStats)); - LoadMonBaseStats_HandleAlternateForme((u32)species, (u32)forme, baseStats); + LoadMonBaseStats_HandleAlternateForme(species, forme, baseStats); if (species == SPECIES_SHEDINJA) newMaxHp = 1; @@ -2173,7 +2174,7 @@ void FUN_02068B68(struct SomeDrawPokemonStruct * spC, struct Pokemon * pokemon, void FUN_02068B70(struct SomeDrawPokemonStruct * spC, struct BoxPokemon * boxmon, u8 sp10) { BOOL decry = AcquireBoxMonLock(boxmon); - u16 species = GetBoxMonData(boxmon, MON_DATA_SPECIES2, NULL); + u16 species = (u16)GetBoxMonData(boxmon, MON_DATA_SPECIES2, NULL); u8 gender = GetBoxMonGender(boxmon); u8 shiny = BoxMonIsShiny(boxmon); u32 personality = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL); @@ -2186,7 +2187,7 @@ void FUN_02068B70(struct SomeDrawPokemonStruct * spC, struct BoxPokemon * boxmon forme = 0; } else - forme = GetBoxMonData(boxmon, MON_DATA_FORME, NULL); + forme = (u8)GetBoxMonData(boxmon, MON_DATA_FORME, NULL); FUN_02068C00(spC, species, gender, sp10, shiny, forme, personality); ReleaseBoxMonLock(boxmon, decry); } @@ -2202,71 +2203,71 @@ void FUN_02068C00(struct SomeDrawPokemonStruct * spC, int species, u8 gender, u8 if (forme > 2) forme = 0; spC->unk0 = 0x75; - spC->unk2 = sp10 / 2 + 0x48 + forme * 2; - spC->unk4 = shiny + 0x92 + forme * 2; + spC->unk2 = (u16)(sp10 / 2 + 0x48 + forme * 2); + spC->unk4 = (u16)(shiny + 0x92 + forme * 2); break; case SPECIES_WORMADAM: if (forme > 2) forme = 0; spC->unk0 = 0x75; - spC->unk2 = sp10 / 2 + 0x4E + forme * 2; - spC->unk4 = shiny + 0x98 + forme * 2; + spC->unk2 = (u16)(sp10 / 2 + 0x4E + forme * 2); + spC->unk4 = (u16)(shiny + 0x98 + forme * 2); break; case SPECIES_SHELLOS: if (forme > 1) forme = 0; spC->unk0 = 0x75; - spC->unk2 = sp10 + 0x54 + forme; - spC->unk4 = shiny + 0x9E + forme * 2; + spC->unk2 = (u16)(sp10 + 0x54 + forme); + spC->unk4 = (u16)(shiny + 0x9E + forme * 2); break; case SPECIES_GASTRODON: if (forme > 1) forme = 0; spC->unk0 = 0x75; - spC->unk2 = sp10 + 0x58 + forme; - spC->unk4 = shiny + 0xA2 + forme * 2; + spC->unk2 = (u16)(sp10 + 0x58 + forme); + spC->unk4 = (u16)(shiny + 0xA2 + forme * 2); break; case SPECIES_CHERRIM: if (forme > 1) forme = 0; spC->unk0 = 0x75; - spC->unk2 = sp10 + 0x5C + forme; - spC->unk4 = shiny * 2 + 0xA6 + forme; + spC->unk2 = (u16)(sp10 + 0x5C + forme); + spC->unk4 = (u16)(shiny * 2 + 0xA6 + forme); break; case SPECIES_ARCEUS: if (forme > 17) forme = 0; spC->unk0 = 0x75; - spC->unk2 = sp10 / 2 + 0x60 + forme * 2; - spC->unk4 = shiny + 0xAA + forme * 2; + spC->unk2 = (u16)(sp10 / 2 + 0x60 + forme * 2); + spC->unk4 = (u16)(shiny + 0xAA + forme * 2); break; case SPECIES_CASTFORM: if (forme > 3) forme = 0; spC->unk0 = 0x75; - spC->unk2 = sp10 * 2 + 0x40 + forme; - spC->unk4 = shiny * 4 + 0x8A + forme; + spC->unk2 = (u16)(sp10 * 2 + 0x40 + forme); + spC->unk4 = (u16)(shiny * 4 + 0x8A + forme); break; case SPECIES_DEOXYS: if (forme > 3) forme = 0; spC->unk0 = 0x75; - spC->unk2 = sp10 / 2 + forme * 2; - spC->unk4 = shiny + 0x86; + spC->unk2 = (u16)(sp10 / 2 + forme * 2); + spC->unk4 = (u16)(shiny + 0x86); break; case SPECIES_UNOWN: if (forme >= 28) forme = 0; spC->unk0 = 0x75; - spC->unk2 = sp10 / 2 + 0x8 + forme * 2; - spC->unk4 = shiny + 0x88; + spC->unk2 = (u16)(sp10 / 2 + 0x8 + forme * 2); + spC->unk4 = (u16)(shiny + 0x88); break; case SPECIES_EGG: if (forme > 1) forme = 0; spC->unk0 = 0x75; - spC->unk2 = 0x84 + forme; - spC->unk4 = 0xCE + forme; + spC->unk2 = (u16)(0x84 + forme); + spC->unk4 = (u16)(0xCE + forme); break; case SPECIES_MANAPHY_EGG: spC->unk0 = 0x75; @@ -2275,8 +2276,8 @@ void FUN_02068C00(struct SomeDrawPokemonStruct * spC, int species, u8 gender, u8 break; default: spC->unk0 = 0x4; - spC->unk2 = species * 6 + sp10 + (gender == MON_FEMALE ? 0 : 1); - spC->unk4 = shiny + (species * 6 + 4); + spC->unk2 = (u16)(species * 6 + sp10 + (gender == MON_FEMALE ? 0 : 1)); + spC->unk4 = (u16)(shiny + (species * 6 + 4)); if (species == SPECIES_SPINDA && sp10 == 2) { spC->unk6 = SPECIES_SPINDA; @@ -2294,7 +2295,7 @@ u8 FUN_02068E14(struct Pokemon * pokemon, u32 a1) u8 FUN_02068E1C(struct BoxPokemon * boxmon, u32 a1) { - u16 species = GetBoxMonData(boxmon, MON_DATA_SPECIES2, NULL); + u16 species = (u16)GetBoxMonData(boxmon, MON_DATA_SPECIES2, NULL); u8 gender = GetBoxMonGender(boxmon); u32 pid = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL); u8 forme; @@ -2306,12 +2307,13 @@ u8 FUN_02068E1C(struct BoxPokemon * boxmon, u32 a1) forme = 0; } else - forme = GetBoxMonData(boxmon, MON_DATA_FORME, NULL); + forme = (u8)GetBoxMonData(boxmon, MON_DATA_FORME, NULL); return FUN_02068E88(species, gender, a1, forme, pid); } u8 FUN_02068E88(int species, u8 gender, u32 a1, u8 forme, u32 pid) { +#pragma unused(pid) u8 ret; s32 fileId; enum NarcId narc; @@ -2321,61 +2323,61 @@ u8 FUN_02068E88(int species, u8 gender, u32 a1, u8 forme, u32 pid) if (forme > 2) forme = 0; narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; - fileId = a1 / 2 + 0x48 + forme * 2; + fileId = (s32)(a1 / 2 + 0x48 + forme * 2); break; case SPECIES_WORMADAM: if (forme > 2) forme = 0; narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; - fileId = a1 / 2 + 0x4E + forme * 2; + fileId = (s32)(a1 / 2 + 0x4E + forme * 2); break; case SPECIES_SHELLOS: if (forme > 1) forme = 0; narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; - fileId = a1 + 0x54 + forme; + fileId = (s32)(a1 + 0x54 + forme); break; case SPECIES_GASTRODON: if (forme > 1) forme = 0; narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; - fileId = a1 + 0x58 + forme; + fileId = (s32)(a1 + 0x58 + forme); break; case SPECIES_CHERRIM: if (forme > 1) forme = 0; narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; - fileId = a1 + 0x5C + forme; + fileId = (s32)(a1 + 0x5C + forme); break; case SPECIES_ARCEUS: if (forme > 17) forme = 0; narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; - fileId = a1 / 2 + 0x60 + 2 * forme; + fileId = (s32)(a1 / 2 + 0x60 + 2 * forme); break; case SPECIES_CASTFORM: if (forme > 3) forme = 0; narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; - fileId = a1 * 2 + 0x40 + forme; + fileId = (s32)(a1 * 2 + 0x40 + forme); break; case SPECIES_DEOXYS: if (forme > 3) forme = 0; narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; - fileId = a1 / 2 + forme * 2; + fileId = (s32)(a1 / 2 + forme * 2); break; case SPECIES_UNOWN: if (forme >= 28) forme = 0; narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; - fileId = a1 / 2 + 0x8 + forme * 2; + fileId = (s32)(a1 / 2 + 0x8 + forme * 2); break; case SPECIES_EGG: if (forme > 1) forme = 0; narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; - fileId = 0x84 + forme; + fileId = (s32)(0x84 + forme); break; case SPECIES_MANAPHY_EGG: narc = NARC_POKETOOL_POKEGRA_HEIGHT_O; @@ -2383,7 +2385,7 @@ u8 FUN_02068E88(int species, u8 gender, u32 a1, u8 forme, u32 pid) break; default: narc = NARC_POKETOOL_POKEGRA_HEIGHT; - fileId = 4 * species + a1 + (gender != MON_FEMALE ? 1 : 0); + fileId = (s32)(4 * species + a1 + (gender != MON_FEMALE ? 1 : 0)); break; } ReadWholeNarcMemberByIdPair(&ret, narc, fileId); @@ -2397,10 +2399,10 @@ void FUN_02068FE0(struct SomeDrawPokemonStruct * a0, u16 a1, int a2) else { a0->unk0 = 6; - a1 = FUN_0206AA30(a1); + a1 = (u16)FUN_0206AA30(a1); } - a0->unk2 = a1 * 2; - a0->unk4 = a1 * 2 + 1; + a0->unk2 = (u16)(a1 * 2); + a0->unk4 = (u16)(a1 * 2 + 1); a0->unk6 = 0; a0->unk8 = 0; a0->unkC = 0; @@ -2409,36 +2411,36 @@ void FUN_02068FE0(struct SomeDrawPokemonStruct * a0, u16 a1, int a2) void FUN_02069010(void * dest, int a1) { struct Pokeanm buffer; - ReadFromNarcMemberByIdPair(&buffer, NARC_POKETOOL_POKEANM_POKEANM, 0, 28 * a1, 28); + ReadFromNarcMemberByIdPair(&buffer, NARC_POKETOOL_POKEANM_POKEANM, 0, (u32)(28 * a1), 28); MI_CpuCopy8(buffer.unk8, dest, 20); } void FUN_02069038(u32 a0, u32 a1, u32 a2, s32 a3, u32 a4, u32 a5, u32 a6) { struct UnkStruct_02069038 sp4; - ReadFromNarcMemberByIdPair(&sp4.anim, NARC_POKETOOL_POKEANM_POKEANM, 0, a2 * 28, 28); + ReadFromNarcMemberByIdPair(&sp4.anim, NARC_POKETOOL_POKEANM_POKEANM, 0, (u32)(a2 * 28), 28); if (a3 == 2) { sp4.unk0 = sp4.anim.unk0[0].unk0; sp4.unk2 = sp4.anim.unk0[0].unk1; - sp4.unk4 = a5; + sp4.unk4 = (u8)a5; } else { - a3 = FUN_02014C3C(a4); + a3 = FUN_02014C3C((u8)a4); GF_ASSERT(a3 < 3); sp4.unk0 = sp4.anim.unk0[a3 + 1].unk0; sp4.unk2 = sp4.anim.unk0[a3 + 1].unk1; - sp4.unk4 = a5; + sp4.unk4 = (u8)a5; } - FUN_02014C54(a0, a1, &sp4, a6); + FUN_02014C54((int)a0, (int)a1, &sp4, (u8)a6); } void FUN_020690AC(struct SomeDrawPokemonStruct * a0, u32 a1) { a0->unk0 = 60; - a0->unk2 = a1 * 2; - a0->unk4 = a1 * 2 + 1; + a0->unk2 = (u16)(a1 * 2); + a0->unk4 = (u16)(a1 * 2 + 1); a0->unk6 = 0; a0->unk8 = 0; a0->unkC = 0; @@ -2454,8 +2456,6 @@ u32 FUN_020690C8(void) return sizeof(struct BoxPokemon); } -u8 FUN_020690D4(struct BoxPokemon * boxmon); - u8 FUN_020690CC(struct Pokemon * pokemon) { return FUN_020690D4(&pokemon->box); @@ -2463,7 +2463,7 @@ u8 FUN_020690CC(struct Pokemon * pokemon) u8 FUN_020690D4(struct BoxPokemon * boxmon) { - return GetBoxMonData(boxmon, MON_DATA_FORME, NULL); + return (u8)GetBoxMonData(boxmon, MON_DATA_FORME, NULL); } struct BoxPokemon * FUN_020690E4(struct Pokemon * pokemon) @@ -2473,11 +2473,11 @@ struct BoxPokemon * FUN_020690E4(struct Pokemon * pokemon) BOOL FUN_020690E8(struct Pokemon * pokemon) { - u16 species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); - u8 level = GetMonData(pokemon, MON_DATA_LEVEL, NULL) + 1; + u16 species = (u16)GetMonData(pokemon, MON_DATA_SPECIES, NULL); + u8 level = (u8)(GetMonData(pokemon, MON_DATA_LEVEL, NULL) + 1); u32 exp = GetMonData(pokemon, MON_DATA_EXPERIENCE, NULL); - u32 growthrate = GetMonBaseStat(species, BASE_GROWTH_RATE); - u32 maxexp = GetExpByGrowthRateAndLevel(growthrate, 100); + u32 growthrate = (u32)GetMonBaseStat(species, BASE_GROWTH_RATE); + u32 maxexp = GetExpByGrowthRateAndLevel((int)growthrate, 100); if (exp > maxexp) { exp = maxexp; @@ -2485,7 +2485,7 @@ BOOL FUN_020690E8(struct Pokemon * pokemon) } if (level > 100) return FALSE; - if (exp >= GetExpByGrowthRateAndLevel(growthrate, level)) + if (exp >= GetExpByGrowthRateAndLevel((int)growthrate, level)) { SetMonData(pokemon, MON_DATA_LEVEL, &level); return TRUE; @@ -2508,12 +2508,12 @@ u16 GetMonEvolution(struct PlayerParty * party, struct Pokemon * pokemon, u32 co struct Evolution * evoTable; u8 r1; - species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); - heldItem = GetMonData(pokemon, MON_DATA_HELD_ITEM, NULL); + species = (u16)GetMonData(pokemon, MON_DATA_SPECIES, NULL); + heldItem = (u16)GetMonData(pokemon, MON_DATA_HELD_ITEM, NULL); personality = GetMonData(pokemon, MON_DATA_PERSONALITY, NULL); - beauty = GetMonData(pokemon, MON_DATA_BEAUTY, NULL); - pid_hi = (personality & 0xFFFF0000) >> 16; - r1 = FUN_0206E7B8(heldItem, 1, 0); + beauty = (u8)GetMonData(pokemon, MON_DATA_BEAUTY, NULL); + pid_hi = (u16)((personality & 0xFFFF0000) >> 16); + r1 = (u8)FUN_0206E7B8(heldItem, 1, 0); if (species != SPECIES_KADABRA && r1 == 0x3F && context != 3) return SPECIES_NONE; if (method_ret == NULL) @@ -2523,8 +2523,8 @@ u16 GetMonEvolution(struct PlayerParty * party, struct Pokemon * pokemon, u32 co switch (context) { case 0: - level = GetMonData(pokemon, MON_DATA_LEVEL, NULL); - friendship = GetMonData(pokemon, MON_DATA_FRIENDSHIP, NULL); + level = (u8)GetMonData(pokemon, MON_DATA_LEVEL, NULL); + friendship = (u16)GetMonData(pokemon, MON_DATA_FRIENDSHIP, NULL); for (i = 0; i < 7; i++) { switch (evoTable[i].method) @@ -2747,7 +2747,7 @@ u16 ReadFromPersonalPmsNarc(u16 species) FSFile file; FS_InitFile(&file); FS_OpenFile(&file, "poketool/personal/pms.narc"); - FS_SeekFile(&file, species * sizeof(u16), FS_SEEK_SET); + FS_SeekFile(&file, (s32)(species * sizeof(u16)), FS_SEEK_SET); FS_ReadFile(&file, &ret, sizeof(u16)); FS_CloseFile(&file); } @@ -2778,8 +2778,8 @@ u16 GetEggSpecies(u16 species) #define WOTBL_MOVE_SHIFT 0 #define WOTBL_LVL_MASK 0xFE00 #define WOTBL_LVL_SHIFT 9 -#define WOTBL_MOVE(x) (((x) & WOTBL_MOVE_MASK) >> WOTBL_MOVE_SHIFT) -#define WOTBL_LVL(x) (((x) & WOTBL_LVL_MASK) >> WOTBL_LVL_SHIFT) +#define WOTBL_MOVE(x) ((u16)(((x) & WOTBL_MOVE_MASK) >> WOTBL_MOVE_SHIFT)) +#define WOTBL_LVL(x) ((u8)(((x) & WOTBL_LVL_MASK) >> WOTBL_LVL_SHIFT)) void InitBoxMonMoveset(struct BoxPokemon * boxmon) { @@ -2792,10 +2792,10 @@ void InitBoxMonMoveset(struct BoxPokemon * boxmon) u16 move; wotbl = AllocFromHeap(0, 22 * sizeof(u16)); decry = AcquireBoxMonLock(boxmon); - species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + species = (u16)GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); forme = GetBoxMonData(boxmon, MON_DATA_FORME, NULL); - level = CalcBoxMonLevel(boxmon); - LoadWotbl_HandleAlternateForme(species, forme, wotbl); + level = (u8)CalcBoxMonLevel(boxmon); + LoadWotbl_HandleAlternateForme(species, (int)forme, wotbl); for (i = 0; wotbl[i] != WOTBL_END; i++) { if ((wotbl[i] & WOTBL_LVL_MASK) > (level << WOTBL_LVL_SHIFT)) @@ -2821,10 +2821,10 @@ u32 FUN_020696A8(struct BoxPokemon * boxmon, u16 move) u16 cur_move; for (i = 0; i < 4; i++) { - cur_move = GetBoxMonData(boxmon, MON_DATA_MOVE1 + i, NULL); + cur_move = (u16)GetBoxMonData(boxmon, MON_DATA_MOVE1 + i, NULL); if (cur_move == MOVE_NONE) { - FUN_020697D4(boxmon, move, i); + FUN_020697D4(boxmon, move, (u8)i); ret = move; break; } @@ -2853,13 +2853,13 @@ void FUN_02069718(struct BoxPokemon * boxmon, u16 move) for (i = 0; i < 3; i++) { - moves[i] = GetBoxMonData(boxmon, MON_DATA_MOVE1 + i + 1, NULL); - pp[i] = GetBoxMonData(boxmon, MON_DATA_MOVE1PP + i + 1, NULL); - ppUp[i] = GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + i + 1, NULL); + moves[i] = (u16)GetBoxMonData(boxmon, MON_DATA_MOVE1 + i + 1, NULL); + pp[i] = (u8)GetBoxMonData(boxmon, MON_DATA_MOVE1PP + i + 1, NULL); + ppUp[i] = (u8)GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + i + 1, NULL); } moves[3] = move; - pp[3] = FUN_0206AB18(move, 5); + pp[3] = (u8)FUN_0206AB18(move, 5); ppUp[3] = 0; for (i = 0; i < 4; i++) @@ -2883,8 +2883,8 @@ void FUN_020697D4(struct BoxPokemon * boxmon, u16 move, u8 slot) u8 pp; SetBoxMonData(boxmon, MON_DATA_MOVE1 + slot, &move); - ppUp = GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + slot, NULL); - pp = FUN_0206AB30(move, ppUp); + ppUp = (u8)GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + slot, NULL); + pp = (u8)FUN_0206AB30(move, ppUp); SetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot, &pp); } @@ -2892,10 +2892,10 @@ u32 FUN_02069818(struct Pokemon * pokemon, u32 * r5, u16 * sp0) { u32 ret = 0; u16 * wotbl = AllocFromHeap(0, 22 * sizeof(u16)); - u16 species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); + u16 species = (u16)GetMonData(pokemon, MON_DATA_SPECIES, NULL); u32 forme = GetMonData(pokemon, MON_DATA_FORME, NULL); - u8 level = GetMonData(pokemon, MON_DATA_LEVEL, NULL); - LoadWotbl_HandleAlternateForme(species, forme, wotbl); + u8 level = (u8)GetMonData(pokemon, MON_DATA_LEVEL, NULL); + LoadWotbl_HandleAlternateForme(species, (int)forme, wotbl); if (wotbl[*r5] == 0xFFFF) @@ -2933,12 +2933,12 @@ void FUN_020698E8(struct BoxPokemon * boxmon, int slot1, int slot2) u8 pp[2]; u8 ppUp[2]; - moves[0] = GetBoxMonData(boxmon, MON_DATA_MOVE1 + slot1, NULL); - pp[0] = GetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot1, NULL); - ppUp[0] = GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + slot1, NULL); - moves[1] = GetBoxMonData(boxmon, MON_DATA_MOVE1 + slot2, NULL); - pp[1] = GetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot2, NULL); - ppUp[1] = GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + slot2, NULL); + moves[0] = (u16)GetBoxMonData(boxmon, MON_DATA_MOVE1 + slot1, NULL); + pp[0] = (u8)GetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot1, NULL); + ppUp[0] = (u8)GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + slot1, NULL); + moves[1] = (u16)GetBoxMonData(boxmon, MON_DATA_MOVE1 + slot2, NULL); + pp[1] = (u8)GetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot2, NULL); + ppUp[1] = (u8)GetBoxMonData(boxmon, MON_DATA_MOVE1PPUP + slot2, NULL); SetBoxMonData(boxmon, MON_DATA_MOVE1 + slot1, &moves[1]); SetBoxMonData(boxmon, MON_DATA_MOVE1PP + slot1, &pp[1]); @@ -2955,12 +2955,12 @@ void FUN_020699A4(struct Pokemon * pokemon, u32 slot) u8 ppUp; for (; slot < 3; slot++) { - move = GetMonData(pokemon, MON_DATA_MOVE1 + slot + 1, NULL); - pp = GetMonData(pokemon, MON_DATA_MOVE1PP + slot + 1, NULL); - ppUp = GetMonData(pokemon, MON_DATA_MOVE1PPUP + slot + 1, NULL); - SetMonData(pokemon, MON_DATA_MOVE1 + slot, &move); - SetMonData(pokemon, MON_DATA_MOVE1PP + slot, &pp); - SetMonData(pokemon, MON_DATA_MOVE1PPUP + slot, &ppUp); + move = (u16)GetMonData(pokemon, (int)(MON_DATA_MOVE1 + slot + 1), NULL); + pp = (u8)GetMonData(pokemon, (int)(MON_DATA_MOVE1PP + slot + 1), NULL); + ppUp = (u8)GetMonData(pokemon, (int)(MON_DATA_MOVE1PPUP + slot + 1), NULL); + SetMonData(pokemon, (int)(MON_DATA_MOVE1 + slot), &move); + SetMonData(pokemon, (int)(MON_DATA_MOVE1PP + slot), &pp); + SetMonData(pokemon, (int)(MON_DATA_MOVE1PPUP + slot), &ppUp); } move = MOVE_NONE; pp = 0; @@ -3016,7 +3016,7 @@ u8 FUN_02069AEC(struct PlayerParty * party) if (GetMonData(pokemon, MON_DATA_SPECIES, NULL) != SPECIES_NONE && !GetMonData(pokemon, MON_DATA_IS_EGG, NULL)) { - level = GetMonData(pokemon, MON_DATA_LEVEL, NULL); + level = (u8)GetMonData(pokemon, MON_DATA_LEVEL, NULL); if (level > ret) ret = level; } @@ -3074,7 +3074,7 @@ int FUN_02069BFC(u16 species, u32 forme, u16 * dest) { int i; u16 * wotbl = AllocFromHeap(0, 22 * sizeof(u16)); - LoadWotbl_HandleAlternateForme(species, forme, wotbl); + LoadWotbl_HandleAlternateForme(species, (int)forme, wotbl); for (i = 0; wotbl[i] != WOTBL_END; i++) { dest[i] = WOTBL_MOVE(wotbl[i]); @@ -3099,11 +3099,11 @@ void FUN_02069C4C(struct PlayerParty * party) idx = rand_LC() % count; pokemon = GetPartyMonByIndex(party, idx); } while (GetMonData(pokemon, MON_DATA_SPECIES, NULL) == SPECIES_NONE || GetMonData(pokemon, MON_DATA_IS_EGG, NULL)); - if (!FUN_02069CF4(party, MaskOfFlagNo(idx))) + if (!FUN_02069CF4(party, (u8)MaskOfFlagNo(idx))) { do { - sp0 = rand_LC(); + sp0 = (u8)rand_LC(); } while (!(sp0 & 7)); if (sp0 & 0xF0) sp0 &= 7; @@ -3157,7 +3157,7 @@ void FUN_02069D50(struct PlayerParty * party, int r5) pokemon = GetPartyMonByIndex(party, i); if (GetMonData(pokemon, MON_DATA_SPECIES, NULL) != SPECIES_NONE) { - pokerus = GetMonData(pokemon, MON_DATA_POKERUS, NULL); + pokerus = (u8)GetMonData(pokemon, MON_DATA_POKERUS, NULL); if (pokerus & 0xF) { if ((pokerus & 0xF) < r5 || r5 > 4) @@ -3185,7 +3185,7 @@ void FUN_02069DC8(struct PlayerParty * party) pokemon = GetPartyMonByIndex(party, i); if (GetMonData(pokemon, MON_DATA_SPECIES, NULL) != SPECIES_NONE) { - pokerus = GetMonData(pokemon, MON_DATA_POKERUS, NULL); + pokerus = (u8)GetMonData(pokemon, MON_DATA_POKERUS, NULL); if (pokerus & 0xF) { if (i != 0) @@ -3226,7 +3226,7 @@ BOOL FUN_02069E94(struct Pokemon * pokemon) BOOL FUN_02069E9C(struct BoxPokemon * boxmon) { - u8 pokerus = GetBoxMonData(boxmon, MON_DATA_POKERUS, NULL); + u8 pokerus = (u8)GetBoxMonData(boxmon, MON_DATA_POKERUS, NULL); if (pokerus & 0xF) return FALSE; if (pokerus & 0xF0) @@ -3247,7 +3247,7 @@ void FUN_02069ECC(struct BoxPokemon * boxmon) u32 forme; if (species == SPECIES_ARCEUS && ability == ABILITY_MULTITYPE) { - forme = GetArceusTypeByHeldItemEffect(FUN_0206E7B8(heldItem, 1, 0)); + forme = GetArceusTypeByHeldItemEffect((u16)FUN_0206E7B8((u16)heldItem, 1, 0)); SetBoxMonData(boxmon, MON_DATA_FORME, &forme); } } @@ -3302,21 +3302,21 @@ void FUN_02069FB0(u32 r7, u32 r5, u32 r4, u32 r6, u32 sp18, u32 sp1C, u32 sp20) { if (r4 == SPECIES_CHATOT) { - if (!FUN_02005F14(r5)) + if (!FUN_02005F14((int)r5)) { FUN_02005E80(1); - FUN_020056AC(r5, r4, r6, sp18, sp20); + FUN_020056AC((int)r5, (int)r4, (int)r6, (int)sp18, (int)sp20); } else { if (sp1C) FUN_02005E80(1); - FUN_02005E90(r7, 0, sp18, r6); + FUN_02005E90((int)r7, 0, (int)sp18, (int)r6); } } else { - FUN_020056AC(r5, r4, r6, sp18, sp20); + FUN_020056AC((int)r5, (int)r4, (int)r6, (int)sp18, (int)sp20); } } @@ -3335,7 +3335,7 @@ void FUN_0206A014(struct Pokemon * pokemon, u32 a1, u32 pokeball, u32 a3, u32 en void FUN_0206A054(struct BoxPokemon * boxmon, u32 a1, u32 pokeball, u32 a3, u32 encounterType, u32 a5) { - FUN_020808AC(boxmon, a1, 0, a3, a5); + FUN_020808AC(boxmon, (int)a1, 0, (int)a3, (int)a5); SetBoxMonData(boxmon, MON_DATA_GAME_VERSION, (void *)&gGameVersion); SetBoxMonData(boxmon, MON_DATA_POKEBALL, &pokeball); SetBoxMonData(boxmon, MON_DATA_ENCOUNTER_TYPE, &encounterType); @@ -3349,11 +3349,11 @@ void FUN_0206A094(struct Pokemon * pokemon, u32 a1, u32 a2) u16 item1; u16 item2; if (!(a1 & 0x81)) { - chance = rand_LC() % 100; - species = GetMonData(pokemon, MON_DATA_SPECIES, 0); - forme = GetMonData(pokemon, MON_DATA_FORME, 0); - item1 = GetMonBaseStat_HandleFormeConversion(species, forme, BASE_ITEM_1); - item2 = GetMonBaseStat_HandleFormeConversion(species, forme, BASE_ITEM_2); + chance = (u32)(rand_LC() % 100); + species = (u16)GetMonData(pokemon, MON_DATA_SPECIES, 0); + forme = (u16)GetMonData(pokemon, MON_DATA_FORME, 0); + item1 = (u16)GetMonBaseStat_HandleFormeConversion(species, forme, BASE_ITEM_1); + item2 = (u16)GetMonBaseStat_HandleFormeConversion(species, forme, BASE_ITEM_2); if (item1 == item2 && item1 != ITEM_NONE) { SetMonData(pokemon, MON_DATA_HELD_ITEM, &item1); @@ -3382,8 +3382,8 @@ BOOL FUN_0206A13C(struct Pokemon * pokemon, u32 a1) BOOL FUN_0206A144(struct BoxPokemon * boxmon, u32 a1) { - u16 species = GetBoxMonData(boxmon, MON_DATA_SPECIES2, NULL); - int forme = GetBoxMonData(boxmon, MON_DATA_FORME, NULL); + u16 species = (u16)GetBoxMonData(boxmon, MON_DATA_SPECIES2, NULL); + int forme = (int)GetBoxMonData(boxmon, MON_DATA_FORME, NULL); return FUN_0206A16C(species, forme, a1); } @@ -3395,22 +3395,22 @@ BOOL FUN_0206A16C(u16 species, int forme, u32 a2) return FALSE; if (a2 < 32) { - r4 = 1 << a2; + r4 = 1ul << a2; r2 = BASE_UNKNOWN_29; } else if (a2 < 64) { - r4 = 1 << (a2 - 32); + r4 = 1ul << (a2 - 32); r2 = BASE_UNKNOWN_30; } else if (a2 < 96) { - r4 = 1 << (a2 - 64); + r4 = 1ul << (a2 - 64); r2 = BASE_UNKNOWN_31; } else { - r4 = 1 << (a2 - 96); + r4 = 1ul << (a2 - 96); r2 = BASE_UNKNOWN_32; } return !!(GetMonBaseStat_HandleFormeConversion(species, forme, r2) & r4); @@ -3424,10 +3424,10 @@ void FUN_0206A1C4(struct Pokemon * pokemon) void FUN_0206A1CC(struct BoxPokemon * boxmon) { BOOL decry = AcquireBoxMonLock(boxmon); - int species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); - int pid = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL); - int ability1 = GetMonBaseStat(species, BASE_ABILITY_1); - int ability2 = GetMonBaseStat(species, BASE_ABILITY_2); + int species = (int)GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + int pid = (int)GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL); + int ability1 = (int)GetMonBaseStat(species, BASE_ABILITY_1); + int ability2 = (int)GetMonBaseStat(species, BASE_ABILITY_2); if (ability2 != ABILITY_NONE) { @@ -3509,7 +3509,7 @@ void MonDecryptSegment(u16 * data, u32 size, u32 seed) { u16 MonEncryptionLCRNG(u32 * seed) { *seed = *seed * 1103515245 + 24691; - return *seed >> 16; + return (u16)(*seed >> 16); } u16 CalcMonChecksum(u16 * data, u32 size) @@ -3671,7 +3671,7 @@ u16 GetLegendaryMon(u32 idx) BOOL FUN_0206A998(struct Pokemon * pokemon) { - u16 species = GetMonData(pokemon, MON_DATA_SPECIES, NULL); + u16 species = (u16)GetMonData(pokemon, MON_DATA_SPECIES, NULL); return IsPokemonLegendaryOrMythical(species); } @@ -3733,7 +3733,7 @@ void FUN_0206AAB4(struct BoxPokemon * boxmon) { if (GetBoxMonData(boxmon, MON_DATA_MOVE1 + i, NULL) != MOVE_NONE) { - pp = GetBoxMonData(boxmon, MON_DATA_MOVE1MAXPP + i, NULL); + pp = (u8)GetBoxMonData(boxmon, MON_DATA_MOVE1MAXPP + i, NULL); SetBoxMonData(boxmon, MON_DATA_MOVE1PP + i, &pp); } } diff --git a/include/constants/global.h b/include/constants/global.h new file mode 100644 index 00000000..28d4b206 --- /dev/null +++ b/include/constants/global.h @@ -0,0 +1,7 @@ +#ifndef POKEDIAMOND_CONSTANTS_GLOBAL_H +#define POKEDIAMOND_CONSTANTS_GLOBAL_H + +#define POKEMON_NAME_LENGTH 10 +#define OT_NAME_LENGTH 7 + +#endif //POKEDIAMOND_CONSTANTS_GLOBAL_H diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 41ae10fe..9accbad1 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -272,9 +272,6 @@ #define MON_RATIO_FEMALE 254 #define MON_RATIO_UNKNOWN 255 -#define POKEMON_NAME_LENGTH 10 -#define OT_NAME_LENGTH 7 - enum MonGender { MON_MALE = 0, diff --git a/include/global.h b/include/global.h index 67744d42..2574c437 100644 --- a/include/global.h +++ b/include/global.h @@ -4,6 +4,7 @@ #include "config.h" #include "function_target.h" #include "nitro.h" +#include "constants/global.h" #define NELEMS(a) (sizeof(a) / sizeof(*(a))) diff --git a/include/pokemon.h b/include/pokemon.h index 7b990263..8e2eec3d 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -8,6 +8,8 @@ #include "constants/species.h" #include "seals.h" #include "constants/pokemon.h" +#include "string16.h" +#include "save_block_2.h" struct BaseStats { /* 0x00 */ u8 hp; @@ -180,6 +182,8 @@ struct Pokemon { /* 0x088 */ struct PartyPokemon party; }; // size: 0xEC +#include "party.h" + struct SomeDrawPokemonStruct { u16 unk0; @@ -276,5 +280,54 @@ u8 FUN_02068E1C(struct BoxPokemon * boxmon, u32 a1); u8 FUN_02068E88(int species, u8 gender, u32 a2, u8 forme, u32 pid); u32 GetArceusTypeByHeldItemEffect(u16 plate); int FUN_0206AA30(int a0); +void FUN_02068B68(struct SomeDrawPokemonStruct * spC, struct Pokemon * pokemon, u8 sp10); +void FUN_02068FE0(struct SomeDrawPokemonStruct * a0, u16 a1, int a2); +void FUN_02069010(void * dest, int a1); +void FUN_02069038(u32 a0, u32 a1, u32 a2, s32 a3, u32 a4, u32 a5, u32 a6); +void FUN_020690AC(struct SomeDrawPokemonStruct * a0, u32 a1); +u32 FUN_020690C4(void); +u32 FUN_020690C8(void); +u8 FUN_020690CC(struct Pokemon * pokemon); +struct BoxPokemon * FUN_020690E4(struct Pokemon * pokemon); +u16 GetMonEvolution(struct PlayerParty * party, struct Pokemon * pokemon, u32 context, u32 usedItem, u32 * method_ret); +u16 ReadFromPersonalPmsNarc(u16 species); +u16 GetEggSpecies(u16 species); +BOOL FUN_020690E8(struct Pokemon * pokemon); +u32 FUN_02069698(struct Pokemon * pokemon, u16 move); +void FUN_02069708(struct Pokemon * pokemon, u16 move); +void FUN_02069718(struct BoxPokemon * boxmon, u16 move); +void FUN_020697CC(struct Pokemon * pokemon, u16 move, u8 slot); +u32 FUN_02069818(struct Pokemon * pokemon, u32 * r5, u16 * sp0); +void FUN_020698E0(struct Pokemon * pokemon, int slot1, int slot2); +void FUN_020698E8(struct BoxPokemon * boxmon, int slot1, int slot2); +void FUN_020699A4(struct Pokemon * pokemon, u32 slot); +void FUN_02069A64(struct BoxPokemon * src, struct Pokemon * dest); +u8 FUN_02069AEC(struct PlayerParty * party); +u16 FUN_02069B40(u16 species); +u16 FUN_02069B60(u16 sinnoh_dex); +void FUN_02069B88(struct Pokemon * src, struct Pokemon * dest); +void FUN_02069BA0(struct Pokemon * src, struct BoxPokemon * dest); +void FUN_02069BB4(struct BoxPokemon * src, struct BoxPokemon * dest); +s8 FUN_02069BC8(struct Pokemon * pokemon, int flavor); +int FUN_02069BFC(u16 species, u32 forme, u16 * dest); +void FUN_02069C4C(struct PlayerParty * party); +void FUN_02069D50(struct PlayerParty * party, int r5); +void FUN_02069DC8(struct PlayerParty * party); +BOOL FUN_02069E74(struct Pokemon * pokemon); +BOOL FUN_02069E94(struct Pokemon * pokemon); +void FUN_02069EC4(struct Pokemon * pokemon); +void FUN_02069FB0(u32 r7, u32 r5, u32 r4, u32 r6, u32 sp18, u32 sp1C, u32 sp20); +void FUN_0206A014(struct Pokemon * pokemon, u32 a1, u32 pokeball, u32 a3, u32 encounterType, u32 a5); +void FUN_0206A094(struct Pokemon * pokemon, u32 a1, u32 a2); +BOOL FUN_0206A13C(struct Pokemon * pokemon, u32 a1); +void FUN_0206A1C4(struct Pokemon * pokemon); +void FUN_0206A23C(struct Pokemon * r5, u32 personality); +int LowestFlagNo(u32 mask); +BOOL IsPokemonLegendaryOrMythical(u16 species); +u16 GetLegendaryMon(u32 idx); +BOOL FUN_0206A998(struct Pokemon * pokemon); +BOOL FUN_0206A9AC(struct BoxPokemon * boxmon, struct SaveBlock2 * sb2, u32 heap_id); +void FUN_0206AA84(struct Pokemon * pokemon); +void FUN_0206AAB4(struct BoxPokemon * boxmon); #endif //POKEDIAMOND_POKEMON_H diff --git a/include/proto.h b/include/proto.h index 24ddff07..6f022d90 100644 --- a/include/proto.h +++ b/include/proto.h @@ -3,19 +3,7 @@ // For homeless function declarations -// Declare these here so that we don't have to include pokemon.h -struct UnkStruct_02069038; -struct PlayerParty; -struct BoxPokemon; -struct SaveBlock2; -struct String -{ - u16 len; - u16 pos; - u32 magic; - u16 unk8; - u16 data[0]; -}; +#include "pokemon.h" // for struct definitions u16 * FUN_0200AA50(u16 species, u32 heap_id); void FUN_02021A74(u16 * dest, u16 * src); @@ -32,11 +20,4 @@ void FUN_02005E90(int, int, int, int); void FUN_020056AC(int, int, int, int, int); void FUN_020808AC(struct BoxPokemon *, int, int, int, int); -struct String * FUN_020239A0(struct SaveBlock2 *, u32 heap_id); -u32 FUN_020239BC(struct SaveBlock2 *); -u32 FUN_020239CC(struct SaveBlock2 *); -struct String * FUN_020219F4(u32 count, u32 heap_id); -int FUN_02021CE0(struct String *, struct String *); -int FUN_0206AE00(int x); - #endif //POKEDIAMOND_PROTO_H diff --git a/include/save_block_2.h b/include/save_block_2.h new file mode 100644 index 00000000..38e11de4 --- /dev/null +++ b/include/save_block_2.h @@ -0,0 +1,18 @@ +#ifndef POKEDIAMOND_SAVE_BLOCK_2_H +#define POKEDIAMOND_SAVE_BLOCK_2_H + +struct SaveBlock2 +{ + u16 playerName[OT_NAME_LENGTH + 1]; + u32 playerId; + u8 filler_14[4]; + u8 gender; + u8 padding[3]; + // TODO: finish this struct +}; + +struct String * FUN_020239A0(struct SaveBlock2 *, u32 heap_id); +u32 FUN_020239BC(struct SaveBlock2 *); +u32 FUN_020239CC(struct SaveBlock2 *); + +#endif //POKEDIAMOND_SAVE_BLOCK_2_H diff --git a/include/string16.h b/include/string16.h new file mode 100644 index 00000000..7092c641 --- /dev/null +++ b/include/string16.h @@ -0,0 +1,17 @@ +#ifndef POKEDIAMOND_STRING16_H +#define POKEDIAMOND_STRING16_H + +struct String +{ + u16 len; + u16 pos; + u32 magic; + u16 unk8; + u16 data[1]; +}; + +struct String * FUN_020219F4(u32 count, u32 heap_id); +int FUN_02021CE0(struct String *, struct String *); +int FUN_0206AE00(int x); + +#endif //POKEDIAMOND_STRING16_H -- cgit v1.2.3