diff options
author | U-UNO-DOMAIN\chall3 <chall3@W046813.uno.edu> | 2017-06-20 16:47:46 -0500 |
---|---|---|
committer | U-UNO-DOMAIN\chall3 <chall3@W046813.uno.edu> | 2017-06-20 16:47:46 -0500 |
commit | 4a71715100ca2718b5e5d68cf818d011114e06f0 (patch) | |
tree | 5ebc2236620ec5e74d420a129e963ce406b01f1d | |
parent | 102f5b1e15e7295e30a3cebfbbad3c8af4cc1d37 (diff) |
decompile nullsub_42 - PlayerHandleDMATransfer
-rw-r--r-- | asm/battle_6.s | 706 | ||||
-rw-r--r-- | src/battle_6.c | 214 |
2 files changed, 207 insertions, 713 deletions
diff --git a/asm/battle_6.s b/asm/battle_6.s index 90c100c73..5d6319467 100644 --- a/asm/battle_6.s +++ b/asm/battle_6.s @@ -3675,712 +3675,6 @@ _08030378: .section .text_8030464 - thumb_func_start nullsub_42 -nullsub_42: @ 8030464 - bx lr - thumb_func_end nullsub_42 - - thumb_func_start sub_8030468 -sub_8030468: @ 8030468 - push {lr} - sub sp, 0x4 - ldr r1, _08030494 @ =0x0000ffff - ldr r3, _08030498 @ =0x00002d9f - movs r0, 0 - str r0, [sp] - movs r2, 0xC - bl sub_814A5C0 - bl sub_80304A8 - ldr r1, _0803049C @ =gBattleBankFunc - ldr r0, _080304A0 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080304A4 @ =sub_802C68C - str r1, [r0] - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08030494: .4byte 0x0000ffff -_08030498: .4byte 0x00002d9f -_0803049C: .4byte gBattleBankFunc -_080304A0: .4byte gActiveBank -_080304A4: .4byte sub_802C68C - thumb_func_end sub_8030468 - - thumb_func_start sub_80304A8 -sub_80304A8: @ 80304A8 - push {r4,lr} - sub sp, 0x4 - ldr r1, _08030510 @ =gUnknown_030042A4 - movs r0, 0 - strh r0, [r1] - ldr r1, _08030514 @ =gUnknown_030042A0 - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - bl sub_802E1B0 - ldr r1, _08030518 @ =gUnknown_03004344 - movs r0, 0xFF - strb r0, [r1] - ldr r1, _0803051C @ =gMoveSelectionCursor - ldr r4, _08030520 @ =gActiveBank - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3B4 - ldr r1, _08030524 @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r1, 0x2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08030500 - ldr r4, _08030528 @ =gUnknown_03004210 - ldr r1, _0803052C @ =gUnknown_08400D38 - movs r2, 0xA4 - lsls r2, 2 - movs r0, 0x37 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x17 - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 -_08030500: - bl sub_802E220 - bl sub_802E2D4 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08030510: .4byte gUnknown_030042A4 -_08030514: .4byte gUnknown_030042A0 -_08030518: .4byte gUnknown_03004344 -_0803051C: .4byte gMoveSelectionCursor -_08030520: .4byte gActiveBank -_08030524: .4byte gBattleBufferA -_08030528: .4byte gUnknown_03004210 -_0803052C: .4byte gUnknown_08400D38 - thumb_func_end sub_80304A8 - - thumb_func_start PlayerHandleOpenBag -PlayerHandleOpenBag: @ 8030530 - 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, _0803057C @ =gBattleBankFunc - ldr r2, _08030580 @ =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030584 @ =sub_802E004 - str r1, [r0] - ldr r1, _08030588 @ =gBankInMenu - ldrb r0, [r2] - strb r0, [r1] - movs r3, 0 - ldr r5, _0803058C @ =gUnknown_02038470 - ldr r4, _08030590 @ =gBattleBufferA -_0803055E: - 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 _0803055E - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0803057C: .4byte gBattleBankFunc -_08030580: .4byte gActiveBank -_08030584: .4byte sub_802E004 -_08030588: .4byte gBankInMenu -_0803058C: .4byte gUnknown_02038470 -_08030590: .4byte gBattleBufferA - thumb_func_end PlayerHandleOpenBag - - thumb_func_start sub_8030594 -sub_8030594: @ 8030594 - push {r4,r5,lr} - sub sp, 0x4 - ldr r0, _08030644 @ =TaskDummy - movs r1, 0xFF - bl CreateTask - ldr r3, _08030648 @ =gUnknown_0300434C - ldr r5, _0803064C @ =gActiveBank - ldrb r1, [r5] - adds r1, r3 - strb r0, [r1] - ldr r4, _08030650 @ =gTasks - ldrb r2, [r5] - adds r3, r2, r3 - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - ldr r4, _08030654 @ =gBattleBufferA - lsls r2, 9 - adds r3, r4, 0x1 - adds r2, r3 - ldrb r2, [r2] - movs r0, 0xF - ands r0, r2 - strh r0, [r1, 0x8] - ldr r2, _08030658 @ =0x02000000 - ldrb r0, [r5] - lsls r0, 9 - adds r0, r3 - ldrb r0, [r0] - lsrs r0, 4 - ldr r3, _0803065C @ =0x00016054 - adds r1, r2, r3 - strb r0, [r1] - ldrb r0, [r5] - lsls r0, 9 - adds r1, r4, 0x2 - adds r0, r1 - ldrb r1, [r0] - adds r3, 0x49 - adds r0, r2, r3 - strb r1, [r0] - ldrb r0, [r5] - lsls r0, 9 - adds r1, r4, 0x3 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _08030660 @ =0x000160c0 - adds r2, r1 - strb r0, [r2] - movs r2, 0 - ldr r3, _08030664 @ =gUnknown_02038470 -_08030600: - adds r0, r2, r3 - ldrb r1, [r5] - lsls r1, 9 - adds r1, 0x4 - adds r1, r2, r1 - adds r1, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x2 - ble _08030600 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08030668 @ =gBattleBankFunc - ldr r2, _0803064C @ =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803066C @ =sub_802DF30 - str r1, [r0] - ldr r1, _08030670 @ =gBankInMenu - ldrb r0, [r2] - strb r0, [r1] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08030644: .4byte TaskDummy -_08030648: .4byte gUnknown_0300434C -_0803064C: .4byte gActiveBank -_08030650: .4byte gTasks -_08030654: .4byte gBattleBufferA -_08030658: .4byte 0x02000000 -_0803065C: .4byte 0x00016054 -_08030660: .4byte 0x000160c0 -_08030664: .4byte gUnknown_02038470 -_08030668: .4byte gBattleBankFunc -_0803066C: .4byte sub_802DF30 -_08030670: .4byte gBankInMenu - thumb_func_end sub_8030594 - - thumb_func_start sub_8030674 -sub_8030674: @ 8030674 - push {lr} - sub sp, 0x4 - bl sub_80325B8 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl PlayerBufferExecCompleted - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8030674 - - thumb_func_start PlayerHandleHealthBarUpdate -PlayerHandleHealthBarUpdate: @ 8030698 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - movs r0, 0 - bl load_gfxc_health_bar - ldr r3, _08030710 @ =gBattleBufferA - ldr r0, _08030714 @ =gActiveBank - mov r9, r0 - ldrb r4, [r0] - lsls r2, r4, 9 - adds r0, r3, 0x2 - adds r0, r2, r0 - ldrb r1, [r0] - adds r3, 0x3 - adds r2, r3 - ldrb r0, [r2] - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - asrs r7, r1, 16 - ldr r0, _08030718 @ =0x00007fff - cmp r7, r0 - beq _08030728 - ldr r6, _0803071C @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r6 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r4, _08030720 @ =gPlayerParty - adds r0, r4 - movs r1, 0x3A - bl GetMonData - mov r8, r0 - mov r1, r9 - ldrb r0, [r1] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r4 - movs r1, 0x39 - bl GetMonData - adds r3, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r1, _08030724 @ =gHealthboxIDs - adds r1, r0, r1 - ldrb r1, [r1] - str r7, [sp] - mov r2, r8 - bl sub_8043D84 - b _08030762 - .align 2, 0 -_08030710: .4byte gBattleBufferA -_08030714: .4byte gActiveBank -_08030718: .4byte 0x00007fff -_0803071C: .4byte gBattlePartyID -_08030720: .4byte gPlayerParty -_08030724: .4byte gHealthboxIDs -_08030728: - ldr r1, _08030780 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08030784 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3A - bl GetMonData - adds r2, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r4, _08030788 @ =gHealthboxIDs - adds r1, r0, r4 - ldrb r1, [r1] - str r7, [sp] - movs r3, 0 - bl sub_8043D84 - mov r1, r9 - ldrb r0, [r1] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - movs r2, 0 - bl sub_80440EC -_08030762: - ldr r1, _0803078C @ =gBattleBankFunc - ldr r0, _08030790 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030794 @ =bx_t1_healthbar_update - str r1, [r0] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08030780: .4byte gBattlePartyID -_08030784: .4byte gPlayerParty -_08030788: .4byte gHealthboxIDs -_0803078C: .4byte gBattleBankFunc -_08030790: .4byte gActiveBank -_08030794: .4byte bx_t1_healthbar_update - thumb_func_end PlayerHandleHealthBarUpdate - - thumb_func_start PlayerHandleExpBarUpdate -PlayerHandleExpBarUpdate: @ 8030798 - push {r4-r7,lr} - ldr r5, _080307C4 @ =gBattleBufferA - ldr r6, _080307C8 @ =gActiveBank - 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, _080307CC @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x63 - bls _080307D0 - bl PlayerBufferExecCompleted - b _0803081C - .align 2, 0 -_080307C4: .4byte gBattleBufferA -_080307C8: .4byte gActiveBank -_080307CC: .4byte gPlayerParty -_080307D0: - movs r0, 0x1 - bl load_gfxc_health_bar - 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, _08030824 @ =sub_802D924 - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08030828 @ =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, _0803082C @ =gBattleBankFunc - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030830 @ =nullsub_91 - str r1, [r0] -_0803081C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08030824: .4byte sub_802D924 -_08030828: .4byte gTasks -_0803082C: .4byte gBattleBankFunc -_08030830: .4byte nullsub_91 - thumb_func_end PlayerHandleExpBarUpdate - - thumb_func_start PlayerHandleStatusIconUpdate -PlayerHandleStatusIconUpdate: @ 8030834 - push {r4,lr} - ldr r4, _0803088C @ =gActiveBank - ldrb r0, [r4] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _08030884 - ldr r0, _08030890 @ =gHealthboxIDs - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _08030894 @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08030898 @ =gPlayerParty - adds r1, r2 - movs r2, 0x9 - bl sub_8045A5C - ldrb r0, [r4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, _0803089C @ =0x02017810 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, _080308A0 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080308A4 @ =sub_802E434 - str r1, [r0] -_08030884: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803088C: .4byte gActiveBank -_08030890: .4byte gHealthboxIDs -_08030894: .4byte gBattlePartyID -_08030898: .4byte gPlayerParty -_0803089C: .4byte 0x02017810 -_080308A0: .4byte gBattleBankFunc -_080308A4: .4byte sub_802E434 - thumb_func_end PlayerHandleStatusIconUpdate - - thumb_func_start PlayerHandleStatusAnimation -PlayerHandleStatusAnimation: @ 80308A8 - push {r4,r5,lr} - ldr r5, _08030900 @ =gActiveBank - ldrb r0, [r5] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _080308F8 - ldr r4, _08030904 @ =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 move_anim_start_t2_for_situation - ldr r1, _08030908 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803090C @ =sub_802E434 - str r1, [r0] -_080308F8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08030900: .4byte gActiveBank -_08030904: .4byte gBattleBufferA -_08030908: .4byte gBattleBankFunc -_0803090C: .4byte sub_802E434 - thumb_func_end PlayerHandleStatusAnimation - - thumb_func_start PlayerHandleStatusXor -PlayerHandleStatusXor: @ 8030910 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - ldr r0, _0803096C @ =gBattlePartyID - mov r8, r0 - ldr r4, _08030970 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08030974 @ =gPlayerParty - adds r0, r5 - movs r1, 0x37 - bl GetMonData - ldr r2, _08030978 @ =gBattleBufferA - ldrb r1, [r4] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - eors r0, r1 - mov r1, sp - strb r0, [r1] - ldrb r0, [r4] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0x37 - mov r2, sp - bl SetMonData - bl PlayerBufferExecCompleted - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803096C: .4byte gBattlePartyID -_08030970: .4byte gActiveBank -_08030974: .4byte gPlayerParty -_08030978: .4byte gBattleBufferA - thumb_func_end PlayerHandleStatusXor - - thumb_func_start sub_803097C -sub_803097C: @ 803097C - push {lr} - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803097C - - thumb_func_start PlayerHandleDMATransfer -PlayerHandleDMATransfer: @ 8030988 - push {r4,r5,lr} - ldr r3, _080309EC @ =gBattleBufferA - ldr r0, _080309F0 @ =gActiveBank - ldrb r2, [r0] - lsls r2, 9 - adds r0, r3, 0x1 - adds r0, r2, r0 - ldrb r5, [r0] - adds r0, r3, 0x2 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r0, 8 - orrs r5, r0 - adds r0, r3, 0x3 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r0, 16 - orrs r5, r0 - adds r0, r3, 0x4 - adds r0, r2, r0 - ldrb r4, [r0] - lsls r4, 24 - adds r0, r3, 0x5 - adds r0, r2, r0 - ldrb r1, [r0] - adds r0, r3, 0x6 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - adds r3, 0x7 - adds r2, r3 - orrs r5, r4 - lsrs r4, r1, 16 - movs r0, 0x80 - lsls r0, 5 - cmp r4, r0 - bhi _080309F8 - ldr r0, _080309F4 @ =0x040000d4 - str r2, [r0] - str r5, [r0, 0x4] - lsrs r1, 17 - movs r2, 0x80 - lsls r2, 24 - orrs r1, r2 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - b _08030A24 - .align 2, 0 -_080309EC: .4byte gBattleBufferA -_080309F0: .4byte gActiveBank -_080309F4: .4byte 0x040000d4 -_080309F8: - ldr r3, _08030A30 @ =0x040000d4 - str r2, [r3] - str r5, [r3, 0x4] - ldr r0, _08030A34 @ =0x80000800 - str r0, [r3, 0x8] - ldr r0, [r3, 0x8] - movs r0, 0x80 - lsls r0, 5 - adds r2, r0 - adds r5, r0 - ldr r1, _08030A38 @ =0xfffff000 - adds r4, r1 - cmp r4, r0 - bhi _080309F8 - str r2, [r3] - str r5, [r3, 0x4] - lsrs r0, r4, 1 - movs r1, 0x80 - lsls r1, 24 - orrs r0, r1 - str r0, [r3, 0x8] - ldr r0, [r3, 0x8] -_08030A24: - bl PlayerBufferExecCompleted - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08030A30: .4byte 0x040000d4 -_08030A34: .4byte 0x80000800 -_08030A38: .4byte 0xfffff000 - thumb_func_end PlayerHandleDMATransfer - thumb_func_start sub_8030A3C sub_8030A3C: @ 8030A3C push {lr} diff --git a/src/battle_6.c b/src/battle_6.c index df2419f70..e835f79e9 100644 --- a/src/battle_6.c +++ b/src/battle_6.c @@ -1,7 +1,11 @@ #include "global.h" #include "battle.h" +#include "battle_interface.h" #include "battle_message.h" #include "menu_cursor.h" +#include "palette.h" +#include "pokemon.h" +#include "task.h" #include "text.h" extern u16 gUnknown_030042A4; @@ -14,16 +18,26 @@ extern void (*gBattleBankFunc[])(void); extern u8 gActiveBank; extern u8 gActionSelectionCursor[]; extern u8 gDisplayedStringBattle[]; +extern u8 gMoveSelectionCursor[]; +extern u8 gBattleBufferA[][0x200]; +extern u8 gBankInMenu; +extern u16 gBattlePartyID[]; +extern u8 gHealthboxIDs[]; -extern u16 gUnknown_030042C0; -extern u16 gUnknown_030041B4; -extern u16 gUnknown_03004288; -extern u16 gUnknown_03004280; +extern u8 gUnknown_02038470[]; extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B4; extern u16 gUnknown_030041B8; +extern u16 gUnknown_03004280; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042C0; +extern u8 gUnknown_03004344; +extern u8 gUnknown_0300434C[]; extern const u8 gUnknown_08400CA8[]; extern const u8 gUnknown_08400CF3[]; +extern const u8 gUnknown_08400D38[]; #if ENGLISH #define SUB_803037C_TILE_DATA_OFFSET 440 @@ -31,7 +45,26 @@ extern const u8 gUnknown_08400CF3[]; #define SUB_803037C_TILE_DATA_OFFSET 444 #endif -void sub_803037C(void) { +extern void sub_802C68C(void); +extern void sub_802E1B0(void); +extern void sub_802E3B4(); +extern void sub_802E220(); +extern void sub_802E2D4(); +extern void sub_802E004(void); +extern void sub_802DF30(void); +extern void sub_80325B8(void); +extern void PlayerBufferExecCompleted(void); +extern void bx_t1_healthbar_update(void); +extern void nullsub_91(void); +extern void sub_802D924(u8); +extern void sub_802E434(void); +extern bool8 mplay_80342A4(u8); +extern void move_anim_start_t2_for_situation(); + +void sub_80304A8(void); + +void sub_803037C(void) +{ int r4; gUnknown_030042A4 = 0; @@ -46,9 +79,7 @@ void sub_803037C(void) { sub_814A5C0(0, 0xFFFF, 12, 11679, 0); for (r4 = 0; r4 < 4; r4++) - { nullsub_8(r4); - } sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); @@ -56,3 +87,172 @@ void sub_803037C(void) { InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35); sub_8002F44(&gUnknown_03004210); } + +void nullsub_42() +{ +} + +void sub_8030468(void) +{ + sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); + sub_80304A8(); + gBattleBankFunc[gActiveBank] = sub_802C68C; +} + +void sub_80304A8(void) +{ + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 320; + sub_802E1B0(); + gUnknown_03004344 = 0xFF; + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + if (gBattleBufferA[gActiveBank][2] != 1) + { + InitWindow(&gUnknown_03004210, gUnknown_08400D38, 656, 23, 55); + sub_8002F44(&gUnknown_03004210); + } + sub_802E220(); + sub_802E2D4(); +} + +void PlayerHandleOpenBag(void) +{ + s32 i; + + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gBattleBankFunc[gActiveBank] = sub_802E004; + gBankInMenu = gActiveBank; + for (i = 0; i < 3; i++) + gUnknown_02038470[i] = gBattleBufferA[gActiveBank][1 + i]; +} + +void sub_8030594(void) +{ + s32 i; + + gUnknown_0300434C[gActiveBank] = CreateTask(TaskDummy, 0xFF); + gTasks[gUnknown_0300434C[gActiveBank]].data[0] = gBattleBufferA[gActiveBank][1] & 0xF; + ewram[0x16054] = gBattleBufferA[gActiveBank][1] >> 4; + ewram[0x1609D] = gBattleBufferA[gActiveBank][2]; + ewram[0x160C0] = gBattleBufferA[gActiveBank][3]; + for (i = 0; i < 3; i++) + gUnknown_02038470[i] = gBattleBufferA[gActiveBank][4 + i]; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gBattleBankFunc[gActiveBank] = sub_802DF30; + gBankInMenu = gActiveBank; +} + +void sub_8030674(void) +{ + sub_80325B8(); + BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandleHealthBarUpdate(void) +{ + s16 r7; + + load_gfxc_health_bar(0); + r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + if (r7 != 0x7FFF) + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); + u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP); + + sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, curHP, r7); + } + else + { + u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); + + sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7); + sub_80440EC(gHealthboxIDs[gActiveBank], 0, 0); + } + gBattleBankFunc[gActiveBank] = bx_t1_healthbar_update; +} + +void PlayerHandleExpBarUpdate(void) +{ + u8 r7 = gBattleBufferA[gActiveBank][1]; + + if (GetMonData(&gPlayerParty[r7], MON_DATA_LEVEL) >= 100) + { + PlayerBufferExecCompleted(); + } + else + { + u16 r4; + u8 taskId; + + load_gfxc_health_bar(1); + GetMonData(&gPlayerParty[r7], MON_DATA_SPECIES); // unused return value + r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + taskId = CreateTask(sub_802D924, 10); + gTasks[taskId].data[0] = r7; + gTasks[taskId].data[1] = r4; + gTasks[taskId].data[2] = gActiveBank; + gBattleBankFunc[gActiveBank] = nullsub_91; + } +} + +void PlayerHandleStatusIconUpdate(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 9); + ewram17810[gActiveBank].unk0_4 = 0; + gBattleBankFunc[gActiveBank] = sub_802E434; + } +} + +void PlayerHandleStatusAnimation(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + move_anim_start_t2_for_situation( + gBattleBufferA[gActiveBank][1], + gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24)); + gBattleBankFunc[gActiveBank] = sub_802E434; + } +} + +void PlayerHandleStatusXor(void) +{ + u8 val = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBank][1]; + + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS, &val); + PlayerBufferExecCompleted(); +} + +void sub_803097C(void) +{ + PlayerBufferExecCompleted(); +} + +void PlayerHandleDMATransfer(void) +{ + u32 val1 = gBattleBufferA[gActiveBank][1] + | (gBattleBufferA[gActiveBank][2] << 8) + | (gBattleBufferA[gActiveBank][3] << 16) + | (gBattleBufferA[gActiveBank][4] << 24); + u16 val2 = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8); + + const u8 *src = &gBattleBufferA[gActiveBank][7]; + u8 *dst = (u8 *)val1; + u32 size = val2; + + while (1) + { + if (size <= 0x1000) + { + DmaCopy16(3, src, dst, size); + break; + } + DmaCopy16(3, src, dst, 0x1000); + src += 0x1000; + dst += 0x1000; + size -= 0x1000; + } + PlayerBufferExecCompleted(); +} |