diff options
Diffstat (limited to 'arm9')
58 files changed, 1956 insertions, 2241 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 29b8e407..274f2ccd 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -104,7 +104,7 @@ Static arm9 Object unk_02028980.o Object unk_02029A84.o Object unk_02029AE0.o - Object unk_02029C58.o + Object seal_case.o Object unk_02029CEC.o Object igt.o Object unk_02029EC4.o @@ -246,9 +246,11 @@ Static arm9 Object unk_02064E90.o Object unk_020653EC.o Object unk_02066840.o + + ##poketool## Object pokemon.o Object waza.o - Object unk_0206ABC4.o + Object trainer_data.o Object pokemon_storage_system.o Object unk_0206B688.o Object party.o @@ -259,6 +261,8 @@ Static arm9 Object unk_0206DE24.o Object unk_0206E0F0.o Object unk_0206E2F0.o + + ##itemtool## Object itemtool.o Object bag.o Object unk_0206F1F0.o diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s index b874b757..2f0cb3ef 100644 --- a/arm9/asm/scrcmd.s +++ b/arm9/asm/scrcmd.s @@ -3863,7 +3863,7 @@ FUN_0203B7F0: ; 0x0203B7F0 add r4, r0, #0x0 ldr r0, [r5, #0x0] ldr r0, [r0, #0xc] - bl FUN_02029C80 + bl Sav2_SealCase_get bl FUN_02029E0C strh r0, [r4, #0x0] mov r0, #0x0 @@ -3892,7 +3892,7 @@ FUN_0203B81C: ; 0x0203B81C add r4, r0, #0x0 ldr r0, [r5, #0x0] ldr r0, [r0, #0xc] - bl FUN_02029C80 + bl Sav2_SealCase_get add r1, r6, #0x0 bl FUN_02029E2C strh r0, [r4, #0x0] @@ -3921,7 +3921,7 @@ FUN_0203B85C: ; 0x0203B85C add r4, r0, #0x0 ldr r0, [r5, #0x0] ldr r0, [r0, #0xc] - bl FUN_02029C80 + bl Sav2_SealCase_get lsl r2, r4, #0x10 add r1, r6, #0x0 asr r2, r2, #0x10 @@ -6376,7 +6376,7 @@ FUN_0203CBE8: ; 0x0203CBE8 ldr r0, [sp, #0x0] ldr r2, [r6, #0x0] mov r3, #0xb - bl FUN_0206AD4C + bl GetTrainerMessageByIdPair add r0, r4, #0x0 mov r1, #0x1 bl FUN_02039438 diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s index 137140a8..cc011b0f 100644 --- a/arm9/asm/scrcmd_12.s +++ b/arm9/asm/scrcmd_12.s @@ -625,7 +625,7 @@ _020431D4: add r7, r0, #0x0 add r0, r4, #0x0 add r1, r7, #0x0 - bl FUN_02069B88 + bl CopyPokemonToPokemon add r0, r7, #0x0 mov r1, #0x90 add r2, r5, #0x0 @@ -985,7 +985,7 @@ FUN_020434B0: ; 0x020434B0 b _020434E2 _020434CA: ldr r0, [r5, #0xc] - bl FUN_02029C80 + bl Sav2_SealCase_get add r1, r4, #0x0 mov r2, #0x1 bl FUN_02029DD4 @@ -1017,7 +1017,7 @@ FUN_020434E8: ; 0x020434E8 pop {r3-r5, pc} _02043502: ldr r0, [r5, #0xc] - bl FUN_02029C80 + bl Sav2_SealCase_get add r1, r4, #0x0 mov r2, #0x1 bl FUN_02029D44 diff --git a/arm9/asm/scrcmd_4.s b/arm9/asm/scrcmd_4.s index 14d6ef99..3bad9d50 100644 --- a/arm9/asm/scrcmd_4.s +++ b/arm9/asm/scrcmd_4.s @@ -1308,6 +1308,6 @@ FUN_02041174: ; 0x02041174 str r1, [r4, #0x8] ldrb r1, [r2, #0x0] ldr r0, [r0, #0x0] - bl FUN_0200B7A8 + bl ScrStrBufs_UpperFirstChar mov r0, #0x0 pop {r4, pc} diff --git a/arm9/asm/scrcmd_8.s b/arm9/asm/scrcmd_8.s index 84b2eb30..fbb5b223 100644 --- a/arm9/asm/scrcmd_8.s +++ b/arm9/asm/scrcmd_8.s @@ -110,7 +110,7 @@ _02041CF2: ldr r0, [r6, #0x0] add r1, r7, #0x0 add r2, r5, #0x0 - bl FUN_0200B708 + bl BufferEasyChatWord b _02041E38 _02041D28: add r0, r4, #0x0 @@ -133,7 +133,7 @@ _02041D28: ldr r0, [r6, #0x0] add r1, r7, #0x0 add r2, r5, #0x0 - bl FUN_0200B708 + bl BufferEasyChatWord b _02041E38 _02041D5E: mov r1, #0x0 diff --git a/arm9/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s index a84fda87..604c7211 100644 --- a/arm9/asm/unk_020023C0.s +++ b/arm9/asm/unk_020023C0.s @@ -180,7 +180,7 @@ _020024DA: beq _0200251A b _02002700 _020024E4: - add r0, r0, #0x1 + add r0, r0, #0x1 ; =0x0000FFFF EOS cmp r5, r0 beq _020024EC b _02002700 diff --git a/arm9/asm/unk_02006D98.s b/arm9/asm/unk_02006D98.s index 8bcac588..0e1ff930 100644 --- a/arm9/asm/unk_02006D98.s +++ b/arm9/asm/unk_02006D98.s @@ -150,7 +150,7 @@ _02006E12: strb r0, [r4, r2] sub r2, #0x4b ldr r2, [r4, r2] - mov r0, #0x75 + mov r0, #0x75 ; NARC_POKETOOL_POKEGRA_OTHERPOKE mov r1, #0xd3 bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0xc @@ -3641,7 +3641,7 @@ _0200874A: mov r2, #0xa6 lsl r2, r2, #0x2 ldr r2, [r5, r2] - mov r0, #0x75 + mov r0, #0x75 ; NARC_POKETOOL_POKEGRA_OTHERPOKE mov r1, #0xd4 bl AllocAndReadWholeNarcMemberByIdPair add r1, sp, #0x18 diff --git a/arm9/asm/unk_0200CABC.s b/arm9/asm/unk_0200CABC.s index bfab698c..70ccee6d 100644 --- a/arm9/asm/unk_0200CABC.s +++ b/arm9/asm/unk_0200CABC.s @@ -1078,7 +1078,7 @@ FUN_0200D300: ; 0x0200D300 add r3, r6, #0x0 str r4, [sp, #0xc] bl FUN_0200687C - mov r0, #0x24 + mov r0, #0x24 ; NARC_GRAPHIC_FIELD_BOARD mov r1, #0x1 add r2, r4, #0x0 bl AllocAndReadWholeNarcMemberByIdPair diff --git a/arm9/asm/unk_02021FF8.s b/arm9/asm/unk_02021FF8.s deleted file mode 100644 index 0609835c..00000000 --- a/arm9/asm/unk_02021FF8.s +++ /dev/null @@ -1,309 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020EE6CC -UNK_020EE6CC: ; 0x020EE6CC - .word FUN_020221EC - .word FUN_02022208 - - .text - - thumb_func_start FUN_02022030 -FUN_02022030: ; 0x02022030 - ldrh r1, [r0, #0x2] - cmp r1, #0x0 - beq _02022044 - ldrh r1, [r0, #0x8] - mov r0, #0xf1 - lsl r0, r0, #0x8 - cmp r1, r0 - bne _02022044 - mov r0, #0x1 - bx lr -_02022044: - mov r0, #0x0 - bx lr - - thumb_func_start FUN_02022048 -FUN_02022048: ; 0x02022048 - push {r3-r7, lr} - add r4, r1, #0x0 - str r0, [sp, #0x0] - add r0, r4, #0x0 - bl FUN_02022030 - cmp r0, #0x0 - beq _020220B2 - ldr r0, [sp, #0x0] - ldr r1, [sp, #0x0] - ldrh r0, [r0, #0x2] - add r1, #0x8 - ldr r7, _020220BC ; =0x000001FF - lsl r0, r0, #0x1 - add r3, r1, r0 - mov r0, #0x0 - add r4, #0xa - add r1, r0, #0x0 -_0202206C: - ldrh r2, [r4, #0x0] - asr r2, r0 - and r2, r7 - lsl r2, r2, #0x10 - add r0, #0x9 - lsr r2, r2, #0x10 - cmp r0, #0xf - blt _02022094 - add r4, r4, #0x2 - sub r0, #0xf - beq _02022094 - ldrh r6, [r4, #0x0] - mov r5, #0x9 - sub r5, r5, r0 - lsl r6, r5 - ldr r5, _020220BC ; =0x000001FF - and r5, r6 - orr r2, r5 - lsl r2, r2, #0x10 - lsr r2, r2, #0x10 -_02022094: - ldr r5, _020220BC ; =0x000001FF - cmp r2, r5 - beq _020220A2 - strh r2, [r3, #0x0] - add r3, r3, #0x2 - add r1, r1, #0x1 - b _0202206C -_020220A2: - ldr r0, _020220C0 ; =0x0000FFFF - strh r0, [r3, #0x0] - ldr r0, [sp, #0x0] - ldrh r0, [r0, #0x2] - add r1, r0, r1 - ldr r0, [sp, #0x0] - strh r1, [r0, #0x2] - pop {r3-r7, pc} -_020220B2: - ldr r0, [sp, #0x0] - add r1, r4, #0x0 - bl StringCat - pop {r3-r7, pc} - .balign 4 -_020220BC: .word 0x000001FF -_020220C0: .word 0x0000FFFF - - thumb_func_start FUN_020220C4 -FUN_020220C4: ; 0x020220C4 - push {r3-r7, lr} - add r7, r1, #0x0 - add r5, r0, #0x0 - add r6, r2, #0x0 - str r3, [sp, #0x0] - cmp r7, #0x0 - bne _020220D6 - bl ErrorHandling -_020220D6: - ldr r0, [sp, #0x18] - mov r1, #0x14 - bl AllocFromHeap - add r4, r0, #0x0 - beq _0202211C - str r5, [r4, #0x0] - str r7, [r4, #0x4] - ldr r0, [sp, #0x0] - str r6, [r4, #0x8] - str r0, [r4, #0xc] - ldr r0, [sp, #0x18] - lsl r1, r7, #0x2 - bl AllocFromHeap - str r0, [r4, #0x10] - cmp r0, #0x0 - beq _02022114 - mov r6, #0x0 - cmp r7, #0x0 - bls _0202211C - add r5, r6, #0x0 -_02022102: - ldr r0, [r4, #0x10] - add r0, r0, r5 - bl FUN_02022120 - add r6, r6, #0x1 - add r5, r5, #0x4 - cmp r6, r7 - blo _02022102 - b _0202211C -_02022114: - add r0, r4, #0x0 - bl FreeToHeap - mov r4, #0x0 -_0202211C: - add r0, r4, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02022120 -FUN_02022120: ; 0x02022120 - mov r1, #0x0 - strb r1, [r0, #0x0] - strb r1, [r0, #0x1] - strh r1, [r0, #0x2] - bx lr - .balign 4 - - thumb_func_start FUN_0202212C -FUN_0202212C: ; 0x0202212C - push {r4, lr} - add r4, r0, #0x0 - bne _02022136 - bl ErrorHandling -_02022136: - ldr r0, [r4, #0x10] - bl FreeToHeap - add r0, r4, #0x0 - bl FreeToHeap - pop {r4, pc} - - thumb_func_start FUN_02022144 -FUN_02022144: ; 0x02022144 - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - bl FUN_02020A98 - str r0, [sp, #0x0] - cmp r0, #0x0 - beq _02022190 - bl FUN_02020AA4 - str r0, [sp, #0x4] - ldr r0, [r5, #0x4] - mov r6, #0x0 - cmp r0, #0x0 - bls _020221AE - add r4, r6, #0x0 -_02022164: - ldr r0, [r5, #0x10] - add r0, r0, r4 - ldrb r0, [r0, #0x1] - cmp r0, #0x0 - ldr r0, [r5, #0x0] - beq _02022178 - add r0, r0, r4 - bl FUN_02020A40 - b _0202217E -_02022178: - add r0, r0, r4 - bl FUN_02020A6C -_0202217E: - ldr r1, [r5, #0x10] - add r6, r6, #0x1 - add r1, r1, r4 - strb r0, [r1, #0x1] - ldr r0, [r5, #0x4] - add r4, r4, #0x4 - cmp r6, r0 - blo _02022164 - b _020221AE -_02022190: - ldr r0, [r5, #0x4] - mov r3, #0x0 - str r3, [sp, #0x4] - cmp r0, #0x0 - bls _020221AE - add r2, r3, #0x0 - add r1, r3, #0x0 -_0202219E: - ldr r0, [r5, #0x10] - add r3, r3, #0x1 - add r0, r0, r2 - strb r1, [r0, #0x1] - ldr r0, [r5, #0x4] - add r2, r2, #0x4 - cmp r3, r0 - blo _0202219E -_020221AE: - mov r4, #0x0 - cmp r0, #0x0 - bls _020221E4 - add r7, r4, #0x0 -_020221B6: - ldr r3, [r5, #0x10] - ldr r1, [sp, #0x0] - add r0, r3, r7 - ldrb r3, [r3, r7] - ldr r2, [sp, #0x4] - lsl r6, r3, #0x2 - ldr r3, _020221E8 ; =UNK_020EE6CC - ldr r3, [r3, r6] - blx r3 - add r1, r0, #0x0 - mov r0, #0x0 - mvn r0, r0 - cmp r1, r0 - beq _020221DA - ldr r2, [r5, #0xc] - ldr r3, [r5, #0x8] - add r0, r4, #0x0 - blx r3 -_020221DA: - ldr r0, [r5, #0x4] - add r4, r4, #0x1 - add r7, r7, #0x4 - cmp r4, r0 - blo _020221B6 -_020221E4: - add sp, #0x8 - pop {r3-r7, pc} - .balign 4 -_020221E8: .word UNK_020EE6CC - - thumb_func_start FUN_020221EC -FUN_020221EC: ; 0x020221EC - push {r3, lr} - ldrb r1, [r0, #0x1] - cmp r1, #0x0 - beq _02022202 - cmp r2, #0x0 - beq _02022202 - mov r1, #0x1 - bl FUN_0202223C - mov r0, #0x0 - pop {r3, pc} -_02022202: - mov r0, #0x0 - mvn r0, r0 - pop {r3, pc} - - thumb_func_start FUN_02022208 -FUN_02022208: ; 0x02022208 - push {r3, lr} - ldrb r2, [r0, #0x1] - cmp r2, #0x0 - beq _02022220 - ldrh r2, [r0, #0x2] - ldr r1, _02022238 ; =0x0000FFFF - cmp r2, r1 - bhs _0202221C - add r1, r2, #0x1 - strh r1, [r0, #0x2] -_0202221C: - mov r0, #0x2 - pop {r3, pc} -_02022220: - cmp r1, #0x0 - beq _0202222E - mov r1, #0x0 - bl FUN_0202223C - mov r0, #0x3 - pop {r3, pc} -_0202222E: - mov r1, #0x0 - bl FUN_0202223C - mov r0, #0x1 - pop {r3, pc} - .balign 4 -_02022238: .word 0x0000FFFF - - thumb_func_start FUN_0202223C -FUN_0202223C: ; 0x0202223C - strb r1, [r0, #0x0] - mov r1, #0x0 - strh r1, [r0, #0x2] - bx lr diff --git a/arm9/asm/unk_02029C58.s b/arm9/asm/unk_02029C58.s deleted file mode 100644 index bc21a139..00000000 --- a/arm9/asm/unk_02029C58.s +++ /dev/null @@ -1,102 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02029C58 -FUN_02029C58: ; 0x02029C58 - mov r0, #0x17 - lsl r0, r0, #0x4 - bx lr - .balign 4 - - thumb_func_start FUN_02029C60 -FUN_02029C60: ; 0x02029C60 - push {r4, lr} - add r4, r0, #0x0 - bl FUN_02029C58 - add r2, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x0 - bl MI_CpuFill8 - pop {r4, pc} - - thumb_func_start FUN_02029C74 -FUN_02029C74: ; 0x02029C74 - ldr r3, _02029C7C ; =MI_CpuCopy8 - mov r2, #0x18 - bx r3 - nop -_02029C7C: .word MI_CpuCopy8 - - thumb_func_start FUN_02029C80 -FUN_02029C80: ; 0x02029C80 - ldr r3, _02029C88 ; =SavArray_get - mov r1, #0x15 - bx r3 - nop -_02029C88: .word SavArray_get - - thumb_func_start FUN_02029C8C -FUN_02029C8C: ; 0x02029C8C - push {r3-r5, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - cmp r4, #0xc - blt _02029C9A - bl ErrorHandling -_02029C9A: - mov r0, #0x18 - mul r0, r4 - add r0, r5, r0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02029CA4 -FUN_02029CA4: ; 0x02029CA4 - push {r4-r6, lr} - add r6, r2, #0x0 - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r6, #0xc - blt _02029CB4 - bl ErrorHandling -_02029CB4: - add r0, r5, #0x0 - add r1, r6, #0x0 - bl FUN_02029C8C - add r1, r0, #0x0 - add r0, r4, #0x0 - bl FUN_02029C74 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02029CC8 -FUN_02029CC8: ; 0x02029CC8 - push {r3-r5, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - cmp r4, #0x8 - blt _02029CD6 - bl ErrorHandling -_02029CD6: - lsl r0, r4, #0x1 - add r0, r4, r0 - add r0, r5, r0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_02029CE0 -FUN_02029CE0: ; 0x02029CE0 - ldrb r0, [r0, #0x0] - bx lr - - thumb_func_start FUN_02029CE4 -FUN_02029CE4: ; 0x02029CE4 - ldrb r0, [r0, #0x1] - bx lr - - thumb_func_start FUN_02029CE8 -FUN_02029CE8: ; 0x02029CE8 - ldrb r0, [r0, #0x2] - bx lr diff --git a/arm9/asm/unk_0202BE98.s b/arm9/asm/unk_0202BE98.s index 2b1b2f16..37bc1c4e 100644 --- a/arm9/asm/unk_0202BE98.s +++ b/arm9/asm/unk_0202BE98.s @@ -133,10 +133,10 @@ FUN_0202BF7C: ; 0x0202BF7C mov r1, #0xec mul r1, r2 add r1, r3, r1 - ldr r3, _0202BF8C ; =FUN_02069A64 + ldr r3, _0202BF8C ; =CopyBoxPokemonToPokemon bx r3 nop -_0202BF8C: .word FUN_02069A64 +_0202BF8C: .word CopyBoxPokemonToPokemon thumb_func_start FUN_0202BF90 FUN_0202BF90: ; 0x0202BF90 diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s index d0d60821..e7d630f6 100644 --- a/arm9/asm/unk_020377F0.s +++ b/arm9/asm/unk_020377F0.s @@ -1687,7 +1687,7 @@ _02038386: bl GetPartyMonByIndex add r1, r0, #0x0 ldr r0, [r4, #0x44] - bl FUN_02069B88 + bl CopyPokemonToPokemon ldr r0, [r4, #0x60] bl FUN_0206C92C mov r0, #0x1a diff --git a/arm9/asm/unk_0204653C.s b/arm9/asm/unk_0204653C.s index b74847fc..4309494e 100644 --- a/arm9/asm/unk_0204653C.s +++ b/arm9/asm/unk_0204653C.s @@ -1482,7 +1482,7 @@ _0204711A: ldr r1, [r7, #0xc] ldr r2, [sp, #0x20] add r0, r4, #0x0 - bl FUN_0206ABC4 + bl EnemyTrainerSet_Init ldr r0, [r7, #0xc] bl FUN_02029FC8 mov r1, #0x8 diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s index 374ab418..568c4b5d 100644 --- a/arm9/asm/unk_020476CC.s +++ b/arm9/asm/unk_020476CC.s @@ -663,7 +663,7 @@ _02047C40: add r1, r4, #0x0 bl GetPartyMonByIndex add r1, r5, #0x0 - bl FUN_02069B88 + bl CopyPokemonToPokemon add r0, r5, #0x0 mov r1, #0xa0 mov r2, #0x0 @@ -858,7 +858,7 @@ _02047DEE: sub r1, r1, #0x1 bl GetPartyMonByIndex ldr r1, [sp, #0x8] - bl FUN_02069B88 + bl CopyPokemonToPokemon ldr r1, [sp, #0x8] add r0, r5, #0x0 mov r2, #0x0 diff --git a/arm9/asm/unk_0204B0A0.s b/arm9/asm/unk_0204B0A0.s index f2e46ab6..a78c13d0 100644 --- a/arm9/asm/unk_0204B0A0.s +++ b/arm9/asm/unk_0204B0A0.s @@ -149,7 +149,7 @@ FUN_0204B1DC: ; 0x0204B1DC ldr r0, [r5, #0xc] bl SavArray_PlayerParty_get add r1, r4, #0x0 - bl FUN_02069D50 + bl Party_UpdatePokerus ldr r0, [r5, #0xc] bl SavArray_Flags_get add r6, r0, #0x0 diff --git a/arm9/asm/unk_02060CCC.s b/arm9/asm/unk_02060CCC.s index 3265d601..44e19c06 100644 --- a/arm9/asm/unk_02060CCC.s +++ b/arm9/asm/unk_02060CCC.s @@ -2783,7 +2783,7 @@ _0206211E: ldr r1, [r1, #0xc] ldr r2, [sp, #0xc] mov r3, #0x0 - bl FUN_0200B708 + bl BufferEasyChatWord mov r0, #0x0 str r0, [sp, #0x0] ldr r1, [sp, #0x4] @@ -2791,7 +2791,7 @@ _0206211E: ldr r1, [r1, #0xc] ldr r2, [sp, #0xc] mov r3, #0x1 - bl FUN_0200B708 + bl BufferEasyChatWord ldr r0, [sp, #0x8] mov r1, #0x2 add r2, r4, #0x0 diff --git a/arm9/asm/unk_0206ABC4.s b/arm9/asm/unk_0206ABC4.s deleted file mode 100644 index b4b3d88e..00000000 --- a/arm9/asm/unk_0206ABC4.s +++ /dev/null @@ -1,749 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020F8010 -UNK_020F8010: ; 0x020F8010 - .byte 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0 - .byte 0, 1, 1, 0, 0, 1, 1, 2, 0, 1, 1, 0, 0, 0, 1, 2 - .byte 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 2 - .byte 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0 - .byte 0, 0, 1, 0, 0, 1, 2, 0, 1, 0, 1, 0, 1, 1, 1, 0 - .byte 1, 0, 2, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0 - .byte 1, 0, 0, 0 - - .text - - thumb_func_start FUN_0206ABC4 -FUN_0206ABC4: ; 0x0206ABC4 - push {r3-r7, lr} - sub sp, #0x48 - str r2, [sp, #0x4] - ldr r2, _0206AC70 ; =0x0000022F - str r0, [sp, #0x0] - add r4, r1, #0x0 - ldr r3, [sp, #0x4] - mov r0, #0x1 - mov r1, #0x1a - bl NewMsgDataFromNarc - str r0, [sp, #0x10] - add r0, r4, #0x0 - bl FUN_02024EC0 - bl FUN_02024EE8 - ldr r4, [sp, #0x0] - str r0, [sp, #0xc] - add r0, r4, #0x0 - add r5, r4, #0x0 - mov r7, #0x0 - str r0, [sp, #0x8] - add r5, #0x3c -_0206ABF4: - ldr r0, [r4, #0x18] - cmp r0, #0x0 - beq _0206AC48 - add r1, sp, #0x14 - bl TrainerData_ReadTrData - ldr r3, [sp, #0x8] - add r6, sp, #0x14 - add r3, #0x28 - mov r2, #0x6 -_0206AC08: - ldmia r6!, {r0-r1} - stmia r3!, {r0-r1} - sub r2, r2, #0x1 - bne _0206AC08 - ldr r0, [r6, #0x0] - str r0, [r3, #0x0] - add r0, sp, #0x14 - ldrb r0, [r0, #0x1] - cmp r0, #0x3f - bne _0206AC26 - ldr r1, [sp, #0xc] - add r0, r5, #0x0 - bl CopyU16StringArray - b _0206AC3E -_0206AC26: - ldr r0, [sp, #0x10] - ldr r1, [r4, #0x18] - bl NewString_ReadMsgData - add r6, r0, #0x0 - add r1, r5, #0x0 - mov r2, #0x8 - bl CopyStringToU16Array - add r0, r6, #0x0 - bl String_dtor -_0206AC3E: - ldr r0, [sp, #0x0] - ldr r2, [sp, #0x4] - add r1, r7, #0x0 - bl LoadTrainerParty -_0206AC48: - ldr r0, [sp, #0x8] - add r7, r7, #0x1 - add r0, #0x34 - add r4, r4, #0x4 - add r5, #0x34 - str r0, [sp, #0x8] - cmp r7, #0x4 - blt _0206ABF4 - ldr r0, [sp, #0x0] - ldr r1, [r0, #0x0] - ldr r0, [sp, #0x24] - orr r1, r0 - ldr r0, [sp, #0x0] - str r1, [r0, #0x0] - ldr r0, [sp, #0x10] - bl DestroyMsgData - add sp, #0x48 - pop {r3-r7, pc} - nop -_0206AC70: .word 0x0000022F - - thumb_func_start TrainerData_GetAttr -TrainerData_GetAttr: ; 0x0206AC74 - push {r4-r5, lr} - sub sp, #0x34 - add r5, r1, #0x0 - add r1, sp, #0x0 - bl TrainerData_ReadTrData - cmp r5, #0x9 - bhi _0206ACCC - add r0, r5, r5 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0206AC90: ; jump table (using 16-bit offset) - .short _0206ACA4 - _0206AC90 - 2; case 0 - .short _0206ACAA - _0206AC90 - 2; case 1 - .short _0206ACB0 - _0206AC90 - 2; case 2 - .short _0206ACB6 - _0206AC90 - 2; case 3 - .short _0206ACBC - _0206AC90 - 2; case 4 - .short _0206ACBC - _0206AC90 - 2; case 5 - .short _0206ACBC - _0206AC90 - 2; case 6 - .short _0206ACBC - _0206AC90 - 2; case 7 - .short _0206ACC6 - _0206AC90 - 2; case 8 - .short _0206ACCA - _0206AC90 - 2; case 9 -_0206ACA4: - add r0, sp, #0x0 - ldrb r4, [r0, #0x0] - b _0206ACCC -_0206ACAA: - add r0, sp, #0x0 - ldrb r4, [r0, #0x1] - b _0206ACCC -_0206ACB0: - add r0, sp, #0x0 - ldrb r4, [r0, #0x2] - b _0206ACCC -_0206ACB6: - add r0, sp, #0x0 - ldrb r4, [r0, #0x3] - b _0206ACCC -_0206ACBC: - sub r0, r5, #0x4 - lsl r1, r0, #0x1 - add r0, sp, #0x4 - ldrh r4, [r0, r1] - b _0206ACCC -_0206ACC6: - ldr r4, [sp, #0xc] - b _0206ACCC -_0206ACCA: - ldr r4, [sp, #0x10] -_0206ACCC: - add r0, r4, #0x0 - add sp, #0x34 - pop {r4-r5, pc} - .balign 4 - - thumb_func_start FUN_0206ACD4 -FUN_0206ACD4: ; 0x0206ACD4 - push {r4-r7, lr} - sub sp, #0x14 - add r5, r0, #0x0 - mov r0, #0x0 - str r0, [sp, #0x4] - add r7, r1, #0x0 - ldr r1, [sp, #0x4] - mov r0, #0x3b - add r4, r2, #0x0 - bl GetNarcMemberSizeByIdPair - add r6, r0, #0x0 - mov r0, #0x2 - str r0, [sp, #0x0] - add r0, sp, #0xc - mov r1, #0x89 - mov r2, #0x0 - lsl r3, r5, #0x1 - bl ReadFromNarcMemberByIdPair - mov r0, #0x3b - add r1, r4, #0x0 - bl NARC_ctor - add r4, sp, #0xc - ldrh r2, [r4, #0x0] - str r0, [sp, #0x8] - cmp r2, r6 - beq _0206AD40 -_0206AD0E: - add r0, sp, #0xc - add r0, #0x2 - str r0, [sp, #0x0] - ldr r0, [sp, #0x8] - mov r1, #0x0 - mov r3, #0x4 - bl NARC_ReadFromMember - ldrh r1, [r4, #0x2] - cmp r1, r5 - bne _0206AD30 - ldrh r0, [r4, #0x4] - cmp r0, r7 - bne _0206AD30 - mov r0, #0x1 - str r0, [sp, #0x4] - b _0206AD40 -_0206AD30: - cmp r1, r5 - bne _0206AD40 - ldrh r0, [r4, #0x0] - add r0, r0, #0x4 - strh r0, [r4, #0x0] - ldrh r2, [r4, #0x0] - cmp r2, r6 - bne _0206AD0E -_0206AD40: - ldr r0, [sp, #0x8] - bl NARC_dtor - ldr r0, [sp, #0x4] - add sp, #0x14 - pop {r4-r7, pc} - - thumb_func_start FUN_0206AD4C -FUN_0206AD4C: ; 0x0206AD4C - push {r3-r7, lr} - sub sp, #0x18 - add r6, r0, #0x0 - add r7, r1, #0x0 - mov r0, #0x3b - mov r1, #0x0 - str r2, [sp, #0x4] - str r3, [sp, #0x8] - bl GetNarcMemberSizeByIdPair - add r5, r0, #0x0 - mov r0, #0x2 - str r0, [sp, #0x0] - add r0, sp, #0x10 - mov r1, #0x89 - mov r2, #0x0 - lsl r3, r6, #0x1 - bl ReadFromNarcMemberByIdPair - ldr r1, [sp, #0x8] - mov r0, #0x3b - bl NARC_ctor - add r4, sp, #0x10 - ldrh r2, [r4, #0x0] - str r0, [sp, #0xc] - cmp r2, r5 - beq _0206ADC2 -_0206AD84: - add r0, sp, #0x10 - add r0, #0x2 - str r0, [sp, #0x0] - ldr r0, [sp, #0xc] - mov r1, #0x0 - mov r3, #0x4 - bl NARC_ReadFromMember - ldrh r0, [r4, #0x2] - cmp r0, r6 - bne _0206ADB6 - ldrh r0, [r4, #0x4] - cmp r0, r7 - bne _0206ADB6 - ldr r0, [sp, #0x4] - add r2, sp, #0x10 - str r0, [sp, #0x0] - ldrh r2, [r2, #0x0] - ldr r1, _0206ADDC ; =0x0000022E - ldr r3, [sp, #0x8] - mov r0, #0x1a - lsr r2, r2, #0x2 - bl ReadMsgData_NewNarc_ExistingString - b _0206ADC2 -_0206ADB6: - ldrh r0, [r4, #0x0] - add r0, r0, #0x4 - strh r0, [r4, #0x0] - ldrh r2, [r4, #0x0] - cmp r2, r5 - bne _0206AD84 -_0206ADC2: - ldr r0, [sp, #0xc] - bl NARC_dtor - add r0, sp, #0x10 - ldrh r0, [r0, #0x0] - cmp r0, r5 - bne _0206ADD6 - ldr r0, [sp, #0x4] - bl StringSetEmpty -_0206ADD6: - add sp, #0x18 - pop {r3-r7, pc} - nop -_0206ADDC: .word 0x0000022E - - thumb_func_start TrainerData_ReadTrData -TrainerData_ReadTrData: ; 0x0206ADE0 - ldr r3, _0206ADEC ; =ReadWholeNarcMemberByIdPair - add r2, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x39 - bx r3 - nop -_0206ADEC: .word ReadWholeNarcMemberByIdPair - - thumb_func_start TrainerData_ReadTrPoke -TrainerData_ReadTrPoke: ; 0x0206ADF0 - ldr r3, _0206ADFC ; =ReadWholeNarcMemberByIdPair - add r2, r0, #0x0 - add r0, r1, #0x0 - mov r1, #0x3a - bx r3 - nop -_0206ADFC: .word ReadWholeNarcMemberByIdPair - - thumb_func_start FUN_0206AE00 -FUN_0206AE00: ; 0x0206AE00 - ldr r1, _0206AE08 ; =UNK_020F8010 - ldrb r0, [r1, r0] - bx lr - nop -_0206AE08: .word UNK_020F8010 - - thumb_func_start LoadTrainerParty -LoadTrainerParty: ; 0x0206AE0C - push {r3-r7, lr} - sub sp, #0x50 - add r7, r1, #0x0 - add r4, r0, #0x0 - add r5, r2, #0x0 - bl GetLCRNGSeed - lsl r6, r7, #0x2 - str r0, [sp, #0x44] - add r0, r4, r6 - ldr r0, [r0, #0x4] - mov r1, #0x6 - bl InitPartyWithMaxSize - add r0, r5, #0x0 - mov r1, #0x60 - bl AllocFromHeap - str r0, [sp, #0x4c] - add r0, r5, #0x0 - bl AllocMonZeroed - str r0, [sp, #0x40] - add r0, r4, r6 - ldr r0, [r0, #0x18] - ldr r1, [sp, #0x4c] - bl TrainerData_ReadTrPoke - mov r0, #0x34 - add r5, r7, #0x0 - mul r5, r0 - add r0, r4, r5 - add r0, #0x29 - ldrb r0, [r0, #0x0] - bl FUN_0206AE00 - cmp r0, #0x1 - bne _0206AE5E - mov r0, #0x78 - str r0, [sp, #0x10] - b _0206AE62 -_0206AE5E: - mov r0, #0x88 - str r0, [sp, #0x10] -_0206AE62: - add r0, r4, r5 - add r0, #0x28 - ldrb r0, [r0, #0x0] - cmp r0, #0x3 - bhi _0206AF26 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_0206AE78: ; jump table (using 16-bit offset) - .short _0206AE80 - _0206AE78 - 2; case 0 - .short _0206AF28 - _0206AE78 - 2; case 1 - .short _0206AFE8 - _0206AE78 - 2; case 2 - .short _0206B08C - _0206AE78 - 2; case 3 -_0206AE80: - mov r0, #0x0 - str r0, [sp, #0x48] - add r0, r4, r5 - add r0, #0x2b - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - ble _0206AF26 - ldr r0, [sp, #0x4c] - str r0, [sp, #0x28] - add r0, r4, r6 - str r0, [sp, #0x24] -_0206AE96: - ldr r0, [sp, #0x24] - ldr r2, [sp, #0x28] - ldr r1, [r0, #0x18] - ldr r0, [sp, #0x28] - ldrh r3, [r2, #0x0] - ldrh r2, [r2, #0x2] - ldrh r0, [r0, #0x4] - add r2, r3, r2 - add r0, r0, r2 - add r7, r1, r0 - add r0, r7, #0x0 - bl SetLCRNGSeed - add r0, r4, r5 - add r0, #0x29 - ldrb r0, [r0, #0x0] - mov r6, #0x0 - cmp r0, #0x0 - ble _0206AECE -_0206AEBC: - bl LCRandom - add r7, r0, #0x0 - add r0, r4, r5 - add r0, #0x29 - ldrb r0, [r0, #0x0] - add r6, r6, #0x1 - cmp r6, r0 - blt _0206AEBC -_0206AECE: - ldr r0, [sp, #0x10] - lsl r1, r7, #0x8 - add r6, r1, r0 - ldr r0, [sp, #0x28] - ldrh r1, [r0, #0x0] - mov r0, #0x1f - mul r0, r1 - mov r1, #0xff - bl _s32_div_f - add r3, r0, #0x0 - mov r0, #0x1 - str r0, [sp, #0x0] - lsl r3, r3, #0x18 - str r6, [sp, #0x4] - mov r0, #0x2 - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - ldr r1, [sp, #0x28] - ldr r2, [sp, #0x28] - ldrh r1, [r1, #0x4] - ldrh r2, [r2, #0x2] - ldr r0, [sp, #0x40] - lsr r3, r3, #0x18 - bl CreateMon - ldr r0, [sp, #0x24] - ldr r1, [sp, #0x40] - ldr r0, [r0, #0x4] - bl AddMonToParty - ldr r0, [sp, #0x28] - add r0, r0, #0x6 - str r0, [sp, #0x28] - ldr r0, [sp, #0x48] - add r0, r0, #0x1 - str r0, [sp, #0x48] - add r0, r4, r5 - add r0, #0x2b - ldrb r1, [r0, #0x0] - ldr r0, [sp, #0x48] - cmp r0, r1 - blt _0206AE96 -_0206AF26: - b _0206B156 -_0206AF28: - mov r0, #0x0 - str r0, [sp, #0x18] - add r0, r4, r5 - add r0, #0x2b - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - ble _0206AFE6 - ldr r0, [sp, #0x4c] - str r0, [sp, #0x30] - add r0, r4, r6 - str r0, [sp, #0x2c] -_0206AF3E: - ldr r0, [sp, #0x2c] - ldr r2, [sp, #0x30] - ldr r1, [r0, #0x18] - ldr r0, [sp, #0x30] - ldrh r3, [r2, #0x0] - ldrh r2, [r2, #0x2] - ldrh r0, [r0, #0x4] - add r2, r3, r2 - add r0, r0, r2 - add r7, r1, r0 - add r0, r7, #0x0 - bl SetLCRNGSeed - add r0, r4, r5 - add r0, #0x29 - ldrb r0, [r0, #0x0] - mov r6, #0x0 - cmp r0, #0x0 - ble _0206AF76 -_0206AF64: - bl LCRandom - add r7, r0, #0x0 - add r0, r4, r5 - add r0, #0x29 - ldrb r0, [r0, #0x0] - add r6, r6, #0x1 - cmp r6, r0 - blt _0206AF64 -_0206AF76: - ldr r0, [sp, #0x10] - lsl r1, r7, #0x8 - add r6, r1, r0 - ldr r0, [sp, #0x30] - ldrh r1, [r0, #0x0] - mov r0, #0x1f - mul r0, r1 - mov r1, #0xff - bl _s32_div_f - add r3, r0, #0x0 - mov r0, #0x1 - str r0, [sp, #0x0] - lsl r3, r3, #0x18 - str r6, [sp, #0x4] - mov r0, #0x2 - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - ldr r1, [sp, #0x30] - ldr r2, [sp, #0x30] - ldrh r1, [r1, #0x4] - ldrh r2, [r2, #0x2] - ldr r0, [sp, #0x40] - lsr r3, r3, #0x18 - bl CreateMon - ldr r7, [sp, #0x30] - mov r6, #0x0 -_0206AFB0: - ldrh r1, [r7, #0x6] - lsl r2, r6, #0x18 - ldr r0, [sp, #0x40] - lsr r2, r2, #0x18 - bl MonSetMoveInSlot - add r6, r6, #0x1 - add r7, r7, #0x2 - cmp r6, #0x4 - blt _0206AFB0 - ldr r0, [sp, #0x2c] - ldr r1, [sp, #0x40] - ldr r0, [r0, #0x4] - bl AddMonToParty - ldr r0, [sp, #0x30] - add r0, #0xe - str r0, [sp, #0x30] - ldr r0, [sp, #0x18] - add r0, r0, #0x1 - str r0, [sp, #0x18] - add r0, r4, r5 - add r0, #0x2b - ldrb r1, [r0, #0x0] - ldr r0, [sp, #0x18] - cmp r0, r1 - blt _0206AF3E -_0206AFE6: - b _0206B156 -_0206AFE8: - mov r0, #0x0 - str r0, [sp, #0x1c] - add r0, r4, r5 - add r0, #0x2b - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - ble _0206B08A - add r0, r4, r6 - ldr r7, [sp, #0x4c] - str r0, [sp, #0x34] -_0206AFFC: - ldr r0, [sp, #0x34] - ldrh r3, [r7, #0x0] - ldrh r2, [r7, #0x2] - ldr r1, [r0, #0x18] - ldrh r0, [r7, #0x4] - add r2, r3, r2 - add r0, r0, r2 - add r0, r1, r0 - str r0, [sp, #0x14] - bl SetLCRNGSeed - add r0, r4, r5 - add r0, #0x29 - ldrb r0, [r0, #0x0] - mov r6, #0x0 - cmp r0, #0x0 - ble _0206B030 -_0206B01E: - bl LCRandom - str r0, [sp, #0x14] - add r0, r4, r5 - add r0, #0x29 - ldrb r0, [r0, #0x0] - add r6, r6, #0x1 - cmp r6, r0 - blt _0206B01E -_0206B030: - ldr r0, [sp, #0x14] - lsl r1, r0, #0x8 - ldr r0, [sp, #0x10] - add r6, r1, r0 - ldrh r1, [r7, #0x0] - mov r0, #0x1f - mul r0, r1 - mov r1, #0xff - bl _s32_div_f - add r3, r0, #0x0 - mov r0, #0x1 - str r0, [sp, #0x0] - lsl r3, r3, #0x18 - str r6, [sp, #0x4] - mov r0, #0x2 - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - ldrh r1, [r7, #0x4] - ldrh r2, [r7, #0x2] - ldr r0, [sp, #0x40] - lsr r3, r3, #0x18 - bl CreateMon - ldr r0, [sp, #0x40] - mov r1, #0x6 - add r2, r7, #0x6 - bl SetMonData - ldr r0, [sp, #0x34] - ldr r1, [sp, #0x40] - ldr r0, [r0, #0x4] - bl AddMonToParty - ldr r0, [sp, #0x1c] - add r7, #0x8 - add r0, r0, #0x1 - str r0, [sp, #0x1c] - add r0, r4, r5 - add r0, #0x2b - ldrb r1, [r0, #0x0] - ldr r0, [sp, #0x1c] - cmp r0, r1 - blt _0206AFFC -_0206B08A: - b _0206B156 -_0206B08C: - mov r0, #0x0 - str r0, [sp, #0x20] - add r0, r4, r5 - add r0, #0x2b - ldrb r0, [r0, #0x0] - cmp r0, #0x0 - ble _0206B156 - ldr r0, [sp, #0x4c] - str r0, [sp, #0x3c] - add r0, r4, r6 - str r0, [sp, #0x38] -_0206B0A2: - ldr r0, [sp, #0x38] - ldr r2, [sp, #0x3c] - ldr r1, [r0, #0x18] - ldr r0, [sp, #0x3c] - ldrh r3, [r2, #0x0] - ldrh r2, [r2, #0x2] - ldrh r0, [r0, #0x4] - add r2, r3, r2 - add r0, r0, r2 - add r7, r1, r0 - add r0, r7, #0x0 - bl SetLCRNGSeed - add r0, r4, r5 - add r0, #0x29 - ldrb r0, [r0, #0x0] - mov r6, #0x0 - cmp r0, #0x0 - ble _0206B0DA -_0206B0C8: - bl LCRandom - add r7, r0, #0x0 - add r0, r4, r5 - add r0, #0x29 - ldrb r0, [r0, #0x0] - add r6, r6, #0x1 - cmp r6, r0 - blt _0206B0C8 -_0206B0DA: - ldr r0, [sp, #0x10] - lsl r1, r7, #0x8 - add r6, r1, r0 - ldr r0, [sp, #0x3c] - ldrh r1, [r0, #0x0] - mov r0, #0x1f - mul r0, r1 - mov r1, #0xff - bl _s32_div_f - add r3, r0, #0x0 - mov r0, #0x1 - str r0, [sp, #0x0] - lsl r3, r3, #0x18 - str r6, [sp, #0x4] - mov r0, #0x2 - str r0, [sp, #0x8] - mov r0, #0x0 - str r0, [sp, #0xc] - ldr r1, [sp, #0x3c] - ldr r2, [sp, #0x3c] - ldrh r1, [r1, #0x4] - ldrh r2, [r2, #0x2] - ldr r0, [sp, #0x40] - lsr r3, r3, #0x18 - bl CreateMon - ldr r2, [sp, #0x3c] - ldr r0, [sp, #0x40] - mov r1, #0x6 - add r2, r2, #0x6 - bl SetMonData - ldr r7, [sp, #0x3c] - mov r6, #0x0 -_0206B120: - ldrh r1, [r7, #0x8] - lsl r2, r6, #0x18 - ldr r0, [sp, #0x40] - lsr r2, r2, #0x18 - bl MonSetMoveInSlot - add r6, r6, #0x1 - add r7, r7, #0x2 - cmp r6, #0x4 - blt _0206B120 - ldr r0, [sp, #0x38] - ldr r1, [sp, #0x40] - ldr r0, [r0, #0x4] - bl AddMonToParty - ldr r0, [sp, #0x3c] - add r0, #0x10 - str r0, [sp, #0x3c] - ldr r0, [sp, #0x20] - add r0, r0, #0x1 - str r0, [sp, #0x20] - add r0, r4, r5 - add r0, #0x2b - ldrb r1, [r0, #0x0] - ldr r0, [sp, #0x20] - cmp r0, r1 - blt _0206B0A2 -_0206B156: - ldr r0, [sp, #0x4c] - bl FreeToHeap - ldr r0, [sp, #0x40] - bl FreeToHeap - ldr r0, [sp, #0x44] - bl SetLCRNGSeed - add sp, #0x50 - pop {r3-r7, pc} diff --git a/arm9/asm/unk_0206B688.s b/arm9/asm/unk_0206B688.s deleted file mode 100644 index c92d347d..00000000 --- a/arm9/asm/unk_0206B688.s +++ /dev/null @@ -1,357 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .section .rodata - - .global UNK_020F8074 -UNK_020F8074: ; 0x020F8074 - .byte 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x01, 0x01, 0x00, 0x01, 0x02, 0x02 - .byte 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02 - .byte 0x02, 0x02, 0x02, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 - .byte 0x02, 0x02, 0x00, 0x02, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 - .byte 0x02, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x01, 0x02, 0x02, 0x01 - .byte 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x02, 0x01, 0x00, 0x02 - .byte 0x02, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02 - .byte 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x02 - .byte 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x01 - .byte 0x01, 0x01, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x02 - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00 - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x02, 0x02, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0x00, 0x02, 0x01, 0x01, 0x01 - .byte 0x01, 0x01, 0x01, 0x00, 0x02, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x02 - .byte 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x02, 0x02, 0x02, 0x01, 0x02, 0x00, 0x00, 0x02, 0x02, 0x02 - .byte 0x02, 0x02, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x00 - .byte 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 - .byte 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00 - .byte 0x00, 0x01, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x02, 0x00 - .byte 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02 - .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02 - .byte 0x02, 0x01, 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01 - .byte 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x00, 0x02, 0x02, 0x00, 0x01, 0x00, 0x02, 0x02, 0x00 - .byte 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 - .byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .text - - thumb_func_start FUN_0206B688 -FUN_0206B688: ; 0x0206B688 - push {r3-r7, lr} - add r5, r0, #0x0 - bl AcquireBoxMonLock - add r7, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonData - add r4, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x4c - mov r2, #0x0 - bl GetBoxMonData - add r6, r0, #0x0 - add r0, r5, #0x0 - bl BoxMon_GetAlternateForme - add r2, r0, #0x0 - add r0, r4, #0x0 - add r1, r6, #0x0 - bl FUN_0206B6D4 - add r4, r0, #0x0 - add r0, r5, #0x0 - add r1, r7, #0x0 - bl ReleaseBoxMonLock - add r0, r4, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_0206B6C8 -FUN_0206B6C8: ; 0x0206B6C8 - push {r3, lr} - bl FUN_020690E4 - bl FUN_0206B688 - pop {r3, pc} - - thumb_func_start FUN_0206B6D4 -FUN_0206B6D4: ; 0x0206B6D4 - cmp r1, #0x1 - bne _0206B6E8 - ldr r1, _0206B748 ; =0x000001EA - cmp r0, r1 - bne _0206B6E2 - add r1, #0xc - b _0206B6E4 -_0206B6E2: - add r1, #0xb -_0206B6E4: - add r0, r1, #0x0 - bx lr -_0206B6E8: - cmp r2, #0x0 - beq _0206B73A - ldr r3, _0206B74C ; =0x00000182 - cmp r0, r3 - bne _0206B6F8 - add r3, #0x74 - add r0, r2, r3 - bx lr -_0206B6F8: - cmp r0, #0xc9 - bne _0206B702 - add r3, #0x78 - add r0, r2, r3 - bx lr -_0206B702: - add r1, r3, #0x0 - add r1, #0x1a - cmp r0, r1 - bne _0206B710 - add r3, #0x93 - add r0, r2, r3 - bx lr -_0206B710: - add r1, r3, #0x0 - add r1, #0x1b - cmp r0, r1 - bne _0206B71E - add r3, #0x95 - add r0, r2, r3 - bx lr -_0206B71E: - add r1, r3, #0x0 - add r1, #0x24 - cmp r0, r1 - bne _0206B72C - add r3, #0x97 - add r0, r2, r3 - bx lr -_0206B72C: - add r1, r3, #0x0 - add r1, #0x25 - cmp r0, r1 - bne _0206B73A - add r3, #0x98 - add r0, r2, r3 - bx lr -_0206B73A: - ldr r1, _0206B750 ; =0x000001ED - cmp r0, r1 - bls _0206B742 - mov r0, #0x0 -_0206B742: - add r0, r0, #0x7 - bx lr - nop -_0206B748: .word 0x000001EA -_0206B74C: .word 0x00000182 -_0206B750: .word 0x000001ED - - thumb_func_start BoxMon_GetAlternateForme -BoxMon_GetAlternateForme: ; 0x0206B754 - push {r4, lr} - mov r1, #0xad - mov r2, #0x0 - add r4, r0, #0x0 - bl GetBoxMonData - ldr r2, _0206B7B8 ; =0x0000019D - cmp r0, r2 - bhi _0206B784 - sub r1, r2, #0x1 - cmp r0, r1 - blo _0206B774 - beq _0206B7A4 - cmp r0, r2 - beq _0206B7A4 - b _0206B7B4 -_0206B774: - cmp r0, #0xc9 - bhi _0206B77C - beq _0206B79C - b _0206B7B4 -_0206B77C: - sub r2, #0x1b - cmp r0, r2 - beq _0206B7A4 - b _0206B7B4 -_0206B784: - add r1, r2, #0x0 - add r1, #0x9 - cmp r0, r1 - bhi _0206B794 - add r2, #0x9 - cmp r0, r2 - beq _0206B7A4 - b _0206B7B4 -_0206B794: - add r2, #0xa - cmp r0, r2 - beq _0206B7A4 - b _0206B7B4 -_0206B79C: - add r0, r4, #0x0 - bl GetBoxMonUnownLetter - pop {r4, pc} -_0206B7A4: - add r0, r4, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetBoxMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - pop {r4, pc} -_0206B7B4: - mov r0, #0x0 - pop {r4, pc} - .balign 4 -_0206B7B8: .word 0x0000019D - - thumb_func_start FUN_0206B7BC -FUN_0206B7BC: ; 0x0206B7BC - cmp r2, #0x1 - bne _0206B7CE - ldr r1, _0206B830 ; =0x000001EA - cmp r0, r1 - bne _0206B7CA - add r0, r1, #0x5 - b _0206B82A -_0206B7CA: - add r0, r1, #0x4 - b _0206B82A -_0206B7CE: - ldr r3, _0206B834 ; =0x000001ED - cmp r0, r3 - bls _0206B7D8 - mov r0, #0x0 - b _0206B82A -_0206B7D8: - cmp r1, #0x0 - beq _0206B82A - add r2, r3, #0x0 - sub r2, #0x6b - cmp r0, r2 - bne _0206B7EA - add r0, r3, #0x2 - add r0, r1, r0 - b _0206B82A -_0206B7EA: - cmp r0, #0xc9 - bne _0206B7F4 - add r0, r3, #0x5 - add r0, r1, r0 - b _0206B82A -_0206B7F4: - add r2, r3, #0x0 - sub r2, #0x51 - cmp r0, r2 - bne _0206B802 - add r3, #0x21 - add r0, r1, r3 - b _0206B82A -_0206B802: - add r2, r3, #0x0 - sub r2, #0x50 - cmp r0, r2 - bne _0206B810 - add r3, #0x23 - add r0, r1, r3 - b _0206B82A -_0206B810: - add r2, r3, #0x0 - sub r2, #0x47 - cmp r0, r2 - bne _0206B81E - add r3, #0x25 - add r0, r1, r3 - b _0206B82A -_0206B81E: - add r2, r3, #0x0 - sub r2, #0x46 - cmp r0, r2 - bne _0206B82A - add r3, #0x26 - add r0, r1, r3 -_0206B82A: - ldr r1, _0206B838 ; =UNK_020F8074 - ldrb r0, [r1, r0] - bx lr - .balign 4 -_0206B830: .word 0x000001EA -_0206B834: .word 0x000001ED -_0206B838: .word UNK_020F8074 - - thumb_func_start FUN_0206B83C -FUN_0206B83C: ; 0x0206B83C - push {r3-r7, lr} - add r5, r0, #0x0 - bl AcquireBoxMonLock - add r4, r0, #0x0 - add r0, r5, #0x0 - bl BoxMon_GetAlternateForme - add r6, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetBoxMonData - add r7, r0, #0x0 - add r0, r5, #0x0 - mov r1, #0x4c - mov r2, #0x0 - bl GetBoxMonData - str r0, [sp, #0x0] - add r0, r5, #0x0 - add r1, r4, #0x0 - bl ReleaseBoxMonLock - ldr r2, [sp, #0x0] - add r0, r7, #0x0 - add r1, r6, #0x0 - bl FUN_0206B7BC - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_0206B87C -FUN_0206B87C: ; 0x0206B87C - push {r3, lr} - bl FUN_020690E4 - bl FUN_0206B83C - pop {r3, pc} - - thumb_func_start FUN_0206B888 -FUN_0206B888: ; 0x0206B888 - mov r0, #0x0 - bx lr - - thumb_func_start FUN_0206B88C -FUN_0206B88C: ; 0x0206B88C - mov r0, #0x2 - bx lr - - thumb_func_start FUN_0206B890 -FUN_0206B890: ; 0x0206B890 - mov r0, #0x4 - bx lr - - thumb_func_start FUN_0206B894 -FUN_0206B894: ; 0x0206B894 - mov r0, #0x6 - bx lr - - thumb_func_start FUN_0206B898 -FUN_0206B898: ; 0x0206B898 - mov r0, #0x1 - bx lr - - thumb_func_start FUN_0206B89C -FUN_0206B89C: ; 0x0206B89C - mov r0, #0x3 - bx lr - - thumb_func_start FUN_0206B8A0 -FUN_0206B8A0: ; 0x0206B8A0 - mov r0, #0x5 - bx lr diff --git a/arm9/asm/unk_0206BB28.s b/arm9/asm/unk_0206BB28.s deleted file mode 100644 index 15f4469e..00000000 --- a/arm9/asm/unk_0206BB28.s +++ /dev/null @@ -1,37 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0206BB28 -FUN_0206BB28: ; 0x0206BB28 - push {r3, lr} - bl Sav2_Pokedex_get - bl FUN_0206BB34 - pop {r3, pc} - - thumb_func_start FUN_0206BB34 -FUN_0206BB34: ; 0x0206BB34 - push {r3, lr} - bl Pokedex_GetNatDexFlag - cmp r0, #0x1 - bne _0206BB42 - mov r0, #0x1 - pop {r3, pc} -_0206BB42: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_0206BB48 -FUN_0206BB48: ; 0x0206BB48 - push {r3, lr} - cmp r0, #0x0 - bne _0206BB58 - lsl r0, r1, #0x10 - lsr r0, r0, #0x10 - bl SpeciesToSinnohDexNo - add r1, r0, #0x0 -_0206BB58: - add r0, r1, #0x0 - pop {r3, pc} diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s index c42b766a..f5a0873e 100644 --- a/arm9/asm/unk_0206C700.s +++ b/arm9/asm/unk_0206C700.s @@ -2096,7 +2096,7 @@ _0206D86E: add r5, r0, #0x0 ldr r0, [r4, #0x28] add r1, r5, #0x0 - bl FUN_02069B88 + bl CopyPokemonToPokemon mov r0, #0x49 lsl r0, r0, #0x2 str r0, [sp, #0x0] @@ -2576,7 +2576,7 @@ FUN_0206DC80: ; 0x0206DC80 add r5, r0, #0x0 ldr r0, [r4, #0x28] add r1, r5, #0x0 - bl FUN_02069B88 + bl CopyPokemonToPokemon add r2, r4, #0x0 add r0, r5, #0x0 mov r1, #0x5 diff --git a/arm9/asm/unk_0206E2F0.s b/arm9/asm/unk_0206E2F0.s index 6741fd51..ab6068fc 100644 --- a/arm9/asm/unk_0206E2F0.s +++ b/arm9/asm/unk_0206E2F0.s @@ -134,7 +134,7 @@ FUN_0206E39C: ; 0x0206E39C thumb_func_start FUN_0206E3A8 FUN_0206E3A8: ; 0x0206E3A8 push {r4-r6, lr} - bl FUN_02029C80 + bl Sav2_SealCase_get add r6, r0, #0x0 mov r5, #0x0 mov r4, #0x1 diff --git a/arm9/asm/unk_0206F3FC.s b/arm9/asm/unk_0206F3FC.s index db3328a4..8d7d828a 100644 --- a/arm9/asm/unk_0206F3FC.s +++ b/arm9/asm/unk_0206F3FC.s @@ -8,11 +8,12 @@ .global UNK_020F944C UNK_020F944C: ; 0x020F944C - .byte 0x01 - - .global UNK_020F944D -UNK_020F944D: ; 0x020F944D - .byte 0x03, 0x1A, 0x03, 0x01, 0x0A, 0x1A, 0x0A, 0x01, 0x11, 0x1A, 0x11 + .byte 0x01, 0x03 + .byte 0x1A, 0x03 + .byte 0x01, 0x0A + .byte 0x1A, 0x0A + .byte 0x01, 0x11 + .byte 0x1A, 0x11 .global UNK_020F9458 UNK_020F9458: ; 0x020F9458 @@ -20,8 +21,10 @@ UNK_020F9458: ; 0x020F9458 .global UNK_020F9468 UNK_020F9468: ; 0x020F9468 - .byte 0x00, 0x02, 0x04, 0x01, 0x03, 0x05, 0x01, 0x03, 0x05, 0x00, 0x02, 0x04, 0x04, 0x02, 0x00, 0x05 - .byte 0x03, 0x01, 0x05, 0x03, 0x01, 0x04, 0x02, 0x00 + .byte 0x00, 0x02, 0x04, 0x01, 0x03, 0x05 + .byte 0x01, 0x03, 0x05, 0x00, 0x02, 0x04 + .byte 0x04, 0x02, 0x00, 0x05, 0x03, 0x01 + .byte 0x05, 0x03, 0x01, 0x04, 0x02, 0x00 .global UNK_020F9480 UNK_020F9480: ; 0x020F9480 @@ -1005,7 +1008,7 @@ _0206FAFC: bl DestroyMsgData ldr r0, _0206FB50 ; =0x00000698 ldr r0, [r6, r0] - bl FUN_0200B990 + bl MessagePrinter_delete mov r0, #0x6a lsl r0, r0, #0x4 ldr r0, [r6, r0] @@ -1265,7 +1268,7 @@ FUN_0206FD24: ; 0x0206FD24 mov r1, #0x11 mov r3, #0x3 bl FUN_020068C8 - mov r0, #0x14 + mov r0, #0x14 ; NARC_GRAPHIC_PLIST_GRA mov r1, #0x10 mov r2, #0xc bl AllocAndReadWholeNarcMemberByIdPair @@ -1438,7 +1441,7 @@ _0206FEC2: mov r0, #0xf mov r1, #0xe mov r3, #0xc - bl FUN_0200B870 + bl MessagePrinter_new ldr r1, _0206FF64 ; =0x00000698 str r0, [r6, r1] mov r0, #0xc @@ -4614,7 +4617,7 @@ FUN_020717E8: ; 0x020717E8 lsl r3, r3, #0x1 add r0, r0, r3 mov r12, r0 - ldr r0, _0207184C ; =UNK_020F944D + ldr r0, _0207184C ; =UNK_020F944C + 1 ldrb r7, [r0, r1] _02071816: lsl r0, r2, #0x2 @@ -4643,7 +4646,7 @@ _02071824: nop _02071844: .word 0x00001005 _02071848: .word UNK_020F944C -_0207184C: .word UNK_020F944D +_0207184C: .word UNK_020F944C + 1 thumb_func_start FUN_02071850 FUN_02071850: ; 0x02071850 @@ -4653,7 +4656,7 @@ FUN_02071850: ; 0x02071850 lsl r0, r0, #0x3 add r0, #0x14 strh r0, [r1, #0x0] - ldr r0, _0207186C ; =UNK_020F944D + ldr r0, _0207186C ; =UNK_020F944C + 1 ldrb r0, [r0, r3] lsl r0, r0, #0x3 add r0, #0x14 @@ -4661,7 +4664,7 @@ FUN_02071850: ; 0x02071850 bx lr .balign 4 _02071868: .word UNK_020F944C -_0207186C: .word UNK_020F944D +_0207186C: .word UNK_020F944C + 1 thumb_func_start FUN_02071870 FUN_02071870: ; 0x02071870 @@ -5672,7 +5675,7 @@ FUN_02072080: ; 0x02072080 add r2, sp, #0x0 bl SetMonData add r0, r5, #0x0 - bl FUN_02069EC4 + bl Pokemon_UpdateArceusForme ldr r1, _020720D8 ; =0x00000B25 ldr r0, _020720D4 ; =0x000005A4 ldrb r3, [r4, r1] @@ -5715,7 +5718,7 @@ FUN_020720E0: ; 0x020720E0 add r2, sp, #0x1c bl SetMonData add r0, r5, #0x0 - bl FUN_02069EC4 + bl Pokemon_UpdateArceusForme ldr r1, _02072138 ; =0x00000B25 mov r2, #0x2c ldrb r3, [r4, r1] @@ -6194,7 +6197,7 @@ FUN_020724D4: ; 0x020724D4 add r4, r0, #0x0 add r5, r1, #0x0 add r6, r2, #0x0 - mov r0, #0x14 + mov r0, #0x14 ; NARC_GRAPHIC_PLIST_GRA mov r1, #0x16 add r2, r4, #0x0 add r7, r3, #0x0 diff --git a/arm9/asm/unk_02073DA8.s b/arm9/asm/unk_02073DA8.s index 8b8442a3..6635b399 100644 --- a/arm9/asm/unk_02073DA8.s +++ b/arm9/asm/unk_02073DA8.s @@ -246,7 +246,7 @@ _02073F66: add r2, sp, #0x0 bl SetMonData add r0, r6, #0x0 - bl FUN_02069EC4 + bl Pokemon_UpdateArceusForme ldr r2, _02074058 ; =0x0000069C mov r1, #0x52 ldr r0, [r5, r2] @@ -633,7 +633,7 @@ FUN_020742A8: ; 0x020742A8 add r2, sp, #0x0 bl SetMonData add r0, r5, #0x0 - bl FUN_02069EC4 + bl Pokemon_UpdateArceusForme ldr r1, _02074330 ; =0x00000B25 mov r2, #0x2c ldrb r3, [r4, r1] @@ -790,7 +790,7 @@ FUN_02074428: ; 0x02074428 ldrb r1, [r4, r1] ldr r0, [r0, #0x0] bl GetPartyMonByIndex - bl FUN_0206AA84 + bl Pokemon_RemoveCapsule ldr r0, _0207444C ; =0x000005A4 mov r1, #0x0 ldr r0, [r4, r0] diff --git a/arm9/asm/unk_020772F0.s b/arm9/asm/unk_020772F0.s index 7ada0ae4..7a24d756 100644 --- a/arm9/asm/unk_020772F0.s +++ b/arm9/asm/unk_020772F0.s @@ -2,8 +2,6 @@ .include "global.inc" .extern gMain - .extern gMain - .extern gMain .section .rodata @@ -25,7 +23,9 @@ UNK_020F9D38: ; 0x020F9D38 .global UNK_020F9D40 UNK_020F9D40: ; 0x020F9D40 - .byte 0x70, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00 + .word 0x00000070 + .word 0x0000004C + .word 0x00000048 .global UNK_020F9D4C UNK_020F9D4C: ; 0x020F9D4C @@ -37,25 +37,52 @@ UNK_020F9D5C: ; 0x020F9D5C .global UNK_020F9D6C UNK_020F9D6C: ; 0x020F9D6C - .byte 0x19, 0x00, 0x39, 0x00, 0x59, 0x00, 0x61, 0x00, 0x7A, 0x00, 0x9E, 0x00, 0xC6, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x2B, 0x00, 0x20, 0x00, 0x2F, 0x00, 0x01, 0x00, 0x2B, 0x00, 0x3F, 0x00, 0x09, 0x00 - .byte 0x30, 0x00, 0xE2, 0x00, 0xFF, 0xFF, 0x8D, 0x00, 0x74, 0x00, 0x60, 0x00, 0x6A, 0x00, 0x2F, 0x00 - .byte 0x01, 0x00, 0x2B, 0x00, 0x3F, 0x00, 0x09, 0x00, 0x30, 0x00, 0xE2, 0x00, 0xFF, 0xFF + .short 0x0019 + .short 0x0039 + .short 0x0059 + .short 0x0061 + .short 0x007A + .short 0x009E + .short 0x00C6 + .short 0x0000 + .short 0x0003 + .short 0x002B + .short 0x0020 + .short 0x002F + .short 0x0001 + .short 0x002B + .short 0x003F + .short 0x0009 + .short 0x0030 + .short 0x00E2 + .short 0xFFFF + .short 0x008D + .short 0x0074 + .short 0x0060 + .short 0x006A + .short 0x002F + .short 0x0001 + .short 0x002B + .short 0x003F + .short 0x0009 + .short 0x0030 + .short 0x00E2 + .short 0xFFFF .global UNK_020F9DAA UNK_020F9DAA: ; 0x020F9DAA - .byte 0x02, 0xE0, 0x02, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x04, 0xE0, 0x04, 0xE0, 0x04, 0xD0, 0x04, 0xD0 - .byte 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x08, 0xE0, 0x08, 0xE0 + .short 0xE002, 0xE002, 0xE003, 0xE003, 0xE004, 0xE004, 0xD004, 0xD004 + .short 0xE007, 0xE007, 0xE007, 0xE008, 0xE008 .global UNK_020F9DC4 UNK_020F9DC4: ; 0x020F9DC4 - .byte 0x04, 0xD0, 0x04, 0xD0, 0x04, 0xD0, 0x04, 0xD0, 0x04, 0xD0, 0x04, 0xD0, 0x04, 0xD0, 0x04, 0xD0 - .byte 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x08, 0xE0, 0x08, 0xE0 + .short 0xD004, 0xD004, 0xD004, 0xD004, 0xD004, 0xD004, 0xD004, 0xD004 + .short 0xE007, 0xE007, 0xE007, 0xE008, 0xE008 .global UNK_020F9DDE UNK_020F9DDE: ; 0x020F9DDE - .byte 0xE3, 0x00, 0xE4, 0x00, 0xF9, 0x00, 0xF8, 0x00, 0xE5, 0x00, 0xE6, 0x00, 0xF5, 0x00, 0xF6, 0x00 - .byte 0xF7, 0x00, 0xE7, 0x00, 0x01, 0x00, 0xEE, 0x00, 0xEF, 0x00, 0xFF, 0xFF, 0x00, 0x00 + .short 0x00E3, 0x00E4, 0x00F9, 0x00F8, 0x00E5, 0x00E6, 0x00F5, 0x00F6 + .short 0x00F7, 0x00E7, 0x0001, 0x00EE, 0x00EF, 0xFFFF, 0x0000 .global UNK_020F9DFC UNK_020F9DFC: ; 0x020F9DFC @@ -64,33 +91,33 @@ UNK_020F9DFC: ; 0x020F9DFC .global UNK_020F9E18 UNK_020F9E18: ; 0x020F9E18 - .byte 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01 - .byte 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xFF, 0xFF + .short 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0x01DE + .short 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0xFFFF .global UNK_020F9E34 UNK_020F9E34: ; 0x020F9E34 - .byte 0x07, 0x01, 0x08, 0x01, 0x09, 0x01, 0x0A, 0x01, 0x0B, 0x01, 0x0C, 0x01, 0x0D, 0x01, 0x0E, 0x01 - .byte 0x11, 0x01, 0x0F, 0x01, 0x10, 0x01, 0x01, 0x00, 0x01, 0x00, 0xFF, 0xFF + .short 0x0107, 0x0108, 0x0109, 0x010A, 0x010B, 0x010C, 0x010D, 0x010E + .short 0x0111, 0x010F, 0x0110, 0x0001, 0x0001, 0xFFFF .global UNK_020F9E50 UNK_020F9E50: ; 0x020F9E50 - .byte 0x21, 0x01, 0x22, 0x01, 0x23, 0x01, 0x24, 0x01, 0x25, 0x01, 0x26, 0x01, 0x27, 0x01, 0x28, 0x01 - .byte 0x29, 0x01, 0x2A, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xFF, 0xFF + .short 0x0121, 0x0122, 0x0123, 0x0124, 0x0125, 0x0126, 0x0127, 0x0128 + .short 0x0129, 0x012A, 0x01DE, 0x01DE, 0x01DE, 0xFFFF .global UNK_020F9E6C UNK_020F9E6C: ; 0x020F9E6C - .byte 0x2B, 0x01, 0x2C, 0x01, 0x2D, 0x01, 0x2E, 0x01, 0x2F, 0x01, 0x30, 0x01, 0x31, 0x01, 0x32, 0x01 - .byte 0x33, 0x01, 0x34, 0x01, 0xDE, 0x01, 0xAD, 0x01, 0xAE, 0x01, 0xFF, 0xFF + .short 0x012B, 0x012C, 0x012D, 0x012E, 0x012F, 0x0130, 0x0131, 0x0132 + .short 0x0133, 0x0134, 0x01DE, 0x01AD, 0x01AE, 0xFFFF .global UNK_020F9E88 UNK_020F9E88: ; 0x020F9E88 - .byte 0x35, 0x01, 0x36, 0x01, 0x37, 0x01, 0x38, 0x01, 0x39, 0x01, 0x3A, 0x01, 0x3B, 0x01, 0x3C, 0x01 - .byte 0x3D, 0x01, 0x3E, 0x01, 0xDE, 0x01, 0xB3, 0x01, 0xBE, 0x01, 0xFF, 0xFF + .short 0x0135, 0x0136, 0x0137, 0x0138, 0x0139, 0x013A, 0x013B, 0x013C + .short 0x013D, 0x013E, 0x01DE, 0x01B3, 0x01BE, 0xFFFF .global UNK_020F9EA4 UNK_020F9EA4: ; 0x020F9EA4 - .byte 0x3F, 0x01, 0x40, 0x01, 0x41, 0x01, 0x42, 0x01, 0x43, 0x01, 0x44, 0x01, 0xDE, 0x01, 0xDE, 0x01 - .byte 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xBB, 0x01, 0xBC, 0x01, 0xFF, 0xFF + .short 0x013F, 0x0140, 0x0141, 0x0142, 0x0143, 0x0144, 0x01DE, 0x01DE + .short 0x01DE, 0x01DE, 0x01DE, 0x01BB, 0x01BC, 0xFFFF .global UNK_020F9EC0 UNK_020F9EC0: ; 0x020F9EC0 @@ -99,38 +126,38 @@ UNK_020F9EC0: ; 0x020F9EC0 .global UNK_020F9EDC UNK_020F9EDC: ; 0x020F9EDC - .byte 0x45, 0x01, 0x46, 0x01, 0x47, 0x01, 0x48, 0x01, 0x49, 0x01, 0x4A, 0x01, 0x4B, 0x01, 0x4C, 0x01 - .byte 0x4D, 0x01, 0x4E, 0x01, 0xDE, 0x01, 0xAD, 0x01, 0xAE, 0x01, 0xFF, 0xFF + .short 0x0145, 0x0146, 0x0147, 0x0148, 0x0149, 0x014A, 0x014B, 0x014C + .short 0x014D, 0x014E, 0x01DE, 0x01AD, 0x01AE, 0xFFFF .global UNK_020F9EF8 UNK_020F9EF8: ; 0x020F9EF8 - .byte 0x4F, 0x01, 0x50, 0x01, 0x51, 0x01, 0x52, 0x01, 0x53, 0x01, 0x54, 0x01, 0x55, 0x01, 0x56, 0x01 - .byte 0x57, 0x01, 0x58, 0x01, 0xDE, 0x01, 0xB3, 0x01, 0xBE, 0x01, 0xFF, 0xFF + .short 0x014F, 0x0150, 0x0151, 0x0152, 0x0153, 0x0154, 0x0155, 0x0156 + .short 0x0157, 0x0158, 0x01DE, 0x01B3, 0x01BE, 0xFFFF .global UNK_020F9F14 UNK_020F9F14: ; 0x020F9F14 - .byte 0xFF, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x03, 0x01, 0xFC, 0x00, 0xFA, 0x00, 0xFD, 0x00 - .byte 0xFB, 0x00, 0xFE, 0x00, 0x05, 0x01, 0x01, 0x00, 0x01, 0x00, 0xFF, 0xFF + .short 0x00FF, 0x0100, 0x0101, 0x0102, 0x0103, 0x00FC, 0x00FA, 0x00FD + .short 0x00FB, 0x00FE, 0x0105, 0x0001, 0x0001, 0xFFFF .global UNK_020F9F30 UNK_020F9F30: ; 0x020F9F30 - .byte 0xE8, 0x00, 0xE9, 0x00, 0xEA, 0x00, 0xEB, 0x00, 0xEC, 0x00, 0xED, 0x00, 0xF0, 0x00, 0xF1, 0x00 - .byte 0xF2, 0x00, 0xF3, 0x00, 0xF4, 0x00, 0x06, 0x01, 0x04, 0x01, 0xFF, 0xFF + .short 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00F0, 0x00F1 + .short 0x00F2, 0x00F3, 0x00F4, 0x0106, 0x0104, 0xFFFF .global UNK_020F9F4C UNK_020F9F4C: ; 0x020F9F4C - .byte 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01 - .byte 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xFF, 0xFF + .short 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0x01DE + .short 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0xFFFF .global UNK_020F9F68 UNK_020F9F68: ; 0x020F9F68 - .byte 0xA2, 0x00, 0xA3, 0x00, 0xA4, 0x00, 0xA5, 0x00, 0xA6, 0x00, 0xA7, 0x00, 0xA8, 0x00, 0xA9, 0x00 - .byte 0xAA, 0x00, 0xAB, 0x00, 0x01, 0x00, 0xE1, 0x00, 0xE2, 0x00, 0xFF, 0xFF + .short 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9 + .short 0x00AA, 0x00AB, 0x0001, 0x00E1, 0x00E2, 0xFFFF .global UNK_020F9F84 UNK_020F9F84: ; 0x020F9F84 - .byte 0xAD, 0x01, 0xAE, 0x01, 0xC4, 0x01, 0xC5, 0x01, 0xAB, 0x01, 0xAC, 0x01, 0xDE, 0x01, 0xDE, 0x01 - .byte 0xDE, 0x01, 0xBB, 0x01, 0xBC, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xFF, 0xFF + .short 0x01AD, 0x01AE, 0x01C4, 0x01C5, 0x01AB, 0x01AC, 0x01DE, 0x01DE + .short 0x01DE, 0x01BB, 0x01BC, 0x01DE, 0x01DE, 0xFFFF .global UNK_020F9FA0 UNK_020F9FA0: ; 0x020F9FA0 @@ -139,33 +166,33 @@ UNK_020F9FA0: ; 0x020F9FA0 .global UNK_020F9FBC UNK_020F9FBC: ; 0x020F9FBC - .byte 0xB4, 0x01, 0xB5, 0x01, 0xB2, 0x01, 0xB3, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0xDE, 0x01, 0xDE, 0x01 - .byte 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xFF, 0xFF + .short 0x01B4, 0x01B5, 0x01B2, 0x01B3, 0x01B9, 0x01BA, 0x01DE, 0x01DE + .short 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0x01DE, 0xFFFF .global UNK_020F9FD8 UNK_020F9FD8: ; 0x020F9FD8 - .byte 0xAF, 0x01, 0xB0, 0x01, 0xC3, 0x01, 0xD0, 0x01, 0xC0, 0x01, 0xD2, 0x01, 0xBD, 0x01, 0xBE, 0x01 - .byte 0xBF, 0x01, 0xB1, 0x01, 0xC1, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xFF, 0xFF + .short 0x01AF, 0x01B0, 0x01C3, 0x01D0, 0x01C0, 0x01D2, 0x01BD, 0x01BE + .short 0x01BF, 0x01B1, 0x01C1, 0x01DE, 0x01DE, 0xFFFF .global UNK_020F9FF4 UNK_020F9FF4: ; 0x020F9FF4 - .byte 0xCB, 0x01, 0xCC, 0x01, 0xCD, 0x01, 0xCE, 0x01, 0xCF, 0x01, 0xC6, 0x01, 0xC8, 0x01, 0xC9, 0x01 - .byte 0xC7, 0x01, 0xCA, 0x01, 0xD1, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xFF, 0xFF + .short 0x01CB, 0x01CC, 0x01CD, 0x01CE, 0x01CF, 0x01C6, 0x01C8, 0x01C9 + .short 0x01C7, 0x01CA, 0x01D1, 0x01DE, 0x01DE, 0xFFFF .global UNK_020FA010 UNK_020FA010: ; 0x020FA010 - .byte 0x21, 0x01, 0x22, 0x01, 0x23, 0x01, 0x24, 0x01, 0x25, 0x01, 0x26, 0x01, 0x27, 0x01, 0x28, 0x01 - .byte 0x29, 0x01, 0x2A, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xFF, 0xFF + .short 0x0121, 0x0122, 0x0123, 0x0124, 0x0125, 0x0126, 0x0127, 0x0128 + .short 0x0129, 0x012A, 0x01DE, 0x01DE, 0x01DE, 0xFFFF .global UNK_020FA02C UNK_020FA02C: ; 0x020FA02C - .byte 0xD3, 0x01, 0xD4, 0x01, 0xD5, 0x01, 0xD6, 0x01, 0xD7, 0x01, 0xD8, 0x01, 0xD9, 0x01, 0xDA, 0x01 - .byte 0xDD, 0x01, 0xDB, 0x01, 0xDC, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xFF, 0xFF + .short 0x01D3, 0x01D4, 0x01D5, 0x01D6, 0x01D7, 0x01D8, 0x01D9, 0x01DA + .short 0x01DD, 0x01DB, 0x01DC, 0x01DE, 0x01DE, 0xFFFF .global UNK_020FA048 UNK_020FA048: ; 0x020FA048 - .byte 0x59, 0x01, 0x5A, 0x01, 0x5B, 0x01, 0x5C, 0x01, 0x5D, 0x01, 0x5E, 0x01, 0xDE, 0x01, 0xDE, 0x01 - .byte 0xDE, 0x01, 0xDE, 0x01, 0xDE, 0x01, 0xBB, 0x01, 0xBC, 0x01, 0xFF, 0xFF + .short 0x0159, 0x015A, 0x015B, 0x015C, 0x015D, 0x015E, 0x01DE, 0x01DE + .short 0x01DE, 0x01DE, 0x01DE, 0x01BB, 0x01BC, 0xFFFF .global UNK_020FA064 UNK_020FA064: ; 0x020FA064 @@ -176,26 +203,26 @@ UNK_020FA064: ; 0x020FA064 .global UNK_020FA0A0 UNK_020FA0A0: ; 0x020FA0A0 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .short 0x0000, 0x0000, 0x0001, 0x0000, 0x0002, 0x0000, 0x0003, 0x0000 + .short 0x0004, 0x0000, 0x0005, 0x0000, 0x0006, 0x0000, 0x0003, 0x0000 .global UNK_020FA0C0 UNK_020FA0C0: ; 0x020FA0C0 - .byte 0x21, 0x01, 0x22, 0x01, 0x23, 0x01, 0x24, 0x01, 0x25, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0xFF, 0xFF + .short 0x0121, 0x0122, 0x0123, 0x0124, 0x0125, 0x0001, 0x0001, 0x0001 + .short 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001 + .short 0x0001, 0xFFFF .global UNK_020FA0E4 UNK_020FA0E4: ; 0x020FA0E4 - .byte 0x26, 0x01, 0x27, 0x01, 0x28, 0x01, 0x29, 0x01, 0x2A, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0xFF, 0xFF + .short 0x0126, 0x0127, 0x0128, 0x0129, 0x012A, 0x0001, 0x0001, 0x0001 + .short 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001 + .short 0x0001, 0xFFFF .global UNK_020FA108 UNK_020FA108: ; 0x020FA108 - .byte 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0xFF, 0xFF + .short 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001 + .short 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001 + .short 0x0001, 0xFFFF .global UNK_020FA12C UNK_020FA12C: ; 0x020FA12C @@ -205,122 +232,440 @@ UNK_020FA12C: ; 0x020FA12C .global UNK_020FA154 UNK_020FA154: ; 0x020FA154 - .byte 0x00, 0x00, 0x00, 0x00 - - .global UNK_020FA158 -UNK_020FA158: ; 0x020FA158 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 + .word 0x00000000, 0x00000000 + .word 0x00000000, 0xFFFFFFFF + .word 0x00000000, 0x00000001 + .word 0xFFFFFFFF, 0x00000000 + .word 0x00000001, 0x00000000 .global UNK_020FA17C UNK_020FA17C: ; 0x020FA17C - .byte 0x31, 0x00 - - .global UNK_020FA17E -UNK_020FA17E: ; 0x020FA17E - .byte 0x32, 0x00, 0x34, 0x00, 0x35, 0x00, 0x37, 0x00, 0x38, 0x00, 0x3A, 0x00, 0x3B, 0x00, 0x3D, 0x00 - .byte 0x3E, 0x00, 0x81, 0x00, 0x82, 0x00, 0x84, 0x00, 0x85, 0x00, 0x87, 0x00, 0x88, 0x00, 0x8A, 0x00 - .byte 0x8B, 0x00, 0x8D, 0x00, 0x8E, 0x00 + .short 0x0031, 0x0032 + .short 0x0034, 0x0035 + .short 0x0037, 0x0038 + .short 0x003A, 0x003B + .short 0x003D, 0x003E + .short 0x0081, 0x0082 + .short 0x0084, 0x0085 + .short 0x0087, 0x0088 + .short 0x008A, 0x008B + .short 0x008D, 0x008E .global UNK_020FA1A4 UNK_020FA1A4: ; 0x020FA1A4 - .byte 0x24, 0x00 - - .global UNK_020FA1A6 -UNK_020FA1A6: ; 0x020FA1A6 - .byte 0x26, 0x00, 0x74, 0x00, 0x76, 0x00, 0x32, 0x00, 0x31, 0x00, 0x35, 0x00, 0x34, 0x00, 0x38, 0x00 - .byte 0x37, 0x00, 0x3B, 0x00, 0x3A, 0x00, 0x3E, 0x00, 0x3D, 0x00, 0x82, 0x00, 0x81, 0x00, 0x85, 0x00 - .byte 0x84, 0x00, 0x88, 0x00, 0x87, 0x00, 0x8B, 0x00, 0x8A, 0x00, 0x8E, 0x00, 0x8D, 0x00 + .short 0x0024, 0x0026 + .short 0x0074, 0x0076 + .short 0x0032, 0x0031 + .short 0x0035, 0x0034 + .short 0x0038, 0x0037 + .short 0x003B, 0x003A + .short 0x003E, 0x003D + .short 0x0082, 0x0081 + .short 0x0085, 0x0084 + .short 0x0088, 0x0087 + .short 0x008B, 0x008A + .short 0x008E, 0x008D .global UNK_020FA1D4 UNK_020FA1D4: ; 0x020FA1D4 - .byte 0x04, 0x00, 0x00, 0x00 + .word 0x00000004 .global UNK_020FA1D8 UNK_020FA1D8: ; 0x020FA1D8 - .byte 0x44, 0x00, 0x00, 0x00 + .word 0x00000044 .global UNK_020FA1DC UNK_020FA1DC: ; 0x020FA1DC - .byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00 - .byte 0x0D, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00 - .byte 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00 - .byte 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .word 0x00000003, 0x00000001 + .word 0x00000024, 0x00000044 + .word 0x00000008, 0x00000001 + .word 0x00000044, 0x00000044 + .word 0x0000000D, 0x00000001 + .word 0x00000000, 0x000000C8 + .word 0x00000012, 0x00000001 + .word 0x00000065, 0x00000044 + .word 0x00000014, 0x00000001 .global UNK_020FA224 UNK_020FA224: ; 0x020FA224 - .byte 0x88, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0xB0, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x16, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x1A, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word 0x00000088, 0x00000044, 0x00000017, 0x00000001 + .word 0x000000B0, 0x00000044, 0x00000019, 0x00000001 + .word 0x00000016, 0x00000038, 0x00000025, 0x00000002 + .word 0x0000001A, 0x0000005B, 0x00000027, 0x00000000 .global UNK_020FA264 UNK_020FA264: ; 0x020FA264 - .byte 0x19, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x39, 0x3C, 0x00, 0x00, 0x02, 0x00, 0x59, 0x3C, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x04, 0x00, 0x9D, 0x3C, 0x01, 0x00, 0x08, 0x00, 0xC5, 0x3C - .byte 0x01, 0x00, 0x0B, 0x00, 0x1C, 0x58, 0x02, 0x00, 0x00, 0x01, 0x2C, 0x58, 0x02, 0x00, 0x01, 0x01 - .byte 0x3C, 0x58, 0x02, 0x00, 0x02, 0x01, 0x4C, 0x58, 0x02, 0x00, 0x03, 0x01, 0x5C, 0x58, 0x02, 0x00 - .byte 0x04, 0x01, 0x6C, 0x58, 0x02, 0x00, 0x05, 0x01, 0x7C, 0x58, 0x02, 0x00, 0x06, 0x01, 0x8C, 0x58 - .byte 0x02, 0x00, 0x07, 0x01, 0x9C, 0x58, 0x02, 0x00, 0x08, 0x01, 0xAC, 0x58, 0x02, 0x00, 0x09, 0x01 - .byte 0xBC, 0x58, 0x02, 0x00, 0x0A, 0x01, 0xCC, 0x58, 0x02, 0x00, 0x0B, 0x01, 0xDC, 0x58, 0x02, 0x00 - .byte 0x0C, 0x01, 0x1C, 0x6B, 0x02, 0x00, 0x00, 0x02, 0x2C, 0x6B, 0x02, 0x00, 0x01, 0x02, 0x3C, 0x6B - .byte 0x02, 0x00, 0x02, 0x02, 0x4C, 0x6B, 0x02, 0x00, 0x03, 0x02, 0x5C, 0x6B, 0x02, 0x00, 0x04, 0x02 - .byte 0x6C, 0x6B, 0x02, 0x00, 0x05, 0x02, 0x7C, 0x6B, 0x02, 0x00, 0x06, 0x02, 0x8C, 0x6B, 0x02, 0x00 - .byte 0x07, 0x02, 0x9C, 0x6B, 0x02, 0x00, 0x08, 0x02, 0xAC, 0x6B, 0x02, 0x00, 0x09, 0x02, 0xBC, 0x6B - .byte 0x02, 0x00, 0x0A, 0x02, 0xCC, 0x6B, 0x02, 0x00, 0x0B, 0x02, 0xDC, 0x6B, 0x02, 0x00, 0x0C, 0x02 - .byte 0x1C, 0x7E, 0x02, 0x00, 0x00, 0x03, 0x2C, 0x7E, 0x02, 0x00, 0x01, 0x03, 0x3C, 0x7E, 0x02, 0x00 - .byte 0x02, 0x03, 0x4C, 0x7E, 0x02, 0x00, 0x03, 0x03, 0x5C, 0x7E, 0x02, 0x00, 0x04, 0x03, 0x6C, 0x7E - .byte 0x02, 0x00, 0x05, 0x03, 0x7C, 0x7E, 0x02, 0x00, 0x06, 0x03, 0x8C, 0x7E, 0x02, 0x00, 0x07, 0x03 - .byte 0x9C, 0x7E, 0x02, 0x00, 0x08, 0x03, 0xAC, 0x7E, 0x02, 0x00, 0x09, 0x03, 0xBC, 0x7E, 0x02, 0x00 - .byte 0x0A, 0x03, 0xCC, 0x7E, 0x02, 0x00, 0x0B, 0x03, 0xDC, 0x7E, 0x02, 0x00, 0x0C, 0x03, 0x1C, 0x91 - .byte 0x02, 0x00, 0x00, 0x04, 0x2C, 0x91, 0x02, 0x00, 0x01, 0x04, 0x3C, 0x91, 0x02, 0x00, 0x02, 0x04 - .byte 0x4C, 0x91, 0x02, 0x00, 0x03, 0x04, 0x5C, 0x91, 0x02, 0x00, 0x04, 0x04, 0x6C, 0x91, 0x02, 0x00 - .byte 0x05, 0x04, 0x7C, 0x91, 0x02, 0x00, 0x06, 0x04, 0x8C, 0x91, 0x02, 0x00, 0x07, 0x04, 0x9C, 0x91 - .byte 0x02, 0x00, 0x08, 0x04, 0xAC, 0x91, 0x02, 0x00, 0x09, 0x04, 0xBC, 0x91, 0x02, 0x00, 0x0A, 0x04 - .byte 0xCC, 0x91, 0x02, 0x00, 0x0B, 0x04, 0xDC, 0x91, 0x02, 0x00, 0x0C, 0x04, 0x1C, 0xA4, 0x02, 0x00 - .byte 0x00, 0x05, 0x2C, 0xA4, 0x02, 0x00, 0x01, 0x05, 0x3C, 0xA4, 0x02, 0x00, 0x02, 0x05, 0x4C, 0xA4 - .byte 0x02, 0x00, 0x03, 0x05, 0x5C, 0xA4, 0x02, 0x00, 0x04, 0x05, 0x6C, 0xA4, 0x02, 0x00, 0x05, 0x05 - .byte 0x7C, 0xA4, 0x02, 0x00, 0x06, 0x05, 0x8C, 0xA4, 0x02, 0x00, 0x07, 0x05, 0x9C, 0xA4, 0x02, 0x00 - .byte 0x08, 0x05, 0xAC, 0xA4, 0x02, 0x00, 0x09, 0x05, 0xBC, 0xA4, 0x02, 0x00, 0x0A, 0x05, 0xCC, 0xA4 - .byte 0x02, 0x00, 0x0B, 0x05, 0xDC, 0xA4, 0x02, 0x00, 0x0C, 0x05 + .byte 0x19, 0x3C + .short 0x0000 + .byte 0x00, 0x00 + + .byte 0x39, 0x3C + .short 0x0000 + .byte 0x02, 0x00 + + .byte 0x59, 0x3C + .short 0x0000 + .byte 0x04, 0x00 + + .byte 0x00, 0xC0 + .short 0x0000 + .byte 0x04, 0x00 + + .byte 0x9D, 0x3C + .short 0x0001 + .byte 0x08, 0x00 + + .byte 0xC5, 0x3C + .short 0x0001 + .byte 0x0B, 0x00 + + .byte 0x1C, 0x58 + .short 0x0002 + .byte 0x00, 0x01 + + .byte 0x2C, 0x58 + .short 0x0002 + .byte 0x01, 0x01 + + .byte 0x3C, 0x58 + .short 0x0002 + .byte 0x02, 0x01 + + .byte 0x4C, 0x58 + .short 0x0002 + .byte 0x03, 0x01 + + .byte 0x5C, 0x58 + .short 0x0002 + .byte 0x04, 0x01 + + .byte 0x6C, 0x58 + .short 0x0002 + .byte 0x05, 0x01 + + .byte 0x7C, 0x58 + .short 0x0002 + .byte 0x06, 0x01 + + .byte 0x8C, 0x58 + .short 0x0002 + .byte 0x07, 0x01 + + .byte 0x9C, 0x58 + .short 0x0002 + .byte 0x08, 0x01 + + .byte 0xAC, 0x58 + .short 0x0002 + .byte 0x09, 0x01 + + .byte 0xBC, 0x58 + .short 0x0002 + .byte 0x0A, 0x01 + + .byte 0xCC, 0x58 + .short 0x0002 + .byte 0x0B, 0x01 + + .byte 0xDC, 0x58 + .short 0x0002 + .byte 0x0C, 0x01 + + .byte 0x1C, 0x6B + .short 0x0002 + .byte 0x00, 0x02 + + .byte 0x2C, 0x6B + .short 0x0002 + .byte 0x01, 0x02 + + .byte 0x3C, 0x6B + .short 0x0002 + .byte 0x02, 0x02 + + .byte 0x4C, 0x6B + .short 0x0002 + .byte 0x03, 0x02 + + .byte 0x5C, 0x6B + .short 0x0002 + .byte 0x04, 0x02 + + .byte 0x6C, 0x6B + .short 0x0002 + .byte 0x05, 0x02 + + .byte 0x7C, 0x6B + .short 0x0002 + .byte 0x06, 0x02 + + .byte 0x8C, 0x6B + .short 0x0002 + .byte 0x07, 0x02 + + .byte 0x9C, 0x6B + .short 0x0002 + .byte 0x08, 0x02 + + .byte 0xAC, 0x6B + .short 0x0002 + .byte 0x09, 0x02 + + .byte 0xBC, 0x6B + .short 0x0002 + .byte 0x0A, 0x02 + + .byte 0xCC, 0x6B + .short 0x0002 + .byte 0x0B, 0x02 + + .byte 0xDC, 0x6B + .short 0x0002 + .byte 0x0C, 0x02 + + .byte 0x1C, 0x7E + .short 0x0002 + .byte 0x00, 0x03 + + .byte 0x2C, 0x7E + .short 0x0002 + .byte 0x01, 0x03 + + .byte 0x3C, 0x7E + .short 0x0002 + .byte 0x02, 0x03 + + .byte 0x4C, 0x7E + .short 0x0002 + .byte 0x03, 0x03 + + .byte 0x5C, 0x7E + .short 0x0002 + .byte 0x04, 0x03 + + .byte 0x6C, 0x7E + .short 0x0002 + .byte 0x05, 0x03 + + .byte 0x7C, 0x7E + .short 0x0002 + .byte 0x06, 0x03 + + .byte 0x8C, 0x7E + .short 0x0002 + .byte 0x07, 0x03 + + .byte 0x9C, 0x7E + .short 0x0002 + .byte 0x08, 0x03 + + .byte 0xAC, 0x7E + .short 0x0002 + .byte 0x09, 0x03 + + .byte 0xBC, 0x7E + .short 0x0002 + .byte 0x0A, 0x03 + + .byte 0xCC, 0x7E + .short 0x0002 + .byte 0x0B, 0x03 + + .byte 0xDC, 0x7E + .short 0x0002 + .byte 0x0C, 0x03 + + .byte 0x1C, 0x91 + .short 0x0002 + .byte 0x00, 0x04 + + .byte 0x2C, 0x91 + .short 0x0002 + .byte 0x01, 0x04 + + .byte 0x3C, 0x91 + .short 0x0002 + .byte 0x02, 0x04 + + .byte 0x4C, 0x91 + .short 0x0002 + .byte 0x03, 0x04 + + .byte 0x5C, 0x91 + .short 0x0002 + .byte 0x04, 0x04 + + .byte 0x6C, 0x91 + .short 0x0002 + .byte 0x05, 0x04 + + .byte 0x7C, 0x91 + .short 0x0002 + .byte 0x06, 0x04 + + .byte 0x8C, 0x91 + .short 0x0002 + .byte 0x07, 0x04 + + .byte 0x9C, 0x91 + .short 0x0002 + .byte 0x08, 0x04 + + .byte 0xAC, 0x91 + .short 0x0002 + .byte 0x09, 0x04 + + .byte 0xBC, 0x91 + .short 0x0002 + .byte 0x0A, 0x04 + + .byte 0xCC, 0x91 + .short 0x0002 + .byte 0x0B, 0x04 + + .byte 0xDC, 0x91 + .short 0x0002 + .byte 0x0C, 0x04 + + .byte 0x1C, 0xA4 + .short 0x0002 + .byte 0x00, 0x05 + + .byte 0x2C, 0xA4 + .short 0x0002 + .byte 0x01, 0x05 + + .byte 0x3C, 0xA4 + .short 0x0002 + .byte 0x02, 0x05 + + .byte 0x4C, 0xA4 + .short 0x0002 + .byte 0x03, 0x05 + + .byte 0x5C, 0xA4 + .short 0x0002 + .byte 0x04, 0x05 + + .byte 0x6C, 0xA4 + .short 0x0002 + .byte 0x05, 0x05 + + .byte 0x7C, 0xA4 + .short 0x0002 + .byte 0x06, 0x05 + + .byte 0x8C, 0xA4 + .short 0x0002 + .byte 0x07, 0x05 + + .byte 0x9C, 0xA4 + .short 0x0002 + .byte 0x08, 0x05 + + .byte 0xAC, 0xA4 + .short 0x0002 + .byte 0x09, 0x05 + + .byte 0xBC, 0xA4 + .short 0x0002 + .byte 0x0A, 0x05 + + .byte 0xCC, 0xA4 + .short 0x0002 + .byte 0x0B, 0x05 + + .byte 0xDC, 0xA4 + .short 0x0002 + .byte 0x0C, 0x05 .global UNK_020FA40E UNK_020FA40E: ; 0x020FA40E - .byte 0x03, 0x00, 0x01, 0x00, 0x02, 0x00, 0x05, 0x00, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00, 0x01, 0x00 - .byte 0x06, 0x00, 0x09, 0x00, 0x01, 0x00, 0x08, 0x00, 0x0B, 0x00, 0x01, 0x00, 0x0A, 0x00, 0x53, 0x00 - .byte 0x01, 0x00, 0x52, 0x00, 0x55, 0x00, 0x01, 0x00, 0x54, 0x00, 0x57, 0x00, 0x01, 0x00, 0x56, 0x00 - .byte 0x59, 0x00, 0x01, 0x00, 0x58, 0x00, 0x5B, 0x00, 0x01, 0x00, 0x5A, 0x00, 0x45, 0x00, 0x01, 0x00 - .byte 0x44, 0x00, 0x47, 0x00, 0x01, 0x00, 0x46, 0x00, 0x49, 0x00, 0x01, 0x00, 0x48, 0x00, 0x95, 0x00 - .byte 0x01, 0x00, 0x94, 0x00, 0x97, 0x00, 0x01, 0x00, 0x96, 0x00, 0x99, 0x00, 0x01, 0x00, 0x98, 0x00 - .byte 0xAC, 0x00, 0x01, 0x00, 0xC6, 0x00, 0xAD, 0x00, 0x01, 0x00, 0xC7, 0x00, 0xAE, 0x00, 0x01, 0x00 - .byte 0xC8, 0x00, 0xAF, 0x00, 0x01, 0x00, 0xC9, 0x00, 0xB0, 0x00, 0x01, 0x00, 0xCA, 0x00, 0xB1, 0x00 - .byte 0x01, 0x00, 0xCB, 0x00, 0xB2, 0x00, 0x01, 0x00, 0xCC, 0x00, 0xB3, 0x00, 0x01, 0x00, 0xCD, 0x00 - .byte 0xB4, 0x00, 0x01, 0x00, 0xCE, 0x00, 0xB5, 0x00, 0x01, 0x00, 0xCF, 0x00, 0xB6, 0x00, 0x01, 0x00 - .byte 0xD0, 0x00, 0xB7, 0x00, 0x01, 0x00, 0xD1, 0x00, 0xB8, 0x00, 0x01, 0x00, 0xD2, 0x00, 0xB9, 0x00 - .byte 0x01, 0x00, 0xD3, 0x00, 0xBA, 0x00, 0x01, 0x00, 0xD4, 0x00, 0xBB, 0x00, 0x01, 0x00, 0xD5, 0x00 - .byte 0xBC, 0x00, 0x01, 0x00, 0xD6, 0x00, 0xBD, 0x00, 0x01, 0x00, 0xD7, 0x00, 0xBE, 0x00, 0x01, 0x00 - .byte 0xD8, 0x00, 0xBF, 0x00, 0x01, 0x00, 0xD9, 0x00, 0xC0, 0x00, 0x01, 0x00, 0xDA, 0x00, 0xC1, 0x00 - .byte 0x01, 0x00, 0xDB, 0x00, 0xC2, 0x00, 0x01, 0x00, 0xDC, 0x00, 0xC3, 0x00, 0x01, 0x00, 0xDD, 0x00 - .byte 0xC4, 0x00, 0x01, 0x00, 0xDE, 0x00, 0xC5, 0x00, 0x01, 0x00, 0xDF, 0x00, 0x25, 0x00, 0x26, 0x00 - .byte 0x24, 0x00, 0x75, 0x00, 0x76, 0x00, 0x74, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x01, 0x00, 0x0E, 0x00 - .byte 0x0F, 0x00, 0x01, 0x00, 0x10, 0x00, 0x11, 0x00, 0x01, 0x00, 0x12, 0x00, 0x13, 0x00, 0x01, 0x00 - .byte 0x14, 0x00, 0x15, 0x00, 0x01, 0x00, 0x16, 0x00, 0x17, 0x00, 0x01, 0x00, 0x18, 0x00, 0x19, 0x00 - .byte 0x01, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x01, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0x01, 0x00, 0x1E, 0x00 - .byte 0x1F, 0x00, 0x01, 0x00, 0x20, 0x00, 0x21, 0x00, 0x01, 0x00, 0x22, 0x00, 0x23, 0x00, 0x01, 0x00 - .byte 0x27, 0x00, 0x28, 0x00, 0x01, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x01, 0x00, 0x5C, 0x00, 0x5D, 0x00 - .byte 0x01, 0x00, 0x5E, 0x00, 0x5F, 0x00, 0x01, 0x00, 0x60, 0x00, 0x61, 0x00, 0x01, 0x00, 0x62, 0x00 - .byte 0x63, 0x00, 0x01, 0x00, 0x64, 0x00, 0x65, 0x00, 0x01, 0x00, 0x66, 0x00, 0x67, 0x00, 0x01, 0x00 - .byte 0x68, 0x00, 0x69, 0x00, 0x01, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x01, 0x00, 0x6C, 0x00, 0x6D, 0x00 - .byte 0x01, 0x00, 0x6E, 0x00, 0x6F, 0x00, 0x01, 0x00, 0x70, 0x00, 0x71, 0x00, 0x01, 0x00, 0x72, 0x00 - .byte 0x73, 0x00, 0x01, 0x00, 0x77, 0x00, 0x78, 0x00, 0x01, 0x00, 0x79, 0x00, 0x7A, 0x00, 0x01, 0x00 - .byte 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00 - .byte 0x38, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x3B, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x80, 0x00 - .byte 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00 - .byte 0x89, 0x00, 0x8A, 0x00, 0x8B, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x00, 0x00 + .short 0x0003, 0x0001, 0x0002 + .short 0x0005, 0x0001, 0x0004 + .short 0x0007, 0x0001, 0x0006 + .short 0x0009, 0x0001, 0x0008 + .short 0x000B, 0x0001, 0x000A + .short 0x0053, 0x0001, 0x0052 + .short 0x0055, 0x0001, 0x0054 + .short 0x0057, 0x0001, 0x0056 + .short 0x0059, 0x0001, 0x0058 + .short 0x005B, 0x0001, 0x005A + .short 0x0045, 0x0001, 0x0044 + .short 0x0047, 0x0001, 0x0046 + .short 0x0049, 0x0001, 0x0048 + .short 0x0095, 0x0001, 0x0094 + .short 0x0097, 0x0001, 0x0096 + .short 0x0099, 0x0001, 0x0098 + .short 0x00AC, 0x0001, 0x00C6 + .short 0x00AD, 0x0001, 0x00C7 + .short 0x00AE, 0x0001, 0x00C8 + .short 0x00AF, 0x0001, 0x00C9 + .short 0x00B0, 0x0001, 0x00CA + .short 0x00B1, 0x0001, 0x00CB + .short 0x00B2, 0x0001, 0x00CC + .short 0x00B3, 0x0001, 0x00CD + .short 0x00B4, 0x0001, 0x00CE + .short 0x00B5, 0x0001, 0x00CF + .short 0x00B6, 0x0001, 0x00D0 + .short 0x00B7, 0x0001, 0x00D1 + .short 0x00B8, 0x0001, 0x00D2 + .short 0x00B9, 0x0001, 0x00D3 + .short 0x00BA, 0x0001, 0x00D4 + .short 0x00BB, 0x0001, 0x00D5 + .short 0x00BC, 0x0001, 0x00D6 + .short 0x00BD, 0x0001, 0x00D7 + .short 0x00BE, 0x0001, 0x00D8 + .short 0x00BF, 0x0001, 0x00D9 + .short 0x00C0, 0x0001, 0x00DA + .short 0x00C1, 0x0001, 0x00DB + .short 0x00C2, 0x0001, 0x00DC + .short 0x00C3, 0x0001, 0x00DD + .short 0x00C4, 0x0001, 0x00DE + .short 0x00C5, 0x0001, 0x00DF + .short 0x0025, 0x0026, 0x0024 + .short 0x0075, 0x0076, 0x0074 + .short 0x000C, 0x000D, 0x0001 + .short 0x000E, 0x000F, 0x0001 + .short 0x0010, 0x0011, 0x0001 + .short 0x0012, 0x0013, 0x0001 + .short 0x0014, 0x0015, 0x0001 + .short 0x0016, 0x0017, 0x0001 + .short 0x0018, 0x0019, 0x0001 + .short 0x001A, 0x001B, 0x0001 + .short 0x001C, 0x001D, 0x0001 + .short 0x001E, 0x001F, 0x0001 + .short 0x0020, 0x0021, 0x0001 + .short 0x0022, 0x0023, 0x0001 + .short 0x0027, 0x0028, 0x0001 + .short 0x0029, 0x002A, 0x0001 + .short 0x005C, 0x005D, 0x0001 + .short 0x005E, 0x005F, 0x0001 + .short 0x0060, 0x0061, 0x0001 + .short 0x0062, 0x0063, 0x0001 + .short 0x0064, 0x0065, 0x0001 + .short 0x0066, 0x0067, 0x0001 + .short 0x0068, 0x0069, 0x0001 + .short 0x006A, 0x006B, 0x0001 + .short 0x006C, 0x006D, 0x0001 + .short 0x006E, 0x006F, 0x0001 + .short 0x0070, 0x0071, 0x0001 + .short 0x0072, 0x0073, 0x0001 + .short 0x0077, 0x0078, 0x0001 + .short 0x0079, 0x007A, 0x0001 + .short 0x0030, 0x0031, 0x0032 + .short 0x0033, 0x0034, 0x0035 + .short 0x0036, 0x0037, 0x0038 + .short 0x0039, 0x003A, 0x003B + .short 0x003C, 0x003D, 0x003E + .short 0x0080, 0x0081, 0x0082 + .short 0x0083, 0x0084, 0x0085 + .short 0x0086, 0x0087, 0x0088 + .short 0x0089, 0x008A, 0x008B + .short 0x008C, 0x008D, 0x008E .global UNK_020FA5FC + .balign 4, 0 UNK_020FA5FC: ; 0x020FA5FC .word FUN_020772E8, FUN_020774EC, FUN_02077894, 0xFFFFFFFF @@ -336,31 +681,11 @@ UNK_02106058: ; 0x02106058 .global UNK_0210606C UNK_0210606C: ; 0x0210606C - .word UNK_020F9E6C - .word UNK_020F9E88 - .word UNK_020F9EA4 - .word UNK_020F9E18 - .word UNK_020F9E50 - .word UNK_020F9EDC - .word UNK_020F9EF8 - .word UNK_020FA048 - .word UNK_020F9F4C - .word UNK_020FA010 - .word UNK_020F9F84 - .word UNK_020F9FBC - .word UNK_020F9FD8 - .word UNK_020F9FF4 - .word UNK_020FA02C - .word UNK_020F9F68 - .word UNK_020F9DDE - .word UNK_020F9F30 - .word UNK_020F9F14 - .word UNK_020F9E34 - .word UNK_020FA0C0 - .word UNK_020FA0E4 - .word UNK_020FA108 - .word UNK_020FA108 - .word UNK_020FA108 + .word UNK_020F9E6C, UNK_020F9E88, UNK_020F9EA4, UNK_020F9E18, UNK_020F9E50 + .word UNK_020F9EDC, UNK_020F9EF8, UNK_020FA048, UNK_020F9F4C, UNK_020FA010 + .word UNK_020F9F84, UNK_020F9FBC, UNK_020F9FD8, UNK_020F9FF4, UNK_020FA02C + .word UNK_020F9F68, UNK_020F9DDE, UNK_020F9F30, UNK_020F9F14, UNK_020F9E34 + .word UNK_020FA0C0, UNK_020FA0E4, UNK_020FA108, UNK_020FA108, UNK_020FA108 .section .bss @@ -3424,7 +3749,7 @@ FUN_02078BE0: ; 0x02078BE0 mov r1, #0x0 bl FUN_02078BD0 add r4, r0, #0x0 - ldr r0, _02078C8C ; =UNK_020FA158 + ldr r0, _02078C8C ; =UNK_020FA154 + 4 ldr r1, [r5, #0x20] ldr r0, [r0, r6] mov r2, #0x6 @@ -3488,7 +3813,7 @@ _02078C84: pop {r3-r7, pc} nop _02078C88: .word UNK_020FA154 -_02078C8C: .word UNK_020FA158 +_02078C8C: .word UNK_020FA154 + 4 _02078C90: .word 0x0000D004 _02078C94: .word 0x0000E001 @@ -4776,7 +5101,7 @@ _0207969C: ldrh r0, [r1, #0x0] cmp r5, r0 bne _020796AE - ldr r0, _02079704 ; =UNK_020FA1A6 + ldr r0, _02079704 ; =UNK_020FA1A4 + 2 lsl r1, r2, #0x2 ldrh r0, [r0, r1] strh r0, [r6, r7] @@ -4795,7 +5120,7 @@ _020796BC: ldrh r0, [r1, #0x0] cmp r5, r0 bne _020796CE - ldr r0, _0207970C ; =UNK_020FA17E + ldr r0, _0207970C ; =UNK_020FA17C + 2 lsl r1, r2, #0x2 ldrh r0, [r0, r1] strh r0, [r6, r7] @@ -4829,9 +5154,9 @@ _020796F4: .word UNK_020FA40E _020796F8: .word 0x0000D001 _020796FC: .word 0x0000E006 _02079700: .word UNK_020FA1A4 -_02079704: .word UNK_020FA1A6 +_02079704: .word UNK_020FA1A4 + 2 _02079708: .word UNK_020FA17C -_0207970C: .word UNK_020FA17E +_0207970C: .word UNK_020FA17C + 2 thumb_func_start FUN_02079710 FUN_02079710: ; 0x02079710 diff --git a/arm9/asm/unk_02079C70.s b/arm9/asm/unk_02079C70.s index c701f1a8..8bace89f 100644 --- a/arm9/asm/unk_02079C70.s +++ b/arm9/asm/unk_02079C70.s @@ -664,7 +664,7 @@ FUN_0207A1A0: ; 0x0207A1A0 mov r0, #0x1 mov r1, #0x2 mov r3, #0x13 - bl FUN_0200B870 + bl MessagePrinter_new mov r1, #0x67 lsl r1, r1, #0x4 str r0, [r4, r1] @@ -742,7 +742,7 @@ FUN_0207A264: ; 0x0207A264 mov r0, #0x67 lsl r0, r0, #0x4 ldr r0, [r4, r0] - bl FUN_0200B990 + bl MessagePrinter_delete ldr r0, _0207A2D0 ; =0x0000067C ldr r0, [r4, r0] bl ScrStrBufs_delete @@ -1536,7 +1536,7 @@ _0207A896: add r4, r0, #0x0 add r0, r6, #0x0 add r1, r4, #0x0 - bl FUN_02069A64 + bl CopyBoxPokemonToPokemon b _0207A8C0 _0207A8BA: bl FUN_0207B628 @@ -1825,7 +1825,7 @@ FUN_0207AAE0: ; 0x0207AAE0 add r4, r0, #0x0 add r0, r6, #0x0 add r1, r4, #0x0 - bl FUN_02069A64 + bl CopyBoxPokemonToPokemon add r0, r5, #0x0 add r1, r4, #0x0 add r2, r7, #0x0 @@ -2163,7 +2163,7 @@ _0207AD26: _0207ADE0: add r0, r6, #0x0 add r1, r4, #0x0 - bl FUN_02069BC8 + bl MonGetFlavorPreference cmp r0, #0x1 bne _0207ADF4 add r0, r5, #0x0 @@ -2202,7 +2202,7 @@ _0207ADFE: orr r0, r2 str r0, [r5, #0x50] add r0, r6, #0x0 - bl FUN_02069E94 + bl Pokemon_IsImmuneToPokerus cmp r0, #0x1 bne _0207AE4E ldr r1, [r5, #0x50] @@ -2215,7 +2215,7 @@ _0207ADFE: b _0207AE84 _0207AE4E: add r0, r6, #0x0 - bl FUN_02069E74 + bl Pokemon_HasPokerus cmp r0, #0x1 bne _0207AE7C ldr r2, [r5, #0x50] diff --git a/arm9/asm/unk_0207D5BC.s b/arm9/asm/unk_0207D5BC.s index ca5fef37..2546b905 100644 --- a/arm9/asm/unk_0207D5BC.s +++ b/arm9/asm/unk_0207D5BC.s @@ -1540,7 +1540,7 @@ FUN_0207E190: ; 0x0207E190 add r4, r0, #0x0 add r0, r6, #0x0 add r1, r4, #0x0 - bl FUN_02069A64 + bl CopyBoxPokemonToPokemon mov r0, #0x91 lsl r0, r0, #0x2 ldr r0, [r5, r0] diff --git a/arm9/asm/unk_0207FD00.s b/arm9/asm/unk_0207FD00.s index 294b8bfc..e48ad6f9 100644 --- a/arm9/asm/unk_0207FD00.s +++ b/arm9/asm/unk_0207FD00.s @@ -5,14 +5,14 @@ .global UNK_020FBB48 UNK_020FBB48: ; 0x020FBB48 - .byte 0x46, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00 + .short 0x0046, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045 .global UNK_020FBB54 UNK_020FBB54: ; 0x020FBB54 - .byte 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x4D, 0x00, 0x4E, 0x00 - .byte 0x4F, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00 - .byte 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5A, 0x00, 0x5B, 0x00, 0x5C, 0x00, 0x5D, 0x00, 0x5E, 0x00 - .byte 0x5F, 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00 + .short 0x0047, 0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E + .short 0x004F, 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056 + .short 0x0057, 0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E + .short 0x005F, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064 .text @@ -1171,7 +1171,7 @@ FUN_02080678: ; 0x02080678 _0208068A: ldr r0, [r5, #0xc] add r1, r4, #0x0 - bl FUN_02069BC8 + bl MonGetFlavorPreference cmp r0, #0x1 bne _02080698 add r6, r4, #0x1 diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s index 458d4420..0f1630ed 100644 --- a/arm9/asm/unk_02080C38.s +++ b/arm9/asm/unk_02080C38.s @@ -930,7 +930,7 @@ _02081304: bl FUN_02029F9C ldr r0, [r6, #0x8] ldr r1, [r4, #0x0] - bl FUN_02069B88 + bl CopyPokemonToPokemon mov r0, #0x8 mov r1, #0x14 bl String_ctor diff --git a/arm9/asm/unk_020859C0.s b/arm9/asm/unk_020859C0.s index 7b65b9e5..846e5336 100644 --- a/arm9/asm/unk_020859C0.s +++ b/arm9/asm/unk_020859C0.s @@ -11,77 +11,168 @@ UNK_020FCAD8: ; 0x020FCAD8 .global UNK_020FCAE8 UNK_020FCAE8: ; 0x020FCAE8 - .byte 0xB8, 0x00 - - .global UNK_020FCAEA -UNK_020FCAEA: ; 0x020FCAEA - .byte 0x00, 0x25 - - .global UNK_020FCAEC -UNK_020FCAEC: ; 0x020FCAEC - .byte 0x25 - - .global UNK_020FCAED -UNK_020FCAED: ; 0x020FCAED - .byte 0x00 - - .global UNK_020FCAEE -UNK_020FCAEE: ; 0x020FCAEE - .byte 0xE7, 0x03 - - .global UNK_020FCAF0 -UNK_020FCAF0: ; 0x020FCAF0 - .byte 0x00, 0x00, 0xB9, 0x00, 0x01, 0x25, 0x25, 0x00, 0x32, 0x00, 0x00, 0x00, 0xBA, 0x00, 0x02, 0x25 - .byte 0x26, 0x00, 0x32, 0x00, 0x01, 0x00, 0xBB, 0x00, 0x03, 0x25, 0x27, 0x00, 0x32, 0x00, 0x02, 0x00 - .byte 0xBC, 0x00, 0x04, 0x25, 0x28, 0x00, 0x32, 0x00, 0x03, 0x00, 0xBD, 0x00, 0x05, 0x25, 0x29, 0x00 - .byte 0x64, 0x00, 0x04, 0x00, 0xBE, 0x00, 0x06, 0x25, 0x2A, 0x00, 0x64, 0x00, 0x05, 0x00, 0xC0, 0x00 - .byte 0x07, 0x25, 0x2B, 0x00, 0x32, 0x00, 0x06, 0x00, 0xBF, 0x00, 0x08, 0x25, 0x2C, 0x00, 0x32, 0x00 - .byte 0x07, 0x00, 0xC2, 0x00, 0x09, 0x25, 0x2D, 0x00, 0x32, 0x00, 0x08, 0x00, 0xC1, 0x00, 0x0A, 0x25 - .byte 0x2E, 0x00, 0x32, 0x00, 0x09, 0x00, 0xC4, 0x00, 0x0B, 0x25, 0x2F, 0x00, 0x64, 0x00, 0x0A, 0x00 - .byte 0xC3, 0x00, 0x0C, 0x25, 0x30, 0x00, 0x64, 0x00, 0x0B, 0x00, 0xC5, 0x00, 0x0D, 0x25, 0x31, 0x00 - .byte 0x64, 0x00, 0x0C, 0x00, 0xC6, 0x00, 0x0E, 0x25, 0x32, 0x00, 0x64, 0x00, 0x0D, 0x00, 0xC7, 0x00 - .byte 0x0F, 0x25, 0x33, 0x00, 0x64, 0x00, 0x0E, 0x00, 0xC8, 0x00, 0x4D, 0x25, 0x34, 0x00, 0x64, 0x00 - .byte 0x0F, 0x00, 0xC9, 0x00, 0x10, 0x25, 0x39, 0x00, 0x64, 0x00, 0x10, 0x00, 0xCA, 0x00, 0x11, 0x25 - .byte 0x3A, 0x00, 0x64, 0x00, 0x11, 0x00, 0xCB, 0x00, 0x12, 0x25, 0x3B, 0x00, 0x64, 0x00, 0x12, 0x00 - .byte 0xCC, 0x00, 0x13, 0x25, 0x3C, 0x00, 0x64, 0x00, 0x13, 0x00, 0xCD, 0x00, 0x14, 0x25, 0x35, 0x00 - .byte 0x64, 0x00, 0x14, 0x00, 0xCE, 0x00, 0x15, 0x25, 0x36, 0x00, 0x64, 0x00, 0x15, 0x00, 0xCF, 0x00 - .byte 0x16, 0x25, 0x37, 0x00, 0x64, 0x00, 0x16, 0x00, 0xD0, 0x00, 0x17, 0x25, 0x38, 0x00, 0x64, 0x00 - .byte 0x17, 0x00, 0xD1, 0x00, 0x18, 0x25, 0x3D, 0x00, 0x32, 0x00, 0x18, 0x00, 0xD2, 0x00, 0x19, 0x25 - .byte 0x3E, 0x00, 0x32, 0x00, 0x19, 0x00, 0xD3, 0x00, 0x1A, 0x25, 0x3F, 0x00, 0x32, 0x00, 0x1A, 0x00 - .byte 0xD4, 0x00, 0x1B, 0x25, 0x40, 0x00, 0x32, 0x00, 0x1B, 0x00, 0xD6, 0x00, 0x1C, 0x25, 0x41, 0x00 - .byte 0x32, 0x00, 0x1C, 0x00, 0xD5, 0x00, 0x1D, 0x25, 0x42, 0x00, 0x32, 0x00, 0x1D, 0x00, 0xD8, 0x00 - .byte 0x1E, 0x25, 0x43, 0x00, 0x32, 0x00, 0x1E, 0x00, 0xD7, 0x00, 0x1F, 0x25, 0x44, 0x00, 0x32, 0x00 - .byte 0x1F, 0x00, 0xD9, 0x00, 0x20, 0x25, 0x45, 0x00, 0x32, 0x00, 0x20, 0x00, 0xDA, 0x00, 0x21, 0x25 - .byte 0x46, 0x00, 0x32, 0x00, 0x21, 0x00, 0xDB, 0x00, 0x22, 0x25, 0x47, 0x00, 0x64, 0x00, 0x22, 0x00 - .byte 0xDC, 0x00, 0x23, 0x25, 0x48, 0x00, 0x64, 0x00, 0x23, 0x00, 0xDD, 0x00, 0x24, 0x25, 0x49, 0x00 - .byte 0x32, 0x00, 0x24, 0x00, 0xDE, 0x00, 0x25, 0x25, 0x4A, 0x00, 0x32, 0x00, 0x25, 0x00, 0xDF, 0x00 - .byte 0x26, 0x25, 0x4B, 0x00, 0x32, 0x00, 0x26, 0x00, 0xE0, 0x00, 0x27, 0x25, 0x4C, 0x00, 0x32, 0x00 - .byte 0x27, 0x00, 0xE1, 0x00, 0x28, 0x25, 0x4D, 0x00, 0x32, 0x00, 0x28, 0x00, 0xE2, 0x00, 0x29, 0x25 - .byte 0x4E, 0x00, 0x32, 0x00, 0x29, 0x00, 0xE3, 0x00, 0x2A, 0x25, 0x4F, 0x00, 0x32, 0x00, 0x2A, 0x00 - .byte 0xE4, 0x00, 0x2B, 0x25, 0x50, 0x00, 0x32, 0x00, 0x2B, 0x00, 0xE5, 0x00, 0x2C, 0x25, 0x51, 0x00 - .byte 0x32, 0x00, 0x2C, 0x00, 0xE6, 0x00, 0x2D, 0x25, 0x52, 0x00, 0x32, 0x00, 0x2D, 0x00, 0xE7, 0x00 - .byte 0x2E, 0x25, 0x53, 0x00, 0x32, 0x00, 0x2E, 0x00, 0xE8, 0x00, 0x2F, 0x25, 0x54, 0x00, 0x32, 0x00 - .byte 0x2F, 0x00, 0xE9, 0x00, 0x30, 0x25, 0x55, 0x00, 0x32, 0x00, 0x30, 0x00, 0xEA, 0x00, 0x31, 0x25 - .byte 0x56, 0x01, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x00, 0x32, 0x25, 0x57, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0xEC, 0x00, 0x33, 0x25, 0x58, 0x01, 0x00, 0x00, 0x00, 0x00, 0xED, 0x00, 0x34, 0x25, 0x59, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0xEE, 0x00, 0x35, 0x25, 0x5A, 0x01, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x00 - .byte 0x36, 0x25, 0x5B, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x37, 0x25, 0x5C, 0x01, 0x00, 0x00 - .byte 0x00, 0x00, 0xF1, 0x00, 0x38, 0x25, 0x5D, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x39, 0x25 - .byte 0x5E, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF3, 0x00, 0x3A, 0x25, 0x5F, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0xF4, 0x00, 0x3B, 0x25, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x00, 0x3C, 0x25, 0x61, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0xF6, 0x00, 0x3D, 0x25, 0x62, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF7, 0x00 - .byte 0x3E, 0x25, 0x63, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x3F, 0x25, 0x64, 0x01, 0x00, 0x00 - .byte 0x00, 0x00, 0xF9, 0x00, 0x40, 0x25, 0x65, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x00, 0x41, 0x25 - .byte 0x66, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFB, 0x00, 0x42, 0x25, 0x67, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0xFC, 0x00, 0x43, 0x25, 0x68, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x00, 0x44, 0x25, 0x69, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x45, 0x25, 0x6A, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00 - .byte 0x46, 0x25, 0x6B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x47, 0x25, 0x6C, 0x01, 0x00, 0x00 - .byte 0x00, 0x00, 0x01, 0x01, 0x48, 0x25, 0x6D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x49, 0x25 - .byte 0x6E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x4A, 0x25, 0x6F, 0x01, 0x00, 0x00, 0x00, 0x00 - .byte 0x04, 0x01, 0x4B, 0x25, 0x70, 0x01, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x4C, 0x25, 0x71, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4E, 0x25, 0x72, 0x00, 0x00, 0x00, 0x31, 0x00, 0x07, 0x01 - .byte 0x4F, 0x25, 0x73, 0x00, 0x00, 0x00, 0x32, 0x00, 0x08, 0x01, 0x50, 0x25, 0x74, 0x00, 0x00, 0x00 - .byte 0x33, 0x00, 0x00, 0x00 + .short 0x00B8 + .byte 0x00, 0x25, 0x25, 0x00, 0xE7, 0x03, 0x00, 0x00 + .short 0x00B9 + .byte 0x01, 0x25, 0x25, 0x00, 0x32, 0x00, 0x00, 0x00 + .short 0x00BA + .byte 0x02, 0x25, 0x26, 0x00, 0x32, 0x00, 0x01, 0x00 + .short 0x00BB + .byte 0x03, 0x25, 0x27, 0x00, 0x32, 0x00, 0x02, 0x00 + .short 0x00BC + .byte 0x04, 0x25, 0x28, 0x00, 0x32, 0x00, 0x03, 0x00 + .short 0x00BD + .byte 0x05, 0x25, 0x29, 0x00, 0x64, 0x00, 0x04, 0x00 + .short 0x00BE + .byte 0x06, 0x25, 0x2A, 0x00, 0x64, 0x00, 0x05, 0x00 + .short 0x00C0 + .byte 0x07, 0x25, 0x2B, 0x00, 0x32, 0x00, 0x06, 0x00 + .short 0x00BF + .byte 0x08, 0x25, 0x2C, 0x00, 0x32, 0x00, 0x07, 0x00 + .short 0x00C2 + .byte 0x09, 0x25, 0x2D, 0x00, 0x32, 0x00, 0x08, 0x00 + .short 0x00C1 + .byte 0x0A, 0x25, 0x2E, 0x00, 0x32, 0x00, 0x09, 0x00 + .short 0x00C4 + .byte 0x0B, 0x25, 0x2F, 0x00, 0x64, 0x00, 0x0A, 0x00 + .short 0x00C3 + .byte 0x0C, 0x25, 0x30, 0x00, 0x64, 0x00, 0x0B, 0x00 + .short 0x00C5 + .byte 0x0D, 0x25, 0x31, 0x00, 0x64, 0x00, 0x0C, 0x00 + .short 0x00C6 + .byte 0x0E, 0x25, 0x32, 0x00, 0x64, 0x00, 0x0D, 0x00 + .short 0x00C7 + .byte 0x0F, 0x25, 0x33, 0x00, 0x64, 0x00, 0x0E, 0x00 + .short 0x00C8 + .byte 0x4D, 0x25, 0x34, 0x00, 0x64, 0x00, 0x0F, 0x00 + .short 0x00C9 + .byte 0x10, 0x25, 0x39, 0x00, 0x64, 0x00, 0x10, 0x00 + .short 0x00CA + .byte 0x11, 0x25, 0x3A, 0x00, 0x64, 0x00, 0x11, 0x00 + .short 0x00CB + .byte 0x12, 0x25, 0x3B, 0x00, 0x64, 0x00, 0x12, 0x00 + .short 0x00CC + .byte 0x13, 0x25, 0x3C, 0x00, 0x64, 0x00, 0x13, 0x00 + .short 0x00CD + .byte 0x14, 0x25, 0x35, 0x00, 0x64, 0x00, 0x14, 0x00 + .short 0x00CE + .byte 0x15, 0x25, 0x36, 0x00, 0x64, 0x00, 0x15, 0x00 + .short 0x00CF + .byte 0x16, 0x25, 0x37, 0x00, 0x64, 0x00, 0x16, 0x00 + .short 0x00D0 + .byte 0x17, 0x25, 0x38, 0x00, 0x64, 0x00, 0x17, 0x00 + .short 0x00D1 + .byte 0x18, 0x25, 0x3D, 0x00, 0x32, 0x00, 0x18, 0x00 + .short 0x00D2 + .byte 0x19, 0x25, 0x3E, 0x00, 0x32, 0x00, 0x19, 0x00 + .short 0x00D3 + .byte 0x1A, 0x25, 0x3F, 0x00, 0x32, 0x00, 0x1A, 0x00 + .short 0x00D4 + .byte 0x1B, 0x25, 0x40, 0x00, 0x32, 0x00, 0x1B, 0x00 + .short 0x00D6 + .byte 0x1C, 0x25, 0x41, 0x00, 0x32, 0x00, 0x1C, 0x00 + .short 0x00D5 + .byte 0x1D, 0x25, 0x42, 0x00, 0x32, 0x00, 0x1D, 0x00 + .short 0x00D8 + .byte 0x1E, 0x25, 0x43, 0x00, 0x32, 0x00, 0x1E, 0x00 + .short 0x00D7 + .byte 0x1F, 0x25, 0x44, 0x00, 0x32, 0x00, 0x1F, 0x00 + .short 0x00D9 + .byte 0x20, 0x25, 0x45, 0x00, 0x32, 0x00, 0x20, 0x00 + .short 0x00DA + .byte 0x21, 0x25, 0x46, 0x00, 0x32, 0x00, 0x21, 0x00 + .short 0x00DB + .byte 0x22, 0x25, 0x47, 0x00, 0x64, 0x00, 0x22, 0x00 + .short 0x00DC + .byte 0x23, 0x25, 0x48, 0x00, 0x64, 0x00, 0x23, 0x00 + .short 0x00DD + .byte 0x24, 0x25, 0x49, 0x00, 0x32, 0x00, 0x24, 0x00 + .short 0x00DE + .byte 0x25, 0x25, 0x4A, 0x00, 0x32, 0x00, 0x25, 0x00 + .short 0x00DF + .byte 0x26, 0x25, 0x4B, 0x00, 0x32, 0x00, 0x26, 0x00 + .short 0x00E0 + .byte 0x27, 0x25, 0x4C, 0x00, 0x32, 0x00, 0x27, 0x00 + .short 0x00E1 + .byte 0x28, 0x25, 0x4D, 0x00, 0x32, 0x00, 0x28, 0x00 + .short 0x00E2 + .byte 0x29, 0x25, 0x4E, 0x00, 0x32, 0x00, 0x29, 0x00 + .short 0x00E3 + .byte 0x2A, 0x25, 0x4F, 0x00, 0x32, 0x00, 0x2A, 0x00 + .short 0x00E4 + .byte 0x2B, 0x25, 0x50, 0x00, 0x32, 0x00, 0x2B, 0x00 + .short 0x00E5 + .byte 0x2C, 0x25, 0x51, 0x00, 0x32, 0x00, 0x2C, 0x00 + .short 0x00E6 + .byte 0x2D, 0x25, 0x52, 0x00, 0x32, 0x00, 0x2D, 0x00 + .short 0x00E7 + .byte 0x2E, 0x25, 0x53, 0x00, 0x32, 0x00, 0x2E, 0x00 + .short 0x00E8 + .byte 0x2F, 0x25, 0x54, 0x00, 0x32, 0x00, 0x2F, 0x00 + .short 0x00E9 + .byte 0x30, 0x25, 0x55, 0x00, 0x32, 0x00, 0x30, 0x00 + .short 0x00EA + .byte 0x31, 0x25, 0x56, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00EB + .byte 0x32, 0x25, 0x57, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00EC + .byte 0x33, 0x25, 0x58, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00ED + .byte 0x34, 0x25, 0x59, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00EE + .byte 0x35, 0x25, 0x5A, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00EF + .byte 0x36, 0x25, 0x5B, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00F0 + .byte 0x37, 0x25, 0x5C, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00F1 + .byte 0x38, 0x25, 0x5D, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00F2 + .byte 0x39, 0x25, 0x5E, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00F3 + .byte 0x3A, 0x25, 0x5F, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00F4 + .byte 0x3B, 0x25, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00F5 + .byte 0x3C, 0x25, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00F6 + .byte 0x3D, 0x25, 0x62, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00F7 + .byte 0x3E, 0x25, 0x63, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00F8 + .byte 0x3F, 0x25, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00F9 + .byte 0x40, 0x25, 0x65, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00FA + .byte 0x41, 0x25, 0x66, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00FB + .byte 0x42, 0x25, 0x67, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00FC + .byte 0x43, 0x25, 0x68, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00FD + .byte 0x44, 0x25, 0x69, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00FE + .byte 0x45, 0x25, 0x6A, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x00FF + .byte 0x46, 0x25, 0x6B, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x0100 + .byte 0x47, 0x25, 0x6C, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x0101 + .byte 0x48, 0x25, 0x6D, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x0102 + .byte 0x49, 0x25, 0x6E, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x0103 + .byte 0x4A, 0x25, 0x6F, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x0104 + .byte 0x4B, 0x25, 0x70, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x0105 + .byte 0x4C, 0x25, 0x71, 0x01, 0x00, 0x00, 0x00, 0x00 + .short 0x0106 + .byte 0x4E, 0x25, 0x72, 0x00, 0x00, 0x00, 0x31, 0x00 + .short 0x0107 + .byte 0x4F, 0x25, 0x73, 0x00, 0x00, 0x00, 0x32, 0x00 + .short 0x0108 + .byte 0x50, 0x25, 0x74, 0x00, 0x00, 0x00, 0x33, 0x00 .text @@ -160,7 +251,7 @@ _02085A60: ldr r0, [r4, #0x0] add r1, r6, #0x0 ldr r0, [r0, #0x20] - bl FUN_02029C8C + bl SealCase_GetCapsuleI str r7, [r5, #0x4] str r0, [r5, #0x8] add r6, r6, #0x1 @@ -565,7 +656,7 @@ _02085DDC: add r0, r5, #0x0 bl FUN_0204AF3C ldr r0, [r6, #0x10] - bl FUN_02029C80 + bl Sav2_SealCase_get str r0, [r7, #0x20] add r0, r7, #0x0 mov r1, #0x0 @@ -679,7 +770,7 @@ _02085EA6: ldr r1, [sp, #0x8] ldr r0, [r7, #0x20] sub r1, r1, #0x1 - bl FUN_02029C8C + bl SealCase_GetCapsuleI add r2, r0, #0x0 add r0, r5, #0x0 mov r1, #0xaa @@ -687,10 +778,10 @@ _02085EA6: ldr r1, [sp, #0x8] ldr r0, [r7, #0x20] sub r1, r1, #0x1 - bl FUN_02029C8C + bl SealCase_GetCapsuleI mov r1, #0x0 - bl FUN_02029CC8 - bl FUN_02029CE0 + bl Capsule_GetSealI + bl Seal_GetId lsl r0, r0, #0x18 lsr r0, r0, #0x18 bl FUN_02085FD0 @@ -807,12 +898,12 @@ _02085FDE: mov r0, #0xa add r1, r4, #0x0 mul r1, r0 - ldr r0, _02085FF0 ; =UNK_020FCAEA + ldr r0, _02085FF0 ; =UNK_020FCAE8 + 2 ldrb r0, [r0, r1] pop {r4, pc} nop _02085FEC: .word 0x0000032A -_02085FF0: .word UNK_020FCAEA +_02085FF0: .word UNK_020FCAE8 + 2 thumb_func_start FUN_02085FF4 FUN_02085FF4: ; 0x02085FF4 @@ -826,12 +917,12 @@ _02086002: mov r0, #0xa add r1, r4, #0x0 mul r1, r0 - ldr r0, _02086014 ; =UNK_020FCAEC + ldr r0, _02086014 ; =UNK_020FCAE8 + 4 ldrb r0, [r0, r1] pop {r4, pc} nop _02086010: .word 0x0000032A -_02086014: .word UNK_020FCAEC +_02086014: .word UNK_020FCAE8 + 4 thumb_func_start FUN_02086018 FUN_02086018: ; 0x02086018 @@ -845,12 +936,12 @@ _02086026: mov r0, #0xa add r1, r4, #0x0 mul r1, r0 - ldr r0, _02086038 ; =UNK_020FCAED + ldr r0, _02086038 ; =UNK_020FCAE8 + 5 ldrb r0, [r0, r1] pop {r4, pc} nop _02086034: .word 0x0000032A -_02086038: .word UNK_020FCAED +_02086038: .word UNK_020FCAE8 + 5 thumb_func_start FUN_0208603C FUN_0208603C: ; 0x0208603C @@ -864,12 +955,12 @@ _0208604A: mov r0, #0xa add r1, r4, #0x0 mul r1, r0 - ldr r0, _0208605C ; =UNK_020FCAEE + ldr r0, _0208605C ; =UNK_020FCAE8 + 6 ldrh r0, [r0, r1] pop {r4, pc} nop _02086058: .word 0x0000032A -_0208605C: .word UNK_020FCAEE +_0208605C: .word UNK_020FCAE8 + 6 thumb_func_start FUN_02086060 FUN_02086060: ; 0x02086060 @@ -883,9 +974,9 @@ _0208606E: mov r0, #0xa add r1, r4, #0x0 mul r1, r0 - ldr r0, _02086080 ; =UNK_020FCAF0 + ldr r0, _02086080 ; =UNK_020FCAE8 + 8 ldrb r0, [r0, r1] pop {r4, pc} nop _0208607C: .word 0x0000032A -_02086080: .word UNK_020FCAF0 +_02086080: .word UNK_020FCAE8 + 8 diff --git a/arm9/asm/unk_02088F0C.s b/arm9/asm/unk_02088F0C.s index 1c3bc9f2..aab23503 100644 --- a/arm9/asm/unk_02088F0C.s +++ b/arm9/asm/unk_02088F0C.s @@ -552,7 +552,7 @@ FUN_02088F0C: ; 0x02088F0C add r4, r0, #0x0 add r0, r6, #0x0 str r5, [r4, #0x0] - bl FUN_020139D8 + bl EasyChatManager_new str r0, [r4, #0x4] mov r3, #0x0 ldr r0, _02088F48 ; =0x0000189E @@ -579,7 +579,7 @@ FUN_02088F4C: ; 0x02088F4C add r4, r0, #0x0 beq _02088F5E ldr r0, [r4, #0x4] - bl FUN_02013A10 + bl EasyChatManager_delete add r0, r4, #0x0 bl FreeToHeap _02088F5E: @@ -730,7 +730,7 @@ FUN_02089050: ; 0x02089050 str r0, [sp, #0xc] ldr r0, _020890BC ; =0x00000189 mov r1, #0x0 - bl FUN_02013A9C + bl GetECWordIndexByPair str r0, [sp, #0x8] mov r7, #0x0 ldr r0, [sp, #0x4] @@ -789,7 +789,7 @@ FUN_020890C4: ; 0x020890C4 str r0, [sp, #0x10] ldr r0, _02089144 ; =0x00000186 mov r1, #0x0 - bl FUN_02013A9C + bl GetECWordIndexByPair add r6, r0, #0x0 add r0, r6, #0x5 lsl r0, r0, #0x10 @@ -1070,7 +1070,7 @@ FUN_020892CC: ; 0x020892CC add r1, #0x68 ldrh r1, [r1, #0x0] add r2, r3, #0x0 - bl FUN_02013A30 + bl EasyChatManager_ReadWordIntoString pop {r4, pc} .balign 4 @@ -1112,7 +1112,7 @@ FUN_02089310: ; 0x02089310 add r1, r0, #0x0 ldr r0, [r5, #0x4] add r2, r4, #0x0 - bl FUN_02013A30 + bl EasyChatManager_ReadWordIntoString _02089330: pop {r4-r6, pc} nop diff --git a/arm9/global.inc b/arm9/global.inc index c039fd35..8f1f4448 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -566,9 +566,9 @@ .extern BufferPoketchAppName .extern BufferTrainerClassName .extern BufferTrainerClassNameWithArticle -.extern BufferTrainerClassName2 -.extern FUN_0200B10C -.extern FUN_0200B144 +.extern BufferTrainerClassNameFromDataStruct +.extern BufferTrainerName +.extern BufferTrainerNameFromDataStruct .extern BufferUndergroundItemName .extern BufferUndergroundItemNameWithArticle .extern BufferUndergroundTrapName @@ -594,13 +594,13 @@ .extern BufferFashionName .extern BufferFashionNameWithArticle .extern BufferContestBackgroundName -.extern FUN_0200B708 +.extern BufferEasyChatWord .extern BufferMonthNameAbbr -.extern FUN_0200B7A8 +.extern ScrStrBufs_UpperFirstChar .extern StringExpandPlaceholders -.extern FUN_0200B84C -.extern FUN_0200B870 -.extern FUN_0200B990 +.extern ScrStrBufs_ResetBuffers +.extern MessagePrinter_new +.extern MessagePrinter_delete .extern FUN_0200B9A8 .extern FUN_0200B9EC .extern FUN_0200BA78 @@ -903,11 +903,11 @@ .extern MailMsg_SetMsgBankAndNum .extern MailMsg_SetFieldI .extern MailMsg_SetTrailingFieldsEmpty -.extern FUN_020139D8 -.extern FUN_02013A10 -.extern FUN_02013A30 -.extern FUN_02013A58 -.extern FUN_02013A9C +.extern EasyChatManager_new +.extern EasyChatManager_delete +.extern EasyChatManager_ReadWordIntoString +.extern GetECWordIntoStringByIndex +.extern GetECWordIndexByPair .extern FUN_02013B28 .extern FUN_02013B2C .extern FUN_02013B5C @@ -1407,7 +1407,7 @@ .extern StringCat .extern StrAddChar .extern StrUpperFirstChar -.extern FUN_02022048 +.extern StringCat_HandleTrainerName .extern FUN_020220C4 .extern FUN_0202212C .extern FUN_02022144 @@ -1959,16 +1959,16 @@ .extern FUN_02029B90 .extern FUN_02029C00 .extern FUN_02029C08 -.extern FUN_02029C58 -.extern FUN_02029C60 -.extern FUN_02029C74 -.extern FUN_02029C80 -.extern FUN_02029C8C -.extern FUN_02029CA4 -.extern FUN_02029CC8 -.extern FUN_02029CE0 -.extern FUN_02029CE4 -.extern FUN_02029CE8 +.extern Sav2_SealCase_sizeof +.extern Sav2_SealCase_init +.extern CapsuleArray_copy +.extern Sav2_SealCase_get +.extern SealCase_GetCapsuleI +.extern SealCase_SetCapsuleI +.extern Capsule_GetSealI +.extern Seal_GetId +.extern Seal_GetXCoord +.extern Seal_GetYCoord .extern FUN_02029CEC .extern FUN_02029CF4 .extern FUN_02029CF8 @@ -4797,24 +4797,24 @@ .extern FUN_020698E0 .extern FUN_020698E8 .extern FUN_020699A4 -.extern FUN_02069A64 -.extern FUN_02069AEC +.extern CopyBoxPokemonToPokemon +.extern Party_GetMaxLevel .extern SpeciesToSinnohDexNo -.extern FUN_02069B60 -.extern FUN_02069B88 -.extern FUN_02069BA0 -.extern FUN_02069BB4 -.extern FUN_02069BC8 -.extern FUN_02069BE4 -.extern FUN_02069BFC -.extern FUN_02069C4C -.extern FUN_02069CF4 -.extern FUN_02069D50 -.extern FUN_02069DC8 -.extern FUN_02069E74 -.extern FUN_02069E94 -.extern FUN_02069EC4 -.extern FUN_02069ECC +.extern SinnohDexNoToSpecies +.extern CopyPokemonToPokemon +.extern CopyPokemonToBoxPokemon +.extern CopyBoxPokemonToBoxPokemon +.extern MonGetFlavorPreference +.extern GetFlavorPreferenceFromPID +.extern Species_LoadLearnsetTable +.extern Party_GivePokerusAtRandom +.extern Party_MaskMonsWithPokerus +.extern Party_UpdatePokerus +.extern Party_SpreadPokerus +.extern Pokemon_HasPokerus +.extern Pokemon_IsImmuneToPokerus +.extern Pokemon_UpdateArceusForme +.extern BoxMon_UpdateArceusForme .extern GetArceusTypeByHeldItemEffect .extern LoadWotbl_HandleAlternateForme .extern FUN_02069FB0 @@ -4831,19 +4831,19 @@ .extern FUN_0206A998 .extern FUN_0206A9AC .extern FUN_0206AA30 -.extern FUN_0206AA84 +.extern Pokemon_RemoveCapsule .extern RestoreBoxMonPP .extern LoadAllWazaTbl .extern GetWazaAttr .extern WazaGetMaxPp .extern GetAttrFromWazaTbl -.extern FUN_0206ABC4 +.extern EnemyTrainerSet_Init .extern TrainerData_GetAttr -.extern FUN_0206ACD4 -.extern FUN_0206AD4C +.extern TrainerMessageWithIdPairExists +.extern GetTrainerMessageByIdPair .extern TrainerData_ReadTrData .extern TrainerData_ReadTrPoke -.extern FUN_0206AE00 +.extern TrainerClass_GetGenderOrTrainerCount .extern PCStorage_init .extern PCStorage_sizeof .extern PCStorage_PlaceMonInFirstEmptySlotInAnyBox diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index f9672ea0..b665a9b3 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -14436,7 +14436,7 @@ MOD05_021EC4F0: ; 0x021EC4F0 _021EC544: ldr r1, [sp, #4] add r0, r4, #0 - bl FUN_02069BB4 + bl CopyBoxPokemonToBoxPokemon add r0, r5, #0 mov r1, #0 bl DayCareMon_SetSteps @@ -14599,7 +14599,7 @@ MOD05_021EC668: ; 0x021EC668 lsr r7, r0, #0x10 add r0, r5, #0 add r1, r4, #0 - bl FUN_02069A64 + bl CopyBoxPokemonToPokemon add r0, r4, #0 mov r1, #0xa0 mov r2, #0 @@ -14680,7 +14680,7 @@ MOD05_021EC744: ; 0x021EC744 add r4, r0, #0 add r0, r6, #0 add r1, r4, #0 - bl FUN_02069BA0 + bl CopyPokemonToBoxPokemon add r0, r4, #0 mov r1, #8 mov r2, #0 @@ -15240,7 +15240,7 @@ MOD05_021ECB6C: ; 0x021ECB6C ldr r0, [sp, #0x18] ldr r1, [sp, #0xc] add r2, #0x30 - bl FUN_02069BFC + bl Species_LoadLearnsetTable lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x14] @@ -16911,7 +16911,7 @@ _021ED7CE: bl SetMonData add r0, r6, #0 add r1, r4, #0 - bl FUN_02069B88 + bl CopyPokemonToPokemon ldr r0, [sp, #0x10] bl String_dtor add r0, r6, #0 diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index 2af29137..1337a593 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -5094,7 +5094,7 @@ _0223BC5A: str r0, [r1, #0x20] ldr r0, [sp, #0x2c] ldr r1, [r5, #0xc] - bl FUN_0206ABC4 + bl EnemyTrainerSet_Init add r0, sp, #0x30 str r0, [sp] ldr r1, [sp, #0x20] @@ -5531,7 +5531,7 @@ _0223BFFE: str r0, [r1, #0x20] ldr r0, [sp, #0x24] ldr r1, [r5, #0xc] - bl FUN_0206ABC4 + bl EnemyTrainerSet_Init add r0, sp, #0x28 str r0, [sp] ldr r1, [sp, #0x18] @@ -5841,7 +5841,7 @@ _0223C2A2: str r0, [r1, #0x20] ldr r0, [r4] ldr r1, [r5, #0xc] - bl FUN_0206ABC4 + bl EnemyTrainerSet_Init add r0, sp, #0x28 str r0, [sp] ldr r1, [sp, #0x1c] @@ -8177,7 +8177,7 @@ _0223D456: str r0, [r4, r1] b _0223D472 _0223D468: - bl FUN_02029C80 + bl Sav2_SealCase_get mov r1, #0x21 lsl r1, r1, #4 str r0, [r4, r1] @@ -22218,7 +22218,7 @@ _022445A6: ldr r0, [sp, #4] bl GetPartyMonByIndex add r1, r4, #0 - bl FUN_02069B88 + bl CopyPokemonToPokemon add r0, r4, #0 mov r1, #0xa0 mov r2, #0 @@ -31096,10 +31096,10 @@ MOD06_0224891C: ; 0x0224891C bl CreateInGameTradeMon ldr r1, [sp, #0x20] add r0, r7, #0 - bl FUN_02069B88 + bl CopyPokemonToPokemon ldr r0, [r5, #4] ldr r1, [sp, #0x24] - bl FUN_02069B88 + bl CopyPokemonToPokemon ldr r0, [sp, #0x20] bl FUN_020690E4 str r0, [r4] diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s index 2659dd5c..1a91192a 100644 --- a/arm9/modules/07/asm/module_07.s +++ b/arm9/modules/07/asm/module_07.s @@ -4972,7 +4972,7 @@ MOD07_0221469C: ; 0x0221469C mov r0, #0xf mov r1, #0xe mov r2, #0 - bl FUN_0200B870 + bl MessagePrinter_new str r0, [sp, #0xc] ldr r0, [r6] ldr r0, [r0, #0x24] @@ -5008,7 +5008,7 @@ _022146F6: ldr r0, [sp, #0x10] bl DestroyMsgData ldr r0, [sp, #0xc] - bl FUN_0200B990 + bl MessagePrinter_delete ldr r0, [sp, #8] bl ScrStrBufs_delete add sp, #0x14 @@ -5049,7 +5049,7 @@ MOD07_02214720: ; 0x02214720 add r0, r1, r0 add r0, #0x29 ldrb r0, [r0] - bl FUN_0206AE00 + bl TrainerClass_GetGenderOrTrainerCount str r0, [sp, #0x10] ldr r0, [r4, #0x24] mov r1, #0x10 @@ -5101,7 +5101,7 @@ _022147BC: add r0, r1, r0 add r0, #0x29 ldrb r0, [r0] - bl FUN_0206AE00 + bl TrainerClass_GetGenderOrTrainerCount str r0, [sp, #0x14] ldr r0, [r4, #0x24] mov r1, #0x10 @@ -5134,7 +5134,7 @@ _02214808: add r0, r1, r0 add r0, #0x29 ldrb r0, [r0] - bl FUN_0206AE00 + bl TrainerClass_GetGenderOrTrainerCount str r0, [sp, #0x18] ldr r0, [r4, #0x24] mov r1, #0x10 @@ -5167,7 +5167,7 @@ _02214854: add r0, r1, r0 add r0, #0x29 ldrb r0, [r0] - bl FUN_0206AE00 + bl TrainerClass_GetGenderOrTrainerCount str r0, [sp, #0x1c] ldr r0, [r4, #0x24] mov r1, #0x10 @@ -5205,12 +5205,12 @@ _022148A0: bne _022148EA add r0, #0x5d ldrb r0, [r0] - bl FUN_0206AE00 + bl TrainerClass_GetGenderOrTrainerCount str r0, [sp, #8] ldr r0, [r4] add r0, #0xc5 ldrb r0, [r0] - bl FUN_0206AE00 + bl TrainerClass_GetGenderOrTrainerCount str r0, [sp, #0xc] ldr r0, [r4, #0x18] add r1, r5, #0 @@ -5224,12 +5224,12 @@ _022148A0: _022148EA: add r0, #0x29 ldrb r0, [r0] - bl FUN_0206AE00 + bl TrainerClass_GetGenderOrTrainerCount str r0, [sp, #8] ldr r0, [r4] add r0, #0x91 ldrb r0, [r0] - bl FUN_0206AE00 + bl TrainerClass_GetGenderOrTrainerCount str r0, [sp, #0xc] ldr r0, [r4, #0x14] add r1, r5, #0 diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s index bd4cc319..b6af83a9 100644 --- a/arm9/modules/08/asm/module_08.s +++ b/arm9/modules/08/asm/module_08.s @@ -45124,10 +45124,10 @@ _022282DC: _022282F8: ldr r0, [sp, #0x14] add r1, r5, #0 - bl FUN_02029CC8 + bl Capsule_GetSealI add r7, r0, #0 beq _02228360 - bl FUN_02029CE0 + bl Seal_GetId cmp r0, #0 beq _02228360 cmp r0, #0x51 @@ -45193,10 +45193,10 @@ _02228376: _02228384: ldr r0, [sp, #0x18] add r1, r5, #0 - bl FUN_02029CC8 + bl Capsule_GetSealI add r7, r0, #0 beq _022283EC - bl FUN_02029CE0 + bl Seal_GetId cmp r0, #0 beq _022283EC cmp r0, #0x51 @@ -45262,10 +45262,10 @@ _02228402: _02228410: ldr r0, [sp, #0x1c] add r1, r5, #0 - bl FUN_02029CC8 + bl Capsule_GetSealI add r7, r0, #0 beq _02228478 - bl FUN_02029CE0 + bl Seal_GetId cmp r0, #0 beq _02228478 cmp r0, #0x51 @@ -45331,10 +45331,10 @@ _0222848E: _0222849C: ldr r0, [sp, #0x20] add r1, r5, #0 - bl FUN_02029CC8 + bl Capsule_GetSealI add r7, r0, #0 beq _02228504 - bl FUN_02029CE0 + bl Seal_GetId cmp r0, #0 beq _02228504 cmp r0, #0x51 @@ -45765,13 +45765,13 @@ MOD08_022287C4: ; 0x022287C4 add r1, sp, #0 bl MOD08_02228710 ldr r0, [r4, #0x14] - bl FUN_02029CE0 + bl Seal_GetId bl FUN_02086018 ldr r0, [r4, #0x14] - bl FUN_02029CE4 + bl Seal_GetXCoord add r6, r0, #0 ldr r0, [r4, #0x14] - bl FUN_02029CE8 + bl Seal_GetYCoord sub r6, #0xbe lsl r1, r6, #0x10 asr r3, r1, #0x10 @@ -49049,10 +49049,10 @@ MOD08_0222A02C: ; 0x0222A02C MOD08_0222A058: ; 0x0222A058 push {r3, r4, r5, lr} add r5, r0, #0 - bl FUN_02029CE4 + bl Seal_GetXCoord add r4, r0, #0 add r0, r5, #0 - bl FUN_02029CE8 + bl Seal_GetYCoord add r1, r0, #0 add r0, r4, #0 mov r2, #0xbe @@ -49077,7 +49077,7 @@ _0222A084: sub r1, r1, #1 bne _0222A084 add r0, r4, #0 - bl FUN_02029CE0 + bl Seal_GetId lsl r0, r0, #0x18 lsr r0, r0, #0x18 bl FUN_02086018 diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s index 59100716..e98eadea 100644 --- a/arm9/modules/09/asm/module_09.s +++ b/arm9/modules/09/asm/module_09.s @@ -2368,7 +2368,7 @@ MOD09_02213138: ; 0x02213138 mov r0, #0xf ldr r3, [r3, #0xc] mov r1, #0xe - bl FUN_0200B870 + bl MessagePrinter_new ldr r1, _02213184 ; =0x00001FA4 str r0, [r4, r1] ldr r0, [r4] @@ -2399,7 +2399,7 @@ MOD09_02213190: ; 0x02213190 bl DestroyMsgData ldr r0, _022131BC ; =0x00001FA4 ldr r0, [r4, r0] - bl FUN_0200B990 + bl MessagePrinter_delete ldr r0, _022131C0 ; =0x00001FAC ldr r0, [r4, r0] bl ScrStrBufs_delete @@ -3474,7 +3474,7 @@ MOD09_022139D4: ; 0x022139D4 ldr r0, _02213B74 ; =0x00001FAC mov r1, #0 ldr r0, [r5, r0] - bl FUN_0200B144 + bl BufferTrainerNameFromDataStruct ldr r1, _02213B74 ; =0x00001FAC add r2, r4, #0 ldr r0, [r5, r1] @@ -14095,7 +14095,7 @@ MOD09_022192A4: ; 0x022192A4 ldr r3, [r3, #0xc] mov r1, #0xe mov r2, #0 - bl FUN_0200B870 + bl MessagePrinter_new str r0, [r4, #0xc] ldr r0, [r4] ldr r0, [r0, #0xc] @@ -14117,7 +14117,7 @@ MOD09_022192E4: ; 0x022192E4 ldr r0, [r4, #0x10] bl DestroyMsgData ldr r0, [r4, #0xc] - bl FUN_0200B990 + bl MessagePrinter_delete ldr r0, [r4, #0x14] bl ScrStrBufs_delete ldr r0, [r4, #0x18] diff --git a/arm9/modules/11/asm/module_11_thumb1.s b/arm9/modules/11/asm/module_11_thumb1.s index bbcb304d..30ee9995 100644 --- a/arm9/modules/11/asm/module_11_thumb1.s +++ b/arm9/modules/11/asm/module_11_thumb1.s @@ -706,7 +706,7 @@ MOD11_0222DB50: ; 0x0222DB50 mov r1, #1 mov r2, #0xf mov r3, #5 - bl FUN_0200B870 + bl MessagePrinter_new mov r1, #0x6a lsl r1, r1, #2 str r0, [r4, r1] @@ -1369,7 +1369,7 @@ _0222E1AC: mov r0, #0x6a lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_0200B990 + bl MessagePrinter_delete mov r0, #2 bl FUN_02002CF8 ldr r0, [r4, #0x1c] diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s index a962fbf2..15f4c237 100644 --- a/arm9/modules/11/asm/module_11_thumb2.s +++ b/arm9/modules/11/asm/module_11_thumb2.s @@ -4694,7 +4694,7 @@ MOD11_0223158C: ; 0x0223158C lsl r0, r0, #0x18 lsr r4, r0, #0x18 add r0, r5, #0 - bl FUN_02069AEC + bl Party_GetMaxLevel ldr r1, _022315BC ; =MOD11_0225DC1C lsl r0, r0, #2 ldrb r1, [r1, r4] @@ -4914,7 +4914,7 @@ _0223174C: add r0, r4, #0 add r1, r7, #0 mov r3, #5 - bl FUN_0206AD4C + bl GetTrainerMessageByIdPair add r0, r6, #0 mov r1, #0xff bl FUN_02019620 @@ -6187,7 +6187,7 @@ MOD11_022321AC: ; 0x022321AC add r2, r0, #0 ldr r0, [r5, #0x14] add r1, r4, #0 - bl BufferTrainerClassName2 + bl BufferTrainerClassNameFromDataStruct pop {r3, r4, r5, pc} thumb_func_start MOD11_022321C4 @@ -6200,7 +6200,7 @@ MOD11_022321C4: ; 0x022321C4 add r2, r0, #0 ldr r0, [r5, #0x14] add r1, r4, #0 - bl FUN_0200B144 + bl BufferTrainerNameFromDataStruct pop {r3, r4, r5, pc} thumb_func_start MOD11_022321DC @@ -24749,7 +24749,7 @@ _0223B414: lsl r1, r1, #0x18 ldr r0, [sp] lsr r1, r1, #0x18 - bl FUN_02069CF4 + bl Party_MaskMonsWithPokerus cmp r0, #0 beq _0223B42E lsl r0, r4, #0x11 @@ -38100,9 +38100,9 @@ MOD11_02241CF0: ; 0x02241CF0 mov r1, #0 bl MOD11_0222FF88 add r6, r0, #0 - bl FUN_02069C4C + bl Party_GivePokerusAtRandom add r0, r6, #0 - bl FUN_02069DC8 + bl Party_SpreadPokerus _02241D16: cmp r4, #0 beq _02241D20 @@ -45181,7 +45181,7 @@ _022452F8: ldr r0, [sp, #8] mov r1, #0xd mov r2, #5 - bl FUN_0206ACD4 + bl TrainerMessageWithIdPairExists cmp r0, #0 beq _02245334 mov r1, #0x85 @@ -45219,7 +45219,7 @@ _0224533C: ldr r0, [sp, #8] mov r1, #0xe mov r2, #5 - bl FUN_0206ACD4 + bl TrainerMessageWithIdPairExists cmp r0, #0 beq _0224537C ldr r1, _0224548C ; =0x00002E7D @@ -45276,7 +45276,7 @@ _022453C6: ldr r0, [sp, #8] mov r1, #0xf mov r2, #5 - bl FUN_0206ACD4 + bl TrainerMessageWithIdPairExists cmp r0, #0 beq _022453F0 ldr r1, _0224548C ; =0x00002E7D @@ -45340,7 +45340,7 @@ _0224543A: ldr r0, [sp, #8] mov r1, #0x10 mov r2, #5 - bl FUN_0206ACD4 + bl TrainerMessageWithIdPairExists cmp r0, #0 beq _02245472 ldr r1, _0224548C ; =0x00002E7D @@ -52971,7 +52971,7 @@ _02248E3A: str r1, [r4, r0] ldr r0, _02248F68 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID mov r1, #0 mvn r1, r1 cmp r0, r1 @@ -53002,7 +53002,7 @@ _02248E76: str r1, [r4, r0] ldr r0, _02248F68 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID mov r1, #0 mvn r1, r1 cmp r0, r1 @@ -53033,7 +53033,7 @@ _02248EB2: str r1, [r4, r0] ldr r0, _02248F68 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID mov r1, #0 mvn r1, r1 cmp r0, r1 @@ -53067,7 +53067,7 @@ _02248EFC: str r1, [r4, r0] ldr r0, _02248F68 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID mov r1, #0 mvn r1, r1 cmp r0, r1 @@ -53108,7 +53108,7 @@ _02248F64: .word 0x00002DB0 _02248F68: .word 0x00002DA8 _02248F6C: ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID mov r1, #0 mvn r1, r1 cmp r0, r1 @@ -54103,7 +54103,7 @@ _02249708: .word 0x00002DCC _0224970C: .word 0x00002DA8 _02249710: ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID mov r1, #0 mvn r1, r1 cmp r0, r1 @@ -54135,7 +54135,7 @@ _0224972C: str r1, [r4, r0] ldr r0, _02249A5C ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID mov r1, #0 mvn r1, r1 cmp r0, r1 @@ -54167,7 +54167,7 @@ _0224976A: str r1, [r4, r0] ldr r0, _02249A5C ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID mov r1, #0 mvn r1, r1 cmp r0, r1 @@ -54199,7 +54199,7 @@ _022497A8: str r1, [r4, r0] ldr r0, _02249A5C ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID mov r1, #0 mvn r1, r1 cmp r0, r1 @@ -54234,7 +54234,7 @@ _022497F4: str r1, [r4, r0] ldr r0, _02249A5C ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID mov r1, #0 mvn r1, r1 cmp r0, r1 @@ -55536,7 +55536,7 @@ _0224A1B6: add r2, r4, r0 ldr r0, _0224A344 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID sub r1, r6, #1 cmp r0, r1 bne _0224A1F6 @@ -55572,7 +55572,7 @@ _0224A1FC: add r2, r4, r0 ldr r0, _0224A344 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID sub r1, r6, #1 cmp r0, r1 bne _0224A23C @@ -55608,7 +55608,7 @@ _0224A242: add r2, r4, r0 ldr r0, _0224A344 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID sub r1, r6, #1 cmp r0, r1 bne _0224A282 @@ -55644,7 +55644,7 @@ _0224A288: add r2, r4, r0 ldr r0, _0224A344 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID sub r1, r6, #1 cmp r0, r1 bne _0224A2C8 @@ -55680,7 +55680,7 @@ _0224A2CE: add r2, r4, r0 ldr r0, _0224A344 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID sub r1, r6, #1 cmp r0, r1 bne _0224A30E @@ -56300,7 +56300,7 @@ _0224A77A: add r2, r4, r0 ldr r0, _0224A874 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID sub r1, r5, #1 cmp r0, r1 ldr r0, _0224A850 ; =0x00003118 @@ -56333,7 +56333,7 @@ _0224A7BC: add r2, r4, r0 ldr r0, _0224A874 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID sub r1, r5, #1 cmp r0, r1 ldr r0, _0224A850 ; =0x00003118 @@ -56366,7 +56366,7 @@ _0224A7FE: add r2, r4, r0 ldr r0, _0224A874 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID sub r1, r5, #1 cmp r0, r1 ldr r0, _0224A850 ; =0x00003118 @@ -56413,7 +56413,7 @@ _0224A878: add r2, r4, r0 ldr r0, _0224AB18 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID sub r1, r5, #1 cmp r0, r1 ldr r0, _0224AB1C ; =0x00003118 @@ -56446,7 +56446,7 @@ _0224A8B0: add r2, r4, r0 ldr r0, _0224AB18 ; =0x00002DA8 ldr r0, [r2, r0] - bl FUN_02069BE4 + bl GetFlavorPreferenceFromPID sub r1, r5, #1 cmp r0, r1 ldr r0, _0224AB1C ; =0x00003118 @@ -71782,7 +71782,7 @@ _022521DC: bl GetPartyMonByIndex add r1, r0, #0 ldr r0, [sp, #0x1c] - bl FUN_02069B88 + bl CopyPokemonToPokemon ldr r0, [r4, #4] ldrb r1, [r5, #0x1c] add r0, r0, r6 @@ -71822,7 +71822,7 @@ _02252232: bl GetPartyMonByIndex add r1, r0, #0 ldr r0, [sp, #0x20] - bl FUN_02069B88 + bl CopyPokemonToPokemon ldr r0, [r4, #4] ldrb r1, [r5, #0x1c] add r0, r0, r7 diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index 7b1720cb..ae226da3 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -8885,7 +8885,7 @@ _021DBC56: lsl r1, r1, #4 ldr r0, [r4] ldr r1, [r5, r1] - bl FUN_02069A64 + bl CopyBoxPokemonToPokemon mov r1, #0x49 lsl r1, r1, #2 ldr r0, [r5, r1] @@ -9038,7 +9038,7 @@ _021DBD8E: lsl r1, r1, #4 ldr r1, [r5, r1] add r0, r7, r6 - bl FUN_02069A64 + bl CopyBoxPokemonToPokemon b _021DBDB0 _021DBDA2: mov r1, #0x1a @@ -9367,7 +9367,7 @@ _021DC034: lsl r1, r1, #4 ldr r0, [sp] ldr r1, [r5, r1] - bl FUN_02069A64 + bl CopyBoxPokemonToPokemon mov r0, #0x1a lsl r0, r0, #4 ldr r0, [r5, r0] @@ -9633,7 +9633,7 @@ _021DC254: cmp r0, r1 bne _021DC26A ldr r0, [r4] - bl FUN_02069ECC + bl BoxMon_UpdateArceusForme _021DC26A: add sp, #4 pop {r3, r4, r5, r6} @@ -19435,13 +19435,13 @@ _021E0DAC: mov r1, #6 mov r2, #0xf mov r3, #0xa - bl FUN_0200B870 + bl MessagePrinter_new str r0, [r5, #0x18] mov r0, #1 mov r1, #2 mov r2, #0xf mov r3, #0xa - bl FUN_0200B870 + bl MessagePrinter_new str r0, [r5, #0x1c] mov r0, #0xa add r3, r5, #0 @@ -19516,12 +19516,12 @@ _021E0E72: ldr r0, [r5, #0x18] cmp r0, #0 beq _021E0E7C - bl FUN_0200B990 + bl MessagePrinter_delete _021E0E7C: ldr r0, [r5, #0x1c] cmp r0, #0 beq _021E0E86 - bl FUN_0200B990 + bl MessagePrinter_delete _021E0E86: ldr r0, [r5, #0x44] cmp r0, #0 @@ -21555,7 +21555,7 @@ _021E1DBC: mov r1, #0xd mov r2, #4 mov r3, #0xa - bl FUN_0200B870 + bl MessagePrinter_new str r0, [r5, #0x44] mov r0, #0x7d lsl r0, r0, #2 @@ -21687,7 +21687,7 @@ _021E1F58: ldr r0, [r5, #0x44] cmp r0, #0 beq _021E1F62 - bl FUN_0200B990 + bl MessagePrinter_delete _021E1F62: ldr r0, _021E1F94 ; =0x00004BFC ldr r0, [r5, r0] diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s index d8172549..6c23c898 100644 --- a/arm9/modules/15/asm/module_15.s +++ b/arm9/modules/15/asm/module_15.s @@ -5154,7 +5154,7 @@ MOD15_021D9C58: ; 0x021D9C58 bl MOD15_021D9C08 ldr r1, [r5, #0x4c] add r0, r6, #0 - bl FUN_02013A58 + bl GetECWordIntoStringByIndex ldr r1, [r5, #0x4c] mov r0, #1 mov r2, #0 diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s index 081a836b..b611c883 100644 --- a/arm9/modules/18/asm/module_18.s +++ b/arm9/modules/18/asm/module_18.s @@ -7720,7 +7720,7 @@ _0223D212: bl BufferUndergroundItemNameWithArticle add r0, r5, #0 mov r1, #2 - bl FUN_0200B7A8 + bl ScrStrBufs_UpperFirstChar bl MOD18_0223D638 bl MOD18_0224DBB4 mov r1, #0x5f @@ -42040,11 +42040,11 @@ MOD18_0224DF40: ; 0x0224DF40 thumb_func_start MOD18_0224DF54 MOD18_0224DF54: ; 0x0224DF54 - ldr r3, _0224DF5C ; =FUN_0200B7A8 + ldr r3, _0224DF5C ; =ScrStrBufs_UpperFirstChar ldr r0, [r0, #0x28] bx r3 nop -_0224DF5C: .word FUN_0200B7A8 +_0224DF5C: .word ScrStrBufs_UpperFirstChar thumb_func_end MOD18_0224DF54 thumb_func_start MOD18_0224DF60 diff --git a/arm9/modules/23/asm/module_23.s b/arm9/modules/23/asm/module_23.s index f3a4f14c..5550c76b 100644 --- a/arm9/modules/23/asm/module_23.s +++ b/arm9/modules/23/asm/module_23.s @@ -1032,7 +1032,7 @@ MOD23_02254F94: ; 0x02254F94 _02254FCE: lsl r0, r4, #0x10 lsr r0, r0, #0x10 - bl FUN_02069B60 + bl SinnohDexNoToSpecies add r4, r0, #0 _02254FD8: cmp r4, #0 diff --git a/arm9/modules/62/asm/module_62.s b/arm9/modules/62/asm/module_62.s index 79190f60..76088322 100644 --- a/arm9/modules/62/asm/module_62.s +++ b/arm9/modules/62/asm/module_62.s @@ -952,7 +952,7 @@ _0222DC90: ldr r0, [r0, #0x20] ldr r2, [r7, r2] add r1, sp, #0 - bl FUN_02029CA4 + bl SealCase_SetCapsuleI add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 @@ -3017,18 +3017,18 @@ _0222EC9A: add r7, #8 ldr r0, [r7, r6] add r1, sp, #0x10 - bl FUN_02029C74 + bl CapsuleArray_copy add r0, r5, #0 str r0, [sp, #4] add r0, #8 str r0, [sp, #4] ldr r0, [r0, r4] ldr r1, [r7, r6] - bl FUN_02029C74 + bl CapsuleArray_copy ldr r1, [sp, #4] add r0, sp, #0x10 ldr r1, [r1, r4] - bl FUN_02029C74 + bl CapsuleArray_copy add r0, r5, #0 bl MOD62_0222EC28 add sp, #0x28 @@ -4363,14 +4363,14 @@ MOD62_0222F778: ; 0x0222F778 mov r0, #0xf1 lsl r0, r0, #2 ldr r0, [r1, r0] - ldr r3, _0222F78C ; =FUN_02029C74 + ldr r3, _0222F78C ; =CapsuleArray_copy lsl r0, r0, #3 add r0, r1, r0 ldr r0, [r0, #8] add r1, #0x68 bx r3 .align 2, 0 -_0222F78C: .word FUN_02029C74 +_0222F78C: .word CapsuleArray_copy thumb_func_end MOD62_0222F778 thumb_func_start MOD62_0222F790 @@ -4379,14 +4379,14 @@ MOD62_0222F790: ; 0x0222F790 add r2, r0, #0 lsl r1, r1, #2 ldr r1, [r2, r1] - ldr r3, _0222F7A4 ; =FUN_02029C74 + ldr r3, _0222F7A4 ; =CapsuleArray_copy lsl r1, r1, #3 add r1, r2, r1 add r0, #0x68 ldr r1, [r1, #8] bx r3 .align 2, 0 -_0222F7A4: .word FUN_02029C74 +_0222F7A4: .word CapsuleArray_copy thumb_func_end MOD62_0222F790 thumb_func_start MOD62_0222F7A8 @@ -4466,7 +4466,7 @@ MOD62_0222F80C: ; 0x0222F80C add r1, #0x64 ldr r0, [r0, #4] ldr r1, [r5, r1] - bl FUN_02069B88 + bl CopyPokemonToPokemon pop {r3, r4, r5, r6, r7, pc} _0222F832: ldr r1, [r5] @@ -4487,7 +4487,7 @@ _0222F83E: ldr r1, _0222F86C ; =0x00000428 add r0, r7, #0 ldr r1, [r5, r1] - bl FUN_02069B88 + bl CopyPokemonToPokemon pop {r3, r4, r5, r6, r7, pc} _0222F85C: ldr r1, [r5] @@ -4512,8 +4512,8 @@ MOD62_0222F870: ; 0x0222F870 _0222F87A: add r0, r6, #0 add r1, r4, #0 - bl FUN_02029CC8 - bl FUN_02029CE0 + bl Capsule_GetSealI + bl Seal_GetId cmp r0, #0 beq _0222F88C add r5, r5, #1 @@ -6516,7 +6516,7 @@ _02230860: add r0, r2, r0 ldr r5, [r0, #4] ldr r0, [r2, #0x20] - bl FUN_02029C8C + bl SealCase_GetCapsuleI add r2, r0, #0 add r0, r5, #0 mov r1, #0xaa diff --git a/arm9/modules/67/asm/module_67.s b/arm9/modules/67/asm/module_67.s index d71a7476..a72ccebc 100644 --- a/arm9/modules/67/asm/module_67.s +++ b/arm9/modules/67/asm/module_67.s @@ -1742,7 +1742,7 @@ _021D828A: mov r1, #1 lsl r2, r2, #0x10 lsr r2, r2, #0x11 - bl FUN_0200B10C + bl BufferTrainerName _021D82BA: cmp r5, #0xe bhi _021D82CA @@ -2302,7 +2302,7 @@ MOD67_021D86DC: ; 0x021D86DC ldrh r2, [r4, #4] ldr r0, [r5, #0x54] mov r1, #1 - bl FUN_0200B10C + bl BufferTrainerName ldr r0, [r5, #0x54] ldr r1, [r5, #0x58] add r2, r7, #0 @@ -2343,7 +2343,7 @@ MOD67_021D873C: ; 0x021D873C ldrh r2, [r4, #4] ldr r0, [r5, #0x54] mov r1, #0 - bl FUN_0200B10C + bl BufferTrainerName ldr r0, [r5, #0x54] ldr r1, [r5, #0x58] add r2, r7, #0 @@ -2384,7 +2384,7 @@ MOD67_021D8790: ; 0x021D8790 ldrh r2, [r4, #4] ldr r0, [r5, #0x54] mov r1, #0 - bl FUN_0200B10C + bl BufferTrainerName ldr r0, [r5, #0x54] ldr r1, [r5, #0x58] add r2, r7, #0 diff --git a/arm9/modules/68/asm/module_68.s b/arm9/modules/68/asm/module_68.s index c201069e..dfab7ef8 100644 --- a/arm9/modules/68/asm/module_68.s +++ b/arm9/modules/68/asm/module_68.s @@ -441,7 +441,7 @@ MOD68_021D7870: ; 0x021D7870 mov r1, #2 mov r2, #0 mov r3, #0x24 - bl FUN_0200B870 + bl MessagePrinter_new add r1, r4, #0 add r1, #0xcc str r0, [r1] @@ -464,7 +464,7 @@ MOD68_021D78A8: ; 0x021D78A8 add r0, r4, #0 add r0, #0xcc ldr r0, [r0] - bl FUN_0200B990 + bl MessagePrinter_delete add r4, #0xc8 ldr r0, [r4] bl ScrStrBufs_delete diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index 4f418110..b77c8662 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -6329,12 +6329,12 @@ MOD71_022309E8: ; 0x022309E8 add r1, r6, #0 bl GetPartyMonByIndex add r1, r7, #0 - bl FUN_02069B88 + bl CopyPokemonToPokemon ldr r0, [sp, #8] ldr r1, [sp, #0xc] bl GetPartyMonByIndex add r1, r4, #0 - bl FUN_02069B88 + bl CopyPokemonToPokemon add r0, r4, #0 mov r1, #0x4c mov r2, #0 @@ -6359,13 +6359,13 @@ _02230A40: mov r3, #0 bl FUN_0208089C add r0, r4, #0 - bl FUN_0206AA84 + bl Pokemon_RemoveCapsule ldr r1, [r5, #0x3c] add r0, r7, #0 - bl FUN_02069B88 + bl CopyPokemonToPokemon ldr r1, [r5, #0x40] add r0, r4, #0 - bl FUN_02069B88 + bl CopyPokemonToPokemon bl FUN_02031190 mov r1, #1 eor r0, r1 @@ -6390,13 +6390,13 @@ _02230A98: bl GetPartyMonByIndex add r1, r0, #0 add r0, r4, #0 - bl FUN_02069B88 + bl CopyPokemonToPokemon ldr r0, [sp, #8] ldr r1, [sp, #0xc] bl GetPartyMonByIndex add r1, r0, #0 add r0, r7, #0 - bl FUN_02069B88 + bl CopyPokemonToPokemon ldr r0, [r5, #0x1c] add r1, r4, #0 bl MOD71_02230AE4 diff --git a/arm9/modules/75/asm/module_75.s b/arm9/modules/75/asm/module_75.s index f6d498ce..63f45d1d 100644 --- a/arm9/modules/75/asm/module_75.s +++ b/arm9/modules/75/asm/module_75.s @@ -446,7 +446,7 @@ MOD75_021E6F00: ; 0x021E6F00 mov r0, #0x11 lsl r0, r0, #4 ldr r0, [r4, r0] - bl FUN_0200B990 + bl MessagePrinter_delete mov r0, #0x46 lsl r0, r0, #2 ldr r0, [r4, r0] @@ -946,7 +946,7 @@ MOD75_021E737C: ; 0x021E737C mov r1, #2 mov r2, #0 mov r3, #6 - bl FUN_0200B870 + bl MessagePrinter_new mov r1, #0x11 lsl r1, r1, #4 str r0, [r4, r1] diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index 8e74df8f..29a329f0 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -5624,7 +5624,7 @@ MOD80_0223022C: ; 0x0223022C str r0, [r5, r1] sub r1, #0x1c ldr r0, [r5, r1] - bl FUN_0200B84C + bl ScrStrBufs_ResetBuffers ldr r0, _022302B4 ; =0x0000011E ldrb r2, [r4, r0] cmp r2, #0 @@ -13583,7 +13583,7 @@ _022342B0: add r0, #0xbc ldr r0, [r0] add r1, r5, #0 - bl FUN_02069A64 + bl CopyBoxPokemonToPokemon _022342BC: ldr r0, [r4] ldr r0, [r0, #0x1c] @@ -14618,7 +14618,7 @@ MOD80_02234AC0: ; 0x02234AC0 push {r4, lr} add r4, r0, #0 add r0, #0xd4 - bl FUN_0206AA84 + bl Pokemon_RemoveCapsule add r0, r4, #0 add r0, #0xd4 bl MOD80_0222DBC4 @@ -14939,7 +14939,7 @@ MOD80_02234CFC: ; 0x02234CFC push {r4, lr} add r4, r0, #0 add r0, #0xd4 - bl FUN_0206AA84 + bl Pokemon_RemoveCapsule add r0, r4, #0 add r0, #0xc4 ldr r1, [r0] @@ -16076,7 +16076,7 @@ MOD80_02235534: ; 0x02235534 ldr r0, [r0, #0xc] bl PCStorage_GetMonByIndexPair add r1, r4, #0 - bl FUN_02069A64 + bl CopyBoxPokemonToPokemon add r2, r5, #0 ldr r0, [r5] add r2, #0xb8 @@ -16104,7 +16104,7 @@ _02235590: ldr r0, [r0, #8] bl GetPartyMonByIndex add r4, r0, #0 - bl FUN_0206AA84 + bl Pokemon_RemoveCapsule add r2, r5, #0 ldr r0, [r5] add r2, #0xb8 @@ -17720,7 +17720,7 @@ MOD80_02236218: ; 0x02236218 bl GetPartyMonByIndex add r1, r0, #0 add r0, r4, #0 - bl FUN_02069B88 + bl CopyPokemonToPokemon add sp, #8 pop {r3, r4, r5, pc} _02236248: diff --git a/arm9/src/mail_message.c b/arm9/src/mail_message.c index 4d1b75c6..a5837d89 100644 --- a/arm9/src/mail_message.c +++ b/arm9/src/mail_message.c @@ -16,7 +16,7 @@ struct UnkStruct_020ED556 u16 unk_8; }; -extern u16 FUN_02013A9C(s16 bank, u16 num); +extern u16 GetECWordIndexByPair(s16 bank, u16 num); const u16 UNK_020ED54C[] = { 397, @@ -68,9 +68,9 @@ void MailMsg_init_fromTemplate(struct MailMessage * mailMsg, u32 a1) MailMsg_init_withBank(mailMsg, UNK_020ED556[a1].unk_0); mailMsg->msg_no = UNK_020ED556[a1].unk_1; if (UNK_020ED556[a1].unk_2 != -1) - mailMsg->fields[0] = FUN_02013A9C(UNK_020ED556[a1].unk_2, UNK_020ED556[a1].unk_4); + mailMsg->fields[0] = GetECWordIndexByPair(UNK_020ED556[a1].unk_2, UNK_020ED556[a1].unk_4); if (UNK_020ED556[a1].unk_6 != -1) - mailMsg->fields[1] = FUN_02013A9C(UNK_020ED556[a1].unk_6, UNK_020ED556[a1].unk_8); + mailMsg->fields[1] = GetECWordIndexByPair(UNK_020ED556[a1].unk_6, UNK_020ED556[a1].unk_8); } } diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 48b1a225..b3e53d1a 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -10,7 +10,7 @@ #include "math_util.h" #include "move_data.h" #include "string_util.h" -#include "text.h" +#include "seal.h" #include "msgdata.h" #include "itemtool.h" #include "constants/abilities.h" @@ -21,8 +21,6 @@ #pragma thumb on -extern void FUN_02029C74(const u8 *, u8 *); - 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); @@ -39,12 +37,12 @@ u32 FUN_020696A8(struct BoxPokemon * boxmon, u16 move); void FUN_02069718(struct BoxPokemon * boxmon, u16 move); void BoxMonSetMoveInSlot(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); -BOOL FUN_02069E7C(struct BoxPokemon * boxmon); -BOOL FUN_02069E9C(struct BoxPokemon * boxmon); -void FUN_02069ECC(struct BoxPokemon * boxmon); +s8 BoxMonGetFlavorPreference(struct BoxPokemon * boxmon, int flavor); +s8 GetFlavorPreferenceFromPID(u32 personality, int flavor); +u8 Party_MaskMonsWithPokerus(struct PlayerParty * party_p, u8 mask); +BOOL BoxMon_HasPokerus(struct BoxPokemon * boxmon); +BOOL BoxMon_IsImmuneToPokerus(struct BoxPokemon * boxmon); +void BoxMon_UpdateArceusForme(struct BoxPokemon * boxmon); void LoadWotbl_HandleAlternateForme(int species, int forme, u16 * wotbl); void FUN_0206A054(struct BoxPokemon * boxmon, struct PlayerData * a1, u32 pokeball, u32 a3, u32 encounterType, u32 heap_id); BOOL MonHasMove(struct Pokemon * pokemon, u16 move); @@ -118,61 +116,62 @@ const u16 sLegendaryMonsList[] = { 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 s8 sFlavorPreferencesByNature[][5] = { + // Spicy, Dry, Sweet, Bitter, Sour + { 0, 0, 0, 0, 0 }, // NATURE_HARDY + { 1, 0, 0, 0, -1 }, // NATURE_LONELY + { 1, 0, -1, 0, 0 }, // NATURE_BRAVE + { 1, -1, 0, 0, 0 }, // NATURE_ADAMANT + { 1, 0, 0, -1, 0 }, // NATURE_NAUGHTY + { -1, 0, 0, 0, 1 }, // NATURE_BOLD + { 0, 0, 0, 0, 0 }, // NATURE_DOCILE + { 0, 0, -1, 0, 1 }, // NATURE_RELAXED + { 0, -1, 0, 0, 1 }, // NATURE_IMPISH + { 0, 0, 0, -1, 1 }, // NATURE_LAX + { -1, 0, 1, 0, 0 }, // NATURE_TIMID + { 0, 0, 1, 0, -1 }, // NATURE_HASTY + { 0, 0, 0, 0, 0 }, // NATURE_SERIOUS + { 0, -1, 1, 0, 0 }, // NATURE_JOLLY + { 0, 0, 1, -1, 0 }, // NATURE_NAIVE + { -1, 1, 0, 0, 0 }, // NATURE_MODEST + { 0, 1, 0, 0, -1 }, // NATURE_MILD + { 0, 1, -1, 0, 0 }, // NATURE_QUIET + { 0, 0, 0, 0, 0 }, // NATURE_BASHFUL + { 0, 1, 0, -1, 0 }, // NATURE_RASH + { -1, 0, 0, 1, 0 }, // NATURE_CALM + { 0, 0, 0, 1, -1 }, // NATURE_GENTLE + { 0, 0, -1, 1, 0 }, // NATURE_SASSY + { 0, -1, 0, 1, 0 }, // NATURE_CAREFUL + { 0, 0, 0, 0, 0 }, // NATURE_QUIRKY }; const s8 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 }, + // Atk, Def, Speed, SpAtk, SpDef + { 0, 0, 0, 0, 0 }, // NATURE_HARDY + { 1, -1, 0, 0, 0 }, // NATURE_LONELY + { 1, 0, -1, 0, 0 }, // NATURE_BRAVE + { 1, 0, 0, -1, 0 }, // NATURE_ADAMANT + { 1, 0, 0, 0, -1 }, // NATURE_NAUGHTY + { -1, 1, 0, 0, 0 }, // NATURE_BOLD + { 0, 0, 0, 0, 0 }, // NATURE_DOCILE + { 0, 1, -1, 0, 0 }, // NATURE_RELAXED + { 0, 1, 0, -1, 0 }, // NATURE_IMPISH + { 0, 1, 0, 0, -1 }, // NATURE_LAX + { -1, 0, 1, 0, 0 }, // NATURE_TIMID + { 0, -1, 1, 0, 0 }, // NATURE_HASTY + { 0, 0, 0, 0, 0 }, // NATURE_SERIOUS + { 0, 0, 1, -1, 0 }, // NATURE_JOLLY + { 0, 0, 1, 0, -1 }, // NATURE_NAIVE + { -1, 0, 0, 1, 0 }, // NATURE_MODEST + { 0, -1, 0, 1, 0 }, // NATURE_MILD + { 0, 0, -1, 1, 0 }, // NATURE_QUIET + { 0, 0, 0, 0, 0 }, // NATURE_BASHFUL + { 0, 0, 0, 1, -1 }, // NATURE_RASH + { -1, 0, 0, 0, 1 }, // NATURE_CALM + { 0, -1, 0, 0, 1 }, // NATURE_GENTLE + { 0, 0, -1, 0, 1 }, // NATURE_SASSY + { 0, 0, 0, -1, 1 }, // NATURE_CAREFUL + { 0, 0, 0, 0, 0 }, // NATURE_QUIRKY }; void ZeroMonData(struct Pokemon * pokemon) @@ -563,10 +562,10 @@ u32 GetMonDataInternal(struct Pokemon * pokemon, int attr, void * dest) case MON_DATA_SPDEF: return pokemon->party.spdef; case MON_DATA_MAIL_STRUCT: - Mail_copy(&pokemon->party.seal_something, dest); + Mail_copy(&pokemon->party.mail, dest); return 1; case MON_DATA_SEAL_COORDS: - FUN_02029C74(pokemon->party.sealCoords, dest); + CapsuleArray_copy(&pokemon->party.sealCoords, dest); return 1; default: return GetBoxMonDataInternal(&pokemon->box, attr, dest); @@ -1051,10 +1050,10 @@ void SetMonDataInternal(struct Pokemon * pokemon, int attr, void * value) pokemon->party.spdef = VALUE(u16); break; case MON_DATA_MAIL_STRUCT: - Mail_copy((const struct Mail *)value, &pokemon->party.seal_something); + Mail_copy((const struct Mail *)value, &pokemon->party.mail); break; case MON_DATA_SEAL_COORDS: - FUN_02029C74((const u8 *)value, pokemon->party.sealCoords); + CapsuleArray_copy((CapsuleArray *)value, &pokemon->party.sealCoords); break; default: SetBoxMonDataInternal(&pokemon->box, attr, value); @@ -2990,10 +2989,10 @@ BOOL MonHasMove(struct Pokemon * pokemon, u16 move) return FALSE; } -void FUN_02069A64(struct BoxPokemon * src, struct Pokemon * dest) +void CopyBoxPokemonToPokemon(struct BoxPokemon * src, struct Pokemon * dest) { u32 sp0 = 0; - u8 sp4[12][2]; + CapsuleArray sp4; struct Mail * mail; dest->box = *src; if (dest->box.box_lock) @@ -3005,12 +3004,12 @@ void FUN_02069A64(struct BoxPokemon * src, struct Pokemon * dest) SetMonData(dest, MON_DATA_MAIL_STRUCT, mail); FreeToHeap(mail); SetMonData(dest, MON_DATA_CAPSULE, &sp0); - MIi_CpuClearFast(0, sp4, sizeof(sp4)); - SetMonData(dest, MON_DATA_SEAL_COORDS, sp4); + MIi_CpuClearFast(0, &sp4, sizeof(sp4)); + SetMonData(dest, MON_DATA_SEAL_COORDS, &sp4); CalcMonLevelAndStats(dest); } -u8 FUN_02069AEC(struct PlayerParty * party) +u8 Party_GetMaxLevel(struct PlayerParty * party) { int i; int r7 = GetPartyCount(party); @@ -3037,7 +3036,7 @@ u16 SpeciesToSinnohDexNo(u16 species) return ret; } -u16 FUN_02069B60(u16 sinnoh_dex) +u16 SinnohDexNoToSpecies(u16 sinnoh_dex) { u16 ret = SPECIES_NONE; if (sinnoh_dex <= SINNOH_DEX_COUNT) @@ -3045,38 +3044,38 @@ u16 FUN_02069B60(u16 sinnoh_dex) return ret; } -void FUN_02069B88(struct Pokemon * src, struct Pokemon * dest) +void CopyPokemonToPokemon(struct Pokemon * src, struct Pokemon * dest) { *dest = *src; } -void FUN_02069BA0(struct Pokemon * src, struct BoxPokemon * dest) +void CopyPokemonToBoxPokemon(struct Pokemon * src, struct BoxPokemon * dest) { *dest = src->box; } -void FUN_02069BB4(struct BoxPokemon * src, struct BoxPokemon * dest) +void CopyBoxPokemonToBoxPokemon(struct BoxPokemon * src, struct BoxPokemon * dest) { *dest = *src; } -s8 FUN_02069BC8(struct Pokemon * pokemon, int flavor) +s8 MonGetFlavorPreference(struct Pokemon * pokemon, int flavor) { - return FUN_02069BD0(&pokemon->box, flavor); + return BoxMonGetFlavorPreference(&pokemon->box, flavor); } -s8 FUN_02069BD0(struct BoxPokemon * boxmon, int flavor) +s8 BoxMonGetFlavorPreference(struct BoxPokemon * boxmon, int flavor) { u32 personality = GetBoxMonData(boxmon, MON_DATA_PERSONALITY, NULL); - return FUN_02069BE4(personality, flavor); + return GetFlavorPreferenceFromPID(personality, flavor); } -s8 FUN_02069BE4(u32 personality, int flavor) +s8 GetFlavorPreferenceFromPID(u32 personality, int flavor) { - return UNK_020F7F16[GetNatureFromPersonality(personality)][flavor]; + return sFlavorPreferencesByNature[GetNatureFromPersonality(personality)][flavor]; } -int FUN_02069BFC(u16 species, u32 forme, u16 * dest) +int Species_LoadLearnsetTable(u16 species, u32 forme, u16 * dest) { int i; u16 * wotbl = AllocFromHeap(0, 22 * sizeof(u16)); @@ -3089,7 +3088,7 @@ int FUN_02069BFC(u16 species, u32 forme, u16 * dest) return i; } -void FUN_02069C4C(struct PlayerParty * party) +void Party_GivePokerusAtRandom(struct PlayerParty * party) { int count = GetPartyCount(party); int idx; @@ -3105,7 +3104,7 @@ void FUN_02069C4C(struct PlayerParty * party) idx = LCRandom() % 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, (u8)MaskOfFlagNo(idx))) + if (!Party_MaskMonsWithPokerus(party, (u8)MaskOfFlagNo(idx))) { do { @@ -3121,7 +3120,7 @@ void FUN_02069C4C(struct PlayerParty * party) } } -u8 FUN_02069CF4(struct PlayerParty * party, u8 mask) +u8 Party_MaskMonsWithPokerus(struct PlayerParty * party, u8 mask) { int i = 0; u32 flag = 1; @@ -3152,7 +3151,7 @@ u8 FUN_02069CF4(struct PlayerParty * party, u8 mask) return ret; } -void FUN_02069D50(struct PlayerParty * party, int r5) +void Party_UpdatePokerus(struct PlayerParty * party, int r5) { int i; u8 pokerus; @@ -3178,7 +3177,7 @@ void FUN_02069D50(struct PlayerParty * party, int r5) } } -void FUN_02069DC8(struct PlayerParty * party) +void Party_SpreadPokerus(struct PlayerParty * party) { int count = GetPartyCount(party); int i; @@ -3215,22 +3214,22 @@ void FUN_02069DC8(struct PlayerParty * party) } } -BOOL FUN_02069E74(struct Pokemon * pokemon) +BOOL Pokemon_HasPokerus(struct Pokemon * pokemon) { - return FUN_02069E7C(&pokemon->box); + return BoxMon_HasPokerus(&pokemon->box); } -BOOL FUN_02069E7C(struct BoxPokemon * boxmon) +BOOL BoxMon_HasPokerus(struct BoxPokemon * boxmon) { return !!(GetBoxMonData(boxmon, MON_DATA_POKERUS, NULL) & 0xF); } -BOOL FUN_02069E94(struct Pokemon * pokemon) +BOOL Pokemon_IsImmuneToPokerus(struct Pokemon * pokemon) { - return FUN_02069E9C(&pokemon->box); + return BoxMon_IsImmuneToPokerus(&pokemon->box); } -BOOL FUN_02069E9C(struct BoxPokemon * boxmon) +BOOL BoxMon_IsImmuneToPokerus(struct BoxPokemon * boxmon) { u8 pokerus = (u8)GetBoxMonData(boxmon, MON_DATA_POKERUS, NULL); if (pokerus & 0xF) @@ -3240,12 +3239,12 @@ BOOL FUN_02069E9C(struct BoxPokemon * boxmon) return FALSE; } -void FUN_02069EC4(struct Pokemon * pokemon) +void Pokemon_UpdateArceusForme(struct Pokemon * pokemon) { - FUN_02069ECC(&pokemon->box); + BoxMon_UpdateArceusForme(&pokemon->box); } -void FUN_02069ECC(struct BoxPokemon * boxmon) +void BoxMon_UpdateArceusForme(struct BoxPokemon * boxmon) { u32 species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); u32 ability = GetBoxMonData(boxmon, MON_DATA_ABILITY, NULL); @@ -3460,7 +3459,7 @@ void FUN_0206A23C(struct Pokemon * r5, u32 personality) struct Pokemon * sp4; sp4 = AllocMonZeroed(0); - FUN_02069B88(r5, sp4); + CopyPokemonToPokemon(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; @@ -3711,7 +3710,7 @@ int FUN_0206AA30(int x) case TRAINER_CLASS_PKMN_TRAINER_POKEKID: return x - TRAINER_CLASS_COMMANDER_JUPITER; default: - if (FUN_0206AE00(x) == 1) + if (TrainerClass_GetGenderOrTrainerCount(x) == 1) return 1; else return 0; @@ -3721,13 +3720,13 @@ int FUN_0206AA30(int x) } } -void FUN_0206AA84(struct Pokemon * pokemon) +void Pokemon_RemoveCapsule(struct Pokemon * pokemon) { u8 sp0 = 0; - u8 sp1[12][2]; - MIi_CpuClearFast(0, sp1, sizeof(sp1)); + CapsuleArray sp1; + MIi_CpuClearFast(0, &sp1, sizeof(sp1)); SetMonData(pokemon, MON_DATA_CAPSULE, &sp0); - SetMonData(pokemon, MON_DATA_SEAL_COORDS, sp1); + SetMonData(pokemon, MON_DATA_SEAL_COORDS, &sp1); } void RestoreBoxMonPP(struct BoxPokemon * boxmon) diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c index 43e83403..397f1f69 100644 --- a/arm9/src/save_arrays.c +++ b/arm9/src/save_arrays.c @@ -12,6 +12,8 @@ #include "unk_020254B8.h" #include "daycare.h" #include "pokedex.h" +#include "seal.h" +#include "unk_020139D8.h" extern u32 FUN_0202AC20(void); extern u32 FUN_02034D7C(void); @@ -24,7 +26,6 @@ extern u32 FUN_02028054(void); extern u32 FUN_02028980(void); extern u32 FUN_02029A84(void); extern u32 FUN_02029FB0(void); -extern u32 FUN_02029C58(void); extern u32 FUN_02029EC4(void); extern u32 FUN_0202A89C(void); extern u32 FUN_0202A8F4(void); @@ -36,7 +37,6 @@ extern u32 FUN_020281E0(void); extern u32 FUN_02029AE0(void); extern u32 FUN_0202BE98(void); extern u32 FUN_0202C0E0(void); -extern u32 FUN_02013B28(void); extern void FUN_0202AC28(void *); extern void FUN_02034D98(void *); extern void FUN_02024E6C(void *); @@ -48,7 +48,6 @@ extern void FUN_0202805C(void *); extern void FUN_02028994(void *); extern void FUN_02029A8C(void *); extern void FUN_02029FB8(void *); -extern void FUN_02029C60(void *); extern void FUN_02029ECC(void *); extern void FUN_0202A8A4(void *); extern void FUN_0202A8F8(void *); @@ -60,7 +59,6 @@ extern void FUN_020281E8(void *); extern void FUN_02029AE8(void *); extern void FUN_0202BEA0(void *); extern void FUN_0202C0E4(void *); -extern void FUN_02013B2C(void *); const struct SaveChunkHeader UNK_020EE6E0[] = { { 0, 32, (SAVSIZEFN)Sav2_HOF_sizeof, (SAVINITFN)Sav2_HOF_init }, @@ -89,7 +87,7 @@ const struct SaveChunkHeader UNK_020EE700[] = { { 18, 0, (SAVSIZEFN)FUN_02028980, (SAVINITFN)FUN_02028994 }, { 19, 0, (SAVSIZEFN)FUN_02029A84, (SAVINITFN)FUN_02029A8C }, { 20, 0, (SAVSIZEFN)FUN_02029FB0, (SAVINITFN)FUN_02029FB8 }, - { 21, 0, (SAVSIZEFN)FUN_02029C58, (SAVINITFN)FUN_02029C60 }, + { 21, 0, (SAVSIZEFN)Sav2_SealCase_sizeof, (SAVINITFN)Sav2_SealCase_init }, { 22, 0, (SAVSIZEFN)FUN_02029EC4, (SAVINITFN)FUN_02029ECC }, { 23, 0, (SAVSIZEFN)FUN_0202A89C, (SAVINITFN)FUN_0202A8A4 }, { 24, 0, (SAVSIZEFN)FUN_0202A8F4, (SAVINITFN)FUN_0202A8F8 }, diff --git a/arm9/src/script_buffers.c b/arm9/src/script_buffers.c index c29feed3..431f63b4 100644 --- a/arm9/src/script_buffers.c +++ b/arm9/src/script_buffers.c @@ -9,6 +9,7 @@ #include "unk_020286F8.h" #include "filesystem.h" #include "unk_0201B8B8.h" +#include "trainer_data.h" #include "script_buffers.h" #pragma thumb on @@ -16,8 +17,8 @@ extern void * FUN_02024EC0(struct SaveBlock2 * sav2); extern u16 * FUN_02024EE8(void *); extern u32 GetCityNamesMsgdataIdByCountry(u32); -extern void FUN_02013A58(u32 a0, struct String * a1); -extern void FUN_02022048(struct String * dest, const struct String * src); +extern void GetECWordIntoStringByIndex(u32 a0, struct String * a1); +extern void StringCat_HandleTrainerName(struct String * dest, const struct String * src); extern void StrAddChar(struct String * str, u16 val); extern void * FUN_02006BB0(NarcId, s32, s32, struct UnkStruct_0200B870_sub **, u32); extern BOOL UncompressFromNarc(NarcId narcId, s32 memberNo, BOOL a2, u32 heap_id, BOOL a4); @@ -363,18 +364,18 @@ void BufferTrainerClassNameWithArticle(struct ScrStrBufs * mgr, u32 idx, u32 trc } } -void BufferTrainerClassName2(struct ScrStrBufs * mgr, u32 idx, struct Trainer * tr) +void BufferTrainerClassNameFromDataStruct(struct ScrStrBufs * mgr, u32 idx, struct TrainerDataLoaded * tr) { struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 560, mgr->heap_id); if (msgData != NULL) { - ReadMsgDataIntoString(msgData, tr->unk1, mgr->tmpbuf); + ReadMsgDataIntoString(msgData, tr->data.trainerClass, mgr->tmpbuf); SetStringAsPlaceholder(mgr, idx, mgr->tmpbuf, NULL); DestroyMsgData(msgData); } } -void FUN_0200B10C(struct ScrStrBufs * mgr, u32 idx, u32 msgno) +void BufferTrainerName(struct ScrStrBufs * mgr, u32 idx, u32 msgno) { struct MsgData * msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 559, mgr->heap_id); if (msgData != NULL) @@ -385,9 +386,9 @@ void FUN_0200B10C(struct ScrStrBufs * mgr, u32 idx, u32 msgno) } } -void FUN_0200B144(struct ScrStrBufs * mgr, u32 idx, void * unk_struct) +void BufferTrainerNameFromDataStruct(struct ScrStrBufs * mgr, u32 idx, struct TrainerDataLoaded * trdata) { - CopyU16ArrayToString(mgr->tmpbuf, (u16 *)((char *)unk_struct + 20)); + CopyU16ArrayToString(mgr->tmpbuf, trdata->name); SetStringAsPlaceholder(mgr, idx, mgr->tmpbuf, NULL); } @@ -587,7 +588,7 @@ void BufferCityName(struct ScrStrBufs * mgr, u32 idx, u32 a2, u32 a3) void FUN_0200B518(struct ScrStrBufs * mgr, u32 idx, u32 a2) { - FUN_02013A58(a2, mgr->tmpbuf); + GetECWordIntoStringByIndex(a2, mgr->tmpbuf); SetStringAsPlaceholder(mgr, idx, mgr->tmpbuf, NULL); } @@ -684,7 +685,7 @@ void BufferContestBackgroundName(struct ScrStrBufs * mgr, u32 idx, u32 bg) } } -void FUN_0200B708(struct ScrStrBufs * mgr, struct SaveBlock2 * sav2, u32 r5, u32 idx, u32 sp28) +void BufferEasyChatWord(struct ScrStrBufs * mgr, struct SaveBlock2 * sav2, u32 r5, u32 idx, u32 sp28) { void * r6 = FUN_0202881C(sav2); u8 sp10 = FUN_020287F8(r6, r5); @@ -708,7 +709,7 @@ void BufferMonthNameAbbr(struct ScrStrBufs * mgr, u32 idx, u32 month) } } -void FUN_0200B7A8(struct ScrStrBufs * mgr, u32 idx) +void ScrStrBufs_UpperFirstChar(struct ScrStrBufs * mgr, u32 idx) { StrUpperFirstChar(mgr->array[idx].msg); } @@ -725,7 +726,7 @@ void StringExpandPlaceholders(struct ScrStrBufs * mgr, struct String * dest, str { u32 idx = MsgArray_ControlCodeGetField(cstr, 0); GF_ASSERT(idx < mgr->count); - FUN_02022048(dest, mgr->array[idx].msg); + StringCat_HandleTrainerName(dest, mgr->array[idx].msg); cstr = MsgArray_SkipControlCode(cstr); } else @@ -741,13 +742,13 @@ void StringExpandPlaceholders(struct ScrStrBufs * mgr, struct String * dest, str } } -void FUN_0200B84C(struct ScrStrBufs * mgr) +void ScrStrBufs_ResetBuffers(struct ScrStrBufs * mgr) { for (int i = 0; i < mgr->count; i++) StringSetEmpty(mgr->array[i].msg); } -struct UnkStruct_0200B870 * FUN_0200B870(u32 r5, u32 r6, u32 sp4, u32 r4) +struct UnkStruct_0200B870 * MessagePrinter_new(u32 r5, u32 r6, u32 sp4, u32 r4) { struct UnkStruct_0200B870 * sp8 = AllocFromHeap(r4, sizeof(struct UnkStruct_0200B870)); if (sp8 != NULL) @@ -793,7 +794,7 @@ struct UnkStruct_0200B870 * FUN_0200B870(u32 r5, u32 r6, u32 sp4, u32 r4) return sp8; } -void FUN_0200B990(struct UnkStruct_0200B870 * a0) +void MessagePrinter_delete(struct UnkStruct_0200B870 * a0) { if (a0 != NULL) { diff --git a/arm9/src/seal_case.c b/arm9/src/seal_case.c new file mode 100644 index 00000000..b1359a02 --- /dev/null +++ b/arm9/src/seal_case.c @@ -0,0 +1,59 @@ +#include "global.h" +#include "save_block_2.h" +#include "MI_memory.h" +#include "seal.h" + +#pragma thumb on + +u32 Sav2_SealCase_sizeof(void) +{ + return sizeof(struct SealCase); +} + +void Sav2_SealCase_init(struct SealCase * sealCase) +{ + MI_CpuClear8(sealCase, Sav2_SealCase_sizeof()); +} + +void CapsuleArray_copy(const CapsuleArray * a0, CapsuleArray * a1) +{ + MI_CpuCopy8(a0, a1, sizeof(CapsuleArray)); +} + +struct SealCase * Sav2_SealCase_get(struct SaveBlock2 * sav2) +{ + return (struct SealCase *)SavArray_get(sav2, 21); +} + +CapsuleArray * SealCase_GetCapsuleI(struct SealCase * sealCase, s32 idx) +{ + GF_ASSERT(idx < 12); + return &sealCase->coords[idx]; +} + +void SealCase_SetCapsuleI(struct SealCase * sealCase, const CapsuleArray * src, s32 idx) +{ + GF_ASSERT(idx < 12); + CapsuleArray_copy(src, SealCase_GetCapsuleI(sealCase, idx)); +} + +Coords8 * Capsule_GetSealI(CapsuleArray * a0, s32 a1) +{ + GF_ASSERT(a1 < 8); + return &(*a0)[a1]; +} + +s32 Seal_GetId(Coords8 * a0) +{ + return (*a0)[0]; +} + +s32 Seal_GetXCoord(Coords8 * a0) +{ + return (*a0)[1]; +} + +s32 Seal_GetYCoord(Coords8 * a0) +{ + return (*a0)[2]; +} diff --git a/arm9/src/trainer_data.c b/arm9/src/trainer_data.c new file mode 100644 index 00000000..7af4b2ce --- /dev/null +++ b/arm9/src/trainer_data.c @@ -0,0 +1,403 @@ +#include "global.h" +#include "heap.h" +#include "trainer_data.h" +#include "math_util.h" +#include "party.h" +#include "proto.h" +#include "msgdata.h" +#include "constants/trainer_classes.h" + +#pragma thumb on + +extern void * FUN_02024EC0(struct SaveBlock2 *); +extern u16 * FUN_02024EE8(void *); + +// Loads all battle opponents, including multi-battle partner if exists. +void EnemyTrainerSet_Init(struct BattleSetupStruct * enemies, struct SaveBlock2 * sav2, u32 heap_id) +{ + struct TrainerDataLoaded trdata; + struct MsgData * msgData; + u16 * rivalName; + s32 i; + struct String * str; + + // FIXME: String formatting in files/msgdata/msg/narc_0559.txt is abnormal. + msgData = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, 559, heap_id); + rivalName = FUN_02024EE8(FUN_02024EC0(sav2)); + for (i = 0; i < 4; i++) + { + if (enemies->trainer_idxs[i] != 0) + { + TrainerData_ReadTrData(enemies->trainer_idxs[i], &trdata.data); + enemies->datas[i] = trdata; + if (trdata.data.trainerClass == TRAINER_CLASS_PKMN_TRAINER_BARRY) + { + CopyU16StringArray(enemies->datas[i].name, rivalName); + } + else + { + str = NewString_ReadMsgData(msgData, enemies->trainer_idxs[i]); + CopyStringToU16Array(str, enemies->datas[i].name, OT_NAME_LENGTH + 1); + String_dtor(str); + } + CreateNPCTrainerParty(enemies, i, heap_id); + } + } + enemies->flags |= trdata.data.doubleBattle; + DestroyMsgData(msgData); +} + +s32 TrainerData_GetAttr(u32 tr_idx, u32 attr_no) +{ + struct TrainerDataLoaded trainer; + s32 ret; + + TrainerData_ReadTrData(tr_idx, &trainer.data); + switch (attr_no) + { + case 0: + ret = trainer.data.trainerType; + break; + case 1: + ret = trainer.data.trainerClass; + break; + case 2: + ret = trainer.data.unk_2; + break; + case 3: + ret = trainer.data.npoke; + break; + case 4: + case 5: + case 6: + case 7: + attr_no -= 4; + ret = trainer.data.items[attr_no]; + break; + case 8: + ret = (s32)trainer.data.unk_C; + break; + case 9: + ret = (s32)trainer.data.doubleBattle; + break; + } + return ret; // UB: uninitialized in event of invalid attr +} + +// Relevant files: +// files/poketool/trmsg/trtbl.narc +// files/poketool/trmsg/trtblofs.narc +// files/msgdata/msg/narc_0558.txt +// trtbl is a single-member NARC whose entries are two shorts each. The first short +// designates the trainer ID and the second the message ID. They are ordered the same +// as the corresponding msgdata file. All messages for a given trainer are found together, +// however the trainers are not in order in this file. trtblofs gives a pointer into trtbl +// for each trainer. trtblofs is also a single-member NARC whose entries are shorts, one +// per NPC trainer. +BOOL TrainerMessageWithIdPairExists(u32 trainer_idx, u32 msg_id, u32 heap_id) +{ + u16 rdbuf[3]; + struct NARC * trTblNarc; + BOOL ret = FALSE; + u32 trTblSize; + + trTblSize = GetNarcMemberSizeByIdPair(NARC_POKETOOL_TRMSG_TRTBL, 0); + ReadFromNarcMemberByIdPair(&rdbuf[0], NARC_POKETOOL_TRMSG_TRTBLOFS, 0, trainer_idx * 2, 2); + trTblNarc = NARC_ctor(NARC_POKETOOL_TRMSG_TRTBL, heap_id); + while (rdbuf[0] != trTblSize) + { + NARC_ReadFromMember(trTblNarc, 0, rdbuf[0], 4, &rdbuf[1]); + if (rdbuf[1] == trainer_idx && rdbuf[2] == msg_id) + { + ret = TRUE; + break; + } + if (rdbuf[1] != trainer_idx) + break; + rdbuf[0] += 4; + } + NARC_dtor(trTblNarc); + return ret; +} + +void GetTrainerMessageByIdPair(u32 trainer_idx, u32 msg_id, struct String * str, u32 heap_id) +{ + u16 rdbuf[3]; + u32 trTblSize; + struct NARC * trTblNarc; + + trTblSize = GetNarcMemberSizeByIdPair(NARC_POKETOOL_TRMSG_TRTBL, 0); + ReadFromNarcMemberByIdPair(&rdbuf[0], NARC_POKETOOL_TRMSG_TRTBLOFS, 0, trainer_idx * 2, 2); + trTblNarc = NARC_ctor(NARC_POKETOOL_TRMSG_TRTBL, heap_id); + while (rdbuf[0] != trTblSize) + { + NARC_ReadFromMember(trTblNarc, 0, rdbuf[0], 4, &rdbuf[1]); + if (rdbuf[1] == trainer_idx && rdbuf[2] == msg_id) + { + ReadMsgData_NewNarc_ExistingString(NARC_MSGDATA_MSG, 558, (u32)(rdbuf[0] / 4), heap_id, str); + break; + } + rdbuf[0] += 4; + } + NARC_dtor(trTblNarc); + if (rdbuf[0] == trTblSize) + StringSetEmpty(str); +} + +void TrainerData_ReadTrData(u32 idx, struct TrainerData * dest) +{ + ReadWholeNarcMemberByIdPair(dest, NARC_POKETOOL_TRAINER_TRDATA, (s32)idx); +} + +void TrainerData_ReadTrPoke(u32 idx, union TrainerMon * dest) +{ + ReadWholeNarcMemberByIdPair(dest, NARC_POKETOOL_TRAINER_TRPOKE, (s32)idx); +} + +const u8 sTrainerClassGenderCountTbl[] = { + /*TRAINER_CLASS_PKMN_TRAINER_M*/ 0, + /*TRAINER_CLASS_PKMN_TRAINER_F*/ 1, + /*TRAINER_CLASS_YOUNGSTER*/ 0, + /*TRAINER_CLASS_LASS*/ 1, + /*TRAINER_CLASS_CAMPER*/ 0, + /*TRAINER_CLASS_PICNICKER*/ 1, + /*TRAINER_CLASS_BUG_CATCHER*/ 0, + /*TRAINER_CLASS_AROMA_LADY*/ 1, + /*TRAINER_CLASS_TWINS*/ 1, + /*TRAINER_CLASS_HIKER*/ 0, + /*TRAINER_CLASS_BATTLE_GIRL*/ 1, + /*TRAINER_CLASS_FISHERMAN*/ 0, + /*TRAINER_CLASS_CYCLIST_M*/ 0, + /*TRAINER_CLASS_CYCLIST_F*/ 1, + /*TRAINER_CLASS_BLACK_BELT*/ 0, + /*TRAINER_CLASS_ARTIST*/ 0, + /*TRAINER_CLASS_PKMN_BREEDER_M*/ 0, + /*TRAINER_CLASS_PKMN_BREEDER_F*/ 1, + /*TRAINER_CLASS_COWGIRL*/ 1, + /*TRAINER_CLASS_JOGGER*/ 0, + /*TRAINER_CLASS_POKEFAN_M*/ 0, + /*TRAINER_CLASS_POKEFAN_F*/ 1, + /*TRAINER_CLASS_POKE_KID*/ 1, + /*TRAINER_CLASS_YOUNG_COUPLE*/ 2, + /*TRAINER_CLASS_ACE_TRAINER_M*/ 0, + /*TRAINER_CLASS_ACE_TRAINER_F*/ 1, + /*TRAINER_CLASS_WAITRESS*/ 1, + /*TRAINER_CLASS_VETERAN*/ 0, + /*TRAINER_CLASS_NINJA_BOY*/ 0, + /*TRAINER_CLASS_DRAGON_TAMER*/ 0, + /*TRAINER_CLASS_BIRD_KEEPER*/ 1, + /*TRAINER_CLASS_DOUBLE_TEAM*/ 2, + /*TRAINER_CLASS_RICH_BOY*/ 0, + /*TRAINER_CLASS_LADY*/ 1, + /*TRAINER_CLASS_GENTLEMAN*/ 0, + /*TRAINER_CLASS_SOCIALITE*/ 1, + /*TRAINER_CLASS_BEAUTY*/ 1, + /*TRAINER_CLASS_COLLECTOR*/ 0, + /*TRAINER_CLASS_POLICEMAN*/ 0, + /*TRAINER_CLASS_PKMN_RANGER_M*/ 0, + /*TRAINER_CLASS_PKMN_RANGER_F*/ 1, + /*TRAINER_CLASS_SCIENTIST*/ 0, + /*TRAINER_CLASS_SWIMMER_M*/ 0, + /*TRAINER_CLASS_SWIMMER_F*/ 1, + /*TRAINER_CLASS_TUBER_M*/ 0, + /*TRAINER_CLASS_TUBER_F*/ 1, + /*TRAINER_CLASS_SAILOR*/ 0, + /*TRAINER_CLASS_SIS_AND_BRO*/ 2, + /*TRAINER_CLASS_RUIN_MANIAC*/ 0, + /*TRAINER_CLASS_PSYCHIC_M*/ 0, + /*TRAINER_CLASS_PSYCHIC_F*/ 1, + /*TRAINER_CLASS_PI*/ 0, + /*TRAINER_CLASS_GUITARIST*/ 0, + /*TRAINER_CLASS_ACE_TRAINER_SNOW_M*/ 0, + /*TRAINER_CLASS_ACE_TRAINER_SNOW_F*/ 1, + /*TRAINER_CLASS_SKIER_M*/ 0, + /*TRAINER_CLASS_SKIER_F*/ 1, + /*TRAINER_CLASS_ROUGHNECK*/ 0, + /*TRAINER_CLASS_CLOWN*/ 0, + /*TRAINER_CLASS_WORKER*/ 0, + /*TRAINER_CLASS_SCHOOL_KID_M*/ 0, + /*TRAINER_CLASS_SCHOOL_KID_F*/ 1, + /*TRAINER_CLASS_LEADER_ROARK*/ 0, + /*TRAINER_CLASS_PKMN_TRAINER_BARRY*/ 0, + /*TRAINER_CLASS_LEADER_BYRON*/ 0, + /*TRAINER_CLASS_ELITE_FOUR_AARON*/ 0, + /*TRAINER_CLASS_ELITE_FOUR_BERTHA*/ 1, + /*TRAINER_CLASS_ELITE_FOUR_FLINT*/ 0, + /*TRAINER_CLASS_ELITE_FOUR_LUCIEN*/ 0, + /*TRAINER_CLASS_CHAMPION*/ 1, + /*TRAINER_CLASS_BELLE__PA*/ 2, + /*TRAINER_CLASS_RANCHER*/ 0, + /*TRAINER_CLASS_COMMANDER_MARS*/ 1, + /*TRAINER_CLASS_GALACTIC*/ 0, + /*TRAINER_CLASS_LEADER_GARDENIA*/ 1, + /*TRAINER_CLASS_LEADER_WAKE*/ 0, + /*TRAINER_CLASS_LEADER_MAYLENE*/ 1, + /*TRAINER_CLASS_LEADER_FANTINA*/ 1, + /*TRAINER_CLASS_LEADER_CANDICE*/ 1, + /*TRAINER_CLASS_LEADER_VOLKNER*/ 0, + /*TRAINER_CLASS_PARASOL_LADY*/ 1, + /*TRAINER_CLASS_WAITER*/ 0, + /*TRAINER_CLASS_INTERVIEWERS*/ 2, + /*TRAINER_CLASS_CAMERAMAN*/ 0, + /*TRAINER_CLASS_REPORTER*/ 1, + /*TRAINER_CLASS_IDOL*/ 1, + /*TRAINER_CLASS_GALACTIC_BOSS*/ 0, + /*TRAINER_CLASS_COMMANDER_JUPITER*/ 1, + /*TRAINER_CLASS_COMMANDER_SATURN*/ 1, + /*TRAINER_CLASS_GALACTIC_F*/ 1, + /*TRAINER_CLASS_PKMN_TRAINER_AROMA_LADY*/ 1, + /*TRAINER_CLASS_PKMN_TRAINER_RICH_BOY*/ 0, + /*TRAINER_CLASS_PKMN_TRAINER_PICNICKER*/ 1, + /*TRAINER_CLASS_PKMN_TRAINER_CAMPER*/ 0, + /*TRAINER_CLASS_PKMN_TRAINER_POKEKID*/ 1, + /*TRAINER_CLASS_PKMN_TRAINER_LUCAS*/ 0, + /*TRAINER_CLASS_PKMN_TRAINER_DAWN*/ 1, + /*TRAINER_CLASS_TOWER_TYCOON*/ 0 +}; + +// Returns 0 for male, 1 for female, 2 for doubles. See above vector. +int TrainerClass_GetGenderOrTrainerCount(int a0) +{ + return sTrainerClassGenderCountTbl[a0]; +} + +void CreateNPCTrainerParty(struct BattleSetupStruct * enemies, s32 party_id, u32 heap_id) +{ + union TrainerMon * data; + s32 i; + s32 j; + u32 seed_bak; + struct Pokemon * pokemon; + struct TrainerMonSpeciesItemMoves * monSpeciesItemMoves; + struct TrainerMonSpeciesItem * monSpeciesItem; + struct TrainerMonSpeciesMoves * monSpeciesMoves; + struct TrainerMonSpecies * monSpecies; + u32 seed; + u32 personality; + u8 iv; + u32 pid_gender; + + // We abuse the RNG for personality value generation, so back up the overworld + // state + seed_bak = GetLCRNGSeed(); + InitPartyWithMaxSize(enemies->parties[party_id], PARTY_SIZE); + data = (union TrainerMon *)AllocFromHeap(heap_id, sizeof(union TrainerMon) * PARTY_SIZE); + pokemon = AllocMonZeroed(heap_id); + TrainerData_ReadTrPoke(enemies->trainer_idxs[party_id], data); + + // If a Pokemon's gender ratio is 50/50, the generated Pokemon will be the same + // gender as its trainer. Otherwise, it will assume the more abundant gender + // according to its species gender ratio. In double battles, the behavior is + // identical to that of a solitary male opponent. + pid_gender = (u32)((TrainerClass_GetGenderOrTrainerCount(enemies->datas[party_id].data.trainerClass) == 1) ? 0x78 : 0x88); + + // The trainer types can be more efficiently and expandibly treated as a flag + // array, with bit 0 being custom moveset and bit 1 being held item. + // Nintendo didn't do it that way, instead using a switch statement and a lot + // of code duplication. This has been the case since the 2nd generation games. + switch (enemies->datas[party_id].data.trainerType) + { + case TRTYPE_MON: + { + monSpecies = &data->species; + for (i = 0; i < enemies->datas[party_id].data.npoke; i++) + { + // Generate personality by seeding with a value based on the difficulty, + // level, species, and opponent ID. Roll the RNG N times, where N is + // the index of its trainer class. Finally, left shift the 16-bit + // pseudorandom value and add the gender selector. + // This guarantees that NPC trainers' Pokemon are generated in a + // consistent manner between attempts. + seed = monSpecies[i].difficulty + monSpecies[i].level + monSpecies[i].species + enemies->trainer_idxs[party_id]; + SetLCRNGSeed(seed); + for (j = 0; j < enemies->datas[party_id].data.trainerClass; j++) + { + seed = LCRandom(); + } + personality = (seed << 8); + personality += pid_gender; + + // Difficulty is a number between 0 and 250 which directly corresponds + // to the (uniform) IV spread of the generated Pokemon. + iv = (u8)((monSpecies[i].difficulty * 31) / 255); + CreateMon(pokemon, monSpecies[i].species, monSpecies[i].level, iv, 1, (s32)personality, 2, 0); + + // If you were treating the trainer type as a bitfield, you'd put the + // checks for held item and moves here. You'd also treat the trpoke + // data as a flat u16 array rather than an array of fixed-width structs. + AddMonToParty(enemies->parties[party_id], pokemon); + } + break; + } + case TRTYPE_MON_MOVES: + { + monSpeciesMoves = &data->species_moves; + for (i = 0; i < enemies->datas[party_id].data.npoke; i++) + { + seed = monSpeciesMoves[i].difficulty + monSpeciesMoves[i].level + monSpeciesMoves[i].species + enemies->trainer_idxs[party_id]; + SetLCRNGSeed(seed); + for (j = 0; j < enemies->datas[party_id].data.trainerClass; j++) + { + seed = LCRandom(); + } + personality = (seed << 8); + personality += pid_gender; + iv = (u8)((monSpeciesMoves[i].difficulty * 31) / 255); + CreateMon(pokemon, monSpeciesMoves[i].species, monSpeciesMoves[i].level, iv, 1, (s32)personality, 2, 0); + for (j = 0; j < 4; j++) + { + MonSetMoveInSlot(pokemon, monSpeciesMoves[i].moves[j], (u8)j); + } + AddMonToParty(enemies->parties[party_id], pokemon); + } + break; + } + case TRTYPE_MON_ITEM: + { + monSpeciesItem = &data->species_item; + for (i = 0; i < enemies->datas[party_id].data.npoke; i++) + { + seed = monSpeciesItem[i].difficulty + monSpeciesItem[i].level + monSpeciesItem[i].species + enemies->trainer_idxs[party_id]; + SetLCRNGSeed(seed); + for (j = 0; j < enemies->datas[party_id].data.trainerClass; j++) + { + seed = LCRandom(); + } + personality = (seed << 8); + personality += pid_gender; + iv = (u8)((monSpeciesItem[i].difficulty * 31) / 255); + CreateMon(pokemon, monSpeciesItem[i].species, monSpeciesItem[i].level, iv, 1, (s32)personality, 2, 0); + SetMonData(pokemon, MON_DATA_HELD_ITEM, &monSpeciesItem[i].item); + AddMonToParty(enemies->parties[party_id], pokemon); + } + break; + } + case TRTYPE_MON_ITEM_MOVES: + { + monSpeciesItemMoves = &data->species_item_moves; + for (i = 0; i < enemies->datas[party_id].data.npoke; i++) + { + seed = monSpeciesItemMoves[i].difficulty + monSpeciesItemMoves[i].level + monSpeciesItemMoves[i].species + enemies->trainer_idxs[party_id]; + SetLCRNGSeed(seed); + for (j = 0; j < enemies->datas[party_id].data.trainerClass; j++) + { + seed = LCRandom(); + } + personality = (seed << 8); + personality += pid_gender; + iv = (u8)((monSpeciesItemMoves[i].difficulty * 31) / 255); + CreateMon(pokemon, monSpeciesItemMoves[i].species, monSpeciesItemMoves[i].level, iv, 1, (s32)personality, 2, 0); + SetMonData(pokemon, MON_DATA_HELD_ITEM, &monSpeciesItemMoves[i].item); + for (j = 0; j < 4; j++) + { + MonSetMoveInSlot(pokemon, monSpeciesItemMoves[i].moves[j], (u8)j); + } + AddMonToParty(enemies->parties[party_id], pokemon); + } + break; + } + } + FreeToHeap(data); + FreeToHeap(pokemon); + SetLCRNGSeed(seed_bak); +} diff --git a/arm9/src/unk_020139D8.c b/arm9/src/unk_020139D8.c index 82c96ea9..796190b2 100644 --- a/arm9/src/unk_020139D8.c +++ b/arm9/src/unk_020139D8.c @@ -7,7 +7,7 @@ #pragma thumb on -const u8 UNK_020ED5B4[][2] = { +const u8 sNarcLanguages[][2] = { { LANGUAGE_JAPANESE, 0 }, { LANGUAGE_ENGLISH, 1 }, { LANGUAGE_FRENCH, 2 }, @@ -16,32 +16,32 @@ const u8 UNK_020ED5B4[][2] = { { LANGUAGE_SPANISH, 5 }, }; -const u16 UNK_020ED5C0[] = { - 362, - 589, - 565, - 553, - 388, - 389, - 390, - 391, - 392, - 393, - 394 +const u16 sNarcMsgBanks[] = { + 362, // Species names + 589, // Move names + 565, // Type names + 553, // Ability names + 388, // Trainer + 389, // People + 390, // Greetings + 391, // Lifestyle + 392, // Feelings + 393, // Tough words + 394 // Union }; -const u16 UNK_020ED5D6[] = { - 496, - 468, - 18, - 124, - 38, - 38, - 107, - 104, - 47, - 32, - 23 +const u16 sNarcMsgCounts[] = { + 496, // Species names + 468, // Move names + 18, // Type names + 124, // Ability names + 38, // Trainer + 38, // People + 107, // Greetings + 104, // Lifestyle + 47, // Feelings + 32, // Tough words + 23 // Union }; const u16 UNK_020ED580[] = { 0x04C0, 0x04F0 }; @@ -76,19 +76,19 @@ const struct UnkStruct_020ED5EC { UNK_020ED594, NELEMS(UNK_020ED594) }, }; -struct UnkStruct_020139D8 * FUN_020139D8(u32 heap_id) +struct UnkStruct_020139D8 * EasyChatManager_new(u32 heap_id) { struct UnkStruct_020139D8 * ret = (struct UnkStruct_020139D8 *)AllocFromHeap(heap_id, sizeof(struct UnkStruct_020139D8)); s32 i; for (i = 0; i < 11; i++) { ret->heap_id = heap_id; // inadvertently inside the loop - ret->msgDatas[i] = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, UNK_020ED5C0[i], heap_id); + ret->msgDatas[i] = NewMsgDataFromNarc(1, NARC_MSGDATA_MSG, sNarcMsgBanks[i], heap_id); } return ret; } -void FUN_02013A10(struct UnkStruct_020139D8 * unk) +void EasyChatManager_delete(struct UnkStruct_020139D8 * unk) { s32 i; for (i = 0; i < 11; i++) @@ -98,61 +98,61 @@ void FUN_02013A10(struct UnkStruct_020139D8 * unk) FreeToHeap(unk); } -void FUN_02013A30(struct UnkStruct_020139D8 * unk, u16 a1, struct String * str) +void EasyChatManager_ReadWordIntoString(struct UnkStruct_020139D8 * unk, u16 wordIdx, struct String * str) { - s32 sp4; - s32 sp0; - FUN_02013AEC(a1, &sp4, &sp0); - ReadMsgDataIntoString(unk->msgDatas[sp4], (u32)sp0, str); + s32 msgBank; + s32 msgNo; + GetCategoryAndMsgNoByECWordIdx(wordIdx, &msgBank, &msgNo); + ReadMsgDataIntoString(unk->msgDatas[msgBank], (u32)msgNo, str); } -void FUN_02013A58(u16 a0, struct String * a1) +void GetECWordIntoStringByIndex(u16 wordIdx, struct String * a1) { - s32 sp8; - s32 sp4; - if (a0 != 0xFFFF) + s32 msgBank; + s32 msgNo; + if (wordIdx != 0xFFFF) { - FUN_02013AEC(a0, &sp8, &sp4); - sp8 = UNK_020ED5C0[sp8]; - ReadMsgData_NewNarc_ExistingString(NARC_MSGDATA_MSG, (u32)sp8, (u32)sp4, 0, a1); + GetCategoryAndMsgNoByECWordIdx(wordIdx, &msgBank, &msgNo); + msgBank = sNarcMsgBanks[msgBank]; + ReadMsgData_NewNarc_ExistingString(NARC_MSGDATA_MSG, (u32)msgBank, (u32)msgNo, 0, a1); } else StringSetEmpty(a1); } -u16 FUN_02013A9C(u16 a0, u16 a1) +u16 GetECWordIndexByPair(u16 msgBank, u16 msgNo) { u32 i; u16 k; u16 j; for (i = 0; i < 11; i++) { - if (a0 == UNK_020ED5C0[i]) + if (msgBank == sNarcMsgBanks[i]) { for (j = 0, k = 0; j < i; j++) - k += UNK_020ED5D6[j]; - return (u16)(k + a1); + k += sNarcMsgCounts[j]; + return (u16)(k + msgNo); } } return 0xFFFF; } -void FUN_02013AEC(u32 a0, s32 * a1, s32 * a2) +void GetCategoryAndMsgNoByECWordIdx(u32 wordIdx, s32 * msgBank_p, s32 * msgNo_p) { s32 i; s32 j; u32 r3; - r3 = a0 & 0xFFF; + r3 = wordIdx & 0xFFF; j = 0; - for (i = 0; i < NELEMS(UNK_020ED5D6); i++) + for (i = 0; i < NELEMS(sNarcMsgCounts); i++) { - j += UNK_020ED5D6[i]; + j += sNarcMsgCounts[i]; if (r3 < j) { - *a1 = i; - *a2 = (s32)(r3 - (j - UNK_020ED5D6[i])); + *msgBank_p = i; + *msgNo_p = (s32)(r3 - (j - sNarcMsgCounts[i])); return; } } @@ -170,9 +170,9 @@ void FUN_02013B2C(struct UnkStruct_02013B28 * unk) unk->unk_4 = 0; for (i = 0; i < 6; i++) { - if (UNK_020ED5B4[i][0] == GAME_LANGUAGE) + if (sNarcLanguages[i][0] == GAME_LANGUAGE) { - FUN_02013C18(unk, UNK_020ED5B4[i][1]); + FUN_02013C18(unk, sNarcLanguages[i][1]); break; } } @@ -233,7 +233,7 @@ u16 FUN_02013BE4(u16 a0) s32 i; u16 skip = 0; for (i = 0; i < 9; i++) - skip += UNK_020ED5D6[i]; + skip += sNarcMsgCounts[i]; return (u16)(skip + a0); } diff --git a/arm9/src/unk_02021FF8.c b/arm9/src/unk_02021FF8.c new file mode 100644 index 00000000..2fe37556 --- /dev/null +++ b/arm9/src/unk_02021FF8.c @@ -0,0 +1,176 @@ +#include "global.h" +#include "string16.h" +#include "heap.h" +#include "unk_02021FF8.h" + +#pragma thumb on + +BOOL String_IsTrainerName(struct String * string) +{ + return string->size != 0 && string->data[0] == 0xF100; +} + +void StringCat_HandleTrainerName(struct String * dest, struct String * src) +{ + if (String_IsTrainerName(src)) + { + u16 * dest_p = &dest->data[dest->size]; + u16 * src_p = &src->data[1]; + s32 bit = 0; + u32 outsize = 0; + u16 cur_char = 0; + + while (1) + { + cur_char = (u16)((*src_p >> bit) & 0x1FF); + bit += 9; + if (bit >= 15) + { + src_p++; + bit -= 15; + if (bit != 0) + { + cur_char |= (*src_p << (9 - bit)) & 0x1FF; + } + } + if (cur_char == 0x1FF) + break; + *dest_p++ = cur_char; + outsize++; + } + *dest_p = EOS; + dest->size += outsize; + } + else + StringCat(dest, src); +} + +struct UnkStruct_020220C4 * FUN_020220C4(u8 * a0, u32 a1, void (*a2)(s32, s32, u32), u32 a3, u32 a4) +{ + struct UnkStruct_020220C4 * ret; + s32 i; + GF_ASSERT(a1 != 0); + ret = AllocFromHeap(a4, sizeof(struct UnkStruct_020220C4)); + if (ret != NULL) + { + ret->field_0 = a0; + ret->field_4 = a1; + ret->field_8 = a2; + ret->field_C = a3; + ret->field_10 = AllocFromHeap(a4, a1 * sizeof(struct UnkStruct_020220C4_sub)); + if (ret->field_10 != NULL) + { + for (i = 0; i < a1; i++) + { + FUN_02022120(&ret->field_10[i]); + } + } + else + { + FreeToHeap(ret); + ret = NULL; + } + } + return ret; +} + +void FUN_02022120(struct UnkStruct_020220C4_sub * sub) +{ + sub->field_0 = 0; + sub->field_1 = 0; + sub->field_2 = 0; +} + +void FUN_0202212C(struct UnkStruct_020220C4 * unk) +{ + GF_ASSERT(unk != NULL); + FreeToHeap(unk->field_10); + FreeToHeap(unk); +} + +extern u16 FUN_02020A98(void); +extern u16 FUN_02020AA4(void); +extern u8 FUN_02020A40(u8 * a0); +extern u8 FUN_02020A6C(u8 * a0); + +s32 (*const UNK_020EE6CC[])(struct UnkStruct_020220C4_sub * a0, u32 a1, u32 a2) = { + FUN_020221EC, + FUN_02022208 +}; + +void FUN_02022144(struct UnkStruct_020220C4 * unk) +{ + u32 sp4; + u32 sp0 = FUN_02020A98(); + s32 i; + s32 r1; + if (sp0 != 0) + { + sp4 = FUN_02020AA4(); + for (i = 0; i < unk->field_4; i++) + { + u8 res; + if (unk->field_10[i].field_1 != 0) + { + res = FUN_02020A40(&unk->field_0[4 * i]); + } + else + { + res = FUN_02020A6C(&unk->field_0[4 * i]); + } + unk->field_10[i].field_1 = res; + } + } + else + { + sp4 = 0; + for (i = 0; i < unk->field_4; i++) + { + unk->field_10[i].field_1 = 0; + } + } + for (i = 0; i < unk->field_4; i++) + { + r1 = UNK_020EE6CC[unk->field_10[i].field_0](&unk->field_10[i], sp0, sp4); + if (r1 != -1) + { + unk->field_8(i, r1, unk->field_C); + } + } +} + +s32 FUN_020221EC(struct UnkStruct_020220C4_sub * a0, u32 a1, u32 a2) +{ +#pragma unused(a1) + if (a0->field_1 && a2) + { + FUN_0202223C(a0, 1); + return 0; + } + return -1; +} + +s32 FUN_02022208(struct UnkStruct_020220C4_sub * a0, u32 a1, u32 a2) +{ +#pragma unused(a2) + if (a0->field_1) + { + if (a0->field_2 < 0xFFFF) + a0->field_2++; + return 2; + } + else if (a1) + { + FUN_0202223C(a0, 0); + return 3; + } + FUN_0202223C(a0, 0); + return 1; +} + +void FUN_0202223C(struct UnkStruct_020220C4_sub * a0, u8 a1) +{ + a0->field_0 = a1; + a0->field_2 = 0; +} + diff --git a/arm9/src/unk_0206B688.c b/arm9/src/unk_0206B688.c new file mode 100644 index 00000000..465fa842 --- /dev/null +++ b/arm9/src/unk_0206B688.c @@ -0,0 +1,185 @@ +#include "global.h" +#include "pokemon.h" +#include "unk_0206B688.h" + +#pragma thumb on + +u16 BoxMon_GetAlternateForme(struct BoxPokemon * boxmon); +u32 FUN_0206B6D4(u32 species, u32 is_egg, u32 forme); + +u32 FUN_0206B688(struct BoxPokemon * boxmon) +{ + BOOL decry = AcquireBoxMonLock(boxmon); + u32 species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + u32 is_egg = GetBoxMonData(boxmon, MON_DATA_IS_EGG, NULL); + u32 forme = BoxMon_GetAlternateForme(boxmon); + u32 ret = FUN_0206B6D4(species, is_egg, forme); + ReleaseBoxMonLock(boxmon, decry); + return ret; +} + +u32 FUN_0206B6C8(struct Pokemon * pokemon) +{ + return FUN_0206B688(FUN_020690E4(pokemon)); +} + +u32 FUN_0206B6D4(u32 species, u32 is_egg, u32 forme) +{ + if (is_egg == TRUE) + { + if (species == SPECIES_MANAPHY) + return 502; + else + return 501; + } + if (forme != 0) + { + if (species == SPECIES_DEOXYS) + return 502 + forme; + if (species == SPECIES_UNOWN) + return 506 + forme; + if (species == SPECIES_BURMY) + return 533 + forme; + if (species == SPECIES_WORMADAM) + return 535 + forme; + if (species == SPECIES_SHELLOS) + return 537 + forme; + if (species == SPECIES_GASTRODON) + return 538 + forme; + } + return (species <= SPECIES_ARCEUS ? species : 0) + 7; +} + +u16 BoxMon_GetAlternateForme(struct BoxPokemon * boxmon) +{ + u32 species = GetBoxMonData(boxmon, MON_DATA_SPECIES2, NULL); + switch (species) + { + case SPECIES_UNOWN: + return GetBoxMonUnownLetter(boxmon); + case SPECIES_DEOXYS: + case SPECIES_BURMY: + case SPECIES_WORMADAM: + case SPECIES_SHELLOS: + case SPECIES_GASTRODON: + return (u16) GetBoxMonData(boxmon, MON_DATA_FORME, NULL); + default: + return 0; + } +} + +const u8 UNK_020F8074[] = { + 0, 1, 1, 1, 0, 0, 0, 0, 2, 2, 1, 1, 0, 1, 2, 2, + 0, 0, 0, 2, 1, 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, + 2, 2, 2, 0, 0, 2, 1, 0, 0, 2, 2, 1, 0, 0, 0, 0, + 0, 2, 2, 2, 1, 1, 1, 2, 1, 2, 0, 0, 0, 0, 0, 2, + 2, 2, 0, 2, 0, 1, 1, 1, 2, 2, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2, 1, 2, 2, 1, + 1, 0, 0, 1, 0, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 2, + 2, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1, + 0, 0, 0, 0, 0, 2, 2, 0, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 0, 0, 1, 0, 2, 2, 0, 0, 0, 1, 2, + 2, 0, 0, 2, 0, 0, 1, 2, 2, 1, 1, 1, 1, 2, 2, 1, + 1, 1, 0, 0, 2, 2, 2, 0, 0, 0, 0, 1, 0, 2, 2, 2, + 0, 0, 2, 0, 0, 1, 2, 0, 0, 2, 0, 0, 2, 2, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 2, 1, 1, + 1, 1, 1, 0, 2, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 1, 1, 1, + 1, 1, 1, 0, 2, 2, 0, 0, 1, 1, 1, 2, 0, 1, 1, 2, + 2, 1, 1, 1, 1, 0, 2, 2, 2, 1, 2, 0, 0, 2, 2, 2, + 2, 2, 2, 0, 0, 1, 0, 0, 0, 0, 2, 0, 1, 2, 0, 0, + 2, 0, 1, 0, 1, 0, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 2, 1, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2, 0, 0, + 1, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, + 0, 1, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 0, + 1, 0, 0, 1, 1, 1, 1, 0, 0, 2, 2, 0, 0, 0, 0, 2, + 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 2, 2, 2, 2, 2, 0, 1, 0, + 2, 0, 2, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 2, + 2, 1, 1, 0, 2, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, + 0, 2, 1, 0, 2, 1, 1, 0, 2, 2, 0, 1, 0, 2, 2, 0, + 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 0, 1, 0, 0, 0, 0, 0, 0 +}; + +u32 FUN_0206B7BC(u32 species, u32 forme, u32 is_egg) +{ + if (is_egg == TRUE) + { + if (species == SPECIES_MANAPHY) + species = 495; + else + species = 494; + } + else if (species > SPECIES_ARCEUS) + species = 0; + else if (forme != 0) + { + if (species == SPECIES_DEOXYS) + species = 495 + forme; + else if (species == SPECIES_UNOWN) + species = 498 + forme; + else if (species == SPECIES_BURMY) + species = 526 + forme; + else if (species == SPECIES_WORMADAM) + species = 528 + forme; + else if (species == SPECIES_SHELLOS) + species = 530 + forme; + else if (species == SPECIES_GASTRODON) + species = 531 + forme; + } + return UNK_020F8074[species]; +} + +u32 FUN_0206B83C(struct BoxPokemon * boxmon) +{ + BOOL decry = AcquireBoxMonLock(boxmon); + u32 forme = BoxMon_GetAlternateForme(boxmon); + u32 species = GetBoxMonData(boxmon, MON_DATA_SPECIES, NULL); + u32 is_egg = GetBoxMonData(boxmon, MON_DATA_IS_EGG, NULL); + ReleaseBoxMonLock(boxmon, decry); + return FUN_0206B7BC(species, forme, is_egg); +} + +u32 FUN_0206B87C(struct Pokemon * pokemon) +{ + return FUN_0206B83C(FUN_020690E4(pokemon)); +} + +u32 FUN_0206B888(void) +{ + return 0; +} + +u32 FUN_0206B88C(void) +{ + return 2; +} + +u32 FUN_0206B890(void) +{ + return 4; +} + +u32 FUN_0206B894(void) +{ + return 6; +} + +u32 FUN_0206B898(void) +{ + return 1; +} + +u32 FUN_0206B89C(void) +{ + return 3; +} + +u32 FUN_0206B8A0(void) +{ + return 5; +} diff --git a/arm9/src/unk_0206BB28.c b/arm9/src/unk_0206BB28.c new file mode 100644 index 00000000..baaecc6a --- /dev/null +++ b/arm9/src/unk_0206BB28.c @@ -0,0 +1,25 @@ +#include "global.h" +#include "save_block_2.h" +#include "pokedex.h" +#include "pokemon.h" +#include "unk_0206BB28.h" + +#pragma thumb on + +BOOL FUN_0206BB28(struct SaveBlock2 * sav2) +{ + return FUN_0206BB34(Sav2_Pokedex_get(sav2)); +} + +BOOL FUN_0206BB34(struct Pokedex * pokedex) +{ + return Pokedex_GetNatDexFlag(pokedex) == TRUE; +} + +u32 FUN_0206BB48(BOOL isNationalDex, u32 species) +{ + if (!isNationalDex) + species = SpeciesToSinnohDexNo((u16)species); + return species; +} + |