summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorU-UNO-DOMAIN\chall3 <chall3@W046813.uno.edu>2017-06-20 16:47:46 -0500
committerU-UNO-DOMAIN\chall3 <chall3@W046813.uno.edu>2017-06-20 16:47:46 -0500
commit4a71715100ca2718b5e5d68cf818d011114e06f0 (patch)
tree5ebc2236620ec5e74d420a129e963ce406b01f1d
parent102f5b1e15e7295e30a3cebfbbad3c8af4cc1d37 (diff)
decompile nullsub_42 - PlayerHandleDMATransfer
-rw-r--r--asm/battle_6.s706
-rw-r--r--src/battle_6.c214
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();
+}