diff options
-rw-r--r-- | asm/battle_controller_pokedude.s | 3038 | ||||
-rw-r--r-- | common_syms/battle_controller_pokedude.txt | 1 | ||||
-rw-r--r-- | include/battle.h | 2 | ||||
-rw-r--r-- | src/battle_controller_opponent.c | 2 | ||||
-rw-r--r-- | src/battle_controller_player.c | 2 | ||||
-rw-r--r-- | src/battle_controller_pokedude.c | 747 | ||||
-rw-r--r-- | src/rock.c | 2 | ||||
-rw-r--r-- | sym_common.txt | 5 |
8 files changed, 753 insertions, 3046 deletions
diff --git a/asm/battle_controller_pokedude.s b/asm/battle_controller_pokedude.s index 4aaf4898b..6b28738b0 100644 --- a/asm/battle_controller_pokedude.s +++ b/asm/battle_controller_pokedude.s @@ -5,3044 +5,6 @@ .text - thumb_func_start PokedudeHandleLoadMonSprite -PokedudeHandleLoadMonSprite: @ 81580E0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r6, _08158214 @ =gActiveBattler - ldrb r0, [r6] - lsls r0, 1 - ldr r1, _08158218 @ =gBattlerPartyIndexes - adds r0, r1 - ldrh r0, [r0] - movs r7, 0x64 - muls r0, r7 - ldr r2, _0815821C @ =gEnemyParty - mov r10, r2 - add r0, r10 - movs r1, 0xB - bl GetMonData - mov r8, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldrb r1, [r6] - lsls r0, r1, 1 - ldr r2, _08158218 @ =gBattlerPartyIndexes - adds r0, r2 - ldrh r0, [r0] - muls r0, r7 - add r0, r10 - bl BattleLoadOpponentMonSpriteGfx - ldrb r0, [r6] - bl GetBattlerSpriteDefault_Y - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldrb r0, [r6] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl SetMultiuseSpriteTemplateToPokemon - ldr r0, _08158220 @ =gMultiuseSpriteTemplate - mov r9, r0 - ldrb r0, [r6] - movs r1, 0x2 - bl GetBattlerSpriteCoord - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r6] - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - mov r0, r9 - adds r1, r4, 0 - adds r2, r5, 0 - bl CreateSprite - ldr r4, _08158224 @ =gBattlerSpriteIds - ldrb r1, [r6] - adds r1, r4 - strb r0, [r1] - ldr r5, _08158228 @ =gSprites - ldrb r0, [r6] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _0815822C @ =0x0000ff10 - strh r1, [r0, 0x24] - ldrb r2, [r6] - adds r0, r2, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r2, [r0, 0x2E] - ldrb r0, [r6] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - ldrb r3, [r6] - adds r0, r3, r4 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r2, [r6] - adds r4, r2, r4 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _08158230 @ =gBattleMonForms - adds r2, r1 - ldrb r1, [r2] - bl StartSpriteAnim - ldrb r4, [r6] - lsls r0, r4, 1 - ldr r2, _08158218 @ =gBattlerPartyIndexes - adds r0, r2 - ldrh r0, [r0] - muls r0, r7 - add r0, r10 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl SetBattlerShadowSpriteCallback - ldr r1, _08158234 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _08158238 @ =sub_8156184 - str r1, [r0] - bl PokedudeBufferExecCompleted - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08158214: .4byte gActiveBattler -_08158218: .4byte gBattlerPartyIndexes -_0815821C: .4byte gEnemyParty -_08158220: .4byte gMultiuseSpriteTemplate -_08158224: .4byte gBattlerSpriteIds -_08158228: .4byte gSprites -_0815822C: .4byte 0x0000ff10 -_08158230: .4byte gBattleMonForms -_08158234: .4byte gBattlerControllerFuncs -_08158238: .4byte sub_8156184 - thumb_func_end PokedudeHandleLoadMonSprite - - thumb_func_start PokedudeHandleSwitchInAnim -PokedudeHandleSwitchInAnim: @ 815823C - push {r4,r5,lr} - ldr r5, _081582A0 @ =gActiveBattler - ldrb r0, [r5] - ldr r4, _081582A4 @ =gBattleBufferA - lsls r1, r0, 9 - adds r2, r4, 0x2 - adds r1, r2 - ldrb r1, [r1] - bl ClearTemporarySpeciesSpriteData - ldr r2, _081582A8 @ =gBattlerPartyIndexes - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r2 - lsls r0, 9 - adds r4, 0x1 - adds r0, r4 - ldrb r0, [r0] - movs r4, 0 - strh r0, [r1] - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _081582AC @ =gPlayerParty - adds r0, r2 - bl BattleLoadPlayerMonSpriteGfx - ldr r1, _081582B0 @ =gActionSelectionCursor - ldrb r0, [r5] - adds r0, r1 - strb r4, [r0] - ldr r1, _081582B4 @ =gMoveSelectionCursor - ldrb r0, [r5] - adds r0, r1 - strb r4, [r0] - ldrb r0, [r5] - bl sub_8159478 - ldr r1, _081582B8 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _081582BC @ =sub_81563A8 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081582A0: .4byte gActiveBattler -_081582A4: .4byte gBattleBufferA -_081582A8: .4byte gBattlerPartyIndexes -_081582AC: .4byte gPlayerParty -_081582B0: .4byte gActionSelectionCursor -_081582B4: .4byte gMoveSelectionCursor -_081582B8: .4byte gBattlerControllerFuncs -_081582BC: .4byte sub_81563A8 - thumb_func_end PokedudeHandleSwitchInAnim - - thumb_func_start PokedudeHandleReturnMonToBall -PokedudeHandleReturnMonToBall: @ 81582C0 - push {r4-r6,lr} - ldr r0, _081582EC @ =gBattleBufferA - ldr r6, _081582F0 @ =gActiveBattler - ldrb r2, [r6] - lsls r1, r2, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - bne _081582FC - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x1 - bl InitAndLaunchSpecialAnimation - ldr r0, _081582F4 @ =gBattlerControllerFuncs - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _081582F8 @ =sub_8156F7C - str r0, [r1] - b _08158332 - .align 2, 0 -_081582EC: .4byte gBattleBufferA -_081582F0: .4byte gActiveBattler -_081582F4: .4byte gBattlerControllerFuncs -_081582F8: .4byte sub_8156F7C -_081582FC: - ldr r5, _08158338 @ =gBattlerSpriteIds - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0815833C @ =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, _08158340 @ =gHealthboxSpriteIds - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl SetHealthboxSpriteInvisible - bl PokedudeBufferExecCompleted -_08158332: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08158338: .4byte gBattlerSpriteIds -_0815833C: .4byte gSprites -_08158340: .4byte gHealthboxSpriteIds - thumb_func_end PokedudeHandleReturnMonToBall - - thumb_func_start PokedudeHandleDrawTrainerPic -PokedudeHandleDrawTrainerPic: @ 8158344 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r7, _081583D8 @ =gActiveBattler - ldrb r0, [r7] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _081583F0 - ldrb r1, [r7] - movs r0, 0x4 - bl DecompressTrainerBackPalette - ldrb r0, [r7] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x4 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r0, _081583DC @ =gMultiuseSpriteTemplate - ldr r1, _081583E0 @ =gTrainerBackPicCoords - ldrb r1, [r1, 0x10] - 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 r5, _081583E4 @ =gBattlerSpriteIds - ldrb r1, [r7] - adds r1, r5 - strb r0, [r1] - ldr r4, _081583E8 @ =gSprites - ldrb r0, [r7] - 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, [r7] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _081583EC @ =0x0000fffe - strh r1, [r0, 0x2E] - ldrb r3, [r7] - 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] - b _081584E2 - .align 2, 0 -_081583D8: .4byte gActiveBattler -_081583DC: .4byte gMultiuseSpriteTemplate -_081583E0: .4byte gTrainerBackPicCoords -_081583E4: .4byte gBattlerSpriteIds -_081583E8: .4byte gSprites -_081583EC: .4byte 0x0000fffe -_081583F0: - ldrb r1, [r7] - movs r0, 0x84 - bl DecompressTrainerFrontPic - ldrb r0, [r7] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x84 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r5, _08158510 @ =gMultiuseSpriteTemplate - ldr r0, _08158514 @ =gTrainerFrontPicCoords - movs r1, 0x84 - mov r8, r1 - movs r1, 0x84 - lsls r1, 2 - adds r0, r1 - ldrb r0, [r0] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r0, 0xA0 - lsls r0, 14 - adds r4, r0 - asrs r4, 16 - ldrb r0, [r7] - bl GetBattlerSpriteSubpriority - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r5, 0 - movs r1, 0xB0 - adds r2, r4, 0 - bl CreateSprite - ldr r5, _08158518 @ =gBattlerSpriteIds - ldrb r1, [r7] - adds r1, r5 - strb r0, [r1] - ldr r4, _0815851C @ =gSprites - ldrb r0, [r7] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08158520 @ =0x0000ff10 - strh r1, [r0, 0x24] - ldrb r0, [r7] - 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] - ldr r0, _08158524 @ =gTrainerFrontPicPaletteTable - mov r1, r8 - lsls r6, r1, 3 - adds r0, r6 - ldrh r0, [r0, 0x4] - bl IndexOfSpritePaletteTag - ldrb r1, [r7] - adds r1, r5 - ldrb r1, [r1] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - adds r2, r4 - lsls r0, 4 - ldrb r3, [r2, 0x5] - movs r1, 0xF - ands r1, r3 - orrs r1, r0 - strb r1, [r2, 0x5] - ldrb r0, [r7] - adds r0, r5 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x4] - lsls r0, 22 - lsrs r0, 22 - strh r0, [r1, 0x38] - ldr r0, _08158528 @ =gTrainerFrontPicTable - adds r0, r6 - ldrh r0, [r0, 0x6] - bl GetSpriteTileStartByTag - ldrb r1, [r7] - adds r1, r5 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldr r2, _0815852C @ =0x000003ff - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _08158530 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - ldrb r0, [r7] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - mov r1, r8 - strh r1, [r0, 0x6] -_081584E2: - ldrb r0, [r7] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _08158534 @ =sub_8033EEC - str r1, [r0] - ldr r1, _08158538 @ =gBattlerControllerFuncs - ldr r0, _0815853C @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08158540 @ =CompleteOnBattlerSpriteCallbackDummy_PokedudeTmp - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08158510: .4byte gMultiuseSpriteTemplate -_08158514: .4byte gTrainerFrontPicCoords -_08158518: .4byte gBattlerSpriteIds -_0815851C: .4byte gSprites -_08158520: .4byte 0x0000ff10 -_08158524: .4byte gTrainerFrontPicPaletteTable -_08158528: .4byte gTrainerFrontPicTable -_0815852C: .4byte 0x000003ff -_08158530: .4byte 0xfffffc00 -_08158534: .4byte sub_8033EEC -_08158538: .4byte gBattlerControllerFuncs -_0815853C: .4byte gActiveBattler -_08158540: .4byte CompleteOnBattlerSpriteCallbackDummy_PokedudeTmp - thumb_func_end PokedudeHandleDrawTrainerPic - - thumb_func_start PokedudeHandleTrainerSlide -PokedudeHandleTrainerSlide: @ 8158544 - push {r4-r6,lr} - ldr r4, _081585EC @ =gActiveBattler - ldrb r1, [r4] - movs r0, 0x4 - bl DecompressTrainerBackPalette - ldrb r0, [r4] - bl GetBattlerPosition - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x4 - bl SetMultiuseSpriteTemplateToTrainerBack - ldr r0, _081585F0 @ =gMultiuseSpriteTemplate - ldr r1, _081585F4 @ =gTrainerBackPicCoords - ldrb r1, [r1, 0x10] - 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 r6, _081585F8 @ =gBattlerSpriteIds - ldrb r1, [r4] - adds r1, r6 - strb r0, [r1] - ldr r5, _081585FC @ =gSprites - ldrb r3, [r4] - adds r0, r3, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _08158600 @ =0x0000ffa0 - strh r1, [r0, 0x24] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x2 - strh r1, [r0, 0x2E] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r5, 0x1C - adds r0, r5 - ldr r1, _08158604 @ =sub_8033EEC - str r1, [r0] - ldr r1, _08158608 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0815860C @ =CompleteOnBattlerSpriteCallbackDummy2_PokedudeTmp - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081585EC: .4byte gActiveBattler -_081585F0: .4byte gMultiuseSpriteTemplate -_081585F4: .4byte gTrainerBackPicCoords -_081585F8: .4byte gBattlerSpriteIds -_081585FC: .4byte gSprites -_08158600: .4byte 0x0000ffa0 -_08158604: .4byte sub_8033EEC -_08158608: .4byte gBattlerControllerFuncs -_0815860C: .4byte CompleteOnBattlerSpriteCallbackDummy2_PokedudeTmp - thumb_func_end PokedudeHandleTrainerSlide - - thumb_func_start PokedudeHandleTrainerSlideBack -PokedudeHandleTrainerSlideBack: @ 8158610 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleTrainerSlideBack - - thumb_func_start PokedudeHandleFaintAnimation -PokedudeHandleFaintAnimation: @ 815861C - push {r4-r6,lr} - ldr r6, _08158668 @ =gBattleSpritesDataPtr - ldr r4, [r6] - ldr r5, _0815866C @ =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 _08158670 - ldr r1, [r4] - lsls r0, r2, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08158650 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_08158650: - 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 _0815872A - .align 2, 0 -_08158668: .4byte gBattleSpritesDataPtr -_0815866C: .4byte gActiveBattler -_08158670: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0815872A - strb r0, [r3, 0x4] - ldrb r0, [r5] - bl GetBattlerSide - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _081586FC - ldr r2, _081586E8 @ =gBattlerPartyIndexes - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _081586EC @ =gPlayerParty - adds r0, r2 - bl HandleLowHpMusicChange - movs r1, 0x40 - negs r1, r1 - movs r0, 0x10 - bl PlaySE12WithPanning - ldr r2, _081586F0 @ =gSprites - ldr r3, _081586F4 @ =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, _081586F8 @ =sub_8012110 - b _0815871A - .align 2, 0 -_081586E8: .4byte gBattlerPartyIndexes -_081586EC: .4byte gPlayerParty -_081586F0: .4byte gSprites -_081586F4: .4byte gBattlerSpriteIds -_081586F8: .4byte sub_8012110 -_081586FC: - movs r0, 0x10 - movs r1, 0x3F - bl PlaySE12WithPanning - ldr r2, _08158730 @ =gSprites - ldr r1, _08158734 @ =gBattlerSpriteIds - ldrb r0, [r5] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _08158738 @ =SpriteCB_FaintOpponentMon -_0815871A: - str r1, [r0] - ldr r1, _0815873C @ =gBattlerControllerFuncs - ldr r0, _08158740 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08158744 @ =sub_8156DCC - str r1, [r0] -_0815872A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08158730: .4byte gSprites -_08158734: .4byte gBattlerSpriteIds -_08158738: .4byte SpriteCB_FaintOpponentMon -_0815873C: .4byte gBattlerControllerFuncs -_08158740: .4byte gActiveBattler -_08158744: .4byte sub_8156DCC - thumb_func_end PokedudeHandleFaintAnimation - - thumb_func_start PokedudeHandlePaletteFade -PokedudeHandlePaletteFade: @ 8158748 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandlePaletteFade - - thumb_func_start PokedudeHandleSuccessBallThrowAnim -PokedudeHandleSuccessBallThrowAnim: @ 8158754 - push {r4,r5,lr} - ldr r0, _08158794 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0, 0x8] - movs r0, 0x4 - strb r0, [r1, 0x8] - ldr r1, _08158798 @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldr r5, _0815879C @ =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, 0x3 - bl InitAndLaunchSpecialAnimation - ldr r1, _081587A0 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _081587A4 @ =CompleteOnSpecialAnimDone_PokedudeTmp - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08158794: .4byte gBattleSpritesDataPtr -_08158798: .4byte gDoingBattleAnim -_0815879C: .4byte gActiveBattler -_081587A0: .4byte gBattlerControllerFuncs -_081587A4: .4byte CompleteOnSpecialAnimDone_PokedudeTmp - thumb_func_end PokedudeHandleSuccessBallThrowAnim - - thumb_func_start PokedudeHandleBallThrowAnim -PokedudeHandleBallThrowAnim: @ 81587A8 - push {r4,r5,lr} - ldr r1, _081587F0 @ =gBattleBufferA - ldr r5, _081587F4 @ =gActiveBattler - ldrb r0, [r5] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r1, [r0] - ldr r0, _081587F8 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x8] - strb r1, [r0, 0x8] - ldr r1, _081587FC @ =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, 0x3 - bl InitAndLaunchSpecialAnimation - ldr r1, _08158800 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08158804 @ =CompleteOnSpecialAnimDone_PokedudeTmp - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081587F0: .4byte gBattleBufferA -_081587F4: .4byte gActiveBattler -_081587F8: .4byte gBattleSpritesDataPtr -_081587FC: .4byte gDoingBattleAnim -_08158800: .4byte gBattlerControllerFuncs -_08158804: .4byte CompleteOnSpecialAnimDone_PokedudeTmp - thumb_func_end PokedudeHandleBallThrowAnim - - thumb_func_start PokedudeHandlePause -PokedudeHandlePause: @ 8158808 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandlePause - - thumb_func_start PokedudeHandleMoveAnimation -PokedudeHandleMoveAnimation: @ 8158814 - push {r4-r6,lr} - ldr r0, _081588E8 @ =gBattleBufferA - mov r12, r0 - ldr r6, _081588EC @ =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, _081588F0 @ =gAnimMoveTurn - mov r1, r12 - adds r1, 0x3 - adds r2, r1 - ldrb r1, [r2] - strb r1, [r5] - ldr r4, _081588F4 @ =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, _081588F8 @ =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, _081588FC @ =gAnimFriendship - ldrb r1, [r6] - lsls r1, 9 - mov r2, r12 - adds r2, 0xA - adds r1, r2 - ldrb r1, [r1] - strb r1, [r3] - ldr r4, _08158900 @ =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, _08158904 @ =gAnimDisableStructPtr - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x10 - adds r2, r1 - str r2, [r3] - ldr r3, _08158908 @ =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 _0815890C - bl PokedudeBufferExecCompleted - b _0815892A - .align 2, 0 -_081588E8: .4byte gBattleBufferA -_081588EC: .4byte gActiveBattler -_081588F0: .4byte gAnimMoveTurn -_081588F4: .4byte gAnimMovePower -_081588F8: .4byte gAnimMoveDmg -_081588FC: .4byte gAnimFriendship -_08158900: .4byte gWeatherMoveAnim -_08158904: .4byte gAnimDisableStructPtr -_08158908: .4byte gTransformedPersonalities -_0815890C: - ldr r0, _08158930 @ =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, _08158934 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _08158938 @ =PokedudeDoMoveAnimation - str r1, [r0] -_0815892A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08158930: .4byte gBattleSpritesDataPtr -_08158934: .4byte gBattlerControllerFuncs -_08158938: .4byte PokedudeDoMoveAnimation - thumb_func_end PokedudeHandleMoveAnimation - - thumb_func_start PokedudeDoMoveAnimation -PokedudeDoMoveAnimation: @ 815893C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r2, _08158980 @ =gBattleBufferA - ldr r6, _08158984 @ =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, _08158988 @ =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 _081589C6 - cmp r2, 0x1 - bgt _0815898C - cmp r2, 0 - beq _08158996 - b _08158A7C - .align 2, 0 -_08158980: .4byte gBattleBufferA -_08158984: .4byte gActiveBattler -_08158988: .4byte gBattleSpritesDataPtr -_0815898C: - cmp r2, 0x2 - beq _081589F0 - cmp r2, 0x3 - beq _08158A40 - b _08158A7C -_08158996: - ldr r1, [r5] - lsls r0, r3, 2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _081589B2 - adds r0, r3, 0 - adds r1, r3, 0 - adds r2, r3, 0 - movs r3, 0x5 - bl InitAndLaunchSpecialAnimation -_081589B2: - 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 _08158A7C -_081589C6: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08158A7C - 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 _08158A7C -_081589F0: - ldr r0, _08158A38 @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08158A3C @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _08158A7C - 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 _08158A24 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x6 - bl InitAndLaunchSpecialAnimation -_08158A24: - 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 _08158A7C - .align 2, 0 -_08158A38: .4byte gAnimScriptCallback -_08158A3C: .4byte gAnimScriptActive -_08158A40: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08158A7C - 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 PokedudeBufferExecCompleted -_08158A7C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end PokedudeDoMoveAnimation - - thumb_func_start PokedudeHandlePrintString -PokedudeHandlePrintString: @ 8158A88 - push {r4,lr} - ldr r0, _08158ABC @ =gBattle_BG0_X - movs r1, 0 - strh r1, [r0] - ldr r0, _08158AC0 @ =gBattle_BG0_Y - strh r1, [r0] - ldr r0, _08158AC4 @ =gActiveBattler - ldrb r4, [r0] - lsls r4, 9 - ldr r0, _08158AC8 @ =gBattleBufferA + 2 - adds r4, r0 - ldrh r0, [r4] - bl BufferStringBattle - ldrh r0, [r4] - bl sub_80D89B0 - lsls r0, 24 - cmp r0, 0 - beq _08158AD0 - ldr r0, _08158ACC @ =gDisplayedStringBattle - movs r1, 0x40 - bl BattlePutTextOnWindow - b _08158AD8 - .align 2, 0 -_08158ABC: .4byte gBattle_BG0_X -_08158AC0: .4byte gBattle_BG0_Y -_08158AC4: .4byte gActiveBattler -_08158AC8: .4byte gBattleBufferA + 2 -_08158ACC: .4byte gDisplayedStringBattle -_08158AD0: - ldr r0, _08158AEC @ =gDisplayedStringBattle - movs r1, 0 - bl BattlePutTextOnWindow -_08158AD8: - ldr r1, _08158AF0 @ =gBattlerControllerFuncs - ldr r0, _08158AF4 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08158AF8 @ =CompleteOnInactiveTextPrinter_PokedudeTmp - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08158AEC: .4byte gDisplayedStringBattle -_08158AF0: .4byte gBattlerControllerFuncs -_08158AF4: .4byte gActiveBattler -_08158AF8: .4byte CompleteOnInactiveTextPrinter_PokedudeTmp - thumb_func_end PokedudeHandlePrintString - - thumb_func_start PokedudeHandlePrintSelectionString -PokedudeHandlePrintSelectionString: @ 8158AFC - push {lr} - ldr r0, _08158B14 @ =gActiveBattler - ldrb r0, [r0] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08158B18 - bl PokedudeHandlePrintString - b _08158B1C - .align 2, 0 -_08158B14: .4byte gActiveBattler -_08158B18: - bl PokedudeBufferExecCompleted -_08158B1C: - pop {r0} - bx r0 - thumb_func_end PokedudeHandlePrintSelectionString - - thumb_func_start sub_8158B20 -sub_8158B20: @ 8158B20 - push {lr} - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08158B46 - ldr r0, _08158B4C @ =gBattle_BG0_X - strh r1, [r0] - ldr r1, _08158B50 @ =gBattle_BG0_Y - movs r0, 0xA0 - strh r0, [r1] - ldr r1, _08158B54 @ =gBattlerControllerFuncs - ldr r0, _08158B58 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08158B5C @ =sub_8156140 - str r1, [r0] -_08158B46: - pop {r0} - bx r0 - .align 2, 0 -_08158B4C: .4byte gBattle_BG0_X -_08158B50: .4byte gBattle_BG0_Y -_08158B54: .4byte gBattlerControllerFuncs -_08158B58: .4byte gActiveBattler -_08158B5C: .4byte sub_8156140 - thumb_func_end sub_8158B20 - - thumb_func_start PokedudeHandleChooseAction -PokedudeHandleChooseAction: @ 8158B60 - push {r4,lr} - ldr r4, _08158BBC @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08158BDC - ldr r1, _08158BC0 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08158BC4 @ =sub_8158B20 - str r1, [r0] - ldr r0, _08158BC8 @ =gUnknown_83FDA4C - movs r1, 0 - bl BattlePutTextOnWindow - ldr r0, _08158BCC @ =gUnknown_83FE725 - movs r1, 0x2 - bl BattlePutTextOnWindow - movs r4, 0 -_08158B8E: - lsls r0, r4, 24 - lsrs r0, 24 - bl ActionSelectionDestroyCursorAt - adds r4, 0x1 - cmp r4, 0x3 - ble _08158B8E - ldr r1, _08158BD0 @ =gActionSelectionCursor - ldr r0, _08158BBC @ =gActiveBattler - ldrb r0, [r0] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl ActionSelectionCreateCursorAt - ldr r0, _08158BD4 @ =gText_WhatWillPkmnDo - bl BattleStringExpandPlaceholdersToDisplayedString - ldr r0, _08158BD8 @ =gDisplayedStringBattle - movs r1, 0x1 - bl BattlePutTextOnWindow - b _08158BE8 - .align 2, 0 -_08158BBC: .4byte gActiveBattler -_08158BC0: .4byte gBattlerControllerFuncs -_08158BC4: .4byte sub_8158B20 -_08158BC8: .4byte gUnknown_83FDA4C -_08158BCC: .4byte gUnknown_83FE725 -_08158BD0: .4byte gActionSelectionCursor -_08158BD4: .4byte gText_WhatWillPkmnDo -_08158BD8: .4byte gDisplayedStringBattle -_08158BDC: - ldr r0, _08158BF0 @ =gBattlerControllerFuncs - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _08158BF4 @ =sub_8156140 - str r0, [r1] -_08158BE8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08158BF0: .4byte gBattlerControllerFuncs -_08158BF4: .4byte sub_8156140 - thumb_func_end PokedudeHandleChooseAction - - thumb_func_start PokedudeHandleUnknownYesNoBox -PokedudeHandleUnknownYesNoBox: @ 8158BF8 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleUnknownYesNoBox - - thumb_func_start sub_8158C04 -sub_8158C04: @ 8158C04 - push {lr} - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08158C2E - ldr r0, _08158C34 @ =gBattle_BG0_X - strh r1, [r0] - ldr r1, _08158C38 @ =gBattle_BG0_Y - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _08158C3C @ =gBattlerControllerFuncs - ldr r0, _08158C40 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08158C44 @ =sub_81564E4 - str r1, [r0] -_08158C2E: - pop {r0} - bx r0 - .align 2, 0 -_08158C34: .4byte gBattle_BG0_X -_08158C38: .4byte gBattle_BG0_Y -_08158C3C: .4byte gBattlerControllerFuncs -_08158C40: .4byte gActiveBattler -_08158C44: .4byte sub_81564E4 - thumb_func_end sub_8158C04 - - thumb_func_start PokedudeHandleChooseMove -PokedudeHandleChooseMove: @ 8158C48 - push {r4,lr} - ldr r4, _08158C68 @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08158C74 - bl InitMoveSelectionsVarsAndStrings - ldr r0, _08158C6C @ =gBattlerControllerFuncs - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _08158C70 @ =sub_8158C04 - b _08158C7E - .align 2, 0 -_08158C68: .4byte gActiveBattler -_08158C6C: .4byte gBattlerControllerFuncs -_08158C70: .4byte sub_8158C04 -_08158C74: - ldr r0, _08158C88 @ =gBattlerControllerFuncs - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _08158C8C @ =sub_81564E4 -_08158C7E: - str r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08158C88: .4byte gBattlerControllerFuncs -_08158C8C: .4byte sub_81564E4 - thumb_func_end PokedudeHandleChooseMove - - thumb_func_start PokedudeHandleChooseItem -PokedudeHandleChooseItem: @ 8158C90 - 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, _08158CDC @ =gBattlerControllerFuncs - ldr r2, _08158CE0 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08158CE4 @ =OpenBagAndChooseItem_PokedudeTmp - str r1, [r0] - ldr r1, _08158CE8 @ =gBattlerInMenuId - ldrb r0, [r2] - strb r0, [r1] - movs r3, 0 - ldr r5, _08158CEC @ =gUnknown_203B0DC - ldr r4, _08158CF0 @ =gBattleBufferA -_08158CBE: - 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 _08158CBE - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08158CDC: .4byte gBattlerControllerFuncs -_08158CE0: .4byte gActiveBattler -_08158CE4: .4byte OpenBagAndChooseItem_PokedudeTmp -_08158CE8: .4byte gBattlerInMenuId -_08158CEC: .4byte gUnknown_203B0DC -_08158CF0: .4byte gBattleBufferA - thumb_func_end PokedudeHandleChooseItem - - thumb_func_start PokedudeHandleChoosePokemon -PokedudeHandleChoosePokemon: @ 8158CF4 - push {r4-r6,lr} - sub sp, 0x4 - ldr r0, _08158DA4 @ =TaskDummy - movs r1, 0xFF - bl CreateTask - ldr r3, _08158DA8 @ =gUnknown_3004FFC - ldr r4, _08158DAC @ =gActiveBattler - ldrb r1, [r4] - adds r1, r3 - strb r0, [r1] - ldr r5, _08158DB0 @ =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, _08158DB4 @ =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, _08158DB8 @ =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, _08158DBC @ =gUnknown_203B0DC -_08158D60: - 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 _08158D60 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08158DC0 @ =gBattlerControllerFuncs - ldr r2, _08158DAC @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08158DC4 @ =OpenPartyMenuToChooseMon_PokedudeTmp - str r1, [r0] - ldr r1, _08158DC8 @ =gBattlerInMenuId - ldrb r0, [r2] - strb r0, [r1] - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08158DA4: .4byte TaskDummy -_08158DA8: .4byte gUnknown_3004FFC -_08158DAC: .4byte gActiveBattler -_08158DB0: .4byte gTasks -_08158DB4: .4byte gBattleBufferA -_08158DB8: .4byte gBattleStruct -_08158DBC: .4byte gUnknown_203B0DC -_08158DC0: .4byte gBattlerControllerFuncs -_08158DC4: .4byte OpenPartyMenuToChooseMon_PokedudeTmp -_08158DC8: .4byte gBattlerInMenuId - thumb_func_end PokedudeHandleChoosePokemon - - thumb_func_start PokedudeHandleCmd23 -PokedudeHandleCmd23: @ 8158DCC - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleCmd23 - - thumb_func_start PokedudeHandleHealthBarUpdate -PokedudeHandleHealthBarUpdate: @ 8158DD8 - push {r4-r7,lr} - sub sp, 0x4 - ldr r4, _08158DFC @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08158E08 - ldr r1, _08158E00 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08158E04 @ =gPlayerParty - b _08158E18 - .align 2, 0 -_08158DFC: .4byte gActiveBattler -_08158E00: .4byte gBattlerPartyIndexes -_08158E04: .4byte gPlayerParty -_08158E08: - ldr r1, _08158E68 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08158E6C @ =gEnemyParty -_08158E18: - adds r5, r1, r0 - movs r0, 0 - bl LoadBattleBarGfx - ldr r3, _08158E70 @ =gBattleBufferA - ldr r7, _08158E74 @ =gActiveBattler - ldrb r1, [r7] - lsls r1, 9 - adds r0, r3, 0x2 - adds r0, r1, r0 - ldrb r2, [r0] - adds r3, 0x3 - adds r1, r3 - ldrb r0, [r1] - lsls r0, 8 - orrs r2, r0 - lsls r2, 16 - asrs r6, r2, 16 - ldr r0, _08158E78 @ =0x00007fff - cmp r6, r0 - beq _08158E80 - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData - adds r4, r0, 0 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - adds r3, r0, 0 - ldrb r0, [r7] - ldr r1, _08158E7C @ =gHealthboxSpriteIds - adds r1, r0, r1 - ldrb r1, [r1] - str r6, [sp] - adds r2, r4, 0 - bl SetBattleBarStruct - b _08158EA8 - .align 2, 0 -_08158E68: .4byte gBattlerPartyIndexes -_08158E6C: .4byte gEnemyParty -_08158E70: .4byte gBattleBufferA -_08158E74: .4byte gActiveBattler -_08158E78: .4byte 0x00007fff -_08158E7C: .4byte gHealthboxSpriteIds -_08158E80: - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData - adds r2, r0, 0 - ldrb r0, [r7] - ldr r4, _08158EC0 @ =gHealthboxSpriteIds - adds r1, r0, r4 - ldrb r1, [r1] - str r6, [sp] - movs r3, 0 - bl SetBattleBarStruct - ldrb r0, [r7] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - movs r2, 0 - bl UpdateHpTextInHealthbox -_08158EA8: - ldr r1, _08158EC4 @ =gBattlerControllerFuncs - ldr r0, _08158EC8 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08158ECC @ =CompleteOnHealthbarDone_PokedudeTmp - str r1, [r0] - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08158EC0: .4byte gHealthboxSpriteIds -_08158EC4: .4byte gBattlerControllerFuncs -_08158EC8: .4byte gActiveBattler -_08158ECC: .4byte CompleteOnHealthbarDone_PokedudeTmp - thumb_func_end PokedudeHandleHealthBarUpdate - - thumb_func_start PokedudeHandleExpUpdate -PokedudeHandleExpUpdate: @ 8158ED0 - push {r4-r7,lr} - ldr r5, _08158EFC @ =gBattleBufferA - ldr r6, _08158F00 @ =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, _08158F04 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x63 - bls _08158F08 - bl PokedudeBufferExecCompleted - b _08158F54 - .align 2, 0 -_08158EFC: .4byte gBattleBufferA -_08158F00: .4byte gActiveBattler -_08158F04: .4byte gPlayerParty -_08158F08: - 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, _08158F5C @ =Task_GiveExpToMon_PokedudeTmp - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08158F60 @ =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, _08158F64 @ =gBattlerControllerFuncs - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _08158F68 @ =nullsub_99 - str r1, [r0] -_08158F54: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08158F5C: .4byte Task_GiveExpToMon_PokedudeTmp -_08158F60: .4byte gTasks -_08158F64: .4byte gBattlerControllerFuncs -_08158F68: .4byte nullsub_99 - thumb_func_end PokedudeHandleExpUpdate - - thumb_func_start PokedudeHandleStatusIconUpdate -PokedudeHandleStatusIconUpdate: @ 8158F6C - push {r4,lr} - ldr r4, _08158F9C @ =gActiveBattler - ldrb r0, [r4] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _08158FF2 - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08158FA8 - ldr r1, _08158FA0 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08158FA4 @ =gPlayerParty - b _08158FB8 - .align 2, 0 -_08158F9C: .4byte gActiveBattler -_08158FA0: .4byte gBattlerPartyIndexes -_08158FA4: .4byte gPlayerParty -_08158FA8: - ldr r1, _08158FF8 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08158FFC @ =gEnemyParty -_08158FB8: - adds r2, r1, r0 - ldr r1, _08159000 @ =gHealthboxSpriteIds - ldr r4, _08159004 @ =gActiveBattler - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - adds r1, r2, 0 - movs r2, 0x9 - bl UpdateHealthboxAttribute - ldrb r2, [r4] - ldr r0, _08159008 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r0, [r0, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, _0815900C @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08159010 @ =CompleteOnFinishedStatusAnimation_PokedudeTmp - str r1, [r0] -_08158FF2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08158FF8: .4byte gBattlerPartyIndexes -_08158FFC: .4byte gEnemyParty -_08159000: .4byte gHealthboxSpriteIds -_08159004: .4byte gActiveBattler -_08159008: .4byte gBattleSpritesDataPtr -_0815900C: .4byte gBattlerControllerFuncs -_08159010: .4byte CompleteOnFinishedStatusAnimation_PokedudeTmp - thumb_func_end PokedudeHandleStatusIconUpdate - - thumb_func_start PokedudeHandleStatusAnimation -PokedudeHandleStatusAnimation: @ 8159014 - push {r4,r5,lr} - ldr r5, _0815906C @ =gActiveBattler - ldrb r0, [r5] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _08159064 - ldr r4, _08159070 @ =gBattleBufferA - ldrb r3, [r5] - lsls r3, 9 - adds r0, r4, 0x1 - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0x2 - adds r1, r3, r1 - ldrb r1, [r1] - adds r2, r4, 0x3 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - adds r2, r4, 0x4 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 16 - orrs r1, r2 - adds r4, 0x5 - adds r3, r4 - ldrb r2, [r3] - lsls r2, 24 - orrs r1, r2 - bl InitAndLaunchChosenStatusAnimation - ldr r1, _08159074 @ =gBattlerControllerFuncs - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08159078 @ =CompleteOnFinishedStatusAnimation_PokedudeTmp - str r1, [r0] -_08159064: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0815906C: .4byte gActiveBattler -_08159070: .4byte gBattleBufferA -_08159074: .4byte gBattlerControllerFuncs -_08159078: .4byte CompleteOnFinishedStatusAnimation_PokedudeTmp - thumb_func_end PokedudeHandleStatusAnimation - - thumb_func_start PokedudeHandleStatusXor -PokedudeHandleStatusXor: @ 815907C - push {r4,lr} - sub sp, 0x4 - ldr r4, _081590A0 @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _081590AC - ldr r1, _081590A4 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _081590A8 @ =gPlayerParty - b _081590BC - .align 2, 0 -_081590A0: .4byte gActiveBattler -_081590A4: .4byte gBattlerPartyIndexes -_081590A8: .4byte gPlayerParty -_081590AC: - ldr r1, _081590F0 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _081590F4 @ =gEnemyParty -_081590BC: - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - ldr r2, _081590F8 @ =gBattleBufferA - ldr r1, _081590FC @ =gActiveBattler - ldrb r1, [r1] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - eors r0, r1 - mov r1, sp - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x37 - mov r2, sp - bl SetMonData - bl PokedudeBufferExecCompleted - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081590F0: .4byte gBattlerPartyIndexes -_081590F4: .4byte gEnemyParty -_081590F8: .4byte gBattleBufferA -_081590FC: .4byte gActiveBattler - thumb_func_end PokedudeHandleStatusXor - - thumb_func_start PokedudeHandleDataTransfer -PokedudeHandleDataTransfer: @ 8159100 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleDataTransfer - - thumb_func_start PokedudeHandleDMA3Transfer -PokedudeHandleDMA3Transfer: @ 815910C - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleDMA3Transfer - - thumb_func_start PokedudeHandlePlayBGM -PokedudeHandlePlayBGM: @ 8159118 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandlePlayBGM - - thumb_func_start PokedudeHandleCmd32 -PokedudeHandleCmd32: @ 8159124 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleCmd32 - - thumb_func_start PokedudeHandleTwoReturnValues -PokedudeHandleTwoReturnValues: @ 8159130 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleTwoReturnValues - - thumb_func_start PokedudeHandleChosenMonReturnValue -PokedudeHandleChosenMonReturnValue: @ 815913C - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleChosenMonReturnValue - - thumb_func_start PokedudeHandleOneReturnValue -PokedudeHandleOneReturnValue: @ 8159148 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleOneReturnValue - - thumb_func_start PokedudeHandleOneReturnValue_Duplicate -PokedudeHandleOneReturnValue_Duplicate: @ 8159154 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleOneReturnValue_Duplicate - - thumb_func_start PokedudeHandleCmd37 -PokedudeHandleCmd37: @ 8159160 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleCmd37 - - thumb_func_start PokedudeHandleCmd38 -PokedudeHandleCmd38: @ 815916C - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleCmd38 - - thumb_func_start PokedudeHandleCmd39 -PokedudeHandleCmd39: @ 8159178 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleCmd39 - - thumb_func_start PokedudeHandleCmd40 -PokedudeHandleCmd40: @ 8159184 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleCmd40 - - thumb_func_start PokedudeHandleHitAnimation -PokedudeHandleHitAnimation: @ 8159190 - push {r4,lr} - ldr r3, _081591B8 @ =gSprites - ldr r2, _081591BC @ =gBattlerSpriteIds - ldr r4, _081591C0 @ =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 _081591C4 - bl PokedudeBufferExecCompleted - b _081591EE - .align 2, 0 -_081591B8: .4byte gSprites -_081591BC: .4byte gBattlerSpriteIds -_081591C0: .4byte gActiveBattler -_081591C4: - ldr r1, _081591F4 @ =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, _081591F8 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _081591FC @ =DoHitAnimBlinkSpriteEffect_PokedudeTmp - str r1, [r0] -_081591EE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081591F4: .4byte gDoingBattleAnim -_081591F8: .4byte gBattlerControllerFuncs -_081591FC: .4byte DoHitAnimBlinkSpriteEffect_PokedudeTmp - thumb_func_end PokedudeHandleHitAnimation - - thumb_func_start PokedudeHandleCmd42 -PokedudeHandleCmd42: @ 8159200 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleCmd42 - - thumb_func_start PokedudeHandlePlaySE -PokedudeHandlePlaySE: @ 815920C - push {lr} - ldr r2, _08159234 @ =gBattleBufferA - ldr r0, _08159238 @ =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 PokedudeBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08159234: .4byte gBattleBufferA -_08159238: .4byte gActiveBattler - thumb_func_end PokedudeHandlePlaySE - - thumb_func_start PokedudeHandlePlayFanfare -PokedudeHandlePlayFanfare: @ 815923C - push {lr} - ldr r2, _08159264 @ =gBattleBufferA - ldr r0, _08159268 @ =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 PokedudeBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08159264: .4byte gBattleBufferA -_08159268: .4byte gActiveBattler - thumb_func_end PokedudeHandlePlayFanfare - - thumb_func_start PokedudeHandleFaintingCry -PokedudeHandleFaintingCry: @ 815926C - push {r4,lr} - ldr r4, _08159290 @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0815929C - ldr r1, _08159294 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08159298 @ =gPlayerParty - b _081592AC - .align 2, 0 -_08159290: .4byte gActiveBattler -_08159294: .4byte gBattlerPartyIndexes -_08159298: .4byte gPlayerParty -_0815929C: - ldr r1, _081592C8 @ =gBattlerPartyIndexes - ldrb r0, [r4] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _081592CC @ =gEnemyParty -_081592AC: - adds r0, r1, r0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - bl PlayCry1 - bl PokedudeBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081592C8: .4byte gBattlerPartyIndexes -_081592CC: .4byte gEnemyParty - thumb_func_end PokedudeHandleFaintingCry - - thumb_func_start PokedudeHandleIntroSlide -PokedudeHandleIntroSlide: @ 81592D0 - push {lr} - ldr r1, _081592F8 @ =gBattleBufferA - ldr r0, _081592FC @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - bl HandleIntroSlide - ldr r2, _08159300 @ =gIntroSlideFlags - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_081592F8: .4byte gBattleBufferA -_081592FC: .4byte gActiveBattler -_08159300: .4byte gIntroSlideFlags - thumb_func_end PokedudeHandleIntroSlide - - thumb_func_start PokedudeHandleIntroTrainerBallThrow -PokedudeHandleIntroTrainerBallThrow: @ 8159304 - push {r4-r7,lr} - ldr r6, _0815943C @ =gBattlerSpriteIds - ldr r7, _08159440 @ =gActiveBattler - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _08159444 @ =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, _08159448 @ =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, _0815944C @ =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, _08159450 @ =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, _08159454 @ =0x0000d6f8 - bl AllocSpritePalette - adds r4, r0, 0 - lsls r4, 24 - ldr r0, _08159458 @ =gTrainerBackPicPaletteTable - ldr r0, [r0, 0x20] - 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, _0815945C @ =sub_81595EC - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r4, _08159460 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - ldrb r0, [r7] - strh r0, [r1, 0x8] - ldr r3, _08159464 @ =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 _0815941C - ldr r0, _08159468 @ =gBattlerStatusSummaryTaskId - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - ldr r1, _0815946C @ =Task_HidePartyStatusSummary - str r1, [r0] -_0815941C: - ldr r0, [r3] - ldr r2, [r0, 0x8] - ldrb r0, [r2, 0x9] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x9] - ldr r1, _08159470 @ =gBattlerControllerFuncs - ldrb r0, [r7] - lsls r0, 2 - adds r0, r1 - ldr r1, _08159474 @ =nullsub_99 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815943C: .4byte gBattlerSpriteIds -_08159440: .4byte gActiveBattler -_08159444: .4byte gSprites -_08159448: .4byte 0x0000ffd8 -_0815944C: .4byte StartAnimLinearTranslation -_08159450: .4byte sub_80335F8 -_08159454: .4byte 0x0000d6f8 -_08159458: .4byte gTrainerBackPicPaletteTable -_0815945C: .4byte sub_81595EC -_08159460: .4byte gTasks -_08159464: .4byte gBattleSpritesDataPtr -_08159468: .4byte gBattlerStatusSummaryTaskId -_0815946C: .4byte Task_HidePartyStatusSummary -_08159470: .4byte gBattlerControllerFuncs -_08159474: .4byte nullsub_99 - thumb_func_end PokedudeHandleIntroTrainerBallThrow - - thumb_func_start sub_8159478 -sub_8159478: @ 8159478 - 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, _081595C0 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r1, [r0] - lsls r0, r6, 2 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x2] - ldr r0, _081595C4 @ =gBattlerPartyIndexes - lsls r2, r6, 1 - adds r2, r0 - ldr r0, _081595C8 @ =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, _081595CC @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - mov r8, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _081595D0 @ =sub_8033E3C - bl CreateInvisibleSpriteWithCallback - ldr r1, _081595D4 @ =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, _081595D8 @ =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, _081595DC @ =gBattlerSpriteIds - adds r4, r6, r4 - strb r0, [r4] - ldr r5, _081595E0 @ =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, _081595E4 @ =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, _081595E8 @ =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 -_081595C0: .4byte gBattleSpritesDataPtr -_081595C4: .4byte gBattlerPartyIndexes -_081595C8: .4byte gBattleBufferA -_081595CC: .4byte gPlayerParty -_081595D0: .4byte sub_8033E3C -_081595D4: .4byte gUnknown_3004FFC -_081595D8: .4byte gMultiuseSpriteTemplate -_081595DC: .4byte gBattlerSpriteIds -_081595E0: .4byte gSprites -_081595E4: .4byte gBattleMonForms -_081595E8: .4byte SpriteCallbackDummy - thumb_func_end sub_8159478 - - thumb_func_start sub_81595EC -sub_81595EC: @ 81595EC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _0815960C @ =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 _08159610 - adds r0, r2, 0x1 - strh r0, [r1, 0xA] - b _08159646 - .align 2, 0 -_0815960C: .4byte gTasks -_08159610: - ldr r4, _0815964C @ =gActiveBattler - ldrb r5, [r4] - ldrh r0, [r1, 0x8] - strb r0, [r4] - ldr r0, _08159650 @ =gBattleBufferA - ldrb r1, [r4] - lsls r2, r1, 9 - adds r0, 0x1 - adds r2, r0 - ldr r0, _08159654 @ =gBattlerPartyIndexes - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - strb r0, [r2] - ldrb r0, [r4] - bl sub_8159478 - ldr r1, _08159658 @ =gBattlerControllerFuncs - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0815965C @ =sub_8156624 - str r1, [r0] - strb r5, [r4] - adds r0, r6, 0 - bl DestroyTask -_08159646: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0815964C: .4byte gActiveBattler -_08159650: .4byte gBattleBufferA -_08159654: .4byte gBattlerPartyIndexes -_08159658: .4byte gBattlerControllerFuncs -_0815965C: .4byte sub_8156624 - thumb_func_end sub_81595EC - - thumb_func_start PokedudeHandleDrawPartyStatusSummary -PokedudeHandleDrawPartyStatusSummary: @ 8159660 - push {r4,r5,lr} - ldr r1, _08159688 @ =gBattleBufferA - ldr r0, _0815968C @ =gActiveBattler - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08159690 - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08159690 - bl PokedudeBufferExecCompleted - b _081596CE - .align 2, 0 -_08159688: .4byte gBattleBufferA -_0815968C: .4byte gActiveBattler -_08159690: - ldr r0, _081596D4 @ =gBattleSpritesDataPtr - ldr r0, [r0] - ldr r5, _081596D8 @ =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, _081596DC @ =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, _081596E0 @ =gBattlerStatusSummaryTaskId - ldrb r1, [r5] - adds r1, r2 - strb r0, [r1] - bl PokedudeBufferExecCompleted -_081596CE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081596D4: .4byte gBattleSpritesDataPtr -_081596D8: .4byte gActiveBattler -_081596DC: .4byte gBattleBufferA + 4 -_081596E0: .4byte gBattlerStatusSummaryTaskId - thumb_func_end PokedudeHandleDrawPartyStatusSummary - - thumb_func_start PokedudeHandleHidePartyStatusSummary -PokedudeHandleHidePartyStatusSummary: @ 81596E4 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleHidePartyStatusSummary - - thumb_func_start PokedudeHandleEndBounceEffect -PokedudeHandleEndBounceEffect: @ 81596F0 - push {r4,lr} - ldr r4, _08159710 @ =gActiveBattler - ldrb r0, [r4] - movs r1, 0x1 - bl EndBounceEffect - ldrb r0, [r4] - movs r1, 0 - bl EndBounceEffect - bl PokedudeBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08159710: .4byte gActiveBattler - thumb_func_end PokedudeHandleEndBounceEffect - - thumb_func_start PokedudeHandleSpriteInvisibility -PokedudeHandleSpriteInvisibility: @ 8159714 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleSpriteInvisibility - - thumb_func_start PokedudeHandleBattleAnimation -PokedudeHandleBattleAnimation: @ 8159720 - push {r4-r6,lr} - sub sp, 0x4 - ldr r5, _08159758 @ =gBattleBufferA - ldr r6, _0815975C @ =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 _08159760 - bl PokedudeBufferExecCompleted - b _0815976C - .align 2, 0 -_08159758: .4byte gBattleBufferA -_0815975C: .4byte gActiveBattler -_08159760: - ldr r0, _08159774 @ =gBattlerControllerFuncs - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _08159778 @ =CompleteOnFinishedBattleAnimation_PokedudeTmp - str r0, [r1] -_0815976C: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08159774: .4byte gBattlerControllerFuncs -_08159778: .4byte CompleteOnFinishedBattleAnimation_PokedudeTmp - thumb_func_end PokedudeHandleBattleAnimation - - thumb_func_start PokedudeHandleLinkStandbyMsg -PokedudeHandleLinkStandbyMsg: @ 815977C - push {r4,lr} - ldr r1, _081597B0 @ =gBattleBufferA - ldr r4, _081597B4 @ =gActiveBattler - ldrb r2, [r4] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - blt _081597A4 - cmp r0, 0x1 - bgt _081597A4 - adds r0, r2, 0 - movs r1, 0x1 - bl EndBounceEffect - ldrb r0, [r4] - movs r1, 0 - bl EndBounceEffect -_081597A4: - bl PokedudeBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081597B0: .4byte gBattleBufferA -_081597B4: .4byte gActiveBattler - thumb_func_end PokedudeHandleLinkStandbyMsg - - thumb_func_start PokedudeHandleResetActionMoveSelection -PokedudeHandleResetActionMoveSelection: @ 81597B8 - push {lr} - bl PokedudeBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end PokedudeHandleResetActionMoveSelection - - thumb_func_start PokedudeHandleCmd55 -PokedudeHandleCmd55: @ 81597C4 - push {r4,lr} - ldr r2, _08159808 @ =gBattleOutcome - ldr r1, _0815980C @ =gBattleBufferA - ldr r4, _08159810 @ =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 PokedudeBufferExecCompleted - ldr r0, _08159814 @ =gBattleTypeFlags - ldr r0, [r0] - movs r1, 0x6 - ands r0, r1 - cmp r0, 0x2 - bne _08159800 - ldr r0, _08159818 @ =gBattlerControllerFuncs - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _0815981C @ =sub_8156254 - str r0, [r1] -_08159800: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08159808: .4byte gBattleOutcome -_0815980C: .4byte gBattleBufferA -_08159810: .4byte gActiveBattler -_08159814: .4byte gBattleTypeFlags -_08159818: .4byte gBattlerControllerFuncs -_0815981C: .4byte sub_8156254 - thumb_func_end PokedudeHandleCmd55 - - thumb_func_start PokedudeCmdEnd -PokedudeCmdEnd: @ 8159820 - bx lr - thumb_func_end PokedudeCmdEnd - - thumb_func_start sub_8159824 -sub_8159824: @ 8159824 - push {r4-r7,lr} - ldr r1, _081598B4 @ =gUnknown_8479060 - ldr r0, _081598B8 @ =gBattleStruct - ldr r0, [r0] - adds r0, 0x96 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r7, [r0] - ldr r4, _081598BC @ =gActiveBattler - ldrb r0, [r4] - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _0815985C - ldrb r0, [r4] - movs r1, 0x1 - movs r2, 0x7 - movs r3, 0x1 - bl DoBounceEffect - ldrb r0, [r4] - movs r1, 0 - movs r2, 0x7 - movs r3, 0x1 - bl DoBounceEffect -_0815985C: - ldr r6, _081598C0 @ =gUnknown_3005EE0 - ldrb r2, [r4] - lsls r0, r2, 2 - adds r0, r6 - ldr r1, [r0] - ldrb r0, [r1] - lsls r0, 3 - adds r0, r7 - adds r3, r0, r2 - ldrb r0, [r3, 0x4] - ldrb r1, [r1, 0x2] - cmp r0, r1 - bne _0815992C - adds r0, r2, 0 - bl GetBattlerSide - lsls r0, 24 - cmp r0, 0 - bne _08159888 - movs r0, 0x5 - bl PlaySE -_08159888: - ldrb r0, [r4] - lsls r0, 2 - adds r0, r6 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0x2] - ldrb r1, [r4] - lsls r0, r1, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 3 - adds r0, r7 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _081598D4 - cmp r0, 0x1 - bgt _081598C4 - cmp r0, 0 - beq _081598CE - b _081598F0 - .align 2, 0 -_081598B4: .4byte gUnknown_8479060 -_081598B8: .4byte gBattleStruct -_081598BC: .4byte gActiveBattler -_081598C0: .4byte gUnknown_3005EE0 -_081598C4: - cmp r0, 0x2 - beq _081598DA - cmp r0, 0x3 - beq _081598E6 - b _081598F0 -_081598CE: - movs r0, 0x1 - movs r1, 0 - b _081598DE -_081598D4: - movs r0, 0x1 - movs r1, 0x1 - b _081598DE -_081598DA: - movs r0, 0x1 - movs r1, 0x2 -_081598DE: - movs r2, 0 - bl BtlController_EmitTwoReturnValues - b _081598F0 -_081598E6: - movs r0, 0x1 - movs r1, 0x3 - movs r2, 0 - bl BtlController_EmitTwoReturnValues -_081598F0: - bl PokedudeBufferExecCompleted - ldr r3, _08159924 @ =gUnknown_3005EE0 - ldr r2, _08159928 @ =gActiveBattler - ldrb r0, [r2] - lsls r0, 2 - adds r0, r3 - ldr r1, [r0] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldrb r1, [r2] - lsls r0, r1, 2 - adds r0, r3 - ldr r2, [r0] - ldrb r0, [r2] - lsls r0, 3 - adds r0, r7 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x4 - bne _08159984 - movs r0, 0 - strb r0, [r2] - b _08159984 - .align 2, 0 -_08159924: .4byte gUnknown_3005EE0 -_08159928: .4byte gActiveBattler -_0815992C: - ldr r5, _0815998C @ =gActionSelectionCursor - adds r0, r2, r5 - ldrb r0, [r0] - ldrb r2, [r3] - cmp r0, r2 - beq _08159972 - ldrb r0, [r3, 0x4] - lsrs r0, 1 - cmp r0, r1 - bne _08159972 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl ActionSelectionDestroyCursorAt - ldrb r1, [r4] - adds r2, r1, r5 - lsls r0, r1, 2 - adds r0, r6 - ldr r0, [r0] - ldrb r0, [r0] - lsls r0, 3 - adds r0, r7 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - movs r1, 0 - bl ActionSelectionCreateCursorAt -_08159972: - ldr r1, _08159990 @ =gUnknown_3005EE0 - ldr r0, _08159994 @ =gActiveBattler - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldrb r0, [r1, 0x2] - adds r0, 0x1 - strb r0, [r1, 0x2] -_08159984: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815998C: .4byte gActionSelectionCursor -_08159990: .4byte gUnknown_3005EE0 -_08159994: .4byte gActiveBattler - thumb_func_end sub_8159824 - thumb_func_start sub_8159998 sub_8159998: @ 8159998 push {r4-r7,lr} diff --git a/common_syms/battle_controller_pokedude.txt b/common_syms/battle_controller_pokedude.txt new file mode 100644 index 000000000..4986343f1 --- /dev/null +++ b/common_syms/battle_controller_pokedude.txt @@ -0,0 +1 @@ +gUnknown_3005EE0 diff --git a/include/battle.h b/include/battle.h index 40a2eba04..0a441df1c 100644 --- a/include/battle.h +++ b/include/battle.h @@ -664,7 +664,7 @@ extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200]; extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT]; extern void (*gPreBattleCallback1)(void); extern bool8 gDoingBattleAnim; -extern void *gUnknown_3005EE0[]; +extern u8 *gUnknown_3005EE0[MAX_BATTLERS_COUNT]; extern u8 *gUnknown_2022BB8; extern u8 *gUnknown_2022BBC; extern void (*gBattleMainFunc)(void); diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index a9173f1a9..3cb6d1432 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -1497,7 +1497,7 @@ static void OpponentHandleStatusIconUpdate(void) UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON); battlerId = gActiveBattler; - gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = 0; + gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = FALSE; gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation; } } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 6f1a2273c..16bf1ec87 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -2543,7 +2543,7 @@ static void PlayerHandleStatusIconUpdate(void) UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], HEALTHBOX_STATUS_ICON); battlerId = gActiveBattler; - gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = 0; + gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = FALSE; gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation; } } diff --git a/src/battle_controller_pokedude.c b/src/battle_controller_pokedude.c index 20627de09..6842a4d11 100644 --- a/src/battle_controller_pokedude.c +++ b/src/battle_controller_pokedude.c @@ -27,6 +27,7 @@ #include "constants/items.h" #include "constants/moves.h" #include "constants/pokemon.h" +#include "constants/trainers.h" struct Unk_84790E8 { @@ -122,6 +123,11 @@ void sub_8156B24(u8 taskId); void Task_UpdateLvlInHealthbox_PokedudeTmp(u8 taskId); u32 CopyPokedudeMonData(u8 monId, u8 *dst); void SetPokedudeMonData(u8 monId); +void sub_8159478(u8 battlerId); +void PokedudeDoMoveAnimation(void); +void sub_81595EC(u8 taskId); + +u8 *gUnknown_3005EE0[MAX_BATTLERS_COUNT]; void (*const sPokedudeBufferCommands[CONTROLLER_CMDS_COUNT])(void) = { @@ -1661,3 +1667,744 @@ void PokedudeHandleSetRawMonData(void) { PokedudeBufferExecCompleted(); } + +void PokedudeHandleLoadMonSprite(void) +{ + u32 y; + u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES); + + BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + y = GetBattlerSpriteDefault_Y(gActiveBattler); + SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + GetBattlerSpriteCoord(gActiveBattler, 2), + y, + GetBattlerSpriteSubpriority(gActiveBattler)); + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = species; + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + StartSpriteAnim(&gSprites[gBattlerSpriteIds[gActiveBattler]], gBattleMonForms[gActiveBattler]); + SetBattlerShadowSpriteCallback(gActiveBattler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES)); + gBattlerControllerFuncs[gActiveBattler] = sub_8156184; + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleSwitchInAnim(void) +{ + ClearTemporarySpeciesSpriteData(gActiveBattler, gBattleBufferA[gActiveBattler][2]); + gBattlerPartyIndexes[gActiveBattler] = gBattleBufferA[gActiveBattler][1]; + BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); + gActionSelectionCursor[gActiveBattler] = 0; + gMoveSelectionCursor[gActiveBattler] = 0; + sub_8159478(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = sub_81563A8; +} + +void PokedudeHandleReturnMonToBall(void) +{ + if (gBattleBufferA[gActiveBattler][1] == 0) + { + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, gActiveBattler, B_ANIM_SWITCH_OUT_PLAYER_MON); + gBattlerControllerFuncs[gActiveBattler] = sub_8156F7C; + } + else + { + FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]); + SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]); + PokedudeBufferExecCompleted(); + } +} + +void PokedudeHandleDrawTrainerPic(void) +{ + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + DecompressTrainerBackPalette(4, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(4, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 80, + (8 - gTrainerBackPicCoords[4].size) * 4 + 80, + 30); + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = -2; + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC; + } + else + { + u32 tranerPicid = TRAINER_PIC_PROFESSOR_OAK; + DecompressTrainerFrontPic(tranerPicid, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(tranerPicid, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 176, + (8 - gTrainerFrontPicCoords[tranerPicid].size) * 4 + 40, + GetBattlerSpriteSubpriority(gActiveBattler)); + gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2; + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[tranerPicid].tag); + gSprites[gBattlerSpriteIds[gActiveBattler]].data[5] = gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum; + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[tranerPicid].tag); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.affineParam = tranerPicid; + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8033EEC; + } + gBattlerControllerFuncs[gActiveBattler] = CompleteOnBattlerSpriteCallbackDummy_PokedudeTmp; +} + +void PokedudeHandleTrainerSlide(void) +{ + DecompressTrainerBackPalette(4, gActiveBattler); + SetMultiuseSpriteTemplateToTrainerBack(4, GetBattlerPosition(gActiveBattler)); + gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, + 80, + (8 - gTrainerBackPicCoords[4].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_PokedudeTmp; +} + +void PokedudeHandleTrainerSlideBack(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleFaintAnimation(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; + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + 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; + } + else + { + PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_TARGET); + gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon; + } + gBattlerControllerFuncs[gActiveBattler] = sub_8156DCC; + } + } +} + +void PokedudeHandlePaletteFade(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleSuccessBallThrowAnim(void) +{ + gBattleSpritesDataPtr->animationData->ballThrowCaseId = BALL_3_SHAKES_SUCCESS; + gDoingBattleAnim = TRUE; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone_PokedudeTmp; +} + +void PokedudeHandleBallThrowAnim(void) +{ + u8 ballThrowCaseId = gBattleBufferA[gActiveBattler][1]; + + gBattleSpritesDataPtr->animationData->ballThrowCaseId = ballThrowCaseId; + gDoingBattleAnim = TRUE; + InitAndLaunchSpecialAnimation(gActiveBattler, gActiveBattler, GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), B_ANIM_BALL_THROW); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnSpecialAnimDone_PokedudeTmp; +} + +void PokedudeHandlePause(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleMoveAnimation(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 + { + PokedudeBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; + gBattlerControllerFuncs[gActiveBattler] = PokedudeDoMoveAnimation; + } +} + +void PokedudeDoMoveAnimation(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; + PokedudeBufferExecCompleted(); + } + break; + } +} + +void PokedudeHandlePrintString(void) +{ + u16 *stringId; + + gBattle_BG0_X = 0; + gBattle_BG0_Y = 0; + stringId = (u16 *)(&gBattleBufferA[gActiveBattler][2]); + BufferStringBattle(*stringId); + if (sub_80D89B0(*stringId)) + BattlePutTextOnWindow(gDisplayedStringBattle, 64); + else + BattlePutTextOnWindow(gDisplayedStringBattle, 0); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter_PokedudeTmp; +} + +void PokedudeHandlePrintSelectionString(void) +{ + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + PokedudeHandlePrintString(); + else + PokedudeBufferExecCompleted(); +} + +void sub_8158B20(void) +{ + if (!IsDma3ManagerBusyWithBgCopy()) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 160; + gBattlerControllerFuncs[gActiveBattler] = sub_8156140; + } +} + +void PokedudeHandleChooseAction(void) +{ + s32 i; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + gBattlerControllerFuncs[gActiveBattler] = sub_8158B20; + BattlePutTextOnWindow(gUnknown_83FDA4C, 0); + BattlePutTextOnWindow(gUnknown_83FE725, 2); + for (i = 0; i < MAX_MON_MOVES; ++i) + ActionSelectionDestroyCursorAt((u8)i); + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo); + BattlePutTextOnWindow(gDisplayedStringBattle, 1); + } + else + { + gBattlerControllerFuncs[gActiveBattler] = sub_8156140; + } +} + +void PokedudeHandleUnknownYesNoBox(void) +{ + PokedudeBufferExecCompleted(); +} + +void sub_8158C04(void) +{ + if (!IsDma3ManagerBusyWithBgCopy()) + { + gBattle_BG0_X = 0; + gBattle_BG0_Y = 320; + gBattlerControllerFuncs[gActiveBattler] = sub_81564E4; + } +} + +void PokedudeHandleChooseMove(void) +{ + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + InitMoveSelectionsVarsAndStrings(); + gBattlerControllerFuncs[gActiveBattler] = sub_8158C04; + } + else + { + gBattlerControllerFuncs[gActiveBattler] = sub_81564E4; + } +} + +void PokedudeHandleChooseItem(void) +{ + s32 i; + + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem_PokedudeTmp; + gBattlerInMenuId = gActiveBattler; + for (i = 0; i < 3; ++i) + gUnknown_203B0DC[i] = gBattleBufferA[gActiveBattler][i + 1]; +} + +void PokedudeHandleChoosePokemon(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_PokedudeTmp; + gBattlerInMenuId = gActiveBattler; +} + +void PokedudeHandleCmd23(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleHealthBarUpdate(void) +{ + s16 hpVal; + struct Pokemon *mon; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + mon = &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]; + else + mon = &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]; + LoadBattleBarGfx(0); + hpVal = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + if (hpVal != INSTANT_HP_BAR_DROP) + { + u32 maxHP = GetMonData(mon, MON_DATA_MAX_HP); + u32 curHP = GetMonData(mon, MON_DATA_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, curHP, hpVal); + } + else + { + u32 maxHP = GetMonData(mon, MON_DATA_MAX_HP); + + SetBattleBarStruct(gActiveBattler, gHealthboxSpriteIds[gActiveBattler], maxHP, 0, hpVal); + UpdateHpTextInHealthbox(gHealthboxSpriteIds[gActiveBattler], 0, HP_CURRENT); + } + gBattlerControllerFuncs[gActiveBattler] = CompleteOnHealthbarDone_PokedudeTmp; +} + +void PokedudeHandleExpUpdate(void) +{ + u8 monId = gBattleBufferA[gActiveBattler][1]; + + if (GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL) >= MAX_LEVEL) + { + PokedudeBufferExecCompleted(); + } + 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_PokedudeTmp, 10); + gTasks[taskId].tExpTask_monId = monId; + gTasks[taskId].tExpTask_gainedExp = expPointsToGive; + gTasks[taskId].tExpTask_battler = gActiveBattler; + gBattlerControllerFuncs[gActiveBattler] = nullsub_99; + } +} + +void PokedudeHandleStatusIconUpdate(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + u8 battlerId; + struct Pokemon *mon; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + mon = &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]; + else + mon = &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]; + UpdateHealthboxAttribute(gHealthboxSpriteIds[gActiveBattler], mon, HEALTHBOX_STATUS_ICON); + battlerId = gActiveBattler; + gBattleSpritesDataPtr->healthBoxesData[battlerId].statusAnimActive = FALSE; + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation_PokedudeTmp; + } +} + +void PokedudeHandleStatusAnimation(void) +{ + if (!mplay_80342A4(gActiveBattler)) + { + InitAndLaunchChosenStatusAnimation(gBattleBufferA[gActiveBattler][1], + gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8) | (gBattleBufferA[gActiveBattler][4] << 16) | (gBattleBufferA[gActiveBattler][5] << 24)); + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedStatusAnimation_PokedudeTmp; + } +} + +void PokedudeHandleStatusXor(void) +{ + struct Pokemon *mon; + u8 val; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + mon = &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]; + else + mon = &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]; + val = GetMonData(mon, MON_DATA_STATUS) ^ gBattleBufferA[gActiveBattler][1]; + SetMonData(mon, MON_DATA_STATUS, &val); + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleDataTransfer(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleDMA3Transfer(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandlePlayBGM(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleCmd32(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleTwoReturnValues(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleChosenMonReturnValue(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleOneReturnValue(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleOneReturnValue_Duplicate(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleCmd37(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleCmd38(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleCmd39(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleCmd40(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleHitAnimation(void) +{ + if (gSprites[gBattlerSpriteIds[gActiveBattler]].invisible == TRUE) + { + PokedudeBufferExecCompleted(); + } + else + { + gDoingBattleAnim = TRUE; + gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; + DoHitAnimHealthboxEffect(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = DoHitAnimBlinkSpriteEffect_PokedudeTmp; + } +} + +void PokedudeHandleCmd42(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandlePlaySE(void) +{ + PlaySE(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + PokedudeBufferExecCompleted(); +} + +void PokedudeHandlePlayFanfare(void) +{ + PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8)); + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleFaintingCry(void) +{ + struct Pokemon *mon; + u16 species; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + mon = &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]; + else + mon = &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]; + species = GetMonData(mon, MON_DATA_SPECIES); + PlayCry1(species, 25); + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleIntroSlide(void) +{ + HandleIntroSlide(gBattleBufferA[gActiveBattler][1]); + gIntroSlideFlags |= 1; + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleIntroTrainerBallThrow(void) +{ + u8 paletteNum; + u8 taskId; + + 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[4].data, 0x100 + paletteNum * 16, 32); + gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum; + taskId = CreateTask(sub_81595EC, 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_99; +} + +void sub_8159478(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); +} + +void sub_81595EC(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_8159478(gActiveBattler); + gBattlerControllerFuncs[gActiveBattler] = sub_8156624; + gActiveBattler = savedActiveBattler; + DestroyTask(taskId); + } +} + +void PokedudeHandleDrawPartyStatusSummary(void) +{ + if (gBattleBufferA[gActiveBattler][1] != 0 + && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + PokedudeBufferExecCompleted(); + } + else + { + gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].partyStatusSummaryShown = TRUE; + gBattlerStatusSummaryTaskId[gActiveBattler] = CreatePartyStatusSummarySprites(gActiveBattler, + (struct HpAndStatus *)&gBattleBufferA[gActiveBattler][4], + gBattleBufferA[gActiveBattler][1], + gBattleBufferA[gActiveBattler][2]); + PokedudeBufferExecCompleted(); + } +} + +void PokedudeHandleHidePartyStatusSummary(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleEndBounceEffect(void) +{ + EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX); + EndBounceEffect(gActiveBattler, BOUNCE_MON); + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleSpriteInvisibility(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleBattleAnimation(void) +{ + u8 animationId = gBattleBufferA[gActiveBattler][1]; + u16 argument = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8); + + if (TryHandleLaunchBattleTableAnimation(gActiveBattler, gActiveBattler, gActiveBattler, animationId, argument)) + PokedudeBufferExecCompleted(); + else + gBattlerControllerFuncs[gActiveBattler] = CompleteOnFinishedBattleAnimation_PokedudeTmp; +} + +void PokedudeHandleLinkStandbyMsg(void) +{ + switch (gBattleBufferA[gActiveBattler][1]) + { + case 0: + case 1: + EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX); + EndBounceEffect(gActiveBattler, BOUNCE_MON); + break; + case 2: + break; + } + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleResetActionMoveSelection(void) +{ + PokedudeBufferExecCompleted(); +} + +void PokedudeHandleCmd55(void) +{ + gBattleOutcome = gBattleBufferA[gActiveBattler][1]; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + PokedudeBufferExecCompleted(); + if (!(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER) && gBattleTypeFlags & BATTLE_TYPE_LINK) + gBattlerControllerFuncs[gActiveBattler] = sub_8156254; +} + +void PokedudeCmdEnd(void) +{ +} + +void sub_8159824(void) +{ + const u8 (*r7)[8] = gUnknown_8479060[gBattleStruct->field_96]; + + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + DoBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX, 7, 1); + DoBounceEffect(gActiveBattler, BOUNCE_MON, 7, 1); + } + if (*(r7[gUnknown_3005EE0[gActiveBattler][0]] + gActiveBattler + 4) == gUnknown_3005EE0[gActiveBattler][2]) + { + if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + PlaySE(SE_SELECT); + gUnknown_3005EE0[gActiveBattler][2] = 0; + switch (r7[gUnknown_3005EE0[gActiveBattler][0]][gActiveBattler]) + { + case 0: + BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0); + break; + case 1: + BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0); + break; + case 2: + BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0); + break; + case 3: + BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0); + break; + } + PokedudeBufferExecCompleted(); + ++gUnknown_3005EE0[gActiveBattler][0]; + if (r7[gUnknown_3005EE0[gActiveBattler][0]][gActiveBattler] == 4) + gUnknown_3005EE0[gActiveBattler][0] = 0; + } + else + { + if (gActionSelectionCursor[gActiveBattler] != r7[gUnknown_3005EE0[gActiveBattler][0]][gActiveBattler] + && r7[gUnknown_3005EE0[gActiveBattler][0]][gActiveBattler + 4] / 2 == gUnknown_3005EE0[gActiveBattler][2]) + { + PlaySE(SE_SELECT); + ActionSelectionDestroyCursorAt(gActionSelectionCursor[gActiveBattler]); + gActionSelectionCursor[gActiveBattler] = r7[gUnknown_3005EE0[gActiveBattler][0]][gActiveBattler]; + ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); + } + ++gUnknown_3005EE0[gActiveBattler][2]; + } +} diff --git a/src/rock.c b/src/rock.c index 4db903344..42613a0b5 100644 --- a/src/rock.c +++ b/src/rock.c @@ -152,7 +152,7 @@ static const struct Subsprite gUnknown_83E7468[] = static const struct SubspriteTable gUnknown_83E7470[] = { - { ARRAY_COUNT(gUnknown_83E7468), gUnknown_83E7468 }, + { NELEMS(gUnknown_83E7468), gUnknown_83E7468 }, }; static const union AnimCmd gUnknown_83E7478[] = diff --git a/sym_common.txt b/sym_common.txt index 79ccc190d..def8fff58 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -192,10 +192,7 @@ gUnknown_3005E98: @ 3005E98 .include "mevent.o" .align 4 -gUnknown_3005EE0: @ 3005EE0 -@ const u8 *gUnknown_3005EE0[4] - .space 0x10 - + .include "battle_controller_pokedude.o" .align 4 .include "berry_fix_program.o" .include "m4a.o" |