diff options
-rw-r--r-- | asm/battle_controller_oak.s | 3002 | ||||
-rw-r--r-- | include/battle_controllers.h | 4 | ||||
-rw-r--r-- | include/constants/battle.h | 62 | ||||
-rw-r--r-- | include/constants/battle_anim.h | 1 | ||||
-rw-r--r-- | include/strings.h | 1 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/battle_controller_oak_old_man.c | 1001 |
7 files changed, 906 insertions, 3166 deletions
diff --git a/asm/battle_controller_oak.s b/asm/battle_controller_oak.s deleted file mode 100644 index 436e1b051..000000000 --- a/asm/battle_controller_oak.s +++ /dev/null @@ -1,3002 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start OakOldManHandleReturnMonToBall -OakOldManHandleReturnMonToBall: @ 80E9DE8 - push {r4-r6,lr} - ldr r0, _080E9E14 @ =gBattleBufferA - ldr r6, _080E9E18 @ =gActiveBattler - ldrb r2, [r6] - lsls r1, r2, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - bne _080E9E24 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x1 - bl InitAndLaunchSpecialAnimation - ldr r0, _080E9E1C @ =gBattlerControllerFuncs - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _080E9E20 @ =sub_80E89C4 - str r0, [r1] - b _080E9E5A - .align 2, 0 -_080E9E14: .4byte gBattleBufferA -_080E9E18: .4byte gActiveBattler -_080E9E1C: .4byte gBattlerControllerFuncs -_080E9E20: .4byte sub_80E89C4 -_080E9E24: - ldr r5, _080E9E60 @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080E9E64 @ =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, _080E9E68 @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl OakOldManBufferExecCompleted -_080E9E5A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E9E60: .4byte gBattlerSpriteIds -_080E9E64: .4byte gSprites -_080E9E68: .4byte gHealthboxSpriteIds - thumb_func_end OakOldManHandleReturnMonToBall - - thumb_func_start OakOldManHandleDrawTrainerPic -OakOldManHandleDrawTrainerPic: @ 80E9E6C - push {r4-r6,lr} - ldr r0, _080E9EC8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080E9EE0 - ldr r4, _080E9ECC @ =gSaveBlock2Ptr - ldr r0, [r4] - ldrb r0, [r0, 0x8] - ldr r6, _080E9ED0 @ =gActiveBattler - ldrb r1, [r6] - bl DecompressTrainerBackPalette - ldr r0, [r4] - ldrb r5, [r0, 0x8] - ldrb r0, [r6] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r0, _080E9ED4 @ =gMultiuseSpriteTemplate - ldr r2, _080E9ED8 @ =gTrainerBackPicCoords - ldr r1, [r4] - ldrb r1, [r1, 0x8] - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r2, r1 - asrs r2, 16 - movs r1, 0x50 - movs r3, 0x1E - bl CreateSprite - ldr r2, _080E9EDC @ =gBattlerSpriteIds - ldrb r1, [r6] - b _080E9F1C - .align 2, 0 -_080E9EC8: .4byte gBattleTypeFlags -_080E9ECC: .4byte gSaveBlock2Ptr -_080E9ED0: .4byte gActiveBattler -_080E9ED4: .4byte gMultiuseSpriteTemplate -_080E9ED8: .4byte gTrainerBackPicCoords -_080E9EDC: .4byte gBattlerSpriteIds -_080E9EE0: - ldr r4, _080E9F8C @ =gActiveBattler - ldrb r1, [r4] - movs r0, 0x5 - bl DecompressTrainerBackPalette - ldrb r0, [r4] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x5 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r0, _080E9F90 @ =gMultiuseSpriteTemplate - ldr r1, _080E9F94 @ =gTrainerBackPicCoords - ldrb r1, [r1, 0x14] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r2, r1 - asrs r2, 16 - movs r1, 0x50 - movs r3, 0x1E - bl CreateSprite - ldr r2, _080E9F98 @ =gBattlerSpriteIds - ldrb r1, [r4] -_080E9F1C: - adds r1, r2 - strb r0, [r1] - ldr r4, _080E9F9C @ =gSprites - ldr r5, _080E9F98 @ =gBattlerSpriteIds - ldr r6, _080E9F8C @ =gActiveBattler - ldrb r3, [r6] - adds r0, r3, r5 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xF0 - strh r1, [r0, 0x24] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080E9FA0 @ =0x0000fffe - strh r1, [r0, 0x2E] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _080E9FA4 @ =sub_8033EEC - str r1, [r0] - ldr r1, _080E9FA8 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080E9FAC @ =CompleteOnBattlerSpriteCallbackDummy_tmp - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080E9F8C: .4byte gActiveBattler -_080E9F90: .4byte gMultiuseSpriteTemplate -_080E9F94: .4byte gTrainerBackPicCoords -_080E9F98: .4byte gBattlerSpriteIds -_080E9F9C: .4byte gSprites -_080E9FA0: .4byte 0x0000fffe -_080E9FA4: .4byte sub_8033EEC -_080E9FA8: .4byte gBattlerControllerFuncs -_080E9FAC: .4byte CompleteOnBattlerSpriteCallbackDummy_tmp - thumb_func_end OakOldManHandleDrawTrainerPic - - thumb_func_start OakOldManHandleTrainerSlide -OakOldManHandleTrainerSlide: @ 80E9FB0 - push {r4-r6,lr} - ldr r0, _080EA00C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EA024 - ldr r4, _080EA010 @ =gSaveBlock2Ptr - ldr r0, [r4] - ldrb r0, [r0, 0x8] - ldr r6, _080EA014 @ =gActiveBattler - ldrb r1, [r6] - bl DecompressTrainerBackPalette - ldr r0, [r4] - ldrb r5, [r0, 0x8] - ldrb r0, [r6] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r0, _080EA018 @ =gMultiuseSpriteTemplate - ldr r2, _080EA01C @ =gTrainerBackPicCoords - ldr r1, [r4] - ldrb r1, [r1, 0x8] - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r2, r1 - asrs r2, 16 - movs r1, 0x50 - movs r3, 0x1E - bl CreateSprite - ldr r2, _080EA020 @ =gBattlerSpriteIds - ldrb r1, [r6] - b _080EA060 - .align 2, 0 -_080EA00C: .4byte gBattleTypeFlags -_080EA010: .4byte gSaveBlock2Ptr -_080EA014: .4byte gActiveBattler -_080EA018: .4byte gMultiuseSpriteTemplate -_080EA01C: .4byte gTrainerBackPicCoords -_080EA020: .4byte gBattlerSpriteIds -_080EA024: - ldr r4, _080EA0D0 @ =gActiveBattler - ldrb r1, [r4] - movs r0, 0x5 - bl DecompressTrainerBackPalette - ldrb r0, [r4] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x5 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r0, _080EA0D4 @ =gMultiuseSpriteTemplate - ldr r1, _080EA0D8 @ =gTrainerBackPicCoords - ldrb r1, [r1, 0x14] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r2, r1 - asrs r2, 16 - movs r1, 0x50 - movs r3, 0x1E - bl CreateSprite - ldr r2, _080EA0DC @ =gBattlerSpriteIds - ldrb r1, [r4] -_080EA060: - adds r1, r2 - strb r0, [r1] - ldr r4, _080EA0E0 @ =gSprites - ldr r5, _080EA0DC @ =gBattlerSpriteIds - ldr r6, _080EA0D0 @ =gActiveBattler - ldrb r3, [r6] - adds r0, r3, r5 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _080EA0E4 @ =0x0000ffa0 - strh r1, [r0, 0x24] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2 - strh r1, [r0, 0x2E] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _080EA0E8 @ =sub_8033EEC - str r1, [r0] - ldr r1, _080EA0EC @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA0F0 @ =CompleteOnBattlerSpriteCallbackDummy2_tmp - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EA0D0: .4byte gActiveBattler -_080EA0D4: .4byte gMultiuseSpriteTemplate -_080EA0D8: .4byte gTrainerBackPicCoords -_080EA0DC: .4byte gBattlerSpriteIds -_080EA0E0: .4byte gSprites -_080EA0E4: .4byte 0x0000ffa0 -_080EA0E8: .4byte sub_8033EEC -_080EA0EC: .4byte gBattlerControllerFuncs -_080EA0F0: .4byte CompleteOnBattlerSpriteCallbackDummy2_tmp - thumb_func_end OakOldManHandleTrainerSlide - - thumb_func_start OakOldManHandleTrainerSlideBack -OakOldManHandleTrainerSlideBack: @ 80EA0F4 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleTrainerSlideBack - - thumb_func_start OakOldManHandleFaintAnimation -OakOldManHandleFaintAnimation: @ 80EA100 - push {r4-r6,lr} - ldr r6, _080EA14C @ =gBattleSpritesDataPtr - ldr r4, [r6] - ldr r5, _080EA150 @ =gActiveBattler - ldrb r2, [r5] - ldr r0, [r4, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r3, r1, r0 - ldrb r0, [r3, 0x4] - cmp r0, 0 - bne _080EA154 - ldr r1, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080EA134 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_080EA134: - ldr r0, [r6] - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - adds r1, 0x1 - strb r1, [r0, 0x4] - b _080EA1CA - .align 2, 0 -_080EA14C: .4byte gBattleSpritesDataPtr -_080EA150: .4byte gActiveBattler -_080EA154: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080EA1CA - strb r4, [r3, 0x4] - ldr r2, _080EA1D0 @ =gBattlerPartyIndexes - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _080EA1D4 @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - movs r1, 0x40 - negs r1, r1 - movs r0, 0x10 - bl PlaySE12WithPanning - ldr r2, _080EA1D8 @ =gSprites - ldr r3, _080EA1DC @ =gBattlerSpriteIds - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r4, [r0, 0x30] - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x5 - strh r1, [r0, 0x32] - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080EA1E0 @ =sub_8012110 - str r1, [r0] - ldr r1, _080EA1E4 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA1E8 @ =sub_80E82F4 - str r1, [r0] -_080EA1CA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EA1D0: .4byte gBattlerPartyIndexes -_080EA1D4: .4byte gPlayerParty -_080EA1D8: .4byte gSprites -_080EA1DC: .4byte gBattlerSpriteIds -_080EA1E0: .4byte sub_8012110 -_080EA1E4: .4byte gBattlerControllerFuncs -_080EA1E8: .4byte sub_80E82F4 - thumb_func_end OakOldManHandleFaintAnimation - - thumb_func_start OakOldManHandlePaletteFade -OakOldManHandlePaletteFade: @ 80EA1EC - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandlePaletteFade - - thumb_func_start OakOldManHandleSuccessBallThrowAnim -OakOldManHandleSuccessBallThrowAnim: @ 80EA1F8 - push {r4,r5,lr} - ldr r0, _080EA238 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x8] - movs r0, 0x4 - strb r0, [r1, 0x8] - ldr r1, _080EA23C @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldr r5, _080EA240 @ =gActiveBattler - ldrb r4, [r5] - movs r0, 0x1 - bl GetBattlerAtPosition - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r4, 0 - movs r3, 0x4 - bl InitAndLaunchSpecialAnimation - ldr r1, _080EA244 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA248 @ =CompleteOnSpecialAnimDone_tmp - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EA238: .4byte gBattleSpritesDataPtr -_080EA23C: .4byte gDoingBattleAnim -_080EA240: .4byte gActiveBattler -_080EA244: .4byte gBattlerControllerFuncs -_080EA248: .4byte CompleteOnSpecialAnimDone_tmp - thumb_func_end OakOldManHandleSuccessBallThrowAnim - - thumb_func_start OakOldManHandleBallThrowAnim -OakOldManHandleBallThrowAnim: @ 80EA24C - push {r4,r5,lr} - ldr r1, _080EA294 @ =gBattleBufferA - ldr r5, _080EA298 @ =gActiveBattler - ldrb r0, [r5] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r1, [r0] - ldr r0, _080EA29C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - strb r1, [r0, 0x8] - ldr r1, _080EA2A0 @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldrb r4, [r5] - movs r0, 0x1 - bl GetBattlerAtPosition - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r4, 0 - movs r3, 0x4 - bl InitAndLaunchSpecialAnimation - ldr r1, _080EA2A4 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA2A8 @ =CompleteOnSpecialAnimDone_tmp - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EA294: .4byte gBattleBufferA -_080EA298: .4byte gActiveBattler -_080EA29C: .4byte gBattleSpritesDataPtr -_080EA2A0: .4byte gDoingBattleAnim -_080EA2A4: .4byte gBattlerControllerFuncs -_080EA2A8: .4byte CompleteOnSpecialAnimDone_tmp - thumb_func_end OakOldManHandleBallThrowAnim - - thumb_func_start OakOldManHandlePause -OakOldManHandlePause: @ 80EA2AC - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandlePause - - thumb_func_start OakOldManHandleMoveAnimation -OakOldManHandleMoveAnimation: @ 80EA2B8 - push {r4-r6,lr} - ldr r0, _080EA38C @ =gBattleBufferA - mov r12, r0 - ldr r6, _080EA390 @ =gActiveBattler - ldrb r2, [r6] - lsls r2, 9 - adds r0, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - mov r1, r12 - adds r1, 0x2 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - ldr r5, _080EA394 @ =gAnimMoveTurn - mov r1, r12 - adds r1, 0x3 - adds r2, r1 - ldrb r1, [r2] - strb r1, [r5] - ldr r4, _080EA398 @ =gAnimMovePower - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x4 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x5 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r4, _080EA39C @ =gAnimMoveDmg - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x6 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x7 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r3, r1 - mov r1, r12 - adds r1, 0x8 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 16 - orrs r3, r1 - mov r1, r12 - adds r1, 0x9 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 24 - orrs r3, r1 - str r3, [r4] - ldr r3, _080EA3A0 @ =gAnimFriendship - ldrb r1, [r6] - lsls r1, 9 - mov r2, r12 - adds r2, 0xA - adds r1, r2 - ldrb r1, [r1] - strb r1, [r3] - ldr r4, _080EA3A4 @ =gWeatherMoveAnim - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0xC - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0xD - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r3, _080EA3A8 @ =gAnimDisableStructPtr - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x10 - adds r2, r1 - str r2, [r3] - ldr r3, _080EA3AC @ =gTransformedPersonalities - ldrb r1, [r6] - lsls r1, 2 - adds r1, r3 - ldr r2, [r2] - str r2, [r1] - ldrb r1, [r5] - bl IsMoveWithoutAnimation - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - beq _080EA3B0 - bl OakOldManBufferExecCompleted - b _080EA3CE - .align 2, 0 -_080EA38C: .4byte gBattleBufferA -_080EA390: .4byte gActiveBattler -_080EA394: .4byte gAnimMoveTurn -_080EA398: .4byte gAnimMovePower -_080EA39C: .4byte gAnimMoveDmg -_080EA3A0: .4byte gAnimFriendship -_080EA3A4: .4byte gWeatherMoveAnim -_080EA3A8: .4byte gAnimDisableStructPtr -_080EA3AC: .4byte gTransformedPersonalities -_080EA3B0: - ldr r0, _080EA3D4 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r3, [r0, 0x4] - ldr r1, _080EA3D8 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA3DC @ =OakOldManDoMoveAnimation - str r1, [r0] -_080EA3CE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EA3D4: .4byte gBattleSpritesDataPtr -_080EA3D8: .4byte gBattlerControllerFuncs -_080EA3DC: .4byte OakOldManDoMoveAnimation - thumb_func_end OakOldManHandleMoveAnimation - - thumb_func_start OakOldManDoMoveAnimation -OakOldManDoMoveAnimation: @ 80EA3E0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r2, _080EA424 @ =gBattleBufferA - ldr r6, _080EA428 @ =gActiveBattler - ldrb r3, [r6] - lsls r1, r3, 9 - adds r0, r2, 0x1 - mov r9, r0 - adds r0, r1, r0 - ldrb r4, [r0] - adds r2, 0x2 - mov r8, r2 - add r1, r8 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - ldr r7, _080EA42C @ =gBattleSpritesDataPtr - ldr r5, [r7] - ldr r1, [r5, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x4] - cmp r2, 0x1 - beq _080EA46A - cmp r2, 0x1 - bgt _080EA430 - cmp r2, 0 - beq _080EA43A - b _080EA520 - .align 2, 0 -_080EA424: .4byte gBattleBufferA -_080EA428: .4byte gActiveBattler -_080EA42C: .4byte gBattleSpritesDataPtr -_080EA430: - cmp r2, 0x2 - beq _080EA494 - cmp r2, 0x3 - beq _080EA4E4 - b _080EA520 -_080EA43A: - ldr r1, [r5] - lsls r0, r3, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080EA456 - adds r0, r3, 0 - adds r1, r3, 0 - adds r2, r3, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_080EA456: - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strb r1, [r0, 0x4] - b _080EA520 -_080EA46A: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080EA520 - movs r0, 0 - bl sub_8035450 - adds r0, r4, 0 - bl DoMoveAnim - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - strb r1, [r0, 0x4] - b _080EA520 -_080EA494: - ldr r0, _080EA4DC @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _080EA4E0 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _080EA520 - movs r0, 0x1 - bl sub_8035450 - ldr r0, [r7] - ldrb r2, [r6] - ldr r1, [r0] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080EA4C8 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x6 - bl InitAndLaunchSpecialAnimation -_080EA4C8: - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x3 - strb r1, [r0, 0x4] - b _080EA520 - .align 2, 0 -_080EA4DC: .4byte gAnimScriptCallback -_080EA4E0: .4byte gAnimScriptActive -_080EA4E4: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080EA520 - bl CopyAllBattleSpritesInvisibilities - ldrb r0, [r6] - lsls r2, r0, 9 - mov r3, r9 - adds r1, r2, r3 - ldrb r1, [r1] - add r2, r8 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - bl TrySetBehindSubstituteSpriteBit - ldr r0, [r7] - ldrb r1, [r6] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strb r4, [r0, 0x4] - bl OakOldManBufferExecCompleted -_080EA520: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end OakOldManDoMoveAnimation - - thumb_func_start OakOldManHandlePrintString -OakOldManHandlePrintString: @ 80EA52C - push {r4,lr} - ldr r0, _080EA55C @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _080EA560 @ =gBattle_BG0_Y - strh r1, [r0] - ldr r0, _080EA564 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - ldr r1, _080EA568 @ =(gBattleBufferA + 2) - adds r4, r0, r1 - ldr r0, _080EA56C @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 2 - ands r0, r1 - cmp r0, 0 - beq _080EA570 - ldrh r0, [r4] - cmp r0, 0x1 - bne _080EA570 - bl OakOldManBufferExecCompleted - b _080EA65A - .align 2, 0 -_080EA55C: .4byte gBattle_BG0_X -_080EA560: .4byte gBattle_BG0_Y -_080EA564: .4byte gActiveBattler -_080EA568: .4byte (gBattleBufferA + 2) -_080EA56C: .4byte gBattleTypeFlags -_080EA570: - ldrh r0, [r4] - bl BufferStringBattle - ldrh r0, [r4] - bl sub_80D89B0 - lsls r0, 24 - cmp r0, 0 - beq _080EA590 - ldr r0, _080EA58C @ =gDisplayedStringBattle - movs r1, 0x40 - bl BattlePutTextOnWindow - b _080EA598 - .align 2, 0 -_080EA58C: .4byte gDisplayedStringBattle -_080EA590: - ldr r0, _080EA5B4 @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow -_080EA598: - ldr r0, _080EA5B8 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EA64C - ldrh r1, [r4] - cmp r1, 0xD8 - beq _080EA5CC - cmp r1, 0xD8 - bgt _080EA5BC - cmp r1, 0x1E - beq _080EA5F8 - b _080EA64C - .align 2, 0 -_080EA5B4: .4byte gDisplayedStringBattle -_080EA5B8: .4byte gBattleTypeFlags -_080EA5BC: - cmp r1, 0xE3 - beq _080EA630 - ldr r0, _080EA5C8 @ =0x0000017f - cmp r1, r0 - beq _080EA614 - b _080EA64C - .align 2, 0 -_080EA5C8: .4byte 0x0000017f -_080EA5CC: - movs r0, 0x2 - bl sub_80EB2E0 - lsls r0, 24 - cmp r0, 0 - bne _080EA64C - movs r0, 0x2 - bl sub_80EB2F4 - ldr r1, _080EA5EC @ =gBattlerControllerFuncs - ldr r0, _080EA5F0 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA5F4 @ =sub_80E8584 - b _080EA658 - .align 2, 0 -_080EA5EC: .4byte gBattlerControllerFuncs -_080EA5F0: .4byte gActiveBattler -_080EA5F4: .4byte sub_80E8584 -_080EA5F8: - ldr r1, _080EA608 @ =gBattlerControllerFuncs - ldr r0, _080EA60C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA610 @ =sub_80E85AC - b _080EA658 - .align 2, 0 -_080EA608: .4byte gBattlerControllerFuncs -_080EA60C: .4byte gActiveBattler -_080EA610: .4byte sub_80E85AC -_080EA614: - ldr r1, _080EA624 @ =gBattlerControllerFuncs - ldr r0, _080EA628 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA62C @ =sub_80E85C0 - b _080EA658 - .align 2, 0 -_080EA624: .4byte gBattlerControllerFuncs -_080EA628: .4byte gActiveBattler -_080EA62C: .4byte sub_80E85C0 -_080EA630: - ldr r1, _080EA640 @ =gBattlerControllerFuncs - ldr r0, _080EA644 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA648 @ =sub_80E8598 - b _080EA658 - .align 2, 0 -_080EA640: .4byte gBattlerControllerFuncs -_080EA644: .4byte gActiveBattler -_080EA648: .4byte sub_80E8598 -_080EA64C: - ldr r1, _080EA660 @ =gBattlerControllerFuncs - ldr r0, _080EA664 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA668 @ =CompleteOnInactiveTextPrinter_tmp -_080EA658: - str r1, [r0] -_080EA65A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EA660: .4byte gBattlerControllerFuncs -_080EA664: .4byte gActiveBattler -_080EA668: .4byte CompleteOnInactiveTextPrinter_tmp - thumb_func_end OakOldManHandlePrintString - - thumb_func_start OakOldManHandlePrintSelectionString -OakOldManHandlePrintSelectionString: @ 80EA66C - push {lr} - ldr r0, _080EA684 @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080EA688 - bl OakOldManHandlePrintString - b _080EA68C - .align 2, 0 -_080EA684: .4byte gActiveBattler -_080EA688: - bl OakOldManBufferExecCompleted -_080EA68C: - pop {r0} - bx r0 - thumb_func_end OakOldManHandlePrintSelectionString - - thumb_func_start sub_80EA690 -sub_80EA690: @ 80EA690 - push {lr} - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080EA6EA - ldr r0, _080EA6C4 @ =gBattle_BG0_X - strh r1, [r0] - ldr r1, _080EA6C8 @ =gBattle_BG0_Y - movs r0, 0xA0 - strh r0, [r1] - ldr r0, _080EA6CC @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EA6DC - ldr r1, _080EA6D0 @ =gBattlerControllerFuncs - ldr r0, _080EA6D4 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA6D8 @ =HandleInputChooseAction_tmp - b _080EA6E8 - .align 2, 0 -_080EA6C4: .4byte gBattle_BG0_X -_080EA6C8: .4byte gBattle_BG0_Y -_080EA6CC: .4byte gBattleTypeFlags -_080EA6D0: .4byte gBattlerControllerFuncs -_080EA6D4: .4byte gActiveBattler -_080EA6D8: .4byte HandleInputChooseAction_tmp -_080EA6DC: - ldr r1, _080EA6F0 @ =gBattlerControllerFuncs - ldr r0, _080EA6F4 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA6F8 @ =sub_80E7844 -_080EA6E8: - str r1, [r0] -_080EA6EA: - pop {r0} - bx r0 - .align 2, 0 -_080EA6F0: .4byte gBattlerControllerFuncs -_080EA6F4: .4byte gActiveBattler -_080EA6F8: .4byte sub_80E7844 - thumb_func_end sub_80EA690 - - thumb_func_start OakOldManHandleChooseAction -OakOldManHandleChooseAction: @ 80EA6FC - push {r4,lr} - ldr r1, _080EA750 @ =gBattlerControllerFuncs - ldr r0, _080EA754 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA758 @ =sub_80EA690 - str r1, [r0] - ldr r0, _080EA75C @ =gUnknown_83FDA4C - movs r1, 0 - bl BattlePutTextOnWindow - ldr r0, _080EA760 @ =gUnknown_83FE725 - movs r1, 0x2 - bl BattlePutTextOnWindow - movs r4, 0 -_080EA71E: - lsls r0, r4, 24 - lsrs r0, 24 - bl ActionSelectionDestroyCursorAt - adds r4, 0x1 - cmp r4, 0x3 - ble _080EA71E - ldr r1, _080EA764 @ =gActionSelectionCursor - ldr r0, _080EA754 @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl ActionSelectionCreateCursorAt - ldr r0, _080EA768 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EA770 - ldr r0, _080EA76C @ =gText_WhatWillPkmnDo - bl BattleStringExpandPlaceholdersToDisplayedString - b _080EA776 - .align 2, 0 -_080EA750: .4byte gBattlerControllerFuncs -_080EA754: .4byte gActiveBattler -_080EA758: .4byte sub_80EA690 -_080EA75C: .4byte gUnknown_83FDA4C -_080EA760: .4byte gUnknown_83FE725 -_080EA764: .4byte gActionSelectionCursor -_080EA768: .4byte gBattleTypeFlags -_080EA76C: .4byte gText_WhatWillPkmnDo -_080EA770: - ldr r0, _080EA784 @ =gUnknown_83FE6FA - bl BattleStringExpandPlaceholdersToDisplayedString -_080EA776: - ldr r0, _080EA788 @ =gDisplayedStringBattle - movs r1, 0x1 - bl BattlePutTextOnWindow - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EA784: .4byte gUnknown_83FE6FA -_080EA788: .4byte gDisplayedStringBattle - thumb_func_end OakOldManHandleChooseAction - - thumb_func_start OakOldManHandleUnknownYesNoBox -OakOldManHandleUnknownYesNoBox: @ 80EA78C - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleUnknownYesNoBox - - thumb_func_start sub_80EA798 -sub_80EA798: @ 80EA798 - push {lr} - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _080EA7C2 - ldr r0, _080EA7C8 @ =gBattle_BG0_X - strh r1, [r0] - ldr r1, _080EA7CC @ =gBattle_BG0_Y - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _080EA7D0 @ =gBattlerControllerFuncs - ldr r0, _080EA7D4 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA7D8 @ =sub_80E7988 - str r1, [r0] -_080EA7C2: - pop {r0} - bx r0 - .align 2, 0 -_080EA7C8: .4byte gBattle_BG0_X -_080EA7CC: .4byte gBattle_BG0_Y -_080EA7D0: .4byte gBattlerControllerFuncs -_080EA7D4: .4byte gActiveBattler -_080EA7D8: .4byte sub_80E7988 - thumb_func_end sub_80EA798 - - thumb_func_start OakOldManHandleChooseMove -OakOldManHandleChooseMove: @ 80EA7DC - push {r4,lr} - ldr r0, _080EA800 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EA810 - bl InitMoveSelectionsVarsAndStrings - ldr r1, _080EA804 @ =gBattlerControllerFuncs - ldr r0, _080EA808 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA80C @ =sub_80EA798 - str r1, [r0] - b _080EA866 - .align 2, 0 -_080EA800: .4byte gBattleTypeFlags -_080EA804: .4byte gBattlerControllerFuncs -_080EA808: .4byte gActiveBattler -_080EA80C: .4byte sub_80EA798 -_080EA810: - ldr r4, _080EA824 @ =gBattleStruct - ldr r0, [r4] - adds r0, 0x95 - ldrb r0, [r0] - cmp r0, 0 - beq _080EA828 - cmp r0, 0x1 - beq _080EA83E - b _080EA866 - .align 2, 0 -_080EA824: .4byte gBattleStruct -_080EA828: - bl InitMoveSelectionsVarsAndStrings - ldr r1, [r4] - adds r1, 0x95 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r4] - adds r0, 0x97 - movs r1, 0x50 - strb r1, [r0] -_080EA83E: - ldr r0, _080EA86C @ =gBattleStruct - ldr r1, [r0] - adds r1, 0x97 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _080EA866 - movs r0, 0x5 - bl PlaySE - movs r2, 0x80 - lsls r2, 1 - movs r0, 0x1 - movs r1, 0xA - bl BtlController_EmitTwoReturnValues - bl OakOldManBufferExecCompleted -_080EA866: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EA86C: .4byte gBattleStruct - thumb_func_end OakOldManHandleChooseMove - - thumb_func_start OakOldManHandleChooseItem -OakOldManHandleChooseItem: @ 80EA870 - push {r4,r5,lr} - sub sp, 0x4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080EA8BC @ =gBattlerControllerFuncs - ldr r2, _080EA8C0 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA8C4 @ =OpenBagAndChooseItem_tmp - str r1, [r0] - ldr r1, _080EA8C8 @ =gBattlerInMenuId - ldrb r0, [r2] - strb r0, [r1] - movs r3, 0 - ldr r5, _080EA8CC @ =gUnknown_203B0DC - ldr r4, _080EA8D0 @ =gBattleBufferA -_080EA89E: - adds r0, r3, r5 - ldrb r1, [r2] - lsls r1, 9 - adds r1, 0x1 - adds r1, r3, r1 - adds r1, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r3, 0x1 - cmp r3, 0x2 - ble _080EA89E - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EA8BC: .4byte gBattlerControllerFuncs -_080EA8C0: .4byte gActiveBattler -_080EA8C4: .4byte OpenBagAndChooseItem_tmp -_080EA8C8: .4byte gBattlerInMenuId -_080EA8CC: .4byte gUnknown_203B0DC -_080EA8D0: .4byte gBattleBufferA - thumb_func_end OakOldManHandleChooseItem - - thumb_func_start OakOldManHandleChoosePokemon -OakOldManHandleChoosePokemon: @ 80EA8D4 - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _080EA984 @ =TaskDummy - movs r1, 0xFF - bl CreateTask - ldr r3, _080EA988 @ =gUnknown_3004FFC - ldr r4, _080EA98C @ =gActiveBattler - ldrb r1, [r4] - adds r1, r3 - strb r0, [r1] - ldr r5, _080EA990 @ =gTasks - ldrb r2, [r4] - adds r3, r2, r3 - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r5 - ldr r5, _080EA994 @ =gBattleBufferA - lsls r2, 9 - adds r6, r5, 0x1 - adds r2, r6 - ldrb r2, [r2] - movs r0, 0xF - ands r0, r2 - strh r0, [r1, 0x8] - ldr r3, _080EA998 @ =gBattleStruct - ldr r1, [r3] - adds r1, 0x49 - ldrb r0, [r4] - lsls r0, 9 - adds r0, r6 - ldrb r0, [r0] - lsrs r0, 4 - strb r0, [r1] - ldr r2, [r3] - adds r2, 0x8B - ldrb r0, [r4] - lsls r0, 9 - adds r1, r5, 0x2 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r2, [r3] - adds r2, 0xAC - ldrb r0, [r4] - lsls r0, 9 - adds r1, r5, 0x3 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - movs r2, 0 - ldr r3, _080EA99C @ =gUnknown_203B0DC -_080EA940: - adds r0, r2, r3 - ldrb r1, [r4] - lsls r1, 9 - adds r1, 0x4 - adds r1, r2, r1 - adds r1, r5 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x2 - ble _080EA940 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080EA9A0 @ =gBattlerControllerFuncs - ldr r2, _080EA98C @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EA9A4 @ =OpenPartyMenuToChooseMon_tmp - str r1, [r0] - ldr r1, _080EA9A8 @ =gBattlerInMenuId - ldrb r0, [r2] - strb r0, [r1] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EA984: .4byte TaskDummy -_080EA988: .4byte gUnknown_3004FFC -_080EA98C: .4byte gActiveBattler -_080EA990: .4byte gTasks -_080EA994: .4byte gBattleBufferA -_080EA998: .4byte gBattleStruct -_080EA99C: .4byte gUnknown_203B0DC -_080EA9A0: .4byte gBattlerControllerFuncs -_080EA9A4: .4byte OpenPartyMenuToChooseMon_tmp -_080EA9A8: .4byte gBattlerInMenuId - thumb_func_end OakOldManHandleChoosePokemon - - thumb_func_start OakOldManHandleCmd23 -OakOldManHandleCmd23: @ 80EA9AC - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleCmd23 - - thumb_func_start OakOldManHandleHealthBarUpdate -OakOldManHandleHealthBarUpdate: @ 80EA9B8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - movs r0, 0 - bl LoadBattleBarGfx - ldr r3, _080EAA30 @ =gBattleBufferA - ldr r0, _080EAA34 @ =gActiveBattler - mov r9, r0 - ldrb r4, [r0] - lsls r2, r4, 9 - adds r0, r3, 0x2 - adds r0, r2, r0 - ldrb r1, [r0] - adds r3, 0x3 - adds r2, r3 - ldrb r0, [r2] - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - asrs r7, r1, 16 - ldr r0, _080EAA38 @ =0x00007fff - cmp r7, r0 - beq _080EAA48 - ldr r6, _080EAA3C @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r6 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r4, _080EAA40 @ =gPlayerParty - adds r0, r4 - movs r1, 0x3A - bl GetMonData - mov r8, r0 - mov r1, r9 - ldrb r0, [r1] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r4 - movs r1, 0x39 - bl GetMonData - adds r3, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r1, _080EAA44 @ =gHealthboxSpriteIds - adds r1, r0, r1 - ldrb r1, [r1] - str r7, [sp] - mov r2, r8 - bl SetBattleBarStruct - b _080EAA82 - .align 2, 0 -_080EAA30: .4byte gBattleBufferA -_080EAA34: .4byte gActiveBattler -_080EAA38: .4byte 0x00007fff -_080EAA3C: .4byte gBattlerPartyIndexes -_080EAA40: .4byte gPlayerParty -_080EAA44: .4byte gHealthboxSpriteIds -_080EAA48: - ldr r1, _080EAAA0 @ =gBattlerPartyIndexes - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080EAAA4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3A - bl GetMonData - adds r2, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r4, _080EAAA8 @ =gHealthboxSpriteIds - adds r1, r0, r4 - ldrb r1, [r1] - str r7, [sp] - movs r3, 0 - bl SetBattleBarStruct - mov r1, r9 - ldrb r0, [r1] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - movs r2, 0 - bl UpdateHpTextInHealthbox -_080EAA82: - ldr r1, _080EAAAC @ =gBattlerControllerFuncs - ldr r0, _080EAAB0 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EAAB4 @ =CompleteOnHealthbarDone_tmp - str r1, [r0] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EAAA0: .4byte gBattlerPartyIndexes -_080EAAA4: .4byte gPlayerParty -_080EAAA8: .4byte gHealthboxSpriteIds -_080EAAAC: .4byte gBattlerControllerFuncs -_080EAAB0: .4byte gActiveBattler -_080EAAB4: .4byte CompleteOnHealthbarDone_tmp - thumb_func_end OakOldManHandleHealthBarUpdate - - thumb_func_start OakOldManHandleExpUpdate -OakOldManHandleExpUpdate: @ 80EAAB8 - push {r4-r7,lr} - ldr r5, _080EAAE4 @ =gBattleBufferA - ldr r6, _080EAAE8 @ =gActiveBattler - ldrb r0, [r6] - lsls r0, 9 - adds r1, r5, 0x1 - adds r0, r1 - ldrb r7, [r0] - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _080EAAEC @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x63 - bls _080EAAF0 - bl OakOldManBufferExecCompleted - b _080EAB3C - .align 2, 0 -_080EAAE4: .4byte gBattleBufferA -_080EAAE8: .4byte gActiveBattler -_080EAAEC: .4byte gPlayerParty -_080EAAF0: - movs r0, 0x1 - bl LoadBattleBarGfx - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - ldrb r1, [r6] - lsls r1, 9 - adds r0, r5, 0x2 - adds r0, r1, r0 - ldrb r4, [r0] - adds r0, r5, 0x3 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - ldr r0, _080EAB44 @ =Task_GiveExpToMon_tmp - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080EAB48 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r7, [r1, 0x8] - strh r4, [r1, 0xA] - ldrb r0, [r6] - strh r0, [r1, 0xC] - ldr r1, _080EAB4C @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EAB50 @ =nullsub_81 - str r1, [r0] -_080EAB3C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EAB44: .4byte Task_GiveExpToMon_tmp -_080EAB48: .4byte gTasks -_080EAB4C: .4byte gBattlerControllerFuncs -_080EAB50: .4byte nullsub_81 - thumb_func_end OakOldManHandleExpUpdate - - thumb_func_start OakOldManHandleStatusIconUpdate -OakOldManHandleStatusIconUpdate: @ 80EAB54 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleStatusIconUpdate - - thumb_func_start OakOldManHandleStatusAnimation -OakOldManHandleStatusAnimation: @ 80EAB60 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleStatusAnimation - - thumb_func_start OakOldManHandleStatusXor -OakOldManHandleStatusXor: @ 80EAB6C - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleStatusXor - - thumb_func_start OakOldManHandleDataTransfer -OakOldManHandleDataTransfer: @ 80EAB78 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleDataTransfer - - thumb_func_start OakOldManHandleDMA3Transfer -OakOldManHandleDMA3Transfer: @ 80EAB84 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleDMA3Transfer - - thumb_func_start OakOldManHandlePlayBGM -OakOldManHandlePlayBGM: @ 80EAB90 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandlePlayBGM - - thumb_func_start OakOldManHandleCmd32 -OakOldManHandleCmd32: @ 80EAB9C - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleCmd32 - - thumb_func_start OakOldManHandleTwoReturnValues -OakOldManHandleTwoReturnValues: @ 80EABA8 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleTwoReturnValues - - thumb_func_start OakOldManHandleChosenMonReturnValue -OakOldManHandleChosenMonReturnValue: @ 80EABB4 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleChosenMonReturnValue - - thumb_func_start OakOldManHandleOneReturnValue -OakOldManHandleOneReturnValue: @ 80EABC0 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleOneReturnValue - - thumb_func_start OakOldManHandleOneReturnValue_Duplicate -OakOldManHandleOneReturnValue_Duplicate: @ 80EABCC - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleOneReturnValue_Duplicate - - thumb_func_start OakOldManHandleCmd37 -OakOldManHandleCmd37: @ 80EABD8 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleCmd37 - - thumb_func_start OakOldManHandleCmd38 -OakOldManHandleCmd38: @ 80EABE4 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleCmd38 - - thumb_func_start OakOldManHandleCmd39 -OakOldManHandleCmd39: @ 80EABF0 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleCmd39 - - thumb_func_start OakOldManHandleCmd40 -OakOldManHandleCmd40: @ 80EABFC - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleCmd40 - - thumb_func_start OakOldManHandleHitAnimation -OakOldManHandleHitAnimation: @ 80EAC08 - push {r4,lr} - ldr r3, _080EAC30 @ =gSprites - ldr r2, _080EAC34 @ =gBattlerSpriteIds - ldr r4, _080EAC38 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _080EAC3C - bl OakOldManBufferExecCompleted - b _080EAC66 - .align 2, 0 -_080EAC30: .4byte gSprites -_080EAC34: .4byte gBattlerSpriteIds -_080EAC38: .4byte gActiveBattler -_080EAC3C: - ldr r1, _080EAC6C @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x30] - ldrb r0, [r4] - bl DoHitAnimHealthboxEffect - ldr r1, _080EAC70 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EAC74 @ =DoHitAnimBlinkSpriteEffect_tmp - str r1, [r0] -_080EAC66: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EAC6C: .4byte gDoingBattleAnim -_080EAC70: .4byte gBattlerControllerFuncs -_080EAC74: .4byte DoHitAnimBlinkSpriteEffect_tmp - thumb_func_end OakOldManHandleHitAnimation - - thumb_func_start OakOldManHandleCmd42 -OakOldManHandleCmd42: @ 80EAC78 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleCmd42 - - thumb_func_start OakOldManHandlePlaySE -OakOldManHandlePlaySE: @ 80EAC84 - push {lr} - ldr r2, _080EACAC @ =gBattleBufferA - ldr r0, _080EACB0 @ =gActiveBattler - ldrb r1, [r0] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - bl PlaySE - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080EACAC: .4byte gBattleBufferA -_080EACB0: .4byte gActiveBattler - thumb_func_end OakOldManHandlePlaySE - - thumb_func_start OakOldManHandlePlayFanfare -OakOldManHandlePlayFanfare: @ 80EACB4 - push {lr} - ldr r2, _080EACDC @ =gBattleBufferA - ldr r0, _080EACE0 @ =gActiveBattler - ldrb r1, [r0] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - bl PlayFanfare - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080EACDC: .4byte gBattleBufferA -_080EACE0: .4byte gActiveBattler - thumb_func_end OakOldManHandlePlayFanfare - - thumb_func_start OakOldManHandleFaintingCry -OakOldManHandleFaintingCry: @ 80EACE4 - push {lr} - ldr r1, _080EAD14 @ =gBattlerPartyIndexes - ldr r0, _080EAD18 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080EAD1C @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - bl PlayCry1 - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080EAD14: .4byte gBattlerPartyIndexes -_080EAD18: .4byte gActiveBattler -_080EAD1C: .4byte gPlayerParty - thumb_func_end OakOldManHandleFaintingCry - - thumb_func_start OakOldManHandleIntroSlide -OakOldManHandleIntroSlide: @ 80EAD20 - push {lr} - ldr r1, _080EAD48 @ =gBattleBufferA - ldr r0, _080EAD4C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - bl HandleIntroSlide - ldr r2, _080EAD50 @ =gIntroSlideFlags - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080EAD48: .4byte gBattleBufferA -_080EAD4C: .4byte gActiveBattler -_080EAD50: .4byte gIntroSlideFlags - thumb_func_end OakOldManHandleIntroSlide - - thumb_func_start OakOldManHandleIntroTrainerBallThrow -OakOldManHandleIntroTrainerBallThrow: @ 80EAD54 - push {r4-r7,lr} - ldr r0, _080EAEA0 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080EAD64 - b _080EAEE4 -_080EAD64: - ldr r6, _080EAEA4 @ =gBattlerSpriteIds - ldr r7, _080EAEA8 @ =gActiveBattler - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _080EAEAC @ =gSprites - adds r0, r5 - bl SetSpritePrimaryCoordsFromSecondaryCoords - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x32 - strh r1, [r0, 0x2E] - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080EAEB0 @ =0x0000ffd8 - strh r1, [r0, 0x32] - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0x36] - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080EAEB4 @ =StartAnimLinearTranslation - str r1, [r0] - ldrb r2, [r7] - adds r0, r2, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r2, [r0, 0x38] - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080EAEB8 @ =sub_80335F8 - bl StoreSpriteCallbackInData6 - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x1 - bl StartSpriteAnim - ldr r0, _080EAEBC @ =0x0000d6f8 - bl AllocSpritePalette - adds r4, r0, 0 - lsls r4, 24 - ldr r1, _080EAEC0 @ =gTrainerBackPicPaletteTable - ldr r0, _080EAEC4 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 3 - adds r0, r1 - ldr r0, [r0] - lsrs r4, 20 - movs r2, 0x80 - lsls r2, 1 - adds r1, r4, r2 - movs r2, 0x20 - bl LoadCompressedPalette - ldrb r0, [r7] - adds r0, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r4 - strb r0, [r1, 0x5] - ldr r0, _080EAEC8 @ =sub_80EB0A8 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r4, _080EAECC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - ldrb r0, [r7] - strh r0, [r1, 0x8] - ldr r3, _080EAED0 @ =gBattleSpritesDataPtr - ldr r0, [r3] - ldrb r2, [r7] - ldr r1, [r0, 0x4] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080EAE84 - ldr r0, _080EAED4 @ =gBattlerStatusSummaryTaskId - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - ldr r1, _080EAED8 @ =Task_HidePartyStatusSummary - str r1, [r0] -_080EAE84: - ldr r0, [r3] - ldr r2, [r0, 0x8] - ldrb r0, [r2, 0x9] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x9] - ldr r1, _080EAEDC @ =gBattlerControllerFuncs - ldrb r0, [r7] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EAEE0 @ =nullsub_13 - str r1, [r0] - b _080EAF18 - .align 2, 0 -_080EAEA0: .4byte gBattleTypeFlags -_080EAEA4: .4byte gBattlerSpriteIds -_080EAEA8: .4byte gActiveBattler -_080EAEAC: .4byte gSprites -_080EAEB0: .4byte 0x0000ffd8 -_080EAEB4: .4byte StartAnimLinearTranslation -_080EAEB8: .4byte sub_80335F8 -_080EAEBC: .4byte 0x0000d6f8 -_080EAEC0: .4byte gTrainerBackPicPaletteTable -_080EAEC4: .4byte gSaveBlock2Ptr -_080EAEC8: .4byte sub_80EB0A8 -_080EAECC: .4byte gTasks -_080EAED0: .4byte gBattleSpritesDataPtr -_080EAED4: .4byte gBattlerStatusSummaryTaskId -_080EAED8: .4byte Task_HidePartyStatusSummary -_080EAEDC: .4byte gBattlerControllerFuncs -_080EAEE0: .4byte nullsub_13 -_080EAEE4: - ldr r0, _080EAF20 @ =gBattleSpritesDataPtr - ldr r1, [r0] - ldr r0, _080EAF24 @ =gActiveBattler - ldrb r3, [r0] - ldr r1, [r1, 0x4] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080EAF14 - ldr r2, _080EAF28 @ =gTasks - ldr r0, _080EAF2C @ =gBattlerStatusSummaryTaskId - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _080EAF30 @ =Task_HidePartyStatusSummary - str r1, [r0] -_080EAF14: - bl OakOldManBufferExecCompleted -_080EAF18: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EAF20: .4byte gBattleSpritesDataPtr -_080EAF24: .4byte gActiveBattler -_080EAF28: .4byte gTasks -_080EAF2C: .4byte gBattlerStatusSummaryTaskId -_080EAF30: .4byte Task_HidePartyStatusSummary - thumb_func_end OakOldManHandleIntroTrainerBallThrow - - thumb_func_start sub_80EAF34 -sub_80EAF34: @ 80EAF34 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r0, _080EB07C @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r6, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x2] - ldr r0, _080EB080 @ =gBattlerPartyIndexes - lsls r2, r6, 1 - adds r2, r0 - ldr r0, _080EB084 @ =gBattleBufferA - lsls r1, r6, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - strh r0, [r2] - ldrh r1, [r2] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080EB088 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - mov r8, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _080EB08C @ =sub_8033E3C - bl CreateInvisibleSpriteWithCallback - ldr r1, _080EB090 @ =gUnknown_3004FFC - mov r9, r1 - add r9, r6 - mov r1, r9 - strb r0, [r1] - adds r0, r6, 0 - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _080EB094 @ =gMultiuseSpriteTemplate - mov r10, r0 - adds r0, r6, 0 - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r6, 0 - bl GetBattlerSpriteDefault_Y - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - mov r0, r10 - adds r1, r5, 0 - adds r2, r4, 0 - bl CreateSprite - ldr r4, _080EB098 @ =gBattlerSpriteIds - adds r4, r6, r4 - strb r0, [r4] - ldr r5, _080EB09C @ =gSprites - mov r0, r9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r4] - strh r1, [r0, 0x30] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x2E] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r6, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080EB0A0 @ =gBattleMonForms - adds r6, r1 - ldrb r1, [r6] - bl StartSpriteAnim - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080EB0A4 @ =SpriteCallbackDummy - str r1, [r0] - movs r0, 0 - movs r1, 0xFF - bl DoPokeballSendOutAnimation - mov r1, r9 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x2E] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EB07C: .4byte gBattleSpritesDataPtr -_080EB080: .4byte gBattlerPartyIndexes -_080EB084: .4byte gBattleBufferA -_080EB088: .4byte gPlayerParty -_080EB08C: .4byte sub_8033E3C -_080EB090: .4byte gUnknown_3004FFC -_080EB094: .4byte gMultiuseSpriteTemplate -_080EB098: .4byte gBattlerSpriteIds -_080EB09C: .4byte gSprites -_080EB0A0: .4byte gBattleMonForms -_080EB0A4: .4byte SpriteCallbackDummy - thumb_func_end sub_80EAF34 - - thumb_func_start sub_80EB0A8 -sub_80EB0A8: @ 80EB0A8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080EB0C8 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0xA] - movs r3, 0xA - ldrsh r0, [r1, r3] - cmp r0, 0x1E - bgt _080EB0CC - adds r0, r2, 0x1 - strh r0, [r1, 0xA] - b _080EB102 - .align 2, 0 -_080EB0C8: .4byte gTasks -_080EB0CC: - ldr r4, _080EB108 @ =gActiveBattler - ldrb r5, [r4] - ldrh r0, [r1, 0x8] - strb r0, [r4] - ldr r0, _080EB10C @ =gBattleBufferA - ldrb r1, [r4] - lsls r2, r1, 9 - adds r0, 0x1 - adds r2, r0 - ldr r0, _080EB110 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - strb r0, [r2] - ldrb r0, [r4] - bl sub_80EAF34 - ldr r1, _080EB114 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080EB118 @ =sub_80E7B4C - str r1, [r0] - strb r5, [r4] - adds r0, r6, 0 - bl DestroyTask -_080EB102: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EB108: .4byte gActiveBattler -_080EB10C: .4byte gBattleBufferA -_080EB110: .4byte gBattlerPartyIndexes -_080EB114: .4byte gBattlerControllerFuncs -_080EB118: .4byte sub_80E7B4C - thumb_func_end sub_80EB0A8 - - thumb_func_start OakOldManHandleDrawPartyStatusSummary -OakOldManHandleDrawPartyStatusSummary: @ 80EB11C - push {r4,r5,lr} - ldr r1, _080EB144 @ =gBattleBufferA - ldr r0, _080EB148 @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080EB14C - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _080EB14C - bl OakOldManBufferExecCompleted - b _080EB18A - .align 2, 0 -_080EB144: .4byte gBattleBufferA -_080EB148: .4byte gActiveBattler -_080EB14C: - ldr r0, _080EB190 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r5, _080EB194 @ =gActiveBattler - ldrb r1, [r5] - ldr r2, [r0, 0x4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - ldrb r0, [r5] - lsls r4, r0, 9 - ldr r3, _080EB198 @ =(gBattleBufferA + 4) - adds r1, r4, r3 - subs r2, r3, 0x3 - adds r2, r4, r2 - ldrb r2, [r2] - subs r3, 0x2 - adds r4, r3 - ldrb r3, [r4] - bl CreatePartyStatusSummarySprites - ldr r2, _080EB19C @ =gBattlerStatusSummaryTaskId - ldrb r1, [r5] - adds r1, r2 - strb r0, [r1] - bl OakOldManBufferExecCompleted -_080EB18A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EB190: .4byte gBattleSpritesDataPtr -_080EB194: .4byte gActiveBattler -_080EB198: .4byte (gBattleBufferA + 4) -_080EB19C: .4byte gBattlerStatusSummaryTaskId - thumb_func_end OakOldManHandleDrawPartyStatusSummary - - thumb_func_start OakOldManHandleHidePartyStatusSummary -OakOldManHandleHidePartyStatusSummary: @ 80EB1A0 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleHidePartyStatusSummary - - thumb_func_start OakOldManHandleEndBounceEffect -OakOldManHandleEndBounceEffect: @ 80EB1AC - push {r4,lr} - ldr r4, _080EB1CC @ =gActiveBattler - ldrb r0, [r4] - movs r1, 0x1 - bl EndBounceEffect - ldrb r0, [r4] - movs r1, 0 - bl EndBounceEffect - bl OakOldManBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EB1CC: .4byte gActiveBattler - thumb_func_end OakOldManHandleEndBounceEffect - - thumb_func_start OakOldManHandleSpriteInvisibility -OakOldManHandleSpriteInvisibility: @ 80EB1D0 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleSpriteInvisibility - - thumb_func_start OakOldManHandleBattleAnimation -OakOldManHandleBattleAnimation: @ 80EB1DC - push {r4-r6,lr} - sub sp, 0x4 - ldr r5, _080EB214 @ =gBattleBufferA - ldr r6, _080EB218 @ =gActiveBattler - ldrb r2, [r6] - lsls r1, r2, 9 - adds r0, r5, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r0, r5, 0x2 - adds r0, r1, r0 - ldrb r4, [r0] - adds r5, 0x3 - adds r1, r5 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - str r4, [sp] - adds r0, r2, 0 - adds r1, r2, 0 - bl TryHandleLaunchBattleTableAnimation - lsls r0, 24 - cmp r0, 0 - beq _080EB21C - bl OakOldManBufferExecCompleted - b _080EB228 - .align 2, 0 -_080EB214: .4byte gBattleBufferA -_080EB218: .4byte gActiveBattler -_080EB21C: - ldr r0, _080EB230 @ =gBattlerControllerFuncs - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _080EB234 @ =CompleteOnFinishedBattleAnimation_tmp - str r0, [r1] -_080EB228: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EB230: .4byte gBattlerControllerFuncs -_080EB234: .4byte CompleteOnFinishedBattleAnimation_tmp - thumb_func_end OakOldManHandleBattleAnimation - - thumb_func_start OakOldManHandleLinkStandbyMsg -OakOldManHandleLinkStandbyMsg: @ 80EB238 - push {r4,lr} - ldr r1, _080EB26C @ =gBattleBufferA - ldr r4, _080EB270 @ =gActiveBattler - ldrb r2, [r4] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - blt _080EB260 - cmp r0, 0x1 - bgt _080EB260 - adds r0, r2, 0 - movs r1, 0x1 - bl EndBounceEffect - ldrb r0, [r4] - movs r1, 0 - bl EndBounceEffect -_080EB260: - bl OakOldManBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EB26C: .4byte gBattleBufferA -_080EB270: .4byte gActiveBattler - thumb_func_end OakOldManHandleLinkStandbyMsg - - thumb_func_start OakOldManHandleResetActionMoveSelection -OakOldManHandleResetActionMoveSelection: @ 80EB274 - push {lr} - bl OakOldManBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end OakOldManHandleResetActionMoveSelection - - thumb_func_start OakOldManHandleCmd55 -OakOldManHandleCmd55: @ 80EB280 - push {r4,lr} - ldr r2, _080EB2C4 @ =gBattleOutcome - ldr r1, _080EB2C8 @ =gBattleBufferA - ldr r4, _080EB2CC @ =gActiveBattler - ldrb r0, [r4] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - movs r0, 0x5 - bl FadeOutMapMusic - movs r0, 0x3 - bl BeginFastPaletteFade - bl OakOldManBufferExecCompleted - ldr r0, _080EB2D0 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x6 - ands r0, r1 - cmp r0, 0x2 - bne _080EB2BC - ldr r0, _080EB2D4 @ =gBattlerControllerFuncs - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _080EB2D8 @ =sub_80E7930 - str r0, [r1] -_080EB2BC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EB2C4: .4byte gBattleOutcome -_080EB2C8: .4byte gBattleBufferA -_080EB2CC: .4byte gActiveBattler -_080EB2D0: .4byte gBattleTypeFlags -_080EB2D4: .4byte gBattlerControllerFuncs -_080EB2D8: .4byte sub_80E7930 - thumb_func_end OakOldManHandleCmd55 - - thumb_func_start OakOldManCmdEnd -OakOldManCmdEnd: @ 80EB2DC - bx lr - thumb_func_end OakOldManCmdEnd - - thumb_func_start sub_80EB2E0 -sub_80EB2E0: @ 80EB2E0 - adds r1, r0, 0 - ldr r0, _080EB2F0 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x96 - ldrb r0, [r0] - ands r0, r1 - bx lr - .align 2, 0 -_080EB2F0: .4byte gBattleStruct - thumb_func_end sub_80EB2E0 - - thumb_func_start sub_80EB2F4 -sub_80EB2F4: @ 80EB2F4 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080EB308 @ =gBattleStruct - ldr r1, [r1] - adds r1, 0x96 - ldrb r2, [r1] - orrs r0, r2 - strb r0, [r1] - bx lr - .align 2, 0 -_080EB308: .4byte gBattleStruct - thumb_func_end sub_80EB2F4 - - thumb_func_start sub_80EB30C -sub_80EB30C: @ 80EB30C - push {r4-r6,lr} - sub sp, 0xC - movs r6, 0x1A - movs r5, 0x7 - movs r4, 0x1 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x30 - movs r2, 0 - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x31 - movs r2, 0x1 - movs r3, 0xE - bl FillBgTilemapBufferRect - str r6, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x32 - movs r2, 0x2 - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x33 - movs r2, 0x1C - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x34 - movs r2, 0x1D - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x35 - movs r2, 0 - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x36 - movs r2, 0x1 - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x38 - movs r2, 0x1C - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x39 - movs r2, 0x1D - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x3A - movs r2, 0 - movs r3, 0x10 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x3B - movs r2, 0x1 - movs r3, 0x10 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x3C - movs r2, 0x1C - movs r3, 0x10 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x3D - movs r2, 0x1D - movs r3, 0x10 - bl FillBgTilemapBufferRect - ldr r1, _080EB4F4 @ =0x0000083a - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0 - movs r3, 0x11 - bl FillBgTilemapBufferRect - ldr r1, _080EB4F8 @ =0x0000083b - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1 - movs r3, 0x11 - bl FillBgTilemapBufferRect - ldr r1, _080EB4FC @ =0x0000083c - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1C - movs r3, 0x11 - bl FillBgTilemapBufferRect - ldr r1, _080EB500 @ =0x0000083d - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1D - movs r3, 0x11 - bl FillBgTilemapBufferRect - ldr r1, _080EB504 @ =0x00000835 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0 - movs r3, 0x12 - bl FillBgTilemapBufferRect - ldr r1, _080EB508 @ =0x00000836 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1 - movs r3, 0x12 - bl FillBgTilemapBufferRect - ldr r1, _080EB50C @ =0x00000838 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1C - movs r3, 0x12 - bl FillBgTilemapBufferRect - ldr r1, _080EB510 @ =0x00000839 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1D - movs r3, 0x12 - bl FillBgTilemapBufferRect - movs r1, 0x83 - lsls r1, 4 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0 - movs r3, 0x13 - bl FillBgTilemapBufferRect - ldr r1, _080EB514 @ =0x00000831 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1 - movs r3, 0x13 - bl FillBgTilemapBufferRect - ldr r1, _080EB518 @ =0x00000832 - str r6, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x2 - movs r3, 0x13 - bl FillBgTilemapBufferRect - ldr r1, _080EB51C @ =0x00000833 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1C - movs r3, 0x13 - bl FillBgTilemapBufferRect - ldr r1, _080EB520 @ =0x00000834 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r2, 0x1D - movs r3, 0x13 - bl FillBgTilemapBufferRect - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EB4F4: .4byte 0x0000083a -_080EB4F8: .4byte 0x0000083b -_080EB4FC: .4byte 0x0000083c -_080EB500: .4byte 0x0000083d -_080EB504: .4byte 0x00000835 -_080EB508: .4byte 0x00000836 -_080EB50C: .4byte 0x00000838 -_080EB510: .4byte 0x00000839 -_080EB514: .4byte 0x00000831 -_080EB518: .4byte 0x00000832 -_080EB51C: .4byte 0x00000833 -_080EB520: .4byte 0x00000834 - thumb_func_end sub_80EB30C - - thumb_func_start sub_80EB524 -sub_80EB524: @ 80EB524 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - movs r5, 0 - movs r0, 0x1A - mov r8, r0 - movs r4, 0x1 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x3 - movs r2, 0 - movs r3, 0xE - bl FillBgTilemapBufferRect - movs r6, 0x4 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x4 - movs r2, 0x1 - movs r3, 0xE - bl FillBgTilemapBufferRect - mov r0, r8 - str r0, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x5 - movs r2, 0x2 - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x6 - movs r2, 0x1C - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x7 - movs r2, 0x1D - movs r3, 0xE - bl FillBgTilemapBufferRect - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x8 - movs r2, 0 - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x9 - movs r2, 0x1 - movs r3, 0xF - bl FillBgTilemapBufferRect - mov r0, r8 - str r0, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0xA - movs r2, 0x2 - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0xB - movs r2, 0x1C - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0xC - movs r2, 0x1D - movs r3, 0xF - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0xD - movs r2, 0 - movs r3, 0x13 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0xE - movs r2, 0x1 - movs r3, 0x13 - bl FillBgTilemapBufferRect - mov r0, r8 - str r0, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0xF - movs r2, 0x2 - movs r3, 0x13 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x10 - movs r2, 0x1C - movs r3, 0x13 - bl FillBgTilemapBufferRect - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0 - movs r1, 0x11 - movs r2, 0x1D - movs r3, 0x13 - bl FillBgTilemapBufferRect - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80EB524 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 03755c9b3..96f57c78a 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -262,7 +262,7 @@ void SetControllerToSafari(void); // pokedude controller void SetControllerToPokeDude(void); -// oak controller +// oak and old man controller void SetControllerToOakOrOldMan(void); bool8 sub_80EB2E0(u8); void sub_80EB2F4(u8); @@ -270,6 +270,8 @@ void sub_80E8570(void); void sub_80E85C0(void); void sub_80E8598(void); void sub_80E7988(void); +void sub_80EB30C(void); +void sub_80EB524(void); // link opponent void SetControllerToLinkOpponent(void); diff --git a/include/constants/battle.h b/include/constants/battle.h index 24cf51ba4..48c53582a 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -44,38 +44,38 @@ #define BIT_FLANK 2 // Battle Type Flags -#define BATTLE_TYPE_DOUBLE 0x0001 -#define BATTLE_TYPE_LINK 0x0002 -#define BATTLE_TYPE_IS_MASTER 0x0004 // In not-link battles, it's always set. -#define BATTLE_TYPE_TRAINER 0x0008 -#define BATTLE_TYPE_FIRST_BATTLE 0x0010 -#define BATTLE_TYPE_20 0x0020 -#define BATTLE_TYPE_MULTI 0x0040 -#define BATTLE_TYPE_SAFARI 0x0080 -#define BATTLE_TYPE_BATTLE_TOWER 0x0100 +#define BATTLE_TYPE_DOUBLE 0x0001 +#define BATTLE_TYPE_LINK 0x0002 +#define BATTLE_TYPE_IS_MASTER 0x0004 // In not-link battles, it's always set. +#define BATTLE_TYPE_TRAINER 0x0008 +#define BATTLE_TYPE_FIRST_BATTLE 0x0010 +#define BATTLE_TYPE_20 0x0020 +#define BATTLE_TYPE_MULTI 0x0040 +#define BATTLE_TYPE_SAFARI 0x0080 +#define BATTLE_TYPE_BATTLE_TOWER 0x0100 #define BATTLE_TYPE_OLD_MAN_TUTORIAL 0x0200 -#define BATTLE_TYPE_ROAMER 0x0400 -#define BATTLE_TYPE_EREADER_TRAINER 0x0800 -#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 // TODO: used, rename later -#define BATTLE_TYPE_LEGENDARY 0x2000 -#define BATTLE_TYPE_REGI 0x4000 // TODO: used, rename later -#define BATTLE_TYPE_GHOST 0x8000 -#define BATTLE_TYPE_POKEDUDE 0x10000 -#define BATTLE_TYPE_PALACE 0x20000 // TODO: used, rename later -#define BATTLE_TYPE_ARENA 0x40000 // TODO: used rename later -#define BATTLE_TYPE_TRAINER_TOWER 0x80000 -#define BATTLE_TYPE_PIKE 0x100000 -#define BATTLE_TYPE_PYRAMID 0x200000 -#define BATTLE_TYPE_INGAME_PARTNER 0x400000 -#define BATTLE_TYPE_x800000 0x800000 -#define BATTLE_TYPE_RECORDED 0x1000000 -#define BATTLE_TYPE_x2000000 0x2000000 -#define BATTLE_TYPE_TRAINER_HILL 0x4000000 -#define BATTLE_TYPE_SECRET_BASE 0x8000000 -#define BATTLE_TYPE_GROUDON 0x10000000 -#define BATTLE_TYPE_KYOGRE 0x20000000 -#define BATTLE_TYPE_RAYQUAZA 0x40000000 -#define BATTLE_TYPE_x80000000 0x80000000 +#define BATTLE_TYPE_ROAMER 0x0400 +#define BATTLE_TYPE_EREADER_TRAINER 0x0800 +#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000 +#define BATTLE_TYPE_LEGENDARY 0x2000 +#define BATTLE_TYPE_REGI 0x4000 +#define BATTLE_TYPE_GHOST 0x8000 +#define BATTLE_TYPE_POKEDUDE 0x10000 +#define BATTLE_TYPE_PALACE 0x20000 +#define BATTLE_TYPE_ARENA 0x40000 +#define BATTLE_TYPE_TRAINER_TOWER 0x80000 +#define BATTLE_TYPE_PIKE 0x100000 +#define BATTLE_TYPE_PYRAMID 0x200000 +#define BATTLE_TYPE_INGAME_PARTNER 0x400000 +#define BATTLE_TYPE_x800000 0x800000 +#define BATTLE_TYPE_RECORDED 0x1000000 +#define BATTLE_TYPE_x2000000 0x2000000 +#define BATTLE_TYPE_TRAINER_HILL 0x4000000 +#define BATTLE_TYPE_SECRET_BASE 0x8000000 +#define BATTLE_TYPE_GROUDON 0x10000000 +#define BATTLE_TYPE_KYOGRE 0x20000000 +#define BATTLE_TYPE_RAYQUAZA 0x40000000 +#define BATTLE_TYPE_x80000000 0x80000000 #define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID) #define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE) diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 22793032f..1b86cbee9 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -377,6 +377,7 @@ #define B_ANIM_SWITCH_OUT_PLAYER_MON 0x1 #define B_ANIM_SWITCH_OUT_OPPONENT_MON 0x2 #define B_ANIM_BALL_THROW 0x3 +#define B_ANIM_SP_4 0x4 // this one is used in battle_controller_oak_old_man #define B_ANIM_SAFARI_BALL_THROW 0x4 #define B_ANIM_SUBSTITUTE_TO_MON 0x5 #define B_ANIM_MON_TO_SUBSTITUTE 0x6 diff --git a/include/strings.h b/include/strings.h index 4b96a95a9..5ce899002 100644 --- a/include/strings.h +++ b/include/strings.h @@ -237,6 +237,7 @@ extern const u8 gUnknown_83FDD23[]; extern const u8 gUnknown_83FDD64[]; extern const u8 gUnknown_83FDDEB[]; extern const u8 gUnknown_83FDCD2[]; +extern const u8 gUnknown_83FE6FA[]; // credits extern const u8 gString_Dummy[]; diff --git a/ld_script.txt b/ld_script.txt index 3538f70bd..c1d781e0a 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -209,7 +209,6 @@ SECTIONS { 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); asm/battle_anim_special.o(.text); diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c index ee0ac7ef9..fc1bade2c 100644 --- a/src/battle_controller_oak_old_man.c +++ b/src/battle_controller_oak_old_man.c @@ -25,84 +25,85 @@ #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) = +static void OakOldManHandleGetMonData(void); +static void OakOldManHandleGetRawMonData(void); +static void OakOldManHandleSetMonData(void); +static void OakOldManHandleSetRawMonData(void); +static void OakOldManHandleLoadMonSprite(void); +static void OakOldManHandleSwitchInAnim(void); +static void OakOldManHandleReturnMonToBall(void); +static void OakOldManHandleDrawTrainerPic(void); +static void OakOldManHandleTrainerSlide(void); +static void OakOldManHandleTrainerSlideBack(void); +static void OakOldManHandleFaintAnimation(void); +static void OakOldManHandlePaletteFade(void); +static void OakOldManHandleSuccessBallThrowAnim(void); +static void OakOldManHandleBallThrowAnim(void); +static void OakOldManHandlePause(void); +static void OakOldManHandleMoveAnimation(void); +static void OakOldManHandlePrintString(void); +static void OakOldManHandlePrintSelectionString(void); +static void OakOldManHandleChooseAction(void); +static void OakOldManHandleUnknownYesNoBox(void); +static void OakOldManHandleChooseMove(void); +static void OakOldManHandleChooseItem(void); +static void OakOldManHandleChoosePokemon(void); +static void OakOldManHandleCmd23(void); +static void OakOldManHandleHealthBarUpdate(void); +static void OakOldManHandleExpUpdate(void); +static void OakOldManHandleStatusIconUpdate(void); +static void OakOldManHandleStatusAnimation(void); +static void OakOldManHandleStatusXor(void); +static void OakOldManHandleDataTransfer(void); +static void OakOldManHandleDMA3Transfer(void); +static void OakOldManHandlePlayBGM(void); +static void OakOldManHandleCmd32(void); +static void OakOldManHandleTwoReturnValues(void); +static void OakOldManHandleChosenMonReturnValue(void); +static void OakOldManHandleOneReturnValue(void); +static void OakOldManHandleOneReturnValue_Duplicate(void); +static void OakOldManHandleCmd37(void); +static void OakOldManHandleCmd38(void); +static void OakOldManHandleCmd39(void); +static void OakOldManHandleCmd40(void); +static void OakOldManHandleHitAnimation(void); +static void OakOldManHandleCmd42(void); +static void OakOldManHandlePlaySE(void); +static void OakOldManHandlePlayFanfare(void); +static void OakOldManHandleFaintingCry(void); +static void OakOldManHandleIntroSlide(void); +static void OakOldManHandleIntroTrainerBallThrow(void); +static void OakOldManHandleDrawPartyStatusSummary(void); +static void OakOldManHandleHidePartyStatusSummary(void); +static void OakOldManHandleEndBounceEffect(void); +static void OakOldManHandleSpriteInvisibility(void); +static void OakOldManHandleBattleAnimation(void); +static void OakOldManHandleLinkStandbyMsg(void); +static void OakOldManHandleResetActionMoveSelection(void); +static void OakOldManHandleCmd55(void); +static void OakOldManCmdEnd(void); + +static void OakOldManBufferRunCommand(void); +static void OakOldManBufferExecCompleted(void); +static void WaitForMonSelection(void); +static void CompleteWhenChoseItem(void); +static void sub_80E8704(void); +static void sub_80E7CD8(void); +static void sub_80E835C(void); +static void Task_LaunchLvlUpAnim(u8 taskId); +static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(u8 taskId); +static void CompleteOnInactiveTextPrinter2(void); +static void Task_PrepareToGiveExpWithExpBar(u8 taskId); +static void sub_80E804C(u8 taskId); +static void Task_UpdateLvlInHealthbox(u8 taskId); +static void sub_80E85D4(const u8 *text, u8 a1); +static u32 CopyOakOldManMonData(u8 monId, u8 *dst); +static void SetOakOldManMonData(u8 monId); +static void OakOldManDoMoveAnimation(void); +static void HandleInputChooseAction(void); +static void sub_80EB0A8(u8 taskId); + +static void (*const sOakOldManBufferCommands[CONTROLLER_CMDS_COUNT])(void) = { OakOldManHandleGetMonData, OakOldManHandleGetRawMonData, @@ -163,7 +164,7 @@ void (*const sOakOldManBufferCommands[CONTROLLER_CMDS_COUNT])(void) = OakOldManCmdEnd, }; -void nullsub_81(void) +static void nullsub_81(void) { } @@ -176,7 +177,7 @@ void SetControllerToOakOrOldMan(void) gBattleStruct->field_97 = 0; } -void OakOldManBufferRunCommand(void) +static void OakOldManBufferRunCommand(void) { if (gBattleControllerExecFlags & gBitTable[gActiveBattler]) { @@ -187,7 +188,7 @@ void OakOldManBufferRunCommand(void) } } -void HandleInputChooseAction_tmp(void) +static void HandleInputChooseAction(void) { u16 itemId = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); @@ -280,7 +281,7 @@ void HandleInputChooseAction_tmp(void) } } -void sub_80E7844(void) +static void sub_80E7844(void) { switch (gBattleStruct->field_94) { @@ -309,19 +310,19 @@ void sub_80E7844(void) } } -void CompleteOnBattlerSpriteCallbackDummy_tmp(void) +static void CompleteOnBattlerSpriteCallbackDummy(void) { if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) OakOldManBufferExecCompleted(); } -void CompleteOnInactiveTextPrinter_tmp(void) +static void CompleteOnInactiveTextPrinter(void) { if (!IsTextPrinterActive(0)) OakOldManBufferExecCompleted(); } -void sub_80E7930(void) +static void sub_80E7930(void) { if (!gPaletteFade.active) { @@ -331,7 +332,7 @@ void sub_80E7930(void) } } -void CompleteOnSpecialAnimDone_tmp(void) +static void CompleteOnSpecialAnimDone(void) { if (!gDoingBattleAnim) OakOldManBufferExecCompleted(); @@ -344,13 +345,13 @@ void sub_80E7988(void) OakOldManBufferExecCompleted(); } -void OpenPartyMenuToChooseMon_tmp(void) +static void OpenPartyMenuToChooseMon(void) { if (!gPaletteFade.active) { u8 caseId; - gBattlerControllerFuncs[gActiveBattler] = WaitForMonSelection_tmp; + gBattlerControllerFuncs[gActiveBattler] = WaitForMonSelection; caseId = gTasks[gUnknown_3004FFC[gActiveBattler]].data[0]; DestroyTask(gUnknown_3004FFC[gActiveBattler]); FreeAllWindowBuffers(); @@ -358,7 +359,7 @@ void OpenPartyMenuToChooseMon_tmp(void) } } -void WaitForMonSelection_tmp(void) +static void WaitForMonSelection(void) { if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { @@ -370,11 +371,11 @@ void WaitForMonSelection_tmp(void) } } -void OpenBagAndChooseItem_tmp(void) +static void OpenBagAndChooseItem(void) { if (!gPaletteFade.active) { - gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChoseItem_tmp; + gBattlerControllerFuncs[gActiveBattler] = CompleteWhenChoseItem; nullsub_44(); FreeAllWindowBuffers(); if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) @@ -384,7 +385,7 @@ void OpenBagAndChooseItem_tmp(void) } } -void CompleteWhenChoseItem_tmp(void) +static void CompleteWhenChoseItem(void) { if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active) { @@ -403,7 +404,7 @@ void CompleteWhenChoseItem_tmp(void) } } -void sub_80E7B4C(void) +static void sub_80E7B4C(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) @@ -433,7 +434,7 @@ void sub_80E7B4C(void) } } -void sub_80E7CD8(void) +static void sub_80E7CD8(void) { bool32 r4 = FALSE; @@ -460,7 +461,7 @@ void sub_80E7CD8(void) #define tExpTask_battler data[2] #define tExpTask_frames data[10] -void Task_GiveExpToMon_tmp(u8 taskId) +static void Task_GiveExpToMon(u8 taskId) { u32 monId = (u8)(gTasks[taskId].tExpTask_monId); u8 battlerId = gTasks[taskId].tExpTask_battler; @@ -487,25 +488,25 @@ void Task_GiveExpToMon_tmp(u8 taskId) gActiveBattler = savedActiveBattler; if (IsDoubleBattle() == TRUE && ((u16)(monId) == gBattlerPartyIndexes[battlerId] || (u16)(monId) == gBattlerPartyIndexes[battlerId ^ BIT_FLANK])) - gTasks[taskId].func = Task_LaunchLvlUpAnim_tmp; + gTasks[taskId].func = Task_LaunchLvlUpAnim; else - gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp; + gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter; } else { currExp += gainedExp; SetMonData(mon, MON_DATA_EXP, &currExp); - gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2_tmp; + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2; DestroyTask(taskId); } } else { - gTasks[taskId].func = Task_PrepareToGiveExpWithExpBar_tmp; + gTasks[taskId].func = Task_PrepareToGiveExpWithExpBar; } } -void Task_PrepareToGiveExpWithExpBar_tmp(u8 taskId) +static void Task_PrepareToGiveExpWithExpBar(u8 taskId) { u8 monIndex = gTasks[taskId].tExpTask_monId; s32 gainedExp = gTasks[taskId].tExpTask_gainedExp; @@ -524,7 +525,7 @@ void Task_PrepareToGiveExpWithExpBar_tmp(u8 taskId) gTasks[taskId].func = sub_80E804C; } -void sub_80E804C(u8 taskId) +static void sub_80E804C(u8 taskId) { if (gTasks[taskId].tExpTask_frames < 13) { @@ -562,20 +563,20 @@ void sub_80E804C(u8 taskId) gActiveBattler = battlerId; BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp); gActiveBattler = savedActiveBattler; - gTasks[taskId].func = Task_LaunchLvlUpAnim_tmp; + gTasks[taskId].func = Task_LaunchLvlUpAnim; } else { currExp += gainedExp; SetMonData(&gPlayerParty[monId], MON_DATA_EXP, &currExp); - gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2_tmp; + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2; DestroyTask(taskId); } } } } -void Task_LaunchLvlUpAnim_tmp(u8 taskId) +static void Task_LaunchLvlUpAnim(u8 taskId) { u8 battlerId = gTasks[taskId].tExpTask_battler; u8 monIndex = gTasks[taskId].tExpTask_monId; @@ -583,10 +584,10 @@ void Task_LaunchLvlUpAnim_tmp(u8 taskId) 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; + gTasks[taskId].func = Task_UpdateLvlInHealthbox; } -void Task_UpdateLvlInHealthbox_tmp(u8 taskId) +static void Task_UpdateLvlInHealthbox(u8 taskId) { u8 battlerId = gTasks[taskId].tExpTask_battler; @@ -599,22 +600,22 @@ void Task_UpdateLvlInHealthbox_tmp(u8 taskId) UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId ^ BIT_FLANK], &gPlayerParty[monIndex], HEALTHBOX_ALL); else UpdateHealthboxAttribute(gHealthboxSpriteIds[battlerId], &gPlayerParty[monIndex], HEALTHBOX_ALL); - gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp; + gTasks[taskId].func = DestroyExpTaskAndCompleteOnInactiveTextPrinter; } } -void DestroyExpTaskAndCompleteOnInactiveTextPrinter_tmp(u8 taskId) +static void DestroyExpTaskAndCompleteOnInactiveTextPrinter(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; + gBattlerControllerFuncs[battlerId] = CompleteOnInactiveTextPrinter2; DestroyTask(taskId); } -void sub_80E82F4(void) +static void sub_80E82F4(void) { if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.y > DISPLAY_HEIGHT) { @@ -625,7 +626,7 @@ void sub_80E82F4(void) } } -void sub_80E835C(void) +static void sub_80E835C(void) { u32 mask; @@ -723,7 +724,7 @@ void sub_80E8570(void) sub_80E85D4(gUnknown_83FDC58, 1); } -void sub_80E8584(void) +static void sub_80E8584(void) { sub_80E85D4(gUnknown_83FDC95, 64); } @@ -733,7 +734,7 @@ void sub_80E8598(void) sub_80E85D4(gUnknown_83FDD23, 1); } -void sub_80E85AC(void) +static void sub_80E85AC(void) { sub_80E85D4(gUnknown_83FDD64, 64); } @@ -743,7 +744,7 @@ void sub_80E85C0(void) sub_80E85D4(gUnknown_83FDDEB, 64); } -void sub_80E85D4(const u8 *text, u8 a2) +static void sub_80E85D4(const u8 *text, u8 a2) { switch (gBattleStruct->field_94) { @@ -803,7 +804,7 @@ void sub_80E85D4(const u8 *text, u8 a2) } } -void sub_80E8704(void) +static void sub_80E8704(void) { u32 mask; @@ -880,7 +881,7 @@ void sub_80E8704(void) } } -void CompleteOnHealthbarDone_tmp(void) +static void CompleteOnHealthbarDone(void) { s16 hpValue = MoveBattleBar(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], HEALTH_BAR, 0); @@ -896,13 +897,13 @@ void CompleteOnHealthbarDone_tmp(void) } } -void CompleteOnInactiveTextPrinter2_tmp(void) +static void CompleteOnInactiveTextPrinter2(void) { if (!IsTextPrinterActive(0)) OakOldManBufferExecCompleted(); } -void DoHitAnimBlinkSpriteEffect_tmp(void) +static void DoHitAnimBlinkSpriteEffect(void) { u8 spriteId = gBattlerSpriteIds[gActiveBattler]; @@ -921,7 +922,7 @@ void DoHitAnimBlinkSpriteEffect_tmp(void) } } -void sub_80E89C4(void) +static void sub_80E89C4(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) { @@ -932,19 +933,19 @@ void sub_80E89C4(void) } } -void CompleteOnBattlerSpriteCallbackDummy2_tmp(void) +static void CompleteOnBattlerSpriteCallbackDummy2(void) { if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy) OakOldManBufferExecCompleted(); } -void CompleteOnFinishedBattleAnimation_tmp(void) +static void CompleteOnFinishedBattleAnimation(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animFromTableActive) OakOldManBufferExecCompleted(); } -void OakOldManBufferExecCompleted(void) +static void OakOldManBufferExecCompleted(void) { gBattlerControllerFuncs[gActiveBattler] = OakOldManBufferRunCommand; if (gBattleTypeFlags & BATTLE_TYPE_LINK) @@ -960,13 +961,13 @@ void OakOldManBufferExecCompleted(void) } } -void CompleteOnFinishedStatusAnimation_tmp(void) +static void CompleteOnFinishedStatusAnimation(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].statusAnimActive) OakOldManBufferExecCompleted(); } -void OakOldManHandleGetMonData(void) +static 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; @@ -991,7 +992,7 @@ void OakOldManHandleGetMonData(void) OakOldManBufferExecCompleted(); } -u32 CopyOakOldManMonData(u8 monId, u8 *dst) +static u32 CopyOakOldManMonData(u8 monId, u8 *dst) { struct BattlePokemon battleMon; struct MovePpInfo moveData; @@ -1296,12 +1297,12 @@ u32 CopyOakOldManMonData(u8 monId, u8 *dst) return size; } -void OakOldManHandleGetRawMonData(void) +static void OakOldManHandleGetRawMonData(void) { PlayerHandleGetRawMonData(); } -void OakOldManHandleSetMonData(void) +static void OakOldManHandleSetMonData(void) { u8 monToCheck; u8 i; @@ -1323,7 +1324,7 @@ void OakOldManHandleSetMonData(void) OakOldManBufferExecCompleted(); } -void SetOakOldManMonData(u8 monId) +static void SetOakOldManMonData(u8 monId) { struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3]; struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3]; @@ -1540,17 +1541,755 @@ void SetOakOldManMonData(u8 monId) HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); } -void OakOldManHandleSetRawMonData(void) +static void OakOldManHandleSetRawMonData(void) { OakOldManBufferExecCompleted(); } -void OakOldManHandleLoadMonSprite(void) +static void OakOldManHandleLoadMonSprite(void) { OakOldManBufferExecCompleted(); } -void OakOldManHandleSwitchInAnim(void) +static void OakOldManHandleSwitchInAnim(void) { OakOldManBufferExecCompleted(); } + +static void OakOldManHandleReturnMonToBall(void) +{ + if (gBattleBufferA[gActiveBattler][1] == 0) + { + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON); + gBattlerControllerFuncs[gActiveBattler] = sub_80E89C4; + } + else + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + OakOldManBufferExecCompleted(); + } +} + +static void OakOldManHandleDrawTrainerPic(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 80, + (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80, + 30); + } + else + { + DecompressTrainerBackPalette(5, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(5, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 80, + (8 - gTrainerBackPicCoords[5].size) * 4 + 80, + 30); + } + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy; +} + +static void OakOldManHandleTrainerSlide(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + DecompressTrainerBackPalette(gSaveBlock2Ptr->playerGender, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 80, + (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].size) * 4 + 80, + 30); + } + else + { + DecompressTrainerBackPalette(5, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(5, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 80, + (8 - gTrainerBackPicCoords[5].size) * 4 + 80, + 30); + } + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -96; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy2; +} + +static void OakOldManHandleTrainerSlideBack(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleFaintAnimation(void) +{ + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState == 0) + { + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + ++gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState; + } + else + { + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_ATTACKER); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8012110; + gBattlerControllerFuncs[gActiveBattler] = sub_80E82F4; + } + } +} + +static void OakOldManHandlePaletteFade(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleSuccessBallThrowAnim(void) +{ + gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS; + gDoingBattleAnim = TRUE; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SP_4); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; +} + +static void OakOldManHandleBallThrowAnim(void) +{ + u8 ballThrowCaseId = gBattleBufferA[gActiveBattler][1]; + + gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId; + gDoingBattleAnim = TRUE; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_SP_4); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone; +} + +static void OakOldManHandlePause(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleMoveAnimation(void) +{ + u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8); + + gAnimMoveTurn = gBattleBufferA[gActiveBattler][3]; + gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8); + gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24); + gAnimFriendship = gBattleBufferA[gActiveBattler][10]; + gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8); + gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16]; + gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality; + if (IsMoveWithoutAnimation(move, gAnimMoveTurn)) // always returns FALSE + { + OakOldManBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + gBattlerControllerFuncs[gActiveBattler] = OakOldManDoMoveAnimation; + } +} + +static void OakOldManDoMoveAnimation(void) +{ + u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8); + + switch (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState) + { + case 0: + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SUBSTITUTE_TO_MON); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 1; + break; + case 1: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + sub_8035450(0); + DoMoveAnim(move); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 2; + } + break; + case 2: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_8035450(1); + if (gBattleSpritesDataPtr->battlerData[gActiveBattler].behindSubstitute) + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_MON_TO_SUBSTITUTE); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 3; + } + break; + case 3: + if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) + { + CopyAllBattleSpritesInvisibilities(); + TrySetBehindSubstituteSpriteBit(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + OakOldManBufferExecCompleted(); + } + break; + } +} + +static void OakOldManHandlePrintString(void) +{ + u16 *stringId; + + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); + if (gBattleTypeFlags & BATTLE_TYPE_OLD_MAN_TUTORIAL && *stringId == 1) + { + OakOldManBufferExecCompleted(); + } + else + { + BufferStringBattle(*stringId); + if (sub_80D89B0(*stringId)) + BattlePutTextOnWindow(gDisplayedStringBattle, 64); + else + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + switch (*stringId) + { + case 216: + if (!sub_80EB2E0(2)) + { + sub_80EB2F4(2); + gBattlerControllerFuncs[gActiveBattler] = sub_80E8584; + return; + } + break; + case 30: + gBattlerControllerFuncs[gActiveBattler] = sub_80E85AC; + return; + case 383: + gBattlerControllerFuncs[gActiveBattler] = sub_80E85C0; + return; + case 227: + gBattlerControllerFuncs[gActiveBattler] = sub_80E8598; + return; + } + } + gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter; + } +} + +static void OakOldManHandlePrintSelectionString(void) +{ + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + OakOldManHandlePrintString(); + else + OakOldManBufferExecCompleted(); +} + +static void sub_80EA690(void) +{ + if (!IsDma3ManagerBusyWithBgCopy()) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 160; + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseAction; + else + gBattlerControllerFuncs[gActiveBattler] = sub_80E7844; + } +} + +static void OakOldManHandleChooseAction(void) +{ + s32 i; + + gBattlerControllerFuncs[gActiveBattler] = sub_80EA690; + BattlePutTextOnWindow(gUnknown_83FDA4C, 0); + BattlePutTextOnWindow(gUnknown_83FE725, 2); + for (i = 0; i < MAX_MON_MOVES; ++i) + ActionSelectionDestroyCursorAt((u8)i); + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo); + else + BattleStringExpandPlaceholdersToDisplayedString(gUnknown_83FE6FA); + BattlePutTextOnWindow(gDisplayedStringBattle, 1); +} + +static void OakOldManHandleUnknownYesNoBox(void) +{ + OakOldManBufferExecCompleted(); +} + +static void sub_80EA798(void) +{ + if (!IsDma3ManagerBusyWithBgCopy()) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 320; + gBattlerControllerFuncs[gActiveBattler] = sub_80E7988; + } +} + +static void OakOldManHandleChooseMove(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + InitMoveSelectionsVarsAndStrings(); + gBattlerControllerFuncs[gActiveBattler] = sub_80EA798; + } + else + { + switch (gBattleStruct->field_95) + { + case 0: + InitMoveSelectionsVarsAndStrings(); + ++gBattleStruct->field_95; + gBattleStruct->field_97 = 80; + // fall through + case 1: + if (--gBattleStruct->field_97 == 0) + { + PlaySE(SE_SELECT); + BtlController_EmitTwoReturnValues(1, 10, 0x100); + OakOldManBufferExecCompleted(); + } + break; + } + } +} + +static void OakOldManHandleChooseItem(void) +{ + s32 i; + + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem; + gBattlerInMenuId = gActiveBattler; + for (i = 0; i < 3; ++i) + gUnknown_203B0DC[i] = gBattleBufferA[gActiveBattler][i + 1]; +} + +static void OakOldManHandleChoosePokemon(void) +{ + s32 i; + + gUnknown_3004FFC[gActiveBattler] = CreateTask(TaskDummy, 0xFF); + gTasks[gUnknown_3004FFC[gActiveBattler]].data[0] = gBattleBufferA[gActiveBattler][1] & 0xF; + *(&gBattleStruct->battlerPreventingSwitchout) = gBattleBufferA[gActiveBattler][1] >> 4; + *(&gBattleStruct->field_8B) = gBattleBufferA[gActiveBattler][2]; + *(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3]; + for (i = 0; i < 3; ++i) + gUnknown_203B0DC[i] = gBattleBufferA[gActiveBattler][4 + i]; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gBattlerControllerFuncs[gActiveBattler] = OpenPartyMenuToChooseMon; + gBattlerInMenuId = gActiveBattler; +} + +static void OakOldManHandleCmd23(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleHealthBarUpdate(void) +{ + s16 hpVal; + + LoadBattleBarGfx(0); + hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + if (hpVal != INSTANT_HP_BAR_DROP) + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal); + } + else + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], 0, HP_CURRENT); + } + gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone; +} + +static void OakOldManHandleExpUpdate(void) +{ + u8 monId = gBattleBufferA[gActiveBattler][1]; + + if (GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL) >= MAX_LEVEL) + { + OakOldManBufferExecCompleted(); + } + else + { + s16 expPointsToGive; + u8 taskId; + + LoadBattleBarGfx(1); + GetMonData(&gPlayerParty[monId], MON_DATA_SPECIES); // Unused return value. + expPointsToGive = T1_READ_16(&gBattleBufferA[gActiveBattler][2]); + taskId = CreateTask(Task_GiveExpToMon, 10); + gTasks[taskId].tExpTask_monId = monId; + gTasks[taskId].tExpTask_gainedExp = expPointsToGive; + gTasks[taskId].tExpTask_battler = gActiveBattler; + gBattlerControllerFuncs[gActiveBattler] = nullsub_81; + } +} + +static void OakOldManHandleStatusIconUpdate(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleStatusAnimation(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleStatusXor(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleDataTransfer(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleDMA3Transfer(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandlePlayBGM(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleCmd32(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleTwoReturnValues(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleChosenMonReturnValue(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleOneReturnValue(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleOneReturnValue_Duplicate(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleCmd37(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleCmd38(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleCmd39(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleCmd40(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleHitAnimation(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE) + { + OakOldManBufferExecCompleted(); + } + else + { + gDoingBattleAnim = TRUE; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; + DoHitAnimHealthboxEffect(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect; + } +} + +static void OakOldManHandleCmd42(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandlePlaySE(void) +{ + PlaySE(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandlePlayFanfare(void) +{ + PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleFaintingCry(void) +{ + u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES); + + PlayCry1(species, 25); + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleIntroSlide(void) +{ + HandleIntroSlide(gBattleBufferA[gActiveBattler][1]); + gIntroSlideFlags |= 1; + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleIntroTrainerBallThrow(void) +{ + u8 paletteNum; + u8 taskId; + + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + SetSpritePrimaryCoordsFromSecondaryCoords(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 50; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = -40; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[4] = gSprites[gBattlerSpriteIds[gActiveBattler]].pos1.y; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gActiveBattler; + StoreSpriteCallbackInData6(&gSprites[gBattlerSpriteIds[gActiveBattler]], sub_80335F8); + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], 1); + paletteNum = AllocSpritePalette(0xD6F8); + LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2Ptr->playerGender].data, 0x100 + paletteNum * 16, 32); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum; + taskId = CreateTask(sub_80EB0A8, 5); + gTasks[taskId].data[0] = gActiveBattler; + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown) + gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; + gBattleSpritesDataPtr->animationData->field_9_x1 = 1; + gBattlerControllerFuncs[gActiveBattler] = nullsub_13; + } + else + { + if (gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown) + gTasks[gBattlerStatusSummaryTaskId[gActiveBattler]].func = Task_HidePartyStatusSummary; + OakOldManBufferExecCompleted(); + } +} + +static void sub_80EAF34(u8 battlerId) +{ + u16 species; + + gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies = SPECIES_NONE; + gBattlerPartyIndexes[battlerId] = gBattleBufferA[battlerId][1]; + species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES); + gUnknown_3004FFC[battlerId] = CreateInvisibleSpriteWithCallback(sub_8033E3C); + SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battlerId)); + gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate, + GetBattlerSpriteCoord(battlerId, 2), + GetBattlerSpriteDefault_Y(battlerId), + GetBattlerSpriteSubpriority(battlerId)); + gSprites[gUnknown_3004FFC[battlerId]].data[1] = gBattlerSpriteIds[battlerId]; + gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId; + gSprites[gBattlerSpriteIds[battlerId]].data[2] = species; + gSprites[gBattlerSpriteIds[battlerId]].oam.paletteNum = battlerId; + StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerId]], gBattleMonForms[battlerId]); + gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE; + gSprites[gBattlerSpriteIds[battlerId]].callback = SpriteCallbackDummy; + gSprites[gUnknown_3004FFC[battlerId]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT); +} + +static void sub_80EB0A8(u8 taskId) +{ + if (gTasks[taskId].data[1] < 31) + { + ++gTasks[taskId].data[1]; + } + else + { + u8 savedActiveBattler = gActiveBattler; + + gActiveBattler = gTasks[taskId].data[0]; + gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler]; + sub_80EAF34(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = sub_80E7B4C; + gActiveBattler = savedActiveBattler; + DestroyTask(taskId); + } +} + +static void OakOldManHandleDrawPartyStatusSummary(void) +{ + if (gBattleBufferA[gActiveBattler][1] != 0 + && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + OakOldManBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = TRUE; + gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, + (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], + gBattleBufferA[gActiveBattler][1], + gBattleBufferA[gActiveBattler][2]); + OakOldManBufferExecCompleted(); + } +} + +static void OakOldManHandleHidePartyStatusSummary(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleEndBounceEffect(void) +{ + EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX); + EndBounceEffect(gActiveBattler, BOUNCE_MON); + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleSpriteInvisibility(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleBattleAnimation(void) +{ + u8 animationId = gBattleBufferA[gActiveBattler][1]; + u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + + if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument)) + OakOldManBufferExecCompleted(); + else + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation; +} + +static void OakOldManHandleLinkStandbyMsg(void) +{ + switch (gBattleBufferA[gActiveBattler][1]) + { + case 0: + case 1: + EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX); + EndBounceEffect(gActiveBattler, BOUNCE_MON); + break; + case 2: + break; + } + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleResetActionMoveSelection(void) +{ + OakOldManBufferExecCompleted(); +} + +static void OakOldManHandleCmd55(void) +{ + gBattleOutcome = gBattleBufferA[gActiveBattler][1]; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + OakOldManBufferExecCompleted(); + if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER) && gBattleTypeFlags & BATTLE_TYPE_LINK) + gBattlerControllerFuncs[gActiveBattler] = sub_80E7930; +} + +static void OakOldManCmdEnd(void) +{ +} + +bool8 sub_80EB2E0(u8 a1) +{ + return gBattleStruct->field_96 & a1; +} + +void sub_80EB2F4(u8 a1) +{ + gBattleStruct->field_96 |= a1; +} + +void sub_80EB30C(void) +{ + u32 width = 0x1A; + u32 pal = 7; + + FillBgTilemapBufferRect(0, 0x30, 0, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x31, 1, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x32, 2, 0xE, width, 1, pal); + FillBgTilemapBufferRect(0, 0x33, 0x1C, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x34, 0x1D, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x35, 0, 0xF, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x36, 1, 0xF, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x38, 0x1C, 0xF, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x39, 0x1D, 0xF, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x3A, 0, 0x10, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x3B, 1, 0x10, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x3C, 0x1C, 0x10, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x3D, 0x1D, 0x10, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x3A), 0, 0x11, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x3B), 1, 0x11, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x3C), 0x1C, 0x11, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x3D), 0x1D, 0x11, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x35), 0, 0x12, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x36), 1, 0x12, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x38), 0x1C, 0x12, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x39), 0x1D, 0x12, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x30), 0, 0x13, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x31), 1, 0x13, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x32), 2, 0x13, width, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x33), 0x1C, 0x13, 1, 1, pal); + FillBgTilemapBufferRect(0, BG_TILE_V_FLIP(0x34), 0x1D, 0x13, 1, 1, pal); +} + +void sub_80EB524(void) +{ + u32 pal = 0; + u32 width = 0x1A; + u32 height; + + FillBgTilemapBufferRect(0, 3, 0, 0xE, 1, 1, pal); + height = 4; + FillBgTilemapBufferRect(0, 4, 1, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 5, 2, 0xE, width, 1, pal); + FillBgTilemapBufferRect(0, 6, 0x1C, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 7, 0x1D, 0xE, 1, 1, pal); + FillBgTilemapBufferRect(0, 8, 0, 0xF, 1, height, pal); + FillBgTilemapBufferRect(0, 9, 1, 0xF, 1, height, pal); + FillBgTilemapBufferRect(0, 0xA, 2, 0xF, width, height, pal); + FillBgTilemapBufferRect(0, 0xB, 0x1C, 0xF, 1, height, pal); + FillBgTilemapBufferRect(0, 0xC, 0x1D, 0xF, 1, height, pal); + FillBgTilemapBufferRect(0, 0xD, 0, 0x13, 1, 1, pal); + FillBgTilemapBufferRect(0, 0xE, 1, 0x13, 1, 1, pal); + FillBgTilemapBufferRect(0, 0xF, 2, 0x13, width, 1, pal); + FillBgTilemapBufferRect(0, 0x10, 0x1C, 0x13, 1, 1, pal); + FillBgTilemapBufferRect(0, 0x11, 0x1D, 0x13, 1, 1, pal); +} |