diff options
author | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-10-25 05:57:13 +0800 |
---|---|---|
committer | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-10-25 05:57:26 +0800 |
commit | 631eccb92ddbbac3630ebbcad84c3557450577a2 (patch) | |
tree | 6d612c84bc23695783d0e55d1e28c51e6d13f4f4 | |
parent | b4692071218344995fed976ea1023df4702caa9e (diff) |
thru OakOldManHandleSwitchInAnim
-rw-r--r-- | asm/battle_controller_oak.s | 4905 | ||||
-rw-r--r-- | data/data_83FECCC.s | 3 | ||||
-rw-r--r-- | include/battle.h | 4 | ||||
-rw-r--r-- | include/battle_anim.h | 2 | ||||
-rw-r--r-- | include/item.h | 1 | ||||
-rw-r--r-- | include/item_menu.h | 1 | ||||
-rw-r--r-- | include/strings.h | 11 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/battle_controller_oak_old_man.c | 1556 | ||||
-rw-r--r-- | src/battle_controller_opponent.c | 6 | ||||
-rw-r--r-- | src/battle_controller_player.c | 3 |
11 files changed, 1589 insertions, 4905 deletions
diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s index 1adc98b52..436e1b051 100644 --- a/asm/battle_controller_oak.s +++ b/asm/battle_controller_oak.s @@ -4,4892 +4,7 @@ .syntax unified .text - - thumb_func_start nullsub_81 -nullsub_81: @ 80E75AC - bx lr - thumb_func_end nullsub_81 - - thumb_func_start SetControllerToOakOrOldMan -SetControllerToOakOrOldMan: @ 80E75B0 - ldr r1, _080E75DC @ =gBattlerControllerFuncs - ldr r0, _080E75E0 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E75E4 @ =OakOldManBufferRunCommand - str r1, [r0] - ldr r2, _080E75E8 @ =gBattleStruct - ldr r0, [r2] - adds r0, 0x94 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x95 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x96 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x97 - strb r1, [r0] - bx lr - .align 2, 0 -_080E75DC: .4byte gBattlerControllerFuncs -_080E75E0: .4byte gActiveBattler -_080E75E4: .4byte OakOldManBufferRunCommand -_080E75E8: .4byte gBattleStruct - thumb_func_end SetControllerToOakOrOldMan - - thumb_func_start OakOldManBufferRunCommand -OakOldManBufferRunCommand: @ 80E75EC - push {lr} - ldr r2, _080E7620 @ =gBattleControllerExecFlags - ldr r1, _080E7624 @ =gBitTable - ldr r0, _080E7628 @ =gActiveBattler - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _080E7638 - ldr r0, _080E762C @ =gBattleBufferA - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _080E7634 - ldr r0, _080E7630 @ =sOakOldManBufferCommands - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _080E7638 - .align 2, 0 -_080E7620: .4byte gBattleControllerExecFlags -_080E7624: .4byte gBitTable -_080E7628: .4byte gActiveBattler -_080E762C: .4byte gBattleBufferA -_080E7630: .4byte sOakOldManBufferCommands -_080E7634: - bl OakOldManBufferExecCompleted -_080E7638: - pop {r0} - bx r0 - thumb_func_end OakOldManBufferRunCommand - - thumb_func_start HandleInputChooseAction_tmp -HandleInputChooseAction_tmp: @ 80E763C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, _080E769C @ =gBattleBufferA - ldr r4, _080E76A0 @ =gActiveBattler - ldrb r0, [r4] - lsls r2, r0, 9 - adds r1, r7, 0x2 - adds r1, r2, r1 - ldrb r5, [r1] - adds r1, r7, 0x3 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r5, r1 - movs r1, 0x1 - movs r2, 0x7 - movs r3, 0x1 - bl DoBounceEffect - ldrb r0, [r4] - movs r1, 0 - movs r2, 0x7 - movs r3, 0x1 - bl DoBounceEffect - ldr r0, _080E76A4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080E76D4 - movs r0, 0x5 - bl PlaySE - ldr r1, _080E76A8 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _080E76BC - cmp r0, 0x1 - bgt _080E76AC - cmp r0, 0 - beq _080E76B6 - b _080E781A - .align 2, 0 -_080E769C: .4byte gBattleBufferA -_080E76A0: .4byte gActiveBattler -_080E76A4: .4byte gMain -_080E76A8: .4byte gActionSelectionCursor -_080E76AC: - cmp r0, 0x2 - beq _080E76C2 - cmp r0, 0x3 - beq _080E76C8 - b _080E781A -_080E76B6: - movs r0, 0x1 - movs r1, 0 - b _080E7814 -_080E76BC: - movs r0, 0x1 - movs r1, 0x1 - b _080E7814 -_080E76C2: - movs r0, 0x1 - movs r1, 0x2 - b _080E7814 -_080E76C8: - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl BtlController_EmitTwoReturnValues - b _080E781A -_080E76D4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080E770C - ldr r5, _080E7708 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080E76EE - b _080E7838 -_080E76EE: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _080E7794 - .align 2, 0 -_080E7708: .4byte gActionSelectionCursor -_080E770C: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E7744 - ldr r5, _080E7740 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - beq _080E7726 - b _080E7838 -_080E7726: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x1 - b _080E7794 - .align 2, 0 -_080E7740: .4byte gActionSelectionCursor -_080E7744: - movs r0, 0x40 - mov r8, r0 - ands r0, r1 - cmp r0, 0 - beq _080E7764 - ldr r5, _080E7760 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E7838 - b _080E777C - .align 2, 0 -_080E7760: .4byte gActionSelectionCursor -_080E7764: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080E77AC - ldr r5, _080E77A8 @ =gActionSelectionCursor - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080E7838 -_080E777C: - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r1, r5 - ldrb r0, [r1] - movs r2, 0x2 -_080E7794: - eors r0, r2 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl ActionSelectionCreateCursorAt - b _080E7838 - .align 2, 0 -_080E77A8: .4byte gActionSelectionCursor -_080E77AC: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E782C - ldr r6, _080E7820 @ =gBattleTypeFlags - ldr r0, [r6] - ands r0, r2 - cmp r0, 0 - beq _080E7838 - ldrb r0, [r4] - bl GetBattlerPosition - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080E7838 - movs r0, 0 - bl GetBattlerAtPosition - ldr r1, _080E7824 @ =gAbsentBattlerFlags - ldrb r1, [r1] - ldr r2, _080E7828 @ =gBitTable - lsls r0, 24 - lsrs r0, 22 - adds r0, r2 - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080E7838 - ldr r0, [r6] - mov r1, r8 - ands r0, r1 - cmp r0, 0 - bne _080E7838 - ldrb r0, [r4] - lsls r0, 9 - adds r1, r7, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080E780A - cmp r5, 0xC - bhi _080E7838 - adds r0, r5, 0 - movs r1, 0x1 - bl AddBagItem -_080E780A: - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - movs r1, 0xC -_080E7814: - movs r2, 0 - bl BtlController_EmitTwoReturnValues -_080E781A: - bl OakOldManBufferExecCompleted - b _080E7838 - .align 2, 0 -_080E7820: .4byte gBattleTypeFlags -_080E7824: .4byte gAbsentBattlerFlags -_080E7828: .4byte gBitTable -_080E782C: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080E7838 - bl SwapHpBarsWithHpText -_080E7838: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end HandleInputChooseAction_tmp - - thumb_func_start sub_80E7844 -sub_80E7844: @ 80E7844 - push {r4,lr} - ldr r1, _080E7860 @ =gBattleStruct - ldr r2, [r1] - adds r0, r2, 0 - adds r0, 0x94 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x1 - beq _080E787C - cmp r0, 0x1 - bgt _080E7864 - cmp r0, 0 - beq _080E786A - b _080E78D8 - .align 2, 0 -_080E7860: .4byte gBattleStruct -_080E7864: - cmp r0, 0x2 - beq _080E78B4 - b _080E78D8 -_080E786A: - adds r1, r2, 0 - adds r1, 0x96 - movs r0, 0x40 - strb r0, [r1] - ldr r1, [r4] - adds r1, 0x94 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080E787C: - ldr r1, [r4] - adds r1, 0x96 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _080E78D8 - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl ActionSelectionDestroyCursorAt - movs r0, 0x1 - movs r1, 0 - bl ActionSelectionCreateCursorAt - ldr r0, [r4] - adds r0, 0x96 - movs r1, 0x40 - strb r1, [r0] - ldr r1, [r4] - adds r1, 0x94 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080E78D8 -_080E78B4: - adds r1, r2, 0 - adds r1, 0x96 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _080E78D8 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl BtlController_EmitTwoReturnValues - bl OakOldManBufferExecCompleted -_080E78D8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80E7844 - - thumb_func_start CompleteOnBattlerSpriteCallbackDummy_tmp -CompleteOnBattlerSpriteCallbackDummy_tmp: @ 80E78E0 - push {lr} - ldr r2, _080E7908 @ =gSprites - ldr r1, _080E790C @ =gBattlerSpriteIds - ldr r0, _080E7910 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080E7914 @ =SpriteCallbackDummy - cmp r1, r0 - bne _080E7904 - bl OakOldManBufferExecCompleted -_080E7904: - pop {r0} - bx r0 - .align 2, 0 -_080E7908: .4byte gSprites -_080E790C: .4byte gBattlerSpriteIds -_080E7910: .4byte gActiveBattler -_080E7914: .4byte SpriteCallbackDummy - thumb_func_end CompleteOnBattlerSpriteCallbackDummy_tmp - - thumb_func_start sub_80E7918 -sub_80E7918: @ 80E7918 - push {lr} - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080E792A - bl OakOldManBufferExecCompleted -_080E792A: - pop {r0} - bx r0 - thumb_func_end sub_80E7918 - - thumb_func_start sub_80E7930 -sub_80E7930: @ 80E7930 - push {lr} - ldr r0, _080E7960 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E795A - ldr r2, _080E7964 @ =gMain - ldr r0, _080E7968 @ =0x00000439 - adds r3, r2, r0 - ldrb r1, [r3] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r0, _080E796C @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r2, 0x8] - bl SetMainCallback2 -_080E795A: - pop {r0} - bx r0 - .align 2, 0 -_080E7960: .4byte gPaletteFade -_080E7964: .4byte gMain -_080E7968: .4byte 0x00000439 -_080E796C: .4byte gPreBattleCallback1 - thumb_func_end sub_80E7930 - - thumb_func_start CompleteOnSpecialAnimDone_tmp -CompleteOnSpecialAnimDone_tmp: @ 80E7970 - push {lr} - ldr r0, _080E7984 @ =gDoingBattleAnim - ldrb r0, [r0] - cmp r0, 0 - bne _080E797E - bl OakOldManBufferExecCompleted -_080E797E: - pop {r0} - bx r0 - .align 2, 0 -_080E7984: .4byte gDoingBattleAnim - thumb_func_end CompleteOnSpecialAnimDone_tmp - - thumb_func_start sub_80E7988 -sub_80E7988: @ 80E7988 - push {lr} - bl HandleInputChooseMove - ldr r2, _080E79AC @ =gBattleControllerExecFlags - ldr r1, _080E79B0 @ =gBitTable - ldr r0, _080E79B4 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - bne _080E79A8 - bl OakOldManBufferExecCompleted -_080E79A8: - pop {r0} - bx r0 - .align 2, 0 -_080E79AC: .4byte gBattleControllerExecFlags -_080E79B0: .4byte gBitTable -_080E79B4: .4byte gActiveBattler - thumb_func_end sub_80E7988 - - thumb_func_start OpenPartyMenuToChooseMon_tmp -OpenPartyMenuToChooseMon_tmp: @ 80E79B8 - push {r4,lr} - ldr r0, _080E79FC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E79F6 - ldr r1, _080E7A00 @ =gBattlerControllerFuncs - ldr r2, _080E7A04 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E7A08 @ =WaitForMonSelection_tmp - str r1, [r0] - ldr r3, _080E7A0C @ =gTasks - ldr r1, _080E7A10 @ =gUnknown_3004FFC - ldrb r0, [r2] - adds r0, r1 - ldrb r0, [r0] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - ldrb r4, [r1, 0x8] - bl DestroyTask - bl FreeAllWindowBuffers - adds r0, r4, 0 - bl OpenPartyMenuInBattle -_080E79F6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E79FC: .4byte gPaletteFade -_080E7A00: .4byte gBattlerControllerFuncs -_080E7A04: .4byte gActiveBattler -_080E7A08: .4byte WaitForMonSelection_tmp -_080E7A0C: .4byte gTasks -_080E7A10: .4byte gUnknown_3004FFC - thumb_func_end OpenPartyMenuToChooseMon_tmp - - thumb_func_start WaitForMonSelection_tmp -WaitForMonSelection_tmp: @ 80E7A14 - push {lr} - ldr r0, _080E7A44 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _080E7A48 @ =BattleMainCB2 - cmp r1, r0 - bne _080E7A6A - ldr r0, _080E7A4C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E7A6A - ldr r0, _080E7A50 @ =gUnknown_203B0C0 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080E7A5C - ldr r0, _080E7A54 @ =gUnknown_203B0C1 - ldrb r1, [r0] - ldr r2, _080E7A58 @ =gUnknown_203B0DC - movs r0, 0x1 - bl BtlController_EmitChosenMonReturnValue - b _080E7A66 - .align 2, 0 -_080E7A44: .4byte gMain -_080E7A48: .4byte BattleMainCB2 -_080E7A4C: .4byte gPaletteFade -_080E7A50: .4byte gUnknown_203B0C0 -_080E7A54: .4byte gUnknown_203B0C1 -_080E7A58: .4byte gUnknown_203B0DC -_080E7A5C: - movs r0, 0x1 - movs r1, 0x6 - movs r2, 0 - bl BtlController_EmitChosenMonReturnValue -_080E7A66: - bl OakOldManBufferExecCompleted -_080E7A6A: - pop {r0} - bx r0 - thumb_func_end WaitForMonSelection_tmp - - thumb_func_start OpenBagAndChooseItem_tmp -OpenBagAndChooseItem_tmp: @ 80E7A70 - push {lr} - ldr r0, _080E7AA8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E7AC0 - ldr r1, _080E7AAC @ =gBattlerControllerFuncs - ldr r0, _080E7AB0 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E7AB4 @ =CompleteWhenChoseItem_tmp - str r1, [r0] - bl nullsub_44 - bl FreeAllWindowBuffers - ldr r0, _080E7AB8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E7ABC - bl sub_8107ECC - b _080E7AC0 - .align 2, 0 -_080E7AA8: .4byte gPaletteFade -_080E7AAC: .4byte gBattlerControllerFuncs -_080E7AB0: .4byte gActiveBattler -_080E7AB4: .4byte CompleteWhenChoseItem_tmp -_080E7AB8: .4byte gBattleTypeFlags -_080E7ABC: - bl sub_810AF74 -_080E7AC0: - pop {r0} - bx r0 - thumb_func_end OpenBagAndChooseItem_tmp - - thumb_func_start CompleteWhenChoseItem_tmp -CompleteWhenChoseItem_tmp: @ 80E7AC4 - push {lr} - ldr r0, _080E7B14 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _080E7B18 @ =BattleMainCB2 - cmp r1, r0 - bne _080E7B42 - ldr r0, _080E7B1C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E7B42 - movs r0, 0x4 - bl sub_80EB2E0 - lsls r0, 24 - cmp r0, 0 - bne _080E7B34 - ldr r0, _080E7B20 @ =gSpecialVar_ItemId - ldrh r0, [r0] - cmp r0, 0xD - bne _080E7B34 - ldr r0, _080E7B24 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E7B34 - movs r0, 0x4 - bl sub_80EB2F4 - ldr r1, _080E7B28 @ =gBattlerControllerFuncs - ldr r0, _080E7B2C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E7B30 @ =sub_80E8704 - str r1, [r0] - b _080E7B42 - .align 2, 0 -_080E7B14: .4byte gMain -_080E7B18: .4byte BattleMainCB2 -_080E7B1C: .4byte gPaletteFade -_080E7B20: .4byte gSpecialVar_ItemId -_080E7B24: .4byte gBattleTypeFlags -_080E7B28: .4byte gBattlerControllerFuncs -_080E7B2C: .4byte gActiveBattler -_080E7B30: .4byte sub_80E8704 -_080E7B34: - ldr r0, _080E7B48 @ =gSpecialVar_ItemId - ldrh r1, [r0] - movs r0, 0x1 - bl BtlController_EmitOneReturnValue - bl OakOldManBufferExecCompleted -_080E7B42: - pop {r0} - bx r0 - .align 2, 0 -_080E7B48: .4byte gSpecialVar_ItemId - thumb_func_end CompleteWhenChoseItem_tmp - - thumb_func_start sub_80E7B4C -sub_80E7B4C: @ 80E7B4C - push {r4-r7,lr} - ldr r4, _080E7CB0 @ =gBattleSpritesDataPtr - ldr r0, [r4] - ldr r5, _080E7CB4 @ =gActiveBattler - ldrb r2, [r5] - ldr r1, [r0, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r7, 0x88 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _080E7B80 - ldr r0, _080E7CB8 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080E7CBC @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_080E7B80: - ldr r1, [r4] - ldrb r0, [r5] - movs r6, 0x2 - adds r2, r6, 0 - eors r2, r0 - ldr r1, [r1, 0x4] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _080E7BB2 - ldr r0, _080E7CB8 @ =gBattlerPartyIndexes - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _080E7CBC @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_80F1720 -_080E7BB2: - ldr r0, [r4] - ldrb r2, [r5] - ldr r3, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0] - movs r4, 0x8 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _080E7CA8 - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _080E7CA8 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080E7C46 - ldr r0, _080E7CC0 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080E7C46 - ldr r1, _080E7CC4 @ =gUnknown_3004FFC - ldrb r0, [r5] - eors r0, r6 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080E7CC8 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r4, _080E7CCC @ =gHealthboxSpriteIds - ldrb r0, [r5] - adds r1, r6, 0 - eors r1, r0 - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _080E7CB8 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080E7CBC @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r5] - eors r0, r6 - bl sub_804BD94 - ldrb r0, [r5] - eors r0, r6 - adds r0, r4 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible -_080E7C46: - ldr r1, _080E7CC4 @ =gUnknown_3004FFC - ldr r4, _080E7CB4 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080E7CC8 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r5, _080E7CCC @ =gHealthboxSpriteIds - ldrb r1, [r4] - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _080E7CB8 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080E7CBC @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute - ldrb r0, [r4] - bl sub_804BD94 - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - ldr r0, _080E7CB0 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r2, [r0, 0x8] - ldrb r1, [r2, 0x9] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldr r1, _080E7CD0 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E7CD4 @ =sub_80E7CD8 - str r1, [r0] -_080E7CA8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E7CB0: .4byte gBattleSpritesDataPtr -_080E7CB4: .4byte gActiveBattler -_080E7CB8: .4byte gBattlerPartyIndexes -_080E7CBC: .4byte gPlayerParty -_080E7CC0: .4byte gBattleTypeFlags -_080E7CC4: .4byte gUnknown_3004FFC -_080E7CC8: .4byte gSprites -_080E7CCC: .4byte gHealthboxSpriteIds -_080E7CD0: .4byte gBattlerControllerFuncs -_080E7CD4: .4byte sub_80E7CD8 - thumb_func_end sub_80E7B4C - - thumb_func_start sub_80E7CD8 -sub_80E7CD8: @ 80E7CD8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r4, 0 - ldr r2, _080E7DD8 @ =gSprites - ldr r0, _080E7DDC @ =gHealthboxSpriteIds - ldr r1, _080E7DE0 @ =gActiveBattler - mov r8, r1 - ldrb r3, [r1] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080E7DE4 @ =SpriteCallbackDummy - cmp r1, r0 - bne _080E7D02 - movs r4, 0x1 -_080E7D02: - cmp r4, 0 - beq _080E7DCE - ldr r7, _080E7DE8 @ =gBattleSpritesDataPtr - ldr r0, [r7] - ldr r4, [r0, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r2, r0, r4 - ldrb r1, [r2, 0x1] - movs r5, 0x1 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080E7DCE - movs r6, 0x2 - adds r1, r6, 0 - eors r1, r3 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x1] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080E7DCE - ldrb r1, [r2] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r1 - strb r0, [r2] - ldr r0, [r7] - mov r1, r8 - ldrb r2, [r1] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1, 0x1] - movs r4, 0x2 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r2, [r7] - mov r1, r8 - ldrb r0, [r1] - adds r1, r6, 0 - eors r1, r0 - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - ands r3, r1 - strb r3, [r0] - ldr r2, [r7] - mov r1, r8 - ldrb r0, [r1] - adds r1, r6, 0 - eors r1, r0 - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldr r4, _080E7DEC @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r0, _080E7DF0 @ =c3_0802FDF4 - movs r1, 0xA - bl CreateTask - ldr r2, _080E7DF4 @ =gBattlerPartyIndexes - mov r0, r8 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _080E7DF8 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - ldr r1, _080E7DFC @ =gBattlerControllerFuncs - mov r2, r8 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E7E00 @ =sub_80E835C - str r1, [r0] -_080E7DCE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E7DD8: .4byte gSprites -_080E7DDC: .4byte gHealthboxSpriteIds -_080E7DE0: .4byte gActiveBattler -_080E7DE4: .4byte SpriteCallbackDummy -_080E7DE8: .4byte gBattleSpritesDataPtr -_080E7DEC: .4byte 0x000027f9 -_080E7DF0: .4byte c3_0802FDF4 -_080E7DF4: .4byte gBattlerPartyIndexes -_080E7DF8: .4byte gPlayerParty -_080E7DFC: .4byte gBattlerControllerFuncs -_080E7E00: .4byte sub_80E835C - thumb_func_end sub_80E7CD8 - - thumb_func_start Task_GiveExpToMon_tmp -Task_GiveExpToMon_tmp: @ 80E7E04 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _080E7F04 @ =gTasks - lsls r0, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - mov r8, r0 - ldrb r0, [r0, 0x8] - mov r10, r0 - mov r1, r8 - ldrb r7, [r1, 0xC] - str r7, [sp, 0x8] - ldrh r2, [r1, 0xA] - str r2, [sp, 0xC] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080E7E4A - ldr r1, _080E7F08 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r10, r0 - bne _080E7E4A - b _080E7F60 -_080E7E4A: - movs r0, 0x64 - mov r1, r10 - muls r1, r0 - ldr r0, _080E7F0C @ =gPlayerParty - adds r6, r1, r0 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x4] - ldr r3, _080E7F10 @ =gExperienceTables - adds r4, 0x1 - lsls r4, 2 - ldr r2, _080E7F14 @ =gBaseStats - lsls r1, r5, 3 - subs r1, r5 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x13] - movs r1, 0xCA - lsls r1, 1 - muls r1, r2 - adds r4, r1 - adds r4, r3 - ldr r2, [r4] - str r2, [sp] - ldr r3, [sp, 0xC] - lsls r1, r3, 16 - asrs r1, 16 - adds r0, r1 - cmp r0, r2 - bcc _080E7F38 - adds r0, r6, 0 - movs r1, 0x19 - mov r2, sp - bl SetMonData - adds r0, r6, 0 - bl CalculateMonStats - ldr r2, [sp] - add r0, sp, 0x4 - ldrh r0, [r0] - subs r2, r0 - ldr r0, [sp, 0xC] - subs r2, r0, r2 - ldr r4, _080E7F18 @ =gActiveBattler - ldrb r5, [r4] - strb r7, [r4] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r1, 0xB - bl BtlController_EmitTwoReturnValues - strb r5, [r4] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E7F20 - ldr r2, _080E7F08 @ =gBattlerPartyIndexes - lsls r0, r7, 1 - adds r0, r2 - mov r1, r10 - ldrh r0, [r0] - cmp r1, r0 - beq _080E7EFE - movs r0, 0x2 - eors r7, r0 - lsls r0, r7, 1 - adds r0, r2 - ldrh r0, [r0] - cmp r1, r0 - bne _080E7F20 -_080E7EFE: - ldr r0, _080E7F1C @ =Task_LaunchLvlUpAnim_tmp - b _080E7F62 - .align 2, 0 -_080E7F04: .4byte gTasks -_080E7F08: .4byte gBattlerPartyIndexes -_080E7F0C: .4byte gPlayerParty -_080E7F10: .4byte gExperienceTables -_080E7F14: .4byte gBaseStats -_080E7F18: .4byte gActiveBattler -_080E7F1C: .4byte Task_LaunchLvlUpAnim_tmp -_080E7F20: - ldr r0, _080E7F30 @ =gTasks - mov r2, r9 - lsls r1, r2, 2 - add r1, r9 - lsls r1, 3 - adds r1, r0 - ldr r0, _080E7F34 @ =DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp - b _080E7F64 - .align 2, 0 -_080E7F30: .4byte gTasks -_080E7F34: .4byte DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp -_080E7F38: - str r0, [sp, 0x4] - add r2, sp, 0x4 - adds r0, r6, 0 - movs r1, 0x19 - bl SetMonData - ldr r1, _080E7F58 @ =gBattlerControllerFuncs - ldr r3, [sp, 0x8] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, _080E7F5C @ =CompleteOnInactiveTextPrinter_tmp - str r1, [r0] - mov r0, r9 - bl DestroyTask - b _080E7F66 - .align 2, 0 -_080E7F58: .4byte gBattlerControllerFuncs -_080E7F5C: .4byte CompleteOnInactiveTextPrinter_tmp -_080E7F60: - ldr r0, _080E7F78 @ =Task_PrepareToGiveExpWithExpBar_tmp -_080E7F62: - mov r1, r8 -_080E7F64: - str r0, [r1] -_080E7F66: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E7F78: .4byte Task_PrepareToGiveExpWithExpBar_tmp - thumb_func_end Task_GiveExpToMon_tmp - - thumb_func_start Task_PrepareToGiveExpWithExpBar_tmp -Task_PrepareToGiveExpWithExpBar_tmp: @ 80E7F7C - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080E8034 @ =gTasks - lsls r2, r0, 2 - mov r8, r2 - add r8, r0 - mov r0, r8 - lsls r0, 3 - mov r8, r0 - add r8, r1 - mov r2, r8 - ldrb r1, [r2, 0x8] - movs r0, 0xA - ldrsh r2, [r2, r0] - mov r9, r2 - mov r2, r8 - ldrb r2, [r2, 0xC] - mov r10, r2 - movs r0, 0x64 - adds r6, r1, 0 - muls r6, r0 - ldr r0, _080E8038 @ =gPlayerParty - adds r6, r0 - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - adds r0, r6, 0 - movs r1, 0x19 - bl GetMonData - adds r3, r0, 0 - ldr r6, _080E803C @ =gExperienceTables - lsls r1, r4, 2 - ldr r2, _080E8040 @ =gBaseStats - lsls r0, r5, 3 - subs r0, r5 - lsls r0, 2 - adds r0, r2 - ldrb r2, [r0, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r2 - adds r1, r0 - adds r1, r6 - ldr r1, [r1] - subs r3, r1 - adds r4, 0x1 - lsls r4, 2 - adds r4, r0 - adds r4, r6 - ldr r2, [r4] - subs r2, r1 - ldr r0, _080E8044 @ =gHealthboxSpriteIds - add r0, r10 - ldrb r1, [r0] - mov r0, r9 - negs r0, r0 - str r0, [sp] - mov r0, r10 - bl SetBattleBarStruct - movs r0, 0x1B - bl PlaySE - ldr r0, _080E8048 @ =sub_80E804C - mov r1, r8 - str r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E8034: .4byte gTasks -_080E8038: .4byte gPlayerParty -_080E803C: .4byte gExperienceTables -_080E8040: .4byte gBaseStats -_080E8044: .4byte gHealthboxSpriteIds -_080E8048: .4byte sub_80E804C - thumb_func_end Task_PrepareToGiveExpWithExpBar_tmp - - thumb_func_start sub_80E804C -sub_80E804C: @ 80E804C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _080E8078 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r6, r0, r1 - ldrh r1, [r6, 0x1C] - movs r2, 0x1C - ldrsh r0, [r6, r2] - cmp r0, 0xC - bgt _080E807C - adds r0, r1, 0x1 - strh r0, [r6, 0x1C] - b _080E8178 - .align 2, 0 -_080E8078: .4byte gTasks -_080E807C: - ldrb r0, [r6, 0x8] - mov r9, r0 - ldrh r2, [r6, 0xA] - mov r10, r2 - ldrb r7, [r6, 0xC] - ldr r5, _080E8144 @ =gHealthboxSpriteIds - adds r5, r7, r5 - ldrb r1, [r5] - adds r0, r7, 0 - movs r2, 0x1 - movs r3, 0 - bl MoveBattleBar - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - bl SetHealthboxSpriteVisible - lsls r4, 16 - asrs r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _080E8178 - movs r0, 0x1B - bl m4aSongNumStop - movs r0, 0x64 - mov r1, r9 - muls r1, r0 - ldr r0, _080E8148 @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x38 - bl GetMonData - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x4] - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r3, _080E814C @ =gExperienceTables - adds r4, 0x1 - lsls r4, 2 - ldr r2, _080E8150 @ =gBaseStats - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x13] - movs r0, 0xCA - lsls r0, 1 - muls r0, r1 - adds r4, r0 - adds r4, r3 - ldr r1, [r4] - str r1, [sp] - mov r2, r10 - lsls r0, r2, 16 - asrs r4, r0, 16 - ldr r0, [sp, 0x4] - adds r0, r4 - cmp r0, r1 - blt _080E815C - adds r0, r5, 0 - movs r1, 0x19 - mov r2, sp - bl SetMonData - adds r0, r5, 0 - bl CalculateMonStats - ldr r2, [sp] - add r0, sp, 0x4 - ldrh r0, [r0] - subs r2, r0 - subs r2, r4, r2 - ldr r4, _080E8154 @ =gActiveBattler - ldrb r5, [r4] - strb r7, [r4] - lsls r2, 16 - lsrs r2, 16 - movs r0, 0x1 - movs r1, 0xB - bl BtlController_EmitTwoReturnValues - strb r5, [r4] - ldr r0, _080E8158 @ =Task_LaunchLvlUpAnim_tmp - str r0, [r6] - b _080E8178 - .align 2, 0 -_080E8144: .4byte gHealthboxSpriteIds -_080E8148: .4byte gPlayerParty -_080E814C: .4byte gExperienceTables -_080E8150: .4byte gBaseStats -_080E8154: .4byte gActiveBattler -_080E8158: .4byte Task_LaunchLvlUpAnim_tmp -_080E815C: - str r0, [sp, 0x4] - add r2, sp, 0x4 - adds r0, r5, 0 - movs r1, 0x19 - bl SetMonData - ldr r1, _080E8188 @ =gBattlerControllerFuncs - lsls r0, r7, 2 - adds r0, r1 - ldr r1, _080E818C @ =CompleteOnInactiveTextPrinter_tmp - str r1, [r0] - mov r0, r8 - bl DestroyTask -_080E8178: - 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 -_080E8188: .4byte gBattlerControllerFuncs -_080E818C: .4byte CompleteOnInactiveTextPrinter_tmp - thumb_func_end sub_80E804C - - thumb_func_start Task_LaunchLvlUpAnim_tmp -Task_LaunchLvlUpAnim_tmp: @ 80E8190 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080E81E4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrb r4, [r0, 0xC] - ldrb r6, [r0, 0x8] - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E81C4 - ldr r1, _080E81E8 @ =gBattlerPartyIndexes - movs r0, 0x2 - adds r2, r4, 0 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r6, r0 - bne _080E81C4 - adds r4, r2, 0 -_080E81C4: - adds r0, r4, 0 - adds r1, r4, 0 - adds r2, r4, 0 - movs r3, 0 - bl InitAndLaunchSpecialAnimation - ldr r0, _080E81E4 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _080E81EC @ =Task_UpdateLvlInHealthbox_tmp - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E81E4: .4byte gTasks -_080E81E8: .4byte gBattlerPartyIndexes -_080E81EC: .4byte Task_UpdateLvlInHealthbox_tmp - thumb_func_end Task_LaunchLvlUpAnim_tmp - - thumb_func_start Task_UpdateLvlInHealthbox_tmp -Task_UpdateLvlInHealthbox_tmp: @ 80E81F0 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080E825C @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r2, r0, r1 - ldrb r5, [r2, 0xC] - ldr r0, _080E8260 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x4] - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080E8292 - ldrb r4, [r2, 0x8] - movs r0, 0x64 - adds r1, r4, 0 - muls r1, r0 - ldr r0, _080E8264 @ =gPlayerParty - adds r7, r1, r0 - adds r0, r7, 0 - movs r1, 0x38 - bl GetMonData - bl IsDoubleBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080E8270 - ldr r1, _080E8268 @ =gBattlerPartyIndexes - movs r0, 0x2 - adds r2, r5, 0 - eors r2, r0 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - cmp r4, r0 - bne _080E8270 - ldr r0, _080E826C @ =gHealthboxSpriteIds - adds r0, r2, r0 - ldrb r0, [r0] - adds r1, r7, 0 - movs r2, 0 - bl UpdateHealthboxAttribute - b _080E8284 - .align 2, 0 -_080E825C: .4byte gTasks -_080E8260: .4byte gBattleSpritesDataPtr -_080E8264: .4byte gPlayerParty -_080E8268: .4byte gBattlerPartyIndexes -_080E826C: .4byte gHealthboxSpriteIds -_080E8270: - ldr r0, _080E8298 @ =gHealthboxSpriteIds - adds r0, r5, r0 - ldrb r0, [r0] - movs r1, 0x64 - muls r1, r4 - ldr r2, _080E829C @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl UpdateHealthboxAttribute -_080E8284: - ldr r0, _080E82A0 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _080E82A4 @ =DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp - str r0, [r1] -_080E8292: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E8298: .4byte gHealthboxSpriteIds -_080E829C: .4byte gPlayerParty -_080E82A0: .4byte gTasks -_080E82A4: .4byte DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp - thumb_func_end Task_UpdateLvlInHealthbox_tmp - - thumb_func_start DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp -DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp: @ 80E82A8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _080E82E4 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - ldrb r1, [r4, 0x8] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080E82E8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - bl GetMonData - ldrb r0, [r4, 0xC] - ldr r1, _080E82EC @ =gBattlerControllerFuncs - lsls r0, 2 - adds r0, r1 - ldr r1, _080E82F0 @ =CompleteOnInactiveTextPrinter_tmp - str r1, [r0] - adds r0, r5, 0 - bl DestroyTask - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E82E4: .4byte gTasks -_080E82E8: .4byte gPlayerParty -_080E82EC: .4byte gBattlerControllerFuncs -_080E82F0: .4byte CompleteOnInactiveTextPrinter_tmp - thumb_func_end DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp - - thumb_func_start sub_80E82F4 -sub_80E82F4: @ 80E82F4 - push {r4-r6,lr} - ldr r6, _080E834C @ =gSprites - ldr r5, _080E8350 @ =gBattlerSpriteIds - ldr r4, _080E8354 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r6 - movs r1, 0x22 - ldrsh r0, [r2, r1] - movs r3, 0x26 - ldrsh r1, [r2, r3] - adds r0, r1 - cmp r0, 0xA0 - ble _080E8344 - ldrb r0, [r2, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - ldr r1, _080E8358 @ =gHealthboxSpriteIds - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl OakOldManBufferExecCompleted -_080E8344: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E834C: .4byte gSprites -_080E8350: .4byte gBattlerSpriteIds -_080E8354: .4byte gActiveBattler -_080E8358: .4byte gHealthboxSpriteIds - thumb_func_end sub_80E82F4 - - thumb_func_start sub_80E835C -sub_80E835C: @ 80E835C - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, _080E837C @ =gBattleStruct - ldr r0, [r1] - adds r0, 0x94 - ldrb r0, [r0] - adds r7, r1, 0 - cmp r0, 0x8 - bls _080E8370 - b _080E855E -_080E8370: - lsls r0, 2 - ldr r1, _080E8380 @ =_080E8384 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E837C: .4byte gBattleStruct -_080E8380: .4byte _080E8384 - .align 2, 0 -_080E8384: - .4byte _080E83A8 - .4byte _080E83F0 - .4byte _080E8408 - .4byte _080E8420 - .4byte _080E8468 - .4byte _080E8490 - .4byte _080E84D8 - .4byte _080E8500 - .4byte _080E8530 -_080E83A8: - ldr r0, _080E83EC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _080E83BA - b _080E855E -_080E83BA: - ldr r4, [r7] - adds r5, r4, 0 - adds r5, 0x95 - adds r4, 0x97 - movs r0, 0x1 - bl GetBattlerAtPosition - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80EEFC8 - movs r0, 0x82 - negs r0, r0 - str r6, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x8 - bl BeginNormalPaletteFade - ldr r1, [r7] - b _080E8522 - .align 2, 0 -_080E83EC: .4byte gPaletteFade -_080E83F0: - ldr r0, _080E8404 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080E83FE - b _080E855E -_080E83FE: - bl sub_80EB30C - b _080E851E - .align 2, 0 -_080E8404: .4byte gPaletteFade -_080E8408: - ldr r0, _080E8418 @ =gUnknown_83FDAE2 - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080E841C @ =gDisplayedStringBattle - movs r1, 0x18 - bl BattlePutTextOnWindow - b _080E851E - .align 2, 0 -_080E8418: .4byte gUnknown_83FDAE2 -_080E841C: .4byte gDisplayedStringBattle -_080E8420: - movs r0, 0x18 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - beq _080E8430 - b _080E855E -_080E8430: - ldr r2, _080E8460 @ =gBitTable - ldr r4, _080E8464 @ =gBattleStruct - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x95 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - adds r0, 0x97 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - orrs r1, r0 - lsls r0, r1, 16 - str r3, [sp] - movs r1, 0x4 - movs r2, 0x8 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r4] - b _080E8522 - .align 2, 0 -_080E8460: .4byte gBitTable -_080E8464: .4byte gBattleStruct -_080E8468: - ldr r0, _080E8484 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E855E - ldr r0, _080E8488 @ =gUnknown_83FDB92 - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080E848C @ =gDisplayedStringBattle - movs r1, 0x18 - bl BattlePutTextOnWindow - b _080E851E - .align 2, 0 -_080E8484: .4byte gPaletteFade -_080E8488: .4byte gUnknown_83FDB92 -_080E848C: .4byte gDisplayedStringBattle -_080E8490: - movs r0, 0x18 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - bne _080E855E - ldr r2, _080E84D0 @ =gBitTable - ldr r4, _080E84D4 @ =gBattleStruct - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x95 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - adds r0, 0x97 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - orrs r1, r0 - lsls r0, r1, 16 - str r3, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x8 - bl BeginNormalPaletteFade - ldr r1, [r4] - b _080E8522 - .align 2, 0 -_080E84D0: .4byte gBitTable -_080E84D4: .4byte gBattleStruct -_080E84D8: - ldr r0, _080E84F4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E855E - ldr r0, _080E84F8 @ =gUnknown_83FDBEF - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080E84FC @ =gDisplayedStringBattle - movs r1, 0x18 - bl BattlePutTextOnWindow - b _080E851E - .align 2, 0 -_080E84F4: .4byte gPaletteFade -_080E84F8: .4byte gUnknown_83FDBEF -_080E84FC: .4byte gDisplayedStringBattle -_080E8500: - movs r0, 0x18 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080E855E - movs r0, 0x82 - negs r0, r0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0x8 - movs r3, 0 - bl BeginNormalPaletteFade -_080E851E: - ldr r0, _080E852C @ =gBattleStruct - ldr r1, [r0] -_080E8522: - adds r1, 0x94 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080E855E - .align 2, 0 -_080E852C: .4byte gBattleStruct -_080E8530: - ldr r0, _080E8568 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080E855E - movs r0, 0x1 - bl GetBattlerAtPosition - lsls r0, 24 - lsrs r0, 24 - bl sub_80EF0E0 - bl sub_80EB524 - ldr r0, _080E856C @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x94 - strb r4, [r0] - bl OakOldManBufferExecCompleted -_080E855E: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E8568: .4byte gPaletteFade -_080E856C: .4byte gBattleStruct - thumb_func_end sub_80E835C - - thumb_func_start sub_80E8570 -sub_80E8570: @ 80E8570 - push {lr} - ldr r0, _080E8580 @ =gUnknown_83FDC58 - movs r1, 0x1 - bl sub_80E85D4 - pop {r0} - bx r0 - .align 2, 0 -_080E8580: .4byte gUnknown_83FDC58 - thumb_func_end sub_80E8570 - - thumb_func_start sub_80E8584 -sub_80E8584: @ 80E8584 - push {lr} - ldr r0, _080E8594 @ =gUnknown_83FDC95 - movs r1, 0x40 - bl sub_80E85D4 - pop {r0} - bx r0 - .align 2, 0 -_080E8594: .4byte gUnknown_83FDC95 - thumb_func_end sub_80E8584 - - thumb_func_start sub_80E8598 -sub_80E8598: @ 80E8598 - push {lr} - ldr r0, _080E85A8 @ =gUnknown_83FDD23 - movs r1, 0x1 - bl sub_80E85D4 - pop {r0} - bx r0 - .align 2, 0 -_080E85A8: .4byte gUnknown_83FDD23 - thumb_func_end sub_80E8598 - - thumb_func_start sub_80E85AC -sub_80E85AC: @ 80E85AC - push {lr} - ldr r0, _080E85BC @ =gUnknown_83FDD64 - movs r1, 0x40 - bl sub_80E85D4 - pop {r0} - bx r0 - .align 2, 0 -_080E85BC: .4byte gUnknown_83FDD64 - thumb_func_end sub_80E85AC - - thumb_func_start sub_80E85C0 -sub_80E85C0: @ 80E85C0 - push {lr} - ldr r0, _080E85D0 @ =gUnknown_83FDDEB - movs r1, 0x40 - bl sub_80E85D4 - pop {r0} - bx r0 - .align 2, 0 -_080E85D0: .4byte gUnknown_83FDDEB - thumb_func_end sub_80E85C0 - - thumb_func_start sub_80E85D4 -sub_80E85D4: @ 80E85D4 - push {r4,r5,lr} - sub sp, 0x4 - adds r2, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - ldr r1, _080E85F8 @ =gBattleStruct - ldr r0, [r1] - adds r0, 0x94 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0x5 - bls _080E85EE - b _080E86F2 -_080E85EE: - lsls r0, 2 - ldr r1, _080E85FC @ =_080E8600 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E85F8: .4byte gBattleStruct -_080E85FC: .4byte _080E8600 - .align 2, 0 -_080E8600: - .4byte _080E8618 - .4byte _080E8634 - .4byte _080E865A - .4byte _080E8670 - .4byte _080E8684 - .4byte _080E86B4 -_080E8618: - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080E86F2 - ldr r1, _080E8630 @ =gBattleStruct - ldr r0, [r1] - adds r0, 0x97 - strb r4, [r0] - ldr r1, [r1] - b _080E86A6 - .align 2, 0 -_080E8630: .4byte gBattleStruct -_080E8634: - ldr r1, [r5] - adds r1, 0x97 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080E86F2 - movs r0, 0x82 - negs r0, r0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x8 - bl BeginNormalPaletteFade - ldr r1, [r5] - b _080E86A6 -_080E865A: - ldr r0, _080E866C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E86F2 - bl sub_80EB30C - b _080E86A2 - .align 2, 0 -_080E866C: .4byte gPaletteFade -_080E8670: - adds r0, r2, 0 - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080E8680 @ =gDisplayedStringBattle - movs r1, 0x18 - bl BattlePutTextOnWindow - b _080E86A2 - .align 2, 0 -_080E8680: .4byte gDisplayedStringBattle -_080E8684: - movs r0, 0x18 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - bne _080E86F2 - movs r0, 0x82 - negs r0, r0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0x8 - movs r3, 0 - bl BeginNormalPaletteFade -_080E86A2: - ldr r0, _080E86B0 @ =gBattleStruct - ldr r1, [r0] -_080E86A6: - adds r1, 0x94 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080E86F2 - .align 2, 0 -_080E86B0: .4byte gBattleStruct -_080E86B4: - ldr r0, _080E86D8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E86F2 - bl sub_80EB524 - ldr r0, _080E86DC @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080E86E0 - bl OakOldManBufferExecCompleted - b _080E86E4 - .align 2, 0 -_080E86D8: .4byte gPaletteFade -_080E86DC: .4byte gActiveBattler -_080E86E0: - bl OpponentBufferExecCompleted -_080E86E4: - ldr r0, _080E86FC @ =gBattleCommunication - movs r1, 0 - strb r1, [r0, 0x7] - ldr r0, _080E8700 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x94 - strb r1, [r0] -_080E86F2: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E86FC: .4byte gBattleCommunication -_080E8700: .4byte gBattleStruct - thumb_func_end sub_80E85D4 - - thumb_func_start sub_80E8704 -sub_80E8704: @ 80E8704 - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _080E8724 @ =gBattleStruct - ldr r0, [r1] - adds r0, 0x94 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0x6 - bls _080E8718 - b _080E88AA -_080E8718: - lsls r0, 2 - ldr r1, _080E8728 @ =_080E872C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E8724: .4byte gBattleStruct -_080E8728: .4byte _080E872C - .align 2, 0 -_080E872C: - .4byte _080E8748 - .4byte _080E8788 - .4byte _080E87D0 - .4byte _080E87E8 - .4byte _080E8800 - .4byte _080E8848 - .4byte _080E8880 -_080E8748: - ldr r0, _080E8780 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080E875A - b _080E88AA -_080E875A: - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x95 - adds r1, 0x97 - ldr r2, _080E8784 @ =gActiveBattler - ldrb r2, [r2] - bl sub_80EEFC8 - movs r0, 0x82 - negs r0, r0 - str r4, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x8 - bl BeginNormalPaletteFade - ldr r1, [r5] - b _080E886C - .align 2, 0 -_080E8780: .4byte gPaletteFade -_080E8784: .4byte gActiveBattler -_080E8788: - ldr r0, _080E87C8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _080E879A - b _080E88AA -_080E879A: - ldr r2, _080E87CC @ =gBitTable - ldr r0, [r5] - adds r1, r0, 0 - adds r1, 0x95 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - adds r0, 0x97 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - orrs r1, r0 - lsls r0, r1, 16 - str r3, [sp] - movs r1, 0x4 - movs r2, 0x8 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, [r5] - b _080E886C - .align 2, 0 -_080E87C8: .4byte gPaletteFade -_080E87CC: .4byte gBitTable -_080E87D0: - ldr r0, _080E87E4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080E88AA - bl sub_80EB30C - b _080E8868 - .align 2, 0 -_080E87E4: .4byte gPaletteFade -_080E87E8: - ldr r0, _080E87F8 @ =gUnknown_83FDCD2 - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _080E87FC @ =gDisplayedStringBattle - movs r1, 0x18 - bl BattlePutTextOnWindow - b _080E8868 - .align 2, 0 -_080E87F8: .4byte gUnknown_83FDCD2 -_080E87FC: .4byte gDisplayedStringBattle -_080E8800: - movs r0, 0x18 - bl IsTextPrinterActive - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - bne _080E88AA - ldr r2, _080E8840 @ =gBitTable - ldr r4, _080E8844 @ =gBattleStruct - ldr r0, [r4] - adds r1, r0, 0 - adds r1, 0x95 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - adds r0, 0x97 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r1, [r1] - ldr r0, [r0] - orrs r1, r0 - lsls r0, r1, 16 - str r3, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x8 - bl BeginNormalPaletteFade - ldr r1, [r4] - b _080E886C - .align 2, 0 -_080E8840: .4byte gBitTable -_080E8844: .4byte gBattleStruct -_080E8848: - ldr r0, _080E8878 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080E88AA - movs r0, 0x82 - negs r0, r0 - str r1, [sp] - movs r1, 0x4 - movs r2, 0x8 - movs r3, 0 - bl BeginNormalPaletteFade -_080E8868: - ldr r0, _080E887C @ =gBattleStruct - ldr r1, [r0] -_080E886C: - adds r1, 0x94 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080E88AA - .align 2, 0 -_080E8878: .4byte gPaletteFade -_080E887C: .4byte gBattleStruct -_080E8880: - ldr r0, _080E88B4 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080E88AA - bl sub_80EB524 - ldr r0, _080E88B8 @ =gSpecialVar_ItemId - ldrh r1, [r0] - movs r0, 0x1 - bl BtlController_EmitOneReturnValue - bl OakOldManBufferExecCompleted - ldr r0, _080E88BC @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x94 - strb r4, [r0] -_080E88AA: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080E88B4: .4byte gPaletteFade -_080E88B8: .4byte gSpecialVar_ItemId -_080E88BC: .4byte gBattleStruct - thumb_func_end sub_80E8704 - - thumb_func_start sub_80E88C0 -sub_80E88C0: @ 80E88C0 - push {r4-r6,lr} - ldr r5, _080E8900 @ =gActiveBattler - ldrb r0, [r5] - ldr r6, _080E8904 @ =gHealthboxSpriteIds - adds r1, r0, r6 - ldrb r1, [r1] - movs r2, 0 - movs r3, 0 - bl MoveBattleBar - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - bl SetHealthboxSpriteVisible - lsls r4, 16 - asrs r1, r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _080E8908 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - movs r2, 0 - bl UpdateHpTextInHealthbox - b _080E8922 - .align 2, 0 -_080E8900: .4byte gActiveBattler -_080E8904: .4byte gHealthboxSpriteIds -_080E8908: - ldr r2, _080E8928 @ =gBattlerPartyIndexes - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _080E892C @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - bl OakOldManBufferExecCompleted -_080E8922: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E8928: .4byte gBattlerPartyIndexes -_080E892C: .4byte gPlayerParty - thumb_func_end sub_80E88C0 - - thumb_func_start CompleteOnInactiveTextPrinter_tmp -CompleteOnInactiveTextPrinter_tmp: @ 80E8930 - push {lr} - movs r0, 0 - bl IsTextPrinterActive - lsls r0, 16 - cmp r0, 0 - bne _080E8942 - bl OakOldManBufferExecCompleted -_080E8942: - pop {r0} - bx r0 - thumb_func_end CompleteOnInactiveTextPrinter_tmp - - thumb_func_start DoHitAnimBlinkSpriteEffect_tmp -DoHitAnimBlinkSpriteEffect_tmp: @ 80E8948 - push {r4,lr} - ldr r1, _080E8984 @ =gBattlerSpriteIds - ldr r0, _080E8988 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _080E898C @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x20 - bne _080E8994 - movs r3, 0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x5 - ands r0, r1 - strb r0, [r2] - ldr r0, _080E8990 @ =gDoingBattleAnim - strb r3, [r0] - bl OakOldManBufferExecCompleted - b _080E89BE - .align 2, 0 -_080E8984: .4byte gBattlerSpriteIds -_080E8988: .4byte gActiveBattler -_080E898C: .4byte gSprites -_080E8990: .4byte gDoingBattleAnim -_080E8994: - ldrh r0, [r4, 0x30] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _080E89B8 - 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] -_080E89B8: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_080E89BE: - pop {r4} - pop {r0} - bx r0 - thumb_func_end DoHitAnimBlinkSpriteEffect_tmp - - thumb_func_start sub_80E89C4 -sub_80E89C4: @ 80E89C4 - push {r4-r6,lr} - ldr r0, _080E8A20 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r6, _080E8A24 @ =gActiveBattler - ldrb r2, [r6] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080E8A18 - ldr r5, _080E8A28 @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080E8A2C @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldr r1, _080E8A30 @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl OakOldManBufferExecCompleted -_080E8A18: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E8A20: .4byte gBattleSpritesDataPtr -_080E8A24: .4byte gActiveBattler -_080E8A28: .4byte gBattlerSpriteIds -_080E8A2C: .4byte gSprites -_080E8A30: .4byte gHealthboxSpriteIds - thumb_func_end sub_80E89C4 - - thumb_func_start sub_80E8A34 -sub_80E8A34: @ 80E8A34 - push {lr} - ldr r2, _080E8A5C @ =gSprites - ldr r1, _080E8A60 @ =gBattlerSpriteIds - ldr r0, _080E8A64 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080E8A68 @ =SpriteCallbackDummy - cmp r1, r0 - bne _080E8A58 - bl OakOldManBufferExecCompleted -_080E8A58: - pop {r0} - bx r0 - .align 2, 0 -_080E8A5C: .4byte gSprites -_080E8A60: .4byte gBattlerSpriteIds -_080E8A64: .4byte gActiveBattler -_080E8A68: .4byte SpriteCallbackDummy - thumb_func_end sub_80E8A34 - - thumb_func_start CompleteOnFinishedBattleAnimation_tmp -CompleteOnFinishedBattleAnimation_tmp: @ 80E8A6C - push {lr} - ldr r0, _080E8A94 @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _080E8A98 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080E8A8E - bl OakOldManBufferExecCompleted -_080E8A8E: - pop {r0} - bx r0 - .align 2, 0 -_080E8A94: .4byte gBattleSpritesDataPtr -_080E8A98: .4byte gActiveBattler - thumb_func_end CompleteOnFinishedBattleAnimation_tmp - - thumb_func_start OakOldManBufferExecCompleted -OakOldManBufferExecCompleted: @ 80E8A9C - push {r4,lr} - sub sp, 0x4 - ldr r1, _080E8ADC @ =gBattlerControllerFuncs - ldr r4, _080E8AE0 @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E8AE4 @ =OakOldManBufferRunCommand - str r1, [r0] - ldr r0, _080E8AE8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080E8AF0 - bl GetMultiplayerId - mov r1, sp - strb r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - mov r2, sp - bl PrepareBufferDataTransferLink - ldr r1, _080E8AEC @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r0, r1 - movs r1, 0x38 - strb r1, [r0] - b _080E8B02 - .align 2, 0 -_080E8ADC: .4byte gBattlerControllerFuncs -_080E8AE0: .4byte gActiveBattler -_080E8AE4: .4byte OakOldManBufferRunCommand -_080E8AE8: .4byte gBattleTypeFlags -_080E8AEC: .4byte gBattleBufferA -_080E8AF0: - ldr r2, _080E8B0C @ =gBattleControllerExecFlags - ldr r1, _080E8B10 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] -_080E8B02: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080E8B0C: .4byte gBattleControllerExecFlags -_080E8B10: .4byte gBitTable - thumb_func_end OakOldManBufferExecCompleted - - thumb_func_start CompleteOnFinishedStatusAnimation_tmp -CompleteOnFinishedStatusAnimation_tmp: @ 80E8B14 - push {lr} - ldr r0, _080E8B3C @ =gBattleSpritesDataPtr - ldr r2, [r0] - ldr r0, _080E8B40 @ =gActiveBattler - ldrb r1, [r0] - ldr r2, [r2, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080E8B36 - bl OakOldManBufferExecCompleted -_080E8B36: - pop {r0} - bx r0 - .align 2, 0 -_080E8B3C: .4byte gBattleSpritesDataPtr -_080E8B40: .4byte gActiveBattler - thumb_func_end CompleteOnFinishedStatusAnimation_tmp - - thumb_func_start OakOldManHandleGetMonData -OakOldManHandleGetMonData: @ 80E8B44 - push {r4-r6,lr} - sub sp, 0x100 - movs r6, 0 - ldr r1, _080E8B70 @ =gBattleBufferA - ldr r0, _080E8B74 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _080E8B7C - ldr r0, _080E8B78 @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - mov r1, sp - bl CopyOakOldManMonData - adds r6, r0, 0 - b _080E8B9E - .align 2, 0 -_080E8B70: .4byte gBattleBufferA -_080E8B74: .4byte gActiveBattler -_080E8B78: .4byte gBattlerPartyIndexes -_080E8B7C: - ldrb r4, [r1] - movs r5, 0 -_080E8B80: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080E8B96 - lsls r0, r5, 24 - lsrs r0, 24 - mov r2, sp - adds r1, r2, r6 - bl CopyOakOldManMonData - adds r6, r0 -_080E8B96: - lsrs r4, 1 - adds r5, 0x1 - cmp r5, 0x5 - ble _080E8B80 -_080E8B9E: - lsls r1, r6, 16 - lsrs r1, 16 - movs r0, 0x1 - mov r2, sp - bl BtlController_EmitDataTransfer - bl OakOldManBufferExecCompleted - add sp, 0x100 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end OakOldManHandleGetMonData - - thumb_func_start CopyOakOldManMonData -CopyOakOldManMonData: @ 80E8BB8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x90 - adds r7, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - ldr r2, _080E8BEC @ =gBattleBufferA - ldr r3, _080E8BF0 @ =gActiveBattler - ldrb r0, [r3] - lsls r0, 9 - adds r1, r2, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3B - bls _080E8BE2 - bl _080E934E -_080E8BE2: - lsls r0, 2 - ldr r1, _080E8BF4 @ =_080E8BF8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E8BEC: .4byte gBattleBufferA -_080E8BF0: .4byte gActiveBattler -_080E8BF4: .4byte _080E8BF8 - .align 2, 0 -_080E8BF8: - .4byte _080E8CE8 - .4byte _080E8F0C - .4byte _080E8F1C - .4byte _080E8F2C - .4byte _080E8F94 - .4byte _080E8F94 - .4byte _080E8F94 - .4byte _080E8F94 - .4byte _080E8FB0 - .4byte _080E8FEC - .4byte _080E8FEC - .4byte _080E8FEC - .4byte _080E8FEC - .4byte _080E934E - .4byte _080E934E - .4byte _080E934E - .4byte _080E934E - .4byte _080E9008 - .4byte _080E9018 - .4byte _080E9048 - .4byte _080E9058 - .4byte _080E9068 - .4byte _080E9078 - .4byte _080E9088 - .4byte _080E9098 - .4byte _080E90A8 - .4byte _080E90B8 - .4byte _080E90C8 - .4byte _080E90D8 - .4byte _080E90E8 - .4byte _080E90F8 - .4byte _080E9108 - .4byte _080E9158 - .4byte _080E9168 - .4byte _080E9178 - .4byte _080E9188 - .4byte _080E9198 - .4byte _080E91A8 - .4byte _080E91B8 - .4byte _080E91C8 - .4byte _080E91D8 - .4byte _080E920C - .4byte _080E921C - .4byte _080E922C - .4byte _080E923C - .4byte _080E924C - .4byte _080E925C - .4byte _080E926C - .4byte _080E927C - .4byte _080E929C - .4byte _080E92AC - .4byte _080E92BC - .4byte _080E92CC - .4byte _080E92DC - .4byte _080E92EC - .4byte _080E92FC - .4byte _080E930C - .4byte _080E931C - .4byte _080E932C - .4byte _080E933C -_080E8CE8: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E8EFC @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - mov r1, sp - strh r0, [r1] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2E] - movs r6, 0 - add r0, sp, 0x24 - mov r9, r0 - movs r1, 0x3B - add r1, sp - mov r10, r1 - mov r2, sp - adds r2, 0x2B - str r2, [sp, 0x80] - mov r0, sp - adds r0, 0x2A - str r0, [sp, 0x7C] - mov r1, sp - adds r1, 0x68 - str r1, [sp, 0x8C] - adds r2, 0x5 - str r2, [sp, 0x84] - adds r0, 0x12 - str r0, [sp, 0x88] - mov r8, r4 - add r4, sp, 0xC -_080E8D34: - adds r1, r6, 0 - adds r1, 0xD - mov r0, r8 - bl GetMonData - strh r0, [r4] - adds r1, r6, 0 - adds r1, 0x11 - mov r0, r8 - bl GetMonData - mov r2, r9 - adds r1, r2, r6 - strb r0, [r1] - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _080E8D34 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E8EFC @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl GetMonData - mov r1, r10 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x20 - bl GetMonData - ldr r2, [sp, 0x80] - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x44] - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - mov r3, sp - movs r5, 0x1F - ands r0, r5 - ldrb r2, [r3, 0x14] - movs r1, 0x20 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - mov r3, sp - movs r6, 0x1F - ands r0, r6 - lsls r0, 5 - ldrh r2, [r3, 0x14] - ldr r1, _080E8F00 @ =0xfffffc1f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 2 - ldrb r2, [r3, 0x15] - movs r1, 0x7D - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x15] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - movs r1, 0x1F - ands r1, r0 - lsls r1, 15 - ldr r0, [sp, 0x14] - ldr r2, _080E8F04 @ =0xfff07fff - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x14] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - mov r3, sp - ands r0, r6 - lsls r0, 4 - ldrh r2, [r3, 0x16] - ldr r1, _080E8F08 @ =0xfffffe0f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x16] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 1 - ldrb r2, [r3, 0x17] - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x48] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - str r0, [sp, 0x4C] - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - ldr r1, [sp, 0x7C] - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - mov r1, sp - strh r0, [r1, 0x28] - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2C] - adds r0, r4, 0 - movs r1, 0x3B - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2] - adds r0, r4, 0 - movs r1, 0x3C - bl GetMonData - mov r1, sp - strh r0, [r1, 0x4] - adds r0, r4, 0 - movs r1, 0x3D - bl GetMonData - mov r1, sp - strh r0, [r1, 0x6] - adds r0, r4, 0 - movs r1, 0x3E - bl GetMonData - mov r1, sp - strh r0, [r1, 0x8] - adds r0, r4, 0 - movs r1, 0x3F - bl GetMonData - mov r1, sp - strh r0, [r1, 0xA] - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - mov r3, sp - movs r1, 0x1 - ands r0, r1 - lsls r0, 6 - ldrb r2, [r3, 0x17] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - mov r3, sp - lsls r0, 7 - ldrb r2, [r3, 0x17] - movs r1, 0x7F - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - str r0, [sp, 0x54] - adds r0, r4, 0 - movs r1, 0x2 - ldr r2, [sp, 0x8C] - bl GetMonData - ldr r0, [sp, 0x84] - ldr r1, [sp, 0x8C] - bl StringCopy10 - adds r0, r4, 0 - movs r1, 0x7 - ldr r2, [sp, 0x88] - bl GetMonData - mov r2, sp - movs r6, 0 -_080E8EEC: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0x57 - bls _080E8EEC - b _080E934E - .align 2, 0 -_080E8EFC: .4byte gPlayerParty -_080E8F00: .4byte 0xfffffc1f -_080E8F04: .4byte 0xfff07fff -_080E8F08: .4byte 0xfffffe0f -_080E8F0C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E8F18 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - b _080E9286 - .align 2, 0 -_080E8F18: .4byte gPlayerParty -_080E8F1C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E8F28 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - b _080E9286 - .align 2, 0 -_080E8F28: .4byte gPlayerParty -_080E8F2C: - movs r6, 0 - add r2, sp, 0x58 - mov r9, r2 - add r0, sp, 0x60 - mov r10, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _080E8F90 @ =gPlayerParty - adds r4, r1, r0 - mov r8, r9 -_080E8F42: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r4, 0 - bl GetMonData - mov r1, r8 - strh r0, [r1] - adds r1, r6, 0 - adds r1, 0x11 - adds r0, r4, 0 - bl GetMonData - mov r2, r10 - adds r1, r2, r6 - strb r0, [r1] - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _080E8F42 - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E8F90 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - mov r1, r9 - strb r0, [r1, 0xC] - mov r2, r9 - movs r6, 0 -_080E8F80: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0xF - bls _080E8F80 - b _080E934E - .align 2, 0 -_080E8F90: .4byte gPlayerParty -_080E8F94: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E8FAC @ =gPlayerParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x9 - b _080E9286 - .align 2, 0 -_080E8FAC: .4byte gPlayerParty -_080E8FB0: - movs r6, 0 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r2, _080E8FE8 @ =gPlayerParty - mov r8, r2 -_080E8FBC: - adds r1, r6, 0 - adds r1, 0x11 - mov r2, r8 - adds r0, r4, r2 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - cmp r6, 0x3 - ble _080E8FBC - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E8FE8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - b _080E934E - .align 2, 0 -_080E8FE8: .4byte gPlayerParty -_080E8FEC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9004 @ =gPlayerParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x8 - b _080E9346 - .align 2, 0 -_080E9004: .4byte gPlayerParty -_080E9008: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9014 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1 - b _080E9022 - .align 2, 0 -_080E9014: .4byte gPlayerParty -_080E9018: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9044 @ =gPlayerParty - adds r0, r1 - movs r1, 0x19 -_080E9022: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - movs r6, 0x3 - b _080E934E - .align 2, 0 -_080E9044: .4byte gPlayerParty -_080E9048: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9054 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1A - b _080E9346 - .align 2, 0 -_080E9054: .4byte gPlayerParty -_080E9058: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9064 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1B - b _080E9346 - .align 2, 0 -_080E9064: .4byte gPlayerParty -_080E9068: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9074 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1C - b _080E9346 - .align 2, 0 -_080E9074: .4byte gPlayerParty -_080E9078: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9084 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1D - b _080E9346 - .align 2, 0 -_080E9084: .4byte gPlayerParty -_080E9088: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9094 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1E - b _080E9346 - .align 2, 0 -_080E9094: .4byte gPlayerParty -_080E9098: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E90A4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1F - b _080E9346 - .align 2, 0 -_080E90A4: .4byte gPlayerParty -_080E90A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E90B4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x20 - b _080E9346 - .align 2, 0 -_080E90B4: .4byte gPlayerParty -_080E90B8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E90C4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x22 - b _080E9346 - .align 2, 0 -_080E90C4: .4byte gPlayerParty -_080E90C8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E90D4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x23 - b _080E9346 - .align 2, 0 -_080E90D4: .4byte gPlayerParty -_080E90D8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E90E4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x24 - b _080E9346 - .align 2, 0 -_080E90E4: .4byte gPlayerParty -_080E90E8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E90F4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x25 - b _080E9346 - .align 2, 0 -_080E90F4: .4byte gPlayerParty -_080E90F8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9104 @ =gPlayerParty - adds r0, r1 - movs r1, 0x26 - b _080E9346 - .align 2, 0 -_080E9104: .4byte gPlayerParty -_080E9108: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E9154 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - strb r0, [r7] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - strb r0, [r7, 0x1] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - strb r0, [r7, 0x2] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - strb r0, [r7, 0x3] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - strb r0, [r7, 0x4] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - strb r0, [r7, 0x5] - movs r6, 0x6 - b _080E934E - .align 2, 0 -_080E9154: .4byte gPlayerParty -_080E9158: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9164 @ =gPlayerParty - adds r0, r1 - movs r1, 0x27 - b _080E9346 - .align 2, 0 -_080E9164: .4byte gPlayerParty -_080E9168: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9174 @ =gPlayerParty - adds r0, r1 - movs r1, 0x28 - b _080E9346 - .align 2, 0 -_080E9174: .4byte gPlayerParty -_080E9178: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9184 @ =gPlayerParty - adds r0, r1 - movs r1, 0x29 - b _080E9346 - .align 2, 0 -_080E9184: .4byte gPlayerParty -_080E9188: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9194 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2A - b _080E9346 - .align 2, 0 -_080E9194: .4byte gPlayerParty -_080E9198: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E91A4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2B - b _080E9346 - .align 2, 0 -_080E91A4: .4byte gPlayerParty -_080E91A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E91B4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2C - b _080E9346 - .align 2, 0 -_080E91B4: .4byte gPlayerParty -_080E91B8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E91C4 @ =gPlayerParty - adds r0, r1 - movs r1, 0 - b _080E91E2 - .align 2, 0 -_080E91C4: .4byte gPlayerParty -_080E91C8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E91D4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x9 - b _080E9286 - .align 2, 0 -_080E91D4: .4byte gPlayerParty -_080E91D8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9208 @ =gPlayerParty - adds r0, r1 - movs r1, 0x37 -_080E91E2: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - lsrs r0, r1, 24 - strb r0, [r7, 0x3] - movs r6, 0x4 - b _080E934E - .align 2, 0 -_080E9208: .4byte gPlayerParty -_080E920C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9218 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - b _080E9346 - .align 2, 0 -_080E9218: .4byte gPlayerParty -_080E921C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9228 @ =gPlayerParty - adds r0, r1 - movs r1, 0x39 - b _080E9286 - .align 2, 0 -_080E9228: .4byte gPlayerParty -_080E922C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9238 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3A - b _080E9286 - .align 2, 0 -_080E9238: .4byte gPlayerParty -_080E923C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9248 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3B - b _080E9286 - .align 2, 0 -_080E9248: .4byte gPlayerParty -_080E924C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9258 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3C - b _080E9286 - .align 2, 0 -_080E9258: .4byte gPlayerParty -_080E925C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9268 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3D - b _080E9286 - .align 2, 0 -_080E9268: .4byte gPlayerParty -_080E926C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9278 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3E - b _080E9286 - .align 2, 0 -_080E9278: .4byte gPlayerParty -_080E927C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9298 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3F -_080E9286: - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - strb r0, [r7] - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r6, 0x2 - b _080E934E - .align 2, 0 -_080E9298: .4byte gPlayerParty -_080E929C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E92A8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x16 - b _080E9346 - .align 2, 0 -_080E92A8: .4byte gPlayerParty -_080E92AC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E92B8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x17 - b _080E9346 - .align 2, 0 -_080E92B8: .4byte gPlayerParty -_080E92BC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E92C8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x18 - b _080E9346 - .align 2, 0 -_080E92C8: .4byte gPlayerParty -_080E92CC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E92D8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x21 - b _080E9346 - .align 2, 0 -_080E92D8: .4byte gPlayerParty -_080E92DC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E92E8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2F - b _080E9346 - .align 2, 0 -_080E92E8: .4byte gPlayerParty -_080E92EC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E92F8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x30 - b _080E9346 - .align 2, 0 -_080E92F8: .4byte gPlayerParty -_080E92FC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9308 @ =gPlayerParty - adds r0, r1 - movs r1, 0x32 - b _080E9346 - .align 2, 0 -_080E9308: .4byte gPlayerParty -_080E930C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9318 @ =gPlayerParty - adds r0, r1 - movs r1, 0x33 - b _080E9346 - .align 2, 0 -_080E9318: .4byte gPlayerParty -_080E931C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9328 @ =gPlayerParty - adds r0, r1 - movs r1, 0x34 - b _080E9346 - .align 2, 0 -_080E9328: .4byte gPlayerParty -_080E932C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9338 @ =gPlayerParty - adds r0, r1 - movs r1, 0x35 - b _080E9346 - .align 2, 0 -_080E9338: .4byte gPlayerParty -_080E933C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9360 @ =gPlayerParty - adds r0, r1 - movs r1, 0x36 -_080E9346: - bl GetMonData - strb r0, [r7] - movs r6, 0x1 -_080E934E: - adds r0, r6, 0 - add sp, 0x90 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080E9360: .4byte gPlayerParty - thumb_func_end CopyOakOldManMonData - - thumb_func_start OakOldManHandleGetRawMonData -OakOldManHandleGetRawMonData: @ 80E9364 - push {lr} - bl PlayerHandleGetRawMonData - pop {r0} - bx r0 - thumb_func_end OakOldManHandleGetRawMonData - - thumb_func_start OakOldManHandleSetMonData -OakOldManHandleSetMonData: @ 80E9370 - push {r4,r5,lr} - ldr r1, _080E9394 @ =gBattleBufferA - ldr r0, _080E9398 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _080E93A0 - ldr r0, _080E939C @ =gBattlerPartyIndexes - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - bl SetOakOldManMonData - b _080E93BE - .align 2, 0 -_080E9394: .4byte gBattleBufferA -_080E9398: .4byte gActiveBattler -_080E939C: .4byte gBattlerPartyIndexes -_080E93A0: - ldrb r4, [r1] - movs r5, 0 -_080E93A4: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080E93B2 - adds r0, r5, 0 - bl SetOakOldManMonData -_080E93B2: - lsrs r4, 1 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _080E93A4 -_080E93BE: - bl OakOldManBufferExecCompleted - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end OakOldManHandleSetMonData - - thumb_func_start SetOakOldManMonData -SetOakOldManMonData: @ 80E93C8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080E9400 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - ldr r2, _080E9404 @ =(gBattleBufferA + 3) - adds r3, r0, r2 - adds r6, r3, 0 - subs r1, r2, 0x2 - adds r0, r1 - ldrb r0, [r0] - adds r7, r2, 0 - cmp r0, 0x3B - bls _080E93F4 - bl _080E9D8E -_080E93F4: - lsls r0, 2 - ldr r1, _080E9408 @ =_080E940C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080E9400: .4byte gActiveBattler -_080E9404: .4byte (gBattleBufferA + 3) -_080E9408: .4byte _080E940C - .align 2, 0 -_080E940C: - .4byte _080E94FC - .4byte _080E9694 - .4byte _080E96B4 - .4byte _080E96D4 - .4byte _080E972C - .4byte _080E972C - .4byte _080E972C - .4byte _080E972C - .4byte _080E9754 - .4byte _080E97B8 - .4byte _080E97B8 - .4byte _080E97B8 - .4byte _080E97B8 - .4byte _080E9D8E - .4byte _080E9D8E - .4byte _080E9D8E - .4byte _080E9D8E - .4byte _080E97E8 - .4byte _080E9808 - .4byte _080E9828 - .4byte _080E9848 - .4byte _080E9868 - .4byte _080E9888 - .4byte _080E98A8 - .4byte _080E98C8 - .4byte _080E98E8 - .4byte _080E9908 - .4byte _080E9928 - .4byte _080E9948 - .4byte _080E9968 - .4byte _080E9988 - .4byte _080E99A8 - .4byte _080E9A18 - .4byte _080E9A38 - .4byte _080E9A58 - .4byte _080E9A78 - .4byte _080E9A98 - .4byte _080E9AB8 - .4byte _080E9AD8 - .4byte _080E9AF8 - .4byte _080E9B18 - .4byte _080E9B38 - .4byte _080E9B58 - .4byte _080E9B78 - .4byte _080E9B98 - .4byte _080E9BB8 - .4byte _080E9BD8 - .4byte _080E9BF8 - .4byte _080E9C18 - .4byte _080E9C38 - .4byte _080E9C58 - .4byte _080E9C78 - .4byte _080E9C98 - .4byte _080E9CB8 - .4byte _080E9CD8 - .4byte _080E9CF8 - .4byte _080E9D18 - .4byte _080E9D38 - .4byte _080E9D58 - .4byte _080E9D78 -_080E94FC: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E9690 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - adds r2, r6, 0 - bl SetMonData - adds r2, r6, 0 - adds r2, 0x2E - adds r0, r4, 0 - movs r1, 0xC - bl SetMonData - movs r0, 0 - mov r8, r0 - movs r0, 0x3B - adds r0, r6 - mov r10, r0 - adds r0, r6, 0 - adds r0, 0x2B - str r0, [sp, 0x20] - adds r0, 0x19 - str r0, [sp, 0x28] - adds r0, 0x4 - str r0, [sp, 0x2C] - adds r0, 0x4 - str r0, [sp, 0x30] - subs r0, 0x22 - str r0, [sp, 0x1C] - subs r0, 0x2 - str r0, [sp, 0x18] - adds r0, 0x4 - str r0, [sp, 0x24] - adds r0, r6, 0x2 - str r0, [sp, 0x4] - adds r0, r6, 0x4 - str r0, [sp, 0x8] - adds r0, r6, 0x6 - str r0, [sp, 0xC] - adds r0, 0x2 - str r0, [sp, 0x10] - adds r0, 0x2 - str r0, [sp, 0x14] - mov r9, r4 - adds r7, r6, 0 - adds r7, 0x24 - adds r4, r6, 0 - adds r4, 0xC -_080E9562: - mov r1, r8 - adds r1, 0xD - mov r0, r9 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - mov r0, r9 - adds r2, r7, 0 - bl SetMonData - adds r7, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _080E9562 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E9690 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - mov r2, r10 - bl SetMonData - adds r0, r4, 0 - movs r1, 0x20 - ldr r2, [sp, 0x20] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x19 - ldr r2, [sp, 0x28] - bl SetMonData - ldrb r0, [r6, 0x14] - lsls r0, 27 - lsrs r0, 27 - mov r1, sp - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x27 - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r6, 0x14] - lsls r0, 22 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x28 - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r6, 0x15] - lsls r0, 25 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x29 - mov r2, sp - bl SetMonData - mov r1, sp - ldr r0, [r6, 0x14] - lsls r0, 12 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2A - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r6, 0x16] - lsls r0, 23 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2B - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r6, 0x17] - lsls r0, 26 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2C - mov r2, sp - bl SetMonData - adds r0, r4, 0 - movs r1, 0 - ldr r2, [sp, 0x2C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x37 - ldr r2, [sp, 0x30] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x38 - ldr r2, [sp, 0x1C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x39 - ldr r2, [sp, 0x18] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3A - ldr r2, [sp, 0x24] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3B - ldr r2, [sp, 0x4] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3C - ldr r2, [sp, 0x8] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3D - ldr r2, [sp, 0xC] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3E - ldr r2, [sp, 0x10] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3F - ldr r2, [sp, 0x14] - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9690: .4byte gPlayerParty -_080E9694: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E96AC @ =gPlayerParty - adds r0, r1 - ldr r1, _080E96B0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0xB - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E96AC: .4byte gPlayerParty -_080E96B0: .4byte gActiveBattler -_080E96B4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E96CC @ =gPlayerParty - adds r0, r1 - ldr r1, _080E96D0 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0xC - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E96CC: .4byte gPlayerParty -_080E96D0: .4byte gActiveBattler -_080E96D4: - movs r0, 0 - mov r8, r0 - movs r0, 0xC - adds r0, r3 - mov r9, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _080E9728 @ =gPlayerParty - adds r7, r1, r0 - adds r6, r3, 0 - adds r6, 0x8 - adds r4, r3, 0 -_080E96EE: - mov r1, r8 - adds r1, 0xD - adds r0, r7, 0 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - adds r0, r7, 0 - adds r2, r6, 0 - bl SetMonData - adds r6, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _080E96EE - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9728 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - mov r2, r9 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9728: .4byte gPlayerParty -_080E972C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9748 @ =gPlayerParty - adds r0, r1 - ldr r3, _080E974C @ =gBattleBufferA - ldr r1, _080E9750 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x9 - b _080E97D0 - .align 2, 0 -_080E9748: .4byte gPlayerParty -_080E974C: .4byte gBattleBufferA -_080E9750: .4byte gActiveBattler -_080E9754: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E97B0 @ =gPlayerParty - adds r4, r0 - ldr r5, _080E97B4 @ =gActiveBattler - ldrb r2, [r5] - lsls r2, 9 - adds r2, r7 - adds r0, r4, 0 - movs r1, 0x11 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x12 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x13 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x14 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E97B0: .4byte gPlayerParty -_080E97B4: .4byte gActiveBattler -_080E97B8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E97DC @ =gPlayerParty - adds r0, r1 - ldr r3, _080E97E0 @ =gBattleBufferA - ldr r1, _080E97E4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x8 -_080E97D0: - adds r3, 0x3 - adds r2, r3 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E97DC: .4byte gPlayerParty -_080E97E0: .4byte gBattleBufferA -_080E97E4: .4byte gActiveBattler -_080E97E8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9800 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9804 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9800: .4byte gPlayerParty -_080E9804: .4byte gActiveBattler -_080E9808: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9820 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9824 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x19 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9820: .4byte gPlayerParty -_080E9824: .4byte gActiveBattler -_080E9828: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9840 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9844 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1A - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9840: .4byte gPlayerParty -_080E9844: .4byte gActiveBattler -_080E9848: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9860 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9864 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1B - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9860: .4byte gPlayerParty -_080E9864: .4byte gActiveBattler -_080E9868: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9880 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9884 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1C - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9880: .4byte gPlayerParty -_080E9884: .4byte gActiveBattler -_080E9888: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E98A0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E98A4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1D - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E98A0: .4byte gPlayerParty -_080E98A4: .4byte gActiveBattler -_080E98A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E98C0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E98C4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1E - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E98C0: .4byte gPlayerParty -_080E98C4: .4byte gActiveBattler -_080E98C8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E98E0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E98E4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1F - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E98E0: .4byte gPlayerParty -_080E98E4: .4byte gActiveBattler -_080E98E8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9900 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9904 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x20 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9900: .4byte gPlayerParty -_080E9904: .4byte gActiveBattler -_080E9908: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9920 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9924 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x22 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9920: .4byte gPlayerParty -_080E9924: .4byte gActiveBattler -_080E9928: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9940 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9944 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x23 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9940: .4byte gPlayerParty -_080E9944: .4byte gActiveBattler -_080E9948: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9960 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9964 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x24 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9960: .4byte gPlayerParty -_080E9964: .4byte gActiveBattler -_080E9968: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9980 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9984 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x25 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9980: .4byte gPlayerParty -_080E9984: .4byte gActiveBattler -_080E9988: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E99A0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E99A4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x26 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E99A0: .4byte gPlayerParty -_080E99A4: .4byte gActiveBattler -_080E99A8: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _080E9A10 @ =gPlayerParty - adds r4, r0 - ldr r5, _080E9A14 @ =gActiveBattler - ldrb r2, [r5] - lsls r2, 9 - adds r2, r7 - adds r0, r4, 0 - movs r1, 0x27 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x28 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x29 - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2A - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2B - bl SetMonData - ldrb r2, [r5] - lsls r2, 9 - adds r0, r7, 0x5 - adds r2, r0 - adds r0, r4, 0 - b _080E9AC8 - .align 2, 0 -_080E9A10: .4byte gPlayerParty -_080E9A14: .4byte gActiveBattler -_080E9A18: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9A30 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9A34 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x27 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9A30: .4byte gPlayerParty -_080E9A34: .4byte gActiveBattler -_080E9A38: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9A50 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9A54 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x28 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9A50: .4byte gPlayerParty -_080E9A54: .4byte gActiveBattler -_080E9A58: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9A70 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9A74 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x29 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9A70: .4byte gPlayerParty -_080E9A74: .4byte gActiveBattler -_080E9A78: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9A90 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9A94 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2A - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9A90: .4byte gPlayerParty -_080E9A94: .4byte gActiveBattler -_080E9A98: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9AB0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9AB4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2B - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9AB0: .4byte gPlayerParty -_080E9AB4: .4byte gActiveBattler -_080E9AB8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9AD0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9AD4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 -_080E9AC8: - movs r1, 0x2C - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9AD0: .4byte gPlayerParty -_080E9AD4: .4byte gActiveBattler -_080E9AD8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9AF0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9AF4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9AF0: .4byte gPlayerParty -_080E9AF4: .4byte gActiveBattler -_080E9AF8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9B10 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9B14 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x9 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9B10: .4byte gPlayerParty -_080E9B14: .4byte gActiveBattler -_080E9B18: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9B30 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9B34 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x37 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9B30: .4byte gPlayerParty -_080E9B34: .4byte gActiveBattler -_080E9B38: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9B50 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9B54 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x38 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9B50: .4byte gPlayerParty -_080E9B54: .4byte gActiveBattler -_080E9B58: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9B70 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9B74 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x39 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9B70: .4byte gPlayerParty -_080E9B74: .4byte gActiveBattler -_080E9B78: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9B90 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9B94 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3A - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9B90: .4byte gPlayerParty -_080E9B94: .4byte gActiveBattler -_080E9B98: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9BB0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9BB4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3B - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9BB0: .4byte gPlayerParty -_080E9BB4: .4byte gActiveBattler -_080E9BB8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9BD0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9BD4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3C - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9BD0: .4byte gPlayerParty -_080E9BD4: .4byte gActiveBattler -_080E9BD8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9BF0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9BF4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3D - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9BF0: .4byte gPlayerParty -_080E9BF4: .4byte gActiveBattler -_080E9BF8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9C10 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9C14 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3E - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9C10: .4byte gPlayerParty -_080E9C14: .4byte gActiveBattler -_080E9C18: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9C30 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9C34 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3F - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9C30: .4byte gPlayerParty -_080E9C34: .4byte gActiveBattler -_080E9C38: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9C50 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9C54 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x16 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9C50: .4byte gPlayerParty -_080E9C54: .4byte gActiveBattler -_080E9C58: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9C70 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9C74 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x17 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9C70: .4byte gPlayerParty -_080E9C74: .4byte gActiveBattler -_080E9C78: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9C90 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9C94 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x18 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9C90: .4byte gPlayerParty -_080E9C94: .4byte gActiveBattler -_080E9C98: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9CB0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9CB4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x21 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9CB0: .4byte gPlayerParty -_080E9CB4: .4byte gActiveBattler -_080E9CB8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9CD0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9CD4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2F - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9CD0: .4byte gPlayerParty -_080E9CD4: .4byte gActiveBattler -_080E9CD8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9CF0 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9CF4 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x30 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9CF0: .4byte gPlayerParty -_080E9CF4: .4byte gActiveBattler -_080E9CF8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9D10 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9D14 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x32 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9D10: .4byte gPlayerParty -_080E9D14: .4byte gActiveBattler -_080E9D18: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9D30 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9D34 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x33 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9D30: .4byte gPlayerParty -_080E9D34: .4byte gActiveBattler -_080E9D38: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9D50 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9D54 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x34 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9D50: .4byte gPlayerParty -_080E9D54: .4byte gActiveBattler -_080E9D58: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9D70 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9D74 @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x35 - bl SetMonData - b _080E9D8E - .align 2, 0 -_080E9D70: .4byte gPlayerParty -_080E9D74: .4byte gActiveBattler -_080E9D78: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080E9DB8 @ =gPlayerParty - adds r0, r1 - ldr r1, _080E9DBC @ =gActiveBattler - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x36 - bl SetMonData -_080E9D8E: - ldr r2, _080E9DC0 @ =gBattlerPartyIndexes - ldr r0, _080E9DBC @ =gActiveBattler - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _080E9DB8 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080E9DB8: .4byte gPlayerParty -_080E9DBC: .4byte gActiveBattler -_080E9DC0: .4byte gBattlerPartyIndexes - thumb_func_end SetOakOldManMonData - - thumb_func_start OakOldManHandleSetRawMonData -OakOldManHandleSetRawMonData: @ 80E9DC4 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleSetRawMonData - - thumb_func_start OakOldManHandleLoadMonSprite -OakOldManHandleLoadMonSprite: @ 80E9DD0 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleLoadMonSprite - - thumb_func_start OakOldManHandleSwitchInAnim -OakOldManHandleSwitchInAnim: @ 80E9DDC - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleSwitchInAnim - + thumb_func_start OakOldManHandleReturnMonToBall OakOldManHandleReturnMonToBall: @ 80E9DE8 push {r4-r6,lr} @@ -5227,7 +342,7 @@ _080EA060: ldrb r0, [r6] lsls r0, 2 adds r0, r1 - ldr r1, _080EA0F0 @ =sub_80E8A34 + ldr r1, _080EA0F0 @ =CompleteOnBattlerSpriteCallbackDummy2_tmp str r1, [r0] pop {r4-r6} pop {r0} @@ -5241,7 +356,7 @@ _080EA0E0: .4byte gSprites _080EA0E4: .4byte 0x0000ffa0 _080EA0E8: .4byte sub_8033EEC _080EA0EC: .4byte gBattlerControllerFuncs -_080EA0F0: .4byte sub_80E8A34 +_080EA0F0: .4byte CompleteOnBattlerSpriteCallbackDummy2_tmp thumb_func_end OakOldManHandleTrainerSlide thumb_func_start OakOldManHandleTrainerSlideBack @@ -5413,8 +528,8 @@ _080EA244: .4byte gBattlerControllerFuncs _080EA248: .4byte CompleteOnSpecialAnimDone_tmp thumb_func_end OakOldManHandleSuccessBallThrowAnim - thumb_func_start OakOldManHandleBallThrow -OakOldManHandleBallThrow: @ 80EA24C + thumb_func_start OakOldManHandleBallThrowAnim +OakOldManHandleBallThrowAnim: @ 80EA24C push {r4,r5,lr} ldr r1, _080EA294 @ =gBattleBufferA ldr r5, _080EA298 @ =gActiveBattler @@ -5456,7 +571,7 @@ _080EA29C: .4byte gBattleSpritesDataPtr _080EA2A0: .4byte gDoingBattleAnim _080EA2A4: .4byte gBattlerControllerFuncs _080EA2A8: .4byte CompleteOnSpecialAnimDone_tmp - thumb_func_end OakOldManHandleBallThrow + thumb_func_end OakOldManHandleBallThrowAnim thumb_func_start OakOldManHandlePause OakOldManHandlePause: @ 80EA2AC @@ -5910,7 +1025,7 @@ _080EA64C: ldrb r0, [r0] lsls r0, 2 adds r0, r1 - ldr r1, _080EA668 @ =sub_80E7918 + ldr r1, _080EA668 @ =CompleteOnInactiveTextPrinter_tmp _080EA658: str r1, [r0] _080EA65A: @@ -5920,7 +1035,7 @@ _080EA65A: .align 2, 0 _080EA660: .4byte gBattlerControllerFuncs _080EA664: .4byte gActiveBattler -_080EA668: .4byte sub_80E7918 +_080EA668: .4byte CompleteOnInactiveTextPrinter_tmp thumb_func_end OakOldManHandlePrintString thumb_func_start OakOldManHandlePrintSelectionString @@ -6426,7 +1541,7 @@ _080EAA82: ldrb r0, [r0] lsls r0, 2 adds r0, r1 - ldr r1, _080EAAB4 @ =sub_80E88C0 + ldr r1, _080EAAB4 @ =CompleteOnHealthbarDone_tmp str r1, [r0] add sp, 0x4 pop {r3,r4} @@ -6441,7 +1556,7 @@ _080EAAA4: .4byte gPlayerParty _080EAAA8: .4byte gHealthboxSpriteIds _080EAAAC: .4byte gBattlerControllerFuncs _080EAAB0: .4byte gActiveBattler -_080EAAB4: .4byte sub_80E88C0 +_080EAAB4: .4byte CompleteOnHealthbarDone_tmp thumb_func_end OakOldManHandleHealthBarUpdate thumb_func_start OakOldManHandleExpUpdate diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index df188dda0..67964b9b9 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -137,9 +137,6 @@ gUnknown_84020DA:: @ 84020DA gUnknown_84020E6:: @ 84020E6 .incbin "baserom.gba", 0x4020E6, 0x12 -sOakOldManBufferCommands:: @ 84020F8 - .incbin "baserom.gba", 0x4020F8, 0xE4 - .section .rodata.battle_anim_special gUnknown_840BF3C:: @ 840BF3C diff --git a/include/battle.h b/include/battle.h index 4c28c24a0..9545bacff 100644 --- a/include/battle.h +++ b/include/battle.h @@ -510,7 +510,9 @@ struct BattleStruct u8 expGetterBattlerId; u8 field_90; u8 field_91; - u8 AI_monToSwitchIntoId[MAX_BATTLERS_COUNT]; + u8 AI_monToSwitchIntoId[2]; + u8 field_94; + u8 field_95; u8 field_96; u8 field_97; u8 lastTakenMove[MAX_BATTLERS_COUNT * 2 * 2]; // ask gamefreak why they declared it that way diff --git a/include/battle_anim.h b/include/battle_anim.h index 1eb1a7353..9db123f91 100644 --- a/include/battle_anim.h +++ b/include/battle_anim.h @@ -167,6 +167,8 @@ void LaunchStatusAnimation(u8 bank, u8 statusAnimId); u8 ItemIdToBallId(u16 itemId); u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId); u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId); +void sub_80EEFC8(u8 *, u8 *, u8 battlerId); +void sub_80EF0E0(u8 batterId); // battle_anim_mons.c extern const struct MonCoords gCastformFrontSpriteCoords[]; diff --git a/include/item.h b/include/item.h index 69560a0e5..dd6271d13 100644 --- a/include/item.h +++ b/include/item.h @@ -37,7 +37,6 @@ void CopyItemNameHandlePlural(u16 itemId, u8 *string, u32 quantity); bool8 IsBagPocketNonEmpty(u8 pocket); bool8 CheckBagHasItem(u16 itemId, u16 count); bool8 CheckBagHasSpace(u16 itemId, u16 count); -bool8 AddBagItem(u16 itemId, u16 count); bool8 RemoveBagItem(u16 itemId, u16 count); u8 GetPocketByItemId(u16 itemId); void ClearItemSlots(struct ItemSlot *itemSlots, u8 b); diff --git a/include/item_menu.h b/include/item_menu.h index 166906ebe..d12b9f394 100644 --- a/include/item_menu.h +++ b/include/item_menu.h @@ -36,6 +36,7 @@ void ItemMenu_SetExitCallback(void (*)(void)); void DisplayItemMessageInBag(u8 taskId, u8 bgId, const u8 * string, TaskFunc followUpFunc); void sub_810A1F8(u8 taskId); void sub_8107ECC(void); +void sub_810AF74(void); void sub_8108DC8(u8 pocketId); void sub_81089F4(u8 pocketId); void sub_8107DB4(u8 menuType, u8 pocket, MainCallback callback); diff --git a/include/strings.h b/include/strings.h index 8f3da98cf..4b96a95a9 100644 --- a/include/strings.h +++ b/include/strings.h @@ -227,6 +227,17 @@ extern const u8 gText_WhatWillPkmnDo[]; // battle_script_commands extern const u8 gText_BattleYesNoChoice[]; +// battle_controller_oak_old_man +extern const u8 gUnknown_83FDAE2[]; +extern const u8 gUnknown_83FDB92[]; +extern const u8 gUnknown_83FDBEF[]; +extern const u8 gUnknown_83FDC58[]; +extern const u8 gUnknown_83FDC95[]; +extern const u8 gUnknown_83FDD23[]; +extern const u8 gUnknown_83FDD64[]; +extern const u8 gUnknown_83FDDEB[]; +extern const u8 gUnknown_83FDCD2[]; + // credits extern const u8 gString_Dummy[]; extern const u8 gString_PokemonFireRed_Staff[]; // FR diff --git a/ld_script.txt b/ld_script.txt index d9694130a..3538f70bd 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -208,6 +208,7 @@ SECTIONS { asm/learn_move.o(.text); src/fldeff_softboiled.o(.text); asm/battle_tower.o(.text); + src/battle_controller_oak_old_man.o(.text); asm/battle_controller_oak.o(.text); src/player_pc.o(.text); src/intro.o(.text); @@ -457,6 +458,7 @@ SECTIONS { data/data_83FECCC.o(.rodata); src/battle_controller_safari.o(.rodata); data/data_83FECCC.o(.rodata.83FEDE4); + src/battle_controller_oak_old_man.o(.rodata); src/player_pc.o(.rodata); src/intro.o(.rodata); data/data_83FECCC.o(.rodata.battle_anim_special); diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c new file mode 100644 index 000000000..ee0ac7ef9 --- /dev/null +++ b/src/battle_controller_oak_old_man.c @@ -0,0 +1,1556 @@ +#include "global.h" +#include "task.h" +#include "pokemon.h" +#include "pokeball.h" +#include "party_menu.h" +#include "bg.h" +#include "data.h" +#include "palette.h" +#include "util.h" +#include "m4a.h" +#include "link.h" +#include "sound.h" +#include "item.h" +#include "item_menu.h" +#include "text.h" +#include "strings.h" +#include "string_util.h" +#include "window.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_controllers.h" +#include "battle_interface.h" +#include "battle_message.h" +#include "reshow_battle_screen.h" +#include "constants/songs.h" +#include "constants/items.h" + +void OakOldManHandleGetMonData(void); +void OakOldManHandleGetRawMonData(void); +void OakOldManHandleSetMonData(void); +void OakOldManHandleSetRawMonData(void); +void OakOldManHandleLoadMonSprite(void); +void OakOldManHandleSwitchInAnim(void); +void OakOldManHandleReturnMonToBall(void); +void OakOldManHandleDrawTrainerPic(void); +void OakOldManHandleTrainerSlide(void); +void OakOldManHandleTrainerSlideBack(void); +void OakOldManHandleFaintAnimation(void); +void OakOldManHandlePaletteFade(void); +void OakOldManHandleSuccessBallThrowAnim(void); +void OakOldManHandleBallThrowAnim(void); +void OakOldManHandlePause(void); +void OakOldManHandleMoveAnimation(void); +void OakOldManHandlePrintString(void); +void OakOldManHandlePrintSelectionString(void); +void OakOldManHandleChooseAction(void); +void OakOldManHandleUnknownYesNoBox(void); +void OakOldManHandleChooseMove(void); +void OakOldManHandleChooseItem(void); +void OakOldManHandleChoosePokemon(void); +void OakOldManHandleCmd23(void); +void OakOldManHandleHealthBarUpdate(void); +void OakOldManHandleExpUpdate(void); +void OakOldManHandleStatusIconUpdate(void); +void OakOldManHandleStatusAnimation(void); +void OakOldManHandleStatusXor(void); +void OakOldManHandleDataTransfer(void); +void OakOldManHandleDMA3Transfer(void); +void OakOldManHandlePlayBGM(void); +void OakOldManHandleCmd32(void); +void OakOldManHandleTwoReturnValues(void); +void OakOldManHandleChosenMonReturnValue(void); +void OakOldManHandleOneReturnValue(void); +void OakOldManHandleOneReturnValue_Duplicate(void); +void OakOldManHandleCmd37(void); +void OakOldManHandleCmd38(void); +void OakOldManHandleCmd39(void); +void OakOldManHandleCmd40(void); +void OakOldManHandleHitAnimation(void); +void OakOldManHandleCmd42(void); +void OakOldManHandlePlaySE(void); +void OakOldManHandlePlayFanfare(void); +void OakOldManHandleFaintingCry(void); +void OakOldManHandleIntroSlide(void); +void OakOldManHandleIntroTrainerBallThrow(void); +void OakOldManHandleDrawPartyStatusSummary(void); +void OakOldManHandleHidePartyStatusSummary(void); +void OakOldManHandleEndBounceEffect(void); +void OakOldManHandleSpriteInvisibility(void); +void OakOldManHandleBattleAnimation(void); +void OakOldManHandleLinkStandbyMsg(void); +void OakOldManHandleResetActionMoveSelection(void); +void OakOldManHandleCmd55(void); +void OakOldManCmdEnd(void); + +void OakOldManBufferRunCommand(void); +void OakOldManBufferExecCompleted(void); +void WaitForMonSelection_tmp(void); +void CompleteWhenChoseItem_tmp(void); +void sub_80E8704(void); +void sub_80E7CD8(void); +void sub_80E835C(void); +void Task_LaunchLvlUpAnim_tmp(u8 taskId); +void DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp(u8 taskId); +void CompleteOnInactiveTextPrinter2_tmp(void); +void Task_PrepareToGiveExpWithExpBar_tmp(u8 taskId); +void sub_80E804C(u8 taskId); +void Task_UpdateLvlInHealthbox_tmp(u8 taskId); +void sub_80EB524(void); +void sub_80EB30C(void); +void sub_80E85D4(const u8 *text, u8 a1); +u32 CopyOakOldManMonData(u8 monId, u8 *dst); +void SetOakOldManMonData(u8 monId); + +void (*const sOakOldManBufferCommands[CONTROLLER_CMDS_COUNT])(void) = +{ + OakOldManHandleGetMonData, + OakOldManHandleGetRawMonData, + OakOldManHandleSetMonData, + OakOldManHandleSetRawMonData, + OakOldManHandleLoadMonSprite, + OakOldManHandleSwitchInAnim, + OakOldManHandleReturnMonToBall, + OakOldManHandleDrawTrainerPic, + OakOldManHandleTrainerSlide, + OakOldManHandleTrainerSlideBack, + OakOldManHandleFaintAnimation, + OakOldManHandlePaletteFade, + OakOldManHandleSuccessBallThrowAnim, + OakOldManHandleBallThrowAnim, + OakOldManHandlePause, + OakOldManHandleMoveAnimation, + OakOldManHandlePrintString, + OakOldManHandlePrintSelectionString, + OakOldManHandleChooseAction, + OakOldManHandleUnknownYesNoBox, + OakOldManHandleChooseMove, + OakOldManHandleChooseItem, + OakOldManHandleChoosePokemon, + OakOldManHandleCmd23, + OakOldManHandleHealthBarUpdate, + OakOldManHandleExpUpdate, + OakOldManHandleStatusIconUpdate, + OakOldManHandleStatusAnimation, + OakOldManHandleStatusXor, + OakOldManHandleDataTransfer, + OakOldManHandleDMA3Transfer, + OakOldManHandlePlayBGM, + OakOldManHandleCmd32, + OakOldManHandleTwoReturnValues, + OakOldManHandleChosenMonReturnValue, + OakOldManHandleOneReturnValue, + OakOldManHandleOneReturnValue_Duplicate, + OakOldManHandleCmd37, + OakOldManHandleCmd38, + OakOldManHandleCmd39, + OakOldManHandleCmd40, + OakOldManHandleHitAnimation, + OakOldManHandleCmd42, + OakOldManHandlePlaySE, + OakOldManHandlePlayFanfare, + OakOldManHandleFaintingCry, + OakOldManHandleIntroSlide, + OakOldManHandleIntroTrainerBallThrow, + OakOldManHandleDrawPartyStatusSummary, + OakOldManHandleHidePartyStatusSummary, + OakOldManHandleEndBounceEffect, + OakOldManHandleSpriteInvisibility, + OakOldManHandleBattleAnimation, + OakOldManHandleLinkStandbyMsg, + OakOldManHandleResetActionMoveSelection, + OakOldManHandleCmd55, + OakOldManCmdEnd, +}; + +void nullsub_81(void) +{ +} + +void SetControllerToOakOrOldMan(void) +{ + gBattlerControllerFuncs[gActiveBattler] = OakOldManBufferRunCommand; + gBattleStruct->field_94 = 0; + gBattleStruct->field_95 = 0; + gBattleStruct->field_96 = 0; + gBattleStruct->field_97 = 0; +} + +void OakOldManBufferRunCommand(void) +{ + if (gBattleControllerExecFlags & gBitTable[gActiveBattler]) + { + if (gBattleBufferA[gActiveBattler][0] < ARRAY_COUNT(sOakOldManBufferCommands)) + sOakOldManBufferCommands[gBattleBufferA[gActiveBattler][0]](); + else + OakOldManBufferExecCompleted(); + } +} + +void HandleInputChooseAction_tmp(void) +{ + u16 itemId = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + + DoBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX, 7, 1); + DoBounceEffect(gActiveBattler, BOUNCE_MON, 7, 1); + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + + switch (gActionSelectionCursor[gActiveBattler]) + { + case 0: + BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0); + break; + case 1: + BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0); + break; + case 2: + BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); + break; + case 3: + BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0); + break; + } + OakOldManBufferExecCompleted(); + } + else if (JOY_NEW(DPAD_LEFT)) + { + if (gActionSelectionCursor[gActiveBattler] & 1) // if is B_ACTION_USE_ITEM or B_ACTION_RUN + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 1; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(DPAD_RIGHT)) + { + if (!(gActionSelectionCursor[gActiveBattler] & 1)) // if is B_ACTION_USE_MOVE or B_ACTION_SWITCH + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 1; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(DPAD_UP)) + { + if (gActionSelectionCursor[gActiveBattler] & 2) // if is B_ACTION_SWITCH or B_ACTION_RUN + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 2; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(DPAD_DOWN)) + { + if (!(gActionSelectionCursor[gActiveBattler] & 2)) // if is B_ACTION_USE_MOVE or B_ACTION_USE_ITEM + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] ^= 2; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + } + else if (JOY_NEW(B_BUTTON)) + { + if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT + && !(gAbsentBattlerFlags & gBitTable[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]) + && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + if (gBattleBufferA[gActiveBattler][1] == B_ACTION_USE_ITEM) + { + // Add item to bag if it is a ball + if (itemId <= ITEM_PREMIER_BALL) + AddBagItem(itemId, 1); + else + return; + } + PlaySE(SE_SELECT); + BtlController_EmitTwoReturnValues(1, B_ACTION_CANCEL_PARTNER, 0); + OakOldManBufferExecCompleted(); + } + } + else if (JOY_NEW(START_BUTTON)) + { + SwapHpBarsWithHpText(); + } +} + +void sub_80E7844(void) +{ + switch (gBattleStruct->field_94) + { + case 0: + gBattleStruct->field_96 = 64; + ++gBattleStruct->field_94; + // fall through + case 1: + if (--gBattleStruct->field_96 == 0) + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(0); + ActionSelectionCreateCursorAt(1, 0); + gBattleStruct->field_96 = 64; + ++gBattleStruct->field_94; + } + break; + case 2: + if (--gBattleStruct->field_96 == 0) + { + PlaySE(SE_SELECT); + BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0); + OakOldManBufferExecCompleted(); + } + break; + } +} + +void CompleteOnBattlerSpriteCallbackDummy_tmp(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + OakOldManBufferExecCompleted(); +} + +void CompleteOnInactiveTextPrinter_tmp(void) +{ + if (!IsTextPrinterActive(0)) + OakOldManBufferExecCompleted(); +} + +void sub_80E7930(void) +{ + if (!gPaletteFade.active) + { + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } +} + +void CompleteOnSpecialAnimDone_tmp(void) +{ + if (!gDoingBattleAnim) + OakOldManBufferExecCompleted(); +} + +void sub_80E7988(void) +{ + HandleInputChooseMove(); + if (!(gBattleControllerExecFlags & gBitTable[gActiveBattler])) + OakOldManBufferExecCompleted(); +} + +void OpenPartyMenuToChooseMon_tmp(void) +{ + if (!gPaletteFade.active) + { + u8 caseId; + + gBattlerControllerFuncs[gActiveBattler] = WaitForMonSelection_tmp; + caseId = gTasks[gUnknown_3004FFC[gActiveBattler]].data[0]; + DestroyTask(gUnknown_3004FFC[gActiveBattler]); + FreeAllWindowBuffers(); + OpenPartyMenuInBattle(caseId); + } +} + +void WaitForMonSelection_tmp(void) +{ + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) + { + if (gUnknown_203B0C0 == 1) + BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gUnknown_203B0DC); + else + BtlController_EmitChosenMonReturnValue(1, 6, NULL); + OakOldManBufferExecCompleted(); + } +} + +void OpenBagAndChooseItem_tmp(void) +{ + if (!gPaletteFade.active) + { + gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChoseItem_tmp; + nullsub_44(); + FreeAllWindowBuffers(); + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + sub_8107ECC(); + else + sub_810AF74(); + } +} + +void CompleteWhenChoseItem_tmp(void) +{ + if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) + { + if (!sub_80EB2E0(4) + && gSpecialVar_ItemId == ITEM_POTION + && gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + sub_80EB2F4(4); + gBattlerControllerFuncs[gActiveBattler] = sub_80E8704; + } + else + { + BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId); + OakOldManBufferExecCompleted(); + } + } +} + +void sub_80E7B4C(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) + sub_80F1720(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 + && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + sub_80F1720(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) + { + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler ^ BIT_FLANK]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK], + &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler ^ BIT_FLANK); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler ^ BIT_FLANK]); + } + DestroySprite(&gSprites[gUnknown_3004FFC[gActiveBattler]]); + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], + &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], + HEALTHBOX_ALL); + sub_804BD94(gActiveBattler); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + gBattleSpritesDataPtr->animationData->field_9_x1 = 0; + gBattlerControllerFuncs[gActiveBattler] = sub_80E7CD8; + } +} + +void sub_80E7CD8(void) +{ + bool32 r4 = FALSE; + + if (gSprites[gHealthboxSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + r4 = TRUE; + if (r4 + && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 + && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 = 0; + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + CreateTask(c3_0802FDF4, 10); + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = sub_80E835C; + } +} + +#define tExpTask_monId data[0] +#define tExpTask_gainedExp data[1] +#define tExpTask_battler data[2] +#define tExpTask_frames data[10] + +void Task_GiveExpToMon_tmp(u8 taskId) +{ + u32 monId = (u8)(gTasks[taskId].tExpTask_monId); + u8 battlerId = gTasks[taskId].tExpTask_battler; + s16 gainedExp = gTasks[taskId].tExpTask_gainedExp; + + if (IsDoubleBattle() == TRUE || monId != gBattlerPartyIndexes[battlerId]) // Give exp without moving the expbar. + { + struct Pokemon *mon = &gPlayerParty[monId]; + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u8 level = GetMonData(mon, MON_DATA_LEVEL); + u32 currExp = GetMonData(mon, MON_DATA_EXP); + u32 nextLvlExp = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + + if (currExp + gainedExp >= nextLvlExp) + { + u8 savedActiveBattler; + + SetMonData(mon, MON_DATA_EXP, &nextLvlExp); + CalculateMonStats(mon); + gainedExp -= nextLvlExp - currExp; + savedActiveBattler = gActiveBattler; + gActiveBattler = battlerId; + BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); + gActiveBattler = savedActiveBattler; + if (IsDoubleBattle() == TRUE + && ((u16)(monId) == gBattlerPartyIndexes[battlerId] || (u16)(monId) == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])) + gTasks[taskId].func = Task_LaunchLvlUpAnim_tmp; + else + gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp; + } + else + { + currExp += gainedExp; + SetMonData(mon, MON_DATA_EXP, &currExp); + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2_tmp; + DestroyTask(taskId); + } + } + else + { + gTasks[taskId].func = Task_PrepareToGiveExpWithExpBar_tmp; + } +} + +void Task_PrepareToGiveExpWithExpBar_tmp(u8 taskId) +{ + u8 monIndex = gTasks[taskId].tExpTask_monId; + s32 gainedExp = gTasks[taskId].tExpTask_gainedExp; + u8 battlerId = gTasks[taskId].tExpTask_battler; + struct Pokemon *mon = &gPlayerParty[monIndex]; + u8 level = GetMonData(mon, MON_DATA_LEVEL); + u16 species = GetMonData(mon, MON_DATA_SPECIES); + u32 exp = GetMonData(mon, MON_DATA_EXP); + u32 currLvlExp = gExperienceTables[gBaseStats[species].growthRate][level]; + u32 expToNextLvl; + + exp -= currLvlExp; + expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp; + SetBattleBarStruct(battlerId, gHealthboxSpriteIds[battlerId], expToNextLvl, exp, -gainedExp); + PlaySE(SE_EXP); + gTasks[taskId].func = sub_80E804C; +} + +void sub_80E804C(u8 taskId) +{ + if (gTasks[taskId].tExpTask_frames < 13) + { + ++gTasks[taskId].tExpTask_frames; + } + else + { + u8 monId = gTasks[taskId].tExpTask_monId; + s16 gainedExp = gTasks[taskId].tExpTask_gainedExp; + u8 battlerId = gTasks[taskId].tExpTask_battler; + s16 newExpPoints; + + newExpPoints = MoveBattleBar(battlerId, gHealthboxSpriteIds[battlerId], EXP_BAR, 0); + SetHealthboxSpriteVisible(gHealthboxSpriteIds[battlerId]); + if (newExpPoints == -1) // The bar has been filled with given exp points. + { + u8 level; + s32 currExp; + u16 species; + s32 expOnNextLvl; + + m4aSongNumStop(SE_EXP); + level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + currExp = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); + species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); + expOnNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1]; + if (currExp + gainedExp >= expOnNextLvl) + { + u8 savedActiveBattler; + + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &expOnNextLvl); + CalculateMonStats(&gPlayerParty[monId]); + gainedExp -= expOnNextLvl - currExp; + savedActiveBattler = gActiveBattler; + gActiveBattler = battlerId; + BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); + gActiveBattler = savedActiveBattler; + gTasks[taskId].func = Task_LaunchLvlUpAnim_tmp; + } + else + { + currExp += gainedExp; + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &currExp); + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2_tmp; + DestroyTask(taskId); + } + } + } +} + +void Task_LaunchLvlUpAnim_tmp(u8 taskId) +{ + u8 battlerId = gTasks[taskId].tExpTask_battler; + u8 monIndex = gTasks[taskId].tExpTask_monId; + + if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]) + battlerId ^= BIT_FLANK; + InitAndLaunchSpecialAnimation(battlerId, battlerId, battlerId, B_ANIM_LVL_UP); + gTasks[taskId].func = Task_UpdateLvlInHealthbox_tmp; +} + +void Task_UpdateLvlInHealthbox_tmp(u8 taskId) +{ + u8 battlerId = gTasks[taskId].tExpTask_battler; + + if (!gBattleSpritesDataPtr->healthBoxesData[battlerId].specialAnimActive) + { + u8 monIndex = gTasks[taskId].tExpTask_monId; + + GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value. + if (IsDoubleBattle() == TRUE && monIndex == gBattlerPartyIndexes[battlerId ^ BIT_FLANK]) + UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId ^ BIT_FLANK], &gPlayerParty[monIndex], HEALTHBOX_ALL); + else + UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId], &gPlayerParty[monIndex], HEALTHBOX_ALL); + gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp; + } +} + +void DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp(u8 taskId) +{ + u8 monIndex = gTasks[taskId].tExpTask_monId; + u8 battlerId; + + GetMonData(&gPlayerParty[monIndex], MON_DATA_LEVEL); // Unused return value + battlerId = gTasks[taskId].tExpTask_battler; + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2_tmp; + DestroyTask(taskId); +} + +void sub_80E82F4(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT) + { + FreeOamMatrix(gSprites[gBattlerSpriteIds[gActiveBattler]].oam.matrixNum); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + OakOldManBufferExecCompleted(); + } +} + +void sub_80E835C(void) +{ + u32 mask; + + switch (gBattleStruct->field_94) + { + case 0: + if (!gPaletteFade.active) + { + sub_80EEFC8(&gBattleStruct->field_95, &gBattleStruct->field_97, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)); + BeginNormalPaletteFade(0xFFFFFF7E, + 4, + 0, + 8, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 1: + if (!gPaletteFade.active) + { + sub_80EB30C(); + ++gBattleStruct->field_94; + } + break; + case 2: + BattleStringExpandPlaceholdersToDisplayedString(gUnknown_83FDAE2); + BattlePutTextOnWindow(gDisplayedStringBattle, 24); + ++gBattleStruct->field_94; + break; + case 3: + if (!IsTextPrinterActive(24)) + { + mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_97]) << 16; + BeginNormalPaletteFade(mask, + 4, + 8, + 0, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 4: + if (!gPaletteFade.active) + { + BattleStringExpandPlaceholdersToDisplayedString(gUnknown_83FDB92); + BattlePutTextOnWindow(gDisplayedStringBattle, 24); + ++gBattleStruct->field_94; + } + break; + case 5: + if (!IsTextPrinterActive(24)) + { + mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_97]) << 16; + BeginNormalPaletteFade(mask, + 4, + 0, + 8, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 6: + if (!gPaletteFade.active) + { + BattleStringExpandPlaceholdersToDisplayedString(gUnknown_83FDBEF); + BattlePutTextOnWindow(gDisplayedStringBattle, 24); + ++gBattleStruct->field_94; + } + break; + case 7: + if (!IsTextPrinterActive(24)) + { + BeginNormalPaletteFade(0xFFFFFF7E, + 4, + 8, + 0, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 8: + if (!gPaletteFade.active) + { + sub_80EF0E0(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)); + sub_80EB524(); + gBattleStruct->field_94 = 0; + OakOldManBufferExecCompleted(); + } + break; + } +} + +void sub_80E8570(void) +{ + sub_80E85D4(gUnknown_83FDC58, 1); +} + +void sub_80E8584(void) +{ + sub_80E85D4(gUnknown_83FDC95, 64); +} + +void sub_80E8598(void) +{ + sub_80E85D4(gUnknown_83FDD23, 1); +} + +void sub_80E85AC(void) +{ + sub_80E85D4(gUnknown_83FDD64, 64); +} + +void sub_80E85C0(void) +{ + sub_80E85D4(gUnknown_83FDDEB, 64); +} + +void sub_80E85D4(const u8 *text, u8 a2) +{ + switch (gBattleStruct->field_94) + { + case 0: + if (!IsTextPrinterActive(0)) + { + gBattleStruct->field_97 = a2; + ++gBattleStruct->field_94; + } + break; + case 1: + if (--gBattleStruct->field_97 == 0) + { + BeginNormalPaletteFade(0xFFFFFF7E, + 4, + 0, + 8, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 2: + if (!gPaletteFade.active) + { + sub_80EB30C(); + ++gBattleStruct->field_94; + } + break; + case 3: + BattleStringExpandPlaceholdersToDisplayedString(text); + BattlePutTextOnWindow(gDisplayedStringBattle, 24); + ++gBattleStruct->field_94; + break; + case 4: + if (!IsTextPrinterActive(24)) + { + BeginNormalPaletteFade(0xFFFFFF7E, + 4, + 8, + 0, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 5: + if (!gPaletteFade.active) + { + sub_80EB524(); + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + OakOldManBufferExecCompleted(); + else + OpponentBufferExecCompleted(); + gBattleCommunication[MSG_DISPLAY] = 0; + gBattleStruct->field_94 = 0; + } + break; + } +} + +void sub_80E8704(void) +{ + u32 mask; + + switch (gBattleStruct->field_94) + { + case 0: + if (!gPaletteFade.active) + { + sub_80EEFC8(&gBattleStruct->field_95, &gBattleStruct->field_97, gActiveBattler); + BeginNormalPaletteFade(0xFFFFFF7E, + 4, + 0, + 8, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 1: + if (!gPaletteFade.active) + { + mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_97]) << 16; + BeginNormalPaletteFade(mask, + 4, + 8, + 0, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 2: + if (!gPaletteFade.active) + { + sub_80EB30C(); + ++gBattleStruct->field_94; + } + break; + case 3: + BattleStringExpandPlaceholdersToDisplayedString(gUnknown_83FDCD2); + BattlePutTextOnWindow(gDisplayedStringBattle, 24); + ++gBattleStruct->field_94; + break; + case 4: + if (!IsTextPrinterActive(24)) + { + mask = (gBitTable[gBattleStruct->field_95] | gBitTable[gBattleStruct->field_97]) << 16; + BeginNormalPaletteFade(mask, + 4, + 0, + 8, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 5: + if (!gPaletteFade.active) + { + BeginNormalPaletteFade(0xFFFFFF7E, + 4, + 8, + 0, + RGB_BLACK); + ++gBattleStruct->field_94; + } + break; + case 6: + if (!gPaletteFade.active) + { + sub_80EB524(); + BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId); + OakOldManBufferExecCompleted(); + gBattleStruct->field_94 = 0; + } + break; + } +} + +void CompleteOnHealthbarDone_tmp(void) +{ + s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0); + + SetHealthboxSpriteVisible(gHealthboxSpriteIds[gActiveBattler]); + if (hpValue != -1) + { + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], hpValue, HP_CURRENT); + } + else + { + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + OakOldManBufferExecCompleted(); + } +} + +void CompleteOnInactiveTextPrinter2_tmp(void) +{ + if (!IsTextPrinterActive(0)) + OakOldManBufferExecCompleted(); +} + +void DoHitAnimBlinkSpriteEffect_tmp(void) +{ + u8 spriteId = gBattlerSpriteIds[gActiveBattler]; + + if (gSprites[spriteId].data[1] == 32) + { + gSprites[spriteId].data[1] = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = FALSE; + OakOldManBufferExecCompleted(); + } + else + { + if ((gSprites[spriteId].data[1] % 4) == 0) + gSprites[spriteId].invisible ^= 1; + ++gSprites[spriteId].data[1]; + } +} + +void sub_80E89C4(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + OakOldManBufferExecCompleted(); + } +} + +void CompleteOnBattlerSpriteCallbackDummy2_tmp(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) + OakOldManBufferExecCompleted(); +} + +void CompleteOnFinishedBattleAnimation_tmp(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive) + OakOldManBufferExecCompleted(); +} + +void OakOldManBufferExecCompleted(void) +{ + gBattlerControllerFuncs[gActiveBattler] = OakOldManBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 playerId = GetMultiplayerId(); + + PrepareBufferDataTransferLink(2, 4, &playerId); + gBattleBufferA[gActiveBattler][0] = CONTROLLER_TERMINATOR_NOP; + } + else + { + gBattleControllerExecFlags &= ~gBitTable[gActiveBattler]; + } +} + +void CompleteOnFinishedStatusAnimation_tmp(void) +{ + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive) + OakOldManBufferExecCompleted(); +} + +void OakOldManHandleGetMonData(void) +{ + u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data + u32 size = 0; + u8 monToCheck; + s32 i; + + if (gBattleBufferA[gActiveBattler][2] == 0) + { + size += CopyOakOldManMonData(gBattlerPartyIndexes[gActiveBattler], monData); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + size += CopyOakOldManMonData(i, monData + size); + monToCheck >>= 1; + } + } + BtlController_EmitDataTransfer(1, size, monData); + OakOldManBufferExecCompleted(); +} + +u32 CopyOakOldManMonData(u8 monId, u8 *dst) +{ + struct BattlePokemon battleMon; + struct MovePpInfo moveData; + u8 nickname[20]; + u8 *src; + s16 data16; + u32 data32; + s32 size = 0; + + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + battleMon.species = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); + battleMon.item = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM); + for (size = 0; size < MAX_MON_MOVES; ++size) + { + battleMon.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size); + battleMon.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size); + } + battleMon.ppBonuses = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES); + battleMon.friendship = GetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP); + battleMon.experience = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); + battleMon.hpIV = GetMonData(&gPlayerParty[monId], MON_DATA_HP_IV); + battleMon.attackIV = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV); + battleMon.defenseIV = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV); + battleMon.speedIV = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV); + battleMon.spAttackIV = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV); + battleMon.spDefenseIV = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV); + battleMon.personality = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY); + battleMon.status1 = GetMonData(&gPlayerParty[monId], MON_DATA_STATUS); + battleMon.level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + battleMon.hp = GetMonData(&gPlayerParty[monId], MON_DATA_HP); + battleMon.maxHP = GetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP); + battleMon.attack = GetMonData(&gPlayerParty[monId], MON_DATA_ATK); + battleMon.defense = GetMonData(&gPlayerParty[monId], MON_DATA_DEF); + battleMon.speed = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED); + battleMon.spAttack = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK); + battleMon.spDefense = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF); + battleMon.isEgg = GetMonData(&gPlayerParty[monId], MON_DATA_IS_EGG); + battleMon.abilityNum = GetMonData(&gPlayerParty[monId], MON_DATA_ABILITY_NUM); + battleMon.otId = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID); + GetMonData(&gPlayerParty[monId], MON_DATA_NICKNAME, nickname); + StringCopy10(battleMon.nickname, nickname); + GetMonData(&gPlayerParty[monId], MON_DATA_OT_NAME, battleMon.otName); + src = (u8 *)&battleMon; + for (size = 0; size < sizeof(battleMon); ++size) + dst[size] = src[size]; + break; + case REQUEST_SPECIES_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_HELDITEM_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MOVES_PP_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + { + moveData.moves[size] = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + size); + moveData.pp[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size); + } + moveData.ppBonuses = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES); + src = (u8 *)(&moveData); + for (size = 0; size < sizeof(moveData); ++size) + dst[size] = src[size]; + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_PP_DATA_BATTLE: + for (size = 0; size < MAX_MON_MOVES; ++size) + dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + size); + dst[size] = GetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES); + ++size; + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE); + size = 1; + break; + case REQUEST_OTID_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_OT_ID); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_EXP_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_EXP); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case REQUEST_HP_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_HP_EV); + size = 1; + break; + case REQUEST_ATK_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV); + size = 1; + break; + case REQUEST_DEF_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV); + size = 1; + break; + case REQUEST_SPEED_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV); + size = 1; + break; + case REQUEST_SPATK_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV); + size = 1; + break; + case REQUEST_SPDEF_EV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV); + size = 1; + break; + case REQUEST_FRIENDSHIP_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP); + size = 1; + break; + case REQUEST_POKERUS_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_POKERUS); + size = 1; + break; + case REQUEST_MET_LOCATION_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION); + size = 1; + break; + case REQUEST_MET_LEVEL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL); + size = 1; + break; + case REQUEST_MET_GAME_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME); + size = 1; + break; + case REQUEST_POKEBALL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL); + size = 1; + break; + case REQUEST_ALL_IVS_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_HP_IV); + dst[1] = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV); + dst[2] = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV); + dst[3] = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV); + dst[4] = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV); + dst[5] = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV); + size = 6; + break; + case REQUEST_HP_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_HP_IV); + size = 1; + break; + case REQUEST_ATK_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV); + size = 1; + break; + case REQUEST_DEF_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV); + size = 1; + break; + case REQUEST_SPEED_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV); + size = 1; + break; + case REQUEST_SPATK_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV); + size = 1; + break; + case REQUEST_SPDEF_IV_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV); + size = 1; + break; + case REQUEST_PERSONALITY_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_CHECKSUM_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_STATUS_BATTLE: + data32 = GetMonData(&gPlayerParty[monId], MON_DATA_STATUS); + dst[0] = (data32 & 0x000000FF); + dst[1] = (data32 & 0x0000FF00) >> 8; + dst[2] = (data32 & 0x00FF0000) >> 16; + dst[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case REQUEST_LEVEL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + size = 1; + break; + case REQUEST_HP_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_MAX_HP_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_ATK_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_ATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_DEF_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_DEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPEED_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPEED); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPATK_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPATK); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_SPDEF_BATTLE: + data16 = GetMonData(&gPlayerParty[monId], MON_DATA_SPDEF); + dst[0] = data16; + dst[1] = data16 >> 8; + size = 2; + break; + case REQUEST_COOL_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_COOL); + size = 1; + break; + case REQUEST_BEAUTY_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY); + size = 1; + break; + case REQUEST_CUTE_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_CUTE); + size = 1; + break; + case REQUEST_SMART_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SMART); + size = 1; + break; + case REQUEST_TOUGH_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_TOUGH); + size = 1; + break; + case REQUEST_SHEEN_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SHEEN); + size = 1; + break; + case REQUEST_COOL_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON); + size = 1; + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON); + size = 1; + break; + case REQUEST_CUTE_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON); + size = 1; + break; + case REQUEST_SMART_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON); + size = 1; + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + dst[0] = GetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON); + size = 1; + break; + } + return size; +} + +void OakOldManHandleGetRawMonData(void) +{ + PlayerHandleGetRawMonData(); +} + +void OakOldManHandleSetMonData(void) +{ + u8 monToCheck; + u8 i; + + if (gBattleBufferA[gActiveBattler][2] == 0) + { + SetOakOldManMonData(gBattlerPartyIndexes[gActiveBattler]); + } + else + { + monToCheck = gBattleBufferA[gActiveBattler][2]; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (monToCheck & 1) + SetOakOldManMonData(i); + monToCheck >>= 1; + } + } + OakOldManBufferExecCompleted(); +} + +void SetOakOldManMonData(u8 monId) +{ + struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3]; + struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3]; + s32 i; + + switch (gBattleBufferA[gActiveBattler][1]) + { + case REQUEST_ALL_BATTLE: + { + u8 iv; + + SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &battlePokemon->species); + SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item); + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]); + } + SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &battlePokemon->ppBonuses); + SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &battlePokemon->friendship); + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &battlePokemon->experience); + iv = battlePokemon->hpIV; + SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &iv); + iv = battlePokemon->attackIV; + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &iv); + iv = battlePokemon->defenseIV; + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &iv); + iv = battlePokemon->speedIV; + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &iv); + iv = battlePokemon->spAttackIV; + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &iv); + iv = battlePokemon->spDefenseIV; + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &iv); + SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &battlePokemon->personality); + SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &battlePokemon->status1); + SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &battlePokemon->level); + SetMonData(&gPlayerParty[monId], MON_DATA_HP, &battlePokemon->hp); + SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &battlePokemon->maxHP); + SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &battlePokemon->attack); + SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &battlePokemon->defense); + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &battlePokemon->speed); + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &battlePokemon->spAttack); + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &battlePokemon->spDefense); + } + break; + case REQUEST_SPECIES_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HELDITEM_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MOVES_PP_BATTLE: + for (i = 0; i < MAX_MON_MOVES; ++i) + { + SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]); + } + SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &moveData->ppBonuses); + break; + case REQUEST_MOVE1_BATTLE: + case REQUEST_MOVE2_BATTLE: + case REQUEST_MOVE3_BATTLE: + case REQUEST_MOVE4_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - REQUEST_MOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PP_DATA_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]); + SetMonData(&gPlayerParty[monId], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]); + break; + case REQUEST_PPMOVE1_BATTLE: + case REQUEST_PPMOVE2_BATTLE: + case REQUEST_PPMOVE3_BATTLE: + case REQUEST_PPMOVE4_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - REQUEST_PPMOVE1_BATTLE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_OTID_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_EXP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_EV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_FRIENDSHIP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKERUS_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LOCATION_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_LEVEL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MET_GAME_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_POKEBALL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ALL_IVS_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]); + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]); + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]); + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]); + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]); + break; + case REQUEST_HP_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_IV_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_PERSONALITY_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CHECKSUM_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_STATUS_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_LEVEL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_HP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_MAX_HP_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_ATK_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_DEF_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPEED_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPATK_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SPDEF_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SHEEN_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_COOL_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_BEAUTY_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_CUTE_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_SMART_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + case REQUEST_TOUGH_RIBBON_BATTLE: + SetMonData(&gPlayerParty[monId], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]); + break; + } + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); +} + +void OakOldManHandleSetRawMonData(void) +{ + OakOldManBufferExecCompleted(); +} + +void OakOldManHandleLoadMonSprite(void) +{ + OakOldManBufferExecCompleted(); +} + +void OakOldManHandleSwitchInAnim(void) +{ + OakOldManBufferExecCompleted(); +} diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 794b83b73..a9173f1a9 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -45,7 +45,7 @@ static void OpponentHandleTrainerSlideBack(void); static void OpponentHandleFaintAnimation(void); static void OpponentHandlePaletteFade(void); static void OpponentHandleSuccessBallThrowAnim(void); -static void OpponentHandleBallThrow(void); +static void OpponentHandleBallThrowAnim(void); static void OpponentHandlePause(void); static void OpponentHandleMoveAnimation(void); static void OpponentHandlePrintString(void); @@ -116,7 +116,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = OpponentHandleFaintAnimation, OpponentHandlePaletteFade, OpponentHandleSuccessBallThrowAnim, - OpponentHandleBallThrow, + OpponentHandleBallThrowAnim, OpponentHandlePause, OpponentHandleMoveAnimation, OpponentHandlePrintString, @@ -1231,7 +1231,7 @@ static void OpponentHandleSuccessBallThrowAnim(void) OpponentBufferExecCompleted(); } -static void OpponentHandleBallThrow(void) +static void OpponentHandleBallThrowAnim(void) { OpponentBufferExecCompleted(); } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index a9bb5bc6e..f8d5958ba 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -839,7 +839,7 @@ void sub_802F6A8(void) else { m4aSongNumStop(SE_HINSI); - gMain.inBattle = 0; + gMain.inBattle = FALSE; gMain.callback1 = gPreBattleCallback1; SetMainCallback2(gMain.savedCallback); } @@ -1318,7 +1318,6 @@ static void WaitForMonSelection(void) BtlController_EmitChosenMonReturnValue(1, gUnknown_203B0C1, gUnknown_203B0DC); else BtlController_EmitChosenMonReturnValue(1, 6, NULL); - if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1) PrintLinkStandbyMsg(); PlayerBufferExecCompleted(); |