diff options
author | who-knows-who <j.williams.8@warwick.ac.uk> | 2018-08-28 00:26:14 +0100 |
---|---|---|
committer | who-knows-who <j.williams.8@warwick.ac.uk> | 2018-08-28 00:26:14 +0100 |
commit | 70bb9b8f6f9a3169b83b98b266baa3e9923fba3e (patch) | |
tree | 27c6ef336e50779dd090a6468cbf73ad7f39c7a9 | |
parent | 6a7b3033eadef95b9fb8788b3bf7251bc4ee27ae (diff) | |
parent | 3f1288e3e055013e0ab847ba5fea4b566bc31996 (diff) |
Merge branch 'master' of github.com:pret/pokeruby into flying
65 files changed, 7873 insertions, 17622 deletions
diff --git a/.gitignore b/.gitignore index cfb969f5c..67a81bb9f 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,7 @@ types_*.taghl *.s.old2 *.dump *.sa* +*.sgm Thumbs.db build/ .idea/ diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s index 4fea7049b..8a062e352 100644 --- a/asm/battle_anim_812C144.s +++ b/asm/battle_anim_812C144.s @@ -5,4789 +5,6 @@ .text - thumb_func_start sub_812F474 -sub_812F474: @ 812F474 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0812F4A8 @ =gTasks - adds r6, r0, r1 - ldrb r0, [r6, 0x12] - bl GetBattlerPosition_permutated - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0812F4B4 - ldr r0, _0812F4AC @ =gBattle_BG1_X - ldrh r0, [r0] - str r0, [sp, 0x4] - ldr r0, _0812F4B0 @ =gBattle_BG1_Y - b _0812F4BC - .align 2, 0 -_0812F4A8: .4byte gTasks -_0812F4AC: .4byte gBattle_BG1_X -_0812F4B0: .4byte gBattle_BG1_Y -_0812F4B4: - ldr r0, _0812F4D4 @ =gBattle_BG2_X - ldrh r0, [r0] - str r0, [sp, 0x4] - ldr r0, _0812F4D8 @ =gBattle_BG2_Y -_0812F4BC: - ldrh r0, [r0] - str r0, [sp, 0x8] - movs r1, 0x8 - ldrsh r0, [r6, r1] - cmp r0, 0x1 - bne _0812F4CA - b _0812F6A6 -_0812F4CA: - cmp r0, 0x1 - bgt _0812F4DC - cmp r0, 0 - beq _0812F4EA - b _0812F712 - .align 2, 0 -_0812F4D4: .4byte gBattle_BG2_X -_0812F4D8: .4byte gBattle_BG2_Y -_0812F4DC: - cmp r0, 0x2 - bne _0812F4E2 - b _0812F6C4 -_0812F4E2: - cmp r0, 0x3 - bne _0812F4E8 - b _0812F70C -_0812F4E8: - b _0812F712 -_0812F4EA: - movs r2, 0x24 - ldrsh r0, [r6, r2] - lsls r0, 17 - lsrs r5, r0, 16 - movs r3, 0 - str r3, [sp] - mov r9, r3 - movs r4, 0 - ldrh r0, [r6, 0xA] - adds r0, 0x2 - movs r1, 0xFF - ands r0, r1 - strh r0, [r6, 0xA] - ldrh r7, [r6, 0xA] - mov r8, r7 - movs r0, 0x14 - ldrsh r1, [r6, r0] - movs r0, 0xFC - lsls r0, 3 - bl __divsi3 - strh r0, [r6, 0x1A] - movs r1, 0x16 - ldrsh r0, [r6, r1] - lsls r0, 1 - movs r2, 0x1A - ldrsh r1, [r6, r2] - bl __divsi3 - negs r0, r0 - strh r0, [r6, 0x1C] - ldrh r0, [r6, 0x16] - strh r0, [r6, 0x1E] - lsls r0, 16 - asrs r0, 21 - lsls r0, 16 - lsrs r7, r0, 16 - strh r7, [r6, 0x20] - ldrh r2, [r6, 0x24] - lsls r3, r2, 16 - mov r12, r3 - asrs r1, r3, 16 - movs r3, 0x22 - ldrsh r0, [r6, r3] - cmp r1, r0 - ble _0812F60A - ldr r0, _0812F660 @ =gScanlineEffect - mov r10, r0 - ldr r1, [sp, 0x4] - lsls r0, r1, 16 - asrs r0, 16 - str r0, [sp, 0x10] - ldr r2, [sp, 0x8] - lsls r0, r2, 16 - asrs r0, 16 - str r0, [sp, 0xC] -_0812F55A: - lsls r5, 16 - asrs r5, 16 - adds r2, r5, 0x1 - lsls r2, 1 - mov r3, r10 - ldrb r1, [r3, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r2, r0 - ldr r0, _0812F664 @ =gScanlineEffectRegBuffers - adds r2, r0 - lsls r4, 16 - asrs r4, 16 - mov r1, r9 - lsls r0, r1, 16 - asrs r0, 16 - subs r0, r4, r0 - ldr r3, [sp, 0xC] - adds r0, r3, r0 - strh r0, [r2] - lsls r3, r5, 1 - mov r0, r10 - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - adds r3, r0 - ldr r1, _0812F664 @ =gScanlineEffectRegBuffers - adds r3, r1 - lsls r1, r7, 16 - asrs r1, 16 - ldr r2, [sp, 0x10] - adds r1, r2, r1 - mov r7, r8 - lsls r2, r7, 16 - asrs r2, 16 - lsls r0, r2, 1 - ldr r7, _0812F668 @ =gSineTable - adds r0, r7 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 21 - adds r1, r0 - strh r1, [r3] - adds r2, 0xA - mov r8, r2 - movs r0, 0xFF - mov r1, r8 - ands r1, r0 - mov r8, r1 - ldrh r0, [r6, 0x1C] - ldrh r2, [r6, 0x1E] - adds r0, r2 - strh r0, [r6, 0x1E] - lsls r0, 16 - asrs r0, 21 - lsls r0, 16 - lsrs r7, r0, 16 - strh r7, [r6, 0x20] - adds r4, 0x1 - lsls r4, 16 - lsrs r4, 16 - subs r5, 0x2 - lsls r5, 16 - lsrs r5, 16 - ldr r3, [sp] - lsls r0, r3, 16 - asrs r0, 16 - ldrh r1, [r6, 0x14] - adds r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - str r2, [sp] - asrs r0, 21 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - ldr r0, _0812F66C @ =0xffff0000 - add r0, r12 - lsrs r2, r0, 16 - lsls r3, r2, 16 - mov r12, r3 - asrs r1, r3, 16 - movs r3, 0x22 - ldrsh r0, [r6, r3] - cmp r1, r0 - bgt _0812F55A -_0812F60A: - lsls r1, r2, 17 - cmp r1, 0 - blt _0812F636 - ldr r4, _0812F664 @ =gScanlineEffectRegBuffers - ldr r7, [sp, 0x4] - lsls r0, r7, 16 - asrs r0, 16 - adds r3, r0, 0 - adds r3, 0xF0 - movs r0, 0xF0 - lsls r0, 3 - adds r5, r4, r0 -_0812F622: - asrs r2, r1, 16 - lsls r1, r2, 1 - adds r0, r1, r4 - strh r3, [r0] - adds r1, r5 - strh r3, [r1] - subs r2, 0x2 - lsls r1, r2, 16 - cmp r1, 0 - bge _0812F622 -_0812F636: - ldrh r0, [r6, 0x14] - adds r0, 0x1 - strh r0, [r6, 0x14] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3F - ble _0812F69C - movs r0, 0x40 - strh r0, [r6, 0x14] - ldrh r0, [r6, 0xC] - adds r0, 0x1 - strh r0, [r6, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0812F670 - ldrh r0, [r6, 0xE] - subs r0, 0x1 - strh r0, [r6, 0xE] - b _0812F676 - .align 2, 0 -_0812F660: .4byte gScanlineEffect -_0812F664: .4byte gScanlineEffectRegBuffers -_0812F668: .4byte gSineTable -_0812F66C: .4byte 0xffff0000 -_0812F670: - ldrh r0, [r6, 0x10] - adds r0, 0x1 - strh r0, [r6, 0x10] -_0812F676: - ldr r0, _0812F698 @ =REG_BLDALPHA - ldrh r1, [r6, 0x10] - lsls r1, 8 - ldrh r2, [r6, 0xE] - orrs r1, r2 - strh r1, [r0] - movs r2, 0xE - ldrsh r1, [r6, r2] - cmp r1, 0 - bne _0812F712 - movs r3, 0x10 - ldrsh r0, [r6, r3] - cmp r0, 0x10 - bne _0812F712 - strh r1, [r6, 0xC] - strh r1, [r6, 0xE] - b _0812F700 - .align 2, 0 -_0812F698: .4byte REG_BLDALPHA -_0812F69C: - ldrh r0, [r6, 0x18] - ldrh r7, [r6, 0x16] - adds r0, r7 - strh r0, [r6, 0x16] - b _0812F712 -_0812F6A6: - ldrh r0, [r6, 0xC] - adds r0, 0x1 - strh r0, [r6, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - ble _0812F712 - ldr r1, _0812F6C0 @ =gScanlineEffect - movs r0, 0x3 - strb r0, [r1, 0x15] - movs r0, 0 - strh r0, [r6, 0xC] - b _0812F700 - .align 2, 0 -_0812F6C0: .4byte gScanlineEffect -_0812F6C4: - ldrh r0, [r6, 0xC] - adds r0, 0x1 - strh r0, [r6, 0xC] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0812F6DA - ldrh r0, [r6, 0xE] - adds r0, 0x1 - strh r0, [r6, 0xE] - b _0812F6E0 -_0812F6DA: - ldrh r0, [r6, 0x10] - subs r0, 0x1 - strh r0, [r6, 0x10] -_0812F6E0: - ldr r2, _0812F708 @ =REG_BLDALPHA - ldrh r0, [r6, 0x10] - lsls r0, 8 - ldrh r1, [r6, 0xE] - orrs r0, r1 - strh r0, [r2] - movs r1, 0xE - ldrsh r0, [r6, r1] - cmp r0, 0x10 - bne _0812F712 - movs r2, 0x10 - ldrsh r0, [r6, r2] - cmp r0, 0 - bne _0812F712 - strh r0, [r6, 0xC] - strh r0, [r6, 0xE] -_0812F700: - ldrh r0, [r6, 0x8] - adds r0, 0x1 - strh r0, [r6, 0x8] - b _0812F712 - .align 2, 0 -_0812F708: .4byte REG_BLDALPHA -_0812F70C: - adds r0, r4, 0 - bl DestroyAnimVisualTask -_0812F712: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_812F474 - - thumb_func_start sub_812F724 -sub_812F724: @ 812F724 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _0812F75C @ =gTasks - adds r4, r0 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r0, _0812F760 @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x26] - ldr r2, _0812F764 @ =gUnknown_08402750 - adds r0, r4, 0 - bl sub_80798F4 - ldr r0, _0812F768 @ =sub_812F76C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812F75C: .4byte gTasks -_0812F760: .4byte gBattleAnimArgs -_0812F764: .4byte gUnknown_08402750 -_0812F768: .4byte sub_812F76C - thumb_func_end sub_812F724 - - thumb_func_start sub_812F76C -sub_812F76C: @ 812F76C - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r2, _0812F7C4 @ =gTasks - adds r3, r0, r2 - ldrh r0, [r3, 0x8] - adds r1, r0, 0x1 - movs r5, 0 - strh r1, [r3, 0x8] - subs r0, 0x14 - lsls r0, 16 - lsrs r0, 16 - adds r6, r2, 0 - cmp r0, 0x16 - bhi _0812F7D0 - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0812F7E0 - strh r5, [r3, 0xA] - ldrh r0, [r3, 0xC] - adds r0, 0x1 - strh r0, [r3, 0xC] - movs r5, 0x1 - ands r0, r5 - cmp r0, 0 - bne _0812F7D0 - ldr r2, _0812F7C8 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _0812F7CC @ =0x0000ffff - strh r1, [r0, 0x24] - b _0812F7E0 - .align 2, 0 -_0812F7C4: .4byte gTasks -_0812F7C8: .4byte gSprites -_0812F7CC: .4byte 0x0000ffff -_0812F7D0: - ldr r2, _0812F800 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x24] -_0812F7E0: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r6 - bl sub_807992C - lsls r0, 24 - cmp r0, 0 - bne _0812F7F8 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_0812F7F8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812F800: .4byte gSprites - thumb_func_end sub_812F76C - - thumb_func_start sub_812F804 -sub_812F804: @ 812F804 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - adds r5, r2, 0 - adds r0, r3, 0 - ldr r4, [sp, 0x14] - ldr r6, [sp, 0x18] - lsls r1, 16 - lsrs r1, 16 - lsls r5, 16 - lsrs r5, 16 - lsls r4, 16 - lsrs r4, 16 - lsls r6, 16 - lsrs r6, 16 - mov r2, r8 - strh r1, [r2, 0x20] - strh r5, [r2, 0x22] - lsls r1, 16 - asrs r1, 16 - lsls r2, r1, 4 - mov r3, r8 - strh r2, [r3, 0x36] - lsls r5, 16 - asrs r5, 16 - lsls r2, r5, 4 - strh r2, [r3, 0x38] - lsls r0, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 4 - adds r1, r6, 0 - bl __divsi3 - mov r1, r8 - strh r0, [r1, 0x3A] - lsls r4, 16 - asrs r4, 16 - subs r4, r5 - lsls r4, 4 - adds r0, r4, 0 - adds r1, r6, 0 - bl __divsi3 - mov r2, r8 - strh r0, [r2, 0x3C] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_812F804 - - thumb_func_start sub_812F86C -sub_812F86C: @ 812F86C - ldrh r1, [r0, 0x3A] - ldrh r2, [r0, 0x36] - adds r1, r2 - strh r1, [r0, 0x36] - ldrh r2, [r0, 0x3C] - ldrh r3, [r0, 0x38] - adds r2, r3 - strh r2, [r0, 0x38] - lsls r1, 16 - asrs r1, 20 - strh r1, [r0, 0x20] - lsls r2, 16 - asrs r2, 20 - strh r2, [r0, 0x22] - bx lr - thumb_func_end sub_812F86C - - thumb_func_start sub_812F88C -sub_812F88C: @ 812F88C - push {r4-r6,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldrh r6, [r4, 0x20] - ldrh r5, [r4, 0x22] - bl sub_8078650 - ldr r0, _0812F8D4 @ =gBattleAnimArgs - ldrb r1, [r0] - adds r0, r4, 0 - bl StartSpriteAffineAnim - movs r0, 0x20 - ldrsh r1, [r4, r0] - movs r0, 0x22 - ldrsh r2, [r4, r0] - lsls r6, 16 - asrs r6, 16 - lsls r5, 16 - asrs r5, 16 - str r5, [sp] - movs r0, 0x40 - str r0, [sp, 0x4] - adds r0, r4, 0 - adds r3, r6, 0 - bl sub_812F804 - movs r0, 0 - strh r0, [r4, 0x2E] - ldr r0, _0812F8D8 @ =sub_812F8DC - str r0, [r4, 0x1C] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812F8D4: .4byte gBattleAnimArgs -_0812F8D8: .4byte sub_812F8DC - thumb_func_end sub_812F88C - - thumb_func_start sub_812F8DC -sub_812F8DC: @ 812F8DC - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] - movs r0, 0x2E - ldrsh r4, [r5, r0] - lsls r4, 3 - movs r0, 0xFF - ands r4, r0 - adds r0, r5, 0 - bl sub_812F86C - adds r0, r4, 0 - movs r1, 0x8 - bl Sin - strh r0, [r5, 0x26] - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0x3A - ble _0812F942 - ldrh r0, [r5, 0x30] - adds r0, 0x1 - strh r0, [r5, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _0812F942 - movs r0, 0 - strh r0, [r5, 0x30] - ldrh r1, [r5, 0x32] - adds r1, 0x1 - strh r1, [r5, 0x32] - movs r0, 0x1 - ands r1, r0 - adds r3, r5, 0 - adds r3, 0x3E - lsls r1, 2 - ldrb r2, [r3] - subs r0, 0x6 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - movs r1, 0x32 - ldrsh r0, [r5, r1] - cmp r0, 0x3 - ble _0812F942 - adds r0, r5, 0 - bl move_anim_8074EE0 -_0812F942: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_812F8DC - - thumb_func_start sub_812F948 -sub_812F948: @ 812F948 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _0812F9A0 @ =gBattleAnimArgs - ldrh r0, [r6, 0x6] - strh r0, [r5, 0x2E] - ldrb r1, [r6] - adds r0, r5, 0 - bl StartSpriteAffineAnim - ldr r0, _0812F9A4 @ =gAnimBankTarget - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0812F96E - ldrh r0, [r6, 0x2] - negs r0, r0 - strh r0, [r6, 0x2] -_0812F96E: - ldr r4, _0812F9A8 @ =gAnimBankAttacker - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r6, 0x2] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r6, [r6, 0x4] - adds r0, r6 - strh r0, [r5, 0x22] - ldr r0, _0812F9AC @ =sub_80DA48C - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812F9A0: .4byte gBattleAnimArgs -_0812F9A4: .4byte gAnimBankTarget -_0812F9A8: .4byte gAnimBankAttacker -_0812F9AC: .4byte sub_80DA48C - thumb_func_end sub_812F948 - - thumb_func_start sub_812F9B0 -sub_812F9B0: @ 812F9B0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - movs r7, 0 - ldr r2, _0812FA00 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x8] - subs r0, 0x1 - strh r0, [r3, 0x8] - movs r1, 0x14 - ldrsh r0, [r3, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _0812FA32 - ldrh r0, [r3, 0xA] - subs r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _0812FA32 - movs r2, 0x1A - ldrsh r0, [r3, r2] - cmp r0, 0 - bne _0812FA04 - ldrh r0, [r3, 0x10] - strh r0, [r3, 0x1A] - negs r0, r0 - strh r0, [r3, 0x10] - b _0812FA06 - .align 2, 0 -_0812FA00: .4byte gTasks -_0812FA04: - strh r7, [r3, 0x1A] -_0812FA06: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - mov r2, r8 - adds r1, r0, r2 - movs r2, 0x1C - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0812FA22 - ldrh r0, [r1, 0x12] - strh r0, [r1, 0x1C] - negs r0, r0 - strh r0, [r1, 0x12] - b _0812FA26 -_0812FA22: - movs r0, 0 - strh r0, [r1, 0x1C] -_0812FA26: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - add r0, r8 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0xA] -_0812FA32: - lsls r2, r5, 2 - adds r0, r2, r5 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - ldrh r6, [r4, 0x16] - ldrh r7, [r4, 0x18] - movs r1, 0xC - ldrsh r0, [r4, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - mov r12, r2 - cmp r0, 0 - beq _0812FA70 - ldr r3, _0812FA6C @ =gSprites - movs r2, 0x26 - ldrsh r0, [r4, r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - lsrs r2, r6, 8 - ldrh r0, [r4, 0x1A] - subs r0, r2 - strh r0, [r1, 0x24] - adds r2, r3, 0 - b _0812FA86 - .align 2, 0 -_0812FA6C: .4byte gSprites -_0812FA70: - ldr r2, _0812FAB4 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - lsrs r1, r6, 8 - ldrh r4, [r4, 0x1A] - adds r1, r4 - strh r1, [r0, 0x24] -_0812FA86: - mov r1, r12 - adds r0, r1, r5 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - movs r1, 0xE - ldrsh r0, [r4, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _0812FAB8 - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsrs r2, r7, 8 - ldrh r0, [r4, 0x1C] - subs r0, r2 - b _0812FACA - .align 2, 0 -_0812FAB4: .4byte gSprites -_0812FAB8: - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsrs r0, r7, 8 - ldrh r4, [r4, 0x1C] - adds r0, r4 -_0812FACA: - strh r0, [r1, 0x26] - mov r2, r12 - adds r0, r2, r5 - lsls r0, 3 - add r0, r8 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0 - bgt _0812FAEA - adds r0, r5, 0 - bl DestroyTask - ldr r1, _0812FAF4 @ =gAnimVisualTaskCount - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_0812FAEA: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812FAF4: .4byte gAnimVisualTaskCount - thumb_func_end sub_812F9B0 - - thumb_func_start sub_812FAF8 -sub_812FAF8: @ 812FAF8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r6, r0, 24 - movs r7, 0 - ldr r2, _0812FB4C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r3, r0, r2 - ldrh r0, [r3, 0x8] - subs r0, 0x1 - strh r0, [r3, 0x8] - movs r1, 0x14 - ldrsh r0, [r3, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - mov r8, r2 - cmp r0, 0 - beq _0812FB7E - ldrh r0, [r3, 0xA] - subs r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _0812FB7E - movs r2, 0x1A - ldrsh r0, [r3, r2] - cmp r0, 0 - bne _0812FB50 - ldrh r0, [r3, 0x10] - strh r0, [r3, 0x1A] - negs r0, r0 - strh r0, [r3, 0x10] - b _0812FB52 - .align 2, 0 -_0812FB4C: .4byte gTasks -_0812FB50: - strh r7, [r3, 0x1A] -_0812FB52: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - mov r2, r8 - adds r1, r0, r2 - movs r2, 0x1C - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _0812FB6E - ldrh r0, [r1, 0x12] - strh r0, [r1, 0x1C] - negs r0, r0 - strh r0, [r1, 0x12] - b _0812FB72 -_0812FB6E: - movs r0, 0 - strh r0, [r1, 0x1C] -_0812FB72: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - add r0, r8 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0xA] -_0812FB7E: - lsls r3, r6, 2 - adds r0, r3, r6 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - ldrh r2, [r4, 0xC] - ldr r1, _0812FBD0 @ =0x00007fff - adds r0, r1, 0 - ands r0, r2 - ldrh r2, [r4, 0x16] - adds r0, r2 - lsls r5, r0, 16 - lsrs r0, r5, 16 - mov r9, r0 - ldrh r0, [r4, 0xE] - ands r1, r0 - ldrh r2, [r4, 0x18] - adds r1, r2 - lsls r1, 16 - lsrs r7, r1, 16 - movs r1, 0xC - ldrsh r0, [r4, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - mov r12, r3 - cmp r0, 0 - beq _0812FBD8 - ldr r3, _0812FBD4 @ =gSprites - movs r2, 0x26 - ldrsh r0, [r4, r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - lsrs r2, r5, 24 - ldrh r0, [r4, 0x1A] - subs r0, r2 - strh r0, [r1, 0x24] - adds r2, r3, 0 - b _0812FBEE - .align 2, 0 -_0812FBD0: .4byte 0x00007fff -_0812FBD4: .4byte gSprites -_0812FBD8: - ldr r2, _0812FC1C @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - lsrs r1, r5, 24 - ldrh r4, [r4, 0x1A] - adds r1, r4 - strh r1, [r0, 0x24] -_0812FBEE: - mov r1, r12 - adds r0, r1, r6 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - movs r1, 0xE - ldrsh r0, [r4, r1] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _0812FC20 - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsrs r2, r7, 8 - ldrh r0, [r4, 0x1C] - subs r0, r2 - b _0812FC32 - .align 2, 0 -_0812FC1C: .4byte gSprites -_0812FC20: - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsrs r0, r7, 8 - ldrh r4, [r4, 0x1C] - adds r0, r4 -_0812FC32: - strh r0, [r1, 0x26] - mov r2, r12 - adds r0, r2, r6 - lsls r0, 3 - mov r1, r8 - adds r2, r0, r1 - mov r0, r9 - strh r0, [r2, 0x16] - strh r7, [r2, 0x18] - movs r1, 0x8 - ldrsh r0, [r2, r1] - cmp r0, 0 - bgt _0812FC58 - movs r0, 0x1E - strh r0, [r2, 0x8] - movs r0, 0 - strh r0, [r2, 0x22] - ldr r0, _0812FC64 @ =sub_812F9B0 - str r0, [r2] -_0812FC58: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812FC64: .4byte sub_812F9B0 - thumb_func_end sub_812FAF8 - - thumb_func_start sub_812FC68 -sub_812FC68: @ 812FC68 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0812FCC8 @ =gTasks - mov r8, r0 - lsls r7, r6, 2 - adds r0, r7, r6 - lsls r0, 3 - mov r1, r8 - adds r4, r0, r1 - ldr r1, _0812FCCC @ =gBankSpriteIds - ldr r2, _0812FCD0 @ =gAnimBankAttacker - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - strh r0, [r4, 0x26] - ldr r5, _0812FCD4 @ =gBattleAnimArgs - ldrh r0, [r5] - strh r0, [r4, 0x24] - ldrh r0, [r5] - strh r0, [r4, 0x8] - ldrh r0, [r5, 0xC] - strh r0, [r4, 0x22] - movs r3, 0x6 - ldrsh r0, [r5, r3] - cmp r0, 0 - beq _0812FCAC - ldrh r0, [r4, 0x14] - ldr r3, _0812FCD8 @ =0xffff8000 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r4, 0x14] -_0812FCAC: - ldrb r0, [r2] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _0812FCDC - ldrh r0, [r5, 0x2] - strh r0, [r4, 0xC] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0xE] - mov r3, r8 - adds r4, r7, 0 - b _0812FD4C - .align 2, 0 -_0812FCC8: .4byte gTasks -_0812FCCC: .4byte gBankSpriteIds -_0812FCD0: .4byte gAnimBankAttacker -_0812FCD4: .4byte gBattleAnimArgs -_0812FCD8: .4byte 0xffff8000 -_0812FCDC: - movs r7, 0x2 - ldrsh r0, [r5, r7] - movs r1, 0x80 - lsls r1, 8 - ands r0, r1 - cmp r0, 0 - beq _0812FCF8 - ldrh r1, [r5, 0x2] - ldr r0, _0812FCF4 @ =0x00007fff - ands r0, r1 - b _0812FD00 - .align 2, 0 -_0812FCF4: .4byte 0x00007fff -_0812FCF8: - ldrh r0, [r5, 0x2] - ldr r2, _0812FD28 @ =0xffff8000 - adds r1, r2, 0 - orrs r0, r1 -_0812FD00: - strh r0, [r4, 0xC] - ldr r0, _0812FD2C @ =gBattleAnimArgs - movs r3, 0x4 - ldrsh r1, [r0, r3] - movs r2, 0x80 - lsls r2, 8 - ands r1, r2 - adds r5, r0, 0 - cmp r1, 0 - beq _0812FD38 - ldr r3, _0812FD30 @ =gTasks - lsls r4, r6, 2 - adds r1, r4, r6 - lsls r1, 3 - adds r1, r3 - ldrh r2, [r5, 0x4] - ldr r0, _0812FD34 @ =0x00007fff - ands r0, r2 - b _0812FD4A - .align 2, 0 -_0812FD28: .4byte 0xffff8000 -_0812FD2C: .4byte gBattleAnimArgs -_0812FD30: .4byte gTasks -_0812FD34: .4byte 0x00007fff -_0812FD38: - ldr r3, _0812FD70 @ =gTasks - lsls r4, r6, 2 - adds r1, r4, r6 - lsls r1, 3 - adds r1, r3 - ldrh r2, [r5, 0x4] - ldr r7, _0812FD74 @ =0xffff8000 - adds r0, r7, 0 - orrs r0, r2 -_0812FD4A: - strh r0, [r1, 0xE] -_0812FD4C: - adds r0, r4, r6 - lsls r0, 3 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x18] - strh r1, [r0, 0x16] - ldrh r1, [r5, 0x8] - strh r1, [r0, 0x10] - ldrh r1, [r5, 0xA] - strh r1, [r0, 0x12] - ldr r1, _0812FD78 @ =sub_812FAF8 - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812FD70: .4byte gTasks -_0812FD74: .4byte 0xffff8000 -_0812FD78: .4byte sub_812FAF8 - thumb_func_end sub_812FC68 - - thumb_func_start sub_812FD7C -sub_812FD7C: @ 812FD7C - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _0812FDB4 @ =gTasks - adds r5, r0, r1 - ldr r4, _0812FDB8 @ =gBattleAnimArgs - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0812FD9C - adds r0, r2, 0 - bl DestroyAnimVisualTask -_0812FD9C: - movs r0, 0 - strh r0, [r5, 0x8] - strh r0, [r5, 0xA] - strh r0, [r5, 0xC] - ldrh r0, [r4, 0x2] - strh r0, [r5, 0xE] - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0812FDC0 - ldr r0, _0812FDBC @ =gAnimBankAttacker - b _0812FDC2 - .align 2, 0 -_0812FDB4: .4byte gTasks -_0812FDB8: .4byte gBattleAnimArgs -_0812FDBC: .4byte gAnimBankAttacker -_0812FDC0: - ldr r0, _0812FE10 @ =gAnimBankTarget -_0812FDC2: - ldrb r4, [r0] - adds r0, r4, 0 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x10] - adds r0, r4, 0 - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x12] - adds r0, r4, 0 - bl sub_8079E90 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x14] - ldr r0, _0812FE14 @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r5, 0x26] - ldr r2, _0812FE18 @ =gUnknown_084028AC - adds r0, r5, 0 - bl sub_80798F4 - ldr r0, _0812FE1C @ =sub_812FE20 - str r0, [r5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812FE10: .4byte gAnimBankTarget -_0812FE14: .4byte gBattleAnimArgs -_0812FE18: .4byte gUnknown_084028AC -_0812FE1C: .4byte sub_812FE20 - thumb_func_end sub_812FD7C - - thumb_func_start sub_812FE20 -sub_812FE20: @ 812FE20 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0812FE40 @ =gTasks - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0812FE44 - cmp r0, 0x1 - beq _0812FEA4 - b _0812FEB2 - .align 2, 0 -_0812FE40: .4byte gTasks -_0812FE44: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _0812FE5A - adds r0, r5, 0 - movs r1, 0x1 - bl sub_812FEB8 -_0812FE5A: - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0x12 - bne _0812FE6A - adds r0, r5, 0 - movs r1, 0 - bl sub_812FEB8 -_0812FE6A: - adds r0, r4, 0 - bl sub_807992C - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0812FEB2 - ldrh r0, [r4, 0xE] - subs r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _0812FE8C - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0812FEB2 -_0812FE8C: - strh r1, [r4, 0xA] - ldrh r1, [r4, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _0812FEA0 @ =gUnknown_084028AC - adds r0, r4, 0 - bl sub_80798F4 - b _0812FEB2 - .align 2, 0 -_0812FEA0: .4byte gUnknown_084028AC -_0812FEA4: - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0812FEB2 - adds r0, r5, 0 - bl DestroyAnimVisualTask -_0812FEB2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_812FE20 - - thumb_func_start sub_812FEB8 -sub_812FEB8: @ 812FEB8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r2, _0812FEDC @ =gTasks - adds r4, r0, r2 - cmp r1, 0 - bne _0812FEE0 - movs r1, 0x12 - movs r3, 0xEC - b _0812FEE4 - .align 2, 0 -_0812FEDC: .4byte gTasks -_0812FEE0: - movs r1, 0x1E - movs r3, 0x14 -_0812FEE4: - mov r2, sp - ldrh r0, [r4, 0x10] - subs r0, r1 - strh r0, [r2] - ldrh r0, [r4, 0x10] - subs r0, r1 - subs r0, 0x4 - strh r0, [r2, 0x2] - ldrh r0, [r4, 0x10] - adds r0, r1 - strh r0, [r2, 0x4] - ldrh r0, [r4, 0x10] - adds r0, r1 - adds r0, 0x4 - strh r0, [r2, 0x6] - add r2, sp, 0x8 - lsls r1, r3, 24 - asrs r1, 24 - ldrh r0, [r4, 0x12] - adds r0, r1 - strh r0, [r2] - ldrh r0, [r4, 0x12] - adds r0, r1 - adds r0, 0x6 - strh r0, [r2, 0x2] - movs r5, 0 - mov r8, r2 - ldr r7, _0812FF88 @ =gSprites -_0812FF1C: - lsls r0, r5, 1 - add r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0x1 - ands r0, r5 - lsls r0, 1 - add r0, r8 - movs r3, 0 - ldrsh r2, [r0, r3] - ldrb r3, [r4, 0x14] - subs r3, 0x5 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _0812FF8C @ =gSpriteTemplate_84028CC - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _0812FF70 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r7 - movs r0, 0 - strh r0, [r1, 0x2E] - movs r0, 0x2 - cmp r5, 0x1 - bhi _0812FF5E - movs r2, 0x2 - negs r2, r2 - adds r0, r2, 0 -_0812FF5E: - strh r0, [r1, 0x30] - ldr r0, _0812FF90 @ =0x0000ffff - strh r0, [r1, 0x32] - strh r6, [r1, 0x34] - movs r0, 0x2 - strh r0, [r1, 0x36] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] -_0812FF70: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _0812FF1C - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812FF88: .4byte gSprites -_0812FF8C: .4byte gSpriteTemplate_84028CC -_0812FF90: .4byte 0x0000ffff - thumb_func_end sub_812FEB8 - - thumb_func_start sub_812FF94 -sub_812FF94: @ 812FF94 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x32] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _0812FFDA - ldr r3, _0812FFE0 @ =gTasks - movs r0, 0x36 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x34 - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_0812FFDA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812FFE0: .4byte gTasks - thumb_func_end sub_812FF94 - - thumb_func_start sub_812FFE4 -sub_812FFE4: @ 812FFE4 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0813002C @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - movs r0, 0 - strh r0, [r4, 0x8] - ldr r1, _08130030 @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r4, 0xA] - ldrb r0, [r1] - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08130034 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1, 0x5] - lsrs r0, 4 - lsls r0, 4 - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - adds r0, r1 - strh r0, [r4, 0xC] - ldr r0, _08130038 @ =sub_813003C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813002C: .4byte gTasks -_08130030: .4byte gBattleAnimArgs -_08130034: .4byte gSprites -_08130038: .4byte sub_813003C - thumb_func_end sub_812FFE4 - - thumb_func_start sub_813003C -sub_813003C: @ 813003C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _08130084 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0xA - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0813008C - ldrh r0, [r4, 0xC] - ldr r2, _08130088 @ =gUnknown_084028E4 - movs r3, 0x8 - ldrsh r1, [r4, r3] - lsls r1, 1 - adds r1, r2 - ldrh r3, [r1] - movs r1, 0x10 - movs r2, 0x8 - bl BlendPalette - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x17 - ble _0813007C - movs r0, 0 - strh r0, [r4, 0x8] -_0813007C: - ldrh r0, [r4, 0xA] - subs r0, 0x1 - strh r0, [r4, 0xA] - b _0813009E - .align 2, 0 -_08130084: .4byte gTasks -_08130088: .4byte gUnknown_084028E4 -_0813008C: - ldrh r0, [r4, 0xC] - movs r1, 0x10 - movs r2, 0 - movs r3, 0 - bl BlendPalette - adds r0, r5, 0 - bl DestroyAnimVisualTask -_0813009E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_813003C - - thumb_func_start sub_81300A4 -sub_81300A4: @ 81300A4 - push {lr} - sub sp, 0x1C - lsls r0, 24 - lsrs r0, 24 - movs r2, 0xD0 - lsls r2, 1 - ldr r1, _081300E0 @ =gAnimBankAttacker - ldrb r3, [r1] - ldr r1, _081300E4 @ =gBattleAnimArgs - ldrb r1, [r1] - str r1, [sp] - movs r1, 0xA - str r1, [sp, 0x4] - movs r1, 0x2 - str r1, [sp, 0x8] - movs r1, 0x1E - str r1, [sp, 0xC] - ldr r1, _081300E8 @ =gUnknown_08D2E014 - str r1, [sp, 0x10] - ldr r1, _081300EC @ =gUnknown_08D2E170 - str r1, [sp, 0x14] - ldr r1, _081300F0 @ =gUnknown_08D2E150 - str r1, [sp, 0x18] - movs r1, 0 - bl sub_80E3C4C - add sp, 0x1C - pop {r0} - bx r0 - .align 2, 0 -_081300E0: .4byte gAnimBankAttacker -_081300E4: .4byte gBattleAnimArgs -_081300E8: .4byte gUnknown_08D2E014 -_081300EC: .4byte gUnknown_08D2E170 -_081300F0: .4byte gUnknown_08D2E150 - thumb_func_end sub_81300A4 - - thumb_func_start sub_81300F4 -sub_81300F4: @ 81300F4 - push {r4-r6,lr} - adds r5, r0, 0 - ldr r6, _0813014C @ =gAnimBankAttacker - ldrb r0, [r6] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08130110 - ldr r1, _08130150 @ =gBattleAnimArgs - ldrh r0, [r1] - negs r0, r0 - strh r0, [r1] -_08130110: - ldrb r0, [r6] - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - ldr r4, _08130150 @ =gBattleAnimArgs - lsrs r0, 24 - ldrh r1, [r4] - adds r0, r1 - strh r0, [r5, 0x20] - ldrb r0, [r6] - movs r1, 0x1 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x2] - adds r0, r1 - strh r0, [r5, 0x22] - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08130158 - movs r0, 0xA0 - lsls r0, 2 - strh r0, [r5, 0x2E] - ldr r0, _08130154 @ =0x0000fd80 - strh r0, [r5, 0x30] - b _08130180 - .align 2, 0 -_0813014C: .4byte gAnimBankAttacker -_08130150: .4byte gBattleAnimArgs -_08130154: .4byte 0x0000fd80 -_08130158: - cmp r0, 0x1 - bne _08130172 - adds r2, r5, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - movs r0, 0xA0 - lsls r0, 2 - strh r0, [r5, 0x2E] - strh r0, [r5, 0x30] - b _08130180 -_08130172: - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim - movs r0, 0xA0 - lsls r0, 2 - strh r0, [r5, 0x2E] -_08130180: - ldr r0, _081301AC @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _081301A0 - ldrh r0, [r5, 0x2E] - negs r0, r0 - strh r0, [r5, 0x2E] - adds r2, r5, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] -_081301A0: - ldr r0, _081301B0 @ =sub_81301B4 - str r0, [r5, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081301AC: .4byte gAnimBankAttacker -_081301B0: .4byte sub_81301B4 - thumb_func_end sub_81300F4 - - thumb_func_start sub_81301B4 -sub_81301B4: @ 81301B4 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x3A] - adds r0, r1 - strh r0, [r2, 0x3A] - ldrh r1, [r2, 0x30] - ldrh r3, [r2, 0x3C] - adds r1, r3 - strh r1, [r2, 0x3C] - lsls r0, 16 - asrs r0, 24 - strh r0, [r2, 0x24] - lsls r1, 16 - asrs r1, 24 - strh r1, [r2, 0x26] - ldrh r0, [r2, 0x38] - adds r0, 0x1 - strh r0, [r2, 0x38] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xE - bne _081301E8 - adds r0, r2, 0 - bl DestroyAnimSprite -_081301E8: - pop {r0} - bx r0 - thumb_func_end sub_81301B4 - - thumb_func_start sub_81301EC -sub_81301EC: @ 81301EC - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08130218 @ =gTasks - adds r6, r1, r0 - bl IsContest - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0813021C - movs r0, 0x8 - strh r0, [r6, 0x12] - movs r0, 0x3 - strh r0, [r6, 0x14] - movs r0, 0x1 - strh r0, [r6, 0x16] - b _08130226 - .align 2, 0 -_08130218: .4byte gTasks -_0813021C: - movs r0, 0xC - strh r0, [r6, 0x12] - movs r0, 0x3 - strh r0, [r6, 0x14] - strh r1, [r6, 0x16] -_08130226: - ldr r5, _0813025C @ =gAnimBankAttacker - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08130260 - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - ldrb r0, [r5] - movs r1, 0 - bl sub_807A100 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _08130254 - adds r0, 0x3 -_08130254: - asrs r0, 2 - adds r0, r4, r0 - b _08130284 - .align 2, 0 -_0813025C: .4byte gAnimBankAttacker -_08130260: - ldrb r0, [r5] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - ldrb r0, [r5] - movs r1, 0 - bl sub_807A100 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _08130280 - adds r0, 0x3 -_08130280: - asrs r0, 2 - subs r0, r4, r0 -_08130284: - strh r0, [r6, 0x1E] - ldr r5, _081302D8 @ =gAnimBankAttacker - ldrb r0, [r5] - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - ldrb r0, [r5] - movs r1, 0 - bl sub_807A100 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _081302A8 - adds r0, 0x3 -_081302A8: - asrs r0, 2 - subs r0, r4, r0 - strh r0, [r6, 0x20] - ldr r4, _081302DC @ =gAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x22] - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x24] - ldr r0, _081302E0 @ =sub_81302E4 - str r0, [r6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081302D8: .4byte gAnimBankAttacker -_081302DC: .4byte gAnimBankTarget -_081302E0: .4byte sub_81302E4 - thumb_func_end sub_81301EC - - thumb_func_start sub_81302E4 -sub_81302E4: @ 81302E4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _0813030C @ =gTasks - adds r5, r0, r1 - movs r0, 0x8 - ldrsh r1, [r5, r0] - cmp r1, 0 - beq _08130310 - cmp r1, 0x1 - bne _08130308 - b _08130408 -_08130308: - b _08130416 - .align 2, 0 -_0813030C: .4byte gTasks -_08130310: - ldrh r0, [r5, 0xA] - adds r0, 0x1 - strh r0, [r5, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _08130416 - strh r1, [r5, 0xA] - movs r1, 0x1E - ldrsh r0, [r5, r1] - movs r2, 0x20 - ldrsh r1, [r5, r2] - movs r3, 0x22 - ldrsh r2, [r5, r3] - movs r4, 0x24 - ldrsh r3, [r5, r4] - ldrb r4, [r5, 0x12] - str r4, [sp] - ldrb r4, [r5, 0xC] - str r4, [sp, 0x4] - add r4, sp, 0x10 - str r4, [sp, 0x8] - adds r4, 0x2 - str r4, [sp, 0xC] - bl sub_8130424 - movs r6, 0 - mov r8, r4 - ldr r4, _08130384 @ =gSprites -_0813034A: - add r0, sp, 0x10 - movs r2, 0 - ldrsh r1, [r0, r2] - mov r3, r8 - movs r0, 0 - ldrsh r2, [r3, r0] - ldr r0, _08130388 @ =gSpriteTemplate_840294C - movs r3, 0x23 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _081303DE - movs r1, 0x16 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0813039E - cmp r6, 0 - bne _0813038C - lsls r2, r3, 4 - adds r1, r2, r3 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r5, 0x14] - negs r0, r0 - strh r0, [r1, 0x26] - strh r0, [r1, 0x24] - b _081303C6 - .align 2, 0 -_08130384: .4byte gSprites -_08130388: .4byte gSpriteTemplate_840294C -_0813038C: - lsls r2, r3, 4 - adds r1, r2, r3 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r5, 0x14] - strh r0, [r1, 0x26] - ldrh r0, [r5, 0x14] - strh r0, [r1, 0x24] - b _081303C6 -_0813039E: - cmp r6, 0 - bne _081303B4 - lsls r2, r3, 4 - adds r1, r2, r3 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r5, 0x14] - negs r0, r0 - strh r0, [r1, 0x24] - ldrh r0, [r5, 0x14] - b _081303C4 -_081303B4: - lsls r2, r3, 4 - adds r1, r2, r3 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r5, 0x14] - strh r0, [r1, 0x24] - ldrh r0, [r5, 0x14] - negs r0, r0 -_081303C4: - strh r0, [r1, 0x26] -_081303C6: - ldr r1, _08130404 @ =gSprites - adds r0, r2, r3 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x2E] - strh r7, [r0, 0x30] - movs r1, 0xA - strh r1, [r0, 0x32] - ldrh r0, [r5, 0x1C] - adds r0, 0x1 - strh r0, [r5, 0x1C] -_081303DE: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x1 - bls _0813034A - ldrh r2, [r5, 0xC] - movs r3, 0xC - ldrsh r1, [r5, r3] - movs r4, 0x12 - ldrsh r0, [r5, r4] - cmp r1, r0 - bne _081303FC - ldrh r0, [r5, 0x8] - adds r0, 0x1 - strh r0, [r5, 0x8] -_081303FC: - adds r0, r2, 0x1 - strh r0, [r5, 0xC] - b _08130416 - .align 2, 0 -_08130404: .4byte gSprites -_08130408: - movs r1, 0x1C - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _08130416 - adds r0, r7, 0 - bl DestroyAnimVisualTask -_08130416: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81302E4 - - thumb_func_start sub_8130424 -sub_8130424: @ 8130424 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - ldr r4, [sp, 0x28] - ldr r5, [sp, 0x2C] - ldr r6, [sp, 0x30] - mov r9, r6 - ldr r6, [sp, 0x34] - mov r10, r6 - lsls r0, 16 - lsrs r0, 16 - mov r12, r0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - lsls r2, 16 - lsrs r2, 16 - adds r7, r2, 0 - lsls r3, 16 - lsrs r3, 16 - str r3, [sp, 0x4] - lsls r4, 24 - lsrs r6, r4, 24 - lsls r5, 24 - lsrs r5, 24 - mov r8, r5 - cmp r5, 0 - bne _0813046C - mov r2, r9 - strh r0, [r2] - mov r6, r10 - strh r1, [r6] - b _081304CA -_0813046C: - cmp r5, r6 - bcc _0813047A - mov r0, r9 - strh r2, [r0] - mov r1, r10 - strh r3, [r1] - b _081304CA -_0813047A: - subs r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - mov r2, r12 - lsls r1, r2, 16 - asrs r1, 16 - lsls r5, r1, 8 - lsls r0, r7, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 8 - adds r1, r6, 0 - bl __divsi3 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r5, r0 - ldr r2, [sp] - lsls r1, r2, 16 - asrs r1, 16 - lsls r4, r1, 8 - ldr r2, [sp, 0x4] - lsls r0, r2, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 8 - adds r1, r6, 0 - bl __divsi3 - mov r6, r8 - muls r6, r0 - adds r0, r6, 0 - adds r4, r0 - asrs r5, 8 - mov r0, r9 - strh r5, [r0] - asrs r4, 8 - mov r1, r10 - strh r4, [r1] -_081304CA: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8130424 - - thumb_func_start sub_81304DC -sub_81304DC: @ 81304DC - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x24 - ble _08130512 - ldr r3, _08130518 @ =gTasks - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r1, 1 - movs r0, 0x30 - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl DestroySprite -_08130512: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08130518: .4byte gTasks - thumb_func_end sub_81304DC - - thumb_func_start sub_813051C -sub_813051C: @ 813051C - push {r4,lr} - adds r4, r0, 0 - ldr r1, _08130548 @ =gBattleAnimArgs - ldrh r0, [r1] - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x22] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x32] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x36] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x2E] - ldr r1, _0813054C @ =DestroyAnimSprite - adds r0, r4, 0 - bl StoreSpriteCallbackInData - ldr r0, _08130550 @ =sub_8078CC0 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08130548: .4byte gBattleAnimArgs -_0813054C: .4byte DestroyAnimSprite -_08130550: .4byte sub_8078CC0 - thumb_func_end sub_813051C - - thumb_func_start sub_8130554 -sub_8130554: @ 8130554 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r0, 2 - add r0, r9 - lsls r0, 3 - ldr r1, _08130674 @ =gTasks - adds r7, r0, r1 - ldr r0, _08130678 @ =gAnimBankAttacker - mov r10, r0 - ldrb r0, [r0] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x1E] - mov r1, r10 - ldrb r0, [r1] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x20] - ldr r0, _0813067C @ =gAnimBankTarget - mov r8, r0 - ldrb r0, [r0] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x22] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x3 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - mov r1, r8 - ldrb r0, [r1] - movs r1, 0 - bl sub_807A100 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _081305C6 - adds r0, 0x3 -_081305C6: - asrs r0, 2 - adds r0, r4, r0 - strh r0, [r7, 0x24] - ldr r4, _08130680 @ =gSpriteTemplate_84029AC - movs r0, 0x1E - ldrsh r5, [r7, r0] - movs r1, 0x20 - ldrsh r6, [r7, r1] - mov r1, r8 - ldrb r0, [r1] - bl sub_8079E90 - adds r3, r0, 0 - subs r3, 0x5 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x26] - cmp r0, 0x40 - beq _08130690 - ldr r4, _08130684 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x10 - strh r1, [r0, 0x2E] - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r7, 0x22] - strh r1, [r0, 0x32] - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r7, 0x24] - strh r1, [r0, 0x36] - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08130688 @ =0x0000ffe0 - strh r1, [r0, 0x38] - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl InitAnimArcTranslation - mov r1, r10 - ldrb r0, [r1] - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0813066E - movs r0, 0x26 - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAffineAnim -_0813066E: - ldr r0, _0813068C @ =sub_81306A4 - str r0, [r7] - b _08130696 - .align 2, 0 -_08130674: .4byte gTasks -_08130678: .4byte gAnimBankAttacker -_0813067C: .4byte gAnimBankTarget -_08130680: .4byte gSpriteTemplate_84029AC -_08130684: .4byte gSprites -_08130688: .4byte 0x0000ffe0 -_0813068C: .4byte sub_81306A4 -_08130690: - mov r0, r9 - bl DestroyAnimVisualTask -_08130696: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8130554 - - thumb_func_start sub_81306A4 -sub_81306A4: @ 81306A4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _081306C8 @ =gTasks - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r1, [r4, r0] - cmp r1, 0x1 - beq _0813070C - cmp r1, 0x1 - bgt _081306CC - cmp r1, 0 - beq _081306D6 - b _081307AA - .align 2, 0 -_081306C8: .4byte gTasks -_081306CC: - cmp r1, 0x2 - beq _08130730 - cmp r1, 0x3 - beq _081307A4 - b _081307AA -_081306D6: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _081307AA - strh r1, [r4, 0xA] - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08130708 @ =gSprites - adds r0, r1 - bl TranslateAnimArc - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _081307AA - b _08130796 - .align 2, 0 -_08130708: .4byte gSprites -_0813070C: - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0813072C @ =gSprites - adds r0, r1 - bl TranslateAnimArc - lsls r0, 24 - cmp r0, 0 - beq _081307AA - movs r0, 0 - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - b _08130796 - .align 2, 0 -_0813072C: .4byte gSprites -_08130730: - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _081307AA - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r2, [r4, 0xC] - adds r2, 0x1 - strh r2, [r4, 0xC] - ldr r5, _081307A0 @ =gSprites - movs r1, 0x26 - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - movs r0, 0x1 - ands r2, r0 - adds r1, 0x3E - lsls r2, 2 - ldrb r3, [r1] - subs r0, 0x6 - ands r0, r3 - orrs r0, r2 - strb r0, [r1] - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x10 - bne _081307AA - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - bl DestroySprite -_08130796: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _081307AA - .align 2, 0 -_081307A0: .4byte gSprites -_081307A4: - adds r0, r2, 0 - bl DestroyAnimVisualTask -_081307AA: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81306A4 - - thumb_func_start sub_81307B0 -sub_81307B0: @ 81307B0 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r0, _081307C4 @ =gBattleAnimArgs - movs r2, 0 - ldrsh r1, [r0, r2] - adds r6, r0, 0 - cmp r1, 0 - bne _081307CC - ldr r0, _081307C8 @ =gAnimBankAttacker - b _081307CE - .align 2, 0 -_081307C4: .4byte gBattleAnimArgs -_081307C8: .4byte gAnimBankAttacker -_081307CC: - ldr r0, _08130834 @ =gAnimBankTarget -_081307CE: - ldrb r5, [r0] - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r3, _08130838 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _0813083C @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - adds r1, r6, 0 - ldrh r0, [r1, 0x4] - strh r0, [r4, 0x3A] - movs r2, 0x2 - ldrsh r0, [r1, r2] - movs r1, 0x1 - cmp r0, 0 - bne _081307FC - movs r3, 0x1 - negs r3, r3 - adds r1, r3, 0 -_081307FC: - strh r1, [r4, 0x3C] - adds r0, r5, 0 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - movs r1, 0x2 - ldrsh r0, [r6, r1] - cmp r0, 0 - bne _08130840 - ldrb r2, [r4, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x8 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x47 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] - adds r0, r5, 0 - movs r1, 0x4 - bl sub_807A100 - subs r0, 0x8 - b _0813084A - .align 2, 0 -_08130834: .4byte gAnimBankTarget -_08130838: .4byte 0x000003ff -_0813083C: .4byte 0xfffffc00 -_08130840: - adds r0, r5, 0 - movs r1, 0x5 - bl sub_807A100 - adds r0, 0x8 -_0813084A: - strh r0, [r4, 0x20] - ldr r0, _08130858 @ =sub_813085C - str r0, [r4, 0x1C] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08130858: .4byte sub_813085C - thumb_func_end sub_81307B0 - - thumb_func_start sub_813085C -sub_813085C: @ 813085C - push {lr} - adds r2, r0, 0 - movs r0, 0x2E - ldrsh r1, [r2, r0] - cmp r1, 0x1 - beq _081308A4 - cmp r1, 0x1 - bgt _08130872 - cmp r1, 0 - beq _0813087C - b _08130914 -_08130872: - cmp r1, 0x2 - beq _081308B4 - cmp r1, 0x3 - beq _081308DA - b _08130914 -_0813087C: - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _08130914 - strh r1, [r2, 0x30] - ldrh r0, [r2, 0x3C] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x32] - adds r0, 0x1 - strh r0, [r2, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xC - bne _08130914 - b _081308D2 -_081308A4: - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - bne _08130914 - b _081308CE -_081308B4: - movs r0, 0x3C - ldrsh r1, [r2, r0] - lsls r1, 2 - ldrh r0, [r2, 0x24] - subs r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _08130914 -_081308CE: - movs r0, 0 - strh r0, [r2, 0x30] -_081308D2: - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - b _08130914 -_081308DA: - movs r0, 0x3C - ldrsh r1, [r2, r0] - lsls r0, r1, 1 - adds r0, r1 - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x30] - adds r0, 0x1 - strh r0, [r2, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - bne _08130914 - ldrh r0, [r2, 0x3A] - subs r0, 0x1 - strh r0, [r2, 0x3A] - lsls r0, 16 - cmp r0, 0 - beq _0813090E - movs r0, 0 - strh r0, [r2, 0x30] - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - b _08130914 -_0813090E: - adds r0, r2, 0 - bl DestroyAnimSprite -_08130914: - pop {r0} - bx r0 - thumb_func_end sub_813085C - - thumb_func_start sub_8130918 -sub_8130918: @ 8130918 - push {r4,lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r2, _08130930 @ =gBattleAnimArgs - movs r3, 0 - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _08130934 - adds r0, r1, 0 - bl DestroyAnimVisualTask - b _0813095C - .align 2, 0 -_08130930: .4byte gBattleAnimArgs -_08130934: - ldr r0, _08130964 @ =gTasks - lsls r4, r1, 2 - adds r4, r1 - lsls r4, 3 - adds r4, r0 - ldrh r0, [r2, 0x2] - strh r0, [r4, 0x8] - ldrb r0, [r2] - bl GetAnimBattlerSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - strh r1, [r4, 0x26] - ldr r2, _08130968 @ =gUnknown_084029DC - adds r0, r4, 0 - bl sub_80798F4 - ldr r0, _0813096C @ =sub_8130970 - str r0, [r4] -_0813095C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08130964: .4byte gTasks -_08130968: .4byte gUnknown_084029DC -_0813096C: .4byte sub_8130970 - thumb_func_end sub_8130918 - - thumb_func_start sub_8130970 -sub_8130970: @ 8130970 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _081309B0 @ =gTasks - adds r4, r0, r1 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _081309CA - movs r0, 0 - strh r0, [r4, 0xA] - ldrh r1, [r4, 0xC] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _081309B8 - ldr r2, _081309B4 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - b _081309C8 - .align 2, 0 -_081309B0: .4byte gTasks -_081309B4: .4byte gSprites -_081309B8: - ldr r2, _08130A10 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _08130A14 @ =0x0000fffe -_081309C8: - strh r1, [r0, 0x24] -_081309CA: - adds r0, r4, 0 - bl sub_807992C - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08130A26 - ldr r2, _08130A10 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r5, [r0, 0x24] - ldrh r0, [r4, 0x8] - subs r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - cmp r0, 0 - beq _08130A20 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _08130A18 @ =gTasks - adds r0, r1 - ldrh r1, [r0, 0x26] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08130A1C @ =gUnknown_084029DC - bl sub_80798F4 - strh r5, [r4, 0xA] - strh r5, [r4, 0xC] - b _08130A26 - .align 2, 0 -_08130A10: .4byte gSprites -_08130A14: .4byte 0x0000fffe -_08130A18: .4byte gTasks -_08130A1C: .4byte gUnknown_084029DC -_08130A20: - adds r0, r6, 0 - bl DestroyAnimVisualTask -_08130A26: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8130970 - - thumb_func_start sub_8130A2C -sub_8130A2C: @ 8130A2C - push {r4,r5,lr} - adds r5, r0, 0 - ldr r0, _08130A40 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08130A48 - ldr r4, _08130A44 @ =gAnimBankAttacker - b _08130A4A - .align 2, 0 -_08130A40: .4byte gBattleAnimArgs -_08130A44: .4byte gAnimBankAttacker -_08130A48: - ldr r4, _08130A88 @ =gAnimBankTarget -_08130A4A: - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x2 - bl sub_807A100 - strh r0, [r5, 0x22] - movs r1, 0x22 - ldrsh r0, [r5, r1] - cmp r0, 0x7 - bgt _08130A6E - movs r0, 0x8 - strh r0, [r5, 0x22] -_08130A6E: - movs r2, 0 - strh r2, [r5, 0x2E] - ldr r1, _08130A8C @ =gBattleAnimArgs - ldrh r0, [r1, 0x2] - strh r0, [r5, 0x30] - strh r2, [r5, 0x32] - ldrh r0, [r1, 0x4] - strh r0, [r5, 0x34] - ldr r0, _08130A90 @ =sub_8130A94 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08130A88: .4byte gAnimBankTarget -_08130A8C: .4byte gBattleAnimArgs -_08130A90: .4byte sub_8130A94 - thumb_func_end sub_8130A2C - - thumb_func_start sub_8130A94 -sub_8130A94: @ 8130A94 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x30 - ldrsh r1, [r3, r2] - cmp r0, r1 - blt _08130AE8 - movs r0, 0 - strh r0, [r3, 0x2E] - ldrh r1, [r3, 0x32] - adds r1, 0x1 - movs r0, 0x1 - ands r1, r0 - strh r1, [r3, 0x32] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - lsls r1, 2 - ldrb r2, [r0] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - movs r2, 0x32 - ldrsh r0, [r3, r2] - cmp r0, 0 - beq _08130AE8 - ldrh r0, [r3, 0x34] - subs r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - cmp r0, 0 - bne _08130AE8 - adds r0, r3, 0 - bl DestroyAnimSprite -_08130AE8: - pop {r0} - bx r0 - thumb_func_end sub_8130A94 - - thumb_func_start sub_8130AEC -sub_8130AEC: @ 8130AEC - push {lr} - adds r3, r0, 0 - ldr r0, _08130B18 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08130B1C - ldrb r2, [r3, 0x3] - lsls r1, r2, 26 - lsrs r1, 27 - movs r0, 0x8 - orrs r1, r0 - lsls r1, 1 - subs r0, 0x47 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x3] - movs r0, 0x64 - strh r0, [r3, 0x20] - movs r0, 0x1 - b _08130B22 - .align 2, 0 -_08130B18: .4byte gBattleAnimArgs -_08130B1C: - movs r0, 0x8C - strh r0, [r3, 0x20] - ldr r0, _08130B30 @ =0x0000ffff -_08130B22: - strh r0, [r3, 0x3C] - movs r0, 0x38 - strh r0, [r3, 0x22] - ldr r0, _08130B34 @ =sub_8130B38 - str r0, [r3, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_08130B30: .4byte 0x0000ffff -_08130B34: .4byte sub_8130B38 - thumb_func_end sub_8130AEC - - thumb_func_start sub_8130B38 -sub_8130B38: @ 8130B38 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x8 - bls _08130B46 - b _08130D18 -_08130B46: - lsls r0, 2 - ldr r1, _08130B50 @ =_08130B54 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08130B50: .4byte _08130B54 - .align 2, 0 -_08130B54: - .4byte _08130B78 - .4byte _08130BAA - .4byte _08130BBC - .4byte _08130BFC - .4byte _08130C0E - .4byte _08130C4C - .4byte _08130CB0 - .4byte _08130CD0 - .4byte _08130CF6 -_08130B78: - movs r3, 0x3C - ldrsh r0, [r4, r3] - lsls r0, 1 - ldrh r1, [r4, 0x22] - subs r1, r0 - strh r1, [r4, 0x22] - ldrh r2, [r4, 0x30] - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - beq _08130B9A - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r1, 1 - ldrh r0, [r4, 0x20] - subs r0, r1 - strh r0, [r4, 0x20] -_08130B9A: - adds r0, r2, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - beq _08130BA8 - b _08130D18 -_08130BA8: - b _08130CEA -_08130BAA: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - beq _08130BBA - b _08130D18 -_08130BBA: - b _08130CEA -_08130BBC: - ldrh r2, [r4, 0x30] - adds r2, 0x1 - strh r2, [r4, 0x30] - movs r3, 0x3C - ldrsh r1, [r4, r3] - lsls r0, r1, 1 - adds r0, r1 - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r3, _08130BF8 @ =gSineTable - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - ldrh r1, [r4, 0x3C] - muls r0, r1 - strh r0, [r4, 0x24] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0xC - beq _08130BF4 - b _08130D18 -_08130BF4: - b _08130CEA - .align 2, 0 -_08130BF8: .4byte gSineTable -_08130BFC: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - beq _08130C0C - b _08130D18 -_08130C0C: - b _08130CEA -_08130C0E: - ldrh r2, [r4, 0x30] - adds r2, 0x1 - strh r2, [r4, 0x30] - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r1, r0, 1 - adds r1, r0 - ldrh r0, [r4, 0x22] - subs r0, r1 - strh r0, [r4, 0x22] - ldr r3, _08130C48 @ =gSineTable - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - ldrh r1, [r4, 0x3C] - muls r0, r1 - strh r0, [r4, 0x24] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0xC - bne _08130D18 - b _08130CEE - .align 2, 0 -_08130C48: .4byte gSineTable -_08130C4C: - ldrh r2, [r4, 0x30] - adds r2, 0x1 - strh r2, [r4, 0x30] - movs r3, 0x3C - ldrsh r1, [r4, r3] - lsls r0, r1, 1 - adds r0, r1 - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - ldr r3, _08130CA4 @ =gSineTable - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - ldrh r1, [r4, 0x3C] - muls r0, r1 - strh r0, [r4, 0x24] - lsls r2, 16 - asrs r2, 16 - cmp r2, 0xF - bne _08130C98 - ldrh r2, [r4, 0x4] - lsls r1, r2, 22 - lsrs r1, 22 - adds r1, 0x10 - ldr r3, _08130CA8 @ =0x000003ff - adds r0, r3, 0 - ands r1, r0 - ldr r0, _08130CAC @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] -_08130C98: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x12 - bne _08130D18 - b _08130CEA - .align 2, 0 -_08130CA4: .4byte gSineTable -_08130CA8: .4byte 0x000003ff -_08130CAC: .4byte 0xfffffc00 -_08130CB0: - movs r3, 0x3C - ldrsh r0, [r4, r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - ldrh r0, [r4, 0x20] - adds r1, r0 - strh r1, [r4, 0x20] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _08130D18 - b _08130CEA -_08130CD0: - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r0, 1 - ldrh r3, [r4, 0x20] - adds r0, r3 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - bne _08130D18 -_08130CEA: - movs r0, 0 - strh r0, [r4, 0x30] -_08130CEE: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _08130D18 -_08130CF6: - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r1, r0, 1 - adds r1, r0 - ldrh r0, [r4, 0x20] - subs r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _08130D18 - adds r0, r4, 0 - bl DestroyAnimSprite -_08130D18: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8130B38 - - thumb_func_start sub_8130D20 -sub_8130D20: @ 8130D20 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08130D7C @ =gTasks - adds r6, r1, r0 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r6, 0x26] - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _08130DA8 - bl IsDoubleBattle - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x1 - bne _08130D8C - ldr r5, _08130D80 @ =gAnimBankAttacker - ldrb r0, [r5] - movs r1, 0 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r1, [r5] - movs r0, 0x2 - eors r0, r1 - movs r1, 0 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - ble _08130D84 - strh r7, [r6, 0x24] - b _08130DAC - .align 2, 0 -_08130D7C: .4byte gTasks -_08130D80: .4byte gAnimBankAttacker -_08130D84: - ldr r0, _08130D88 @ =0x0000ffff - b _08130DAA - .align 2, 0 -_08130D88: .4byte 0x0000ffff -_08130D8C: - ldr r0, _08130DA0 @ =gAnimBankAttacker - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08130DA8 - ldr r0, _08130DA4 @ =0x0000ffff - b _08130DAA - .align 2, 0 -_08130DA0: .4byte gAnimBankAttacker -_08130DA4: .4byte 0x0000ffff -_08130DA8: - movs r0, 0x1 -_08130DAA: - strh r0, [r6, 0x24] -_08130DAC: - ldr r0, _08130DB8 @ =sub_8130DBC - str r0, [r6] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08130DB8: .4byte sub_8130DBC - thumb_func_end sub_8130D20 - - thumb_func_start sub_8130DBC -sub_8130DBC: @ 8130DBC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _08130DE0 @ =gTasks - adds r3, r0, r1 - movs r1, 0x8 - ldrsh r0, [r3, r1] - cmp r0, 0x8 - bls _08130DD6 - b _08130F50 -_08130DD6: - lsls r0, 2 - ldr r1, _08130DE4 @ =_08130DE8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08130DE0: .4byte gTasks -_08130DE4: .4byte _08130DE8 - .align 2, 0 -_08130DE8: - .4byte _08130E0C - .4byte _08130E1E - .4byte _08130E50 - .4byte _08130E80 - .4byte _08130EA6 - .4byte _08130ED0 - .4byte _08130EE0 - .4byte _08130F00 - .4byte _08130F38 -_08130E0C: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - beq _08130E1C - b _08130F50 -_08130E1C: - b _08130F28 -_08130E1E: - ldr r2, _08130E4C @ =gSprites - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r2, 0x24 - ldrsh r0, [r3, r2] - lsls r2, r0, 1 - adds r2, r0 - ldrh r0, [r1, 0x24] - subs r0, r2 - strh r0, [r1, 0x24] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - beq _08130E4A - b _08130F50 -_08130E4A: - b _08130F28 - .align 2, 0 -_08130E4C: .4byte gSprites -_08130E50: - ldr r2, _08130E7C @ =gSprites - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x24 - ldrsh r2, [r3, r0] - lsls r0, r2, 1 - adds r0, r2 - ldrh r2, [r1, 0x24] - adds r0, r2 - strh r0, [r1, 0x24] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _08130F50 - b _08130F28 - .align 2, 0 -_08130E7C: .4byte gSprites -_08130E80: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - bne _08130F50 - movs r0, 0 - strh r0, [r3, 0xA] - ldrh r1, [r3, 0xC] - movs r2, 0xC - ldrsh r0, [r3, r2] - cmp r0, 0 - bne _08130F2C - adds r0, r1, 0x1 - strh r0, [r3, 0xC] - movs r0, 0x1 - strh r0, [r3, 0x8] - b _08130F50 -_08130EA6: - ldr r2, _08130ECC @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r3, 0x24] - ldrh r2, [r0, 0x24] - adds r1, r2 - strh r1, [r0, 0x24] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - bne _08130F50 - b _08130F28 - .align 2, 0 -_08130ECC: .4byte gSprites -_08130ED0: - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - bne _08130F50 - b _08130F28 -_08130EE0: - ldr r2, _08130EFC @ =gSprites - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x24 - ldrsh r2, [r3, r0] - lsls r2, 2 - ldrh r0, [r1, 0x24] - subs r0, r2 - b _08130F18 - .align 2, 0 -_08130EFC: .4byte gSprites -_08130F00: - ldr r2, _08130F34 @ =gSprites - movs r1, 0x26 - ldrsh r0, [r3, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r2, 0x24 - ldrsh r0, [r3, r2] - lsls r0, 2 - ldrh r2, [r1, 0x24] - adds r0, r2 -_08130F18: - strh r0, [r1, 0x24] - ldrh r0, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xA] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - bne _08130F50 -_08130F28: - movs r0, 0 - strh r0, [r3, 0xA] -_08130F2C: - ldrh r0, [r3, 0x8] - adds r0, 0x1 - strh r0, [r3, 0x8] - b _08130F50 - .align 2, 0 -_08130F34: .4byte gSprites -_08130F38: - ldr r2, _08130F58 @ =gSprites - movs r0, 0x26 - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x24] - adds r0, r4, 0 - bl DestroyAnimVisualTask -_08130F50: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08130F58: .4byte gSprites - thumb_func_end sub_8130DBC - - thumb_func_start sub_8130F5C -sub_8130F5C: @ 8130F5C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _08130F78 @ =gBattleAnimArgs - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _08130F80 - adds r0, r4, 0 - movs r1, 0x1 - bl InitAnimSpritePos - ldr r0, _08130F7C @ =gAnimBankAttacker - b _08130F82 - .align 2, 0 -_08130F78: .4byte gBattleAnimArgs -_08130F7C: .4byte gAnimBankAttacker -_08130F80: - ldr r0, _08130FD8 @ =gAnimBankTarget -_08130F82: - ldrb r0, [r0] - strh r0, [r4, 0x3C] - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - bl GetBattlerSide - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08130FA6 - ldrb r0, [r4, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - strb r1, [r4, 0x3] -_08130FA6: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - bl sub_8079ED4 - movs r2, 0x3 - ands r2, r0 - lsls r2, 2 - ldrb r3, [r4, 0x5] - movs r1, 0xD - negs r1, r1 - adds r0, r1, 0 - ands r0, r3 - orrs r0, r2 - strb r0, [r4, 0x5] - ldrb r0, [r4, 0x1] - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r4, 0x1] - ldr r0, _08130FDC @ =sub_8130FE0 - str r0, [r4, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08130FD8: .4byte gAnimBankTarget -_08130FDC: .4byte sub_8130FE0 - thumb_func_end sub_8130F5C - - thumb_func_start sub_8130FE0 -sub_8130FE0: @ 8130FE0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x38 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _08130FEE - b _081311DE -_08130FEE: - lsls r0, 2 - ldr r1, _08130FF8 @ =_08130FFC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08130FF8: .4byte _08130FFC - .align 2, 0 -_08130FFC: - .4byte _08131010 - .4byte _08131110 - .4byte _08131178 - .4byte _0813118C - .4byte _081311D8 -_08131010: - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0x5 - bhi _08131040 - lsls r0, 2 - ldr r1, _08131024 @ =_08131028 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08131024: .4byte _08131028 - .align 2, 0 -_08131028: - .4byte _08131044 - .4byte _08131060 - .4byte _08131082 - .4byte _0813109E - .4byte _08131044 - .4byte _081310C4 -_08131040: - movs r0, 0 - strh r0, [r4, 0x3A] -_08131044: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x5 - bl sub_807A100 - subs r0, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - b _081310B8 -_08131060: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x5 - bl sub_807A100 - subs r0, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl sub_807A100 - adds r0, 0x4 - b _081310BE -_08131082: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x4 - bl sub_807A100 - adds r0, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - b _081310B8 -_0813109E: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x4 - bl sub_807A100 - adds r0, 0x4 - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 -_081310B8: - bl sub_807A100 - subs r0, 0x4 -_081310BE: - lsls r0, 16 - lsrs r1, r0, 16 - b _081310E4 -_081310C4: - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r4, 0x3C] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r1, r0, 24 -_081310E4: - movs r2, 0x3A - ldrsh r0, [r4, r2] - cmp r0, 0x4 - bne _081310F0 - movs r0, 0x18 - b _081310FA -_081310F0: - cmp r0, 0x5 - bne _081310F8 - movs r0, 0x6 - b _081310FA -_081310F8: - movs r0, 0xC -_081310FA: - strh r0, [r4, 0x2E] - ldrh r0, [r4, 0x20] - strh r0, [r4, 0x30] - strh r5, [r4, 0x32] - ldrh r0, [r4, 0x22] - strh r0, [r4, 0x34] - strh r1, [r4, 0x36] - adds r0, r4, 0 - bl InitAnimLinearTranslation - b _081311CA -_08131110: - adds r0, r4, 0 - bl TranslateAnimLinear - lsls r0, 24 - cmp r0, 0 - beq _081311DE - movs r1, 0x3A - ldrsh r0, [r4, r1] - cmp r0, 0x4 - beq _08131148 - cmp r0, 0x5 - beq _08131168 - ldrh r0, [r4, 0x24] - ldrh r2, [r4, 0x20] - adds r0, r2 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - strh r1, [r4, 0x2E] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - b _08131160 -_08131148: - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - movs r1, 0 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - strh r1, [r4, 0x26] - strh r1, [r4, 0x24] - strh r1, [r4, 0x38] -_08131160: - ldrh r0, [r4, 0x3A] - adds r0, 0x1 - strh r0, [r4, 0x3A] - b _081311DE -_08131168: - movs r0, 0 - strh r0, [r4, 0x2E] - movs r1, 0x10 - strh r1, [r4, 0x30] - strh r0, [r4, 0x32] - movs r0, 0x3 - strh r0, [r4, 0x38] - b _081311DE -_08131178: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _081311DE - movs r0, 0 - strh r0, [r4, 0x38] - b _081311DE -_0813118C: - ldrh r1, [r4, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0813119E - ldrh r0, [r4, 0x30] - subs r0, 0x1 - strh r0, [r4, 0x30] - b _081311A4 -_0813119E: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] -_081311A4: - ldr r2, _081311D4 @ =REG_BLDALPHA - ldrh r0, [r4, 0x32] - lsls r0, 8 - ldrh r1, [r4, 0x30] - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x20 - bne _081311DE - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_081311CA: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - b _081311DE - .align 2, 0 -_081311D4: .4byte REG_BLDALPHA -_081311D8: - adds r0, r4, 0 - bl DestroyAnimSprite -_081311DE: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8130FE0 - - thumb_func_start sub_81311E4 -sub_81311E4: @ 81311E4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x32 - ldrsh r0, [r4, r1] - movs r2, 0x2E - ldrsh r1, [r4, r2] - subs r0, r1 - movs r2, 0x38 - ldrsh r1, [r4, r2] - muls r0, r1 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - adds r5, r0, 0 - strh r5, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - subs r0, r1 - movs r2, 0x38 - ldrsh r1, [r4, r2] - muls r0, r1 - movs r2, 0x36 - ldrsh r1, [r4, r2] - bl __divsi3 - adds r3, r0, 0 - strh r3, [r4, 0x26] - ldrh r1, [r4, 0x38] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08131242 - ldr r0, _08131260 @ =gSpriteTemplate_8402500 - ldrh r1, [r4, 0x20] - adds r1, r5 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r4, 0x22] - adds r2, r3 - lsls r2, 16 - asrs r2, 16 - movs r3, 0x5 - bl CreateSprite -_08131242: - movs r0, 0x38 - ldrsh r1, [r4, r0] - movs r2, 0x36 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _08131254 - adds r0, r4, 0 - bl DestroyAnimSprite -_08131254: - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08131260: .4byte gSpriteTemplate_8402500 - thumb_func_end sub_81311E4 - - thumb_func_start sub_8131264 -sub_8131264: @ 8131264 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _081312A0 @ =gAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl GetBattlerSpriteCoord - ldrb r0, [r4] - movs r1, 0x3 - bl GetBattlerSpriteCoord - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - beq _08131290 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _081312A8 -_08131290: - ldr r2, _081312A4 @ =gBattleAnimArgs - ldrh r1, [r5, 0x20] - ldrh r0, [r2] - subs r0, r1, r0 - strh r0, [r5, 0x2E] - ldrh r0, [r2, 0x4] - subs r1, r0 - b _081312B6 - .align 2, 0 -_081312A0: .4byte gAnimBankTarget -_081312A4: .4byte gBattleAnimArgs -_081312A8: - ldr r2, _081312DC @ =gBattleAnimArgs - ldrh r1, [r5, 0x20] - ldrh r0, [r2] - adds r0, r1, r0 - strh r0, [r5, 0x2E] - ldrh r0, [r2, 0x4] - adds r1, r0 -_081312B6: - strh r1, [r5, 0x32] - adds r3, r2, 0 - ldrh r1, [r5, 0x22] - ldrh r2, [r3, 0x2] - adds r2, r1, r2 - strh r2, [r5, 0x30] - ldrh r0, [r3, 0x6] - adds r1, r0 - strh r1, [r5, 0x34] - ldrh r0, [r3, 0x8] - strh r0, [r5, 0x36] - ldrh r0, [r5, 0x2E] - strh r0, [r5, 0x20] - strh r2, [r5, 0x22] - ldr r0, _081312E0 @ =sub_81311E4 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081312DC: .4byte gBattleAnimArgs -_081312E0: .4byte sub_81311E4 - thumb_func_end sub_8131264 - - thumb_func_start sub_81312E4 -sub_81312E4: @ 81312E4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r5, r0, 24 - adds r2, r5, 0 - ldr r0, _08131328 @ =gTasks - mov r9, r0 - lsls r7, r6, 2 - adds r0, r7, r6 - lsls r0, 3 - mov r8, r0 - mov r4, r8 - add r4, r9 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0813132C - adds r0, r5, 0 - movs r1, 0 - bl sub_8078E70 - movs r0, 0x80 - lsls r0, 1 - strh r0, [r4, 0xA] - strh r0, [r4, 0xC] - b _08131378 - .align 2, 0 -_08131328: .4byte gTasks -_0813132C: - cmp r0, 0x1 - bne _08131384 - ldrh r0, [r4, 0xA] - adds r0, 0x60 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - subs r0, 0xD - strh r0, [r4, 0xC] - movs r2, 0xA - ldrsh r1, [r4, r2] - movs r0, 0xC - ldrsh r2, [r4, r0] - adds r0, r5, 0 - movs r3, 0 - bl obj_id_set_rotscale - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - bne _081313E8 - movs r0, 0 - strh r0, [r4, 0xE] - adds r0, r5, 0 - bl sub_8078F40 - ldr r1, _08131380 @ =gSprites - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_08131378: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _081313E8 - .align 2, 0 -_08131380: .4byte gSprites -_08131384: - ldr r4, _081313F4 @ =gAnimBankAttacker - ldrb r0, [r4] - movs r1, 0 - bl refresh_graphics_maybe - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _081313C6 - ldr r3, _081313F8 @ =gSprites - ldr r2, _081313FC @ =gBankSpriteIds - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x10 - adds r0, r1 - ldr r1, _08131400 @ =gSpriteAffineAnimTable_81E7C18 - str r1, [r0] - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0 - bl StartSpriteAffineAnim -_081313C6: - mov r4, r9 - adds r3, r7, 0 - ldr r5, _08131404 @ =sub_8131408 - movs r1, 0xF - mov r2, r8 - adds r0, r4, r2 - adds r0, 0x26 - movs r2, 0 -_081313D6: - strh r2, [r0] - subs r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _081313D6 - adds r0, r3, r6 - lsls r0, 3 - adds r0, r4 - str r5, [r0] -_081313E8: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081313F4: .4byte gAnimBankAttacker -_081313F8: .4byte gSprites -_081313FC: .4byte gBankSpriteIds -_08131400: .4byte gSpriteAffineAnimTable_81E7C18 -_08131404: .4byte sub_8131408 - thumb_func_end sub_81312E4 - - thumb_func_start sub_8131408 -sub_8131408: @ 8131408 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0 - bl GetAnimBattlerSpriteId - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _08131434 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r1 - movs r0, 0x8 - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _0813146C - cmp r5, 0x1 - bgt _08131438 - cmp r5, 0 - beq _08131442 - b _0813155A - .align 2, 0 -_08131434: .4byte gTasks -_08131438: - cmp r5, 0x2 - beq _081314D8 - cmp r5, 0x3 - beq _08131514 - b _0813155A -_08131442: - ldr r0, _08131464 @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldr r0, _08131468 @ =0x0000ff38 - strh r0, [r1, 0x26] - movs r0, 0xC8 - strh r0, [r1, 0x24] - adds r1, 0x3E - ldrb r2, [r1] - subs r0, 0xCD - ands r0, r2 - strb r0, [r1] - strh r5, [r4, 0x1C] - b _08131506 - .align 2, 0 -_08131464: .4byte gSprites -_08131468: .4byte 0x0000ff38 -_0813146C: - ldrh r1, [r4, 0x1C] - adds r1, 0x70 - movs r5, 0 - strh r1, [r4, 0x1C] - ldr r2, _081314D0 @ =gSprites - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - adds r2, r0, r2 - lsls r1, 16 - asrs r1, 24 - ldrh r3, [r2, 0x26] - adds r1, r3 - strh r1, [r2, 0x26] - movs r1, 0x22 - ldrsh r0, [r2, r1] - movs r3, 0x26 - ldrsh r1, [r2, r3] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - blt _0813149C - strh r5, [r2, 0x24] -_0813149C: - movs r1, 0x26 - ldrsh r0, [r2, r1] - cmp r0, 0 - ble _081314A6 - strh r5, [r2, 0x26] -_081314A6: - movs r3, 0x26 - ldrsh r0, [r2, r3] - cmp r0, 0 - bne _0813155A - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x7D - bl PlaySE12WithPanning - ldr r1, _081314D4 @ =0xfffff800 - adds r0, r1, 0 - ldrh r2, [r4, 0x1C] - adds r0, r2 - strh r0, [r4, 0x1C] - b _08131506 - .align 2, 0 -_081314D0: .4byte gSprites -_081314D4: .4byte 0xfffff800 -_081314D8: - ldrh r0, [r4, 0x1C] - subs r0, 0x70 - strh r0, [r4, 0x1C] - lsls r0, 16 - cmp r0, 0 - bge _081314E8 - movs r0, 0 - strh r0, [r4, 0x1C] -_081314E8: - ldr r0, _08131510 @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r0 - ldrh r2, [r4, 0x1C] - lsls r2, 16 - asrs r2, 24 - ldrh r0, [r1, 0x26] - subs r0, r2 - strh r0, [r1, 0x26] - movs r3, 0x1C - ldrsh r0, [r4, r3] - cmp r0, 0 - bne _0813155A -_08131506: - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - b _0813155A - .align 2, 0 -_08131510: .4byte gSprites -_08131514: - ldrh r0, [r4, 0x1C] - adds r0, 0x70 - strh r0, [r4, 0x1C] - ldr r2, _08131560 @ =gSprites - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - adds r1, r2 - lsls r0, 16 - asrs r0, 24 - ldrh r2, [r1, 0x26] - adds r0, r2 - strh r0, [r1, 0x26] - lsls r0, 16 - cmp r0, 0 - ble _08131538 - movs r0, 0 - strh r0, [r1, 0x26] -_08131538: - movs r3, 0x26 - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _0813155A - movs r0, 0x40 - negs r0, r0 - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0x7D - bl PlaySE12WithPanning - adds r0, r6, 0 - bl DestroyAnimVisualTask -_0813155A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08131560: .4byte gSprites - thumb_func_end sub_8131408 - - thumb_func_start sub_8131564 -sub_8131564: @ 8131564 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r4, _08131588 @ =gAnimBankTarget - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08131590 - ldrb r0, [r4] - bl sub_8079E90 - subs r0, 0x2 - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - ldr r4, _0813158C @ =0x0000ff70 - b _081315A0 - .align 2, 0 -_08131588: .4byte gAnimBankTarget -_0813158C: .4byte 0x0000ff70 -_08131590: - ldrb r0, [r4] - bl sub_8079E90 - adds r0, 0x2 - adds r1, r5, 0 - adds r1, 0x43 - strb r0, [r1] - ldr r4, _081315BC @ =0x0000ffa0 -_081315A0: - ldr r0, _081315C0 @ =gAnimBankTarget - ldrb r0, [r0] - movs r1, 0x3 - bl GetBattlerSpriteCoord - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - strh r4, [r5, 0x26] - ldr r0, _081315C4 @ =sub_81315C8 - str r0, [r5, 0x1C] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081315BC: .4byte 0x0000ffa0 -_081315C0: .4byte gAnimBankTarget -_081315C4: .4byte sub_81315C8 - thumb_func_end sub_8131564 - - thumb_func_start sub_81315C8 -sub_81315C8: @ 81315C8 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bls _081315D6 - b _081316F2 -_081315D6: - lsls r0, 2 - ldr r1, _081315E0 @ =_081315E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081315E0: .4byte _081315E4 - .align 2, 0 -_081315E4: - .4byte _081315F8 - .4byte _0813161C - .4byte _0813165C - .4byte _0813168C - .4byte _081316B8 -_081315F8: - ldrh r0, [r4, 0x26] - adds r0, 0xA - strh r0, [r4, 0x26] - lsls r0, 16 - cmp r0, 0 - blt _081316F2 - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xCD - bl PlaySE12WithPanning - movs r0, 0 - strh r0, [r4, 0x26] - b _081316B0 -_0813161C: - ldrh r1, [r4, 0x30] - adds r1, 0x4 - movs r5, 0 - strh r1, [r4, 0x30] - ldr r2, _08131658 @ =gSineTable - movs r3, 0x30 - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 19 - negs r0, r0 - strh r0, [r4, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _081316F2 - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xCD - bl PlaySE12WithPanning - strh r5, [r4, 0x30] - strh r5, [r4, 0x26] - b _081316B0 - .align 2, 0 -_08131658: .4byte gSineTable -_0813165C: - ldrh r1, [r4, 0x30] - adds r1, 0x6 - movs r3, 0 - strh r1, [r4, 0x30] - ldr r2, _08131688 @ =gSineTable - movs r5, 0x30 - ldrsh r0, [r4, r5] - lsls r0, 1 - adds r0, r2 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 20 - negs r0, r0 - strh r0, [r4, 0x26] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x7F - ble _081316F2 - strh r3, [r4, 0x30] - strh r3, [r4, 0x26] - b _081316B0 - .align 2, 0 -_08131688: .4byte gSineTable -_0813168C: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _081316F2 - movs r0, 0x3F - bl BattleAnimAdjustPanning - adds r1, r0, 0 - lsls r1, 24 - asrs r1, 24 - movs r0, 0xC0 - bl PlaySE12WithPanning - movs r0, 0 - strh r0, [r4, 0x30] -_081316B0: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _081316F2 -_081316B8: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _081316F2 - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - adds r1, 0x1 - strh r1, [r4, 0x32] - movs r0, 0x1 - ands r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - lsls r1, 2 - ldrb r2, [r3] - subs r0, 0x6 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x7 - bne _081316F2 - adds r0, r4, 0 - bl DestroyAnimSprite -_081316F2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_81315C8 - - thumb_func_start sub_81316F8 -sub_81316F8: @ 81316F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r4, r0, 24 - mov r10, r4 - bl IsContest - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0813173E - movs r0, 0x1 - bl duplicate_obj_of_side_rel2move_in_transparent_mode - lsls r0, 16 - asrs r7, r0, 16 - cmp r7, 0 - blt _0813173E - movs r0, 0x1 - bl duplicate_obj_of_side_rel2move_in_transparent_mode - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _0813174C - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - ldr r1, _08131748 @ =gSprites - adds r0, r1 - bl obj_delete_but_dont_free_vram -_0813173E: - adds r0, r4, 0 - bl DestroyAnimVisualTask - b _081317EE - .align 2, 0 -_08131748: .4byte gSprites -_0813174C: - ldr r1, _081317FC @ =gSprites - mov r9, r1 - lsls r1, r0, 4 - mov r8, r1 - add r8, r0 - mov r0, r8 - lsls r0, 2 - mov r8, r0 - mov r4, r8 - add r4, r9 - ldrh r0, [r4, 0x24] - adds r0, 0x18 - strh r0, [r4, 0x24] - lsls r6, r7, 4 - adds r6, r7 - lsls r6, 2 - mov r1, r9 - adds r2, r6, r1 - ldrh r0, [r2, 0x24] - subs r0, 0x18 - strh r0, [r2, 0x24] - strh r5, [r4, 0x2E] - strh r5, [r2, 0x2E] - strh r5, [r4, 0x30] - strh r5, [r2, 0x30] - strh r5, [r4, 0x32] - strh r5, [r2, 0x32] - movs r0, 0x10 - strh r0, [r4, 0x34] - ldr r0, _08131800 @ =0x0000fff0 - strh r0, [r2, 0x34] - strh r5, [r4, 0x36] - movs r0, 0x80 - strh r0, [r2, 0x36] - movs r0, 0x18 - strh r0, [r4, 0x38] - strh r0, [r2, 0x38] - mov r0, r10 - strh r0, [r4, 0x3A] - strh r0, [r2, 0x3A] - strh r5, [r4, 0x3C] - strh r5, [r2, 0x3C] - ldr r0, _08131804 @ =gTasks - mov r1, r10 - lsls r3, r1, 2 - add r3, r10 - lsls r3, 3 - adds r3, r0 - movs r0, 0x2 - strh r0, [r3, 0x8] - adds r5, r4, 0 - adds r5, 0x3E - ldrb r1, [r5] - subs r0, 0x7 - ands r0, r1 - strb r0, [r5] - adds r5, r2, 0 - adds r5, 0x3E - ldrb r0, [r5] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r5] - ldrb r5, [r4, 0x1] - movs r1, 0xD - negs r1, r1 - adds r0, r1, 0 - ands r0, r5 - strb r0, [r4, 0x1] - ldrb r0, [r2, 0x1] - ands r1, r0 - strb r1, [r2, 0x1] - movs r0, 0x1C - add r9, r0 - add r8, r9 - ldr r0, _08131808 @ =sub_8131838 - mov r1, r8 - str r0, [r1] - add r6, r9 - str r0, [r6] - ldr r0, _0813180C @ =sub_8131810 - str r0, [r3] -_081317EE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081317FC: .4byte gSprites -_08131800: .4byte 0x0000fff0 -_08131804: .4byte gTasks -_08131808: .4byte sub_8131838 -_0813180C: .4byte sub_8131810 - thumb_func_end sub_81316F8 - - thumb_func_start sub_8131810 -sub_8131810: @ 8131810 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _08131834 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0813182E - adds r0, r2, 0 - bl DestroyAnimVisualTask -_0813182E: - pop {r0} - bx r0 - .align 2, 0 -_08131834: .4byte gTasks - thumb_func_end sub_8131810 - - thumb_func_start sub_8131838 -sub_8131838: @ 8131838 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _08131868 - strh r5, [r4, 0x30] - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_08131868: - ldrh r0, [r4, 0x34] - ldrh r1, [r4, 0x36] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x36] - movs r2, 0x36 - ldrsh r0, [r4, r2] - movs r2, 0x38 - ldrsh r1, [r4, r2] - bl Cos - strh r0, [r4, 0x24] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _08131890 - cmp r0, 0x1 - beq _081318A8 - b _081318E6 -_08131890: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - bne _081318E6 - strh r5, [r4, 0x32] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _081318E6 -_081318A8: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - cmp r0, 0 - ble _081318E6 - strh r5, [r4, 0x32] - ldrh r0, [r4, 0x38] - subs r0, 0x2 - strh r0, [r4, 0x38] - lsls r0, 16 - cmp r0, 0 - bge _081318E6 - ldr r3, _081318EC @ =gTasks - movs r2, 0x3C - ldrsh r1, [r4, r2] - lsls r1, 1 - movs r0, 0x3A - ldrsh r2, [r4, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r1, r0 - adds r3, 0x8 - adds r1, r3 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - adds r0, r4, 0 - bl obj_delete_but_dont_free_vram -_081318E6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081318EC: .4byte gTasks - thumb_func_end sub_8131838 - thumb_func_start sub_81318F0 sub_81318F0: @ 81318F0 push {r4,lr} diff --git a/asm/pokenav.s b/asm/pokenav.s index 7fc2348f5..562211a00 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -5,10181 +5,6 @@ .text - thumb_func_start sub_80F063C -sub_80F063C: @ 80F063C - push {r4-r7,lr} - lsls r0, 16 - ldr r3, _080F0664 @ =gUnknown_083DFEC4 - ldr r2, [r3] - lsrs r5, r0, 16 - asrs r4, r0, 16 - lsls r1, r4, 4 - ldr r6, _080F0668 @ =0x0000877c - adds r0, r2, r6 - strh r1, [r0] - adds r7, r3, 0 - cmp r4, 0x1 - beq _080F065E - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _080F066C -_080F065E: - movs r1, 0x4 - b _080F066E - .align 2, 0 -_080F0664: .4byte gUnknown_083DFEC4 -_080F0668: .4byte 0x0000877c -_080F066C: - movs r1, 0x8 -_080F066E: - ldr r3, _080F06C0 @ =0x0000877a - adds r0, r2, r3 - strh r1, [r0] - lsls r0, r5, 16 - asrs r3, r0, 16 - cmp r3, 0 - bge _080F06CC - ldr r4, [r7] - ldr r6, _080F06C0 @ =0x0000877a - adds r1, r4, r6 - movs r2, 0 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1] - subs r6, 0x2 - adds r1, r4, r6 - lsls r0, r3, 1 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r1, _080F06C4 @ =0x00008770 - adds r0, r4, r1 - ldrh r0, [r0] - adds r0, r3, r0 - lsls r0, 16 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080F06B8 - ldr r2, _080F06C8 @ =0x00008774 - adds r1, r4, r2 - adds r0, 0x1 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 -_080F06B8: - negs r0, r3 - lsls r0, 16 - lsrs r5, r0, 16 - b _080F06E6 - .align 2, 0 -_080F06C0: .4byte 0x0000877a -_080F06C4: .4byte 0x00008770 -_080F06C8: .4byte 0x00008774 -_080F06CC: - ldr r1, [r7] - ldr r3, _080F070C @ =0x00008778 - adds r0, r1, r3 - ldrh r0, [r0] - adds r0, 0x10 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _080F0710 @ =0x00008772 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 -_080F06E6: - ldr r0, [r7] - ldr r1, _080F0714 @ =0x00008774 - adds r0, r1 - lsls r1, r2, 16 - asrs r1, 16 - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r1, r0 - ble _080F06FA - movs r2, 0 -_080F06FA: - movs r1, 0x1F - adds r0, r2, 0 - ands r1, r6 - adds r2, r5, 0 - bl sub_80F0954 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F070C: .4byte 0x00008778 -_080F0710: .4byte 0x00008772 -_080F0714: .4byte 0x00008774 - thumb_func_end sub_80F063C - - thumb_func_start sub_80F0718 -sub_80F0718: @ 80F0718 - push {r4,r5,lr} - bl sub_80F098C - lsls r0, 24 - cmp r0, 0 - bne _080F0790 - ldr r0, _080F073C @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F0740 @ =0x0000877c - adds r3, r4, r0 - ldrh r2, [r3] - movs r1, 0 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080F0744 - movs r0, 0 - b _080F0792 - .align 2, 0 -_080F073C: .4byte gUnknown_083DFEC4 -_080F0740: .4byte 0x0000877c -_080F0744: - ldr r0, _080F0780 @ =0x0000877a - adds r1, r4, r0 - ldrh r0, [r1] - subs r0, r2, r0 - strh r0, [r3] - ldr r0, _080F0784 @ =0x00008776 - adds r2, r4, r0 - ldrh r0, [r1] - ldrh r1, [r2] - adds r0, r1 - movs r5, 0xFF - ands r0, r5 - strh r0, [r2] - ldr r1, _080F0788 @ =REG_BG3VOFS - strh r0, [r1] - movs r1, 0 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080F0790 - movs r1, 0 - ldrsh r0, [r2, r1] - adds r0, 0x8 - ands r0, r5 - asrs r1, r0, 3 - ldr r2, _080F078C @ =0x00008778 - adds r0, r4, r2 - strh r1, [r0] - movs r0, 0 - b _080F0792 - .align 2, 0 -_080F0780: .4byte 0x0000877a -_080F0784: .4byte 0x00008776 -_080F0788: .4byte REG_BG3VOFS -_080F078C: .4byte 0x00008778 -_080F0790: - movs r0, 0x1 -_080F0792: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80F0718 - - thumb_func_start ShowMapNamePopUpWindow -ShowMapNamePopUpWindow: @ 80F0798 - push {lr} - ldr r0, _080F07B0 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r1, _080F07B4 @ =0x000087ca - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080F07B8 - cmp r0, 0x1 - beq _080F07E0 - b _080F080A - .align 2, 0 -_080F07B0: .4byte gUnknown_083DFEC4 -_080F07B4: .4byte 0x000087ca -_080F07B8: - ldr r3, _080F07D8 @ =0x00008788 - adds r0, r2, r3 - subs r3, 0x1A - adds r1, r2, r3 - movs r3, 0 - ldrsh r1, [r1, r3] - lsls r1, 2 - adds r1, r2, r1 - ldr r2, _080F07DC @ =0x0000893e - adds r1, r2 - ldrh r1, [r1] - lsls r1, 18 - lsrs r1, 23 - bl sub_80F443C - b _080F07F4 - .align 2, 0 -_080F07D8: .4byte 0x00008788 -_080F07DC: .4byte 0x0000893e -_080F07E0: - ldr r3, _080F0810 @ =0x00008788 - adds r0, r2, r3 - subs r3, 0x1A - adds r1, r2, r3 - ldrh r1, [r1] - adds r1, 0x1 - lsls r1, 16 - lsrs r1, 16 - bl sub_80F445C -_080F07F4: - ldr r0, _080F0814 @ =gWindowTemplate_81E710C - bl BasicInitMenuWindow - ldr r0, _080F0818 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F0810 @ =0x00008788 - adds r0, r1 - movs r1, 0x1 - movs r2, 0x6 - bl Menu_PrintText -_080F080A: - pop {r0} - bx r0 - .align 2, 0 -_080F0810: .4byte 0x00008788 -_080F0814: .4byte gWindowTemplate_81E710C -_080F0818: .4byte gUnknown_083DFEC4 - thumb_func_end ShowMapNamePopUpWindow - - thumb_func_start sub_80F081C -sub_80F081C: @ 80F081C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080F0838 @ =gWindowTemplate_81E710C - bl BasicInitMenuWindow - cmp r5, 0x4 - bhi _080F08C6 - lsls r0, r5, 2 - ldr r1, _080F083C @ =_080F0840 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F0838: .4byte gWindowTemplate_81E710C -_080F083C: .4byte _080F0840 - .align 2, 0 -_080F0840: - .4byte _080F0854 - .4byte _080F0854 - .4byte _080F0862 - .4byte _080F088C - .4byte _080F089A -_080F0854: - ldr r0, _080F08CC @ =gOtherText_NumberRegistered - movs r1, 0xA - movs r2, 0x9 - bl MenuPrint_RightAligned - cmp r5, 0 - bne _080F08C6 -_080F0862: - ldr r0, _080F08D0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F08D4 @ =0x00008788 - adds r4, r0, r1 - ldr r2, _080F08D8 @ =0x00008774 - adds r0, r2 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r1, 0x1 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - adds r0, r4, 0 - movs r1, 0xA - movs r2, 0xB - bl MenuPrint_RightAligned - cmp r5, 0 - bne _080F08C6 -_080F088C: - ldr r0, _080F08DC @ =gOtherText_NumberBattles - movs r1, 0xA - movs r2, 0xD - bl MenuPrint_RightAligned - cmp r5, 0 - bne _080F08C6 -_080F089A: - movs r0, 0x9 - bl GetGameStat - adds r1, r0, 0 - ldr r0, _080F08E0 @ =0x0001869f - cmp r1, r0 - bls _080F08AA - adds r1, r0, 0 -_080F08AA: - ldr r0, _080F08D0 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F08D4 @ =0x00008788 - adds r4, r0 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - adds r0, r4, 0 - movs r1, 0xA - movs r2, 0xF - bl MenuPrint_RightAligned -_080F08C6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F08CC: .4byte gOtherText_NumberRegistered -_080F08D0: .4byte gUnknown_083DFEC4 -_080F08D4: .4byte 0x00008788 -_080F08D8: .4byte 0x00008774 -_080F08DC: .4byte gOtherText_NumberBattles -_080F08E0: .4byte 0x0001869f - thumb_func_end sub_80F081C - - thumb_func_start sub_80F08E4 -sub_80F08E4: @ 80F08E4 - push {lr} - ldr r0, _080F08FC @ =gWindowTemplate_81E710C - bl BasicInitMenuWindow - movs r0, 0 - movs r1, 0x9 - movs r2, 0xB - movs r3, 0x10 - bl Menu_EraseWindowRect - pop {r0} - bx r0 - .align 2, 0 -_080F08FC: .4byte gWindowTemplate_81E710C - thumb_func_end sub_80F08E4 - - thumb_func_start sub_80F0900 -sub_80F0900: @ 80F0900 - push {r4,r5,lr} - ldr r0, _080F093C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F0940 @ =0x00008772 - adds r1, r0, r2 - subs r2, 0x2 - adds r5, r0, r2 - ldrh r0, [r1] - ldrh r1, [r5] - subs r0, r1 - adds r0, 0x1 - lsls r4, r0, 16 - asrs r0, r4, 16 - cmp r0, 0x7 - bgt _080F092A - movs r0, 0xC - movs r1, 0x1 - movs r2, 0x1F - movs r3, 0xF - bl Menu_EraseWindowRect -_080F092A: - ldrh r0, [r5] - lsrs r2, r4, 16 - movs r1, 0 - bl sub_80F0954 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F093C: .4byte gUnknown_083DFEC4 -_080F0940: .4byte 0x00008772 - thumb_func_end sub_80F0900 - - thumb_func_start sub_80F0944 -sub_80F0944: @ 80F0944 - push {lr} - bl sub_80F098C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80F0944 - - thumb_func_start sub_80F0954 -sub_80F0954: @ 80F0954 - push {r4,r5,lr} - ldr r3, _080F097C @ =gUnknown_083DFEC4 - ldr r3, [r3] - ldr r5, _080F0980 @ =0x0000877e - adds r4, r3, r5 - movs r5, 0 - strh r0, [r4] - ldr r4, _080F0984 @ =0x00008780 - adds r0, r3, r4 - strh r1, [r0] - ldr r1, _080F0988 @ =0x00008784 - adds r0, r3, r1 - strh r2, [r0] - adds r4, 0x6 - adds r3, r4 - strh r5, [r3] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F097C: .4byte gUnknown_083DFEC4 -_080F0980: .4byte 0x0000877e -_080F0984: .4byte 0x00008780 -_080F0988: .4byte 0x00008784 - thumb_func_end sub_80F0954 - - thumb_func_start sub_80F098C -sub_80F098C: @ 80F098C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _080F09A4 @ =gUnknown_083DFEC4 - ldr r6, [r0] - ldr r0, _080F09A8 @ =0x00008784 - adds r7, r6, r0 - ldrh r0, [r7] - cmp r0, 0 - bne _080F09AC -_080F09A0: - movs r0, 0 - b _080F0A02 - .align 2, 0 -_080F09A4: .4byte gUnknown_083DFEC4 -_080F09A8: .4byte 0x00008784 -_080F09AC: - movs r1, 0 - mov r8, r1 - ldr r1, _080F0A0C @ =gUnknown_083E3270 - ldr r2, _080F0A10 @ =0x000087ca - adds r0, r6, r2 - ldrb r2, [r0] - lsls r2, 2 - adds r2, r1 - ldr r0, _080F0A14 @ =0x0000877e - adds r4, r6, r0 - ldrh r0, [r4] - ldr r1, _080F0A18 @ =0x00008780 - adds r5, r6, r1 - ldrh r1, [r5] - ldr r2, [r2] - bl _call_via_r2 - ldrh r0, [r7] - subs r0, 0x1 - strh r0, [r7] - ldr r2, _080F0A1C @ =0x0000ffff - adds r1, r2, 0 - lsls r0, 16 - cmp r0, 0 - beq _080F09A0 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - ands r0, r1 - ldr r2, _080F0A20 @ =0x00008774 - adds r1, r6, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - cmp r0, r1 - ble _080F09F6 - mov r0, r8 - strh r0, [r4] -_080F09F6: - ldrh r0, [r5] - adds r0, 0x2 - movs r1, 0x1F - ands r0, r1 - strh r0, [r5] - movs r0, 0x1 -_080F0A02: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080F0A0C: .4byte gUnknown_083E3270 -_080F0A10: .4byte 0x000087ca -_080F0A14: .4byte 0x0000877e -_080F0A18: .4byte 0x00008780 -_080F0A1C: .4byte 0x0000ffff -_080F0A20: .4byte 0x00008774 - thumb_func_end sub_80F098C - - thumb_func_start sub_80F0A24 -sub_80F0A24: @ 80F0A24 - push {r4,r5,lr} - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - lsrs r5, r1, 16 - ldr r0, _080F0A64 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F0A68 @ =0x000087c8 - adds r0, r4, r1 - ldrb r0, [r0] - movs r2, 0x1 - cmp r0, 0 - bne _080F0A40 - movs r2, 0x2 -_080F0A40: - ldr r0, _080F0A6C @ =0x00008788 - adds r4, r0 - adds r0, r4, 0 - adds r1, r3, 0 - bl sub_80F4428 - ldr r0, _080F0A70 @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - lsls r2, r5, 24 - lsrs r2, 24 - adds r0, r4, 0 - movs r1, 0xD - bl Menu_PrintText - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F0A64: .4byte gUnknown_083DFEC4 -_080F0A68: .4byte 0x000087c8 -_080F0A6C: .4byte 0x00008788 -_080F0A70: .4byte gWindowTemplate_81E70D4 - thumb_func_end sub_80F0A24 - - thumb_func_start sub_80F0A74 -sub_80F0A74: @ 80F0A74 - push {r4-r7,lr} - sub sp, 0x14 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 16 - lsrs r7, r1, 16 - ldr r0, _080F0ADC @ =gUnknown_083DFEC4 - ldr r5, [r0] - ldr r0, _080F0AE0 @ =0x00008788 - adds r4, r5, r0 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_80F700C - movs r0, 0x1F - ands r7, r0 - ldr r0, _080F0AE4 @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - lsls r2, r7, 3 - adds r0, r4, 0 - movs r1, 0x61 - movs r3, 0 - bl Menu_PrintTextPixelCoords - ldr r1, _080F0AE8 @ =0x0000d158 - adds r0, r5, r1 - ldrh r0, [r0] - cmp r6, r0 - bcs _080F0AF8 - lsls r0, r6, 3 - adds r0, r5, r0 - ldr r1, _080F0AEC @ =0x0000ceed - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080F0AF8 - ldr r0, _080F0AF0 @ =0x0600f000 - ldr r3, _080F0AF4 @ =gUnknown_083E039C - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r1, 0x2 - str r1, [sp, 0xC] - str r2, [sp, 0x10] - movs r1, 0x1D - adds r2, r7, 0 - bl sub_8095C8C - b _080F0B14 - .align 2, 0 -_080F0ADC: .4byte gUnknown_083DFEC4 -_080F0AE0: .4byte 0x00008788 -_080F0AE4: .4byte gWindowTemplate_81E70D4 -_080F0AE8: .4byte 0x0000d158 -_080F0AEC: .4byte 0x0000ceed -_080F0AF0: .4byte 0x0600f000 -_080F0AF4: .4byte gUnknown_083E039C -_080F0AF8: - ldr r0, _080F0B1C @ =0x0600f000 - ldr r3, _080F0B20 @ =gUnknown_083E03A0 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r1, 0x2 - str r1, [sp, 0xC] - str r2, [sp, 0x10] - movs r1, 0x1D - adds r2, r7, 0 - bl sub_8095C8C -_080F0B14: - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0B1C: .4byte 0x0600f000 -_080F0B20: .4byte gUnknown_083E03A0 - thumb_func_end sub_80F0A74 - - thumb_func_start sub_80F0B24 -sub_80F0B24: @ 80F0B24 - ldr r0, _080F0B38 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F0B3C @ =0x0000d15c - adds r1, r0, r2 - movs r2, 0 - strh r2, [r1] - ldr r1, _080F0B40 @ =0x00000306 - adds r0, r1 - strh r2, [r0] - bx lr - .align 2, 0 -_080F0B38: .4byte gUnknown_083DFEC4 -_080F0B3C: .4byte 0x0000d15c -_080F0B40: .4byte 0x00000306 - thumb_func_end sub_80F0B24 - - thumb_func_start sub_80F0B44 -sub_80F0B44: @ 80F0B44 - push {r4-r6,lr} - ldr r0, _080F0B58 @ =gUnknown_083DFEC4 - ldr r5, [r0] - ldr r0, _080F0B5C @ =0x0000d15c - adds r6, r5, r0 - ldrh r0, [r6] - cmp r0, 0x8 - bls _080F0B60 - movs r0, 0 - b _080F0C22 - .align 2, 0 -_080F0B58: .4byte gUnknown_083DFEC4 -_080F0B5C: .4byte 0x0000d15c -_080F0B60: - ldr r0, _080F0BBC @ =0x00000306 - adds r1, r5, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _080F0C20 - movs r0, 0 - strh r0, [r1] - ldrh r0, [r6] - cmp r0, 0x7 - bhi _080F0BCC - ldr r0, _080F0BC0 @ =0x00008778 - adds r1, r5, r0 - ldrh r2, [r6] - lsls r0, r2, 1 - ldrh r1, [r1] - adds r4, r0, r1 - movs r0, 0x1F - ands r4, r0 - ldr r1, _080F0BC4 @ =0x0000876c - adds r0, r5, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r2, r0 - beq _080F0BAA - ldr r0, _080F0BC8 @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - adds r1, r4, 0 - adds r3, r1, 0x1 - movs r0, 0xC - movs r2, 0x1F - bl Menu_EraseWindowRect -_080F0BAA: - ldrh r0, [r6] - cmp r0, 0 - bne _080F0BB4 - bl sub_80F08E4 -_080F0BB4: - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - b _080F0C20 - .align 2, 0 -_080F0BBC: .4byte 0x00000306 -_080F0BC0: .4byte 0x00008778 -_080F0BC4: .4byte 0x0000876c -_080F0BC8: .4byte gWindowTemplate_81E70D4 -_080F0BCC: - ldr r0, _080F0C10 @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - ldr r1, _080F0C14 @ =0x00008778 - adds r0, r5, r1 - ldrh r0, [r0] - adds r4, r0, 0 - adds r4, 0x10 - movs r0, 0x1F - ands r4, r0 - movs r5, 0 -_080F0BE2: - adds r3, r4, 0x1 - movs r0, 0xC - adds r1, r4, 0 - movs r2, 0x1F - bl Menu_EraseWindowRect - adds r4, 0x2 - movs r0, 0x1F - ands r4, r0 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x7 - bls _080F0BE2 - ldr r0, _080F0C18 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F0C1C @ =0x0000d15c - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0 - b _080F0C22 - .align 2, 0 -_080F0C10: .4byte gWindowTemplate_81E70D4 -_080F0C14: .4byte 0x00008778 -_080F0C18: .4byte gUnknown_083DFEC4 -_080F0C1C: .4byte 0x0000d15c -_080F0C20: - movs r0, 0x1 -_080F0C22: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F0B44 - - thumb_func_start sub_80F0C28 -sub_80F0C28: @ 80F0C28 - ldr r0, _080F0C3C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F0C40 @ =0x0000d15c - adds r1, r0, r2 - movs r2, 0 - strh r2, [r1] - ldr r1, _080F0C44 @ =0x00000306 - adds r0, r1 - strh r2, [r0] - bx lr - .align 2, 0 -_080F0C3C: .4byte gUnknown_083DFEC4 -_080F0C40: .4byte 0x0000d15c -_080F0C44: .4byte 0x00000306 - thumb_func_end sub_80F0C28 - - thumb_func_start sub_80F0C48 -sub_80F0C48: @ 80F0C48 - push {r4-r6,lr} - ldr r0, _080F0C5C @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F0C60 @ =0x0000d15c - adds r5, r4, r0 - ldrh r0, [r5] - cmp r0, 0x7 - bls _080F0C64 - movs r0, 0 - b _080F0CD2 - .align 2, 0 -_080F0C5C: .4byte gUnknown_083DFEC4 -_080F0C60: .4byte 0x0000d15c -_080F0C64: - ldr r2, _080F0CBC @ =0x00000306 - adds r1, r4, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldr r2, _080F0CC0 @ =0x0000ffff - adds r6, r2, 0 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _080F0CD0 - movs r0, 0 - strh r0, [r1] - ldr r0, _080F0CC4 @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - ldr r0, _080F0CC8 @ =0x00008770 - adds r1, r4, r0 - ldrh r0, [r5] - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - ldr r1, _080F0CCC @ =0x00008778 - adds r2, r4, r1 - ldrh r1, [r5] - lsls r1, 1 - ldrh r2, [r2] - adds r1, r2 - lsls r1, 16 - lsrs r1, 16 - bl sub_80F0A74 - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - ands r0, r6 - cmp r0, 0x7 - bls _080F0CD0 - movs r0, 0 - bl sub_80F081C - movs r0, 0 - b _080F0CD2 - .align 2, 0 -_080F0CBC: .4byte 0x00000306 -_080F0CC0: .4byte 0x0000ffff -_080F0CC4: .4byte gWindowTemplate_81E70D4 -_080F0CC8: .4byte 0x00008770 -_080F0CCC: .4byte 0x00008778 -_080F0CD0: - movs r0, 0x1 -_080F0CD2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F0C48 - - thumb_func_start sub_80F0CD8 -sub_80F0CD8: @ 80F0CD8 - push {r4,r5,lr} - ldr r4, _080F0D40 @ =gUnknown_083DFEC4 - ldr r1, [r4] - ldr r2, _080F0D44 @ =0x00000306 - adds r0, r1, r2 - movs r2, 0 - strh r2, [r0] - ldr r3, _080F0D48 @ =0x0000d15c - adds r0, r1, r3 - strh r2, [r0] - ldr r2, _080F0D4C @ =0x0000876e - adds r0, r1, r2 - movs r3, 0 - ldrsh r0, [r0, r3] - lsls r0, 3 - adds r0, r1, r0 - ldr r2, _080F0D50 @ =0x0000ceec - adds r0, r2 - ldrb r0, [r0] - ldr r3, _080F0D54 @ =0x0000d110 - adds r1, r3 - ldr r2, _080F0D58 @ =gTrainerEyeDescriptions - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] - adds r2, r0, 0 - movs r1, 0 - adds r5, r4, 0 - adds r4, r3, 0 -_080F0D14: - ldrb r0, [r2] - adds r3, r1, 0x1 - cmp r0, 0xFF - beq _080F0D24 -_080F0D1C: - adds r2, 0x1 - ldrb r0, [r2] - cmp r0, 0xFF - bne _080F0D1C -_080F0D24: - ldr r0, [r5] - lsls r1, r3, 2 - adds r0, r4 - adds r0, r1 - adds r2, 0x1 - str r2, [r0] - lsls r0, r3, 16 - lsrs r1, r0, 16 - cmp r1, 0x2 - bls _080F0D14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F0D40: .4byte gUnknown_083DFEC4 -_080F0D44: .4byte 0x00000306 -_080F0D48: .4byte 0x0000d15c -_080F0D4C: .4byte 0x0000876e -_080F0D50: .4byte 0x0000ceec -_080F0D54: .4byte 0x0000d110 -_080F0D58: .4byte gTrainerEyeDescriptions - thumb_func_end sub_80F0CD8 - - thumb_func_start sub_80F0D5C -sub_80F0D5C: @ 80F0D5C - push {r4,r5,lr} - ldr r0, _080F0D70 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F0D74 @ =0x0000d15c - adds r5, r4, r0 - ldrh r0, [r5] - cmp r0, 0x7 - bne _080F0D78 -_080F0D6C: - movs r0, 0 - b _080F0EB0 - .align 2, 0 -_080F0D70: .4byte gUnknown_083DFEC4 -_080F0D74: .4byte 0x0000d15c -_080F0D78: - ldr r0, _080F0DB8 @ =0x00000306 - adds r1, r4, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080F0D8C - b _080F0EAE -_080F0D8C: - movs r0, 0 - strh r0, [r1] - ldr r0, _080F0DBC @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - ldr r0, _080F0DC0 @ =0x00008778 - adds r1, r4, r0 - ldrh r3, [r5] - lsls r0, r3, 1 - adds r0, 0x2 - ldrh r1, [r1] - adds r5, r0, r1 - movs r0, 0x1F - ands r5, r0 - cmp r3, 0x6 - bhi _080F0D6C - lsls r0, r3, 2 - ldr r1, _080F0DC4 @ =_080F0DC8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F0DB8: .4byte 0x00000306 -_080F0DBC: .4byte gWindowTemplate_81E70D4 -_080F0DC0: .4byte 0x00008778 -_080F0DC4: .4byte _080F0DC8 - .align 2, 0 -_080F0DC8: - .4byte _080F0DE4 - .4byte _080F0DF0 - .4byte _080F0E08 - .4byte _080F0E14 - .4byte _080F0E2C - .4byte _080F0E38 - .4byte _080F0E6C -_080F0DE4: - ldr r0, _080F0DEC @ =gOtherText_Strategy - lsls r2, r5, 3 - b _080F0E54 - .align 2, 0 -_080F0DEC: .4byte gOtherText_Strategy -_080F0DF0: - ldr r0, _080F0DFC @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F0E00 @ =0x00008788 - adds r4, r0, r1 - ldr r1, _080F0E04 @ =0x0000d110 - b _080F0E42 - .align 2, 0 -_080F0DFC: .4byte gUnknown_083DFEC4 -_080F0E00: .4byte 0x00008788 -_080F0E04: .4byte 0x0000d110 -_080F0E08: - ldr r0, _080F0E10 @ =gOtherText_TrainersPokemon - lsls r2, r5, 3 - b _080F0E54 - .align 2, 0 -_080F0E10: .4byte gOtherText_TrainersPokemon -_080F0E14: - ldr r0, _080F0E20 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F0E24 @ =0x00008788 - adds r4, r0, r1 - ldr r1, _080F0E28 @ =0x0000d114 - b _080F0E42 - .align 2, 0 -_080F0E20: .4byte gUnknown_083DFEC4 -_080F0E24: .4byte 0x00008788 -_080F0E28: .4byte 0x0000d114 -_080F0E2C: - ldr r0, _080F0E34 @ =gOtherText_SelfIntroduction - lsls r2, r5, 3 - b _080F0E54 - .align 2, 0 -_080F0E34: .4byte gOtherText_SelfIntroduction -_080F0E38: - ldr r0, _080F0E60 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F0E64 @ =0x00008788 - adds r4, r0, r1 - ldr r1, _080F0E68 @ =0x0000d118 -_080F0E42: - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - movs r2, 0x88 - movs r3, 0 - bl AlignStringInMenuWindow - lsls r2, r5, 3 - adds r0, r4, 0 -_080F0E54: - movs r1, 0x61 - movs r3, 0 - bl Menu_PrintTextPixelCoords - b _080F0EA0 - .align 2, 0 -_080F0E60: .4byte gUnknown_083DFEC4 -_080F0E64: .4byte 0x00008788 -_080F0E68: .4byte 0x0000d118 -_080F0E6C: - ldr r0, _080F0E94 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F0E98 @ =0x00008788 - adds r4, r0, r1 - ldr r1, _080F0E9C @ =0x0000d11c - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - movs r2, 0x88 - movs r3, 0 - bl AlignStringInMenuWindow - lsls r2, r5, 3 - adds r0, r4, 0 - movs r1, 0x61 - movs r3, 0 - bl Menu_PrintTextPixelCoords - b _080F0D6C - .align 2, 0 -_080F0E94: .4byte gUnknown_083DFEC4 -_080F0E98: .4byte 0x00008788 -_080F0E9C: .4byte 0x0000d11c -_080F0EA0: - ldr r0, _080F0EB8 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F0EBC @ =0x0000d15c - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F0EAE: - movs r0, 0x1 -_080F0EB0: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080F0EB8: .4byte gUnknown_083DFEC4 -_080F0EBC: .4byte 0x0000d15c - thumb_func_end sub_80F0D5C - - thumb_func_start sub_80F0EC0 -sub_80F0EC0: @ 80F0EC0 - push {lr} - ldr r0, _080F0EE4 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F0EE8 @ =0x00000306 - adds r1, r0, r2 - movs r2, 0 - strh r2, [r1] - ldr r3, _080F0EEC @ =0x0000d15c - adds r1, r0, r3 - strh r2, [r1] - ldr r1, _080F0EF0 @ =0x00008788 - adds r0, r1 - movs r1, 0 - movs r2, 0x10 - bl StringFill - pop {r0} - bx r0 - .align 2, 0 -_080F0EE4: .4byte gUnknown_083DFEC4 -_080F0EE8: .4byte 0x00000306 -_080F0EEC: .4byte 0x0000d15c -_080F0EF0: .4byte 0x00008788 - thumb_func_end sub_80F0EC0 - - thumb_func_start sub_80F0EF4 -sub_80F0EF4: @ 80F0EF4 - push {r4,r5,lr} - ldr r0, _080F0F08 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r0, _080F0F0C @ =0x0000d15c - adds r5, r2, r0 - ldrh r0, [r5] - cmp r0, 0x6 - bls _080F0F10 - movs r0, 0 - b _080F0F52 - .align 2, 0 -_080F0F08: .4byte gUnknown_083DFEC4 -_080F0F0C: .4byte 0x0000d15c -_080F0F10: - ldr r0, _080F0F58 @ =0x00000306 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _080F0F50 - movs r0, 0 - strh r0, [r1] - ldr r1, _080F0F5C @ =0x00008778 - adds r0, r2, r1 - ldrh r4, [r5] - lsls r4, 1 - adds r4, 0x2 - ldrh r0, [r0] - adds r4, r0 - movs r0, 0x1F - ands r4, r0 - ldr r0, _080F0F60 @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - adds r3, r4, 0x1 - movs r0, 0xC - adds r1, r4, 0 - movs r2, 0x1F - bl Menu_EraseWindowRect - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] -_080F0F50: - movs r0, 0x1 -_080F0F52: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080F0F58: .4byte 0x00000306 -_080F0F5C: .4byte 0x00008778 -_080F0F60: .4byte gWindowTemplate_81E70D4 - thumb_func_end sub_80F0EF4 - - thumb_func_start sub_80F0F64 -sub_80F0F64: @ 80F0F64 - push {r4,lr} - ldr r0, _080F0F90 @ =gUnknown_083DFEC4 - ldr r3, [r0] - ldr r1, _080F0F94 @ =0x0000876c - adds r0, r3, r1 - movs r4, 0 - ldrsh r2, [r0, r4] - lsls r1, r2, 4 - ldr r4, _080F0F98 @ =0x0000877c - adds r0, r3, r4 - strh r1, [r0] - movs r1, 0x8 - cmp r2, 0x1 - bne _080F0F82 - movs r1, 0x4 -_080F0F82: - ldr r2, _080F0F9C @ =0x0000877a - adds r0, r3, r2 - strh r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F0F90: .4byte gUnknown_083DFEC4 -_080F0F94: .4byte 0x0000876c -_080F0F98: .4byte 0x0000877c -_080F0F9C: .4byte 0x0000877a - thumb_func_end sub_80F0F64 - - thumb_func_start sub_80F0FA0 -sub_80F0FA0: @ 80F0FA0 - push {r4,lr} - ldr r0, _080F0FDC @ =gUnknown_083DFEC4 - ldr r3, [r0] - ldr r1, _080F0FE0 @ =0x0000876c - adds r0, r3, r1 - movs r4, 0 - ldrsh r0, [r0, r4] - negs r0, r0 - lsls r0, 16 - asrs r0, 16 - lsls r2, r0, 4 - ldr r4, _080F0FE4 @ =0x0000877c - adds r1, r3, r4 - strh r2, [r1] - movs r1, 0x1 - negs r1, r1 - movs r4, 0x8 - negs r4, r4 - adds r2, r4, 0 - cmp r0, r1 - bne _080F0FD0 - movs r0, 0x4 - negs r0, r0 - adds r2, r0, 0 -_080F0FD0: - ldr r1, _080F0FE8 @ =0x0000877a - adds r0, r3, r1 - strh r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F0FDC: .4byte gUnknown_083DFEC4 -_080F0FE0: .4byte 0x0000876c -_080F0FE4: .4byte 0x0000877c -_080F0FE8: .4byte 0x0000877a - thumb_func_end sub_80F0FA0 - - thumb_func_start sub_80F0FEC -sub_80F0FEC: @ 80F0FEC - push {lr} - bl sub_80F0718 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80F0FEC - - thumb_func_start sub_80F0FFC -sub_80F0FFC: @ 80F0FFC - push {r4,r5,lr} - lsls r0, 24 - ldr r1, _080F1048 @ =gUnknown_083DFEC4 - ldr r4, [r1] - ldr r1, _080F104C @ =0x00008788 - adds r5, r4, r1 - lsrs r0, 21 - adds r0, r4, r0 - ldr r1, _080F1050 @ =0x0000ceea - adds r0, r1 - ldrh r1, [r0] - adds r0, r5, 0 - movs r2, 0 - bl GetMapSectionName - ldr r0, _080F1054 @ =gWindowTemplate_81E710C - bl BasicInitMenuWindow - adds r0, r5, 0 - bl sub_80F19DC - ldr r0, _080F1058 @ =0x0000d138 - adds r4, r0 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x58 - movs r3, 0x2 - bl AlignStringInMenuWindow - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x5 - bl Menu_PrintText - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1048: .4byte gUnknown_083DFEC4 -_080F104C: .4byte 0x00008788 -_080F1050: .4byte 0x0000ceea -_080F1054: .4byte gWindowTemplate_81E710C -_080F1058: .4byte 0x0000d138 - thumb_func_end sub_80F0FFC - - thumb_func_start sub_80F105C -sub_80F105C: @ 80F105C - push {lr} - ldr r0, _080F1078 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F107C @ =0x0000876e - adds r0, r1, r2 - ldrh r0, [r0] - adds r2, 0xA - adds r1, r2 - ldrh r1, [r1] - bl sub_80F0A74 - pop {r0} - bx r0 - .align 2, 0 -_080F1078: .4byte gUnknown_083DFEC4 -_080F107C: .4byte 0x0000876e - thumb_func_end sub_80F105C - - thumb_func_start sub_80F1080 -sub_80F1080: @ 80F1080 - push {r4,lr} - ldr r1, _080F10A0 @ =gUnknown_083DFEC4 - ldr r0, [r1] - ldr r2, _080F10A4 @ =0x0000d160 - adds r0, r2 - ldrh r0, [r0] - adds r2, r1, 0 - cmp r0, 0xE - bls _080F1094 - b _080F1204 -_080F1094: - lsls r0, 2 - ldr r1, _080F10A8 @ =_080F10AC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F10A0: .4byte gUnknown_083DFEC4 -_080F10A4: .4byte 0x0000d160 -_080F10A8: .4byte _080F10AC - .align 2, 0 -_080F10AC: - .4byte _080F10E8 - .4byte _080F1104 - .4byte _080F1110 - .4byte _080F111C - .4byte _080F1128 - .4byte _080F112E - .4byte _080F1134 - .4byte _080F1142 - .4byte _080F1160 - .4byte _080F1166 - .4byte _080F116C - .4byte _080F1180 - .4byte _080F1194 - .4byte _080F11DC - .4byte _080F11E2 -_080F10E8: - bl sub_80EEDE8 - ldr r0, _080F10FC @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r3, _080F1100 @ =0x0000d162 - adds r0, r3 - movs r1, 0xB - strb r1, [r0] - b _080F1218 - .align 2, 0 -_080F10FC: .4byte gUnknown_083DFEC4 -_080F1100: .4byte 0x0000d162 -_080F1104: - ldr r0, _080F110C @ =gWindowTemplate_81E70B8 - bl Text_LoadWindowTemplate - b _080F1218 - .align 2, 0 -_080F110C: .4byte gWindowTemplate_81E70B8 -_080F1110: - ldr r0, _080F1118 @ =gWindowTemplate_81E70B8 - bl MultistepInitMenuWindowBegin - b _080F1218 - .align 2, 0 -_080F1118: .4byte gWindowTemplate_81E70B8 -_080F111C: - bl MultistepInitMenuWindowContinue - cmp r0, 0 - beq _080F1126 - b _080F1218 -_080F1126: - b _080F1226 -_080F1128: - bl Menu_EraseScreen - b _080F1218 -_080F112E: - bl sub_80F1614 - b _080F1218 -_080F1134: - movs r0, 0x1 - bl sub_80F162C - lsls r0, 24 - cmp r0, 0 - beq _080F1218 - b _080F1226 -_080F1142: - ldr r0, _080F1154 @ =gUnknown_08E9FBA0 - ldr r1, _080F1158 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F115C @ =0x0000934c - adds r1, r2 - bl LZ77UnCompWram - b _080F1218 - .align 2, 0 -_080F1154: .4byte gUnknown_08E9FBA0 -_080F1158: .4byte gUnknown_083DFEC4 -_080F115C: .4byte 0x0000934c -_080F1160: - bl sub_80F1238 - b _080F1218 -_080F1166: - bl sub_80F13FC - b _080F1218 -_080F116C: - ldr r0, _080F1178 @ =gPokenavRibbonView_Gfx - ldr r1, _080F117C @ =0x06008000 - bl LZ77UnCompVram - b _080F1218 - .align 2, 0 -_080F1178: .4byte gPokenavRibbonView_Gfx -_080F117C: .4byte 0x06008000 -_080F1180: - ldr r0, _080F118C @ =gUnknown_083E040C - ldr r1, _080F1190 @ =0x06008200 - bl LZ77UnCompVram - b _080F1218 - .align 2, 0 -_080F118C: .4byte gUnknown_083E040C -_080F1190: .4byte 0x06008200 -_080F1194: - ldr r0, _080F11CC @ =gPokenavRibbonView_Pal - movs r1, 0x20 - movs r2, 0x20 - bl LoadPalette - ldr r4, _080F11D0 @ =gUnknown_083E03A8 - adds r0, r4, 0 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _080F11D4 @ =gUnknown_083E3C60 - movs r1, 0x30 - movs r2, 0xA0 - bl LoadPalette - ldr r0, _080F11D8 @ =gUnknownPalette_81E6692 - movs r1, 0xB0 - movs r2, 0x20 - bl LoadPalette - adds r4, 0x1E - adds r0, r4, 0 - movs r1, 0xBF - movs r2, 0x2 - bl LoadPalette - b _080F1218 - .align 2, 0 -_080F11CC: .4byte gPokenavRibbonView_Pal -_080F11D0: .4byte gUnknown_083E03A8 -_080F11D4: .4byte gUnknown_083E3C60 -_080F11D8: .4byte gUnknownPalette_81E6692 -_080F11DC: - bl sub_80F1438 - b _080F1218 -_080F11E2: - ldr r1, _080F1208 @ =REG_BG2CNT - ldr r3, _080F120C @ =0x00001e02 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080F1210 @ =0x0000170b - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x42 - movs r0, 0 - strh r0, [r1] - ldr r1, [r2] - ldr r0, _080F1214 @ =0x0000d160 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F1204: - movs r0, 0 - b _080F1228 - .align 2, 0 -_080F1208: .4byte REG_BG2CNT -_080F120C: .4byte 0x00001e02 -_080F1210: .4byte 0x0000170b -_080F1214: .4byte 0x0000d160 -_080F1218: - ldr r0, _080F1230 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F1234 @ =0x0000d160 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F1226: - movs r0, 0x1 -_080F1228: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F1230: .4byte gUnknown_083DFEC4 -_080F1234: .4byte 0x0000d160 - thumb_func_end sub_80F1080 - - thumb_func_start sub_80F1238 -sub_80F1238: @ 80F1238 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r6, 0x8B - ldr r0, _080F1318 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r1, _080F131C @ =0x0000bc8e - adds r0, r2, r1 - ldr r3, _080F1320 @ =0x0000bc8f - adds r1, r2, r3 - ldrb r0, [r0] - ldrb r1, [r1] - subs r0, r1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r7, 0 - mov r5, sp - adds r4, r2, 0 -_080F1264: - movs r1, 0x80 - lsls r1, 6 - adds r0, r1, 0 - strh r0, [r5] - lsls r1, r7, 5 - adds r1, r6, r1 - lsls r1, 1 - ldr r2, _080F1324 @ =0x0000934c - adds r1, r2 - adds r1, r4, r1 - mov r0, sp - ldr r2, _080F1328 @ =0x01000012 - bl CpuSet - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0x7 - bls _080F1264 - ldr r3, [sp, 0x4] - lsls r0, r3, 16 - movs r7, 0 - mov r9, r0 - cmp r0, 0 - beq _080F1342 - ldr r0, _080F1318 @ =gUnknown_083DFEC4 - ldr r0, [r0] - mov r8, r0 - ldr r1, _080F132C @ =gUnknown_083E4698 - mov r10, r1 - ldr r5, _080F1324 @ =0x0000934c - add r5, r8 -_080F12A4: - ldr r0, _080F1330 @ =0x0000bc4c - add r0, r8 - adds r0, r7 - ldrb r1, [r0] - lsls r1, 2 - mov r0, r10 - adds r0, 0x2 - adds r0, r1, r0 - ldrb r2, [r0] - adds r2, 0x3 - lsls r2, 24 - add r1, r10 - ldrh r0, [r1] - lsls r0, 25 - movs r3, 0x80 - lsls r3, 21 - adds r0, r3 - lsrs r4, r0, 24 - lsls r1, r6, 1 - adds r1, r5, r1 - lsrs r2, 12 - adds r0, r2, 0 - orrs r0, r4 - strh r0, [r1] - adds r1, r6, 0x1 - lsls r1, 1 - adds r1, r5, r1 - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - adds r3, r2, 0 - orrs r3, r0 - adds r0, r3, 0 - orrs r0, r4 - strh r0, [r1] - adds r0, r6, 0 - adds r0, 0x20 - lsls r0, 1 - adds r0, r5, r0 - adds r1, r4, 0x1 - orrs r2, r1 - strh r2, [r0] - adds r0, r6, 0 - adds r0, 0x21 - lsls r0, 1 - adds r0, r5, r0 - orrs r3, r1 - strh r3, [r0] - adds r4, r7, 0x1 - adds r0, r4, 0 - movs r1, 0x9 - bl __modsi3 - cmp r0, 0 - bne _080F1334 - adds r0, r6, 0 - adds r0, 0x30 - b _080F1336 - .align 2, 0 -_080F1318: .4byte gUnknown_083DFEC4 -_080F131C: .4byte 0x0000bc8e -_080F1320: .4byte 0x0000bc8f -_080F1324: .4byte 0x0000934c -_080F1328: .4byte 0x01000012 -_080F132C: .4byte gUnknown_083E4698 -_080F1330: .4byte 0x0000bc4c -_080F1334: - adds r0, r6, 0x2 -_080F1336: - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r4, 16 - lsrs r7, r0, 16 - cmp r0, r9 - bcc _080F12A4 -_080F1342: - ldr r6, _080F13E8 @ =0x0000014b - movs r7, 0 - ldr r1, _080F13EC @ =gUnknown_083DFEC4 - ldr r0, [r1] - ldr r2, _080F13F0 @ =0x0000bc8f - adds r1, r0, r2 - ldrb r3, [r1] - cmp r7, r3 - bcs _080F13D8 - subs r2, 0x43 - adds r2, r0 - mov r10, r2 - ldr r3, _080F13F4 @ =gUnknown_083E4698 - mov r8, r3 - ldr r2, _080F13F8 @ =0x0000934c - adds r5, r0, r2 - mov r9, r1 -_080F1364: - ldr r3, [sp, 0x4] - adds r0, r3, r7 - add r0, r10 - ldrb r1, [r0] - lsls r1, 2 - mov r0, r8 - adds r0, 0x2 - adds r0, r1, r0 - ldrb r2, [r0] - adds r2, 0x3 - lsls r2, 24 - add r1, r8 - ldrh r0, [r1] - lsls r0, 25 - movs r1, 0x80 - lsls r1, 21 - adds r0, r1 - lsrs r4, r0, 24 - lsls r1, r6, 1 - adds r1, r5, r1 - lsrs r2, 12 - adds r0, r2, 0 - orrs r0, r4 - strh r0, [r1] - adds r1, r6, 0x1 - lsls r1, 1 - adds r1, r5, r1 - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - adds r3, r2, 0 - orrs r3, r0 - adds r0, r3, 0 - orrs r0, r4 - strh r0, [r1] - adds r0, r6, 0 - adds r0, 0x20 - lsls r0, 1 - adds r0, r5, r0 - adds r1, r4, 0x1 - orrs r2, r1 - strh r2, [r0] - adds r0, r6, 0 - adds r0, 0x21 - lsls r0, 1 - adds r0, r5, r0 - orrs r3, r1 - strh r3, [r0] - adds r0, r6, 0x2 - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - mov r0, r9 - ldrb r0, [r0] - cmp r7, r0 - bcc _080F1364 -_080F13D8: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F13E8: .4byte 0x0000014b -_080F13EC: .4byte gUnknown_083DFEC4 -_080F13F0: .4byte 0x0000bc8f -_080F13F4: .4byte gUnknown_083E4698 -_080F13F8: .4byte 0x0000934c - thumb_func_end sub_80F1238 - - thumb_func_start sub_80F13FC -sub_80F13FC: @ 80F13FC - ldr r0, _080F141C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F1420 @ =0x0000934c - adds r0, r1 - ldr r2, _080F1424 @ =0x0600b800 - ldr r1, _080F1428 @ =0x040000d4 - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _080F142C @ =0x84000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _080F1430 @ =gPlttBufferUnfaded - ldr r0, _080F1434 @ =gPokenavRibbonView_Pal + 0x1C - ldrh r0, [r0] - strh r0, [r1] - bx lr - .align 2, 0 -_080F141C: .4byte gUnknown_083DFEC4 -_080F1420: .4byte 0x0000934c -_080F1424: .4byte 0x0600b800 -_080F1428: .4byte 0x040000d4 -_080F142C: .4byte 0x84000140 -_080F1430: .4byte gPlttBufferUnfaded -_080F1434: .4byte gPokenavRibbonView_Pal + 0x1C - thumb_func_end sub_80F13FC - - thumb_func_start sub_80F1438 -sub_80F1438: @ 80F1438 - push {r4,r5,lr} - ldr r0, _080F1470 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F1474 @ =0x00008829 - adds r0, r4, r1 - movs r1, 0xD - movs r2, 0x1 - bl Menu_PrintText - ldr r0, _080F1478 @ =0x00008788 - adds r5, r4, r0 - ldr r1, _080F147C @ =0x0000876e - adds r4, r1 - ldrh r1, [r4] - adds r1, 0x1 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - bl sub_80F445C - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0x5 - bl Menu_PrintText - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1470: .4byte gUnknown_083DFEC4 -_080F1474: .4byte 0x00008829 -_080F1478: .4byte 0x00008788 -_080F147C: .4byte 0x0000876e - thumb_func_end sub_80F1438 - - thumb_func_start sub_80F1480 -sub_80F1480: @ 80F1480 - push {lr} - movs r0, 0xC - movs r1, 0xD - movs r2, 0x1B - movs r3, 0x10 - bl Menu_EraseWindowRect - pop {r0} - bx r0 - thumb_func_end sub_80F1480 - - thumb_func_start sub_80F1494 -sub_80F1494: @ 80F1494 - push {r4-r7,lr} - ldr r0, _080F14D4 @ =gUnknown_083DFEC8 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 4 - adds r6, r0, r1 - ldr r2, _080F14D8 @ =0x00000a98 - adds r7, r0, r2 - ldr r0, _080F14DC @ =gUnknown_083DFEC4 - ldr r3, [r0] - ldr r4, _080F14E0 @ =0x0000bc91 - adds r1, r3, r4 - ldrb r0, [r1] - cmp r0, 0x2 - bhi _080F14F0 - ldr r5, _080F14E4 @ =gUnknown_020388B4 - adds r1, r0, 0 - lsls r0, r1, 3 - subs r4, 0x1 - adds r2, r3, r4 - adds r0, r1 - ldrb r2, [r2] - adds r0, r2 - strh r0, [r5] - ldr r1, _080F14E8 @ =0x0000bc4c - adds r0, r3, r1 - ldrh r2, [r5] - adds r0, r2 - ldrb r0, [r0] - strh r0, [r5] - ldr r4, _080F14EC @ =gRibbonDescriptions - b _080F152E - .align 2, 0 -_080F14D4: .4byte gUnknown_083DFEC8 -_080F14D8: .4byte 0x00000a98 -_080F14DC: .4byte gUnknown_083DFEC4 -_080F14E0: .4byte 0x0000bc91 -_080F14E4: .4byte gUnknown_020388B4 -_080F14E8: .4byte 0x0000bc4c -_080F14EC: .4byte gRibbonDescriptions -_080F14F0: - ldr r5, _080F1558 @ =gUnknown_020388B4 - ldr r4, _080F155C @ =0x0000bc8e - adds r0, r3, r4 - ldrb r0, [r0] - ldr r2, _080F1560 @ =0x0000bc8f - adds r1, r3, r2 - ldrb r1, [r1] - subs r0, r1 - strh r0, [r5] - ldrh r1, [r5] - adds r4, 0x2 - adds r0, r3, r4 - ldrb r0, [r0] - adds r1, r0 - subs r2, 0x43 - adds r0, r3, r2 - adds r0, r1 - ldrb r0, [r0] - strh r0, [r5] - ldr r0, _080F1564 @ =gSaveBlock1 - ldrh r1, [r5] - adds r0, r1 - ldr r4, _080F1568 @ =0x000030f7 - adds r0, r4 - ldrb r0, [r0] - strh r0, [r5] - cmp r0, 0 - beq _080F1570 - subs r0, 0x1 - strh r0, [r5] - ldr r4, _080F156C @ =gGiftRibbonDescriptions -_080F152E: - ldrh r0, [r5] - lsls r0, 3 - adds r0, r4 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x80 - movs r3, 0 - bl AlignStringInMenuWindow - ldrh r0, [r5] - lsls r0, 3 - adds r4, 0x4 - adds r0, r4 - ldr r1, [r0] - adds r0, r7, 0 - movs r2, 0x80 - movs r3, 0 - bl AlignStringInMenuWindow - b _080F158A - .align 2, 0 -_080F1558: .4byte gUnknown_020388B4 -_080F155C: .4byte 0x0000bc8e -_080F1560: .4byte 0x0000bc8f -_080F1564: .4byte gSaveBlock1 -_080F1568: .4byte 0x000030f7 -_080F156C: .4byte gGiftRibbonDescriptions -_080F1570: - ldr r4, _080F15A4 @ =gEmptyString_81E72B0 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x80 - movs r3, 0 - bl AlignStringInMenuWindow - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0x80 - movs r3, 0 - bl AlignStringInMenuWindow -_080F158A: - adds r0, r6, 0 - movs r1, 0xC - movs r2, 0xD - bl Menu_PrintText - adds r0, r7, 0 - movs r1, 0xC - movs r2, 0xF - bl Menu_PrintText - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F15A4: .4byte gEmptyString_81E72B0 - thumb_func_end sub_80F1494 - - thumb_func_start sub_80F15A8 -sub_80F15A8: @ 80F15A8 - push {r4,r5,lr} - movs r0, 0xC - movs r1, 0xD - movs r2, 0x1B - movs r3, 0x10 - bl Menu_EraseWindowRect - ldr r0, _080F1600 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F1604 @ =0x00008788 - adds r5, r4, r0 - ldr r1, _080F1608 @ =gOtherText_Ribbons - adds r0, r5, 0 - bl StringCopy - adds r2, r0, 0 - movs r0, 0 - strb r0, [r2] - adds r2, 0x1 - ldr r1, _080F160C @ =0x000087dc - adds r0, r4, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - lsls r0, 2 - adds r4, r0 - ldr r0, _080F1610 @ =0x0000893c - adds r4, r0 - ldrb r1, [r4] - adds r0, r2, 0 - movs r2, 0 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r2, r0, 0 - movs r0, 0xFF - strb r0, [r2] - adds r0, r5, 0 - movs r1, 0xC - movs r2, 0xD - bl Menu_PrintText - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1600: .4byte gUnknown_083DFEC4 -_080F1604: .4byte 0x00008788 -_080F1608: .4byte gOtherText_Ribbons -_080F160C: .4byte 0x000087dc -_080F1610: .4byte 0x0000893c - thumb_func_end sub_80F15A8 - - thumb_func_start sub_80F1614 -sub_80F1614: @ 80F1614 - ldr r0, _080F1624 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F1628 @ =0x00008764 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - bx lr - .align 2, 0 -_080F1624: .4byte gUnknown_083DFEC4 -_080F1628: .4byte 0x00008764 - thumb_func_end sub_80F1614 - - thumb_func_start sub_80F162C -sub_80F162C: @ 80F162C - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _080F164C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F1650 @ =0x00008764 - adds r0, r2 - ldrh r0, [r0] - cmp r0, 0x1 - beq _080F165E - cmp r0, 0x1 - bgt _080F1654 - cmp r0, 0 - beq _080F16F0 - b _080F16D0 - .align 2, 0 -_080F164C: .4byte gUnknown_083DFEC4 -_080F1650: .4byte 0x00008764 -_080F1654: - cmp r0, 0x2 - beq _080F1670 - cmp r0, 0x3 - beq _080F1694 - b _080F16D0 -_080F165E: - ldr r0, _080F1668 @ =gUnknown_08E9FF58 - ldr r1, _080F166C @ =0x0600e800 - bl LZ77UnCompVram - b _080F16F0 - .align 2, 0 -_080F1668: .4byte gUnknown_08E9FF58 -_080F166C: .4byte 0x0600e800 -_080F1670: - ldr r1, _080F1684 @ =gPokenavRibbonPokeView_Gfx - ldr r2, _080F1688 @ =0x0600e000 - ldr r0, _080F168C @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _080F1690 @ =0x80000070 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - b _080F16F0 - .align 2, 0 -_080F1684: .4byte gPokenavRibbonPokeView_Gfx -_080F1688: .4byte 0x0600e000 -_080F168C: .4byte 0x040000d4 -_080F1690: .4byte 0x80000070 -_080F1694: - cmp r1, 0 - bne _080F16A8 - ldr r0, _080F16A4 @ =gUnknown_083E0124 - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - b _080F16B2 - .align 2, 0 -_080F16A4: .4byte gUnknown_083E0124 -_080F16A8: - ldr r0, _080F16D4 @ =gUnknown_083E0144 - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette -_080F16B2: - ldr r0, _080F16D8 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r3, _080F16DC @ =0x00008766 - adds r2, r1, r3 - ldr r0, _080F16E0 @ =0x0000ffb0 - strh r0, [r2] - ldr r2, _080F16E4 @ =REG_BG0CNT - ldr r3, _080F16E8 @ =0x00001d0d - adds r0, r3, 0 - strh r0, [r2] - ldr r0, _080F16EC @ =0x00008764 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F16D0: - movs r0, 0 - b _080F1700 - .align 2, 0 -_080F16D4: .4byte gUnknown_083E0144 -_080F16D8: .4byte gUnknown_083DFEC4 -_080F16DC: .4byte 0x00008766 -_080F16E0: .4byte 0x0000ffb0 -_080F16E4: .4byte REG_BG0CNT -_080F16E8: .4byte 0x00001d0d -_080F16EC: .4byte 0x00008764 -_080F16F0: - ldr r0, _080F1704 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F1708 @ =0x00008764 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 -_080F1700: - pop {r1} - bx r1 - .align 2, 0 -_080F1704: .4byte gUnknown_083DFEC4 -_080F1708: .4byte 0x00008764 - thumb_func_end sub_80F162C - - thumb_func_start sub_80F170C -sub_80F170C: @ 80F170C - push {lr} - ldr r0, _080F1734 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F1738 @ =0x00008766 - adds r1, r0, r2 - ldrh r0, [r1] - adds r0, 0x10 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - ble _080F1726 - movs r0, 0 - strh r0, [r1] -_080F1726: - movs r0, 0 - ldrsh r1, [r1, r0] - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - pop {r1} - bx r1 - .align 2, 0 -_080F1734: .4byte gUnknown_083DFEC4 -_080F1738: .4byte 0x00008766 - thumb_func_end sub_80F170C - - thumb_func_start sub_80F173C -sub_80F173C: @ 80F173C - push {lr} - ldr r0, _080F176C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F1770 @ =0x00008766 - adds r1, r0, r2 - ldrh r0, [r1] - subs r0, 0x10 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x50 - negs r2, r2 - cmp r0, r2 - bge _080F175C - ldr r0, _080F1774 @ =0x0000ffb0 - strh r0, [r1] -_080F175C: - movs r0, 0 - ldrsh r1, [r1, r0] - eors r1, r2 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - pop {r1} - bx r1 - .align 2, 0 -_080F176C: .4byte gUnknown_083DFEC4 -_080F1770: .4byte 0x00008766 -_080F1774: .4byte 0x0000ffb0 - thumb_func_end sub_80F173C - - thumb_func_start sub_80F1778 -sub_80F1778: @ 80F1778 - push {r4,lr} - sub sp, 0x14 - ldr r0, _080F1798 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F179C @ =0x0000d160 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0x9 - bls _080F178C - b _080F1910 -_080F178C: - lsls r0, 2 - ldr r1, _080F17A0 @ =_080F17A4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F1798: .4byte gUnknown_083DFEC4 -_080F179C: .4byte 0x0000d160 -_080F17A0: .4byte _080F17A4 - .align 2, 0 -_080F17A4: - .4byte _080F17CC - .4byte _080F17E8 - .4byte _080F17EE - .4byte _080F17FE - .4byte _080F1810 - .4byte _080F1830 - .4byte _080F1858 - .4byte _080F186C - .4byte _080F18B8 - .4byte _080F18D8 -_080F17CC: - bl sub_80EEDE8 - ldr r0, _080F17E0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F17E4 @ =0x0000d162 - adds r0, r2 - movs r1, 0x2 - strb r1, [r0] - b _080F1914 - .align 2, 0 -_080F17E0: .4byte gUnknown_083DFEC4 -_080F17E4: .4byte 0x0000d162 -_080F17E8: - bl sub_80F1614 - b _080F1914 -_080F17EE: - movs r0, 0 - bl sub_80F162C - lsls r0, 24 - cmp r0, 0 - bne _080F17FC - b _080F1914 -_080F17FC: - b _080F1922 -_080F17FE: - ldr r0, _080F1808 @ =gPokenavConditionView_Gfx - ldr r1, _080F180C @ =0x06005000 - bl LZ77UnCompVram - b _080F1914 - .align 2, 0 -_080F1808: .4byte gPokenavConditionView_Gfx -_080F180C: .4byte 0x06005000 -_080F1810: - ldr r0, _080F1824 @ =gUnknown_08E9AC4C - ldr r1, _080F1828 @ =0x0600f000 - bl LZ77UnCompVram - ldr r0, _080F182C @ =gPokenavConditionMenu2_Pal - movs r1, 0x20 - movs r2, 0x20 - bl LoadPalette - b _080F1914 - .align 2, 0 -_080F1824: .4byte gUnknown_08E9AC4C -_080F1828: .4byte 0x0600f000 -_080F182C: .4byte gPokenavConditionMenu2_Pal -_080F1830: - ldr r0, _080F1850 @ =0x0600f000 - ldr r3, _080F1854 @ =gUnknown_083E01F4 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - movs r2, 0xC - str r2, [sp, 0x8] - movs r1, 0x4 - str r1, [sp, 0xC] - str r2, [sp, 0x10] - movs r1, 0 - movs r2, 0xD - bl sub_8095C8C - b _080F1914 - .align 2, 0 -_080F1850: .4byte 0x0600f000 -_080F1854: .4byte gUnknown_083E01F4 -_080F1858: - ldr r0, _080F1864 @ =gUnknown_08E9FEB4 - ldr r1, _080F1868 @ =0x0600b800 - bl LZ77UnCompVram - b _080F1914 - .align 2, 0 -_080F1864: .4byte gUnknown_08E9FEB4 -_080F1868: .4byte 0x0600b800 -_080F186C: - ldr r0, _080F18AC @ =gUnknown_083E0254 - movs r1, 0x30 - movs r2, 0x20 - bl LoadPalette - ldr r0, _080F18B0 @ =gUnknownPalette_81E6692 - movs r1, 0xB0 - movs r2, 0x20 - bl LoadPalette - ldr r4, _080F18B4 @ =gPokenavConditionMenu2_Pal + 0x2 - adds r0, r4, 0 - movs r1, 0xB1 - movs r2, 0x2 - bl LoadPalette - adds r0, r4, 0 - adds r0, 0xE - movs r1, 0xB5 - movs r2, 0x2 - bl LoadPalette - adds r4, 0x1C - adds r0, r4, 0 - movs r1, 0xBF - movs r2, 0x2 - bl LoadPalette - bl sub_80F01A4 - b _080F1914 - .align 2, 0 -_080F18AC: .4byte gUnknown_083E0254 -_080F18B0: .4byte gUnknownPalette_81E6692 -_080F18B4: .4byte gPokenavConditionMenu2_Pal + 0x2 -_080F18B8: - ldr r0, _080F18D0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F18D4 @ =0x00008fe9 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 16 - lsrs r0, 16 - bl sub_80F01E0 - b _080F1914 - .align 2, 0 -_080F18D0: .4byte gUnknown_083DFEC4 -_080F18D4: .4byte 0x00008fe9 -_080F18D8: - ldr r1, _080F18FC @ =REG_BG3CNT - ldr r2, _080F1900 @ =0x00001e03 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r2, _080F1904 @ =0x00001702 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x44 - ldr r2, _080F1908 @ =0x00000844 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _080F190C @ =0x0000040b - adds r0, r2, 0 - strh r0, [r1] - b _080F1914 - .align 2, 0 -_080F18FC: .4byte REG_BG3CNT -_080F1900: .4byte 0x00001e03 -_080F1904: .4byte 0x00001702 -_080F1908: .4byte 0x00000844 -_080F190C: .4byte 0x0000040b -_080F1910: - movs r0, 0 - b _080F1924 -_080F1914: - ldr r0, _080F192C @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F1930 @ =0x0000d160 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F1922: - movs r0, 0x1 -_080F1924: - add sp, 0x14 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F192C: .4byte gUnknown_083DFEC4 -_080F1930: .4byte 0x0000d160 - thumb_func_end sub_80F1778 - - thumb_func_start sub_80F1934 -sub_80F1934: @ 80F1934 - push {r4,r5,lr} - ldr r0, _080F1990 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F1994 @ =0x00008788 - adds r5, r1, r0 - ldr r3, _080F1998 @ =0x000087dc - adds r2, r1, r3 - movs r3, 0 - ldrsh r0, [r2, r3] - lsls r0, 2 - adds r1, r0 - ldr r0, _080F199C @ =0x0000893f - adds r1, r0 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - bge _080F19AC - ldrb r0, [r2] - bl sub_8137124 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _080F19A0 @ =gPlayerParty - adds r0, r1 - bl GetNature - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080F19A4 @ =gOtherText_Nature2 - adds r0, r5, 0 - bl StringCopy - adds r5, r0, 0 - ldr r0, _080F19A8 @ =gNatureNames - lsls r4, 2 - adds r4, r0 - ldr r1, [r4] - adds r0, r5, 0 - movs r2, 0x57 - movs r3, 0 - bl AlignStringInMenuWindow - b _080F19B8 - .align 2, 0 -_080F1990: .4byte gUnknown_083DFEC4 -_080F1994: .4byte 0x00008788 -_080F1998: .4byte 0x000087dc -_080F199C: .4byte 0x0000893f -_080F19A0: .4byte gPlayerParty -_080F19A4: .4byte gOtherText_Nature2 -_080F19A8: .4byte gNatureNames -_080F19AC: - ldr r1, _080F19D0 @ =gEmptyString_81E72B0 - adds r0, r5, 0 - movs r2, 0x57 - movs r3, 0 - bl AlignStringInMenuWindow -_080F19B8: - ldr r0, _080F19D4 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F19D8 @ =0x00008788 - adds r0, r1 - movs r1, 0x1 - movs r2, 0x70 - movs r3, 0x1 - bl Menu_PrintTextPixelCoords - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F19D0: .4byte gEmptyString_81E72B0 -_080F19D4: .4byte gUnknown_083DFEC4 -_080F19D8: .4byte 0x00008788 - thumb_func_end sub_80F1934 - - thumb_func_start sub_80F19DC -sub_80F19DC: @ 80F19DC - push {lr} - adds r1, r0, 0 - b _080F19E4 -_080F19E2: - adds r1, 0x1 -_080F19E4: - ldrb r0, [r1] - cmp r0, 0xFF - beq _080F19F8 - cmp r0, 0xFC - bne _080F19E2 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _080F19E2 - movs r0, 0xFF - strb r0, [r1] -_080F19F8: - pop {r0} - bx r0 - thumb_func_end sub_80F19DC - - thumb_func_start sub_80F19FC -sub_80F19FC: @ 80F19FC - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _080F1A68 @ =gUnknown_020388B0 - ldrb r4, [r5] - cmp r4, 0x1 - bne _080F1A60 - ldr r0, _080F1A6C @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F1A70 @ =0x00006e2c - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, 0x3 - adds r1, r2 - ldrb r1, [r1] - ldrb r2, [r5, 0x1] - bl GetLandmarkName - cmp r0, 0 - beq _080F1A46 - ldrb r2, [r5, 0x1] - lsls r2, 20 - movs r1, 0xC0 - lsls r1, 14 - adds r2, r1 - lsrs r2, 16 - str r4, [sp] - movs r1, 0x70 - movs r3, 0x78 - bl sub_8072A18 - ldrb r0, [r5, 0x1] - adds r0, 0x1 - strb r0, [r5, 0x1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _080F1A60 -_080F1A46: - ldrb r1, [r5, 0x1] - lsls r1, 25 - movs r2, 0xC0 - lsls r2, 19 - adds r1, r2 - lsrs r1, 24 - movs r0, 0xE - movs r2, 0x1C - movs r3, 0xF - bl Menu_BlankWindowRect - movs r0, 0 - strb r0, [r5] -_080F1A60: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1A68: .4byte gUnknown_020388B0 -_080F1A6C: .4byte gUnknown_083DFEC4 -_080F1A70: .4byte 0x00006e2c - thumb_func_end sub_80F19FC - - thumb_func_start sub_80F1A74 -sub_80F1A74: @ 80F1A74 - ldr r1, _080F1A7C @ =gUnknown_020388B0 - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_080F1A7C: .4byte gUnknown_020388B0 - thumb_func_end sub_80F1A74 - - thumb_func_start sub_80F1A80 -sub_80F1A80: @ 80F1A80 - ldr r0, _080F1A8C @ =gUnknown_020388B0 - movs r2, 0 - movs r1, 0x1 - strb r1, [r0] - strb r2, [r0, 0x1] - bx lr - .align 2, 0 -_080F1A8C: .4byte gUnknown_020388B0 - thumb_func_end sub_80F1A80 - - thumb_func_start sub_80F1A90 -sub_80F1A90: @ 80F1A90 - push {lr} - ldr r0, _080F1AB8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F1ABC @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F1AC0 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F1AB2 -_080F1AA8: - bl sub_80F1AC4 - lsls r0, 24 - cmp r0, 0 - bne _080F1AA8 -_080F1AB2: - pop {r0} - bx r0 - .align 2, 0 -_080F1AB8: .4byte gUnknown_083DFEC4 -_080F1ABC: .4byte 0x00000306 -_080F1AC0: .4byte 0x00006dac - thumb_func_end sub_80F1A90 - - thumb_func_start sub_80F1AC4 -sub_80F1AC4: @ 80F1AC4 - push {r4,r5,lr} - ldr r0, _080F1AE0 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F1AE4 @ =0x00000306 - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0x1 - beq _080F1B34 - cmp r0, 0x1 - bgt _080F1AE8 - cmp r0, 0 - beq _080F1AF2 - b _080F1B6C - .align 2, 0 -_080F1AE0: .4byte gUnknown_083DFEC4 -_080F1AE4: .4byte 0x00000306 -_080F1AE8: - cmp r0, 0x2 - beq _080F1B40 - cmp r0, 0x3 - beq _080F1B54 - b _080F1B6C -_080F1AF2: - movs r0, 0 - movs r2, 0xC8 - lsls r2, 2 - adds r4, r1, r2 - movs r5, 0 -_080F1AFC: - movs r2, 0 - adds r1, r0, 0x1 - lsls r3, r0, 4 -_080F1B02: - lsls r0, r2, 2 - adds r0, r3 - adds r0, r4, r0 - str r5, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x3 - bls _080F1B02 - lsls r0, r1, 16 - lsrs r0, 16 - cmp r0, 0x5 - bls _080F1AFC - ldr r0, _080F1B2C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F1B30 @ =0x00000311 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - b _080F1B6C - .align 2, 0 -_080F1B2C: .4byte gUnknown_083DFEC4 -_080F1B30: .4byte 0x00000311 -_080F1B34: - ldr r0, _080F1B3C @ =gPokenavMenuOptions_Gfx - movs r2, 0xE2 - lsls r2, 2 - b _080F1B44 - .align 2, 0 -_080F1B3C: .4byte gPokenavMenuOptions_Gfx -_080F1B40: - ldr r0, _080F1B4C @ =gPokenavConditionMenu_Gfx - ldr r2, _080F1B50 @ =0x00001788 -_080F1B44: - adds r1, r2 - bl LZ77UnCompWram - b _080F1B6C - .align 2, 0 -_080F1B4C: .4byte gPokenavConditionMenu_Gfx -_080F1B50: .4byte 0x00001788 -_080F1B54: - ldr r0, _080F1B64 @ =gPokenavConditionSearch_Gfx - ldr r2, _080F1B68 @ =0x00002388 - adds r1, r2 - bl LZ77UnCompWram - movs r0, 0 - b _080F1B7C - .align 2, 0 -_080F1B64: .4byte gPokenavConditionSearch_Gfx -_080F1B68: .4byte 0x00002388 -_080F1B6C: - ldr r0, _080F1B84 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F1B88 @ =0x00000306 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 -_080F1B7C: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080F1B84: .4byte gUnknown_083DFEC4 -_080F1B88: .4byte 0x00000306 - thumb_func_end sub_80F1AC4 - - thumb_func_start sub_80F1B8C -sub_80F1B8C: @ 80F1B8C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080F1BBC @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F1BC0 @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F1BC4 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F1BB4 -_080F1BA8: - adds r0, r4, 0 - bl sub_80F1BC8 - lsls r0, 24 - cmp r0, 0 - bne _080F1BA8 -_080F1BB4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F1BBC: .4byte gUnknown_083DFEC4 -_080F1BC0: .4byte 0x00000306 -_080F1BC4: .4byte 0x00006dac - thumb_func_end sub_80F1B8C - - thumb_func_start sub_80F1BC8 -sub_80F1BC8: @ 80F1BC8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _080F1BF4 @ =gUnknown_083DFEC4 - ldr r2, [r1] - ldr r3, _080F1BF8 @ =0x00000306 - adds r0, r2, r3 - ldrh r0, [r0] - adds r3, r1, 0 - cmp r0, 0x1 - beq _080F1C0A - cmp r0, 0x1 - bgt _080F1BFC - cmp r0, 0 - beq _080F1C02 - b _080F1DC4 - .align 2, 0 -_080F1BF4: .4byte gUnknown_083DFEC4 -_080F1BF8: .4byte 0x00000306 -_080F1BFC: - cmp r0, 0x2 - beq _080F1C12 - b _080F1DC4 -_080F1C02: - mov r0, r9 - bl sub_80F2458 - b _080F1DC8 -_080F1C0A: - mov r0, r9 - bl sub_80F2514 - b _080F1DC8 -_080F1C12: - mov r4, r9 - cmp r4, 0x1 - beq _080F1C40 - cmp r4, 0x1 - bgt _080F1C22 - cmp r4, 0 - beq _080F1C2A - b _080F1DC4 -_080F1C22: - mov r5, r9 - cmp r5, 0x2 - beq _080F1C54 - b _080F1DC4 -_080F1C2A: - movs r0, 0x2A - str r0, [sp, 0x4] - movs r1, 0x14 - str r1, [sp, 0x8] - ldr r4, _080F1C3C @ =0x0000030e - adds r1, r2, r4 - movs r0, 0x5 - b _080F1C62 - .align 2, 0 -_080F1C3C: .4byte 0x0000030e -_080F1C40: - movs r5, 0x38 - str r5, [sp, 0x4] - movs r0, 0x14 - str r0, [sp, 0x8] - ldr r4, _080F1C50 @ =0x0000030e - adds r1, r2, r4 - movs r0, 0x3 - b _080F1C62 - .align 2, 0 -_080F1C50: .4byte 0x0000030e -_080F1C54: - movs r5, 0x28 - str r5, [sp, 0x4] - movs r0, 0x10 - str r0, [sp, 0x8] - ldr r4, _080F1CDC @ =0x0000030e - adds r1, r2, r4 - movs r0, 0x6 -_080F1C62: - strb r0, [r1] - movs r5, 0 - str r5, [sp] - mov r8, r5 - adds r1, r3, 0 - ldr r0, [r1] - ldr r2, _080F1CDC @ =0x0000030e - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r8, r0 - blt _080F1C7E - b _080F1DC8 -_080F1C7E: - ldr r4, [sp, 0x8] - mov r3, r8 - muls r3, r4 - ldr r5, [sp, 0x4] - adds r0, r5, r3 - subs r0, 0x8 - lsls r0, 16 - lsrs r0, 16 - ldr r4, [r1] - mov r2, r8 - lsls r1, r2, 1 - movs r5, 0xC5 - lsls r5, 2 - adds r2, r4, r5 - adds r2, r1 - lsls r1, r0, 8 - adds r0, 0x11 - orrs r1, r0 - strh r1, [r2] - mov r0, r9 - cmp r0, 0 - bne _080F1CF2 - ldr r1, _080F1CE0 @ =0x00006db2 - adds r0, r4, r1 - mov r2, r8 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _080F1CE8 - movs r5, 0 - ldr r0, _080F1CE4 @ =gUnknown_083DFEC4 - ldr r0, [r0] - lsls r2, 4 - movs r3, 0xC8 - lsls r3, 2 - adds r1, r0, r3 - movs r3, 0 -_080F1CC8: - lsls r0, r5, 2 - adds r0, r2 - adds r0, r1, r0 - str r3, [r0] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _080F1CC8 - b _080F1D92 - .align 2, 0 -_080F1CDC: .4byte 0x0000030e -_080F1CE0: .4byte 0x00006db2 -_080F1CE4: .4byte gUnknown_083DFEC4 -_080F1CE8: - ldrb r0, [r1] - subs r0, 0x1 - lsls r0, 18 - lsrs r0, 16 - str r0, [sp] -_080F1CF2: - movs r5, 0 - ldr r4, [sp, 0x4] - adds r0, r4, r3 - lsls r0, 16 - mov r10, r0 -_080F1CFC: - lsls r6, r5, 5 - movs r0, 0x80 - lsls r0, 1 - adds r7, r6, r0 - lsls r1, r7, 16 - asrs r1, 16 - ldr r0, _080F1DB4 @ =gSpriteTemplate_83E4454 - mov r3, r10 - asrs r2, r3, 16 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080F1DC4 - ldr r0, _080F1DB8 @ =gUnknown_083DFEC4 - ldr r2, [r0] - lsls r1, r5, 2 - mov r4, r8 - lsls r0, r4, 4 - adds r1, r0 - movs r0, 0xC8 - lsls r0, 2 - adds r2, r0 - adds r4, r2, r1 - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - ldr r1, _080F1DBC @ =gSprites - adds r0, r1 - str r0, [r4] - mov r1, r8 - strh r1, [r0, 0x2E] - ldr r0, [r4] - strh r5, [r0, 0x30] - ldr r1, [r4] - adds r0, r6, 0 - adds r0, 0x98 - strh r0, [r1, 0x32] - ldr r0, [r4] - strh r7, [r0, 0x34] - ldr r0, [r4] - ldr r1, [sp] - adds r2, r1, 0x1 - lsls r2, 16 - lsrs r2, 16 - str r2, [sp] - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - mov r2, r9 - cmp r2, 0x2 - beq _080F1D6E - cmp r2, 0 - bne _080F1D88 -_080F1D6E: - mov r3, r8 - cmp r3, 0x2 - bls _080F1D88 - movs r0, 0x1 - bl IndexOfSpritePaletteTag - ldr r3, [r4] - lsls r0, 4 - ldrb r2, [r3, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x5] -_080F1D88: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3 - bls _080F1CFC -_080F1D92: - mov r0, r8 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r1, _080F1DB8 @ =gUnknown_083DFEC4 - ldr r0, [r1] - ldr r4, _080F1DC0 @ =0x0000030e - adds r0, r4 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r8, r0 - bge _080F1DB0 - b _080F1C7E -_080F1DB0: - b _080F1DC8 - .align 2, 0 -_080F1DB4: .4byte gSpriteTemplate_83E4454 -_080F1DB8: .4byte gUnknown_083DFEC4 -_080F1DBC: .4byte gSprites -_080F1DC0: .4byte 0x0000030e -_080F1DC4: - movs r0, 0 - b _080F1DD8 -_080F1DC8: - ldr r0, _080F1DE8 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r5, _080F1DEC @ =0x00000306 - adds r1, r5 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 -_080F1DD8: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080F1DE8: .4byte gUnknown_083DFEC4 -_080F1DEC: .4byte 0x00000306 - thumb_func_end sub_80F1BC8 - - thumb_func_start sub_80F1DF0 -sub_80F1DF0: @ 80F1DF0 - push {r4-r6,lr} - movs r2, 0 - ldr r0, _080F1E44 @ =gUnknown_083DFEC4 - ldr r3, [r0] - ldr r0, _080F1E48 @ =0x0000030e - adds r1, r3, r0 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r2, r0 - bge _080F1E38 - movs r0, 0xC8 - lsls r0, 2 - adds r4, r3, r0 - adds r6, r1, 0 - ldr r5, _080F1E4C @ =sub_80F2218 -_080F1E0E: - movs r1, 0 - adds r3, r2, 0x1 - lsls r2, 4 -_080F1E14: - lsls r0, r1, 2 - adds r0, r2 - adds r0, r4, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F1E22 - str r5, [r0, 0x1C] -_080F1E22: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3 - bls _080F1E14 - lsls r0, r3, 16 - lsrs r2, r0, 16 - movs r0, 0 - ldrsb r0, [r6, r0] - cmp r2, r0 - blt _080F1E0E -_080F1E38: - movs r0, 0x6 - bl PlaySE - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F1E44: .4byte gUnknown_083DFEC4 -_080F1E48: .4byte 0x0000030e -_080F1E4C: .4byte sub_80F2218 - thumb_func_end sub_80F1DF0 - - thumb_func_start sub_80F1E50 -sub_80F1E50: @ 80F1E50 - push {lr} - bl sub_80F22F8 - lsls r0, 24 - cmp r0, 0 - bne _080F1E60 - movs r0, 0x1 - b _080F1E66 -_080F1E60: - bl sub_80F2108 - movs r0, 0 -_080F1E66: - pop {r1} - bx r1 - thumb_func_end sub_80F1E50 - - thumb_func_start sub_80F1E6C -sub_80F1E6C: @ 80F1E6C - push {lr} - bl sub_80F22F8 - movs r1, 0 - lsls r0, 24 - cmp r0, 0 - bne _080F1E7C - movs r1, 0x1 -_080F1E7C: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end sub_80F1E6C - - thumb_func_start sub_80F1E84 -sub_80F1E84: @ 80F1E84 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r5, _080F1EFC @ =gUnknown_083DFEC4 - ldr r4, [r5] - ldr r1, _080F1F00 @ =0x0000030f - adds r0, r4, r1 - movs r1, 0 - strb r1, [r0] - bl sub_80F2148 - movs r2, 0 - ldr r3, _080F1F04 @ =0x0000030e - adds r1, r4, r3 - movs r0, 0 - ldrsb r0, [r1, r0] - cmp r2, r0 - bge _080F1EF2 - ldr r0, _080F1F08 @ =0x00006dad - adds r7, r4, r0 - adds r6, r1, 0 - mov r8, r5 - ldr r1, _080F1F0C @ =sub_80F2240 - mov r12, r1 -_080F1EB4: - movs r0, 0 - ldrsb r0, [r7, r0] - adds r5, r2, 0x1 - cmp r2, r0 - beq _080F1EE6 - movs r1, 0 - mov r3, r8 - ldr r0, [r3] - lsls r3, r2, 4 - movs r4, 0xC8 - lsls r4, 2 - adds r2, r0, r4 - mov r4, r12 -_080F1ECE: - lsls r0, r1, 2 - adds r0, r3 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F1EDC - str r4, [r0, 0x1C] -_080F1EDC: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3 - bls _080F1ECE -_080F1EE6: - lsls r0, r5, 16 - lsrs r2, r0, 16 - movs r0, 0 - ldrsb r0, [r6, r0] - cmp r2, r0 - blt _080F1EB4 -_080F1EF2: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F1EFC: .4byte gUnknown_083DFEC4 -_080F1F00: .4byte 0x0000030f -_080F1F04: .4byte 0x0000030e -_080F1F08: .4byte 0x00006dad -_080F1F0C: .4byte sub_80F2240 - thumb_func_end sub_80F1E84 - - thumb_func_start sub_80F1F10 -sub_80F1F10: @ 80F1F10 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _080F1F2C @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F1F30 @ =0x0000030f - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080F1F34 - cmp r0, 0x1 - beq _080F1FC0 - b _080F1FE4 - .align 2, 0 -_080F1F2C: .4byte gUnknown_083DFEC4 -_080F1F30: .4byte 0x0000030f -_080F1F34: - bl sub_80F2360 - lsls r0, 24 - cmp r0, 0 - beq _080F1FE4 - movs r6, 0 - adds r7, r4, 0 - movs r0, 0xC8 - lsls r0, 2 - adds r0, r7 - mov r8, r0 -_080F1F4A: - lsls r5, r6, 2 - ldr r1, _080F1FAC @ =0x00006dad - adds r0, r7, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 4 - adds r0, r5, r0 - add r0, r8 - ldr r4, [r0] - ldrb r0, [r4, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - ldr r0, _080F1FB0 @ =gSpriteAffineAnimTable_83E4450 - str r0, [r4, 0x10] - adds r0, r4, 0 - bl InitSpriteAffineAnim - subs r5, 0x6 - strh r5, [r4, 0x36] - movs r1, 0x36 - ldrsh r0, [r4, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - strh r0, [r4, 0x36] - movs r1, 0x36 - ldrsh r0, [r4, r1] - lsls r0, 3 - strh r0, [r4, 0x38] - ldr r0, _080F1FB4 @ =sub_80F2240 - str r0, [r4, 0x1C] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x3 - bls _080F1F4A - bl sub_80F2170 - ldr r0, _080F1FB8 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F1FBC @ =0x0000030f - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080F1FE4 - .align 2, 0 -_080F1FAC: .4byte 0x00006dad -_080F1FB0: .4byte gSpriteAffineAnimTable_83E4450 -_080F1FB4: .4byte sub_80F2240 -_080F1FB8: .4byte gUnknown_083DFEC4 -_080F1FBC: .4byte 0x0000030f -_080F1FC0: - bl sub_80F23C8 - lsls r0, 24 - cmp r0, 0 - beq _080F1FE4 - bl sub_80F21F8 - movs r0, 0 - bl FreeSpriteTilesByTag - movs r0, 0 - bl FreeSpritePaletteByTag - movs r0, 0x1 - bl FreeSpritePaletteByTag - movs r0, 0 - b _080F1FE6 -_080F1FE4: - movs r0, 0x1 -_080F1FE6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F1F10 - - thumb_func_start sub_80F1FF0 -sub_80F1FF0: @ 80F1FF0 - push {r4,lr} - ldr r0, _080F203C @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F2040 @ =0x00000311 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080F2058 - ldr r2, _080F2044 @ =REG_WIN0V - ldr r3, _080F2048 @ =0x00006dad - adds r0, r4, r3 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r1, 1 - movs r3, 0xC5 - lsls r3, 2 - adds r0, r4, r3 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - ldr r3, _080F204C @ =REG_BLDY - ldr r1, _080F2050 @ =gSineTable - ldr r0, _080F2054 @ =0x00000312 - adds r2, r4, r0 - ldrh r0, [r2] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 21 - strh r0, [r3] - ldrh r0, [r2] - adds r0, 0x3 - movs r1, 0x7F - ands r0, r1 - strh r0, [r2] - b _080F2078 - .align 2, 0 -_080F203C: .4byte gUnknown_083DFEC4 -_080F2040: .4byte 0x00000311 -_080F2044: .4byte REG_WIN0V -_080F2048: .4byte 0x00006dad -_080F204C: .4byte REG_BLDY -_080F2050: .4byte gSineTable -_080F2054: .4byte 0x00000312 -_080F2058: - cmp r0, 0x2 - bne _080F2078 - ldr r2, _080F2080 @ =REG_BLDALPHA - ldr r1, _080F2084 @ =gUnknown_083E42F8 - ldr r0, _080F2088 @ =0x00000312 - adds r3, r4, r0 - ldrh r0, [r3] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r2] - ldrh r0, [r3] - cmp r0, 0xE - bhi _080F2078 - adds r0, 0x1 - strh r0, [r3] -_080F2078: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F2080: .4byte REG_BLDALPHA -_080F2084: .4byte gUnknown_083E42F8 -_080F2088: .4byte 0x00000312 - thumb_func_end sub_80F1FF0 - - thumb_func_start sub_80F208C -sub_80F208C: @ 80F208C - push {lr} - bl sub_80F2148 - pop {r0} - bx r0 - thumb_func_end sub_80F208C - - thumb_func_start sub_80F2098 -sub_80F2098: @ 80F2098 - ldr r1, _080F20DC @ =REG_WIN0H - ldr r2, _080F20E0 @ =0x000077f0 - adds r0, r2, 0 - strh r0, [r1] - ldr r2, _080F20E4 @ =REG_WIN0V - ldr r0, _080F20E8 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r3, _080F20EC @ =0x00006dad - adds r0, r1, r3 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 1 - movs r3, 0xC5 - lsls r3, 2 - adds r1, r3 - adds r1, r0 - ldrh r0, [r1] - strh r0, [r2] - ldr r1, _080F20F0 @ =REG_WININ - movs r0, 0x3F - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x1F - strh r0, [r1] - subs r2, 0x44 - ldrh r0, [r2] - movs r3, 0x80 - lsls r3, 6 - adds r1, r3, 0 - orrs r0, r1 - strh r0, [r2] - bx lr - .align 2, 0 -_080F20DC: .4byte REG_WIN0H -_080F20E0: .4byte 0x000077f0 -_080F20E4: .4byte REG_WIN0V -_080F20E8: .4byte gUnknown_083DFEC4 -_080F20EC: .4byte 0x00006dad -_080F20F0: .4byte REG_WININ - thumb_func_end sub_80F2098 - - thumb_func_start sub_80F20F4 -sub_80F20F4: @ 80F20F4 - movs r2, 0x80 - lsls r2, 19 - ldrh r1, [r2] - ldr r0, _080F2104 @ =0x0000dfff - ands r0, r1 - strh r0, [r2] - bx lr - .align 2, 0 -_080F2104: .4byte 0x0000dfff - thumb_func_end sub_80F20F4 - - thumb_func_start sub_80F2108 -sub_80F2108: @ 80F2108 - push {lr} - ldr r0, _080F2134 @ =gUnknown_083DFEC4 - ldr r3, [r0] - ldr r0, _080F2138 @ =0x00000311 - adds r1, r3, r0 - ldrb r2, [r1] - cmp r2, 0 - bne _080F2130 - movs r0, 0x1 - strb r0, [r1] - ldr r1, _080F213C @ =0x00000312 - adds r0, r3, r1 - strh r2, [r0] - ldr r1, _080F2140 @ =REG_BLDCNT - movs r0, 0x90 - strh r0, [r1] - ldr r0, _080F2144 @ =REG_BLDY - strh r2, [r0] - bl sub_80F2098 -_080F2130: - pop {r0} - bx r0 - .align 2, 0 -_080F2134: .4byte gUnknown_083DFEC4 -_080F2138: .4byte 0x00000311 -_080F213C: .4byte 0x00000312 -_080F2140: .4byte REG_BLDCNT -_080F2144: .4byte REG_BLDY - thumb_func_end sub_80F2108 - - thumb_func_start sub_80F2148 -sub_80F2148: @ 80F2148 - push {lr} - ldr r0, _080F2164 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2168 @ =0x00000311 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, _080F216C @ =REG_BLDCNT - strh r1, [r0] - bl sub_80F20F4 - pop {r0} - bx r0 - .align 2, 0 -_080F2164: .4byte gUnknown_083DFEC4 -_080F2168: .4byte 0x00000311 -_080F216C: .4byte REG_BLDCNT - thumb_func_end sub_80F2148 - - thumb_func_start sub_80F2170 -sub_80F2170: @ 80F2170 - push {r4-r7,lr} - ldr r7, _080F21E4 @ =gUnknown_083DFEC4 - ldr r4, [r7] - ldr r1, _080F21E8 @ =0x00000311 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F21DC - bl sub_80F20F4 - movs r3, 0 - ldr r2, _080F21EC @ =0x00006dad - adds r5, r4, r2 - movs r0, 0xC8 - lsls r0, 2 - adds r4, r0 - movs r1, 0xD - negs r1, r1 - mov r12, r1 - movs r6, 0x4 -_080F2198: - lsls r1, r3, 2 - movs r0, 0 - ldrsb r0, [r5, r0] - lsls r0, 4 - adds r1, r0 - adds r1, r4, r1 - ldr r2, [r1] - ldrb r1, [r2, 0x1] - mov r0, r12 - ands r0, r1 - orrs r0, r6 - strb r0, [r2, 0x1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080F2198 - ldr r1, [r7] - ldr r0, _080F21E8 @ =0x00000311 - adds r2, r1, r0 - movs r3, 0 - movs r0, 0x2 - strb r0, [r2] - ldr r2, _080F21F0 @ =0x00000312 - adds r1, r2 - strh r3, [r1] - ldr r1, _080F21F4 @ =REG_BLDCNT - movs r2, 0xFD - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x10 - strh r0, [r1] -_080F21DC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F21E4: .4byte gUnknown_083DFEC4 -_080F21E8: .4byte 0x00000311 -_080F21EC: .4byte 0x00006dad -_080F21F0: .4byte 0x00000312 -_080F21F4: .4byte REG_BLDCNT - thumb_func_end sub_80F2170 - - thumb_func_start sub_80F21F8 -sub_80F21F8: @ 80F21F8 - ldr r0, _080F220C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2210 @ =0x00000311 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r0, _080F2214 @ =REG_BLDCNT - strh r1, [r0] - bx lr - .align 2, 0 -_080F220C: .4byte gUnknown_083DFEC4 -_080F2210: .4byte 0x00000311 -_080F2214: .4byte REG_BLDCNT - thumb_func_end sub_80F21F8 - - thumb_func_start sub_80F2218 -sub_80F2218: @ 80F2218 - push {r4,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x20] - subs r0, 0x8 - strh r0, [r2, 0x20] - lsls r0, 16 - asrs r0, 16 - ldrh r3, [r2, 0x32] - movs r4, 0x32 - ldrsh r1, [r2, r4] - cmp r0, r1 - bgt _080F2236 - strh r3, [r2, 0x20] - ldr r0, _080F223C @ =sub_80F22B0 - str r0, [r2, 0x1C] -_080F2236: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F223C: .4byte sub_80F22B0 - thumb_func_end sub_80F2218 - - thumb_func_start sub_80F2240 -sub_80F2240: @ 80F2240 - push {r4,lr} - adds r2, r0, 0 - ldr r0, _080F2288 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F228C @ =0x00006dad - adds r0, r1 - movs r3, 0x2E - ldrsh r1, [r2, r3] - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _080F2290 - ldrh r3, [r2, 0x38] - movs r4, 0x38 - ldrsh r0, [r2, r4] - cmp r0, 0 - beq _080F2270 - ldrh r0, [r2, 0x36] - ldrh r4, [r2, 0x20] - adds r1, r0, r4 - strh r1, [r2, 0x20] - subs r0, r3, r0 - strh r0, [r2, 0x38] -_080F2270: - adds r0, r2, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080F22A8 - adds r0, r2, 0 - bl sub_80F240C - b _080F22A8 - .align 2, 0 -_080F2288: .4byte gUnknown_083DFEC4 -_080F228C: .4byte 0x00006dad -_080F2290: - ldrh r0, [r2, 0x20] - adds r0, 0x8 - strh r0, [r2, 0x20] - lsls r0, 16 - asrs r0, 16 - movs r3, 0x34 - ldrsh r1, [r2, r3] - cmp r0, r1 - blt _080F22A8 - adds r0, r2, 0 - bl sub_80F240C -_080F22A8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F2240 - - thumb_func_start sub_80F22B0 -sub_80F22B0: @ 80F22B0 - push {lr} - adds r2, r0, 0 - ldr r0, _080F22DC @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F22E0 @ =0x00006dad - adds r0, r1 - movs r3, 0x2E - ldrsh r1, [r2, r3] - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r1, r0 - bne _080F22E4 - ldrh r3, [r2, 0x24] - movs r0, 0x24 - ldrsh r1, [r2, r0] - movs r0, 0x10 - negs r0, r0 - cmp r1, r0 - ble _080F22F2 - subs r0, r3, 0x4 - b _080F22F0 - .align 2, 0 -_080F22DC: .4byte gUnknown_083DFEC4 -_080F22E0: .4byte 0x00006dad -_080F22E4: - ldrh r1, [r2, 0x24] - movs r3, 0x24 - ldrsh r0, [r2, r3] - cmp r0, 0 - bge _080F22F2 - adds r0, r1, 0x4 -_080F22F0: - strh r0, [r2, 0x24] -_080F22F2: - pop {r0} - bx r0 - thumb_func_end sub_80F22B0 - - thumb_func_start sub_80F22F8 -sub_80F22F8: @ 80F22F8 - push {r4-r7,lr} - movs r3, 0 - ldr r0, _080F233C @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F2340 @ =0x00006dae - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - cmp r3, r0 - bge _080F2358 - movs r7, 0xC8 - lsls r7, 2 - adds r4, r1, r7 - movs r5, 0x10 - negs r5, r5 - adds r6, r0, 0 -_080F231A: - movs r1, 0 - lsls r2, r3, 4 -_080F231E: - lsls r0, r1, 2 - adds r0, r2 - adds r0, r4, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F2358 - movs r7, 0x24 - ldrsh r0, [r0, r7] - cmp r0, 0 - beq _080F2344 - cmp r0, r5 - beq _080F2344 - movs r0, 0 - b _080F235A - .align 2, 0 -_080F233C: .4byte gUnknown_083DFEC4 -_080F2340: .4byte 0x00006dae -_080F2344: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3 - bls _080F231E - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r6 - blt _080F231A -_080F2358: - movs r0, 0x1 -_080F235A: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F22F8 - - thumb_func_start sub_80F2360 -sub_80F2360: @ 80F2360 - push {r4-r7,lr} - movs r4, 0 - ldr r0, _080F23A0 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r1, _080F23A4 @ =0x0000030e - adds r0, r2, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - cmp r4, r1 - bge _080F23C0 - ldr r3, _080F23A8 @ =0x00006dad - adds r0, r2, r3 - movs r6, 0 - ldrsb r6, [r0, r6] - adds r5, r1, 0 -_080F237E: - cmp r4, r6 - beq _080F23B6 - movs r1, 0 - ldr r0, _080F23A0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - lsls r3, r4, 4 - movs r7, 0xC8 - lsls r7, 2 - adds r2, r0, r7 -_080F2390: - lsls r0, r1, 2 - adds r0, r3 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F23AC - movs r0, 0 - b _080F23C2 - .align 2, 0 -_080F23A0: .4byte gUnknown_083DFEC4 -_080F23A4: .4byte 0x0000030e -_080F23A8: .4byte 0x00006dad -_080F23AC: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3 - bls _080F2390 -_080F23B6: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, r5 - blt _080F237E -_080F23C0: - movs r0, 0x1 -_080F23C2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F2360 - - thumb_func_start sub_80F23C8 -sub_80F23C8: @ 80F23C8 - push {lr} - movs r2, 0 - ldr r0, _080F23F4 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r3, _080F23F8 @ =0x00006dad - adds r0, r1, r3 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r3, r0, 4 - movs r0, 0xC8 - lsls r0, 2 - adds r1, r0 -_080F23E2: - lsls r0, r2, 2 - adds r0, r3 - adds r0, r1, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F23FC - movs r0, 0 - b _080F2408 - .align 2, 0 -_080F23F4: .4byte gUnknown_083DFEC4 -_080F23F8: .4byte 0x00006dad -_080F23FC: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x3 - bls _080F23E2 - movs r0, 0x1 -_080F2408: - pop {r1} - bx r1 - thumb_func_end sub_80F23C8 - - thumb_func_start sub_80F240C -sub_80F240C: @ 80F240C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080F2454 @ =gUnknown_083DFEC4 - ldr r2, [r0] - movs r0, 0x30 - ldrsh r1, [r4, r0] - lsls r1, 2 - movs r3, 0x2E - ldrsh r0, [r4, r3] - lsls r0, 4 - adds r1, r0 - movs r0, 0xC8 - lsls r0, 2 - adds r2, r0 - adds r2, r1 - movs r0, 0 - str r0, [r2] - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080F2446 - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix -_080F2446: - adds r0, r4, 0 - bl DestroySprite - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F2454: .4byte gUnknown_083DFEC4 - thumb_func_end sub_80F240C - - thumb_func_start sub_80F2458 -sub_80F2458: @ 80F2458 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - beq _080F24A0 - cmp r4, 0x1 - bgt _080F246C - cmp r4, 0 - beq _080F2472 - b _080F2502 -_080F246C: - cmp r4, 0x2 - beq _080F24D0 - b _080F2502 -_080F2472: - ldr r2, _080F2498 @ =gUnknown_083DFEC4 - ldr r3, [r2] - movs r0, 0xE0 - lsls r0, 2 - adds r1, r3, r0 - movs r5, 0xE2 - lsls r5, 2 - adds r0, r3, r5 - str r0, [r1] - movs r0, 0xE1 - lsls r0, 2 - adds r1, r3, r0 - movs r0, 0xA0 - lsls r0, 5 - strh r0, [r1] - ldr r1, _080F249C @ =0x00000386 - adds r0, r3, r1 - strh r4, [r0] - b _080F24F6 - .align 2, 0 -_080F2498: .4byte gUnknown_083DFEC4 -_080F249C: .4byte 0x00000386 -_080F24A0: - ldr r4, _080F24C4 @ =gUnknown_083DFEC4 - ldr r1, [r4] - movs r3, 0xE0 - lsls r3, 2 - adds r2, r1, r3 - ldr r5, _080F24C8 @ =0x00001788 - adds r0, r1, r5 - str r0, [r2] - movs r0, 0xE1 - lsls r0, 2 - adds r2, r1, r0 - movs r3, 0 - movs r0, 0xC0 - lsls r0, 4 - strh r0, [r2] - ldr r5, _080F24CC @ =0x00000386 - adds r1, r5 - b _080F24F2 - .align 2, 0 -_080F24C4: .4byte gUnknown_083DFEC4 -_080F24C8: .4byte 0x00001788 -_080F24CC: .4byte 0x00000386 -_080F24D0: - ldr r4, _080F2508 @ =gUnknown_083DFEC4 - ldr r1, [r4] - movs r0, 0xE0 - lsls r0, 2 - adds r2, r1, r0 - ldr r3, _080F250C @ =0x00002388 - adds r0, r1, r3 - str r0, [r2] - movs r5, 0xE1 - lsls r5, 2 - adds r2, r1, r5 - movs r3, 0 - movs r0, 0xC0 - lsls r0, 5 - strh r0, [r2] - ldr r0, _080F2510 @ =0x00000386 - adds r1, r0 -_080F24F2: - strh r3, [r1] - adds r2, r4, 0 -_080F24F6: - ldr r0, [r2] - movs r1, 0xE0 - lsls r1, 2 - adds r0, r1 - bl LoadSpriteSheet -_080F2502: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F2508: .4byte gUnknown_083DFEC4 -_080F250C: .4byte 0x00002388 -_080F2510: .4byte 0x00000386 - thumb_func_end sub_80F2458 - - thumb_func_start sub_80F2514 -sub_80F2514: @ 80F2514 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x1 - beq _080F2558 - cmp r0, 0x1 - bgt _080F252C - cmp r0, 0 - beq _080F2532 - b _080F2586 -_080F252C: - cmp r1, 0x2 - beq _080F2568 - b _080F2586 -_080F2532: - ldr r0, _080F254C @ =gPokenavMenuOptions1_Pal - str r0, [sp] - ldr r1, _080F2550 @ =0xffff0000 - mov r4, sp - ldr r0, [sp, 0x4] - ands r0, r1 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpritePalette - ldr r0, _080F2554 @ =gPokenavMenuOptions2_Pal - b _080F257A - .align 2, 0 -_080F254C: .4byte gPokenavMenuOptions1_Pal -_080F2550: .4byte 0xffff0000 -_080F2554: .4byte gPokenavMenuOptions2_Pal -_080F2558: - ldr r0, _080F2564 @ =gPokenavConditionMenu_Pal - str r0, [sp] - mov r1, sp - movs r0, 0 - strh r0, [r1, 0x4] - b _080F2580 - .align 2, 0 -_080F2564: .4byte gPokenavConditionMenu_Pal -_080F2568: - ldr r0, _080F2590 @ =gPokenavCondition6_Pal - str r0, [sp] - mov r4, sp - movs r0, 0 - strh r0, [r4, 0x4] - mov r0, sp - bl LoadSpritePalette - ldr r0, _080F2594 @ =gPokenavCondition7_Pal -_080F257A: - str r0, [sp] - movs r0, 0x1 - strh r0, [r4, 0x4] -_080F2580: - mov r0, sp - bl LoadSpritePalette -_080F2586: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F2590: .4byte gPokenavCondition6_Pal -_080F2594: .4byte gPokenavCondition7_Pal - thumb_func_end sub_80F2514 - - thumb_func_start sub_80F2598 -sub_80F2598: @ 80F2598 - push {r4,lr} - ldr r0, _080F25F0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F25F4 @ =0x00006d9c - adds r4, r0, r1 - movs r0, 0 - str r0, [r4] - ldr r1, _080F25F8 @ =gSaveBlock1 - movs r0, 0x4 - ldrsb r0, [r1, r0] - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - lsls r1, 16 - lsrs r1, 16 - bl DoesSomeoneWantRematchIn - cmp r0, 0x1 - bne _080F2618 - ldr r0, _080F25FC @ =gSpriteSheet_PokenavBlueLight - bl LoadSpriteSheet - ldr r0, _080F2600 @ =gSpritePalette_PokenavBlueLight - bl LoadSpritePalette - ldr r0, _080F2604 @ =gSpriteTemplate_83E4484 - movs r1, 0xC - movs r2, 0x60 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080F260C - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F2608 @ =gSprites - adds r0, r1 - str r0, [r4] - b _080F2618 - .align 2, 0 -_080F25F0: .4byte gUnknown_083DFEC4 -_080F25F4: .4byte 0x00006d9c -_080F25F8: .4byte gSaveBlock1 -_080F25FC: .4byte gSpriteSheet_PokenavBlueLight -_080F2600: .4byte gSpritePalette_PokenavBlueLight -_080F2604: .4byte gSpriteTemplate_83E4484 -_080F2608: .4byte gSprites -_080F260C: - movs r0, 0x19 - bl FreeSpriteTilesByTag - movs r0, 0x11 - bl FreeSpritePaletteByTag -_080F2618: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F2598 - - thumb_func_start sub_80F2620 -sub_80F2620: @ 80F2620 - push {r4,lr} - ldr r0, _080F264C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2650 @ =0x00006d9c - adds r4, r0, r1 - ldr r0, [r4] - cmp r0, 0 - beq _080F2644 - bl DestroySprite - movs r0, 0x19 - bl FreeSpriteTilesByTag - movs r0, 0x11 - bl FreeSpritePaletteByTag - movs r0, 0 - str r0, [r4] -_080F2644: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F264C: .4byte gUnknown_083DFEC4 -_080F2650: .4byte 0x00006d9c - thumb_func_end sub_80F2620 - - thumb_func_start sub_80F2654 -sub_80F2654: @ 80F2654 - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _080F2682 - movs r0, 0 - strh r0, [r3, 0x2E] - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080F2682: - pop {r0} - bx r0 - thumb_func_end sub_80F2654 - - thumb_func_start sub_80F2688 -sub_80F2688: @ 80F2688 - push {lr} - ldr r0, _080F26B0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F26B4 @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F26B8 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F26AA -_080F26A0: - bl sub_80F26BC - lsls r0, 24 - cmp r0, 0 - bne _080F26A0 -_080F26AA: - pop {r0} - bx r0 - .align 2, 0 -_080F26B0: .4byte gUnknown_083DFEC4 -_080F26B4: .4byte 0x00000306 -_080F26B8: .4byte 0x00006dac - thumb_func_end sub_80F2688 - - thumb_func_start sub_80F26BC -sub_80F26BC: @ 80F26BC - push {lr} - ldr r0, _080F26D8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F26DC @ =0x00000306 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0x7 - bls _080F26CE - b _080F27BC -_080F26CE: - lsls r0, 2 - ldr r1, _080F26E0 @ =_080F26E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F26D8: .4byte gUnknown_083DFEC4 -_080F26DC: .4byte 0x00000306 -_080F26E0: .4byte _080F26E4 - .align 2, 0 -_080F26E4: - .4byte _080F2704 - .4byte _080F271C - .4byte _080F2734 - .4byte _080F274C - .4byte _080F2764 - .4byte _080F277C - .4byte _080F2794 - .4byte _080F27B0 -_080F2704: - ldr r0, _080F2710 @ =gPokenavMainMenu_Gfx - ldr r1, _080F2714 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2718 @ =0x00003b98 - b _080F279C - .align 2, 0 -_080F2710: .4byte gPokenavMainMenu_Gfx -_080F2714: .4byte gUnknown_083DFEC4 -_080F2718: .4byte 0x00003b98 -_080F271C: - ldr r0, _080F2728 @ =gPokenavConditionMenuHeader_Gfx - ldr r1, _080F272C @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2730 @ =0x00004198 - b _080F279C - .align 2, 0 -_080F2728: .4byte gPokenavConditionMenuHeader_Gfx -_080F272C: .4byte gUnknown_083DFEC4 -_080F2730: .4byte 0x00004198 -_080F2734: - ldr r0, _080F2740 @ =gPokenavRibbonsHeader_Gfx - ldr r1, _080F2744 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2748 @ =0x00004d98 - b _080F279C - .align 2, 0 -_080F2740: .4byte gPokenavRibbonsHeader_Gfx -_080F2744: .4byte gUnknown_083DFEC4 -_080F2748: .4byte 0x00004d98 -_080F274C: - ldr r0, _080F2758 @ =gPokenavHoennMapHeader_Gfx - ldr r1, _080F275C @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2760 @ =0x00005398 - b _080F279C - .align 2, 0 -_080F2758: .4byte gPokenavHoennMapHeader_Gfx -_080F275C: .4byte gUnknown_083DFEC4 -_080F2760: .4byte 0x00005398 -_080F2764: - ldr r0, _080F2770 @ =gPokenavConditionMenuOptions_Gfx - ldr r1, _080F2774 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2778 @ =0x00005f98 - b _080F279C - .align 2, 0 -_080F2770: .4byte gPokenavConditionMenuOptions_Gfx -_080F2774: .4byte gUnknown_083DFEC4 -_080F2778: .4byte 0x00005f98 -_080F277C: - ldr r0, _080F2788 @ =gPokenavConditionMenuOptions2_Gfx - ldr r1, _080F278C @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2790 @ =0x00006798 - b _080F279C - .align 2, 0 -_080F2788: .4byte gPokenavConditionMenuOptions2_Gfx -_080F278C: .4byte gUnknown_083DFEC4 -_080F2790: .4byte 0x00006798 -_080F2794: - ldr r0, _080F27A4 @ =gPokenavTrainersEyesHeader_Gfx - ldr r1, _080F27A8 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F27AC @ =0x00004798 -_080F279C: - adds r1, r2 - bl LZ77UnCompWram - b _080F27C0 - .align 2, 0 -_080F27A4: .4byte gPokenavTrainersEyesHeader_Gfx -_080F27A8: .4byte gUnknown_083DFEC4 -_080F27AC: .4byte 0x00004798 -_080F27B0: - ldr r0, _080F27B8 @ =gUnknown_083E449C - bl LoadSpritePalettes - b _080F27C0 - .align 2, 0 -_080F27B8: .4byte gUnknown_083E449C -_080F27BC: - movs r0, 0 - b _080F27D0 -_080F27C0: - ldr r0, _080F27D4 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F27D8 @ =0x00000306 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 -_080F27D0: - pop {r1} - bx r1 - .align 2, 0 -_080F27D4: .4byte gUnknown_083DFEC4 -_080F27D8: .4byte 0x00000306 - thumb_func_end sub_80F26BC - - thumb_func_start sub_80F27DC -sub_80F27DC: @ 80F27DC - push {lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB - bls _080F27EA - b _080F29A0 -_080F27EA: - lsls r0, 2 - ldr r1, _080F27F4 @ =_080F27F8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F27F4: .4byte _080F27F8 - .align 2, 0 -_080F27F8: - .4byte _080F2828 - .4byte _080F2858 - .4byte _080F28B8 - .4byte _080F2888 - .4byte _080F28E8 - .4byte _080F2918 - .4byte _080F2928 - .4byte _080F2978 - .4byte _080F2938 - .4byte _080F2948 - .4byte _080F2968 - .4byte _080F2958 -_080F2828: - ldr r0, _080F2848 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F284C @ =0x00003b98 - adds r0, r1 - str r0, [sp] - ldr r1, _080F2850 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0xC0 - lsls r1, 3 - orrs r0, r1 - ldr r1, _080F2854 @ =0x0000ffff - ands r0, r1 - adds r1, 0x1 - b _080F2996 - .align 2, 0 -_080F2848: .4byte gUnknown_083DFEC4 -_080F284C: .4byte 0x00003b98 -_080F2850: .4byte 0xffff0000 -_080F2854: .4byte 0x0000ffff -_080F2858: - ldr r0, _080F2878 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F287C @ =0x00004198 - adds r0, r1 - str r0, [sp] - ldr r1, _080F2880 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0xC0 - lsls r1, 3 - orrs r0, r1 - ldr r1, _080F2884 @ =0x0000ffff - ands r0, r1 - adds r1, 0x1 - b _080F2996 - .align 2, 0 -_080F2878: .4byte gUnknown_083DFEC4 -_080F287C: .4byte 0x00004198 -_080F2880: .4byte 0xffff0000 -_080F2884: .4byte 0x0000ffff -_080F2888: - ldr r0, _080F28A8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F28AC @ =0x00004798 - adds r0, r1 - str r0, [sp] - ldr r1, _080F28B0 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0xC0 - lsls r1, 3 - orrs r0, r1 - ldr r1, _080F28B4 @ =0x0000ffff - ands r0, r1 - adds r1, 0x1 - b _080F2996 - .align 2, 0 -_080F28A8: .4byte gUnknown_083DFEC4 -_080F28AC: .4byte 0x00004798 -_080F28B0: .4byte 0xffff0000 -_080F28B4: .4byte 0x0000ffff -_080F28B8: - ldr r0, _080F28D8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F28DC @ =0x00004d98 - adds r0, r1 - str r0, [sp] - ldr r1, _080F28E0 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0xC0 - lsls r1, 3 - orrs r0, r1 - ldr r1, _080F28E4 @ =0x0000ffff - ands r0, r1 - adds r1, 0x1 - b _080F2996 - .align 2, 0 -_080F28D8: .4byte gUnknown_083DFEC4 -_080F28DC: .4byte 0x00004d98 -_080F28E0: .4byte 0xffff0000 -_080F28E4: .4byte 0x0000ffff -_080F28E8: - ldr r0, _080F2908 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F290C @ =0x00005398 - adds r0, r1 - str r0, [sp] - ldr r1, _080F2910 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0xC0 - lsls r1, 4 - orrs r0, r1 - ldr r1, _080F2914 @ =0x0000ffff - ands r0, r1 - adds r1, 0x1 - b _080F2996 - .align 2, 0 -_080F2908: .4byte gUnknown_083DFEC4 -_080F290C: .4byte 0x00005398 -_080F2910: .4byte 0xffff0000 -_080F2914: .4byte 0x0000ffff -_080F2918: - ldr r0, _080F2920 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2924 @ =0x00005f98 - b _080F297E - .align 2, 0 -_080F2920: .4byte gUnknown_083DFEC4 -_080F2924: .4byte 0x00005f98 -_080F2928: - ldr r0, _080F2930 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2934 @ =0x00006198 - b _080F297E - .align 2, 0 -_080F2930: .4byte gUnknown_083DFEC4 -_080F2934: .4byte 0x00006198 -_080F2938: - ldr r0, _080F2940 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2944 @ =0x00006398 - b _080F297E - .align 2, 0 -_080F2940: .4byte gUnknown_083DFEC4 -_080F2944: .4byte 0x00006398 -_080F2948: - ldr r0, _080F2950 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2954 @ =0x00006598 - b _080F297E - .align 2, 0 -_080F2950: .4byte gUnknown_083DFEC4 -_080F2954: .4byte 0x00006598 -_080F2958: - ldr r0, _080F2960 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2964 @ =0x00006998 - b _080F297E - .align 2, 0 -_080F2960: .4byte gUnknown_083DFEC4 -_080F2964: .4byte 0x00006998 -_080F2968: - ldr r0, _080F2970 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2974 @ =0x00006798 - b _080F297E - .align 2, 0 -_080F2970: .4byte gUnknown_083DFEC4 -_080F2974: .4byte 0x00006798 -_080F2978: - ldr r0, _080F29A8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F29AC @ =0x00006b98 -_080F297E: - adds r0, r1 - str r0, [sp] - ldr r1, _080F29B0 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0x80 - lsls r1, 2 - orrs r0, r1 - ldr r1, _080F29B4 @ =0x0000ffff - ands r0, r1 - movs r1, 0x80 - lsls r1, 10 -_080F2996: - orrs r0, r1 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpriteSheet -_080F29A0: - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_080F29A8: .4byte gUnknown_083DFEC4 -_080F29AC: .4byte 0x00006b98 -_080F29B0: .4byte 0xffff0000 -_080F29B4: .4byte 0x0000ffff - thumb_func_end sub_80F27DC - - thumb_func_start sub_80F29B8 -sub_80F29B8: @ 80F29B8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0 - mov r8, r0 - cmp r7, 0xB - bls _080F29D2 - b _080F2BA6 -_080F29D2: - lsls r0, r7, 2 - ldr r1, _080F29DC @ =_080F29E0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F29DC: .4byte _080F29E0 - .align 2, 0 -_080F29E0: - .4byte _080F2A10 - .4byte _080F2A10 - .4byte _080F2A10 - .4byte _080F2A10 - .4byte _080F2A58 - .4byte _080F2A94 - .4byte _080F2A94 - .4byte _080F2A98 - .4byte _080F2A94 - .4byte _080F2A94 - .4byte _080F2A98 - .4byte _080F2A98 -_080F2A10: - ldr r3, _080F2A44 @ =0x0000ffa0 - ldr r0, _080F2A48 @ =gUnknown_083DFEC4 - ldr r2, [r0] - movs r1, 0xC3 - lsls r1, 2 - adds r0, r2, r1 - ldrh r1, [r0] - movs r0, 0x31 - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - movs r4, 0x8 - str r4, [sp] - movs r1, 0x20 - str r1, [sp, 0x4] - movs r1, 0x40 - ldr r4, _080F2A4C @ =0x00003b88 - adds r4, r2 - mov r9, r4 - ldr r2, _080F2A50 @ =gSpriteTemplate_83E44F8 - mov r8, r2 - cmp r7, 0x3 - beq _080F2AC8 - ldr r4, _080F2A54 @ =gSpriteTemplate_83E44E0 - mov r8, r4 - b _080F2AC8 - .align 2, 0 -_080F2A44: .4byte 0x0000ffa0 -_080F2A48: .4byte gUnknown_083DFEC4 -_080F2A4C: .4byte 0x00003b88 -_080F2A50: .4byte gSpriteTemplate_83E44F8 -_080F2A54: .4byte gSpriteTemplate_83E44E0 -_080F2A58: - movs r3, 0x88 - lsls r3, 1 - ldr r0, _080F2A84 @ =gUnknown_083DFEC4 - ldr r2, [r0] - movs r1, 0xC3 - lsls r1, 2 - adds r0, r2, r1 - ldrh r1, [r0] - movs r0, 0x31 - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - ldr r4, _080F2A88 @ =0x0000fff8 - str r4, [sp] - movs r1, 0x98 - str r1, [sp, 0x4] - movs r1, 0x40 - ldr r4, _080F2A8C @ =gSpriteTemplate_83E44E0 - mov r8, r4 - ldr r4, _080F2A90 @ =0x00003b88 - b _080F2AC4 - .align 2, 0 -_080F2A84: .4byte gUnknown_083DFEC4 -_080F2A88: .4byte 0x0000fff8 -_080F2A8C: .4byte gSpriteTemplate_83E44E0 -_080F2A90: .4byte 0x00003b88 -_080F2A94: - ldr r0, _080F2B40 @ =gSpriteTemplate_83E4530 - mov r8, r0 -_080F2A98: - mov r1, r8 - cmp r1, 0 - bne _080F2AA2 - ldr r2, _080F2B44 @ =gSpriteTemplate_83E4548 - mov r8, r2 -_080F2AA2: - ldr r3, _080F2B48 @ =0x0000ffa0 - ldr r0, _080F2B4C @ =gUnknown_083DFEC4 - ldr r2, [r0] - movs r4, 0xC3 - lsls r4, 2 - adds r0, r2, r4 - ldrh r1, [r0] - movs r0, 0x44 - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x8 - str r1, [sp] - movs r4, 0x10 - str r4, [sp, 0x4] - movs r1, 0x20 - ldr r4, _080F2B50 @ =0x00003b90 -_080F2AC4: - adds r4, r2 - mov r9, r4 -_080F2AC8: - movs r6, 0 - lsls r1, 16 - str r1, [sp, 0x10] - lsls r3, 16 - str r3, [sp, 0x8] - lsls r0, 16 - str r0, [sp, 0xC] - ldr r0, _080F2B54 @ =gSprites - mov r10, r0 -_080F2ADA: - ldr r1, [sp, 0x10] - asrs r0, r1, 16 - adds r5, r6, 0 - muls r5, r0 - ldr r2, [sp, 0x8] - asrs r1, r2, 16 - adds r1, r5 - lsls r1, 16 - asrs r1, 16 - mov r0, r8 - ldr r3, [sp, 0xC] - asrs r2, r3, 16 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x40 - beq _080F2B9C - lsls r0, r4, 4 - adds r1, r0, r4 - lsls r1, 2 - mov r2, r10 - adds r3, r1, r2 - mov r1, sp - ldrh r1, [r1] - strh r1, [r3, 0x2E] - ldr r2, [sp, 0x4] - adds r1, r2, r5 - strh r1, [r3, 0x30] - strh r6, [r3, 0x32] - strh r7, [r3, 0x34] - adds r5, r0, 0 - cmp r7, 0x4 - bne _080F2B5C - cmp r6, 0x1 - bne _080F2B5C - ldr r0, _080F2B4C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2B58 @ =0x00006e90 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x2 - cmp r0, 0 - bne _080F2B36 - movs r1, 0x1 -_080F2B36: - adds r0, r3, 0 - bl StartSpriteAnim - b _080F2B6A - .align 2, 0 -_080F2B40: .4byte gSpriteTemplate_83E4530 -_080F2B44: .4byte gSpriteTemplate_83E4548 -_080F2B48: .4byte 0x0000ffa0 -_080F2B4C: .4byte gUnknown_083DFEC4 -_080F2B50: .4byte 0x00003b90 -_080F2B54: .4byte gSprites -_080F2B58: .4byte 0x00006e90 -_080F2B5C: - adds r0, r5, r4 - lsls r0, 2 - add r0, r10 - lsls r1, r6, 24 - lsrs r1, 24 - bl StartSpriteAnim -_080F2B6A: - ldr r2, _080F2BB8 @ =gSprites - mov r12, r2 - cmp r7, 0x3 - bhi _080F2B90 - cmp r6, 0x1 - bne _080F2B90 - adds r2, r5, r4 - lsls r2, 2 - add r2, r10 - ldrb r3, [r2, 0x1] - movs r1, 0x3F - adds r0, r1, 0 - ands r0, r3 - strb r0, [r2, 0x1] - ldrb r0, [r2, 0x3] - ands r1, r0 - movs r0, 0x80 - orrs r1, r0 - strb r1, [r2, 0x3] -_080F2B90: - lsls r1, r6, 2 - add r1, r9 - adds r0, r5, r4 - lsls r0, 2 - add r0, r12 - str r0, [r1] -_080F2B9C: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x1 - bls _080F2ADA -_080F2BA6: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F2BB8: .4byte gSprites - thumb_func_end sub_80F29B8 - - thumb_func_start sub_80F2BBC -sub_80F2BBC: @ 80F2BBC - push {r4,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x20] - ldrh r1, [r2, 0x2E] - adds r3, r0, r1 - strh r3, [r2, 0x20] - lsls r0, 16 - asrs r4, r0, 16 - movs r0, 0x30 - ldrsh r1, [r2, r0] - cmp r4, r1 - bgt _080F2BE0 - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, r1 - bge _080F2BE8 - cmp r4, r1 - blt _080F2C08 -_080F2BE0: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, r1 - bgt _080F2C08 -_080F2BE8: - ldrh r0, [r2, 0x30] - strh r0, [r2, 0x20] - movs r1, 0x34 - ldrsh r0, [r2, r1] - cmp r0, 0x4 - bne _080F2C04 - movs r1, 0x32 - ldrsh r0, [r2, r1] - cmp r0, 0x1 - bne _080F2C04 - ldr r0, _080F2C00 @ =sub_80F2C58 - b _080F2C06 - .align 2, 0 -_080F2C00: .4byte sub_80F2C58 -_080F2C04: - ldr r0, _080F2C10 @ =SpriteCallbackDummy -_080F2C06: - str r0, [r2, 0x1C] -_080F2C08: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F2C10: .4byte SpriteCallbackDummy - thumb_func_end sub_80F2BBC - - thumb_func_start sub_80F2C14 -sub_80F2C14: @ 80F2C14 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x20] - ldrh r1, [r4, 0x2E] - subs r0, r1 - strh r0, [r4, 0x20] - adds r0, 0x20 - lsls r0, 16 - movs r1, 0x98 - lsls r1, 17 - cmp r0, r1 - bls _080F2C50 - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080F2C4A - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bgt _080F2C44 - movs r0, 0x1 - bl FreeSpriteTilesByTag - b _080F2C4A -_080F2C44: - movs r0, 0x2 - bl FreeSpriteTilesByTag -_080F2C4A: - adds r0, r4, 0 - bl DestroySprite -_080F2C50: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F2C14 - - thumb_func_start sub_80F2C58 -sub_80F2C58: @ 80F2C58 - push {lr} - adds r2, r0, 0 - ldr r0, _080F2C78 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2C7C @ =0x00006e90 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x2 - cmp r0, 0 - bne _080F2C6E - movs r1, 0x1 -_080F2C6E: - adds r0, r2, 0 - bl StartSpriteAnim - pop {r0} - bx r0 - .align 2, 0 -_080F2C78: .4byte gUnknown_083DFEC4 -_080F2C7C: .4byte 0x00006e90 - thumb_func_end sub_80F2C58 - - thumb_func_start sub_80F2C80 -sub_80F2C80: @ 80F2C80 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080F2CB0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2CB4 @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F2CB8 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F2CA8 -_080F2C9C: - adds r0, r4, 0 - bl sub_80F2CBC - lsls r0, 24 - cmp r0, 0 - bne _080F2C9C -_080F2CA8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F2CB0: .4byte gUnknown_083DFEC4 -_080F2CB4: .4byte 0x00000306 -_080F2CB8: .4byte 0x00006dac - thumb_func_end sub_80F2C80 - - thumb_func_start sub_80F2CBC -sub_80F2CBC: @ 80F2CBC - push {r4,lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _080F2CD8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F2CDC @ =0x00000306 - adds r4, r0, r2 - ldrh r0, [r4] - cmp r0, 0 - beq _080F2CE0 - cmp r0, 0x1 - beq _080F2CF0 - b _080F2CFC - .align 2, 0 -_080F2CD8: .4byte gUnknown_083DFEC4 -_080F2CDC: .4byte 0x00000306 -_080F2CE0: - adds r0, r1, 0 - bl sub_80F27DC - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - movs r0, 0x1 - b _080F2CFE -_080F2CF0: - adds r0, r1, 0 - bl sub_80F29B8 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_080F2CFC: - movs r0, 0 -_080F2CFE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80F2CBC - - thumb_func_start sub_80F2D04 -sub_80F2D04: @ 80F2D04 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080F2D3C - movs r1, 0 - ldr r0, _080F2D30 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r3, _080F2D34 @ =0x00003b88 - adds r2, r0, r3 - ldr r3, _080F2D38 @ =sub_80F2C14 -_080F2D1A: - lsls r0, r1, 2 - adds r0, r2, r0 - ldr r0, [r0] - str r3, [r0, 0x1C] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x1 - bls _080F2D1A - b _080F2D5A - .align 2, 0 -_080F2D30: .4byte gUnknown_083DFEC4 -_080F2D34: .4byte 0x00003b88 -_080F2D38: .4byte sub_80F2C14 -_080F2D3C: - movs r1, 0 - ldr r0, _080F2D60 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r3, _080F2D64 @ =0x00003b90 - adds r2, r0, r3 - ldr r3, _080F2D68 @ =sub_80F2C14 -_080F2D48: - lsls r0, r1, 2 - adds r0, r2, r0 - ldr r0, [r0] - str r3, [r0, 0x1C] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x1 - bls _080F2D48 -_080F2D5A: - pop {r0} - bx r0 - .align 2, 0 -_080F2D60: .4byte gUnknown_083DFEC4 -_080F2D64: .4byte 0x00003b90 -_080F2D68: .4byte sub_80F2C14 - thumb_func_end sub_80F2D04 - - thumb_func_start sub_80F2D6C -sub_80F2D6C: @ 80F2D6C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080F2DA4 - movs r0, 0x1 - bl FreeSpriteTilesByTag - movs r4, 0 - ldr r0, _080F2D9C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2DA0 @ =0x00003b88 - adds r5, r0, r1 -_080F2D86: - lsls r0, r4, 2 - adds r0, r5, r0 - ldr r0, [r0] - bl DestroySprite - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _080F2D86 - b _080F2DC8 - .align 2, 0 -_080F2D9C: .4byte gUnknown_083DFEC4 -_080F2DA0: .4byte 0x00003b88 -_080F2DA4: - movs r0, 0x2 - bl FreeSpriteTilesByTag - movs r4, 0 - ldr r0, _080F2DD0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2DD4 @ =0x00003b90 - adds r5, r0, r1 -_080F2DB4: - lsls r0, r4, 2 - adds r0, r5, r0 - ldr r0, [r0] - bl DestroySprite - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _080F2DB4 -_080F2DC8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F2DD0: .4byte gUnknown_083DFEC4 -_080F2DD4: .4byte 0x00003b90 - thumb_func_end sub_80F2D6C - - thumb_func_start sub_80F2DD8 -sub_80F2DD8: @ 80F2DD8 - push {lr} - movs r0, 0x7 - movs r1, 0x7 - bl CreateRegionMapCursor - movs r0, 0x8 - movs r1, 0x8 - bl CreateRegionMapPlayerIcon - bl sub_80FBF94 - pop {r0} - bx r0 - thumb_func_end sub_80F2DD8 - - thumb_func_start sub_80F2DF4 -sub_80F2DF4: @ 80F2DF4 - push {lr} - bl FreeRegionMapIconResources - pop {r0} - bx r0 - thumb_func_end sub_80F2DF4 - - thumb_func_start sub_80F2E00 -sub_80F2E00: @ 80F2E00 - ldr r1, _080F2E10 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F2E14 @ =0x00008766 - adds r1, r2 - ldrh r1, [r1] - adds r1, 0x26 - strh r1, [r0, 0x20] - bx lr - .align 2, 0 -_080F2E10: .4byte gUnknown_083DFEC4 -_080F2E14: .4byte 0x00008766 - thumb_func_end sub_80F2E00 - - thumb_func_start sub_80F2E18 -sub_80F2E18: @ 80F2E18 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x28 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _080F2EA8 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F2EAC @ =0x00008768 - adds r7, r4, r0 - ldr r1, [r7] - mov r8, r1 - cmp r1, 0 - bne _080F2EFC - ldr r0, _080F2EB0 @ =gUnknown_083E4568 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x20] - str r1, [sp, 0x24] - mov r1, sp - ldr r0, _080F2EB4 @ =gSpriteTemplate_83E4570 - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldr r0, _080F2EB8 @ =gUnknown_083E4588 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x18] - str r1, [sp, 0x1C] - lsls r0, r3, 13 - ldr r1, _080F2EBC @ =0x0000d1e4 - adds r0, r1 - adds r0, r4, r0 - str r0, [sp, 0x20] - lsls r0, r3, 7 - adds r0, r4, r0 - str r0, [sp, 0x18] - add r0, sp, 0x18 - bl LoadSpritePalette - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080F2EC0 @ =0x0000d1dc - adds r5, r4, r2 - strh r0, [r5] - add r0, sp, 0x20 - bl LoadSpriteSheet - ldr r1, _080F2EC4 @ =0x0000d1de - adds r6, r4, r1 - strh r0, [r6] - mov r0, sp - movs r1, 0x26 - movs r2, 0x68 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - bne _080F2EC8 - movs r0, 0x6 - bl FreeSpriteTilesByTag - movs r0, 0x6 - bl FreeSpritePaletteByTag - mov r2, r8 - str r2, [r7] - b _080F2F26 - .align 2, 0 -_080F2EA8: .4byte gUnknown_083DFEC4 -_080F2EAC: .4byte 0x00008768 -_080F2EB0: .4byte gUnknown_083E4568 -_080F2EB4: .4byte gSpriteTemplate_83E4570 -_080F2EB8: .4byte gUnknown_083E4588 -_080F2EBC: .4byte 0x0000d1e4 -_080F2EC0: .4byte 0x0000d1dc -_080F2EC4: .4byte 0x0000d1de -_080F2EC8: - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F2EF0 @ =gSprites - adds r0, r1 - str r0, [r7] - ldr r0, _080F2EF4 @ =0x0000d1e0 - adds r1, r4, r0 - ldrh r0, [r6] - lsls r0, 5 - ldr r2, _080F2EF8 @ =0x06010000 - adds r0, r2 - str r0, [r1] - ldrh r0, [r5] - lsls r0, 4 - movs r6, 0x80 - lsls r6, 1 - adds r0, r6 - strh r0, [r5] - b _080F2F26 - .align 2, 0 -_080F2EF0: .4byte gSprites -_080F2EF4: .4byte 0x0000d1e0 -_080F2EF8: .4byte 0x06010000 -_080F2EFC: - lsls r0, r3, 13 - ldr r1, _080F2F34 @ =0x0000d1e4 - adds r0, r1 - adds r0, r4, r0 - ldr r2, _080F2F38 @ =0x0000d1e0 - adds r1, r4, r2 - ldr r2, [r1] - ldr r1, _080F2F3C @ =0x040000d4 - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _080F2F40 @ =0x80000400 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - lsls r0, r3, 7 - adds r0, r4, r0 - ldr r5, _080F2F44 @ =0x0000d1dc - adds r1, r4, r5 - ldrh r1, [r1] - movs r2, 0x20 - bl LoadPalette -_080F2F26: - add sp, 0x28 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F2F34: .4byte 0x0000d1e4 -_080F2F38: .4byte 0x0000d1e0 -_080F2F3C: .4byte 0x040000d4 -_080F2F40: .4byte 0x80000400 -_080F2F44: .4byte 0x0000d1dc - thumb_func_end sub_80F2E18 - - thumb_func_start sub_80F2F48 -sub_80F2F48: @ 80F2F48 - push {r4,lr} - ldr r0, _080F2F74 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2F78 @ =0x00008768 - adds r4, r0, r1 - ldr r0, [r4] - cmp r0, 0 - beq _080F2F6C - bl DestroySprite - movs r0, 0x6 - bl FreeSpriteTilesByTag - movs r0, 0x6 - bl FreeSpritePaletteByTag - movs r0, 0 - str r0, [r4] -_080F2F6C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F2F74: .4byte gUnknown_083DFEC4 -_080F2F78: .4byte 0x00008768 - thumb_func_end sub_80F2F48 - - thumb_func_start sub_80F2F7C -sub_80F2F7C: @ 80F2F7C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_80F2E18 - ldr r0, _080F2FA0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F2FA4 @ =0x0000ced0 - adds r2, r0, r1 - ldr r1, _080F2FA8 @ =0x00008768 - adds r0, r1 - ldr r1, [r0] - str r1, [r2] - ldr r0, _080F2FAC @ =sub_80F2FEC - str r0, [r1, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_080F2FA0: .4byte gUnknown_083DFEC4 -_080F2FA4: .4byte 0x0000ced0 -_080F2FA8: .4byte 0x00008768 -_080F2FAC: .4byte sub_80F2FEC - thumb_func_end sub_80F2F7C - - thumb_func_start sub_80F2FB0 -sub_80F2FB0: @ 80F2FB0 - push {r4,r5,lr} - ldr r0, _080F2FE0 @ =gUnknown_083DFEC4 - ldr r5, [r0] - ldr r0, _080F2FE4 @ =0x0000ced0 - adds r4, r5, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F2FDA - bl DestroySprite - movs r0, 0x6 - bl FreeSpriteTilesByTag - movs r0, 0x6 - bl FreeSpritePaletteByTag - movs r1, 0 - str r1, [r4] - ldr r2, _080F2FE8 @ =0x00008768 - adds r0, r5, r2 - str r1, [r0] -_080F2FDA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F2FE0: .4byte gUnknown_083DFEC4 -_080F2FE4: .4byte 0x0000ced0 -_080F2FE8: .4byte 0x00008768 - thumb_func_end sub_80F2FB0 - - thumb_func_start sub_80F2FEC -sub_80F2FEC: @ 80F2FEC - ldr r1, _080F3000 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F3004 @ =0x0000d15a - adds r1, r2 - ldrh r1, [r1] - adds r1, 0x28 - strh r1, [r0, 0x20] - movs r1, 0x68 - strh r1, [r0, 0x22] - bx lr - .align 2, 0 -_080F3000: .4byte gUnknown_083DFEC4 -_080F3004: .4byte 0x0000d15a - thumb_func_end sub_80F2FEC - - thumb_func_start sub_80F3008 -sub_80F3008: @ 80F3008 - push {r4,r5,lr} - sub sp, 0x20 - lsls r0, 24 - lsrs r2, r0, 24 - mov r1, sp - ldr r0, _080F3060 @ =gUnknown_083E4590 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldr r0, _080F3064 @ =gUnknown_083E45A8 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x18] - str r1, [sp, 0x1C] - cmp r2, 0x2 - bgt _080F3032 - cmp r2, 0x1 - blt _080F3032 - ldr r0, _080F3068 @ =gUnknown_08E9F988 - str r0, [sp, 0x18] -_080F3032: - mov r0, sp - bl LoadSpriteSheets - add r0, sp, 0x18 - bl LoadSpritePalette - ldr r0, _080F306C @ =gSpriteTemplate_83E45B8 - movs r1, 0x5F - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - bne _080F3078 - ldr r0, _080F3070 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F3074 @ =0x000087cc - adds r0, r1 - movs r1, 0 - str r1, [r0] - b _080F3120 - .align 2, 0 -_080F3060: .4byte gUnknown_083E4590 -_080F3064: .4byte gUnknown_083E45A8 -_080F3068: .4byte gUnknown_08E9F988 -_080F306C: .4byte gSpriteTemplate_83E45B8 -_080F3070: .4byte gUnknown_083DFEC4 -_080F3074: .4byte 0x000087cc -_080F3078: - ldr r0, _080F30F4 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r3, _080F30F8 @ =0x000087cc - adds r2, r3 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F30FC @ =gSprites - adds r0, r1 - str r0, [r2] - movs r4, 0 - movs r5, 0 -_080F3090: - lsls r2, r4, 7 - adds r2, 0x8 - lsls r2, 16 - asrs r2, 16 - ldr r0, _080F3100 @ =gSpriteTemplate_83E45F0 - movs r1, 0xA8 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080F3108 - ldr r0, _080F30F4 @ =gUnknown_083DFEC4 - ldr r2, [r0] - lsls r0, r4, 2 - ldr r3, _080F3104 @ =0x000087d0 - adds r2, r3 - adds r2, r0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F30FC @ =gSprites - adds r3, r0, r1 - str r3, [r2] - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - strh r5, [r3, 0x2E] - strh r5, [r3, 0x30] - movs r0, 0x1 - cmp r4, 0 - bne _080F30DE - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 -_080F30DE: - strh r0, [r3, 0x32] - strh r4, [r3, 0x34] - movs r0, 0x1 - strh r0, [r3, 0x36] - lsls r1, r4, 24 - lsrs r1, 24 - adds r0, r3, 0 - bl StartSpriteAnim - b _080F3116 - .align 2, 0 -_080F30F4: .4byte gUnknown_083DFEC4 -_080F30F8: .4byte 0x000087cc -_080F30FC: .4byte gSprites -_080F3100: .4byte gSpriteTemplate_83E45F0 -_080F3104: .4byte 0x000087d0 -_080F3108: - ldr r0, _080F3128 @ =gUnknown_083DFEC4 - ldr r0, [r0] - lsls r1, r4, 2 - ldr r2, _080F312C @ =0x000087d0 - adds r0, r2 - adds r0, r1 - str r5, [r0] -_080F3116: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x1 - bls _080F3090 -_080F3120: - add sp, 0x20 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F3128: .4byte gUnknown_083DFEC4 -_080F312C: .4byte 0x000087d0 - thumb_func_end sub_80F3008 - - thumb_func_start sub_80F3130 -sub_80F3130: @ 80F3130 - push {r4-r6,lr} - ldr r0, _080F3184 @ =gUnknown_083DFEC4 - ldr r6, [r0] - ldr r0, _080F3188 @ =0x000087cc - adds r4, r6, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F3154 - bl DestroySprite - movs r0, 0x9 - bl FreeSpriteTilesByTag - movs r0, 0x9 - bl FreeSpritePaletteByTag - movs r0, 0 - str r0, [r4] -_080F3154: - movs r5, 0 - ldr r0, _080F318C @ =0x000087d0 - adds r6, r0 -_080F315A: - lsls r0, r5, 2 - adds r4, r6, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F316C - bl DestroySprite - movs r0, 0 - str r0, [r4] -_080F316C: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x1 - bls _080F315A - movs r0, 0xA - bl FreeSpriteTilesByTag - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F3184: .4byte gUnknown_083DFEC4 -_080F3188: .4byte 0x000087cc -_080F318C: .4byte 0x000087d0 - thumb_func_end sub_80F3130 - - thumb_func_start sub_80F3190 -sub_80F3190: @ 80F3190 - ldr r1, _080F31A4 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F31A8 @ =0x0000876c - adds r1, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - lsls r1, 4 - adds r1, 0x10 - strh r1, [r0, 0x22] - bx lr - .align 2, 0 -_080F31A4: .4byte gUnknown_083DFEC4 -_080F31A8: .4byte 0x0000876c - thumb_func_end sub_80F3190 - - thumb_func_start sub_80F31AC -sub_80F31AC: @ 80F31AC - push {r4,r5,lr} - adds r3, r0, 0 - ldr r0, _080F31E8 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F31EC @ =0x000087c9 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080F325C - movs r4, 0x36 - ldrsh r0, [r3, r4] - cmp r0, 0 - beq _080F3226 - movs r5, 0x34 - ldrsh r0, [r3, r5] - cmp r0, 0 - bne _080F31F4 - movs r2, 0 - ldr r4, _080F31F0 @ =0x00008770 - adds r0, r1, r4 - movs r5, 0 - ldrsh r0, [r0, r5] - cmp r0, 0 - bne _080F31DE - movs r2, 0x1 -_080F31DE: - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - lsls r2, 2 - b _080F3214 - .align 2, 0 -_080F31E8: .4byte gUnknown_083DFEC4 -_080F31EC: .4byte 0x000087c9 -_080F31F0: .4byte 0x00008770 -_080F31F4: - movs r4, 0 - ldr r2, _080F3250 @ =0x00008772 - adds r0, r1, r2 - ldr r5, _080F3254 @ =0x00008774 - adds r1, r5 - movs r5, 0 - ldrsh r2, [r0, r5] - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r2, r0 - bne _080F320C - movs r4, 0x1 -_080F320C: - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - lsls r2, r4, 2 -_080F3214: - ldrb r1, [r0] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - orrs r0, r2 - mov r1, r12 - strb r0, [r1] - movs r0, 0 - strh r0, [r3, 0x36] -_080F3226: - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - movs r1, 0 - strh r0, [r3, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080F325C - strh r1, [r3, 0x2E] - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bgt _080F3258 - ldrh r0, [r3, 0x32] - ldrh r2, [r3, 0x26] - adds r0, r2 - strh r0, [r3, 0x26] - b _080F325C - .align 2, 0 -_080F3250: .4byte 0x00008772 -_080F3254: .4byte 0x00008774 -_080F3258: - strh r1, [r3, 0x30] - strh r1, [r3, 0x26] -_080F325C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F31AC - - thumb_func_start sub_80F3264 -sub_80F3264: @ 80F3264 - push {lr} - movs r1, 0 - ldr r0, _080F328C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r3, _080F3290 @ =0x000087d0 - adds r2, r0, r3 - movs r3, 0x1 -_080F3272: - lsls r0, r1, 2 - adds r0, r2, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F327E - strh r3, [r0, 0x36] -_080F327E: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x1 - bls _080F3272 - pop {r0} - bx r0 - .align 2, 0 -_080F328C: .4byte gUnknown_083DFEC4 -_080F3290: .4byte 0x000087d0 - thumb_func_end sub_80F3264 - - thumb_func_start sub_80F3294 -sub_80F3294: @ 80F3294 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080F32F4 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F32F8 @ =0x000087cc - adds r0, r4, r1 - ldr r2, [r0] - adds r2, 0x3E - movs r0, 0x1 - adds r1, r6, 0 - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r5, 0x5 - negs r5, r5 - adds r0, r5, 0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldr r2, _080F32FC @ =0x000087c9 - adds r0, r4, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080F331A - cmp r6, 0x1 - bne _080F3308 - ldr r1, _080F3300 @ =0x000087d0 - adds r0, r4, r1 - ldr r1, [r0] - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r5, 0 - ands r0, r2 - movs r3, 0x4 - orrs r0, r3 - strb r0, [r1] - ldr r2, _080F3304 @ =0x000087d4 - adds r0, r4, r2 - ldr r1, [r0] - adds r1, 0x3E - ldrb r2, [r1] - adds r0, r5, 0 - ands r0, r2 - orrs r0, r3 - strb r0, [r1] - b _080F331A - .align 2, 0 -_080F32F4: .4byte gUnknown_083DFEC4 -_080F32F8: .4byte 0x000087cc -_080F32FC: .4byte 0x000087c9 -_080F3300: .4byte 0x000087d0 -_080F3304: .4byte 0x000087d4 -_080F3308: - ldr r1, _080F3320 @ =0x000087d0 - adds r0, r4, r1 - ldr r0, [r0] - movs r1, 0x1 - strh r1, [r0, 0x36] - ldr r2, _080F3324 @ =0x000087d4 - adds r0, r4, r2 - ldr r0, [r0] - strh r1, [r0, 0x36] -_080F331A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F3320: .4byte 0x000087d0 -_080F3324: .4byte 0x000087d4 - thumb_func_end sub_80F3294 - - thumb_func_start sub_80F3328 -sub_80F3328: @ 80F3328 - push {lr} - adds r2, r0, 0 - ldr r0, _080F334C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F3350 @ =0x000087dc - adds r0, r1 - movs r3, 0x2E - ldrsh r1, [r2, r3] - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r1, r0 - bne _080F3354 - adds r0, r2, 0 - movs r1, 0 - bl StartSpriteAnim - b _080F335C - .align 2, 0 -_080F334C: .4byte gUnknown_083DFEC4 -_080F3350: .4byte 0x000087dc -_080F3354: - adds r0, r2, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080F335C: - pop {r0} - bx r0 - thumb_func_end sub_80F3328 - - thumb_func_start sub_80F3360 -sub_80F3360: @ 80F3360 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080F3384 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F3388 @ =0x000087dc - adds r1, r0, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - ldr r2, _080F338C @ =0x000087da - adds r0, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - subs r0, 0x1 - cmp r1, r0 - bne _080F3390 - movs r0, 0x4 - b _080F3392 - .align 2, 0 -_080F3384: .4byte gUnknown_083DFEC4 -_080F3388: .4byte 0x000087dc -_080F338C: .4byte 0x000087da -_080F3390: - movs r0, 0x5 -_080F3392: - bl IndexOfSpritePaletteTag - lsls r0, 4 - ldrb r2, [r4, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x5] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80F3360 - - thumb_func_start sub_80F33A8 -sub_80F33A8: @ 80F33A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x50 - mov r1, sp - ldr r0, _080F3440 @ =gUnknown_083E4628 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldm r0!, {r3,r4} - stm r1!, {r3,r4} - add r4, sp, 0x20 - adds r1, r4, 0 - ldr r0, _080F3444 @ =gUnknown_083E4648 - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - ldm r0!, {r3,r5,r6} - stm r1!, {r3,r5,r6} - add r5, sp, 0x38 - adds r1, r5, 0 - ldr r0, _080F3448 @ =gSpriteTemplate_83E4660 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - mov r0, sp - bl LoadSpriteSheets - adds r0, r4, 0 - bl LoadSpritePalettes - movs r6, 0 - ldr r2, _080F344C @ =gUnknown_083DFEC4 - ldr r1, [r2] - ldr r3, _080F3450 @ =0x000087da - adds r0, r1, r3 - movs r4, 0 - ldrsh r0, [r0, r4] - subs r0, 0x1 - adds r7, r5, 0 - cmp r6, r0 - bge _080F347A - adds r5, r2, 0 - adds r0, r3, 0 - adds r0, r1 - mov r8, r0 -_080F3406: - lsls r4, r6, 2 - adds r2, r4, r6 - lsls r2, 18 - movs r1, 0x80 - lsls r1, 12 - adds r2, r1 - asrs r2, 16 - adds r0, r7, 0 - movs r1, 0xE2 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080F345C - ldr r0, [r5] - ldr r2, _080F3454 @ =0x000087e4 - adds r0, r2 - adds r0, r4 - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - ldr r2, _080F3458 @ =gSprites - adds r1, r2 - str r1, [r0] - strh r6, [r1, 0x2E] - b _080F3468 - .align 2, 0 -_080F3440: .4byte gUnknown_083E4628 -_080F3444: .4byte gUnknown_083E4648 -_080F3448: .4byte gSpriteTemplate_83E4660 -_080F344C: .4byte gUnknown_083DFEC4 -_080F3450: .4byte 0x000087da -_080F3454: .4byte 0x000087e4 -_080F3458: .4byte gSprites -_080F345C: - ldr r0, [r5] - ldr r3, _080F34C8 @ =0x000087e4 - adds r0, r3 - adds r0, r4 - movs r1, 0 - str r1, [r0] -_080F3468: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - mov r4, r8 - movs r1, 0 - ldrsh r0, [r4, r1] - subs r0, 0x1 - cmp r6, r0 - blt _080F3406 -_080F347A: - movs r0, 0x4 - strh r0, [r7] - ldr r0, _080F34CC @ =SpriteCallbackDummy - str r0, [r7, 0x14] - cmp r6, 0x5 - bhi _080F34EE - ldr r5, _080F34D0 @ =gUnknown_083DFEC4 -_080F3488: - lsls r4, r6, 2 - adds r2, r4, r6 - lsls r2, 18 - movs r3, 0x80 - lsls r3, 12 - adds r2, r3 - asrs r2, 16 - adds r0, r7, 0 - movs r1, 0xE6 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080F34D8 - ldr r2, [r5] - ldr r0, _080F34C8 @ =0x000087e4 - adds r2, r0 - adds r2, r4 - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - ldr r0, _080F34D4 @ =gSprites - adds r1, r0 - str r1, [r2] - ldrb r2, [r1, 0x3] - movs r0, 0x3F - ands r0, r2 - strb r0, [r1, 0x3] - b _080F34E4 - .align 2, 0 -_080F34C8: .4byte 0x000087e4 -_080F34CC: .4byte SpriteCallbackDummy -_080F34D0: .4byte gUnknown_083DFEC4 -_080F34D4: .4byte gSprites -_080F34D8: - ldr r0, [r5] - ldr r1, _080F3548 @ =0x000087e4 - adds r0, r1 - adds r0, r4 - movs r1, 0 - str r1, [r0] -_080F34E4: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x5 - bls _080F3488 -_080F34EE: - movs r0, 0x5 - strh r0, [r7] - ldr r0, _080F354C @ =sub_80F3360 - str r0, [r7, 0x14] - lsls r5, r6, 2 - adds r2, r5, r6 - lsls r2, 18 - movs r3, 0x80 - lsls r3, 12 - adds r2, r3 - asrs r2, 16 - adds r0, r7, 0 - movs r1, 0xDE - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x40 - beq _080F3558 - ldr r0, _080F3550 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r6, _080F3548 @ =0x000087e4 - adds r4, r6 - adds r4, r5 - lsls r1, r3, 4 - adds r1, r3 - lsls r1, 2 - ldr r0, _080F3554 @ =gSprites - adds r1, r0 - str r1, [r4] - ldrb r3, [r1, 0x1] - movs r2, 0x3F - adds r0, r2, 0 - ands r0, r3 - movs r3, 0x40 - orrs r0, r3 - strb r0, [r1, 0x1] - ldr r1, [r4] - ldrb r0, [r1, 0x3] - ands r2, r0 - movs r0, 0x80 - orrs r2, r0 - strb r2, [r1, 0x3] - b _080F3566 - .align 2, 0 -_080F3548: .4byte 0x000087e4 -_080F354C: .4byte sub_80F3360 -_080F3550: .4byte gUnknown_083DFEC4 -_080F3554: .4byte gSprites -_080F3558: - ldr r0, _080F3574 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F3578 @ =0x000087e4 - adds r0, r1 - adds r0, r5 - movs r1, 0 - str r1, [r0] -_080F3566: - add sp, 0x50 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F3574: .4byte gUnknown_083DFEC4 -_080F3578: .4byte 0x000087e4 - thumb_func_end sub_80F33A8 - - thumb_func_start sub_80F357C -sub_80F357C: @ 80F357C - push {r4-r6,lr} - movs r5, 0 - ldr r0, _080F35AC @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F35B0 @ =0x000087e4 - adds r6, r0, r1 -_080F3588: - lsls r0, r5, 2 - adds r4, r6, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F359A - bl DestroySprite - movs r0, 0 - str r0, [r4] -_080F359A: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x6 - bls _080F3588 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F35AC: .4byte gUnknown_083DFEC4 -_080F35B0: .4byte 0x000087e4 - thumb_func_end sub_80F357C - - thumb_func_start sub_80F35B4 -sub_80F35B4: @ 80F35B4 - push {r4,lr} - ldr r0, _080F35FC @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F3600 @ =0x000076b0 - adds r0, r4, r1 - movs r1, 0x1C - strh r1, [r0] - ldr r1, _080F3604 @ =0x000076b2 - adds r2, r4, r1 - movs r1, 0x13 - strh r1, [r2] - bl sub_80F727C - bl sub_80F7404 - ldr r2, _080F3608 @ =gUnknown_083E4678 - movs r0, 0x1B - movs r1, 0x15 - bl sub_80F7920 - ldrb r1, [r0, 0x5] - movs r2, 0xC - orrs r1, r2 - strb r1, [r0, 0x5] - movs r1, 0xC0 - strh r1, [r0, 0x20] - movs r1, 0x20 - strh r1, [r0, 0x22] - ldr r1, _080F360C @ =sub_80F363C - str r1, [r0, 0x1C] - ldr r1, _080F3610 @ =0x000076ac - adds r4, r1 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F35FC: .4byte gUnknown_083DFEC4 -_080F3600: .4byte 0x000076b0 -_080F3604: .4byte 0x000076b2 -_080F3608: .4byte gUnknown_083E4678 -_080F360C: .4byte sub_80F363C -_080F3610: .4byte 0x000076ac - thumb_func_end sub_80F35B4 - - thumb_func_start sub_80F3614 -sub_80F3614: @ 80F3614 - push {lr} - ldr r0, _080F3634 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F3638 @ =0x000076ac - adds r0, r1 - ldr r0, [r0] - bl DestroySprite - movs r0, 0x1B - bl FreeSpriteTilesByTag - movs r0, 0x15 - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - .align 2, 0 -_080F3634: .4byte gUnknown_083DFEC4 -_080F3638: .4byte 0x000076ac - thumb_func_end sub_80F3614 - - thumb_func_start sub_80F363C -sub_80F363C: @ 80F363C - push {lr} - ldr r1, _080F365C @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r3, _080F3660 @ =0x00008fe9 - adds r2, r1, r3 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - ldr r3, _080F3664 @ =0x00008934 - adds r1, r3 - adds r1, r2 - ldrb r1, [r1] - bl StartSpriteAnim - pop {r0} - bx r0 - .align 2, 0 -_080F365C: .4byte gUnknown_083DFEC4 -_080F3660: .4byte 0x00008fe9 -_080F3664: .4byte 0x00008934 - thumb_func_end sub_80F363C - - thumb_func_start sub_80F3668 -sub_80F3668: @ 80F3668 - push {lr} - ldr r0, _080F368C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F3690 @ =0x00008fe9 - adds r1, r0, r2 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - ldr r2, _080F3694 @ =0x00008934 - adds r0, r2 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0xB0 - movs r2, 0x20 - bl sub_80F7418 - pop {r0} - bx r0 - .align 2, 0 -_080F368C: .4byte gUnknown_083DFEC4 -_080F3690: .4byte 0x00008fe9 -_080F3694: .4byte 0x00008934 - thumb_func_end sub_80F3668 - - thumb_func_start sub_80F3698 -sub_80F3698: @ 80F3698 - push {r4,lr} - ldr r0, _080F36DC @ =gUnknown_083DFEC4 - ldr r3, [r0] - ldr r1, _080F36E0 @ =0x000087dc - adds r0, r3, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - lsls r1, 2 - ldr r4, _080F36E4 @ =0x0000893c - adds r1, r4 - adds r1, r3, r1 - ldr r2, _080F36E8 @ =0x00008fe9 - adds r0, r3, r2 - movs r2, 0 - ldrsb r2, [r0, r2] - subs r4, 0x8 - adds r0, r3, r4 - adds r0, r2 - ldr r2, _080F36EC @ =0x000076b4 - adds r3, r2 - ldrb r2, [r3] - strb r2, [r0] - ldrb r0, [r1, 0x1] - ldr r1, [r1] - lsls r1, 11 - lsrs r1, 27 - ldrb r2, [r3] - bl sub_80F4548 - bl sub_80F7470 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F36DC: .4byte gUnknown_083DFEC4 -_080F36E0: .4byte 0x000087dc -_080F36E4: .4byte 0x0000893c -_080F36E8: .4byte 0x00008fe9 -_080F36EC: .4byte 0x000076b4 - thumb_func_end sub_80F3698 - - thumb_func_start sub_80F36F0 -sub_80F36F0: @ 80F36F0 - push {lr} - ldr r0, _080F3718 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F371C @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F3720 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F3712 -_080F3708: - bl sub_80F3724 - lsls r0, 24 - cmp r0, 0 - bne _080F3708 -_080F3712: - pop {r0} - bx r0 - .align 2, 0 -_080F3718: .4byte gUnknown_083DFEC4 -_080F371C: .4byte 0x00000306 -_080F3720: .4byte 0x00006dac - thumb_func_end sub_80F36F0 - - thumb_func_start sub_80F3724 -sub_80F3724: @ 80F3724 - push {r4,lr} - ldr r0, _080F3740 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F3744 @ =0x00000306 - adds r4, r1, r0 - ldrh r0, [r4] - cmp r0, 0x1 - beq _080F3764 - cmp r0, 0x1 - bgt _080F3748 - cmp r0, 0 - beq _080F374E - b _080F377A - .align 2, 0 -_080F3740: .4byte gUnknown_083DFEC4 -_080F3744: .4byte 0x00000306 -_080F3748: - cmp r0, 0x2 - beq _080F376E - b _080F377A -_080F374E: - ldr r0, _080F375C @ =gUnknown_083E3D00 - ldr r2, _080F3760 @ =0x0000984c - adds r1, r2 - bl LZ77UnCompWram - b _080F377E - .align 2, 0 -_080F375C: .4byte gUnknown_083E3D00 -_080F3760: .4byte 0x0000984c -_080F3764: - bl sub_80F379C - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_080F376E: - bl sub_80F37D0 - lsls r0, 24 - cmp r0, 0 - beq _080F377E - b _080F378C -_080F377A: - movs r0, 0 - b _080F378E -_080F377E: - ldr r0, _080F3794 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F3798 @ =0x00000306 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F378C: - movs r0, 0x1 -_080F378E: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F3794: .4byte gUnknown_083DFEC4 -_080F3798: .4byte 0x00000306 - thumb_func_end sub_80F3724 - - thumb_func_start sub_80F379C -sub_80F379C: @ 80F379C - push {lr} - ldr r0, _080F37C4 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F37C8 @ =0x0000bc93 - adds r2, r0, r1 - movs r1, 0 - strb r1, [r2] - ldr r1, _080F37CC @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F37BE -_080F37B4: - bl sub_80F37D0 - lsls r0, 24 - cmp r0, 0 - bne _080F37B4 -_080F37BE: - pop {r0} - bx r0 - .align 2, 0 -_080F37C4: .4byte gUnknown_083DFEC4 -_080F37C8: .4byte 0x0000bc93 -_080F37CC: .4byte 0x00006dac - thumb_func_end sub_80F379C - - thumb_func_start sub_80F37D0 -sub_80F37D0: @ 80F37D0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _080F3898 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F389C @ =0x0000bc93 - adds r1, r2 - ldrb r1, [r1] - adds r2, r0, 0 - cmp r1, 0xB - bhi _080F38A8 - movs r3, 0 - mov r8, r3 - movs r7, 0xF - mov r9, r7 -_080F37F0: - ldr r2, [r2] - ldr r1, _080F389C @ =0x0000bc93 - adds r0, r2, r1 - ldrb r1, [r0] - lsls r0, r1, 8 - ldr r3, _080F38A0 @ =0x0000984c - adds r0, r3 - adds r4, r2, r0 - lsls r1, 9 - ldr r7, _080F38A4 @ =0x0000a44c - adds r1, r7 - adds r5, r2, r1 - movs r6, 0 -_080F380A: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x10 - bl CpuFastSet - adds r5, 0x40 - adds r4, 0x20 - movs r1, 0 - adds r6, 0x1 - mov r12, r6 -_080F381E: - movs r0, 0 - adds r6, r1, 0x1 -_080F3822: - adds r4, 0x4 - movs r2, 0 - adds r3, r0, 0x1 -_080F3828: - subs r4, 0x1 - ldrb r0, [r4] - lsls r1, r0, 4 - lsrs r0, 4 - mov r7, r9 - ands r0, r7 - orrs r1, r0 - strb r1, [r5] - adds r5, 0x1 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3 - bls _080F3828 - adds r4, 0x4 - lsls r0, r3, 24 - lsrs r0, 24 - cmp r0, 0x7 - bls _080F3822 - subs r4, 0x40 - lsls r0, r6, 24 - lsrs r1, r0, 24 - cmp r1, 0x1 - bls _080F381E - adds r4, 0x60 - mov r1, r12 - lsls r0, r1, 24 - lsrs r6, r0, 24 - cmp r6, 0x3 - bls _080F380A - ldr r2, _080F3898 @ =gUnknown_083DFEC4 - ldr r3, [r2] - ldr r7, _080F389C @ =0x0000bc93 - adds r1, r3, r7 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB - bhi _080F38A8 - mov r0, r8 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r0, 0x1 - bls _080F37F0 - adds r1, r7, 0 - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0xB - bhi _080F38A8 - movs r0, 0x1 - b _080F38AA - .align 2, 0 -_080F3898: .4byte gUnknown_083DFEC4 -_080F389C: .4byte 0x0000bc93 -_080F38A0: .4byte 0x0000984c -_080F38A4: .4byte 0x0000a44c -_080F38A8: - movs r0, 0 -_080F38AA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F37D0 - - thumb_func_start sub_80F38B8 -sub_80F38B8: @ 80F38B8 - push {lr} - ldr r0, _080F38E0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F38E4 @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F38E8 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F38DA -_080F38D0: - bl sub_80F38EC - lsls r0, 24 - cmp r0, 0 - bne _080F38D0 -_080F38DA: - pop {r0} - bx r0 - .align 2, 0 -_080F38E0: .4byte gUnknown_083DFEC4 -_080F38E4: .4byte 0x00000306 -_080F38E8: .4byte 0x00006dac - thumb_func_end sub_80F38B8 - - thumb_func_start sub_80F38EC -sub_80F38EC: @ 80F38EC - push {r4,lr} - ldr r0, _080F3908 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r0, _080F390C @ =0x00000306 - adds r4, r2, r0 - ldrh r1, [r4] - cmp r1, 0x1 - beq _080F3930 - cmp r1, 0x1 - bgt _080F3910 - cmp r1, 0 - beq _080F391A - b _080F394E - .align 2, 0 -_080F3908: .4byte gUnknown_083DFEC4 -_080F390C: .4byte 0x00000306 -_080F3910: - cmp r1, 0x2 - beq _080F3938 - cmp r1, 0x3 - beq _080F3942 - b _080F394E -_080F391A: - ldr r3, _080F3928 @ =0x00009348 - adds r0, r2, r3 - str r1, [r0] - ldr r3, _080F392C @ =0x0000bc92 - adds r0, r2, r3 - strb r1, [r0] - b _080F3952 - .align 2, 0 -_080F3928: .4byte 0x00009348 -_080F392C: .4byte 0x0000bc92 -_080F3930: - movs r0, 0 - bl sub_80F2E18 - b _080F3952 -_080F3938: - bl sub_80F3970 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] -_080F3942: - bl sub_80F39A4 - lsls r0, 24 - cmp r0, 0 - beq _080F3952 - b _080F3960 -_080F394E: - movs r0, 0 - b _080F3962 -_080F3952: - ldr r0, _080F3968 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F396C @ =0x00000306 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F3960: - movs r0, 0x1 -_080F3962: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F3968: .4byte gUnknown_083DFEC4 -_080F396C: .4byte 0x00000306 - thumb_func_end sub_80F38EC - - thumb_func_start sub_80F3970 -sub_80F3970: @ 80F3970 - push {lr} - ldr r0, _080F3998 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F399C @ =0x0000bc93 - adds r2, r0, r1 - movs r1, 0 - strb r1, [r2] - ldr r1, _080F39A0 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F3992 -_080F3988: - bl sub_80F39A4 - lsls r0, 24 - cmp r0, 0 - bne _080F3988 -_080F3992: - pop {r0} - bx r0 - .align 2, 0 -_080F3998: .4byte gUnknown_083DFEC4 -_080F399C: .4byte 0x0000bc93 -_080F39A0: .4byte 0x00006dac - thumb_func_end sub_80F3970 - - thumb_func_start sub_80F39A4 -sub_80F39A4: @ 80F39A4 - push {r4,r5,lr} - sub sp, 0x10 - ldr r0, _080F3A18 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F3A1C @ =0x0000bc93 - adds r4, r1, r0 - ldrb r0, [r4] - cmp r0, 0xB - bhi _080F3A30 - ldrb r0, [r4] - lsls r0, 9 - ldr r2, _080F3A20 @ =0x0000a44c - adds r0, r2 - adds r0, r1, r0 - str r0, [sp] - ldr r5, _080F3A24 @ =0xffff0000 - ldr r2, [sp, 0x4] - ands r2, r5 - movs r0, 0x80 - lsls r0, 2 - orrs r2, r0 - str r2, [sp, 0x4] - ldrb r1, [r4] - adds r1, 0xB - lsls r1, 16 - ldr r0, _080F3A28 @ =0x0000ffff - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpriteSheet - ldrb r0, [r4] - cmp r0, 0x4 - bhi _080F3A04 - lsls r0, 5 - ldr r1, _080F3A2C @ =gUnknown_083E3C60 - adds r0, r1 - str r0, [sp, 0x8] - ldrb r2, [r4] - adds r2, 0xA - add r0, sp, 0x8 - ldr r1, [r0, 0x4] - ands r1, r5 - orrs r1, r2 - str r1, [r0, 0x4] - bl LoadSpritePalette -_080F3A04: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xB - bhi _080F3A30 - movs r0, 0x1 - b _080F3A32 - .align 2, 0 -_080F3A18: .4byte gUnknown_083DFEC4 -_080F3A1C: .4byte 0x0000bc93 -_080F3A20: .4byte 0x0000a44c -_080F3A24: .4byte 0xffff0000 -_080F3A28: .4byte 0x0000ffff -_080F3A2C: .4byte gUnknown_083E3C60 -_080F3A30: - movs r0, 0 -_080F3A32: - add sp, 0x10 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80F39A4 - - thumb_func_start sub_80F3A3C -sub_80F3A3C: @ 80F3A3C - push {r4-r7,lr} - sub sp, 0x18 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - cmp r4, 0x2 - bhi _080F3A60 - lsls r0, r4, 3 - adds r0, r4 - adds r0, r5, r0 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r2, _080F3A5C @ =gUnknown_083DFEC4 - b _080F3A78 - .align 2, 0 -_080F3A5C: .4byte gUnknown_083DFEC4 -_080F3A60: - ldr r2, _080F3AD0 @ =gUnknown_083DFEC4 - ldr r1, [r2] - ldr r3, _080F3AD4 @ =0x0000bc8e - adds r0, r1, r3 - ldrb r0, [r0] - ldr r6, _080F3AD8 @ =0x0000bc8f - adds r1, r6 - ldrb r1, [r1] - subs r0, r1 - adds r0, r5, r0 - lsls r0, 16 - lsrs r1, r0, 16 -_080F3A78: - ldr r0, [r2] - ldr r7, _080F3ADC @ =0x0000bc4c - adds r0, r7 - adds r0, r1 - ldrb r2, [r0] - mov r1, sp - ldr r0, _080F3AE0 @ =gSpriteTemplate_83E476C - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - mov r3, sp - ldr r1, _080F3AE4 @ =gUnknown_083E4698 - lsls r2, 2 - adds r0, r2, r1 - ldrh r0, [r0] - adds r0, 0xB - strh r0, [r3] - adds r1, 0x2 - adds r2, r1 - ldrh r0, [r2] - adds r0, 0xA - strh r0, [r3, 0x2] - lsls r1, r5, 20 - movs r0, 0xC0 - lsls r0, 15 - adds r1, r0 - asrs r1, 16 - lsls r2, r4, 20 - movs r3, 0xA0 - lsls r3, 14 - adds r2, r3 - asrs r2, 16 - mov r0, sp - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - bne _080F3AE8 - movs r0, 0 - b _080F3AF2 - .align 2, 0 -_080F3AD0: .4byte gUnknown_083DFEC4 -_080F3AD4: .4byte 0x0000bc8e -_080F3AD8: .4byte 0x0000bc8f -_080F3ADC: .4byte 0x0000bc4c -_080F3AE0: .4byte gSpriteTemplate_83E476C -_080F3AE4: .4byte gUnknown_083E4698 -_080F3AE8: - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F3AFC @ =gSprites - adds r0, r1 -_080F3AF2: - add sp, 0x18 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080F3AFC: .4byte gSprites - thumb_func_end sub_80F3A3C - - thumb_func_start sub_80F3B00 -sub_80F3B00: @ 80F3B00 - push {r4,lr} - ldr r0, _080F3B34 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F3B38 @ =0x0000bc90 - adds r0, r4, r1 - ldrb r0, [r0] - ldr r2, _080F3B3C @ =0x0000bc91 - adds r1, r4, r2 - ldrb r1, [r1] - bl sub_80F3A3C - adds r2, r0, 0 - ldr r1, _080F3B40 @ =0x00009348 - adds r0, r4, r1 - str r2, [r0] - cmp r2, 0 - beq _080F3B48 - adds r0, r2, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r2, _080F3B44 @ =0x0000bc92 - adds r1, r4, r2 - movs r0, 0x1 - strb r0, [r1] - b _080F3B4E - .align 2, 0 -_080F3B34: .4byte gUnknown_083DFEC4 -_080F3B38: .4byte 0x0000bc90 -_080F3B3C: .4byte 0x0000bc91 -_080F3B40: .4byte 0x00009348 -_080F3B44: .4byte 0x0000bc92 -_080F3B48: - ldr r1, _080F3B54 @ =0x0000bc92 - adds r0, r4, r1 - strb r2, [r0] -_080F3B4E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F3B54: .4byte 0x0000bc92 - thumb_func_end sub_80F3B00 - - thumb_func_start sub_80F3B58 -sub_80F3B58: @ 80F3B58 - push {lr} - ldr r0, _080F3B6C @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F3B70 @ =0x0000bc92 - adds r2, r1, r0 - ldrb r0, [r2] - cmp r0, 0 - bne _080F3B74 - movs r0, 0 - b _080F3B8A - .align 2, 0 -_080F3B6C: .4byte gUnknown_083DFEC4 -_080F3B70: .4byte 0x0000bc92 -_080F3B74: - ldr r3, _080F3B90 @ =0x00009348 - adds r0, r1, r3 - ldr r0, [r0] - adds r0, 0x3F - ldrb r0, [r0] - lsrs r0, 5 - movs r1, 0x1 - eors r0, r1 - ands r0, r1 - strb r0, [r2] - ldrb r0, [r2] -_080F3B8A: - pop {r1} - bx r1 - .align 2, 0 -_080F3B90: .4byte 0x00009348 - thumb_func_end sub_80F3B58 - - thumb_func_start sub_80F3B94 -sub_80F3B94: @ 80F3B94 - push {r4,lr} - ldr r0, _080F3BB8 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F3BBC @ =0x00009348 - adds r0, r4, r1 - ldr r2, [r0] - cmp r2, 0 - beq _080F3BC4 - adds r0, r2, 0 - movs r1, 0x2 - bl StartSpriteAffineAnim - ldr r0, _080F3BC0 @ =0x0000bc92 - adds r1, r4, r0 - movs r0, 0x1 - strb r0, [r1] - b _080F3BCA - .align 2, 0 -_080F3BB8: .4byte gUnknown_083DFEC4 -_080F3BBC: .4byte 0x00009348 -_080F3BC0: .4byte 0x0000bc92 -_080F3BC4: - ldr r1, _080F3BD0 @ =0x0000bc92 - adds r0, r4, r1 - strb r2, [r0] -_080F3BCA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F3BD0: .4byte 0x0000bc92 - thumb_func_end sub_80F3B94 - - thumb_func_start sub_80F3BD4 -sub_80F3BD4: @ 80F3BD4 - push {r4-r6,lr} - ldr r0, _080F3C18 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F3C1C @ =0x0000bc92 - adds r5, r1, r0 - ldrb r0, [r5] - cmp r0, 0 - beq _080F3C24 - ldr r0, _080F3C20 @ =0x00009348 - adds r4, r1, r0 - ldr r0, [r4] - adds r0, 0x3F - ldrb r0, [r0] - lsrs r0, 5 - movs r1, 0x1 - eors r0, r1 - ands r0, r1 - strb r0, [r5] - adds r6, r0, 0 - cmp r6, 0 - bne _080F3C12 - ldr r0, [r4] - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldr r0, [r4] - bl DestroySprite - str r6, [r4] -_080F3C12: - ldrb r0, [r5] - b _080F3C26 - .align 2, 0 -_080F3C18: .4byte gUnknown_083DFEC4 -_080F3C1C: .4byte 0x0000bc92 -_080F3C20: .4byte 0x00009348 -_080F3C24: - movs r0, 0 -_080F3C26: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F3BD4 - - thumb_func_start sub_80F3C2C -sub_80F3C2C: @ 80F3C2C - push {r4,lr} - ldr r0, _080F3C8C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F3C90 @ =0x00009348 - adds r4, r0, r1 - ldr r0, [r4] - cmp r0, 0 - beq _080F3C50 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldr r0, [r4] - bl DestroySprite - movs r0, 0 - str r0, [r4] -_080F3C50: - movs r4, 0 -_080F3C52: - adds r0, r4, 0 - adds r0, 0xB - lsls r0, 16 - lsrs r0, 16 - bl FreeSpriteTilesByTag - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0xB - bls _080F3C52 - movs r4, 0 -_080F3C6A: - adds r0, r4, 0 - adds r0, 0xA - lsls r0, 16 - lsrs r0, 16 - bl FreeSpritePaletteByTag - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _080F3C6A - bl sub_80F2F48 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F3C8C: .4byte gUnknown_083DFEC4 -_080F3C90: .4byte 0x00009348 - thumb_func_end sub_80F3C2C - - thumb_func_start sub_80F3C94 -sub_80F3C94: @ 80F3C94 - push {lr} - sub sp, 0x10 - ldr r0, _080F3CDC @ =gUnknown_083E4784 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - ldr r0, _080F3CE0 @ =gUnknown_083E478C - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x8] - str r1, [sp, 0xC] - mov r0, sp - bl LoadSpriteSheet - add r0, sp, 0x8 - bl LoadSpritePalette - movs r1, 0 - ldr r0, _080F3CE4 @ =gUnknown_083DFEC4 - ldr r0, [r0] - movs r3, 0x88 - lsls r3, 8 - adds r2, r0, r3 - movs r3, 0 -_080F3CC6: - lsls r0, r1, 2 - adds r0, r2, r0 - str r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x9 - bls _080F3CC6 - add sp, 0x10 - pop {r0} - bx r0 - .align 2, 0 -_080F3CDC: .4byte gUnknown_083E4784 -_080F3CE0: .4byte gUnknown_083E478C -_080F3CE4: .4byte gUnknown_083DFEC4 - thumb_func_end sub_80F3C94 - - thumb_func_start sub_80F3CE8 -sub_80F3CE8: @ 80F3CE8 - push {lr} - bl move_anim_execute - movs r0, 0x17 - bl FreeSpriteTilesByTag - movs r0, 0xF - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - thumb_func_end sub_80F3CE8 - - thumb_func_start sub_80F3D00 -sub_80F3D00: @ 80F3D00 - push {r4,r5,lr} - ldr r0, _080F3D34 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r1, _080F3D38 @ =0x000087dc - adds r0, r2, r1 - movs r3, 0 - ldrsh r0, [r0, r3] - lsls r0, 2 - ldr r1, _080F3D3C @ =0x0000893c - adds r0, r1 - adds r0, r2, r0 - ldrb r1, [r0, 0x3] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080F3D94 - ldr r3, _080F3D40 @ =0x00008fe9 - adds r0, r2, r3 - movs r1, 0 - ldrsb r1, [r0, r1] - ldr r3, _080F3D44 @ =0x00008931 - adds r0, r2, r3 - adds r0, r1 - ldrb r5, [r0] - movs r4, 0 - b _080F3D86 - .align 2, 0 -_080F3D34: .4byte gUnknown_083DFEC4 -_080F3D38: .4byte 0x000087dc -_080F3D3C: .4byte 0x0000893c -_080F3D40: .4byte 0x00008fe9 -_080F3D44: .4byte 0x00008931 -_080F3D48: - ldr r0, _080F3D9C @ =gSpriteTemplate_83E4800 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080F3D8C - ldr r0, _080F3DA0 @ =gUnknown_083DFEC4 - ldr r2, [r0] - lsls r0, r4, 2 - movs r3, 0x88 - lsls r3, 8 - adds r2, r3 - adds r2, r0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F3DA4 @ =gSprites - adds r0, r1 - str r0, [r2] - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 -_080F3D86: - adds r0, r5, 0x1 - cmp r4, r0 - blt _080F3D48 -_080F3D8C: - adds r0, r5, 0 - movs r1, 0x1 - bl sub_80F3F20 -_080F3D94: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F3D9C: .4byte gSpriteTemplate_83E4800 -_080F3DA0: .4byte gUnknown_083DFEC4 -_080F3DA4: .4byte gSprites - thumb_func_end sub_80F3D00 - - thumb_func_start move_anim_execute -move_anim_execute: @ 80F3DA8 - push {r4-r6,lr} - movs r5, 0 - ldr r0, _080F3DD8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - movs r1, 0x88 - lsls r1, 8 - adds r6, r0, r1 -_080F3DB6: - lsls r0, r5, 2 - adds r4, r6, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F3DD2 - bl DestroySprite - movs r0, 0 - str r0, [r4] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x9 - bls _080F3DB6 -_080F3DD2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F3DD8: .4byte gUnknown_083DFEC4 - thumb_func_end move_anim_execute - - thumb_func_start sub_80F3DDC -sub_80F3DDC: @ 80F3DDC - push {lr} - adds r1, r0, 0 - ldrh r0, [r1, 0x30] - adds r0, 0x1 - strh r0, [r1, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _080F3DFE - movs r0, 0 - strh r0, [r1, 0x30] - ldrh r0, [r1, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl sub_80F3F20 -_080F3DFE: - pop {r0} - bx r0 - thumb_func_end sub_80F3DDC - - thumb_func_start sub_80F3E04 -sub_80F3E04: @ 80F3E04 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080F3E1C - movs r0, 0 - strh r0, [r2, 0x30] - ldr r0, _080F3E20 @ =sub_80F3DDC - str r0, [r2, 0x1C] -_080F3E1C: - pop {r0} - bx r0 - .align 2, 0 -_080F3E20: .4byte sub_80F3DDC - thumb_func_end sub_80F3E04 - - thumb_func_start sub_80F3E24 -sub_80F3E24: @ 80F3E24 - push {r4,r5,lr} - adds r3, r0, 0 - ldr r0, _080F3E64 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F3E68 @ =0x00008768 - adds r4, r0, r1 - ldr r0, [r4] - cmp r0, 0 - beq _080F3E70 - ldrh r1, [r0, 0x24] - ldrh r0, [r0, 0x20] - adds r1, r0 - ldr r2, _080F3E6C @ =gUnknown_083E4794 - movs r5, 0x2E - ldrsh r0, [r3, r5] - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0] - adds r0, r1 - strh r0, [r3, 0x20] - ldr r0, [r4] - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r1, r0 - movs r4, 0x2E - ldrsh r0, [r3, r4] - lsls r0, 2 - adds r2, 0x2 - adds r0, r2 - ldrh r0, [r0] - adds r0, r1 - b _080F3E8E - .align 2, 0 -_080F3E64: .4byte gUnknown_083DFEC4 -_080F3E68: .4byte 0x00008768 -_080F3E6C: .4byte gUnknown_083E4794 -_080F3E70: - ldr r1, _080F3E98 @ =gUnknown_083E4794 - movs r5, 0x2E - ldrsh r0, [r3, r5] - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0] - adds r0, 0x28 - strh r0, [r3, 0x20] - movs r2, 0x2E - ldrsh r0, [r3, r2] - lsls r0, 2 - adds r1, 0x2 - adds r0, r1 - ldrh r0, [r0] - adds r0, 0x68 -_080F3E8E: - strh r0, [r3, 0x22] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F3E98: .4byte gUnknown_083E4794 - thumb_func_end sub_80F3E24 - - thumb_func_start sub_80F3E9C -sub_80F3E9C: @ 80F3E9C - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080F3ECA - subs r0, r1, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bne _080F3F14 - adds r0, r4, 0 - movs r1, 0 - bl SeekSpriteAnim - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080F3ECA: - adds r0, r4, 0 - bl sub_80F3E24 - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080F3F14 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x34 - ldrsh r1, [r4, r0] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080F3F10 - cmp r1, 0x9 - bne _080F3F08 - bl sub_80F3FAC - ldr r0, _080F3F04 @ =sub_80F3E04 - b _080F3F12 - .align 2, 0 -_080F3F04: .4byte sub_80F3E04 -_080F3F08: - ldr r0, _080F3F0C @ =sub_80F3DDC - b _080F3F12 - .align 2, 0 -_080F3F0C: .4byte sub_80F3DDC -_080F3F10: - ldr r0, _080F3F1C @ =SpriteCallbackDummy -_080F3F12: - str r0, [r4, 0x1C] -_080F3F14: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F3F1C: .4byte SpriteCallbackDummy - thumb_func_end sub_80F3E9C - - thumb_func_start sub_80F3F20 -sub_80F3F20: @ 80F3F20 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - movs r5, 0 - ldr r0, _080F3F6C @ =gUnknown_083DFEC4 - ldr r0, [r0] - movs r1, 0x88 - lsls r1, 8 - adds r7, r0, r1 -_080F3F3C: - lsls r0, r5, 2 - adds r4, r7, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F3F92 - strh r5, [r0, 0x2E] - ldr r1, [r4] - lsls r0, r5, 4 - adds r0, 0x1 - strh r0, [r1, 0x30] - ldr r0, [r4] - strh r6, [r0, 0x32] - ldr r0, [r4] - strh r5, [r0, 0x34] - mov r3, r8 - cmp r3, 0 - beq _080F3F62 - cmp r6, 0x9 - beq _080F3F74 -_080F3F62: - ldr r1, [r4] - ldr r0, _080F3F70 @ =sub_80F3E9C - str r0, [r1, 0x1C] - b _080F3F92 - .align 2, 0 -_080F3F6C: .4byte gUnknown_083DFEC4 -_080F3F70: .4byte sub_80F3E9C -_080F3F74: - ldr r0, [r4] - bl sub_80F3E24 - bl sub_80F3FAC - ldr r2, [r4] - ldr r0, _080F3FA8 @ =sub_80F3E04 - str r0, [r2, 0x1C] - adds r2, 0x3E - ldrb r0, [r2] - movs r3, 0x5 - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - strb r0, [r2] -_080F3F92: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x9 - bls _080F3F3C - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F3FA8: .4byte sub_80F3E04 - thumb_func_end sub_80F3F20 - - thumb_func_start sub_80F3FAC -sub_80F3FAC: @ 80F3FAC - push {r4-r7,lr} - movs r5, 0 - ldr r0, _080F3FEC @ =gUnknown_083DFEC4 - ldr r0, [r0] - movs r1, 0x88 - lsls r1, 8 - adds r6, r0, r1 - movs r0, 0x5 - negs r0, r0 - adds r7, r0, 0 -_080F3FC0: - lsls r0, r5, 2 - adds r4, r6, r0 - ldr r0, [r4] - cmp r0, 0 - beq _080F3FDA - movs r1, 0 - bl SeekSpriteAnim - ldr r1, [r4] - adds r1, 0x3E - ldrb r0, [r1] - ands r0, r7 - strb r0, [r1] -_080F3FDA: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x9 - bls _080F3FC0 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F3FEC: .4byte gUnknown_083DFEC4 - thumb_func_end sub_80F3FAC - - thumb_func_start sub_80F3FF0 -sub_80F3FF0: @ 80F3FF0 - push {lr} - ldr r0, _080F4018 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F401C @ =0x00000306 - adds r2, r0, r1 - movs r1, 0 - strh r1, [r2] - ldr r1, _080F4020 @ =0x00006dac - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F4012 -_080F4008: - bl sub_80F4024 - lsls r0, 24 - cmp r0, 0 - bne _080F4008 -_080F4012: - pop {r0} - bx r0 - .align 2, 0 -_080F4018: .4byte gUnknown_083DFEC4 -_080F401C: .4byte 0x00000306 -_080F4020: .4byte 0x00006dac - thumb_func_end sub_80F3FF0 - - thumb_func_start sub_80F4024 -sub_80F4024: @ 80F4024 - push {r4,lr} - sub sp, 0x10 - ldr r0, _080F4040 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F4044 @ =0x00000306 - adds r0, r4, r1 - ldrh r0, [r0] - cmp r0, 0x1 - beq _080F4068 - cmp r0, 0x1 - bgt _080F4048 - cmp r0, 0 - beq _080F4052 - b _080F4106 - .align 2, 0 -_080F4040: .4byte gUnknown_083DFEC4 -_080F4044: .4byte 0x00000306 -_080F4048: - cmp r0, 0x2 - beq _080F4084 - cmp r0, 0x3 - beq _080F40B8 - b _080F4106 -_080F4052: - ldr r0, _080F4060 @ =gUnknown_083E329C - ldr r2, _080F4064 @ =0x000131e4 - adds r1, r4, r2 - bl LZ77UnCompWram - b _080F4118 - .align 2, 0 -_080F4060: .4byte gUnknown_083E329C -_080F4064: .4byte 0x000131e4 -_080F4068: - ldr r1, _080F407C @ =0x000131e4 - adds r0, r4, r1 - str r0, [sp] - ldr r0, _080F4080 @ =0x00181000 - str r0, [sp, 0x4] - mov r0, sp - bl LoadSpriteSheet - b _080F4118 - .align 2, 0 -_080F407C: .4byte 0x000131e4 -_080F4080: .4byte 0x00181000 -_080F4084: - ldr r0, _080F40B4 @ =gUnknown_083E4818 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp, 0x8] - str r1, [sp, 0xC] - add r0, sp, 0x8 - bl LoadSpritePalette - movs r0, 0x10 - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xC2 - lsls r1, 2 - adds r2, r4, r1 - adds r0, 0x10 - movs r1, 0x1 - lsls r1, r0 - movs r0, 0x3 - negs r0, r0 - bics r0, r1 - str r0, [r2] - b _080F4118 - .align 2, 0 -_080F40B4: .4byte gUnknown_083E4818 -_080F40B8: - ldr r0, _080F40E4 @ =gSpriteTemplate_83E4850 - movs r1, 0xDA - movs r2, 0xE - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080F40F0 - ldr r0, _080F40E8 @ =0x00006d98 - adds r2, r4, r0 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F40EC @ =gSprites - adds r0, r1 - str r0, [r2] - movs r1, 0 - strh r1, [r0, 0x2E] - b _080F40F8 - .align 2, 0 -_080F40E4: .4byte gSpriteTemplate_83E4850 -_080F40E8: .4byte 0x00006d98 -_080F40EC: .4byte gSprites -_080F40F0: - ldr r2, _080F410C @ =0x00006d98 - adds r1, r4, r2 - movs r0, 0 - str r0, [r1] -_080F40F8: - ldr r0, _080F4110 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F4114 @ =0x00000306 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F4106: - movs r0, 0 - b _080F4128 - .align 2, 0 -_080F410C: .4byte 0x00006d98 -_080F4110: .4byte gUnknown_083DFEC4 -_080F4114: .4byte 0x00000306 -_080F4118: - ldr r0, _080F4130 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F4134 @ =0x00000306 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0x1 -_080F4128: - add sp, 0x10 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F4130: .4byte gUnknown_083DFEC4 -_080F4134: .4byte 0x00000306 - thumb_func_end sub_80F4024 - - thumb_func_start sub_80F4138 -sub_80F4138: @ 80F4138 - push {lr} - adds r2, r0, 0 - ldr r0, _080F4170 @ =gUnknown_083DFEC4 - ldr r0, [r0] - movs r1, 0xC3 - lsls r1, 2 - adds r0, r1 - ldrh r0, [r0] - negs r0, r0 - strh r0, [r2, 0x26] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bgt _080F4174 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _080F418E - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] - movs r0, 0x1 - b _080F418C - .align 2, 0 -_080F4170: .4byte gUnknown_083DFEC4 -_080F4174: - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0x1 - bne _080F418E - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r3] - movs r0, 0 -_080F418C: - strh r0, [r2, 0x2E] -_080F418E: - pop {r0} - bx r0 - thumb_func_end sub_80F4138 - - thumb_func_start sub_80F4194 -sub_80F4194: @ 80F4194 - push {r4-r7,lr} - sub sp, 0x4 - adds r7, r0, 0 - adds r2, r1, 0 - ldr r0, _080F42A4 @ =gUnknown_083DFEC8 - ldr r6, [r0] - mov r0, sp - ldr r1, _080F42A8 @ =0x00001111 - adds r5, r1, 0 - strh r5, [r0] - ldr r4, _080F42AC @ =0x040000d4 - str r0, [r4] - str r6, [r4, 0x4] - ldr r3, _080F42B0 @ =0x81000140 - str r3, [r4, 0x8] - ldr r0, [r4, 0x8] - movs r0, 0x80 - lsls r0, 3 - adds r1, r6, r0 - mov r0, sp - strh r5, [r0] - str r0, [r4] - str r1, [r4, 0x4] - str r3, [r4, 0x8] - ldr r0, [r4, 0x8] - ldr r0, _080F42B4 @ =gWindowTemplate_81E70F0 - adds r1, r6, 0 - bl Text_InitWindow8004E3C - movs r3, 0x88 - lsls r3, 2 - adds r1, r6, r3 - mov r0, sp - movs r3, 0 - strh r3, [r0] - str r0, [r4] - str r1, [r4, 0x4] - ldr r2, _080F42B8 @ =0x81000030 - str r2, [r4, 0x8] - ldr r0, [r4, 0x8] - movs r0, 0xC4 - lsls r0, 3 - adds r1, r6, r0 - mov r0, sp - strh r3, [r0] - str r0, [r4] - str r1, [r4, 0x4] - str r2, [r4, 0x8] - ldr r0, [r4, 0x8] - movs r1, 0x80 - lsls r1, 2 - adds r2, r6, r1 - ldr r0, [r2] - ldr r1, _080F42BC @ =0x0fffffff - ands r0, r1 - str r0, [r2] - ldr r0, [r2, 0x4] - ands r0, r1 - str r0, [r2, 0x4] - ldr r0, [r2, 0x8] - ands r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0xC] - ands r0, r1 - str r0, [r2, 0xC] - ldr r0, [r2, 0x10] - ands r0, r1 - str r0, [r2, 0x10] - ldr r0, [r2, 0x14] - ands r0, r1 - str r0, [r2, 0x14] - ldr r0, [r2, 0x18] - ands r0, r1 - str r0, [r2, 0x18] - ldr r0, [r2, 0x1C] - ands r0, r1 - str r0, [r2, 0x1C] - movs r3, 0xC0 - lsls r3, 3 - adds r2, r6, r3 - ldr r0, [r2] - ands r0, r1 - str r0, [r2] - ldr r0, [r2, 0x4] - ands r0, r1 - str r0, [r2, 0x4] - ldr r0, [r2, 0x8] - ands r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0xC] - ands r0, r1 - str r0, [r2, 0xC] - ldr r0, [r2, 0x10] - ands r0, r1 - str r0, [r2, 0x10] - ldr r0, [r2, 0x14] - ands r0, r1 - str r0, [r2, 0x14] - ldr r0, [r2, 0x18] - ands r0, r1 - str r0, [r2, 0x18] - ldr r0, [r2, 0x1C] - ands r0, r1 - str r0, [r2, 0x1C] - movs r1, 0 - ldr r2, _080F42C0 @ =0x80000040 -_080F4268: - lsls r0, r1, 7 - adds r0, r6, r0 - str r0, [r4] - lsls r0, r1, 8 - adds r0, r7, r0 - str r0, [r4, 0x4] - str r2, [r4, 0x8] - ldr r0, [r4, 0x8] - lsls r0, r1, 7 - movs r3, 0x80 - lsls r3, 3 - adds r0, r3 - adds r0, r6, r0 - str r0, [r4] - lsls r0, r1, 3 - adds r0, 0x4 - lsls r0, 5 - adds r0, r7, r0 - str r0, [r4, 0x4] - str r2, [r4, 0x8] - ldr r0, [r4, 0x8] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080F4268 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F42A4: .4byte gUnknown_083DFEC8 -_080F42A8: .4byte 0x00001111 -_080F42AC: .4byte 0x040000d4 -_080F42B0: .4byte 0x81000140 -_080F42B4: .4byte gWindowTemplate_81E70F0 -_080F42B8: .4byte 0x81000030 -_080F42BC: .4byte 0x0fffffff -_080F42C0: .4byte 0x80000040 - thumb_func_end sub_80F4194 - - thumb_func_start sub_80F42C4 -sub_80F42C4: @ 80F42C4 - push {r4-r7,lr} - sub sp, 0x8 - adds r1, r0, 0 - ldr r0, _080F433C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F4340 @ =0x0000d1e4 - adds r0, r2 - str r0, [sp] - ldr r2, _080F4344 @ =0x001a0500 - str r2, [sp, 0x4] - bl sub_80F4194 - mov r0, sp - bl LoadSpriteSheet - ldr r0, _080F4348 @ =gUnknown_083E4868 - bl LoadSpritePalette - movs r5, 0 - movs r4, 0 - ldr r6, _080F434C @ =gSprites -_080F42EE: - lsls r1, r4, 21 - movs r7, 0xE2 - lsls r7, 15 - adds r1, r7 - asrs r1, 16 - ldr r0, _080F4350 @ =gSpriteTemplate_83E4878 - movs r2, 0x10 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _080F4360 - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - adds r3, r6 - ldrh r2, [r3, 0x4] - lsls r0, r2, 22 - lsrs r0, 22 - adds r0, r5, r0 - ldr r7, _080F4354 @ =0x000003ff - adds r1, r7, 0 - ands r0, r1 - ldr r7, _080F4358 @ =0xfffffc00 - adds r1, r7, 0 - ands r2, r1 - orrs r2, r0 - strh r2, [r3, 0x4] - ldr r0, _080F433C @ =gUnknown_083DFEC4 - ldr r0, [r0] - lsls r1, r4, 2 - ldr r2, _080F435C @ =0x0000ced4 - adds r0, r2 - adds r0, r1 - str r3, [r0] - b _080F4370 - .align 2, 0 -_080F433C: .4byte gUnknown_083DFEC4 -_080F4340: .4byte 0x0000d1e4 -_080F4344: .4byte 0x001a0500 -_080F4348: .4byte gUnknown_083E4868 -_080F434C: .4byte gSprites -_080F4350: .4byte gSpriteTemplate_83E4878 -_080F4354: .4byte 0x000003ff -_080F4358: .4byte 0xfffffc00 -_080F435C: .4byte 0x0000ced4 -_080F4360: - ldr r0, _080F438C @ =gUnknown_083DFEC4 - ldr r1, [r0] - lsls r0, r4, 2 - ldr r7, _080F4390 @ =0x0000ced4 - adds r1, r7 - adds r1, r0 - movs r0, 0 - str r0, [r1] -_080F4370: - adds r0, r5, 0 - adds r0, 0x8 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _080F42EE - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F438C: .4byte gUnknown_083DFEC4 -_080F4390: .4byte 0x0000ced4 - thumb_func_end sub_80F42C4 - - thumb_func_start sub_80F4394 -sub_80F4394: @ 80F4394 - push {r4,r5,lr} - movs r4, 0 - ldr r0, _080F43CC @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F43D0 @ =0x0000ced4 - adds r5, r0, r1 -_080F43A0: - lsls r0, r4, 2 - adds r0, r5, r0 - ldr r0, [r0] - cmp r0, 0 - beq _080F43AE - bl DestroySprite -_080F43AE: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _080F43A0 - movs r0, 0x1A - bl FreeSpriteTilesByTag - movs r0, 0x12 - bl FreeSpritePaletteByTag - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F43CC: .4byte gUnknown_083DFEC4 -_080F43D0: .4byte 0x0000ced4 - thumb_func_end sub_80F4394 - - thumb_func_start sub_80F43D4 -sub_80F43D4: @ 80F43D4 - push {r4,lr} - adds r1, r0, 0 - ldr r0, _080F4410 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F4414 @ =0x0000d1e4 - adds r4, r0, r2 - adds r0, r4, 0 - bl sub_80F4194 - movs r0, 0x1A - bl GetSpriteTileStartByTag - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _080F4418 @ =0x0000ffff - cmp r1, r0 - beq _080F4408 - lsls r0, r1, 5 - ldr r1, _080F441C @ =0x06010000 - adds r0, r1 - ldr r1, _080F4420 @ =0x040000d4 - str r4, [r1] - str r0, [r1, 0x4] - ldr r0, _080F4424 @ =0x84000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] -_080F4408: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F4410: .4byte gUnknown_083DFEC4 -_080F4414: .4byte 0x0000d1e4 -_080F4418: .4byte 0x0000ffff -_080F441C: .4byte 0x06010000 -_080F4420: .4byte 0x040000d4 -_080F4424: .4byte 0x84000140 - thumb_func_end sub_80F43D4 - - thumb_func_start sub_80F4428 -sub_80F4428: @ 80F4428 - push {lr} - lsls r1, 16 - lsrs r1, 16 - lsls r2, 24 - lsrs r2, 24 - bl sub_80F6514 - pop {r1} - bx r1 - thumb_func_end sub_80F4428 - - thumb_func_start sub_80F443C -sub_80F443C: @ 80F443C - push {r4,lr} - lsls r4, r1, 16 - lsrs r4, 16 - ldr r1, _080F4458 @ =gOtherText_Number - bl StringCopy - adds r1, r4, 0 - movs r2, 0x38 - movs r3, 0x1 - bl AlignInt1InMenuWindow - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F4458: .4byte gOtherText_Number - thumb_func_end sub_80F443C - - thumb_func_start sub_80F445C -sub_80F445C: @ 80F445C - push {r4,lr} - lsls r1, 16 - lsrs r1, 16 - movs r2, 0x17 - movs r3, 0x1 - bl AlignInt1InMenuWindow - adds r4, r0, 0 - movs r3, 0xFC - strb r3, [r4] - movs r2, 0x11 - strb r2, [r4, 0x1] - movs r1, 0x1 - strb r1, [r4, 0x2] - adds r4, 0x3 - movs r0, 0xBA - strb r0, [r4] - adds r4, 0x1 - strb r3, [r4] - strb r2, [r4, 0x1] - strb r1, [r4, 0x2] - adds r4, 0x3 - ldr r0, _080F44A8 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F44AC @ =0x00008774 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r1, 0x1 - adds r0, r4, 0 - movs r2, 0x32 - movs r3, 0x1 - bl AlignInt1InMenuWindow - adds r4, r0, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F44A8: .4byte gUnknown_083DFEC4 -_080F44AC: .4byte 0x00008774 - thumb_func_end sub_80F445C - - thumb_func_start sub_80F44B0 -sub_80F44B0: @ 80F44B0 - push {r4,lr} - adds r4, r2, 0 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r2, r1, 16 - cmp r0, 0xE - bne _080F44F4 - cmp r4, 0x2 - beq _080F44C8 - cmp r4, 0x7 - bne _080F44E0 -_080F44C8: - movs r0, 0x64 - muls r0, r2 - ldr r1, _080F44DC @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - adds r2, r3, 0 - bl GetMonData - b _080F453C - .align 2, 0 -_080F44DC: .4byte gPlayerParty -_080F44E0: - movs r0, 0x64 - muls r0, r2 - ldr r1, _080F44F0 @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - bl GetMonData - b _080F453C - .align 2, 0 -_080F44F0: .4byte gPlayerParty -_080F44F4: - cmp r4, 0x2 - beq _080F44FC - cmp r4, 0x7 - bne _080F4520 -_080F44FC: - lsls r1, r0, 2 - adds r1, r0 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 5 - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 4 - ldr r2, _080F451C @ =gPokemonStorage + 0x4 - adds r1, r2 - adds r0, r1 - adds r1, r4, 0 - adds r2, r3, 0 - bl GetBoxMonData - b _080F453C - .align 2, 0 -_080F451C: .4byte gPokemonStorage + 0x4 -_080F4520: - lsls r1, r0, 2 - adds r1, r0 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 5 - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 4 - ldr r2, _080F4544 @ =gPokemonStorage + 0x4 - adds r1, r2 - adds r0, r1 - adds r1, r4, 0 - bl GetBoxMonData -_080F453C: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F4544: .4byte gPokemonStorage + 0x4 - thumb_func_end sub_80F44B0 - - thumb_func_start sub_80F4548 -sub_80F4548: @ 80F4548 - push {r4,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - mov r0, sp - strb r2, [r0] - cmp r3, 0xE - bne _080F4574 - movs r0, 0x64 - muls r0, r4 - ldr r1, _080F4570 @ =gPlayerParty - adds r0, r1 - movs r1, 0x8 - mov r2, sp - bl SetMonData - b _080F4592 - .align 2, 0 -_080F4570: .4byte gPlayerParty -_080F4574: - lsls r1, r3, 2 - adds r1, r3 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 5 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 4 - ldr r2, _080F459C @ =gPokemonStorage + 0x4 - adds r1, r2 - adds r0, r1 - movs r1, 0x8 - mov r2, sp - bl SetBoxMonData -_080F4592: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F459C: .4byte gPokemonStorage + 0x4 - thumb_func_end sub_80F4548 - - thumb_func_start sub_80F45A0 -sub_80F45A0: @ 80F45A0 - push {r4-r7,lr} - lsls r1, 24 - lsrs r6, r1, 24 - ldr r1, _080F45F0 @ =gUnknown_083DFEC4 - ldr r5, [r1] - lsls r1, r0, 16 - asrs r0, r1, 14 - adds r4, r5, r0 - ldr r2, _080F45F4 @ =0x0000893f - adds r0, r4, r2 - ldrb r0, [r0] - lsls r0, 25 - lsrs r7, r0, 31 - cmp r7, 0 - beq _080F4644 - lsls r0, r6, 6 - ldr r2, _080F45F8 @ =0x00008829 - adds r0, r2 - adds r0, r5, r0 - lsrs r1, 16 - movs r2, 0 - bl sub_80F4428 - ldr r1, _080F45FC @ =0x0000893d - adds r0, r4, r1 - ldrb r2, [r0] - cmp r2, 0xE - bne _080F4608 - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 3 - ldr r2, _080F4600 @ =0x000088e9 - adds r0, r2 - adds r0, r5, r0 - ldr r1, _080F4604 @ =gOtherText_InParty - movs r2, 0x40 - movs r3, 0 - bl AlignStringInMenuWindow - b _080F4624 - .align 2, 0 -_080F45F0: .4byte gUnknown_083DFEC4 -_080F45F4: .4byte 0x0000893f -_080F45F8: .4byte 0x00008829 -_080F45FC: .4byte 0x0000893d -_080F4600: .4byte 0x000088e9 -_080F4604: .4byte gOtherText_InParty -_080F4608: - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 3 - ldr r1, _080F4634 @ =0x000088e9 - adds r0, r1 - adds r0, r5, r0 - lsls r1, r2, 3 - adds r1, r2 - ldr r2, _080F4638 @ =gPokemonStorage + 0x8344 - adds r1, r2 - movs r2, 0x40 - movs r3, 0 - bl AlignStringInMenuWindow -_080F4624: - ldr r0, _080F463C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F4640 @ =0x00008937 - adds r0, r2 - adds r0, r6 - movs r1, 0x1 - strb r1, [r0] - b _080F4676 - .align 2, 0 -_080F4634: .4byte 0x000088e9 -_080F4638: .4byte gPokemonStorage + 0x8344 -_080F463C: .4byte gUnknown_083DFEC4 -_080F4640: .4byte 0x00008937 -_080F4644: - lsls r0, r6, 6 - ldr r1, _080F467C @ =0x00008829 - adds r0, r1 - adds r0, r5, r0 - ldr r4, _080F4680 @ =gEmptyString_81E72B0 - adds r1, r4, 0 - movs r2, 0x68 - movs r3, 0 - bl AlignStringInMenuWindow - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 3 - ldr r2, _080F4684 @ =0x000088e9 - adds r0, r2 - adds r0, r5, r0 - adds r1, r4, 0 - movs r2, 0x40 - movs r3, 0 - bl AlignStringInMenuWindow - ldr r1, _080F4688 @ =0x00008937 - adds r0, r5, r1 - adds r0, r6 - strb r7, [r0] -_080F4676: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F467C: .4byte 0x00008829 -_080F4680: .4byte gEmptyString_81E72B0 -_080F4684: .4byte 0x000088e9 -_080F4688: .4byte 0x00008937 - thumb_func_end sub_80F45A0 - - thumb_func_start sub_80F468C -sub_80F468C: @ 80F468C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - ldr r1, _080F475C @ =gUnknown_083DFEC4 - ldr r7, [r1] - lsls r0, 16 - asrs r0, 14 - adds r1, r7, r0 - ldr r2, _080F4760 @ =0x0000893f - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, 25 - cmp r0, 0 - blt _080F46B2 - b _080F47C4 -_080F46B2: - ldr r3, _080F4764 @ =0x0000893d - adds r0, r1, r3 - ldrb r5, [r0] - subs r2, 0x1 - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, 27 - lsrs r6, r0, 27 - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x16 - movs r3, 0 - bl sub_80F44B0 - mov r3, r9 - lsls r3, 2 - mov r8, r3 - mov r4, r8 - add r4, r9 - ldr r2, _080F4768 @ =0x00008ff0 - adds r1, r7, r2 - adds r1, r4 - strb r0, [r1] - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x2F - movs r3, 0 - bl sub_80F44B0 - ldr r3, _080F476C @ =0x00008ff1 - adds r1, r7, r3 - adds r1, r4 - strb r0, [r1] - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x21 - movs r3, 0 - bl sub_80F44B0 - ldr r2, _080F4770 @ =0x00008ff2 - adds r1, r7, r2 - adds r1, r4 - strb r0, [r1] - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x18 - movs r3, 0 - bl sub_80F44B0 - ldr r3, _080F4774 @ =0x00008ff3 - adds r1, r7, r3 - adds r1, r4 - strb r0, [r1] - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x17 - movs r3, 0 - bl sub_80F44B0 - ldr r2, _080F4778 @ =0x00008ff4 - adds r1, r7, r2 - adds r1, r4 - strb r0, [r1] - ldr r3, _080F477C @ =0x00008931 - adds r0, r7, r3 - mov r7, r9 - adds r4, r0, r7 - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x30 - movs r3, 0 - bl sub_80F44B0 - cmp r0, 0xFF - beq _080F4780 - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x30 - movs r3, 0 - bl sub_80F44B0 - movs r1, 0x1D - bl __udivsi3 - b _080F4782 - .align 2, 0 -_080F475C: .4byte gUnknown_083DFEC4 -_080F4760: .4byte 0x0000893f -_080F4764: .4byte 0x0000893d -_080F4768: .4byte 0x00008ff0 -_080F476C: .4byte 0x00008ff1 -_080F4770: .4byte 0x00008ff2 -_080F4774: .4byte 0x00008ff3 -_080F4778: .4byte 0x00008ff4 -_080F477C: .4byte 0x00008931 -_080F4780: - movs r0, 0x9 -_080F4782: - strb r0, [r4] - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x8 - movs r3, 0 - bl sub_80F44B0 - ldr r1, _080F47B4 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r3, _080F47B8 @ =0x00008934 - adds r2, r1, r3 - add r2, r9 - strb r0, [r2] - mov r2, r8 - add r2, r9 - ldr r7, _080F47BC @ =0x00008ff0 - adds r0, r2, r7 - adds r0, r1, r0 - lsls r2, 2 - ldr r3, _080F47C0 @ =0x00009004 - adds r2, r3 - adds r1, r2 - bl sub_80F55AC - b _080F480A - .align 2, 0 -_080F47B4: .4byte gUnknown_083DFEC4 -_080F47B8: .4byte 0x00008934 -_080F47BC: .4byte 0x00008ff0 -_080F47C0: .4byte 0x00009004 -_080F47C4: - movs r3, 0 - mov r0, r9 - lsls r0, 2 - mov r8, r0 - adds r4, r7, 0 - mov r2, r8 - add r2, r9 - ldr r1, _080F4818 @ =0x00008ff0 - adds r6, r4, r1 - lsls r5, r2, 2 - mov r9, r3 - ldr r7, _080F481C @ =0x00009004 - mov r8, r7 - movs r0, 0x9B - mov r12, r0 -_080F47E2: - adds r0, r3, r2 - adds r0, r6, r0 - mov r1, r9 - strb r1, [r0] - lsls r0, r3, 2 - adds r0, r5 - adds r0, r4, r0 - mov r7, r8 - adds r1, r0, r7 - mov r7, r12 - strh r7, [r1] - ldr r1, _080F4820 @ =0x00009006 - adds r0, r1 - movs r1, 0x5B - strh r1, [r0] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x4 - bls _080F47E2 -_080F480A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F4818: .4byte 0x00008ff0 -_080F481C: .4byte 0x00009004 -_080F4820: .4byte 0x00009006 - thumb_func_end sub_80F468C - - thumb_func_start sub_80F4824 -sub_80F4824: @ 80F4824 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - ldr r1, _080F48E0 @ =gUnknown_083DFEC4 - ldr r7, [r1] - lsls r0, 16 - asrs r0, 14 - adds r1, r7, r0 - ldr r2, _080F48E4 @ =0x0000893f - adds r0, r1, r2 - ldrb r0, [r0] - lsls r0, 25 - cmp r0, 0 - bge _080F48D0 - ldr r6, _080F48E8 @ =0x0000893d - adds r0, r1, r6 - ldrb r6, [r0] - subs r2, 0x1 - adds r0, r1, r2 - ldrb r4, [r0] - lsls r4, 27 - lsrs r4, 27 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x41 - movs r3, 0 - bl sub_80F44B0 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x1 - movs r3, 0 - bl sub_80F44B0 - mov r8, r0 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl sub_80F44B0 - adds r4, r0, 0 - lsls r0, r5, 3 - ldr r1, _080F48EC @ =gMonFrontPicTable - adds r0, r1 - ldr r2, _080F48F0 @ =gMonFrontPicCoords - lsls r1, r5, 2 - adds r1, r2 - ldrb r1, [r1] - ldr r6, _080F48F4 @ =0x000131e4 - adds r3, r7, r6 - mov r6, r9 - lsls r2, r6, 13 - ldr r6, _080F48F8 @ =0x0000d1e4 - adds r2, r6 - adds r2, r7, r2 - str r2, [sp] - str r5, [sp, 0x4] - str r4, [sp, 0x8] - movs r2, 0x1 - bl HandleLoadSpecialPokePic - adds r0, r5, 0 - mov r1, r8 - adds r2, r4, 0 - bl GetMonSpritePalFromOtIdPersonality - mov r2, r9 - lsls r1, r2, 7 - adds r1, r7, r1 - bl LZ77UnCompWram - mov r6, r9 - lsls r1, r6, 1 - ldr r2, _080F48FC @ =0x0000d1d6 - adds r0, r7, r2 - adds r0, r1 - strh r5, [r0] -_080F48D0: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F48E0: .4byte gUnknown_083DFEC4 -_080F48E4: .4byte 0x0000893f -_080F48E8: .4byte 0x0000893d -_080F48EC: .4byte gMonFrontPicTable -_080F48F0: .4byte gMonFrontPicCoords -_080F48F4: .4byte 0x000131e4 -_080F48F8: .4byte 0x0000d1e4 -_080F48FC: .4byte 0x0000d1d6 - thumb_func_end sub_80F4824 - - thumb_func_start sub_80F4900 -sub_80F4900: @ 80F4900 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80F45A0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80F468C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80F4824 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80F4900 - - thumb_func_start sub_80F492C -sub_80F492C: @ 80F492C - ldr r0, _080F493C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F4940 @ =0x00008fe4 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - bx lr - .align 2, 0 -_080F493C: .4byte gUnknown_083DFEC4 -_080F4940: .4byte 0x00008fe4 - thumb_func_end sub_80F492C - - thumb_func_start sub_80F4944 -sub_80F4944: @ 80F4944 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r12, r0 - movs r2, 0 - ldr r1, _080F4978 @ =gUnknown_083DFEC4 - ldr r5, [r1] - ldr r3, _080F497C @ =0x00008fe4 - adds r0, r5, r3 - ldrh r4, [r0] - lsrs r3, r4, 1 - mov r8, r1 - cmp r4, r3 - beq _080F499C - adds r6, r5, 0 - mov r0, r12 - ldrb r5, [r0] - ldr r7, _080F4980 @ =0x0000893c -_080F4968: - lsls r0, r3, 2 - adds r0, r6, r0 - adds r0, r7 - ldrb r0, [r0] - cmp r5, r0 - bls _080F4984 - adds r4, r3, 0 - b _080F498A - .align 2, 0 -_080F4978: .4byte gUnknown_083DFEC4 -_080F497C: .4byte 0x00008fe4 -_080F4980: .4byte 0x0000893c -_080F4984: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 -_080F498A: - subs r0, r4, r2 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - adds r0, r2, r0 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r4, r3 - bne _080F4968 -_080F499C: - mov r1, r8 - ldr r2, [r1] - ldr r1, _080F49EC @ =0x00008fe4 - adds r0, r2, r1 - ldrh r4, [r0] - lsls r6, r3, 2 - cmp r4, r3 - bls _080F49C6 - ldr r0, _080F49F0 @ =0x0000893c - adds r5, r2, r0 -_080F49B0: - lsls r2, r4, 2 - adds r2, r5, r2 - subs r1, r4, 0x1 - lsls r0, r1, 2 - adds r0, r5, r0 - ldr r0, [r0] - str r0, [r2] - lsls r1, 16 - lsrs r4, r1, 16 - cmp r4, r3 - bhi _080F49B0 -_080F49C6: - mov r1, r8 - ldr r2, [r1] - ldr r3, _080F49F0 @ =0x0000893c - adds r0, r2, r3 - adds r0, r6 - mov r3, r12 - ldr r1, [r3] - str r1, [r0] - ldr r0, _080F49EC @ =0x00008fe4 - adds r2, r0 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F49EC: .4byte 0x00008fe4 -_080F49F0: .4byte 0x0000893c - thumb_func_end sub_80F4944 - - thumb_func_start sub_80F49F4 -sub_80F49F4: @ 80F49F4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r3, _080F4A64 @ =gUnknown_083DFEC4 - ldr r4, [r3] - ldr r7, _080F4A68 @ =0x0000893e - adds r2, r4, r7 - ldrh r1, [r2] - ldr r0, _080F4A6C @ =0xffffc01f - mov r12, r0 - ands r0, r1 - movs r1, 0x20 - orrs r0, r1 - strh r0, [r2] - movs r5, 0x1 - ldr r1, _080F4A70 @ =0x00008fe4 - adds r0, r4, r1 - ldrh r3, [r0] - cmp r5, r3 - bcs _080F4A9E - adds r6, r4, 0 - ldr r1, _080F4A74 @ =0x0000893c - mov r8, r1 - ldr r3, _080F4A78 @ =0x000001ff - mov r10, r3 - mov r9, r0 -_080F4A2C: - lsls r0, r5, 2 - adds r3, r6, r0 - mov r0, r8 - adds r2, r3, r0 - subs r0, r5, 0x1 - lsls r0, 2 - adds r4, r6, r0 - mov r0, r8 - adds r1, r4, r0 - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - bne _080F4A7C - adds r0, r4, r7 - ldrh r0, [r0] - lsls r0, 18 - lsrs r0, 23 - adds r3, r7 - ldr r1, _080F4A78 @ =0x000001ff - ands r1, r0 - lsls r1, 5 - ldrh r2, [r3] - mov r0, r12 - ands r0, r2 - orrs r0, r1 - strh r0, [r3] - adds r4, r5, 0x1 - b _080F4A92 - .align 2, 0 -_080F4A64: .4byte gUnknown_083DFEC4 -_080F4A68: .4byte 0x0000893e -_080F4A6C: .4byte 0xffffc01f -_080F4A70: .4byte 0x00008fe4 -_080F4A74: .4byte 0x0000893c -_080F4A78: .4byte 0x000001ff -_080F4A7C: - adds r4, r5, 0x1 - adds r3, r7 - adds r1, r4, 0 - mov r0, r10 - ands r1, r0 - lsls r1, 5 - ldrh r2, [r3] - mov r0, r12 - ands r0, r2 - orrs r0, r1 - strh r0, [r3] -_080F4A92: - lsls r0, r4, 16 - lsrs r5, r0, 16 - mov r1, r9 - ldrh r1, [r1] - cmp r5, r1 - bcc _080F4A2C -_080F4A9E: - ldr r3, _080F4AC4 @ =gUnknown_083DFEC4 - ldr r2, [r3] - ldr r1, _080F4AC8 @ =0x0000876c - adds r0, r2, r1 - movs r1, 0 - strh r1, [r0] - ldr r3, _080F4ACC @ =0x00008770 - adds r0, r2, r3 - strh r1, [r0] - subs r3, 0x2 - adds r0, r2, r3 - strh r1, [r0] - ldr r1, _080F4AD0 @ =0x00008fe4 - adds r0, r2, r1 - ldrh r0, [r0] - cmp r0, 0x8 - bhi _080F4AD4 - subs r1, r0, 0x1 - b _080F4AD6 - .align 2, 0 -_080F4AC4: .4byte gUnknown_083DFEC4 -_080F4AC8: .4byte 0x0000876c -_080F4ACC: .4byte 0x00008770 -_080F4AD0: .4byte 0x00008fe4 -_080F4AD4: - movs r1, 0x7 -_080F4AD6: - ldr r3, _080F4B10 @ =0x00008772 - adds r0, r2, r3 - strh r1, [r0] - ldr r0, _080F4B14 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r1, _080F4B18 @ =0x00008fe4 - adds r0, r2, r1 - ldrh r0, [r0] - subs r0, 0x1 - adds r3, 0x2 - adds r1, r2, r3 - strh r0, [r1] - movs r1, 0 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - ble _080F4AFA - movs r1, 0x1 -_080F4AFA: - ldr r3, _080F4B1C @ =0x000087c9 - adds r0, r2, r3 - strb r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F4B10: .4byte 0x00008772 -_080F4B14: .4byte gUnknown_083DFEC4 -_080F4B18: .4byte 0x00008fe4 -_080F4B1C: .4byte 0x000087c9 - thumb_func_end sub_80F49F4 - - thumb_func_start sub_80F4B20 -sub_80F4B20: @ 80F4B20 - push {r4-r6,lr} - ldr r0, _080F4B5C @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F4B60 @ =0x000087dc - adds r5, r4, r0 - movs r1, 0 - ldrsh r0, [r5, r1] - movs r1, 0 - bl sub_80F4900 - movs r0, 0 - bl sub_80F2E18 - ldr r0, _080F4B64 @ =0x000087da - adds r2, r4, r0 - movs r1, 0 - ldrsh r0, [r2, r1] - cmp r0, 0x1 - bne _080F4B6C - ldr r2, _080F4B68 @ =0x00008fe9 - adds r0, r4, r2 - movs r1, 0 - strb r1, [r0] - adds r2, 0x1 - adds r0, r4, r2 - strb r1, [r0] - adds r2, 0x1 - adds r0, r4, r2 - strb r1, [r0] - b _080F4BBE - .align 2, 0 -_080F4B5C: .4byte gUnknown_083DFEC4 -_080F4B60: .4byte 0x000087dc -_080F4B64: .4byte 0x000087da -_080F4B68: .4byte 0x00008fe9 -_080F4B6C: - ldr r0, _080F4BC4 @ =0x00008fe9 - adds r1, r4, r0 - movs r0, 0 - strb r0, [r1] - ldr r0, _080F4BC8 @ =0x00008fea - adds r1, r4, r0 - movs r0, 0x1 - strb r0, [r1] - ldr r0, _080F4BCC @ =0x00008feb - adds r1, r4, r0 - movs r0, 0x2 - strb r0, [r1] - ldrh r3, [r5] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - asrs r0, 16 - ldrh r6, [r2] - movs r4, 0 - ldrsh r1, [r2, r4] - cmp r0, r1 - blt _080F4B9A - movs r5, 0 -_080F4B9A: - subs r0, r3, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r0, 0 - bge _080F4BAA - subs r0, r6, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 -_080F4BAA: - lsls r0, r5, 16 - asrs r0, 16 - movs r1, 0x1 - bl sub_80F4900 - lsls r0, r4, 16 - asrs r0, 16 - movs r1, 0x2 - bl sub_80F4900 -_080F4BBE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080F4BC4: .4byte 0x00008fe9 -_080F4BC8: .4byte 0x00008fea -_080F4BCC: .4byte 0x00008feb - thumb_func_end sub_80F4B20 - - thumb_func_start sub_80F4BD0 -sub_80F4BD0: @ 80F4BD0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - movs r7, 0 - ldr r0, _080F4CC4 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r3, _080F4CC8 @ =0x00008828 - adds r1, r2, r3 - mov r9, r0 - ldrb r1, [r1] - cmp r7, r1 - bcs _080F4C66 - mov r10, r9 - adds r4, r3, 0 - adds r4, r2 - mov r8, r4 -_080F4BF6: - movs r0, 0x64 - muls r0, r6 - ldr r1, _080F4CCC @ =gPlayerParty - adds r0, r1 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080F4C58 - mov r0, r10 - ldr r3, [r0] - lsls r0, r7, 2 - adds r3, r0 - ldr r2, _080F4CD0 @ =0x0000893d - adds r1, r3, r2 - movs r0, 0xE - strb r0, [r1] - ldr r4, _080F4CD4 @ =0x0000893e - adds r5, r3, r4 - movs r0, 0x1F - adds r2, r6, 0 - ands r2, r0 - ldrb r0, [r5] - movs r4, 0x20 - negs r4, r4 - adds r1, r4, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5] - adds r4, r7, 0x1 - ldr r7, _080F4CD8 @ =0x000001ff - adds r0, r7, 0 - adds r2, r4, 0 - ands r2, r0 - lsls r2, 5 - ldrh r0, [r5] - ldr r7, _080F4CDC @ =0xffffc01f - adds r1, r7, 0 - ands r0, r1 - orrs r0, r2 - strh r0, [r5] - ldr r0, _080F4CE0 @ =0x0000893f - adds r3, r0 - ldrb r0, [r3] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r3] - lsls r4, 16 - lsrs r7, r4, 16 -_080F4C58: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - mov r1, r8 - ldrb r1, [r1] - cmp r6, r1 - bcc _080F4BF6 -_080F4C66: - mov r2, r9 - ldr r4, [r2] - lsls r1, r7, 2 - adds r1, r4, r1 - ldr r3, _080F4CD0 @ =0x0000893d - adds r0, r1, r3 - movs r5, 0 - strb r5, [r0] - ldr r0, _080F4CD4 @ =0x0000893e - adds r2, r1, r0 - ldrb r3, [r2] - movs r0, 0x20 - negs r0, r0 - ands r0, r3 - strb r0, [r2] - ldrh r3, [r2] - ldr r0, _080F4CDC @ =0xffffc01f - ands r0, r3 - strh r0, [r2] - ldr r2, _080F4CE0 @ =0x0000893f - adds r1, r2 - ldrb r2, [r1] - movs r0, 0x41 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r3, _080F4CE4 @ =0x000087dc - adds r0, r4, r3 - strh r5, [r0] - adds r1, r7, 0x1 - ldr r7, _080F4CE8 @ =0x000087da - adds r0, r4, r7 - strh r1, [r0] - bl sub_80F4B20 - ldr r0, _080F4CEC @ =0x000087cb - adds r4, r0 - movs r0, 0x1 - strb r0, [r4] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F4CC4: .4byte gUnknown_083DFEC4 -_080F4CC8: .4byte 0x00008828 -_080F4CCC: .4byte gPlayerParty -_080F4CD0: .4byte 0x0000893d -_080F4CD4: .4byte 0x0000893e -_080F4CD8: .4byte 0x000001ff -_080F4CDC: .4byte 0xffffc01f -_080F4CE0: .4byte 0x0000893f -_080F4CE4: .4byte 0x000087dc -_080F4CE8: .4byte 0x000087da -_080F4CEC: .4byte 0x000087cb - thumb_func_end sub_80F4BD0 - - thumb_func_start sub_80F4CF0 -sub_80F4CF0: @ 80F4CF0 - push {r4,lr} - ldr r0, _080F4D1C @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F4D20 @ =0x0000876e - adds r0, r4, r1 - ldrh r1, [r0] - ldr r2, _080F4D24 @ =0x000087dc - adds r0, r4, r2 - strh r1, [r0] - bl sub_80F4B20 - ldr r1, _080F4D28 @ =0x00008774 - adds r0, r4, r1 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bne _080F4D30 - ldr r0, _080F4D2C @ =0x000087cb - adds r1, r4, r0 - movs r0, 0 - b _080F4D36 - .align 2, 0 -_080F4D1C: .4byte gUnknown_083DFEC4 -_080F4D20: .4byte 0x0000876e -_080F4D24: .4byte 0x000087dc -_080F4D28: .4byte 0x00008774 -_080F4D2C: .4byte 0x000087cb -_080F4D30: - ldr r2, _080F4D40 @ =0x000087cb - adds r1, r4, r2 - movs r0, 0x1 -_080F4D36: - strb r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F4D40: .4byte 0x000087cb - thumb_func_end sub_80F4CF0 - - thumb_func_start sub_80F4D44 -sub_80F4D44: @ 80F4D44 - push {r4,lr} - ldr r0, _080F4D78 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F4D7C @ =0x00008fe6 - adds r0, r4, r1 - movs r1, 0 - strb r1, [r0] - ldr r2, _080F4D80 @ =0x00008fe7 - adds r0, r4, r2 - strb r1, [r0] - bl sub_80F492C - ldr r0, _080F4D84 @ =0x00006dac - adds r4, r0 - ldrb r0, [r4] - cmp r0, 0 - bne _080F4D70 -_080F4D66: - bl sub_80F4D88 - lsls r0, 24 - cmp r0, 0 - bne _080F4D66 -_080F4D70: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F4D78: .4byte gUnknown_083DFEC4 -_080F4D7C: .4byte 0x00008fe6 -_080F4D80: .4byte 0x00008fe7 -_080F4D84: .4byte 0x00006dac - thumb_func_end sub_80F4D44 - - thumb_func_start sub_80F4D88 -sub_80F4D88: @ 80F4D88 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - ldr r6, _080F4E98 @ =gUnknown_083DFEC4 - ldr r4, [r6] - ldr r1, _080F4E9C @ =0x00008fe6 - adds r0, r4, r1 - ldrb r3, [r0] - cmp r3, 0xE - bne _080F4DA4 - b _080F4EB8 -_080F4DA4: - cmp r3, 0xF - bne _080F4DAA - b _080F4F60 -_080F4DAA: - movs r1, 0x80 - lsls r1, 23 - ldr r0, [sp] - orrs r0, r1 - str r0, [sp] - movs r7, 0 - mov r10, r6 - ldr r2, _080F4E9C @ =0x00008fe6 - adds r6, r4, r2 - ldr r3, _080F4EA0 @ =0x00008fe7 - adds r5, r4, r3 - ldr r0, _080F4EA4 @ =0x000087d8 - adds r0, r4 - mov r9, r0 - ldr r1, _080F4EA8 @ =gPokemonStorage + 0x4 - mov r8, r1 -_080F4DCA: - ldrb r0, [r6] - lsls r1, r0, 2 - adds r1, r0 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 5 - ldrb r2, [r5] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 4 - add r1, r8 - adds r0, r1 - movs r1, 0xB - bl GetBoxMonData - cmp r0, 0 - beq _080F4E60 - ldrb r0, [r6] - lsls r1, r0, 2 - adds r1, r0 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 5 - ldrb r2, [r5] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 4 - add r1, r8 - adds r0, r1 - movs r1, 0x2D - bl GetBoxMonData - cmp r0, 0 - bne _080F4E60 - ldrb r1, [r6] - lsls r1, 8 - ldr r2, _080F4EAC @ =0xffff00ff - ldr r0, [sp] - ands r0, r2 - orrs r0, r1 - str r0, [sp] - ldrb r2, [r5] - movs r1, 0x1F - ands r2, r1 - lsls r2, 16 - ldr r1, _080F4EB0 @ =0xffe0ffff - ands r0, r1 - orrs r0, r2 - str r0, [sp] - ldrb r0, [r6] - lsls r1, r0, 2 - adds r1, r0 - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 5 - ldrb r2, [r5] - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 4 - add r1, r8 - adds r0, r1 - mov r2, r9 - ldrb r1, [r2] - bl GetBoxMonData - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080F4EB4 @ =0xffffff00 - ldr r1, [sp] - ands r1, r2 - orrs r1, r0 - str r1, [sp] - mov r0, sp - bl sub_80F4944 -_080F4E60: - mov r3, r10 - ldr r1, [r3] - ldr r0, _080F4EA0 @ =0x00008fe7 - adds r2, r1, r0 - ldrb r0, [r2] - adds r0, 0x1 - movs r4, 0 - strb r0, [r2] - movs r3, 0xFF - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1E - bne _080F4E8C - strb r4, [r2] - ldr r2, _080F4E9C @ =0x00008fe6 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ands r0, r3 - cmp r0, 0xE - beq _080F4F64 -_080F4E8C: - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0xE - bls _080F4DCA - b _080F4F64 - .align 2, 0 -_080F4E98: .4byte gUnknown_083DFEC4 -_080F4E9C: .4byte 0x00008fe6 -_080F4EA0: .4byte 0x00008fe7 -_080F4EA4: .4byte 0x000087d8 -_080F4EA8: .4byte gPokemonStorage + 0x4 -_080F4EAC: .4byte 0xffff00ff -_080F4EB0: .4byte 0xffe0ffff -_080F4EB4: .4byte 0xffffff00 -_080F4EB8: - mov r2, sp - ldrb r0, [r2, 0x3] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2, 0x3] - strb r3, [r2, 0x1] - movs r7, 0 - ldr r3, _080F4F44 @ =0x00008828 - adds r0, r4, r3 - ldrb r0, [r0] - cmp r7, r0 - bcs _080F4F24 - mov r5, sp - mov r8, r6 - adds r6, r4, r3 -_080F4ED6: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _080F4F48 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080F4F18 - movs r0, 0x1F - adds r2, r7, 0 - ands r2, r0 - ldrb r0, [r5, 0x2] - movs r3, 0x20 - negs r3, r3 - adds r1, r3, 0 - ands r0, r1 - orrs r0, r2 - strb r0, [r5, 0x2] - mov r1, r8 - ldr r0, [r1] - ldr r2, _080F4F4C @ =0x000087d8 - adds r0, r2 - ldrb r1, [r0] - adds r0, r4, 0 - bl GetMonData - strb r0, [r5] - mov r0, sp - bl sub_80F4944 -_080F4F18: - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - ldrb r3, [r6] - cmp r7, r3 - bcc _080F4ED6 -_080F4F24: - bl sub_80F49F4 - ldr r0, _080F4F50 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F4F54 @ =0x00008fe4 - adds r0, r1, r2 - ldrh r2, [r0] - ldr r3, _080F4F58 @ =0x000087da - adds r0, r1, r3 - strh r2, [r0] - ldr r0, _080F4F5C @ =0x00008fe6 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080F4F64 - .align 2, 0 -_080F4F44: .4byte 0x00008828 -_080F4F48: .4byte gPlayerParty -_080F4F4C: .4byte 0x000087d8 -_080F4F50: .4byte gUnknown_083DFEC4 -_080F4F54: .4byte 0x00008fe4 -_080F4F58: .4byte 0x000087da -_080F4F5C: .4byte 0x00008fe6 -_080F4F60: - movs r0, 0 - b _080F4F66 -_080F4F64: - movs r0, 0x1 -_080F4F66: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80F4D88 - - thumb_func_start sub_80F4F78 -sub_80F4F78: @ 80F4F78 - push {lr} - ldr r0, _080F4FA4 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F4FA8 @ =0x00009040 - adds r0, r1, r2 - ldr r3, _080F4FAC @ =0x00008fe9 - adds r2, r1, r3 - movs r3, 0 - ldrsb r3, [r2, r3] - lsls r2, r3, 2 - adds r2, r3 - lsls r2, 2 - ldr r3, _080F4FB0 @ =0x00009004 - adds r2, r3 - adds r1, r2 - bl sub_80F53EC - bl sub_80F5504 - pop {r0} - bx r0 - .align 2, 0 -_080F4FA4: .4byte gUnknown_083DFEC4 -_080F4FA8: .4byte 0x00009040 -_080F4FAC: .4byte 0x00008fe9 -_080F4FB0: .4byte 0x00009004 - thumb_func_end sub_80F4F78 - - thumb_func_start sub_80F4FB4 -sub_80F4FB4: @ 80F4FB4 - push {r4,lr} - bl sub_80F5504 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_80F170C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - cmp r4, 0 - bne _080F4FD2 - cmp r0, 0 - beq _080F4FD4 -_080F4FD2: - movs r1, 0x1 -_080F4FD4: - adds r0, r1, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80F4FB4 - - thumb_func_start sub_80F4FDC -sub_80F4FDC: @ 80F4FDC - push {lr} - ldr r0, _080F5020 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r1, _080F5024 @ =0x000076aa - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080F4FFE - ldr r3, _080F5028 @ =0x000087dc - adds r0, r2, r3 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r3, _080F502C @ =0x00008828 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r1, r0 - beq _080F501A -_080F4FFE: - ldr r1, _080F5030 @ =0x00008fe9 - adds r0, r2, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - ldr r3, _080F5034 @ =0x00009004 - adds r0, r3 - adds r0, r2, r0 - adds r3, 0x3C - adds r1, r2, r3 - bl sub_80F53EC -_080F501A: - pop {r0} - bx r0 - .align 2, 0 -_080F5020: .4byte gUnknown_083DFEC4 -_080F5024: .4byte 0x000076aa -_080F5028: .4byte 0x000087dc -_080F502C: .4byte 0x00008828 -_080F5030: .4byte 0x00008fe9 -_080F5034: .4byte 0x00009004 - thumb_func_end sub_80F4FDC - - thumb_func_start sub_80F5038 -sub_80F5038: @ 80F5038 - push {r4,lr} - bl sub_80F5504 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_80F173C - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - cmp r4, 0 - bne _080F5056 - cmp r0, 0 - beq _080F5058 -_080F5056: - movs r1, 0x1 -_080F5058: - adds r0, r1, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80F5038 - - thumb_func_start sub_80F5060 -sub_80F5060: @ 80F5060 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0 - beq _080F507C - ldr r0, _080F5074 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F5078 @ =0x00008feb - adds r0, r1 - b _080F5084 - .align 2, 0 -_080F5074: .4byte gUnknown_083DFEC4 -_080F5078: .4byte 0x00008feb -_080F507C: - ldr r0, _080F50FC @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F5100 @ =0x00008fea - adds r0, r2 -_080F5084: - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _080F50FC @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r3, _080F5104 @ =0x00008fe9 - adds r5, r4, r3 - movs r1, 0 - ldrsb r1, [r5, r1] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - ldr r2, _080F5108 @ =0x00009004 - adds r0, r2 - adds r0, r4, r0 - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 2 - adds r1, r2 - adds r1, r4, r1 - bl sub_80F53EC - ldr r0, _080F510C @ =0x000087dc - adds r3, r4, r0 - movs r1, 0 - ldrsh r0, [r3, r1] - lsls r0, 2 - adds r0, r4, r0 - ldr r2, _080F5110 @ =0x0000893f - adds r0, r2 - ldrb r0, [r0] - lsls r0, 25 - lsrs r0, 31 - mov r12, r0 - cmp r7, 0 - beq _080F5158 - ldr r7, _080F5100 @ =0x00008fea - adds r1, r4, r7 - ldrb r0, [r1] - adds r7, 0x1 - adds r2, r4, r7 - strb r0, [r2] - ldrb r0, [r5] - strb r0, [r1] - strb r6, [r5] - ldrb r1, [r2] - ldr r2, _080F5114 @ =0x00008fec - adds r0, r4, r2 - strb r1, [r0] - adds r5, r4, 0 - ldrh r1, [r3] - movs r7, 0 - ldrsh r0, [r3, r7] - cmp r0, 0 - beq _080F5118 - subs r2, r1, 0x1 - b _080F5120 - .align 2, 0 -_080F50FC: .4byte gUnknown_083DFEC4 -_080F5100: .4byte 0x00008fea -_080F5104: .4byte 0x00008fe9 -_080F5108: .4byte 0x00009004 -_080F510C: .4byte 0x000087dc -_080F5110: .4byte 0x0000893f -_080F5114: .4byte 0x00008fec -_080F5118: - ldr r1, _080F513C @ =0x000087da - adds r0, r4, r1 - ldrh r0, [r0] - subs r2, r0, 0x1 -_080F5120: - ldr r1, _080F5140 @ =0x000087dc - adds r0, r5, r1 - strh r2, [r0] - ldr r2, _080F5144 @ =gUnknown_083DFEC4 - ldr r3, [r2] - adds r1, r3, r1 - ldrh r4, [r1] - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r0, 0 - beq _080F5148 - subs r1, r4, 0x1 - b _080F51CE - .align 2, 0 -_080F513C: .4byte 0x000087da -_080F5140: .4byte 0x000087dc -_080F5144: .4byte gUnknown_083DFEC4 -_080F5148: - ldr r7, _080F5154 @ =0x000087da - adds r0, r3, r7 - ldrh r0, [r0] - subs r1, r0, 0x1 - b _080F51CE - .align 2, 0 -_080F5154: .4byte 0x000087da -_080F5158: - ldr r7, _080F518C @ =0x00008feb - adds r1, r4, r7 - ldrb r0, [r1] - subs r7, 0x1 - adds r2, r4, r7 - strb r0, [r2] - ldrb r0, [r5] - strb r0, [r1] - strb r6, [r5] - ldrb r1, [r2] - ldr r2, _080F5190 @ =0x00008fec - adds r0, r4, r2 - strb r1, [r0] - adds r2, r4, 0 - movs r4, 0 - ldrsh r1, [r3, r4] - ldr r5, _080F5194 @ =0x000087da - adds r0, r2, r5 - movs r7, 0 - ldrsh r0, [r0, r7] - subs r0, 0x1 - cmp r1, r0 - bge _080F5198 - ldrh r0, [r3] - adds r3, r0, 0x1 - b _080F519A - .align 2, 0 -_080F518C: .4byte 0x00008feb -_080F5190: .4byte 0x00008fec -_080F5194: .4byte 0x000087da -_080F5198: - movs r3, 0 -_080F519A: - ldr r1, _080F51C0 @ =0x000087dc - adds r0, r2, r1 - strh r3, [r0] - ldr r2, _080F51C4 @ =gUnknown_083DFEC4 - ldr r3, [r2] - adds r4, r3, r1 - movs r0, 0 - ldrsh r1, [r4, r0] - ldr r5, _080F51C8 @ =0x000087da - adds r0, r3, r5 - movs r7, 0 - ldrsh r0, [r0, r7] - subs r0, 0x1 - cmp r1, r0 - bge _080F51CC - ldrh r0, [r4] - adds r1, r0, 0x1 - b _080F51CE - .align 2, 0 -_080F51C0: .4byte 0x000087dc -_080F51C4: .4byte gUnknown_083DFEC4 -_080F51C8: .4byte 0x000087da -_080F51CC: - movs r1, 0 -_080F51CE: - ldr r4, _080F51FC @ =0x00008fee - adds r0, r3, r4 - strh r1, [r0] - ldr r1, [r2] - ldr r5, _080F5200 @ =0x000087dc - adds r0, r1, r5 - movs r7, 0 - ldrsh r0, [r0, r7] - lsls r0, 2 - adds r0, r1, r0 - ldr r3, _080F5204 @ =0x0000893f - adds r0, r3 - ldrb r0, [r0] - lsls r0, 25 - lsrs r0, 31 - mov r4, r12 - cmp r4, 0 - bne _080F520C - adds r5, 0x4 - adds r1, r5 - ldr r0, _080F5208 @ =sub_80F5264 - b _080F5226 - .align 2, 0 -_080F51FC: .4byte 0x00008fee -_080F5200: .4byte 0x000087dc -_080F5204: .4byte 0x0000893f -_080F5208: .4byte sub_80F5264 -_080F520C: - cmp r0, 0 - bne _080F5220 - ldr r7, _080F5218 @ =0x000087e0 - adds r1, r7 - ldr r0, _080F521C @ =sub_80F52F8 - b _080F5226 - .align 2, 0 -_080F5218: .4byte 0x000087e0 -_080F521C: .4byte sub_80F52F8 -_080F5220: - ldr r0, _080F5238 @ =0x000087e0 - adds r1, r0 - ldr r0, _080F523C @ =sub_80F5364 -_080F5226: - str r0, [r1] - ldr r0, [r2] - ldr r1, _080F5240 @ =0x000087de - adds r0, r1 - movs r1, 0 - strb r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F5238: .4byte 0x000087e0 -_080F523C: .4byte sub_80F5364 -_080F5240: .4byte 0x000087de - thumb_func_end sub_80F5060 - - thumb_func_start gpu_sync_bg_show -gpu_sync_bg_show: @ 80F5244 - push {lr} - ldr r0, _080F525C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F5260 @ =0x000087e0 - adds r0, r1 - ldr r0, [r0] - bl _call_via_r0 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080F525C: .4byte gUnknown_083DFEC4 -_080F5260: .4byte 0x000087e0 - thumb_func_end gpu_sync_bg_show - - thumb_func_start sub_80F5264 -sub_80F5264: @ 80F5264 - push {r4,r5,lr} - ldr r0, _080F5280 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F5284 @ =0x000087de - adds r5, r0, r1 - ldrb r1, [r5] - cmp r1, 0x1 - beq _080F52AA - cmp r1, 0x1 - bgt _080F5288 - cmp r1, 0 - beq _080F528E - b _080F52F0 - .align 2, 0 -_080F5280: .4byte gUnknown_083DFEC4 -_080F5284: .4byte 0x000087de -_080F5288: - cmp r1, 0x2 - beq _080F52EC - b _080F52F0 -_080F528E: - ldr r2, _080F52D8 @ =0x00008fe9 - adds r4, r0, r2 - ldrb r0, [r4] - bl sub_80F2E18 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r0, 16 - lsrs r0, 16 - bl sub_80F01E0 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] -_080F52AA: - bl sub_80F4FB4 - lsls r0, 24 - cmp r0, 0 - bne _080F52F0 - ldr r0, _080F52DC @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F52E0 @ =0x00008fee - adds r0, r4, r1 - movs r2, 0 - ldrsh r0, [r0, r2] - ldr r2, _080F52E4 @ =0x00008fec - adds r1, r4, r2 - ldrb r1, [r1] - bl sub_80F4900 - ldr r0, _080F52E8 @ =0x000087de - adds r4, r0 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _080F52F0 - .align 2, 0 -_080F52D8: .4byte 0x00008fe9 -_080F52DC: .4byte gUnknown_083DFEC4 -_080F52E0: .4byte 0x00008fee -_080F52E4: .4byte 0x00008fec -_080F52E8: .4byte 0x000087de -_080F52EC: - movs r0, 0 - b _080F52F2 -_080F52F0: - movs r0, 0x1 -_080F52F2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80F5264 - - thumb_func_start sub_80F52F8 -sub_80F52F8: @ 80F52F8 - push {r4,r5,lr} - ldr r0, _080F5310 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F5314 @ =0x000087de - adds r5, r4, r0 - ldrb r0, [r5] - cmp r0, 0 - beq _080F5318 - cmp r0, 0x1 - beq _080F5358 - b _080F535C - .align 2, 0 -_080F5310: .4byte gUnknown_083DFEC4 -_080F5314: .4byte 0x000087de -_080F5318: - bl sub_80F5038 - lsls r0, 24 - cmp r0, 0 - bne _080F535C - ldr r1, _080F5350 @ =0x00008fe9 - adds r0, r4, r1 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r0, 16 - lsrs r0, 16 - bl sub_80F01E0 - ldr r2, _080F5354 @ =0x00008fee - adds r0, r4, r2 - movs r1, 0 - ldrsh r0, [r0, r1] - subs r2, 0x2 - adds r1, r4, r2 - ldrb r1, [r1] - bl sub_80F4900 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _080F535C - .align 2, 0 -_080F5350: .4byte 0x00008fe9 -_080F5354: .4byte 0x00008fee -_080F5358: - movs r0, 0 - b _080F535E -_080F535C: - movs r0, 0x1 -_080F535E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80F52F8 - - thumb_func_start sub_80F5364 -sub_80F5364: @ 80F5364 - push {r4,r5,lr} - ldr r0, _080F5380 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F5384 @ =0x000087de - adds r5, r4, r0 - ldrb r0, [r5] - cmp r0, 0x1 - beq _080F53B8 - cmp r0, 0x1 - bgt _080F5388 - cmp r0, 0 - beq _080F538E - b _080F53E4 - .align 2, 0 -_080F5380: .4byte gUnknown_083DFEC4 -_080F5384: .4byte 0x000087de -_080F5388: - cmp r0, 0x2 - beq _080F53CA - b _080F53E4 -_080F538E: - bl sub_80F5504 - bl sub_80F173C - lsls r0, 24 - cmp r0, 0 - bne _080F53E4 - ldr r1, _080F53B4 @ =0x00008fe9 - adds r4, r1 - ldrb r0, [r4] - bl sub_80F2E18 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r0, 16 - lsrs r0, 16 - bl sub_80F01E0 - b _080F53C2 - .align 2, 0 -_080F53B4: .4byte 0x00008fe9 -_080F53B8: - bl sub_80F4FB4 - lsls r0, 24 - cmp r0, 0 - bne _080F53E4 -_080F53C2: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _080F53E4 -_080F53CA: - ldr r2, _080F53E0 @ =0x00008fee - adds r0, r4, r2 - movs r1, 0 - ldrsh r0, [r0, r1] - subs r2, 0x2 - adds r1, r4, r2 - ldrb r1, [r1] - bl sub_80F4900 - movs r0, 0 - b _080F53E6 - .align 2, 0 -_080F53E0: .4byte 0x00008fee -_080F53E4: - movs r0, 0x1 -_080F53E6: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80F5364 - - thumb_func_start sub_80F53EC -sub_80F53EC: @ 80F53EC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - str r0, [sp] - mov r9, r1 - movs r7, 0 - ldr r0, _080F54F4 @ =gUnknown_083DFEC4 - ldr r0, [r0] - str r0, [sp, 0x4] -_080F5404: - lsls r4, r7, 2 - ldr r1, [sp] - adds r0, r4, r1 - ldrh r1, [r0] - lsls r5, r1, 8 - mov r2, r9 - adds r0, r4, r2 - ldrh r0, [r0] - subs r0, r1 - lsls r0, 8 - movs r1, 0xA - bl __divsi3 - adds r6, r0, 0 - movs r3, 0 - adds r7, 0x1 - mov r10, r7 - mov r8, r4 -_080F5428: - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 2 - add r0, r8 - ldr r7, [sp, 0x4] - adds r0, r7, r0 - asrs r2, r5, 8 - asrs r1, r5, 7 - movs r7, 0x1 - ands r1, r7 - adds r2, r1 - ldr r1, _080F54F8 @ =0x00009054 - adds r0, r1 - strh r2, [r0] - adds r5, r6 - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x8 - bls _080F5428 - ldr r2, _080F54F4 @ =gUnknown_083DFEC4 - ldr r1, [r2] - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 2 - adds r0, r4, r0 - adds r1, r0 - mov r3, r9 - adds r2, r4, r3 - ldrh r0, [r2] - ldr r7, _080F54F8 @ =0x00009054 - adds r1, r7 - strh r0, [r1] - ldr r1, [sp] - adds r0, r4, r1 - ldrh r1, [r0, 0x2] - lsls r5, r1, 8 - ldrh r0, [r2, 0x2] - subs r0, r1 - lsls r0, 8 - movs r1, 0xA - bl __divsi3 - adds r6, r0, 0 - movs r3, 0 - ldr r0, _080F54F4 @ =gUnknown_083DFEC4 - ldr r0, [r0] - mov r12, r0 - str r4, [sp, 0x8] - movs r2, 0x1 - mov r8, r2 -_080F548E: - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 2 - ldr r7, [sp, 0x8] - adds r0, r7, r0 - add r0, r12 - asrs r2, r5, 8 - asrs r1, r5, 7 - mov r7, r8 - ands r1, r7 - adds r2, r1 - ldr r1, _080F54FC @ =0x00009056 - adds r0, r1 - strh r2, [r0] - adds r5, r6 - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x8 - bls _080F548E - ldr r7, _080F54F4 @ =gUnknown_083DFEC4 - ldr r2, [r7] - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 2 - adds r0, r4, r0 - adds r0, r2, r0 - mov r3, r9 - adds r1, r4, r3 - ldrh r1, [r1, 0x2] - ldr r7, _080F54FC @ =0x00009056 - adds r0, r7 - strh r1, [r0] - mov r1, r10 - lsls r0, r1, 16 - lsrs r7, r0, 16 - cmp r7, 0x4 - bls _080F5404 - ldr r3, _080F5500 @ =0x00009342 - adds r1, r2, r3 - movs r0, 0 - strh r0, [r1] - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F54F4: .4byte gUnknown_083DFEC4 -_080F54F8: .4byte 0x00009054 -_080F54FC: .4byte 0x00009056 -_080F5500: .4byte 0x00009342 - thumb_func_end sub_80F53EC - - thumb_func_start sub_80F5504 -sub_80F5504: @ 80F5504 - push {r4,lr} - ldr r0, _080F551C @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r0, _080F5520 @ =0x00009342 - adds r4, r2, r0 - ldrh r0, [r4] - adds r1, r0, 0 - cmp r1, 0x9 - bls _080F5524 - movs r0, 0 - b _080F5544 - .align 2, 0 -_080F551C: .4byte gUnknown_083DFEC4 -_080F5520: .4byte 0x00009342 -_080F5524: - adds r0, 0x1 - strh r0, [r4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - ldr r1, _080F554C @ =0x00009054 - adds r0, r1 - adds r0, r2, r0 - bl sub_80F556C - ldrh r1, [r4] - movs r0, 0xA - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 -_080F5544: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F554C: .4byte 0x00009054 - thumb_func_end sub_80F5504 - - thumb_func_start sub_80F5550 -sub_80F5550: @ 80F5550 - push {lr} - bl sub_80F53EC - pop {r0} - bx r0 - thumb_func_end sub_80F5550 - - thumb_func_start sub_80F555C -sub_80F555C: @ 80F555C - push {lr} - bl sub_80F5504 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80F555C - - thumb_func_start sub_80F556C -sub_80F556C: @ 80F556C - push {r4,r5,lr} - adds r4, r0, 0 - movs r2, 0 - ldr r5, _080F55A0 @ =gUnknown_083DFEC4 - ldr r0, [r5] - ldr r1, _080F55A4 @ =0x0000911c - adds r3, r0, r1 -_080F557A: - lsls r0, r2, 2 - adds r1, r3, r0 - adds r0, r4 - ldr r0, [r0] - str r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x4 - bls _080F557A - ldr r0, [r5] - ldr r1, _080F55A8 @ =0x00009344 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F55A0: .4byte gUnknown_083DFEC4 -_080F55A4: .4byte 0x0000911c -_080F55A8: .4byte 0x00009344 - thumb_func_end sub_80F556C - thumb_func_start sub_80F55AC sub_80F55AC: @ 80F55AC push {r4-r7,lr} @@ -12998,7 +2823,7 @@ _080F6B54: bl sub_80F66E0 b _080F6BC6 _080F6B6E: - bl sub_80F1238 + bl DrawMonRibbonIcons ldr r0, _080F6B7C @ =gUnknown_083DFEC4 ldr r1, [r0] ldr r2, _080F6B80 @ =0x000087de @@ -13715,7 +3540,7 @@ _080F7194: .4byte 0x00008788 _080F7198: .4byte 0x0000876e _080F719C: .4byte 0x000087de _080F71A0: - bl sub_80F0CD8 + bl LoadTrainerEyesDescriptionLines ldr r0, _080F71D4 @ =gUnknown_083DFEC4 ldr r1, [r0] ldr r0, _080F71D8 @ =0x0000bc95 diff --git a/data-de/event_scripts.s b/data-de/event_scripts.s index 9b27d25a1..2e79200cb 100644 --- a/data-de/event_scripts.s +++ b/data-de/event_scripts.s @@ -10,6 +10,7 @@ #include "constants/songs.h" #include "constants/species.h" #include "constants/weather.h" +#include "constants/heal_locations.h" #include "constants/vars.h" .include "include/macros.inc" .include "include/macros/event.inc" diff --git a/data/battle_anim_813F0F4.s b/data/battle_anim_813F0F4.s index fd24d95b6..b043929c3 100644 --- a/data/battle_anim_813F0F4.s +++ b/data/battle_anim_813F0F4.s @@ -4,7 +4,7 @@ .section .rodata .align 2 -gUnknown_0840B258:: @ 840B258 +gBallOpenParticleSpritesheets:: @ 840B258 obj_tiles gBattleAnimSpriteSheet_Particles, 0x100, 55020 obj_tiles gBattleAnimSpriteSheet_Particles, 0x100, 55021 obj_tiles gBattleAnimSpriteSheet_Particles, 0x100, 55022 @@ -19,7 +19,7 @@ gUnknown_0840B258:: @ 840B258 obj_tiles gBattleAnimSpriteSheet_Particles, 0x100, 55031 .align 2 -gUnknown_0840B2B8:: @ 840B2B8 +gBallOpenParticlePalettes:: @ 840B2B8 obj_pal gBattleAnimSpritePalette_136, 55020 obj_pal gBattleAnimSpritePalette_136, 55021 obj_pal gBattleAnimSpritePalette_136, 55022 @@ -78,70 +78,48 @@ gSpriteAnimTable_840B360:: @ 840B360 .4byte gSpriteAnim_840B34C .4byte gSpriteAnim_840B358 -gUnknown_0840B378:: @ 840B378 - .byte 0, 0, 0, 5, 1, 2, 2, 3, 5, 5, 4, 4 - - .align 2 -gUnknown_0840B384:: @ 840B384 - .4byte sub_8140930 - .4byte sub_8140DC4 - .4byte sub_8140C14 - .4byte sub_8140CE8 - .4byte sub_8141058 - .4byte sub_8140C14 - .4byte sub_8140B3C - .4byte sub_8140CE8 - .4byte sub_8140F24 - .4byte sub_8140A64 - .4byte sub_8140DC4 - .4byte sub_8141164 - - .align 2 -gSpriteTemplate_840B3B4:: @ 840B3B4 +gBallOpenParticleAnimNums:: @ 840B378 + .byte 0 + .byte 0 + .byte 0 + .byte 5 + .byte 1 + .byte 2 + .byte 2 + .byte 3 + .byte 5 + .byte 5 + .byte 4 + .byte 4 + + .align 2 +gBallOpenParticleAnimationFuncs:: @ 840B384 + .4byte PokeBallOpenParticleAnimation + .4byte GreatBallOpenParticleAnimation + .4byte SafariBallOpenParticleAnimation + .4byte UltraBallOpenParticleAnimation + .4byte MasterBallOpenParticleAnimation + .4byte SafariBallOpenParticleAnimation + .4byte DiveBallOpenParticleAnimation + .4byte UltraBallOpenParticleAnimation + .4byte RepeatBallOpenParticleAnimation + .4byte TimerBallOpenParticleAnimation + .4byte GreatBallOpenParticleAnimation + .4byte PremierBallOpenParticleAnimation + + .align 2 +gSpriteTemplates_840B3B4:: @ 840B3B4 spr_template 55020, 55020, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteTemplate_840B3CC:: @ 840B3CC spr_template 55021, 55021, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteTemplate_840B3E4:: @ 840B3E4 spr_template 55022, 55022, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteTemplate_840B3FC:: @ 840B3FC spr_template 55023, 55023, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteTemplate_840B414:: @ 840B414 spr_template 55024, 55024, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteTemplate_840B42C:: @ 840B42C spr_template 55025, 55025, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteTemplate_840B444:: @ 840B444 spr_template 55026, 55026, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteTemplate_840B45C:: @ 840B45C spr_template 55027, 55027, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteTemplate_840B474:: @ 840B474 spr_template 55028, 55028, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteTemplate_840B48C:: @ 840B48C spr_template 55029, 55029, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteTemplate_840B4A4:: @ 840B4A4 spr_template 55030, 55030, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - - .align 2 -gSpriteTemplate_840B4BC:: @ 840B4BC spr_template 55031, 55031, gOamData_837DF24, gSpriteAnimTable_840B360, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy .align 1 diff --git a/data/event_scripts.s b/data/event_scripts.s index 3ce319397..eef08bb79 100644 --- a/data/event_scripts.s +++ b/data/event_scripts.s @@ -10,6 +10,7 @@ #include "constants/songs.h" #include "constants/species.h" #include "constants/weather.h" +#include "constants/heal_locations.h" #include "constants/vars.h" .include "include/macros.inc" .include "include/macros/event.inc" diff --git a/data/graphics.s b/data/graphics.s index f48723501..587be6df0 100644 --- a/data/graphics.s +++ b/data/graphics.s @@ -4039,8 +4039,8 @@ gUnknown_08E96D2C:: @ 8E96D2C .incbin "graphics/unknown/unknown_E96D2C.bin.lz" .align 2 -gUnknown_08E96EC8:: @ 8E96EC8 - .incbin "graphics/unknown/unknown_E96EC8.bin" +gBagScreenLabels_Tilemap:: @ 8E96EC8 + .incbin "graphics/interface/bag_screen_labels.bin" .align 2 gSlotMachineSpritePalette0:: @ 8E976C8 diff --git a/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc b/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc index 33d14e770..38f242eab 100644 --- a/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc +++ b/data/maps/DewfordTown_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ DewfordTown_PokemonCenter_1F_MapScripts:: @ 8153014 .byte 0 DewfordTown_PokemonCenter_1F_MapScript1_15301A:: @ 815301A - setrespawn 15 + setrespawn HEAL_LOCATION_DEWFORD_TOWN call DewfordTown_PokemonCenter_1F_EventScript_19FD1B end diff --git a/data/maps/EverGrandeCity_HallOfFame/scripts.inc b/data/maps/EverGrandeCity_HallOfFame/scripts.inc index 6cfc5ae27..4b54204d3 100644 --- a/data/maps/EverGrandeCity_HallOfFame/scripts.inc +++ b/data/maps/EverGrandeCity_HallOfFame/scripts.inc @@ -51,7 +51,7 @@ EverGrandeCity_HallOfFame_EventScript_15BBA8:: @ 815BBA8 end EverGrandeCity_HallOfFame_EventScript_15BC41:: @ 815BC41 - setrespawn 1 + setrespawn HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F fadescreenspeed 1, 24 special GameClear waitstate @@ -59,7 +59,7 @@ EverGrandeCity_HallOfFame_EventScript_15BC41:: @ 815BC41 end EverGrandeCity_HallOfFame_EventScript_15BC4D:: @ 815BC4D - setrespawn 2 + setrespawn HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F fadescreenspeed 1, 24 special GameClear waitstate diff --git a/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc b/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc index 374ef9472..3c0ad3732 100644 --- a/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc +++ b/data/maps/EverGrandeCity_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ EverGrandeCity_PokemonCenter_1F_MapScripts:: @ 815BC66 .byte 0 EverGrandeCity_PokemonCenter_1F_MapScript1_15BC6C:: @ 815BC6C - setrespawn 11 + setrespawn HEAL_LOCATION_EVER_GRANDE_CITY_1 end EverGrandeCity_PokemonCenter_1F_EventScript_15BC70:: @ 815BC70 diff --git a/data/maps/EverGrandeCity_PokemonLeague/scripts.inc b/data/maps/EverGrandeCity_PokemonLeague/scripts.inc index a48cf278e..6da717d06 100644 --- a/data/maps/EverGrandeCity_PokemonLeague/scripts.inc +++ b/data/maps/EverGrandeCity_PokemonLeague/scripts.inc @@ -3,7 +3,7 @@ EverGrandeCity_PokemonLeague_MapScripts:: @ 815BA75 .byte 0 EverGrandeCity_PokemonLeague_MapScript1_15BA7B:: @ 815BA7B - setrespawn 20 + setrespawn HEAL_LOCATION_EVER_GRANDE_CITY_2 setflag FLAG_SYS_POKEMON_LEAGUE_FLY call_if_unset FLAG_ENTERED_ELITE_FOUR, EverGrandeCity_PokemonLeague_EventScript_15BA8B end diff --git a/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc b/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc index 6ae897ec8..801f704e3 100644 --- a/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc +++ b/data/maps/FallarborTown_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ FallarborTown_PokemonCenter_1F_MapScripts:: @ 8153AF3 .byte 0 FallarborTown_PokemonCenter_1F_MapScript1_153AF9:: @ 8153AF9 - setrespawn 17 + setrespawn HEAL_LOCATION_FALLARBOR_TOWN call FallarborTown_PokemonCenter_1F_EventScript_19FD1B end diff --git a/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc b/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc index 6d847d7cc..999541b31 100644 --- a/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc +++ b/data/maps/FortreeCity_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ FortreeCity_PokemonCenter_1F_MapScripts:: @ 8158011 .byte 0 FortreeCity_PokemonCenter_1F_MapScript1_158017:: @ 8158017 - setrespawn 7 + setrespawn HEAL_LOCATION_FORTREE_CITY end FortreeCity_PokemonCenter_1F_EventScript_15801B:: @ 815801B diff --git a/data/maps/InsideOfTruck/scripts.inc b/data/maps/InsideOfTruck/scripts.inc index 37fa85041..b2617c8f7 100644 --- a/data/maps/InsideOfTruck/scripts.inc +++ b/data/maps/InsideOfTruck/scripts.inc @@ -24,7 +24,7 @@ InsideOfTruck_EventScript_15FC29:: @ 815FC29 end InsideOfTruck_EventScript_15FC45:: @ 815FC45 - setrespawn 1 + setrespawn HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F setvar VAR_LITTLEROOT_INTRO_STATE, 1 setflag FLAG_HIDE_MAY_MOM_DOWNSTAIRS setflag FLAG_HIDE_MOVING_TRUCK_MAY @@ -36,7 +36,7 @@ InsideOfTruck_EventScript_15FC45:: @ 815FC45 end InsideOfTruck_EventScript_15FC68:: @ 815FC68 - setrespawn 2 + setrespawn HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F setvar VAR_LITTLEROOT_INTRO_STATE, 2 setflag FLAG_HIDE_BRENDAN_MOM_DOWNSTAIRS setflag FLAG_HIDE_MOVING_TRUCK_BRENDAN diff --git a/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc b/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc index 4e9c51380..611ced28f 100644 --- a/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc +++ b/data/maps/LavaridgeTown_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ LavaridgeTown_PokemonCenter_1F_MapScripts:: @ 815390C .byte 0 LavaridgeTown_PokemonCenter_1F_MapScript1_153912:: @ 8153912 - setrespawn 16 + setrespawn HEAL_LOCATION_LAVARIDGE_TOWN call LavaridgeTown_PokemonCenter_1F_EventScript_19FD1B end diff --git a/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc b/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc index cff88caf0..508f5fab8 100644 --- a/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc +++ b/data/maps/LilycoveCity_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ LilycoveCity_PokemonCenter_1F_MapScripts:: @ 8159327 .byte 0 LilycoveCity_PokemonCenter_1F_MapScript1_15932D:: @ 815932D - setrespawn 8 + setrespawn HEAL_LOCATION_LILYCOVE_CITY end LilycoveCity_PokemonCenter_1F_EventScript_159331:: @ 8159331 diff --git a/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc b/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc index 85590f9c2..817679cec 100644 --- a/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc +++ b/data/maps/MauvilleCity_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ MauvilleCity_PokemonCenter_1F_MapScripts:: @ 8157351 .byte 0 MauvilleCity_PokemonCenter_1F_MapScript1_157357:: @ 8157357 - setrespawn 5 + setrespawn HEAL_LOCATION_MAUVILLE_CITY call MauvilleCity_PokemonCenter_1F_EventScript_19FD1B goto MauvilleCity_PokemonCenter_1F_EventScript_157365 end diff --git a/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc b/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc index a722e666b..906cf8e83 100644 --- a/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc +++ b/data/maps/MossdeepCity_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ MossdeepCity_PokemonCenter_1F_MapScripts:: @ 815A8D0 .byte 0 MossdeepCity_PokemonCenter_1F_MapScript1_15A8D6:: @ 815A8D6 - setrespawn 9 + setrespawn HEAL_LOCATION_MOSSDEEP_CITY end MossdeepCity_PokemonCenter_1F_EventScript_15A8DA:: @ 815A8DA diff --git a/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc b/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc index c993807c6..16e11d6a2 100644 --- a/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc +++ b/data/maps/OldaleTown_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ OldaleTown_PokemonCenter_1F_MapScripts:: @ 8152F08 .byte 0 OldaleTown_PokemonCenter_1F_MapScript1_152F0E:: @ 8152F0E - setrespawn 14 + setrespawn HEAL_LOCATION_OLDALE_TOWN call OldaleTown_PokemonCenter_1F_EventScript_19FD1B end diff --git a/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc b/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc index 557b6497e..ea7a8e056 100644 --- a/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc +++ b/data/maps/PacifidlogTown_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ PacifidlogTown_PokemonCenter_1F_MapScripts:: @ 81540FF .byte 0 PacifidlogTown_PokemonCenter_1F_MapScript1_154105:: @ 8154105 - setrespawn 19 + setrespawn HEAL_LOCATION_PACIFIDLOG_TOWN end @ 8154109 diff --git a/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc b/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc index 136cc11c5..6753865e0 100644 --- a/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc +++ b/data/maps/PetalburgCity_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ PetalburgCity_PokemonCenter_1F_MapScripts:: @ 8155204 .byte 0 PetalburgCity_PokemonCenter_1F_MapScript1_15520A:: @ 815520A - setrespawn 3 + setrespawn HEAL_LOCATION_PETALBURG_CITY call PetalburgCity_PokemonCenter_1F_EventScript_19FD1B end diff --git a/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc b/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc index 653cceb25..c0bb5c2dd 100644 --- a/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc +++ b/data/maps/RustboroCity_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ RustboroCity_PokemonCenter_1F_MapScripts:: @ 8157B79 .byte 0 RustboroCity_PokemonCenter_1F_MapScript1_157B7F:: @ 8157B7F - setrespawn 6 + setrespawn HEAL_LOCATION_RUSTBORO_CITY call RustboroCity_PokemonCenter_1F_EventScript_19FD1B end diff --git a/data/maps/SSTidalCorridor/scripts.inc b/data/maps/SSTidalCorridor/scripts.inc index 57872a66a..0f2028476 100644 --- a/data/maps/SSTidalCorridor/scripts.inc +++ b/data/maps/SSTidalCorridor/scripts.inc @@ -122,7 +122,7 @@ SSTidalCorridor_EventScript_15FDD6:: @ 815FDD6 end SSTidalCorridor_EventScript_15FDF8:: @ 815FDF8 - setrespawn 8 + setrespawn HEAL_LOCATION_LILYCOVE_CITY msgbox SSTidalCorridor_Text_1991F4, 4 call_if_set FLAG_RECEIVED_TM49, SSTidalCorridor_EventScript_15FE36 warp MAP_LILYCOVE_CITY_HARBOR, 255, 8, 11 @@ -131,7 +131,7 @@ SSTidalCorridor_EventScript_15FDF8:: @ 815FDF8 end SSTidalCorridor_EventScript_15FE17:: @ 815FE17 - setrespawn 4 + setrespawn HEAL_LOCATION_SLATEPORT_CITY msgbox SSTidalCorridor_Text_1991F4, 4 call_if_set FLAG_RECEIVED_TM49, SSTidalCorridor_EventScript_15FE36 warp MAP_SLATEPORT_CITY_HARBOR, 255, 8, 11 diff --git a/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc b/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc index 37b2b95ab..1164e96d6 100644 --- a/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc +++ b/data/maps/SlateportCity_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ SlateportCity_PokemonCenter_1F_MapScripts:: @ 81563BF .byte 0 SlateportCity_PokemonCenter_1F_MapScript1_1563C5:: @ 81563C5 - setrespawn 4 + setrespawn HEAL_LOCATION_SLATEPORT_CITY call SlateportCity_PokemonCenter_1F_EventScript_19FD1B end diff --git a/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc b/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc index 820dd4858..ebfaf4e23 100644 --- a/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc +++ b/data/maps/SootopolisCity_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ SootopolisCity_PokemonCenter_1F_MapScripts:: @ 815B190 .byte 0 SootopolisCity_PokemonCenter_1F_MapScript1_15B196:: @ 815B196 - setrespawn 10 + setrespawn HEAL_LOCATION_SOOTOPOLIS_CITY end @ 815B19A diff --git a/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc b/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc index 956a28ac5..de2f770d6 100644 --- a/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc +++ b/data/maps/VerdanturfTown_PokemonCenter_1F/scripts.inc @@ -3,7 +3,7 @@ VerdanturfTown_PokemonCenter_1F_MapScripts:: @ 8153F09 .byte 0 VerdanturfTown_PokemonCenter_1F_MapScript1_153F0F:: @ 8153F0F - setrespawn 18 + setrespawn HEAL_LOCATION_VERDANTURF_TOWN call VerdanturfTown_PokemonCenter_1F_EventScript_19FD1B end diff --git a/data/pokenav.s b/data/pokenav.s index cb0e98472..485568157 100644 --- a/data/pokenav.s +++ b/data/pokenav.s @@ -700,7 +700,7 @@ gUnknown_083E4678:: @ 83E4678 .incbin "graphics/pokenav/83E4678.gbapal" .align 2 -gUnknown_083E4698:: @ 83E4698 +gPokenavRibbonsIconGfx:: @ 83E4698 .2byte 0, 0 .2byte 1, 0 .2byte 2, 0 diff --git a/graphics/unknown/unknown_E96EC8.bin b/graphics/interface/bag_screen_labels.bin Binary files differindex eaaed586e..eaaed586e 100644 --- a/graphics/unknown/unknown_E96EC8.bin +++ b/graphics/interface/bag_screen_labels.bin diff --git a/graphics/unknown_sprites/83C172C.png b/graphics/interface/bag_spinner.png Binary files differindex a05d86c79..a05d86c79 100644 --- a/graphics/unknown_sprites/83C172C.png +++ b/graphics/interface/bag_spinner.png diff --git a/include/battle_anim_813F0F4.h b/include/battle_anim_813F0F4.h index 9916f2fe6..fea5d186d 100644 --- a/include/battle_anim_813F0F4.h +++ b/include/battle_anim_813F0F4.h @@ -3,7 +3,7 @@ void sub_8141828(u8, struct Pokemon *); u8 ball_number_to_ball_processing_index(u16); -u8 sub_814086C(u8, u8, u8, u8, u8); +u8 AnimateBallOpenParticles(u8, u8, u8, u8, u8); u8 sub_8141314(u8, u8, u32, u8); #endif // GUARD_BATTLE_ANIM_813F0F4_H diff --git a/include/constants/heal_locations.h b/include/constants/heal_locations.h new file mode 100644 index 000000000..721bc5a3c --- /dev/null +++ b/include/constants/heal_locations.h @@ -0,0 +1,27 @@ +#ifndef GUARD_CONSTANTS_HEAL_LOCATIONS_H +#define GUARD_CONSTANTS_HEAL_LOCATIONS_H + +#define HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 1 +#define HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F 2 +#define HEAL_LOCATION_PETALBURG_CITY 3 +#define HEAL_LOCATION_SLATEPORT_CITY 4 +#define HEAL_LOCATION_MAUVILLE_CITY 5 +#define HEAL_LOCATION_RUSTBORO_CITY 6 +#define HEAL_LOCATION_FORTREE_CITY 7 +#define HEAL_LOCATION_LILYCOVE_CITY 8 +#define HEAL_LOCATION_MOSSDEEP_CITY 9 +#define HEAL_LOCATION_SOOTOPOLIS_CITY 10 +#define HEAL_LOCATION_EVER_GRANDE_CITY_1 11 +#define HEAL_LOCATION_LITTLEROOT_TOWN_1 12 +#define HEAL_LOCATION_LITTLEROOT_TOWN_2 13 +#define HEAL_LOCATION_OLDALE_TOWN 14 +#define HEAL_LOCATION_DEWFORD_TOWN 15 +#define HEAL_LOCATION_LAVARIDGE_TOWN 16 +#define HEAL_LOCATION_FALLARBOR_TOWN 17 +#define HEAL_LOCATION_VERDANTURF_TOWN 18 +#define HEAL_LOCATION_PACIFIDLOG_TOWN 19 +#define HEAL_LOCATION_EVER_GRANDE_CITY_2 20 +#define HEAL_LOCATION_BATTLE_TOWER_OUTSIDE 21 +#define HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR 22 + +#endif // GUARD_CONSTANTS_HEAL_LOCATIONS_H diff --git a/include/global.h b/include/global.h index 36e1db978..374701930 100644 --- a/include/global.h +++ b/include/global.h @@ -96,12 +96,15 @@ enum LanguageId // capacities of various saveblock objects #define DAYCARE_MON_COUNT 2 #define POKEBLOCKS_COUNT 40 -#define EVENT_OBJECTS_COUNT 16 +#define PARTY_SIZE 6 +#define EVENT_OBJECTS_COUNT 16 #define BERRY_TREES_COUNT 128 #define FLAGS_COUNT 288 #define VARS_COUNT 256 #define MAIL_COUNT 16 #define SECRET_BASES_COUNT 20 +#define TV_SHOWS_COUNT 25 +#define POKE_NEWS_COUNT 16 #define PC_ITEMS_COUNT 50 #define BAG_ITEMS_COUNT 20 #define BAG_KEYITEMS_COUNT 20 @@ -686,8 +689,8 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2704*/ u8 decorDoll[40]; /*0x272C*/ u8 decorCushion[10]; /*0x2736*/ u8 padding_2736[2]; - /*0x2738*/ TVShow tvShows[25]; - /*0x2ABC*/ struct PokeNews pokeNews[16]; + /*0x2738*/ TVShow tvShows[TV_SHOWS_COUNT]; + /*0x2ABC*/ struct PokeNews pokeNews[POKE_NEWS_COUNT]; /*0x2AFC*/ u16 outbreakPokemonSpecies; /*0x2AFE*/ u8 outbreakLocationMapNum; /*0x2AFF*/ u8 outbreakLocationMapGroup; diff --git a/include/graphics.h b/include/graphics.h index d9390e1b6..f242e3752 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -2615,7 +2615,7 @@ extern const u8 gMailTilemap_Dream[]; extern const u8 gMailTilemap_Fab[]; extern const u8 gMailTilemap_Retro[]; -extern const u8 gUnknown_08E96EC8[]; +extern const u8 gBagScreenLabels_Tilemap[]; extern const u8 gMenuTrainerCard_Gfx[]; extern const u16 gMenuTrainerCard0Star_Pal[]; diff --git a/include/heal_location.h b/include/heal_location.h index 94dac2417..46f0d785a 100644 --- a/include/heal_location.h +++ b/include/heal_location.h @@ -1,8 +1,6 @@ #ifndef GUARD_HEAL_LOCATION_H #define GUARD_HEAL_LOCATION_H -#include "sprite.h" - struct HealLocation { s8 group; diff --git a/include/pokeball.h b/include/pokeball.h index 0a709c869..e814718c0 100644 --- a/include/pokeball.h +++ b/include/pokeball.h @@ -5,8 +5,8 @@ extern const struct SpriteTemplate gBallSpriteTemplates[]; void CreatePokeballSprite(u8 r0, u8 r1, u8 r2, u8 r3, u8 s1, u8 s2, u8 s3, u32 s4); void sub_804777C(u8); -void sub_80478DC(u8); -void sub_804794C(u8); +void LoadBallGraphics(u8); +void FreeBallGraphics(u8); u8 sub_8047580(u8, u8, u8, u8, u8, u8, u8, u32); #endif // GUARD_POKEBALL_H diff --git a/include/pokedex.h b/include/pokedex.h index f051b4afe..1d3d9b388 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -3,6 +3,9 @@ #include "sprite.h" +#define HOENN_DEX_COUNT 202 +#define NATIONAL_DEX_COUNT 386 + void ResetPokedex(void); void sub_808C0A0(void); void CB2_InitPokedex(void); diff --git a/include/pokemon.h b/include/pokemon.h index 783263aad..67ce267ab 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -137,7 +137,6 @@ #define STATUS_PRIMARY_POKERUS 0x6 #define STATUS_PRIMARY_FAINTED 0x7 -#define PARTY_SIZE 6 #define MAX_TOTAL_EVS 510 #define NUM_STATS 6 #define UNOWN_FORM_COUNT 28 diff --git a/include/pokenav.h b/include/pokenav.h index f77f93e2d..a72cea9c4 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -2,10 +2,13 @@ #define GUARD_POKENAV_H #include "region_map.h" +#include "mon_markings.h" struct UnkPokenavStruct_Sub { /*0x0*/ u16 unk0; - /*0x2*/ u8 filler2[6]; + /*0x2*/ u16 unk2; + /*0x4*/ u8 unk4; + /*0x5*/ u8 unk5; }; struct UnkPokenavStruct_Sub1 { @@ -27,36 +30,65 @@ struct UnkPokenavStruct_Sub1 { /*0x66*/ s16 unk66[5]; }; -struct UnkPokenavStruct_Sub2 { - /*0x00*/ u8 filler_00[0x26]; - /*0x26*/ u16 unk26; -}; - struct UnkPokenavStruct_Sub3 { /*0x00*/s16 unk0; }; struct UnkUsePokeblockSub { - /*0*/ u8 fil0[2]; - /*2*/ u8 partyIdx:5; - /*2*/ u16 unk2:9; + /*0x0*/ u8 unk0; + /*0x1*/ u8 unk1; + /*0x2*/ u8 partyIdx:5; + /*0x2*/ u16 unk2:9; + /*0x3*/ u8 unk4:1; +}; + +struct UnkPokenav11 { + u16 unk0; + u16 unk2; }; struct UnkPokenavStruct { - /*0x0000*/ u8 filler0000[0x306]; + /*0x0000*/ u16 unk0[6][0x40]; + /*0x0300*/ u8 filler0300[0x6]; /*0x0306*/ u16 unk306; - /*0x0306*/ u8 filler0308[0x4]; - /*0x030C*/ union { // TODO: what? - u16 val; - struct UnkPokenavStruct_Sub3 unk030C; - } unk030C; - /*0x0310*/ u8 filler030E[0x6a90]; + /*0x0306*/ int unk308; + /*0x030C*/ s16 unk030C; + /*0x030E*/ s8 unk30E; + /*0x030F*/ u8 unk30F; + /*0x0310*/ u8 filler0310[0x1]; + /*0x0311*/ u8 unk311; + /*0x0312*/ u16 unk312; + /*0x0314*/ u16 unk314[6]; + /*0x0320*/ struct Sprite *unk320[6][4]; + /*0x0380*/ struct SpriteSheet unk380; + /*0x0388*/ u8 unk388[0x1400]; + /*0x1788*/ u8 unk1788[0xC00]; + /*0x2388*/ u8 unk2388[0x1800]; + /*0x3B88*/ struct Sprite *unk3B88[2]; + /*0x3B90*/ struct Sprite *unk3B90[2]; + /*0x3B98*/ u8 unk3B98[0x600]; + /*0x4198*/ u8 unk4198[0x600]; + /*0x4798*/ u8 unk4798[0x600]; + /*0x4D98*/ u8 unk4D98[0x600]; + /*0x5398*/ u8 unk5398[0xC00]; + /*0x5F98*/ u8 unk5F98[0x200]; + /*0x6198*/ u8 unk6198[0x200]; + /*0x6398*/ u8 unk6398[0x200]; + /*0x6598*/ u8 unk6598[0x200]; + /*0x6798*/ u8 unk6798[0x200]; + /*0x6998*/ u8 unk6998[0x200]; + /*0x6B98*/ u8 unk6B98[0x200]; + /*0x6D98*/ struct Sprite *unk6D98; + /*0x6D9C*/ struct Sprite *unk6D9C; /*0x6DA0*/ u16 unk6DA0; /*0x6DA2*/ u16 unk6DA2; /*0x6DA4*/ u16 taskId6DA4; /*0x6DA6*/ u8 filler6DA6[0x6]; /*0x6DAC*/ u8 unk6DAC; - /*0x6DAD*/ u8 filler6DAD[0x6B]; + /*0x6DAD*/ s8 unk6DAD; + /*0x6DAE*/ s8 unk6DAE; + /*0x6DAF*/ u8 filler6DAF[0x3]; + /*0x6DB2*/ u8 unk6DB2[0x66]; /*0x6E18*/ struct RegionMap regionMap; /*0x7698*/ u16 unk7698; /*0x769A*/ u16 unk769A; @@ -65,38 +97,80 @@ struct UnkPokenavStruct { /*0x769E*/ u8 unk769E; /*0x769F*/ u8 filler769F[0xB]; /*0x76AA*/ u8 unk76AA; - /*0x76AB*/ u8 filler76AB[0x10bd]; - /*0x8768*/ struct UnkPokenavStruct_Sub2 *unk8768; - /*0x876C*/ u8 filler876C[0x2]; - /*0x876E*/ u8 unk876E; - /*0x876F*/ u8 filler876F[0x7]; - /*0x8776*/ u16 unk8776; + /*0x76AC*/ struct Sprite *unk76AC; + /*0x76B0*/ struct PokemonMarkMenu unk76B0; + /*0x8764*/ u16 unk8764; + /*0x8766*/ s16 unk8766; + /*0x8768*/ struct Sprite *unk8768; + /*0x876C*/ s16 unk876C; + /*0x876E*/ s16 unk876E; + /*0x8770*/ s16 unk8770; + /*0x8772*/ s16 unk8772; + /*0x8774*/ s16 unk8774; + /*0x8776*/ s16 unk8776; /*0x8778*/ u16 unk8778; - /*0x877A*/ u8 filler877A[0xE]; + /*0x877A*/ s16 unk877A; + /*0x877C*/ s16 unk877C; + /*0x877E*/ u16 unk877E; + /*0x8780*/ u16 unk8780; + /*0x8782*/ u8 filler8782[0x2]; + /*0x8784*/ u16 unk8784; + /*0x8786*/ u16 unk8786; /*0x8788*/ u8 unk8788[0x40]; /*0x87C8*/ u8 unk87C8; - /*0x87C9*/ u8 filler87C9; + /*0x87C9*/ u8 unk87C9; /*0x87CA*/ u8 unk87CA; - /*0x87CB*/ u8 filler87CB[0xF]; + /*0x87CB*/ u8 unk87CB; + /*0x87CC*/ struct Sprite *unk87CC; + /*0x87D0*/ struct Sprite *unk87D0[2]; + /*0x87D8*/ u8 unk87D8; + /*0x87D9*/ u8 filler87D9[0x1]; /*0x87DA*/ s16 unk87DA; /*0x87DC*/ s16 unk87DC; - /*0x87DE*/ s16 unk87DE; - /*0x87E0*/ void *unk87E0; - /*0x87E4*/ u8 filler87E4[0x44]; + /*0x87DE*/ u8 unk87DE; + /*0x87DF*/ u8 filler87DF[0x1]; + /*0x87E0*/ bool8 (*unk87E0)(void); + /*0x87E4*/ struct Sprite *unk87E4[7]; + /*0x8800*/ struct Sprite *unk8800[10]; /*0x8828*/ u8 unk8828; /*0x8829*/ u8 unk8829[3][64]; /*0x88E9*/ u8 unk88E9[3][24]; - /*0x8931*/ u8 unk8931[11]; - /*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1ab]; - /*0x8fe8*/ u8 fil8fe8[1]; + /*0x8931*/ u8 unk8931[3]; + /*0x8934*/ u8 unk8934[3]; + /*0x8937*/ u8 unk8937[5]; + /*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1AA]; + /*0x8FE4*/ u16 unk8FE4; + /*0x8FE6*/ u8 unk8FE6; + /*0x8FE7*/ u8 unk8FE7; + /*0x8FE8*/ u8 filler8FE8[0x1]; /*0x8fe9*/ s8 unk8fe9; - /*0x8fea*/ u8 fil8fea[6]; - /*0x8ff0*/ u8 unk8ff0; - /*0x8ff1*/ u8 filler8ff1[0x13]; - /*0x9004*/ u8 unk9004[3][20]; - /*0x9040*/ u8 unk9040[0x304]; + /*0x8fea*/ s8 unk8FEA; + /*0x8feb*/ s8 unk8FEB; + /*0x8fec*/ s8 unk8FEC; + /*0x8FED*/ u8 filler8FED[0x1]; + /*0x8fee*/ u16 unk8FEE; + /*0x8ff0*/ u8 unk8ff0[4][5]; + /*0x9004*/ struct UnkPokenav11 unk9004[3][5]; + /*0x9040*/ struct UnkPokenav11 unk9040[5]; + /*0x9054*/ struct UnkPokenav11 unk9054[9][5]; + /*0x9108*/ u8 unk9108[0x14]; + /*0x911C*/ struct UnkPokenav11 unk911C[5]; + /*0x9130*/ u8 filler9130[0x212]; + /*0x9342*/ u16 unk9342; /*0x9344*/ u8 unk9344; - /*0x9345*/ u8 filler9345[0x2955]; + /*0x9345*/ u8 filler9345[3]; + /*0x9348*/ struct Sprite *unk9348; + /*0x934C*/ u16 unk934C[0x280]; + /*0x984C*/ u8 unk984C[0xC][0x100]; + /*0xA44C*/ u8 unkA44C[0xC][0x200]; + /*0xBC4C*/ u8 unkBC4C[0x42]; + /*0xBC8E*/ u8 unkBC8E; + /*0xBC8F*/ u8 unkBC8F; + /*0xBC90*/ u8 unkBC90; + /*0xBC91*/ u8 unkBC91; + /*0xBC92*/ u8 unkBC92; + /*0xBC93*/ u8 unkBC93; + /*0xBC94*/ u8 fillerBC94[0x6]; /*0xBC9A*/ u8 unkBC9A; /*0xBC9B*/ u8 unkBC9B; /*0xBC9C*/ u8 unkBC9C[22][200]; @@ -105,13 +179,27 @@ struct UnkPokenavStruct { /*0xCE4E*/ u16 unkCE4E; /*0xCE50*/ u16 unkCE50; /*0xCE52*/ u16 palettesCE52[30]; - /*0xCE8E*/ u16 palettesCE8E[0x2D]; - /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78]; + /*0xCE8E*/ u16 palettesCE8E[0x21]; + /*0xCED0*/ struct Sprite *unkCED0; + /*0xCED4*/ struct Sprite *unkCED4[5]; + /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[69]; + /*0xD110*/ const u8 *trainerEyeDescriptionLines[4]; + /*0xD120*/ u8 fillerD114[0x18]; + /*0xD138*/ u8 unkD138[0x20]; /*0xD158*/ u16 unkD158; - /*0xD15A*/ u8 fillerD15A[6]; + /*0xD15A*/ u16 unkD15A; + /*0xD15C*/ u16 unkD15C; + /*0xD15E*/ u8 fillerD15E[2]; /*0xD160*/ u16 unkD160; - /*0xD162*/ u8 unkD162[2]; + /*0xD162*/ u8 unkD162; /*0xD164*/ struct UnkPokenavStruct_Sub1 unkD164; + /*0xD1D4*/ u8 fillerD1D6[0x2]; + /*0xD1D6*/ u16 unkD1D6[3]; + /*0xD1DC*/ u16 unkD1DC; + /*0xD1DE*/ u16 unkD1DE; + /*0xD1E0*/ u8 *unkD1E0; + /*0xD1E4*/ u8 unkD1E4[3][0x2000]; + /*0x131E4*/ u8 unk131E4[0x1000]; }; extern struct UnkPokenavStruct *const gUnknown_083DFEC4; @@ -128,7 +216,7 @@ void sub_80F33A8(void); void sub_80F3C94(void); void sub_80F3D00(void); void sub_80F4BD0(void); -void sub_80F556C(void *); +void sub_80F556C(struct UnkPokenav11*); void sub_80F567C(void *, void *); void sub_80F5B38(void); bool8 sub_80F5B50(void); @@ -137,7 +225,7 @@ void sub_80EBA5C(void); void sub_80F5060(bool8); void move_anim_execute(void); bool8 gpu_sync_bg_show(void); -void sub_80F5550(void *, void *); +void sub_80F5550(struct UnkPokenav11*, struct UnkPokenav11*); bool8 sub_80F555C(void); void sub_80F7224(u8); void sub_80F5BDC(void); diff --git a/include/region_map.h b/include/region_map.h index 4c10d84cb..7ded72e49 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -78,6 +78,7 @@ const u8 *CopyLocationName(u8 *dest, u16 b); void CB2_InitFlyRegionMap(void); void debug_sub_8110F28(void); u16 GetRegionMapSectionAt_(u16 x, u16 y); +void sub_80FBF94(void); extern const struct RegionMapLocation gRegionMapLocations[]; diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h index 978476d89..025a135a4 100644 --- a/include/use_pokeblock.h +++ b/include/use_pokeblock.h @@ -9,5 +9,6 @@ extern void *gUnknown_02030400; extern s16 gUnknown_02039312; void sub_8136130(struct Pokeblock *, MainCallback); +u8 sub_8137124(u8); #endif //POKERUBY_USE_POKEBLOCK_H diff --git a/src/battle/battle_anim_812C144.c b/src/battle/battle_anim_812C144.c index 0e9c45023..6edc56549 100644 --- a/src/battle/battle_anim_812C144.c +++ b/src/battle/battle_anim_812C144.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle.h" #include "battle_anim.h" +#include "blend_palette.h" #include "contest.h" #include "data2.h" #include "decompress.h" @@ -18,6 +19,7 @@ extern s16 gBattleAnimArgs[]; extern u8 gAnimBankAttacker; extern u8 gAnimBankTarget; extern u8 gAnimVisualTaskCount; +extern u8 gAnimFriendship; extern s32 gAnimMoveDmg; extern u16 gBattle_WIN0H; extern u16 gBattle_WIN0V; @@ -30,6 +32,9 @@ extern u16 gBattle_BG2_Y; extern const struct SpriteTemplate gBattleAnimSpriteTemplate_83D7220; extern const struct SpriteTemplate gSpriteTemplate_8402500; +extern const struct SpriteTemplate gSpriteTemplate_84028CC; +extern const struct SpriteTemplate gSpriteTemplate_840294C; +extern const struct SpriteTemplate gSpriteTemplate_84029AC; extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18[]; extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7BEC[]; extern const union AffineAnimCmd gUnknown_08402400[]; @@ -38,6 +43,9 @@ extern const union AffineAnimCmd gUnknown_08402518[]; extern const union AffineAnimCmd gUnknown_08402540[]; extern const union AffineAnimCmd gUnknown_08402590[]; extern const union AffineAnimCmd gUnknown_08402610[]; +extern const union AffineAnimCmd gUnknown_08402750[]; +extern const union AffineAnimCmd gUnknown_084028AC[]; +extern const union AffineAnimCmd gUnknown_084029DC[]; extern const u32 gUnknown_08D2AA98[]; extern const u32 gUnknown_08D2A9E0[]; extern const u16 gUnknown_08D2AA80[]; @@ -45,11 +53,17 @@ extern const s8 gUnknown_084025C0[]; extern const s8 gUnknown_08402604[]; extern const u8 gUnknown_08402608[]; extern const struct SpriteTemplate gBattleAnimSpriteTemplate_84025EC; +extern const u8 gUnknown_08D2E014[]; +extern const u8 gUnknown_08D2E170[]; +extern const u16 gUnknown_08D2E150[]; extern u8 gBattleMonForms[]; extern u8 gBankSpriteIds[]; extern u16 gBattlerPartyIndexes[]; +extern s16 gUnknown_084028E4[]; extern u8 sub_8046234(s16 x, s16 y, u8 a3); +extern void sub_80DA48C(struct Sprite *); +extern void sub_80E3C4C(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u8 *arg8, const u8 *arg9, const u16 *palette); static void sub_812C184(struct Sprite *sprite); static void sub_812C268(struct Sprite *sprite); @@ -82,7 +96,26 @@ static void sub_812EE00(struct Sprite *sprite); static void sub_812EEEC(struct Sprite *sprite); /*static*/ void sub_812F238(u8 taskId); static void sub_812F290(u8 taskId); -void sub_812F474(u8 taskId); +static void sub_812F474(u8 taskId); +static void sub_812F76C(u8 taskId); +static void sub_812F8DC(struct Sprite *sprite); +static void sub_812FE20(u8 taskId); +static void sub_812FEB8(u8, bool8); +static void sub_813003C(u8 taskId); +static void sub_81301B4(struct Sprite *sprite); +static void sub_81302E4(u8 taskId); +static void sub_8130424(s16, s16, s16, s16, u8, u8, s16*, s16*); +static void sub_81306A4(u8 taskId); +static void sub_813085C(struct Sprite *sprite); +static void sub_8130970(u8 taskId); +static void sub_8130A94(struct Sprite *sprite); +static void sub_8130B38(struct Sprite *sprite); +static void sub_8130DBC(u8 taskId); +static void sub_8130FE0(struct Sprite *sprite); +static void sub_8131408(u8 taskId); +static void sub_81315C8(struct Sprite *sprite); +static void sub_8131810(u8 taskId); +static void sub_8131838(struct Sprite *sprite); void sub_812C144(struct Sprite *sprite) @@ -2553,3 +2586,1557 @@ void sub_812F314(u8 taskId) ScanlineEffect_SetParams(scanlineParams); task->func = sub_812F474; } + +static void sub_812F474(u8 taskId) +{ + struct Task *task; + s16 var1; + s16 var2; + s16 bgX, bgY; + s16 offset; + s16 var0; + s16 i; + s16 sineIndex; + s16 var3; + + task = &gTasks[taskId]; + if (GetBattlerPosition_permutated(task->data[5]) == 1) + { + bgX = gBattle_BG1_X; + bgY = gBattle_BG1_Y; + } + else + { + bgX = gBattle_BG2_X; + bgY = gBattle_BG2_Y; + } + + switch (task->data[0]) + { + case 0: + offset = task->data[14] * 2; + var1 = 0; + var2 = 0; + i = 0; + task->data[1] = (task->data[1] + 2) & 0xFF; + sineIndex = task->data[1]; + task->data[9] = 0x7E0 / task->data[6]; + task->data[10] = -((task->data[7] * 2) / task->data[9]); + task->data[11] = task->data[7]; + var3 = task->data[11] >> 5; + task->data[12] = var3; + var0 = task->data[14]; + while (var0 > task->data[13]) + { + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][offset + 1] = (i - var2) + bgY; + gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][offset] = bgX + var3 + (gSineTable[sineIndex] >> 5); + sineIndex = (sineIndex + 10) & 0xFF; + task->data[11] += task->data[10]; + var3 = task->data[11] >> 5; + task->data[12] = var3; + + i++; + offset -= 2; + var1 += task->data[6]; + var2 = var1 >> 5; + var0--; + } + + var0 *= 2; + while (var0 >= 0) + { + gScanlineEffectRegBuffers[0][var0] = bgX + 240; + gScanlineEffectRegBuffers[1][var0] = bgX + 240; + var0 -= 2; + } + + if (++task->data[6] > 63) + { + task->data[6] = 64; + task->data[2]++; + if (task->data[2] & 1) + task->data[3]--; + else + task->data[4]++; + + REG_BLDALPHA = (task->data[4] << 8) | task->data[3]; + if (task->data[3] == 0 && task->data[4] == 16) + { + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; + } + } + else + { + task->data[7] += task->data[8]; + } + break; + case 1: + if (++task->data[2] > 12) + { + gScanlineEffect.state = 3; + task->data[2] = 0; + task->data[0]++; + } + break; + case 2: + task->data[2]++; + if (task->data[2] & 1) + task->data[3]++; + else + task->data[4]--; + + REG_BLDALPHA = (task->data[4] << 8) | task->data[3]; + if (task->data[3] == 16 && task->data[4] == 0) + { + task->data[2] = 0; + task->data[3] = 0; + task->data[0]++; + } + break; + case 3: + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_812F724(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + task->data[0] = 0; + task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + sub_80798F4(&gTasks[taskId], task->data[15], &gUnknown_08402750); + task->func = sub_812F76C; +} + +static void sub_812F76C(u8 taskId) +{ + u16 var0; + + struct Task *task = &gTasks[taskId]; + var0 = task->data[0]; + task->data[0]++; + var0 -= 20; + if (var0 < 23) + { + if (++task->data[1] > 1) + { + task->data[1] = 0; + task->data[2]++; + if (task->data[2] & 1) + gSprites[task->data[15]].pos2.x = 1; + else + gSprites[task->data[15]].pos2.x = -1; + } + } + else + { + gSprites[task->data[15]].pos2.x = 0; + } + + if (!sub_807992C(&gTasks[taskId])) + DestroyAnimVisualTask(taskId); +} + +static void sub_812F804(struct Sprite *sprite, s16 b, s16 c, s16 d, s16 e, u16 f) +{ + sprite->pos1.x = b; + sprite->pos1.y = c; + sprite->data[4] = b << 4; + sprite->data[5] = c << 4; + sprite->data[6] = ((d - b) << 4) / f; + sprite->data[7] = ((e - c) << 4) / f; +} + +void sub_812F86C(struct Sprite *sprite) +{ + sprite->data[4] += sprite->data[6]; + sprite->data[5] += sprite->data[7]; + sprite->pos1.x = sprite->data[4] >> 4; + sprite->pos1.y = sprite->data[5] >> 4; +} + +void sub_812F88C(struct Sprite *sprite) +{ + s16 x = sprite->pos1.x; + s16 y = sprite->pos1.y; + + sub_8078650(sprite); + StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]); + sub_812F804(sprite, sprite->pos1.x, sprite->pos1.y, x, y, 64); + sprite->data[0] = 0; + sprite->callback = sub_812F8DC; +} + +static void sub_812F8DC(struct Sprite *sprite) +{ + int index; + + sprite->data[0]++; + index = (sprite->data[0] * 8) & 0xFF; + sub_812F86C(sprite); + sprite->pos2.y = Sin(index, 8); + if (sprite->data[0] > 58) + { + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + sprite->data[2]++; + sprite->invisible = sprite->data[2] & 1; + if (sprite->data[2] > 3) + move_anim_8074EE0(sprite); + } + } +} + +void sub_812F948(struct Sprite *sprite) +{ + sprite->data[0] = gBattleAnimArgs[3]; + StartSpriteAffineAnim(sprite, gBattleAnimArgs[0]); + if (GetBattlerSide(gAnimBankTarget) != B_SIDE_PLAYER) + gBattleAnimArgs[1] = -gBattleAnimArgs[1]; + + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + gBattleAnimArgs[1]; + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[2]; + sprite->callback = sub_80DA48C; +} + +static void sub_812F9B0(u8 taskId) +{ + u16 var0 = 0; + u16 var1 = 0; + + gTasks[taskId].data[0]--; + if ((gTasks[taskId].data[6] & 0x8000) && (--gTasks[taskId].data[1] == -1)) + { + if (gTasks[taskId].data[9] == 0) + { + gTasks[taskId].data[9] = gTasks[taskId].data[4]; + gTasks[taskId].data[4] = -gTasks[taskId].data[4]; + } + else + { + gTasks[taskId].data[9] = 0; + } + + if (gTasks[taskId].data[10] == 0) + { + gTasks[taskId].data[10] = gTasks[taskId].data[5]; + gTasks[taskId].data[5] = -gTasks[taskId].data[5]; + } + else + { + gTasks[taskId].data[10] = 0; + } + + gTasks[taskId].data[1] = gTasks[taskId].data[13]; + } + + var0 = gTasks[taskId].data[7]; + var1 = gTasks[taskId].data[8]; + if (gTasks[taskId].data[2] & 0x8000) + gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8); + else + gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8); + + if (gTasks[taskId].data[3] & 0x8000) + gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8); + else + gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8); + + if (gTasks[taskId].data[0] < 1) + { + DestroyTask(taskId); + gAnimVisualTaskCount--; + } +} + +static void sub_812FAF8(u8 taskId) +{ + u16 var0 = 0; + u16 var1 = 0; + + gTasks[taskId].data[0]--; + if ((gTasks[taskId].data[6] & 0x8000) && (--gTasks[taskId].data[1] == -1)) + { + if (gTasks[taskId].data[9] == 0) + { + gTasks[taskId].data[9] = gTasks[taskId].data[4]; + gTasks[taskId].data[4] = -gTasks[taskId].data[4]; + } + else + { + gTasks[taskId].data[9] = var0; + } + + if (gTasks[taskId].data[10] == 0) + { + gTasks[taskId].data[10] = gTasks[taskId].data[5]; + gTasks[taskId].data[5] = -gTasks[taskId].data[5]; + } + else + { + gTasks[taskId].data[10] = 0; + } + + gTasks[taskId].data[1] = gTasks[taskId].data[13]; + } + + var0 = (gTasks[taskId].data[2] & 0x7FFF) + gTasks[taskId].data[7]; + var1 = (gTasks[taskId].data[3] & 0x7FFF) + gTasks[taskId].data[8]; + if (gTasks[taskId].data[2] & 0x8000) + gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] - (var0 >> 8); + else + gSprites[gTasks[taskId].data[15]].pos2.x = gTasks[taskId].data[9] + (var0 >> 8); + + if (gTasks[taskId].data[3] & 0x8000) + gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] - (var1 >> 8); + else + gSprites[gTasks[taskId].data[15]].pos2.y = gTasks[taskId].data[10] + (var1 >> 8); + + gTasks[taskId].data[7] = var0; + gTasks[taskId].data[8] = var1; + if (gTasks[taskId].data[0] < 1) + { + gTasks[taskId].data[0] = 30; + gTasks[taskId].data[13] = 0; + gTasks[taskId].func = sub_812F9B0; + } +} + +void sub_812FC68(u8 taskId) +{ + gTasks[taskId].data[15] = gBankSpriteIds[gAnimBankAttacker]; + gTasks[taskId].data[14] = gBattleAnimArgs[0]; + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[13] = gBattleAnimArgs[6]; + if (gBattleAnimArgs[3]) + gTasks[taskId].data[6] = gTasks[taskId].data[6] | -0x8000; + + if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) + { + gTasks[taskId].data[2] = gBattleAnimArgs[1]; + gTasks[taskId].data[3] = gBattleAnimArgs[2]; + } + else + { + if (gBattleAnimArgs[1] & 0x8000) + gTasks[taskId].data[2] = gBattleAnimArgs[1] & 0x7FFF; + else + gTasks[taskId].data[2] = gBattleAnimArgs[1] | -0x8000; + + if (gBattleAnimArgs[2] & 0x8000) + gTasks[taskId].data[3] = gBattleAnimArgs[2] & 0x7FFF; + else + gTasks[taskId].data[3] = gBattleAnimArgs[2] | -0x8000; + } + + gTasks[taskId].data[8] = 0; + gTasks[taskId].data[7] = 0; + gTasks[taskId].data[4] = gBattleAnimArgs[4]; + gTasks[taskId].data[5] = gBattleAnimArgs[5]; + gTasks[taskId].func = sub_812FAF8; +} + +void sub_812FD7C(u8 taskId) +{ + u8 battler; + struct Task *task = &gTasks[taskId]; + + if (gBattleAnimArgs[1] == 0) + DestroyAnimVisualTask(taskId); + + task->data[0] = 0; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = gBattleAnimArgs[1]; + if (gBattleAnimArgs[0] == 0) + battler = gAnimBankAttacker; + else + battler = gAnimBankTarget; + + task->data[4] = GetBattlerSpriteCoord(battler, 0); + task->data[5] = GetBattlerSpriteCoord(battler, 1); + task->data[6] = sub_8079E90(battler); + task->data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + sub_80798F4(task, task->data[15], &gUnknown_084028AC); + task->func = sub_812FE20; +} + +static void sub_812FE20(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] == 6) + sub_812FEB8(taskId, TRUE); + + if (task->data[1] == 18) + sub_812FEB8(taskId, FALSE); + + if (!sub_807992C(task)) + { + if (--task->data[3] == 0) + { + task->data[0]++; + } + else + { + task->data[1] = 0; + sub_80798F4(task, task->data[15], &gUnknown_084028AC); + } + } + break; + case 1: + if (task->data[2] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_812FEB8(u8 taskId, bool8 arg1) +{ + u8 i; + s8 xOffset, yOffset; + struct Task *task; + s16 xCoords[4]; + s16 yCoords[2]; + + task = &gTasks[taskId]; + if (!arg1) + { + xOffset = 18; + yOffset = -20; + } + else + { + xOffset = 30; + yOffset = 20; + } + + xCoords[0] = task->data[4] - xOffset; + xCoords[1] = task->data[4] - xOffset - 4; + xCoords[2] = task->data[4] + xOffset; + xCoords[3] = task->data[4] + xOffset + 4; + yCoords[0] = task->data[5] + yOffset; + yCoords[1] = task->data[5] + yOffset + 6; + + for (i = 0; i < 4; i++) + { + u8 spriteId = CreateSprite(&gSpriteTemplate_84028CC, xCoords[i], yCoords[i & 1], task->data[6] - 5); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = i < 2 ? -2 : 2; + gSprites[spriteId].data[2] = -1; + gSprites[spriteId].data[3] = taskId; + gSprites[spriteId].data[4] = 2; + task->data[2]++; + } + } +} + +void sub_812FF94(struct Sprite *sprite) +{ + sprite->pos1.x += sprite->data[1]; + sprite->pos1.y += sprite->data[2]; + if (++sprite->data[0] > 6) + { + gTasks[sprite->data[3]].data[sprite->data[4]]--; + DestroySprite(sprite); + } +} + +void sub_812FFE4(u8 taskId) +{ + u8 spriteId; + + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = gBattleAnimArgs[1]; + spriteId = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + gTasks[taskId].data[2] = 0x100 + gSprites[spriteId].oam.paletteNum * 16; + gTasks[taskId].func = sub_813003C; +} + +static void sub_813003C(u8 taskId) +{ + if (gTasks[taskId].data[1]) + { + BlendPalette(gTasks[taskId].data[2], 16, 8, gUnknown_084028E4[gTasks[taskId].data[0]]); + if (++gTasks[taskId].data[0] > 23) + gTasks[taskId].data[0] = 0; + + gTasks[taskId].data[1]--; + } + else + { + BlendPalette(gTasks[taskId].data[2], 16, 0, RGB(0, 0, 0)); + DestroyAnimVisualTask(taskId); + } +} + +void sub_81300A4(u8 taskId) +{ + sub_80E3C4C( + taskId, + 0, + 0x1A0, + gAnimBankAttacker, + gBattleAnimArgs[0], + 10, + 2, + 30, + gUnknown_08D2E014, + gUnknown_08D2E170, + gUnknown_08D2E150); +} + +void sub_81300F4(struct Sprite *sprite) +{ + if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_OPPONENT) + gBattleAnimArgs[0] = -gBattleAnimArgs[0]; + + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 0) + gBattleAnimArgs[0]; + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + gBattleAnimArgs[1]; + if (gBattleAnimArgs[2] == 0) + { + sprite->data[0] = 640; + sprite->data[1] = -640; + } + else if (gBattleAnimArgs[2] == 1) + { + sprite->vFlip = 1; + sprite->data[0] = 640; + sprite->data[1] = 640; + } + else + { + StartSpriteAnim(sprite, 1); + sprite->data[0] = 640; + } + + if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER) + { + sprite->data[0] = -sprite->data[0]; + sprite->hFlip = 1; + } + + sprite->callback = sub_81301B4; +} + +static void sub_81301B4(struct Sprite *sprite) +{ + sprite->data[6] += sprite->data[0]; + sprite->data[7] += sprite->data[1]; + sprite->pos2.x = sprite->data[6] >> 8; + sprite->pos2.y = sprite->data[7] >> 8; + if (++sprite->data[5] == 14) + DestroyAnimSprite(sprite); +} + +void sub_81301EC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (IsContest()) + { + task->data[5] = 8; + task->data[6] = 3; + task->data[7] = 1; + } + else + { + task->data[5] = 12; + task->data[6] = 3; + task->data[7] = 0; + } + + if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER) + task->data[11] = GetBattlerSpriteCoord(gAnimBankAttacker, 2) + sub_807A100(gAnimBankAttacker, 0) / 4; + else + task->data[11] = GetBattlerSpriteCoord(gAnimBankAttacker, 2) - sub_807A100(gAnimBankAttacker, 0) / 4; + + task->data[12] = GetBattlerSpriteCoord(gAnimBankAttacker, 3) - sub_807A100(gAnimBankAttacker, 0) / 4; + task->data[13] = GetBattlerSpriteCoord(gAnimBankTarget, 2); + task->data[14] = GetBattlerSpriteCoord(gAnimBankTarget, 3); + task->func = sub_81302E4; +} + +static void sub_81302E4(u8 taskId) +{ + u8 i; + s16 x, y; + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 3) + { + task->data[1] = 0; + sub_8130424( + task->data[11], + task->data[12], + task->data[13], + task->data[14], + task->data[5], + task->data[2], + &x, + &y); + + for (i = 0; i < 2; i++) + { + u8 spriteId = CreateSprite(&gSpriteTemplate_840294C, x, y, 35); + if (spriteId != MAX_SPRITES) + { + if (task->data[7] == 0) + { + if (i == 0) + gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = -task->data[6]; + else + gSprites[spriteId].pos2.x = gSprites[spriteId].pos2.y = task->data[6]; + } + else + { + if (i == 0) + { + gSprites[spriteId].pos2.x = -task->data[6]; + gSprites[spriteId].pos2.y = task->data[6]; + } + else + { + gSprites[spriteId].pos2.x = task->data[6]; + gSprites[spriteId].pos2.y = -task->data[6]; + } + } + + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = taskId; + gSprites[spriteId].data[2] = 10; + task->data[10]++; + } + } + + if (task->data[2] == task->data[5]) + task->data[0]++; + + task->data[2]++; + } + break; + case 1: + if (task->data[10] == 0) + DestroyAnimVisualTask(taskId); + break; + } +} + +static void sub_8130424(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4, u8 arg5, s16 *x, s16 *y) +{ + int x2; + int y2; + + if (arg5 == 0) + { + *x = arg0; + *y = arg1; + return; + } + + if (arg5 >= arg4) + { + *x = arg2; + *y = arg3; + return; + } + + arg4--; + x2 = (arg0 << 8) + arg5 * (((arg2 - arg0) << 8) / arg4); + y2 = (arg1 << 8) + arg5 * (((arg3 - arg1) << 8) / arg4); + *x = x2 >> 8; + *y = y2 >> 8; +} + +void sub_81304DC(struct Sprite *sprite) +{ + if (++sprite->data[0] > 36) + { + gTasks[sprite->data[1]].data[sprite->data[2]]--; + DestroySprite(sprite); + } +} + +void sub_813051C(struct Sprite *sprite) +{ + sprite->pos1.x = gBattleAnimArgs[0]; + sprite->pos1.y = gBattleAnimArgs[1]; + sprite->data[2] = gBattleAnimArgs[2]; + sprite->data[4] = gBattleAnimArgs[3]; + sprite->data[0] = gBattleAnimArgs[4]; + StoreSpriteCallbackInData(sprite, DestroyAnimSprite); + sprite->callback = sub_8078CC0; +} + +void sub_8130554(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[11] = GetBattlerSpriteCoord(gAnimBankAttacker, 2); + task->data[12] = GetBattlerSpriteCoord(gAnimBankAttacker, 3); + task->data[13] = GetBattlerSpriteCoord(gAnimBankTarget, 2); + task->data[14] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + sub_807A100(gAnimBankTarget, 0) / 4; + task->data[15] = CreateSprite(&gSpriteTemplate_84029AC, task->data[11], task->data[12], sub_8079E90(gAnimBankTarget) - 5); + if (task->data[15] != MAX_SPRITES) + { + gSprites[task->data[15]].data[0] = 16; + gSprites[task->data[15]].data[2] = task->data[13]; + gSprites[task->data[15]].data[4] = task->data[14]; + gSprites[task->data[15]].data[5] = -32; + InitAnimArcTranslation(&gSprites[task->data[15]]); + if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_OPPONENT) + StartSpriteAffineAnim(&gSprites[task->data[15]], 1); + + task->func = sub_81306A4; + } + else + { + DestroyAnimVisualTask(taskId); + } +} + +static void sub_81306A4(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] > 1) + { + task->data[1] = 0; + TranslateAnimArc(&gSprites[task->data[15]]); + if (++task->data[2] > 7) + task->data[0]++; + } + break; + case 1: + if (TranslateAnimArc(&gSprites[task->data[15]])) + { + task->data[1] = 0; + task->data[2] = 0; + task->data[0]++; + } + break; + case 2: + if (++task->data[1] > 1) + { + task->data[1] = 0; + task->data[2]++; + gSprites[task->data[15]].invisible = task->data[2] & 1; + if (task->data[2] == 16) + { + FreeOamMatrix(gSprites[task->data[15]].oam.matrixNum); + DestroySprite(&gSprites[task->data[15]]); + task->data[0]++; + } + } + break; + case 3: + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_81307B0(struct Sprite *sprite) +{ + u8 battler; + + if (gBattleAnimArgs[0] == 0) + battler = gAnimBankAttacker; + else + battler = gAnimBankTarget; + + sprite->oam.tileNum += 16; + sprite->data[6] = gBattleAnimArgs[2]; + sprite->data[7] = gBattleAnimArgs[1] == 0 ? -1 : 1; + sprite->pos1.y = GetBattlerSpriteCoord(battler, 3); + if (gBattleAnimArgs[1] == 0) + { + sprite->oam.matrixNum |= 0x8; + sprite->pos1.x = sub_807A100(battler, 4) - 8; + } + else + { + sprite->pos1.x = sub_807A100(battler, 5) + 8; + } + + sprite->callback = sub_813085C; +} + +static void sub_813085C(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + sprite->pos2.x += sprite->data[7]; + if (++sprite->data[2] == 12) + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] == 8) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 2: + sprite->pos2.x -= sprite->data[7] * 4; + if (++sprite->data[1] == 6) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 3: + sprite->pos2.x += sprite->data[7] * 3; + if (++sprite->data[1] == 8) + { + if (--sprite->data[6]) + { + sprite->data[1] = 0; + sprite->data[0]--; + } + else + { + DestroyAnimSprite(sprite); + } + } + break; + } +} + +void sub_8130918(u8 taskId) +{ + if (gBattleAnimArgs[0] == 0) + { + DestroyAnimVisualTask(taskId); + } + else + { + gTasks[taskId].data[0] = gBattleAnimArgs[1]; + gTasks[taskId].data[15] = GetAnimBattlerSpriteId(gBattleAnimArgs[0]); + sub_80798F4(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC); + gTasks[taskId].func = sub_8130970; + } +} + +static void sub_8130970(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + if (++task->data[1] > 1) + { + task->data[1] = 0; + if (!(task->data[2] & 1)) + gSprites[task->data[15]].pos2.x = 2; + else + gSprites[task->data[15]].pos2.x = -2; + } + + if (!sub_807992C(task)) + { + gSprites[task->data[15]].pos2.x = 0; + if (--task->data[0]) + { + sub_80798F4(&gTasks[taskId], gTasks[taskId].data[15], &gUnknown_084029DC); + task->data[1] = 0; + task->data[2] = 0; + } + else + { + DestroyAnimVisualTask(taskId); + } + } +} + +void sub_8130A2C(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankAttacker, 2); + sprite->pos1.y = sub_807A100(gAnimBankAttacker, 2); + } + else + { + sprite->pos1.x = GetBattlerSpriteCoord(gAnimBankTarget, 2); + sprite->pos1.y = sub_807A100(gAnimBankTarget, 2); + } + + if (sprite->pos1.y < 8) + sprite->pos1.y = 8; + + sprite->data[0] = 0; + sprite->data[1] = gBattleAnimArgs[1]; + sprite->data[2] = 0; + sprite->data[3] = gBattleAnimArgs[2]; + sprite->callback = sub_8130A94; +} + +static void sub_8130A94(struct Sprite *sprite) +{ + if (++sprite->data[0] >= sprite->data[1]) + { + sprite->data[0] = 0; + sprite->data[2] = (sprite->data[2] + 1) & 1; + sprite->invisible = sprite->data[2]; + if (sprite->data[2] && --sprite->data[3] == 0) + DestroyAnimSprite(sprite); + } +} + +void sub_8130AEC(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + sprite->oam.matrixNum |= 0x8; + sprite->pos1.x = 100; + sprite->data[7] = 1; + } + else + { + sprite->pos1.x = 140; + sprite->data[7] = -1; + } + + sprite->pos1.y = 56; + sprite->callback = sub_8130B38; +} + +static void sub_8130B38(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos1.y -= sprite->data[7] * 2; + if (sprite->data[1] & 1) + sprite->pos1.x -= sprite->data[7] * 2; + + if (++sprite->data[1] == 9) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] == 4) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 2: + sprite->data[1]++; + sprite->pos1.y += sprite->data[7] * 3; + sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3); + if (sprite->data[1] == 12) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 3: + if (++sprite->data[1] == 2) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 4: + sprite->data[1]++; + sprite->pos1.y -= sprite->data[7] * 3; + sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3); + if (sprite->data[1] == 12) + sprite->data[0]++; + break; + case 5: + sprite->data[1]++; + sprite->pos1.y += sprite->data[7] * 3; + sprite->pos2.x = sprite->data[7] * (gSineTable[sprite->data[1] * 10] >> 3); + if (sprite->data[1] == 15) + sprite->oam.tileNum += 16; + + if (sprite->data[1] == 18) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 6: + sprite->pos1.x += sprite->data[7] * 6; + if (++sprite->data[1] == 9) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 7: + sprite->pos1.x += sprite->data[7] * 2; + if (++sprite->data[1] == 1) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 8: + sprite->pos1.x -= sprite->data[7] * 3; + if (++sprite->data[1] == 5) + DestroyAnimSprite(sprite); + break; + } +} + +void sub_8130D20(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + task->data[15] = GetAnimBattlerSpriteId(0); + if (!IsContest()) + { + if (IsDoubleBattle() == TRUE) + { + int x = GetBattlerSpriteCoord(gAnimBankAttacker, 0); + int y = GetBattlerSpriteCoord(gAnimBankAttacker ^ 2, 0); + if (x > y) + task->data[14] = 1; + else + task->data[14] = -1; + } + else + { + if (GetBattlerSide(gAnimBankAttacker) == B_SIDE_PLAYER) + task->data[14] = -1; + else + task->data[14] = 1; + } + } + else + { + task->data[14] = 1; + } + + task->func = sub_8130DBC; +} + +static void sub_8130DBC(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + + switch (task->data[0]) + { + case 0: + if (++task->data[1] == 13) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 1: + gSprites[task->data[15]].pos2.x -= task->data[14] * 3; + if (++task->data[1] == 6) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 2: + gSprites[task->data[15]].pos2.x += task->data[14] * 3; + if (++task->data[1] == 6) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 3: + if (++task->data[1] == 2) + { + task->data[1] = 0; + if (task->data[2] == 0) + { + task->data[2]++; + task->data[0] = 1; + } + else + { + task->data[0]++; + } + } + break; + case 4: + gSprites[task->data[15]].pos2.x += task->data[14]; + if (++task->data[1] == 3) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 5: + if (++task->data[1] == 6) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 6: + gSprites[task->data[15]].pos2.x -= task->data[14] * 4; + if (++task->data[1] == 5) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 7: + gSprites[task->data[15]].pos2.x += task->data[14] * 4; + if (++task->data[1] == 5) + { + task->data[1] = 0; + task->data[0]++; + } + break; + case 8: + gSprites[task->data[15]].pos2.x = 0; + DestroyAnimVisualTask(taskId); + break; + } +} + +void sub_8130F5C(struct Sprite *sprite) +{ + if (gBattleAnimArgs[0] == 0) + { + InitAnimSpritePos(sprite, 1); + sprite->data[7] = gAnimBankAttacker; + } + else + { + sprite->data[7] = gAnimBankTarget; + } + + if (GetBattlerSide(sprite->data[7]) == B_SIDE_OPPONENT) + sprite->oam.matrixNum = 8; + + sprite->oam.priority = sub_8079ED4(sprite->data[7]); + sprite->oam.objMode = ST_OAM_OBJ_BLEND; + sprite->callback = sub_8130FE0; +} + +static void sub_8130FE0(struct Sprite *sprite) +{ + u16 x, y; + + switch (sprite->data[5]) + { + case 0: + switch (sprite->data[6]) + { + default: + sprite->data[6] = 0; + case 0: + case 4: + x = sub_807A100(sprite->data[7], 5) - 4; + y = sub_807A100(sprite->data[7], 3) - 4; + break; + case 1: + x = sub_807A100(sprite->data[7], 5) - 4; + y = sub_807A100(sprite->data[7], 2) + 4; + break; + case 2: + x = sub_807A100(sprite->data[7], 4) + 4; + y = sub_807A100(sprite->data[7], 3) - 4; + break; + case 3: + x = sub_807A100(sprite->data[7], 4) + 4; + y = sub_807A100(sprite->data[7], 2) - 4; + break; + case 5: + x = GetBattlerSpriteCoord(sprite->data[7], 2); + y = GetBattlerSpriteCoord(sprite->data[7], 3); + break; + } + + if (sprite->data[6] == 4) + sprite->data[0] = 24; + else if (sprite->data[6] == 5) + sprite->data[0] = 6; + else + sprite->data[0] = 12; + + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = x; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = y; + InitAnimLinearTranslation(sprite); + sprite->data[5]++; + break; + case 1: + if (TranslateAnimLinear(sprite)) + { + switch (sprite->data[6]) + { + default: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[0] = 0; + sprite->data[5]++; + sprite->data[6]++; + break; + case 4: + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[5] = 0; + sprite->data[6]++; + break; + case 5: + sprite->data[0] = 0; + sprite->data[1] = 16; + sprite->data[2] = 0; + sprite->data[5] = 3; + break; + } + } + break; + case 2: + if (++sprite->data[0] == 4) + sprite->data[5] = 0; + break; + case 3: + if (!(sprite->data[0] & 1)) + sprite->data[1]--; + else + sprite->data[2]++; + + REG_BLDALPHA = (sprite->data[2] << 8) | sprite->data[1]; + if (++sprite->data[0] == 32) + { + sprite->invisible = 1; + sprite->data[5]++; + } + break; + case 4: + DestroyAnimSprite(sprite); + break; + } +} + +static void sub_81311E4(struct Sprite *sprite) +{ + sprite->pos2.x = ((sprite->data[2] - sprite->data[0]) * sprite->data[5]) / sprite->data[4]; + sprite->pos2.y = ((sprite->data[3] - sprite->data[1]) * sprite->data[5]) / sprite->data[4]; + if (!(sprite->data[5] & 1)) + { + CreateSprite( + &gSpriteTemplate_8402500, + sprite->pos1.x + sprite->pos2.x, + sprite->pos1.y + sprite->pos2.y, 5); + } + + if (sprite->data[5] == sprite->data[4]) + DestroyAnimSprite(sprite); + + sprite->data[5]++; +} + +void sub_8131264(struct Sprite *sprite) +{ + GetBattlerSpriteCoord(gAnimBankTarget, 2); // unused local variable + GetBattlerSpriteCoord(gAnimBankTarget, 3); // unused local variable + + if (GetBattlerSide(gAnimBankTarget) == B_SIDE_PLAYER || IsContest()) + { + sprite->data[0] = sprite->pos1.x - gBattleAnimArgs[0]; + sprite->data[2] = sprite->pos1.x - gBattleAnimArgs[2]; + } + else + { + sprite->data[0] = sprite->pos1.x + gBattleAnimArgs[0]; + sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2]; + } + + sprite->data[1] = sprite->pos1.y + gBattleAnimArgs[1]; + sprite->data[3] = sprite->pos1.y + gBattleAnimArgs[3]; + sprite->data[4] = gBattleAnimArgs[4]; + sprite->pos1.x = sprite->data[0]; + sprite->pos1.y = sprite->data[1]; + sprite->callback = sub_81311E4; +} + +void sub_81312E4(u8 taskId) +{ + int i; + u8 spriteId = GetAnimBattlerSpriteId(0); + + if (gTasks[taskId].data[0] == 0) + { + sub_8078E70(spriteId, 0); + gTasks[taskId].data[1] = 0x100; + gTasks[taskId].data[2] = 0x100; + gTasks[taskId].data[0]++; + } + else if (gTasks[taskId].data[0] == 1) + { + gTasks[taskId].data[1] += 0x60; + gTasks[taskId].data[2] -= 0xD; + obj_id_set_rotscale(spriteId, gTasks[taskId].data[1], gTasks[taskId].data[2], 0); + if (++gTasks[taskId].data[3] == 9) + { + gTasks[taskId].data[3] = 0; + sub_8078F40(spriteId); + gSprites[spriteId].invisible = 1; + gTasks[taskId].data[0]++; + } + } + else + { + refresh_graphics_maybe(gAnimBankAttacker, 0, spriteId); + if (IsContest()) + { + gSprites[gBankSpriteIds[gAnimBankAttacker]].affineAnims = gSpriteAffineAnimTable_81E7C18; + StartSpriteAffineAnim(&gSprites[gBankSpriteIds[gAnimBankAttacker]], 0); + } + + for (i = 0; i < 16; i++) + gTasks[taskId].data[i] = 0; + + gTasks[taskId].func = sub_8131408; + } +} + +static void sub_8131408(u8 taskId) +{ + u8 spriteId = GetAnimBattlerSpriteId(0); + + switch (gTasks[taskId].data[0]) + { + case 0: + gSprites[spriteId].pos2.y = -200; + gSprites[spriteId].pos2.x = 200; + gSprites[spriteId].invisible = 0; + gTasks[taskId].data[10] = 0; + gTasks[taskId].data[0]++; + break; + case 1: + gTasks[taskId].data[10] += 112; + gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8; + if (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y >= -32) + gSprites[spriteId].pos2.x = 0; + + if (gSprites[spriteId].pos2.y > 0) + gSprites[spriteId].pos2.y = 0; + + if (gSprites[spriteId].pos2.y == 0) + { + PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(-64)); + gTasks[taskId].data[10] -= 0x800; + gTasks[taskId].data[0]++; + } + break; + case 2: + gTasks[taskId].data[10] -= 112; + if (gTasks[taskId].data[10] < 0) + gTasks[taskId].data[10] = 0; + + gSprites[spriteId].pos2.y -= gTasks[taskId].data[10] >> 8; + if (gTasks[taskId].data[10] == 0) + gTasks[taskId].data[0]++; + break; + case 3: + gTasks[taskId].data[10] += 112; + gSprites[spriteId].pos2.y += gTasks[taskId].data[10] >> 8; + if (gSprites[spriteId].pos2.y > 0) + gSprites[spriteId].pos2.y = 0; + + if (gSprites[spriteId].pos2.y == 0) + { + PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(-64)); + DestroyAnimVisualTask(taskId); + } + break; + } +} + +void sub_8131564(struct Sprite *sprite) +{ + s16 y2; + + if (GetBattlerSide(gAnimBankTarget) == B_SIDE_PLAYER) + { + sprite->subpriority = sub_8079E90(gAnimBankTarget) - 2; + y2 = -144; + } + else + { + sprite->subpriority = sub_8079E90(gAnimBankTarget) + 2; + y2 = -96; + } + + sprite->pos1.y = GetBattlerSpriteCoord(gAnimBankTarget, 3); + sprite->pos2.y = y2; + sprite->callback = sub_81315C8; +} + +static void sub_81315C8(struct Sprite *sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->pos2.y += 10; + if (sprite->pos2.y >= 0) + { + PlaySE12WithPanning(SE_W166, BattleAnimAdjustPanning(63)); + sprite->pos2.y = 0; + sprite->data[0]++; + } + break; + case 1: + sprite->data[1] += 4; + sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 3); + if (sprite->data[1] > 127) + { + PlaySE12WithPanning(SE_W166, BattleAnimAdjustPanning(63)); + sprite->data[1] = 0; + sprite->pos2.y = 0; + sprite->data[0]++; + } + break; + case 2: + sprite->data[1] += 6; + sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 4); + if (sprite->data[1] > 127) + { + sprite->data[1] = 0; + sprite->pos2.y = 0; + sprite->data[0]++; + } + break; + case 3: + if (++sprite->data[1] > 8) + { + PlaySE12WithPanning(SE_W043, BattleAnimAdjustPanning(63)); + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 4: + if (++sprite->data[1] > 8) + { + sprite->data[1] = 0; + sprite->data[2]++; + sprite->invisible = sprite->data[2] & 1; + if (sprite->data[2] == 7) + DestroyAnimSprite(sprite); + } + break; + } +} + +void sub_81316F8(u8 taskId) +{ + s16 spriteId1, spriteId2; + + if (IsContest()) + { + DestroyAnimVisualTask(taskId); + return; + } + + spriteId1 = duplicate_obj_of_side_rel2move_in_transparent_mode(1); + if (spriteId1 < 0) + { + DestroyAnimVisualTask(taskId); + return; + } + + spriteId2 = duplicate_obj_of_side_rel2move_in_transparent_mode(1); + if (spriteId2 < 0) + { + obj_delete_but_dont_free_vram(&gSprites[spriteId1]); + DestroyAnimVisualTask(taskId); + return; + } + + gSprites[spriteId2].pos2.x += 24; + gSprites[spriteId1].pos2.x -= 24; + gSprites[spriteId2].data[0] = 0; + gSprites[spriteId1].data[0] = 0; + gSprites[spriteId2].data[1] = 0; + gSprites[spriteId1].data[1] = 0; + gSprites[spriteId2].data[2] = 0; + gSprites[spriteId1].data[2] = 0; + gSprites[spriteId2].data[3] = 16; + gSprites[spriteId1].data[3] = -16; + gSprites[spriteId2].data[4] = 0; + gSprites[spriteId1].data[4] = 128; + gSprites[spriteId2].data[5] = 24; + gSprites[spriteId1].data[5] = 24; + gSprites[spriteId2].data[6] = taskId; + gSprites[spriteId1].data[6] = taskId; + gSprites[spriteId2].data[7] = 0; + gSprites[spriteId1].data[7] = 0; + gTasks[taskId].data[0] = 2; + gSprites[spriteId2].invisible = 0; + gSprites[spriteId1].invisible = 1; + gSprites[spriteId2].oam.objMode = ST_OAM_OBJ_NORMAL; + gSprites[spriteId1].oam.objMode = ST_OAM_OBJ_NORMAL; + gSprites[spriteId2].callback = sub_8131838; + gSprites[spriteId1].callback = sub_8131838; + gTasks[taskId].func = sub_8131810; +} + +static void sub_8131810(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + DestroyAnimVisualTask(taskId); +} + +static void sub_8131838(struct Sprite *sprite) +{ + if (++sprite->data[1] > 1) + { + sprite->data[1] = 0; + sprite->invisible ^= 1; + } + + sprite->data[4] = (sprite->data[4] + sprite->data[3]) & 0xFF; + sprite->pos2.x = Cos(sprite->data[4], sprite->data[5]); + switch (sprite->data[0]) + { + case 0: + if (++sprite->data[2] == 60) + { + sprite->data[2] = 0; + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[2] > 0) + { + sprite->data[2] = 0; + sprite->data[5] -= 2; + if (sprite->data[5] < 0) + { + gTasks[sprite->data[6]].data[sprite->data[7]]--; + obj_delete_but_dont_free_vram(sprite); + } + } + break; + } +} diff --git a/src/battle/battle_anim_813F0F4.c b/src/battle/battle_anim_813F0F4.c index 219395baf..f112c59aa 100755 --- a/src/battle/battle_anim_813F0F4.c +++ b/src/battle/battle_anim_813F0F4.c @@ -36,13 +36,13 @@ extern u8 gEffectBank; extern const u8 gUnknown_08D2EE48[]; extern const u8 gUnknown_08D2EDFC[]; extern const u16 gUnknown_08D2E150[]; -extern const struct CompressedSpritePalette gUnknown_0840B2B8[]; -extern const struct SpriteTemplate gSpriteTemplate_840B3B4[]; +extern const struct CompressedSpritePalette gBallOpenParticlePalettes[]; +extern const struct SpriteTemplate gSpriteTemplates_840B3B4[]; extern const struct SpriteTemplate gSpriteTemplate_8402500; extern const struct SpriteTemplate gBattleAnimSpriteTemplate_84024E8; -extern const u8 gUnknown_0840B378[]; -extern const struct CompressedSpriteSheet gUnknown_0840B258[]; -extern const TaskFunc gUnknown_0840B384[]; +extern const u8 gBallOpenParticleAnimNums[]; +extern const struct CompressedSpriteSheet gBallOpenParticleSpritesheets[]; +extern const TaskFunc gBallOpenParticleAnimationFuncs[]; extern const u16 gUnknown_0840B4D4[]; extern const struct CompressedSpriteSheet gBattleAnimPicTable[]; extern const struct CompressedSpritePalette gBattleAnimPaletteTable[]; @@ -69,12 +69,12 @@ static void sub_81404E4(struct Sprite *sprite); static void sub_81405C8(struct Sprite *sprite); static void sub_81406BC(struct Sprite *sprite); static void sub_81407F4(struct Sprite *sprite); -static void sub_8140A08(struct Sprite *sprite); -static void sub_8140A28(struct Sprite *sprite); -static void sub_8141294(struct Sprite *sprite); -static void sub_8140ECC(struct Sprite *sprite); -static void sub_8140FF8(struct Sprite *sprite); -static void sub_8141230(struct Sprite *sprite); +static void PokeBallOpenParticleAnimation_Step1(struct Sprite *sprite); +static void PokeBallOpenParticleAnimation_Step2(struct Sprite *sprite); +static void DestroyBallOpenAnimationParticle(struct Sprite *sprite); +static void FanOutBallOpenParticles_Step1(struct Sprite *sprite); +static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *sprite); +static void PremierBallOpenParticleAnimation_Step1(struct Sprite *sprite); static void sub_81413DC(u8 taskId); static void sub_814146C(u8 taskId); static void sub_81414BC(u8 taskId); @@ -338,7 +338,7 @@ void sub_813F844(u8 taskId) y = GetBattlerSpriteCoord(gAnimBankAttacker, 1); priority = gSprites[spriteId].oam.priority; subpriority = gSprites[spriteId].subpriority; - gTasks[taskId].data[10] = sub_814086C(x, y + 32, priority, subpriority, ballIndex); + gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballIndex); selectedPalettes = sub_80791A8(1, 0, 0, 0, 0, 0, 0); gTasks[taskId].data[11] = sub_8141314(0, gAnimBankAttacker, selectedPalettes, ballIndex); gTasks[taskId].data[0]++; @@ -353,14 +353,14 @@ void sub_813F844(u8 taskId) void sub_813F990(u8 taskId) { u8 ballIndex = ball_number_to_ball_processing_index(gLastUsedItem); - sub_80478DC(ballIndex); + LoadBallGraphics(ballIndex); DestroyAnimVisualTask(taskId); } void sub_813F9B8(u8 taskId) { u8 ballIndex = ball_number_to_ball_processing_index(gLastUsedItem); - sub_804794C(ballIndex); + FreeBallGraphics(ballIndex); DestroyAnimVisualTask(taskId); } @@ -526,7 +526,7 @@ static void sub_813FDC0(struct Sprite *sprite) if (ballIndex2 < 0) return; - sub_814086C(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex); + AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex); sub_8141314(0, gAnimBankTarget, 14, ballIndex); } } @@ -946,7 +946,7 @@ static void sub_81405F4(struct Sprite *sprite) if (ballIndex2 < 0) goto LABEL; - sub_814086C(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex); + AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex); sub_8141314(1, gAnimBankTarget, 14, ballIndex); LABEL: @@ -1090,17 +1090,17 @@ _08140868: .4byte gDoingBattleAnim\n\ } #endif // NONMATCHING -u8 sub_814086C(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballIndex) +u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballIndex) { u8 taskId; - if (GetSpriteTileStartByTag(gUnknown_0840B258[ballIndex].tag) == 0xFFFF) + if (GetSpriteTileStartByTag(gBallOpenParticleSpritesheets[ballIndex].tag) == 0xFFFF) { - LoadCompressedObjectPic(&gUnknown_0840B258[ballIndex]); - LoadCompressedObjectPalette(&gUnknown_0840B2B8[ballIndex]); + LoadCompressedObjectPic(&gBallOpenParticleSpritesheets[ballIndex]); + LoadCompressedObjectPalette(&gBallOpenParticlePalettes[ballIndex]); } - taskId = CreateTask(gUnknown_0840B384[ballIndex], 5); + taskId = CreateTask(gBallOpenParticleAnimationFuncs[ballIndex], 5); gTasks[taskId].data[1] = x; gTasks[taskId].data[2] = y; gTasks[taskId].data[3] = priority; @@ -1113,7 +1113,7 @@ u8 sub_814086C(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballIndex) return taskId; } -void sub_8140930(u8 taskId) +void PokeBallOpenParticleAnimation(u8 taskId) { u8 spriteId; u8 x, y; @@ -1129,9 +1129,9 @@ void sub_8140930(u8 taskId) priority = gTasks[taskId].data[3]; subpriority = gTasks[taskId].data[4]; - spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority); - StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]); - gSprites[spriteId].callback = sub_8140A08; + spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]); + gSprites[spriteId].callback = PokeBallOpenParticleAnimation_Step1; gSprites[spriteId].oam.priority = priority; var0 = (u8)gTasks[taskId].data[0]; @@ -1150,24 +1150,24 @@ void sub_8140930(u8 taskId) gTasks[taskId].data[0]++; } -static void sub_8140A08(struct Sprite *sprite) +static void PokeBallOpenParticleAnimation_Step1(struct Sprite *sprite) { if (sprite->data[1] == 0) - sprite->callback = sub_8140A28; + sprite->callback = PokeBallOpenParticleAnimation_Step2; else sprite->data[1]--; } -static void sub_8140A28(struct Sprite *sprite) +static void PokeBallOpenParticleAnimation_Step2(struct Sprite *sprite) { sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]); sprite->data[1] += 2; if (sprite->data[1] == 50) - sub_8141294(sprite); + DestroyBallOpenAnimationParticle(sprite); } -void sub_8140A64(u8 taskId) +void TimerBallOpenParticleAnimation(u8 taskId) { u8 i; u8 x, y, priority, subpriority, ballIndex; @@ -1181,9 +1181,9 @@ void sub_8140A64(u8 taskId) for (i = 0; i < 8; i++) { - spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority); - StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]); - gSprites[spriteId].callback = sub_8140ECC; + spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; gSprites[spriteId].data[0] = i * 32; gSprites[spriteId].data[4] = 10; @@ -1195,7 +1195,7 @@ void sub_8140A64(u8 taskId) DestroyTask(taskId); } -void sub_8140B3C(u8 taskId) +void DiveBallOpenParticleAnimation(u8 taskId) { u8 i; u8 x, y, priority, subpriority, ballIndex; @@ -1209,9 +1209,9 @@ void sub_8140B3C(u8 taskId) for (i = 0; i < 8; i++) { - spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority); - StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]); - gSprites[spriteId].callback = sub_8140ECC; + spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; gSprites[spriteId].data[0] = i * 32; gSprites[spriteId].data[4] = 10; @@ -1223,7 +1223,7 @@ void sub_8140B3C(u8 taskId) DestroyTask(taskId); } -void sub_8140C14(u8 taskId) +void SafariBallOpenParticleAnimation(u8 taskId) { u8 i; u8 x, y, priority, subpriority, ballIndex; @@ -1237,9 +1237,9 @@ void sub_8140C14(u8 taskId) for (i = 0; i < 8; i++) { - spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority); - StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]); - gSprites[spriteId].callback = sub_8140ECC; + spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; gSprites[spriteId].data[0] = i * 32; gSprites[spriteId].data[4] = 4; @@ -1251,7 +1251,7 @@ void sub_8140C14(u8 taskId) DestroyTask(taskId); } -void sub_8140CE8(u8 taskId) +void UltraBallOpenParticleAnimation(u8 taskId) { u8 i; u8 x, y, priority, subpriority, ballIndex; @@ -1265,9 +1265,9 @@ void sub_8140CE8(u8 taskId) for (i = 0; i < 10; i++) { - spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority); - StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]); - gSprites[spriteId].callback = sub_8140ECC; + spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; gSprites[spriteId].data[0] = i * 25; gSprites[spriteId].data[4] = 5; @@ -1279,7 +1279,7 @@ void sub_8140CE8(u8 taskId) DestroyTask(taskId); } -void sub_8140DC4(u8 taskId) +void GreatBallOpenParticleAnimation(u8 taskId) { u8 i; u8 x, y, priority, subpriority, ballIndex; @@ -1299,9 +1299,9 @@ void sub_8140DC4(u8 taskId) for (i = 0; i < 8; i++) { - spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority); - StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]); - gSprites[spriteId].callback = sub_8140ECC; + spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; gSprites[spriteId].data[0] = i * 32; gSprites[spriteId].data[4] = 8; @@ -1318,7 +1318,7 @@ void sub_8140DC4(u8 taskId) } } -static void sub_8140ECC(struct Sprite *sprite) +static void FanOutBallOpenParticles_Step1(struct Sprite *sprite) { sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); sprite->pos2.y = Cos(sprite->data[0], sprite->data[2]); @@ -1326,10 +1326,10 @@ static void sub_8140ECC(struct Sprite *sprite) sprite->data[1] += sprite->data[5]; sprite->data[2] += sprite->data[6]; if (++sprite->data[3] == 51) - sub_8141294(sprite); + DestroyBallOpenAnimationParticle(sprite); } -void sub_8140F24(u8 taskId) +void RepeatBallOpenParticleAnimation(u8 taskId) { u8 i; u8 x, y, priority, subpriority, ballIndex; @@ -1343,9 +1343,9 @@ void sub_8140F24(u8 taskId) for (i = 0; i < 12; i++) { - spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority); - StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]); - gSprites[spriteId].callback = sub_8140FF8; + spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]); + gSprites[spriteId].callback = RepeatBallOpenParticleAnimation_Step1; gSprites[spriteId].oam.priority = priority; gSprites[spriteId].data[0] = i * 21; } @@ -1354,7 +1354,7 @@ void sub_8140F24(u8 taskId) DestroyTask(taskId); } -static void sub_8140FF8(struct Sprite *sprite) +static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *sprite) { sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0], sprite->data[2])); @@ -1362,10 +1362,10 @@ static void sub_8140FF8(struct Sprite *sprite) sprite->data[1]++; sprite->data[2]++; if (++sprite->data[3] == 51) - sub_8141294(sprite); + DestroyBallOpenAnimationParticle(sprite); } -void sub_8141058(u8 taskId) +void MasterBallOpenParticleAnimation(u8 taskId) { u8 i, j; u8 x, y, priority, subpriority, ballIndex; @@ -1381,9 +1381,9 @@ void sub_8141058(u8 taskId) { for (i = 0; i < 8; i++) { - spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority); - StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]); - gSprites[spriteId].callback = sub_8140ECC; + spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]); + gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; gSprites[spriteId].data[0] = i * 32; gSprites[spriteId].data[4] = 8; @@ -1405,7 +1405,7 @@ void sub_8141058(u8 taskId) DestroyTask(taskId); } -void sub_8141164(u8 taskId) +void PremierBallOpenParticleAnimation(u8 taskId) { u8 i; u8 x, y, priority, subpriority, ballIndex; @@ -1419,9 +1419,9 @@ void sub_8141164(u8 taskId) for (i = 0; i < 8; i++) { - spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority); - StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]); - gSprites[spriteId].callback = sub_8141230; + spriteId = CreateSprite(&gSpriteTemplates_840B3B4[ballIndex], x, y, subpriority); + StartSpriteAnim(&gSprites[spriteId], gBallOpenParticleAnimNums[ballIndex]); + gSprites[spriteId].callback = PremierBallOpenParticleAnimation_Step1; gSprites[spriteId].oam.priority = priority; gSprites[spriteId].data[0] = i * 32; } @@ -1430,7 +1430,7 @@ void sub_8141164(u8 taskId) DestroyTask(taskId); } -static void sub_8141230(struct Sprite *sprite) +static void PremierBallOpenParticleAnimation_Step1(struct Sprite *sprite) { sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]); sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0] & 0x3F, sprite->data[2])); @@ -1438,10 +1438,10 @@ static void sub_8141230(struct Sprite *sprite) sprite->data[1]++; sprite->data[2]++; if (++sprite->data[3] == 51) - sub_8141294(sprite); + DestroyBallOpenAnimationParticle(sprite); } -static void sub_8141294(struct Sprite *sprite) +static void DestroyBallOpenAnimationParticle(struct Sprite *sprite) { int i; int temp; @@ -1460,8 +1460,8 @@ static void sub_8141294(struct Sprite *sprite) { for (i = 0; i < 12; i++) { - FreeSpriteTilesByTag(gUnknown_0840B258[i].tag); - FreeSpritePaletteByTag(gUnknown_0840B2B8[i].tag); + FreeSpriteTilesByTag(gBallOpenParticleSpritesheets[i].tag); + FreeSpritePaletteByTag(gBallOpenParticlePalettes[i].tag); } DestroySprite(sprite); diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c index 8ca3d160a..f9c8fe7d1 100644 --- a/src/battle/battle_controller_linkopponent.c +++ b/src/battle/battle_controller_linkopponent.c @@ -62,7 +62,7 @@ extern void sub_8037A74(void); extern void sub_8032984(u8, u16); extern void sub_8037E30(void); extern void sub_80312F0(struct Sprite *); -extern u8 sub_8046400(); +extern u8 StartSendOutMonAnimation(); extern void sub_8032A08(); extern void sub_8043DB0(); extern void sub_8037BBC(void); @@ -1195,7 +1195,7 @@ void sub_8039430(u8 a, u8 b) StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]); gSprites[gBankSpriteIds[a]].invisible = TRUE; gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy; - gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFE); + gSprites[gUnknown_0300434C[a]].data[0] = StartSendOutMonAnimation(0, 0xFE); } void LinkOpponentHandleReturnPokeToBall(void) diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c index dff4edfc1..38514bfb5 100644 --- a/src/battle/battle_controller_linkpartner.c +++ b/src/battle/battle_controller_linkpartner.c @@ -79,7 +79,7 @@ extern void sub_80105EC(struct Sprite *); extern s32 sub_803FC34(u16); extern void LoadPlayerTrainerBankSprite(); extern void sub_80313A0(struct Sprite *); -extern u8 sub_8046400(); +extern u8 StartSendOutMonAnimation(); extern void sub_80312F0(struct Sprite *); extern u8 CreateInvisibleSpriteWithCallback(); extern void BattleLoadPlayerMonSprite(); @@ -1143,7 +1143,7 @@ void sub_811F864(u8 a, u8 b) StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]); gSprites[gBankSpriteIds[a]].invisible = TRUE; gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy; - gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFF); + gSprites[gUnknown_0300434C[a]].data[0] = StartSendOutMonAnimation(0, 0xFF); } void LinkPartnerHandleReturnPokeToBall(void) diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index ee313c098..a7e99900b 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -74,7 +74,7 @@ extern u8 GetBattlerPosition(u8); extern void sub_8032984(u8, u16); extern void sub_80333D4(void); extern void sub_80312F0(struct Sprite *); -extern u8 sub_8046400(); +extern u8 StartSendOutMonAnimation(); extern void sub_8032A08(); extern void sub_8043DB0(); extern void sub_8033160(void); @@ -1168,7 +1168,7 @@ void sub_803495C(u8 a, u8 b) StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]); gSprites[gBankSpriteIds[a]].invisible = TRUE; gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy; - gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFE); + gSprites[gUnknown_0300434C[a]].data[0] = StartSendOutMonAnimation(0, 0xFE); } void OpponentHandleReturnPokeToBall(void) diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 654a2c195..de8b1579b 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -126,7 +126,7 @@ extern void sub_802DEAC(void); extern void sub_80312F0(struct Sprite *); extern u8 GetBattlerSpriteCoord(); extern u8 sub_8077F68(); -extern u8 sub_8046400(); +extern u8 StartSendOutMonAnimation(); extern void sub_802D798(void); extern void bx_0802E404(void); extern u8 gActiveBattler; @@ -2523,7 +2523,7 @@ void sub_802F934(u8 bank, u8 b) StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]); gSprites[gBankSpriteIds[bank]].invisible = TRUE; gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy; - gSprites[gUnknown_0300434C[bank]].data[0] = sub_8046400(0, 0xFF); + gSprites[gUnknown_0300434C[bank]].data[0] = StartSendOutMonAnimation(0, 0xFF); } void PlayerHandleReturnPokeToBall(void) diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c index 312ef9d12..a7ce7d27d 100644 --- a/src/battle/battle_controller_wally.c +++ b/src/battle/battle_controller_wally.c @@ -88,7 +88,7 @@ extern void oamt_add_pos2_onto_pos1(); extern void StartAnimLinearTranslation(struct Sprite *); extern void sub_8030E38(struct Sprite *); extern void StoreSpriteCallbackInData(); -extern u8 sub_8046400(); +extern u8 StartSendOutMonAnimation(); extern u8 GetBattlerSpriteCoord(); extern u8 sub_8077F68(); extern u8 sub_8079E90(); @@ -1518,7 +1518,7 @@ void sub_81398BC(u8 bank) StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]); gSprites[gBankSpriteIds[bank]].invisible = TRUE; gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy; - gSprites[gUnknown_0300434C[bank]].data[0] = sub_8046400(0, 0xFF); + gSprites[gUnknown_0300434C[bank]].data[0] = StartSendOutMonAnimation(0, 0xFF); } void sub_8139A2C(u8 taskId) diff --git a/src/battle/pokeball.c b/src/battle/pokeball.c index ac15246d6..abfdf2c3d 100644 --- a/src/battle/pokeball.c +++ b/src/battle/pokeball.c @@ -300,7 +300,7 @@ const struct SpriteTemplate gBallSpriteTemplates[] = extern void InitAnimArcTranslation(); extern bool8 TranslateAnimArc(struct Sprite *); -static void sub_8046464(u8); +static void SendOutMonAnimation(u8); static void sub_80466E8(struct Sprite *); static void sub_80466F4(struct Sprite *); static void sub_8046760(struct Sprite *); @@ -312,10 +312,10 @@ static void sub_8046C78(struct Sprite *); static void sub_8046E7C(struct Sprite *); static void sub_8046E9C(struct Sprite *); static void sub_8046FBC(struct Sprite *); -static void sub_8047074(struct Sprite *); -static void sub_80470C4(struct Sprite *); -static void sub_8047230(struct Sprite *); -static void sub_8047254(struct Sprite *); +static void SendOutPlayerMonAnimation_Step0(struct Sprite *); +static void SendOutPlayerMonAnimation_Step1(struct Sprite *); +static void SendOutMonAnimation_Delay(struct Sprite *); +static void SendOutOpponentMonAnimation_Step0(struct Sprite *); static void sub_80473D0(struct Sprite *); static void sub_804748C(struct Sprite *); static void sub_8047638(struct Sprite *); @@ -324,28 +324,28 @@ static void sub_8047754(struct Sprite *); static void sub_804780C(struct Sprite *); static void sub_8047830(struct Sprite *); static void oamc_804BEB4(struct Sprite *); -static u16 sub_8047978(u8); +static u16 GetBattlerBall(u8); -u8 sub_8046400(u16 a, u8 b) +u8 StartSendOutMonAnimation(u16 a, u8 side) { u8 taskId; gDoingBattleAnim = 1; ewram17810[gActiveBattler].unk0_3 = 1; - taskId = CreateTask(sub_8046464, 5); + taskId = CreateTask(SendOutMonAnimation, 5); gTasks[taskId].data[1] = a; - gTasks[taskId].data[2] = b; + gTasks[taskId].data[2] = side; gTasks[taskId].data[3] = gActiveBattler; return 0; } -static void sub_8046464(u8 taskId) +static void SendOutMonAnimation(u8 taskId) { - bool8 sp0 = FALSE; - u16 r8; - u8 r5; + bool8 debug = FALSE; + u16 side; + u8 battler; u16 ball; - u8 r4; + u8 ballIndex; u8 spriteId; if (gTasks[taskId].data[0] == 0) @@ -353,44 +353,49 @@ static void sub_8046464(u8 taskId) gTasks[taskId].data[0]++; return; } - r8 = gTasks[taskId].data[2]; - r5 = gTasks[taskId].data[3]; - if (GetBattlerSide(r5) != 0) - ball = GetMonData(&gEnemyParty[gBattlerPartyIndexes[r5]], MON_DATA_POKEBALL); + + side = gTasks[taskId].data[2]; + battler = gTasks[taskId].data[3]; + if (GetBattlerSide(battler) != B_SIDE_PLAYER) + ball = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_POKEBALL); else - ball = GetMonData(&gPlayerParty[gBattlerPartyIndexes[r5]], MON_DATA_POKEBALL); - r4 = ball_number_to_ball_processing_index(ball); - sub_80478DC(r4); - spriteId = CreateSprite(&gBallSpriteTemplates[r4], 32, 80, 0x1D); + ball = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_POKEBALL); + + ballIndex = ball_number_to_ball_processing_index(ball); + LoadBallGraphics(ballIndex); + spriteId = CreateSprite(&gBallSpriteTemplates[ballIndex], 32, 80, 29); gSprites[spriteId].data[0] = 0x80; gSprites[spriteId].data[1] = 0; - gSprites[spriteId].data[7] = r8; - switch (r8) + gSprites[spriteId].data[7] = side; + + switch (side) { - case 0xFF: - gBankTarget = r5; + case 0xFF: // Player's side + gBankTarget = battler; gSprites[spriteId].pos1.x = 24; gSprites[spriteId].pos1.y = 68; - gSprites[spriteId].callback = sub_8047074; + gSprites[spriteId].callback = SendOutPlayerMonAnimation_Step0; break; - case 0xFE: - gSprites[spriteId].pos1.x = GetBattlerSpriteCoord(r5, 0); - gSprites[spriteId].pos1.y = GetBattlerSpriteCoord(r5, 1) + 24; - gBankTarget = r5; + case 0xFE: // Opponent's side + gSprites[spriteId].pos1.x = GetBattlerSpriteCoord(battler, 0); + gSprites[spriteId].pos1.y = GetBattlerSpriteCoord(battler, 1) + 24; + gBankTarget = battler; gSprites[spriteId].data[0] = 0; - gSprites[spriteId].callback = sub_8047254; + gSprites[spriteId].callback = SendOutOpponentMonAnimation_Step0; break; default: gBankTarget = GetBattlerAtPosition(1); - sp0 = TRUE; + debug = TRUE; break; } + gSprites[spriteId].data[6] = gBankTarget; - if (!sp0) + if (!debug) { DestroyTask(taskId); return; } + gSprites[spriteId].data[0] = 0x22; gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBankTarget, 0); gSprites[spriteId].data[4] = GetBattlerSpriteCoord(gBankTarget, 1) - 16; @@ -418,8 +423,8 @@ static void objc_0804ABD4(struct Sprite *sprite) sprite->pos2.x = 0; sprite->pos2.y = 0; sprite->data[5] = 0; - r4 = ball_number_to_ball_processing_index(sub_8047978(r5)); - sub_814086C(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, r4); + r4 = ball_number_to_ball_processing_index(GetBattlerBall(r5)); + AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, r4); sprite->data[0] = sub_8141314(0, r5, 14, r4); sprite->data[6] = r5; sprite->data[7] = r8; @@ -693,34 +698,35 @@ static void sub_8046AD0(u8 taskId) static void sub_8046C78(struct Sprite *sprite) { - u8 r5 = sprite->data[6]; - u32 r4; // not sure of this type + int ballIndex; + u8 battler = sprite->data[6]; StartSpriteAnim(sprite, 1); - r4 = ball_number_to_ball_processing_index(sub_8047978(r5)); - sub_814086C(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, r4); - sprite->data[0] = sub_8141314(1, sprite->data[6], 14, r4); + ballIndex = ball_number_to_ball_processing_index(GetBattlerBall(battler)); + AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex); + sprite->data[0] = sub_8141314(1, sprite->data[6], 14, ballIndex); sprite->callback = sub_8046E9C; if (gMain.inBattle) { - struct Pokemon *pkmn; + struct Pokemon *mon; u16 species; - s8 r8; - u16 r4_2; + s8 cryPanning; + u16 cryBehavior; u8 taskId; - if (GetBattlerSide(r5) != 0) + if (GetBattlerSide(battler) != 0) { - pkmn = &gEnemyParty[gBattlerPartyIndexes[r5]]; - r8 = 25; + mon = &gEnemyParty[gBattlerPartyIndexes[battler]]; + cryPanning = 25; } else { - pkmn = &gPlayerParty[gBattlerPartyIndexes[r5]]; - r8 = -25; + mon = &gPlayerParty[gBattlerPartyIndexes[battler]]; + cryPanning = -25; } - species = GetMonData(pkmn, MON_DATA_SPECIES); - if ((r5 == GetBattlerAtPosition(0) || r5 == GetBattlerAtPosition(1)) + + species = GetMonData(mon, MON_DATA_SPECIES); + if ((battler == GetBattlerAtPosition(0) || battler == GetBattlerAtPosition(1)) && IsDoubleBattle() && ewram17840.unk9_0) { if (gBattleTypeFlags & BATTLE_TYPE_MULTI) @@ -733,18 +739,21 @@ static void sub_8046C78(struct Sprite *sprite) m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128); } } + if (!IsDoubleBattle() || !ewram17840.unk9_0) - r4_2 = 0; - else if (r5 == GetBattlerAtPosition(0) || r5 == GetBattlerAtPosition(1)) - r4_2 = 1; + cryBehavior = 0; + else if (battler == GetBattlerAtPosition(0) || battler == GetBattlerAtPosition(1)) + cryBehavior = 1; else - r4_2 = 2; + cryBehavior = 2; + taskId = CreateTask(sub_8046AD0, 3); gTasks[taskId].data[0] = species; - gTasks[taskId].data[1] = r8; - gTasks[taskId].data[2] = r4_2; + gTasks[taskId].data[1] = cryPanning; + gTasks[taskId].data[2] = cryBehavior; gTasks[taskId].data[15] = 0; } + StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->data[6]]], 1); AnimateSprite(&gSprites[gBankSpriteIds[sprite->data[6]]]); gSprites[gBankSpriteIds[sprite->data[6]]].data[1] = 0x1000; @@ -795,7 +804,7 @@ static void sub_8046E9C(struct Sprite *sprite) if (r3 == 4) { for (i = 0; i < 12; i++) - sub_804794C(i); + FreeBallGraphics(i); } } } @@ -825,7 +834,7 @@ static void sub_8046FBC(struct Sprite *sprite) } } -static void sub_8047074(struct Sprite *sprite) +static void SendOutPlayerMonAnimation_Step0(struct Sprite *sprite) { sprite->data[0] = 25; sprite->data[2] = GetBattlerSpriteCoord(sprite->data[6], 2); @@ -833,12 +842,12 @@ static void sub_8047074(struct Sprite *sprite) sprite->data[5] = -30; sprite->oam.affineParam = sprite->data[6]; InitAnimArcTranslation(sprite); - sprite->callback = sub_80470C4; + sprite->callback = SendOutPlayerMonAnimation_Step1; } #define HIBYTE(x) (((x) >> 8) & 0xFF) -static void sub_80470C4(struct Sprite *sprite) +static void SendOutPlayerMonAnimation_Step1(struct Sprite *sprite) { u32 r6; u32 r7; @@ -855,6 +864,7 @@ static void sub_80470C4(struct Sprite *sprite) sprite->data[2] = ((sprite->data[2] / 3) & ~1) | r7; StartSpriteAffineAnim(sprite, 4); } + r4 = sprite->data[0]; TranslateAnimLinear(sprite); sprite->data[7] += sprite->data[6] / 3; @@ -864,6 +874,7 @@ static void sub_80470C4(struct Sprite *sprite) sprite->data[0] = r4; else sprite->data[0] = r4 - 1; + if (HIBYTE(sprite->data[7]) >= 80) { r6 = sprite->data[1] & 1; @@ -882,17 +893,17 @@ static void sub_80470C4(struct Sprite *sprite) sprite->pos2.x = 0; sprite->data[6] = sprite->oam.affineParam & 0xFF; sprite->data[0] = 0; - if (IsDoubleBattle() && ewram17840.unk9_0 - && sprite->data[6] == GetBattlerAtPosition(2)) - sprite->callback = sub_8047230; + if (IsDoubleBattle() && ewram17840.unk9_0 && sprite->data[6] == GetBattlerAtPosition(2)) + sprite->callback = SendOutMonAnimation_Delay; else sprite->callback = sub_8046C78; + StartSpriteAffineAnim(sprite, 0); } } } -static void sub_8047230(struct Sprite *sprite) +static void SendOutMonAnimation_Delay(struct Sprite *sprite) { if (sprite->data[0]++ > 24) { @@ -901,15 +912,14 @@ static void sub_8047230(struct Sprite *sprite) } } -static void sub_8047254(struct Sprite *sprite) +static void SendOutOpponentMonAnimation_Step0(struct Sprite *sprite) { sprite->data[0]++; if (sprite->data[0] > 15) { sprite->data[0] = 0; - if (IsDoubleBattle() && ewram17840.unk9_0 - && sprite->data[6] == GetBattlerAtPosition(3)) - sprite->callback = sub_8047230; + if (IsDoubleBattle() && ewram17840.unk9_0 && sprite->data[6] == GetBattlerAtPosition(3)) + sprite->callback = SendOutMonAnimation_Delay; else sprite->callback = sub_8046C78; } @@ -917,7 +927,7 @@ static void sub_8047254(struct Sprite *sprite) static u8 sub_80472B0(u8 a, u8 b, u8 c, u8 d) { - return sub_814086C(a, b, c, d, 0); + return AnimateBallOpenParticles(a, b, c, d, 0); } static u8 sub_80472D8(u8 a, u8 b, u32 c) @@ -1155,38 +1165,39 @@ static void oamc_804BEB4(struct Sprite *sprite) } } -void sub_80478DC(u8 a) +void LoadBallGraphics(u8 ballIndex) { - u16 var; + u16 tileStart; - if (GetSpriteTileStartByTag(sBallSpriteSheets[a].tag) == 0xFFFF) + if (GetSpriteTileStartByTag(sBallSpriteSheets[ballIndex].tag) == 0xFFFF) { - LoadCompressedObjectPic(&sBallSpriteSheets[a]); - LoadCompressedObjectPalette(&sBallSpritePalettes[a]); + LoadCompressedObjectPic(&sBallSpriteSheets[ballIndex]); + LoadCompressedObjectPalette(&sBallSpritePalettes[ballIndex]); } - switch (a) + + switch (ballIndex) { case 6: case 10: case 11: break; default: - var = GetSpriteTileStartByTag(sBallSpriteSheets[a].tag); - LZDecompressVram(gUnknown_08D030D0, (void *)(VRAM + 0x10100 + var * 32)); + tileStart = GetSpriteTileStartByTag(sBallSpriteSheets[ballIndex].tag); + LZDecompressVram(gUnknown_08D030D0, (void *)(VRAM + 0x10100 + tileStart * 32)); break; } } -void sub_804794C(u8 a) +void FreeBallGraphics(u8 ballIndex) { - FreeSpriteTilesByTag(sBallSpriteSheets[a].tag); - FreeSpritePaletteByTag(sBallSpritePalettes[a].tag); + FreeSpriteTilesByTag(sBallSpriteSheets[ballIndex].tag); + FreeSpritePaletteByTag(sBallSpritePalettes[ballIndex].tag); } -static u16 sub_8047978(u8 a) +static u16 GetBattlerBall(u8 battler) { - if (GetBattlerSide(a) == 0) - return GetMonData(&gPlayerParty[gBattlerPartyIndexes[a]], MON_DATA_POKEBALL); + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_POKEBALL); else - return GetMonData(&gEnemyParty[gBattlerPartyIndexes[a]], MON_DATA_POKEBALL); + return GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_POKEBALL); } diff --git a/src/battle/post_battle_event_funcs.c b/src/battle/post_battle_event_funcs.c index a44cf028b..d0fbbec85 100644 --- a/src/battle/post_battle_event_funcs.c +++ b/src/battle/post_battle_event_funcs.c @@ -6,6 +6,7 @@ #include "pokemon.h" #include "overworld.h" #include "script_pokemon_80C4.h" +#include "constants/heal_locations.h" extern u8 gUnknown_02039324; @@ -32,9 +33,9 @@ int GameClear(void) SetSecretBase2Field_9(); if (gSaveBlock2.playerGender == MALE) - sub_80537CC(1); + sub_80537CC(HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F); else - sub_80537CC(2); + sub_80537CC(HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE_2F); ribbonGet = FALSE; diff --git a/src/birch_pc.c b/src/birch_pc.c index 4b0025504..2a76b3c8c 100644 --- a/src/birch_pc.c +++ b/src/birch_pc.c @@ -87,24 +87,24 @@ const u8 *GetPokedexRatingText(u16 count) return gBirchDexRatingText_LessThan180; if (count < 190) return gBirchDexRatingText_LessThan190; - if (count < 200) + if (count < HOENN_DEX_COUNT - 2) return gBirchDexRatingText_LessThan200; - if (count == 200) + if (count == HOENN_DEX_COUNT - 2) { if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) || GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // Jirachi or Deoxys is not counted towards the dex completion. If either of these flags are enabled, it means the actual count is less than 200. return gBirchDexRatingText_LessThan200; return gBirchDexRatingText_DexCompleted; } - if (count == 201) + if (count == HOENN_DEX_COUNT - 1) { if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) && GetSetPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // If both of these flags are enabled, it means the actual count is less than 200. return gBirchDexRatingText_LessThan200; return gBirchDexRatingText_DexCompleted; } - if (count == 202) - return gBirchDexRatingText_DexCompleted; // Hoenn dex is considered complete, even though the hoenn dex count is 210. + if (count == HOENN_DEX_COUNT) + return gBirchDexRatingText_DexCompleted; // Hoenn dex is considered complete, a count of 202 means Jirachi and Deoxys are obtained return gBirchDexRatingText_LessThan10; } diff --git a/src/contest_effect.c b/src/contest_effect.c index a5615851f..17779a0c6 100644 --- a/src/contest_effect.c +++ b/src/contest_effect.c @@ -158,10 +158,8 @@ static void ContestEffect_StartlePrevMons(void) u8 a = shared192D0.contestant; if (shared192D0.turnOrder[a] != 0) { - int i; - int j = 0; - - for (i = 0; i < 4; i++) + int i, j; + for (i = 0, j = 0; i < 4; i++) if (shared192D0.turnOrder[a] > shared192D0.turnOrder[i]) shared192D0.jamQueue[j++] = i; shared192D0.jamQueue[j] = 0xFF; @@ -617,150 +615,40 @@ static void ContestEffect_QualityDependsOnTiming(void) sContestantStatus[shared192D0.contestant].appeal2 = appeal; } -#ifdef NONMATCHING -// Not even close, send help -// Works well if it’s the same type as the one before. static void ContestEffect_BetterIfSameType(void) { - s8 r4; - s8 r2; + s8 turnOrder = shared192D0.turnOrder[shared192D0.contestant]; + s8 i = turnOrder - 1, j; + u16 move; - for (r4 = shared192D0.turnOrder[shared192D0.contestant]; r4 > 0; r4--) + if (turnOrder == 0) + return; + + while (1) { - for (r2 = 0; r2 < 4; r2++) + for (j = 0; j < 4; j++) { - if (shared192D0.turnOrder[r2] == r4 - 1) + if (shared192D0.turnOrder[j] == i) break; } - if (!(sContestantStatus[r2].noMoreTurns || sContestantStatus[r2].nervous || sContestantStatus[r2].numTurnsSkipped)) + if (sContestantStatus[j].noMoreTurns || sContestantStatus[j].nervous || sContestantStatus[j].numTurnsSkipped) + { + if (--i < 0) + return; + } + else { - u16 move = sContestantStatus[shared192D0.contestant].currMove; - - if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[r2].currMove].contestCategory) - { - sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2; - SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD); - } break; } } + + move = sContestantStatus[shared192D0.contestant].currMove; + if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[j].currMove].contestCategory) + { + sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD); + } } -#else -NAKED void ContestEffect_BetterIfSameType(void) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tldr r1, _080B8940 @ =gSharedMem + 0x192D0\n" - "\tldrb r0, [r1, 0x11]\n" - "\tadds r0, r1\n" - "\tmovs r2, 0\n" - "\tldrsb r2, [r0, r2]\n" - "\tsubs r0, r2, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tmov r12, r1\n" - "\tcmp r2, 0\n" - "\tbeq _080B8994\n" - "\tldrb r5, [r1]\n" - "\tmov r6, r12\n" - "\tsubs r6, 0x70\n" - "_080B88EA:\n" - "\tmovs r2, 0\n" - "\tlsls r0, r4, 24\n" - "\tasrs r1, r0, 24\n" - "\tadds r4, r0, 0\n" - "\tcmp r5, r1\n" - "\tbeq _080B8910\n" - "\tldr r3, _080B8940 @ =gSharedMem + 0x192D0\n" - "_080B88F8:\n" - "\tlsls r0, r2, 24\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 17\n" - "\tadds r0, r2\n" - "\tlsrs r2, r0, 24\n" - "\tasrs r0, 24\n" - "\tcmp r0, 0x3\n" - "\tbgt _080B8910\n" - "\tadds r0, r3\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, r1\n" - "\tbne _080B88F8\n" - "_080B8910:\n" - "\tlsls r2, 24\n" - "\tasrs r1, r2, 24\n" - "\tlsls r0, r1, 3\n" - "\tsubs r0, r1\n" - "\tlsls r0, 2\n" - "\tadds r3, r0, r6\n" - "\tldrb r1, [r3, 0xB]\n" - "\tmovs r0, 0x80\n" - "\tands r0, r1\n" - "\tadds r7, r2, 0\n" - "\tcmp r0, 0\n" - "\tbne _080B8932\n" - "\tldrb r1, [r3, 0xC]\n" - "\tmovs r0, 0x7\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _080B8944\n" - "_080B8932:\n" - "\tmovs r1, 0xFF\n" - "\tlsls r1, 24\n" - "\tadds r0, r4, r1\n" - "\tlsrs r4, r0, 24\n" - "\tcmp r0, 0\n" - "\tblt _080B8994\n" - "\tb _080B88EA\n" - "\t.align 2, 0\n" - "_080B8940: .4byte gSharedMem + 0x192D0\n" - "_080B8944:\n" - "\tmov r2, r12\n" - "\tldrb r1, [r2, 0x11]\n" - "\tlsls r0, r1, 3\n" - "\tsubs r0, r1\n" - "\tlsls r0, 2\n" - "\tmov r3, r12\n" - "\tsubs r3, 0x70\n" - "\tadds r5, r0, r3\n" - "\tldrh r0, [r5, 0x6]\n" - "\tldr r4, _080B899C @ =gContestMoves\n" - "\tlsls r0, 3\n" - "\tadds r6, r0, r4\n" - "\tldrb r2, [r6, 0x1]\n" - "\tlsls r2, 29\n" - "\tasrs r1, r7, 24\n" - "\tlsls r0, r1, 3\n" - "\tsubs r0, r1\n" - "\tlsls r0, 2\n" - "\tadds r0, r3\n" - "\tldrh r0, [r0, 0x6]\n" - "\tlsls r0, 3\n" - "\tadds r0, r4\n" - "\tldrb r0, [r0, 0x1]\n" - "\tlsls r0, 29\n" - "\tcmp r2, r0\n" - "\tbne _080B8994\n" - "\tldr r1, _080B89A0 @ =gContestEffects\n" - "\tldrb r0, [r6]\n" - "\tlsls r0, 2\n" - "\tadds r0, r1\n" - "\tldrb r0, [r0, 0x1]\n" - "\tlsls r0, 1\n" - "\tldrh r1, [r5, 0x2]\n" - "\tadds r0, r1\n" - "\tstrh r0, [r5, 0x2]\n" - "\tmov r2, r12\n" - "\tldrb r0, [r2, 0x11]\n" - "\tmovs r1, 0x1F\n" - "\tbl SetContestantEffectStringID\n" - "_080B8994:\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_080B899C: .4byte gContestMoves\n" - "_080B89A0: .4byte gContestEffects"); -} -#endif // Works well if different in type than the one before. static void ContestEffect_BetterIfDiffType(void) @@ -1113,16 +1001,20 @@ static bool8 WasAtLeastOneOpponentJammed(void) shared192D0.jam2 = 10; SetContestantEffectStringID(contestant, CONTEST_STRING_LITTLE_DISTRACTED); } - else if ((shared192D0.jam2 -= sContestantStatus[contestant].jamReduction) <= 0) - { - shared192D0.jam2 = 0; - SetContestantEffectStringID(contestant, CONTEST_STRING_NOT_FAZED); - } else { - JamContestant(contestant, shared192D0.jam2); - SetStartledString(contestant, shared192D0.jam2); - jamBuffer[contestant] = shared192D0.jam2; + shared192D0.jam2 -= sContestantStatus[contestant].jamReduction; + if (shared192D0.jam2 <= 0) + { + shared192D0.jam2 = 0; + SetContestantEffectStringID(contestant, CONTEST_STRING_NOT_FAZED); + } + else + { + JamContestant(contestant, shared192D0.jam2); + SetStartledString(contestant, shared192D0.jam2); + jamBuffer[contestant] = shared192D0.jam2; + } } } } diff --git a/src/data/heal_locations.h b/src/data/heal_locations.h new file mode 100644 index 000000000..f764981bf --- /dev/null +++ b/src/data/heal_locations.h @@ -0,0 +1,25 @@ +static const struct HealLocation sHealLocations[] = +{ + {MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), 4, 2}, + {MAP_GROUP(LITTLEROOT_TOWN_MAYS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_2F), 4, 2}, + {MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), 20, 17}, + {MAP_GROUP(SLATEPORT_CITY), MAP_NUM(SLATEPORT_CITY), 19, 20}, + {MAP_GROUP(MAUVILLE_CITY), MAP_NUM(MAUVILLE_CITY), 22, 6}, + {MAP_GROUP(RUSTBORO_CITY), MAP_NUM(RUSTBORO_CITY), 16, 39}, + {MAP_GROUP(FORTREE_CITY), MAP_NUM(FORTREE_CITY), 5, 7}, + {MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), 24, 15}, + {MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), 28, 17}, + {MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), 43, 32}, + {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 27, 49}, + {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 5, 9}, + {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 14, 9}, + {MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), 6, 17}, + {MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), 2, 11}, + {MAP_GROUP(LAVARIDGE_TOWN), MAP_NUM(LAVARIDGE_TOWN), 9, 7}, + {MAP_GROUP(FALLARBOR_TOWN), MAP_NUM(FALLARBOR_TOWN), 14, 8}, + {MAP_GROUP(VERDANTURF_TOWN), MAP_NUM(VERDANTURF_TOWN), 16, 4}, + {MAP_GROUP(PACIFIDLOG_TOWN), MAP_NUM(PACIFIDLOG_TOWN), 8, 16}, + {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 18, 6}, + {MAP_GROUP(BATTLE_TOWER_OUTSIDE), MAP_NUM(BATTLE_TOWER_OUTSIDE), 14, 9}, + {MAP_GROUP(SOUTHERN_ISLAND_EXTERIOR), MAP_NUM(SOUTHERN_ISLAND_EXTERIOR), 15, 20}, +}; diff --git a/src/data/pokedex_orders.h b/src/data/pokedex_orders.h index 736c0df6a..830f3d70a 100644 --- a/src/data/pokedex_orders.h +++ b/src/data/pokedex_orders.h @@ -1,1609 +1,1609 @@ #if ENGLISH static const u16 gPokedexOrder_Alphabetical[] = { - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 63, // Abra - 359, // Absol - 142, // Aerodactyl - 306, // Aggron - 190, // Aipom - 65, // Alakazam - 334, // Altaria - 181, // Ampharos - 347, // Anorith - 24, // Arbok - 59, // Arcanine - 168, // Ariados - 348, // Armaldo - 304, // Aron - 144, // Articuno - 184, // Azumarill - 298, // Azurill - 371, // Bagon - 343, // Baltoy - 354, // Banette - 339, // Barboach - 153, // Bayleef - 267, // Beautifly - 15, // Beedrill - 374, // Beldum - 182, // Bellossom - 69, // Bellsprout - 9, // Blastoise - 257, // Blaziken - 242, // Blissey - 286, // Breloom - 1, // Bulbasaur - 12, // Butterfree - 331, // Cacnea - 332, // Cacturne - 323, // Camerupt - 318, // Carvanha - 268, // Cascoon - 351, // Castform - 10, // Caterpie - 251, // Celebi - 113, // Chansey - 6, // Charizard - 4, // Charmander - 5, // Charmeleon - 152, // Chikorita - 358, // Chimecho - 170, // Chinchou - 366, // Clamperl - 344, // Claydol - 36, // Clefable - 35, // Clefairy - 173, // Cleffa - 91, // Cloyster - 256, // Combusken - 341, // Corphish - 222, // Corsola - 346, // Cradily - 342, // Crawdaunt - 169, // Crobat - 159, // Croconaw - 104, // Cubone - 155, // Cyndaquil - 301, // Delcatty - 225, // Delibird - 386, // Deoxys - 87, // Dewgong - 50, // Diglett - 132, // Ditto - 85, // Dodrio - 84, // Doduo - 232, // Donphan - 148, // Dragonair - 149, // Dragonite - 147, // Dratini - 96, // Drowzee - 51, // Dugtrio - 206, // Dunsparce - 356, // Dusclops - 355, // Duskull - 269, // Dustox - 133, // Eevee - 23, // Ekans - 125, // Electabuzz - 309, // Electrike - 101, // Electrode - 239, // Elekid - 244, // Entei - 196, // Espeon - 102, // Exeggcute - 103, // Exeggutor - 295, // Exploud - 83, // Farfetch'd - 22, // Fearow - 349, // Feebas - 160, // Feraligatr - 180, // Flaaffy - 136, // Flareon - 330, // Flygon - 205, // Forretress - 162, // Furret - 282, // Gardevoir - 92, // Gastly - 94, // Gengar - 74, // Geodude - 203, // Girafarig - 362, // Glalie - 207, // Gligar - 44, // Gloom - 42, // Golbat - 118, // Goldeen - 55, // Golduck - 76, // Golem - 368, // Gorebyss - 210, // Granbull - 75, // Graveler - 88, // Grimer - 383, // Groudon - 253, // Grovyle - 58, // Growlithe - 326, // Grumpig - 316, // Gulpin - 130, // Gyarados - 297, // Hariyama - 93, // Haunter - 214, // Heracross - 107, // Hitmonchan - 106, // Hitmonlee - 237, // Hitmontop - 250, // Ho-Oh - 163, // Hoothoot - 187, // Hoppip - 116, // Horsea - 229, // Houndoom - 228, // Houndour - 367, // Huntail - 97, // Hypno - 174, // Igglybuff - 314, // Illumise - 2, // Ivysaur - 39, // Jigglypuff - 385, // Jirachi - 135, // Jolteon - 189, // Jumpluff - 124, // Jynx - 140, // Kabuto - 141, // Kabutops - 64, // Kadabra - 14, // Kakuna - 115, // Kangaskhan - 352, // Kecleon - 230, // Kingdra - 99, // Kingler - 281, // Kirlia - 109, // Koffing - 98, // Krabby - 382, // Kyogre - 305, // Lairon - 171, // Lanturn - 131, // Lapras - 246, // Larvitar - 380, // Latias - 381, // Latios - 166, // Ledian - 165, // Ledyba - 108, // Lickitung - 345, // Lileep - 264, // Linoone - 271, // Lombre - 270, // Lotad - 294, // Loudred - 272, // Ludicolo - 249, // Lugia - 337, // Lunatone - 370, // Luvdisc - 68, // Machamp - 67, // Machoke - 66, // Machop - 240, // Magby - 219, // Magcargo - 129, // Magikarp - 126, // Magmar - 81, // Magnemite - 82, // Magneton - 296, // Makuhita - 310, // Manectric - 56, // Mankey - 226, // Mantine - 179, // Mareep - 183, // Marill - 105, // Marowak - 259, // Marshtomp - 284, // Masquerain - 303, // Mawile - 308, // Medicham - 307, // Meditite - 154, // Meganium - 52, // Meowth - 376, // Metagross - 375, // Metang - 11, // Metapod - 151, // Mew - 150, // Mewtwo - 262, // Mightyena - 350, // Milotic - 241, // Miltank - 312, // Minun - 200, // Misdreavus - 146, // Moltres - 122, // Mr. mime - 258, // Mudkip - 89, // Muk - 198, // Murkrow - 177, // Natu - 34, // Nidoking - 31, // Nidoqueen - 29, // Nidoran? - 32, // Nidoran? - 30, // Nidorina - 33, // Nidorino - 290, // Nincada - 38, // Ninetales - 291, // Ninjask - 164, // Noctowl - 299, // Nosepass - 322, // Numel - 274, // Nuzleaf - 224, // Octillery - 43, // Oddish - 138, // Omanyte - 139, // Omastar - 95, // Onix - 46, // Paras - 47, // Parasect - 279, // Pelipper - 53, // Persian - 231, // Phanpy - 172, // Pichu - 18, // Pidgeot - 17, // Pidgeotto - 16, // Pidgey - 25, // Pikachu - 221, // Piloswine - 204, // Pineco - 127, // Pinsir - 311, // Plusle - 186, // Politoed - 60, // Poliwag - 61, // Poliwhirl - 62, // Poliwrath - 77, // Ponyta - 261, // Poochyena - 137, // Porygon - 233, // Porygon2 - 57, // Primeape - 54, // Psyduck - 247, // Pupitar - 195, // Quagsire - 156, // Quilava - 211, // Qwilfish - 26, // Raichu - 243, // Raikou - 280, // Ralts - 78, // Rapidash - 20, // Raticate - 19, // Rattata - 384, // Rayquaza - 378, // Regice - 377, // Regirock - 379, // Registeel - 369, // Relicanth - 223, // Remoraid - 112, // Rhydon - 111, // Rhyhorn - 315, // Roselia - 302, // Sableye - 373, // Salamence - 27, // Sandshrew - 28, // Sandslash - 254, // Sceptile - 212, // Scizor - 123, // Scyther - 117, // Seadra - 119, // Seaking - 364, // Sealeo - 273, // Seedot - 86, // Seel - 161, // Sentret - 336, // Seviper - 319, // Sharpedo - 292, // Shedinja - 372, // Shelgon - 90, // Shellder - 275, // Shiftry - 285, // Shroomish - 213, // Shuckle - 353, // Shuppet - 266, // Silcoon - 227, // Skarmory - 188, // Skiploom - 300, // Skitty - 289, // Slaking - 287, // Slakoth - 80, // Slowbro - 199, // Slowking - 79, // Slowpoke - 218, // Slugma - 235, // Smeargle - 238, // Smoochum - 215, // Sneasel - 143, // Snorlax - 361, // Snorunt - 209, // Snubbull - 338, // Solrock - 21, // Spearow - 363, // Spheal - 167, // Spinarak - 327, // Spinda - 325, // Spoink - 7, // Squirtle - 234, // Stantler - 121, // Starmie - 120, // Staryu - 208, // Steelix - 185, // Sudowoodo - 245, // Suicune - 192, // Sunflora - 191, // Sunkern - 283, // Surskit - 333, // Swablu - 317, // Swalot - 260, // Swampert - 277, // Swellow - 220, // Swinub - 276, // Taillow - 114, // Tangela - 128, // Tauros - 216, // Teddiursa - 72, // Tentacool - 73, // Tentacruel - 175, // Togepi - 176, // Togetic - 255, // Torchic - 324, // Torkoal - 158, // Totodile - 328, // Trapinch - 252, // Treecko - 357, // Tropius - 157, // Typhlosion - 248, // Tyranitar - 236, // Tyrogue - 197, // Umbreon - 201, // Unown - 217, // Ursaring - 134, // Vaporeon - 49, // Venomoth - 48, // Venonat - 3, // Venusaur - 329, // Vibrava - 71, // Victreebel - 288, // Vigoroth - 45, // Vileplume - 313, // Volbeat - 100, // Voltorb - 37, // Vulpix - 320, // Wailmer - 321, // Wailord - 365, // Walrein - 8, // Wartortle - 13, // Weedle - 70, // Weepinbell - 110, // Weezing - 340, // Whiscash - 293, // Whismur - 40, // Wigglytuff - 278, // Wingull - 202, // Wobbuffet - 194, // Wooper - 265, // Wurmple - 360, // Wynaut - 178, // Xatu - 193, // Yanma - 335, // Zangoose - 145, // Zapdos - 263, // Zigzagoon - 41, // Zubat + NATIONAL_DEX_OLD_UNOWN_B, + NATIONAL_DEX_OLD_UNOWN_C, + NATIONAL_DEX_OLD_UNOWN_D, + NATIONAL_DEX_OLD_UNOWN_E, + NATIONAL_DEX_OLD_UNOWN_F, + NATIONAL_DEX_OLD_UNOWN_G, + NATIONAL_DEX_OLD_UNOWN_H, + NATIONAL_DEX_OLD_UNOWN_I, + NATIONAL_DEX_OLD_UNOWN_J, + NATIONAL_DEX_OLD_UNOWN_K, + NATIONAL_DEX_OLD_UNOWN_L, + NATIONAL_DEX_OLD_UNOWN_M, + NATIONAL_DEX_OLD_UNOWN_N, + NATIONAL_DEX_OLD_UNOWN_O, + NATIONAL_DEX_OLD_UNOWN_P, + NATIONAL_DEX_OLD_UNOWN_Q, + NATIONAL_DEX_OLD_UNOWN_R, + NATIONAL_DEX_OLD_UNOWN_S, + NATIONAL_DEX_OLD_UNOWN_T, + NATIONAL_DEX_OLD_UNOWN_U, + NATIONAL_DEX_OLD_UNOWN_V, + NATIONAL_DEX_OLD_UNOWN_W, + NATIONAL_DEX_OLD_UNOWN_X, + NATIONAL_DEX_OLD_UNOWN_Y, + NATIONAL_DEX_OLD_UNOWN_Z, + NATIONAL_DEX_ABRA, + NATIONAL_DEX_ABSOL, + NATIONAL_DEX_AERODACTYL, + NATIONAL_DEX_AGGRON, + NATIONAL_DEX_AIPOM, + NATIONAL_DEX_ALAKAZAM, + NATIONAL_DEX_ALTARIA, + NATIONAL_DEX_AMPHAROS, + NATIONAL_DEX_ANORITH, + NATIONAL_DEX_ARBOK, + NATIONAL_DEX_ARCANINE, + NATIONAL_DEX_ARIADOS, + NATIONAL_DEX_ARMALDO, + NATIONAL_DEX_ARON, + NATIONAL_DEX_ARTICUNO, + NATIONAL_DEX_AZUMARILL, + NATIONAL_DEX_AZURILL, + NATIONAL_DEX_BAGON, + NATIONAL_DEX_BALTOY, + NATIONAL_DEX_BANETTE, + NATIONAL_DEX_BARBOACH, + NATIONAL_DEX_BAYLEEF, + NATIONAL_DEX_BEAUTIFLY, + NATIONAL_DEX_BEEDRILL, + NATIONAL_DEX_BELDUM, + NATIONAL_DEX_BELLOSSOM, + NATIONAL_DEX_BELLSPROUT, + NATIONAL_DEX_BLASTOISE, + NATIONAL_DEX_BLAZIKEN, + NATIONAL_DEX_BLISSEY, + NATIONAL_DEX_BRELOOM, + NATIONAL_DEX_BULBASAUR, + NATIONAL_DEX_BUTTERFREE, + NATIONAL_DEX_CACNEA, + NATIONAL_DEX_CACTURNE, + NATIONAL_DEX_CAMERUPT, + NATIONAL_DEX_CARVANHA, + NATIONAL_DEX_CASCOON, + NATIONAL_DEX_CASTFORM, + NATIONAL_DEX_CATERPIE, + NATIONAL_DEX_CELEBI, + NATIONAL_DEX_CHANSEY, + NATIONAL_DEX_CHARIZARD, + NATIONAL_DEX_CHARMANDER, + NATIONAL_DEX_CHARMELEON, + NATIONAL_DEX_CHIKORITA, + NATIONAL_DEX_CHIMECHO, + NATIONAL_DEX_CHINCHOU, + NATIONAL_DEX_CLAMPERL, + NATIONAL_DEX_CLAYDOL, + NATIONAL_DEX_CLEFABLE, + NATIONAL_DEX_CLEFAIRY, + NATIONAL_DEX_CLEFFA, + NATIONAL_DEX_CLOYSTER, + NATIONAL_DEX_COMBUSKEN, + NATIONAL_DEX_CORPHISH, + NATIONAL_DEX_CORSOLA, + NATIONAL_DEX_CRADILY, + NATIONAL_DEX_CRAWDAUNT, + NATIONAL_DEX_CROBAT, + NATIONAL_DEX_CROCONAW, + NATIONAL_DEX_CUBONE, + NATIONAL_DEX_CYNDAQUIL, + NATIONAL_DEX_DELCATTY, + NATIONAL_DEX_DELIBIRD, + NATIONAL_DEX_DEOXYS, + NATIONAL_DEX_DEWGONG, + NATIONAL_DEX_DIGLETT, + NATIONAL_DEX_DITTO, + NATIONAL_DEX_DODRIO, + NATIONAL_DEX_DODUO, + NATIONAL_DEX_DONPHAN, + NATIONAL_DEX_DRAGONAIR, + NATIONAL_DEX_DRAGONITE, + NATIONAL_DEX_DRATINI, + NATIONAL_DEX_DROWZEE, + NATIONAL_DEX_DUGTRIO, + NATIONAL_DEX_DUNSPARCE, + NATIONAL_DEX_DUSCLOPS, + NATIONAL_DEX_DUSKULL, + NATIONAL_DEX_DUSTOX, + NATIONAL_DEX_EEVEE, + NATIONAL_DEX_EKANS, + NATIONAL_DEX_ELECTABUZZ, + NATIONAL_DEX_ELECTRIKE, + NATIONAL_DEX_ELECTRODE, + NATIONAL_DEX_ELEKID, + NATIONAL_DEX_ENTEI, + NATIONAL_DEX_ESPEON, + NATIONAL_DEX_EXEGGCUTE, + NATIONAL_DEX_EXEGGUTOR, + NATIONAL_DEX_EXPLOUD, + NATIONAL_DEX_FARFETCHD, + NATIONAL_DEX_FEAROW, + NATIONAL_DEX_FEEBAS, + NATIONAL_DEX_FERALIGATR, + NATIONAL_DEX_FLAAFFY, + NATIONAL_DEX_FLAREON, + NATIONAL_DEX_FLYGON, + NATIONAL_DEX_FORRETRESS, + NATIONAL_DEX_FURRET, + NATIONAL_DEX_GARDEVOIR, + NATIONAL_DEX_GASTLY, + NATIONAL_DEX_GENGAR, + NATIONAL_DEX_GEODUDE, + NATIONAL_DEX_GIRAFARIG, + NATIONAL_DEX_GLALIE, + NATIONAL_DEX_GLIGAR, + NATIONAL_DEX_GLOOM, + NATIONAL_DEX_GOLBAT, + NATIONAL_DEX_GOLDEEN, + NATIONAL_DEX_GOLDUCK, + NATIONAL_DEX_GOLEM, + NATIONAL_DEX_GOREBYSS, + NATIONAL_DEX_GRANBULL, + NATIONAL_DEX_GRAVELER, + NATIONAL_DEX_GRIMER, + NATIONAL_DEX_GROUDON, + NATIONAL_DEX_GROVYLE, + NATIONAL_DEX_GROWLITHE, + NATIONAL_DEX_GRUMPIG, + NATIONAL_DEX_GULPIN, + NATIONAL_DEX_GYARADOS, + NATIONAL_DEX_HARIYAMA, + NATIONAL_DEX_HAUNTER, + NATIONAL_DEX_HERACROSS, + NATIONAL_DEX_HITMONCHAN, + NATIONAL_DEX_HITMONLEE, + NATIONAL_DEX_HITMONTOP, + NATIONAL_DEX_HO_OH, + NATIONAL_DEX_HOOTHOOT, + NATIONAL_DEX_HOPPIP, + NATIONAL_DEX_HORSEA, + NATIONAL_DEX_HOUNDOOM, + NATIONAL_DEX_HOUNDOUR, + NATIONAL_DEX_HUNTAIL, + NATIONAL_DEX_HYPNO, + NATIONAL_DEX_IGGLYBUFF, + NATIONAL_DEX_ILLUMISE, + NATIONAL_DEX_IVYSAUR, + NATIONAL_DEX_JIGGLYPUFF, + NATIONAL_DEX_JIRACHI, + NATIONAL_DEX_JOLTEON, + NATIONAL_DEX_JUMPLUFF, + NATIONAL_DEX_JYNX, + NATIONAL_DEX_KABUTO, + NATIONAL_DEX_KABUTOPS, + NATIONAL_DEX_KADABRA, + NATIONAL_DEX_KAKUNA, + NATIONAL_DEX_KANGASKHAN, + NATIONAL_DEX_KECLEON, + NATIONAL_DEX_KINGDRA, + NATIONAL_DEX_KINGLER, + NATIONAL_DEX_KIRLIA, + NATIONAL_DEX_KOFFING, + NATIONAL_DEX_KRABBY, + NATIONAL_DEX_KYOGRE, + NATIONAL_DEX_LAIRON, + NATIONAL_DEX_LANTURN, + NATIONAL_DEX_LAPRAS, + NATIONAL_DEX_LARVITAR, + NATIONAL_DEX_LATIAS, + NATIONAL_DEX_LATIOS, + NATIONAL_DEX_LEDIAN, + NATIONAL_DEX_LEDYBA, + NATIONAL_DEX_LICKITUNG, + NATIONAL_DEX_LILEEP, + NATIONAL_DEX_LINOONE, + NATIONAL_DEX_LOMBRE, + NATIONAL_DEX_LOTAD, + NATIONAL_DEX_LOUDRED, + NATIONAL_DEX_LUDICOLO, + NATIONAL_DEX_LUGIA, + NATIONAL_DEX_LUNATONE, + NATIONAL_DEX_LUVDISC, + NATIONAL_DEX_MACHAMP, + NATIONAL_DEX_MACHOKE, + NATIONAL_DEX_MACHOP, + NATIONAL_DEX_MAGBY, + NATIONAL_DEX_MAGCARGO, + NATIONAL_DEX_MAGIKARP, + NATIONAL_DEX_MAGMAR, + NATIONAL_DEX_MAGNEMITE, + NATIONAL_DEX_MAGNETON, + NATIONAL_DEX_MAKUHITA, + NATIONAL_DEX_MANECTRIC, + NATIONAL_DEX_MANKEY, + NATIONAL_DEX_MANTINE, + NATIONAL_DEX_MAREEP, + NATIONAL_DEX_MARILL, + NATIONAL_DEX_MAROWAK, + NATIONAL_DEX_MARSHTOMP, + NATIONAL_DEX_MASQUERAIN, + NATIONAL_DEX_MAWILE, + NATIONAL_DEX_MEDICHAM, + NATIONAL_DEX_MEDITITE, + NATIONAL_DEX_MEGANIUM, + NATIONAL_DEX_MEOWTH, + NATIONAL_DEX_METAGROSS, + NATIONAL_DEX_METANG, + NATIONAL_DEX_METAPOD, + NATIONAL_DEX_MEW, + NATIONAL_DEX_MEWTWO, + NATIONAL_DEX_MIGHTYENA, + NATIONAL_DEX_MILOTIC, + NATIONAL_DEX_MILTANK, + NATIONAL_DEX_MINUN, + NATIONAL_DEX_MISDREAVUS, + NATIONAL_DEX_MOLTRES, + NATIONAL_DEX_MR_MIME, + NATIONAL_DEX_MUDKIP, + NATIONAL_DEX_MUK, + NATIONAL_DEX_MURKROW, + NATIONAL_DEX_NATU, + NATIONAL_DEX_NIDOKING, + NATIONAL_DEX_NIDOQUEEN, + NATIONAL_DEX_NIDORAN_F, + NATIONAL_DEX_NIDORAN_M, + NATIONAL_DEX_NIDORINA, + NATIONAL_DEX_NIDORINO, + NATIONAL_DEX_NINCADA, + NATIONAL_DEX_NINETALES, + NATIONAL_DEX_NINJASK, + NATIONAL_DEX_NOCTOWL, + NATIONAL_DEX_NOSEPASS, + NATIONAL_DEX_NUMEL, + NATIONAL_DEX_NUZLEAF, + NATIONAL_DEX_OCTILLERY, + NATIONAL_DEX_ODDISH, + NATIONAL_DEX_OMANYTE, + NATIONAL_DEX_OMASTAR, + NATIONAL_DEX_ONIX, + NATIONAL_DEX_PARAS, + NATIONAL_DEX_PARASECT, + NATIONAL_DEX_PELIPPER, + NATIONAL_DEX_PERSIAN, + NATIONAL_DEX_PHANPY, + NATIONAL_DEX_PICHU, + NATIONAL_DEX_PIDGEOT, + NATIONAL_DEX_PIDGEOTTO, + NATIONAL_DEX_PIDGEY, + NATIONAL_DEX_PIKACHU, + NATIONAL_DEX_PILOSWINE, + NATIONAL_DEX_PINECO, + NATIONAL_DEX_PINSIR, + NATIONAL_DEX_PLUSLE, + NATIONAL_DEX_POLITOED, + NATIONAL_DEX_POLIWAG, + NATIONAL_DEX_POLIWHIRL, + NATIONAL_DEX_POLIWRATH, + NATIONAL_DEX_PONYTA, + NATIONAL_DEX_POOCHYENA, + NATIONAL_DEX_PORYGON, + NATIONAL_DEX_PORYGON2, + NATIONAL_DEX_PRIMEAPE, + NATIONAL_DEX_PSYDUCK, + NATIONAL_DEX_PUPITAR, + NATIONAL_DEX_QUAGSIRE, + NATIONAL_DEX_QUILAVA, + NATIONAL_DEX_QWILFISH, + NATIONAL_DEX_RAICHU, + NATIONAL_DEX_RAIKOU, + NATIONAL_DEX_RALTS, + NATIONAL_DEX_RAPIDASH, + NATIONAL_DEX_RATICATE, + NATIONAL_DEX_RATTATA, + NATIONAL_DEX_RAYQUAZA, + NATIONAL_DEX_REGICE, + NATIONAL_DEX_REGIROCK, + NATIONAL_DEX_REGISTEEL, + NATIONAL_DEX_RELICANTH, + NATIONAL_DEX_REMORAID, + NATIONAL_DEX_RHYDON, + NATIONAL_DEX_RHYHORN, + NATIONAL_DEX_ROSELIA, + NATIONAL_DEX_SABLEYE, + NATIONAL_DEX_SALAMENCE, + NATIONAL_DEX_SANDSHREW, + NATIONAL_DEX_SANDSLASH, + NATIONAL_DEX_SCEPTILE, + NATIONAL_DEX_SCIZOR, + NATIONAL_DEX_SCYTHER, + NATIONAL_DEX_SEADRA, + NATIONAL_DEX_SEAKING, + NATIONAL_DEX_SEALEO, + NATIONAL_DEX_SEEDOT, + NATIONAL_DEX_SEEL, + NATIONAL_DEX_SENTRET, + NATIONAL_DEX_SEVIPER, + NATIONAL_DEX_SHARPEDO, + NATIONAL_DEX_SHEDINJA, + NATIONAL_DEX_SHELGON, + NATIONAL_DEX_SHELLDER, + NATIONAL_DEX_SHIFTRY, + NATIONAL_DEX_SHROOMISH, + NATIONAL_DEX_SHUCKLE, + NATIONAL_DEX_SHUPPET, + NATIONAL_DEX_SILCOON, + NATIONAL_DEX_SKARMORY, + NATIONAL_DEX_SKIPLOOM, + NATIONAL_DEX_SKITTY, + NATIONAL_DEX_SLAKING, + NATIONAL_DEX_SLAKOTH, + NATIONAL_DEX_SLOWBRO, + NATIONAL_DEX_SLOWKING, + NATIONAL_DEX_SLOWPOKE, + NATIONAL_DEX_SLUGMA, + NATIONAL_DEX_SMEARGLE, + NATIONAL_DEX_SMOOCHUM, + NATIONAL_DEX_SNEASEL, + NATIONAL_DEX_SNORLAX, + NATIONAL_DEX_SNORUNT, + NATIONAL_DEX_SNUBBULL, + NATIONAL_DEX_SOLROCK, + NATIONAL_DEX_SPEAROW, + NATIONAL_DEX_SPHEAL, + NATIONAL_DEX_SPINARAK, + NATIONAL_DEX_SPINDA, + NATIONAL_DEX_SPOINK, + NATIONAL_DEX_SQUIRTLE, + NATIONAL_DEX_STANTLER, + NATIONAL_DEX_STARMIE, + NATIONAL_DEX_STARYU, + NATIONAL_DEX_STEELIX, + NATIONAL_DEX_SUDOWOODO, + NATIONAL_DEX_SUICUNE, + NATIONAL_DEX_SUNFLORA, + NATIONAL_DEX_SUNKERN, + NATIONAL_DEX_SURSKIT, + NATIONAL_DEX_SWABLU, + NATIONAL_DEX_SWALOT, + NATIONAL_DEX_SWAMPERT, + NATIONAL_DEX_SWELLOW, + NATIONAL_DEX_SWINUB, + NATIONAL_DEX_TAILLOW, + NATIONAL_DEX_TANGELA, + NATIONAL_DEX_TAUROS, + NATIONAL_DEX_TEDDIURSA, + NATIONAL_DEX_TENTACOOL, + NATIONAL_DEX_TENTACRUEL, + NATIONAL_DEX_TOGEPI, + NATIONAL_DEX_TOGETIC, + NATIONAL_DEX_TORCHIC, + NATIONAL_DEX_TORKOAL, + NATIONAL_DEX_TOTODILE, + NATIONAL_DEX_TRAPINCH, + NATIONAL_DEX_TREECKO, + NATIONAL_DEX_TROPIUS, + NATIONAL_DEX_TYPHLOSION, + NATIONAL_DEX_TYRANITAR, + NATIONAL_DEX_TYROGUE, + NATIONAL_DEX_UMBREON, + NATIONAL_DEX_UNOWN, + NATIONAL_DEX_URSARING, + NATIONAL_DEX_VAPOREON, + NATIONAL_DEX_VENOMOTH, + NATIONAL_DEX_VENONAT, + NATIONAL_DEX_VENUSAUR, + NATIONAL_DEX_VIBRAVA, + NATIONAL_DEX_VICTREEBEL, + NATIONAL_DEX_VIGOROTH, + NATIONAL_DEX_VILEPLUME, + NATIONAL_DEX_VOLBEAT, + NATIONAL_DEX_VOLTORB, + NATIONAL_DEX_VULPIX, + NATIONAL_DEX_WAILMER, + NATIONAL_DEX_WAILORD, + NATIONAL_DEX_WALREIN, + NATIONAL_DEX_WARTORTLE, + NATIONAL_DEX_WEEDLE, + NATIONAL_DEX_WEEPINBELL, + NATIONAL_DEX_WEEZING, + NATIONAL_DEX_WHISCASH, + NATIONAL_DEX_WHISMUR, + NATIONAL_DEX_WIGGLYTUFF, + NATIONAL_DEX_WINGULL, + NATIONAL_DEX_WOBBUFFET, + NATIONAL_DEX_WOOPER, + NATIONAL_DEX_WURMPLE, + NATIONAL_DEX_WYNAUT, + NATIONAL_DEX_XATU, + NATIONAL_DEX_YANMA, + NATIONAL_DEX_ZANGOOSE, + NATIONAL_DEX_ZAPDOS, + NATIONAL_DEX_ZIGZAGOON, + NATIONAL_DEX_ZUBAT, }; #elif GERMAN static const u16 gPokedexOrder_Alphabetical[] = { - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 367, // Aalabyss - 63, // Abra - 359, // Absol - 142, // Aerodactyl - 93, // Alpollo - 334, // Altaria - 138, // Amonitas - 139, // Amoroso - 181, // Ampharos - 347, // Anorith - 134, // Aquana - 24, // Arbok - 168, // Ariados - 59, // Arkani - 144, // Arktos - 348, // Armaldo - 91, // Austos - 184, // Azumarill - 298, // Azurill - 211, // Baldorfish - 354, // Banette - 349, // Barschwa - 15, // Bibor - 3, // Bisaflor - 2, // Bisaknosp - 1, // Bisasam - 274, // Blanas - 135, // Blitza - 182, // Blubella - 48, // Bluzuk - 225, // Botogel - 373, // Brutalanda - 287, // Bummelz - 322, // Camaub - 323, // Camerupt - 251, // Celebi - 113, // Chaneira - 222, // Corasonn - 234, // Damhirplex - 386, // Deoxys - 248, // Despotar - 50, // Digda - 51, // Digdri - 132, // Ditto - 85, // Dodri - 84, // Dodu - 232, // Donphan - 148, // Dragonir - 149, // Dragoran - 372, // Draschel - 147, // Dratini - 44, // Duflor - 206, // Dummisel - 239, // Elekid - 125, // Elektek - 152, // Endivie - 300, // Eneco - 301, // Enekoro - 244, // Entei - 54, // Enton - 55, // Entoron - 133, // Evoli - 235, // Farbeagle - 194, // Felino - 155, // Feurigel - 261, // Fiffyen - 362, // Firnontor - 136, // Flamara - 79, // Flegmon - 255, // Flemmli - 174, // Fluffeluff - 303, // Flunkifer - 293, // Flurmel - 351, // Formeo - 205, // Forstellka - 309, // Frizelbliz - 58, // Fukano - 78, // Gallopa - 130, // Garados - 252, // Geckarbor - 283, // Gehweiher - 94, // Gengar - 75, // Georok - 76, // Geowaz - 264, // Geradaks - 254, // Gewaldro - 45, // Giflor - 203, // Girafarig - 4, // Glumanda - 6, // Glurak - 5, // Glutexo - 42, // Golbat - 118, // Goldini - 119, // Golking - 210, // Granbull - 190, // Griffel - 326, // Groink - 383, // Groudon - 282, // Guardevoir - 21, // Habitak - 297, // Hariyama - 242, // Heiteira - 250, // Ho-oh - 163, // Hoothoot - 187, // Hoppspross - 13, // Hornliu - 188, // Hubelupf - 229, // Hundemon - 228, // Hunduster - 258, // Hydropi - 97, // Hypno - 22, // Ibitak - 201, // Icognito - 156, // Igelavar - 169, // Iksbat - 314, // Illumise - 160, // Impergator - 360, // Isso - 385, // Jirachi - 87, // Jugong - 256, // Jungglut - 86, // Jurob - 140, // Kabuto - 141, // Kabutops - 64, // Kadabra - 115, // Kangama - 318, // Kanivanha - 286, // Kapilz - 237, // Kapoera - 272, // Kappalores - 158, // Karnimani - 129, // Karpador - 352, // Kecleon - 221, // Keifel - 106, // Kicklee - 371, // Kindwurm - 99, // Kingler - 281, // Kirlia - 74, // Kleinstein - 328, // Knacklion - 285, // Knilz - 69, // Knofensa - 105, // Knogga - 40, // Knuddeluff - 103, // Kokowei - 14, // Kokuna - 98, // Krabby - 294, // Krakeelo - 198, // Kramurx - 295, // Krawumms - 341, // Krebscorps - 342, // Krebutack - 238, // Kussilla - 382, // Kyogre - 80, // Lahmus - 170, // Lampi - 171, // Lanturn - 131, // Lapras - 246, // Larvitar - 199, // Laschoking - 380, // Latias - 381, // Latios - 146, // Lavados - 166, // Ledian - 165, // Ledyba - 101, // Lektrobal - 344, // Lepumentas - 289, // Letarking - 330, // Libelldra - 370, // Liebiskus - 345, // Liliep - 257, // Lohgock - 271, // Lombrero - 153, // Lorblatt - 270, // Loturzel - 249, // Lugia - 337, // Lunastein - 66, // Machollo - 68, // Machomei - 240, // Magby - 219, // Magcargo - 126, // Magmar - 262, // Magnayen - 81, // Magnetilo - 82, // Magneton - 296, // Makuhita - 226, // Mantax - 183, // Marill - 67, // Maschock - 284, // Maskeregen - 52, // Mauzi - 308, // Meditalis - 307, // Meditie - 154, // Meganie - 56, // Menki - 376, // Metagross - 375, // Metang - 151, // Mew - 150, // Mewtu - 350, // Milotic - 241, // Miltank - 312, // Minun - 185, // Mogelbaum - 259, // Moorabbel - 195, // Morlord - 288, // Muntier - 90, // Muschas - 43, // Myrapla - 197, // Nachtara - 299, // Nasgnet - 177, // Natu - 92, // Nebulak - 34, // Nidoking - 31, // Nidoqueen - 29, // Nidoran♀ - 32, // Nidoran♂ - 30, // Nidorina - 33, // Nidorino - 290, // Nincada - 291, // Ninjask - 292, // Ninjatom - 107, // Nockchan - 164, // Noctuh - 332, // Noktuska - 224, // Octillery - 49, // Omot - 95, // Onix - 102, // Owei - 358, // Palimpalim - 327, // Pandir - 268, // Panekon - 122, // Pantimos - 227, // Panzaeron - 267, // Papinella - 189, // Papungha - 46, // Paras - 47, // Parasek - 279, // Pelipper - 366, // Perlu - 231, // Phanpy - 172, // Pichu - 35, // Piepi - 173, // Pii - 25, // Pikachu - 127, // Pinsir - 36, // Pixi - 311, // Plusle - 77, // Ponita - 83, // Porenta - 137, // Porygon - 233, // Porygon2 - 213, // Pottrott - 196, // Psiana - 269, // Pudox - 39, // Pummeluff - 247, // Pupitar - 343, // Puppance - 62, // Quappo - 60, // Quapsel - 61, // Quaputzi - 186, // Quaxo - 220, // Quiekel - 324, // Qurtel - 236, // Rabauz - 26, // Raichu - 243, // Raikou - 57, // Rasaff - 19, // Rattfratz - 20, // Rattikarl - 10, // Raupy - 384, // Rayquaza - 378, // Regice - 377, // Regirock - 379, // Registeel - 143, // Relaxo - 369, // Relicanth - 223, // Remoraid - 253, // Reptain - 23, // Rettan - 111, // Rihorn - 112, // Rizeros - 315, // Roselia - 124, // Rossana - 11, // Safcon - 368, // Saganabyss - 273, // Samurzel - 28, // Sandamer - 27, // Sandan - 71, // Sarzenia - 266, // Schaloko - 212, // Scherox - 7, // Schiggy - 8, // Schillok - 317, // Schlukwech - 316, // Schluppuck - 108, // Schlurp - 339, // Schmerbe - 218, // Schneckmag - 361, // Schneppke - 276, // Schwalbini - 277, // Schwalboss - 230, // Seedraking - 364, // Seejong - 117, // Seemon - 363, // Seemops - 116, // Seeper - 335, // Sengo - 353, // Shuppet - 123, // Sichlor - 65, // Simsala - 214, // Skaraborn - 207, // Skorgla - 88, // Sleima - 89, // Sleimok - 12, // Smettbo - 110, // Smogmog - 109, // Smogon - 215, // Sniebel - 53, // Snobilikat - 209, // Snubbull - 338, // Sonnfel - 192, // Sonnflora - 191, // Sonnkern - 325, // Spoink - 208, // Stahlos - 121, // Starmie - 120, // Sterndu - 306, // Stolloss - 305, // Stollrak - 304, // Stollunior - 245, // Suicune - 260, // Sumpex - 114, // Tangela - 374, // Tanhel - 204, // Tannza - 17, // Tauboga - 18, // Tauboss - 16, // Taubsi - 128, // Tauros - 216, // Teddiursa - 275, // Tengulist - 72, // Tentacha - 73, // Tentoxa - 175, // Togepi - 176, // Togetic - 319, // Tohaido - 157, // Tornupto - 104, // Tragosso - 280, // Trasla - 96, // Traumato - 200, // Traunfugil - 357, // Tropius - 9, // Turtok - 331, // Tuska - 159, // Tyracroc - 70, // Ultrigaria - 217, // Ursaring - 329, // Vibrava - 336, // Vipitis - 313, // Volbeat - 310, // Voltenso - 179, // Voltilamm - 100, // Voltobal - 38, // Vulnona - 37, // Vulpix - 180, // Waaty - 333, // Wablu - 320, // Wailmer - 321, // Wailord - 365, // Walraisa - 265, // Waumpel - 167, // Webarak - 340, // Welsar - 346, // Wielie - 162, // Wiesenior - 161, // Wiesor - 278, // Wingull - 202, // Woingenau - 178, // Xatu - 193, // Yanma - 145, // Zapdos - 263, // Zigzachs - 302, // Zobiris - 41, // Zubat - 356, // Zwirrklop - 355, // Zwirrlicht + NATIONAL_DEX_OLD_UNOWN_B, + NATIONAL_DEX_OLD_UNOWN_C, + NATIONAL_DEX_OLD_UNOWN_D, + NATIONAL_DEX_OLD_UNOWN_E, + NATIONAL_DEX_OLD_UNOWN_F, + NATIONAL_DEX_OLD_UNOWN_G, + NATIONAL_DEX_OLD_UNOWN_H, + NATIONAL_DEX_OLD_UNOWN_I, + NATIONAL_DEX_OLD_UNOWN_J, + NATIONAL_DEX_OLD_UNOWN_K, + NATIONAL_DEX_OLD_UNOWN_L, + NATIONAL_DEX_OLD_UNOWN_M, + NATIONAL_DEX_OLD_UNOWN_N, + NATIONAL_DEX_OLD_UNOWN_O, + NATIONAL_DEX_OLD_UNOWN_P, + NATIONAL_DEX_OLD_UNOWN_Q, + NATIONAL_DEX_OLD_UNOWN_R, + NATIONAL_DEX_OLD_UNOWN_S, + NATIONAL_DEX_OLD_UNOWN_T, + NATIONAL_DEX_OLD_UNOWN_U, + NATIONAL_DEX_OLD_UNOWN_V, + NATIONAL_DEX_OLD_UNOWN_W, + NATIONAL_DEX_OLD_UNOWN_X, + NATIONAL_DEX_OLD_UNOWN_Y, + NATIONAL_DEX_OLD_UNOWN_Z, + NATIONAL_DEX_HUNTAIL, // Aalabyss + NATIONAL_DEX_ABRA, // Abra + NATIONAL_DEX_ABSOL, // Absol + NATIONAL_DEX_AERODACTYL, // Aerodactyl + NATIONAL_DEX_HAUNTER, // Alpollo + NATIONAL_DEX_ALTARIA, // Altaria + NATIONAL_DEX_OMANYTE, // Amonitas + NATIONAL_DEX_OMASTAR, // Amoroso + NATIONAL_DEX_AMPHAROS, // Ampharos + NATIONAL_DEX_ANORITH, // Anorith + NATIONAL_DEX_VAPOREON, // Aquana + NATIONAL_DEX_ARBOK, // Arbok + NATIONAL_DEX_ARIADOS, // Ariados + NATIONAL_DEX_ARCANINE, // Arkani + NATIONAL_DEX_ARTICUNO, // Arktos + NATIONAL_DEX_ARMALDO, // Armaldo + NATIONAL_DEX_CLOYSTER, // Austos + NATIONAL_DEX_AZUMARILL, // Azumarill + NATIONAL_DEX_AZURILL, // Azurill + NATIONAL_DEX_QWILFISH, // Baldorfish + NATIONAL_DEX_BANETTE, // Banette + NATIONAL_DEX_FEEBAS, // Barschwa + NATIONAL_DEX_BEEDRILL, // Bibor + NATIONAL_DEX_VENUSAUR, // Bisaflor + NATIONAL_DEX_IVYSAUR, // Bisaknosp + NATIONAL_DEX_BULBASAUR, // Bisasam + NATIONAL_DEX_NUZLEAF, // Blanas + NATIONAL_DEX_JOLTEON, // Blitza + NATIONAL_DEX_BELLOSSOM, // Blubella + NATIONAL_DEX_VENONAT, // Bluzuk + NATIONAL_DEX_DELIBIRD, // Botogel + NATIONAL_DEX_SALAMENCE, // Brutalanda + NATIONAL_DEX_SLAKOTH, // Bummelz + NATIONAL_DEX_NUMEL, // Camaub + NATIONAL_DEX_CAMERUPT, // Camerupt + NATIONAL_DEX_CELEBI, // Celebi + NATIONAL_DEX_CHANSEY, // Chaneira + NATIONAL_DEX_CORSOLA, // Corasonn + NATIONAL_DEX_STANTLER, // Damhirplex + NATIONAL_DEX_DEOXYS, // Deoxys + NATIONAL_DEX_TYRANITAR, // Despotar + NATIONAL_DEX_DIGLETT, // Digda + NATIONAL_DEX_DUGTRIO, // Digdri + NATIONAL_DEX_DITTO, // Ditto + NATIONAL_DEX_DODRIO, // Dodri + NATIONAL_DEX_DODUO, // Dodu + NATIONAL_DEX_DONPHAN, // Donphan + NATIONAL_DEX_DRAGONAIR, // Dragonir + NATIONAL_DEX_DRAGONITE, // Dragoran + NATIONAL_DEX_SHELGON, // Draschel + NATIONAL_DEX_DRATINI, // Dratini + NATIONAL_DEX_GLOOM, // Duflor + NATIONAL_DEX_DUNSPARCE, // Dummisel + NATIONAL_DEX_ELEKID, // Elekid + NATIONAL_DEX_ELECTABUZZ, // Elektek + NATIONAL_DEX_CHIKORITA, // Endivie + NATIONAL_DEX_SKITTY, // Eneco + NATIONAL_DEX_DELCATTY, // Enekoro + NATIONAL_DEX_ENTEI, // Entei + NATIONAL_DEX_PSYDUCK, // Enton + NATIONAL_DEX_GOLDUCK, // Entoron + NATIONAL_DEX_EEVEE, // Evoli + NATIONAL_DEX_SMEARGLE, // Farbeagle + NATIONAL_DEX_WOOPER, // Felino + NATIONAL_DEX_CYNDAQUIL, // Feurigel + NATIONAL_DEX_POOCHYENA, // Fiffyen + NATIONAL_DEX_GLALIE, // Firnontor + NATIONAL_DEX_FLAREON, // Flamara + NATIONAL_DEX_SLOWPOKE, // Flegmon + NATIONAL_DEX_TORCHIC, // Flemmli + NATIONAL_DEX_IGGLYBUFF, // Fluffeluff + NATIONAL_DEX_MAWILE, // Flunkifer + NATIONAL_DEX_WHISMUR, // Flurmel + NATIONAL_DEX_CASTFORM, // Formeo + NATIONAL_DEX_FORRETRESS, // Forstellka + NATIONAL_DEX_ELECTRIKE, // Frizelbliz + NATIONAL_DEX_GROWLITHE, // Fukano + NATIONAL_DEX_RAPIDASH, // Gallopa + NATIONAL_DEX_GYARADOS, // Garados + NATIONAL_DEX_TREECKO, // Geckarbor + NATIONAL_DEX_SURSKIT, // Gehweiher + NATIONAL_DEX_GENGAR, // Gengar + NATIONAL_DEX_GRAVELER, // Georok + NATIONAL_DEX_GOLEM, // Geowaz + NATIONAL_DEX_LINOONE, // Geradaks + NATIONAL_DEX_SCEPTILE, // Gewaldro + NATIONAL_DEX_VILEPLUME, // Giflor + NATIONAL_DEX_GIRAFARIG, // Girafarig + NATIONAL_DEX_CHARMANDER, // Glumanda + NATIONAL_DEX_CHARIZARD, // Glurak + NATIONAL_DEX_CHARMELEON, // Glutexo + NATIONAL_DEX_GOLBAT, // Golbat + NATIONAL_DEX_GOLDEEN, // Goldini + NATIONAL_DEX_SEAKING, // Golking + NATIONAL_DEX_GRANBULL, // Granbull + NATIONAL_DEX_AIPOM, // Griffel + NATIONAL_DEX_GRUMPIG, // Groink + NATIONAL_DEX_GROUDON, // Groudon + NATIONAL_DEX_GARDEVOIR, // Guardevoir + NATIONAL_DEX_SPEAROW, // Habitak + NATIONAL_DEX_HARIYAMA, // Hariyama + NATIONAL_DEX_BLISSEY, // Heiteira + NATIONAL_DEX_HO_OH, // Ho-oh + NATIONAL_DEX_HOOTHOOT, // Hoothoot + NATIONAL_DEX_HOPPIP, // Hoppspross + NATIONAL_DEX_WEEDLE, // Hornliu + NATIONAL_DEX_SKIPLOOM, // Hubelupf + NATIONAL_DEX_HOUNDOOM, // Hundemon + NATIONAL_DEX_HOUNDOUR, // Hunduster + NATIONAL_DEX_MUDKIP, // Hydropi + NATIONAL_DEX_HYPNO, // Hypno + NATIONAL_DEX_FEAROW, // Ibitak + NATIONAL_DEX_UNOWN, // Icognito + NATIONAL_DEX_QUILAVA, // Igelavar + NATIONAL_DEX_CROBAT, // Iksbat + NATIONAL_DEX_ILLUMISE, // Illumise + NATIONAL_DEX_FERALIGATR, // Impergator + NATIONAL_DEX_WYNAUT, // Isso + NATIONAL_DEX_JIRACHI, // Jirachi + NATIONAL_DEX_DEWGONG, // Jugong + NATIONAL_DEX_COMBUSKEN, // Jungglut + NATIONAL_DEX_SEEL, // Jurob + NATIONAL_DEX_KABUTO, // Kabuto + NATIONAL_DEX_KABUTOPS, // Kabutops + NATIONAL_DEX_KADABRA, // Kadabra + NATIONAL_DEX_KANGASKHAN, // Kangama + NATIONAL_DEX_CARVANHA, // Kanivanha + NATIONAL_DEX_BRELOOM, // Kapilz + NATIONAL_DEX_HITMONTOP, // Kapoera + NATIONAL_DEX_LUDICOLO, // Kappalores + NATIONAL_DEX_TOTODILE, // Karnimani + NATIONAL_DEX_MAGIKARP, // Karpador + NATIONAL_DEX_KECLEON, // Kecleon + NATIONAL_DEX_PILOSWINE, // Keifel + NATIONAL_DEX_HITMONLEE, // Kicklee + NATIONAL_DEX_BAGON, // Kindwurm + NATIONAL_DEX_KINGLER, // Kingler + NATIONAL_DEX_KIRLIA, // Kirlia + NATIONAL_DEX_GEODUDE, // Kleinstein + NATIONAL_DEX_TRAPINCH, // Knacklion + NATIONAL_DEX_SHROOMISH, // Knilz + NATIONAL_DEX_BELLSPROUT, // Knofensa + NATIONAL_DEX_MAROWAK, // Knogga + NATIONAL_DEX_WIGGLYTUFF, // Knuddeluff + NATIONAL_DEX_EXEGGUTOR, // Kokowei + NATIONAL_DEX_KAKUNA, // Kokuna + NATIONAL_DEX_KRABBY, // Krabby + NATIONAL_DEX_LOUDRED, // Krakeelo + NATIONAL_DEX_MURKROW, // Kramurx + NATIONAL_DEX_EXPLOUD, // Krawumms + NATIONAL_DEX_CORPHISH, // Krebscorps + NATIONAL_DEX_CRAWDAUNT, // Krebutack + NATIONAL_DEX_SMOOCHUM, // Kussilla + NATIONAL_DEX_KYOGRE, // Kyogre + NATIONAL_DEX_SLOWBRO, // Lahmus + NATIONAL_DEX_CHINCHOU, // Lampi + NATIONAL_DEX_LANTURN, // Lanturn + NATIONAL_DEX_LAPRAS, // Lapras + NATIONAL_DEX_LARVITAR, // Larvitar + NATIONAL_DEX_SLOWKING, // Laschoking + NATIONAL_DEX_LATIAS, // Latias + NATIONAL_DEX_LATIOS, // Latios + NATIONAL_DEX_MOLTRES, // Lavados + NATIONAL_DEX_LEDIAN, // Ledian + NATIONAL_DEX_LEDYBA, // Ledyba + NATIONAL_DEX_ELECTRODE, // Lektrobal + NATIONAL_DEX_CLAYDOL, // Lepumentas + NATIONAL_DEX_SLAKING, // Letarking + NATIONAL_DEX_FLYGON, // Libelldra + NATIONAL_DEX_LUVDISC, // Liebiskus + NATIONAL_DEX_LILEEP, // Liliep + NATIONAL_DEX_BLAZIKEN, // Lohgock + NATIONAL_DEX_LOMBRE, // Lombrero + NATIONAL_DEX_BAYLEEF, // Lorblatt + NATIONAL_DEX_LOTAD, // Loturzel + NATIONAL_DEX_LUGIA, // Lugia + NATIONAL_DEX_LUNATONE, // Lunastein + NATIONAL_DEX_MACHOP, // Machollo + NATIONAL_DEX_MACHAMP, // Machomei + NATIONAL_DEX_MAGBY, // Magby + NATIONAL_DEX_MAGCARGO, // Magcargo + NATIONAL_DEX_MAGMAR, // Magmar + NATIONAL_DEX_MIGHTYENA, // Magnayen + NATIONAL_DEX_MAGNEMITE, // Magnetilo + NATIONAL_DEX_MAGNETON, // Magneton + NATIONAL_DEX_MAKUHITA, // Makuhita + NATIONAL_DEX_MANTINE, // Mantax + NATIONAL_DEX_MARILL, // Marill + NATIONAL_DEX_MACHOKE, // Maschock + NATIONAL_DEX_MASQUERAIN, // Maskeregen + NATIONAL_DEX_MEOWTH, // Mauzi + NATIONAL_DEX_MEDICHAM, // Meditalis + NATIONAL_DEX_MEDITITE, // Meditie + NATIONAL_DEX_MEGANIUM, // Meganie + NATIONAL_DEX_MANKEY, // Menki + NATIONAL_DEX_METAGROSS, // Metagross + NATIONAL_DEX_METANG, // Metang + NATIONAL_DEX_MEW, // Mew + NATIONAL_DEX_MEWTWO, // Mewtu + NATIONAL_DEX_MILOTIC, // Milotic + NATIONAL_DEX_MILTANK, // Miltank + NATIONAL_DEX_MINUN, // Minun + NATIONAL_DEX_SUDOWOODO, // Mogelbaum + NATIONAL_DEX_MARSHTOMP, // Moorabbel + NATIONAL_DEX_QUAGSIRE, // Morlord + NATIONAL_DEX_VIGOROTH, // Muntier + NATIONAL_DEX_SHELLDER, // Muschas + NATIONAL_DEX_ODDISH, // Myrapla + NATIONAL_DEX_UMBREON, // Nachtara + NATIONAL_DEX_NOSEPASS, // Nasgnet + NATIONAL_DEX_NATU, // Natu + NATIONAL_DEX_GASTLY, // Nebulak + NATIONAL_DEX_NIDOKING, // Nidoking + NATIONAL_DEX_NIDOQUEEN, // Nidoqueen + NATIONAL_DEX_NIDORAN_F, // Nidoran♀ + NATIONAL_DEX_NIDORAN_M, // Nidoran♂ + NATIONAL_DEX_NIDORINA, // Nidorina + NATIONAL_DEX_NIDORINO, // Nidorino + NATIONAL_DEX_NINCADA, // Nincada + NATIONAL_DEX_NINJASK, // Ninjask + NATIONAL_DEX_SHEDINJA, // Ninjatom + NATIONAL_DEX_HITMONCHAN, // Nockchan + NATIONAL_DEX_NOCTOWL, // Noctuh + NATIONAL_DEX_CACTURNE, // Noktuska + NATIONAL_DEX_OCTILLERY, // Octillery + NATIONAL_DEX_VENOMOTH, // Omot + NATIONAL_DEX_ONIX, // Onix + NATIONAL_DEX_EXEGGCUTE, // Owei + NATIONAL_DEX_CHIMECHO, // Palimpalim + NATIONAL_DEX_SPINDA, // Pandir + NATIONAL_DEX_CASCOON, // Panekon + NATIONAL_DEX_MR_MIME, // Pantimos + NATIONAL_DEX_SKARMORY, // Panzaeron + NATIONAL_DEX_BEAUTIFLY, // Papinella + NATIONAL_DEX_JUMPLUFF, // Papungha + NATIONAL_DEX_PARAS, // Paras + NATIONAL_DEX_PARASECT, // Parasek + NATIONAL_DEX_PELIPPER, // Pelipper + NATIONAL_DEX_CLAMPERL, // Perlu + NATIONAL_DEX_PHANPY, // Phanpy + NATIONAL_DEX_PICHU, // Pichu + NATIONAL_DEX_CLEFAIRY, // Piepi + NATIONAL_DEX_CLEFFA, // Pii + NATIONAL_DEX_PIKACHU, // Pikachu + NATIONAL_DEX_PINSIR, // Pinsir + NATIONAL_DEX_CLEFABLE, // Pixi + NATIONAL_DEX_PLUSLE, // Plusle + NATIONAL_DEX_PONYTA, // Ponita + NATIONAL_DEX_FARFETCHD, // Porenta + NATIONAL_DEX_PORYGON, // Porygon + NATIONAL_DEX_PORYGON2, // Porygon2 + NATIONAL_DEX_SHUCKLE, // Pottrott + NATIONAL_DEX_ESPEON, // Psiana + NATIONAL_DEX_DUSTOX, // Pudox + NATIONAL_DEX_JIGGLYPUFF, // Pummeluff + NATIONAL_DEX_PUPITAR, // Pupitar + NATIONAL_DEX_BALTOY, // Puppance + NATIONAL_DEX_POLIWRATH, // Quappo + NATIONAL_DEX_POLIWAG, // Quapsel + NATIONAL_DEX_POLIWHIRL, // Quaputzi + NATIONAL_DEX_POLITOED, // Quaxo + NATIONAL_DEX_SWINUB, // Quiekel + NATIONAL_DEX_TORKOAL, // Qurtel + NATIONAL_DEX_TYROGUE, // Rabauz + NATIONAL_DEX_RAICHU, // Raichu + NATIONAL_DEX_RAIKOU, // Raikou + NATIONAL_DEX_PRIMEAPE, // Rasaff + NATIONAL_DEX_RATTATA, // Rattfratz + NATIONAL_DEX_RATICATE, // Rattikarl + NATIONAL_DEX_CATERPIE, // Raupy + NATIONAL_DEX_RAYQUAZA, // Rayquaza + NATIONAL_DEX_REGICE, // Regice + NATIONAL_DEX_REGIROCK, // Regirock + NATIONAL_DEX_REGISTEEL, // Registeel + NATIONAL_DEX_SNORLAX, // Relaxo + NATIONAL_DEX_RELICANTH, // Relicanth + NATIONAL_DEX_REMORAID, // Remoraid + NATIONAL_DEX_GROVYLE, // Reptain + NATIONAL_DEX_EKANS, // Rettan + NATIONAL_DEX_RHYHORN, // Rihorn + NATIONAL_DEX_RHYDON, // Rizeros + NATIONAL_DEX_ROSELIA, // Roselia + NATIONAL_DEX_JYNX, // Rossana + NATIONAL_DEX_METAPOD, // Safcon + NATIONAL_DEX_GOREBYSS, // Saganabyss + NATIONAL_DEX_SEEDOT, // Samurzel + NATIONAL_DEX_SANDSLASH, // Sandamer + NATIONAL_DEX_SANDSHREW, // Sandan + NATIONAL_DEX_VICTREEBEL, // Sarzenia + NATIONAL_DEX_SILCOON, // Schaloko + NATIONAL_DEX_SCIZOR, // Scherox + NATIONAL_DEX_SQUIRTLE, // Schiggy + NATIONAL_DEX_WARTORTLE, // Schillok + NATIONAL_DEX_SWALOT, // Schlukwech + NATIONAL_DEX_GULPIN, // Schluppuck + NATIONAL_DEX_LICKITUNG, // Schlurp + NATIONAL_DEX_BARBOACH, // Schmerbe + NATIONAL_DEX_SLUGMA, // Schneckmag + NATIONAL_DEX_SNORUNT, // Schneppke + NATIONAL_DEX_TAILLOW, // Schwalbini + NATIONAL_DEX_SWELLOW, // Schwalboss + NATIONAL_DEX_KINGDRA, // Seedraking + NATIONAL_DEX_SEALEO, // Seejong + NATIONAL_DEX_SEADRA, // Seemon + NATIONAL_DEX_SPHEAL, // Seemops + NATIONAL_DEX_HORSEA, // Seeper + NATIONAL_DEX_ZANGOOSE, // Sengo + NATIONAL_DEX_SHUPPET, // Shuppet + NATIONAL_DEX_SCYTHER, // Sichlor + NATIONAL_DEX_ALAKAZAM, // Simsala + NATIONAL_DEX_HERACROSS, // Skaraborn + NATIONAL_DEX_GLIGAR, // Skorgla + NATIONAL_DEX_GRIMER, // Sleima + NATIONAL_DEX_MUK, // Sleimok + NATIONAL_DEX_BUTTERFREE, // Smettbo + NATIONAL_DEX_WEEZING, // Smogmog + NATIONAL_DEX_KOFFING, // Smogon + NATIONAL_DEX_SNEASEL, // Sniebel + NATIONAL_DEX_PERSIAN, // Snobilikat + NATIONAL_DEX_SNUBBULL, // Snubbull + NATIONAL_DEX_SOLROCK, // Sonnfel + NATIONAL_DEX_SUNFLORA, // Sonnflora + NATIONAL_DEX_SUNKERN, // Sonnkern + NATIONAL_DEX_SPOINK, // Spoink + NATIONAL_DEX_STEELIX, // Stahlos + NATIONAL_DEX_STARMIE, // Starmie + NATIONAL_DEX_STARYU, // Sterndu + NATIONAL_DEX_AGGRON, // Stolloss + NATIONAL_DEX_LAIRON, // Stollrak + NATIONAL_DEX_ARON, // Stollunior + NATIONAL_DEX_SUICUNE, // Suicune + NATIONAL_DEX_SWAMPERT, // Sumpex + NATIONAL_DEX_TANGELA, // Tangela + NATIONAL_DEX_BELDUM, // Tanhel + NATIONAL_DEX_PINECO, // Tannza + NATIONAL_DEX_PIDGEOTTO, // Tauboga + NATIONAL_DEX_PIDGEOT, // Tauboss + NATIONAL_DEX_PIDGEY, // Taubsi + NATIONAL_DEX_TAUROS, // Tauros + NATIONAL_DEX_TEDDIURSA, // Teddiursa + NATIONAL_DEX_SHIFTRY, // Tengulist + NATIONAL_DEX_TENTACOOL, // Tentacha + NATIONAL_DEX_TENTACRUEL, // Tentoxa + NATIONAL_DEX_TOGEPI, // Togepi + NATIONAL_DEX_TOGETIC, // Togetic + NATIONAL_DEX_SHARPEDO, // Tohaido + NATIONAL_DEX_TYPHLOSION, // Tornupto + NATIONAL_DEX_CUBONE, // Tragosso + NATIONAL_DEX_RALTS, // Trasla + NATIONAL_DEX_DROWZEE, // Traumato + NATIONAL_DEX_MISDREAVUS, // Traunfugil + NATIONAL_DEX_TROPIUS, // Tropius + NATIONAL_DEX_BLASTOISE, // Turtok + NATIONAL_DEX_CACNEA, // Tuska + NATIONAL_DEX_CROCONAW, // Tyracroc + NATIONAL_DEX_WEEPINBELL, // Ultrigaria + NATIONAL_DEX_URSARING, // Ursaring + NATIONAL_DEX_VIBRAVA, // Vibrava + NATIONAL_DEX_SEVIPER, // Vipitis + NATIONAL_DEX_VOLBEAT, // Volbeat + NATIONAL_DEX_MANECTRIC, // Voltenso + NATIONAL_DEX_MAREEP, // Voltilamm + NATIONAL_DEX_VOLTORB, // Voltobal + NATIONAL_DEX_NINETALES, // Vulnona + NATIONAL_DEX_VULPIX, // Vulpix + NATIONAL_DEX_FLAAFFY, // Waaty + NATIONAL_DEX_SWABLU, // Wablu + NATIONAL_DEX_WAILMER, // Wailmer + NATIONAL_DEX_WAILORD, // Wailord + NATIONAL_DEX_WALREIN, // Walraisa + NATIONAL_DEX_WURMPLE, // Waumpel + NATIONAL_DEX_SPINARAK, // Webarak + NATIONAL_DEX_WHISCASH, // Welsar + NATIONAL_DEX_CRADILY, // Wielie + NATIONAL_DEX_FURRET, // Wiesenior + NATIONAL_DEX_SENTRET, // Wiesor + NATIONAL_DEX_WINGULL, // Wingull + NATIONAL_DEX_WOBBUFFET, // Woingenau + NATIONAL_DEX_XATU, // Xatu + NATIONAL_DEX_YANMA, // Yanma + NATIONAL_DEX_ZAPDOS, // Zapdos + NATIONAL_DEX_ZIGZAGOON, // Zigzachs + NATIONAL_DEX_SABLEYE, // Zobiris + NATIONAL_DEX_ZUBAT, // Zubat + NATIONAL_DEX_DUSCLOPS, // Zwirrklop + NATIONAL_DEX_DUSKULL, // Zwirrlicht }; #endif static const u16 gPokedexOrder_Weight[] = { - 92, // Gastly - 93, // Haunter - 187, // Hoppip - 50, // Diglett - 351, // Castform - 109, // Koffing - 174, // Igglybuff - 200, // Misdreavus - 358, // Chimecho - 188, // Skiploom - 385, // Jirachi - 333, // Swablu - 292, // Shedinja - 175, // Togepi - 283, // Surskit - 16, // Pidgey - 191, // Sunkern - 339, // Barboach - 172, // Pichu - 298, // Azurill - 315, // Roselia - 177, // Natu - 21, // Spearow - 198, // Murkrow - 353, // Shuppet - 276, // Taillow - 102, // Exeggcute - 255, // Torchic - 270, // Lotad - 10, // Caterpie - 189, // Jumpluff - 173, // Cleffa - 13, // Weedle - 176, // Togetic - 147, // Dratini - 19, // Rattata - 284, // Masquerain - 265, // Wurmple - 211, // Qwilfish - 151, // Mew - 90, // Shellder - 273, // Seedot - 132, // Ditto - 69, // Bellsprout - 311, // Plusle - 52, // Meowth - 312, // Minun - 285, // Shroomish - 251, // Celebi - 222, // Corsola - 252, // Treecko - 327, // Spinda - 201, // Unown - 46, // Paras - 43, // Oddish - 39, // Jigglypuff - 290, // Nincada - 182, // Bellossom - 81, // Magnemite - 25, // Pikachu - 238, // Smoochum - 161, // Sentret - 70, // Weepinbell - 152, // Chikorita - 220, // Swinub - 133, // Eevee - 98, // Krabby - 104, // Cubone - 280, // Ralts - 1, // Bulbasaur - 23, // Ekans - 29, // Nidoran? - 204, // Pineco - 349, // Feebas - 138, // Omanyte - 41, // Zubat - 35, // Clefairy - 258, // Mudkip - 209, // Snubbull - 179, // Mareep - 155, // Cyndaquil - 116, // Horsea - 4, // Charmander - 192, // Sunflora - 183, // Marill - 194, // Wooper - 167, // Spinarak - 44, // Gloom - 370, // Luvdisc - 216, // Teddiursa - 32, // Nidoran? - 7, // Squirtle - 278, // Wingull - 158, // Totodile - 110, // Weezing - 37, // Vulpix - 11, // Metapod - 266, // Silcoon - 129, // Magikarp - 14, // Kakuna - 316, // Gulpin - 100, // Voltorb - 165, // Ledyba - 228, // Houndour - 300, // Skitty - 302, // Sableye - 307, // Meditite - 341, // Corphish - 190, // Aipom - 268, // Cascoon - 303, // Mawile - 140, // Kabuto - 40, // Wigglytuff - 27, // Sandshrew - 223, // Remoraid - 291, // Ninjask - 170, // Chinchou - 60, // Poliwag - 347, // Anorith - 49, // Venomoth - 354, // Banette - 2, // Ivysaur - 180, // Flaaffy - 261, // Poochyena - 360, // Wynaut - 206, // Dunsparce - 178, // Xatu - 355, // Duskull - 83, // Farfetch'd - 328, // Trapinch - 118, // Goldeen - 309, // Electrike - 329, // Vibrava - 71, // Victreebel - 153, // Bayleef - 225, // Delibird - 293, // Whismur - 148, // Dragonair - 361, // Snorunt - 263, // Zigzagoon - 314, // Illumise - 313, // Volbeat - 20, // Raticate - 45, // Vileplume - 156, // Quilava - 5, // Charmeleon - 58, // Growlithe - 256, // Combusken - 66, // Machop - 63, // Abra - 33, // Nidorino - 54, // Psyduck - 277, // Swellow - 38, // Ninetales - 30, // Nidorina - 61, // Poliwhirl - 74, // Geodude - 281, // Kirlia - 213, // Shuckle - 334, // Altaria - 318, // Carvanha - 236, // Tyrogue - 163, // Hoothoot - 240, // Magby - 343, // Baltoy - 253, // Grovyle - 352, // Kecleon - 171, // Lanturn - 8, // Wartortle - 368, // Gorebyss - 369, // Relicanth - 239, // Elekid - 340, // Whiscash - 345, // Lileep - 322, // Numel - 287, // Slakoth - 135, // Jolteon - 159, // Croconaw - 136, // Flareon - 117, // Seadra - 196, // Espeon - 367, // Huntail - 197, // Umbreon - 259, // Marshtomp - 274, // Nuzleaf - 215, // Sneasel - 56, // Mankey - 279, // Pelipper - 267, // Beautifly - 224, // Octillery - 184, // Azumarill - 202, // Wobbuffet - 134, // Vaporeon - 28, // Sandslash - 47, // Parasect - 15, // Beedrill - 89, // Muk - 17, // Pidgeotto - 88, // Grimer - 26, // Raichu - 77, // Ponyta - 125, // Electabuzz - 48, // Venonat - 325, // Spoink - 356, // Dusclops - 308, // Medicham - 269, // Dustox - 53, // Persian - 12, // Butterfree - 57, // Primeape - 96, // Drowzee - 162, // Furret - 233, // Porygon2 - 271, // Lombre - 264, // Linoone - 301, // Delcatty - 342, // Crawdaunt - 51, // Dugtrio - 168, // Ariados - 231, // Phanpy - 186, // Politoed - 120, // Staryu - 113, // Chansey - 139, // Omastar - 114, // Tangela - 218, // Slugma - 229, // Houndoom - 166, // Ledian - 79, // Slowpoke - 137, // Porygon - 262, // Mightyena - 193, // Yanma - 22, // Fearow - 185, // Sudowoodo - 119, // Seaking - 286, // Breloom - 84, // Doduo - 18, // Pidgeot - 363, // Spheal - 36, // Clefable - 380, // Latias - 310, // Manectric - 335, // Zangoose - 141, // Kabutops - 94, // Gengar - 294, // Loudred - 124, // Jynx - 164, // Noctowl - 203, // Girafarig - 371, // Bagon - 126, // Magmar - 105, // Marowak - 72, // Tentacool - 288, // Vigoroth - 242, // Blissey - 359, // Absol - 65, // Alakazam - 237, // Hitmontop - 282, // Gardevoir - 210, // Granbull - 106, // Hitmonlee - 107, // Hitmonchan - 227, // Skarmory - 331, // Cacnea - 257, // Blaziken - 254, // Sceptile - 336, // Seviper - 366, // Clamperl - 145, // Zapdos - 214, // Heracross - 62, // Poliwrath - 122, // Mr. mime - 127, // Pinsir - 272, // Ludicolo - 73, // Tentacruel - 42, // Golbat - 219, // Magcargo - 144, // Articuno - 221, // Piloswine - 123, // Scyther - 64, // Kadabra - 235, // Smeargle - 142, // Aerodactyl - 275, // Shiftry - 99, // Kingler - 31, // Nidoqueen - 82, // Magneton - 304, // Aron - 381, // Latios - 146, // Moltres - 346, // Cradily - 386, // Deoxys - 181, // Ampharos - 34, // Nidoking - 207, // Gligar - 24, // Arbok - 108, // Lickitung - 101, // Electrode - 348, // Armaldo - 67, // Machoke - 234, // Stantler - 326, // Grumpig - 246, // Larvitar - 169, // Crobat - 195, // Quagsire - 241, // Miltank - 97, // Hypno - 55, // Golduck - 332, // Cacturne - 80, // Slowbro - 157, // Typhlosion - 199, // Slowking - 115, // Kangaskhan - 121, // Starmie - 317, // Swalot - 324, // Torkoal - 260, // Swampert - 330, // Flygon - 295, // Exploud - 85, // Dodrio - 9, // Blastoise - 296, // Makuhita - 364, // Sealeo - 128, // Tauros - 319, // Sharpedo - 160, // Feraligatr - 86, // Seel - 6, // Charizard - 78, // Rapidash - 374, // Beldum - 299, // Nosepass - 3, // Venusaur - 357, // Tropius - 154, // Meganium - 373, // Salamence - 75, // Graveler - 344, // Claydol - 372, // Shelgon - 111, // Rhyhorn - 212, // Scizor - 87, // Dewgong - 112, // Rhydon - 232, // Donphan - 103, // Exeggutor - 305, // Lairon - 150, // Mewtwo - 217, // Ursaring - 205, // Forretress - 68, // Machamp - 320, // Wailmer - 289, // Slaking - 91, // Cloyster - 365, // Walrein - 247, // Pupitar - 230, // Kingdra - 338, // Solrock - 59, // Arcanine - 350, // Milotic - 337, // Lunatone - 378, // Regice - 243, // Raikou - 245, // Suicune - 244, // Entei - 250, // Ho-Oh - 248, // Tyranitar - 375, // Metang - 379, // Registeel - 384, // Rayquaza - 95, // Onix - 149, // Dragonite - 249, // Lugia - 131, // Lapras - 323, // Camerupt - 226, // Mantine - 377, // Regirock - 130, // Gyarados - 297, // Hariyama - 362, // Glalie - 76, // Golem - 382, // Kyogre - 306, // Aggron - 321, // Wailord - 208, // Steelix - 143, // Snorlax - 376, // Metagross - 383, // Groudon + NATIONAL_DEX_GASTLY, + NATIONAL_DEX_HAUNTER, + NATIONAL_DEX_HOPPIP, + NATIONAL_DEX_DIGLETT, + NATIONAL_DEX_CASTFORM, + NATIONAL_DEX_KOFFING, + NATIONAL_DEX_IGGLYBUFF, + NATIONAL_DEX_MISDREAVUS, + NATIONAL_DEX_CHIMECHO, + NATIONAL_DEX_SKIPLOOM, + NATIONAL_DEX_JIRACHI, + NATIONAL_DEX_SWABLU, + NATIONAL_DEX_SHEDINJA, + NATIONAL_DEX_TOGEPI, + NATIONAL_DEX_SURSKIT, + NATIONAL_DEX_PIDGEY, + NATIONAL_DEX_SUNKERN, + NATIONAL_DEX_BARBOACH, + NATIONAL_DEX_PICHU, + NATIONAL_DEX_AZURILL, + NATIONAL_DEX_ROSELIA, + NATIONAL_DEX_NATU, + NATIONAL_DEX_SPEAROW, + NATIONAL_DEX_MURKROW, + NATIONAL_DEX_SHUPPET, + NATIONAL_DEX_TAILLOW, + NATIONAL_DEX_EXEGGCUTE, + NATIONAL_DEX_TORCHIC, + NATIONAL_DEX_LOTAD, + NATIONAL_DEX_CATERPIE, + NATIONAL_DEX_JUMPLUFF, + NATIONAL_DEX_CLEFFA, + NATIONAL_DEX_WEEDLE, + NATIONAL_DEX_TOGETIC, + NATIONAL_DEX_DRATINI, + NATIONAL_DEX_RATTATA, + NATIONAL_DEX_MASQUERAIN, + NATIONAL_DEX_WURMPLE, + NATIONAL_DEX_QWILFISH, + NATIONAL_DEX_MEW, + NATIONAL_DEX_SHELLDER, + NATIONAL_DEX_SEEDOT, + NATIONAL_DEX_DITTO, + NATIONAL_DEX_BELLSPROUT, + NATIONAL_DEX_PLUSLE, + NATIONAL_DEX_MEOWTH, + NATIONAL_DEX_MINUN, + NATIONAL_DEX_SHROOMISH, + NATIONAL_DEX_CELEBI, + NATIONAL_DEX_CORSOLA, + NATIONAL_DEX_TREECKO, + NATIONAL_DEX_SPINDA, + NATIONAL_DEX_UNOWN, + NATIONAL_DEX_PARAS, + NATIONAL_DEX_ODDISH, + NATIONAL_DEX_JIGGLYPUFF, + NATIONAL_DEX_NINCADA, + NATIONAL_DEX_BELLOSSOM, + NATIONAL_DEX_MAGNEMITE, + NATIONAL_DEX_PIKACHU, + NATIONAL_DEX_SMOOCHUM, + NATIONAL_DEX_SENTRET, + NATIONAL_DEX_WEEPINBELL, + NATIONAL_DEX_CHIKORITA, + NATIONAL_DEX_SWINUB, + NATIONAL_DEX_EEVEE, + NATIONAL_DEX_KRABBY, + NATIONAL_DEX_CUBONE, + NATIONAL_DEX_RALTS, + NATIONAL_DEX_BULBASAUR, + NATIONAL_DEX_EKANS, + NATIONAL_DEX_NIDORAN_F, + NATIONAL_DEX_PINECO, + NATIONAL_DEX_FEEBAS, + NATIONAL_DEX_OMANYTE, + NATIONAL_DEX_ZUBAT, + NATIONAL_DEX_CLEFAIRY, + NATIONAL_DEX_MUDKIP, + NATIONAL_DEX_SNUBBULL, + NATIONAL_DEX_MAREEP, + NATIONAL_DEX_CYNDAQUIL, + NATIONAL_DEX_HORSEA, + NATIONAL_DEX_CHARMANDER, + NATIONAL_DEX_SUNFLORA, + NATIONAL_DEX_MARILL, + NATIONAL_DEX_WOOPER, + NATIONAL_DEX_SPINARAK, + NATIONAL_DEX_GLOOM, + NATIONAL_DEX_LUVDISC, + NATIONAL_DEX_TEDDIURSA, + NATIONAL_DEX_NIDORAN_M, + NATIONAL_DEX_SQUIRTLE, + NATIONAL_DEX_WINGULL, + NATIONAL_DEX_TOTODILE, + NATIONAL_DEX_WEEZING, + NATIONAL_DEX_VULPIX, + NATIONAL_DEX_METAPOD, + NATIONAL_DEX_SILCOON, + NATIONAL_DEX_MAGIKARP, + NATIONAL_DEX_KAKUNA, + NATIONAL_DEX_GULPIN, + NATIONAL_DEX_VOLTORB, + NATIONAL_DEX_LEDYBA, + NATIONAL_DEX_HOUNDOUR, + NATIONAL_DEX_SKITTY, + NATIONAL_DEX_SABLEYE, + NATIONAL_DEX_MEDITITE, + NATIONAL_DEX_CORPHISH, + NATIONAL_DEX_AIPOM, + NATIONAL_DEX_CASCOON, + NATIONAL_DEX_MAWILE, + NATIONAL_DEX_KABUTO, + NATIONAL_DEX_WIGGLYTUFF, + NATIONAL_DEX_SANDSHREW, + NATIONAL_DEX_REMORAID, + NATIONAL_DEX_NINJASK, + NATIONAL_DEX_CHINCHOU, + NATIONAL_DEX_POLIWAG, + NATIONAL_DEX_ANORITH, + NATIONAL_DEX_VENOMOTH, + NATIONAL_DEX_BANETTE, + NATIONAL_DEX_IVYSAUR, + NATIONAL_DEX_FLAAFFY, + NATIONAL_DEX_POOCHYENA, + NATIONAL_DEX_WYNAUT, + NATIONAL_DEX_DUNSPARCE, + NATIONAL_DEX_XATU, + NATIONAL_DEX_DUSKULL, + NATIONAL_DEX_FARFETCHD, + NATIONAL_DEX_TRAPINCH, + NATIONAL_DEX_GOLDEEN, + NATIONAL_DEX_ELECTRIKE, + NATIONAL_DEX_VIBRAVA, + NATIONAL_DEX_VICTREEBEL, + NATIONAL_DEX_BAYLEEF, + NATIONAL_DEX_DELIBIRD, + NATIONAL_DEX_WHISMUR, + NATIONAL_DEX_DRAGONAIR, + NATIONAL_DEX_SNORUNT, + NATIONAL_DEX_ZIGZAGOON, + NATIONAL_DEX_ILLUMISE, + NATIONAL_DEX_VOLBEAT, + NATIONAL_DEX_RATICATE, + NATIONAL_DEX_VILEPLUME, + NATIONAL_DEX_QUILAVA, + NATIONAL_DEX_CHARMELEON, + NATIONAL_DEX_GROWLITHE, + NATIONAL_DEX_COMBUSKEN, + NATIONAL_DEX_MACHOP, + NATIONAL_DEX_ABRA, + NATIONAL_DEX_NIDORINO, + NATIONAL_DEX_PSYDUCK, + NATIONAL_DEX_SWELLOW, + NATIONAL_DEX_NINETALES, + NATIONAL_DEX_NIDORINA, + NATIONAL_DEX_POLIWHIRL, + NATIONAL_DEX_GEODUDE, + NATIONAL_DEX_KIRLIA, + NATIONAL_DEX_SHUCKLE, + NATIONAL_DEX_ALTARIA, + NATIONAL_DEX_CARVANHA, + NATIONAL_DEX_TYROGUE, + NATIONAL_DEX_HOOTHOOT, + NATIONAL_DEX_MAGBY, + NATIONAL_DEX_BALTOY, + NATIONAL_DEX_GROVYLE, + NATIONAL_DEX_KECLEON, + NATIONAL_DEX_LANTURN, + NATIONAL_DEX_WARTORTLE, + NATIONAL_DEX_GOREBYSS, + NATIONAL_DEX_RELICANTH, + NATIONAL_DEX_ELEKID, + NATIONAL_DEX_WHISCASH, + NATIONAL_DEX_LILEEP, + NATIONAL_DEX_NUMEL, + NATIONAL_DEX_SLAKOTH, + NATIONAL_DEX_JOLTEON, + NATIONAL_DEX_CROCONAW, + NATIONAL_DEX_FLAREON, + NATIONAL_DEX_SEADRA, + NATIONAL_DEX_ESPEON, + NATIONAL_DEX_HUNTAIL, + NATIONAL_DEX_UMBREON, + NATIONAL_DEX_MARSHTOMP, + NATIONAL_DEX_NUZLEAF, + NATIONAL_DEX_SNEASEL, + NATIONAL_DEX_MANKEY, + NATIONAL_DEX_PELIPPER, + NATIONAL_DEX_BEAUTIFLY, + NATIONAL_DEX_OCTILLERY, + NATIONAL_DEX_AZUMARILL, + NATIONAL_DEX_WOBBUFFET, + NATIONAL_DEX_VAPOREON, + NATIONAL_DEX_SANDSLASH, + NATIONAL_DEX_PARASECT, + NATIONAL_DEX_BEEDRILL, + NATIONAL_DEX_MUK, + NATIONAL_DEX_PIDGEOTTO, + NATIONAL_DEX_GRIMER, + NATIONAL_DEX_RAICHU, + NATIONAL_DEX_PONYTA, + NATIONAL_DEX_ELECTABUZZ, + NATIONAL_DEX_VENONAT, + NATIONAL_DEX_SPOINK, + NATIONAL_DEX_DUSCLOPS, + NATIONAL_DEX_MEDICHAM, + NATIONAL_DEX_DUSTOX, + NATIONAL_DEX_PERSIAN, + NATIONAL_DEX_BUTTERFREE, + NATIONAL_DEX_PRIMEAPE, + NATIONAL_DEX_DROWZEE, + NATIONAL_DEX_FURRET, + NATIONAL_DEX_PORYGON2, + NATIONAL_DEX_LOMBRE, + NATIONAL_DEX_LINOONE, + NATIONAL_DEX_DELCATTY, + NATIONAL_DEX_CRAWDAUNT, + NATIONAL_DEX_DUGTRIO, + NATIONAL_DEX_ARIADOS, + NATIONAL_DEX_PHANPY, + NATIONAL_DEX_POLITOED, + NATIONAL_DEX_STARYU, + NATIONAL_DEX_CHANSEY, + NATIONAL_DEX_OMASTAR, + NATIONAL_DEX_TANGELA, + NATIONAL_DEX_SLUGMA, + NATIONAL_DEX_HOUNDOOM, + NATIONAL_DEX_LEDIAN, + NATIONAL_DEX_SLOWPOKE, + NATIONAL_DEX_PORYGON, + NATIONAL_DEX_MIGHTYENA, + NATIONAL_DEX_YANMA, + NATIONAL_DEX_FEAROW, + NATIONAL_DEX_SUDOWOODO, + NATIONAL_DEX_SEAKING, + NATIONAL_DEX_BRELOOM, + NATIONAL_DEX_DODUO, + NATIONAL_DEX_PIDGEOT, + NATIONAL_DEX_SPHEAL, + NATIONAL_DEX_CLEFABLE, + NATIONAL_DEX_LATIAS, + NATIONAL_DEX_MANECTRIC, + NATIONAL_DEX_ZANGOOSE, + NATIONAL_DEX_KABUTOPS, + NATIONAL_DEX_GENGAR, + NATIONAL_DEX_LOUDRED, + NATIONAL_DEX_JYNX, + NATIONAL_DEX_NOCTOWL, + NATIONAL_DEX_GIRAFARIG, + NATIONAL_DEX_BAGON, + NATIONAL_DEX_MAGMAR, + NATIONAL_DEX_MAROWAK, + NATIONAL_DEX_TENTACOOL, + NATIONAL_DEX_VIGOROTH, + NATIONAL_DEX_BLISSEY, + NATIONAL_DEX_ABSOL, + NATIONAL_DEX_ALAKAZAM, + NATIONAL_DEX_HITMONTOP, + NATIONAL_DEX_GARDEVOIR, + NATIONAL_DEX_GRANBULL, + NATIONAL_DEX_HITMONLEE, + NATIONAL_DEX_HITMONCHAN, + NATIONAL_DEX_SKARMORY, + NATIONAL_DEX_CACNEA, + NATIONAL_DEX_BLAZIKEN, + NATIONAL_DEX_SCEPTILE, + NATIONAL_DEX_SEVIPER, + NATIONAL_DEX_CLAMPERL, + NATIONAL_DEX_ZAPDOS, + NATIONAL_DEX_HERACROSS, + NATIONAL_DEX_POLIWRATH, + NATIONAL_DEX_MR_MIME, + NATIONAL_DEX_PINSIR, + NATIONAL_DEX_LUDICOLO, + NATIONAL_DEX_TENTACRUEL, + NATIONAL_DEX_GOLBAT, + NATIONAL_DEX_MAGCARGO, + NATIONAL_DEX_ARTICUNO, + NATIONAL_DEX_PILOSWINE, + NATIONAL_DEX_SCYTHER, + NATIONAL_DEX_KADABRA, + NATIONAL_DEX_SMEARGLE, + NATIONAL_DEX_AERODACTYL, + NATIONAL_DEX_SHIFTRY, + NATIONAL_DEX_KINGLER, + NATIONAL_DEX_NIDOQUEEN, + NATIONAL_DEX_MAGNETON, + NATIONAL_DEX_ARON, + NATIONAL_DEX_LATIOS, + NATIONAL_DEX_MOLTRES, + NATIONAL_DEX_CRADILY, + NATIONAL_DEX_DEOXYS, + NATIONAL_DEX_AMPHAROS, + NATIONAL_DEX_NIDOKING, + NATIONAL_DEX_GLIGAR, + NATIONAL_DEX_ARBOK, + NATIONAL_DEX_LICKITUNG, + NATIONAL_DEX_ELECTRODE, + NATIONAL_DEX_ARMALDO, + NATIONAL_DEX_MACHOKE, + NATIONAL_DEX_STANTLER, + NATIONAL_DEX_GRUMPIG, + NATIONAL_DEX_LARVITAR, + NATIONAL_DEX_CROBAT, + NATIONAL_DEX_QUAGSIRE, + NATIONAL_DEX_MILTANK, + NATIONAL_DEX_HYPNO, + NATIONAL_DEX_GOLDUCK, + NATIONAL_DEX_CACTURNE, + NATIONAL_DEX_SLOWBRO, + NATIONAL_DEX_TYPHLOSION, + NATIONAL_DEX_SLOWKING, + NATIONAL_DEX_KANGASKHAN, + NATIONAL_DEX_STARMIE, + NATIONAL_DEX_SWALOT, + NATIONAL_DEX_TORKOAL, + NATIONAL_DEX_SWAMPERT, + NATIONAL_DEX_FLYGON, + NATIONAL_DEX_EXPLOUD, + NATIONAL_DEX_DODRIO, + NATIONAL_DEX_BLASTOISE, + NATIONAL_DEX_MAKUHITA, + NATIONAL_DEX_SEALEO, + NATIONAL_DEX_TAUROS, + NATIONAL_DEX_SHARPEDO, + NATIONAL_DEX_FERALIGATR, + NATIONAL_DEX_SEEL, + NATIONAL_DEX_CHARIZARD, + NATIONAL_DEX_RAPIDASH, + NATIONAL_DEX_BELDUM, + NATIONAL_DEX_NOSEPASS, + NATIONAL_DEX_VENUSAUR, + NATIONAL_DEX_TROPIUS, + NATIONAL_DEX_MEGANIUM, + NATIONAL_DEX_SALAMENCE, + NATIONAL_DEX_GRAVELER, + NATIONAL_DEX_CLAYDOL, + NATIONAL_DEX_SHELGON, + NATIONAL_DEX_RHYHORN, + NATIONAL_DEX_SCIZOR, + NATIONAL_DEX_DEWGONG, + NATIONAL_DEX_RHYDON, + NATIONAL_DEX_DONPHAN, + NATIONAL_DEX_EXEGGUTOR, + NATIONAL_DEX_LAIRON, + NATIONAL_DEX_MEWTWO, + NATIONAL_DEX_URSARING, + NATIONAL_DEX_FORRETRESS, + NATIONAL_DEX_MACHAMP, + NATIONAL_DEX_WAILMER, + NATIONAL_DEX_SLAKING, + NATIONAL_DEX_CLOYSTER, + NATIONAL_DEX_WALREIN, + NATIONAL_DEX_PUPITAR, + NATIONAL_DEX_KINGDRA, + NATIONAL_DEX_SOLROCK, + NATIONAL_DEX_ARCANINE, + NATIONAL_DEX_MILOTIC, + NATIONAL_DEX_LUNATONE, + NATIONAL_DEX_REGICE, + NATIONAL_DEX_RAIKOU, + NATIONAL_DEX_SUICUNE, + NATIONAL_DEX_ENTEI, + NATIONAL_DEX_HO_OH, + NATIONAL_DEX_TYRANITAR, + NATIONAL_DEX_METANG, + NATIONAL_DEX_REGISTEEL, + NATIONAL_DEX_RAYQUAZA, + NATIONAL_DEX_ONIX, + NATIONAL_DEX_DRAGONITE, + NATIONAL_DEX_LUGIA, + NATIONAL_DEX_LAPRAS, + NATIONAL_DEX_CAMERUPT, + NATIONAL_DEX_MANTINE, + NATIONAL_DEX_REGIROCK, + NATIONAL_DEX_GYARADOS, + NATIONAL_DEX_HARIYAMA, + NATIONAL_DEX_GLALIE, + NATIONAL_DEX_GOLEM, + NATIONAL_DEX_KYOGRE, + NATIONAL_DEX_AGGRON, + NATIONAL_DEX_WAILORD, + NATIONAL_DEX_STEELIX, + NATIONAL_DEX_SNORLAX, + NATIONAL_DEX_METAGROSS, + NATIONAL_DEX_GROUDON, }; static const u16 gPokedexOrder_Height[] = { - 50, // Diglett - 298, // Azurill - 177, // Natu - 13, // Weedle - 172, // Pichu - 173, // Cleffa - 175, // Togepi - 351, // Castform - 174, // Igglybuff - 10, // Caterpie - 276, // Taillow - 132, // Ditto - 133, // Eevee - 315, // Roselia - 21, // Spearow - 16, // Pidgey - 191, // Sunkern - 90, // Shellder - 19, // Rattata - 81, // Magnemite - 46, // Paras - 265, // Wurmple - 385, // Jirachi - 104, // Cubone - 258, // Mudkip - 194, // Wooper - 116, // Horsea - 52, // Meowth - 29, // Nidoran? - 220, // Swinub - 151, // Mew - 333, // Swablu - 304, // Aron - 311, // Plusle - 312, // Minun - 102, // Exeggcute - 25, // Pikachu - 182, // Bellossom - 316, // Gulpin - 263, // Zigzagoon - 285, // Shroomish - 138, // Omanyte - 331, // Cacnea - 98, // Krabby - 280, // Ralts - 187, // Hoppip - 255, // Torchic - 366, // Clamperl - 74, // Geodude - 183, // Marill - 339, // Barboach - 238, // Smoochum - 100, // Voltorb - 290, // Nincada - 302, // Sableye - 198, // Murkrow - 211, // Qwilfish - 7, // Squirtle - 252, // Treecko - 343, // Baltoy - 43, // Oddish - 270, // Lotad - 39, // Jigglypuff - 283, // Surskit - 155, // Cyndaquil - 140, // Kabuto - 264, // Linoone - 324, // Torkoal - 32, // Nidoran? - 167, // Spinarak - 56, // Mankey - 273, // Seedot - 261, // Poochyena - 231, // Phanpy - 201, // Unown - 170, // Chinchou - 233, // Porygon2 - 60, // Poliwag - 371, // Bagon - 349, // Feebas - 353, // Shuppet - 158, // Totodile - 251, // Celebi - 360, // Wynaut - 27, // Sandshrew - 358, // Chimecho - 370, // Luvdisc - 228, // Houndour - 266, // Silcoon - 309, // Electrike - 4, // Charmander - 307, // Meditite - 278, // Wingull - 223, // Remoraid - 341, // Corphish - 222, // Corsola - 314, // Illumise - 209, // Snubbull - 37, // Vulpix - 246, // Larvitar - 374, // Beldum - 293, // Whismur - 204, // Pineco - 239, // Elekid - 35, // Clefairy - 213, // Shuckle - 216, // Teddiursa - 14, // Kakuna - 300, // Skitty - 176, // Togetic - 118, // Goldeen - 303, // Mawile - 179, // Mareep - 188, // Skiploom - 109, // Koffing - 51, // Dugtrio - 268, // Cascoon - 322, // Numel - 347, // Anorith - 313, // Volbeat - 163, // Hoothoot - 328, // Trapinch - 325, // Spoink - 11, // Metapod - 69, // Bellsprout - 361, // Snorunt - 20, // Raticate - 259, // Marshtomp - 277, // Swellow - 240, // Magby - 58, // Growlithe - 200, // Misdreavus - 1, // Bulbasaur - 236, // Tyrogue - 218, // Slugma - 287, // Slakoth - 281, // Kirlia - 190, // Aipom - 135, // Jolteon - 30, // Nidorina - 184, // Azumarill - 292, // Shedinja - 66, // Machop - 291, // Ninjask - 284, // Masquerain - 355, // Duskull - 192, // Sunflora - 189, // Jumpluff - 120, // Staryu - 180, // Flaaffy - 363, // Spheal - 54, // Psyduck - 219, // Magcargo - 83, // Farfetch'd - 41, // Zubat - 137, // Porygon - 161, // Sentret - 318, // Carvanha - 44, // Gloom - 26, // Raichu - 129, // Magikarp - 215, // Sneasel - 305, // Lairon - 256, // Combusken - 224, // Octillery - 33, // Nidorino - 136, // Flareon - 225, // Delibird - 72, // Tentacool - 63, // Abra - 253, // Grovyle - 340, // Whiscash - 156, // Quilava - 196, // Espeon - 88, // Grimer - 152, // Chikorita - 326, // Grumpig - 299, // Nosepass - 53, // Persian - 262, // Mightyena - 48, // Venonat - 82, // Magneton - 77, // Ponyta - 296, // Makuhita - 337, // Lunatone - 28, // Sandslash - 96, // Drowzee - 114, // Tangela - 57, // Primeape - 165, // Ledyba - 40, // Wigglytuff - 47, // Parasect - 139, // Omastar - 294, // Loudred - 8, // Wartortle - 75, // Graveler - 197, // Umbreon - 345, // Lileep - 61, // Poliwhirl - 134, // Vaporeon - 15, // Beedrill - 105, // Marowak - 70, // Weepinbell - 369, // Relicanth - 111, // Rhyhorn - 2, // Ivysaur - 352, // Kecleon - 274, // Nuzleaf - 267, // Beautifly - 17, // Pidgeotto - 168, // Ariados - 86, // Seel - 186, // Politoed - 159, // Croconaw - 113, // Chansey - 354, // Banette - 232, // Donphan - 121, // Starmie - 5, // Charmeleon - 221, // Piloswine - 12, // Butterfree - 329, // Vibrava - 125, // Electabuzz - 342, // Crawdaunt - 301, // Delcatty - 334, // Altaria - 372, // Shelgon - 38, // Ninetales - 207, // Gligar - 364, // Sealeo - 327, // Spinda - 247, // Pupitar - 79, // Slowpoke - 338, // Solrock - 241, // Miltank - 22, // Fearow - 45, // Vileplume - 89, // Muk - 205, // Forretress - 185, // Sudowoodo - 359, // Absol - 193, // Yanma - 269, // Dustox - 108, // Lickitung - 235, // Smeargle - 171, // Lanturn - 101, // Electrode - 271, // Lombre - 286, // Breloom - 153, // Bayleef - 117, // Seadra - 110, // Weezing - 279, // Pelipper - 375, // Metang - 31, // Nidoqueen - 332, // Cacturne - 275, // Shiftry - 308, // Medicham - 335, // Zangoose - 141, // Kabutops - 99, // Kingler - 64, // Kadabra - 119, // Seaking - 36, // Clefable - 126, // Magmar - 202, // Wobbuffet - 92, // Gastly - 122, // Mr. mime - 62, // Poliwrath - 128, // Tauros - 380, // Latias - 181, // Ampharos - 288, // Vigoroth - 166, // Ledian - 76, // Golem - 365, // Walrein - 84, // Doduo - 229, // Houndoom - 34, // Nidoking - 124, // Jynx - 107, // Hitmonchan - 234, // Stantler - 210, // Granbull - 237, // Hitmontop - 195, // Quagsire - 344, // Claydol - 260, // Swampert - 242, // Blissey - 272, // Ludicolo - 295, // Exploud - 206, // Dunsparce - 127, // Pinsir - 91, // Cloyster - 67, // Machoke - 203, // Girafarig - 18, // Pidgeot - 178, // Xatu - 346, // Cradily - 106, // Hitmonlee - 49, // Venomoth - 94, // Gengar - 214, // Heracross - 362, // Glalie - 123, // Scyther - 373, // Salamence - 310, // Manectric - 348, // Armaldo - 65, // Alakazam - 97, // Hypno - 164, // Noctowl - 73, // Tentacruel - 356, // Dusclops - 145, // Zapdos - 42, // Golbat - 376, // Metagross - 282, // Gardevoir - 9, // Blastoise - 80, // Slowbro - 93, // Haunter - 68, // Machamp - 377, // Regirock - 317, // Swalot - 254, // Sceptile - 227, // Skarmory - 55, // Golduck - 386, // Deoxys - 71, // Victreebel - 78, // Rapidash - 6, // Charizard - 367, // Huntail - 87, // Dewgong - 144, // Articuno - 157, // Typhlosion - 142, // Aerodactyl - 368, // Gorebyss - 217, // Ursaring - 154, // Meganium - 378, // Regice - 212, // Scizor - 230, // Kingdra - 147, // Dratini - 85, // Dodrio - 319, // Sharpedo - 169, // Crobat - 162, // Furret - 59, // Arcanine - 243, // Raikou - 257, // Blaziken - 323, // Camerupt - 112, // Rhydon - 379, // Registeel - 23, // Ekans - 330, // Flygon - 357, // Tropius - 381, // Latios - 245, // Suicune - 146, // Moltres - 3, // Venusaur - 103, // Exeggutor - 199, // Slowking - 248, // Tyranitar - 289, // Slaking - 320, // Wailmer - 150, // Mewtwo - 306, // Aggron - 143, // Snorlax - 226, // Mantine - 244, // Entei - 149, // Dragonite - 115, // Kangaskhan - 297, // Hariyama - 160, // Feraligatr - 131, // Lapras - 336, // Seviper - 24, // Arbok - 383, // Groudon - 250, // Ho-Oh - 148, // Dragonair - 382, // Kyogre - 249, // Lugia - 350, // Milotic - 130, // Gyarados - 384, // Rayquaza - 95, // Onix - 208, // Steelix - 321, // Wailord + NATIONAL_DEX_DIGLETT, + NATIONAL_DEX_AZURILL, + NATIONAL_DEX_NATU, + NATIONAL_DEX_WEEDLE, + NATIONAL_DEX_PICHU, + NATIONAL_DEX_CLEFFA, + NATIONAL_DEX_TOGEPI, + NATIONAL_DEX_CASTFORM, + NATIONAL_DEX_IGGLYBUFF, + NATIONAL_DEX_CATERPIE, + NATIONAL_DEX_TAILLOW, + NATIONAL_DEX_DITTO, + NATIONAL_DEX_EEVEE, + NATIONAL_DEX_ROSELIA, + NATIONAL_DEX_SPEAROW, + NATIONAL_DEX_PIDGEY, + NATIONAL_DEX_SUNKERN, + NATIONAL_DEX_SHELLDER, + NATIONAL_DEX_RATTATA, + NATIONAL_DEX_MAGNEMITE, + NATIONAL_DEX_PARAS, + NATIONAL_DEX_WURMPLE, + NATIONAL_DEX_JIRACHI, + NATIONAL_DEX_CUBONE, + NATIONAL_DEX_MUDKIP, + NATIONAL_DEX_WOOPER, + NATIONAL_DEX_HORSEA, + NATIONAL_DEX_MEOWTH, + NATIONAL_DEX_NIDORAN_F, + NATIONAL_DEX_SWINUB, + NATIONAL_DEX_MEW, + NATIONAL_DEX_SWABLU, + NATIONAL_DEX_ARON, + NATIONAL_DEX_PLUSLE, + NATIONAL_DEX_MINUN, + NATIONAL_DEX_EXEGGCUTE, + NATIONAL_DEX_PIKACHU, + NATIONAL_DEX_BELLOSSOM, + NATIONAL_DEX_GULPIN, + NATIONAL_DEX_ZIGZAGOON, + NATIONAL_DEX_SHROOMISH, + NATIONAL_DEX_OMANYTE, + NATIONAL_DEX_CACNEA, + NATIONAL_DEX_KRABBY, + NATIONAL_DEX_RALTS, + NATIONAL_DEX_HOPPIP, + NATIONAL_DEX_TORCHIC, + NATIONAL_DEX_CLAMPERL, + NATIONAL_DEX_GEODUDE, + NATIONAL_DEX_MARILL, + NATIONAL_DEX_BARBOACH, + NATIONAL_DEX_SMOOCHUM, + NATIONAL_DEX_VOLTORB, + NATIONAL_DEX_NINCADA, + NATIONAL_DEX_SABLEYE, + NATIONAL_DEX_MURKROW, + NATIONAL_DEX_QWILFISH, + NATIONAL_DEX_SQUIRTLE, + NATIONAL_DEX_TREECKO, + NATIONAL_DEX_BALTOY, + NATIONAL_DEX_ODDISH, + NATIONAL_DEX_LOTAD, + NATIONAL_DEX_JIGGLYPUFF, + NATIONAL_DEX_SURSKIT, + NATIONAL_DEX_CYNDAQUIL, + NATIONAL_DEX_KABUTO, + NATIONAL_DEX_LINOONE, + NATIONAL_DEX_TORKOAL, + NATIONAL_DEX_NIDORAN_M, + NATIONAL_DEX_SPINARAK, + NATIONAL_DEX_MANKEY, + NATIONAL_DEX_SEEDOT, + NATIONAL_DEX_POOCHYENA, + NATIONAL_DEX_PHANPY, + NATIONAL_DEX_UNOWN, + NATIONAL_DEX_CHINCHOU, + NATIONAL_DEX_PORYGON2, + NATIONAL_DEX_POLIWAG, + NATIONAL_DEX_BAGON, + NATIONAL_DEX_FEEBAS, + NATIONAL_DEX_SHUPPET, + NATIONAL_DEX_TOTODILE, + NATIONAL_DEX_CELEBI, + NATIONAL_DEX_WYNAUT, + NATIONAL_DEX_SANDSHREW, + NATIONAL_DEX_CHIMECHO, + NATIONAL_DEX_LUVDISC, + NATIONAL_DEX_HOUNDOUR, + NATIONAL_DEX_SILCOON, + NATIONAL_DEX_ELECTRIKE, + NATIONAL_DEX_CHARMANDER, + NATIONAL_DEX_MEDITITE, + NATIONAL_DEX_WINGULL, + NATIONAL_DEX_REMORAID, + NATIONAL_DEX_CORPHISH, + NATIONAL_DEX_CORSOLA, + NATIONAL_DEX_ILLUMISE, + NATIONAL_DEX_SNUBBULL, + NATIONAL_DEX_VULPIX, + NATIONAL_DEX_LARVITAR, + NATIONAL_DEX_BELDUM, + NATIONAL_DEX_WHISMUR, + NATIONAL_DEX_PINECO, + NATIONAL_DEX_ELEKID, + NATIONAL_DEX_CLEFAIRY, + NATIONAL_DEX_SHUCKLE, + NATIONAL_DEX_TEDDIURSA, + NATIONAL_DEX_KAKUNA, + NATIONAL_DEX_SKITTY, + NATIONAL_DEX_TOGETIC, + NATIONAL_DEX_GOLDEEN, + NATIONAL_DEX_MAWILE, + NATIONAL_DEX_MAREEP, + NATIONAL_DEX_SKIPLOOM, + NATIONAL_DEX_KOFFING, + NATIONAL_DEX_DUGTRIO, + NATIONAL_DEX_CASCOON, + NATIONAL_DEX_NUMEL, + NATIONAL_DEX_ANORITH, + NATIONAL_DEX_VOLBEAT, + NATIONAL_DEX_HOOTHOOT, + NATIONAL_DEX_TRAPINCH, + NATIONAL_DEX_SPOINK, + NATIONAL_DEX_METAPOD, + NATIONAL_DEX_BELLSPROUT, + NATIONAL_DEX_SNORUNT, + NATIONAL_DEX_RATICATE, + NATIONAL_DEX_MARSHTOMP, + NATIONAL_DEX_SWELLOW, + NATIONAL_DEX_MAGBY, + NATIONAL_DEX_GROWLITHE, + NATIONAL_DEX_MISDREAVUS, + NATIONAL_DEX_BULBASAUR, + NATIONAL_DEX_TYROGUE, + NATIONAL_DEX_SLUGMA, + NATIONAL_DEX_SLAKOTH, + NATIONAL_DEX_KIRLIA, + NATIONAL_DEX_AIPOM, + NATIONAL_DEX_JOLTEON, + NATIONAL_DEX_NIDORINA, + NATIONAL_DEX_AZUMARILL, + NATIONAL_DEX_SHEDINJA, + NATIONAL_DEX_MACHOP, + NATIONAL_DEX_NINJASK, + NATIONAL_DEX_MASQUERAIN, + NATIONAL_DEX_DUSKULL, + NATIONAL_DEX_SUNFLORA, + NATIONAL_DEX_JUMPLUFF, + NATIONAL_DEX_STARYU, + NATIONAL_DEX_FLAAFFY, + NATIONAL_DEX_SPHEAL, + NATIONAL_DEX_PSYDUCK, + NATIONAL_DEX_MAGCARGO, + NATIONAL_DEX_FARFETCHD, + NATIONAL_DEX_ZUBAT, + NATIONAL_DEX_PORYGON, + NATIONAL_DEX_SENTRET, + NATIONAL_DEX_CARVANHA, + NATIONAL_DEX_GLOOM, + NATIONAL_DEX_RAICHU, + NATIONAL_DEX_MAGIKARP, + NATIONAL_DEX_SNEASEL, + NATIONAL_DEX_LAIRON, + NATIONAL_DEX_COMBUSKEN, + NATIONAL_DEX_OCTILLERY, + NATIONAL_DEX_NIDORINO, + NATIONAL_DEX_FLAREON, + NATIONAL_DEX_DELIBIRD, + NATIONAL_DEX_TENTACOOL, + NATIONAL_DEX_ABRA, + NATIONAL_DEX_GROVYLE, + NATIONAL_DEX_WHISCASH, + NATIONAL_DEX_QUILAVA, + NATIONAL_DEX_ESPEON, + NATIONAL_DEX_GRIMER, + NATIONAL_DEX_CHIKORITA, + NATIONAL_DEX_GRUMPIG, + NATIONAL_DEX_NOSEPASS, + NATIONAL_DEX_PERSIAN, + NATIONAL_DEX_MIGHTYENA, + NATIONAL_DEX_VENONAT, + NATIONAL_DEX_MAGNETON, + NATIONAL_DEX_PONYTA, + NATIONAL_DEX_MAKUHITA, + NATIONAL_DEX_LUNATONE, + NATIONAL_DEX_SANDSLASH, + NATIONAL_DEX_DROWZEE, + NATIONAL_DEX_TANGELA, + NATIONAL_DEX_PRIMEAPE, + NATIONAL_DEX_LEDYBA, + NATIONAL_DEX_WIGGLYTUFF, + NATIONAL_DEX_PARASECT, + NATIONAL_DEX_OMASTAR, + NATIONAL_DEX_LOUDRED, + NATIONAL_DEX_WARTORTLE, + NATIONAL_DEX_GRAVELER, + NATIONAL_DEX_UMBREON, + NATIONAL_DEX_LILEEP, + NATIONAL_DEX_POLIWHIRL, + NATIONAL_DEX_VAPOREON, + NATIONAL_DEX_BEEDRILL, + NATIONAL_DEX_MAROWAK, + NATIONAL_DEX_WEEPINBELL, + NATIONAL_DEX_RELICANTH, + NATIONAL_DEX_RHYHORN, + NATIONAL_DEX_IVYSAUR, + NATIONAL_DEX_KECLEON, + NATIONAL_DEX_NUZLEAF, + NATIONAL_DEX_BEAUTIFLY, + NATIONAL_DEX_PIDGEOTTO, + NATIONAL_DEX_ARIADOS, + NATIONAL_DEX_SEEL, + NATIONAL_DEX_POLITOED, + NATIONAL_DEX_CROCONAW, + NATIONAL_DEX_CHANSEY, + NATIONAL_DEX_BANETTE, + NATIONAL_DEX_DONPHAN, + NATIONAL_DEX_STARMIE, + NATIONAL_DEX_CHARMELEON, + NATIONAL_DEX_PILOSWINE, + NATIONAL_DEX_BUTTERFREE, + NATIONAL_DEX_VIBRAVA, + NATIONAL_DEX_ELECTABUZZ, + NATIONAL_DEX_CRAWDAUNT, + NATIONAL_DEX_DELCATTY, + NATIONAL_DEX_ALTARIA, + NATIONAL_DEX_SHELGON, + NATIONAL_DEX_NINETALES, + NATIONAL_DEX_GLIGAR, + NATIONAL_DEX_SEALEO, + NATIONAL_DEX_SPINDA, + NATIONAL_DEX_PUPITAR, + NATIONAL_DEX_SLOWPOKE, + NATIONAL_DEX_SOLROCK, + NATIONAL_DEX_MILTANK, + NATIONAL_DEX_FEAROW, + NATIONAL_DEX_VILEPLUME, + NATIONAL_DEX_MUK, + NATIONAL_DEX_FORRETRESS, + NATIONAL_DEX_SUDOWOODO, + NATIONAL_DEX_ABSOL, + NATIONAL_DEX_YANMA, + NATIONAL_DEX_DUSTOX, + NATIONAL_DEX_LICKITUNG, + NATIONAL_DEX_SMEARGLE, + NATIONAL_DEX_LANTURN, + NATIONAL_DEX_ELECTRODE, + NATIONAL_DEX_LOMBRE, + NATIONAL_DEX_BRELOOM, + NATIONAL_DEX_BAYLEEF, + NATIONAL_DEX_SEADRA, + NATIONAL_DEX_WEEZING, + NATIONAL_DEX_PELIPPER, + NATIONAL_DEX_METANG, + NATIONAL_DEX_NIDOQUEEN, + NATIONAL_DEX_CACTURNE, + NATIONAL_DEX_SHIFTRY, + NATIONAL_DEX_MEDICHAM, + NATIONAL_DEX_ZANGOOSE, + NATIONAL_DEX_KABUTOPS, + NATIONAL_DEX_KINGLER, + NATIONAL_DEX_KADABRA, + NATIONAL_DEX_SEAKING, + NATIONAL_DEX_CLEFABLE, + NATIONAL_DEX_MAGMAR, + NATIONAL_DEX_WOBBUFFET, + NATIONAL_DEX_GASTLY, + NATIONAL_DEX_MR_MIME, + NATIONAL_DEX_POLIWRATH, + NATIONAL_DEX_TAUROS, + NATIONAL_DEX_LATIAS, + NATIONAL_DEX_AMPHAROS, + NATIONAL_DEX_VIGOROTH, + NATIONAL_DEX_LEDIAN, + NATIONAL_DEX_GOLEM, + NATIONAL_DEX_WALREIN, + NATIONAL_DEX_DODUO, + NATIONAL_DEX_HOUNDOOM, + NATIONAL_DEX_NIDOKING, + NATIONAL_DEX_JYNX, + NATIONAL_DEX_HITMONCHAN, + NATIONAL_DEX_STANTLER, + NATIONAL_DEX_GRANBULL, + NATIONAL_DEX_HITMONTOP, + NATIONAL_DEX_QUAGSIRE, + NATIONAL_DEX_CLAYDOL, + NATIONAL_DEX_SWAMPERT, + NATIONAL_DEX_BLISSEY, + NATIONAL_DEX_LUDICOLO, + NATIONAL_DEX_EXPLOUD, + NATIONAL_DEX_DUNSPARCE, + NATIONAL_DEX_PINSIR, + NATIONAL_DEX_CLOYSTER, + NATIONAL_DEX_MACHOKE, + NATIONAL_DEX_GIRAFARIG, + NATIONAL_DEX_PIDGEOT, + NATIONAL_DEX_XATU, + NATIONAL_DEX_CRADILY, + NATIONAL_DEX_HITMONLEE, + NATIONAL_DEX_VENOMOTH, + NATIONAL_DEX_GENGAR, + NATIONAL_DEX_HERACROSS, + NATIONAL_DEX_GLALIE, + NATIONAL_DEX_SCYTHER, + NATIONAL_DEX_SALAMENCE, + NATIONAL_DEX_MANECTRIC, + NATIONAL_DEX_ARMALDO, + NATIONAL_DEX_ALAKAZAM, + NATIONAL_DEX_HYPNO, + NATIONAL_DEX_NOCTOWL, + NATIONAL_DEX_TENTACRUEL, + NATIONAL_DEX_DUSCLOPS, + NATIONAL_DEX_ZAPDOS, + NATIONAL_DEX_GOLBAT, + NATIONAL_DEX_METAGROSS, + NATIONAL_DEX_GARDEVOIR, + NATIONAL_DEX_BLASTOISE, + NATIONAL_DEX_SLOWBRO, + NATIONAL_DEX_HAUNTER, + NATIONAL_DEX_MACHAMP, + NATIONAL_DEX_REGIROCK, + NATIONAL_DEX_SWALOT, + NATIONAL_DEX_SCEPTILE, + NATIONAL_DEX_SKARMORY, + NATIONAL_DEX_GOLDUCK, + NATIONAL_DEX_DEOXYS, + NATIONAL_DEX_VICTREEBEL, + NATIONAL_DEX_RAPIDASH, + NATIONAL_DEX_CHARIZARD, + NATIONAL_DEX_HUNTAIL, + NATIONAL_DEX_DEWGONG, + NATIONAL_DEX_ARTICUNO, + NATIONAL_DEX_TYPHLOSION, + NATIONAL_DEX_AERODACTYL, + NATIONAL_DEX_GOREBYSS, + NATIONAL_DEX_URSARING, + NATIONAL_DEX_MEGANIUM, + NATIONAL_DEX_REGICE, + NATIONAL_DEX_SCIZOR, + NATIONAL_DEX_KINGDRA, + NATIONAL_DEX_DRATINI, + NATIONAL_DEX_DODRIO, + NATIONAL_DEX_SHARPEDO, + NATIONAL_DEX_CROBAT, + NATIONAL_DEX_FURRET, + NATIONAL_DEX_ARCANINE, + NATIONAL_DEX_RAIKOU, + NATIONAL_DEX_BLAZIKEN, + NATIONAL_DEX_CAMERUPT, + NATIONAL_DEX_RHYDON, + NATIONAL_DEX_REGISTEEL, + NATIONAL_DEX_EKANS, + NATIONAL_DEX_FLYGON, + NATIONAL_DEX_TROPIUS, + NATIONAL_DEX_LATIOS, + NATIONAL_DEX_SUICUNE, + NATIONAL_DEX_MOLTRES, + NATIONAL_DEX_VENUSAUR, + NATIONAL_DEX_EXEGGUTOR, + NATIONAL_DEX_SLOWKING, + NATIONAL_DEX_TYRANITAR, + NATIONAL_DEX_SLAKING, + NATIONAL_DEX_WAILMER, + NATIONAL_DEX_MEWTWO, + NATIONAL_DEX_AGGRON, + NATIONAL_DEX_SNORLAX, + NATIONAL_DEX_MANTINE, + NATIONAL_DEX_ENTEI, + NATIONAL_DEX_DRAGONITE, + NATIONAL_DEX_KANGASKHAN, + NATIONAL_DEX_HARIYAMA, + NATIONAL_DEX_FERALIGATR, + NATIONAL_DEX_LAPRAS, + NATIONAL_DEX_SEVIPER, + NATIONAL_DEX_ARBOK, + NATIONAL_DEX_GROUDON, + NATIONAL_DEX_HO_OH, + NATIONAL_DEX_DRAGONAIR, + NATIONAL_DEX_KYOGRE, + NATIONAL_DEX_LUGIA, + NATIONAL_DEX_MILOTIC, + NATIONAL_DEX_GYARADOS, + NATIONAL_DEX_RAYQUAZA, + NATIONAL_DEX_ONIX, + NATIONAL_DEX_STEELIX, + NATIONAL_DEX_WAILORD, }; diff --git a/src/heal_location.c b/src/heal_location.c index 4c78f5921..3bb24e1a1 100644 --- a/src/heal_location.c +++ b/src/heal_location.c @@ -1,32 +1,7 @@ #include "global.h" #include "heal_location.h" #include "constants/maps.h" - -static const struct HealLocation sHealLocations[] = -{ - {MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), 4, 2}, - {MAP_GROUP(LITTLEROOT_TOWN_MAYS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_2F), 4, 2}, - {MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), 20, 17}, - {MAP_GROUP(SLATEPORT_CITY), MAP_NUM(SLATEPORT_CITY), 19, 20}, - {MAP_GROUP(MAUVILLE_CITY), MAP_NUM(MAUVILLE_CITY), 22, 6}, - {MAP_GROUP(RUSTBORO_CITY), MAP_NUM(RUSTBORO_CITY), 16, 39}, - {MAP_GROUP(FORTREE_CITY), MAP_NUM(FORTREE_CITY), 5, 7}, - {MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), 24, 15}, - {MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), 28, 17}, - {MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), 43, 32}, - {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 27, 49}, - {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 5, 9}, - {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 14, 9}, - {MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), 6, 17}, - {MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), 2, 11}, - {MAP_GROUP(LAVARIDGE_TOWN), MAP_NUM(LAVARIDGE_TOWN), 9, 7}, - {MAP_GROUP(FALLARBOR_TOWN), MAP_NUM(FALLARBOR_TOWN), 14, 8}, - {MAP_GROUP(VERDANTURF_TOWN), MAP_NUM(VERDANTURF_TOWN), 16, 4}, - {MAP_GROUP(PACIFIDLOG_TOWN), MAP_NUM(PACIFIDLOG_TOWN), 8, 16}, - {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 18, 6}, - {MAP_GROUP(BATTLE_TOWER_OUTSIDE), MAP_NUM(BATTLE_TOWER_OUTSIDE), 14, 9}, - {MAP_GROUP(SOUTHERN_ISLAND_EXTERIOR), MAP_NUM(SOUTHERN_ISLAND_EXTERIOR), 15, 20}, -}; +#include "data/heal_locations.h" u32 GetHealLocationIndexByMap(u16 mapGroup, u16 mapNum) { diff --git a/src/item_menu.c b/src/item_menu.c index 915aa5183..12d02ebd8 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -762,7 +762,7 @@ static void sub_80A39B8(u16 *a, u8 b) { u8 var = b * 2; - sub_809D104(a, 4, 10, gUnknown_08E96EC8, 0, var, 8, 2); + sub_809D104(a, 4, 10, gBagScreenLabels_Tilemap, 0, var, 8, 2); } static void sub_80A39E4(u16 *a, u8 b, u8 c, s8 d) @@ -776,8 +776,8 @@ static void sub_80A39E4(u16 *a, u8 b, u8 c, s8 d) if (b == 5) r7 = 2; - sub_809D104(a, 4, 10, gUnknown_08E96EC8, 8 - c, r2, c, 2); - sub_809D104(a, c + 4, 10, gUnknown_08E96EC8, 0, r7, 8 - c, 2); + sub_809D104(a, 4, 10, gBagScreenLabels_Tilemap, 8 - c, r2, c, 2); + sub_809D104(a, c + 4, 10, gBagScreenLabels_Tilemap, 0, r7, 8 - c, 2); } else if (d == 1) { @@ -785,8 +785,8 @@ static void sub_80A39E4(u16 *a, u8 b, u8 c, s8 d) if (b == 1) r7 = 10; - sub_809D104(a, 4, 10, gUnknown_08E96EC8, c, r7, 8 - c, 2); - sub_809D104(a, 12 - c, 10, gUnknown_08E96EC8, 0, r2, c, 2); + sub_809D104(a, 4, 10, gBagScreenLabels_Tilemap, c, r7, 8 - c, 2); + sub_809D104(a, 12 - c, 10, gBagScreenLabels_Tilemap, 0, r2, c, 2); } } @@ -4024,7 +4024,7 @@ static int sub_80A7988(void) } static const u16 gPalette_83C170C[] = INCBIN_U16("graphics/unknown/83C170C.gbapal"); -static const u8 gSpriteImage_83C172C[] = INCBIN_U8("graphics/unknown_sprites/83C172C.4bpp"); +static const u8 gSpriteImage_BagSpinner[] = INCBIN_U8("graphics/interface/bag_spinner.4bpp"); const u8 gSpriteImage_UnusedCherry[] = INCBIN_U8("graphics/unused/cherry.4bpp"); const u16 gSpritePalette_UnusedCherry[] = INCBIN_U16("graphics/unused/cherry.gbapal"); @@ -4258,7 +4258,7 @@ static const union AffineAnimCmd *const gSpriteAffineAnimTable_83C1D20[] = static const struct SpriteFrameImage gSpriteImageTable_83C1D28[] = { - {gSpriteImage_83C172C, sizeof(gSpriteImage_83C172C)}, + {gSpriteImage_BagSpinner, sizeof(gSpriteImage_BagSpinner)}, }; static const struct SpritePalette sPokeballSpritePalette = {gPalette_83C170C, 8}; diff --git a/src/load_save.c b/src/load_save.c index 7960a42eb..a1ca7ce76 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -67,7 +67,7 @@ void SavePlayerParty(void) gSaveBlock1.playerPartyCount = gPlayerPartyCount; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) gSaveBlock1.playerParty[i] = gPlayerParty[i]; } @@ -77,7 +77,7 @@ void LoadPlayerParty(void) gPlayerPartyCount = gSaveBlock1.playerPartyCount; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) gPlayerParty[i] = gSaveBlock1.playerParty[i]; } @@ -85,7 +85,7 @@ static void SaveEventObjects(void) { int i; - for (i = 0; i < 16; i++) + for (i = 0; i < EVENT_OBJECTS_COUNT; i++) gSaveBlock1.eventObjects[i] = gEventObjects[i]; } @@ -93,7 +93,7 @@ static void LoadEventObjects(void) { int i; - for (i = 0; i < 16; i++) + for (i = 0; i < EVENT_OBJECTS_COUNT; i++) gEventObjects[i] = gSaveBlock1.eventObjects[i]; } @@ -114,27 +114,27 @@ void LoadPlayerBag(void) int i; // load player items. - for (i = 0; i < 20; i++) + for (i = 0; i < BAG_ITEMS_COUNT; i++) gLoadedSaveData.items[i] = gSaveBlock1.bagPocket_Items[i]; // load player key items. - for (i = 0; i < 20; i++) + for (i = 0; i < BAG_KEYITEMS_COUNT; i++) gLoadedSaveData.keyItems[i] = gSaveBlock1.bagPocket_KeyItems[i]; // load player pokeballs. - for (i = 0; i < 16; i++) + for (i = 0; i < BAG_POKEBALLS_COUNT; i++) gLoadedSaveData.pokeBalls[i] = gSaveBlock1.bagPocket_PokeBalls[i]; // load player TMs and HMs. - for (i = 0; i < 64; i++) + for (i = 0; i < BAG_TMHM_COUNT; i++) gLoadedSaveData.TMsHMs[i] = gSaveBlock1.bagPocket_TMHM[i]; // load player berries. - for (i = 0; i < 46; i++) + for (i = 0; i < BAG_BERRIES_COUNT; i++) gLoadedSaveData.berries[i] = gSaveBlock1.bagPocket_Berries[i]; // load mail. - for (i = 0; i < 16; i++) + for (i = 0; i < MAIL_COUNT; i++) gLoadedSaveData.mail[i] = gSaveBlock1.mail[i]; } @@ -143,26 +143,26 @@ void SavePlayerBag(void) int i; // save player items. - for (i = 0; i < 20; i++) + for (i = 0; i < BAG_ITEMS_COUNT; i++) gSaveBlock1.bagPocket_Items[i] = gLoadedSaveData.items[i]; // save player key items. - for (i = 0; i < 20; i++) + for (i = 0; i < BAG_KEYITEMS_COUNT; i++) gSaveBlock1.bagPocket_KeyItems[i] = gLoadedSaveData.keyItems[i]; // save player pokeballs. - for (i = 0; i < 16; i++) + for (i = 0; i < BAG_POKEBALLS_COUNT; i++) gSaveBlock1.bagPocket_PokeBalls[i] = gLoadedSaveData.pokeBalls[i]; // save player TMs and HMs. - for (i = 0; i < 64; i++) + for (i = 0; i < BAG_TMHM_COUNT; i++) gSaveBlock1.bagPocket_TMHM[i] = gLoadedSaveData.TMsHMs[i]; // save player berries. - for (i = 0; i < 46; i++) + for (i = 0; i < BAG_BERRIES_COUNT; i++) gSaveBlock1.bagPocket_Berries[i] = gLoadedSaveData.berries[i]; // save mail. - for (i = 0; i < 16; i++) + for (i = 0; i < MAIL_COUNT; i++) gSaveBlock1.mail[i] = gLoadedSaveData.mail[i]; } diff --git a/src/pokedex.c b/src/pokedex.c index eb4d1d918..caa6a1565 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -26,7 +26,6 @@ #include "scanline_effect.h" #include "ewram.h" -#define NATIONAL_DEX_COUNT 386 struct PokedexListItem { @@ -1971,7 +1970,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) { default: case DEX_MODE_HOENN: - vars[0] = 202; + vars[0] = HOENN_DEX_COUNT; vars[1] = 1; break; case DEX_MODE_NATIONAL: @@ -1982,7 +1981,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) } else { - vars[0] = 202; + vars[0] = HOENN_DEX_COUNT; vars[1] = 1; } break; @@ -2028,7 +2027,7 @@ static void SortPokedex(u8 dexMode, u8 sortMode) } break; case 1: - for (i = 0; i < 411; i++) + for (i = 0; i < POKEMON_SLOTS_NUMBER - 1; i++) { vars[2] = gPokedexOrder_Alphabetical[i]; @@ -4060,7 +4059,7 @@ u16 GetHoennPokedexCount(u8 caseID) u16 count = 0; u16 i; - for (i = 0; i < 202; i++) + for (i = 0; i < HOENN_DEX_COUNT; i++) { switch (caseID) { diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 30e9503cd..4814c900d 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -12,6 +12,7 @@ #include "main.h" #include "move_tutor_menu.h" #include "pokemon.h" +#include "pokedex.h" #include "random.h" #include "overworld.h" #include "rom_8077ABC.h" @@ -390,10 +391,10 @@ u16 HoennPokedexNumToSpecies(u16 hoennNum) species = 0; - while (species < 411 && gSpeciesToHoennPokedexNum[species] != hoennNum) + while (species < POKEMON_SLOTS_NUMBER - 1 && gSpeciesToHoennPokedexNum[species] != hoennNum) species++; - if (species == 411) + if (species == POKEMON_SLOTS_NUMBER - 1) return 0; return species + 1; @@ -408,10 +409,10 @@ u16 NationalPokedexNumToSpecies(u16 nationalNum) species = 0; - while (species < 411 && gSpeciesToNationalPokedexNum[species] != nationalNum) + while (species < POKEMON_SLOTS_NUMBER - 1 && gSpeciesToNationalPokedexNum[species] != nationalNum) species++; - if (species == 411) + if (species == POKEMON_SLOTS_NUMBER - 1) return 0; return species + 1; @@ -426,10 +427,10 @@ u16 NationalToHoennOrder(u16 nationalNum) hoennNum = 0; - while (hoennNum < 411 && gHoennToNationalOrder[hoennNum] != nationalNum) + while (hoennNum < POKEMON_SLOTS_NUMBER - 1 && gHoennToNationalOrder[hoennNum] != nationalNum) hoennNum++; - if (hoennNum == 411) + if (hoennNum == POKEMON_SLOTS_NUMBER - 1) return 0; return hoennNum + 1; @@ -1095,7 +1096,7 @@ u16 SpeciesToPokedexNum(u16 species) else { species = SpeciesToHoennPokedexNum(species); - if (species <= 202) + if (species <= HOENN_DEX_COUNT) return species; return 0xFFFF; } diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 2fd7cb1ca..fe908de03 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -4778,7 +4778,7 @@ static void sub_80A1DCC(struct Pokemon *mon) static void sub_80A1DE8(struct Pokemon *mon) { u8 ball = ball_number_to_ball_processing_index(GetMonData(mon, MON_DATA_POKEBALL)); - sub_80478DC(ball); + LoadBallGraphics(ball); pssData.ballSpriteId = CreateSprite(&gBallSpriteTemplates[ball], 6, 136, 0); gSprites[pssData.ballSpriteId].callback = SpriteCallbackDummy; diff --git a/src/pokenav_after.c b/src/pokenav_after.c index 330305ea3..7619577cc 100644 --- a/src/pokenav_after.c +++ b/src/pokenav_after.c @@ -3,6 +3,7 @@ #include "pokenav.h" #include "battle.h" #include "data2.h" +#include "text.h" #include "de_rom_8040FE0.h" #include "string_util.h" @@ -20,14 +21,14 @@ void sub_80F700C(u8 *arg0, u16 arg1) ptr = StringCopy(ptr, de_sub_8041024(0, gUnknown_083DFEC4->unkCEE8[arg1].unk0)); #endif - ptr[0] = 0xFC; + ptr[0] = EXT_CTRL_CODE_BEGIN; ptr[1] = 0x13; ptr[2] = 0x4B; ptr += 3; ptr = StringCopy(ptr, trainer->trainerName); } - ptr[0] = 0xFC; + ptr[0] = EXT_CTRL_CODE_BEGIN; ptr[1] = 0x13; ptr[2] = 0x80; ptr[3] = 0xFF; diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 21394f348..710756c11 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -5,6 +5,7 @@ #include "battle.h" #include "data2.h" #include "de_rom_8040FE0.h" +#include "decompress.h" #include "event_data.h" #include "constants/flags.h" #include "landmark.h" @@ -15,11 +16,16 @@ #include "region_map.h" #include "constants/songs.h" #include "string_util.h" +#include "strings.h" #include "sound.h" #include "task.h" #include "text.h" +#include "trig.h" #include "scanline_effect.h" #include "pokemon_storage_system.h" +#include "pokemon_summary_screen.h" +#include "use_pokeblock.h" +#include "constants/game_stat.h" struct UnknownPokenav0 { @@ -87,6 +93,11 @@ struct UnknownPokenav0_1 { s8 var6dae; }; +struct PokenavRibbonIconGfx { + u16 baseTile; + u8 paletteNum; +}; + IWRAM_DATA void (*gUnknown_03000744)(void); extern const u8 gUnknown_083E0314[]; @@ -129,6 +140,77 @@ extern const u8 gPokenavHoennMapMisc_Gfx[]; extern const u8 gUnknown_08E99FB0[]; extern const u8 gUnknown_08E9A100[]; extern const u16 gPokenavHoennMap1_Pal[]; +extern void (*const gUnknown_083E3270[])(u16, u16); +extern const u8 gUnknown_083E039C[]; +extern const u8 gUnknown_083E03A0[]; +extern const u8 gUnknown_083E01F4[]; +extern const u8 *const gTrainerEyeDescriptions[]; +extern const u8 gUnknown_08E9FBA0[]; +extern const u8 gPokenavRibbonView_Gfx[]; +extern const u8 gUnknown_083E040C[]; +extern const u16 gPokenavRibbonView_Pal[]; +extern const u16 gUnknown_083E03A8[]; +extern const u16 gUnknown_083E3C60[][16]; +extern const u16 gPokenavRibbonsIconGfx[][2]; +extern const u8 *const gRibbonDescriptions[][2]; +extern const u8 *const gGiftRibbonDescriptions[][2]; +extern const u8 gUnknown_08E9FF58[]; +extern const u8 gPokenavRibbonPokeView_Gfx[]; +extern const u16 gUnknown_083E0124[]; +extern const u16 gUnknown_083E0144[]; +extern const u8 gPokenavMenuOptions_Gfx[]; +extern const u8 gPokenavConditionMenu_Gfx[]; +extern const u8 gPokenavConditionSearch_Gfx[]; +extern const struct SpriteTemplate gSpriteTemplate_83E4454; +extern const union AffineAnimCmd *const gSpriteAffineAnimTable_83E4450[]; +extern const u16 gUnknown_083E42F8[]; +extern const u16 gPokenavMenuOptions1_Pal[]; +extern const u16 gPokenavMenuOptions2_Pal[]; +extern const u16 gPokenavConditionMenu_Pal[]; +extern const u16 gPokenavCondition6_Pal[]; +extern const u16 gPokenavCondition7_Pal[]; +extern const struct SpriteSheet gSpriteSheet_PokenavBlueLight; +extern const struct SpritePalette gSpritePalette_PokenavBlueLight; +extern const struct SpriteTemplate gSpriteTemplate_83E4484; +extern const u8 gPokenavMainMenu_Gfx[]; +extern const u8 gPokenavConditionMenuHeader_Gfx[]; +extern const u8 gPokenavRibbonsHeader_Gfx[]; +extern const u8 gPokenavHoennMapHeader_Gfx[]; +extern const u8 gPokenavConditionMenuOptions_Gfx[]; +extern const u8 gPokenavConditionMenuOptions2_Gfx[]; +extern const u8 gPokenavTrainersEyesHeader_Gfx[]; +extern const struct SpritePalette gUnknown_083E449C[]; +extern const struct SpriteTemplate gSpriteTemplate_83E4530; +extern const struct SpriteTemplate gSpriteTemplate_83E4548; +extern const struct SpriteTemplate gSpriteTemplate_83E44E0; +extern const struct SpriteTemplate gSpriteTemplate_83E44F8; +extern const struct SpriteSheet gUnknown_083E4568; +extern const struct SpriteTemplate gSpriteTemplate_83E4570; +extern const struct SpritePalette gUnknown_083E4588; +extern const struct SpriteSheet gUnknown_083E4590[3]; +extern const struct SpritePalette gUnknown_083E45A8; +extern const u16 gUnknown_08E9F988[]; +extern const struct SpriteTemplate gSpriteTemplate_83E45B8; +extern const struct SpriteTemplate gSpriteTemplate_83E45F0; +extern const struct SpriteSheet gUnknown_083E4628[4]; +extern const struct SpritePalette gUnknown_083E4648[3]; +extern const struct SpriteTemplate gSpriteTemplate_83E4660; +extern const u16 gUnknown_083E4678[]; +extern const u8 gUnknown_083E3D00[]; +extern const struct SpriteTemplate gSpriteTemplate_83E476C; +extern const struct SpriteSheet gUnknown_083E4784; +extern const struct SpritePalette gUnknown_083E478C; +extern const struct SpriteTemplate gSpriteTemplate_83E4800; +extern const s16 gUnknown_083E4794[][2]; +extern const u8 gUnknown_083E329C[]; +extern const struct SpritePalette gUnknown_083E4818; +extern const struct SpriteTemplate gSpriteTemplate_83E4850; +extern const struct SpritePalette gUnknown_083E4868; +extern const struct SpriteTemplate gSpriteTemplate_83E4878; + +extern u16 gUnknown_020388B4; +extern u8 gUnknown_020388B0[]; + // TODO: decompile the debug code so the compiler doesn't complain about // unused static functions @@ -171,20 +253,117 @@ static void sub_80EE58C(); static void sub_80EE658(); static void sub_80EE8F4(); static void sub_80EEDC4(); +static void ShowMapNamePopUpWindow(void); +static void sub_80F0954(u16, u16, u16); +static bool8 sub_80F098C(void); +static u8 *sub_80F445C(u8*, u16); +static void sub_80F081C(u8); +bool8 sub_80F0944(void); +static u8 *sub_80F4428(u8*, u16, u8); +void sub_80F700C(u8*, u16); +static void sub_80F0B24(void); +static bool8 sub_80F0B44(void); +static void sub_80F0C28(void); +static bool8 sub_80F0C48(void); +void LoadTrainerEyesDescriptionLines(void); +bool8 sub_80F0D5C(void); +static void sub_80F0EC0(void); +static bool8 sub_80F0EF4(void); +static void sub_80F0F64(void); +static void sub_80F0FA0(void); +static bool8 sub_80F0FEC(void); +static bool8 sub_80F0718(void); +void sub_80F0FFC(u8); +static void sub_80F19DC(u8*); +static bool8 sub_80F1080(void); +void sub_80F1614(void); +void DrawMonRibbonIcons(void); +void sub_80F13FC(void); +void sub_80F1438(void); +static void sub_80F1494(void); +bool8 sub_80F162C(u8); +static void sub_80F01E0(u16); +static void sub_80F19FC(void); +static void sub_80F1A74(void); +static void sub_80F1A80(void); +static void sub_80F1A90(void); +static bool8 sub_80F1AC4(void); +static void sub_80F1B8C(u8); +static bool8 sub_80F1BC8(u8); +static void sub_80F2458(u8); +static void sub_80F2514(u8); +static void sub_80F1DF0(void); +static void sub_80F2218(struct Sprite *sprite); +static bool8 sub_80F1E50(void); +static bool8 sub_80F22F8(void); +static void sub_80F2108(void); +static bool8 sub_80F1E6C(void); +static void sub_80F1E84(void); +static void sub_80F2148(void); +static void sub_80F2240(struct Sprite *sprite); +static bool8 sub_80F1F10(void); +static bool8 sub_80F2360(void); +static void sub_80F2170(void); +static bool8 sub_80F23C8(void); +static void sub_80F21F8(void); +static void sub_80F1FF0(void); +static void sub_80F208C(void); +static void sub_80F22B0(struct Sprite *sprite); +static void sub_80F240C(struct Sprite *sprite); +static void sub_80F2598(void); +static void sub_80F2620(void); +static bool8 sub_80F26BC(void); +static void sub_80F2C58(struct Sprite *sprite); +static void sub_80F2D04(u8); +static void sub_80F2D6C(u8); +static void sub_80F2DD8(void); +static void sub_80F2DF4(void); +static void sub_80F2FEC(struct Sprite *sprite); +static void sub_80F2FB0(void); +static void sub_80F3008(u8); +static void sub_80F3130(void); +static void sub_80F3264(void); +static void sub_80F3294(u8); +static void sub_80F35B4(void); +static void sub_80F363C(struct Sprite *sprite); +static void SetMonMarkings(u16, u16, u8); +static void sub_80F36F0(void); +static bool8 sub_80F3724(void); +static void sub_80F379C(void); +static bool8 sub_80F37D0(void); +static void sub_80F38B8(void); +static bool8 sub_80F38EC(void); +static void sub_80F3970(void); +static bool8 sub_80F39A4(void); +static void sub_80F3B00(void); +static bool8 sub_80F3B58(void); +static void sub_80F3B94(void); +static bool8 sub_80F3BD4(void); +static void sub_80F3C2C(void); +static void sub_80F3F20(u8, u8); +static void sub_80F3FAC(void); +static void sub_80F3FF0(void); +static bool8 sub_80F4024(void); +static void sub_80F42C4(u8*); +static void sub_80F4394(void); +u8 *sub_80F6514(u8*, u16, u8); +static u8 *sub_80F443C(u8 *, u16); +void sub_80F55AC(u8*, struct UnkPokenav11 *); +static void sub_80F4CF0(void); +static void sub_80F4D44(void); +static bool8 sub_80F4D88(void); +static void sub_80F53EC(struct UnkPokenav11*, struct UnkPokenav11*); +static bool8 sub_80F5504(void); +static bool8 sub_80F5264(void); +static bool8 sub_80F52F8(void); +static bool8 sub_80F5364(void); -extern bool8 sub_80F0944(void); -extern void sub_80F081C(); extern void sub_80F0900(void); -extern void sub_80F443C(u8 *, u16); -extern bool8 sub_80F162C(u8); -extern void sub_80F01E0(u16); extern void sub_80F01A4(void); -extern void sub_80F1614(void); extern void sub_80EFD3C(void); extern void sub_8095C8C(); extern void sub_80EFDA0(void); extern void sub_80EFD74(void); -extern void sub_80F1A80(void); extern bool8 sub_80EFC64(void); extern void sub_80EFC3C(void); extern void sub_80EF624(const u16 *, const u16 *, u8, u8, u16 *); @@ -192,109 +371,50 @@ extern void sub_80EF7D4(void); extern void sub_80EF54C(u8); extern void sub_80EF58C(u8); extern void sub_80F6FFC(); -extern void sub_80F3294(); -extern void sub_80F0B24(); -extern bool8 sub_80F0B44(); -extern void sub_80F0F64(); -extern bool8 sub_80F0FEC(); extern void sub_80F6FB8(); extern void sub_80F6DB8(); -extern void sub_80F0CD8(); extern bool8 sub_80F6E9C(); -extern bool8 sub_80F0D5C(); extern bool8 sub_80F6ED4(); -extern bool8 sub_80F0EF4(); -extern void sub_80F2FB0(); -extern void sub_80F0FA0(); -extern void sub_80F0C28(); -extern bool8 sub_80F0C48(); extern bool8 sub_80F70FC(); extern void sub_80F708C(u32); -extern void sub_80F4394(); -extern void sub_80F0EC0(); -extern void sub_80F700C(); -extern void sub_80F42C4(); -extern void sub_80F0FFC(); extern void sub_80F6F10(); -extern void sub_80F3C2C(); -extern void sub_80F15A8(); +static extern void sub_80F15A8(void); extern void sub_80F6A4C(); extern bool8 sub_80F6AF0(); -extern void sub_80F3B00(); -extern bool8 sub_80F3B58(); -extern void sub_80F1494(); extern u8 sub_80F68E8(); -extern void sub_80F3B94(); -extern bool8 sub_80F3BD4(); extern void sub_80F66E0(); -extern bool8 sub_80F1080(); -extern void sub_80F38B8(); -extern bool8 sub_80F38EC(); extern void sub_80F638C(); extern bool8 sub_80F63D0(); -extern void sub_80F4CF0(); extern void sub_80EFF34(); extern bool8 sub_80EFF68(); -extern void sub_80F35B4(); extern void sub_80F6134(); extern u8 sub_80F5DD4(); -extern void ShowMapNamePopUpWindow(); -extern bool8 sub_80F0718(); -extern bool8 sub_80F3264(); -extern void sub_80F4D44(); -extern bool8 sub_80F4D88(); extern void sub_80F0264(u8); extern bool8 sub_80F02A0(); -extern void sub_80F3008(); -extern void sub_80F3130(); -extern void sub_80F2D6C(u32); -extern bool8 sub_80F1E6C(); extern void sub_80EF9F8(void); extern bool8 sub_80EFBDC(bool8); extern void sub_80EFBB0(void); -extern void sub_80F2DF4(); -extern void sub_80F1E84(); -extern bool8 sub_80F1F10(); extern void sub_80EEFBC(u8); -extern void sub_80F2620(); extern void sub_80EF814(void); extern void sub_80EF840(void); extern bool8 sub_80EF874(void); -extern void sub_80F2DD8(); extern bool8 sub_80F6250(); extern void sub_80F6208(); -extern void sub_80F208C(); extern void sub_80F6C20(); -extern void sub_80F3FF0(); -extern bool8 sub_80F4024(); -extern void sub_80F2598(); extern void sub_80EF248(u8); extern bool8 sub_80EF284(u8); -extern void sub_80F1B8C(); -extern bool8 sub_80F1BC8(u32 unk); -extern void sub_80F1DF0(); -extern bool8 sub_80F1E50(); extern void sub_80EF428(u8, u8); extern bool8 sub_80EEF78(); -extern void sub_80F1A90(); -extern void sub_80F2D04(u32); -extern bool8 sub_80F1AC4(); -extern void sub_80F36F0(); -extern bool8 sub_80F3724(); extern void sub_80EBC10(); extern void sub_80EBDBC(void (*func)(void)); extern void sub_80EBBE8(); -extern bool8 sub_80F26BC(void); extern void sub_80EBDD8(); extern void sub_80EBD90(); extern void sub_80EBD18(); -extern void sub_80F1A74(); -extern void sub_80F1FF0(); extern void sub_80FB260(); extern void sub_80EFE7C(void); extern void sub_80F5BF0(); extern void sub_80F6F64(); -extern void sub_80F19FC(); extern u16 gKeyRepeatStartDelay; @@ -1194,11 +1314,11 @@ void sub_80ECD80() ewram0_10.var304++; break; case 9: - sub_80F1B8C(0x2); + sub_80F1B8C(2); ewram0_10.var304++; // fall through case 10: - if (!sub_80F1BC8(0x2)) + if (!sub_80F1BC8(2)) ewram0_10.var304++; break; case 11: @@ -3131,7 +3251,7 @@ void sub_80EE658() ewram0_10.var304++; break; case 6: - sub_80F0CD8(); + LoadTrainerEyesDescriptionLines(); ewram0_10.var304++; case 7: if (!sub_80F6E9C() && !sub_80F0D5C()) @@ -3662,7 +3782,7 @@ bool8 sub_80EEE54(void) sub_80EF58C(2); break; case 4: - gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0; + gUnknown_083DFEC4->unk030C = 0; REG_BG1HOFS = 0; REG_BG1VOFS = 0; REG_BG1CNT = 0x1B0C; @@ -3678,17 +3798,17 @@ bool8 sub_80EEF34(void) { bool8 retVal = TRUE; - if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 32) + if (gUnknown_083DFEC4->unk030C == 32) return FALSE; - gUnknown_083DFEC4->unk030C.unk030C.unk0 += 2; - if (gUnknown_083DFEC4->unk030C.unk030C.unk0 > 31) + gUnknown_083DFEC4->unk030C += 2; + if (gUnknown_083DFEC4->unk030C > 31) { - gUnknown_083DFEC4->unk030C.unk030C.unk0 = 32; + gUnknown_083DFEC4->unk030C = 32; retVal = FALSE; } - REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0; + REG_BG1VOFS = gUnknown_083DFEC4->unk030C; return retVal; } @@ -3696,17 +3816,17 @@ bool8 sub_80EEF78(void) { bool8 retVal = TRUE; - if (gUnknown_083DFEC4->unk030C.unk030C.unk0 == 0) + if (gUnknown_083DFEC4->unk030C == 0) return FALSE; - gUnknown_083DFEC4->unk030C.unk030C.unk0 -= 2; - if (gUnknown_083DFEC4->unk030C.unk030C.unk0 <= 0) + gUnknown_083DFEC4->unk030C -= 2; + if (gUnknown_083DFEC4->unk030C <= 0) { - gUnknown_083DFEC4->unk030C.unk030C.unk0 = 0; + gUnknown_083DFEC4->unk030C = 0; retVal = FALSE; } - REG_BG1VOFS = gUnknown_083DFEC4->unk030C.unk030C.unk0; + REG_BG1VOFS = gUnknown_083DFEC4->unk030C; return retVal; } @@ -4484,7 +4604,7 @@ bool8 sub_80EFF68(void) { case 0: sub_80EEDE8(); - gUnknown_083DFEC4->unkD162[0] = 11; + gUnknown_083DFEC4->unkD162 = 11; break; case 1: Text_LoadWindowTemplate(&gWindowTemplate_81E7080); @@ -4529,7 +4649,7 @@ bool8 sub_80EFF68(void) sub_80F01A4(); break; case 12: - sub_80F01E0((u16)gUnknown_083DFEC4->unk8fe9); + sub_80F01E0(gUnknown_083DFEC4->unk8fe9); break; case 13: REG_BG3CNT = 0x1E03; @@ -4563,7 +4683,7 @@ void sub_80F01A4(void) REG_WINOUT = 0x001B; } -void sub_80F01E0(u16 a) +static void sub_80F01E0(u16 a) { Menu_PrintText(gUnknown_083DFEC4->unk8829[a], 13, 1); @@ -4587,7 +4707,6 @@ void sub_80F0264(u8 a) } } -#ifdef NONMATCHING // small nonmatching part is in the third else clause in case 7. bool8 sub_80F02A0(void) { const u16 *pointer; @@ -4598,7 +4717,7 @@ bool8 sub_80F02A0(void) sub_80EEDE8(); gUnknown_083DFEC4->unk87C8 = gUnknown_083DFEC4->unk87CA == 1; - gUnknown_083DFEC4->unkD162[0] = 11; + gUnknown_083DFEC4->unkD162 = 11; break; case 1: Text_LoadWindowTemplate(&gWindowTemplate_81E70D4); @@ -4647,8 +4766,7 @@ bool8 sub_80F02A0(void) else { LoadPalette(gUnknown_08E9F9E8, 0x30, 0x20); - pointer = &gUnknown_08E9F9E8[5]; - gPlttBufferUnfaded[0] = gUnknown_08E9F9E8[5]; + gPlttBufferUnfaded[0] = *(pointer = &gUnknown_08E9F9E8[5]); LoadPalette(gUnknown_083E0314, 0x50, 0x20); LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2); LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2); @@ -4690,7 +4808,7 @@ bool8 sub_80F02A0(void) else { sub_80F081C(0); - sub_80F0FFC(gUnknown_083DFEC4->unk876E); + sub_80F0FFC((u8)gUnknown_083DFEC4->unk876E); } break; case 14: @@ -4712,414 +4830,3910 @@ bool8 sub_80F02A0(void) gUnknown_083DFEC4->unk306++; return TRUE; } + +void sub_80F063C(s16 arg0) +{ + s16 var0; + s16 var1; + s16 var2; + + gUnknown_083DFEC4->unk877C = arg0 * 16; + gUnknown_083DFEC4->unk877A = (arg0 == 1 || arg0 == -1) ? 4 : 8; + if (arg0 < 0) + { + gUnknown_083DFEC4->unk877A *= -1; + var0 = arg0 * 2 + gUnknown_083DFEC4->unk8778; + var1 = arg0 + gUnknown_083DFEC4->unk8770; + if (var1 < 0) + var1 += gUnknown_083DFEC4->unk8774 + 1; + + arg0 *= -1; + } + else + { + var0 = gUnknown_083DFEC4->unk8778 + 16; + var1 = gUnknown_083DFEC4->unk8772 + 1; + } + + if (var1 > gUnknown_083DFEC4->unk8774) + var1 = 0; + + var2 = var0 & 0x1F; + sub_80F0954(var1, var2, arg0); +} + +static bool8 sub_80F0718(void) +{ + if (!sub_80F098C()) + { + if (gUnknown_083DFEC4->unk877C == 0) + return FALSE; + + gUnknown_083DFEC4->unk877C -= gUnknown_083DFEC4->unk877A; + gUnknown_083DFEC4->unk8776 += gUnknown_083DFEC4->unk877A; + gUnknown_083DFEC4->unk8776 &= 0xFF; + REG_BG3VOFS = gUnknown_083DFEC4->unk8776; + if (gUnknown_083DFEC4->unk877C == 0) + { + gUnknown_083DFEC4->unk8778 = ((8 + gUnknown_083DFEC4->unk8776) & 0xFF) / 8; + return FALSE; + } + } + + return TRUE; +} + +static void ShowMapNamePopUpWindow(void) +{ + switch (gUnknown_083DFEC4->unk87CA) + { + case 0: + sub_80F443C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk876E].unk2); + break; + case 1: + sub_80F445C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk876E + 1); + break; + default: + return; + } + + BasicInitMenuWindow(&gWindowTemplate_81E710C); + Menu_PrintText(gUnknown_083DFEC4->unk8788, 1, 6); +} + +void sub_80F081C(u8 arg0) +{ + u32 numTrainerBattles; + + BasicInitMenuWindow(&gWindowTemplate_81E710C); + switch (arg0) + { + case 0: + case 1: + MenuPrint_RightAligned(gOtherText_NumberRegistered, 10, 9); + if (arg0 != 0) + break; + // fall through + case 2: + ConvertIntToDecimalStringN( + gUnknown_083DFEC4->unk8788, + gUnknown_083DFEC4->unk8774 + 1, + STR_CONV_MODE_RIGHT_ALIGN, + 5); + MenuPrint_RightAligned(gUnknown_083DFEC4->unk8788, 10, 11); + if (arg0 != 0) + break; + // fall through + case 3: + MenuPrint_RightAligned(gOtherText_NumberBattles, 10, 13); + if (arg0 != 0) + break; + // fall through + case 4: + numTrainerBattles = GetGameStat(GAME_STAT_TRAINER_BATTLES); + if (numTrainerBattles > 99999) + numTrainerBattles = 99999; + + ConvertIntToDecimalStringN( + gUnknown_083DFEC4->unk8788, + numTrainerBattles, + STR_CONV_MODE_RIGHT_ALIGN, + 5); + MenuPrint_RightAligned(gUnknown_083DFEC4->unk8788, 10, 15); + break; + } +} + +static void sub_80F08E4(void) +{ + BasicInitMenuWindow(&gWindowTemplate_81E710C); + Menu_EraseWindowRect(0, 9, 11, 16); +} + +void sub_80F0900(void) +{ + s16 var0 = (gUnknown_083DFEC4->unk8772 - gUnknown_083DFEC4->unk8770) + 1; + if (var0 < 8) + Menu_EraseWindowRect(12, 1, 31, 15); + + sub_80F0954(gUnknown_083DFEC4->unk8770, 0, var0); +} + +bool8 sub_80F0944(void) +{ + return sub_80F098C(); +} + +static void sub_80F0954(u16 arg0, u16 arg1, u16 arg2) +{ + gUnknown_083DFEC4->unk877E = arg0; + gUnknown_083DFEC4->unk8780 = arg1; + gUnknown_083DFEC4->unk8784 = arg2; + gUnknown_083DFEC4->unk8786 = 0; +} + +#ifdef NONMATCHING +static bool8 sub_80F098C(void) +{ + register u16 zero asm("r8"); + if (!gUnknown_083DFEC4->unk8784) + { + DONE: + return FALSE; + } + + zero = 0; + gUnknown_083E3270[gUnknown_083DFEC4->unk87CA](gUnknown_083DFEC4->unk877E, gUnknown_083DFEC4->unk8780); + if (!--gUnknown_083DFEC4->unk8784) + goto DONE; + + if ((++gUnknown_083DFEC4->unk877E & 0xFFFF) > gUnknown_083DFEC4->unk8774) + gUnknown_083DFEC4->unk877E = zero; + + gUnknown_083DFEC4->unk8780 += 2; + gUnknown_083DFEC4->unk8780 &= 0x1F; + return TRUE; +} #else NAKED -bool8 sub_80F02A0(void) +static bool8 sub_80F098C(void) { asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - mov r6, r8\n\ - push {r6}\n\ - sub sp, 0x18\n\ - ldr r1, _080F02C4 @ =gUnknown_083DFEC4\n\ - ldr r0, [r1]\n\ - ldr r2, _080F02C8 @ =0x00000306\n\ - adds r0, r2\n\ - ldrh r0, [r0]\n\ - adds r2, r1, 0\n\ - cmp r0, 0xE\n\ - bls _080F02BA\n\ - b _080F05FA\n\ -_080F02BA:\n\ - lsls r0, 2\n\ - ldr r1, _080F02CC @ =_080F02D0\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + ldr r0, _080F09A4 @ =gUnknown_083DFEC4\n\ + ldr r6, [r0]\n\ + ldr r0, _080F09A8 @ =0x00008784\n\ + adds r7, r6, r0\n\ + ldrh r0, [r7]\n\ + cmp r0, 0\n\ + bne _080F09AC\n\ +_080F09A0:\n\ + movs r0, 0\n\ + b _080F0A02\n\ + .align 2, 0\n\ +_080F09A4: .4byte gUnknown_083DFEC4\n\ +_080F09A8: .4byte 0x00008784\n\ +_080F09AC:\n\ + movs r1, 0\n\ + mov r8, r1\n\ + ldr r1, _080F0A0C @ =gUnknown_083E3270\n\ + ldr r2, _080F0A10 @ =0x000087ca\n\ + adds r0, r6, r2\n\ + ldrb r2, [r0]\n\ + lsls r2, 2\n\ + adds r2, r1\n\ + ldr r0, _080F0A14 @ =0x0000877e\n\ + adds r4, r6, r0\n\ + ldrh r0, [r4]\n\ + ldr r1, _080F0A18 @ =0x00008780\n\ + adds r5, r6, r1\n\ + ldrh r1, [r5]\n\ + ldr r2, [r2]\n\ + bl _call_via_r2\n\ + ldrh r0, [r7]\n\ + subs r0, 0x1\n\ + strh r0, [r7]\n\ + ldr r2, _080F0A1C @ =0x0000ffff\n\ + adds r1, r2, 0\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _080F09A0\n\ + ldrh r0, [r4]\n\ + adds r0, 0x1\n\ + strh r0, [r4]\n\ + ands r0, r1\n\ + ldr r2, _080F0A20 @ =0x00008774\n\ + adds r1, r6, r2\n\ + movs r2, 0\n\ + ldrsh r1, [r1, r2]\n\ + cmp r0, r1\n\ + ble _080F09F6\n\ + mov r0, r8\n\ + strh r0, [r4]\n\ +_080F09F6:\n\ + ldrh r0, [r5]\n\ + adds r0, 0x2\n\ + movs r1, 0x1F\n\ + ands r0, r1\n\ + strh r0, [r5]\n\ + movs r0, 0x1\n\ +_080F0A02:\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_080F0A0C: .4byte gUnknown_083E3270\n\ +_080F0A10: .4byte 0x000087ca\n\ +_080F0A14: .4byte 0x0000877e\n\ +_080F0A18: .4byte 0x00008780\n\ +_080F0A1C: .4byte 0x0000ffff\n\ +_080F0A20: .4byte 0x00008774\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void sub_80F0A24(u16 arg0, u16 arg1) +{ + u8 var0 = gUnknown_083DFEC4->unk87C8 == 0 ? 2 : 1; + sub_80F4428(gUnknown_083DFEC4->unk8788, arg0, var0); + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + Menu_PrintText(gUnknown_083DFEC4->unk8788, 13, arg1); +} + +static void sub_80F0A74(u16 arg0, u16 arg1) +{ + sub_80F700C(gUnknown_083DFEC4->unk8788, arg0); + arg1 &= 0x1F; + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, arg1 * 8, 0); + if (arg0 < gUnknown_083DFEC4->unkD158 && gUnknown_083DFEC4->unkCEE8[arg0].unk5) + sub_8095C8C((void *)VRAM + 0xF000, 29, arg1, gUnknown_083E039C, 0, 0, 1, 2, 1); + else + sub_8095C8C((void *)VRAM + 0xF000, 29, arg1, gUnknown_083E03A0, 0, 0, 1, 2, 1); +} + +static void sub_80F0B24(void) +{ + gUnknown_083DFEC4->unkD15C = 0; + gUnknown_083DFEC4->unk306 = 0; +} + +static bool8 sub_80F0B44(void) +{ + int top; + if (gUnknown_083DFEC4->unkD15C > 8) + { + return FALSE; + } + + if (++gUnknown_083DFEC4->unk306 > 1) + { + gUnknown_083DFEC4->unk306 = 0; + if (gUnknown_083DFEC4->unkD15C < 8) + { + top = (gUnknown_083DFEC4->unk8778 + (gUnknown_083DFEC4->unkD15C * 2)) & 0x1F; + if (gUnknown_083DFEC4->unkD15C != gUnknown_083DFEC4->unk876C) + { + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + Menu_EraseWindowRect(12, top, 31, top + 1); + } + + if (!gUnknown_083DFEC4->unkD15C) + sub_80F08E4(); + + gUnknown_083DFEC4->unkD15C++; + return TRUE; + } + else + { + u16 i; + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + top = (gUnknown_083DFEC4->unk8778 + 16) & 0x1F; + for (i = 0; i < 8; i++) + { + Menu_EraseWindowRect(12, top, 31, top + 1); + top = (top + 2) & 0x1F; + } + + gUnknown_083DFEC4->unkD15C++; + return FALSE; + } + } + else + { + return TRUE; + } +} + +static void sub_80F0C28(void) +{ + gUnknown_083DFEC4->unkD15C = 0; + gUnknown_083DFEC4->unk306 = 0; +} + +static bool8 sub_80F0C48(void) +{ + if (gUnknown_083DFEC4->unkD15C > 7) + return FALSE; + + if (++gUnknown_083DFEC4->unk306 > 1) + { + gUnknown_083DFEC4->unk306 = 0; + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + sub_80F0A74(gUnknown_083DFEC4->unk8770 + gUnknown_083DFEC4->unkD15C, + gUnknown_083DFEC4->unk8778 + gUnknown_083DFEC4->unkD15C * 2); + + if ((++gUnknown_083DFEC4->unkD15C) > 7) + { + sub_80F081C(0); + return FALSE; + } + } + + return TRUE; +} + +void LoadTrainerEyesDescriptionLines(void) +{ + u16 i; + int trainerEyesId; + const u8 *curChar; + + gUnknown_083DFEC4->unk306 = 0; + gUnknown_083DFEC4->unkD15C = 0; + trainerEyesId = gUnknown_083DFEC4->unkCEE8[gUnknown_083DFEC4->unk876E].unk4; + gUnknown_083DFEC4->trainerEyeDescriptionLines[0] = gTrainerEyeDescriptions[trainerEyesId]; + + // Find the start of the 3 other lines in the Trainer's Eyes description. + curChar = gUnknown_083DFEC4->trainerEyeDescriptionLines[0]; + for (i = 0; i < 3; i++) + { + while (*curChar != EOS) + curChar++; + gUnknown_083DFEC4->trainerEyeDescriptionLines[i + 1] = ++curChar; + } +} + +#ifdef NONMATCHING +// small register mismatch (r2/r3) on the line where var0 is set. +bool8 sub_80F0D5C(void) +{ + int var0; + if (gUnknown_083DFEC4->unkD15C == 7) + return FALSE; + + if (++gUnknown_083DFEC4->unk306 > 1) + { + gUnknown_083DFEC4->unk306 = 0; + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + var0 = (gUnknown_083DFEC4->unk8778 + 2 + gUnknown_083DFEC4->unkD15C * 2) & 0x1F; + switch (gUnknown_083DFEC4->unkD15C) + { + case 0: + Menu_PrintTextPixelCoords(gOtherText_Strategy, 97, var0 * 8, 0); + break; + case 1: + AlignStringInMenuWindow( + gUnknown_083DFEC4->unk8788, + gUnknown_083DFEC4->trainerEyeDescriptionLines[0], + 136, + 0); + Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, var0 * 8, 0); + break; + case 2: + Menu_PrintTextPixelCoords(gOtherText_TrainersPokemon, 97, var0 * 8, 0); + break; + case 3: + AlignStringInMenuWindow( + gUnknown_083DFEC4->unk8788, + gUnknown_083DFEC4->trainerEyeDescriptionLines[1], + 136, + 0); + Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, var0 * 8, 0); + break; + case 4: + Menu_PrintTextPixelCoords(gOtherText_SelfIntroduction, 97, var0 * 8, 0); + break; + case 5: + AlignStringInMenuWindow( + gUnknown_083DFEC4->unk8788, + gUnknown_083DFEC4->trainerEyeDescriptionLines[2], + 136, + 0); + Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, var0 * 8, 0); + break; + case 6: + AlignStringInMenuWindow( + gUnknown_083DFEC4->unk8788, + gUnknown_083DFEC4->trainerEyeDescriptionLines[3], + 136, + 0); + Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, var0 * 8, 0); + default: + return FALSE; + } + + gUnknown_083DFEC4->unkD15C++; + return TRUE; + } + else + { + return TRUE; + } +} +#else +NAKED +bool8 sub_80F0D5C(void) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + ldr r0, _080F0D70 @ =gUnknown_083DFEC4\n\ + ldr r4, [r0]\n\ + ldr r0, _080F0D74 @ =0x0000d15c\n\ + adds r5, r4, r0\n\ + ldrh r0, [r5]\n\ + cmp r0, 0x7\n\ + bne _080F0D78\n\ +_080F0D6C:\n\ + movs r0, 0\n\ + b _080F0EB0\n\ + .align 2, 0\n\ +_080F0D70: .4byte gUnknown_083DFEC4\n\ +_080F0D74: .4byte 0x0000d15c\n\ +_080F0D78:\n\ + ldr r0, _080F0DB8 @ =0x00000306\n\ + adds r1, r4, r0\n\ + ldrh r0, [r1]\n\ + adds r0, 0x1\n\ + strh r0, [r1]\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bhi _080F0D8C\n\ + b _080F0EAE\n\ +_080F0D8C:\n\ + movs r0, 0\n\ + strh r0, [r1]\n\ + ldr r0, _080F0DBC @ =gWindowTemplate_81E70D4\n\ + bl BasicInitMenuWindow\n\ + ldr r0, _080F0DC0 @ =0x00008778\n\ + adds r1, r4, r0\n\ + ldrh r3, [r5]\n\ + lsls r0, r3, 1\n\ + adds r0, 0x2\n\ + ldrh r1, [r1]\n\ + adds r5, r0, r1\n\ + movs r0, 0x1F\n\ + ands r5, r0\n\ + cmp r3, 0x6\n\ + bhi _080F0D6C\n\ + lsls r0, r3, 2\n\ + ldr r1, _080F0DC4 @ =_080F0DC8\n\ adds r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ .align 2, 0\n\ -_080F02C4: .4byte gUnknown_083DFEC4\n\ -_080F02C8: .4byte 0x00000306\n\ -_080F02CC: .4byte _080F02D0\n\ +_080F0DB8: .4byte 0x00000306\n\ +_080F0DBC: .4byte gWindowTemplate_81E70D4\n\ +_080F0DC0: .4byte 0x00008778\n\ +_080F0DC4: .4byte _080F0DC8\n\ .align 2, 0\n\ -_080F02D0:\n\ - .4byte _080F030C\n\ - .4byte _080F0344\n\ - .4byte _080F0350\n\ - .4byte _080F035C\n\ - .4byte _080F0368\n\ - .4byte _080F036E\n\ - .4byte _080F0380\n\ - .4byte _080F0394\n\ - .4byte _080F04BC\n\ - .4byte _080F053C\n\ - .4byte _080F0550\n\ - .4byte _080F0574\n\ - .4byte _080F057A\n\ - .4byte _080F0586\n\ - .4byte _080F05BC\n\ -_080F030C:\n\ - bl sub_80EEDE8\n\ - ldr r0, _080F0334 @ =gUnknown_083DFEC4\n\ - ldr r1, [r0]\n\ - movs r2, 0\n\ - ldr r3, _080F0338 @ =0x000087ca\n\ - adds r0, r1, r3\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x1\n\ - bne _080F0322\n\ - movs r2, 0x1\n\ -_080F0322:\n\ - ldr r3, _080F033C @ =0x000087c8\n\ - adds r0, r1, r3\n\ - strb r2, [r0]\n\ - ldr r0, _080F0340 @ =0x0000d162\n\ - adds r1, r0\n\ - movs r0, 0xB\n\ - strb r0, [r1]\n\ - b _080F0618\n\ +_080F0DC8:\n\ + .4byte _080F0DE4\n\ + .4byte _080F0DF0\n\ + .4byte _080F0E08\n\ + .4byte _080F0E14\n\ + .4byte _080F0E2C\n\ + .4byte _080F0E38\n\ + .4byte _080F0E6C\n\ +_080F0DE4:\n\ + ldr r0, _080F0DEC @ =gOtherText_Strategy\n\ + lsls r2, r5, 3\n\ + b _080F0E54\n\ .align 2, 0\n\ -_080F0334: .4byte gUnknown_083DFEC4\n\ -_080F0338: .4byte 0x000087ca\n\ -_080F033C: .4byte 0x000087c8\n\ -_080F0340: .4byte 0x0000d162\n\ -_080F0344:\n\ - ldr r0, _080F034C @ =gWindowTemplate_81E70D4\n\ - bl Text_LoadWindowTemplate\n\ - b _080F0618\n\ +_080F0DEC: .4byte gOtherText_Strategy\n\ +_080F0DF0:\n\ + ldr r0, _080F0DFC @ =gUnknown_083DFEC4\n\ + ldr r0, [r0]\n\ + ldr r1, _080F0E00 @ =0x00008788\n\ + adds r4, r0, r1\n\ + ldr r1, _080F0E04 @ =0x0000d110\n\ + b _080F0E42\n\ .align 2, 0\n\ -_080F034C: .4byte gWindowTemplate_81E70D4\n\ -_080F0350:\n\ - ldr r0, _080F0358 @ =gWindowTemplate_81E70D4\n\ - bl MultistepInitMenuWindowBegin\n\ - b _080F0618\n\ +_080F0DFC: .4byte gUnknown_083DFEC4\n\ +_080F0E00: .4byte 0x00008788\n\ +_080F0E04: .4byte 0x0000d110\n\ +_080F0E08:\n\ + ldr r0, _080F0E10 @ =gOtherText_TrainersPokemon\n\ + lsls r2, r5, 3\n\ + b _080F0E54\n\ .align 2, 0\n\ -_080F0358: .4byte gWindowTemplate_81E70D4\n\ -_080F035C:\n\ - bl MultistepInitMenuWindowContinue\n\ - cmp r0, 0\n\ - beq _080F0366\n\ - b _080F0618\n\ -_080F0366:\n\ - b _080F0626\n\ -_080F0368:\n\ - bl Menu_EraseScreen\n\ - b _080F0618\n\ -_080F036E:\n\ - ldr r0, _080F0378 @ =gUnknown_08E9FC64\n\ - ldr r1, _080F037C @ =0x0600e800\n\ - bl LZ77UnCompVram\n\ - b _080F0618\n\ +_080F0E10: .4byte gOtherText_TrainersPokemon\n\ +_080F0E14:\n\ + ldr r0, _080F0E20 @ =gUnknown_083DFEC4\n\ + ldr r0, [r0]\n\ + ldr r1, _080F0E24 @ =0x00008788\n\ + adds r4, r0, r1\n\ + ldr r1, _080F0E28 @ =0x0000d114\n\ + b _080F0E42\n\ .align 2, 0\n\ -_080F0378: .4byte gUnknown_08E9FC64\n\ -_080F037C: .4byte 0x0600e800\n\ -_080F0380:\n\ - ldr r0, _080F038C @ =gPokenavConditionSearch2_Gfx\n\ - ldr r1, _080F0390 @ =0x06008000\n\ - bl LZ77UnCompVram\n\ - b _080F0618\n\ +_080F0E20: .4byte gUnknown_083DFEC4\n\ +_080F0E24: .4byte 0x00008788\n\ +_080F0E28: .4byte 0x0000d114\n\ +_080F0E2C:\n\ + ldr r0, _080F0E34 @ =gOtherText_SelfIntroduction\n\ + lsls r2, r5, 3\n\ + b _080F0E54\n\ .align 2, 0\n\ -_080F038C: .4byte gPokenavConditionSearch2_Gfx\n\ -_080F0390: .4byte 0x06008000\n\ -_080F0394:\n\ - ldr r6, _080F03FC @ =gUnknown_083E02B4\n\ - adds r0, r6, 0\n\ - movs r1, 0xB0\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - adds r0, r6, 0\n\ - movs r1, 0xF0\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - ldr r0, _080F0400 @ =gUnknown_083E0334\n\ - movs r1, 0x40\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - ldr r0, _080F0404 @ =gUnknown_083DFEC4\n\ +_080F0E34: .4byte gOtherText_SelfIntroduction\n\ +_080F0E38:\n\ + ldr r0, _080F0E60 @ =gUnknown_083DFEC4\n\ ldr r0, [r0]\n\ - ldr r1, _080F0408 @ =0x000087ca\n\ + ldr r1, _080F0E64 @ =0x00008788\n\ + adds r4, r0, r1\n\ + ldr r1, _080F0E68 @ =0x0000d118\n\ +_080F0E42:\n\ adds r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _080F0418\n\ - ldr r4, _080F040C @ =gPokenavConditionSearch2_Pal\n\ + ldr r1, [r0]\n\ adds r0, r4, 0\n\ - movs r1, 0x30\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - ldr r1, _080F0410 @ =gPlttBufferUnfaded\n\ - ldrh r0, [r4, 0xA]\n\ - strh r0, [r1]\n\ - ldr r0, _080F0414 @ =gUnknownPalette_81E6692\n\ - movs r1, 0xB0\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - adds r0, r6, 0x2\n\ - movs r1, 0xB1\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r0, r6, 0\n\ - adds r0, 0x10\n\ - movs r1, 0xB5\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r4, 0xA\n\ + movs r2, 0x88\n\ + movs r3, 0\n\ + bl AlignStringInMenuWindow\n\ + lsls r2, r5, 3\n\ adds r0, r4, 0\n\ - movs r1, 0xBF\n\ - b _080F04A8\n\ +_080F0E54:\n\ + movs r1, 0x61\n\ + movs r3, 0\n\ + bl Menu_PrintTextPixelCoords\n\ + b _080F0EA0\n\ .align 2, 0\n\ -_080F03FC: .4byte gUnknown_083E02B4\n\ -_080F0400: .4byte gUnknown_083E0334\n\ -_080F0404: .4byte gUnknown_083DFEC4\n\ -_080F0408: .4byte 0x000087ca\n\ -_080F040C: .4byte gPokenavConditionSearch2_Pal\n\ -_080F0410: .4byte gPlttBufferUnfaded\n\ -_080F0414: .4byte gUnknownPalette_81E6692\n\ -_080F0418:\n\ - cmp r0, 0x1\n\ - bne _080F0464\n\ - ldr r4, _080F0458 @ =gUnknown_083E0274\n\ +_080F0E60: .4byte gUnknown_083DFEC4\n\ +_080F0E64: .4byte 0x00008788\n\ +_080F0E68: .4byte 0x0000d118\n\ +_080F0E6C:\n\ + ldr r0, _080F0E94 @ =gUnknown_083DFEC4\n\ + ldr r0, [r0]\n\ + ldr r1, _080F0E98 @ =0x00008788\n\ + adds r4, r0, r1\n\ + ldr r1, _080F0E9C @ =0x0000d11c\n\ + adds r0, r1\n\ + ldr r1, [r0]\n\ adds r0, r4, 0\n\ - movs r1, 0x30\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - ldr r1, _080F045C @ =gPlttBufferUnfaded\n\ - ldrh r0, [r4, 0xA]\n\ - strh r0, [r1]\n\ - ldr r0, _080F0460 @ =gUnknownPalette_81E6692\n\ - movs r1, 0xB0\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - adds r0, r6, 0x2\n\ - movs r1, 0xB1\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r0, r6, 0\n\ - adds r0, 0x10\n\ - movs r1, 0xB5\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r4, 0xA\n\ + movs r2, 0x88\n\ + movs r3, 0\n\ + bl AlignStringInMenuWindow\n\ + lsls r2, r5, 3\n\ adds r0, r4, 0\n\ - movs r1, 0xBF\n\ - b _080F04A8\n\ + movs r1, 0x61\n\ + movs r3, 0\n\ + bl Menu_PrintTextPixelCoords\n\ + b _080F0D6C\n\ .align 2, 0\n\ -_080F0458: .4byte gUnknown_083E0274\n\ -_080F045C: .4byte gPlttBufferUnfaded\n\ -_080F0460: .4byte gUnknownPalette_81E6692\n\ -_080F0464:\n\ - ldr r4, _080F04B0 @ =gUnknown_08E9F9E8\n\ - adds r0, r4, 0\n\ - movs r1, 0x30\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - ldr r1, _080F04B4 @ =gPlttBufferUnfaded\n\ - adds r5, r4, 0\n\ - adds r5, 0xA\n\ - ldrh r0, [r4, 0xA]\n\ +_080F0E94: .4byte gUnknown_083DFEC4\n\ +_080F0E98: .4byte 0x00008788\n\ +_080F0E9C: .4byte 0x0000d11c\n\ +_080F0EA0:\n\ + ldr r0, _080F0EB8 @ =gUnknown_083DFEC4\n\ + ldr r1, [r0]\n\ + ldr r0, _080F0EBC @ =0x0000d15c\n\ + adds r1, r0\n\ + ldrh r0, [r1]\n\ + adds r0, 0x1\n\ strh r0, [r1]\n\ - ldr r0, _080F04B8 @ =gUnknown_083E0314\n\ - movs r1, 0x50\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - adds r0, r6, 0x2\n\ - movs r1, 0xB1\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r0, r6, 0\n\ - adds r0, 0x10\n\ - movs r1, 0xB5\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r0, r5, 0\n\ - movs r1, 0xBF\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r0, r5, 0\n\ - movs r1, 0x5F\n\ -_080F04A8:\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - b _080F0618\n\ - .align 2, 0\n\ -_080F04B0: .4byte gUnknown_08E9F9E8\n\ -_080F04B4: .4byte gPlttBufferUnfaded\n\ -_080F04B8: .4byte gUnknown_083E0314\n\ -_080F04BC:\n\ - ldr r0, _080F04E8 @ =gUnknown_083DFEC4\n\ - ldr r0, [r0]\n\ - ldr r2, _080F04EC @ =0x000087ca\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x2\n\ - beq _080F04F8\n\ - ldr r0, _080F04F0 @ =0x0600e800\n\ - ldr r3, _080F04F4 @ =gUnknown_08E9FD1C\n\ - movs r1, 0\n\ - str r1, [sp]\n\ - str r1, [sp, 0x4]\n\ - movs r2, 0x9\n\ - str r2, [sp, 0x8]\n\ - movs r1, 0x4\n\ - str r1, [sp, 0xC]\n\ - str r2, [sp, 0x10]\n\ - movs r1, 0\n\ - movs r2, 0x5\n\ - bl sub_8095C8C\n\ - b _080F0618\n\ +_080F0EAE:\n\ + movs r0, 0x1\n\ +_080F0EB0:\n\ + pop {r4,r5}\n\ + pop {r1}\n\ + bx r1\n\ .align 2, 0\n\ -_080F04E8: .4byte gUnknown_083DFEC4\n\ -_080F04EC: .4byte 0x000087ca\n\ -_080F04F0: .4byte 0x0600e800\n\ -_080F04F4: .4byte gUnknown_08E9FD1C\n\ -_080F04F8:\n\ - ldr r3, _080F0530 @ =0x0600e800\n\ - mov r8, r3\n\ - ldr r3, _080F0534 @ =gUnknown_08E9FE54\n\ - movs r4, 0\n\ - str r4, [sp]\n\ - str r4, [sp, 0x4]\n\ - movs r5, 0xC\n\ - str r5, [sp, 0x8]\n\ - movs r6, 0xA\n\ - str r6, [sp, 0xC]\n\ - str r5, [sp, 0x10]\n\ - mov r0, r8\n\ - movs r1, 0\n\ - movs r2, 0x4\n\ - bl sub_8095C8C\n\ - ldr r3, _080F0538 @ =gUnknown_08E9FD64\n\ - str r4, [sp]\n\ - str r4, [sp, 0x4]\n\ - str r5, [sp, 0x8]\n\ - str r6, [sp, 0xC]\n\ - str r5, [sp, 0x10]\n\ - mov r0, r8\n\ - movs r1, 0\n\ - movs r2, 0x8\n\ - bl sub_8095C8C\n\ - b _080F0618\n\ +_080F0EB8: .4byte gUnknown_083DFEC4\n\ +_080F0EBC: .4byte 0x0000d15c\n\ + .syntax divided\n"); +} +#endif + +static void sub_80F0EC0(void) +{ + gUnknown_083DFEC4->unk306 = 0; + gUnknown_083DFEC4->unkD15C = 0; + StringFill(gUnknown_083DFEC4->unk8788, CHAR_SPACE, 16); +} + +static bool8 sub_80F0EF4(void) +{ + int top; + if (gUnknown_083DFEC4->unkD15C > 6) + return FALSE; + + if (++gUnknown_083DFEC4->unk306 > 1) + { + gUnknown_083DFEC4->unk306 = 0; + top = (gUnknown_083DFEC4->unk8778 + 2 + gUnknown_083DFEC4->unkD15C * 2) & 0x1F; + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + Menu_EraseWindowRect(12, top, 31, top + 1); + gUnknown_083DFEC4->unkD15C++; + } + + return TRUE; +} + +static void sub_80F0F64(void) +{ + s16 var0 = gUnknown_083DFEC4->unk876C; + gUnknown_083DFEC4->unk877C = var0 * 16; + gUnknown_083DFEC4->unk877A = var0 == 1 ? 4 : 8; +} + +static void sub_80F0FA0(void) +{ + s16 var0 = gUnknown_083DFEC4->unk876C * -1; + gUnknown_083DFEC4->unk877C = var0 * 16; + gUnknown_083DFEC4->unk877A = var0 == -1 ? -4 : -8; +} + +static bool8 sub_80F0FEC(void) +{ + return sub_80F0718(); +} + +void sub_80F0FFC(u8 arg0) +{ + GetMapSectionName(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unkCEE8[arg0].unk2, 0); + BasicInitMenuWindow(&gWindowTemplate_81E710C); + sub_80F19DC(gUnknown_083DFEC4->unk8788); + AlignStringInMenuWindow(gUnknown_083DFEC4->unkD138, gUnknown_083DFEC4->unk8788, 88, 2); + Menu_PrintText(gUnknown_083DFEC4->unkD138, 0, 5); +} + +void sub_80F105C(void) +{ + sub_80F0A74(gUnknown_083DFEC4->unk876E, gUnknown_083DFEC4->unk8778); +} + +static bool8 sub_80F1080(void) +{ + switch (gUnknown_083DFEC4->unkD160) + { + case 0: + sub_80EEDE8(); + gUnknown_083DFEC4->unkD162 = 11; + break; + case 1: + Text_LoadWindowTemplate(&gWindowTemplate_81E70B8); + break; + case 2: + MultistepInitMenuWindowBegin(&gWindowTemplate_81E70B8); + break; + case 3: + if (!MultistepInitMenuWindowContinue()) + return TRUE; + break; + case 4: + Menu_EraseScreen(); + break; + case 5: + sub_80F1614(); + break; + case 6: + if (sub_80F162C(1)) + return TRUE; + break; + case 7: + LZ77UnCompWram(gUnknown_08E9FBA0, gUnknown_083DFEC4->unk934C); + break; + case 8: + DrawMonRibbonIcons(); + break; + case 9: + sub_80F13FC(); + break; + case 10: + LZ77UnCompVram(gPokenavRibbonView_Gfx, (void *)(VRAM + 0x8000)); + break; + case 11: + LZ77UnCompVram(gUnknown_083E040C, (void *)(VRAM + 0x8200)); + break; + case 12: + LoadPalette(gPokenavRibbonView_Pal, 0x20, 0x20); + LoadPalette(gUnknown_083E03A8, 0xF0, 0x20); + LoadPalette(gUnknown_083E3C60[0], 0x30, 0xA0); + LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20); + LoadPalette(gUnknown_083E03A8 + 0xF, 0xBF, 0x2); + break; + case 13: + sub_80F1438(); + break; + case 14: + REG_BG2CNT = 0x1E02; + REG_BG3CNT = 0x170B; + REG_BLDCNT = 0; + gUnknown_083DFEC4->unkD160++; + return FALSE; + default: + return FALSE; + } + + gUnknown_083DFEC4->unkD160++; + return TRUE; +} + +void DrawMonRibbonIcons(void) +{ + u16 i; + u16 offset; + u8 index, palette, tile; + u8 var0; + + offset = 0x8B; + var0 = gUnknown_083DFEC4->unkBC8E - gUnknown_083DFEC4->unkBC8F; + + for (i = 0; i < 8; i++) + CpuFill16(0x2000, &gUnknown_083DFEC4->unk934C[offset + i * 32], 0x24); + + for (i = 0; i < var0; i++) + { + index = gUnknown_083DFEC4->unkBC4C[i]; + palette = gPokenavRibbonsIconGfx[index][1] + 3; + tile = gPokenavRibbonsIconGfx[index][0] * 2 + 0x10; + gUnknown_083DFEC4->unk934C[offset] = (palette << 12) | tile; + gUnknown_083DFEC4->unk934C[offset + 1] = ((palette << 12) | 0x400) | tile; + gUnknown_083DFEC4->unk934C[offset + 0x20] = (palette << 12) | (tile + 1); + gUnknown_083DFEC4->unk934C[offset + 0x21] = (palette << 12) | 0x400 | (tile + 1); + + if ((i + 1) % 9 == 0) + offset += 0x30; + else + offset += 2; + } + + offset = 0x14B; + for (i = 0; i < gUnknown_083DFEC4->unkBC8F; i++) + { + index = gUnknown_083DFEC4->unkBC4C[var0 + i]; + palette = gPokenavRibbonsIconGfx[index][1] + 3; + tile = gPokenavRibbonsIconGfx[index][0] * 2 + 0x10; + gUnknown_083DFEC4->unk934C[offset] = (palette << 12) | tile; + gUnknown_083DFEC4->unk934C[offset + 1] = ((palette << 12) | 0x400) | tile; + gUnknown_083DFEC4->unk934C[offset + 0x20] = (palette << 12) | (tile + 1); + gUnknown_083DFEC4->unk934C[offset + 0x21] = (palette << 12) | 0x400 | (tile + 1); + + offset += 2; + } +} + +void sub_80F13FC(void) +{ + u16 *src = gUnknown_083DFEC4->unk934C; + u16 *dest = (u16 *)(VRAM + 0xB800); + DmaCopy32(3, src, dest, 0x500); + gPlttBufferUnfaded[0] = *(gPokenavRibbonView_Pal + 14); +} + +void sub_80F1438(void) +{ + Menu_PrintText(gUnknown_083DFEC4->unk8829[0], 13, 1); + sub_80F445C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk876E + 1); + Menu_PrintText(gUnknown_083DFEC4->unk8788, 1, 5); +} + +void sub_80F1480(void) +{ + Menu_EraseWindowRect(12, 13, 27, 16); +} + +// This is a fakematching function, due to a hardcoded access of gSaveBlock1. +// Due to this hardcoded address access, gift ribbons do not properly display +// their descriptions, since the hardcoded access is inside of the LinkBattleRecords +// save data, rather than the giftRibbons array, which is almost certainly what the +// intended access is. +static void sub_80F1494(void) +{ + u8 *arr; + u8 *tileBuffer1 = &gUnknown_083DFEC8[0x800]; + u8 *tileBuffer2 = &gUnknown_083DFEC8[0xA98]; + + if (gUnknown_083DFEC4->unkBC91 < 3) + { + gUnknown_020388B4 = gUnknown_083DFEC4->unkBC91 * 9 + gUnknown_083DFEC4->unkBC90; + gUnknown_020388B4 = gUnknown_083DFEC4->unkBC4C[gUnknown_020388B4]; + AlignStringInMenuWindow(tileBuffer1, gRibbonDescriptions[gUnknown_020388B4][0], 128, 0); + AlignStringInMenuWindow(tileBuffer2, gRibbonDescriptions[gUnknown_020388B4][1], 128, 0); + } + else + { + gUnknown_020388B4 = gUnknown_083DFEC4->unkBC8E - gUnknown_083DFEC4->unkBC8F; + gUnknown_020388B4 = gUnknown_083DFEC4->unkBC4C[gUnknown_020388B4 + gUnknown_083DFEC4->unkBC90]; + + // FIXME! + arr = ((u8*)&gSaveBlock1); + asm("ldrh r1, [r5]\n\ + add r0, r0, r1"); + gUnknown_020388B4 = arr[0x30F7]; + // The bug fix for this code is the following: + // gUnknown_020388B4 = gSaveBlock1.externalReservedData.giftRibbons[gUnknown_020388B4]; + if (gUnknown_020388B4) + { + gUnknown_020388B4--; + AlignStringInMenuWindow(tileBuffer1, gGiftRibbonDescriptions[gUnknown_020388B4][0], 128, 0); + AlignStringInMenuWindow(tileBuffer2, gGiftRibbonDescriptions[gUnknown_020388B4][1], 128, 0); + } + else + { + AlignStringInMenuWindow(tileBuffer1, gEmptyString_81E72B0, 128, 0); + AlignStringInMenuWindow(tileBuffer2, gEmptyString_81E72B0, 128, 0); + } + } + + Menu_PrintText(tileBuffer1, 12, 13); + Menu_PrintText(tileBuffer2, 12, 15); +} + +static void sub_80F15A8(void) +{ + u8 *buffer; + Menu_EraseWindowRect(12, 13, 27, 16); + buffer = StringCopy(gUnknown_083DFEC4->unk8788, gOtherText_Ribbons); + buffer[0] = CHAR_SPACE; + buffer++; + buffer = ConvertIntToDecimalStringN( + buffer, + gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk0, + STR_CONV_MODE_LEFT_ALIGN, + 2); + buffer[0] = EOS; + Menu_PrintText(gUnknown_083DFEC4->unk8788, 12, 13); +} + +void sub_80F1614(void) +{ + gUnknown_083DFEC4->unk8764 = 0; +} + +bool8 sub_80F162C(u8 arg0) +{ + switch (gUnknown_083DFEC4->unk8764) + { + case 0: + break; + case 1: + LZ77UnCompVram(gUnknown_08E9FF58, (void *)(VRAM + 0xE800)); + break; + case 2: + DmaCopy16Defvars(3, gPokenavRibbonPokeView_Gfx, (void *)(VRAM + 0xE000), 0xE0); + break; + case 3: + if (!arg0) + LoadPalette(gUnknown_083E0124, 0xD0, 0x20); + else + LoadPalette(gUnknown_083E0144, 0xD0, 0x20); + + gUnknown_083DFEC4->unk8766 = -80; + REG_BG0CNT = 0x1D0D; + gUnknown_083DFEC4->unk8764++; + return FALSE; + default: + return FALSE; + } + + gUnknown_083DFEC4->unk8764++; + return TRUE; +} + +bool8 sub_80F170C(void) +{ + gUnknown_083DFEC4->unk8766 += 0x10; + if (gUnknown_083DFEC4->unk8766 > 0) + gUnknown_083DFEC4->unk8766 = 0; + + return gUnknown_083DFEC4->unk8766 != 0; +} + +bool8 sub_80F173C(void) +{ + gUnknown_083DFEC4->unk8766 -= 0x10; + if (gUnknown_083DFEC4->unk8766 < -0x50) + gUnknown_083DFEC4->unk8766 = -0x50; + + return gUnknown_083DFEC4->unk8766 != -0x50; +} + +bool8 sub_80F1778(void) +{ + switch (gUnknown_083DFEC4->unkD160) + { + case 0: + sub_80EEDE8(); + gUnknown_083DFEC4->unkD162 = 2; + break; + case 1: + sub_80F1614(); + break; + case 2: + if (sub_80F162C(0)) + return TRUE; + break; + case 3: + LZ77UnCompVram(gPokenavConditionView_Gfx, (void *)(VRAM + 0x5000)); + break; + case 4: + LZ77UnCompVram(gUnknown_08E9AC4C, (void *)(VRAM + 0xF000)); + LoadPalette(gPokenavConditionMenu2_Pal, 0x20, 0x20); + break; + case 5: + sub_8095C8C((void *)VRAM + 0xF000, 0, 13, gUnknown_083E01F4, 0, 0, 12, 4, 12); + break; + case 6: + LZ77UnCompVram(gUnknown_08E9FEB4, (void *)(VRAM + 0xB800)); + break; + case 7: + LoadPalette(gUnknown_083E0254, 0x30, 0x20); + LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20); + LoadPalette(&gPokenavConditionMenu2_Pal[2], 0xB1, 0x2); + LoadPalette(&gPokenavConditionMenu2_Pal[16], 0xB5, 0x2); + LoadPalette(&gPokenavConditionMenu2_Pal[30], 0xBF, 0x2); + sub_80F01A4(); + break; + case 8: + sub_80F01E0(gUnknown_083DFEC4->unk8fe9); + break; + case 9: + REG_BG3CNT = 0x1E03; + REG_BG2CNT = 0x1702; + REG_BLDCNT = 0x844; + REG_BLDALPHA = 0x40B; + break; + default: + return FALSE; + } + + gUnknown_083DFEC4->unkD160++; + return TRUE; +} + +void sub_80F1934(void) +{ + u8 *buffer = gUnknown_083DFEC4->unk8788; + if (gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk4) + { + u8 nature = GetNature(&gPlayerParty[sub_8137124(gUnknown_083DFEC4->unk87DC)]); + buffer = StringCopy(buffer, gOtherText_Nature2); + AlignStringInMenuWindow(buffer, gNatureNames[nature], 87, 0); + } + else + { + AlignStringInMenuWindow(buffer, gEmptyString_81E72B0, 87, 0); + } + + Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 1, 112, 1); +} + +static void sub_80F19DC(u8 *text) +{ + while (text[0] != EOS) + { + if (text[0] == EXT_CTRL_CODE_BEGIN && text[1] == CHAR_SPACE) + { + text[0] = EOS; + break; + } + + text++; + } +} + +static void sub_80F19FC(void) +{ + // FIXME r4/r5 swapped + register u8 *ptr asm("r5") = gUnknown_020388B0; + if (ptr[0] == 1) + { + const u8 *landmarkName = GetLandmarkName( + gUnknown_083DFEC4->regionMap.mapSectionId, + gUnknown_083DFEC4->regionMap.everGrandeCityArea, + ptr[1]); + + if (landmarkName) + { + sub_8072A18(landmarkName, 0x70, 4 * (ptr[1] * 4 + 12), 0x78, 1); + if (++ptr[1] != 4) + return; + } + + Menu_BlankWindowRect(14, ptr[1] * 2 + 6, 28, 15); + ptr[0] = 0; + } +} + +static void sub_80F1A74(void) +{ + gUnknown_020388B0[0] = 0; +} + +static void sub_80F1A80(void) +{ + gUnknown_020388B0[0] = 1; + gUnknown_020388B0[1] = 0; +} + +static void sub_80F1A90(void) +{ + gUnknown_083DFEC4->unk306 = 0; + if (gUnknown_083DFEC4->unk6DAC == 0) + while (sub_80F1AC4()); +} + +static bool8 sub_80F1AC4(void) +{ + u16 i, j; + + switch (gUnknown_083DFEC4->unk306) + { + case 0: + for (i = 0; i < 6; i++) + { + for (j = 0; j < 4; j++) + gUnknown_083DFEC4->unk320[i][j] = NULL; + } + + gUnknown_083DFEC4->unk311 = 0; + break; + case 1: + LZ77UnCompWram(gPokenavMenuOptions_Gfx, gUnknown_083DFEC4->unk388); + break; + case 2: + LZ77UnCompWram(gPokenavConditionMenu_Gfx, gUnknown_083DFEC4->unk1788); + break; + case 3: + LZ77UnCompWram(gPokenavConditionSearch_Gfx, gUnknown_083DFEC4->unk2388); + return FALSE; + } + + gUnknown_083DFEC4->unk306++; + return TRUE; +} + +static void sub_80F1B8C(u8 arg0) +{ + gUnknown_083DFEC4->unk306 = 0; + if (gUnknown_083DFEC4->unk6DAC == 0) + while (sub_80F1BC8(arg0)); +} + +#ifdef NONMATCHING +// very close, but for some reason, (i + 1) is being stored in sp[0x10] +static bool8 sub_80F1BC8(u8 arg0) +{ + u16 i, j; + u16 animNum; + u16 topOffset; + u16 height; + u16 middle; + u8 spriteId; + + switch (gUnknown_083DFEC4->unk306) + { + case 0: + sub_80F2458(arg0); + break; + case 1: + sub_80F2514(arg0); + break; + case 2: + switch (arg0) + { + case 0: + topOffset = 42; + height = 20; + gUnknown_083DFEC4->unk30E = 5; + break; + case 1: + topOffset = 56; + height = 20; + gUnknown_083DFEC4->unk30E = 3; + break; + case 2: + topOffset = 40; + height = 16; + gUnknown_083DFEC4->unk30E = 6; + break; + default: + return FALSE; + } + + animNum = 0; + for (i = 0; i < gUnknown_083DFEC4->unk30E; i++) + { + middle = (height * i) + topOffset - 8; + gUnknown_083DFEC4->unk314[i] = (middle << 8) | (middle + 0x11); + if (!arg0) + { + if (gUnknown_083DFEC4->unk6DB2[i] == 0) + { + for (j = 0; j < 4; j++) + gUnknown_083DFEC4->unk320[i][j] = NULL; + continue; + } + else + { + animNum = (gUnknown_083DFEC4->unk6DB2[i] - 1) * 4; + } + } + + for (j = 0; j < 4; j++) + { + spriteId = CreateSprite(&gSpriteTemplate_83E4454, j * 32 + 256, (height * i) + topOffset, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk320[i][j] = &gSprites[spriteId]; + gUnknown_083DFEC4->unk320[i][j]->data[0] = i; + gUnknown_083DFEC4->unk320[i][j]->data[1] = j; + gUnknown_083DFEC4->unk320[i][j]->data[2] = j * 32 + 152; + gUnknown_083DFEC4->unk320[i][j]->data[3] = j * 32 + 256; + StartSpriteAnim(gUnknown_083DFEC4->unk320[i][j], animNum++); + + if ((arg0 == 2 || arg0 == 0) && i > 2) + gUnknown_083DFEC4->unk320[i][j]->oam.paletteNum = IndexOfSpritePaletteTag(0x1); + } + } + } + break; + default: + return FALSE; + } + + gUnknown_083DFEC4->unk306++; + return TRUE; +} +#else +NAKED +static bool8 sub_80F1BC8(u8 arg0) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0xC\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r9, r0\n\ + ldr r1, _080F1BF4 @ =gUnknown_083DFEC4\n\ + ldr r2, [r1]\n\ + ldr r3, _080F1BF8 @ =0x00000306\n\ + adds r0, r2, r3\n\ + ldrh r0, [r0]\n\ + adds r3, r1, 0\n\ + cmp r0, 0x1\n\ + beq _080F1C0A\n\ + cmp r0, 0x1\n\ + bgt _080F1BFC\n\ + cmp r0, 0\n\ + beq _080F1C02\n\ + b _080F1DC4\n\ .align 2, 0\n\ -_080F0530: .4byte 0x0600e800\n\ -_080F0534: .4byte gUnknown_08E9FE54\n\ -_080F0538: .4byte gUnknown_08E9FD64\n\ -_080F053C:\n\ - ldr r0, _080F0548 @ =gUnknown_083E0354\n\ - ldr r1, _080F054C @ =0x06005000\n\ - bl LZ77UnCompVram\n\ - b _080F0618\n\ +_080F1BF4: .4byte gUnknown_083DFEC4\n\ +_080F1BF8: .4byte 0x00000306\n\ +_080F1BFC:\n\ + cmp r0, 0x2\n\ + beq _080F1C12\n\ + b _080F1DC4\n\ +_080F1C02:\n\ + mov r0, r9\n\ + bl sub_80F2458\n\ + b _080F1DC8\n\ +_080F1C0A:\n\ + mov r0, r9\n\ + bl sub_80F2514\n\ + b _080F1DC8\n\ +_080F1C12:\n\ + mov r4, r9\n\ + cmp r4, 0x1\n\ + beq _080F1C40\n\ + cmp r4, 0x1\n\ + bgt _080F1C22\n\ + cmp r4, 0\n\ + beq _080F1C2A\n\ + b _080F1DC4\n\ +_080F1C22:\n\ + mov r5, r9\n\ + cmp r5, 0x2\n\ + beq _080F1C54\n\ + b _080F1DC4\n\ +_080F1C2A:\n\ + movs r0, 0x2A\n\ + str r0, [sp, 0x4]\n\ + movs r1, 0x14\n\ + str r1, [sp, 0x8]\n\ + ldr r4, _080F1C3C @ =0x0000030e\n\ + adds r1, r2, r4\n\ + movs r0, 0x5\n\ + b _080F1C62\n\ .align 2, 0\n\ -_080F0548: .4byte gUnknown_083E0354\n\ -_080F054C: .4byte 0x06005000\n\ -_080F0550:\n\ - ldr r2, _080F0568 @ =0x0600f800\n\ - add r1, sp, 0x14\n\ - movs r0, 0\n\ - strh r0, [r1]\n\ - ldr r0, _080F056C @ =0x040000d4\n\ - str r1, [r0]\n\ - str r2, [r0, 0x4]\n\ - ldr r1, _080F0570 @ =0x81000400\n\ - str r1, [r0, 0x8]\n\ - ldr r0, [r0, 0x8]\n\ - b _080F0618\n\ +_080F1C3C: .4byte 0x0000030e\n\ +_080F1C40:\n\ + movs r5, 0x38\n\ + str r5, [sp, 0x4]\n\ + movs r0, 0x14\n\ + str r0, [sp, 0x8]\n\ + ldr r4, _080F1C50 @ =0x0000030e\n\ + adds r1, r2, r4\n\ + movs r0, 0x3\n\ + b _080F1C62\n\ .align 2, 0\n\ -_080F0568: .4byte 0x0600f800\n\ -_080F056C: .4byte 0x040000d4\n\ -_080F0570: .4byte 0x81000400\n\ -_080F0574:\n\ - bl sub_80F0900\n\ - b _080F0618\n\ -_080F057A:\n\ - bl sub_80F0944\n\ +_080F1C50: .4byte 0x0000030e\n\ +_080F1C54:\n\ + movs r5, 0x28\n\ + str r5, [sp, 0x4]\n\ + movs r0, 0x10\n\ + str r0, [sp, 0x8]\n\ + ldr r4, _080F1CDC @ =0x0000030e\n\ + adds r1, r2, r4\n\ + movs r0, 0x6\n\ +_080F1C62:\n\ + strb r0, [r1]\n\ + movs r5, 0\n\ + str r5, [sp]\n\ + mov r8, r5\n\ + adds r1, r3, 0\n\ + ldr r0, [r1]\n\ + ldr r2, _080F1CDC @ =0x0000030e\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ lsls r0, 24\n\ + asrs r0, 24\n\ + cmp r8, r0\n\ + blt _080F1C7E\n\ + b _080F1DC8\n\ +_080F1C7E:\n\ + ldr r4, [sp, 0x8]\n\ + mov r3, r8\n\ + muls r3, r4\n\ + ldr r5, [sp, 0x4]\n\ + adds r0, r5, r3\n\ + subs r0, 0x8\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + ldr r4, [r1]\n\ + mov r2, r8\n\ + lsls r1, r2, 1\n\ + movs r5, 0xC5\n\ + lsls r5, 2\n\ + adds r2, r4, r5\n\ + adds r2, r1\n\ + lsls r1, r0, 8\n\ + adds r0, 0x11\n\ + orrs r1, r0\n\ + strh r1, [r2]\n\ + mov r0, r9\n\ cmp r0, 0\n\ - beq _080F0618\n\ - b _080F0626\n\ -_080F0586:\n\ - ldr r0, _080F059C @ =gUnknown_083DFEC4\n\ - ldr r4, [r0]\n\ - ldr r1, _080F05A0 @ =0x000087ca\n\ + bne _080F1CF2\n\ + ldr r1, _080F1CE0 @ =0x00006db2\n\ adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x2\n\ - beq _080F05A4\n\ - bl ShowMapNamePopUpWindow\n\ - b _080F0618\n\ - .align 2, 0\n\ -_080F059C: .4byte gUnknown_083DFEC4\n\ -_080F05A0: .4byte 0x000087ca\n\ -_080F05A4:\n\ - movs r0, 0\n\ - bl sub_80F081C\n\ - ldr r2, _080F05B8 @ =0x0000876e\n\ - adds r0, r4, r2\n\ - ldrb r0, [r0]\n\ - bl sub_80F0FFC\n\ - b _080F0618\n\ + mov r2, r8\n\ + adds r1, r0, r2\n\ + ldrb r0, [r1]\n\ + cmp r0, 0\n\ + bne _080F1CE8\n\ + movs r5, 0\n\ + ldr r0, _080F1CE4 @ =gUnknown_083DFEC4\n\ + ldr r0, [r0]\n\ + lsls r2, 4\n\ + movs r3, 0xC8\n\ + lsls r3, 2\n\ + adds r1, r0, r3\n\ + movs r3, 0\n\ +_080F1CC8:\n\ + lsls r0, r5, 2\n\ + adds r0, r2\n\ + adds r0, r1, r0\n\ + str r3, [r0]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x3\n\ + bls _080F1CC8\n\ + b _080F1D92\n\ .align 2, 0\n\ -_080F05B8: .4byte 0x0000876e\n\ -_080F05BC:\n\ - ldr r1, _080F0600 @ =REG_BG2CNT\n\ - ldr r3, _080F0604 @ =0x00001d0a\n\ - adds r0, r3, 0\n\ - strh r0, [r1]\n\ - adds r1, 0x2\n\ - adds r3, 0xF9\n\ - adds r0, r3, 0\n\ - strh r0, [r1]\n\ - subs r1, 0x6\n\ - adds r3, 0xFE\n\ - adds r0, r3, 0\n\ - strh r0, [r1]\n\ - adds r1, 0x16\n\ - movs r0, 0xF8\n\ - strh r0, [r1]\n\ - ldr r1, [r2]\n\ - ldr r0, _080F0608 @ =0x00008776\n\ - adds r2, r1, r0\n\ +_080F1CDC: .4byte 0x0000030e\n\ +_080F1CE0: .4byte 0x00006db2\n\ +_080F1CE4: .4byte gUnknown_083DFEC4\n\ +_080F1CE8:\n\ + ldrb r0, [r1]\n\ + subs r0, 0x1\n\ + lsls r0, 18\n\ + lsrs r0, 16\n\ + str r0, [sp]\n\ +_080F1CF2:\n\ + movs r5, 0\n\ + ldr r4, [sp, 0x4]\n\ + adds r0, r4, r3\n\ + lsls r0, 16\n\ + mov r10, r0\n\ +_080F1CFC:\n\ + lsls r6, r5, 5\n\ + movs r0, 0x80\n\ + lsls r0, 1\n\ + adds r7, r6, r0\n\ + lsls r1, r7, 16\n\ + asrs r1, 16\n\ + ldr r0, _080F1DB4 @ =gSpriteTemplate_83E4454\n\ + mov r3, r10\n\ + asrs r2, r3, 16\n\ movs r3, 0\n\ - movs r0, 0xF8\n\ - strh r0, [r2]\n\ - ldr r2, _080F060C @ =0x00008778\n\ - adds r0, r1, r2\n\ - strh r3, [r0]\n\ - ldr r0, _080F0610 @ =REG_BLDCNT\n\ - strh r3, [r0]\n\ - ldr r3, _080F0614 @ =0x0000d160\n\ - adds r1, r3\n\ - ldrh r0, [r1]\n\ + bl CreateSprite\n\ + lsls r0, 24\n\ + lsrs r3, r0, 24\n\ + cmp r3, 0x40\n\ + beq _080F1DC4\n\ + ldr r0, _080F1DB8 @ =gUnknown_083DFEC4\n\ + ldr r2, [r0]\n\ + lsls r1, r5, 2\n\ + mov r4, r8\n\ + lsls r0, r4, 4\n\ + adds r1, r0\n\ + movs r0, 0xC8\n\ + lsls r0, 2\n\ + adds r2, r0\n\ + adds r4, r2, r1\n\ + lsls r0, r3, 4\n\ + adds r0, r3\n\ + lsls r0, 2\n\ + ldr r1, _080F1DBC @ =gSprites\n\ + adds r0, r1\n\ + str r0, [r4]\n\ + mov r1, r8\n\ + strh r1, [r0, 0x2E]\n\ + ldr r0, [r4]\n\ + strh r5, [r0, 0x30]\n\ + ldr r1, [r4]\n\ + adds r0, r6, 0\n\ + adds r0, 0x98\n\ + strh r0, [r1, 0x32]\n\ + ldr r0, [r4]\n\ + strh r7, [r0, 0x34]\n\ + ldr r0, [r4]\n\ + ldr r1, [sp]\n\ + adds r2, r1, 0x1\n\ + lsls r2, 16\n\ + lsrs r2, 16\n\ + str r2, [sp]\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + bl StartSpriteAnim\n\ + mov r2, r9\n\ + cmp r2, 0x2\n\ + beq _080F1D6E\n\ + cmp r2, 0\n\ + bne _080F1D88\n\ +_080F1D6E:\n\ + mov r3, r8\n\ + cmp r3, 0x2\n\ + bls _080F1D88\n\ + movs r0, 0x1\n\ + bl IndexOfSpritePaletteTag\n\ + ldr r3, [r4]\n\ + lsls r0, 4\n\ + ldrb r2, [r3, 0x5]\n\ + movs r1, 0xF\n\ + ands r1, r2\n\ + orrs r1, r0\n\ + strb r1, [r3, 0x5]\n\ +_080F1D88:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x3\n\ + bls _080F1CFC\n\ +_080F1D92:\n\ + mov r0, r8\n\ adds r0, 0x1\n\ - strh r0, [r1]\n\ -_080F05FA:\n\ - movs r0, 0\n\ - b _080F0628\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r8, r0\n\ + ldr r1, _080F1DB8 @ =gUnknown_083DFEC4\n\ + ldr r0, [r1]\n\ + ldr r4, _080F1DC0 @ =0x0000030e\n\ + adds r0, r4\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + cmp r8, r0\n\ + bge _080F1DB0\n\ + b _080F1C7E\n\ +_080F1DB0:\n\ + b _080F1DC8\n\ .align 2, 0\n\ -_080F0600: .4byte REG_BG2CNT\n\ -_080F0604: .4byte 0x00001d0a\n\ -_080F0608: .4byte 0x00008776\n\ -_080F060C: .4byte 0x00008778\n\ -_080F0610: .4byte REG_BLDCNT\n\ -_080F0614: .4byte 0x0000d160\n\ -_080F0618:\n\ - ldr r0, _080F0634 @ =gUnknown_083DFEC4\n\ +_080F1DB4: .4byte gSpriteTemplate_83E4454\n\ +_080F1DB8: .4byte gUnknown_083DFEC4\n\ +_080F1DBC: .4byte gSprites\n\ +_080F1DC0: .4byte 0x0000030e\n\ +_080F1DC4:\n\ + movs r0, 0\n\ + b _080F1DD8\n\ +_080F1DC8:\n\ + ldr r0, _080F1DE8 @ =gUnknown_083DFEC4\n\ ldr r1, [r0]\n\ - ldr r0, _080F0638 @ =0x00000306\n\ - adds r1, r0\n\ + ldr r5, _080F1DEC @ =0x00000306\n\ + adds r1, r5\n\ ldrh r0, [r1]\n\ adds r0, 0x1\n\ strh r0, [r1]\n\ -_080F0626:\n\ movs r0, 0x1\n\ -_080F0628:\n\ - add sp, 0x18\n\ - pop {r3}\n\ +_080F1DD8:\n\ + add sp, 0xC\n\ + pop {r3-r5}\n\ mov r8, r3\n\ - pop {r4-r6}\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ pop {r1}\n\ bx r1\n\ .align 2, 0\n\ -_080F0634: .4byte gUnknown_083DFEC4\n\ -_080F0638: .4byte 0x00000306\n\ +_080F1DE8: .4byte gUnknown_083DFEC4\n\ +_080F1DEC: .4byte 0x00000306\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +static void sub_80F1DF0(void) +{ + u16 i, j; + for (i = 0; i < gUnknown_083DFEC4->unk30E; i++) + { + for (j = 0; j < 4; j++) + { + if (gUnknown_083DFEC4->unk320[i][j]) + gUnknown_083DFEC4->unk320[i][j]->callback = sub_80F2218; + } + } + + PlaySE(SE_WIN_OPEN); +} + +static bool8 sub_80F1E50(void) +{ + if (sub_80F22F8()) + { + sub_80F2108(); + return FALSE; + } + else + { + return TRUE; + } +} + +static bool8 sub_80F1E6C(void) +{ + return !sub_80F22F8(); +} + +static void sub_80F1E84(void) +{ + u16 i, j; + + gUnknown_083DFEC4->unk30F = 0; + sub_80F2148(); + for (i = 0; i < gUnknown_083DFEC4->unk30E; i++) + { + if (i != gUnknown_083DFEC4->unk6DAD) + { + for (j = 0; j < 4; j++) + { + if (gUnknown_083DFEC4->unk320[i][j]) + gUnknown_083DFEC4->unk320[i][j]->callback = sub_80F2240; + } + } + } +} + +static bool8 sub_80F1F10(void) +{ + u16 j; + + switch (gUnknown_083DFEC4->unk30F) + { + case 0: + if (sub_80F2360()) + { + for (j = 0; j < 4; j++) + { + struct Sprite *sprite = gUnknown_083DFEC4->unk320[gUnknown_083DFEC4->unk6DAD][j]; + sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE; + sprite->affineAnims = gSpriteAffineAnimTable_83E4450; + InitSpriteAffineAnim(sprite); + sprite->data[4] = j * 4 - 6; + sprite->data[4] /= 2; + sprite->data[5] = sprite->data[4] * 8; + sprite->callback = sub_80F2240; + } + + sub_80F2170(); + gUnknown_083DFEC4->unk30F++; + } + break; + case 1: + if (sub_80F23C8()) + { + sub_80F21F8(); + FreeSpriteTilesByTag(0x0); + FreeSpritePaletteByTag(0x0); + FreeSpritePaletteByTag(0x1); + return FALSE; + } + break; + } + + return TRUE; +} + +static void sub_80F1FF0(void) +{ + if (gUnknown_083DFEC4->unk311 == 1) + { + REG_WIN0V = gUnknown_083DFEC4->unk314[gUnknown_083DFEC4->unk6DAD]; + REG_BLDY = gSineTable[gUnknown_083DFEC4->unk312] >> 5; + gUnknown_083DFEC4->unk312 += 3; + gUnknown_083DFEC4->unk312 &= 0x7F; + } + else if (gUnknown_083DFEC4->unk311 == 2) + { + REG_BLDALPHA = gUnknown_083E42F8[gUnknown_083DFEC4->unk312]; + if (gUnknown_083DFEC4->unk312 < 15) + gUnknown_083DFEC4->unk312++; + } +} + +static void sub_80F208C(void) +{ + sub_80F2148(); +} + +static void sub_80F2098(void) +{ + REG_WIN0H = 0x77F0; + REG_WIN0V = gUnknown_083DFEC4->unk314[gUnknown_083DFEC4->unk6DAD]; + REG_WININ = 0x3F; + REG_WINOUT = 0x1F; + REG_DISPCNT |= DISPCNT_WIN0_ON; +} + +static void sub_80F20F4(void) +{ + REG_DISPCNT &= ~DISPCNT_WIN0_ON; +} + +static void sub_80F2108(void) +{ + if (!gUnknown_083DFEC4->unk311) + { + gUnknown_083DFEC4->unk311 = 1; + gUnknown_083DFEC4->unk312 = 0; + REG_BLDCNT = 0x90; + REG_BLDY = 0; + sub_80F2098(); + } +} + +static void sub_80F2148(void) +{ + gUnknown_083DFEC4->unk311 = 0; + REG_BLDCNT = 0; + sub_80F20F4(); +} + +static void sub_80F2170(void) +{ + u16 j; + + if (!gUnknown_083DFEC4->unk311) + { + sub_80F20F4(); + for (j = 0; j < 4; j++) + { + struct Sprite *sprite = gUnknown_083DFEC4->unk320[gUnknown_083DFEC4->unk6DAD][j]; + sprite->oam.objMode = ST_OAM_OBJ_BLEND; + } + + gUnknown_083DFEC4->unk311 = 2; + gUnknown_083DFEC4->unk312 = 0; + REG_BLDCNT = 0x3F40; + REG_BLDALPHA = 0x10; + } +} + +static void sub_80F21F8() +{ + gUnknown_083DFEC4->unk311 = 0; + REG_BLDCNT = 0; +} + +static void sub_80F2218(struct Sprite *sprite) +{ + sprite->pos1.x -= 8; + if (sprite->pos1.x <= sprite->data[2]) + { + sprite->pos1.x = sprite->data[2]; + sprite->callback = sub_80F22B0; + } +} + +static void sub_80F2240(struct Sprite *sprite) +{ + if (sprite->data[0] == gUnknown_083DFEC4->unk6DAD) + { + if (sprite->data[5]) + { + sprite->pos1.x += sprite->data[4]; + sprite->data[5] -= sprite->data[4]; + } + + if (sprite->affineAnimEnded) + sub_80F240C(sprite); + } + else + { + sprite->pos1.x += 8; + if (sprite->pos1.x >= sprite->data[3]) + sub_80F240C(sprite); + } +} + +static void sub_80F22B0(struct Sprite *sprite) +{ + if (sprite->data[0] == gUnknown_083DFEC4->unk6DAD) + { + if (sprite->pos2.x > -16) + sprite->pos2.x -= 4; + } + else + { + if (sprite->pos2.x < 0) + sprite->pos2.x += 4; + } +} + +static bool8 sub_80F22F8(void) +{ + u16 i, j; + + for (i = 0; i < gUnknown_083DFEC4->unk6DAE; i++) + { + for (j = 0; j < 4; j++) + { + struct Sprite *sprite = gUnknown_083DFEC4->unk320[i][j]; + if (!sprite) + return TRUE; + + if (sprite->pos2.x != 0 && sprite->pos2.x != -16) + return FALSE; + } + } + + return TRUE; +} + +static bool8 sub_80F2360(void) +{ + u16 i, j; + + for (i = 0; i < gUnknown_083DFEC4->unk30E; i++) + { + if (i != gUnknown_083DFEC4->unk6DAD) + { + for (j = 0; j < 4; j++) + { + struct Sprite *sprite = gUnknown_083DFEC4->unk320[i][j]; + if (sprite) + return FALSE; + } + } + } + + return TRUE; +} + +static bool8 sub_80F23C8(void) +{ + u16 j; + + for (j = 0; j < 4; j++) + { + struct Sprite *sprite = gUnknown_083DFEC4->unk320[gUnknown_083DFEC4->unk6DAD][j]; + if (sprite) + return FALSE; + } + + return TRUE; +} + +static void sub_80F240C(struct Sprite *sprite) +{ + gUnknown_083DFEC4->unk320[sprite->data[0]][sprite->data[1]] = NULL; + if (sprite->affineAnimEnded) + FreeOamMatrix(sprite->oam.matrixNum); + + DestroySprite(sprite); +} + +static void sub_80F2458(u8 arg0) +{ + switch (arg0) + { + case 0: + gUnknown_083DFEC4->unk380.data = gUnknown_083DFEC4->unk388; + gUnknown_083DFEC4->unk380.size = sizeof(gUnknown_083DFEC4->unk388); + gUnknown_083DFEC4->unk380.tag = 0x0; + break; + case 1: + gUnknown_083DFEC4->unk380.data = gUnknown_083DFEC4->unk1788; + gUnknown_083DFEC4->unk380.size = sizeof(gUnknown_083DFEC4->unk1788); + gUnknown_083DFEC4->unk380.tag = 0x0; + break; + case 2: + gUnknown_083DFEC4->unk380.data = gUnknown_083DFEC4->unk2388; + gUnknown_083DFEC4->unk380.size = sizeof(gUnknown_083DFEC4->unk2388); + gUnknown_083DFEC4->unk380.tag = 0x0; + break; + default: + return; + } + + LoadSpriteSheet(&gUnknown_083DFEC4->unk380); +} + +static void sub_80F2514(u8 arg0) +{ + struct SpritePalette spritePalette; + + switch (arg0) + { + case 0: + spritePalette.data = gPokenavMenuOptions1_Pal; + spritePalette.tag = 0; + LoadSpritePalette(&spritePalette); + spritePalette.data = gPokenavMenuOptions2_Pal; + spritePalette.tag = 0x1; + break; + case 1: + spritePalette.data = gPokenavConditionMenu_Pal; + spritePalette.tag = 0x0; + break; + case 2: + spritePalette.data = gPokenavCondition6_Pal; + spritePalette.tag = 0; + LoadSpritePalette(&spritePalette); + spritePalette.data = gPokenavCondition7_Pal; + spritePalette.tag = 0x1; + break; + default: + return; + } + + LoadSpritePalette(&spritePalette); +} + +static void sub_80F2598(void) +{ + u8 spriteId; + + gUnknown_083DFEC4->unk6D9C = NULL; + if (DoesSomeoneWantRematchIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) == TRUE) + { + LoadSpriteSheet(&gSpriteSheet_PokenavBlueLight); + LoadSpritePalette(&gSpritePalette_PokenavBlueLight); + spriteId = CreateSprite(&gSpriteTemplate_83E4484, 12, 96, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk6D9C = &gSprites[spriteId]; + } + else + { + FreeSpriteTilesByTag(0x19); + FreeSpritePaletteByTag(0x11); + } + } +} + +static void sub_80F2620(void) +{ + if (gUnknown_083DFEC4->unk6D9C) + { + DestroySprite(gUnknown_083DFEC4->unk6D9C); + FreeSpriteTilesByTag(0x19); + FreeSpritePaletteByTag(0x11); + gUnknown_083DFEC4->unk6D9C = NULL; + } +} + +void sub_80F2654(struct Sprite *sprite) +{ + if (++sprite->data[0] > 6) + { + sprite->data[0] = 0; + sprite->invisible = !sprite->invisible; + } +} + +void sub_80F2688(void) +{ + gUnknown_083DFEC4->unk306 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while(sub_80F26BC()); +} + +static bool8 sub_80F26BC(void) +{ + switch (gUnknown_083DFEC4->unk306) + { + case 0: + LZ77UnCompWram(gPokenavMainMenu_Gfx, gUnknown_083DFEC4->unk3B98); + break; + case 1: + LZ77UnCompWram(gPokenavConditionMenuHeader_Gfx, gUnknown_083DFEC4->unk4198); + break; + case 2: + LZ77UnCompWram(gPokenavRibbonsHeader_Gfx, gUnknown_083DFEC4->unk4D98); + break; + case 3: + LZ77UnCompWram(gPokenavHoennMapHeader_Gfx, gUnknown_083DFEC4->unk5398); + break; + case 4: + LZ77UnCompWram(gPokenavConditionMenuOptions_Gfx, gUnknown_083DFEC4->unk5F98); + break; + case 5: + LZ77UnCompWram(gPokenavConditionMenuOptions2_Gfx, gUnknown_083DFEC4->unk6798); + break; + case 6: + LZ77UnCompWram(gPokenavTrainersEyesHeader_Gfx, gUnknown_083DFEC4->unk4798); + break; + case 7: + LoadSpritePalettes(gUnknown_083E449C); + break; + default: + return FALSE; + } + + gUnknown_083DFEC4->unk306++; + return TRUE; +} + +static void sub_80F27DC(u8 arg0) +{ + struct SpriteSheet spriteSheet; + + switch (arg0) + { + case 0: + spriteSheet.data = gUnknown_083DFEC4->unk3B98; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk3B98); + spriteSheet.tag = 0x1; + break; + case 1: + spriteSheet.data = gUnknown_083DFEC4->unk4198; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk4198); + spriteSheet.tag = 0x1; + break; + case 3: + spriteSheet.data = gUnknown_083DFEC4->unk4798; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk4798); + spriteSheet.tag = 0x1; + break; + case 2: + spriteSheet.data = gUnknown_083DFEC4->unk4D98; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk4D98); + spriteSheet.tag = 0x1; + break; + case 4: + spriteSheet.data = gUnknown_083DFEC4->unk5398; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk5398); + spriteSheet.tag = 0x1; + break; + case 5: + spriteSheet.data = gUnknown_083DFEC4->unk5F98; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk5F98); + spriteSheet.tag = 0x2; + break; + case 6: + spriteSheet.data = gUnknown_083DFEC4->unk6198; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6198); + spriteSheet.tag = 0x2; + break; + case 8: + spriteSheet.data = gUnknown_083DFEC4->unk6398; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6398); + spriteSheet.tag = 0x2; + break; + case 9: + spriteSheet.data = gUnknown_083DFEC4->unk6598; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6598); + spriteSheet.tag = 0x2; + break; + case 11: + spriteSheet.data = gUnknown_083DFEC4->unk6998; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6998); + spriteSheet.tag = 0x2; + break; + case 10: + spriteSheet.data = gUnknown_083DFEC4->unk6798; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6798); + spriteSheet.tag = 0x2; + break; + case 7: + spriteSheet.data = gUnknown_083DFEC4->unk6B98; + spriteSheet.size = sizeof(gUnknown_083DFEC4->unk6B98); + spriteSheet.tag = 0x2; + break; + default: + return; + } + + LoadSpriteSheet(&spriteSheet); +} + +void sub_80F29B8(u8 arg0) +{ + u16 i; + s16 deltaX, endX, initialX; + u16 y; + s16 width; + struct Sprite **sprites; + const struct SpriteTemplate *spriteTemplate; + u8 spriteId; + + spriteTemplate = NULL; + switch (arg0) + { + case 0: + case 1: + case 2: + case 3: + initialX = -96; + y = 49 - gUnknown_083DFEC4->unk030C; + deltaX = 8; + endX = 32; + width = 64; + sprites = gUnknown_083DFEC4->unk3B88; + spriteTemplate = arg0 != 3 ? &gSpriteTemplate_83E44E0 : &gSpriteTemplate_83E44F8; + break; + case 4: + initialX = 272; + y = 49 - gUnknown_083DFEC4->unk030C; + deltaX = -8; + endX = 152; + width = 64; + spriteTemplate = &gSpriteTemplate_83E44E0; + sprites = gUnknown_083DFEC4->unk3B88; + break; + case 5: + case 6: + case 8: + case 9: + spriteTemplate = &gSpriteTemplate_83E4530; + // fall through + case 7: + case 10: + case 11: + if (spriteTemplate == NULL) + spriteTemplate = &gSpriteTemplate_83E4548; + + initialX = -96; + y = 68 - gUnknown_083DFEC4->unk030C; + deltaX = 8; + endX = 16; + width = 32; + sprites = gUnknown_083DFEC4->unk3B90; + break; + default: + return; + } + + for (i = 0; i < 2; i++) + { + spriteId = CreateSprite(spriteTemplate, i * width + initialX, y, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = deltaX; + gSprites[spriteId].data[1] = endX + i * width; + gSprites[spriteId].data[2] = i; + gSprites[spriteId].data[3] = arg0; + if (arg0 == 4 && i == 1) + { + int anim = !gUnknown_083DFEC4->regionMap.zoomed ? 1 : 2; + StartSpriteAnim(&gSprites[spriteId], anim); + } + else + { + StartSpriteAnim(&gSprites[spriteId], i); + } + + if (arg0 < 4 && i == 1) + { + gSprites[spriteId].oam.shape = ST_OAM_SQUARE; + gSprites[spriteId].oam.size = 2; + } + + sprites[i] = &gSprites[spriteId]; + } + } +} + +#define sEndX sprite->data[1] +void sub_80F2BBC(struct Sprite *sprite) +{ + s16 x = sprite->pos1.x; + sprite->pos1.x += sprite->data[0]; + if ((x <= sEndX && sprite->pos1.x >= sEndX) || (x >= sEndX && sprite->pos1.x <= sEndX)) + { + sprite->pos1.x = sEndX; + if (sprite->data[3] == 4 && sprite->data[2] == 1) + sprite->callback = sub_80F2C58; + else + sprite->callback = SpriteCallbackDummy; + } +} +#undef sEndX + +static void sub_80F2C14(struct Sprite *sprite) +{ + u16 right; + + sprite->pos1.x -= sprite->data[0]; + right = sprite->pos1.x + 32; + if (right > 304) + { + if (sprite->data[2] == 1) + { + if (sprite->data[3] < 5) + FreeSpriteTilesByTag(0x1); + else + FreeSpriteTilesByTag(0x2); + } + + DestroySprite(sprite); + } +} + +static void sub_80F2C58(struct Sprite *sprite) +{ + int anim = !gUnknown_083DFEC4->regionMap.zoomed ? 1 : 2; + StartSpriteAnim(sprite, anim); +} + +void sub_80F2C80(u8 arg0) +{ + gUnknown_083DFEC4->unk306 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while (sub_80F2CBC(arg0)); +} + +bool8 sub_80F2CBC(u8 arg0) +{ + switch (gUnknown_083DFEC4->unk306) + { + case 0: + sub_80F27DC(arg0); + gUnknown_083DFEC4->unk306++; + return TRUE; + case 1: + sub_80F29B8(arg0); + gUnknown_083DFEC4->unk306++; + return FALSE; + default: + return FALSE; + } +} + +static void sub_80F2D04(u8 arg0) +{ + u16 i; + + if (arg0 < 5) + { + for (i = 0; i < 2; i++) + gUnknown_083DFEC4->unk3B88[i]->callback = sub_80F2C14; + } + else + { + for (i = 0; i < 2; i++) + gUnknown_083DFEC4->unk3B90[i]->callback = sub_80F2C14; + } +} + +static void sub_80F2D6C(u8 arg0) +{ + u16 i; + + if (arg0 < 5) + { + FreeSpriteTilesByTag(0x1); + for (i = 0; i < 2; i++) + DestroySprite(gUnknown_083DFEC4->unk3B88[i]); + } + else + { + FreeSpriteTilesByTag(0x2); + for (i = 0; i < 2; i++) + DestroySprite(gUnknown_083DFEC4->unk3B90[i]); + } +} + +static void sub_80F2DD8(void) +{ + CreateRegionMapCursor(7, 7); + CreateRegionMapPlayerIcon(8, 8); + sub_80FBF94(); +} + +static void sub_80F2DF4(void) +{ + FreeRegionMapIconResources(); +} + +void sub_80F2E00(struct Sprite *sprite) +{ + sprite->pos1.x = gUnknown_083DFEC4->unk8766 + 38; +} + +static void sub_80F2E18(u8 arg0) +{ + u8 spriteId; + struct SpriteTemplate spriteTemplate; + struct SpritePalette spritePalette; + struct SpriteSheet spriteSheet; + + if (!gUnknown_083DFEC4->unk8768) + { + spriteSheet = gUnknown_083E4568; + spriteTemplate = gSpriteTemplate_83E4570; + spritePalette = gUnknown_083E4588; + + spriteSheet.data = gUnknown_083DFEC4->unkD1E4[arg0]; + spritePalette.data = gUnknown_083DFEC4->unk0[arg0]; + gUnknown_083DFEC4->unkD1DC = LoadSpritePalette(&spritePalette); + gUnknown_083DFEC4->unkD1DE = LoadSpriteSheet(&spriteSheet); + + spriteId = CreateSprite(&spriteTemplate, 38, 104, 0); + if (spriteId == MAX_SPRITES) + { + FreeSpriteTilesByTag(0x6); + FreeSpritePaletteByTag(0x6); + gUnknown_083DFEC4->unk8768 = NULL; + } + else + { + gUnknown_083DFEC4->unk8768 = &gSprites[spriteId]; + gUnknown_083DFEC4->unkD1E0 = (void *)(VRAM + 0x10000) + gUnknown_083DFEC4->unkD1DE * 32; + gUnknown_083DFEC4->unkD1DC = gUnknown_083DFEC4->unkD1DC * 16 + 0x100; + } + } + else + { + DmaCopy16Defvars(3, gUnknown_083DFEC4->unkD1E4[arg0], gUnknown_083DFEC4->unkD1E0, 0x800); + LoadPalette(gUnknown_083DFEC4->unk0[arg0], gUnknown_083DFEC4->unkD1DC, 0x20); + } +} + +void sub_80F2F48(void) +{ + if (gUnknown_083DFEC4->unk8768) + { + DestroySprite(gUnknown_083DFEC4->unk8768); + FreeSpriteTilesByTag(0x6); + FreeSpritePaletteByTag(0x6); + gUnknown_083DFEC4->unk8768 = NULL; + } +} + +void sub_80F2F7C(u8 arg0) +{ + sub_80F2E18(arg0); + gUnknown_083DFEC4->unkCED0 = gUnknown_083DFEC4->unk8768; + gUnknown_083DFEC4->unkCED0->callback = sub_80F2FEC; +} + +static void sub_80F2FB0(void) +{ + if (gUnknown_083DFEC4->unkCED0) + { + DestroySprite(gUnknown_083DFEC4->unkCED0); + FreeSpriteTilesByTag(0x6); + FreeSpritePaletteByTag(0x6); + gUnknown_083DFEC4->unkCED0 = NULL; + gUnknown_083DFEC4->unk8768 = NULL; + } +} + +static void sub_80F2FEC(struct Sprite *sprite) +{ + sprite->pos1.x = gUnknown_083DFEC4->unkD15A + 40; + sprite->pos1.y = 104; +} + +static void sub_80F3008(u8 arg0) +{ + u16 i; + u8 spriteId; + struct SpritePalette spritePalette; + struct SpriteSheet spriteSheets[3]; + + memcpy(spriteSheets, gUnknown_083E4590, sizeof(gUnknown_083E4590)); + spritePalette = gUnknown_083E45A8; + switch (arg0) + { + case 1: + case 2: + spritePalette.data = gUnknown_08E9F988; + break; + } + + LoadSpriteSheets(spriteSheets); + LoadSpritePalette(&spritePalette); + spriteId = CreateSprite(&gSpriteTemplate_83E45B8, 95, 0, 0); + if (spriteId == MAX_SPRITES) + { + gUnknown_083DFEC4->unk87CC = NULL; + } + else + { + gUnknown_083DFEC4->unk87CC = &gSprites[spriteId]; + for (i = 0; i < 2; i++) + { + spriteId = CreateSprite(&gSpriteTemplate_83E45F0, 168, i * 128 + 8, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk87D0[i] = &gSprites[spriteId]; + gSprites[spriteId].invisible = 1; + gSprites[spriteId].data[0] = 0; + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].data[2] = i == 0 ? -1 : 1; + gSprites[spriteId].data[3] = i; + gSprites[spriteId].data[4] = 1; + StartSpriteAnim(&gSprites[spriteId], i); + } + else + { + gUnknown_083DFEC4->unk87D0[i] = NULL; + } + } + } +} + +static void sub_80F3130(void) +{ + u16 i; + + if (gUnknown_083DFEC4->unk87CC) + { + DestroySprite(gUnknown_083DFEC4->unk87CC); + FreeSpriteTilesByTag(0x9); + FreeSpritePaletteByTag(0x9); + gUnknown_083DFEC4->unk87CC = NULL; + } + + for (i = 0; i < 2; i++) + { + if (gUnknown_083DFEC4->unk87D0[i]) + { + DestroySprite(gUnknown_083DFEC4->unk87D0[i]); + gUnknown_083DFEC4->unk87D0[i] = NULL; + } + } + + FreeSpriteTilesByTag(0xA); +} + +void sub_80F3190(struct Sprite *sprite) +{ + sprite->pos1.y = gUnknown_083DFEC4->unk876C * 16 + 16; +} + +void sub_80F31AC(struct Sprite *sprite) +{ + if (gUnknown_083DFEC4->unk87C9) + { + if (sprite->data[4]) + { + if (!sprite->data[3]) + sprite->invisible = gUnknown_083DFEC4->unk8770 == 0; + else + sprite->invisible = gUnknown_083DFEC4->unk8772 == gUnknown_083DFEC4->unk8774; + + sprite->data[4] = 0; + } + + if (++sprite->data[0] > 4) + { + sprite->data[0] = 0; + if (++sprite->data[1] < 5) + { + sprite->pos2.y += sprite->data[2]; + } + else + { + sprite->data[1] = 0; + sprite->pos2.y = 0; + } + } + } +} + +static void sub_80F3264(void) +{ + u16 i; + + for (i = 0; i < 2; i++) + { + if (gUnknown_083DFEC4->unk87D0[i]) + gUnknown_083DFEC4->unk87D0[i]->data[4] = 1; + } +} + +static void sub_80F3294(u8 arg0) +{ + gUnknown_083DFEC4->unk87CC->invisible = arg0; + if (gUnknown_083DFEC4->unk87C9) + { + if (arg0 == 1) + { + gUnknown_083DFEC4->unk87D0[0]->invisible = arg0; + gUnknown_083DFEC4->unk87D0[1]->invisible = arg0; + } + else + { + gUnknown_083DFEC4->unk87D0[0]->data[4] = 1; + gUnknown_083DFEC4->unk87D0[1]->data[4] = 1; + } + } +} + +void sub_80F3328(struct Sprite *sprite) +{ + if (sprite->data[0] == gUnknown_083DFEC4->unk87DC) + StartSpriteAnim(sprite, 0); + else + StartSpriteAnim(sprite, 1); +} + +static void sub_80F3360(struct Sprite *sprite) +{ + if (gUnknown_083DFEC4->unk87DC == gUnknown_083DFEC4->unk87DA - 1) + sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x4); + else + sprite->oam.paletteNum = IndexOfSpritePaletteTag(0x5); +} + +void sub_80F33A8(void) +{ + u16 i; + u8 spriteId; + struct SpriteSheet spriteSheets[4]; + struct SpritePalette spritePalettes[3]; + struct SpriteTemplate spriteTemplate; + + memcpy(spriteSheets, gUnknown_083E4628, sizeof(gUnknown_083E4628)); + memcpy(spritePalettes, gUnknown_083E4648, sizeof(gUnknown_083E4648)); + spriteTemplate = gSpriteTemplate_83E4660; + LoadSpriteSheets(spriteSheets); + LoadSpritePalettes(spritePalettes); + + for (i = 0; i < gUnknown_083DFEC4->unk87DA - 1; i++) + { + spriteId = CreateSprite(&spriteTemplate, 226, i * 20 + 8, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk87E4[i] = &gSprites[spriteId]; + gUnknown_083DFEC4->unk87E4[i]->data[0] = i; + } + else + { + gUnknown_083DFEC4->unk87E4[i] = NULL; + } + } + + spriteTemplate.tileTag = 0x4; + spriteTemplate.callback = SpriteCallbackDummy; + for (; i < 6; i++) + { + spriteId = CreateSprite(&spriteTemplate, 230, i * 20 + 8, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk87E4[i] = &gSprites[spriteId]; + gUnknown_083DFEC4->unk87E4[i]->oam.size = 0; + } + else + { + gUnknown_083DFEC4->unk87E4[i] = NULL; + } + } + + spriteTemplate.tileTag = 0x5; + spriteTemplate.callback = sub_80F3360; + spriteId = CreateSprite(&spriteTemplate, 222, i * 20 + 8, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk87E4[i] = &gSprites[spriteId]; + gUnknown_083DFEC4->unk87E4[i]->oam.shape = ST_OAM_H_RECTANGLE; + gUnknown_083DFEC4->unk87E4[i]->oam.size = 2; + } + else + { + gUnknown_083DFEC4->unk87E4[i] = NULL; + } +} + +void sub_80F357C(void) +{ + u16 i; + + for (i = 0; i < 7; i++) + { + if (gUnknown_083DFEC4->unk87E4[i]) + { + DestroySprite(gUnknown_083DFEC4->unk87E4[i]); + gUnknown_083DFEC4->unk87E4[i] = NULL; + } + } +} + +static void sub_80F35B4(void) +{ + struct Sprite *sprite; + + gUnknown_083DFEC4->unk76B0.baseTileTag = 0x1C; + gUnknown_083DFEC4->unk76B0.basePaletteTag = 0x13; + sub_80F727C(&gUnknown_083DFEC4->unk76B0); + sub_80F7404(); + sprite = sub_80F7920(27, 21, gUnknown_083E4678); + sprite->oam.priority = 3; + sprite->pos1.x = 192; + sprite->pos1.y = 32; + sprite->callback = sub_80F363C; + gUnknown_083DFEC4->unk76AC = sprite; +} + +void sub_80F3614(void) +{ + DestroySprite(gUnknown_083DFEC4->unk76AC); + FreeSpriteTilesByTag(0x1B); + FreeSpritePaletteByTag(0x15); +} + +static void sub_80F363C(struct Sprite *sprite) +{ + StartSpriteAnim(sprite, gUnknown_083DFEC4->unk8934[gUnknown_083DFEC4->unk8fe9]); +} + +void sub_80F3668(void) +{ + sub_80F7418(gUnknown_083DFEC4->unk8934[gUnknown_083DFEC4->unk8fe9], 176, 32); +} + +void sub_80F3698(void) +{ + struct UnkUsePokeblockSub *var0 = &gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC]; + gUnknown_083DFEC4->unk8934[gUnknown_083DFEC4->unk8fe9] = gUnknown_083DFEC4->unk76B0.markings; + SetMonMarkings(var0->unk1, var0->partyIdx, gUnknown_083DFEC4->unk76B0.markings); + sub_80F7470(); +} + +static void sub_80F36F0(void) +{ + gUnknown_083DFEC4->unk306 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while (sub_80F3724()); +} + +static bool8 sub_80F3724(void) +{ + switch (gUnknown_083DFEC4->unk306) + { + case 0: + LZ77UnCompWram(gUnknown_083E3D00, gUnknown_083DFEC4->unk984C); + break; + case 1: + sub_80F379C(); + gUnknown_083DFEC4->unk306++; + // fall through + case 2: + if (sub_80F37D0()) + return TRUE; + break; + default: + return FALSE; + } + + gUnknown_083DFEC4->unk306++; + return TRUE; +} + +static void sub_80F379C(void) +{ + gUnknown_083DFEC4->unkBC93 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while (sub_80F37D0()); +} + +static bool8 sub_80F37D0(void) +{ + u16 i; + u8 j, k, l, m; + + if (gUnknown_083DFEC4->unkBC93 > 11) + return FALSE; + + for (i = 0; i < 2; i++) + { + u8 *r4 = &gUnknown_083DFEC4->unk984C[gUnknown_083DFEC4->unkBC93][0]; + u8 *r5 = &gUnknown_083DFEC4->unkA44C[gUnknown_083DFEC4->unkBC93][0]; + for (j = 0; j < 4; j++) + { + CpuFastSet(r4, r5, 0x10); + r5 += 0x40; + r4 += 0x20; + for (k = 0; k < 2; k++) + { + for (l = 0; l < 8; l++) + { + r4 += 4; + for (m = 0; m < 4; m++) + { + r4 -= 1; + *r5 = (*r4 << 4) | ((*r4 >> 4) & 0xF); + r5++; + } + + r4 += 4; + } + + r4 -= 0x40; + } + + r4 += 0x60; + } + + if (++gUnknown_083DFEC4->unkBC93 > 11) + return FALSE; + } + + if (gUnknown_083DFEC4->unkBC93 > 11) + return FALSE; + + return TRUE; +} + +static void sub_80F38B8(void) +{ + gUnknown_083DFEC4->unk306 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while (sub_80F38EC()); +} + +static bool8 sub_80F38EC(void) +{ + switch (gUnknown_083DFEC4->unk306) + { + case 0: + gUnknown_083DFEC4->unk9348 = NULL; + gUnknown_083DFEC4->unkBC92 = 0; + break; + case 1: + sub_80F2E18(0); + break; + case 2: + sub_80F3970(); + gUnknown_083DFEC4->unk306++; + // fall through + case 3: + if (sub_80F39A4()) + return TRUE; + break; + default: + return FALSE; + } + + gUnknown_083DFEC4->unk306++; + return TRUE; +} + +static void sub_80F3970(void) +{ + gUnknown_083DFEC4->unkBC93 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while (sub_80F39A4()); +} + +static bool8 sub_80F39A4(void) +{ + struct SpriteSheet spriteSheet; + struct SpritePalette spritePalette; + if (gUnknown_083DFEC4->unkBC93 > 11) + return FALSE; + + spriteSheet.data = &gUnknown_083DFEC4->unkA44C[gUnknown_083DFEC4->unkBC93][0]; + spriteSheet.size = 0x200; + spriteSheet.tag = gUnknown_083DFEC4->unkBC93 + 11; + LoadSpriteSheet(&spriteSheet); + if (gUnknown_083DFEC4->unkBC93 < 5) + { + spritePalette.data = gUnknown_083E3C60[gUnknown_083DFEC4->unkBC93]; + spritePalette.tag = gUnknown_083DFEC4->unkBC93 + 10; + LoadSpritePalette(&spritePalette); + } + + if (++gUnknown_083DFEC4->unkBC93 > 11) + return FALSE; + + return TRUE; +} + +static struct Sprite *sub_80F3A3C(u16 arg0, u16 arg1) +{ + struct SpriteTemplate spriteTemplate; + u16 var0; + u8 ribbon; + u8 spriteId; + + if (arg1 < 3) + var0 = arg0 + arg1 * 9; + else + var0 = arg0 + (gUnknown_083DFEC4->unkBC8E - gUnknown_083DFEC4->unkBC8F); + + ribbon = gUnknown_083DFEC4->unkBC4C[var0]; + spriteTemplate = gSpriteTemplate_83E476C; + spriteTemplate.tileTag = gPokenavRibbonsIconGfx[ribbon][0] + 11; + spriteTemplate.paletteTag = gPokenavRibbonsIconGfx[ribbon][1] + 10; + spriteId = CreateSprite(&spriteTemplate, arg0 * 16 + 96, arg1 * 16 + 40, 2); + if (spriteId != MAX_SPRITES) + return &gSprites[spriteId]; + else + return NULL; +} + +static void sub_80F3B00(void) +{ + gUnknown_083DFEC4->unk9348 = sub_80F3A3C(gUnknown_083DFEC4->unkBC90, gUnknown_083DFEC4->unkBC91); + if (gUnknown_083DFEC4->unk9348) + { + StartSpriteAffineAnim(gUnknown_083DFEC4->unk9348, 1); + gUnknown_083DFEC4->unkBC92 = 1; + } + else + { + gUnknown_083DFEC4->unkBC92 = 0; + } +} + +static bool8 sub_80F3B58(void) +{ + if (gUnknown_083DFEC4->unkBC92) + { + gUnknown_083DFEC4->unkBC92 = !gUnknown_083DFEC4->unk9348->affineAnimEnded; + return gUnknown_083DFEC4->unkBC92; + } + else + { + return FALSE; + } +} + +static void sub_80F3B94(void) +{ + if (gUnknown_083DFEC4->unk9348) + { + StartSpriteAffineAnim(gUnknown_083DFEC4->unk9348, 2); + gUnknown_083DFEC4->unkBC92 = 1; + } + else + { + gUnknown_083DFEC4->unkBC92 = 0; + } +} + +static bool8 sub_80F3BD4(void) +{ + if (gUnknown_083DFEC4->unkBC92) + { + gUnknown_083DFEC4->unkBC92 = !gUnknown_083DFEC4->unk9348->affineAnimEnded; + if (!gUnknown_083DFEC4->unkBC92) + { + FreeOamMatrix(gUnknown_083DFEC4->unk9348->oam.matrixNum); + DestroySprite(gUnknown_083DFEC4->unk9348); + gUnknown_083DFEC4->unk9348 = NULL; + } + + return gUnknown_083DFEC4->unkBC92; + } + else + { + return FALSE; + } +} + +static void sub_80F3C2C(void) +{ + u16 i; + + if (gUnknown_083DFEC4->unk9348) + { + FreeOamMatrix(gUnknown_083DFEC4->unk9348->oam.matrixNum); + DestroySprite(gUnknown_083DFEC4->unk9348); + gUnknown_083DFEC4->unk9348 = NULL; + } + + for (i = 0; i < 12; i++) + FreeSpriteTilesByTag(i + 0xB); + + for (i = 0; i < 5; i++) + FreeSpritePaletteByTag(i + 0xA); + + sub_80F2F48(); +} + +void sub_80F3C94(void) +{ + u16 i; + struct SpriteSheet spriteSheet; + struct SpritePalette spritePalette; + + spriteSheet = gUnknown_083E4784; + spritePalette = gUnknown_083E478C; + LoadSpriteSheet(&spriteSheet); + LoadSpritePalette(&spritePalette); + for (i = 0; i < 10; i++) + gUnknown_083DFEC4->unk8800[i] = NULL; +} + +void sub_80F3CE8(void) +{ + move_anim_execute(); + FreeSpriteTilesByTag(0x17); + FreeSpritePaletteByTag(0xF); +} + +void sub_80F3D00(void) +{ + u8 spriteId; + u16 i; + u8 var1; + struct UnkUsePokeblockSub *var0 = &gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC]; + + if (!var0->unk4) + return; + + var1 = gUnknown_083DFEC4->unk8931[gUnknown_083DFEC4->unk8fe9]; + for (i = 0; i < var1 + 1; i++) + { + spriteId = CreateSprite(&gSpriteTemplate_83E4800, 0, 0, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk8800[i] = &gSprites[spriteId]; + gUnknown_083DFEC4->unk8800[i]->invisible = 1; + } + else + { + break; + } + } + + sub_80F3F20(var1, 1); +} + +void move_anim_execute(void) +{ + u16 i; + + for (i = 0; i < 10; i++) + { + if (!gUnknown_083DFEC4->unk8800[i]) + return; + + DestroySprite(gUnknown_083DFEC4->unk8800[i]); + gUnknown_083DFEC4->unk8800[i] = NULL; + } +} + +void sub_80F3DDC(struct Sprite *sprite) +{ + if (++sprite->data[1] > 60) + { + sprite->data[1] = 0; + sub_80F3F20(sprite->data[2], 0); + } +} + +static void sub_80F3E04(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + sprite->data[1] = 0; + sprite->callback = sub_80F3DDC; + } +} + +static void sub_80F3E24(struct Sprite *sprite) +{ + if (gUnknown_083DFEC4->unk8768) + { + sprite->pos1.x = gUnknown_083DFEC4->unk8768->pos1.x + + gUnknown_083DFEC4->unk8768->pos2.x + + gUnknown_083E4794[sprite->data[0]][0]; + sprite->pos1.y = gUnknown_083DFEC4->unk8768->pos1.y + + gUnknown_083DFEC4->unk8768->pos2.y + + gUnknown_083E4794[sprite->data[0]][1]; + } + else + { + sprite->pos1.x = gUnknown_083E4794[sprite->data[0]][0] + 40; + sprite->pos1.y = gUnknown_083E4794[sprite->data[0]][1] + 104; + } +} + +static void sub_80F3E9C(struct Sprite *sprite) +{ + if (sprite->data[1]) + { + if (--sprite->data[1]) + return; + + SeekSpriteAnim(sprite, 0); + sprite->invisible = 0; + } + + sub_80F3E24(sprite); + if (sprite->animEnded) + { + sprite->invisible = 1; + if (sprite->data[3] == sprite->data[2]) + { + if (sprite->data[3] == 9) + { + sub_80F3FAC(); + sprite->callback = sub_80F3E04; + } + else + { + sprite->callback = sub_80F3DDC; + } + } + else + { + sprite->callback = SpriteCallbackDummy; + } + } +} + +static void sub_80F3F20(u8 arg0, u8 arg1) +{ + u16 i; + + for (i = 0; i < 10; i++) + { + if (gUnknown_083DFEC4->unk8800[i]) + { + gUnknown_083DFEC4->unk8800[i]->data[0] = i; + gUnknown_083DFEC4->unk8800[i]->data[1] = i * 16 + 1; + gUnknown_083DFEC4->unk8800[i]->data[2] = arg0; + gUnknown_083DFEC4->unk8800[i]->data[3] = i; + + if (!arg1 || arg0 != 9) + { + gUnknown_083DFEC4->unk8800[i]->callback = sub_80F3E9C; + } + else + { + sub_80F3E24(gUnknown_083DFEC4->unk8800[i]); + sub_80F3FAC(); + gUnknown_083DFEC4->unk8800[i]->callback = sub_80F3E04; + gUnknown_083DFEC4->unk8800[i]->invisible = 0; + } + } + } +} + +static void sub_80F3FAC(void) +{ + u16 i; + + for (i = 0; i < 10; i++) + { + if (gUnknown_083DFEC4->unk8800[i]) + { + SeekSpriteAnim(gUnknown_083DFEC4->unk8800[i], 0); + gUnknown_083DFEC4->unk8800[i]->invisible = 0; + } + } +} + +static void sub_80F3FF0(void) +{ + gUnknown_083DFEC4->unk306 = 0; + if (!gUnknown_083DFEC4->unk6DAC) + while (sub_80F4024()); +} + +static bool8 sub_80F4024(void) +{ + u8 paletteIndex; + u8 spriteId; + struct SpritePalette spritePalette; + + switch (gUnknown_083DFEC4->unk306) + { + case 0: + LZ77UnCompWram(gUnknown_083E329C, gUnknown_083DFEC4->unk131E4); + break; + case 1: + { + struct SpriteSheet spriteSheet = { + .data = gUnknown_083DFEC4->unk131E4, + .size = sizeof(gUnknown_083DFEC4->unk131E4), + .tag = 0x18, + }; + LoadSpriteSheet(&spriteSheet); + break; + } + case 2: + spritePalette = gUnknown_083E4818; + LoadSpritePalette(&spritePalette); + paletteIndex = IndexOfSpritePaletteTag(0x10); + gUnknown_083DFEC4->unk308 = -3 & ~(1 << (paletteIndex + 0x10)); + break; + case 3: + spriteId = CreateSprite(&gSpriteTemplate_83E4850, 218, 14, 0); + if (spriteId != MAX_SPRITES) + { + gUnknown_083DFEC4->unk6D98 = &gSprites[spriteId]; + gUnknown_083DFEC4->unk6D98->data[0] = 0; + } + else + { + gUnknown_083DFEC4->unk6D98 = NULL; + } + + gUnknown_083DFEC4->unk306++; + return FALSE; + default: + return FALSE; + } + + gUnknown_083DFEC4->unk306++; + return TRUE; +} + +void sub_80F4138(struct Sprite *sprite) +{ + sprite->pos2.y = -gUnknown_083DFEC4->unk030C; + if (sprite->pos2.y <= -32) + { + if (sprite->data[0] == 0) + { + sprite->invisible = 1; + sprite->data[0] = 1; + } + } + else + { + if (sprite->data[0] == 1) + { + sprite->invisible = 0; + sprite->data[0] = 0; + } + } +} + +#ifdef NONMATCHING +// close, but the last DmaCopy16 is sharing the 0x400 value from the beginning of the function. +void sub_80F4194(u8 *arg0, u8 *text) +{ + u8 i; + u8 *tileBuffer; + u32 *tileBuf2; + + tileBuffer = gUnknown_083DFEC8; + DmaFill16(3, 0x1111, tileBuffer, 0x280); + DmaFill16Defvars(3, 0x1111, 0x400 + tileBuffer, 0x280); + Text_InitWindow8004E3C(&gWindowTemplate_81E70F0, tileBuffer, text); + + DmaClear16(3, tileBuffer + 0x220, 0x60); + DmaClear16(3, tileBuffer + 0x620, 0x60); + + tileBuf2 = (int *)tileBuffer + 0x80; + tileBuf2[0] &= 0x0FFFFFFF; + tileBuf2[1] &= 0x0FFFFFFF; + tileBuf2[2] &= 0x0FFFFFFF; + tileBuf2[3] &= 0x0FFFFFFF; + tileBuf2[4] &= 0x0FFFFFFF; + tileBuf2[5] &= 0x0FFFFFFF; + tileBuf2[6] &= 0x0FFFFFFF; + tileBuf2[7] &= 0x0FFFFFFF; + + tileBuf2 = (int *)tileBuffer + 0x180; + tileBuf2[0] &= 0x0FFFFFFF; + tileBuf2[1] &= 0x0FFFFFFF; + tileBuf2[2] &= 0x0FFFFFFF; + tileBuf2[3] &= 0x0FFFFFFF; + tileBuf2[4] &= 0x0FFFFFFF; + tileBuf2[5] &= 0x0FFFFFFF; + tileBuf2[6] &= 0x0FFFFFFF; + tileBuf2[7] &= 0x0FFFFFFF; + + for (i = 0; i < 5; i++) + { + DmaCopy16(3, &tileBuffer[128 * i], &arg0[i * 256], 128); + DmaCopy16(3, &tileBuffer[128 * i + 0x400], &arg0[32 * ((i * 8) + 4)], 128); + } +} +#else +NAKED +void sub_80F4194(u8 *arg0, u8 *text) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + sub sp, 0x4\n\ + adds r7, r0, 0\n\ + adds r2, r1, 0\n\ + ldr r0, _080F42A4 @ =gUnknown_083DFEC8\n\ + ldr r6, [r0] @ r6 = tileBuffer\n\ + mov r0, sp \n\ + ldr r1, _080F42A8 @ =0x00001111\n\ + adds r5, r1, 0\n\ + strh r5, [r0]\n\ + ldr r4, _080F42AC @ =0x040000d4\n\ + str r0, [r4]\n\ + str r6, [r4, 0x4]\n\ + ldr r3, _080F42B0 @ =0x81000140\n\ + str r3, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + movs r0, 0x80\n\ + lsls r0, 3\n\ + adds r1, r6, r0\n\ + mov r0, sp\n\ + strh r5, [r0]\n\ + str r0, [r4]\n\ + str r1, [r4, 0x4]\n\ + str r3, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + ldr r0, _080F42B4 @ =gWindowTemplate_81E70F0\n\ + adds r1, r6, 0\n\ + bl Text_InitWindow8004E3C\n\ + movs r3, 0x88\n\ + lsls r3, 2\n\ + adds r1, r6, r3\n\ + mov r0, sp\n\ + movs r3, 0\n\ + strh r3, [r0]\n\ + str r0, [r4]\n\ + str r1, [r4, 0x4]\n\ + ldr r2, _080F42B8 @ =0x81000030\n\ + str r2, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + movs r0, 0xC4\n\ + lsls r0, 3\n\ + adds r1, r6, r0\n\ + mov r0, sp\n\ + strh r3, [r0]\n\ + str r0, [r4]\n\ + str r1, [r4, 0x4]\n\ + str r2, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + movs r1, 0x80\n\ + lsls r1, 2\n\ + adds r2, r6, r1\n\ + ldr r0, [r2]\n\ + ldr r1, _080F42BC @ =0x0fffffff\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r0, [r2, 0x4]\n\ + ands r0, r1\n\ + str r0, [r2, 0x4]\n\ + ldr r0, [r2, 0x8]\n\ + ands r0, r1\n\ + str r0, [r2, 0x8]\n\ + ldr r0, [r2, 0xC]\n\ + ands r0, r1\n\ + str r0, [r2, 0xC]\n\ + ldr r0, [r2, 0x10]\n\ + ands r0, r1\n\ + str r0, [r2, 0x10]\n\ + ldr r0, [r2, 0x14]\n\ + ands r0, r1\n\ + str r0, [r2, 0x14]\n\ + ldr r0, [r2, 0x18]\n\ + ands r0, r1\n\ + str r0, [r2, 0x18]\n\ + ldr r0, [r2, 0x1C]\n\ + ands r0, r1\n\ + str r0, [r2, 0x1C]\n\ + movs r3, 0xC0\n\ + lsls r3, 3\n\ + adds r2, r6, r3\n\ + ldr r0, [r2]\n\ + ands r0, r1\n\ + str r0, [r2]\n\ + ldr r0, [r2, 0x4]\n\ + ands r0, r1\n\ + str r0, [r2, 0x4]\n\ + ldr r0, [r2, 0x8]\n\ + ands r0, r1\n\ + str r0, [r2, 0x8]\n\ + ldr r0, [r2, 0xC]\n\ + ands r0, r1\n\ + str r0, [r2, 0xC]\n\ + ldr r0, [r2, 0x10]\n\ + ands r0, r1\n\ + str r0, [r2, 0x10]\n\ + ldr r0, [r2, 0x14]\n\ + ands r0, r1\n\ + str r0, [r2, 0x14]\n\ + ldr r0, [r2, 0x18]\n\ + ands r0, r1\n\ + str r0, [r2, 0x18]\n\ + ldr r0, [r2, 0x1C]\n\ + ands r0, r1\n\ + str r0, [r2, 0x1C]\n\ + movs r1, 0\n\ + ldr r2, _080F42C0 @ =0x80000040\n\ +_080F4268:\n\ + lsls r0, r1, 7\n\ + adds r0, r6, r0\n\ + str r0, [r4]\n\ + lsls r0, r1, 8\n\ + adds r0, r7, r0\n\ + str r0, [r4, 0x4]\n\ + str r2, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + lsls r0, r1, 7\n\ + movs r3, 0x80\n\ + lsls r3, 3\n\ + adds r0, r3\n\ + adds r0, r6, r0\n\ + str r0, [r4]\n\ + lsls r0, r1, 3\n\ + adds r0, 0x4\n\ + lsls r0, 5\n\ + adds r0, r7, r0\n\ + str r0, [r4, 0x4]\n\ + str r2, [r4, 0x8]\n\ + ldr r0, [r4, 0x8]\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0x4\n\ + bls _080F4268\n\ + add sp, 0x4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080F42A4: .4byte gUnknown_083DFEC8\n\ +_080F42A8: .4byte 0x00001111\n\ +_080F42AC: .4byte 0x040000d4\n\ +_080F42B0: .4byte 0x81000140\n\ +_080F42B4: .4byte gWindowTemplate_81E70F0\n\ +_080F42B8: .4byte 0x81000030\n\ +_080F42BC: .4byte 0x0fffffff\n\ +_080F42C0: .4byte 0x80000040\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +static void sub_80F42C4(u8 *arg0) +{ + u16 i, tileOffset; + u8 spriteId; + struct SpriteSheet spriteSheet = { + .data = gUnknown_083DFEC4->unkD1E4[0], + .size = 0x500, + .tag = 0x1A, + }; + + sub_80F4194(gUnknown_083DFEC4->unkD1E4[0], arg0); + LoadSpriteSheet(&spriteSheet); + LoadSpritePalette(&gUnknown_083E4868); + + tileOffset = 0; + for (i = 0; i < 5; i++) + { + spriteId = CreateSprite(&gSpriteTemplate_83E4878, i * 32 + 113, 16, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.tileNum += tileOffset; + gUnknown_083DFEC4->unkCED4[i] = &gSprites[spriteId]; + } + else + { + gUnknown_083DFEC4->unkCED4[i] = NULL; + } + + tileOffset += 8; + } +} + +static void sub_80F4394(void) +{ + u16 i; + + for (i = 0; i < 5; i++) + { + if (gUnknown_083DFEC4->unkCED4[i]) + DestroySprite(gUnknown_083DFEC4->unkCED4[i]); + } + + FreeSpriteTilesByTag(0x1A); + FreeSpritePaletteByTag(0x12); +} + +void sub_80F43D4(u8 *arg0) +{ + u16 tile; + + sub_80F4194(gUnknown_083DFEC4->unkD1E4[0], arg0); + tile = GetSpriteTileStartByTag(0x1A); + if (tile != 0xFFFF) + DmaCopy32Defvars(3, gUnknown_083DFEC4->unkD1E4[0], (void *)(VRAM + 0x10000 + (tile * 32)), 0x500); +} + +static u8 *sub_80F4428(u8 *arg0, u16 arg1, u8 arg2) +{ + return sub_80F6514(arg0, arg1, arg2); +} + +static u8 *sub_80F443C(u8 *arg0, u16 arg1) +{ + return AlignInt1InMenuWindow(StringCopy(arg0, gOtherText_Number), arg1, 56, 1); +} + +static u8 *sub_80F445C(u8 *arg0, u16 arg1) +{ + u8 *buffer = AlignInt1InMenuWindow(arg0, arg1, 23, 1); + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x11; + buffer[2] = 1; + buffer += 3; + buffer[0] = CHAR_SLASH; + buffer += 1; + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x11; + buffer[2] = 1; + buffer += 3; + buffer = AlignInt1InMenuWindow(buffer, gUnknown_083DFEC4->unk8774 + 1, 50, 1); + return buffer; +} + +u32 sub_80F44B0(u16 box, u16 monIndex, int monDataField, int *text) +{ + if (box == 14) + { + if (monDataField == MON_DATA_NICKNAME || monDataField == MON_DATA_OT_NAME) + return GetMonData(&gPlayerParty[monIndex], monDataField, text); + else + return GetMonData(&gPlayerParty[monIndex], monDataField); + } + else + { + if (monDataField == MON_DATA_NICKNAME || monDataField == MON_DATA_OT_NAME) + return GetBoxMonData(&gPokemonStorage.boxes[box][monIndex], monDataField, text); + else + return GetBoxMonData(&gPokemonStorage.boxes[box][monIndex], monDataField); + } +} + +static void SetMonMarkings(u16 box, u16 monIndex, u8 markings) +{ + if (box == 14) + SetMonData(&gPlayerParty[monIndex], MON_DATA_MARKINGS, &markings); + else + SetBoxMonData(&gPokemonStorage.boxes[box][monIndex], MON_DATA_MARKINGS, &markings); +} + +static void sub_80F45A0(s16 arg0, u8 arg1) +{ + u8 box; + u8 var0 = gUnknown_083DFEC4->unk893c[arg0].unk4; + if (var0) + { + sub_80F4428(gUnknown_083DFEC4->unk8829[arg1], arg0, 0); + box = gUnknown_083DFEC4->unk893c[arg0].unk1; + if (box == 14) + AlignStringInMenuWindow(gUnknown_083DFEC4->unk88E9[arg1], gOtherText_InParty, 64, 0); + else + AlignStringInMenuWindow(gUnknown_083DFEC4->unk88E9[arg1], gPokemonStorage.boxNames[box], 64, 0); + + gUnknown_083DFEC4->unk8937[arg1] = 1; + } + else + { + AlignStringInMenuWindow(gUnknown_083DFEC4->unk8829[arg1], gEmptyString_81E72B0, 104, 0); + AlignStringInMenuWindow(gUnknown_083DFEC4->unk88E9[arg1], gEmptyString_81E72B0, 64, 0); + gUnknown_083DFEC4->unk8937[arg1] = var0; + } +} + +static void sub_80F468C(s16 arg0, u8 arg1) +{ + u16 i; + u16 box; + u16 monIndex; + + if (gUnknown_083DFEC4->unk893c[arg0].unk4) + { + box = gUnknown_083DFEC4->unk893c[arg0].unk1; + monIndex = gUnknown_083DFEC4->unk893c[arg0].partyIdx; + gUnknown_083DFEC4->unk8ff0[arg1][0] = sub_80F44B0(box, monIndex, MON_DATA_COOL, NULL); + gUnknown_083DFEC4->unk8ff0[arg1][1] = sub_80F44B0(box, monIndex, MON_DATA_TOUGH, NULL); + gUnknown_083DFEC4->unk8ff0[arg1][2] = sub_80F44B0(box, monIndex, MON_DATA_SMART, NULL); + gUnknown_083DFEC4->unk8ff0[arg1][3] = sub_80F44B0(box, monIndex, MON_DATA_CUTE, NULL); + gUnknown_083DFEC4->unk8ff0[arg1][4] = sub_80F44B0(box, monIndex, MON_DATA_BEAUTY, NULL); + + gUnknown_083DFEC4->unk8931[arg1] = sub_80F44B0(box, monIndex, MON_DATA_SHEEN, NULL) != 255 + ? sub_80F44B0(box, monIndex, MON_DATA_SHEEN, NULL) / 29 + : 9; + + gUnknown_083DFEC4->unk8934[arg1] = sub_80F44B0(box, monIndex, MON_DATA_MARKINGS, NULL); + sub_80F55AC(gUnknown_083DFEC4->unk8ff0[arg1], gUnknown_083DFEC4->unk9004[arg1]); + } + else + { + for (i = 0; i < 5; i++) + { + gUnknown_083DFEC4->unk8ff0[arg1][i] = 0; + gUnknown_083DFEC4->unk9004[arg1][i].unk0 = 0x9B; + gUnknown_083DFEC4->unk9004[arg1][i].unk2 = 0x5B; + } + } +} + +static void sub_80F4824(s16 arg0, u8 arg1) +{ + u16 species; + u32 otId; + u32 personality; + u16 box; + u16 monIndex; + + if (gUnknown_083DFEC4->unk893c[arg0].unk4) + { + box = gUnknown_083DFEC4->unk893c[arg0].unk1; + monIndex = gUnknown_083DFEC4->unk893c[arg0].partyIdx; + species = sub_80F44B0(box, monIndex, MON_DATA_SPECIES2, NULL); + otId = sub_80F44B0(box, monIndex, MON_DATA_OT_ID, NULL); + personality = sub_80F44B0(box, monIndex, MON_DATA_PERSONALITY, NULL); + + HandleLoadSpecialPokePic( + &gMonFrontPicTable[species], + gMonFrontPicCoords[species].coords, + 1, + (intptr_t)gUnknown_083DFEC4->unk131E4, + gUnknown_083DFEC4->unkD1E4[arg1], + species, + personality); + + LZ77UnCompWram(GetMonSpritePalFromOtIdPersonality(species, otId, personality), gUnknown_083DFEC4->unk0[arg1]); + gUnknown_083DFEC4->unkD1D6[arg1] = species; + } +} + +void sub_80F4900(s16 arg0, u8 arg1) +{ + sub_80F45A0(arg0, arg1); + sub_80F468C(arg0, arg1); + sub_80F4824(arg0, arg1); +} + +void sub_80F492C(void) +{ + gUnknown_083DFEC4->unk8FE4 = 0; +} + +#ifdef NONMATCHING +// registers r3/r4 are swapped +void sub_80F4944(struct UnkUsePokeblockSub *arg0) +{ + u16 i; + u16 r3; + u16 r4; + + i = 0; + r4 = gUnknown_083DFEC4->unk8FE4; + r3 = r4 / 2; + while (r3 != r4) + { + if (arg0->unk0 > gUnknown_083DFEC4->unk893c[r3].unk0) + r4 = r3; + else + i = r3 + 1; + + r3 = ((r4 - i) / 2) + i; + } + + r4 = gUnknown_083DFEC4->unk8FE4; + while (r4 > r3) + { + gUnknown_083DFEC4->unk893c[r4] = gUnknown_083DFEC4->unk893c[r4 - 1]; + r4--; + } + + gUnknown_083DFEC4->unk893c[r3] = *arg0; + gUnknown_083DFEC4->unk8FE4++; +} +#else +NAKED +void sub_80F4944(struct UnkUsePokeblockSub *arg0) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + mov r12, r0\n\ + movs r2, 0\n\ + ldr r1, _080F4978 @ =gUnknown_083DFEC4\n\ + ldr r5, [r1]\n\ + ldr r3, _080F497C @ =0x00008fe4\n\ + adds r0, r5, r3\n\ + ldrh r4, [r0]\n\ + lsrs r3, r4, 1\n\ + mov r8, r1\n\ + cmp r4, r3\n\ + beq _080F499C\n\ + adds r6, r5, 0\n\ + mov r0, r12\n\ + ldrb r5, [r0]\n\ + ldr r7, _080F4980 @ =0x0000893c\n\ +_080F4968:\n\ + lsls r0, r3, 2\n\ + adds r0, r6, r0\n\ + adds r0, r7\n\ + ldrb r0, [r0]\n\ + cmp r5, r0\n\ + bls _080F4984\n\ + adds r4, r3, 0\n\ + b _080F498A\n\ + .align 2, 0\n\ +_080F4978: .4byte gUnknown_083DFEC4\n\ +_080F497C: .4byte 0x00008fe4\n\ +_080F4980: .4byte 0x0000893c\n\ +_080F4984:\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ +_080F498A:\n\ + subs r0, r4, r2\n\ + lsrs r1, r0, 31\n\ + adds r0, r1\n\ + asrs r0, 1\n\ + adds r0, r2, r0\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r4, r3\n\ + bne _080F4968\n\ +_080F499C:\n\ + mov r1, r8\n\ + ldr r2, [r1]\n\ + ldr r1, _080F49EC @ =0x00008fe4\n\ + adds r0, r2, r1\n\ + ldrh r4, [r0]\n\ + lsls r6, r3, 2\n\ + cmp r4, r3\n\ + bls _080F49C6\n\ + ldr r0, _080F49F0 @ =0x0000893c\n\ + adds r5, r2, r0\n\ +_080F49B0:\n\ + lsls r2, r4, 2\n\ + adds r2, r5, r2\n\ + subs r1, r4, 0x1\n\ + lsls r0, r1, 2\n\ + adds r0, r5, r0\n\ + ldr r0, [r0]\n\ + str r0, [r2]\n\ + lsls r1, 16\n\ + lsrs r4, r1, 16\n\ + cmp r4, r3\n\ + bhi _080F49B0\n\ +_080F49C6:\n\ + mov r1, r8\n\ + ldr r2, [r1]\n\ + ldr r3, _080F49F0 @ =0x0000893c\n\ + adds r0, r2, r3\n\ + adds r0, r6\n\ + mov r3, r12\n\ + ldr r1, [r3]\n\ + str r1, [r0]\n\ + ldr r0, _080F49EC @ =0x00008fe4\n\ + adds r2, r0\n\ + ldrh r0, [r2]\n\ + adds r0, 0x1\n\ + strh r0, [r2]\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080F49EC: .4byte 0x00008fe4\n\ +_080F49F0: .4byte 0x0000893c\n\ .syntax divided\n"); } #endif // NONMATCHING + +void sub_80F49F4(void) +{ + u16 i; + + gUnknown_083DFEC4->unk893c[0].unk2 = 1; + for (i = 1; i < gUnknown_083DFEC4->unk8FE4; i++) + { + if (gUnknown_083DFEC4->unk893c[i].unk0 == gUnknown_083DFEC4->unk893c[i - 1].unk0) + gUnknown_083DFEC4->unk893c[i].unk2 = gUnknown_083DFEC4->unk893c[i - 1].unk2; + else + gUnknown_083DFEC4->unk893c[i].unk2 = i + 1; + } + + gUnknown_083DFEC4->unk876C = 0; + gUnknown_083DFEC4->unk8770 = 0; + gUnknown_083DFEC4->unk876E = 0; + gUnknown_083DFEC4->unk8772 = gUnknown_083DFEC4->unk8FE4 < 9 ? (gUnknown_083DFEC4->unk8FE4 - 1) : 7; + gUnknown_083DFEC4->unk8774 = gUnknown_083DFEC4->unk8FE4 - 1; + gUnknown_083DFEC4->unk87C9 = gUnknown_083DFEC4->unk8774 > 7; +} + +void sub_80F4B20(void) +{ + s16 var0; + s16 var1; + + sub_80F4900(gUnknown_083DFEC4->unk87DC, 0); + sub_80F2E18(0); + if (gUnknown_083DFEC4->unk87DA == 1) + { + gUnknown_083DFEC4->unk8fe9 = 0; + gUnknown_083DFEC4->unk8FEA = 0; + gUnknown_083DFEC4->unk8FEB = 0; + } + else + { + gUnknown_083DFEC4->unk8fe9 = 0; + gUnknown_083DFEC4->unk8FEA = 1; + gUnknown_083DFEC4->unk8FEB = 2; + + var0 = gUnknown_083DFEC4->unk87DC + 1; + if (var0 >= gUnknown_083DFEC4->unk87DA) + var0 = 0; + + var1 = gUnknown_083DFEC4->unk87DC - 1; + if (var1 < 0) + var1 = gUnknown_083DFEC4->unk87DA - 1; + + sub_80F4900(var0, 1); + sub_80F4900(var1, 2); + } +} + +void sub_80F4BD0(void) +{ + u16 i, j; + + for (i = 0, j = 0; i < gUnknown_083DFEC4->unk8828; i++) + { + if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) + { + gUnknown_083DFEC4->unk893c[j].unk1 = 14; + gUnknown_083DFEC4->unk893c[j].partyIdx = i; + gUnknown_083DFEC4->unk893c[j].unk2 = j + 1; + gUnknown_083DFEC4->unk893c[j].unk4 = 1; + j++; + } + } + + gUnknown_083DFEC4->unk893c[j].unk1 = 0; + gUnknown_083DFEC4->unk893c[j].partyIdx = 0; + gUnknown_083DFEC4->unk893c[j].unk2 = 0; + gUnknown_083DFEC4->unk893c[j].unk4 = 0; + gUnknown_083DFEC4->unk87DC = 0; + gUnknown_083DFEC4->unk87DA = j + 1; + sub_80F4B20(); + gUnknown_083DFEC4->unk87CB = 1; +} + +static void sub_80F4CF0(void) +{ + gUnknown_083DFEC4->unk87DC = gUnknown_083DFEC4->unk876E; + sub_80F4B20(); + + if (gUnknown_083DFEC4->unk8774 == 0) + gUnknown_083DFEC4->unk87CB = 0; + else + gUnknown_083DFEC4->unk87CB = 1; +} + +static void sub_80F4D44(void) +{ + gUnknown_083DFEC4->unk8FE6 = 0; + gUnknown_083DFEC4->unk8FE7 = 0; + sub_80F492C(); + + if (!gUnknown_083DFEC4->unk6DAC) + while (sub_80F4D88()); +} + +static bool8 sub_80F4D88(void) +{ + u16 i; + register int mask asm("r3"); // FIXME + int nextValue; + struct UnkUsePokeblockSub var0; + + switch (gUnknown_083DFEC4->unk8FE6) + { + default: + var0.unk4 = 1; + for (i = 0; i < 15; i++) + { + + if (GetBoxMonData(&gPokemonStorage.boxes[gUnknown_083DFEC4->unk8FE6][gUnknown_083DFEC4->unk8FE7], MON_DATA_SPECIES) + && !GetBoxMonData(&gPokemonStorage.boxes[gUnknown_083DFEC4->unk8FE6][gUnknown_083DFEC4->unk8FE7], MON_DATA_IS_EGG)) + { + var0.unk1 = gUnknown_083DFEC4->unk8FE6; + var0.partyIdx = gUnknown_083DFEC4->unk8FE7; + var0.unk0 = GetBoxMonData( + &gPokemonStorage.boxes[gUnknown_083DFEC4->unk8FE6][gUnknown_083DFEC4->unk8FE7], + gUnknown_083DFEC4->unk87D8); + sub_80F4944(&var0); + } + + gUnknown_083DFEC4->unk8FE7++; + mask = 0xFF; + if (gUnknown_083DFEC4->unk8FE7 == 30) + { + gUnknown_083DFEC4->unk8FE7 = 0; + nextValue = gUnknown_083DFEC4->unk8FE6 + 1; + gUnknown_083DFEC4->unk8FE6 = nextValue; + if ((nextValue & mask) == 14) + break; + } + } + break; + case 14: + var0.unk4 = 1; + var0.unk1 = 14; + for (i = 0; i < gUnknown_083DFEC4->unk8828; i++) + { + if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) + { + var0.partyIdx = i; + var0.unk0 = GetMonData(&gPlayerParty[i], gUnknown_083DFEC4->unk87D8); + sub_80F4944(&var0); + } + } + + sub_80F49F4(); + gUnknown_083DFEC4->unk87DA = gUnknown_083DFEC4->unk8FE4; + gUnknown_083DFEC4->unk8FE6++; + break; + case 15: + return FALSE; + } + + return TRUE; +} + +void sub_80F4F78(void) +{ + sub_80F53EC(gUnknown_083DFEC4->unk9040, gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9]); + sub_80F5504(); +} + +bool8 sub_80F4FB4(void) +{ + bool8 var0 = sub_80F5504(); + bool8 var1 = sub_80F170C(); + return var0 || var1; +} + +void sub_80F4FDC(void) +{ + if (gUnknown_083DFEC4->unk76AA || gUnknown_083DFEC4->unk87DC != gUnknown_083DFEC4->unk8828) + sub_80F53EC(gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9], gUnknown_083DFEC4->unk9040); +} + +bool8 sub_80F5038(void) +{ + bool8 var0 = sub_80F5504(); + bool8 var1 = sub_80F173C(); + return var0 || var1; +} + +void sub_80F5060(u8 arg0) +{ + u16 var0; + u8 var1; + u8 var2; + + if (arg0) + var0 = gUnknown_083DFEC4->unk8FEB; + else + var0 = gUnknown_083DFEC4->unk8FEA; + + sub_80F53EC(gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9], gUnknown_083DFEC4->unk9004[var0]); + var1 = gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk4; + if (arg0) + { + gUnknown_083DFEC4->unk8FEB = gUnknown_083DFEC4->unk8FEA; + gUnknown_083DFEC4->unk8FEA = gUnknown_083DFEC4->unk8fe9; + gUnknown_083DFEC4->unk8fe9 = var0; + gUnknown_083DFEC4->unk8FEC = gUnknown_083DFEC4->unk8FEB; + + gUnknown_083DFEC4->unk87DC = gUnknown_083DFEC4->unk87DC + ? gUnknown_083DFEC4->unk87DC - 1 + : gUnknown_083DFEC4->unk87DA - 1; + gUnknown_083DFEC4->unk8FEE = gUnknown_083DFEC4->unk87DC + ? gUnknown_083DFEC4->unk87DC - 1 + : gUnknown_083DFEC4->unk87DA - 1; + } + else + { + gUnknown_083DFEC4->unk8FEA = gUnknown_083DFEC4->unk8FEB; + gUnknown_083DFEC4->unk8FEB = gUnknown_083DFEC4->unk8fe9; + gUnknown_083DFEC4->unk8fe9 = var0; + gUnknown_083DFEC4->unk8FEC = gUnknown_083DFEC4->unk8FEA; + + gUnknown_083DFEC4->unk87DC = (gUnknown_083DFEC4->unk87DC < gUnknown_083DFEC4->unk87DA - 1) + ? gUnknown_083DFEC4->unk87DC + 1 + : 0; + gUnknown_083DFEC4->unk8FEE = (gUnknown_083DFEC4->unk87DC < gUnknown_083DFEC4->unk87DA - 1) + ? gUnknown_083DFEC4->unk87DC + 1 + : 0; + } + + var2 = gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk4; + if (!var1) + gUnknown_083DFEC4->unk87E0 = sub_80F5264; + else if (!var2) + gUnknown_083DFEC4->unk87E0 = sub_80F52F8; + else + gUnknown_083DFEC4->unk87E0 = sub_80F5364; + + gUnknown_083DFEC4->unk87DE = 0; +} + +bool8 gpu_sync_bg_show(void) +{ + return gUnknown_083DFEC4->unk87E0(); +} + +static bool8 sub_80F5264(void) +{ + switch (gUnknown_083DFEC4->unk87DE) + { + case 0: + sub_80F2E18(gUnknown_083DFEC4->unk8fe9); + sub_80F01E0(gUnknown_083DFEC4->unk8fe9); + gUnknown_083DFEC4->unk87DE++; + // fall through + case 1: + if (!sub_80F4FB4()) + { + sub_80F4900(gUnknown_083DFEC4->unk8FEE, gUnknown_083DFEC4->unk8FEC); + gUnknown_083DFEC4->unk87DE++; + } + break; + case 2: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_80F52F8(void) +{ + switch (gUnknown_083DFEC4->unk87DE) + { + case 0: + if (!sub_80F5038()) + { + sub_80F01E0(gUnknown_083DFEC4->unk8fe9); + sub_80F4900(gUnknown_083DFEC4->unk8FEE, gUnknown_083DFEC4->unk8FEC); + gUnknown_083DFEC4->unk87DE++; + } + break; + case 1: + return FALSE; + } + + return TRUE; +} + +static bool8 sub_80F5364(void) +{ + switch (gUnknown_083DFEC4->unk87DE) + { + case 0: + sub_80F5504(); + if (!sub_80F173C()) + { + sub_80F2E18(gUnknown_083DFEC4->unk8fe9); + sub_80F01E0(gUnknown_083DFEC4->unk8fe9); + gUnknown_083DFEC4->unk87DE++; + } + break; + case 1: + if (!sub_80F4FB4()) + gUnknown_083DFEC4->unk87DE++; + break; + case 2: + sub_80F4900(gUnknown_083DFEC4->unk8FEE, gUnknown_083DFEC4->unk8FEC); + return FALSE; + } + + return TRUE; +} + +static void sub_80F53EC(struct UnkPokenav11 *arg0, struct UnkPokenav11 *arg1) +{ + u16 i, j; + int r5; + int r6; + + for (i = 0; i < 5; i++) + { + r5 = arg0[i].unk0 << 8; + r6 = ((arg1[i].unk0 - arg0[i].unk0) << 8) / 10; + for (j = 0; j < 9; j++) + { + gUnknown_083DFEC4->unk9054[j][i].unk0 = (r5 >> 8) + ((r5 >> 7) & 1); + r5 += r6; + } + + gUnknown_083DFEC4->unk9054[j][i].unk0 = arg1[i].unk0; + r5 = arg0[i].unk2 << 8; + r6 = ((arg1[i].unk2 - arg0[i].unk2) << 8) / 10; + for (j = 0; j < 9; j++) + { + gUnknown_083DFEC4->unk9054[j][i].unk2 = (r5 >> 8) + ((r5 >> 7) & 1); + r5 += r6; + } + + gUnknown_083DFEC4->unk9054[j][i].unk2 = arg1[i].unk2; + } + + gUnknown_083DFEC4->unk9342 = 0; +} + +static bool8 sub_80F5504(void) +{ + if (gUnknown_083DFEC4->unk9342 < 10) + { + sub_80F556C(gUnknown_083DFEC4->unk9054[gUnknown_083DFEC4->unk9342++]); + return gUnknown_083DFEC4->unk9342 != 10; + } + else + { + return FALSE; + } +} + +void sub_80F5550(struct UnkPokenav11 *arg0, struct UnkPokenav11 *arg1) +{ + sub_80F53EC(arg0, arg1); +} + +bool8 sub_80F555C(void) +{ + return sub_80F5504(); +} + +void sub_80F556C(struct UnkPokenav11 *arg0) +{ + u16 i; + + for (i = 0; i < 5; i++) + gUnknown_083DFEC4->unk911C[i] = arg0[i]; + + gUnknown_083DFEC4->unk9344 = 1; +} diff --git a/src/record_mixing.c b/src/record_mixing.c index 50ef21139..374e73d2e 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -36,8 +36,8 @@ static u8 gUnknown_0300071C[4]; void *recordMixingSecretBases = &gSaveBlock1.secretBases; void *recordMixingTvShows = &gSaveBlock1.tvShows; -void *gUnknown_083D0274 = &gSaveBlock1.pokeNews; -void *gUnknown_083D0278 = &gSaveBlock1.mauvilleMan; +void *recordMixingPokeNews = &gSaveBlock1.pokeNews; +void *recordMixingMauvilleMan = &gSaveBlock1.mauvilleMan; void *recordMixingEasyChatPairs = &gSaveBlock1.easyChatPairs; struct RecordMixingDayCareMail *gDayCareMailPlayerRecord = &gDayCareMailRecord; struct BattleTowerRecord *gBattleTowerPlayerRecord = &gSaveBlock2.battleTower.playerRecord; @@ -51,10 +51,10 @@ void sub_80B929C(void) struct PlayerRecords { - struct SecretBaseRecord secretBases[20]; - TVShow tvShows[25]; - u8 filler1004[0x40]; - u8 filler1044[0x40]; + struct SecretBaseRecord secretBases[SECRET_BASES_COUNT]; + TVShow tvShows[TV_SHOWS_COUNT]; + struct PokeNews pokeNews[POKE_NEWS_COUNT]; + union MauvilleMan mauvilleMan; struct EasyChatPair easyChatPairs[5]; struct RecordMixingDayCareMail daycareMailRecord; struct BattleTowerRecord battleTowerRecord; @@ -68,8 +68,8 @@ void RecordMixing_PrepareExchangePacket(void) memcpy(ewram_2018000.secretBases, recordMixingSecretBases, sizeof(ewram_2018000.secretBases)); memcpy(ewram_2018000.tvShows, recordMixingTvShows, sizeof(ewram_2018000.tvShows)); - memcpy(ewram_2018000.filler1004, gUnknown_083D0274, sizeof(ewram_2008000.filler1004)); - memcpy(ewram_2018000.filler1044, gUnknown_083D0278, sizeof(ewram_2008000.filler1044)); + memcpy(ewram_2018000.pokeNews, recordMixingPokeNews, sizeof(ewram_2008000.pokeNews)); + memcpy(&ewram_2018000.mauvilleMan, recordMixingMauvilleMan, sizeof(ewram_2008000.mauvilleMan)); memcpy(ewram_2018000.easyChatPairs, recordMixingEasyChatPairs, sizeof(ewram_2018000.easyChatPairs)); gDayCareMailRecord.mail[0] = gSaveBlock1.daycare.misc.mail[0]; gDayCareMailRecord.mail[1] = gSaveBlock1.daycare.misc.mail[1]; @@ -85,8 +85,8 @@ void RecordMixing_ReceiveExchangePacket(u32 a) { sub_80BD674(ewram_2008000.secretBases, sizeof(struct PlayerRecords), a); sub_80BFD44((u8 *)ewram_2008000.tvShows, sizeof(struct PlayerRecords), a); - sub_80C0514(ewram_2008000.filler1004, sizeof(struct PlayerRecords), a); - sub_80B9B1C(ewram_2008000.filler1044, sizeof(struct PlayerRecords), a); + sub_80C0514(ewram_2008000.pokeNews, sizeof(struct PlayerRecords), a); + sub_80B9B1C((u8 *)&ewram_2008000.mauvilleMan, sizeof(struct PlayerRecords), a); sub_80FA4E4(ewram_2008000.easyChatPairs, sizeof(struct PlayerRecords), a); sub_80B9C6C((u8 *)&ewram_2008000.daycareMailRecord, sizeof(struct PlayerRecords), a, ewram_2008000.tvShows); sub_80B9B70(&ewram_2008000.battleTowerRecord, sizeof(struct PlayerRecords), a); @@ -439,7 +439,7 @@ void sub_80B9B1C(u8 *a, size_t size, u8 index) sub_80B9A88(arr); //Probably not how it was originally written, but this matches. - memcpy(a + index * size, (ptr = gUnknown_083D0278), 0x40); + memcpy(a + index * size, (ptr = recordMixingMauvilleMan), 0x40); memcpy(ptr, a + arr[index] * size, 0x40); sub_80F7F30(); } diff --git a/src/region_map.c b/src/region_map.c index 74062f435..e9ae4599a 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -19,6 +19,8 @@ #include "text.h" #include "trig.h" #include "ewram.h" +#include "heal_location.h" +#include "constants/heal_locations.h" #define MAP_WIDTH 28 #define MAP_HEIGHT 15 @@ -1260,58 +1262,58 @@ static const u8 sFlyRegionMapFrame_TilemapLZ[] = INCBIN_U8("graphics/pokenav/map static const u16 sFlyTargetIcons_Pal[] = INCBIN_U16("graphics/pokenav/fly_target_icons.gbapal"); static const u8 sFlyTargetIcons_ImageLZ[] = INCBIN_U8("graphics/pokenav/fly_target_icons.4bpp.lz"); -static const u8 sUnknown_083E7920[][3] = -{ - {0, 9, 1}, - {0, 10, 14}, - {0, 11, 15}, - {0, 12, 16}, - {0, 13, 17}, - {0, 14, 18}, - {0, 15, 19}, - {0, 0, 3}, - {0, 1, 4}, - {0, 2, 5}, - {0, 3, 6}, - {0, 4, 7}, - {0, 5, 8}, - {0, 6, 9}, - {0, 7, 10}, - {0, 8, 11}, - {0, 16, 0}, - {0, 17, 0}, - {0, 18, 0}, - {0, 19, 0}, - {0, 20, 0}, - {0, 21, 0}, - {0, 22, 0}, - {0, 23, 0}, - {0, 24, 0}, - {0, 25, 0}, - {0, 26, 0}, - {0, 27, 0}, - {0, 28, 0}, - {0, 29, 0}, - {0, 30, 0}, - {0, 31, 0}, - {0, 32, 0}, - {0, 33, 0}, - {0, 34, 0}, - {0, 35, 0}, - {0, 36, 0}, - {0, 37, 0}, - {0, 38, 0}, - {0, 39, 0}, - {0, 40, 0}, - {0, 41, 0}, - {0, 42, 0}, - {0, 43, 0}, - {0, 44, 0}, - {0, 45, 0}, - {0, 46, 0}, - {0, 47, 0}, - {0, 48, 0}, - {0, 49, 0}, +static const u8 sMapHealLocations[][3] = +{ + {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F}, + {MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), HEAL_LOCATION_OLDALE_TOWN}, + {MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), HEAL_LOCATION_DEWFORD_TOWN}, + {MAP_GROUP(LAVARIDGE_TOWN), MAP_NUM(LAVARIDGE_TOWN), HEAL_LOCATION_LAVARIDGE_TOWN}, + {MAP_GROUP(FALLARBOR_TOWN), MAP_NUM(FALLARBOR_TOWN), HEAL_LOCATION_FALLARBOR_TOWN}, + {MAP_GROUP(VERDANTURF_TOWN), MAP_NUM(VERDANTURF_TOWN), HEAL_LOCATION_VERDANTURF_TOWN}, + {MAP_GROUP(PACIFIDLOG_TOWN), MAP_NUM(PACIFIDLOG_TOWN), HEAL_LOCATION_PACIFIDLOG_TOWN}, + {MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), HEAL_LOCATION_PETALBURG_CITY}, + {MAP_GROUP(SLATEPORT_CITY), MAP_NUM(SLATEPORT_CITY), HEAL_LOCATION_SLATEPORT_CITY}, + {MAP_GROUP(MAUVILLE_CITY), MAP_NUM(MAUVILLE_CITY), HEAL_LOCATION_MAUVILLE_CITY}, + {MAP_GROUP(RUSTBORO_CITY), MAP_NUM(RUSTBORO_CITY), HEAL_LOCATION_RUSTBORO_CITY}, + {MAP_GROUP(FORTREE_CITY), MAP_NUM(FORTREE_CITY), HEAL_LOCATION_FORTREE_CITY}, + {MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), HEAL_LOCATION_LILYCOVE_CITY}, + {MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), HEAL_LOCATION_MOSSDEEP_CITY}, + {MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), HEAL_LOCATION_SOOTOPOLIS_CITY}, + {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), HEAL_LOCATION_EVER_GRANDE_CITY_1}, + {MAP_GROUP(ROUTE101), MAP_NUM(ROUTE101), 0}, + {MAP_GROUP(ROUTE102), MAP_NUM(ROUTE102), 0}, + {MAP_GROUP(ROUTE103), MAP_NUM(ROUTE103), 0}, + {MAP_GROUP(ROUTE104), MAP_NUM(ROUTE104), 0}, + {MAP_GROUP(ROUTE105), MAP_NUM(ROUTE105), 0}, + {MAP_GROUP(ROUTE106), MAP_NUM(ROUTE106), 0}, + {MAP_GROUP(ROUTE107), MAP_NUM(ROUTE107), 0}, + {MAP_GROUP(ROUTE108), MAP_NUM(ROUTE108), 0}, + {MAP_GROUP(ROUTE109), MAP_NUM(ROUTE109), 0}, + {MAP_GROUP(ROUTE110), MAP_NUM(ROUTE110), 0}, + {MAP_GROUP(ROUTE111), MAP_NUM(ROUTE111), 0}, + {MAP_GROUP(ROUTE112), MAP_NUM(ROUTE112), 0}, + {MAP_GROUP(ROUTE113), MAP_NUM(ROUTE113), 0}, + {MAP_GROUP(ROUTE114), MAP_NUM(ROUTE114), 0}, + {MAP_GROUP(ROUTE115), MAP_NUM(ROUTE115), 0}, + {MAP_GROUP(ROUTE116), MAP_NUM(ROUTE116), 0}, + {MAP_GROUP(ROUTE117), MAP_NUM(ROUTE117), 0}, + {MAP_GROUP(ROUTE118), MAP_NUM(ROUTE118), 0}, + {MAP_GROUP(ROUTE119), MAP_NUM(ROUTE119), 0}, + {MAP_GROUP(ROUTE120), MAP_NUM(ROUTE120), 0}, + {MAP_GROUP(ROUTE121), MAP_NUM(ROUTE121), 0}, + {MAP_GROUP(ROUTE122), MAP_NUM(ROUTE122), 0}, + {MAP_GROUP(ROUTE123), MAP_NUM(ROUTE123), 0}, + {MAP_GROUP(ROUTE124), MAP_NUM(ROUTE124), 0}, + {MAP_GROUP(ROUTE125), MAP_NUM(ROUTE125), 0}, + {MAP_GROUP(ROUTE126), MAP_NUM(ROUTE126), 0}, + {MAP_GROUP(ROUTE127), MAP_NUM(ROUTE127), 0}, + {MAP_GROUP(ROUTE128), MAP_NUM(ROUTE128), 0}, + {MAP_GROUP(ROUTE129), MAP_NUM(ROUTE129), 0}, + {MAP_GROUP(ROUTE130), MAP_NUM(ROUTE130), 0}, + {MAP_GROUP(ROUTE131), MAP_NUM(ROUTE131), 0}, + {MAP_GROUP(ROUTE132), MAP_NUM(ROUTE132), 0}, + {MAP_GROUP(ROUTE133), MAP_NUM(ROUTE133), 0}, + {MAP_GROUP(ROUTE134), MAP_NUM(ROUTE134), 0}, }; static const u8 *const sEverGrandeCityAreaNames[] = @@ -1717,22 +1719,22 @@ void sub_80FC69C(void) switch (sFlyDataPtr->regionMap.mapSectionId) { case MAPSEC_SOUTHERN_ISLAND: - sub_8053538(22); + sub_8053538(HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR); break; case MAPSEC_BATTLE_TOWER: - sub_8053538(21); + sub_8053538(HEAL_LOCATION_BATTLE_TOWER_OUTSIDE); break; case MAPSEC_LITTLEROOT_TOWN: - sub_8053538((gSaveBlock2.playerGender == MALE) ? 12 : 13); + sub_8053538((gSaveBlock2.playerGender == MALE) ? HEAL_LOCATION_LITTLEROOT_TOWN_1 : HEAL_LOCATION_LITTLEROOT_TOWN_2); break; case MAPSEC_EVER_GRANDE_CITY: - sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && sFlyDataPtr->regionMap.everGrandeCityArea == 0) ? 20 : 11); + sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && sFlyDataPtr->regionMap.everGrandeCityArea == 0) ? HEAL_LOCATION_EVER_GRANDE_CITY_2 : HEAL_LOCATION_EVER_GRANDE_CITY_1); break; default: - if (sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][2] != 0) - sub_8053538(sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][2]); + if (sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][2] != 0) + sub_8053538(sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][2]); else - warp1_set_2(sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][0], sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][1], -1); + warp1_set_2(sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][0], sMapHealLocations[sFlyDataPtr->regionMap.mapSectionId][1], -1); break; } sub_80865BC(); @@ -432,7 +432,7 @@ void ClearTVShowData(void) { u8 showidx; u8 extradataidx; - for (showidx=0; showidx<25; showidx++) { + for (showidx=0; showidx<TV_SHOWS_COUNT; showidx++) { gSaveBlock1.tvShows[showidx].common.kind = 0; gSaveBlock1.tvShows[showidx].common.active = 0; for (extradataidx=0; extradataidx<34; extradataidx++) { @@ -1341,7 +1341,7 @@ int sub_80BEBC8(struct PokeNews *pokeNews) { s8 i; - for (i = 0; i < 16; i++) + for (i = 0; i < POKE_NEWS_COUNT; i++) { if (pokeNews[i].kind == 0) return i; @@ -1353,7 +1353,7 @@ void sub_80BEBF4(void) { u8 i; - for (i = 0; i < 16; i++) + for (i = 0; i < POKE_NEWS_COUNT; i++) sub_80BEC10(i); } @@ -1372,7 +1372,7 @@ void sub_80BEC40(void) { if (gSaveBlock1.pokeNews[i].kind == 0) { - for (j = i + 1; j < 16; j++) + for (j = i + 1; j < POKE_NEWS_COUNT; j++) { if (gSaveBlock1.pokeNews[j].kind != 0) { @@ -1388,7 +1388,7 @@ void sub_80BEC40(void) u8 FindAnyTVNewsOnTheAir(void) { u8 i; - for (i = 0; i < 16; i++) + for (i = 0; i < POKE_NEWS_COUNT; i++) { if (gSaveBlock1.pokeNews[i].kind != 0 && gSaveBlock1.pokeNews[i].state == 1 @@ -1432,7 +1432,7 @@ bool8 GetPriceReduction(u8 arg0) if (arg0 == 0) return FALSE; - for (i=0; i<16; i++) + for (i=0; i<POKE_NEWS_COUNT; i++) { if (gSaveBlock1.pokeNews[i].kind == arg0) { @@ -1475,7 +1475,7 @@ bool8 sub_80BEE48(u8 arg0) if (arg0 == 0) return TRUE; - for (i=0; i<16; i++) + for (i=0; i<POKE_NEWS_COUNT; i++) { if (gSaveBlock1.pokeNews[i].kind == arg0) return TRUE; @@ -1487,7 +1487,7 @@ void sub_80BEE84(u16 var0) { u8 i; - for (i=0; i<16; i++) + for (i=0; i<POKE_NEWS_COUNT; i++) { if (gSaveBlock1.pokeNews[i].kind) { @@ -2189,11 +2189,11 @@ void sub_80BFD20(void) typedef union ewramStruct_02007000 { - TVShow tvshows[4][25]; - struct PokeNews pokeNews[4][16]; + TVShow tvshows[4][TV_SHOWS_COUNT]; + struct PokeNews pokeNews[4][POKE_NEWS_COUNT]; } ewramStruct_02007000; -void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]); +void sub_80BFE24(TVShow arg0[TV_SHOWS_COUNT], TVShow arg1[TV_SHOWS_COUNT], TVShow arg2[TV_SHOWS_COUNT], TVShow arg3[TV_SHOWS_COUNT]); void sub_80C04A0(void); void sub_80C01D4(void); @@ -2205,7 +2205,7 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) ewramStruct_02007000 *ewramTVShows; for (i = 0; i < 4; i++) - memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], 25 * sizeof(TVShow)); + memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], TV_SHOWS_COUNT * sizeof(TVShow)); ewramTVShows = &gUnknown_02007000; switch (arg2) { @@ -2230,12 +2230,12 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) } s8 sub_80C019C(TVShow tvShows[]); -bool8 sub_80BFF68(TVShow * tv1[25], TVShow * tv2[25], u8 idx); +bool8 sub_80BFF68(TVShow * tv1[TV_SHOWS_COUNT], TVShow * tv2[TV_SHOWS_COUNT], u8 idx); u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx); u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx); u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx); -void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]) +void sub_80BFE24(TVShow arg0[TV_SHOWS_COUNT], TVShow arg1[TV_SHOWS_COUNT], TVShow arg2[TV_SHOWS_COUNT], TVShow arg3[TV_SHOWS_COUNT]) { u8 i, j; TVShow **argslist[4]; @@ -2274,7 +2274,7 @@ void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[ } } -bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) +bool8 sub_80BFF68(TVShow * arg1[TV_SHOWS_COUNT], TVShow * arg2[TV_SHOWS_COUNT], u8 idx) { u8 value; u8 switchval; @@ -2677,11 +2677,11 @@ void sub_80C04A0(void) sub_80BF55C(gSaveBlock1.tvShows, showIdx+5); } -void sub_80C05C4(struct PokeNews[16], struct PokeNews[16], struct PokeNews[16], struct PokeNews[16]); +void sub_80C05C4(struct PokeNews[POKE_NEWS_COUNT], struct PokeNews[POKE_NEWS_COUNT], struct PokeNews[POKE_NEWS_COUNT], struct PokeNews[POKE_NEWS_COUNT]); void sub_80C0750(void); void sub_80C0788(void); -s8 sub_80C0730(struct PokeNews[16], u8); -void sub_80C06BC(struct PokeNews *[16], struct PokeNews *[16]); +s8 sub_80C0730(struct PokeNews[POKE_NEWS_COUNT], u8); +void sub_80C06BC(struct PokeNews *[POKE_NEWS_COUNT], struct PokeNews *[POKE_NEWS_COUNT]); void sub_80C0514(void *a0, u32 a1, u8 a2) { @@ -2710,7 +2710,7 @@ void sub_80C0514(void *a0, u32 a1, u8 a2) sub_80C0788(); } -void sub_80C05C4(struct PokeNews a0[16], struct PokeNews a1[16], struct PokeNews a2[16], struct PokeNews a3[16]) +void sub_80C05C4(struct PokeNews a0[POKE_NEWS_COUNT], struct PokeNews a1[POKE_NEWS_COUNT], struct PokeNews a2[POKE_NEWS_COUNT], struct PokeNews a3[POKE_NEWS_COUNT]) { u8 i; u8 j; @@ -2722,7 +2722,7 @@ void sub_80C05C4(struct PokeNews a0[16], struct PokeNews a1[16], struct PokeNews arglist[2] = &a2; arglist[3] = &a3; gUnknown_03000721 = GetLinkPlayerCount(); - for (i = 0; i < 16; i++) + for (i = 0; i < POKE_NEWS_COUNT; i++) { for (j = 0; j < gUnknown_03000721; j++) { @@ -2740,7 +2740,7 @@ void sub_80C05C4(struct PokeNews a0[16], struct PokeNews a1[16], struct PokeNews } } -void sub_80C06BC(struct PokeNews *arg0[16], struct PokeNews *arg1[16]) +void sub_80C06BC(struct PokeNews *arg0[POKE_NEWS_COUNT], struct PokeNews *arg1[POKE_NEWS_COUNT]) { struct PokeNews *str0; struct PokeNews *str1; @@ -2757,7 +2757,7 @@ bool8 sub_80C06E8(struct PokeNews *arg0, struct PokeNews *arg1, s8 arg2) if (arg1->kind == 0) return FALSE; - for (i = 0; i < 16; i++) + for (i = 0; i < POKE_NEWS_COUNT; i++) { if (arg0[i].kind == arg1->kind) return FALSE; @@ -2779,7 +2779,7 @@ void sub_80C0750(void) { u8 i; - for (i = 0; i < 16; i++) + for (i = 0; i < POKE_NEWS_COUNT; i++) { if (gSaveBlock1.pokeNews[i].kind > 3) sub_80BEC10(i); @@ -2793,7 +2793,7 @@ void sub_80C0788(void) if (FlagGet(FLAG_SYS_GAME_CLEAR) != 1) { - for (i = 0; i < 16; i++) + for (i = 0; i < POKE_NEWS_COUNT; i++) gSaveBlock1.pokeNews[i].state = 0; } } diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index bdf6f4a44..c8506fbcf 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -141,7 +141,7 @@ void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) gUnknown_02039304 = &gUnknown_083DFEC4->unkD164; gUnknown_02039304->pokeblock = pokeblock; gUnknown_02039304->callback = callback; - gUnknown_083DFEC4->unkD162[0] = 2; + gUnknown_083DFEC4->unkD162 = 2; launch_c3_walk_stairs_and_run_once(sub_8136294); SetMainCallback2(sub_8136244); } @@ -152,7 +152,7 @@ static void sub_8136174(void) gUnknown_02039304->callback = gUnknown_02039308; gPokeblockMonID = sub_81370E4(gPokeblockMonID); gUnknown_02039304->unk56 = gPokeblockMonID < 4 ? 0 : 1; - gUnknown_083DFEC4->unkD162[0] = 2; + gUnknown_083DFEC4->unkD162 = 2; launch_c3_walk_stairs_and_run_once(sub_8136294); SetMainCallback2(sub_81361E4); } @@ -243,7 +243,7 @@ static void sub_8136294(void) case 6: gUnknown_083DFEC4->unk76AA = 0; gUnknown_083DFEC4->unk87E0 = NULL; - gUnknown_083DFEC4->unk030C.val = 0x20; + gUnknown_083DFEC4->unk030C = 0x20; gUnknown_02039304->unk50++; break; case 7: @@ -285,7 +285,7 @@ static void sub_8136294(void) break; case 13: sub_80F2E18(0); - gUnknown_083DFEC4->unk8768->unk26 = 0xffd8; + gUnknown_083DFEC4->unk8768->pos2.y = 0xffd8; gUnknown_02039304->unk50++; break; case 14: @@ -317,7 +317,7 @@ static void sub_8136294(void) } break; case 19: - sub_80F556C(gUnknown_083DFEC4->unk9004); + sub_80F556C(gUnknown_083DFEC4->unk9004[0]); gUnknown_02039304->unk50++; break; case 20: |