Files
PokemonEmeraldSafariFrontier/asm/battle_controller_player.s
2017-10-22 01:04:02 +02:00

1823 lines
29 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_805C114
sub_805C114: @ 805C114
push {lr}
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _0805C13E
ldr r0, =gBattle_BG0_X
strh r1, [r0]
ldr r1, =gBattle_BG0_Y
movs r2, 0xA0
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, =HandleInputChooseMove
str r1, [r0]
_0805C13E:
pop {r0}
bx r0
.pool
thumb_func_end sub_805C114
thumb_func_start sub_805C158
sub_805C158: @ 805C158
push {lr}
ldr r0, =gActiveBank
ldrb r1, [r0]
ldr r0, =gBattleStruct
ldr r0, [r0]
adds r1, r0
movs r0, 0xA6
lsls r0, 2
adds r1, r0
ldrb r0, [r1]
subs r0, 0x1
strb r0, [r1]
lsls r0, 24
cmp r0, 0
bne _0805C194
ldr r1, =gBattlePalaceMoveSelectionRngValue
ldr r0, =gRngValue
ldr r0, [r0]
str r0, [r1]
bl sub_805D19C
adds r2, r0, 0
lsls r2, 16
lsrs r2, 16
movs r0, 0x1
movs r1, 0xA
bl EmitChoiceReturnValue
bl PlayerBufferExecCompleted
_0805C194:
pop {r0}
bx r0
.pool
thumb_func_end sub_805C158
thumb_func_start PlayerHandleChooseMove
PlayerHandleChooseMove: @ 805C1A8
push {lr}
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x80
lsls r1, 10
ands r0, r1
cmp r0, 0
beq _0805C1EC
ldr r2, =gActiveBank
ldrb r0, [r2]
ldr r1, =gBattleStruct
ldr r1, [r1]
adds r0, r1
movs r1, 0xA6
lsls r1, 2
adds r0, r1
movs r1, 0x8
strb r1, [r0]
ldr r1, =gBattleBankFunc
ldrb r0, [r2]
lsls r0, 2
adds r0, r1
ldr r1, =sub_805C158
b _0805C1FC
.pool
_0805C1EC:
bl sub_805C210
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, =sub_805C114
_0805C1FC:
str r1, [r0]
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleChooseMove
thumb_func_start sub_805C210
sub_805C210: @ 805C210
push {lr}
bl MoveSelectionDisplayMoveNames
ldr r1, =gMultiUsePlayerCursor
movs r0, 0xFF
strb r0, [r1]
ldr r1, =gMoveSelectionCursor
ldr r0, =gActiveBank
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
movs r1, 0
bl MoveSelectionCreateCursorAt
bl MoveSelectionDisplayPpString
bl MoveSelectionDisplayPpNumber
bl MoveSelectionDisplayMoveType
pop {r0}
bx r0
.pool
thumb_func_end sub_805C210
thumb_func_start PlayerHandleOpenBag
PlayerHandleOpenBag: @ 805C248
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, =gBattleBankFunc
ldr r2, =gActiveBank
ldrb r0, [r2]
lsls r0, 2
adds r0, r1
ldr r1, =sub_80598A4
str r1, [r0]
ldr r1, =gBankInMenu
ldrb r0, [r2]
strb r0, [r1]
movs r3, 0
ldr r5, =gUnknown_0203CF00
ldr r4, =gBattleBufferA
_0805C276:
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 _0805C276
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleOpenBag
thumb_func_start PlayerHandleChoosePokemon
PlayerHandleChoosePokemon: @ 805C2AC
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
movs r3, 0
ldr r0, =gUnknown_0203CF00
mov r12, r0
ldr r1, =gBattleBufferA
mov r8, r1
ldr r2, =gActiveBank
ldr r7, =gBattleTypeFlags
mov r6, r12
mov r5, r8
adds r4, r2, 0
_0805C2C8:
adds r0, r3, r6
ldrb r1, [r4]
lsls r1, 9
adds r1, 0x4
adds r1, r3, r1
adds r1, r5
ldrb r1, [r1]
strb r1, [r0]
adds r3, 0x1
cmp r3, 0x2
ble _0805C2C8
ldr r0, [r7]
movs r1, 0x80
lsls r1, 11
ands r0, r1
cmp r0, 0
beq _0805C330
ldrb r3, [r2]
lsls r0, r3, 9
mov r1, r8
adds r1, 0x1
adds r0, r1
ldrb r1, [r0]
movs r0, 0xF
ands r0, r1
cmp r0, 0x2
beq _0805C330
ldr r1, =gBattlePartyID
lsls r0, r3, 1
adds r0, r1
ldrb r1, [r0]
adds r1, 0x1
lsls r1, 24
lsrs r1, 24
movs r0, 0x1
mov r2, r12
bl EmitCmd34
bl PlayerBufferExecCompleted
b _0805C3BC
.pool
_0805C330:
ldr r0, =TaskDummy
movs r1, 0xFF
bl CreateTask
ldr r3, =gUnknown_03005D7C
ldr r4, =gActiveBank
ldrb r1, [r4]
adds r1, r3
movs r2, 0
mov r8, r2
strb r0, [r1]
ldr r5, =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, =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, =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 r1, [r3]
adds r1, 0xB0
ldrb r0, [r4]
lsls r0, 9
adds r5, 0x3
adds r0, r5
ldrb r0, [r0]
strb r0, [r1]
movs r0, 0x1
negs r0, r0
mov r1, r8
str r1, [sp]
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, =sub_80597CC
str r1, [r0]
ldr r1, =gBankInMenu
ldrb r0, [r4]
strb r0, [r1]
_0805C3BC:
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleChoosePokemon
thumb_func_start PlayerHandleCmd23
PlayerHandleCmd23: @ 805C3EC
push {lr}
sub sp, 0x4
bl BattleMusicStop
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 PlayerHandleCmd23
thumb_func_start PlayerHandleHealthBarUpdate
PlayerHandleHealthBarUpdate: @ 805C410
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
movs r0, 0
bl LoadBattleBarGfx
ldr r3, =gBattleBufferA
ldr r0, =gActiveBank
mov r9, r0
ldrb r1, [r0]
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 r7, r2, 16
cmp r7, 0
ble _0805C44A
ldr r1, =gUnknown_0203CD70
ldr r0, [r1]
adds r0, r7
str r0, [r1]
_0805C44A:
ldr r0, =0x00007fff
cmp r7, r0
beq _0805C4B4
ldr r6, =gBattlePartyID
mov r1, r9
ldrb r0, [r1]
lsls r0, 1
adds r0, r6
ldrh r0, [r0]
movs r5, 0x64
muls r0, r5
ldr r4, =gPlayerParty
adds r0, r4
movs r1, 0x3A
bl GetMonData
mov r8, r0
mov r2, r9
ldrb r0, [r2]
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, =gHealthBoxesIds
adds r1, r0, r1
ldrb r1, [r1]
str r7, [sp]
mov r2, r8
bl SetBattleBarStruct
b _0805C4F2
.pool
_0805C4B4:
ldr r1, =gBattlePartyID
mov r2, r9
ldrb r0, [r2]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gPlayerParty
adds r0, r1
movs r1, 0x3A
bl GetMonData
adds r2, r0, 0
mov r1, r9
ldrb r0, [r1]
ldr r4, =gHealthBoxesIds
adds r1, r0, r4
ldrb r1, [r1]
str r7, [sp]
movs r3, 0
bl SetBattleBarStruct
mov r2, r9
ldrb r0, [r2]
adds r0, r4
ldrb r0, [r0]
movs r1, 0
movs r2, 0
bl UpdateHpTextInHealthbox
_0805C4F2:
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, =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
.pool
thumb_func_end PlayerHandleHealthBarUpdate
thumb_func_start PlayerHandleExpUpdate
PlayerHandleExpUpdate: @ 805C528
push {r4-r7,lr}
ldr r5, =gBattleBufferA
ldr r6, =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, =gPlayerParty
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0x38
bl GetMonData
cmp r0, 0x63
bls _0805C560
bl PlayerBufferExecCompleted
b _0805C5AC
.pool
_0805C560:
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, =sub_80591B8
movs r1, 0xA
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, =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, =gBattleBankFunc
ldrb r0, [r6]
lsls r0, 2
adds r0, r1
ldr r1, =nullsub_21
str r1, [r0]
_0805C5AC:
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleExpUpdate
thumb_func_start PlayerHandleStatusIconUpdate
PlayerHandleStatusIconUpdate: @ 805C5C4
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
bl mplay_80342A4
lsls r0, 24
cmp r0, 0
bne _0805C618
ldr r0, =gHealthBoxesIds
ldrb r1, [r4]
adds r0, r1, r0
ldrb r0, [r0]
ldr r2, =gBattlePartyID
lsls r1, 1
adds r1, r2
ldrh r2, [r1]
movs r1, 0x64
muls r1, r2
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0x9
bl UpdateHealthboxAttribute
ldrb r2, [r4]
ldr r0, =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, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, =sub_8059D60
str r1, [r0]
_0805C618:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleStatusIconUpdate
thumb_func_start PlayerHandleStatusAnimation
PlayerHandleStatusAnimation: @ 805C63C
push {r4,r5,lr}
ldr r5, =gActiveBank
ldrb r0, [r5]
bl mplay_80342A4
lsls r0, 24
cmp r0, 0
bne _0805C68C
ldr r4, =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, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, =sub_8059D60
str r1, [r0]
_0805C68C:
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleStatusAnimation
thumb_func_start PlayerHandleStatusXor
PlayerHandleStatusXor: @ 805C6A4
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0x4
ldr r0, =gBattlePartyID
mov r8, r0
ldr r4, =gActiveBank
ldrb r0, [r4]
lsls r0, 1
add r0, r8
ldrh r0, [r0]
movs r6, 0x64
muls r0, r6
ldr r5, =gPlayerParty
adds r0, r5
movs r1, 0x37
bl GetMonData
ldr r2, =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
.pool
thumb_func_end PlayerHandleStatusXor
thumb_func_start PlayerHandleDataTransfer
PlayerHandleDataTransfer: @ 805C710
push {lr}
bl PlayerBufferExecCompleted
pop {r0}
bx r0
thumb_func_end PlayerHandleDataTransfer
thumb_func_start PlayerHandleDMA3Transfer
PlayerHandleDMA3Transfer: @ 805C71C
push {r4,r5,lr}
ldr r3, =gBattleBufferA
ldr r0, =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 _0805C78C
ldr r0, =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 _0805C7B8
.pool
_0805C78C:
ldr r3, =0x040000d4
str r2, [r3]
str r5, [r3, 0x4]
ldr r0, =0x80000800
str r0, [r3, 0x8]
ldr r0, [r3, 0x8]
movs r0, 0x80
lsls r0, 5
adds r2, r0
adds r5, r0
ldr r1, =0xfffff000
adds r4, r1
cmp r4, r0
bhi _0805C78C
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]
_0805C7B8:
bl PlayerBufferExecCompleted
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleDMA3Transfer
thumb_func_start PlayerHandlePlayBGM
PlayerHandlePlayBGM: @ 805C7D0
push {lr}
ldr r2, =gBattleBufferA
ldr r0, =gActiveBank
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 PlayBGM
bl PlayerBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandlePlayBGM
thumb_func_start PlayerHandleCmd32
PlayerHandleCmd32: @ 805C800
push {lr}
bl PlayerBufferExecCompleted
pop {r0}
bx r0
thumb_func_end PlayerHandleCmd32
thumb_func_start PlayerHandleCmd33
PlayerHandleCmd33: @ 805C80C
push {lr}
movs r0, 0x1
movs r1, 0
movs r2, 0
bl EmitChoiceReturnValue
bl PlayerBufferExecCompleted
pop {r0}
bx r0
thumb_func_end PlayerHandleCmd33
thumb_func_start PlayerHandleCmd34
PlayerHandleCmd34: @ 805C820
push {lr}
movs r0, 0x1
movs r1, 0
movs r2, 0
bl EmitCmd34
bl PlayerBufferExecCompleted
pop {r0}
bx r0
thumb_func_end PlayerHandleCmd34
thumb_func_start PlayerHandleCmd35
PlayerHandleCmd35: @ 805C834
push {lr}
movs r0, 0x1
movs r1, 0
bl EmitCmd35
bl PlayerBufferExecCompleted
pop {r0}
bx r0
thumb_func_end PlayerHandleCmd35
thumb_func_start PlayerHandleCmd36
PlayerHandleCmd36: @ 805C848
push {lr}
movs r0, 0x1
movs r1, 0
bl EmitCmd36
bl PlayerBufferExecCompleted
pop {r0}
bx r0
thumb_func_end PlayerHandleCmd36
thumb_func_start PlayerHandleCmd37
PlayerHandleCmd37: @ 805C85C
push {lr}
ldr r2, =gUnknown_02022D0C
ldrb r1, [r2]
movs r0, 0x80
negs r0, r0
ands r0, r1
strb r0, [r2]
bl PlayerBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleCmd37
thumb_func_start PlayerHandleCmd38
PlayerHandleCmd38: @ 805C878
push {lr}
ldr r3, =gUnknown_02022D0C
ldr r1, =gBattleBufferA
ldr r0, =gActiveBank
ldrb r0, [r0]
lsls r0, 9
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
movs r1, 0x7F
ands r1, r0
ldrb r2, [r3]
movs r0, 0x80
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
bl PlayerBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleCmd38
thumb_func_start PlayerHandleCmd39
PlayerHandleCmd39: @ 805C8B0
push {lr}
ldr r2, =gUnknown_02022D0C
ldrb r1, [r2]
movs r0, 0x7F
ands r0, r1
strb r0, [r2]
bl PlayerBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleCmd39
thumb_func_start PlayerHandleCmd40
PlayerHandleCmd40: @ 805C8C8
push {lr}
ldr r3, =gUnknown_02022D0C
ldr r1, [r3]
lsls r1, 24
lsrs r1, 31
movs r0, 0x1
eors r1, r0
lsls r1, 7
ldrb r2, [r3]
movs r0, 0x7F
ands r0, r2
orrs r0, r1
strb r0, [r3]
bl PlayerBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleCmd40
thumb_func_start PlayerHandleHitAnimation
PlayerHandleHitAnimation: @ 805C8F0
push {r4,lr}
ldr r3, =gSprites
ldr r2, =gBankSpriteIds
ldr r4, =gActiveBank
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 _0805C924
bl PlayerBufferExecCompleted
b _0805C94E
.pool
_0805C924:
ldr r1, =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 sub_80769F4
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, =DoHitAnimBlinkEffect
str r1, [r0]
_0805C94E:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleHitAnimation
thumb_func_start PlayerHandleCmd42
PlayerHandleCmd42: @ 805C960
push {lr}
bl PlayerBufferExecCompleted
pop {r0}
bx r0
thumb_func_end PlayerHandleCmd42
thumb_func_start PlayerHandleEffectivenessSound
PlayerHandleEffectivenessSound: @ 805C96C
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
movs r3, 0x3F
cmp r0, 0
bne _0805C980
movs r3, 0xC0
_0805C980:
ldr r2, =gBattleBufferA
ldrb r1, [r4]
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
lsls r1, r3, 24
asrs r1, 24
bl PlaySE12WithPanning
bl PlayerBufferExecCompleted
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleEffectivenessSound
thumb_func_start PlayerHandlePlayFanfareOrBGM
PlayerHandlePlayFanfareOrBGM: @ 805C9B0
push {r4,r5,lr}
ldr r4, =gBattleBufferA
ldr r5, =gActiveBank
ldrb r0, [r5]
lsls r3, r0, 9
adds r0, r4, 0x3
adds r0, r3, r0
ldrb r0, [r0]
cmp r0, 0
beq _0805C9EC
bl BattleMusicStop
ldrb r1, [r5]
lsls r1, 9
adds r0, r4, 0x1
adds r0, r1, r0
ldrb r0, [r0]
adds r2, r4, 0x2
adds r1, r2
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
bl PlayBGM
b _0805CA00
.pool
_0805C9EC:
adds r0, r4, 0x1
adds r0, r3, r0
ldrb r0, [r0]
adds r1, r4, 0x2
adds r1, r3, r1
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
bl PlayFanfare
_0805CA00:
bl PlayerBufferExecCompleted
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end PlayerHandlePlayFanfareOrBGM
thumb_func_start PlayerHandleFaintingCry
PlayerHandleFaintingCry: @ 805CA0C
push {lr}
ldr r1, =gBattlePartyID
ldr r0, =gActiveBank
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gPlayerParty
adds r0, r1
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r0, 16
movs r1, 0x19
negs r1, r1
movs r2, 0x5
bl PlayCry3
bl PlayerBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleFaintingCry
thumb_func_start PlayerHandleIntroSlide
PlayerHandleIntroSlide: @ 805CA4C
push {lr}
ldr r1, =gBattleBufferA
ldr r0, =gActiveBank
ldrb r0, [r0]
lsls r0, 9
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
bl battle_intro_launch
ldr r2, =gUnknown_020243FC
ldrh r0, [r2]
movs r1, 0x1
orrs r0, r1
strh r0, [r2]
bl PlayerBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleIntroSlide
thumb_func_start PlayerHandleIntroTrainerBallThrow
PlayerHandleIntroTrainerBallThrow: @ 805CA80
push {r4-r7,lr}
ldr r6, =gBankSpriteIds
ldr r7, =gActiveBank
ldrb r0, [r7]
adds r0, r6
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r5, =gSprites
adds r0, r5
bl oamt_add_pos2_onto_pos1
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, =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, =sub_80A6EEC
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, =sub_805CC00
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, =0x0000d6f8
bl AllocSpritePalette
adds r4, r0, 0
lsls r4, 24
ldr r1, =gTrainerBackPicPaletteTable
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
ldrb r0, [r0, 0x8]
lsls r0, 3
adds r0, r1
ldr r0, [r0]
lsrs r4, 20
movs r2, 0x80
lsls r2, 1
adds r1, r4, r2
movs r2, 0x20
bl LoadCompressedPalette
ldrb r0, [r7]
adds r0, r6
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r5
ldrb r2, [r1, 0x5]
movs r0, 0xF
ands r0, r2
orrs r0, r4
strb r0, [r1, 0x5]
ldr r0, =task05_08033660
movs r1, 0x5
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r4, =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r4
ldrb r0, [r7]
strh r0, [r1, 0x8]
ldr r3, =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 _0805CBA2
ldr r0, =gUnknown_020244B4
adds r0, r2, r0
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r4
ldr r1, =sub_8073C30
str r1, [r0]
_0805CBA2:
ldr r0, [r3]
ldr r2, [r0, 0x8]
ldrb r0, [r2, 0x9]
movs r1, 0x1
orrs r0, r1
strb r0, [r2, 0x9]
ldr r1, =gBattleBankFunc
ldrb r0, [r7]
lsls r0, 2
adds r0, r1
ldr r1, =nullsub_21
str r1, [r0]
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleIntroTrainerBallThrow
thumb_func_start sub_805CC00
sub_805CC00: @ 805CC00
push {r4,r5,lr}
adds r5, r0, 0
ldrh r4, [r5, 0x38]
lsls r4, 24
lsrs r4, 24
bl FreeSpriteOamMatrix
ldrb r0, [r5, 0x5]
lsrs r0, 4
bl GetSpritePaletteTagByPaletteNum
lsls r0, 16
lsrs r0, 16
bl FreeSpritePaletteByTag
adds r0, r5, 0
bl DestroySprite
ldr r1, =gBattlePartyID
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, =gPlayerParty
adds r0, r1
adds r1, r4, 0
bl BattleLoadPlayerMonSpriteGfx
ldr r0, =gBankSpriteIds
adds r4, r0
ldrb r1, [r4]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
ldr r1, =gSprites
adds r0, r1
movs r1, 0
bl StartSpriteAnim
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end sub_805CC00
thumb_func_start task05_08033660
task05_08033660: @ 805CC68
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldr r1, =gTasks
lsls r0, 2
add r0, r8
lsls r0, 3
adds r1, r0, r1
ldrh r2, [r1, 0xA]
movs r3, 0xA
ldrsh r0, [r1, r3]
cmp r0, 0x1E
bgt _0805CC94
adds r0, r2, 0x1
strh r0, [r1, 0xA]
b _0805CD50
.pool
_0805CC94:
ldr r7, =gActiveBank
ldrb r0, [r7]
mov r9, r0
ldrh r0, [r1, 0x8]
strb r0, [r7]
bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805CCB4
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _0805CCE4
_0805CCB4:
ldr r0, =gBattleBufferA
ldrb r1, [r7]
lsls r2, r1, 9
adds r0, 0x1
adds r2, r0
ldr r0, =gBattlePartyID
lsls r1, 1
adds r1, r0
ldrh r0, [r1]
strb r0, [r2]
ldrb r0, [r7]
movs r1, 0
bl sub_805B258
b _0805CD38
.pool
_0805CCE4:
ldr r4, =gBattleBufferA
ldrb r0, [r7]
lsls r1, r0, 9
adds r4, 0x1
adds r1, r4
ldr r5, =gBattlePartyID
lsls r0, 1
adds r0, r5
ldrh r0, [r0]
strb r0, [r1]
ldrb r0, [r7]
movs r1, 0
bl sub_805B258
ldrb r0, [r7]
movs r6, 0x2
eors r0, r6
strb r0, [r7]
ldrb r0, [r7]
lsls r1, r0, 9
adds r1, r4
lsls r0, 1
adds r0, r5
ldrh r0, [r0]
strb r0, [r1]
ldrb r1, [r7]
lsls r0, r1, 1
adds r0, r5
ldrh r2, [r0]
movs r0, 0x64
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r7]
movs r1, 0
bl sub_805B258
ldrb r0, [r7]
eors r0, r6
strb r0, [r7]
_0805CD38:
ldr r1, =gBattleBankFunc
ldr r2, =gActiveBank
ldrb r0, [r2]
lsls r0, 2
adds r0, r1
ldr r1, =sub_8058B40
str r1, [r0]
mov r3, r9
strb r3, [r2]
mov r0, r8
bl DestroyTask
_0805CD50:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.pool
thumb_func_end task05_08033660
thumb_func_start PlayerHandleDrawPartyStatusSummary
PlayerHandleDrawPartyStatusSummary: @ 805CD74
push {r4-r6,lr}
ldr r1, =gBattleBufferA
ldr r0, =gActiveBank
ldrb r2, [r0]
lsls r0, r2, 9
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _0805CDA4
adds r0, r2, 0
bl GetBankSide
lsls r0, 24
cmp r0, 0
bne _0805CDA4
bl PlayerBufferExecCompleted
b _0805CE18
.pool
_0805CDA4:
ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r5, =gActiveBank
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 r3, r0, 9
ldr r4, =gBattleBufferA + 4
adds r1, r3, r4
subs r2, r4, 0x3
adds r2, r3, r2
ldrb r2, [r2]
subs r4, 0x2
adds r3, r4
ldrb r3, [r3]
bl CreatePartyStatusSummarySprites
ldr r2, =gUnknown_020244B4
ldrb r1, [r5]
adds r1, r2
movs r3, 0
strb r0, [r1]
ldr r0, [r6]
ldrb r1, [r5]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
strb r3, [r0, 0x5]
ldrb r2, [r5]
lsls r0, r2, 9
adds r0, r4
ldrb r0, [r0]
cmp r0, 0
beq _0805CE0C
ldr r0, [r6]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
adds r0, r2
lsls r0, 2
adds r0, r1
movs r1, 0x5D
strb r1, [r0, 0x5]
_0805CE0C:
ldr r0, =gBattleBankFunc
ldrb r1, [r5]
lsls r1, 2
adds r1, r0
ldr r0, =sub_805CE38
str r0, [r1]
_0805CE18:
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleDrawPartyStatusSummary
thumb_func_start sub_805CE38
sub_805CE38: @ 805CE38
push {r4,lr}
ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0, 0x5]
adds r2, r1, 0x1
strb r2, [r0, 0x5]
lsls r1, 24
lsrs r1, 24
cmp r1, 0x5C
bls _0805CE70
ldr r0, [r4]
ldrb r1, [r3]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
movs r1, 0
strb r1, [r0, 0x5]
bl PlayerBufferExecCompleted
_0805CE70:
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end sub_805CE38
thumb_func_start PlayerHandleCmd49
PlayerHandleCmd49: @ 805CE80
push {lr}
ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, =gActiveBank
ldrb r3, [r0]
ldr r1, [r1, 0x4]
lsls r0, r3, 1
adds r0, r3
lsls r0, 2
adds r0, r1
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0805CEB2
ldr r2, =gTasks
ldr r0, =gUnknown_020244B4
adds r0, r3, r0
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldr r1, =sub_8073C30
str r1, [r0]
_0805CEB2:
bl PlayerBufferExecCompleted
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleCmd49
thumb_func_start PlayerHandleCmd50
PlayerHandleCmd50: @ 805CED0
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
movs r1, 0x1
bl dp11b_obj_free
ldrb r0, [r4]
movs r1, 0
bl dp11b_obj_free
bl PlayerBufferExecCompleted
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleCmd50
thumb_func_start PlayerHandleSpriteInvisibility
PlayerHandleSpriteInvisibility: @ 805CEF4
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
bl AnimBankSpriteExists
lsls r0, 24
cmp r0, 0
beq _0805CF3A
ldr r3, =gSprites
ldr r0, =gBankSpriteIds
ldrb r1, [r4]
adds r0, r1, r0
ldrb r0, [r0]
lsls r2, r0, 4
adds r2, r0
lsls r2, 2
adds r2, r3
ldr r0, =gBattleBufferA
lsls r1, 9
adds r0, 0x1
adds r1, r0
adds r2, 0x3E
movs r0, 0x1
ldrb r1, [r1]
ands r1, r0
lsls r1, 2
ldrb r3, [r2]
movs r0, 0x5
negs r0, r0
ands r0, r3
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4]
bl sub_805E408
_0805CF3A:
bl PlayerBufferExecCompleted
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleSpriteInvisibility
thumb_func_start PlayerHandleBattleAnimation
PlayerHandleBattleAnimation: @ 805CF54
push {r4-r6,lr}
sub sp, 0x4
ldr r5, =gActiveBank
ldrb r0, [r5]
bl mplay_80342A4
lsls r0, 24
cmp r0, 0
bne _0805CFB6
ldr r4, =gBattleBufferA
ldrb r2, [r5]
lsls r1, r2, 9
adds r0, r4, 0x1
adds r0, r1, r0
ldrb r6, [r0]
adds r0, r4, 0x2
adds r0, r1, r0
ldrb r3, [r0]
adds r4, 0x3
adds r1, r4
ldrb r0, [r1]
lsls r0, 8
orrs r3, r0
str r3, [sp]
adds r0, r2, 0
adds r1, r2, 0
adds r3, r6, 0
bl move_anim_start_t3
lsls r0, 24
cmp r0, 0
beq _0805CFA4
bl PlayerBufferExecCompleted
b _0805CFB0
.pool
_0805CFA4:
ldr r0, =gBattleBankFunc
ldrb r1, [r5]
lsls r1, 2
adds r1, r0
ldr r0, =sub_8059D90
str r0, [r1]
_0805CFB0:
adds r0, r6, 0
bl sub_817E32C
_0805CFB6:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleBattleAnimation
thumb_func_start PlayerHandleLinkStandbyMsg
PlayerHandleLinkStandbyMsg: @ 805CFC8
push {r4,r5,lr}
ldr r5, =gActiveBank
ldrb r0, [r5]
lsls r0, 9
ldr r4, =gBattleBufferA + 2
adds r0, r4
bl sub_81851A8
ldrb r0, [r5]
lsls r0, 9
subs r4, 0x1
adds r0, r4
ldrb r0, [r0]
cmp r0, 0x1
beq _0805D002
cmp r0, 0x1
bgt _0805CFF8
cmp r0, 0
beq _0805CFFE
b _0805D020
.pool
_0805CFF8:
cmp r0, 0x2
beq _0805D01C
b _0805D020
_0805CFFE:
bl PrintLinkStandbyMsg
_0805D002:
ldr r4, =gActiveBank
ldrb r0, [r4]
movs r1, 0x1
bl dp11b_obj_free
ldrb r0, [r4]
movs r1, 0
bl dp11b_obj_free
b _0805D020
.pool
_0805D01C:
bl PrintLinkStandbyMsg
_0805D020:
bl PlayerBufferExecCompleted
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end PlayerHandleLinkStandbyMsg
thumb_func_start PlayerHandleResetActionMoveSelection
PlayerHandleResetActionMoveSelection: @ 805D02C
push {r4,lr}
ldr r1, =gBattleBufferA
ldr r4, =gActiveBank
ldrb r3, [r4]
lsls r0, r3, 9
adds r1, 0x1
adds r0, r1
ldrb r2, [r0]
cmp r2, 0x1
beq _0805D074
cmp r2, 0x1
bgt _0805D054
cmp r2, 0
beq _0805D05A
b _0805D084
.pool
_0805D054:
cmp r2, 0x2
beq _0805D07C
b _0805D084
_0805D05A:
ldr r0, =gActionSelectionCursor
adds r0, r3, r0
strb r2, [r0]
ldr r1, =gMoveSelectionCursor
ldrb r0, [r4]
adds r0, r1
strb r2, [r0]
b _0805D084
.pool
_0805D074:
ldr r0, =gActionSelectionCursor
b _0805D07E
.pool
_0805D07C:
ldr r0, =gMoveSelectionCursor
_0805D07E:
adds r0, r3, r0
movs r1, 0
strb r1, [r0]
_0805D084:
bl PlayerBufferExecCompleted
pop {r4}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleResetActionMoveSelection
thumb_func_start PlayerHandleCmd55
PlayerHandleCmd55: @ 805D094
push {r4,r5,lr}
ldr r5, =gActiveBank
ldrb r0, [r5]
lsls r0, 9
ldr r4, =gBattleBufferA + 4
adds r0, r4
bl sub_81851A8
ldr r2, =gBattleOutcome
ldrb r0, [r5]
lsls r0, 9
subs r1, r4, 0x3
adds r0, r1
ldrb r0, [r0]
strb r0, [r2]
ldr r0, =gSaveBlock2Ptr
ldr r3, [r0]
ldrb r0, [r5]
lsls r0, 9
subs r4, 0x2
adds r0, r4
ldrb r0, [r0]
ldr r1, =0x00000ca9
adds r3, r1
movs r1, 0x1
ands r1, r0
lsls r1, 3
ldrb r2, [r3]
movs r0, 0x9
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
movs r0, 0x5
bl FadeOutMapMusic
movs r0, 0x3
bl BeginFastPaletteFade
bl PlayerBufferExecCompleted
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, =sub_80587B0
str r1, [r0]
pop {r4,r5}
pop {r0}
bx r0
.pool
thumb_func_end PlayerHandleCmd55
thumb_func_start nullsub_22
nullsub_22: @ 805D114
bx lr
thumb_func_end nullsub_22
.align 2, 0 @ Don't pad with nop.