diff options
author | camthesaxman <cameronghall@cox.net> | 2017-06-22 19:16:53 -0500 |
---|---|---|
committer | camthesaxman <cameronghall@cox.net> | 2017-06-22 19:16:53 -0500 |
commit | 2e77bc6d5ee6b508bb88e0971fc860f50165232a (patch) | |
tree | 54349cfffba057abca2637c0fdaf43c562224dba | |
parent | 42ae04c74fe07d05175efb4df143dbcf1b2752bc (diff) |
decompile unref_sub_8137220 - unref_sub_81379E4
-rw-r--r-- | asm/battle_anim_8137220.s | 986 | ||||
-rw-r--r-- | include/battle.h | 1 | ||||
-rwxr-xr-x | ld_script.txt | 1 | ||||
-rw-r--r-- | src/battle_anim_8137220.c | 315 |
4 files changed, 316 insertions, 987 deletions
diff --git a/asm/battle_anim_8137220.s b/asm/battle_anim_8137220.s index f88a938e7..05d840ee6 100644 --- a/asm/battle_anim_8137220.s +++ b/asm/battle_anim_8137220.s @@ -6,992 +6,6 @@ .text - thumb_func_start unref_sub_8137220 -unref_sub_8137220: @ 8137220 - bx lr - thumb_func_end unref_sub_8137220 - - thumb_func_start SetBankFuncToWallyBufferRunCommand -SetBankFuncToWallyBufferRunCommand: @ 8137224 - ldr r1, _08137250 @ =gBattleBankFunc - ldr r0, _08137254 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08137258 @ =WallyBufferRunCommand - str r1, [r0] - ldr r1, _0813725C @ =0x02000000 - ldr r2, _08137260 @ =0x000160a8 - adds r0, r1, r2 - movs r2, 0 - strb r2, [r0] - ldr r3, _08137264 @ =0x000160a9 - adds r0, r1, r3 - strb r2, [r0] - adds r3, 0x1 - adds r0, r1, r3 - strb r2, [r0] - ldr r0, _08137268 @ =0x000160ab - adds r1, r0 - strb r2, [r1] - bx lr - .align 2, 0 -_08137250: .4byte gBattleBankFunc -_08137254: .4byte gActiveBank -_08137258: .4byte WallyBufferRunCommand -_0813725C: .4byte 0x02000000 -_08137260: .4byte 0x000160a8 -_08137264: .4byte 0x000160a9 -_08137268: .4byte 0x000160ab - thumb_func_end SetBankFuncToWallyBufferRunCommand - - thumb_func_start WallyBufferRunCommand -WallyBufferRunCommand: @ 813726C - push {lr} - ldr r2, _081372A0 @ =gBattleExecBuffer - ldr r1, _081372A4 @ =gBitTable - ldr r0, _081372A8 @ =gActiveBank - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _081372B8 - ldr r0, _081372AC @ =gBattleBufferA - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _081372B4 - ldr r0, _081372B0 @ =gWallyBufferCommands - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _081372B8 - .align 2, 0 -_081372A0: .4byte gBattleExecBuffer -_081372A4: .4byte gBitTable -_081372A8: .4byte gActiveBank -_081372AC: .4byte gBattleBufferA -_081372B0: .4byte gWallyBufferCommands -_081372B4: - bl WallyBufferExecCompleted -_081372B8: - pop {r0} - bx r0 - thumb_func_end WallyBufferRunCommand - - thumb_func_start sub_81372BC -sub_81372BC: @ 81372BC - push {r4-r6,lr} - ldr r1, _081372D8 @ =0x02000000 - ldr r2, _081372DC @ =0x000160a8 - adds r0, r1, r2 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0x5 - bls _081372CE - b _08137410 -_081372CE: - lsls r0, 2 - ldr r1, _081372E0 @ =_081372E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081372D8: .4byte 0x02000000 -_081372DC: .4byte 0x000160a8 -_081372E0: .4byte _081372E4 - .align 2, 0 -_081372E4: - .4byte _081372FC - .4byte _0813730E - .4byte _08137344 - .4byte _08137368 - .4byte _081373AC - .4byte _081373E8 -_081372FC: - ldr r0, _0813733C @ =0x000160aa - adds r1, r5, r0 - movs r0, 0x40 - strb r0, [r1] - ldr r2, _08137340 @ =0x000160a8 - adds r1, r5, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0813730E: - ldr r0, _0813733C @ =0x000160aa - adds r6, r5, r0 - ldrb r0, [r6] - subs r0, 0x1 - strb r0, [r6] - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08137410 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - bl WallyBufferExecCompleted - ldr r2, _08137340 @ =0x000160a8 - adds r1, r5, r2 - b _0813738C - .align 2, 0 -_0813733C: .4byte 0x000160aa -_08137340: .4byte 0x000160a8 -_08137344: - ldr r2, _08137364 @ =0x000160aa - adds r6, r5, r2 - ldrb r0, [r6] - subs r0, 0x1 - strb r0, [r6] - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08137410 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - movs r1, 0 - b _0813737E - .align 2, 0 -_08137364: .4byte 0x000160aa -_08137368: - ldr r2, _081373A0 @ =0x000160aa - adds r6, r5, r2 - ldrb r0, [r6] - subs r0, 0x1 - strb r0, [r6] - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08137410 - movs r0, 0x1 - movs r1, 0x9 -_0813737E: - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - bl WallyBufferExecCompleted - ldr r0, _081373A4 @ =0x000160a8 - adds r1, r5, r0 -_0813738C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, _081373A8 @ =0x000160a9 - adds r0, r5, r1 - strb r4, [r0] - movs r0, 0x40 - strb r0, [r6] - b _08137410 - .align 2, 0 -_081373A0: .4byte 0x000160aa -_081373A4: .4byte 0x000160a8 -_081373A8: .4byte 0x000160a9 -_081373AC: - ldr r2, _081373E0 @ =0x000160aa - adds r4, r5, r2 - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - bne _08137410 - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl nullsub_8 - movs r0, 0x1 - movs r1, 0 - bl sub_802E3E4 - movs r0, 0x40 - strb r0, [r4] - ldr r0, _081373E4 @ =0x000160a8 - adds r1, r5, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08137410 - .align 2, 0 -_081373E0: .4byte 0x000160aa -_081373E4: .4byte 0x000160a8 -_081373E8: - ldr r2, _08137418 @ =0x000160aa - adds r1, r5, r2 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _08137410 - movs r0, 0x5 - bl PlaySE - bl DestroyMenuCursor - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - bl WallyBufferExecCompleted -_08137410: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08137418: .4byte 0x000160aa - thumb_func_end sub_81372BC - - thumb_func_start sub_813741C -sub_813741C: @ 813741C - push {lr} - ldr r2, _08137444 @ =gSprites - ldr r1, _08137448 @ =gObjectBankIDs - ldr r0, _0813744C @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08137450 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08137440 - bl WallyBufferExecCompleted -_08137440: - pop {r0} - bx r0 - .align 2, 0 -_08137444: .4byte gSprites -_08137448: .4byte gObjectBankIDs -_0813744C: .4byte gActiveBank -_08137450: .4byte SpriteCallbackDummy - thumb_func_end sub_813741C - - thumb_func_start sub_8137454 -sub_8137454: @ 8137454 - push {lr} - ldr r0, _08137468 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - bne _08137462 - bl WallyBufferExecCompleted -_08137462: - pop {r0} - bx r0 - .align 2, 0 -_08137468: .4byte gUnknown_03004210 - thumb_func_end sub_8137454 - - thumb_func_start sub_813746C -sub_813746C: @ 813746C - push {lr} - ldr r0, _0813749C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08137496 - ldr r2, _081374A0 @ =gMain - ldr r0, _081374A4 @ =0x0000043d - adds r3, r2, r0 - ldrb r1, [r3] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r0, _081374A8 @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r2, 0x8] - bl SetMainCallback2 -_08137496: - pop {r0} - bx r0 - .align 2, 0 -_0813749C: .4byte gPaletteFade -_081374A0: .4byte gMain -_081374A4: .4byte 0x0000043d -_081374A8: .4byte gPreBattleCallback1 - thumb_func_end sub_813746C - - thumb_func_start bx_wait_t5 -bx_wait_t5: @ 81374AC - push {lr} - ldr r0, _081374C0 @ =gDoingBattleAnim - ldrb r0, [r0] - cmp r0, 0 - bne _081374BA - bl WallyBufferExecCompleted -_081374BA: - pop {r0} - bx r0 - .align 2, 0 -_081374C0: .4byte gDoingBattleAnim - thumb_func_end bx_wait_t5 - - thumb_func_start sub_81374C4 -sub_81374C4: @ 81374C4 - push {lr} - ldr r0, _081374EC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081374E8 - ldr r1, _081374F0 @ =gBattleBankFunc - ldr r0, _081374F4 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _081374F8 @ =sub_81374FC - str r1, [r0] - bl nullsub_14 - bl PrepareBagForWallyTutorial -_081374E8: - pop {r0} - bx r0 - .align 2, 0 -_081374EC: .4byte gPaletteFade -_081374F0: .4byte gBattleBankFunc -_081374F4: .4byte gActiveBank -_081374F8: .4byte sub_81374FC - thumb_func_end sub_81374C4 - - thumb_func_start sub_81374FC -sub_81374FC: @ 81374FC - push {lr} - ldr r0, _08137528 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _0813752C @ =sub_800F808 - cmp r1, r0 - bne _08137522 - ldr r0, _08137530 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08137522 - ldr r0, _08137534 @ =gScriptItemId - ldrh r1, [r0] - movs r0, 0x1 - bl dp01_build_cmdbuf_x23_aa_0 - bl WallyBufferExecCompleted -_08137522: - pop {r0} - bx r0 - .align 2, 0 -_08137528: .4byte gMain -_0813752C: .4byte sub_800F808 -_08137530: .4byte gPaletteFade -_08137534: .4byte gScriptItemId - thumb_func_end sub_81374FC - - thumb_func_start sub_8137538 -sub_8137538: @ 8137538 - push {r4-r7,lr} - ldr r5, _0813768C @ =gActiveBank - ldrb r2, [r5] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - ldr r4, _08137690 @ =0x02017810 - adds r0, r4 - ldrb r1, [r0] - movs r7, 0x88 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _08137568 - ldr r0, _08137694 @ =gBattlePartyID - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08137698 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_08137568: - ldrb r0, [r5] - movs r6, 0x2 - adds r2, r6, 0 - eors r2, r0 - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _08137596 - ldr r0, _08137694 @ =gBattlePartyID - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08137698 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_08137596: - ldrb r2, [r5] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r3, 0x8 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _08137684 - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _08137684 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _08137626 - ldr r0, _0813769C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08137626 - ldr r1, _081376A0 @ =gUnknown_0300434C - ldrb r0, [r5] - eors r0, r6 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081376A4 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r4, _081376A8 @ =gHealthboxIDs - ldrb r0, [r5] - adds r1, r6, 0 - eors r1, r0 - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _08137694 @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08137698 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r5] - eors r0, r6 - bl sub_804777C - ldrb r0, [r5] - eors r0, r6 - adds r0, r4 - ldrb r0, [r0] - bl sub_8043DFC -_08137626: - ldr r1, _081376A0 @ =gUnknown_0300434C - ldr r4, _0813768C @ =gActiveBank - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081376A4 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r5, _081376A8 @ =gHealthboxIDs - ldrb r1, [r4] - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _08137694 @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08137698 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r4] - bl sub_804777C - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl sub_8043DFC - ldr r2, _081376AC @ =0x02017840 - ldrb r1, [r2, 0x9] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldr r1, _081376B0 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _081376B4 @ =sub_81376B8 - str r1, [r0] -_08137684: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813768C: .4byte gActiveBank -_08137690: .4byte 0x02017810 -_08137694: .4byte gBattlePartyID -_08137698: .4byte gPlayerParty -_0813769C: .4byte gBattleTypeFlags -_081376A0: .4byte gUnknown_0300434C -_081376A4: .4byte gSprites -_081376A8: .4byte gHealthboxIDs -_081376AC: .4byte 0x02017840 -_081376B0: .4byte gBattleBankFunc -_081376B4: .4byte sub_81376B8 - thumb_func_end sub_8137538 - - thumb_func_start sub_81376B8 -sub_81376B8: @ 81376B8 - push {r4-r7,lr} - movs r4, 0 - ldr r2, _0813778C @ =gSprites - ldr r0, _08137790 @ =gHealthboxIDs - ldr r7, _08137794 @ =gActiveBank - ldrb r3, [r7] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08137798 @ =SpriteCallbackDummy - cmp r1, r0 - bne _081376DC - movs r4, 0x1 -_081376DC: - cmp r4, 0 - beq _08137784 - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - ldr r5, _0813779C @ =0x02017810 - adds r2, r0, r5 - ldrb r1, [r2, 0x1] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08137784 - movs r6, 0x2 - adds r1, r6, 0 - eors r1, r3 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08137784 - ldrb r1, [r2] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r1 - strb r0, [r2] - ldrb r0, [r7] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x1] - subs r4, 0x3 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0] - ands r3, r1 - strb r3, [r0] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldr r4, _081377A0 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r0, _081377A4 @ =c3_0802FDF4 - movs r1, 0xA - bl CreateTask - ldr r2, _081377A8 @ =gBattlePartyID - ldrb r1, [r7] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _081377AC @ =gPlayerParty - adds r0, r2 - bl sub_80324F8 - bl WallyBufferExecCompleted -_08137784: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813778C: .4byte gSprites -_08137790: .4byte gHealthboxIDs -_08137794: .4byte gActiveBank -_08137798: .4byte SpriteCallbackDummy -_0813779C: .4byte 0x02017810 -_081377A0: .4byte 0x000027f9 -_081377A4: .4byte c3_0802FDF4 -_081377A8: .4byte gBattlePartyID -_081377AC: .4byte gPlayerParty - thumb_func_end sub_81376B8 - - thumb_func_start sub_81377B0 -sub_81377B0: @ 81377B0 - push {r4-r6,lr} - ldr r5, _081377F0 @ =gActiveBank - ldrb r0, [r5] - ldr r6, _081377F4 @ =gHealthboxIDs - adds r1, r0, r6 - ldrb r1, [r1] - movs r2, 0 - movs r3, 0 - bl sub_8045C78 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - bl sub_8043DFC - lsls r4, 16 - asrs r1, r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _081377F8 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - movs r2, 0 - bl sub_80440EC - b _08137812 - .align 2, 0 -_081377F0: .4byte gActiveBank -_081377F4: .4byte gHealthboxIDs -_081377F8: - ldr r2, _08137818 @ =gBattlePartyID - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _0813781C @ =gPlayerParty - adds r0, r2 - bl sub_80324F8 - bl WallyBufferExecCompleted -_08137812: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08137818: .4byte gBattlePartyID -_0813781C: .4byte gPlayerParty - thumb_func_end sub_81377B0 - - thumb_func_start bx_blink_t5 -bx_blink_t5: @ 8137820 - push {r4,lr} - ldr r1, _0813785C @ =gObjectBankIDs - ldr r0, _08137860 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _08137864 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x20 - bne _0813786C - movs r3, 0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x5 - ands r0, r1 - strb r0, [r2] - ldr r0, _08137868 @ =gDoingBattleAnim - strb r3, [r0] - bl WallyBufferExecCompleted - b _08137896 - .align 2, 0 -_0813785C: .4byte gObjectBankIDs -_08137860: .4byte gActiveBank -_08137864: .4byte gSprites -_08137868: .4byte gDoingBattleAnim -_0813786C: - ldrh r0, [r4, 0x30] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08137890 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_08137890: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_08137896: - pop {r4} - pop {r0} - bx r0 - thumb_func_end bx_blink_t5 - - thumb_func_start sub_813789C -sub_813789C: @ 813789C - push {r4-r6,lr} - ldr r6, _081378F4 @ =gActiveBank - ldrb r2, [r6] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r1, _081378F8 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _081378EC - ldr r5, _081378FC @ =gObjectBankIDs - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08137900 @ =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, _08137904 @ =gHealthboxIDs - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl sub_8043DB0 - bl WallyBufferExecCompleted -_081378EC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081378F4: .4byte gActiveBank -_081378F8: .4byte 0x02017810 -_081378FC: .4byte gObjectBankIDs -_08137900: .4byte gSprites -_08137904: .4byte gHealthboxIDs - thumb_func_end sub_813789C - - thumb_func_start sub_8137908 -sub_8137908: @ 8137908 - push {lr} - ldr r2, _08137930 @ =gSprites - ldr r1, _08137934 @ =gObjectBankIDs - ldr r0, _08137938 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0813793C @ =SpriteCallbackDummy - cmp r1, r0 - bne _0813792C - bl WallyBufferExecCompleted -_0813792C: - pop {r0} - bx r0 - .align 2, 0 -_08137930: .4byte gSprites -_08137934: .4byte gObjectBankIDs -_08137938: .4byte gActiveBank -_0813793C: .4byte SpriteCallbackDummy - thumb_func_end sub_8137908 - - thumb_func_start sub_8137940 -sub_8137940: @ 8137940 - push {lr} - ldr r0, _08137964 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08137968 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0813795E - bl WallyBufferExecCompleted -_0813795E: - pop {r0} - bx r0 - .align 2, 0 -_08137964: .4byte gActiveBank -_08137968: .4byte 0x02017810 - thumb_func_end sub_8137940 - - thumb_func_start WallyBufferExecCompleted -WallyBufferExecCompleted: @ 813796C - push {r4,lr} - sub sp, 0x4 - ldr r1, _081379AC @ =gBattleBankFunc - ldr r4, _081379B0 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _081379B4 @ =WallyBufferRunCommand - str r1, [r0] - ldr r0, _081379B8 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081379C0 - bl GetMultiplayerId - mov r1, sp - strb r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - mov r2, sp - bl dp01_prepare_buffer_wireless_probably - ldr r1, _081379BC @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r0, r1 - movs r1, 0x38 - strb r1, [r0] - b _081379D2 - .align 2, 0 -_081379AC: .4byte gBattleBankFunc -_081379B0: .4byte gActiveBank -_081379B4: .4byte WallyBufferRunCommand -_081379B8: .4byte gBattleTypeFlags -_081379BC: .4byte gBattleBufferA -_081379C0: - ldr r2, _081379DC @ =gBattleExecBuffer - ldr r1, _081379E0 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] -_081379D2: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081379DC: .4byte gBattleExecBuffer -_081379E0: .4byte gBitTable - thumb_func_end WallyBufferExecCompleted - - thumb_func_start unref_sub_81379E4 -unref_sub_81379E4: @ 81379E4 - push {lr} - ldr r0, _08137A08 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08137A0C @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08137A02 - bl WallyBufferExecCompleted -_08137A02: - pop {r0} - bx r0 - .align 2, 0 -_08137A08: .4byte gActiveBank -_08137A0C: .4byte 0x02017810 - thumb_func_end unref_sub_81379E4 - thumb_func_start dp01t_00_5_getattr dp01t_00_5_getattr: @ 8137A10 push {r4-r6,lr} diff --git a/include/battle.h b/include/battle.h index 395cf042a..b151eff41 100644 --- a/include/battle.h +++ b/include/battle.h @@ -185,7 +185,6 @@ struct Struct2017810 u8 unk1_0:1; u8 unk2; u8 unk3; - //u8 filler2[2]; u8 unk4; u8 unk5; u8 unk6; diff --git a/ld_script.txt b/ld_script.txt index 281f1781d..b9ae46dec 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -252,6 +252,7 @@ SECTIONS { src/roamer.o(.text); asm/battle_tower.o(.text); asm/use_pokeblock.o(.text); + src/battle_anim_8137220.o(.text); asm/battle_anim_8137220.o(.text); src/player_pc.o(.text); src/intro.o(.text); diff --git a/src/battle_anim_8137220.c b/src/battle_anim_8137220.c new file mode 100644 index 000000000..86038094b --- /dev/null +++ b/src/battle_anim_8137220.c @@ -0,0 +1,315 @@ +#include "global.h" +#include "battle.h" +#include "battle_interface.h" +#include "link.h" +#include "main.h" +#include "menu_cursor.h" +#include "palette.h" +#include "pokemon.h" +#include "rom3.h" +#include "songs.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "text.h" + +extern u8 gActiveBank; +extern void (*gBattleBankFunc[])(void); +extern u32 gBattleExecBuffer; +extern void (*gWallyBufferCommands[])(void); +extern u32 gBitTable[]; +extern u8 gBattleBufferA[][0x200]; +extern u8 gObjectBankIDs[]; +extern MainCallback gPreBattleCallback1; +extern bool8 gDoingBattleAnim; +extern u16 gScriptItemId; +extern u16 gBattlePartyID[]; +extern u8 gHealthboxIDs[]; +extern u16 gBattleTypeFlags; +extern struct Window gUnknown_03004210; +extern u8 gUnknown_0300434C[]; + +// TODO: include rom3.h when my other PR gets merged +extern void dp01_build_cmdbuf_x21_a_bb(u8, u8, u16); +extern void dp01_build_cmdbuf_x23_aa_0(u8, u16); + +extern void nullsub_14(void); +extern void PrepareBagForWallyTutorial(void); +extern void sub_8141828(); +extern void sub_8045A5C(); +extern void sub_804777C(); +extern void sub_8043DFC(); +extern bool8 IsDoubleBattle(void); +extern void c3_0802FDF4(u8); + +void WallyBufferRunCommand(void); +void sub_81374FC(void); +void sub_81376B8(void); +void WallyBufferExecCompleted(void); + +void unref_sub_8137220(void) +{ +} + +void SetBankFuncToWallyBufferRunCommand(void) +{ + gBattleBankFunc[gActiveBank] = WallyBufferRunCommand; + ewram[0x160A8] = 0; + ewram[0x160A9] = 0; + ewram[0x160AA] = 0; + ewram[0x160AB] = 0; +} + +void WallyBufferRunCommand(void) +{ + if (gBattleExecBuffer & gBitTable[gActiveBank]) + { + if (gBattleBufferA[gActiveBank][0] < 0x39) + gWallyBufferCommands[gBattleBufferA[gActiveBank][0]](); + else + WallyBufferExecCompleted(); + } +} + +void sub_81372BC(void) +{ + u8 r4; + + switch (ewram[0x160A8]) + { + case 0: + ewram[0x160AA] = 64; + ewram[0x160A8]++; + // fall through + case 1: + r4 = --ewram[0x160AA]; + if (r4 == 0) + { + PlaySE(SE_SELECT); + dp01_build_cmdbuf_x21_a_bb(1, 0, 0); + WallyBufferExecCompleted(); + ewram[0x160A8]++; + ewram[0x160A9] = r4; + ewram[0x160AA] = 64; + } + break; + case 2: + r4 = --ewram[0x160AA]; + if (r4 == 0) + { + PlaySE(SE_SELECT); + dp01_build_cmdbuf_x21_a_bb(1, 0, 0); + WallyBufferExecCompleted(); + ewram[0x160A8]++; + ewram[0x160A9] = r4; + ewram[0x160AA] = 64; + } + break; + case 3: + r4 = --ewram[0x160AA]; + if (r4 == 0) + { + dp01_build_cmdbuf_x21_a_bb(1, 9, 0); + WallyBufferExecCompleted(); + ewram[0x160A8]++; + ewram[0x160A9] = r4; + ewram[0x160AA] = 64; + } + break; + case 4: + if (--ewram[0x160AA] == 0) + { + PlaySE(SE_SELECT); + nullsub_8(0); + sub_802E3E4(1, 0); + ewram[0x160AA] = 64; + ewram[0x160A8]++; + } + break; + case 5: + if (--ewram[0x160AA] == 0) + { + PlaySE(SE_SELECT); + DestroyMenuCursor(); + dp01_build_cmdbuf_x21_a_bb(1, 1, 0); + WallyBufferExecCompleted(); + } + break; + } +} + +void sub_813741C(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + WallyBufferExecCompleted(); +} + +void sub_8137454(void) +{ + if (gUnknown_03004210.state == 0) + WallyBufferExecCompleted(); +} + +void sub_813746C(void) +{ + if (!gPaletteFade.active) + { + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } +} + +void bx_wait_t5(void) +{ + if (!gDoingBattleAnim) + WallyBufferExecCompleted(); +} + +void sub_81374C4(void) +{ + if (!gPaletteFade.active) + { + gBattleBankFunc[gActiveBank] = sub_81374FC; + nullsub_14(); + PrepareBagForWallyTutorial(); + } +} + +void sub_81374FC(void) +{ + if (gMain.callback2 == sub_800F808 + && !gPaletteFade.active) + { + dp01_build_cmdbuf_x23_aa_0(1, gScriptItemId); + WallyBufferExecCompleted(); + } +} + +void sub_8137538(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]); + + if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7) + sub_8141828(gActiveBank ^ 2, &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]]); + + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3) + { + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]); + sub_8045A5C(gHealthboxIDs[gActiveBank ^ 2], &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], 0); + sub_804777C(gActiveBank ^ 2); + sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]); + } + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + ewram17840.unk9_0 = 0; + gBattleBankFunc[gActiveBank] = sub_81376B8; + } +} + +void sub_81376B8(void) +{ + bool8 r4 = FALSE; + + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) + r4 = TRUE; + if (r4 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + ewram17810[gActiveBank ^ 2].unk0_7 = 0; + ewram17810[gActiveBank ^ 2].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + CreateTask(c3_0802FDF4, 10); + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + WallyBufferExecCompleted(); + } +} + +void sub_81377B0(void) +{ + s16 r4; + + r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + if (r4 != -1) + { + sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0); + } + else + { + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + WallyBufferExecCompleted(); + } +} + +void bx_blink_t5(void) +{ + u8 spriteId = gObjectBankIDs[gActiveBank]; + + if (gSprites[spriteId].data1 == 32) + { + gSprites[spriteId].data1 = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = FALSE; + WallyBufferExecCompleted(); + } + else + { + if (((u16)gSprites[spriteId].data1 % 4) == 0) + gSprites[spriteId].invisible ^= 1; + gSprites[spriteId].data1++; + } +} + +void sub_813789C(void) +{ + if (!ewram17810[gActiveBank].unk0_6) + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + WallyBufferExecCompleted(); + } +} + +// Duplicate of sub_813741C +void sub_8137908(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + WallyBufferExecCompleted(); +} + +void sub_8137940(void) +{ + if (!ewram17810[gActiveBank].unk0_5) + WallyBufferExecCompleted(); +} + +void WallyBufferExecCompleted(void) +{ + gBattleBankFunc[gActiveBank] = WallyBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 multiplayerId = GetMultiplayerId(); + + dp01_prepare_buffer_wireless_probably(2, 4, &multiplayerId); + gBattleBufferA[gActiveBank][0] = 0x38; + } + else + { + gBattleExecBuffer &= ~gBitTable[gActiveBank]; + } +} + +void unref_sub_81379E4(void) +{ + if (!ewram17810[gActiveBank].unk0_4) + WallyBufferExecCompleted(); +} |