mirror of
https://github.com/pret/pokeruby.git
synced 2024-12-14 00:08:37 +00:00
12018 lines
214 KiB
ArmAsm
12018 lines
214 KiB
ArmAsm
.include "constants/gba_constants.inc"
|
|
.include "constants/species_constants.inc"
|
|
.include "asm/macros.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start b_movescr_stack_push
|
|
b_movescr_stack_push: @ 801582C
|
|
push {r4,lr}
|
|
ldr r4, _08015848 @ =0x02017110
|
|
adds r3, r4, 0
|
|
adds r3, 0x20
|
|
ldrb r1, [r3]
|
|
adds r2, r1, 0x1
|
|
strb r2, [r3]
|
|
lsls r1, 24
|
|
lsrs r1, 22
|
|
adds r1, r4
|
|
str r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08015848: .4byte 0x02017110
|
|
thumb_func_end b_movescr_stack_push
|
|
|
|
thumb_func_start b_movescr_stack_push_cursor
|
|
b_movescr_stack_push_cursor: @ 801584C
|
|
ldr r3, _08015868 @ =0x02017110
|
|
adds r2, r3, 0
|
|
adds r2, 0x20
|
|
ldrb r0, [r2]
|
|
adds r1, r0, 0x1
|
|
strb r1, [r2]
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
adds r0, r3
|
|
ldr r1, _0801586C @ =gBattlescriptCurrInstr
|
|
ldr r1, [r1]
|
|
str r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_08015868: .4byte 0x02017110
|
|
_0801586C: .4byte gBattlescriptCurrInstr
|
|
thumb_func_end b_movescr_stack_push_cursor
|
|
|
|
thumb_func_start b_movescr_stack_pop_cursor
|
|
b_movescr_stack_pop_cursor: @ 8015870
|
|
ldr r3, _0801588C @ =gBattlescriptCurrInstr
|
|
ldr r2, _08015890 @ =0x02017110
|
|
adds r1, r2, 0
|
|
adds r1, 0x20
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
str r0, [r3]
|
|
bx lr
|
|
.align 2, 0
|
|
_0801588C: .4byte gBattlescriptCurrInstr
|
|
_08015890: .4byte 0x02017110
|
|
thumb_func_end b_movescr_stack_pop_cursor
|
|
|
|
thumb_func_start sub_8015894
|
|
sub_8015894: @ 8015894
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
movs r6, 0
|
|
ldr r2, _080159AC @ =gBattleMons
|
|
ldr r1, _080159B0 @ =gBattleBufferB
|
|
ldr r5, _080159B4 @ =gActiveBank
|
|
ldrb r3, [r5]
|
|
lsls r0, r3, 9
|
|
adds r1, 0x2
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
movs r1, 0x58
|
|
muls r1, r3
|
|
adds r0, r1
|
|
adds r2, 0xC
|
|
adds r0, r2
|
|
ldrh r4, [r0]
|
|
lsls r0, r3, 1
|
|
ldr r2, _080159B8 @ =0x020160e8
|
|
adds r0, r2
|
|
mov r8, r0
|
|
ldr r1, _080159BC @ =gDisableStructs
|
|
lsls r0, r3, 3
|
|
subs r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x4]
|
|
cmp r0, r4
|
|
bne _080158EE
|
|
cmp r4, 0
|
|
beq _080158EE
|
|
adds r0, r2, 0
|
|
subs r0, 0xE5
|
|
strb r3, [r0]
|
|
ldr r0, _080159C0 @ =gCurrentMove
|
|
strh r4, [r0]
|
|
ldr r1, _080159C4 @ =gUnknown_02024C1C
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, _080159C8 @ =gUnknown_081D9144
|
|
str r1, [r0]
|
|
movs r6, 0x1
|
|
_080158EE:
|
|
ldr r1, _080159CC @ =gLastUsedMove
|
|
ldr r5, _080159B4 @ =gActiveBank
|
|
ldrb r2, [r5]
|
|
lsls r0, r2, 1
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
cmp r4, r0
|
|
bne _0801592A
|
|
cmp r4, 0xA5
|
|
beq _0801592A
|
|
ldr r1, _080159AC @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bge _0801592A
|
|
adds r0, r2, 0
|
|
bl CancelMultiTurnMoves
|
|
ldr r1, _080159C4 @ =gUnknown_02024C1C
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, _080159D0 @ =gUnknown_081D937C
|
|
str r1, [r0]
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_0801592A:
|
|
ldr r2, _080159BC @ =gDisableStructs
|
|
ldr r3, _080159B4 @ =gActiveBank
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0, 0x13]
|
|
lsls r0, 28
|
|
cmp r0, 0
|
|
beq _08015966
|
|
ldr r0, _080159D4 @ =gBattleMoves
|
|
lsls r1, r4, 1
|
|
adds r1, r4
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
cmp r0, 0
|
|
bne _08015966
|
|
ldr r0, _080159C0 @ =gCurrentMove
|
|
strh r4, [r0]
|
|
ldr r1, _080159C4 @ =gUnknown_02024C1C
|
|
ldrb r0, [r3]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, _080159D8 @ =gUnknown_081D938B
|
|
str r1, [r0]
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_08015966:
|
|
ldr r5, _080159B4 @ =gActiveBank
|
|
ldrb r0, [r5]
|
|
adds r1, r4, 0
|
|
bl sub_8015D5C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0801598C
|
|
ldr r0, _080159C0 @ =gCurrentMove
|
|
strh r4, [r0]
|
|
ldr r1, _080159C4 @ =gUnknown_02024C1C
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, _080159DC @ =gUnknown_081D9464
|
|
str r1, [r0]
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_0801598C:
|
|
ldr r1, _080159AC @ =gBattleMons
|
|
ldrb r2, [r5]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2E]
|
|
cmp r0, 0xAF
|
|
bne _080159E4
|
|
ldr r1, _080159E0 @ =gEnigmaBerries
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r3, [r0, 0x7]
|
|
b _080159EE
|
|
.align 2, 0
|
|
_080159AC: .4byte gBattleMons
|
|
_080159B0: .4byte gBattleBufferB
|
|
_080159B4: .4byte gActiveBank
|
|
_080159B8: .4byte 0x020160e8
|
|
_080159BC: .4byte gDisableStructs
|
|
_080159C0: .4byte gCurrentMove
|
|
_080159C4: .4byte gUnknown_02024C1C
|
|
_080159C8: .4byte gUnknown_081D9144
|
|
_080159CC: .4byte gLastUsedMove
|
|
_080159D0: .4byte gUnknown_081D937C
|
|
_080159D4: .4byte gBattleMoves
|
|
_080159D8: .4byte gUnknown_081D938B
|
|
_080159DC: .4byte gUnknown_081D9464
|
|
_080159E0: .4byte gEnigmaBerries
|
|
_080159E4:
|
|
ldrh r0, [r1, 0x2E]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
_080159EE:
|
|
ldr r2, _08015A70 @ =gStringBank
|
|
ldr r1, _08015A74 @ =gActiveBank
|
|
ldrb r0, [r1]
|
|
strb r0, [r2]
|
|
ldr r7, _08015A78 @ =gBattleMons
|
|
adds r5, r1, 0
|
|
cmp r3, 0x1D
|
|
bne _08015A36
|
|
mov r0, r8
|
|
ldrh r2, [r0]
|
|
adds r1, r2, 0
|
|
cmp r1, 0
|
|
beq _08015A36
|
|
ldr r0, _08015A7C @ =0x0000ffff
|
|
cmp r1, r0
|
|
beq _08015A36
|
|
cmp r1, r4
|
|
beq _08015A36
|
|
ldr r0, _08015A80 @ =gCurrentMove
|
|
strh r2, [r0]
|
|
ldr r2, _08015A84 @ =gLastUsedItem
|
|
ldrb r1, [r5]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
adds r0, r7
|
|
ldrh r0, [r0, 0x2E]
|
|
strh r0, [r2]
|
|
ldr r1, _08015A88 @ =gUnknown_02024C1C
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, _08015A8C @ =gUnknown_081D9AC2
|
|
str r1, [r0]
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_08015A36:
|
|
ldr r0, _08015A90 @ =gBattleBufferB
|
|
ldrb r2, [r5]
|
|
lsls r1, r2, 9
|
|
adds r0, 0x2
|
|
adds r1, r0
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
ldrb r1, [r1]
|
|
adds r0, r1
|
|
adds r1, r7, 0
|
|
adds r1, 0x24
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08015A64
|
|
ldr r1, _08015A88 @ =gUnknown_02024C1C
|
|
lsls r0, r2, 2
|
|
adds r0, r1
|
|
ldr r1, _08015A94 @ =gUnknown_081D9369
|
|
str r1, [r0]
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_08015A64:
|
|
adds r0, r6, 0
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08015A70: .4byte gStringBank
|
|
_08015A74: .4byte gActiveBank
|
|
_08015A78: .4byte gBattleMons
|
|
_08015A7C: .4byte 0x0000ffff
|
|
_08015A80: .4byte gCurrentMove
|
|
_08015A84: .4byte gLastUsedItem
|
|
_08015A88: .4byte gUnknown_02024C1C
|
|
_08015A8C: .4byte gUnknown_081D9AC2
|
|
_08015A90: .4byte gBattleBufferB
|
|
_08015A94: .4byte gUnknown_081D9369
|
|
thumb_func_end sub_8015894
|
|
|
|
thumb_func_start sub_8015A98
|
|
sub_8015A98: @ 8015A98
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x1C
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
lsls r1, 24
|
|
lsrs r4, r1, 24
|
|
lsls r2, 24
|
|
lsrs r3, r2, 24
|
|
lsls r1, r7, 1
|
|
ldr r0, _08015AD8 @ =0x020160e8
|
|
adds r1, r0
|
|
str r1, [sp, 0x4]
|
|
ldr r1, _08015ADC @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2E]
|
|
cmp r0, 0xAF
|
|
bne _08015AE4
|
|
ldr r2, _08015AE0 @ =gEnigmaBerries
|
|
lsls r1, r7, 3
|
|
subs r0, r1, r7
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0, 0x7]
|
|
str r0, [sp]
|
|
b _08015AF6
|
|
.align 2, 0
|
|
_08015AD8: .4byte 0x020160e8
|
|
_08015ADC: .4byte gBattleMons
|
|
_08015AE0: .4byte gEnigmaBerries
|
|
_08015AE4:
|
|
ldrh r0, [r1, 0x2E]
|
|
str r3, [sp, 0x14]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp]
|
|
lsls r1, r7, 3
|
|
ldr r3, [sp, 0x14]
|
|
_08015AF6:
|
|
ldr r0, _08015C70 @ =gStringBank
|
|
strb r7, [r0]
|
|
movs r0, 0
|
|
mov r9, r0
|
|
lsls r2, r7, 1
|
|
str r2, [sp, 0xC]
|
|
ldr r5, _08015C74 @ =gDisableStructs
|
|
mov r12, r5
|
|
ldr r0, _08015C78 @ =gBattleMons
|
|
movs r2, 0x58
|
|
adds r6, r7, 0
|
|
muls r6, r2
|
|
str r6, [sp, 0x8]
|
|
ldr r2, _08015C7C @ =gUnknown_02024A8C
|
|
adds r5, r6, r2
|
|
movs r6, 0
|
|
str r6, [sp, 0x10]
|
|
mov r10, r0
|
|
subs r0, r1, r7
|
|
lsls r0, 2
|
|
mov r8, r0
|
|
ldr r6, _08015C80 @ =gBitTable
|
|
_08015B22:
|
|
ldrh r0, [r5]
|
|
cmp r0, 0
|
|
bne _08015B38
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08015B38
|
|
ldr r0, [r6]
|
|
orrs r4, r0
|
|
lsls r0, r4, 24
|
|
lsrs r4, r0, 24
|
|
_08015B38:
|
|
ldr r0, [sp, 0x8]
|
|
add r0, r9
|
|
mov r1, r10
|
|
adds r1, 0x24
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08015B58
|
|
movs r0, 0x2
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08015B58
|
|
ldr r0, [r6]
|
|
orrs r4, r0
|
|
lsls r0, r4, 24
|
|
lsrs r4, r0, 24
|
|
_08015B58:
|
|
mov r1, r8
|
|
add r1, r12
|
|
ldrh r0, [r5]
|
|
ldrh r1, [r1, 0x4]
|
|
cmp r0, r1
|
|
bne _08015B74
|
|
movs r0, 0x4
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08015B74
|
|
ldr r0, [r6]
|
|
orrs r4, r0
|
|
lsls r0, r4, 24
|
|
lsrs r4, r0, 24
|
|
_08015B74:
|
|
movs r0, 0x58
|
|
adds r2, r7, 0
|
|
muls r2, r0
|
|
ldr r1, [sp, 0x10]
|
|
adds r0, r1, r2
|
|
ldr r1, _08015C7C @ =gUnknown_02024A8C
|
|
adds r0, r1
|
|
mov r12, r0
|
|
ldr r1, _08015C84 @ =gLastUsedMove
|
|
ldr r0, [sp, 0xC]
|
|
adds r1, r0, r1
|
|
str r1, [sp, 0x18]
|
|
mov r1, r12
|
|
ldrh r1, [r1]
|
|
mov r12, r1
|
|
ldr r0, [sp, 0x18]
|
|
ldrh r0, [r0]
|
|
cmp r12, r0
|
|
bne _08015BB6
|
|
movs r0, 0x8
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08015BB6
|
|
mov r0, r10
|
|
adds r0, 0x50
|
|
adds r0, r2, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bge _08015BB6
|
|
ldr r0, [r6]
|
|
orrs r4, r0
|
|
lsls r0, r4, 24
|
|
lsrs r4, r0, 24
|
|
_08015BB6:
|
|
ldr r0, _08015C74 @ =gDisableStructs
|
|
add r0, r8
|
|
ldrb r0, [r0, 0x13]
|
|
lsls r0, 28
|
|
cmp r0, 0
|
|
beq _08015BE4
|
|
movs r0, 0x10
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08015BE4
|
|
ldr r2, _08015C88 @ =gBattleMoves
|
|
ldrh r1, [r5]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0, 0x1]
|
|
cmp r0, 0
|
|
bne _08015BE4
|
|
ldr r0, [r6]
|
|
orrs r4, r0
|
|
lsls r0, r4, 24
|
|
lsrs r4, r0, 24
|
|
_08015BE4:
|
|
ldrh r1, [r5]
|
|
adds r0, r7, 0
|
|
str r3, [sp, 0x14]
|
|
bl sub_8015D5C
|
|
lsls r0, 24
|
|
ldr r3, [sp, 0x14]
|
|
cmp r0, 0
|
|
beq _08015C06
|
|
movs r0, 0x20
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08015C06
|
|
ldr r0, [r6]
|
|
orrs r4, r0
|
|
lsls r0, r4, 24
|
|
lsrs r4, r0, 24
|
|
_08015C06:
|
|
ldr r1, _08015C74 @ =gDisableStructs
|
|
mov r0, r8
|
|
adds r2, r0, r1
|
|
ldrb r0, [r2, 0xE]
|
|
lsls r0, 28
|
|
mov r12, r1
|
|
cmp r0, 0
|
|
beq _08015C26
|
|
ldrh r0, [r2, 0x6]
|
|
ldrh r1, [r5]
|
|
cmp r0, r1
|
|
beq _08015C26
|
|
ldr r0, [r6]
|
|
orrs r4, r0
|
|
lsls r0, r4, 24
|
|
lsrs r4, r0, 24
|
|
_08015C26:
|
|
ldr r2, [sp]
|
|
cmp r2, 0x1D
|
|
bne _08015C48
|
|
ldr r0, [sp, 0x4]
|
|
ldrh r1, [r0]
|
|
cmp r1, 0
|
|
beq _08015C48
|
|
ldr r0, _08015C8C @ =0x0000ffff
|
|
cmp r1, r0
|
|
beq _08015C48
|
|
ldrh r2, [r5]
|
|
cmp r1, r2
|
|
beq _08015C48
|
|
ldr r0, [r6]
|
|
orrs r4, r0
|
|
lsls r0, r4, 24
|
|
lsrs r4, r0, 24
|
|
_08015C48:
|
|
adds r6, 0x4
|
|
adds r5, 0x2
|
|
ldr r0, [sp, 0x10]
|
|
adds r0, 0x2
|
|
str r0, [sp, 0x10]
|
|
movs r1, 0x1
|
|
add r9, r1
|
|
mov r2, r9
|
|
cmp r2, 0x3
|
|
bgt _08015C5E
|
|
b _08015B22
|
|
_08015C5E:
|
|
adds r0, r4, 0
|
|
add sp, 0x1C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08015C70: .4byte gStringBank
|
|
_08015C74: .4byte gDisableStructs
|
|
_08015C78: .4byte gBattleMons
|
|
_08015C7C: .4byte gUnknown_02024A8C
|
|
_08015C80: .4byte gBitTable
|
|
_08015C84: .4byte gLastUsedMove
|
|
_08015C88: .4byte gBattleMoves
|
|
_08015C8C: .4byte 0x0000ffff
|
|
thumb_func_end sub_8015A98
|
|
|
|
thumb_func_start sub_8015C90
|
|
sub_8015C90: @ 8015C90
|
|
push {r4-r6,lr}
|
|
ldr r5, _08015CFC @ =gActiveBank
|
|
ldrb r0, [r5]
|
|
movs r1, 0
|
|
movs r2, 0xFF
|
|
bl sub_8015A98
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
cmp r6, 0xF
|
|
bne _08015D38
|
|
ldr r0, _08015D00 @ =gProtectStructs
|
|
ldrb r1, [r5]
|
|
lsls r1, 4
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
ldr r1, _08015D04 @ =gUnknown_02024C1C
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, _08015D08 @ =gUnknown_081D9365
|
|
str r1, [r0]
|
|
ldr r0, _08015D0C @ =gBattleTypeFlags
|
|
ldrh r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08015D14
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
adds r4, r0, 0
|
|
bl Random
|
|
movs r1, 0x1
|
|
eors r4, r1
|
|
movs r1, 0x2
|
|
ands r1, r0
|
|
orrs r4, r1
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r4, 0
|
|
bl GetBankByPlayerAI
|
|
ldr r2, _08015D10 @ =gBattleBufferB
|
|
ldrb r1, [r5]
|
|
lsls r1, 9
|
|
adds r2, 0x3
|
|
adds r1, r2
|
|
b _08015D48
|
|
.align 2, 0
|
|
_08015CFC: .4byte gActiveBank
|
|
_08015D00: .4byte gProtectStructs
|
|
_08015D04: .4byte gUnknown_02024C1C
|
|
_08015D08: .4byte gUnknown_081D9365
|
|
_08015D0C: .4byte gBattleTypeFlags
|
|
_08015D10: .4byte gBattleBufferB
|
|
_08015D14:
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
ldr r2, _08015D34 @ =gBattleBufferB
|
|
ldrb r1, [r5]
|
|
lsls r1, 9
|
|
adds r2, 0x3
|
|
adds r1, r2
|
|
b _08015D48
|
|
.align 2, 0
|
|
_08015D34: .4byte gBattleBufferB
|
|
_08015D38:
|
|
ldr r0, _08015D58 @ =gProtectStructs
|
|
ldrb r1, [r5]
|
|
lsls r1, 4
|
|
adds r1, r0
|
|
ldrb r2, [r1]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
_08015D48:
|
|
strb r0, [r1]
|
|
movs r0, 0
|
|
cmp r6, 0xF
|
|
bne _08015D52
|
|
movs r0, 0x1
|
|
_08015D52:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08015D58: .4byte gProtectStructs
|
|
thumb_func_end sub_8015C90
|
|
|
|
thumb_func_start sub_8015D5C
|
|
sub_8015D5C: @ 8015D5C
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, 16
|
|
lsrs r5, r1, 16
|
|
movs r6, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
movs r4, 0
|
|
ldr r0, _08015DF0 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r6, r0
|
|
bge _08015DE0
|
|
ldr r7, _08015DF4 @ =gUnknown_02024A8C
|
|
mov r8, r7
|
|
_08015D86:
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r3, r4, 0x1
|
|
cmp r9, r0
|
|
beq _08015DD6
|
|
ldr r1, _08015DF8 @ =gStatuses3
|
|
lsls r0, r4, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 6
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08015DD6
|
|
movs r2, 0
|
|
movs r0, 0x58
|
|
adds r1, r4, 0
|
|
muls r1, r0
|
|
adds r0, r1, r7
|
|
ldrh r0, [r0]
|
|
cmp r5, r0
|
|
beq _08015DCC
|
|
mov r4, r8
|
|
adds r0, r1, r4
|
|
_08015DBE:
|
|
adds r0, 0x2
|
|
adds r2, 0x1
|
|
cmp r2, 0x3
|
|
bgt _08015DD6
|
|
ldrh r1, [r0]
|
|
cmp r5, r1
|
|
bne _08015DBE
|
|
_08015DCC:
|
|
cmp r2, 0x3
|
|
bgt _08015DD6
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_08015DD6:
|
|
adds r4, r3, 0
|
|
ldr r0, _08015DF0 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08015D86
|
|
_08015DE0:
|
|
adds r0, r6, 0
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08015DF0: .4byte gNoOfAllBanks
|
|
_08015DF4: .4byte gUnknown_02024A8C
|
|
_08015DF8: .4byte gStatuses3
|
|
thumb_func_end sub_8015D5C
|
|
|
|
thumb_func_start UpdateTurnCounters
|
|
UpdateTurnCounters: @ 8015DFC
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
movs r0, 0
|
|
mov r9, r0
|
|
ldr r1, _08015EA0 @ =gBankAttacker
|
|
mov r2, r9
|
|
strb r2, [r1]
|
|
ldr r0, _08015EA4 @ =gNoOfAllBanks
|
|
ldrb r4, [r0]
|
|
adds r6, r1, 0
|
|
mov r10, r0
|
|
ldr r7, _08015EA8 @ =gBankTarget
|
|
ldr r3, _08015EAC @ =0x02000000
|
|
mov r12, r3
|
|
cmp r9, r4
|
|
bcs _08015E50
|
|
ldr r2, _08015EB0 @ =gAbsentBankFlags
|
|
ldrb r1, [r2]
|
|
ldr r5, _08015EB4 @ =gBitTable
|
|
ldr r0, [r5]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _08015E50
|
|
adds r3, r6, 0
|
|
_08015E32:
|
|
ldrb r0, [r3]
|
|
adds r0, 0x1
|
|
strb r0, [r3]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, r4
|
|
bcs _08015E50
|
|
ldrb r0, [r2]
|
|
ldrb r1, [r6]
|
|
lsls r1, 2
|
|
adds r1, r5
|
|
ldr r1, [r1]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08015E32
|
|
_08015E50:
|
|
movs r0, 0
|
|
strb r0, [r7]
|
|
mov r0, r10
|
|
ldrb r4, [r0]
|
|
cmp r4, 0
|
|
beq _08015E8A
|
|
ldr r2, _08015EB0 @ =gAbsentBankFlags
|
|
ldrb r1, [r2]
|
|
ldr r5, _08015EB4 @ =gBitTable
|
|
ldr r0, [r5]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _08015E8A
|
|
adds r3, r7, 0
|
|
_08015E6C:
|
|
ldrb r0, [r3]
|
|
adds r0, 0x1
|
|
strb r0, [r3]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, r4
|
|
bcs _08015E8A
|
|
ldrb r0, [r2]
|
|
ldrb r1, [r7]
|
|
lsls r1, 2
|
|
adds r1, r5
|
|
ldr r1, [r1]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08015E6C
|
|
_08015E8A:
|
|
ldr r0, _08015EB8 @ =0x0001600e
|
|
add r0, r12
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xA
|
|
bls _08015E96
|
|
b _0801652A
|
|
_08015E96:
|
|
lsls r0, 2
|
|
ldr r1, _08015EBC @ =_08015EC0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08015EA0: .4byte gBankAttacker
|
|
_08015EA4: .4byte gNoOfAllBanks
|
|
_08015EA8: .4byte gBankTarget
|
|
_08015EAC: .4byte 0x02000000
|
|
_08015EB0: .4byte gAbsentBankFlags
|
|
_08015EB4: .4byte gBitTable
|
|
_08015EB8: .4byte 0x0001600e
|
|
_08015EBC: .4byte _08015EC0
|
|
.align 2, 0
|
|
_08015EC0:
|
|
.4byte _08015EEC
|
|
.4byte _08015F74
|
|
.4byte _08016034
|
|
.4byte _080160F4
|
|
.4byte _080161C8
|
|
.4byte _08016274
|
|
.4byte _08016324
|
|
.4byte _080163A8
|
|
.4byte _08016420
|
|
.4byte _08016494
|
|
.4byte _08016520
|
|
_08015EEC:
|
|
movs r5, 0
|
|
ldr r1, _08015F0C @ =gNoOfAllBanks
|
|
mov r10, r1
|
|
ldrb r2, [r1]
|
|
cmp r5, r2
|
|
bge _08015F06
|
|
ldr r2, _08015F10 @ =gTurnOrder
|
|
_08015EFA:
|
|
adds r0, r5, r2
|
|
strb r5, [r0]
|
|
adds r5, 0x1
|
|
ldrb r3, [r1]
|
|
cmp r5, r3
|
|
blt _08015EFA
|
|
_08015F06:
|
|
movs r5, 0
|
|
b _08015F54
|
|
.align 2, 0
|
|
_08015F0C: .4byte gNoOfAllBanks
|
|
_08015F10: .4byte gTurnOrder
|
|
_08015F14:
|
|
adds r4, r5, 0x1
|
|
adds r6, r4, 0
|
|
ldrb r1, [r1]
|
|
cmp r6, r1
|
|
bge _08015F52
|
|
ldr r7, _08016004 @ =gTurnOrder
|
|
ldr r0, _08016008 @ =gNoOfAllBanks
|
|
mov r10, r0
|
|
lsls r1, r5, 24
|
|
mov r8, r1
|
|
_08015F28:
|
|
adds r0, r5, r7
|
|
ldrb r0, [r0]
|
|
adds r1, r4, r7
|
|
ldrb r1, [r1]
|
|
movs r2, 0
|
|
bl b_first_side
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08015F48
|
|
lsls r1, r4, 24
|
|
lsrs r1, 24
|
|
mov r2, r8
|
|
lsrs r0, r2, 24
|
|
bl sub_8012FBC
|
|
_08015F48:
|
|
adds r4, 0x1
|
|
ldr r0, _08016008 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08015F28
|
|
_08015F52:
|
|
adds r5, r6, 0
|
|
_08015F54:
|
|
mov r1, r10
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
cmp r5, r0
|
|
blt _08015F14
|
|
ldr r1, _0801600C @ =0x02000000
|
|
ldr r3, _08016010 @ =0x0001600e
|
|
adds r2, r1, r3
|
|
ldrb r0, [r2]
|
|
adds r0, 0x1
|
|
movs r3, 0
|
|
strb r0, [r2]
|
|
ldr r2, _08016014 @ =0x000160fc
|
|
adds r0, r1, r2
|
|
strb r3, [r0]
|
|
mov r12, r1
|
|
_08015F74:
|
|
ldr r1, _08016014 @ =0x000160fc
|
|
add r1, r12
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x1
|
|
bls _08015F80
|
|
b _08016236
|
|
_08015F80:
|
|
ldr r3, _08016018 @ =gActiveBank
|
|
mov r8, r3
|
|
adds r6, r1, 0
|
|
movs r7, 0
|
|
ldr r5, _0801601C @ =gBattleTextBuff1
|
|
_08015F8A:
|
|
ldr r0, _08016020 @ =gBankAttacker
|
|
ldrb r4, [r6]
|
|
strb r4, [r0]
|
|
mov r0, r8
|
|
strb r4, [r0]
|
|
ldr r0, _08016024 @ =gSideAffecting
|
|
lsls r2, r4, 1
|
|
adds r3, r2, r0
|
|
ldrh r1, [r3]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08015FE8
|
|
ldr r0, _08016028 @ =gSideTimer
|
|
adds r1, r2, r4
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
movs r4, 0xFF
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08015FE8
|
|
ldrh r0, [r3]
|
|
ldr r2, _0801602C @ =0x0000fffe
|
|
adds r1, r2, 0
|
|
ands r0, r1
|
|
strh r0, [r3]
|
|
ldr r0, _08016030 @ =gUnknown_081D9030
|
|
bl b_call_bc_move_exec
|
|
movs r0, 0xFD
|
|
strb r0, [r5]
|
|
movs r0, 0x2
|
|
strb r0, [r5, 0x1]
|
|
movs r0, 0x73
|
|
strb r0, [r5, 0x2]
|
|
strb r7, [r5, 0x3]
|
|
ldrb r0, [r5, 0x4]
|
|
orrs r0, r4
|
|
strb r0, [r5, 0x4]
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08015FE8:
|
|
ldrb r0, [r6]
|
|
adds r0, 0x1
|
|
strb r0, [r6]
|
|
ldr r3, _0801600C @ =0x02000000
|
|
mov r12, r3
|
|
mov r1, r9
|
|
cmp r1, 0
|
|
beq _08015FFA
|
|
b _08016532
|
|
_08015FFA:
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bls _08015F8A
|
|
b _08016236
|
|
.align 2, 0
|
|
_08016004: .4byte gTurnOrder
|
|
_08016008: .4byte gNoOfAllBanks
|
|
_0801600C: .4byte 0x02000000
|
|
_08016010: .4byte 0x0001600e
|
|
_08016014: .4byte 0x000160fc
|
|
_08016018: .4byte gActiveBank
|
|
_0801601C: .4byte gBattleTextBuff1
|
|
_08016020: .4byte gBankAttacker
|
|
_08016024: .4byte gSideAffecting
|
|
_08016028: .4byte gSideTimer
|
|
_0801602C: .4byte 0x0000fffe
|
|
_08016030: .4byte gUnknown_081D9030
|
|
_08016034:
|
|
ldr r1, _080160CC @ =0x000160fc
|
|
add r1, r12
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x1
|
|
bls _08016040
|
|
b _08016182
|
|
_08016040:
|
|
adds r7, r1, 0
|
|
movs r3, 0x2
|
|
mov r10, r3
|
|
movs r0, 0
|
|
mov r8, r0
|
|
ldr r5, _080160D0 @ =gBattleTextBuff1
|
|
_0801604C:
|
|
ldr r0, _080160D4 @ =gBankAttacker
|
|
ldrb r4, [r7]
|
|
strb r4, [r0]
|
|
ldr r1, _080160D8 @ =gActiveBank
|
|
strb r4, [r1]
|
|
ldr r0, _080160DC @ =gSideAffecting
|
|
lsls r2, r4, 1
|
|
adds r3, r2, r0
|
|
ldrh r1, [r3]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080160B0
|
|
ldr r0, _080160E0 @ =gSideTimer
|
|
adds r1, r2, r4
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
subs r0, 0x1
|
|
strb r0, [r1, 0x1]
|
|
movs r6, 0xFF
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080160B0
|
|
ldrh r0, [r3]
|
|
ldr r2, _080160E4 @ =0x0000fffd
|
|
adds r1, r2, 0
|
|
ands r0, r1
|
|
strh r0, [r3]
|
|
ldr r0, _080160E8 @ =gUnknown_081D9030
|
|
bl b_call_bc_move_exec
|
|
ldr r0, _080160EC @ =gBattleCommunication
|
|
strb r4, [r0, 0x5]
|
|
movs r0, 0xFD
|
|
strb r0, [r5]
|
|
mov r3, r10
|
|
strb r3, [r5, 0x1]
|
|
movs r0, 0x71
|
|
strb r0, [r5, 0x2]
|
|
mov r0, r8
|
|
strb r0, [r5, 0x3]
|
|
ldrb r0, [r5, 0x4]
|
|
orrs r0, r6
|
|
strb r0, [r5, 0x4]
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_080160B0:
|
|
ldrb r0, [r7]
|
|
adds r0, 0x1
|
|
strb r0, [r7]
|
|
ldr r1, _080160F0 @ =0x02000000
|
|
mov r12, r1
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
beq _080160C2
|
|
b _08016532
|
|
_080160C2:
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bls _0801604C
|
|
b _08016182
|
|
.align 2, 0
|
|
_080160CC: .4byte 0x000160fc
|
|
_080160D0: .4byte gBattleTextBuff1
|
|
_080160D4: .4byte gBankAttacker
|
|
_080160D8: .4byte gActiveBank
|
|
_080160DC: .4byte gSideAffecting
|
|
_080160E0: .4byte gSideTimer
|
|
_080160E4: .4byte 0x0000fffd
|
|
_080160E8: .4byte gUnknown_081D9030
|
|
_080160EC: .4byte gBattleCommunication
|
|
_080160F0: .4byte 0x02000000
|
|
_080160F4:
|
|
ldr r1, _0801619C @ =0x000160fc
|
|
add r1, r12
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x1
|
|
bhi _08016182
|
|
ldr r0, _080161A0 @ =gActiveBank
|
|
mov r10, r0
|
|
adds r7, r1, 0
|
|
movs r1, 0
|
|
mov r8, r1
|
|
ldr r5, _080161A4 @ =gBattleTextBuff1
|
|
_0801610A:
|
|
ldr r0, _080161A8 @ =gBankAttacker
|
|
ldrb r4, [r7]
|
|
strb r4, [r0]
|
|
mov r2, r10
|
|
strb r4, [r2]
|
|
ldr r1, _080161AC @ =gSideTimer
|
|
lsls r3, r4, 1
|
|
adds r0, r3, r4
|
|
lsls r0, 2
|
|
adds r1, r0, r1
|
|
ldrb r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
beq _08016168
|
|
subs r0, 0x1
|
|
strb r0, [r1, 0x2]
|
|
movs r6, 0xFF
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08016168
|
|
ldr r2, _080161B0 @ =gSideAffecting
|
|
adds r2, r3, r2
|
|
ldrh r0, [r2]
|
|
ldr r3, _080161B4 @ =0x0000feff
|
|
adds r1, r3, 0
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
ldr r0, _080161B8 @ =gUnknown_081D9030
|
|
bl b_call_bc_move_exec
|
|
ldr r0, _080161BC @ =gBattleCommunication
|
|
strb r4, [r0, 0x5]
|
|
movs r0, 0xFD
|
|
strb r0, [r5]
|
|
movs r0, 0x2
|
|
strb r0, [r5, 0x1]
|
|
movs r0, 0x36
|
|
strb r0, [r5, 0x2]
|
|
mov r0, r8
|
|
strb r0, [r5, 0x3]
|
|
ldrb r0, [r5, 0x4]
|
|
orrs r0, r6
|
|
strb r0, [r5, 0x4]
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08016168:
|
|
ldrb r0, [r7]
|
|
adds r0, 0x1
|
|
strb r0, [r7]
|
|
ldr r1, _080161C0 @ =0x02000000
|
|
mov r12, r1
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
beq _0801617A
|
|
b _08016532
|
|
_0801617A:
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bls _0801610A
|
|
_08016182:
|
|
mov r3, r9
|
|
cmp r3, 0
|
|
beq _0801618A
|
|
b _08016532
|
|
_0801618A:
|
|
ldr r0, _080161C4 @ =0x0001600e
|
|
add r0, r12
|
|
ldrb r1, [r0]
|
|
adds r1, 0x1
|
|
strb r1, [r0]
|
|
ldr r0, _0801619C @ =0x000160fc
|
|
add r0, r12
|
|
strb r3, [r0]
|
|
b _0801652A
|
|
.align 2, 0
|
|
_0801619C: .4byte 0x000160fc
|
|
_080161A0: .4byte gActiveBank
|
|
_080161A4: .4byte gBattleTextBuff1
|
|
_080161A8: .4byte gBankAttacker
|
|
_080161AC: .4byte gSideTimer
|
|
_080161B0: .4byte gSideAffecting
|
|
_080161B4: .4byte 0x0000feff
|
|
_080161B8: .4byte gUnknown_081D9030
|
|
_080161BC: .4byte gBattleCommunication
|
|
_080161C0: .4byte 0x02000000
|
|
_080161C4: .4byte 0x0001600e
|
|
_080161C8:
|
|
ldr r1, _08016250 @ =0x000160fc
|
|
add r1, r12
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x1
|
|
bhi _08016236
|
|
ldr r7, _08016254 @ =gActiveBank
|
|
adds r5, r1, 0
|
|
ldr r6, _08016258 @ =gBankAttacker
|
|
_080161D8:
|
|
ldrb r4, [r5]
|
|
strb r4, [r6]
|
|
strb r4, [r7]
|
|
ldr r0, _0801625C @ =gSideAffecting
|
|
lsls r2, r4, 1
|
|
adds r3, r2, r0
|
|
ldrh r1, [r3]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801621C
|
|
ldr r0, _08016260 @ =gSideTimer
|
|
adds r1, r2, r4
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x7]
|
|
subs r0, 0x1
|
|
strb r0, [r1, 0x7]
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801621C
|
|
ldrh r0, [r3]
|
|
ldr r2, _08016264 @ =0x0000ffdf
|
|
adds r1, r2, 0
|
|
ands r0, r1
|
|
strh r0, [r3]
|
|
ldr r0, _08016268 @ =gUnknown_081D9041
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_0801621C:
|
|
ldrb r0, [r5]
|
|
adds r0, 0x1
|
|
strb r0, [r5]
|
|
ldr r3, _0801626C @ =0x02000000
|
|
mov r12, r3
|
|
mov r1, r9
|
|
cmp r1, 0
|
|
beq _0801622E
|
|
b _08016532
|
|
_0801622E:
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bls _080161D8
|
|
_08016236:
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
beq _0801623E
|
|
b _08016532
|
|
_0801623E:
|
|
ldr r0, _08016270 @ =0x0001600e
|
|
add r0, r12
|
|
ldrb r1, [r0]
|
|
adds r1, 0x1
|
|
strb r1, [r0]
|
|
ldr r0, _08016250 @ =0x000160fc
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
b _0801652A
|
|
.align 2, 0
|
|
_08016250: .4byte 0x000160fc
|
|
_08016254: .4byte gActiveBank
|
|
_08016258: .4byte gBankAttacker
|
|
_0801625C: .4byte gSideAffecting
|
|
_08016260: .4byte gSideTimer
|
|
_08016264: .4byte 0x0000ffdf
|
|
_08016268: .4byte gUnknown_081D9041
|
|
_0801626C: .4byte 0x02000000
|
|
_08016270: .4byte 0x0001600e
|
|
_08016274:
|
|
ldr r2, _080162FC @ =0x000160fc
|
|
add r2, r12
|
|
ldr r1, _08016300 @ =gNoOfAllBanks
|
|
ldrb r0, [r2]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcs _080162E8
|
|
ldr r5, _08016304 @ =gActiveBank
|
|
adds r4, r2, 0
|
|
ldr r6, _08016308 @ =gUnknown_02024DDC
|
|
_08016288:
|
|
ldr r1, _0801630C @ =gTurnOrder
|
|
ldrb r0, [r4]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r5]
|
|
ldrb r0, [r5]
|
|
adds r1, r0, r6
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _080162CA
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080162CA
|
|
ldr r1, _08016310 @ =gBattleMons
|
|
ldrb r2, [r5]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
beq _080162CA
|
|
ldr r0, _08016314 @ =gBankTarget
|
|
strb r2, [r0]
|
|
ldr r0, _08016318 @ =gUnknown_081D939A
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_080162CA:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
ldr r3, _0801631C @ =0x02000000
|
|
mov r12, r3
|
|
mov r1, r9
|
|
cmp r1, 0
|
|
beq _080162DC
|
|
b _08016532
|
|
_080162DC:
|
|
ldr r1, _08016300 @ =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _08016288
|
|
_080162E8:
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
beq _080162F0
|
|
b _08016532
|
|
_080162F0:
|
|
ldr r1, _08016320 @ =0x0001600e
|
|
add r1, r12
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
b _0801652A
|
|
.align 2, 0
|
|
_080162FC: .4byte 0x000160fc
|
|
_08016300: .4byte gNoOfAllBanks
|
|
_08016304: .4byte gActiveBank
|
|
_08016308: .4byte gUnknown_02024DDC
|
|
_0801630C: .4byte gTurnOrder
|
|
_08016310: .4byte gBattleMons
|
|
_08016314: .4byte gBankTarget
|
|
_08016318: .4byte gUnknown_081D939A
|
|
_0801631C: .4byte 0x02000000
|
|
_08016320: .4byte 0x0001600e
|
|
_08016324:
|
|
ldr r3, _0801635C @ =gBattleWeather
|
|
ldrh r2, [r3]
|
|
movs r0, 0x7
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _08016332
|
|
b _080164F8
|
|
_08016332:
|
|
movs r0, 0x4
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0801637E
|
|
ldr r1, _08016360 @ =gWishFutureKnock
|
|
adds r1, 0x28
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08016370
|
|
ldr r0, _08016364 @ =0x0000fffe
|
|
ands r0, r2
|
|
ldr r1, _08016368 @ =0x0000fffd
|
|
ands r0, r1
|
|
strh r0, [r3]
|
|
ldr r1, _0801636C @ =gBattleCommunication
|
|
movs r0, 0x2
|
|
strb r0, [r1, 0x5]
|
|
b _0801639C
|
|
.align 2, 0
|
|
_0801635C: .4byte gBattleWeather
|
|
_08016360: .4byte gWishFutureKnock
|
|
_08016364: .4byte 0x0000fffe
|
|
_08016368: .4byte 0x0000fffd
|
|
_0801636C: .4byte gBattleCommunication
|
|
_08016370:
|
|
movs r0, 0x2
|
|
ands r0, r2
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
cmp r1, 0
|
|
bne _0801638A
|
|
b _08016398
|
|
_0801637E:
|
|
movs r0, 0x2
|
|
ands r0, r2
|
|
lsls r0, 16
|
|
lsrs r1, r0, 16
|
|
cmp r1, 0
|
|
beq _08016398
|
|
_0801638A:
|
|
ldr r1, _08016394 @ =gBattleCommunication
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x5]
|
|
b _0801639C
|
|
.align 2, 0
|
|
_08016394: .4byte gBattleCommunication
|
|
_08016398:
|
|
ldr r0, _080163A0 @ =gBattleCommunication
|
|
strb r1, [r0, 0x5]
|
|
_0801639C:
|
|
ldr r0, _080163A4 @ =gUnknown_081D8F62
|
|
b _080164EA
|
|
.align 2, 0
|
|
_080163A0: .4byte gBattleCommunication
|
|
_080163A4: .4byte gUnknown_081D8F62
|
|
_080163A8:
|
|
ldr r3, _080163DC @ =gBattleWeather
|
|
ldrh r2, [r3]
|
|
movs r0, 0x18
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _080163B6
|
|
b _080164F8
|
|
_080163B6:
|
|
movs r0, 0x10
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _080163F0
|
|
ldr r1, _080163E0 @ =gWishFutureKnock
|
|
adds r1, 0x28
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080163F0
|
|
ldr r0, _080163E4 @ =0x0000fff7
|
|
ands r0, r2
|
|
strh r0, [r3]
|
|
ldr r1, _080163E8 @ =gBattlescriptCurrInstr
|
|
ldr r0, _080163EC @ =gUnknown_081D8FFF
|
|
b _080163F4
|
|
.align 2, 0
|
|
_080163DC: .4byte gBattleWeather
|
|
_080163E0: .4byte gWishFutureKnock
|
|
_080163E4: .4byte 0x0000fff7
|
|
_080163E8: .4byte gBattlescriptCurrInstr
|
|
_080163EC: .4byte gUnknown_081D8FFF
|
|
_080163F0:
|
|
ldr r1, _0801640C @ =gBattlescriptCurrInstr
|
|
ldr r0, _08016410 @ =gUnknown_081D8F7D
|
|
_080163F4:
|
|
str r0, [r1]
|
|
adds r3, r1, 0
|
|
ldr r1, _08016414 @ =0x02000000
|
|
ldr r0, _08016418 @ =0x000160a4
|
|
adds r1, r0
|
|
movs r2, 0
|
|
movs r0, 0xC
|
|
strb r0, [r1]
|
|
ldr r0, _0801641C @ =gBattleCommunication
|
|
strb r2, [r0, 0x5]
|
|
b _080164E8
|
|
.align 2, 0
|
|
_0801640C: .4byte gBattlescriptCurrInstr
|
|
_08016410: .4byte gUnknown_081D8F7D
|
|
_08016414: .4byte 0x02000000
|
|
_08016418: .4byte 0x000160a4
|
|
_0801641C: .4byte gBattleCommunication
|
|
_08016420:
|
|
ldr r3, _08016450 @ =gBattleWeather
|
|
ldrh r2, [r3]
|
|
movs r0, 0x60
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0801647C
|
|
movs r0, 0x40
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _08016464
|
|
ldr r1, _08016454 @ =gWishFutureKnock
|
|
adds r1, 0x28
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08016464
|
|
ldr r0, _08016458 @ =0x0000ffdf
|
|
ands r0, r2
|
|
strh r0, [r3]
|
|
ldr r1, _0801645C @ =gBattlescriptCurrInstr
|
|
ldr r0, _08016460 @ =gUnknown_081D9016
|
|
b _08016468
|
|
.align 2, 0
|
|
_08016450: .4byte gBattleWeather
|
|
_08016454: .4byte gWishFutureKnock
|
|
_08016458: .4byte 0x0000ffdf
|
|
_0801645C: .4byte gBattlescriptCurrInstr
|
|
_08016460: .4byte gUnknown_081D9016
|
|
_08016464:
|
|
ldr r1, _08016484 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08016488 @ =gUnknown_081D9008
|
|
_08016468:
|
|
str r0, [r1]
|
|
adds r3, r1, 0
|
|
ldr r0, [r3]
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_0801647C:
|
|
ldr r2, _0801648C @ =0x02000000
|
|
ldr r0, _08016490 @ =0x0001600e
|
|
adds r1, r2, r0
|
|
b _080164FE
|
|
.align 2, 0
|
|
_08016484: .4byte gBattlescriptCurrInstr
|
|
_08016488: .4byte gUnknown_081D9008
|
|
_0801648C: .4byte 0x02000000
|
|
_08016490: .4byte 0x0001600e
|
|
_08016494:
|
|
ldr r3, _080164BC @ =gBattleWeather
|
|
ldrh r2, [r3]
|
|
movs r0, 0x80
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080164F8
|
|
ldr r1, _080164C0 @ =gWishFutureKnock
|
|
adds r1, 0x28
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080164D0
|
|
ldr r0, _080164C4 @ =0x0000ff7f
|
|
ands r0, r2
|
|
strh r0, [r3]
|
|
ldr r1, _080164C8 @ =gBattlescriptCurrInstr
|
|
ldr r0, _080164CC @ =gUnknown_081D8FFF
|
|
b _080164D4
|
|
.align 2, 0
|
|
_080164BC: .4byte gBattleWeather
|
|
_080164C0: .4byte gWishFutureKnock
|
|
_080164C4: .4byte 0x0000ff7f
|
|
_080164C8: .4byte gBattlescriptCurrInstr
|
|
_080164CC: .4byte gUnknown_081D8FFF
|
|
_080164D0:
|
|
ldr r1, _08016508 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801650C @ =gUnknown_081D8F7D
|
|
_080164D4:
|
|
str r0, [r1]
|
|
adds r3, r1, 0
|
|
ldr r0, _08016510 @ =0x02000000
|
|
ldr r1, _08016514 @ =0x000160a4
|
|
adds r0, r1
|
|
movs r1, 0xD
|
|
strb r1, [r0]
|
|
ldr r1, _08016518 @ =gBattleCommunication
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x5]
|
|
_080164E8:
|
|
ldr r0, [r3]
|
|
_080164EA:
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_080164F8:
|
|
ldr r2, _08016510 @ =0x02000000
|
|
ldr r3, _0801651C @ =0x0001600e
|
|
adds r1, r2, r3
|
|
_080164FE:
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
mov r12, r2
|
|
b _0801652A
|
|
.align 2, 0
|
|
_08016508: .4byte gBattlescriptCurrInstr
|
|
_0801650C: .4byte gUnknown_081D8F7D
|
|
_08016510: .4byte 0x02000000
|
|
_08016514: .4byte 0x000160a4
|
|
_08016518: .4byte gBattleCommunication
|
|
_0801651C: .4byte 0x0001600e
|
|
_08016520:
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_0801652A:
|
|
mov r0, r9
|
|
cmp r0, 0
|
|
bne _08016532
|
|
b _08015E8A
|
|
_08016532:
|
|
ldr r0, _08016550 @ =gBattleMainFunc
|
|
ldr r1, [r0]
|
|
ldr r0, _08016554 @ =BattleTurnPassed
|
|
eors r1, r0
|
|
negs r0, r1
|
|
orrs r0, r1
|
|
lsrs r0, 31
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08016550: .4byte gBattleMainFunc
|
|
_08016554: .4byte BattleTurnPassed
|
|
thumb_func_end UpdateTurnCounters
|
|
|
|
thumb_func_start TurnBasedEffects
|
|
TurnBasedEffects: @ 8016558
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
movs r0, 0
|
|
mov r9, r0
|
|
ldr r2, _08016578 @ =gHitMarker
|
|
ldr r0, [r2]
|
|
ldr r1, _0801657C @ =0x01000020
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
bl _08017088
|
|
.align 2, 0
|
|
_08016578: .4byte gHitMarker
|
|
_0801657C: .4byte 0x01000020
|
|
_08016580:
|
|
ldr r3, _080165B4 @ =gActiveBank
|
|
ldr r4, _080165B8 @ =gBankAttacker
|
|
ldr r1, _080165BC @ =gTurnOrder
|
|
adds r5, r7, r2
|
|
ldrb r0, [r5]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r4]
|
|
strb r0, [r3]
|
|
ldr r0, _080165C0 @ =gAbsentBankFlags
|
|
ldrb r1, [r0]
|
|
ldr r2, _080165C4 @ =gBitTable
|
|
ldrb r0, [r3]
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
adds r6, r3, 0
|
|
cmp r1, 0
|
|
beq _080165C8
|
|
ldrb r0, [r5]
|
|
adds r0, 0x1
|
|
strb r0, [r5]
|
|
bl _08017088
|
|
.align 2, 0
|
|
_080165B4: .4byte gActiveBank
|
|
_080165B8: .4byte gBankAttacker
|
|
_080165BC: .4byte gTurnOrder
|
|
_080165C0: .4byte gAbsentBankFlags
|
|
_080165C4: .4byte gBitTable
|
|
_080165C8:
|
|
movs r5, 0xB0
|
|
lsls r5, 9
|
|
adds r0, r7, r5
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x13
|
|
bls _080165D8
|
|
bl _08017078
|
|
_080165D8:
|
|
lsls r0, 2
|
|
ldr r1, _080165E4 @ =_080165E8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080165E4: .4byte _080165E8
|
|
.align 2, 0
|
|
_080165E8:
|
|
.4byte _08016638
|
|
.4byte _080166A8
|
|
.4byte _080166D8
|
|
.4byte _08016730
|
|
.4byte _080167C8
|
|
.4byte _08016828
|
|
.4byte _080168C0
|
|
.4byte _0801691C
|
|
.4byte _0801697C
|
|
.4byte _080169DC
|
|
.4byte _08016B78
|
|
.4byte _08016CA0
|
|
.4byte _08016D58
|
|
.4byte _08016E30
|
|
.4byte _08016EFC
|
|
.4byte _08016F20
|
|
.4byte _08016F6C
|
|
.4byte _08016F9C
|
|
.4byte _08016704
|
|
.4byte _08017064
|
|
_08016638:
|
|
ldr r1, _08016694 @ =gStatuses3
|
|
ldrb r3, [r6]
|
|
lsls r0, r3, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 3
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08016686
|
|
ldr r0, _08016698 @ =gBattleMons
|
|
movs r1, 0x58
|
|
muls r1, r3
|
|
adds r0, r1, r0
|
|
ldrh r2, [r0, 0x28]
|
|
ldrh r7, [r0, 0x2C]
|
|
cmp r2, r7
|
|
beq _08016686
|
|
cmp r2, 0
|
|
beq _08016686
|
|
ldr r1, _0801669C @ =gBattleMoveDamage
|
|
ldrh r0, [r0, 0x2C]
|
|
lsrs r0, 4
|
|
str r0, [r1]
|
|
cmp r0, 0
|
|
bne _08016670
|
|
movs r0, 0x1
|
|
str r0, [r1]
|
|
_08016670:
|
|
ldr r0, [r1]
|
|
negs r0, r0
|
|
str r0, [r1]
|
|
ldr r0, _080166A0 @ =gUnknown_081D93D1
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08016686:
|
|
ldr r1, _080166A4 @ =0x02000000
|
|
movs r0, 0xB0
|
|
lsls r0, 9
|
|
adds r1, r0
|
|
bl _08017072
|
|
.align 2, 0
|
|
_08016694: .4byte gStatuses3
|
|
_08016698: .4byte gBattleMons
|
|
_0801669C: .4byte gBattleMoveDamage
|
|
_080166A0: .4byte gUnknown_081D93D1
|
|
_080166A4: .4byte 0x02000000
|
|
_080166A8:
|
|
ldrb r1, [r6]
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0x1
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080166C8
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_080166C8:
|
|
ldr r1, _080166D4 @ =0x02000000
|
|
movs r2, 0xB0
|
|
lsls r2, 9
|
|
adds r1, r2
|
|
bl _08017072
|
|
.align 2, 0
|
|
_080166D4: .4byte 0x02000000
|
|
_080166D8:
|
|
ldrb r1, [r6]
|
|
movs r0, 0x1
|
|
movs r2, 0
|
|
bl sub_801A02C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080166F2
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_080166F2:
|
|
ldr r1, _08016700 @ =0x02000000
|
|
movs r3, 0xB0
|
|
lsls r3, 9
|
|
adds r1, r3
|
|
bl _08017072
|
|
.align 2, 0
|
|
_08016700: .4byte 0x02000000
|
|
_08016704:
|
|
ldrb r1, [r6]
|
|
movs r0, 0x1
|
|
movs r2, 0x1
|
|
bl sub_801A02C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0801671E
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_0801671E:
|
|
ldr r1, _0801672C @ =0x02000000
|
|
movs r5, 0xB0
|
|
lsls r5, 9
|
|
adds r1, r5
|
|
bl _08017072
|
|
.align 2, 0
|
|
_0801672C: .4byte 0x02000000
|
|
_08016730:
|
|
ldr r0, _080167A8 @ =gStatuses3
|
|
ldrb r2, [r6]
|
|
lsls r1, r2, 2
|
|
adds r1, r0
|
|
ldr r1, [r1]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801679C
|
|
ldr r3, _080167AC @ =gBattleMons
|
|
movs r5, 0x3
|
|
ands r5, r1
|
|
movs r1, 0x58
|
|
adds r0, r5, 0
|
|
muls r0, r1
|
|
adds r0, r3
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
beq _0801679C
|
|
adds r0, r2, 0
|
|
muls r0, r1
|
|
adds r0, r3
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
beq _0801679C
|
|
ldr r0, _080167B0 @ =gBankTarget
|
|
strb r5, [r0]
|
|
ldr r2, _080167B4 @ =gBattleMoveDamage
|
|
ldrb r0, [r6]
|
|
muls r0, r1
|
|
adds r0, r3
|
|
ldrh r0, [r0, 0x2C]
|
|
lsrs r0, 3
|
|
str r0, [r2]
|
|
cmp r0, 0
|
|
bne _0801677C
|
|
movs r0, 0x1
|
|
str r0, [r2]
|
|
_0801677C:
|
|
ldr r1, _080167B8 @ =0x02000000
|
|
ldr r7, _080167BC @ =0x000160a4
|
|
adds r0, r1, r7
|
|
strb r5, [r0]
|
|
ldrb r0, [r4]
|
|
ldr r2, _080167C0 @ =0x000160a5
|
|
adds r1, r2
|
|
strb r0, [r1]
|
|
ldr r0, _080167C4 @ =gUnknown_081D904B
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_0801679C:
|
|
ldr r1, _080167B8 @ =0x02000000
|
|
movs r3, 0xB0
|
|
lsls r3, 9
|
|
adds r1, r3
|
|
bl _08017072
|
|
.align 2, 0
|
|
_080167A8: .4byte gStatuses3
|
|
_080167AC: .4byte gBattleMons
|
|
_080167B0: .4byte gBankTarget
|
|
_080167B4: .4byte gBattleMoveDamage
|
|
_080167B8: .4byte 0x02000000
|
|
_080167BC: .4byte 0x000160a4
|
|
_080167C0: .4byte 0x000160a5
|
|
_080167C4: .4byte gUnknown_081D904B
|
|
_080167C8:
|
|
ldr r2, _08016818 @ =gBattleMons
|
|
ldrb r1, [r6]
|
|
movs r0, 0x58
|
|
adds r3, r1, 0
|
|
muls r3, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x4C
|
|
adds r0, r3, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801680A
|
|
adds r1, r3, r2
|
|
ldrh r0, [r1, 0x28]
|
|
cmp r0, 0
|
|
beq _0801680A
|
|
ldr r2, _0801681C @ =gBattleMoveDamage
|
|
ldrh r0, [r1, 0x2C]
|
|
lsrs r0, 3
|
|
str r0, [r2]
|
|
cmp r0, 0
|
|
bne _080167FA
|
|
movs r0, 0x1
|
|
str r0, [r2]
|
|
_080167FA:
|
|
ldr r0, _08016820 @ =gUnknown_081D9518
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_0801680A:
|
|
ldr r1, _08016824 @ =0x02000000
|
|
movs r5, 0xB0
|
|
lsls r5, 9
|
|
adds r1, r5
|
|
bl _08017072
|
|
.align 2, 0
|
|
_08016818: .4byte gBattleMons
|
|
_0801681C: .4byte gBattleMoveDamage
|
|
_08016820: .4byte gUnknown_081D9518
|
|
_08016824: .4byte 0x02000000
|
|
_08016828:
|
|
ldr r4, _080168B0 @ =gBattleMons
|
|
ldrb r0, [r6]
|
|
movs r7, 0x58
|
|
mov r8, r7
|
|
mov r2, r8
|
|
muls r2, r0
|
|
adds r3, r4, 0
|
|
adds r3, 0x4C
|
|
adds r0, r2, r3
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080168A2
|
|
adds r1, r2, r4
|
|
ldrh r0, [r1, 0x28]
|
|
cmp r0, 0
|
|
beq _080168A2
|
|
ldr r5, _080168B4 @ =gBattleMoveDamage
|
|
ldrh r0, [r1, 0x2C]
|
|
lsrs r0, 4
|
|
str r0, [r5]
|
|
cmp r0, 0
|
|
bne _0801685C
|
|
movs r0, 0x1
|
|
str r0, [r5]
|
|
_0801685C:
|
|
ldrb r0, [r6]
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r2, r0, r3
|
|
ldr r1, [r2]
|
|
movs r4, 0xF0
|
|
lsls r4, 4
|
|
adds r0, r1, 0
|
|
ands r0, r4
|
|
cmp r0, r4
|
|
beq _0801687C
|
|
movs r7, 0x80
|
|
lsls r7, 1
|
|
adds r0, r1, r7
|
|
str r0, [r2]
|
|
_0801687C:
|
|
ldrb r0, [r6]
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r0, r3
|
|
ldr r0, [r0]
|
|
ands r0, r4
|
|
lsrs r0, 8
|
|
ldr r1, [r5]
|
|
muls r0, r1
|
|
str r0, [r5]
|
|
ldr r0, _080168B8 @ =gUnknown_081D9518
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_080168A2:
|
|
ldr r1, _080168BC @ =0x02000000
|
|
movs r2, 0xB0
|
|
lsls r2, 9
|
|
adds r1, r2
|
|
bl _08017072
|
|
.align 2, 0
|
|
_080168B0: .4byte gBattleMons
|
|
_080168B4: .4byte gBattleMoveDamage
|
|
_080168B8: .4byte gUnknown_081D9518
|
|
_080168BC: .4byte 0x02000000
|
|
_080168C0:
|
|
ldr r2, _0801690C @ =gBattleMons
|
|
ldrb r1, [r6]
|
|
movs r0, 0x58
|
|
adds r3, r1, 0
|
|
muls r3, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x4C
|
|
adds r0, r3, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08016902
|
|
adds r1, r3, r2
|
|
ldrh r0, [r1, 0x28]
|
|
cmp r0, 0
|
|
beq _08016902
|
|
ldr r2, _08016910 @ =gBattleMoveDamage
|
|
ldrh r0, [r1, 0x2C]
|
|
lsrs r0, 3
|
|
str r0, [r2]
|
|
cmp r0, 0
|
|
bne _080168F2
|
|
movs r0, 0x1
|
|
str r0, [r2]
|
|
_080168F2:
|
|
ldr r0, _08016914 @ =gUnknown_081D953A
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08016902:
|
|
ldr r1, _08016918 @ =0x02000000
|
|
movs r3, 0xB0
|
|
lsls r3, 9
|
|
adds r1, r3
|
|
b _08017072
|
|
.align 2, 0
|
|
_0801690C: .4byte gBattleMons
|
|
_08016910: .4byte gBattleMoveDamage
|
|
_08016914: .4byte gUnknown_081D953A
|
|
_08016918: .4byte 0x02000000
|
|
_0801691C:
|
|
ldr r2, _0801696C @ =gBattleMons
|
|
ldrb r1, [r6]
|
|
movs r0, 0x58
|
|
adds r3, r1, 0
|
|
muls r3, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x50
|
|
adds r0, r3, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08016960
|
|
adds r1, r3, r2
|
|
ldrh r0, [r1, 0x28]
|
|
cmp r0, 0
|
|
beq _08016960
|
|
ldr r2, _08016970 @ =gBattleMoveDamage
|
|
ldrh r0, [r1, 0x2C]
|
|
lsrs r0, 2
|
|
str r0, [r2]
|
|
cmp r0, 0
|
|
bne _08016950
|
|
movs r0, 0x1
|
|
str r0, [r2]
|
|
_08016950:
|
|
ldr r0, _08016974 @ =gUnknown_081D9613
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08016960:
|
|
ldr r1, _08016978 @ =0x02000000
|
|
movs r5, 0xB0
|
|
lsls r5, 9
|
|
adds r1, r5
|
|
b _08017072
|
|
.align 2, 0
|
|
_0801696C: .4byte gBattleMons
|
|
_08016970: .4byte gBattleMoveDamage
|
|
_08016974: .4byte gUnknown_081D9613
|
|
_08016978: .4byte 0x02000000
|
|
_0801697C:
|
|
ldr r2, _080169CC @ =gBattleMons
|
|
ldrb r1, [r6]
|
|
movs r0, 0x58
|
|
adds r3, r1, 0
|
|
muls r3, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x50
|
|
adds r0, r3, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 21
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080169C0
|
|
adds r1, r3, r2
|
|
ldrh r0, [r1, 0x28]
|
|
cmp r0, 0
|
|
beq _080169C0
|
|
ldr r2, _080169D0 @ =gBattleMoveDamage
|
|
ldrh r0, [r1, 0x2C]
|
|
lsrs r0, 2
|
|
str r0, [r2]
|
|
cmp r0, 0
|
|
bne _080169B0
|
|
movs r0, 0x1
|
|
str r0, [r2]
|
|
_080169B0:
|
|
ldr r0, _080169D4 @ =gUnknown_081D9624
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_080169C0:
|
|
ldr r1, _080169D8 @ =0x02000000
|
|
movs r7, 0xB0
|
|
lsls r7, 9
|
|
adds r1, r7
|
|
b _08017072
|
|
.align 2, 0
|
|
_080169CC: .4byte gBattleMons
|
|
_080169D0: .4byte gBattleMoveDamage
|
|
_080169D4: .4byte gUnknown_081D9624
|
|
_080169D8: .4byte 0x02000000
|
|
_080169DC:
|
|
ldr r0, _08016A8C @ =gBattleMons
|
|
mov r8, r0
|
|
ldrb r0, [r6]
|
|
movs r1, 0x58
|
|
mov r10, r1
|
|
mov r1, r10
|
|
muls r1, r0
|
|
mov r5, r8
|
|
adds r5, 0x50
|
|
adds r3, r1, r5
|
|
ldr r2, [r3]
|
|
movs r4, 0xE0
|
|
lsls r4, 8
|
|
adds r0, r2, 0
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _08016AF6
|
|
mov r7, r8
|
|
adds r0, r1, r7
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
beq _08016AF6
|
|
ldr r1, _08016A90 @ =0xffffe000
|
|
adds r0, r2, r1
|
|
str r0, [r3]
|
|
ldrb r1, [r6]
|
|
mov r0, r10
|
|
muls r0, r1
|
|
adds r0, r5
|
|
ldr r0, [r0]
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _08016AB4
|
|
ldr r2, _08016A94 @ =0x02000000
|
|
lsls r0, r1, 1
|
|
ldr r4, _08016A98 @ =0x00016004
|
|
adds r0, r4
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
ldr r3, _08016A9C @ =0x000160a4
|
|
adds r0, r2, r3
|
|
strb r1, [r0]
|
|
ldrb r0, [r6]
|
|
lsls r0, 1
|
|
subs r3, 0x9F
|
|
adds r0, r3
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
ldr r5, _08016AA0 @ =0x000160a5
|
|
adds r0, r2, r5
|
|
strb r1, [r0]
|
|
ldr r1, _08016AA4 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x2
|
|
strb r0, [r1, 0x1]
|
|
ldrb r0, [r6]
|
|
lsls r0, 1
|
|
adds r0, r4
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1, 0x2]
|
|
ldrb r0, [r6]
|
|
lsls r0, 1
|
|
adds r0, r3
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1, 0x3]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x4]
|
|
ldr r1, _08016AA8 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08016AAC @ =gUnknown_081D95E2
|
|
str r0, [r1]
|
|
ldr r2, _08016AB0 @ =gBattleMoveDamage
|
|
ldrb r0, [r6]
|
|
mov r7, r10
|
|
muls r7, r0
|
|
adds r0, r7, 0
|
|
add r0, r8
|
|
ldrh r0, [r0, 0x2C]
|
|
lsrs r0, 4
|
|
str r0, [r2]
|
|
cmp r0, 0
|
|
bne _08016AE6
|
|
movs r0, 0x1
|
|
str r0, [r2]
|
|
b _08016AE6
|
|
.align 2, 0
|
|
_08016A8C: .4byte gBattleMons
|
|
_08016A90: .4byte 0xffffe000
|
|
_08016A94: .4byte 0x02000000
|
|
_08016A98: .4byte 0x00016004
|
|
_08016A9C: .4byte 0x000160a4
|
|
_08016AA0: .4byte 0x000160a5
|
|
_08016AA4: .4byte gBattleTextBuff1
|
|
_08016AA8: .4byte gBattlescriptCurrInstr
|
|
_08016AAC: .4byte gUnknown_081D95E2
|
|
_08016AB0: .4byte gBattleMoveDamage
|
|
_08016AB4:
|
|
ldr r1, _08016B00 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x2
|
|
strb r0, [r1, 0x1]
|
|
ldr r2, _08016B04 @ =0x02000000
|
|
ldrb r0, [r6]
|
|
lsls r0, 1
|
|
ldr r3, _08016B08 @ =0x00016004
|
|
adds r0, r3
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1, 0x2]
|
|
ldrb r0, [r6]
|
|
lsls r0, 1
|
|
ldr r5, _08016B0C @ =0x00016005
|
|
adds r0, r5
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1, 0x3]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x4]
|
|
ldr r1, _08016B10 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08016B14 @ =gUnknown_081D95F4
|
|
str r0, [r1]
|
|
_08016AE6:
|
|
ldr r0, [r1]
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08016AF6:
|
|
ldr r1, _08016B04 @ =0x02000000
|
|
movs r7, 0xB0
|
|
lsls r7, 9
|
|
adds r1, r7
|
|
b _08017072
|
|
.align 2, 0
|
|
_08016B00: .4byte gBattleTextBuff1
|
|
_08016B04: .4byte 0x02000000
|
|
_08016B08: .4byte 0x00016004
|
|
_08016B0C: .4byte 0x00016005
|
|
_08016B10: .4byte gBattlescriptCurrInstr
|
|
_08016B14: .4byte gUnknown_081D95F4
|
|
_08016B18:
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
ands r4, r0
|
|
str r4, [r2]
|
|
ldrb r0, [r6]
|
|
mov r2, r8
|
|
muls r2, r0
|
|
mov r0, r10
|
|
adds r0, 0x50
|
|
adds r2, r0
|
|
ldr r0, [r2]
|
|
ldr r1, _08016B68 @ =0xf7ffffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r1, _08016B6C @ =gBattleCommunication
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x5]
|
|
ldr r0, _08016B70 @ =gUnknown_081D950F
|
|
bl b_call_bc_move_exec
|
|
ldr r4, _08016B74 @ =gActiveBank
|
|
ldrb r0, [r6]
|
|
strb r0, [r4]
|
|
ldrb r0, [r4]
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
add r0, r9
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r1, 0x28
|
|
movs r2, 0
|
|
movs r3, 0x4
|
|
bl EmitSetAttributes
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
b _08016BE0
|
|
.align 2, 0
|
|
_08016B68: .4byte 0xf7ffffff
|
|
_08016B6C: .4byte gBattleCommunication
|
|
_08016B70: .4byte gUnknown_081D950F
|
|
_08016B74: .4byte gActiveBank
|
|
_08016B78:
|
|
ldr r2, _08016BF4 @ =gBattleMons
|
|
ldrb r1, [r6]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
adds r1, r2, 0
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
movs r0, 0x70
|
|
ands r1, r0
|
|
adds r7, r2, 0
|
|
cmp r1, 0
|
|
beq _08016C82
|
|
movs r0, 0
|
|
strb r0, [r4]
|
|
mov r2, r8
|
|
ldrb r1, [r2]
|
|
cmp r1, 0
|
|
beq _08016BE0
|
|
mov r10, r7
|
|
adds r6, r4, 0
|
|
movs r3, 0x58
|
|
mov r8, r3
|
|
movs r5, 0x4C
|
|
adds r5, r7
|
|
mov r9, r5
|
|
str r1, [sp, 0x4]
|
|
movs r0, 0x7
|
|
mov r12, r0
|
|
_08016BB2:
|
|
ldrb r1, [r6]
|
|
mov r3, r8
|
|
muls r3, r1
|
|
mov r5, r9
|
|
adds r2, r3, r5
|
|
ldr r4, [r2]
|
|
adds r0, r4, 0
|
|
mov r5, r12
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
beq _08016BD2
|
|
adds r0, r3, r7
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2B
|
|
bne _08016B18
|
|
_08016BD2:
|
|
adds r0, r1, 0x1
|
|
strb r0, [r6]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, [sp, 0x4]
|
|
cmp r0, r1
|
|
bcc _08016BB2
|
|
_08016BE0:
|
|
ldr r2, _08016BF8 @ =gBankAttacker
|
|
ldr r1, _08016BFC @ =gNoOfAllBanks
|
|
ldrb r0, [r2]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
beq _08016C00
|
|
movs r2, 0x2
|
|
mov r9, r2
|
|
b _0801707E
|
|
.align 2, 0
|
|
_08016BF4: .4byte gBattleMons
|
|
_08016BF8: .4byte gBankAttacker
|
|
_08016BFC: .4byte gNoOfAllBanks
|
|
_08016C00:
|
|
ldr r5, _08016C38 @ =gActiveBank
|
|
ldrb r0, [r5]
|
|
strb r0, [r2]
|
|
ldr r2, _08016C3C @ =gBattleMons
|
|
ldrb r0, [r5]
|
|
movs r7, 0x58
|
|
adds r1, r0, 0
|
|
muls r1, r7
|
|
adds r6, r2, 0
|
|
adds r6, 0x50
|
|
adds r1, r6
|
|
ldr r0, [r1]
|
|
subs r0, 0x10
|
|
str r0, [r1]
|
|
ldrb r0, [r5]
|
|
bl sub_8015660
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0
|
|
beq _08016C44
|
|
ldrb r0, [r5]
|
|
bl CancelMultiTurnMoves
|
|
ldr r1, _08016C40 @ =gBattleCommunication
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x5]
|
|
b _08016C78
|
|
.align 2, 0
|
|
_08016C38: .4byte gActiveBank
|
|
_08016C3C: .4byte gBattleMons
|
|
_08016C40: .4byte gBattleCommunication
|
|
_08016C44:
|
|
ldrb r3, [r5]
|
|
adds r0, r3, 0
|
|
muls r0, r7
|
|
adds r2, r0, r6
|
|
ldr r0, [r2]
|
|
movs r1, 0x70
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08016C6C
|
|
ldr r0, _08016C68 @ =gBattleCommunication
|
|
strb r4, [r0, 0x5]
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
b _08016C78
|
|
.align 2, 0
|
|
_08016C68: .4byte gBattleCommunication
|
|
_08016C6C:
|
|
ldr r1, _08016C94 @ =gBattleCommunication
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x5]
|
|
adds r0, r3, 0
|
|
bl CancelMultiTurnMoves
|
|
_08016C78:
|
|
ldr r0, _08016C98 @ =gUnknown_081D957E
|
|
bl b_call_bc_move_exec
|
|
movs r3, 0x1
|
|
mov r9, r3
|
|
_08016C82:
|
|
mov r5, r9
|
|
cmp r5, 0x2
|
|
bne _08016C8A
|
|
b _08017078
|
|
_08016C8A:
|
|
ldr r1, _08016C9C @ =0x02000000
|
|
movs r7, 0xB0
|
|
lsls r7, 9
|
|
adds r1, r7
|
|
b _08017072
|
|
.align 2, 0
|
|
_08016C94: .4byte gBattleCommunication
|
|
_08016C98: .4byte gUnknown_081D957E
|
|
_08016C9C: .4byte 0x02000000
|
|
_08016CA0:
|
|
ldr r1, _08016CD8 @ =gBattleMons
|
|
ldrb r0, [r6]
|
|
movs r7, 0x58
|
|
muls r0, r7
|
|
adds r5, r1, 0
|
|
adds r5, 0x50
|
|
adds r2, r0, r5
|
|
ldr r1, [r2]
|
|
movs r4, 0xC0
|
|
lsls r4, 4
|
|
adds r0, r1, 0
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _08016D3C
|
|
ldr r3, _08016CDC @ =0xfffffc00
|
|
adds r0, r1, r3
|
|
str r0, [r2]
|
|
ldrb r0, [r6]
|
|
bl sub_8015660
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08016CE0
|
|
ldrb r0, [r6]
|
|
bl CancelMultiTurnMoves
|
|
b _08016D3C
|
|
.align 2, 0
|
|
_08016CD8: .4byte gBattleMons
|
|
_08016CDC: .4byte 0xfffffc00
|
|
_08016CE0:
|
|
ldrb r0, [r6]
|
|
muls r0, r7
|
|
adds r2, r0, r5
|
|
ldr r1, [r2]
|
|
adds r0, r1, 0
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
bne _08016D3C
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08016D3C
|
|
ldr r0, _08016D48 @ =0xffffefff
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
ldrb r0, [r6]
|
|
muls r0, r7
|
|
adds r0, r5
|
|
ldr r0, [r0]
|
|
movs r4, 0x7
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
bne _08016D3C
|
|
ldr r1, _08016D4C @ =gBattleCommunication
|
|
movs r0, 0x47
|
|
strb r0, [r1, 0x3]
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
bl sub_801E3EC
|
|
ldrb r0, [r6]
|
|
muls r0, r7
|
|
adds r0, r5
|
|
ldr r0, [r0]
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _08016D32
|
|
ldr r0, _08016D50 @ =gUnknown_081D9587
|
|
bl b_call_bc_move_exec
|
|
_08016D32:
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08016D3C:
|
|
ldr r1, _08016D54 @ =0x02000000
|
|
movs r5, 0xB0
|
|
lsls r5, 9
|
|
adds r1, r5
|
|
b _08017072
|
|
.align 2, 0
|
|
_08016D48: .4byte 0xffffefff
|
|
_08016D4C: .4byte gBattleCommunication
|
|
_08016D50: .4byte gUnknown_081D9587
|
|
_08016D54: .4byte 0x02000000
|
|
_08016D58:
|
|
ldr r0, _08016DD4 @ =gDisableStructs
|
|
ldrb r3, [r6]
|
|
lsls r1, r3, 3
|
|
subs r1, r3
|
|
lsls r1, 2
|
|
adds r5, r1, r0
|
|
ldrb r1, [r5, 0xB]
|
|
lsls r1, 28
|
|
adds r7, r0, 0
|
|
cmp r1, 0
|
|
beq _08016E1E
|
|
movs r4, 0
|
|
ldr r2, _08016DD8 @ =gBattleMons
|
|
movs r0, 0x58
|
|
adds r1, r3, 0
|
|
muls r1, r0
|
|
adds r2, 0xC
|
|
adds r1, r2
|
|
ldrh r0, [r5, 0x4]
|
|
ldrh r1, [r1]
|
|
cmp r0, r1
|
|
beq _08016DAC
|
|
mov r12, r7
|
|
mov r8, r2
|
|
adds r5, r6, 0
|
|
movs r3, 0x58
|
|
_08016D8C:
|
|
adds r4, 0x1
|
|
cmp r4, 0x3
|
|
bgt _08016DAC
|
|
ldrb r2, [r5]
|
|
lsls r1, r2, 3
|
|
subs r1, r2
|
|
lsls r1, 2
|
|
add r1, r12
|
|
lsls r0, r4, 1
|
|
muls r2, r3
|
|
adds r0, r2
|
|
add r0, r8
|
|
ldrh r1, [r1, 0x4]
|
|
ldrh r0, [r0]
|
|
cmp r1, r0
|
|
bne _08016D8C
|
|
_08016DAC:
|
|
cmp r4, 0x4
|
|
bne _08016DDC
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
movs r1, 0
|
|
strh r1, [r0, 0x4]
|
|
ldrb r0, [r6]
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r7
|
|
ldrb r2, [r1, 0xB]
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1, 0xB]
|
|
b _08016E1E
|
|
.align 2, 0
|
|
_08016DD4: .4byte gDisableStructs
|
|
_08016DD8: .4byte gBattleMons
|
|
_08016DDC:
|
|
ldrb r0, [r6]
|
|
lsls r2, r0, 3
|
|
subs r2, r0
|
|
lsls r2, 2
|
|
adds r2, r7
|
|
ldrb r3, [r2, 0xB]
|
|
lsls r1, r3, 28
|
|
lsrs r1, 28
|
|
subs r1, 0x1
|
|
movs r0, 0xF
|
|
ands r1, r0
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r1
|
|
strb r0, [r2, 0xB]
|
|
adds r2, r1, 0
|
|
cmp r2, 0
|
|
bne _08016E1E
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
strh r2, [r0, 0x4]
|
|
ldr r0, _08016E28 @ =gUnknown_081D9148
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08016E1E:
|
|
ldr r1, _08016E2C @ =0x02000000
|
|
movs r7, 0xB0
|
|
lsls r7, 9
|
|
adds r1, r7
|
|
b _08017072
|
|
.align 2, 0
|
|
_08016E28: .4byte gUnknown_081D9148
|
|
_08016E2C: .4byte 0x02000000
|
|
_08016E30:
|
|
ldr r3, _08016E7C @ =gDisableStructs
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r2, r0, r3
|
|
ldrb r5, [r2, 0xE]
|
|
lsls r4, r5, 28
|
|
cmp r4, 0
|
|
beq _08016EE8
|
|
ldr r0, _08016E80 @ =gBattleMons
|
|
mov r8, r0
|
|
ldrb r0, [r2, 0xC]
|
|
lsls r0, 1
|
|
movs r7, 0x58
|
|
muls r1, r7
|
|
adds r0, r1
|
|
mov r1, r8
|
|
adds r1, 0xC
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r2, 0x6]
|
|
cmp r0, r1
|
|
beq _08016E84
|
|
movs r0, 0
|
|
strh r0, [r2, 0x6]
|
|
ldrb r0, [r6]
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldrb r2, [r1, 0xE]
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1, 0xE]
|
|
b _08016EE8
|
|
.align 2, 0
|
|
_08016E7C: .4byte gDisableStructs
|
|
_08016E80: .4byte gBattleMons
|
|
_08016E84:
|
|
lsrs r1, r4, 28
|
|
subs r1, 0x1
|
|
movs r0, 0xF
|
|
ands r1, r0
|
|
movs r4, 0x10
|
|
negs r4, r4
|
|
adds r0, r4, 0
|
|
ands r0, r5
|
|
orrs r0, r1
|
|
strb r0, [r2, 0xE]
|
|
cmp r1, 0
|
|
beq _08016EB8
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
muls r1, r7
|
|
ldrb r0, [r0, 0xC]
|
|
adds r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x24
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
bne _08016EE8
|
|
_08016EB8:
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
movs r1, 0
|
|
strh r1, [r0, 0x6]
|
|
ldrb r0, [r6]
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r3
|
|
ldrb r2, [r1, 0xE]
|
|
adds r0, r4, 0
|
|
ands r0, r2
|
|
strb r0, [r1, 0xE]
|
|
ldr r0, _08016EF4 @ =gUnknown_081D914F
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08016EE8:
|
|
ldr r1, _08016EF8 @ =0x02000000
|
|
movs r2, 0xB0
|
|
lsls r2, 9
|
|
adds r1, r2
|
|
b _08017072
|
|
.align 2, 0
|
|
_08016EF4: .4byte gUnknown_081D914F
|
|
_08016EF8: .4byte 0x02000000
|
|
_08016EFC:
|
|
ldr r0, _08016F1C @ =gStatuses3
|
|
ldrb r1, [r6]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
movs r0, 0x18
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _08016F14
|
|
adds r0, r2, 0
|
|
subs r0, 0x8
|
|
str r0, [r1]
|
|
_08016F14:
|
|
movs r1, 0xB0
|
|
lsls r1, 9
|
|
b _08017070
|
|
.align 2, 0
|
|
_08016F1C: .4byte gStatuses3
|
|
_08016F20:
|
|
ldr r2, _08016F60 @ =gDisableStructs
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r3, r0, r2
|
|
ldrb r2, [r3, 0x12]
|
|
lsls r1, r2, 28
|
|
cmp r1, 0
|
|
beq _08016F5A
|
|
lsrs r1, 28
|
|
subs r1, 0x1
|
|
movs r0, 0xF
|
|
ands r1, r0
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, 0x12]
|
|
cmp r1, 0
|
|
bne _08016F5A
|
|
ldr r0, _08016F64 @ =gStatuses3
|
|
ldrb r2, [r6]
|
|
lsls r2, 2
|
|
adds r2, r0
|
|
ldr r0, [r2]
|
|
ldr r1, _08016F68 @ =0xfffffdff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
_08016F5A:
|
|
movs r1, 0xB0
|
|
lsls r1, 9
|
|
b _08017070
|
|
.align 2, 0
|
|
_08016F60: .4byte gDisableStructs
|
|
_08016F64: .4byte gStatuses3
|
|
_08016F68: .4byte 0xfffffdff
|
|
_08016F6C:
|
|
ldr r2, _08016F98 @ =gDisableStructs
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r3, r0, r2
|
|
ldrb r2, [r3, 0x13]
|
|
lsls r1, r2, 28
|
|
cmp r1, 0
|
|
beq _08016F92
|
|
lsrs r1, 28
|
|
subs r1, 0x1
|
|
movs r0, 0xF
|
|
ands r1, r0
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, 0x13]
|
|
_08016F92:
|
|
movs r1, 0xB0
|
|
lsls r1, 9
|
|
b _08017070
|
|
.align 2, 0
|
|
_08016F98: .4byte gDisableStructs
|
|
_08016F9C:
|
|
ldr r4, _0801704C @ =gStatuses3
|
|
ldrb r0, [r6]
|
|
lsls r0, 2
|
|
adds r2, r0, r4
|
|
ldr r1, [r2]
|
|
movs r3, 0xC0
|
|
lsls r3, 5
|
|
adds r0, r1, 0
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08017042
|
|
ldr r5, _08017050 @ =0xfffff800
|
|
adds r0, r1, r5
|
|
str r0, [r2]
|
|
ldrb r2, [r6]
|
|
lsls r0, r2, 2
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
bne _08017042
|
|
ldr r3, _08017054 @ =gBattleMons
|
|
movs r5, 0x58
|
|
adds r1, r2, 0
|
|
muls r1, r5
|
|
adds r4, r3, 0
|
|
adds r4, 0x4C
|
|
adds r0, r1, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08017042
|
|
adds r0, r1, r3
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x48
|
|
beq _08017042
|
|
cmp r0, 0xF
|
|
beq _08017042
|
|
adds r0, r2, 0
|
|
bl sub_8025A44
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08017042
|
|
ldrb r0, [r6]
|
|
bl CancelMultiTurnMoves
|
|
bl Random
|
|
ldrb r1, [r6]
|
|
adds r2, r1, 0
|
|
muls r2, r5
|
|
adds r2, r4
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
adds r1, 0x2
|
|
ldr r0, [r2]
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
ldrb r0, [r6]
|
|
muls r0, r5
|
|
adds r0, r4
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r1, 0x28
|
|
movs r2, 0
|
|
movs r3, 0x4
|
|
bl EmitSetAttributes
|
|
ldrb r0, [r6]
|
|
bl MarkBufferBankForExecution
|
|
ldr r1, _08017058 @ =gEffectBank
|
|
ldrb r0, [r6]
|
|
strb r0, [r1]
|
|
ldr r0, _0801705C @ =gUnknown_081D964C
|
|
bl b_call_bc_move_exec
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08017042:
|
|
ldr r1, _08017060 @ =0x02000000
|
|
movs r7, 0xB0
|
|
lsls r7, 9
|
|
adds r1, r7
|
|
b _08017072
|
|
.align 2, 0
|
|
_0801704C: .4byte gStatuses3
|
|
_08017050: .4byte 0xfffff800
|
|
_08017054: .4byte gBattleMons
|
|
_08017058: .4byte gEffectBank
|
|
_0801705C: .4byte gUnknown_081D964C
|
|
_08017060: .4byte 0x02000000
|
|
_08017064:
|
|
movs r1, 0xB0
|
|
lsls r1, 9
|
|
add r1, r10
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r1, _08017084 @ =0x00016001
|
|
_08017070:
|
|
add r1, r10
|
|
_08017072:
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
_08017078:
|
|
mov r0, r9
|
|
cmp r0, 0
|
|
beq _08017088
|
|
_0801707E:
|
|
mov r0, r9
|
|
b _080170B8
|
|
.align 2, 0
|
|
_08017084: .4byte 0x00016001
|
|
_08017088:
|
|
ldr r7, _080170C8 @ =0x02000000
|
|
ldr r2, _080170CC @ =0x00016001
|
|
adds r0, r7, r2
|
|
ldr r1, _080170D0 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
mov r10, r7
|
|
mov r8, r1
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcs _080170AC
|
|
movs r3, 0xB0
|
|
lsls r3, 9
|
|
adds r0, r7, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x13
|
|
bhi _080170AC
|
|
bl _08016580
|
|
_080170AC:
|
|
ldr r0, _080170D4 @ =gHitMarker
|
|
ldr r1, [r0]
|
|
ldr r2, _080170D8 @ =0xfeffffdf
|
|
ands r1, r2
|
|
str r1, [r0]
|
|
movs r0, 0
|
|
_080170B8:
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080170C8: .4byte 0x02000000
|
|
_080170CC: .4byte 0x00016001
|
|
_080170D0: .4byte gNoOfAllBanks
|
|
_080170D4: .4byte gHitMarker
|
|
_080170D8: .4byte 0xfeffffdf
|
|
thumb_func_end TurnBasedEffects
|
|
|
|
thumb_func_start sub_80170DC
|
|
sub_80170DC: @ 80170DC
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r2, _08017108 @ =gHitMarker
|
|
ldr r0, [r2]
|
|
ldr r1, _0801710C @ =0x01000020
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
ldr r1, _08017110 @ =0x02000000
|
|
ldr r3, _08017114 @ =0x00016110
|
|
adds r0, r1, r3
|
|
ldrb r0, [r0]
|
|
mov r8, r1
|
|
cmp r0, 0
|
|
beq _08017118
|
|
cmp r0, 0x1
|
|
bne _08017104
|
|
b _08017258
|
|
_08017104:
|
|
b _08017380
|
|
.align 2, 0
|
|
_08017108: .4byte gHitMarker
|
|
_0801710C: .4byte 0x01000020
|
|
_08017110: .4byte 0x02000000
|
|
_08017114: .4byte 0x00016110
|
|
_08017118:
|
|
ldr r2, _0801715C @ =0x00016111
|
|
add r2, r8
|
|
ldr r0, _08017160 @ =gNoOfAllBanks
|
|
ldrb r1, [r2]
|
|
mov r9, r0
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
bcc _0801712A
|
|
b _08017248
|
|
_0801712A:
|
|
ldr r4, _08017164 @ =gActiveBank
|
|
adds r5, r2, 0
|
|
ldr r1, _08017168 @ =gWishFutureKnock
|
|
mov r12, r1
|
|
movs r2, 0x8
|
|
add r2, r12
|
|
mov r10, r2
|
|
mov r7, r12
|
|
adds r7, 0x18
|
|
ldr r6, _0801716C @ =gBattleTextBuff1
|
|
_0801713E:
|
|
ldrb r3, [r5]
|
|
strb r3, [r4]
|
|
ldr r0, _08017170 @ =gAbsentBankFlags
|
|
ldrb r1, [r0]
|
|
ldr r2, _08017174 @ =gBitTable
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _08017178
|
|
adds r0, r3, 0x1
|
|
strb r0, [r5]
|
|
b _0801723C
|
|
.align 2, 0
|
|
_0801715C: .4byte 0x00016111
|
|
_08017160: .4byte gNoOfAllBanks
|
|
_08017164: .4byte gActiveBank
|
|
_08017168: .4byte gWishFutureKnock
|
|
_0801716C: .4byte gBattleTextBuff1
|
|
_08017170: .4byte gAbsentBankFlags
|
|
_08017174: .4byte gBitTable
|
|
_08017178:
|
|
adds r0, r3, 0x1
|
|
strb r0, [r5]
|
|
ldr r1, _080171B4 @ =gWishFutureKnock
|
|
ldrb r0, [r4]
|
|
adds r1, r0, r1
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _0801723C
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
cmp r3, 0
|
|
bne _0801723C
|
|
ldr r1, _080171B8 @ =gBattleMons
|
|
ldrb r2, [r4]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
beq _0801723C
|
|
lsls r0, r2, 1
|
|
adds r0, r7
|
|
ldrh r0, [r0]
|
|
cmp r0, 0xF8
|
|
bne _080171C0
|
|
ldr r0, _080171BC @ =gBattleCommunication
|
|
strb r3, [r0, 0x5]
|
|
b _080171C6
|
|
.align 2, 0
|
|
_080171B4: .4byte gWishFutureKnock
|
|
_080171B8: .4byte gBattleMons
|
|
_080171BC: .4byte gBattleCommunication
|
|
_080171C0:
|
|
ldr r1, _08017220 @ =gBattleCommunication
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x5]
|
|
_080171C6:
|
|
movs r0, 0xFD
|
|
strb r0, [r6]
|
|
movs r0, 0x2
|
|
strb r0, [r6, 0x1]
|
|
ldrb r0, [r4]
|
|
lsls r0, 1
|
|
adds r0, r7
|
|
ldrh r0, [r0]
|
|
strb r0, [r6, 0x2]
|
|
ldrb r0, [r4]
|
|
lsls r0, 1
|
|
adds r0, r7
|
|
ldrh r0, [r0]
|
|
lsrs r0, 8
|
|
strb r0, [r6, 0x3]
|
|
movs r0, 0xFF
|
|
strb r0, [r6, 0x4]
|
|
ldr r3, _08017224 @ =gBankTarget
|
|
ldrb r0, [r4]
|
|
strb r0, [r3]
|
|
ldr r1, _08017228 @ =gBankAttacker
|
|
mov r0, r12
|
|
adds r0, 0x4
|
|
ldrb r2, [r4]
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r1, _0801722C @ =gBattleMoveDamage
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
add r0, r10
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldr r2, _08017230 @ =gSpecialStatuses
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r2, 0x4
|
|
adds r0, r2
|
|
ldr r1, _08017234 @ =0x0000ffff
|
|
str r1, [r0]
|
|
ldr r0, _08017238 @ =gUnknown_081D92D7
|
|
b _08017364
|
|
.align 2, 0
|
|
_08017220: .4byte gBattleCommunication
|
|
_08017224: .4byte gBankTarget
|
|
_08017228: .4byte gBankAttacker
|
|
_0801722C: .4byte gBattleMoveDamage
|
|
_08017230: .4byte gSpecialStatuses
|
|
_08017234: .4byte 0x0000ffff
|
|
_08017238: .4byte gUnknown_081D92D7
|
|
_0801723C:
|
|
ldrb r0, [r5]
|
|
mov r3, r9
|
|
ldrb r3, [r3]
|
|
cmp r0, r3
|
|
bcs _08017248
|
|
b _0801713E
|
|
_08017248:
|
|
ldr r1, _0801729C @ =0x00016110
|
|
add r1, r8
|
|
movs r2, 0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r0, _080172A0 @ =0x00016111
|
|
add r0, r8
|
|
strb r2, [r0]
|
|
_08017258:
|
|
ldr r2, _080172A0 @ =0x00016111
|
|
add r2, r8
|
|
ldr r0, _080172A4 @ =gNoOfAllBanks
|
|
ldrb r1, [r2]
|
|
mov r9, r0
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
bcc _0801726A
|
|
b _08017380
|
|
_0801726A:
|
|
ldr r5, _080172A8 @ =gActiveBank
|
|
adds r3, r2, 0
|
|
ldr r4, _080172AC @ =gBattleTextBuff1
|
|
ldr r7, _080172B0 @ =gDisableStructs
|
|
_08017272:
|
|
ldr r2, _080172B4 @ =gBankAttacker
|
|
ldr r1, _080172B8 @ =gTurnOrder
|
|
ldrb r0, [r3]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
strb r0, [r5]
|
|
ldr r0, _080172BC @ =gAbsentBankFlags
|
|
ldrb r1, [r0]
|
|
ldr r2, _080172C0 @ =gBitTable
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _080172C4
|
|
ldrb r0, [r3]
|
|
adds r0, 0x1
|
|
strb r0, [r3]
|
|
b _08017374
|
|
.align 2, 0
|
|
_0801729C: .4byte 0x00016110
|
|
_080172A0: .4byte 0x00016111
|
|
_080172A4: .4byte gNoOfAllBanks
|
|
_080172A8: .4byte gActiveBank
|
|
_080172AC: .4byte gBattleTextBuff1
|
|
_080172B0: .4byte gDisableStructs
|
|
_080172B4: .4byte gBankAttacker
|
|
_080172B8: .4byte gTurnOrder
|
|
_080172BC: .4byte gAbsentBankFlags
|
|
_080172C0: .4byte gBitTable
|
|
_080172C4:
|
|
ldrb r0, [r3]
|
|
adds r0, 0x1
|
|
strb r0, [r3]
|
|
ldr r6, _08017334 @ =gStatuses3
|
|
ldrb r2, [r5]
|
|
lsls r0, r2, 2
|
|
adds r0, r6
|
|
ldr r0, [r0]
|
|
movs r1, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08017374
|
|
movs r0, 0xFD
|
|
strb r0, [r4]
|
|
movs r0, 0x1
|
|
strb r0, [r4, 0x1]
|
|
strb r0, [r4, 0x2]
|
|
strb r0, [r4, 0x3]
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
ldrb r0, [r0, 0xF]
|
|
lsls r0, 28
|
|
lsrs r0, 28
|
|
strb r0, [r4, 0x4]
|
|
movs r0, 0xFF
|
|
strb r0, [r4, 0x5]
|
|
ldrb r2, [r5]
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r4, r0, r7
|
|
ldrb r3, [r4, 0xF]
|
|
lsls r1, r3, 28
|
|
cmp r1, 0
|
|
bne _08017348
|
|
lsls r2, 2
|
|
adds r2, r6
|
|
ldr r0, [r2]
|
|
movs r1, 0x21
|
|
negs r1, r1
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r3, _08017338 @ =gBattleMoveDamage
|
|
ldr r2, _0801733C @ =gBattleMons
|
|
ldrb r1, [r5]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
adds r0, r2
|
|
ldrh r0, [r0, 0x28]
|
|
str r0, [r3]
|
|
ldr r1, _08017340 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017344 @ =gUnknown_081D9202
|
|
b _08017360
|
|
.align 2, 0
|
|
_08017334: .4byte gStatuses3
|
|
_08017338: .4byte gBattleMoveDamage
|
|
_0801733C: .4byte gBattleMons
|
|
_08017340: .4byte gBattlescriptCurrInstr
|
|
_08017344: .4byte gUnknown_081D9202
|
|
_08017348:
|
|
lsrs r1, 28
|
|
subs r1, 0x1
|
|
movs r0, 0xF
|
|
ands r1, r0
|
|
movs r2, 0x10
|
|
negs r2, r2
|
|
adds r0, r2, 0
|
|
ands r0, r3
|
|
orrs r0, r1
|
|
strb r0, [r4, 0xF]
|
|
ldr r1, _0801736C @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017370 @ =gUnknown_081D921D
|
|
_08017360:
|
|
str r0, [r1]
|
|
ldr r0, [r1]
|
|
_08017364:
|
|
bl b_call_bc_move_exec
|
|
movs r0, 0x1
|
|
b _0801738C
|
|
.align 2, 0
|
|
_0801736C: .4byte gBattlescriptCurrInstr
|
|
_08017370: .4byte gUnknown_081D921D
|
|
_08017374:
|
|
ldrb r0, [r3]
|
|
mov r1, r9
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcs _08017380
|
|
b _08017272
|
|
_08017380:
|
|
ldr r2, _0801739C @ =gHitMarker
|
|
ldr r0, [r2]
|
|
ldr r1, _080173A0 @ =0xfeffffdf
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
movs r0, 0
|
|
_0801738C:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0801739C: .4byte gHitMarker
|
|
_080173A0: .4byte 0xfeffffdf
|
|
thumb_func_end sub_80170DC
|
|
|
|
thumb_func_start sub_80173A4
|
|
sub_80173A4: @ 80173A4
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
ldr r0, _080173C0 @ =gBattleTypeFlags
|
|
ldrh r1, [r0]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080173F8
|
|
b _080176AC
|
|
.align 2, 0
|
|
_080173C0: .4byte gBattleTypeFlags
|
|
_080173C4:
|
|
ldr r0, _080173D4 @ =gUnknown_081D8C72
|
|
bl b_call_bc_move_exec
|
|
ldr r1, _080173D8 @ =0x00016059
|
|
add r1, r10
|
|
movs r0, 0x2
|
|
b _080173E8
|
|
.align 2, 0
|
|
_080173D4: .4byte gUnknown_081D8C72
|
|
_080173D8: .4byte 0x00016059
|
|
_080173DC:
|
|
ldr r0, _080173F0 @ =gUnknown_081D8C7B
|
|
bl b_call_bc_move_exec
|
|
ldr r1, _080173F4 @ =0x00016059
|
|
add r1, r8
|
|
movs r0, 0x5
|
|
_080173E8:
|
|
strb r0, [r1]
|
|
_080173EA:
|
|
movs r0, 0x1
|
|
b _080176AE
|
|
.align 2, 0
|
|
_080173F0: .4byte gUnknown_081D8C7B
|
|
_080173F4: .4byte 0x00016059
|
|
_080173F8:
|
|
ldr r0, _08017414 @ =0x02000000
|
|
mov r9, r0
|
|
_080173FC:
|
|
ldr r0, _08017418 @ =0x00016059
|
|
add r0, r9
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x7
|
|
bls _08017408
|
|
b _080176A0
|
|
_08017408:
|
|
lsls r0, 2
|
|
ldr r1, _0801741C @ =_08017420
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08017414: .4byte 0x02000000
|
|
_08017418: .4byte 0x00016059
|
|
_0801741C: .4byte _08017420
|
|
.align 2, 0
|
|
_08017420:
|
|
.4byte _08017440
|
|
.4byte _08017490
|
|
.4byte _08017534
|
|
.4byte _0801757C
|
|
.4byte _0801758E
|
|
.4byte _080175FC
|
|
.4byte _08017638
|
|
.4byte _080176A0
|
|
_08017440:
|
|
ldr r1, _08017508 @ =0x0001605a
|
|
add r1, r9
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r1, _0801750C @ =0x00016059
|
|
add r1, r9
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
movs r5, 0
|
|
ldr r0, _08017510 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
bge _08017490
|
|
ldr r6, _08017514 @ =gAbsentBankFlags
|
|
_0801745E:
|
|
ldrb r0, [r6]
|
|
ldr r2, _08017518 @ =gBitTable
|
|
lsls r1, r5, 2
|
|
adds r1, r2
|
|
ldr r4, [r1]
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _08017486
|
|
lsls r0, r5, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x6
|
|
movs r2, 0x6
|
|
bl sub_8018018
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08017486
|
|
ldrb r0, [r6]
|
|
bics r0, r4
|
|
strb r0, [r6]
|
|
_08017486:
|
|
adds r5, 0x1
|
|
ldr r0, _08017510 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0801745E
|
|
_08017490:
|
|
ldr r1, _0801751C @ =0x02000000
|
|
mov r9, r1
|
|
ldr r0, _08017520 @ =gBank1
|
|
mov r12, r0
|
|
ldr r1, _08017524 @ =gBankTarget
|
|
mov r8, r1
|
|
mov r10, r9
|
|
ldr r5, _08017508 @ =0x0001605a
|
|
add r5, r9
|
|
ldr r7, _08017528 @ =gBattleMons
|
|
ldr r6, _0801752C @ =0x00016113
|
|
add r6, r9
|
|
_080174A8:
|
|
ldrb r0, [r5]
|
|
mov r1, r8
|
|
strb r0, [r1]
|
|
mov r1, r12
|
|
strb r0, [r1]
|
|
ldrb r3, [r5]
|
|
movs r0, 0x58
|
|
muls r0, r3
|
|
adds r0, r7
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
bne _080174EA
|
|
ldrb r2, [r6]
|
|
ldr r4, _08017518 @ =gBitTable
|
|
ldr r1, _08017530 @ =gBattlePartyID
|
|
lsls r0, r3, 1
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
bne _080174EA
|
|
ldr r0, _08017514 @ =gAbsentBankFlags
|
|
ldrb r1, [r0]
|
|
lsls r0, r3, 2
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _080174EA
|
|
b _080173C4
|
|
_080174EA:
|
|
ldrb r0, [r5]
|
|
adds r0, 0x1
|
|
strb r0, [r5]
|
|
ldr r1, _08017510 @ =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bne _080174A8
|
|
ldr r1, _0801750C @ =0x00016059
|
|
add r1, r9
|
|
movs r0, 0x3
|
|
strb r0, [r1]
|
|
b _080176A0
|
|
.align 2, 0
|
|
_08017508: .4byte 0x0001605a
|
|
_0801750C: .4byte 0x00016059
|
|
_08017510: .4byte gNoOfAllBanks
|
|
_08017514: .4byte gAbsentBankFlags
|
|
_08017518: .4byte gBitTable
|
|
_0801751C: .4byte 0x02000000
|
|
_08017520: .4byte gBank1
|
|
_08017524: .4byte gBankTarget
|
|
_08017528: .4byte gBattleMons
|
|
_0801752C: .4byte 0x00016113
|
|
_08017530: .4byte gBattlePartyID
|
|
_08017534:
|
|
ldr r0, _0801755C @ =gBank1
|
|
ldrb r0, [r0]
|
|
bl sub_8015740
|
|
ldr r2, _08017560 @ =0x02000000
|
|
ldr r0, _08017564 @ =0x0001605a
|
|
adds r1, r2, r0
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r1, _08017568 @ =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bne _08017570
|
|
ldr r0, _0801756C @ =0x00016059
|
|
adds r1, r2, r0
|
|
movs r0, 0x3
|
|
b _0801769C
|
|
.align 2, 0
|
|
_0801755C: .4byte gBank1
|
|
_08017560: .4byte 0x02000000
|
|
_08017564: .4byte 0x0001605a
|
|
_08017568: .4byte gNoOfAllBanks
|
|
_0801756C: .4byte 0x00016059
|
|
_08017570:
|
|
ldr r0, _08017578 @ =0x00016059
|
|
adds r1, r2, r0
|
|
movs r0, 0x1
|
|
b _0801769C
|
|
.align 2, 0
|
|
_08017578: .4byte 0x00016059
|
|
_0801757C:
|
|
ldr r1, _080175D8 @ =0x0001605a
|
|
add r1, r9
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r1, _080175DC @ =0x00016059
|
|
add r1, r9
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
_0801758E:
|
|
ldr r7, _080175E0 @ =gBank1
|
|
ldr r6, _080175E4 @ =gBankTarget
|
|
ldr r1, _080175E8 @ =0x02000000
|
|
mov r8, r1
|
|
ldr r3, _080175D8 @ =0x0001605a
|
|
add r3, r8
|
|
ldr r5, _080175EC @ =gBattleMons
|
|
ldr r4, _080175F0 @ =gBitTable
|
|
_0801759E:
|
|
ldrb r0, [r3]
|
|
strb r0, [r6]
|
|
strb r0, [r7]
|
|
ldrb r2, [r3]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r5
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
bne _080175C4
|
|
ldr r0, _080175F4 @ =gAbsentBankFlags
|
|
ldrb r1, [r0]
|
|
lsls r0, r2, 2
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _080175C4
|
|
b _080173DC
|
|
_080175C4:
|
|
adds r0, r2, 0x1
|
|
strb r0, [r3]
|
|
ldr r1, _080175F8 @ =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bne _0801759E
|
|
b _08017612
|
|
.align 2, 0
|
|
_080175D8: .4byte 0x0001605a
|
|
_080175DC: .4byte 0x00016059
|
|
_080175E0: .4byte gBank1
|
|
_080175E4: .4byte gBankTarget
|
|
_080175E8: .4byte 0x02000000
|
|
_080175EC: .4byte gBattleMons
|
|
_080175F0: .4byte gBitTable
|
|
_080175F4: .4byte gAbsentBankFlags
|
|
_080175F8: .4byte gNoOfAllBanks
|
|
_080175FC:
|
|
ldr r0, _0801761C @ =0x0001605a
|
|
add r0, r9
|
|
ldrb r1, [r0]
|
|
adds r1, 0x1
|
|
strb r1, [r0]
|
|
ldr r0, _08017620 @ =gNoOfAllBanks
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
bne _08017628
|
|
_08017612:
|
|
ldr r1, _08017624 @ =0x00016059
|
|
add r1, r9
|
|
movs r0, 0x6
|
|
strb r0, [r1]
|
|
b _080176A0
|
|
.align 2, 0
|
|
_0801761C: .4byte 0x0001605a
|
|
_08017620: .4byte gNoOfAllBanks
|
|
_08017624: .4byte 0x00016059
|
|
_08017628:
|
|
ldr r1, _08017634 @ =0x00016059
|
|
add r1, r9
|
|
movs r0, 0x4
|
|
strb r0, [r1]
|
|
b _080176A0
|
|
.align 2, 0
|
|
_08017634: .4byte 0x00016059
|
|
_08017638:
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0x9
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _08017652
|
|
b _080173EA
|
|
_08017652:
|
|
str r0, [sp]
|
|
movs r0, 0xB
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08017668
|
|
b _080173EA
|
|
_08017668:
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0x1
|
|
bl sub_801A02C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _0801767C
|
|
b _080173EA
|
|
_0801767C:
|
|
str r0, [sp]
|
|
movs r0, 0x6
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08017692
|
|
b _080173EA
|
|
_08017692:
|
|
ldr r2, _080176C0 @ =0x02000000
|
|
ldr r0, _080176C4 @ =0x00016059
|
|
adds r1, r2, r0
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
_0801769C:
|
|
strb r0, [r1]
|
|
mov r9, r2
|
|
_080176A0:
|
|
ldr r0, _080176C4 @ =0x00016059
|
|
add r0, r9
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x7
|
|
beq _080176AC
|
|
b _080173FC
|
|
_080176AC:
|
|
movs r0, 0
|
|
_080176AE:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080176C0: .4byte 0x02000000
|
|
_080176C4: .4byte 0x00016059
|
|
thumb_func_end sub_80173A4
|
|
|
|
thumb_func_start b_clear_atk_up_if_hit_flag_unless_enraged
|
|
b_clear_atk_up_if_hit_flag_unless_enraged: @ 80176C8
|
|
push {r4-r6,lr}
|
|
movs r3, 0
|
|
ldr r0, _08017708 @ =gNoOfAllBanks
|
|
adds r5, r0, 0
|
|
ldrb r0, [r5]
|
|
cmp r3, r0
|
|
bge _08017700
|
|
ldr r4, _0801770C @ =gChosenMovesByBanks
|
|
movs r6, 0x80
|
|
lsls r6, 16
|
|
ldr r2, _08017710 @ =gUnknown_02024AD0
|
|
_080176DE:
|
|
ldr r1, [r2]
|
|
adds r0, r1, 0
|
|
ands r0, r6
|
|
cmp r0, 0
|
|
beq _080176F4
|
|
ldrh r0, [r4]
|
|
cmp r0, 0x63
|
|
beq _080176F4
|
|
ldr r0, _08017714 @ =0xff7fffff
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
_080176F4:
|
|
adds r4, 0x2
|
|
adds r2, 0x58
|
|
adds r3, 0x1
|
|
ldrb r0, [r5]
|
|
cmp r3, r0
|
|
blt _080176DE
|
|
_08017700:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08017708: .4byte gNoOfAllBanks
|
|
_0801770C: .4byte gChosenMovesByBanks
|
|
_08017710: .4byte gUnknown_02024AD0
|
|
_08017714: .4byte 0xff7fffff
|
|
thumb_func_end b_clear_atk_up_if_hit_flag_unless_enraged
|
|
|
|
thumb_func_start sub_8017718
|
|
sub_8017718: @ 8017718
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x10
|
|
movs r0, 0
|
|
mov r9, r0
|
|
ldr r1, _08017734 @ =0x02016090
|
|
mov r10, r1
|
|
ldr r2, _08017738 @ =0xfffe9f70
|
|
add r2, r10
|
|
mov r8, r2
|
|
b _08017746
|
|
.align 2, 0
|
|
_08017734: .4byte 0x02016090
|
|
_08017738: .4byte 0xfffe9f70
|
|
_0801773C:
|
|
mov r4, r9
|
|
cmp r4, 0
|
|
beq _08017746
|
|
bl _08017FAC
|
|
_08017746:
|
|
ldr r0, _08017760 @ =0x000160e7
|
|
add r0, r8
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xE
|
|
bls _08017754
|
|
bl _08017F9E
|
|
_08017754:
|
|
lsls r0, 2
|
|
ldr r1, _08017764 @ =_08017768
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08017760: .4byte 0x000160e7
|
|
_08017764: .4byte _08017768
|
|
.align 2, 0
|
|
_08017768:
|
|
.4byte _080177A4
|
|
.4byte _080177E4
|
|
.4byte _08017920
|
|
.4byte _080179D8
|
|
.4byte _08017A50
|
|
.4byte _08017AC8
|
|
.4byte _08017B1C
|
|
.4byte _08017B98
|
|
.4byte _08017C1C
|
|
.4byte _08017C60
|
|
.4byte _08017D3C
|
|
.4byte _08017DC0
|
|
.4byte _08017E5C
|
|
.4byte _08017F48
|
|
.4byte _08017F9E
|
|
_080177A4:
|
|
ldr r1, _080177D0 @ =gBattleMons
|
|
ldr r3, _080177D4 @ =gBankAttacker
|
|
ldrb r2, [r3]
|
|
movs r0, 0x58
|
|
muls r2, r0
|
|
adds r1, 0x50
|
|
adds r2, r1
|
|
ldr r0, [r2]
|
|
ldr r1, _080177D8 @ =0xfdffffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r0, _080177DC @ =gStatuses3
|
|
ldrb r2, [r3]
|
|
lsls r2, 2
|
|
adds r2, r0
|
|
ldr r0, [r2]
|
|
ldr r1, _080177E0 @ =0xffffbfff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
bl _08017F94
|
|
.align 2, 0
|
|
_080177D0: .4byte gBattleMons
|
|
_080177D4: .4byte gBankAttacker
|
|
_080177D8: .4byte 0xfdffffff
|
|
_080177DC: .4byte gStatuses3
|
|
_080177E0: .4byte 0xffffbfff
|
|
_080177E4:
|
|
ldr r7, _0801784C @ =gBattleMons
|
|
ldr r4, _08017850 @ =gBankAttacker
|
|
ldrb r1, [r4]
|
|
movs r5, 0x58
|
|
adds r0, r1, 0
|
|
muls r0, r5
|
|
adds r6, r7, 0
|
|
adds r6, 0x4C
|
|
adds r0, r6
|
|
ldr r0, [r0]
|
|
movs r2, 0x7
|
|
mov r8, r2
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _08017804
|
|
b _08017D90
|
|
_08017804:
|
|
adds r0, r1, 0
|
|
bl sub_8025A44
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08017864
|
|
ldrb r0, [r4]
|
|
adds r2, r0, 0
|
|
muls r2, r5
|
|
adds r2, r6
|
|
ldr r0, [r2]
|
|
movs r1, 0x8
|
|
negs r1, r1
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldrb r0, [r4]
|
|
adds r2, r0, 0
|
|
muls r2, r5
|
|
adds r0, r7, 0
|
|
adds r0, 0x50
|
|
adds r2, r0
|
|
ldr r0, [r2]
|
|
ldr r1, _08017854 @ =0xf7ffffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _08017858 @ =gBattleCommunication
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x5]
|
|
ldr r1, _0801785C @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017860 @ =gUnknown_081D94FB
|
|
str r0, [r1]
|
|
movs r4, 0x2
|
|
mov r9, r4
|
|
b _08017D90
|
|
.align 2, 0
|
|
_0801784C: .4byte gBattleMons
|
|
_08017850: .4byte gBankAttacker
|
|
_08017854: .4byte 0xf7ffffff
|
|
_08017858: .4byte gBattleCommunication
|
|
_0801785C: .4byte gBattlescriptCurrInstr
|
|
_08017860: .4byte gUnknown_081D94FB
|
|
_08017864:
|
|
ldrb r0, [r4]
|
|
adds r1, r0, 0
|
|
muls r1, r5
|
|
adds r0, r1, r7
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
movs r3, 0x1
|
|
cmp r0, 0x30
|
|
bne _08017878
|
|
movs r3, 0x2
|
|
_08017878:
|
|
adds r2, r1, r6
|
|
ldr r1, [r2]
|
|
adds r0, r1, 0
|
|
mov r7, r8
|
|
ands r0, r7
|
|
cmp r0, r3
|
|
bcs _08017890
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
b _08017894
|
|
_08017890:
|
|
subs r0, r1, r3
|
|
str r0, [r2]
|
|
_08017894:
|
|
ldr r2, _080178D8 @ =gBattleMons
|
|
ldr r0, _080178DC @ =gBankAttacker
|
|
ldrb r1, [r0]
|
|
movs r0, 0x58
|
|
muls r1, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x4C
|
|
adds r0, r1, r0
|
|
ldr r4, [r0]
|
|
movs r0, 0x7
|
|
ands r4, r0
|
|
cmp r4, 0
|
|
beq _080178F0
|
|
ldr r0, _080178E0 @ =gCurrentMove
|
|
ldrh r0, [r0]
|
|
cmp r0, 0xAD
|
|
bne _080178B8
|
|
b _08017D90
|
|
_080178B8:
|
|
cmp r0, 0xD6
|
|
bne _080178BE
|
|
b _08017D90
|
|
_080178BE:
|
|
ldr r1, _080178E4 @ =gBattlescriptCurrInstr
|
|
ldr r0, _080178E8 @ =gUnknown_081D94EE
|
|
str r0, [r1]
|
|
ldr r2, _080178EC @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 12
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
movs r0, 0x2
|
|
mov r9, r0
|
|
b _08017D90
|
|
.align 2, 0
|
|
_080178D8: .4byte gBattleMons
|
|
_080178DC: .4byte gBankAttacker
|
|
_080178E0: .4byte gCurrentMove
|
|
_080178E4: .4byte gBattlescriptCurrInstr
|
|
_080178E8: .4byte gUnknown_081D94EE
|
|
_080178EC: .4byte gHitMarker
|
|
_080178F0:
|
|
adds r2, 0x50
|
|
adds r2, r1, r2
|
|
ldr r0, [r2]
|
|
ldr r1, _08017910 @ =0xf7ffffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r0, _08017914 @ =gBattleCommunication
|
|
strb r4, [r0, 0x5]
|
|
ldr r1, _08017918 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801791C @ =gUnknown_081D94FB
|
|
str r0, [r1]
|
|
movs r1, 0x2
|
|
b _08017D8E
|
|
.align 2, 0
|
|
_08017910: .4byte 0xf7ffffff
|
|
_08017914: .4byte gBattleCommunication
|
|
_08017918: .4byte gBattlescriptCurrInstr
|
|
_0801791C: .4byte gUnknown_081D94FB
|
|
_08017920:
|
|
ldr r1, _0801797C @ =gBattleMons
|
|
ldr r7, _08017980 @ =gBankAttacker
|
|
ldrb r0, [r7]
|
|
movs r6, 0x58
|
|
muls r0, r6
|
|
adds r5, r1, 0
|
|
adds r5, 0x4C
|
|
adds r0, r5
|
|
ldr r0, [r0]
|
|
movs r1, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801793C
|
|
b _08017F94
|
|
_0801793C:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x5
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
cmp r4, 0
|
|
beq _080179A8
|
|
ldr r2, _08017984 @ =gBattleMoves
|
|
ldr r0, _08017988 @ =gCurrentMove
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x7D
|
|
beq _08017998
|
|
ldr r1, _0801798C @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017990 @ =gUnknown_081D9545
|
|
str r0, [r1]
|
|
ldr r2, _08017994 @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 2
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
b _080179C8
|
|
.align 2, 0
|
|
_0801797C: .4byte gBattleMons
|
|
_08017980: .4byte gBankAttacker
|
|
_08017984: .4byte gBattleMoves
|
|
_08017988: .4byte gCurrentMove
|
|
_0801798C: .4byte gBattlescriptCurrInstr
|
|
_08017990: .4byte gUnknown_081D9545
|
|
_08017994: .4byte gHitMarker
|
|
_08017998:
|
|
ldr r2, _080179A0 @ =0x02000000
|
|
ldr r7, _080179A4 @ =0x000160e7
|
|
adds r1, r2, r7
|
|
b _08017D96
|
|
.align 2, 0
|
|
_080179A0: .4byte 0x02000000
|
|
_080179A4: .4byte 0x000160e7
|
|
_080179A8:
|
|
ldrb r0, [r7]
|
|
adds r2, r0, 0
|
|
muls r2, r6
|
|
adds r2, r5
|
|
ldr r0, [r2]
|
|
movs r1, 0x21
|
|
negs r1, r1
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _080179CC @ =gBattlescriptCurrInstr
|
|
ldr r0, _080179D0 @ =gUnknown_081D9552
|
|
str r0, [r1]
|
|
ldr r0, _080179D4 @ =gBattleCommunication
|
|
strb r4, [r0, 0x5]
|
|
_080179C8:
|
|
movs r0, 0x2
|
|
b _08017E3C
|
|
.align 2, 0
|
|
_080179CC: .4byte gBattlescriptCurrInstr
|
|
_080179D0: .4byte gUnknown_081D9552
|
|
_080179D4: .4byte gBattleCommunication
|
|
_080179D8:
|
|
ldr r1, _08017A30 @ =gBattleMons
|
|
ldr r0, _08017A34 @ =gBankAttacker
|
|
ldrb r2, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r1
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x36
|
|
beq _080179EE
|
|
b _08017D90
|
|
_080179EE:
|
|
ldr r0, _08017A38 @ =gDisableStructs
|
|
lsls r1, r2, 3
|
|
subs r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x18]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
bne _08017A02
|
|
b _08017D90
|
|
_08017A02:
|
|
adds r0, r2, 0
|
|
bl CancelMultiTurnMoves
|
|
ldr r2, _08017A3C @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 12
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
ldr r1, _08017A40 @ =gBattleCommunication
|
|
movs r0, 0
|
|
strb r0, [r1, 0x5]
|
|
ldr r1, _08017A44 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017A48 @ =gUnknown_081D9977
|
|
str r0, [r1]
|
|
ldr r2, _08017A4C @ =gBattleMoveFlags
|
|
ldrb r0, [r2]
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
movs r2, 0x1
|
|
mov r9, r2
|
|
b _08017D90
|
|
.align 2, 0
|
|
_08017A30: .4byte gBattleMons
|
|
_08017A34: .4byte gBankAttacker
|
|
_08017A38: .4byte gDisableStructs
|
|
_08017A3C: .4byte gHitMarker
|
|
_08017A40: .4byte gBattleCommunication
|
|
_08017A44: .4byte gBattlescriptCurrInstr
|
|
_08017A48: .4byte gUnknown_081D9977
|
|
_08017A4C: .4byte gBattleMoveFlags
|
|
_08017A50:
|
|
ldr r1, _08017AA4 @ =gBattleMons
|
|
ldr r3, _08017AA8 @ =gBankAttacker
|
|
ldrb r2, [r3]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r1, 0x50
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x80
|
|
lsls r0, 15
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08017A9C
|
|
ldr r0, _08017AAC @ =0xffbfffff
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
ldr r2, _08017AB0 @ =gDisableStructs
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0
|
|
strb r1, [r0, 0x19]
|
|
ldrb r0, [r3]
|
|
bl CancelMultiTurnMoves
|
|
ldr r1, _08017AB4 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017AB8 @ =gUnknown_081D7956
|
|
str r0, [r1]
|
|
ldr r2, _08017ABC @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 12
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
movs r7, 0x1
|
|
mov r9, r7
|
|
_08017A9C:
|
|
ldr r2, _08017AC0 @ =0x02000000
|
|
ldr r0, _08017AC4 @ =0x000160e7
|
|
adds r1, r2, r0
|
|
b _08017D96
|
|
.align 2, 0
|
|
_08017AA4: .4byte gBattleMons
|
|
_08017AA8: .4byte gBankAttacker
|
|
_08017AAC: .4byte 0xffbfffff
|
|
_08017AB0: .4byte gDisableStructs
|
|
_08017AB4: .4byte gBattlescriptCurrInstr
|
|
_08017AB8: .4byte gUnknown_081D7956
|
|
_08017ABC: .4byte gHitMarker
|
|
_08017AC0: .4byte 0x02000000
|
|
_08017AC4: .4byte 0x000160e7
|
|
_08017AC8:
|
|
ldr r1, _08017B08 @ =gBattleMons
|
|
ldr r3, _08017B0C @ =gBankAttacker
|
|
ldrb r2, [r3]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r1, 0x50
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08017AE2
|
|
b _08017D90
|
|
_08017AE2:
|
|
movs r0, 0x9
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
ldr r0, _08017B10 @ =gProtectStructs
|
|
ldrb r2, [r3]
|
|
lsls r2, 4
|
|
adds r2, r0
|
|
ldrb r0, [r2, 0x2]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x2]
|
|
ldrb r0, [r3]
|
|
bl CancelMultiTurnMoves
|
|
ldr r1, _08017B14 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017B18 @ =gUnknown_081D9573
|
|
b _08017D7E
|
|
.align 2, 0
|
|
_08017B08: .4byte gBattleMons
|
|
_08017B0C: .4byte gBankAttacker
|
|
_08017B10: .4byte gProtectStructs
|
|
_08017B14: .4byte gBattlescriptCurrInstr
|
|
_08017B18: .4byte gUnknown_081D9573
|
|
_08017B1C:
|
|
ldr r0, _08017B74 @ =gDisableStructs
|
|
ldr r3, _08017B78 @ =gBankAttacker
|
|
ldrb r2, [r3]
|
|
lsls r1, r2, 3
|
|
subs r1, r2
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldr r0, _08017B7C @ =gCurrentMove
|
|
ldrh r1, [r1, 0x4]
|
|
ldrh r0, [r0]
|
|
cmp r1, r0
|
|
beq _08017B36
|
|
b _08017D90
|
|
_08017B36:
|
|
cmp r1, 0
|
|
bne _08017B3C
|
|
b _08017D90
|
|
_08017B3C:
|
|
ldr r0, _08017B80 @ =gProtectStructs
|
|
lsls r2, 4
|
|
adds r2, r0
|
|
ldrb r0, [r2, 0x1]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x1]
|
|
ldr r0, _08017B84 @ =0x02000000
|
|
ldrb r1, [r3]
|
|
ldr r7, _08017B88 @ =0x00016003
|
|
adds r0, r7
|
|
strb r1, [r0]
|
|
ldrb r0, [r3]
|
|
bl CancelMultiTurnMoves
|
|
ldr r1, _08017B8C @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017B90 @ =gUnknown_081D9139
|
|
str r0, [r1]
|
|
ldr r2, _08017B94 @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 12
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
movs r0, 0x1
|
|
mov r9, r0
|
|
b _08017D90
|
|
.align 2, 0
|
|
_08017B74: .4byte gDisableStructs
|
|
_08017B78: .4byte gBankAttacker
|
|
_08017B7C: .4byte gCurrentMove
|
|
_08017B80: .4byte gProtectStructs
|
|
_08017B84: .4byte 0x02000000
|
|
_08017B88: .4byte 0x00016003
|
|
_08017B8C: .4byte gBattlescriptCurrInstr
|
|
_08017B90: .4byte gUnknown_081D9139
|
|
_08017B94: .4byte gHitMarker
|
|
_08017B98:
|
|
ldr r0, _08017BF4 @ =gDisableStructs
|
|
ldr r4, _08017BF8 @ =gBankAttacker
|
|
ldrb r3, [r4]
|
|
lsls r1, r3, 3
|
|
subs r1, r3
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x13]
|
|
lsls r0, 28
|
|
cmp r0, 0
|
|
beq _08017BEC
|
|
ldr r2, _08017BFC @ =gBattleMoves
|
|
ldr r0, _08017C00 @ =gCurrentMove
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0, 0x1]
|
|
cmp r0, 0
|
|
bne _08017BEC
|
|
ldr r0, _08017C04 @ =gProtectStructs
|
|
lsls r2, r3, 4
|
|
adds r2, r0
|
|
ldrb r0, [r2, 0x2]
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x2]
|
|
ldrb r0, [r4]
|
|
bl CancelMultiTurnMoves
|
|
ldr r1, _08017C08 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017C0C @ =gUnknown_081D938F
|
|
str r0, [r1]
|
|
ldr r2, _08017C10 @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 12
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
movs r7, 0x1
|
|
mov r9, r7
|
|
_08017BEC:
|
|
ldr r2, _08017C14 @ =0x02000000
|
|
ldr r0, _08017C18 @ =0x000160e7
|
|
adds r1, r2, r0
|
|
b _08017D96
|
|
.align 2, 0
|
|
_08017BF4: .4byte gDisableStructs
|
|
_08017BF8: .4byte gBankAttacker
|
|
_08017BFC: .4byte gBattleMoves
|
|
_08017C00: .4byte gCurrentMove
|
|
_08017C04: .4byte gProtectStructs
|
|
_08017C08: .4byte gBattlescriptCurrInstr
|
|
_08017C0C: .4byte gUnknown_081D938F
|
|
_08017C10: .4byte gHitMarker
|
|
_08017C14: .4byte 0x02000000
|
|
_08017C18: .4byte 0x000160e7
|
|
_08017C1C:
|
|
ldr r4, _08017C4C @ =gBankAttacker
|
|
ldrb r0, [r4]
|
|
ldr r1, _08017C50 @ =gCurrentMove
|
|
ldrh r1, [r1]
|
|
bl sub_8015D5C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08017C30
|
|
b _08017D90
|
|
_08017C30:
|
|
ldr r0, _08017C54 @ =gProtectStructs
|
|
ldrb r2, [r4]
|
|
lsls r2, 4
|
|
adds r2, r0
|
|
ldrb r0, [r2, 0x1]
|
|
movs r1, 0x20
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x1]
|
|
ldrb r0, [r4]
|
|
bl CancelMultiTurnMoves
|
|
ldr r1, _08017C58 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017C5C @ =gUnknown_081D9459
|
|
b _08017D7E
|
|
.align 2, 0
|
|
_08017C4C: .4byte gBankAttacker
|
|
_08017C50: .4byte gCurrentMove
|
|
_08017C54: .4byte gProtectStructs
|
|
_08017C58: .4byte gBattlescriptCurrInstr
|
|
_08017C5C: .4byte gUnknown_081D9459
|
|
_08017C60:
|
|
ldr r7, _08017CAC @ =gBattleMons
|
|
ldr r5, _08017CB0 @ =gBankAttacker
|
|
ldrb r0, [r5]
|
|
movs r6, 0x58
|
|
muls r0, r6
|
|
adds r4, r7, 0
|
|
adds r4, 0x50
|
|
adds r2, r0, r4
|
|
ldr r1, [r2]
|
|
movs r3, 0x7
|
|
adds r0, r1, 0
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
bne _08017C7E
|
|
b _08017F94
|
|
_08017C7E:
|
|
subs r0, r1, 0x1
|
|
str r0, [r2]
|
|
ldrb r0, [r5]
|
|
muls r0, r6
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08017D24
|
|
bl Random
|
|
movs r1, 0x1
|
|
movs r2, 0x1
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _08017CB8
|
|
ldr r1, _08017CB4 @ =gBattleCommunication
|
|
movs r0, 0
|
|
strb r0, [r1, 0x5]
|
|
bl b_movescr_stack_push_cursor
|
|
b _08017D02
|
|
.align 2, 0
|
|
_08017CAC: .4byte gBattleMons
|
|
_08017CB0: .4byte gBankAttacker
|
|
_08017CB4: .4byte gBattleCommunication
|
|
_08017CB8:
|
|
ldr r0, _08017D08 @ =gBattleCommunication
|
|
movs r4, 0x1
|
|
strb r1, [r0, 0x5]
|
|
ldr r1, _08017D0C @ =gBankTarget
|
|
ldrb r0, [r5]
|
|
strb r0, [r1]
|
|
ldrb r0, [r5]
|
|
adds r1, r0, 0
|
|
muls r1, r6
|
|
adds r1, r7
|
|
movs r0, 0x28
|
|
str r0, [sp]
|
|
str r2, [sp, 0x4]
|
|
ldrb r0, [r5]
|
|
str r0, [sp, 0x8]
|
|
ldrb r0, [r5]
|
|
str r0, [sp, 0xC]
|
|
adds r0, r1, 0
|
|
movs r2, 0x1
|
|
movs r3, 0
|
|
bl CalculateBaseDamage
|
|
ldr r1, _08017D10 @ =gBattleMoveDamage
|
|
str r0, [r1]
|
|
ldr r0, _08017D14 @ =gProtectStructs
|
|
ldrb r1, [r5]
|
|
lsls r1, 4
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
orrs r0, r4
|
|
strb r0, [r1, 0x1]
|
|
ldr r2, _08017D18 @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 12
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
_08017D02:
|
|
ldr r1, _08017D1C @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017D20 @ =gUnknown_081D9595
|
|
b _08017D2C
|
|
.align 2, 0
|
|
_08017D08: .4byte gBattleCommunication
|
|
_08017D0C: .4byte gBankTarget
|
|
_08017D10: .4byte gBattleMoveDamage
|
|
_08017D14: .4byte gProtectStructs
|
|
_08017D18: .4byte gHitMarker
|
|
_08017D1C: .4byte gBattlescriptCurrInstr
|
|
_08017D20: .4byte gUnknown_081D9595
|
|
_08017D24:
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _08017D34 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017D38 @ =gUnknown_081D95D4
|
|
_08017D2C:
|
|
str r0, [r1]
|
|
movs r7, 0x1
|
|
b _08017F8E
|
|
.align 2, 0
|
|
_08017D34: .4byte gBattlescriptCurrInstr
|
|
_08017D38: .4byte gUnknown_081D95D4
|
|
_08017D3C:
|
|
ldr r1, _08017DA0 @ =gBattleMons
|
|
ldr r4, _08017DA4 @ =gBankAttacker
|
|
ldrb r2, [r4]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r1, 0x4C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08017D90
|
|
bl Random
|
|
lsls r0, 16
|
|
movs r1, 0xC0
|
|
lsls r1, 10
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _08017D90
|
|
ldr r0, _08017DA8 @ =gProtectStructs
|
|
ldrb r2, [r4]
|
|
lsls r2, 4
|
|
adds r2, r0
|
|
ldrb r0, [r2]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldrb r0, [r4]
|
|
bl CancelMultiTurnMoves
|
|
ldr r1, _08017DAC @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017DB0 @ =gUnknown_081D9566
|
|
_08017D7E:
|
|
str r0, [r1]
|
|
ldr r2, _08017DB4 @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 12
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
movs r1, 0x1
|
|
_08017D8E:
|
|
mov r9, r1
|
|
_08017D90:
|
|
ldr r2, _08017DB8 @ =0x02000000
|
|
ldr r4, _08017DBC @ =0x000160e7
|
|
adds r1, r2, r4
|
|
_08017D96:
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
mov r8, r2
|
|
b _08017F9E
|
|
.align 2, 0
|
|
_08017DA0: .4byte gBattleMons
|
|
_08017DA4: .4byte gBankAttacker
|
|
_08017DA8: .4byte gProtectStructs
|
|
_08017DAC: .4byte gBattlescriptCurrInstr
|
|
_08017DB0: .4byte gUnknown_081D9566
|
|
_08017DB4: .4byte gHitMarker
|
|
_08017DB8: .4byte 0x02000000
|
|
_08017DBC: .4byte 0x000160e7
|
|
_08017DC0:
|
|
ldr r1, _08017DFC @ =gBattleMons
|
|
ldr r4, _08017E00 @ =gBankAttacker
|
|
ldrb r2, [r4]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
movs r0, 0xF0
|
|
lsls r0, 12
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _08017DDC
|
|
b _08017F94
|
|
_08017DDC:
|
|
lsrs r0, r1, 16
|
|
bl CountTrailingZeroBits
|
|
ldr r1, _08017E04 @ =0x02000000
|
|
ldr r7, _08017E08 @ =0x00016003
|
|
adds r1, r7
|
|
strb r0, [r1]
|
|
bl Random
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _08017E0C
|
|
bl b_movescr_stack_push_cursor
|
|
b _08017E34
|
|
.align 2, 0
|
|
_08017DFC: .4byte gBattleMons
|
|
_08017E00: .4byte gBankAttacker
|
|
_08017E04: .4byte 0x02000000
|
|
_08017E08: .4byte 0x00016003
|
|
_08017E0C:
|
|
ldr r0, _08017E44 @ =gUnknown_081D9608
|
|
bl b_movescr_stack_push
|
|
ldr r2, _08017E48 @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 12
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
ldr r0, _08017E4C @ =gProtectStructs
|
|
ldrb r2, [r4]
|
|
lsls r2, 4
|
|
adds r2, r0
|
|
ldrb r0, [r2, 0x1]
|
|
movs r1, 0x40
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x1]
|
|
ldrb r0, [r4]
|
|
bl CancelMultiTurnMoves
|
|
_08017E34:
|
|
ldr r1, _08017E50 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017E54 @ =gUnknown_081D95FB
|
|
str r0, [r1]
|
|
movs r0, 0x1
|
|
_08017E3C:
|
|
mov r9, r0
|
|
ldr r1, _08017E58 @ =0x02000000
|
|
mov r8, r1
|
|
b _08017F94
|
|
.align 2, 0
|
|
_08017E44: .4byte gUnknown_081D9608
|
|
_08017E48: .4byte gHitMarker
|
|
_08017E4C: .4byte gProtectStructs
|
|
_08017E50: .4byte gBattlescriptCurrInstr
|
|
_08017E54: .4byte gUnknown_081D95FB
|
|
_08017E58: .4byte 0x02000000
|
|
_08017E5C:
|
|
ldr r1, _08017E98 @ =gBattleMons
|
|
ldr r6, _08017E9C @ =gBankAttacker
|
|
ldrb r0, [r6]
|
|
movs r5, 0x58
|
|
muls r0, r5
|
|
adds r1, 0x50
|
|
adds r3, r0, r1
|
|
ldr r2, [r3]
|
|
movs r4, 0xC0
|
|
lsls r4, 2
|
|
adds r0, r2, 0
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
bne _08017E7A
|
|
b _08017F94
|
|
_08017E7A:
|
|
ldr r7, _08017EA0 @ =0xffffff00
|
|
adds r0, r2, r7
|
|
str r0, [r3]
|
|
ldrb r0, [r6]
|
|
muls r0, r5
|
|
adds r1, r0, r1
|
|
ldr r2, [r1]
|
|
adds r0, r2, 0
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _08017EAC
|
|
ldr r1, _08017EA4 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017EA8 @ =gUnknown_081D90A7
|
|
b _08017F38
|
|
.align 2, 0
|
|
_08017E98: .4byte gBattleMons
|
|
_08017E9C: .4byte gBankAttacker
|
|
_08017EA0: .4byte 0xffffff00
|
|
_08017EA4: .4byte gBattlescriptCurrInstr
|
|
_08017EA8: .4byte gUnknown_081D90A7
|
|
_08017EAC:
|
|
ldr r0, _08017F0C @ =0xffffefff
|
|
ands r2, r0
|
|
str r2, [r1]
|
|
ldr r2, _08017F10 @ =gTakenDmg
|
|
ldrb r0, [r6]
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
beq _08017F34
|
|
ldr r1, _08017F14 @ =gCurrentMove
|
|
movs r0, 0x75
|
|
strh r0, [r1]
|
|
ldrb r0, [r6]
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
lsls r0, 1
|
|
mov r1, r10
|
|
str r0, [r1]
|
|
ldr r4, _08017F18 @ =gBankTarget
|
|
ldr r1, _08017F1C @ =gTakenDmgBanks
|
|
ldrb r0, [r6]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r4]
|
|
ldr r0, _08017F20 @ =gAbsentBankFlags
|
|
ldrb r1, [r0]
|
|
ldr r2, _08017F24 @ =gBitTable
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _08017EFE
|
|
movs r0, 0x75
|
|
movs r1, 0x1
|
|
bl sub_801B5C0
|
|
strb r0, [r4]
|
|
_08017EFE:
|
|
ldr r1, _08017F28 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017F2C @ =gUnknown_081D90B2
|
|
str r0, [r1]
|
|
ldr r2, _08017F30 @ =0x02000000
|
|
mov r8, r2
|
|
b _08017F3A
|
|
.align 2, 0
|
|
_08017F0C: .4byte 0xffffefff
|
|
_08017F10: .4byte gTakenDmg
|
|
_08017F14: .4byte gCurrentMove
|
|
_08017F18: .4byte gBankTarget
|
|
_08017F1C: .4byte gTakenDmgBanks
|
|
_08017F20: .4byte gAbsentBankFlags
|
|
_08017F24: .4byte gBitTable
|
|
_08017F28: .4byte gBattlescriptCurrInstr
|
|
_08017F2C: .4byte gUnknown_081D90B2
|
|
_08017F30: .4byte 0x02000000
|
|
_08017F34:
|
|
ldr r1, _08017F40 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08017F44 @ =gUnknown_081D90F1
|
|
_08017F38:
|
|
str r0, [r1]
|
|
_08017F3A:
|
|
movs r4, 0x1
|
|
mov r9, r4
|
|
b _08017F94
|
|
.align 2, 0
|
|
_08017F40: .4byte gBattlescriptCurrInstr
|
|
_08017F44: .4byte gUnknown_081D90F1
|
|
_08017F48:
|
|
ldr r1, _08017FEC @ =gBattleMons
|
|
ldr r0, _08017FF0 @ =gBankAttacker
|
|
ldrb r2, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r1, 0x4C
|
|
adds r4, r0, r1
|
|
ldr r3, [r4]
|
|
movs r0, 0x20
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _08017F94
|
|
ldr r2, _08017FF4 @ =gBattleMoves
|
|
ldr r0, _08017FF8 @ =gCurrentMove
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x7D
|
|
bne _08017F8C
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r3, r0
|
|
str r3, [r4]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _08017FFC @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018000 @ =gUnknown_081D9552
|
|
str r0, [r1]
|
|
ldr r1, _08018004 @ =gBattleCommunication
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x5]
|
|
_08017F8C:
|
|
movs r7, 0x2
|
|
_08017F8E:
|
|
mov r9, r7
|
|
ldr r0, _08018008 @ =0x02000000
|
|
mov r8, r0
|
|
_08017F94:
|
|
ldr r1, _0801800C @ =0x000160e7
|
|
add r1, r8
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
_08017F9E:
|
|
ldr r0, _0801800C @ =0x000160e7
|
|
add r0, r8
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xE
|
|
beq _08017FAC
|
|
bl _0801773C
|
|
_08017FAC:
|
|
mov r1, r9
|
|
cmp r1, 0x2
|
|
bne _08017FD8
|
|
ldr r4, _08018010 @ =gActiveBank
|
|
ldr r0, _08017FF0 @ =gBankAttacker
|
|
ldrb r0, [r0]
|
|
strb r0, [r4]
|
|
ldrb r1, [r4]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
ldr r1, _08018014 @ =gUnknown_02024ACC
|
|
adds r0, r1
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r1, 0x28
|
|
movs r2, 0
|
|
movs r3, 0x4
|
|
bl EmitSetAttributes
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
_08017FD8:
|
|
mov r0, r9
|
|
add sp, 0x10
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08017FEC: .4byte gBattleMons
|
|
_08017FF0: .4byte gBankAttacker
|
|
_08017FF4: .4byte gBattleMoves
|
|
_08017FF8: .4byte gCurrentMove
|
|
_08017FFC: .4byte gBattlescriptCurrInstr
|
|
_08018000: .4byte gUnknown_081D9552
|
|
_08018004: .4byte gBattleCommunication
|
|
_08018008: .4byte 0x02000000
|
|
_0801800C: .4byte 0x000160e7
|
|
_08018010: .4byte gActiveBank
|
|
_08018014: .4byte gUnknown_02024ACC
|
|
thumb_func_end sub_8017718
|
|
|
|
thumb_func_start sub_8018018
|
|
sub_8018018: @ 8018018
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r3, r4, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r10, r1
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r9, r2
|
|
ldr r0, _08018044 @ =gBattleTypeFlags
|
|
ldrh r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08018048
|
|
movs r0, 0
|
|
b _08018198
|
|
.align 2, 0
|
|
_08018044: .4byte gBattleTypeFlags
|
|
_08018048:
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080180D4
|
|
adds r0, r4, 0
|
|
bl sub_803FC34
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
adds r0, r4, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
ldr r1, _080180CC @ =gEnemyParty
|
|
mov r8, r1
|
|
cmp r0, 0
|
|
bne _0801806E
|
|
ldr r2, _080180D0 @ =gPlayerParty
|
|
mov r8, r2
|
|
_0801806E:
|
|
adds r0, r7, 0
|
|
bl sub_803FBFC
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
lsls r0, r6, 1
|
|
adds r5, r0, r6
|
|
adds r0, r5, 0x3
|
|
cmp r5, r0
|
|
bge _080180BA
|
|
adds r7, r0, 0
|
|
_08018084:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
mov r1, r8
|
|
adds r4, r1, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _080180B4
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _080180B4
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
bne _080180BA
|
|
_080180B4:
|
|
adds r5, 0x1
|
|
cmp r5, r7
|
|
blt _08018084
|
|
_080180BA:
|
|
movs r1, 0
|
|
lsls r0, r6, 1
|
|
adds r0, r6
|
|
adds r0, 0x3
|
|
cmp r5, r0
|
|
bne _080180C8
|
|
movs r1, 0x1
|
|
_080180C8:
|
|
adds r0, r1, 0
|
|
b _08018198
|
|
.align 2, 0
|
|
_080180CC: .4byte gEnemyParty
|
|
_080180D0: .4byte gPlayerParty
|
|
_080180D4:
|
|
adds r0, r3, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _08018100
|
|
movs r0, 0x1
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
movs r0, 0x3
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r2, _080180FC @ =gEnemyParty
|
|
mov r8, r2
|
|
b _08018118
|
|
.align 2, 0
|
|
_080180FC: .4byte gEnemyParty
|
|
_08018100:
|
|
movs r0, 0
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
movs r0, 0x2
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, _080181A8 @ =gPlayerParty
|
|
mov r8, r0
|
|
_08018118:
|
|
mov r1, r10
|
|
cmp r1, 0x6
|
|
bne _08018128
|
|
ldr r1, _080181AC @ =gBattlePartyID
|
|
lsls r0, r7, 1
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
mov r10, r0
|
|
_08018128:
|
|
mov r2, r9
|
|
cmp r2, 0x6
|
|
bne _08018138
|
|
ldr r1, _080181AC @ =gBattlePartyID
|
|
lsls r0, r6, 1
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
mov r9, r0
|
|
_08018138:
|
|
movs r5, 0
|
|
_0801813A:
|
|
movs r0, 0x64
|
|
muls r0, r5
|
|
mov r1, r8
|
|
adds r4, r1, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _0801818A
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _0801818A
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
beq _0801818A
|
|
cmp r5, r10
|
|
beq _0801818A
|
|
cmp r5, r9
|
|
beq _0801818A
|
|
ldr r1, _080181B0 @ =0x02000000
|
|
ldr r2, _080181B4 @ =0x00016068
|
|
adds r0, r7, r2
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
beq _0801818A
|
|
adds r0, r6, r2
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
bne _08018190
|
|
_0801818A:
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _0801813A
|
|
_08018190:
|
|
movs r0, 0
|
|
cmp r5, 0x6
|
|
bne _08018198
|
|
movs r0, 0x1
|
|
_08018198:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080181A8: .4byte gPlayerParty
|
|
_080181AC: .4byte gBattlePartyID
|
|
_080181B0: .4byte 0x02000000
|
|
_080181B4: .4byte 0x00016068
|
|
thumb_func_end sub_8018018
|
|
|
|
thumb_func_start castform_switch
|
|
castform_switch: @ 80181B8
|
|
push {r4-r6,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r5, 0
|
|
ldr r1, _08018228 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r6
|
|
adds r4, r0, r1
|
|
ldrh r1, [r4]
|
|
ldr r0, _0801822C @ =SPECIES_CASTFORM
|
|
cmp r1, r0
|
|
bne _0801825C
|
|
adds r0, r4, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x3B
|
|
bne _0801825C
|
|
ldrh r0, [r4, 0x28]
|
|
cmp r0, 0
|
|
beq _0801825C
|
|
str r5, [sp]
|
|
movs r0, 0x13
|
|
movs r1, 0
|
|
movs r2, 0xD
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801820A
|
|
str r5, [sp]
|
|
movs r0, 0x13
|
|
movs r1, 0
|
|
movs r2, 0x4D
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08018230
|
|
_0801820A:
|
|
adds r2, r4, 0
|
|
adds r2, 0x21
|
|
ldrb r0, [r2]
|
|
cmp r0, 0
|
|
beq _08018230
|
|
adds r1, r4, 0
|
|
adds r1, 0x22
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _08018230
|
|
strb r5, [r2]
|
|
strb r5, [r1]
|
|
movs r0, 0x1
|
|
b _08018314
|
|
.align 2, 0
|
|
_08018228: .4byte gBattleMons
|
|
_0801822C: .4byte SPECIES_CASTFORM
|
|
_08018230:
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0x13
|
|
movs r1, 0
|
|
movs r2, 0xD
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _0801825C
|
|
str r0, [sp]
|
|
movs r0, 0x13
|
|
movs r1, 0
|
|
movs r2, 0x4D
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08018260
|
|
_0801825C:
|
|
movs r0, 0
|
|
b _08018314
|
|
_08018260:
|
|
ldr r1, _0801831C @ =gBattleWeather
|
|
ldrh r0, [r1]
|
|
movs r2, 0xE7
|
|
ands r2, r0
|
|
adds r4, r1, 0
|
|
cmp r2, 0
|
|
bne _0801828E
|
|
ldr r1, _08018320 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r6
|
|
adds r1, r0, r1
|
|
adds r3, r1, 0
|
|
adds r3, 0x21
|
|
ldrb r0, [r3]
|
|
cmp r0, 0
|
|
beq _0801828E
|
|
adds r1, 0x22
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _0801828E
|
|
strb r2, [r3]
|
|
strb r2, [r1]
|
|
movs r5, 0x1
|
|
_0801828E:
|
|
ldrh r1, [r4]
|
|
movs r0, 0x60
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080182BA
|
|
ldr r1, _08018320 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r6
|
|
adds r1, r0, r1
|
|
adds r2, r1, 0
|
|
adds r2, 0x21
|
|
ldrb r0, [r2]
|
|
cmp r0, 0xA
|
|
beq _080182BA
|
|
adds r1, 0x22
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xA
|
|
beq _080182BA
|
|
movs r0, 0xA
|
|
strb r0, [r2]
|
|
strb r0, [r1]
|
|
movs r5, 0x2
|
|
_080182BA:
|
|
ldrh r1, [r4]
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080182E6
|
|
ldr r1, _08018320 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r6
|
|
adds r1, r0, r1
|
|
adds r2, r1, 0
|
|
adds r2, 0x21
|
|
ldrb r0, [r2]
|
|
cmp r0, 0xB
|
|
beq _080182E6
|
|
adds r1, 0x22
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xB
|
|
beq _080182E6
|
|
movs r0, 0xB
|
|
strb r0, [r2]
|
|
strb r0, [r1]
|
|
movs r5, 0x3
|
|
_080182E6:
|
|
ldrh r1, [r4]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08018312
|
|
ldr r1, _08018320 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r6
|
|
adds r1, r0, r1
|
|
adds r2, r1, 0
|
|
adds r2, 0x21
|
|
ldrb r0, [r2]
|
|
cmp r0, 0xF
|
|
beq _08018312
|
|
adds r1, 0x22
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xF
|
|
beq _08018312
|
|
movs r0, 0xF
|
|
strb r0, [r2]
|
|
strb r0, [r1]
|
|
movs r5, 0x4
|
|
_08018312:
|
|
adds r0, r5, 0
|
|
_08018314:
|
|
add sp, 0x4
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0801831C: .4byte gBattleWeather
|
|
_08018320: .4byte gBattleMons
|
|
thumb_func_end castform_switch
|
|
|
|
thumb_func_start AbilityBattleEffects
|
|
AbilityBattleEffects: @ 8018324
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x28
|
|
ldr r4, [sp, 0x48]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x4]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r10, r1
|
|
lsls r2, 24
|
|
lsrs r6, r2, 24
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
mov r8, r3
|
|
lsls r4, 16
|
|
lsrs r4, 16
|
|
movs r0, 0
|
|
mov r9, r0
|
|
ldr r5, _08018380 @ =gBankAttacker
|
|
ldr r1, _08018384 @ =gNoOfAllBanks
|
|
ldrb r0, [r5]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _08018360
|
|
mov r1, r10
|
|
strb r1, [r5]
|
|
_08018360:
|
|
ldrb r0, [r5]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08018390
|
|
ldr r1, _08018388 @ =gBattlePartyID
|
|
ldrb r0, [r5]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _0801838C @ =gPlayerParty
|
|
b _080183A0
|
|
.align 2, 0
|
|
_08018380: .4byte gBankAttacker
|
|
_08018384: .4byte gNoOfAllBanks
|
|
_08018388: .4byte gBattlePartyID
|
|
_0801838C: .4byte gPlayerParty
|
|
_08018390:
|
|
ldr r1, _080183D0 @ =gBattlePartyID
|
|
ldrb r0, [r5]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _080183D4 @ =gEnemyParty
|
|
_080183A0:
|
|
adds r7, r1, r0
|
|
ldr r5, _080183D8 @ =gBankTarget
|
|
ldr r1, _080183DC @ =gNoOfAllBanks
|
|
ldrb r0, [r5]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _080183B2
|
|
mov r2, r10
|
|
strb r2, [r5]
|
|
_080183B2:
|
|
ldrb r0, [r5]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080183E4
|
|
ldr r1, _080183D0 @ =gBattlePartyID
|
|
ldrb r0, [r5]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _080183E0 @ =gPlayerParty
|
|
b _080183F4
|
|
.align 2, 0
|
|
_080183D0: .4byte gBattlePartyID
|
|
_080183D4: .4byte gEnemyParty
|
|
_080183D8: .4byte gBankTarget
|
|
_080183DC: .4byte gNoOfAllBanks
|
|
_080183E0: .4byte gPlayerParty
|
|
_080183E4:
|
|
ldr r1, _08018444 @ =gBattlePartyID
|
|
ldrb r0, [r5]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _08018448 @ =gEnemyParty
|
|
_080183F4:
|
|
adds r5, r1, r0
|
|
adds r0, r7, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0x8]
|
|
adds r0, r7, 0
|
|
movs r1, 0
|
|
bl GetMonData
|
|
str r0, [sp, 0x10]
|
|
adds r0, r5, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
str r0, [sp, 0xC]
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl GetMonData
|
|
str r0, [sp, 0x14]
|
|
ldr r0, _0801844C @ =gBattleTypeFlags
|
|
ldrh r1, [r0]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08018436
|
|
bl _08019F92
|
|
_08018436:
|
|
mov r3, r8
|
|
cmp r3, 0
|
|
beq _08018454
|
|
ldr r0, _08018450 @ =gLastUsedAbility
|
|
strb r3, [r0]
|
|
mov r8, r0
|
|
b _0801846A
|
|
.align 2, 0
|
|
_08018444: .4byte gBattlePartyID
|
|
_08018448: .4byte gEnemyParty
|
|
_0801844C: .4byte gBattleTypeFlags
|
|
_08018450: .4byte gLastUsedAbility
|
|
_08018454:
|
|
ldr r2, _08018474 @ =gLastUsedAbility
|
|
ldr r1, _08018478 @ =gBattleMons
|
|
movs r0, 0x58
|
|
mov r5, r10
|
|
muls r5, r0
|
|
adds r0, r5, 0
|
|
adds r0, r1
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
mov r8, r2
|
|
_0801846A:
|
|
cmp r4, 0
|
|
beq _0801847C
|
|
adds r3, r4, 0
|
|
b _08018480
|
|
.align 2, 0
|
|
_08018474: .4byte gLastUsedAbility
|
|
_08018478: .4byte gBattleMons
|
|
_0801847C:
|
|
ldr r0, _08018494 @ =gCurrentMove
|
|
ldrh r3, [r0]
|
|
_08018480:
|
|
ldr r1, _08018498 @ =0x02000000
|
|
ldr r2, _0801849C @ =0x0001601c
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
adds r7, r1, 0
|
|
cmp r0, 0
|
|
beq _080184A0
|
|
movs r4, 0x3F
|
|
ands r4, r0
|
|
b _080184AC
|
|
.align 2, 0
|
|
_08018494: .4byte gCurrentMove
|
|
_08018498: .4byte 0x02000000
|
|
_0801849C: .4byte 0x0001601c
|
|
_080184A0:
|
|
ldr r1, _080184C0 @ =gBattleMoves
|
|
lsls r0, r3, 1
|
|
adds r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r4, [r0, 0x2]
|
|
_080184AC:
|
|
ldr r5, [sp, 0x4]
|
|
cmp r5, 0x13
|
|
bls _080184B6
|
|
bl _08019F76
|
|
_080184B6:
|
|
lsls r0, r5, 2
|
|
ldr r1, _080184C4 @ =_080184C8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080184C0: .4byte gBattleMoves
|
|
_080184C4: .4byte _080184C8
|
|
.align 2, 0
|
|
_080184C8:
|
|
.4byte _08018518
|
|
.4byte _08018814
|
|
.4byte _08018A40
|
|
.4byte _08018AD8
|
|
.4byte _08018CF0
|
|
.4byte _08019448
|
|
.4byte _080197B4
|
|
.4byte _08019804
|
|
.4byte _08019880
|
|
.4byte _080198FC
|
|
.4byte _08019B1C
|
|
.4byte _08019940
|
|
.4byte _08019B60
|
|
.4byte _08019BBC
|
|
.4byte _08019C18
|
|
.4byte _08019D18
|
|
.4byte _08019D5C
|
|
.4byte _08019DB8
|
|
.4byte _08019F44
|
|
.4byte _08019CD4
|
|
_08018518:
|
|
ldr r2, _0801854C @ =gBankAttacker
|
|
ldr r0, _08018550 @ =gNoOfAllBanks
|
|
ldrb r1, [r2]
|
|
adds r5, r0, 0
|
|
ldrb r0, [r5]
|
|
cmp r1, r0
|
|
bcc _0801852A
|
|
mov r1, r10
|
|
strb r1, [r2]
|
|
_0801852A:
|
|
mov r2, r8
|
|
ldrb r0, [r2]
|
|
cmp r0, 0x2D
|
|
bne _08018534
|
|
b _080186B8
|
|
_08018534:
|
|
cmp r0, 0x2D
|
|
bgt _08018564
|
|
cmp r0, 0xD
|
|
bne _0801853E
|
|
b _080187DC
|
|
_0801853E:
|
|
cmp r0, 0xD
|
|
bgt _08018554
|
|
cmp r0, 0x2
|
|
bne _08018548
|
|
b _08018680
|
|
_08018548:
|
|
bl _08019F76
|
|
.align 2, 0
|
|
_0801854C: .4byte gBankAttacker
|
|
_08018550: .4byte gNoOfAllBanks
|
|
_08018554:
|
|
cmp r0, 0x16
|
|
bne _0801855A
|
|
b _08018728
|
|
_0801855A:
|
|
cmp r0, 0x24
|
|
bne _08018560
|
|
b _080187A0
|
|
_08018560:
|
|
bl _08019F76
|
|
_08018564:
|
|
cmp r0, 0x46
|
|
bne _0801856A
|
|
b _080186F0
|
|
_0801856A:
|
|
cmp r0, 0x46
|
|
bgt _08018578
|
|
cmp r0, 0x3B
|
|
bne _08018574
|
|
b _0801875C
|
|
_08018574:
|
|
bl _08019F76
|
|
_08018578:
|
|
cmp r0, 0x4D
|
|
bne _0801857E
|
|
b _080187DC
|
|
_0801857E:
|
|
cmp r0, 0xFF
|
|
beq _08018586
|
|
bl _08019F76
|
|
_08018586:
|
|
bl weather_get_current
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
subs r0, 0x3
|
|
cmp r0, 0xA
|
|
bhi _0801864C
|
|
lsls r0, 2
|
|
ldr r1, _080185A0 @ =_080185A4
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080185A0: .4byte _080185A4
|
|
.align 2, 0
|
|
_080185A4:
|
|
.4byte _080185D0
|
|
.4byte _0801864C
|
|
.4byte _080185D0
|
|
.4byte _0801864C
|
|
.4byte _0801864C
|
|
.4byte _080185F8
|
|
.4byte _0801864C
|
|
.4byte _0801864C
|
|
.4byte _0801864C
|
|
.4byte _08018620
|
|
.4byte _080185D0
|
|
_080185D0:
|
|
ldr r2, _080185EC @ =gBattleWeather
|
|
ldrh r1, [r2]
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801864C
|
|
movs r0, 0x5
|
|
strh r0, [r2]
|
|
ldr r0, _080185F0 @ =0x02000000
|
|
ldr r3, _080185F4 @ =0x000160a4
|
|
adds r2, r0, r3
|
|
movs r1, 0xA
|
|
b _08018638
|
|
.align 2, 0
|
|
_080185EC: .4byte gBattleWeather
|
|
_080185F0: .4byte 0x02000000
|
|
_080185F4: .4byte 0x000160a4
|
|
_080185F8:
|
|
ldr r3, _08018614 @ =gBattleWeather
|
|
ldrh r1, [r3]
|
|
movs r2, 0x18
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801864C
|
|
strh r2, [r3]
|
|
ldr r0, _08018618 @ =0x02000000
|
|
ldr r3, _0801861C @ =0x000160a4
|
|
adds r2, r0, r3
|
|
movs r1, 0xC
|
|
b _08018638
|
|
.align 2, 0
|
|
_08018614: .4byte gBattleWeather
|
|
_08018618: .4byte 0x02000000
|
|
_0801861C: .4byte 0x000160a4
|
|
_08018620:
|
|
ldr r3, _08018668 @ =gBattleWeather
|
|
ldrh r1, [r3]
|
|
movs r2, 0x60
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801864C
|
|
strh r2, [r3]
|
|
ldr r0, _0801866C @ =0x02000000
|
|
ldr r3, _08018670 @ =0x000160a4
|
|
adds r2, r0, r3
|
|
movs r1, 0xB
|
|
_08018638:
|
|
strb r1, [r2]
|
|
ldr r5, _08018674 @ =0x00016003
|
|
adds r0, r5
|
|
mov r1, r10
|
|
strb r1, [r0]
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_0801864C:
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
bne _08018656
|
|
bl _08019F92
|
|
_08018656:
|
|
bl weather_get_current
|
|
ldr r1, _08018678 @ =gBattleCommunication
|
|
strb r0, [r1, 0x5]
|
|
ldr r0, _0801867C @ =gUnknown_081D901D
|
|
bl b_push_move_exec
|
|
bl _08019F76
|
|
.align 2, 0
|
|
_08018668: .4byte gBattleWeather
|
|
_0801866C: .4byte 0x02000000
|
|
_08018670: .4byte 0x000160a4
|
|
_08018674: .4byte 0x00016003
|
|
_08018678: .4byte gBattleCommunication
|
|
_0801867C: .4byte gUnknown_081D901D
|
|
_08018680:
|
|
ldr r2, _080186A8 @ =gBattleWeather
|
|
ldrh r1, [r2]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08018690
|
|
bl _08019F76
|
|
_08018690:
|
|
movs r0, 0x5
|
|
strh r0, [r2]
|
|
ldr r0, _080186AC @ =gUnknown_081D9704
|
|
bl b_push_move_exec
|
|
ldr r0, _080186B0 @ =0x02000000
|
|
ldr r3, _080186B4 @ =0x00016003
|
|
adds r0, r3
|
|
mov r5, r10
|
|
strb r5, [r0]
|
|
bl _08019F22
|
|
.align 2, 0
|
|
_080186A8: .4byte gBattleWeather
|
|
_080186AC: .4byte gUnknown_081D9704
|
|
_080186B0: .4byte 0x02000000
|
|
_080186B4: .4byte 0x00016003
|
|
_080186B8:
|
|
ldr r2, _080186E0 @ =gBattleWeather
|
|
ldrh r1, [r2]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080186C8
|
|
bl _08019F76
|
|
_080186C8:
|
|
movs r0, 0x18
|
|
strh r0, [r2]
|
|
ldr r0, _080186E4 @ =gUnknown_081D9744
|
|
bl b_push_move_exec
|
|
ldr r0, _080186E8 @ =0x02000000
|
|
ldr r1, _080186EC @ =0x00016003
|
|
adds r0, r1
|
|
mov r2, r10
|
|
strb r2, [r0]
|
|
bl _08019F22
|
|
.align 2, 0
|
|
_080186E0: .4byte gBattleWeather
|
|
_080186E4: .4byte gUnknown_081D9744
|
|
_080186E8: .4byte 0x02000000
|
|
_080186EC: .4byte 0x00016003
|
|
_080186F0:
|
|
ldr r2, _08018718 @ =gBattleWeather
|
|
ldrh r1, [r2]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08018700
|
|
bl _08019F76
|
|
_08018700:
|
|
movs r0, 0x60
|
|
strh r0, [r2]
|
|
ldr r0, _0801871C @ =gUnknown_081D97FE
|
|
bl b_push_move_exec
|
|
ldr r0, _08018720 @ =0x02000000
|
|
ldr r3, _08018724 @ =0x00016003
|
|
adds r0, r3
|
|
mov r5, r10
|
|
strb r5, [r0]
|
|
bl _08019F22
|
|
.align 2, 0
|
|
_08018718: .4byte gBattleWeather
|
|
_0801871C: .4byte gUnknown_081D97FE
|
|
_08018720: .4byte 0x02000000
|
|
_08018724: .4byte 0x00016003
|
|
_08018728:
|
|
ldr r0, _08018754 @ =gSpecialStatuses
|
|
mov r1, r10
|
|
lsls r2, r1, 2
|
|
adds r1, r2, r1
|
|
lsls r1, 2
|
|
adds r3, r1, r0
|
|
ldrb r0, [r3]
|
|
lsls r0, 28
|
|
cmp r0, 0
|
|
bge _08018740
|
|
bl _08019F76
|
|
_08018740:
|
|
ldr r1, _08018758 @ =gStatuses3
|
|
adds r1, r2, r1
|
|
ldr r0, [r1]
|
|
movs r2, 0x80
|
|
lsls r2, 12
|
|
orrs r0, r2
|
|
str r0, [r1]
|
|
ldrb r0, [r3]
|
|
movs r1, 0x8
|
|
b _080187CA
|
|
.align 2, 0
|
|
_08018754: .4byte gSpecialStatuses
|
|
_08018758: .4byte gStatuses3
|
|
_0801875C:
|
|
mov r0, r10
|
|
bl castform_switch
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
cmp r0, 0
|
|
bne _08018770
|
|
bl _08019F92
|
|
_08018770:
|
|
ldr r0, _08018790 @ =gUnknown_081D977D
|
|
bl b_push_move_exec
|
|
ldr r0, _08018794 @ =0x02000000
|
|
ldr r2, _08018798 @ =0x00016003
|
|
adds r1, r0, r2
|
|
mov r3, r10
|
|
strb r3, [r1]
|
|
mov r1, r9
|
|
subs r1, 0x1
|
|
ldr r5, _0801879C @ =0x0001609b
|
|
adds r0, r5
|
|
strb r1, [r0]
|
|
bl _08019F76
|
|
.align 2, 0
|
|
_08018790: .4byte gUnknown_081D977D
|
|
_08018794: .4byte 0x02000000
|
|
_08018798: .4byte 0x00016003
|
|
_0801879C: .4byte 0x0001609b
|
|
_080187A0:
|
|
ldr r0, _080187D4 @ =gSpecialStatuses
|
|
mov r1, r10
|
|
lsls r2, r1, 2
|
|
adds r1, r2, r1
|
|
lsls r1, 2
|
|
adds r3, r1, r0
|
|
ldrb r0, [r3]
|
|
lsls r0, 27
|
|
cmp r0, 0
|
|
bge _080187B8
|
|
bl _08019F76
|
|
_080187B8:
|
|
ldr r1, _080187D8 @ =gStatuses3
|
|
adds r1, r2, r1
|
|
ldr r0, [r1]
|
|
movs r2, 0x80
|
|
lsls r2, 13
|
|
orrs r0, r2
|
|
str r0, [r1]
|
|
ldrb r0, [r3]
|
|
movs r1, 0x10
|
|
_080187CA:
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
bl _08019F76
|
|
.align 2, 0
|
|
_080187D4: .4byte gSpecialStatuses
|
|
_080187D8: .4byte gStatuses3
|
|
_080187DC:
|
|
movs r6, 0
|
|
ldrb r5, [r5]
|
|
cmp r6, r5
|
|
bcc _080187E8
|
|
bl _08019F76
|
|
_080187E8:
|
|
adds r0, r6, 0
|
|
bl castform_switch
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
cmp r0, 0
|
|
beq _080187FC
|
|
bl _08019E14
|
|
_080187FC:
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, _08018810 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r6, r0
|
|
bcc _080187E8
|
|
bl _08019F76
|
|
.align 2, 0
|
|
_08018810: .4byte gNoOfAllBanks
|
|
_08018814:
|
|
ldr r2, _08018844 @ =gBattleMons
|
|
movs r0, 0x58
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r4, r1, r2
|
|
ldrh r0, [r4, 0x28]
|
|
cmp r0, 0
|
|
bne _08018828
|
|
bl _08019F76
|
|
_08018828:
|
|
ldr r0, _08018848 @ =gBankAttacker
|
|
mov r3, r10
|
|
strb r3, [r0]
|
|
mov r3, r8
|
|
ldrb r5, [r3]
|
|
cmp r5, 0x2C
|
|
beq _0801885A
|
|
cmp r5, 0x2C
|
|
bgt _0801884C
|
|
cmp r5, 0x3
|
|
bne _08018840
|
|
b _080189B8
|
|
_08018840:
|
|
bl _08019F76
|
|
.align 2, 0
|
|
_08018844: .4byte gBattleMons
|
|
_08018848: .4byte gBankAttacker
|
|
_0801884C:
|
|
cmp r5, 0x36
|
|
bne _08018852
|
|
b _08018A18
|
|
_08018852:
|
|
cmp r5, 0x3D
|
|
beq _080188DC
|
|
bl _08019F76
|
|
_0801885A:
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0x13
|
|
movs r1, 0
|
|
movs r2, 0xD
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _08018876
|
|
bl _08019F76
|
|
_08018876:
|
|
str r0, [sp]
|
|
movs r0, 0x13
|
|
movs r1, 0
|
|
movs r2, 0x4D
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0801888E
|
|
bl _08019F76
|
|
_0801888E:
|
|
ldr r0, _080188D0 @ =gBattleWeather
|
|
ldrh r1, [r0]
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801889E
|
|
bl _08019F76
|
|
_0801889E:
|
|
ldrh r0, [r4, 0x2C]
|
|
ldrh r1, [r4, 0x28]
|
|
cmp r0, r1
|
|
bhi _080188AA
|
|
bl _08019F76
|
|
_080188AA:
|
|
mov r2, r8
|
|
strb r5, [r2]
|
|
ldr r0, _080188D4 @ =gUnknown_081D9730
|
|
bl b_push_move_exec
|
|
ldr r1, _080188D8 @ =gBattleMoveDamage
|
|
ldrh r0, [r4, 0x2C]
|
|
lsrs r0, 4
|
|
str r0, [r1]
|
|
cmp r0, 0
|
|
bne _080188C4
|
|
movs r0, 0x1
|
|
str r0, [r1]
|
|
_080188C4:
|
|
ldr r0, [r1]
|
|
negs r0, r0
|
|
str r0, [r1]
|
|
bl _08019F22
|
|
.align 2, 0
|
|
_080188D0: .4byte gBattleWeather
|
|
_080188D4: .4byte gUnknown_081D9730
|
|
_080188D8: .4byte gBattleMoveDamage
|
|
_080188DC:
|
|
adds r0, r2, 0
|
|
adds r0, 0x4C
|
|
adds r5, r1, r0
|
|
ldrb r0, [r5]
|
|
cmp r0, 0
|
|
bne _080188EC
|
|
bl _08019F76
|
|
_080188EC:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x3
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
cmp r4, 0
|
|
beq _08018906
|
|
bl _08019F76
|
|
_08018906:
|
|
ldr r0, [r5]
|
|
movs r1, 0x88
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08018918
|
|
ldr r0, _08018990 @ =gBattleTextBuff1
|
|
ldr r1, _08018994 @ =gStatusConditionString_PoisonJpn
|
|
bl StringCopy
|
|
_08018918:
|
|
ldr r0, [r5]
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801892A
|
|
ldr r0, _08018990 @ =gBattleTextBuff1
|
|
ldr r1, _08018998 @ =gStatusConditionString_SleepJpn
|
|
bl StringCopy
|
|
_0801892A:
|
|
ldr r0, [r5]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801893C
|
|
ldr r0, _08018990 @ =gBattleTextBuff1
|
|
ldr r1, _0801899C @ =gStatusConditionString_ParalysisJpn
|
|
bl StringCopy
|
|
_0801893C:
|
|
ldr r0, [r5]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801894E
|
|
ldr r0, _08018990 @ =gBattleTextBuff1
|
|
ldr r1, _080189A0 @ =gStatusConditionString_BurnJpn
|
|
bl StringCopy
|
|
_0801894E:
|
|
ldr r0, [r5]
|
|
movs r1, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08018960
|
|
ldr r0, _08018990 @ =gBattleTextBuff1
|
|
ldr r1, _080189A4 @ =gStatusConditionString_IceJpn
|
|
bl StringCopy
|
|
_08018960:
|
|
str r4, [r5]
|
|
ldr r0, _080189A8 @ =0x02000000
|
|
ldr r4, _080189AC @ =gActiveBank
|
|
mov r3, r10
|
|
strb r3, [r4]
|
|
ldr r1, _080189B0 @ =0x00016003
|
|
adds r0, r1
|
|
strb r3, [r0]
|
|
ldr r0, _080189B4 @ =gUnknown_081D9758
|
|
bl b_push_move_exec
|
|
str r5, [sp]
|
|
movs r0, 0
|
|
movs r1, 0x28
|
|
movs r2, 0
|
|
movs r3, 0x4
|
|
bl EmitSetAttributes
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
bl _08019F22
|
|
.align 2, 0
|
|
_08018990: .4byte gBattleTextBuff1
|
|
_08018994: .4byte gStatusConditionString_PoisonJpn
|
|
_08018998: .4byte gStatusConditionString_SleepJpn
|
|
_0801899C: .4byte gStatusConditionString_ParalysisJpn
|
|
_080189A0: .4byte gStatusConditionString_BurnJpn
|
|
_080189A4: .4byte gStatusConditionString_IceJpn
|
|
_080189A8: .4byte 0x02000000
|
|
_080189AC: .4byte gActiveBank
|
|
_080189B0: .4byte 0x00016003
|
|
_080189B4: .4byte gUnknown_081D9758
|
|
_080189B8:
|
|
ldrb r2, [r4, 0x1B]
|
|
movs r0, 0x1B
|
|
ldrsb r0, [r4, r0]
|
|
cmp r0, 0xB
|
|
ble _080189C6
|
|
bl _08019F76
|
|
_080189C6:
|
|
ldr r0, _08018A04 @ =gDisableStructs
|
|
mov r3, r10
|
|
lsls r1, r3, 3
|
|
subs r1, r3
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x16]
|
|
cmp r0, 0x2
|
|
bne _080189DC
|
|
bl _08019F76
|
|
_080189DC:
|
|
adds r0, r2, 0x1
|
|
movs r2, 0
|
|
strb r0, [r4, 0x1B]
|
|
ldr r5, _08018A08 @ =0x000160a4
|
|
adds r1, r7, r5
|
|
movs r0, 0x11
|
|
strb r0, [r1]
|
|
ldr r1, _08018A0C @ =0x000160a5
|
|
adds r0, r7, r1
|
|
strb r2, [r0]
|
|
ldr r0, _08018A10 @ =gUnknown_081D9718
|
|
bl b_push_move_exec
|
|
ldr r2, _08018A14 @ =0x00016003
|
|
adds r0, r7, r2
|
|
mov r3, r10
|
|
strb r3, [r0]
|
|
bl _08019F22
|
|
.align 2, 0
|
|
_08018A04: .4byte gDisableStructs
|
|
_08018A08: .4byte 0x000160a4
|
|
_08018A0C: .4byte 0x000160a5
|
|
_08018A10: .4byte gUnknown_081D9718
|
|
_08018A14: .4byte 0x00016003
|
|
_08018A18:
|
|
ldr r2, _08018A3C @ =gDisableStructs
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r3, [r1, 0x18]
|
|
lsls r0, r3, 31
|
|
lsrs r0, 31
|
|
movs r2, 0x1
|
|
eors r2, r0
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
strb r0, [r1, 0x18]
|
|
bl _08019F76
|
|
.align 2, 0
|
|
_08018A3C: .4byte gDisableStructs
|
|
_08018A40:
|
|
mov r5, r8
|
|
ldrb r0, [r5]
|
|
cmp r0, 0x2B
|
|
beq _08018A4C
|
|
bl _08019F76
|
|
_08018A4C:
|
|
movs r4, 0
|
|
ldr r0, _08018ABC @ =gUnknown_081FA724
|
|
ldrh r2, [r0]
|
|
ldr r5, _08018AC0 @ =0x0000ffff
|
|
adds r1, r0, 0
|
|
cmp r2, r5
|
|
bne _08018A5E
|
|
bl _08019F76
|
|
_08018A5E:
|
|
cmp r2, r3
|
|
beq _08018A76
|
|
adds r2, r1, 0
|
|
_08018A64:
|
|
adds r2, 0x2
|
|
adds r4, 0x1
|
|
ldrh r0, [r2]
|
|
cmp r0, r5
|
|
bne _08018A72
|
|
bl _08019F76
|
|
_08018A72:
|
|
cmp r0, r3
|
|
bne _08018A64
|
|
_08018A76:
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
ldr r0, _08018AC0 @ =0x0000ffff
|
|
cmp r1, r0
|
|
bne _08018A86
|
|
bl _08019F76
|
|
_08018A86:
|
|
ldr r1, _08018AC4 @ =gBattleMons
|
|
ldr r0, _08018AC8 @ =gBankAttacker
|
|
ldrb r2, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08018AAC
|
|
ldr r0, _08018ACC @ =gHitMarker
|
|
ldr r1, [r0]
|
|
movs r2, 0x80
|
|
lsls r2, 4
|
|
orrs r1, r2
|
|
str r1, [r0]
|
|
_08018AAC:
|
|
ldr r1, _08018AD0 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018AD4 @ =gUnknown_081D98F3
|
|
str r0, [r1]
|
|
movs r0, 0x1
|
|
mov r9, r0
|
|
bl _08019F7C
|
|
.align 2, 0
|
|
_08018ABC: .4byte gUnknown_081FA724
|
|
_08018AC0: .4byte 0x0000ffff
|
|
_08018AC4: .4byte gBattleMons
|
|
_08018AC8: .4byte gBankAttacker
|
|
_08018ACC: .4byte gHitMarker
|
|
_08018AD0: .4byte gBattlescriptCurrInstr
|
|
_08018AD4: .4byte gUnknown_081D98F3
|
|
_08018AD8:
|
|
cmp r3, 0
|
|
bne _08018AE0
|
|
bl _08019F76
|
|
_08018AE0:
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xB
|
|
beq _08018B50
|
|
cmp r0, 0xB
|
|
bgt _08018AF2
|
|
cmp r0, 0xA
|
|
beq _08018AF8
|
|
b _08018C6A
|
|
_08018AF2:
|
|
cmp r0, 0x12
|
|
beq _08018BA8
|
|
b _08018C6A
|
|
_08018AF8:
|
|
cmp r4, 0xD
|
|
beq _08018AFE
|
|
b _08018C6A
|
|
_08018AFE:
|
|
ldr r0, _08018B28 @ =gBattleMoves
|
|
lsls r1, r3, 1
|
|
adds r1, r3
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
cmp r0, 0
|
|
bne _08018B10
|
|
b _08018C6A
|
|
_08018B10:
|
|
ldr r1, _08018B2C @ =gProtectStructs
|
|
ldr r0, _08018B30 @ =gBankAttacker
|
|
ldrb r0, [r0]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x2]
|
|
lsls r0, 28
|
|
cmp r0, 0
|
|
bge _08018B3C
|
|
ldr r1, _08018B34 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018B38 @ =gUnknown_081D9843
|
|
b _08018B40
|
|
.align 2, 0
|
|
_08018B28: .4byte gBattleMoves
|
|
_08018B2C: .4byte gProtectStructs
|
|
_08018B30: .4byte gBankAttacker
|
|
_08018B34: .4byte gBattlescriptCurrInstr
|
|
_08018B38: .4byte gUnknown_081D9843
|
|
_08018B3C:
|
|
ldr r1, _08018B48 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018B4C @ =gUnknown_081D9842
|
|
_08018B40:
|
|
str r0, [r1]
|
|
movs r2, 0x1
|
|
b _08018C68
|
|
.align 2, 0
|
|
_08018B48: .4byte gBattlescriptCurrInstr
|
|
_08018B4C: .4byte gUnknown_081D9842
|
|
_08018B50:
|
|
cmp r4, 0xB
|
|
beq _08018B56
|
|
b _08018C6A
|
|
_08018B56:
|
|
ldr r0, _08018B80 @ =gBattleMoves
|
|
lsls r1, r3, 1
|
|
adds r1, r3
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
cmp r0, 0
|
|
bne _08018B68
|
|
b _08018C6A
|
|
_08018B68:
|
|
ldr r1, _08018B84 @ =gProtectStructs
|
|
ldr r0, _08018B88 @ =gBankAttacker
|
|
ldrb r0, [r0]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x2]
|
|
lsls r0, 28
|
|
cmp r0, 0
|
|
bge _08018B94
|
|
ldr r1, _08018B8C @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018B90 @ =gUnknown_081D9843
|
|
b _08018B98
|
|
.align 2, 0
|
|
_08018B80: .4byte gBattleMoves
|
|
_08018B84: .4byte gProtectStructs
|
|
_08018B88: .4byte gBankAttacker
|
|
_08018B8C: .4byte gBattlescriptCurrInstr
|
|
_08018B90: .4byte gUnknown_081D9843
|
|
_08018B94:
|
|
ldr r1, _08018BA0 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018BA4 @ =gUnknown_081D9842
|
|
_08018B98:
|
|
str r0, [r1]
|
|
movs r3, 0x1
|
|
mov r9, r3
|
|
b _08018C6A
|
|
.align 2, 0
|
|
_08018BA0: .4byte gBattlescriptCurrInstr
|
|
_08018BA4: .4byte gUnknown_081D9842
|
|
_08018BA8:
|
|
cmp r4, 0xA
|
|
bne _08018C6A
|
|
ldr r1, _08018BF4 @ =gBattleMons
|
|
movs r0, 0x58
|
|
mov r5, r10
|
|
muls r5, r0
|
|
adds r0, r5, 0
|
|
adds r1, 0x4C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08018C6A
|
|
ldr r2, _08018BF8 @ =0x02017100
|
|
mov r0, r10
|
|
lsls r1, r0, 2
|
|
adds r0, r1, r2
|
|
ldr r3, [r0]
|
|
movs r4, 0x1
|
|
ands r3, r4
|
|
adds r5, r1, 0
|
|
cmp r3, 0
|
|
bne _08018C30
|
|
ldr r0, _08018BFC @ =gBattleCommunication
|
|
strb r3, [r0, 0x5]
|
|
ldr r1, _08018C00 @ =gProtectStructs
|
|
ldr r0, _08018C04 @ =gBankAttacker
|
|
ldrb r0, [r0]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x2]
|
|
lsls r0, 28
|
|
cmp r0, 0
|
|
bge _08018C10
|
|
ldr r1, _08018C08 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018C0C @ =gUnknown_081D987C
|
|
b _08018C14
|
|
.align 2, 0
|
|
_08018BF4: .4byte gBattleMons
|
|
_08018BF8: .4byte 0x02017100
|
|
_08018BFC: .4byte gBattleCommunication
|
|
_08018C00: .4byte gProtectStructs
|
|
_08018C04: .4byte gBankAttacker
|
|
_08018C08: .4byte gBattlescriptCurrInstr
|
|
_08018C0C: .4byte gUnknown_081D987C
|
|
_08018C10:
|
|
ldr r1, _08018C28 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018C2C @ =gUnknown_081D987B
|
|
_08018C14:
|
|
str r0, [r1]
|
|
adds r0, r5, r2
|
|
ldr r1, [r0]
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
str r1, [r0]
|
|
movs r1, 0x2
|
|
mov r9, r1
|
|
b _08018C6A
|
|
.align 2, 0
|
|
_08018C28: .4byte gBattlescriptCurrInstr
|
|
_08018C2C: .4byte gUnknown_081D987B
|
|
_08018C30:
|
|
ldr r0, _08018C4C @ =gBattleCommunication
|
|
strb r4, [r0, 0x5]
|
|
ldr r1, _08018C50 @ =gProtectStructs
|
|
ldr r0, _08018C54 @ =gBankAttacker
|
|
ldrb r0, [r0]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x2]
|
|
lsls r0, 28
|
|
cmp r0, 0
|
|
bge _08018C60
|
|
ldr r1, _08018C58 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018C5C @ =gUnknown_081D987C
|
|
b _08018C64
|
|
.align 2, 0
|
|
_08018C4C: .4byte gBattleCommunication
|
|
_08018C50: .4byte gProtectStructs
|
|
_08018C54: .4byte gBankAttacker
|
|
_08018C58: .4byte gBattlescriptCurrInstr
|
|
_08018C5C: .4byte gUnknown_081D987C
|
|
_08018C60:
|
|
ldr r1, _08018CA4 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018CA8 @ =gUnknown_081D987B
|
|
_08018C64:
|
|
str r0, [r1]
|
|
movs r2, 0x2
|
|
_08018C68:
|
|
mov r9, r2
|
|
_08018C6A:
|
|
mov r3, r9
|
|
cmp r3, 0x1
|
|
beq _08018C74
|
|
bl _08019F76
|
|
_08018C74:
|
|
ldr r1, _08018CAC @ =gBattleMons
|
|
movs r0, 0x58
|
|
mov r5, r10
|
|
muls r5, r0
|
|
adds r0, r5, 0
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2C]
|
|
ldrh r2, [r1, 0x28]
|
|
cmp r0, r2
|
|
bne _08018CD0
|
|
ldr r1, _08018CB0 @ =gProtectStructs
|
|
ldr r0, _08018CB4 @ =gBankAttacker
|
|
ldrb r0, [r0]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x2]
|
|
lsls r0, 28
|
|
cmp r0, 0
|
|
bge _08018CBC
|
|
ldr r1, _08018CA4 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018CB8 @ =gUnknown_081D9866
|
|
str r0, [r1]
|
|
bl _08019F76
|
|
.align 2, 0
|
|
_08018CA4: .4byte gBattlescriptCurrInstr
|
|
_08018CA8: .4byte gUnknown_081D987B
|
|
_08018CAC: .4byte gBattleMons
|
|
_08018CB0: .4byte gProtectStructs
|
|
_08018CB4: .4byte gBankAttacker
|
|
_08018CB8: .4byte gUnknown_081D9866
|
|
_08018CBC:
|
|
ldr r1, _08018CC8 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018CCC @ =gUnknown_081D9865
|
|
str r0, [r1]
|
|
bl _08019F76
|
|
.align 2, 0
|
|
_08018CC8: .4byte gBattlescriptCurrInstr
|
|
_08018CCC: .4byte gUnknown_081D9865
|
|
_08018CD0:
|
|
ldr r2, _08018CEC @ =gBattleMoveDamage
|
|
ldrh r0, [r1, 0x2C]
|
|
lsrs r0, 2
|
|
str r0, [r2]
|
|
cmp r0, 0
|
|
bne _08018CE0
|
|
mov r3, r9
|
|
str r3, [r2]
|
|
_08018CE0:
|
|
ldr r0, [r2]
|
|
negs r0, r0
|
|
str r0, [r2]
|
|
bl _08019F76
|
|
.align 2, 0
|
|
_08018CEC: .4byte gBattleMoveDamage
|
|
_08018CF0:
|
|
mov r5, r8
|
|
ldrb r0, [r5]
|
|
subs r0, 0x9
|
|
cmp r0, 0x2F
|
|
bls _08018CFE
|
|
bl _08019F76
|
|
_08018CFE:
|
|
lsls r0, 2
|
|
ldr r1, _08018D08 @ =_08018D0C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08018D08: .4byte _08018D0C
|
|
.align 2, 0
|
|
_08018D0C:
|
|
.4byte _08019128
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08018DCC
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08018E94
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08018F54
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _0801904C
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019204
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _08019F76
|
|
.4byte _080192E0
|
|
_08018DCC:
|
|
ldr r0, _08018E74 @ =gBattleMoveFlags
|
|
ldrb r1, [r0]
|
|
movs r0, 0x29
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08018DDC
|
|
bl _08019F76
|
|
_08018DDC:
|
|
cmp r3, 0xA5
|
|
bne _08018DE4
|
|
bl _08019F76
|
|
_08018DE4:
|
|
ldr r0, _08018E78 @ =gBattleMoves
|
|
lsls r1, r3, 1
|
|
adds r1, r3
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
cmp r0, 0
|
|
bne _08018DF8
|
|
bl _08019F76
|
|
_08018DF8:
|
|
ldr r2, _08018E7C @ =gSpecialStatuses
|
|
ldr r0, _08018E80 @ =gBankTarget
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r1, r0, 2
|
|
adds r0, r2, 0
|
|
adds r0, 0x8
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _08018E20
|
|
adds r0, r2, 0
|
|
adds r0, 0xC
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _08018E20
|
|
bl _08019F76
|
|
_08018E20:
|
|
ldr r1, _08018E84 @ =gBattleMons
|
|
movs r0, 0x58
|
|
mov r2, r10
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
adds r1, r0, r1
|
|
adds r3, r1, 0
|
|
adds r3, 0x21
|
|
ldrb r0, [r3]
|
|
cmp r0, r4
|
|
bne _08018E3A
|
|
bl _08019F76
|
|
_08018E3A:
|
|
adds r2, r1, 0
|
|
adds r2, 0x22
|
|
ldrb r0, [r2]
|
|
cmp r0, r4
|
|
bne _08018E48
|
|
bl _08019F76
|
|
_08018E48:
|
|
ldrh r0, [r1, 0x28]
|
|
cmp r0, 0
|
|
bne _08018E52
|
|
bl _08019F76
|
|
_08018E52:
|
|
strb r4, [r3]
|
|
strb r4, [r2]
|
|
ldr r1, _08018E88 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x1]
|
|
strb r4, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _08018E8C @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018E90 @ =gUnknown_081D9921
|
|
str r0, [r1]
|
|
bl _08019F22
|
|
.align 2, 0
|
|
_08018E74: .4byte gBattleMoveFlags
|
|
_08018E78: .4byte gBattleMoves
|
|
_08018E7C: .4byte gSpecialStatuses
|
|
_08018E80: .4byte gBankTarget
|
|
_08018E84: .4byte gBattleMons
|
|
_08018E88: .4byte gBattleTextBuff1
|
|
_08018E8C: .4byte gBattlescriptCurrInstr
|
|
_08018E90: .4byte gUnknown_081D9921
|
|
_08018E94:
|
|
ldr r0, _08018F2C @ =gBattleMoveFlags
|
|
ldrb r1, [r0]
|
|
movs r0, 0x29
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08018EA4
|
|
bl _08019F76
|
|
_08018EA4:
|
|
ldr r1, _08018F30 @ =gBattleMons
|
|
ldr r0, _08018F34 @ =gBankAttacker
|
|
ldrb r2, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4, 0x28]
|
|
cmp r0, 0
|
|
bne _08018EBA
|
|
bl _08019F76
|
|
_08018EBA:
|
|
ldr r0, _08018F38 @ =gProtectStructs
|
|
lsls r1, r2, 4
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _08018ECC
|
|
bl _08019F76
|
|
_08018ECC:
|
|
ldr r2, _08018F3C @ =gSpecialStatuses
|
|
ldr r0, _08018F40 @ =gBankTarget
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r1, r0, 2
|
|
adds r0, r2, 0
|
|
adds r0, 0x8
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _08018EF4
|
|
adds r0, r2, 0
|
|
adds r0, 0xC
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _08018EF4
|
|
bl _08019F76
|
|
_08018EF4:
|
|
ldr r1, _08018F44 @ =gBattleMoves
|
|
lsls r0, r3, 1
|
|
adds r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x8]
|
|
movs r2, 0x1
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08018F0E
|
|
bl _08019F76
|
|
_08018F0E:
|
|
ldr r1, _08018F48 @ =gBattleMoveDamage
|
|
ldrh r0, [r4, 0x2C]
|
|
lsrs r0, 4
|
|
str r0, [r1]
|
|
cmp r0, 0
|
|
bne _08018F1C
|
|
str r2, [r1]
|
|
_08018F1C:
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _08018F4C @ =gBattlescriptCurrInstr
|
|
ldr r0, _08018F50 @ =gUnknown_081D9928
|
|
str r0, [r1]
|
|
bl _08019F22
|
|
.align 2, 0
|
|
_08018F2C: .4byte gBattleMoveFlags
|
|
_08018F30: .4byte gBattleMons
|
|
_08018F34: .4byte gBankAttacker
|
|
_08018F38: .4byte gProtectStructs
|
|
_08018F3C: .4byte gSpecialStatuses
|
|
_08018F40: .4byte gBankTarget
|
|
_08018F44: .4byte gBattleMoves
|
|
_08018F48: .4byte gBattleMoveDamage
|
|
_08018F4C: .4byte gBattlescriptCurrInstr
|
|
_08018F50: .4byte gUnknown_081D9928
|
|
_08018F54:
|
|
ldr r0, _08019020 @ =gBattleMoveFlags
|
|
ldrb r1, [r0]
|
|
movs r0, 0x29
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08018F64
|
|
bl _08019F76
|
|
_08018F64:
|
|
ldr r1, _08019024 @ =gBattleMons
|
|
ldr r0, _08019028 @ =gBankAttacker
|
|
ldrb r2, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
bne _08018F7A
|
|
bl _08019F76
|
|
_08018F7A:
|
|
ldr r0, _0801902C @ =gProtectStructs
|
|
lsls r1, r2, 4
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _08018F8C
|
|
bl _08019F76
|
|
_08018F8C:
|
|
ldr r2, _08019030 @ =gSpecialStatuses
|
|
ldr r0, _08019034 @ =gBankTarget
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r1, r0, 2
|
|
adds r0, r2, 0
|
|
adds r0, 0x8
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _08018FB4
|
|
adds r0, r2, 0
|
|
adds r0, 0xC
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _08018FB4
|
|
bl _08019F76
|
|
_08018FB4:
|
|
ldr r1, _08019038 @ =gBattleMoves
|
|
lsls r0, r3, 1
|
|
adds r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08018FCC
|
|
bl _08019F76
|
|
_08018FCC:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0xA
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _08018FE4
|
|
bl _08019F76
|
|
_08018FE4:
|
|
ldr r5, _0801903C @ =gBattleCommunication
|
|
movs r4, 0x3
|
|
_08018FE8:
|
|
bl Random
|
|
ands r0, r4
|
|
strb r0, [r5, 0x3]
|
|
cmp r0, 0
|
|
beq _08018FE8
|
|
ldr r1, _0801903C @ =gBattleCommunication
|
|
ldrb r0, [r1, 0x3]
|
|
cmp r0, 0x3
|
|
bne _08019000
|
|
adds r0, 0x2
|
|
strb r0, [r1, 0x3]
|
|
_08019000:
|
|
ldrb r0, [r1, 0x3]
|
|
adds r0, 0x40
|
|
strb r0, [r1, 0x3]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _08019040 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08019044 @ =gUnknown_081D9950
|
|
str r0, [r1]
|
|
ldr r2, _08019048 @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 6
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
bl _08019F22
|
|
.align 2, 0
|
|
_08019020: .4byte gBattleMoveFlags
|
|
_08019024: .4byte gBattleMons
|
|
_08019028: .4byte gBankAttacker
|
|
_0801902C: .4byte gProtectStructs
|
|
_08019030: .4byte gSpecialStatuses
|
|
_08019034: .4byte gBankTarget
|
|
_08019038: .4byte gBattleMoves
|
|
_0801903C: .4byte gBattleCommunication
|
|
_08019040: .4byte gBattlescriptCurrInstr
|
|
_08019044: .4byte gUnknown_081D9950
|
|
_08019048: .4byte gHitMarker
|
|
_0801904C:
|
|
ldr r0, _080190FC @ =gBattleMoveFlags
|
|
ldrb r1, [r0]
|
|
movs r0, 0x29
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801905C
|
|
bl _08019F76
|
|
_0801905C:
|
|
ldr r1, _08019100 @ =gBattleMons
|
|
ldr r0, _08019104 @ =gBankAttacker
|
|
ldrb r2, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
bne _08019072
|
|
bl _08019F76
|
|
_08019072:
|
|
ldr r0, _08019108 @ =gProtectStructs
|
|
lsls r1, r2, 4
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _08019084
|
|
bl _08019F76
|
|
_08019084:
|
|
ldr r2, _0801910C @ =gSpecialStatuses
|
|
ldr r0, _08019110 @ =gBankTarget
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r1, r0, 2
|
|
adds r0, r2, 0
|
|
adds r0, 0x8
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _080190AC
|
|
adds r0, r2, 0
|
|
adds r0, 0xC
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _080190AC
|
|
bl _08019F76
|
|
_080190AC:
|
|
ldr r1, _08019114 @ =gBattleMoves
|
|
lsls r0, r3, 1
|
|
adds r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080190C4
|
|
bl _08019F76
|
|
_080190C4:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x3
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080190DC
|
|
bl _08019F76
|
|
_080190DC:
|
|
ldr r1, _08019118 @ =gBattleCommunication
|
|
movs r0, 0x42
|
|
strb r0, [r1, 0x3]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _0801911C @ =gBattlescriptCurrInstr
|
|
ldr r0, _08019120 @ =gUnknown_081D9950
|
|
str r0, [r1]
|
|
ldr r2, _08019124 @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 6
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
bl _08019F22
|
|
.align 2, 0
|
|
_080190FC: .4byte gBattleMoveFlags
|
|
_08019100: .4byte gBattleMons
|
|
_08019104: .4byte gBankAttacker
|
|
_08019108: .4byte gProtectStructs
|
|
_0801910C: .4byte gSpecialStatuses
|
|
_08019110: .4byte gBankTarget
|
|
_08019114: .4byte gBattleMoves
|
|
_08019118: .4byte gBattleCommunication
|
|
_0801911C: .4byte gBattlescriptCurrInstr
|
|
_08019120: .4byte gUnknown_081D9950
|
|
_08019124: .4byte gHitMarker
|
|
_08019128:
|
|
ldr r0, _080191D8 @ =gBattleMoveFlags
|
|
ldrb r1, [r0]
|
|
movs r0, 0x29
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08019138
|
|
bl _08019F76
|
|
_08019138:
|
|
ldr r1, _080191DC @ =gBattleMons
|
|
ldr r0, _080191E0 @ =gBankAttacker
|
|
ldrb r2, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
bne _0801914E
|
|
bl _08019F76
|
|
_0801914E:
|
|
ldr r0, _080191E4 @ =gProtectStructs
|
|
lsls r1, r2, 4
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _08019160
|
|
bl _08019F76
|
|
_08019160:
|
|
ldr r2, _080191E8 @ =gSpecialStatuses
|
|
ldr r0, _080191EC @ =gBankTarget
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r1, r0, 2
|
|
adds r0, r2, 0
|
|
adds r0, 0x8
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _08019188
|
|
adds r0, r2, 0
|
|
adds r0, 0xC
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _08019188
|
|
bl _08019F76
|
|
_08019188:
|
|
ldr r1, _080191F0 @ =gBattleMoves
|
|
lsls r0, r3, 1
|
|
adds r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080191A0
|
|
bl _08019F76
|
|
_080191A0:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x3
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _080191B8
|
|
bl _08019F76
|
|
_080191B8:
|
|
ldr r1, _080191F4 @ =gBattleCommunication
|
|
movs r0, 0x45
|
|
strb r0, [r1, 0x3]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _080191F8 @ =gBattlescriptCurrInstr
|
|
ldr r0, _080191FC @ =gUnknown_081D9950
|
|
str r0, [r1]
|
|
ldr r2, _08019200 @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 6
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
bl _08019F22
|
|
.align 2, 0
|
|
_080191D8: .4byte gBattleMoveFlags
|
|
_080191DC: .4byte gBattleMons
|
|
_080191E0: .4byte gBankAttacker
|
|
_080191E4: .4byte gProtectStructs
|
|
_080191E8: .4byte gSpecialStatuses
|
|
_080191EC: .4byte gBankTarget
|
|
_080191F0: .4byte gBattleMoves
|
|
_080191F4: .4byte gBattleCommunication
|
|
_080191F8: .4byte gBattlescriptCurrInstr
|
|
_080191FC: .4byte gUnknown_081D9950
|
|
_08019200: .4byte gHitMarker
|
|
_08019204:
|
|
ldr r0, _080192B4 @ =gBattleMoveFlags
|
|
ldrb r1, [r0]
|
|
movs r0, 0x29
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08019214
|
|
bl _08019F76
|
|
_08019214:
|
|
ldr r1, _080192B8 @ =gBattleMons
|
|
ldr r0, _080192BC @ =gBankAttacker
|
|
ldrb r2, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
bne _0801922A
|
|
bl _08019F76
|
|
_0801922A:
|
|
ldr r0, _080192C0 @ =gProtectStructs
|
|
lsls r1, r2, 4
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _0801923C
|
|
bl _08019F76
|
|
_0801923C:
|
|
ldr r1, _080192C4 @ =gBattleMoves
|
|
lsls r0, r3, 1
|
|
adds r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08019254
|
|
bl _08019F76
|
|
_08019254:
|
|
ldr r2, _080192C8 @ =gSpecialStatuses
|
|
ldr r0, _080192CC @ =gBankTarget
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r1, r0, 2
|
|
adds r0, r2, 0
|
|
adds r0, 0x8
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0801927C
|
|
adds r0, r2, 0
|
|
adds r0, 0xC
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0801927C
|
|
bl _08019F76
|
|
_0801927C:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x3
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _08019294
|
|
bl _08019F76
|
|
_08019294:
|
|
ldr r1, _080192D0 @ =gBattleCommunication
|
|
movs r0, 0x43
|
|
strb r0, [r1, 0x3]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _080192D4 @ =gBattlescriptCurrInstr
|
|
ldr r0, _080192D8 @ =gUnknown_081D9950
|
|
str r0, [r1]
|
|
ldr r2, _080192DC @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 6
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
bl _08019F22
|
|
.align 2, 0
|
|
_080192B4: .4byte gBattleMoveFlags
|
|
_080192B8: .4byte gBattleMons
|
|
_080192BC: .4byte gBankAttacker
|
|
_080192C0: .4byte gProtectStructs
|
|
_080192C4: .4byte gBattleMoves
|
|
_080192C8: .4byte gSpecialStatuses
|
|
_080192CC: .4byte gBankTarget
|
|
_080192D0: .4byte gBattleCommunication
|
|
_080192D4: .4byte gBattlescriptCurrInstr
|
|
_080192D8: .4byte gUnknown_081D9950
|
|
_080192DC: .4byte gHitMarker
|
|
_080192E0:
|
|
ldr r0, _08019420 @ =gBattleMoveFlags
|
|
ldrb r1, [r0]
|
|
movs r0, 0x29
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080192F0
|
|
bl _08019F76
|
|
_080192F0:
|
|
ldr r5, _08019424 @ =gBattleMons
|
|
ldr r7, _08019428 @ =gBankAttacker
|
|
ldrb r1, [r7]
|
|
movs r6, 0x58
|
|
adds r0, r1, 0
|
|
muls r0, r6
|
|
adds r0, r5
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
bne _08019308
|
|
bl _08019F76
|
|
_08019308:
|
|
ldr r0, _0801942C @ =gProtectStructs
|
|
lsls r1, 4
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
beq _0801931A
|
|
bl _08019F76
|
|
_0801931A:
|
|
ldr r1, _08019430 @ =gBattleMoves
|
|
lsls r0, r3, 1
|
|
adds r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08019332
|
|
bl _08019F76
|
|
_08019332:
|
|
ldr r3, _08019434 @ =gSpecialStatuses
|
|
ldr r0, _08019438 @ =gBankTarget
|
|
mov r8, r0
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r2, r0, 2
|
|
adds r0, r3, 0
|
|
adds r0, 0x8
|
|
adds r0, r2, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0801935C
|
|
adds r0, r3, 0
|
|
adds r0, 0xC
|
|
adds r0, r2, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0801935C
|
|
bl _08019F76
|
|
_0801935C:
|
|
adds r0, r1, 0
|
|
muls r0, r6
|
|
adds r0, r5
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
bne _0801936C
|
|
bl _08019F76
|
|
_0801936C:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x3
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _08019384
|
|
bl _08019F76
|
|
_08019384:
|
|
ldrb r0, [r7]
|
|
muls r0, r6
|
|
adds r0, r5
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xC
|
|
bne _08019396
|
|
bl _08019F76
|
|
_08019396:
|
|
ldr r0, [sp, 0x8]
|
|
ldr r1, [sp, 0x10]
|
|
bl GetGenderFromSpeciesAndPersonality
|
|
adds r4, r0, 0
|
|
ldr r0, [sp, 0xC]
|
|
ldr r1, [sp, 0x14]
|
|
bl GetGenderFromSpeciesAndPersonality
|
|
lsls r4, 24
|
|
lsls r0, 24
|
|
cmp r4, r0
|
|
bne _080193B4
|
|
bl _08019F76
|
|
_080193B4:
|
|
ldrb r0, [r7]
|
|
muls r0, r6
|
|
adds r4, r5, 0
|
|
adds r4, 0x50
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
movs r1, 0xF0
|
|
lsls r1, 12
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080193CE
|
|
bl _08019F76
|
|
_080193CE:
|
|
ldr r0, [sp, 0x8]
|
|
ldr r1, [sp, 0x10]
|
|
bl GetGenderFromSpeciesAndPersonality
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xFF
|
|
bne _080193E2
|
|
bl _08019F76
|
|
_080193E2:
|
|
ldr r0, [sp, 0xC]
|
|
ldr r1, [sp, 0x14]
|
|
bl GetGenderFromSpeciesAndPersonality
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xFF
|
|
bne _080193F6
|
|
bl _08019F76
|
|
_080193F6:
|
|
ldrb r0, [r7]
|
|
adds r2, r0, 0
|
|
muls r2, r6
|
|
adds r2, r4
|
|
ldr r1, _0801943C @ =gBitTable
|
|
mov r3, r8
|
|
ldrb r0, [r3]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
lsls r1, 16
|
|
ldr r0, [r2]
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _08019440 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08019444 @ =gUnknown_081D9943
|
|
str r0, [r1]
|
|
bl _08019F22
|
|
.align 2, 0
|
|
_08019420: .4byte gBattleMoveFlags
|
|
_08019424: .4byte gBattleMons
|
|
_08019428: .4byte gBankAttacker
|
|
_0801942C: .4byte gProtectStructs
|
|
_08019430: .4byte gBattleMoves
|
|
_08019434: .4byte gSpecialStatuses
|
|
_08019438: .4byte gBankTarget
|
|
_0801943C: .4byte gBitTable
|
|
_08019440: .4byte gBattlescriptCurrInstr
|
|
_08019444: .4byte gUnknown_081D9943
|
|
_08019448:
|
|
movs r5, 0
|
|
mov r10, r5
|
|
ldr r0, _0801947C @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r10, r0
|
|
bcc _08019458
|
|
bl _08019F76
|
|
_08019458:
|
|
ldr r1, _08019480 @ =gBattleMons
|
|
movs r0, 0x58
|
|
mov r2, r10
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
adds r0, r1
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
subs r0, 0x7
|
|
adds r2, r1, 0
|
|
cmp r0, 0x41
|
|
bls _08019472
|
|
b _080196D6
|
|
_08019472:
|
|
lsls r0, 2
|
|
ldr r1, _08019484 @ =_08019488
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801947C: .4byte gNoOfAllBanks
|
|
_08019480: .4byte gBattleMons
|
|
_08019484: .4byte _08019488
|
|
.align 2, 0
|
|
_08019488:
|
|
.4byte _080195EC
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196B0
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _08019614
|
|
.4byte _080196D6
|
|
.4byte _08019590
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080195BC
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _08019680
|
|
.4byte _08019650
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _080196D6
|
|
.4byte _08019614
|
|
_08019590:
|
|
movs r0, 0x58
|
|
mov r3, r10
|
|
muls r3, r0
|
|
adds r0, r3, 0
|
|
adds r1, r2, 0
|
|
adds r1, 0x4C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
ldr r1, _080195B0 @ =0x00000f88
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080195AA
|
|
b _080196D6
|
|
_080195AA:
|
|
ldr r0, _080195B4 @ =gBattleTextBuff1
|
|
ldr r1, _080195B8 @ =gStatusConditionString_PoisonJpn
|
|
b _0801969C
|
|
.align 2, 0
|
|
_080195B0: .4byte 0x00000f88
|
|
_080195B4: .4byte gBattleTextBuff1
|
|
_080195B8: .4byte gStatusConditionString_PoisonJpn
|
|
_080195BC:
|
|
movs r0, 0x58
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r1, r2, 0
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080195D6
|
|
b _080196D6
|
|
_080195D6:
|
|
ldr r0, _080195E4 @ =gBattleTextBuff1
|
|
ldr r1, _080195E8 @ =gStatusConditionString_ConfusionJpn
|
|
bl StringCopy
|
|
movs r2, 0x2
|
|
mov r9, r2
|
|
b _080196DC
|
|
.align 2, 0
|
|
_080195E4: .4byte gBattleTextBuff1
|
|
_080195E8: .4byte gStatusConditionString_ConfusionJpn
|
|
_080195EC:
|
|
movs r0, 0x58
|
|
mov r3, r10
|
|
muls r3, r0
|
|
adds r0, r3, 0
|
|
adds r1, r2, 0
|
|
adds r1, 0x4C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080196D6
|
|
ldr r0, _0801960C @ =gBattleTextBuff1
|
|
ldr r1, _08019610 @ =gStatusConditionString_ParalysisJpn
|
|
b _0801969C
|
|
.align 2, 0
|
|
_0801960C: .4byte gBattleTextBuff1
|
|
_08019610: .4byte gStatusConditionString_ParalysisJpn
|
|
_08019614:
|
|
movs r0, 0x58
|
|
mov r3, r10
|
|
muls r3, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x4C
|
|
adds r0, r3, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080196D6
|
|
adds r2, 0x50
|
|
adds r2, r3, r2
|
|
ldr r0, [r2]
|
|
ldr r1, _08019644 @ =0xf7ffffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r0, _08019648 @ =gBattleTextBuff1
|
|
ldr r1, _0801964C @ =gStatusConditionString_SleepJpn
|
|
bl StringCopy
|
|
movs r0, 0x1
|
|
mov r9, r0
|
|
b _080196DC
|
|
.align 2, 0
|
|
_08019644: .4byte 0xf7ffffff
|
|
_08019648: .4byte gBattleTextBuff1
|
|
_0801964C: .4byte gStatusConditionString_SleepJpn
|
|
_08019650:
|
|
movs r0, 0x58
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r1, r2, 0
|
|
adds r1, 0x4C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080196D6
|
|
ldr r0, _08019678 @ =gBattleTextBuff1
|
|
ldr r1, _0801967C @ =gStatusConditionString_BurnJpn
|
|
bl StringCopy
|
|
movs r2, 0x1
|
|
mov r9, r2
|
|
b _080196DC
|
|
.align 2, 0
|
|
_08019678: .4byte gBattleTextBuff1
|
|
_0801967C: .4byte gStatusConditionString_BurnJpn
|
|
_08019680:
|
|
movs r0, 0x58
|
|
mov r3, r10
|
|
muls r3, r0
|
|
adds r0, r3, 0
|
|
adds r1, r2, 0
|
|
adds r1, 0x4C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080196D6
|
|
ldr r0, _080196A8 @ =gBattleTextBuff1
|
|
ldr r1, _080196AC @ =gStatusConditionString_IceJpn
|
|
_0801969C:
|
|
bl StringCopy
|
|
movs r5, 0x1
|
|
mov r9, r5
|
|
b _080196DC
|
|
.align 2, 0
|
|
_080196A8: .4byte gBattleTextBuff1
|
|
_080196AC: .4byte gStatusConditionString_IceJpn
|
|
_080196B0:
|
|
movs r0, 0x58
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r1, r2, 0
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0xF0
|
|
lsls r1, 12
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080196D6
|
|
ldr r0, _080196EC @ =gBattleTextBuff1
|
|
ldr r1, _080196F0 @ =gStatusConditionString_LoveJpn
|
|
bl StringCopy
|
|
movs r2, 0x3
|
|
mov r9, r2
|
|
_080196D6:
|
|
mov r3, r9
|
|
cmp r3, 0
|
|
beq _08019798
|
|
_080196DC:
|
|
mov r5, r9
|
|
cmp r5, 0x2
|
|
beq _08019710
|
|
cmp r5, 0x2
|
|
bgt _080196F4
|
|
cmp r5, 0x1
|
|
beq _080196FC
|
|
b _0801973C
|
|
.align 2, 0
|
|
_080196EC: .4byte gBattleTextBuff1
|
|
_080196F0: .4byte gStatusConditionString_LoveJpn
|
|
_080196F4:
|
|
mov r0, r9
|
|
cmp r0, 0x3
|
|
beq _08019728
|
|
b _0801973C
|
|
_080196FC:
|
|
ldr r1, _0801970C @ =gBattleMons
|
|
movs r0, 0x58
|
|
mov r2, r10
|
|
muls r2, r0
|
|
adds r1, 0x4C
|
|
adds r2, r1
|
|
movs r0, 0
|
|
b _0801973A
|
|
.align 2, 0
|
|
_0801970C: .4byte gBattleMons
|
|
_08019710:
|
|
ldr r1, _08019724 @ =gBattleMons
|
|
movs r0, 0x58
|
|
mov r2, r10
|
|
muls r2, r0
|
|
adds r1, 0x50
|
|
adds r2, r1
|
|
ldr r0, [r2]
|
|
movs r1, 0x8
|
|
negs r1, r1
|
|
b _08019738
|
|
.align 2, 0
|
|
_08019724: .4byte gBattleMons
|
|
_08019728:
|
|
ldr r1, _08019778 @ =gBattleMons
|
|
movs r0, 0x58
|
|
mov r2, r10
|
|
muls r2, r0
|
|
adds r1, 0x50
|
|
adds r2, r1
|
|
ldr r0, [r2]
|
|
ldr r1, _0801977C @ =0xfff0ffff
|
|
_08019738:
|
|
ands r0, r1
|
|
_0801973A:
|
|
str r0, [r2]
|
|
_0801973C:
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _08019780 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08019784 @ =gUnknown_081D9956
|
|
str r0, [r1]
|
|
ldr r0, _08019788 @ =0x02000000
|
|
ldr r1, _0801978C @ =0x00016003
|
|
adds r0, r1
|
|
mov r2, r10
|
|
strb r2, [r0]
|
|
ldr r4, _08019790 @ =gActiveBank
|
|
strb r2, [r4]
|
|
ldrb r1, [r4]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
ldr r1, _08019794 @ =gUnknown_02024ACC
|
|
adds r0, r1
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r1, 0x28
|
|
movs r2, 0
|
|
movs r3, 0x4
|
|
bl EmitSetAttributes
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
bl _08019F92
|
|
.align 2, 0
|
|
_08019778: .4byte gBattleMons
|
|
_0801977C: .4byte 0xfff0ffff
|
|
_08019780: .4byte gBattlescriptCurrInstr
|
|
_08019784: .4byte gUnknown_081D9956
|
|
_08019788: .4byte 0x02000000
|
|
_0801978C: .4byte 0x00016003
|
|
_08019790: .4byte gActiveBank
|
|
_08019794: .4byte gUnknown_02024ACC
|
|
_08019798:
|
|
mov r0, r10
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
ldr r0, _080197B0 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r10, r0
|
|
bcs _080197AC
|
|
b _08019458
|
|
_080197AC:
|
|
bl _08019F76
|
|
.align 2, 0
|
|
_080197B0: .4byte gNoOfAllBanks
|
|
_080197B4:
|
|
movs r3, 0
|
|
mov r10, r3
|
|
ldr r0, _080197FC @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r10, r0
|
|
bcc _080197C2
|
|
b _08019F76
|
|
_080197C2:
|
|
ldr r4, _08019800 @ =gBattleMons
|
|
_080197C4:
|
|
movs r0, 0x58
|
|
mov r5, r10
|
|
muls r5, r0
|
|
adds r0, r5, 0
|
|
adds r0, r4
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x3B
|
|
bne _080197E8
|
|
mov r0, r10
|
|
bl castform_switch
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
cmp r0, 0
|
|
beq _080197E8
|
|
b _08019E40
|
|
_080197E8:
|
|
mov r0, r10
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
ldr r0, _080197FC @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r10, r0
|
|
bcc _080197C4
|
|
b _08019F76
|
|
.align 2, 0
|
|
_080197FC: .4byte gNoOfAllBanks
|
|
_08019800: .4byte gBattleMons
|
|
_08019804:
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x1C
|
|
beq _0801980E
|
|
b _08019F76
|
|
_0801980E:
|
|
ldr r4, _08019860 @ =gHitMarker
|
|
ldr r1, [r4]
|
|
movs r0, 0x80
|
|
lsls r0, 7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801981E
|
|
b _08019F76
|
|
_0801981E:
|
|
ldr r0, _08019864 @ =0xffffbfff
|
|
ands r1, r0
|
|
str r1, [r4]
|
|
ldr r3, _08019868 @ =0x000160ca
|
|
adds r2, r7, r3
|
|
ldrb r1, [r2]
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
cmp r0, 0x6
|
|
bne _08019838
|
|
movs r0, 0x2
|
|
strb r0, [r2]
|
|
_08019838:
|
|
ldr r1, _0801986C @ =gBattleCommunication
|
|
ldrb r0, [r2]
|
|
adds r0, 0x40
|
|
strb r0, [r1, 0x3]
|
|
ldr r0, _08019870 @ =gBankTarget
|
|
ldrb r1, [r0]
|
|
ldr r5, _08019874 @ =0x00016003
|
|
adds r0, r7, r5
|
|
strb r1, [r0]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _08019878 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801987C @ =gUnknown_081D9953
|
|
str r0, [r1]
|
|
ldr r0, [r4]
|
|
movs r1, 0x80
|
|
lsls r1, 6
|
|
orrs r0, r1
|
|
str r0, [r4]
|
|
b _08019F22
|
|
.align 2, 0
|
|
_08019860: .4byte gHitMarker
|
|
_08019864: .4byte 0xffffbfff
|
|
_08019868: .4byte 0x000160ca
|
|
_0801986C: .4byte gBattleCommunication
|
|
_08019870: .4byte gBankTarget
|
|
_08019874: .4byte 0x00016003
|
|
_08019878: .4byte gBattlescriptCurrInstr
|
|
_0801987C: .4byte gUnknown_081D9953
|
|
_08019880:
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x1C
|
|
beq _0801988A
|
|
b _08019F76
|
|
_0801988A:
|
|
ldr r4, _080198DC @ =gHitMarker
|
|
ldr r1, [r4]
|
|
movs r0, 0x80
|
|
lsls r0, 7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801989A
|
|
b _08019F76
|
|
_0801989A:
|
|
ldr r0, _080198E0 @ =0xffffbfff
|
|
ands r1, r0
|
|
str r1, [r4]
|
|
ldr r3, _080198E4 @ =0x000160ca
|
|
adds r2, r7, r3
|
|
ldrb r1, [r2]
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
cmp r0, 0x6
|
|
bne _080198B4
|
|
movs r0, 0x2
|
|
strb r0, [r2]
|
|
_080198B4:
|
|
ldr r1, _080198E8 @ =gBattleCommunication
|
|
ldrb r0, [r2]
|
|
strb r0, [r1, 0x3]
|
|
ldr r0, _080198EC @ =gBankAttacker
|
|
ldrb r1, [r0]
|
|
ldr r5, _080198F0 @ =0x00016003
|
|
adds r0, r7, r5
|
|
strb r1, [r0]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _080198F4 @ =gBattlescriptCurrInstr
|
|
ldr r0, _080198F8 @ =gUnknown_081D9953
|
|
str r0, [r1]
|
|
ldr r0, [r4]
|
|
movs r1, 0x80
|
|
lsls r1, 6
|
|
orrs r0, r1
|
|
str r0, [r4]
|
|
b _08019F22
|
|
.align 2, 0
|
|
_080198DC: .4byte gHitMarker
|
|
_080198E0: .4byte 0xffffbfff
|
|
_080198E4: .4byte 0x000160ca
|
|
_080198E8: .4byte gBattleCommunication
|
|
_080198EC: .4byte gBankAttacker
|
|
_080198F0: .4byte 0x00016003
|
|
_080198F4: .4byte gBattlescriptCurrInstr
|
|
_080198F8: .4byte gUnknown_081D9953
|
|
_080198FC:
|
|
movs r4, 0
|
|
ldr r0, _08019934 @ =gNoOfAllBanks
|
|
ldrb r1, [r0]
|
|
cmp r4, r1
|
|
blt _08019908
|
|
b _08019F76
|
|
_08019908:
|
|
ldr r0, _08019938 @ =gBattleMons
|
|
adds r5, r1, 0
|
|
ldr r2, _0801993C @ =gStatuses3
|
|
adds r3, r0, 0
|
|
adds r3, 0x20
|
|
movs r6, 0x80
|
|
lsls r6, 12
|
|
_08019916:
|
|
ldrb r1, [r3]
|
|
cmp r1, 0x16
|
|
bne _08019926
|
|
ldr r0, [r2]
|
|
ands r0, r6
|
|
cmp r0, 0
|
|
beq _08019926
|
|
b _08019E6C
|
|
_08019926:
|
|
adds r2, 0x4
|
|
adds r3, 0x58
|
|
adds r4, 0x1
|
|
cmp r4, r5
|
|
blt _08019916
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019934: .4byte gNoOfAllBanks
|
|
_08019938: .4byte gBattleMons
|
|
_0801993C: .4byte gStatuses3
|
|
_08019940:
|
|
movs r4, 0
|
|
ldr r0, _08019A1C @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _0801994C
|
|
b _08019F76
|
|
_0801994C:
|
|
ldr r0, _08019A20 @ =gActiveBank
|
|
mov r8, r0
|
|
ldr r1, _08019A24 @ =gBattleMons
|
|
adds r1, 0x20
|
|
str r1, [sp, 0x1C]
|
|
movs r2, 0
|
|
str r2, [sp, 0x20]
|
|
_0801995A:
|
|
ldr r3, [sp, 0x1C]
|
|
ldrb r0, [r3]
|
|
cmp r0, 0x24
|
|
beq _08019964
|
|
b _08019AF6
|
|
_08019964:
|
|
ldr r0, _08019A28 @ =gStatuses3
|
|
ldr r5, [sp, 0x20]
|
|
adds r0, r5, r0
|
|
ldr r1, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 13
|
|
ands r1, r0
|
|
str r5, [sp, 0x18]
|
|
cmp r1, 0
|
|
bne _0801997A
|
|
b _08019AF6
|
|
_0801997A:
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl GetBankIdentity
|
|
movs r1, 0x1
|
|
adds r5, r0, 0
|
|
eors r5, r1
|
|
ands r5, r1
|
|
adds r0, r5, 0
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
adds r0, r5, 0x2
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _08019A2C @ =gBattleTypeFlags
|
|
ldrh r1, [r0]
|
|
movs r2, 0x1
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080199AE
|
|
b _08019ABC
|
|
_080199AE:
|
|
movs r1, 0x58
|
|
adds r0, r6, 0
|
|
muls r0, r1
|
|
ldr r3, _08019A24 @ =gBattleMons
|
|
adds r1, r0, r3
|
|
adds r0, r1, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08019A78
|
|
ldrh r0, [r1, 0x28]
|
|
cmp r0, 0
|
|
beq _08019A34
|
|
movs r1, 0x58
|
|
adds r0, r7, 0
|
|
muls r0, r1
|
|
adds r1, r0, r3
|
|
adds r0, r1, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08019A34
|
|
ldrh r0, [r1, 0x28]
|
|
cmp r0, 0
|
|
beq _08019A34
|
|
str r2, [sp, 0x24]
|
|
bl Random
|
|
ldr r2, [sp, 0x24]
|
|
adds r1, r2, 0
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
orrs r5, r1
|
|
adds r0, r5, 0
|
|
bl GetBankByPlayerAI
|
|
mov r2, r8
|
|
strb r0, [r2]
|
|
ldrb r0, [r2]
|
|
movs r3, 0x58
|
|
muls r0, r3
|
|
ldr r5, _08019A24 @ =gBattleMons
|
|
adds r0, r5
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
ldr r1, [sp, 0x1C]
|
|
strb r0, [r1]
|
|
ldrb r0, [r2]
|
|
muls r0, r3
|
|
adds r0, r5
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
ldr r2, _08019A30 @ =gLastUsedAbility
|
|
strb r0, [r2]
|
|
b _08019AE4
|
|
.align 2, 0
|
|
_08019A1C: .4byte gNoOfAllBanks
|
|
_08019A20: .4byte gActiveBank
|
|
_08019A24: .4byte gBattleMons
|
|
_08019A28: .4byte gStatuses3
|
|
_08019A2C: .4byte gBattleTypeFlags
|
|
_08019A30: .4byte gLastUsedAbility
|
|
_08019A34:
|
|
ldr r3, _08019A74 @ =gBattleMons
|
|
movs r2, 0x58
|
|
adds r0, r6, 0
|
|
muls r0, r2
|
|
adds r1, r0, r3
|
|
adds r0, r1, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08019A78
|
|
ldrh r0, [r1, 0x28]
|
|
cmp r0, 0
|
|
beq _08019A78
|
|
mov r5, r8
|
|
strb r6, [r5]
|
|
adds r1, r4, 0
|
|
muls r1, r2
|
|
adds r1, r3
|
|
ldrb r0, [r5]
|
|
muls r0, r2
|
|
adds r0, r3
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
adds r1, 0x20
|
|
strb r0, [r1]
|
|
ldrb r0, [r5]
|
|
muls r0, r2
|
|
adds r0, r3
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
b _08019AE0
|
|
.align 2, 0
|
|
_08019A74: .4byte gBattleMons
|
|
_08019A78:
|
|
ldr r3, _08019AB8 @ =gBattleMons
|
|
movs r2, 0x58
|
|
adds r0, r7, 0
|
|
muls r0, r2
|
|
adds r1, r0, r3
|
|
adds r0, r1, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08019AEE
|
|
ldrh r0, [r1, 0x28]
|
|
cmp r0, 0
|
|
beq _08019AEE
|
|
mov r5, r8
|
|
strb r7, [r5]
|
|
adds r1, r4, 0
|
|
muls r1, r2
|
|
adds r1, r3
|
|
ldrb r0, [r5]
|
|
muls r0, r2
|
|
adds r0, r3
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
adds r1, 0x20
|
|
strb r0, [r1]
|
|
ldrb r0, [r5]
|
|
muls r0, r2
|
|
adds r0, r3
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
b _08019AE0
|
|
.align 2, 0
|
|
_08019AB8: .4byte gBattleMons
|
|
_08019ABC:
|
|
mov r2, r8
|
|
strb r6, [r2]
|
|
movs r3, 0x58
|
|
adds r0, r6, 0
|
|
muls r0, r3
|
|
ldr r5, _08019B10 @ =gBattleMons
|
|
adds r0, r5
|
|
adds r2, r0, 0
|
|
adds r2, 0x20
|
|
ldrb r1, [r2]
|
|
cmp r1, 0
|
|
beq _08019AEE
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
beq _08019AEE
|
|
ldr r0, [sp, 0x1C]
|
|
strb r1, [r0]
|
|
ldrb r0, [r2]
|
|
_08019AE0:
|
|
ldr r1, _08019B14 @ =gLastUsedAbility
|
|
strb r0, [r1]
|
|
_08019AE4:
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08019AEE:
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
beq _08019AF6
|
|
b _08019E88
|
|
_08019AF6:
|
|
ldr r3, [sp, 0x1C]
|
|
adds r3, 0x58
|
|
str r3, [sp, 0x1C]
|
|
ldr r5, [sp, 0x20]
|
|
adds r5, 0x4
|
|
str r5, [sp, 0x20]
|
|
adds r4, 0x1
|
|
ldr r0, _08019B18 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
bge _08019B0E
|
|
b _0801995A
|
|
_08019B0E:
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019B10: .4byte gBattleMons
|
|
_08019B14: .4byte gLastUsedAbility
|
|
_08019B18: .4byte gNoOfAllBanks
|
|
_08019B1C:
|
|
movs r4, 0
|
|
ldr r0, _08019B54 @ =gNoOfAllBanks
|
|
ldrb r1, [r0]
|
|
cmp r4, r1
|
|
blt _08019B28
|
|
b _08019F76
|
|
_08019B28:
|
|
ldr r0, _08019B58 @ =gBattleMons
|
|
adds r5, r1, 0
|
|
ldr r2, _08019B5C @ =gStatuses3
|
|
adds r3, r0, 0
|
|
adds r3, 0x20
|
|
movs r6, 0x80
|
|
lsls r6, 12
|
|
_08019B36:
|
|
ldrb r1, [r3]
|
|
cmp r1, 0x16
|
|
bne _08019B46
|
|
ldr r0, [r2]
|
|
ands r0, r6
|
|
cmp r0, 0
|
|
beq _08019B46
|
|
b _08019F04
|
|
_08019B46:
|
|
adds r2, 0x4
|
|
adds r3, 0x58
|
|
adds r4, 0x1
|
|
cmp r4, r5
|
|
blt _08019B36
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019B54: .4byte gNoOfAllBanks
|
|
_08019B58: .4byte gBattleMons
|
|
_08019B5C: .4byte gStatuses3
|
|
_08019B60:
|
|
mov r0, r10
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r4, 0
|
|
ldr r0, _08019BB0 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08019B76
|
|
b _08019F76
|
|
_08019B76:
|
|
ldr r7, _08019BB4 @ =gBattleMons
|
|
_08019B78:
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r3, r4, 0x1
|
|
cmp r0, r5
|
|
beq _08019BA2
|
|
movs r0, 0x58
|
|
muls r0, r4
|
|
adds r0, r7
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, r6
|
|
bne _08019BA2
|
|
ldr r0, _08019BB8 @ =gLastUsedAbility
|
|
strb r6, [r0]
|
|
lsls r0, r3, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08019BA2:
|
|
adds r4, r3, 0
|
|
ldr r0, _08019BB0 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08019B78
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019BB0: .4byte gNoOfAllBanks
|
|
_08019BB4: .4byte gBattleMons
|
|
_08019BB8: .4byte gLastUsedAbility
|
|
_08019BBC:
|
|
mov r0, r10
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r4, 0
|
|
ldr r0, _08019C0C @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08019BD2
|
|
b _08019F76
|
|
_08019BD2:
|
|
ldr r7, _08019C10 @ =gBattleMons
|
|
_08019BD4:
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r3, r4, 0x1
|
|
cmp r0, r5
|
|
bne _08019BFE
|
|
movs r0, 0x58
|
|
muls r0, r4
|
|
adds r0, r7
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, r6
|
|
bne _08019BFE
|
|
ldr r0, _08019C14 @ =gLastUsedAbility
|
|
strb r6, [r0]
|
|
lsls r0, r3, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08019BFE:
|
|
adds r4, r3, 0
|
|
ldr r0, _08019C0C @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08019BD4
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019C0C: .4byte gNoOfAllBanks
|
|
_08019C10: .4byte gBattleMons
|
|
_08019C14: .4byte gLastUsedAbility
|
|
_08019C18:
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xFD
|
|
beq _08019C40
|
|
cmp r0, 0xFE
|
|
beq _08019C78
|
|
movs r4, 0
|
|
ldr r0, _08019C38 @ =gNoOfAllBanks
|
|
adds r5, r0, 0
|
|
ldrb r2, [r5]
|
|
cmp r4, r2
|
|
blt _08019C32
|
|
b _08019F76
|
|
_08019C32:
|
|
ldr r2, _08019C3C @ =gBattleMons
|
|
b _08019CB0
|
|
.align 2, 0
|
|
_08019C38: .4byte gNoOfAllBanks
|
|
_08019C3C: .4byte gBattleMons
|
|
_08019C40:
|
|
movs r4, 0
|
|
ldr r0, _08019C70 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08019C4C
|
|
b _08019F76
|
|
_08019C4C:
|
|
ldr r5, _08019C74 @ =gStatuses3
|
|
movs r2, 0x80
|
|
lsls r2, 9
|
|
adds r1, r0, 0
|
|
_08019C54:
|
|
lsls r0, r4, 2
|
|
adds r0, r5
|
|
ldr r0, [r0]
|
|
ands r0, r2
|
|
adds r3, r4, 0x1
|
|
cmp r0, 0
|
|
beq _08019C68
|
|
lsls r0, r3, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08019C68:
|
|
adds r4, r3, 0
|
|
cmp r4, r1
|
|
blt _08019C54
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019C70: .4byte gNoOfAllBanks
|
|
_08019C74: .4byte gStatuses3
|
|
_08019C78:
|
|
movs r4, 0
|
|
ldr r0, _08019CA8 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08019C84
|
|
b _08019F76
|
|
_08019C84:
|
|
ldr r5, _08019CAC @ =gStatuses3
|
|
movs r2, 0x80
|
|
lsls r2, 10
|
|
adds r1, r0, 0
|
|
_08019C8C:
|
|
lsls r0, r4, 2
|
|
adds r0, r5
|
|
ldr r0, [r0]
|
|
ands r0, r2
|
|
adds r3, r4, 0x1
|
|
cmp r0, 0
|
|
beq _08019CA0
|
|
lsls r0, r3, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08019CA0:
|
|
adds r4, r3, 0
|
|
cmp r4, r1
|
|
blt _08019C8C
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019CA8: .4byte gNoOfAllBanks
|
|
_08019CAC: .4byte gStatuses3
|
|
_08019CB0:
|
|
movs r0, 0x58
|
|
muls r0, r4
|
|
adds r0, r2
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
adds r3, r4, 0x1
|
|
cmp r0, r6
|
|
bne _08019CCA
|
|
mov r0, r8
|
|
strb r6, [r0]
|
|
lsls r0, r3, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08019CCA:
|
|
adds r4, r3, 0
|
|
ldrb r1, [r5]
|
|
cmp r4, r1
|
|
blt _08019CB0
|
|
b _08019F76
|
|
_08019CD4:
|
|
movs r4, 0
|
|
ldr r0, _08019D10 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08019CE0
|
|
b _08019F76
|
|
_08019CE0:
|
|
ldr r7, _08019D14 @ =gBattleMons
|
|
adds r2, r0, 0
|
|
movs r5, 0x58
|
|
_08019CE6:
|
|
adds r0, r4, 0
|
|
muls r0, r5
|
|
adds r1, r0, r7
|
|
adds r0, r1, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
adds r3, r4, 0x1
|
|
cmp r0, r6
|
|
bne _08019D08
|
|
ldrh r0, [r1, 0x28]
|
|
cmp r0, 0
|
|
beq _08019D08
|
|
mov r0, r8
|
|
strb r6, [r0]
|
|
lsls r0, r3, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08019D08:
|
|
adds r4, r3, 0
|
|
cmp r4, r2
|
|
blt _08019CE6
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019D10: .4byte gNoOfAllBanks
|
|
_08019D14: .4byte gBattleMons
|
|
_08019D18:
|
|
movs r4, 0
|
|
ldr r0, _08019D50 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08019D24
|
|
b _08019F76
|
|
_08019D24:
|
|
ldr r7, _08019D54 @ =gBattleMons
|
|
adds r1, r0, 0
|
|
movs r5, 0x58
|
|
ldr r2, _08019D58 @ =gLastUsedAbility
|
|
_08019D2C:
|
|
adds r0, r4, 0
|
|
muls r0, r5
|
|
adds r0, r7
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
adds r3, r4, 0x1
|
|
cmp r0, r6
|
|
bne _08019D48
|
|
cmp r4, r10
|
|
beq _08019D48
|
|
strb r6, [r2]
|
|
lsls r0, r3, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08019D48:
|
|
adds r4, r3, 0
|
|
cmp r4, r1
|
|
blt _08019D2C
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019D50: .4byte gNoOfAllBanks
|
|
_08019D54: .4byte gBattleMons
|
|
_08019D58: .4byte gLastUsedAbility
|
|
_08019D5C:
|
|
mov r0, r10
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r4, 0
|
|
ldr r0, _08019DAC @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08019D72
|
|
b _08019F76
|
|
_08019D72:
|
|
ldr r7, _08019DB0 @ =gBattleMons
|
|
_08019D74:
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, r5
|
|
beq _08019DA0
|
|
movs r0, 0x58
|
|
muls r0, r4
|
|
adds r0, r7
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, r6
|
|
bne _08019DA0
|
|
ldr r0, _08019DB4 @ =gLastUsedAbility
|
|
strb r6, [r0]
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08019DA0:
|
|
adds r4, 0x1
|
|
ldr r0, _08019DAC @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08019D74
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019DAC: .4byte gNoOfAllBanks
|
|
_08019DB0: .4byte gBattleMons
|
|
_08019DB4: .4byte gLastUsedAbility
|
|
_08019DB8:
|
|
mov r0, r10
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r4, 0
|
|
ldr r0, _08019E08 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08019DCE
|
|
b _08019F76
|
|
_08019DCE:
|
|
ldr r7, _08019E0C @ =gBattleMons
|
|
_08019DD0:
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, r5
|
|
bne _08019DFC
|
|
movs r0, 0x58
|
|
muls r0, r4
|
|
adds r0, r7
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, r6
|
|
bne _08019DFC
|
|
ldr r0, _08019E10 @ =gLastUsedAbility
|
|
strb r6, [r0]
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08019DFC:
|
|
adds r4, 0x1
|
|
ldr r0, _08019E08 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _08019DD0
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019E08: .4byte gNoOfAllBanks
|
|
_08019E0C: .4byte gBattleMons
|
|
_08019E10: .4byte gLastUsedAbility
|
|
_08019E14:
|
|
ldr r0, _08019E30 @ =gUnknown_081D977D
|
|
bl b_push_move_exec
|
|
ldr r0, _08019E34 @ =0x02000000
|
|
ldr r2, _08019E38 @ =0x00016003
|
|
adds r1, r0, r2
|
|
strb r6, [r1]
|
|
mov r1, r9
|
|
subs r1, 0x1
|
|
ldr r3, _08019E3C @ =0x0001609b
|
|
adds r0, r3
|
|
strb r1, [r0]
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019E30: .4byte gUnknown_081D977D
|
|
_08019E34: .4byte 0x02000000
|
|
_08019E38: .4byte 0x00016003
|
|
_08019E3C: .4byte 0x0001609b
|
|
_08019E40:
|
|
ldr r0, _08019E5C @ =gUnknown_081D977D
|
|
bl b_push_move_exec
|
|
ldr r0, _08019E60 @ =0x02000000
|
|
ldr r5, _08019E64 @ =0x00016003
|
|
adds r1, r0, r5
|
|
mov r2, r10
|
|
strb r2, [r1]
|
|
mov r1, r9
|
|
subs r1, 0x1
|
|
ldr r3, _08019E68 @ =0x0001609b
|
|
adds r0, r3
|
|
strb r1, [r0]
|
|
b _08019F92
|
|
.align 2, 0
|
|
_08019E5C: .4byte gUnknown_081D977D
|
|
_08019E60: .4byte 0x02000000
|
|
_08019E64: .4byte 0x00016003
|
|
_08019E68: .4byte 0x0001609b
|
|
_08019E6C:
|
|
mov r5, r8
|
|
strb r1, [r5]
|
|
ldr r0, [r2]
|
|
ldr r1, _08019E80 @ =0xfff7ffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r0, _08019E84 @ =gUnknown_081D978C
|
|
bl b_push_move_exec
|
|
b _08019F1A
|
|
.align 2, 0
|
|
_08019E80: .4byte 0xfff7ffff
|
|
_08019E84: .4byte gUnknown_081D978C
|
|
_08019E88:
|
|
ldr r0, _08019EDC @ =gUnknown_081D9726
|
|
bl b_push_move_exec
|
|
ldr r1, _08019EE0 @ =gStatuses3
|
|
ldr r2, [sp, 0x18]
|
|
adds r1, r2, r1
|
|
ldr r0, [r1]
|
|
ldr r2, _08019EE4 @ =0xffefffff
|
|
ands r0, r2
|
|
str r0, [r1]
|
|
ldr r0, _08019EE8 @ =0x02000000
|
|
ldr r3, _08019EEC @ =0x00016003
|
|
adds r0, r3
|
|
strb r4, [r0]
|
|
ldr r1, _08019EF0 @ =gBattleTextBuff1
|
|
movs r4, 0xFD
|
|
strb r4, [r1]
|
|
movs r0, 0x4
|
|
strb r0, [r1, 0x1]
|
|
ldr r2, _08019EF4 @ =gActiveBank
|
|
ldrb r0, [r2]
|
|
strb r0, [r1, 0x2]
|
|
ldr r3, _08019EF8 @ =gBattlePartyID
|
|
ldrb r0, [r2]
|
|
lsls r0, 1
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
strb r0, [r1, 0x3]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x4]
|
|
ldr r1, _08019EFC @ =gBattleTextBuff2
|
|
strb r4, [r1]
|
|
movs r0, 0x9
|
|
strb r0, [r1, 0x1]
|
|
ldr r0, _08019F00 @ =gLastUsedAbility
|
|
ldrb r0, [r0]
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
strb r0, [r1, 0x3]
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019EDC: .4byte gUnknown_081D9726
|
|
_08019EE0: .4byte gStatuses3
|
|
_08019EE4: .4byte 0xffefffff
|
|
_08019EE8: .4byte 0x02000000
|
|
_08019EEC: .4byte 0x00016003
|
|
_08019EF0: .4byte gBattleTextBuff1
|
|
_08019EF4: .4byte gActiveBank
|
|
_08019EF8: .4byte gBattlePartyID
|
|
_08019EFC: .4byte gBattleTextBuff2
|
|
_08019F00: .4byte gLastUsedAbility
|
|
_08019F04:
|
|
mov r5, r8
|
|
strb r1, [r5]
|
|
ldr r0, [r2]
|
|
ldr r1, _08019F30 @ =0xfff7ffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _08019F34 @ =gBattlescriptCurrInstr
|
|
ldr r0, _08019F38 @ =gUnknown_081D9795
|
|
str r0, [r1]
|
|
_08019F1A:
|
|
ldr r0, _08019F3C @ =0x02000000
|
|
ldr r1, _08019F40 @ =0x000160dd
|
|
adds r0, r1
|
|
strb r4, [r0]
|
|
_08019F22:
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
b _08019F76
|
|
.align 2, 0
|
|
_08019F30: .4byte 0xfff7ffff
|
|
_08019F34: .4byte gBattlescriptCurrInstr
|
|
_08019F38: .4byte gUnknown_081D9795
|
|
_08019F3C: .4byte 0x02000000
|
|
_08019F40: .4byte 0x000160dd
|
|
_08019F44:
|
|
movs r4, 0
|
|
ldr r0, _08019FA4 @ =gNoOfAllBanks
|
|
ldrb r1, [r0]
|
|
cmp r4, r1
|
|
bge _08019F76
|
|
ldr r0, _08019FA8 @ =gBattleMons
|
|
adds r2, r1, 0
|
|
adds r1, r0, 0
|
|
adds r1, 0x20
|
|
ldr r3, _08019FAC @ =gLastUsedAbility
|
|
_08019F58:
|
|
ldrb r0, [r1]
|
|
cmp r0, r6
|
|
bne _08019F6E
|
|
cmp r4, r10
|
|
beq _08019F6E
|
|
strb r6, [r3]
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_08019F6E:
|
|
adds r1, 0x58
|
|
adds r4, 0x1
|
|
cmp r4, r2
|
|
blt _08019F58
|
|
_08019F76:
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
beq _08019F92
|
|
_08019F7C:
|
|
ldr r3, [sp, 0x4]
|
|
cmp r3, 0xB
|
|
bhi _08019F92
|
|
ldr r1, _08019FAC @ =gLastUsedAbility
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xFF
|
|
beq _08019F92
|
|
adds r1, r0, 0
|
|
mov r0, r10
|
|
bl RecordAbilityBattle
|
|
_08019F92:
|
|
mov r0, r9
|
|
add sp, 0x28
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08019FA4: .4byte gNoOfAllBanks
|
|
_08019FA8: .4byte gBattleMons
|
|
_08019FAC: .4byte gLastUsedAbility
|
|
thumb_func_end AbilityBattleEffects
|
|
|
|
thumb_func_start b_call_bc_move_exec
|
|
b_call_bc_move_exec: @ 8019FB0
|
|
ldr r1, _08019FD8 @ =gBattlescriptCurrInstr
|
|
str r0, [r1]
|
|
ldr r3, _08019FDC @ =0x02017140
|
|
adds r2, r3, 0
|
|
adds r2, 0x20
|
|
ldrb r0, [r2]
|
|
adds r1, r0, 0x1
|
|
strb r1, [r2]
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
adds r0, r3
|
|
ldr r2, _08019FE0 @ =gBattleMainFunc
|
|
ldr r1, [r2]
|
|
str r1, [r0]
|
|
ldr r0, _08019FE4 @ =sub_8013F54
|
|
str r0, [r2]
|
|
ldr r1, _08019FE8 @ =gFightStateTracker
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_08019FD8: .4byte gBattlescriptCurrInstr
|
|
_08019FDC: .4byte 0x02017140
|
|
_08019FE0: .4byte gBattleMainFunc
|
|
_08019FE4: .4byte sub_8013F54
|
|
_08019FE8: .4byte gFightStateTracker
|
|
thumb_func_end b_call_bc_move_exec
|
|
|
|
thumb_func_start b_push_move_exec
|
|
b_push_move_exec: @ 8019FEC
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r0, _0801A01C @ =gBattlescriptCurrInstr
|
|
str r4, [r0]
|
|
ldr r3, _0801A020 @ =0x02017140
|
|
adds r2, r3, 0
|
|
adds r2, 0x20
|
|
ldrb r0, [r2]
|
|
adds r1, r0, 0x1
|
|
strb r1, [r2]
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
adds r0, r3
|
|
ldr r2, _0801A024 @ =gBattleMainFunc
|
|
ldr r1, [r2]
|
|
str r1, [r0]
|
|
ldr r0, _0801A028 @ =sub_8013FBC
|
|
str r0, [r2]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801A01C: .4byte gBattlescriptCurrInstr
|
|
_0801A020: .4byte 0x02017140
|
|
_0801A024: .4byte gBattleMainFunc
|
|
_0801A028: .4byte sub_8013FBC
|
|
thumb_func_end b_push_move_exec
|
|
|
|
thumb_func_start sub_801A02C
|
|
sub_801A02C: @ 801A02C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x2C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x8]
|
|
lsls r1, 24
|
|
lsrs r7, r1, 24
|
|
lsls r2, 24
|
|
lsrs r6, r2, 24
|
|
movs r0, 0
|
|
mov r10, r0
|
|
movs r1, 0
|
|
str r1, [sp, 0xC]
|
|
add r0, sp, 0x4
|
|
strb r1, [r0]
|
|
ldr r4, _0801A078 @ =gLastUsedItem
|
|
ldr r1, _0801A07C @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2E]
|
|
strh r0, [r4]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0xAF
|
|
bne _0801A084
|
|
ldr r1, _0801A080 @ =gEnigmaBerries
|
|
lsls r0, r7, 3
|
|
subs r0, r7
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r5, [r0, 0x7]
|
|
ldrb r0, [r0, 0x1A]
|
|
b _0801A098
|
|
.align 2, 0
|
|
_0801A078: .4byte gLastUsedItem
|
|
_0801A07C: .4byte gBattleMons
|
|
_0801A080: .4byte gEnigmaBerries
|
|
_0801A084:
|
|
ldrh r0, [r4]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldrh r0, [r4]
|
|
bl ItemId_GetHoldEffectParam
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_0801A098:
|
|
mov r9, r0
|
|
ldr r1, _0801A0C0 @ =gBattleMons
|
|
ldr r0, _0801A0C4 @ =gBankAttacker
|
|
ldrb r2, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2E]
|
|
str r0, [sp, 0x14]
|
|
cmp r0, 0xAF
|
|
bne _0801A0CC
|
|
ldr r1, _0801A0C8 @ =gEnigmaBerries
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r3, [r0, 0x7]
|
|
mov r8, r3
|
|
ldrb r0, [r0, 0x1A]
|
|
b _0801A0E2
|
|
.align 2, 0
|
|
_0801A0C0: .4byte gBattleMons
|
|
_0801A0C4: .4byte gBankAttacker
|
|
_0801A0C8: .4byte gEnigmaBerries
|
|
_0801A0CC:
|
|
ldr r0, [sp, 0x14]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldr r0, [sp, 0x14]
|
|
bl ItemId_GetHoldEffectParam
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_0801A0E2:
|
|
str r0, [sp, 0x10]
|
|
ldr r2, _0801A118 @ =gBattleMons
|
|
ldr r0, _0801A11C @ =gBankTarget
|
|
ldrb r1, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
adds r0, r2
|
|
ldrh r4, [r0, 0x2E]
|
|
cmp r4, 0xAF
|
|
beq _0801A102
|
|
adds r0, r4, 0
|
|
bl ItemId_GetHoldEffect
|
|
adds r0, r4, 0
|
|
bl ItemId_GetHoldEffectParam
|
|
_0801A102:
|
|
ldr r4, [sp, 0x8]
|
|
cmp r4, 0x4
|
|
bls _0801A10C
|
|
bl _0801B3CA
|
|
_0801A10C:
|
|
lsls r0, r4, 2
|
|
ldr r1, _0801A120 @ =_0801A124
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801A118: .4byte gBattleMons
|
|
_0801A11C: .4byte gBankTarget
|
|
_0801A120: .4byte _0801A124
|
|
.align 2, 0
|
|
_0801A124:
|
|
.4byte _0801A138
|
|
.4byte _0801A1D4
|
|
.4byte _0801B3CA
|
|
.4byte _0801AE0C
|
|
.4byte _0801B26C
|
|
_0801A138:
|
|
cmp r5, 0x17
|
|
beq _0801A15C
|
|
cmp r5, 0x20
|
|
beq _0801A144
|
|
bl _0801B3CA
|
|
_0801A144:
|
|
ldr r0, _0801A154 @ =0x02000000
|
|
ldr r5, _0801A158 @ =0x00016056
|
|
adds r0, r5
|
|
movs r1, 0x2
|
|
strb r1, [r0]
|
|
bl _0801B3CA
|
|
.align 2, 0
|
|
_0801A154: .4byte 0x02000000
|
|
_0801A158: .4byte 0x00016056
|
|
_0801A15C:
|
|
ldr r0, _0801A1B8 @ =gBattleMons
|
|
mov r8, r0
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x18
|
|
adds r1, r0
|
|
movs r2, 0x6
|
|
movs r3, 0x7
|
|
mov r10, r3
|
|
_0801A172:
|
|
movs r0, 0
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, 0x5
|
|
bgt _0801A180
|
|
strb r2, [r1]
|
|
movs r4, 0x5
|
|
str r4, [sp, 0xC]
|
|
_0801A180:
|
|
adds r1, 0x1
|
|
movs r5, 0x1
|
|
negs r5, r5
|
|
add r10, r5
|
|
mov r0, r10
|
|
cmp r0, 0
|
|
bge _0801A172
|
|
ldr r1, [sp, 0xC]
|
|
cmp r1, 0
|
|
bne _0801A198
|
|
bl _0801B3CA
|
|
_0801A198:
|
|
ldr r0, _0801A1BC @ =0x02000000
|
|
ldr r2, _0801A1C0 @ =0x00016003
|
|
adds r0, r2
|
|
strb r7, [r0]
|
|
ldr r0, _0801A1C4 @ =gStringBank
|
|
strb r7, [r0]
|
|
ldr r1, _0801A1C8 @ =gActiveBank
|
|
ldr r0, _0801A1CC @ =gBankAttacker
|
|
strb r7, [r0]
|
|
strb r7, [r1]
|
|
ldr r0, _0801A1D0 @ =gUnknown_081D9A5E
|
|
bl b_call_bc_move_exec
|
|
bl _0801B3CA
|
|
.align 2, 0
|
|
_0801A1B8: .4byte gBattleMons
|
|
_0801A1BC: .4byte 0x02000000
|
|
_0801A1C0: .4byte 0x00016003
|
|
_0801A1C4: .4byte gStringBank
|
|
_0801A1C8: .4byte gActiveBank
|
|
_0801A1CC: .4byte gBankAttacker
|
|
_0801A1D0: .4byte gUnknown_081D9A5E
|
|
_0801A1D4:
|
|
ldr r1, _0801A1FC @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
mov r8, r1
|
|
cmp r0, 0
|
|
bne _0801A1E8
|
|
bl _0801B3CA
|
|
_0801A1E8:
|
|
subs r0, r5, 0x1
|
|
cmp r0, 0x2A
|
|
bls _0801A1F2
|
|
bl _0801AD5A
|
|
_0801A1F2:
|
|
lsls r0, 2
|
|
ldr r1, _0801A200 @ =_0801A204
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801A1FC: .4byte gBattleMons
|
|
_0801A200: .4byte _0801A204
|
|
.align 2, 0
|
|
_0801A204:
|
|
.4byte _0801A2B0
|
|
.4byte _0801AAC8
|
|
.4byte _0801AB84
|
|
.4byte _0801AAF8
|
|
.4byte _0801AB2C
|
|
.4byte _0801AB5C
|
|
.4byte _0801A2F8
|
|
.4byte _0801ABC8
|
|
.4byte _0801ABF8
|
|
.4byte _0801A4CC
|
|
.4byte _0801A548
|
|
.4byte _0801A5C4
|
|
.4byte _0801A634
|
|
.4byte _0801A6C8
|
|
.4byte _0801A75C
|
|
.4byte _0801A7D4
|
|
.4byte _0801A838
|
|
.4byte _0801A89C
|
|
.4byte _0801A900
|
|
.4byte _0801A97C
|
|
.4byte _0801A9C8
|
|
.4byte _0801AD5A
|
|
.4byte _0801A3F8
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD24
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801AD5A
|
|
.4byte _0801A46C
|
|
_0801A2B0:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r3, r8
|
|
adds r2, r0, r3
|
|
ldrh r0, [r2, 0x2C]
|
|
ldrh r1, [r2, 0x28]
|
|
lsrs r0, 1
|
|
cmp r1, r0
|
|
bls _0801A2C6
|
|
bl _0801AD5A
|
|
_0801A2C6:
|
|
cmp r6, 0
|
|
beq _0801A2CE
|
|
bl _0801AD5A
|
|
_0801A2CE:
|
|
ldr r4, _0801A2F0 @ =gBattleMoveDamage
|
|
mov r5, r9
|
|
str r5, [r4]
|
|
ldrh r3, [r2, 0x28]
|
|
adds r0, r3, r5
|
|
ldrh r1, [r2, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801A2E2
|
|
subs r0, r1, r3
|
|
str r0, [r4]
|
|
_0801A2E2:
|
|
ldr r0, [r4]
|
|
negs r0, r0
|
|
str r0, [r4]
|
|
ldr r0, _0801A2F4 @ =gUnknown_081D9A74
|
|
bl b_call_bc_move_exec
|
|
b _0801A752
|
|
.align 2, 0
|
|
_0801A2F0: .4byte gBattleMoveDamage
|
|
_0801A2F4: .4byte gUnknown_081D9A74
|
|
_0801A2F8:
|
|
cmp r6, 0
|
|
beq _0801A300
|
|
bl _0801AD5A
|
|
_0801A300:
|
|
adds r0, r7, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801A324
|
|
ldr r1, _0801A31C @ =gBattlePartyID
|
|
lsls r0, r7, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _0801A320 @ =gPlayerParty
|
|
b _0801A332
|
|
.align 2, 0
|
|
_0801A31C: .4byte gBattlePartyID
|
|
_0801A320: .4byte gPlayerParty
|
|
_0801A324:
|
|
ldr r1, _0801A3A0 @ =gBattlePartyID
|
|
lsls r0, r7, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _0801A3A4 @ =gEnemyParty
|
|
_0801A332:
|
|
adds r4, r1, r0
|
|
movs r1, 0
|
|
mov r10, r1
|
|
add r5, sp, 0x4
|
|
_0801A33A:
|
|
mov r1, r10
|
|
adds r1, 0xD
|
|
adds r0, r4, 0
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
mov r1, r10
|
|
adds r1, 0x11
|
|
adds r0, r4, 0
|
|
bl GetMonData
|
|
strb r0, [r5]
|
|
adds r0, r4, 0
|
|
movs r1, 0x15
|
|
bl GetMonData
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r6, 0
|
|
beq _0801A36A
|
|
ldrb r0, [r5]
|
|
cmp r0, 0
|
|
beq _0801A374
|
|
_0801A36A:
|
|
movs r2, 0x1
|
|
add r10, r2
|
|
mov r3, r10
|
|
cmp r3, 0x3
|
|
ble _0801A33A
|
|
_0801A374:
|
|
mov r4, r10
|
|
cmp r4, 0x4
|
|
bne _0801A37E
|
|
bl _0801AD5A
|
|
_0801A37E:
|
|
lsls r2, r4, 24
|
|
lsrs r2, 24
|
|
adds r0, r6, 0
|
|
bl CalculatePPWithBonus
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
add r0, sp, 0x4
|
|
ldrb r0, [r0]
|
|
mov r5, r9
|
|
adds r1, r0, r5
|
|
cmp r1, r2
|
|
ble _0801A3A8
|
|
add r0, sp, 0x4
|
|
strb r2, [r0]
|
|
b _0801A3AC
|
|
.align 2, 0
|
|
_0801A3A0: .4byte gBattlePartyID
|
|
_0801A3A4: .4byte gEnemyParty
|
|
_0801A3A8:
|
|
add r0, sp, 0x4
|
|
strb r1, [r0]
|
|
_0801A3AC:
|
|
ldr r1, _0801A3EC @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x2
|
|
strb r0, [r1, 0x1]
|
|
strb r6, [r1, 0x2]
|
|
lsrs r0, r6, 8
|
|
strb r0, [r1, 0x3]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x4]
|
|
ldr r0, _0801A3F0 @ =gUnknown_081D9A91
|
|
bl b_call_bc_move_exec
|
|
mov r1, r10
|
|
adds r1, 0x9
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
add r0, sp, 0x4
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
bl EmitSetAttributes
|
|
ldr r0, _0801A3F4 @ =gActiveBank
|
|
ldrb r0, [r0]
|
|
bl MarkBufferBankForExecution
|
|
movs r1, 0x3
|
|
str r1, [sp, 0xC]
|
|
bl _0801AD62
|
|
.align 2, 0
|
|
_0801A3EC: .4byte gBattleTextBuff1
|
|
_0801A3F0: .4byte gUnknown_081D9A91
|
|
_0801A3F4: .4byte gActiveBank
|
|
_0801A3F8:
|
|
ldr r0, _0801A450 @ =gBattleMons
|
|
movs r1, 0x58
|
|
muls r1, r7
|
|
adds r0, 0x18
|
|
adds r1, r0
|
|
movs r2, 0x6
|
|
movs r3, 0x7
|
|
mov r10, r3
|
|
_0801A408:
|
|
movs r0, 0
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, 0x5
|
|
bgt _0801A416
|
|
strb r2, [r1]
|
|
movs r4, 0x5
|
|
str r4, [sp, 0xC]
|
|
_0801A416:
|
|
adds r1, 0x1
|
|
movs r5, 0x1
|
|
negs r5, r5
|
|
add r10, r5
|
|
mov r0, r10
|
|
cmp r0, 0
|
|
bge _0801A408
|
|
movs r1, 0x8
|
|
mov r10, r1
|
|
ldr r2, [sp, 0xC]
|
|
cmp r2, 0
|
|
bne _0801A432
|
|
bl _0801B3CA
|
|
_0801A432:
|
|
ldr r0, _0801A454 @ =0x02000000
|
|
ldr r3, _0801A458 @ =0x00016003
|
|
adds r0, r3
|
|
strb r7, [r0]
|
|
ldr r0, _0801A45C @ =gStringBank
|
|
strb r7, [r0]
|
|
ldr r1, _0801A460 @ =gActiveBank
|
|
ldr r0, _0801A464 @ =gBankAttacker
|
|
strb r7, [r0]
|
|
strb r7, [r1]
|
|
ldr r0, _0801A468 @ =gUnknown_081D9A5E
|
|
bl b_call_bc_move_exec
|
|
bl _0801AD5A
|
|
.align 2, 0
|
|
_0801A450: .4byte gBattleMons
|
|
_0801A454: .4byte 0x02000000
|
|
_0801A458: .4byte 0x00016003
|
|
_0801A45C: .4byte gStringBank
|
|
_0801A460: .4byte gActiveBank
|
|
_0801A464: .4byte gBankAttacker
|
|
_0801A468: .4byte gUnknown_081D9A5E
|
|
_0801A46C:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r4, r8
|
|
adds r1, r0, r4
|
|
ldrh r0, [r1, 0x28]
|
|
ldrh r2, [r1, 0x2C]
|
|
cmp r0, r2
|
|
bcc _0801A480
|
|
bl _0801AD5A
|
|
_0801A480:
|
|
cmp r6, 0
|
|
beq _0801A488
|
|
bl _0801AD5A
|
|
_0801A488:
|
|
ldr r3, _0801A4C4 @ =gBattleMoveDamage
|
|
ldrh r0, [r1, 0x2C]
|
|
lsrs r0, 4
|
|
str r0, [r3]
|
|
cmp r0, 0
|
|
bne _0801A498
|
|
movs r0, 0x1
|
|
str r0, [r3]
|
|
_0801A498:
|
|
ldrh r2, [r1, 0x28]
|
|
ldr r0, [r3]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r1, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801A4A8
|
|
subs r0, r1, r2
|
|
str r0, [r3]
|
|
_0801A4A8:
|
|
ldr r0, [r3]
|
|
negs r0, r0
|
|
str r0, [r3]
|
|
ldr r0, _0801A4C8 @ =gUnknown_081D9AA1
|
|
bl b_call_bc_move_exec
|
|
movs r3, 0x4
|
|
str r3, [sp, 0xC]
|
|
adds r0, r7, 0
|
|
adds r1, r5, 0
|
|
bl RecordItemBattle
|
|
bl _0801AD5A
|
|
.align 2, 0
|
|
_0801A4C4: .4byte gBattleMoveDamage
|
|
_0801A4C8: .4byte gUnknown_081D9AA1
|
|
_0801A4CC:
|
|
movs r0, 0x58
|
|
adds r4, r7, 0
|
|
muls r4, r0
|
|
str r4, [sp, 0x18]
|
|
add r4, r8
|
|
ldrh r0, [r4, 0x2C]
|
|
ldrh r1, [r4, 0x28]
|
|
lsrs r0, 1
|
|
cmp r1, r0
|
|
bls _0801A4E4
|
|
bl _0801AD5A
|
|
_0801A4E4:
|
|
cmp r6, 0
|
|
beq _0801A4EC
|
|
bl _0801AD5A
|
|
_0801A4EC:
|
|
ldr r1, _0801A540 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x8
|
|
strb r0, [r1, 0x1]
|
|
strb r6, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r5, _0801A544 @ =gBattleMoveDamage
|
|
ldrh r0, [r4, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
str r0, [r5]
|
|
cmp r0, 0
|
|
bne _0801A510
|
|
movs r0, 0x1
|
|
str r0, [r5]
|
|
_0801A510:
|
|
ldrh r2, [r4, 0x28]
|
|
ldr r0, [r5]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r4, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801A520
|
|
subs r0, r1, r2
|
|
str r0, [r5]
|
|
_0801A520:
|
|
ldr r0, [r5]
|
|
negs r0, r0
|
|
str r0, [r5]
|
|
mov r0, r8
|
|
adds r0, 0x48
|
|
ldr r5, [sp, 0x18]
|
|
adds r0, r5, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0
|
|
_0801A532:
|
|
bl sub_8040A7C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bge _0801A53E
|
|
b _0801A738
|
|
_0801A53E:
|
|
b _0801A74C
|
|
.align 2, 0
|
|
_0801A540: .4byte gBattleTextBuff1
|
|
_0801A544: .4byte gBattleMoveDamage
|
|
_0801A548:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
str r1, [sp, 0x1C]
|
|
adds r5, r1, 0
|
|
add r5, r8
|
|
ldrh r0, [r5, 0x2C]
|
|
ldrh r1, [r5, 0x28]
|
|
lsrs r0, 1
|
|
cmp r1, r0
|
|
bls _0801A562
|
|
bl _0801AD5A
|
|
_0801A562:
|
|
cmp r6, 0
|
|
beq _0801A56A
|
|
bl _0801AD5A
|
|
_0801A56A:
|
|
ldr r1, _0801A5BC @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x8
|
|
strb r0, [r1, 0x1]
|
|
movs r6, 0x1
|
|
strb r6, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r4, _0801A5C0 @ =gBattleMoveDamage
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
str r0, [r4]
|
|
cmp r0, 0
|
|
bne _0801A58E
|
|
str r6, [r4]
|
|
_0801A58E:
|
|
ldrh r2, [r5, 0x28]
|
|
ldr r0, [r4]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r5, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801A59E
|
|
subs r0, r1, r2
|
|
str r0, [r4]
|
|
_0801A59E:
|
|
ldr r0, [r4]
|
|
negs r0, r0
|
|
str r0, [r4]
|
|
mov r0, r8
|
|
adds r0, 0x48
|
|
ldr r2, [sp, 0x1C]
|
|
adds r0, r2, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
bl sub_8040A7C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
blt _0801A6A4
|
|
b _0801A6B8
|
|
.align 2, 0
|
|
_0801A5BC: .4byte gBattleTextBuff1
|
|
_0801A5C0: .4byte gBattleMoveDamage
|
|
_0801A5C4:
|
|
movs r0, 0x58
|
|
adds r4, r7, 0
|
|
muls r4, r0
|
|
str r4, [sp, 0x20]
|
|
adds r5, r4, 0
|
|
add r5, r8
|
|
ldrh r0, [r5, 0x2C]
|
|
ldrh r1, [r5, 0x28]
|
|
lsrs r0, 1
|
|
cmp r1, r0
|
|
bls _0801A5DC
|
|
b _0801AD5A
|
|
_0801A5DC:
|
|
cmp r6, 0
|
|
beq _0801A5E2
|
|
b _0801AD5A
|
|
_0801A5E2:
|
|
ldr r1, _0801A62C @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x8
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x2
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r4, _0801A630 @ =gBattleMoveDamage
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
str r0, [r4]
|
|
cmp r0, 0
|
|
bne _0801A608
|
|
movs r0, 0x1
|
|
str r0, [r4]
|
|
_0801A608:
|
|
ldrh r2, [r5, 0x28]
|
|
ldr r0, [r4]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r5, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801A618
|
|
subs r0, r1, r2
|
|
str r0, [r4]
|
|
_0801A618:
|
|
ldr r0, [r4]
|
|
negs r0, r0
|
|
str r0, [r4]
|
|
mov r0, r8
|
|
adds r0, 0x48
|
|
ldr r5, [sp, 0x20]
|
|
adds r0, r5, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
b _0801A532
|
|
.align 2, 0
|
|
_0801A62C: .4byte gBattleTextBuff1
|
|
_0801A630: .4byte gBattleMoveDamage
|
|
_0801A634:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
str r1, [sp, 0x24]
|
|
adds r5, r1, 0
|
|
add r5, r8
|
|
ldrh r0, [r5, 0x2C]
|
|
ldrh r1, [r5, 0x28]
|
|
lsrs r0, 1
|
|
cmp r1, r0
|
|
bls _0801A64C
|
|
b _0801AD5A
|
|
_0801A64C:
|
|
cmp r6, 0
|
|
beq _0801A652
|
|
b _0801AD5A
|
|
_0801A652:
|
|
ldr r1, _0801A6AC @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x8
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r4, _0801A6B0 @ =gBattleMoveDamage
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
str r0, [r4]
|
|
cmp r0, 0
|
|
bne _0801A678
|
|
movs r0, 0x1
|
|
str r0, [r4]
|
|
_0801A678:
|
|
ldrh r2, [r5, 0x28]
|
|
ldr r0, [r4]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r5, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801A688
|
|
subs r0, r1, r2
|
|
str r0, [r4]
|
|
_0801A688:
|
|
ldr r0, [r4]
|
|
negs r0, r0
|
|
str r0, [r4]
|
|
mov r0, r8
|
|
adds r0, 0x48
|
|
ldr r2, [sp, 0x24]
|
|
adds r0, r2, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x3
|
|
bl sub_8040A7C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bge _0801A6B8
|
|
_0801A6A4:
|
|
ldr r0, _0801A6B4 @ =gUnknown_081D9AD4
|
|
bl b_call_bc_move_exec
|
|
b _0801A6BE
|
|
.align 2, 0
|
|
_0801A6AC: .4byte gBattleTextBuff1
|
|
_0801A6B0: .4byte gBattleMoveDamage
|
|
_0801A6B4: .4byte gUnknown_081D9AD4
|
|
_0801A6B8:
|
|
ldr r0, _0801A6C4 @ =gUnknown_081D9A74
|
|
bl b_call_bc_move_exec
|
|
_0801A6BE:
|
|
movs r3, 0x4
|
|
str r3, [sp, 0xC]
|
|
b _0801AD62
|
|
.align 2, 0
|
|
_0801A6C4: .4byte gUnknown_081D9A74
|
|
_0801A6C8:
|
|
movs r0, 0x58
|
|
adds r4, r7, 0
|
|
muls r4, r0
|
|
str r4, [sp, 0x28]
|
|
adds r5, r4, 0
|
|
add r5, r8
|
|
ldrh r0, [r5, 0x2C]
|
|
ldrh r1, [r5, 0x28]
|
|
lsrs r0, 1
|
|
cmp r1, r0
|
|
bls _0801A6E0
|
|
b _0801AD5A
|
|
_0801A6E0:
|
|
cmp r6, 0
|
|
beq _0801A6E6
|
|
b _0801AD5A
|
|
_0801A6E6:
|
|
ldr r1, _0801A740 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x8
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x4
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r4, _0801A744 @ =gBattleMoveDamage
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
str r0, [r4]
|
|
cmp r0, 0
|
|
bne _0801A70C
|
|
movs r0, 0x1
|
|
str r0, [r4]
|
|
_0801A70C:
|
|
ldrh r2, [r5, 0x28]
|
|
ldr r0, [r4]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r5, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801A71C
|
|
subs r0, r1, r2
|
|
str r0, [r4]
|
|
_0801A71C:
|
|
ldr r0, [r4]
|
|
negs r0, r0
|
|
str r0, [r4]
|
|
mov r0, r8
|
|
adds r0, 0x48
|
|
ldr r5, [sp, 0x28]
|
|
adds r0, r5, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x4
|
|
bl sub_8040A7C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bge _0801A74C
|
|
_0801A738:
|
|
ldr r0, _0801A748 @ =gUnknown_081D9AD4
|
|
bl b_call_bc_move_exec
|
|
b _0801A752
|
|
.align 2, 0
|
|
_0801A740: .4byte gBattleTextBuff1
|
|
_0801A744: .4byte gBattleMoveDamage
|
|
_0801A748: .4byte gUnknown_081D9AD4
|
|
_0801A74C:
|
|
ldr r0, _0801A758 @ =gUnknown_081D9A74
|
|
bl b_call_bc_move_exec
|
|
_0801A752:
|
|
movs r0, 0x4
|
|
str r0, [sp, 0xC]
|
|
b _0801AD62
|
|
.align 2, 0
|
|
_0801A758: .4byte gUnknown_081D9A74
|
|
_0801A75C:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r1, r8
|
|
adds r5, r0, r1
|
|
ldrh r4, [r5, 0x28]
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801A774
|
|
b _0801AD5A
|
|
_0801A774:
|
|
cmp r6, 0
|
|
beq _0801A77A
|
|
b _0801AD5A
|
|
_0801A77A:
|
|
movs r0, 0x19
|
|
ldrsb r0, [r5, r0]
|
|
cmp r0, 0xB
|
|
ble _0801A784
|
|
b _0801AD5A
|
|
_0801A784:
|
|
ldr r1, _0801A7BC @ =gBattleTextBuff1
|
|
movs r2, 0xFD
|
|
strb r2, [r1]
|
|
movs r0, 0x5
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r1, _0801A7C0 @ =gBattleTextBuff2
|
|
strb r2, [r1]
|
|
strb r6, [r1, 0x1]
|
|
movs r0, 0xD2
|
|
strb r0, [r1, 0x2]
|
|
strb r6, [r1, 0x3]
|
|
subs r0, 0xD3
|
|
strb r0, [r1, 0x4]
|
|
ldr r0, _0801A7C4 @ =gEffectBank
|
|
strb r7, [r0]
|
|
ldr r1, _0801A7C8 @ =0x02000000
|
|
ldr r3, _0801A7CC @ =0x0001601e
|
|
adds r2, r1, r3
|
|
movs r0, 0x11
|
|
strb r0, [r2]
|
|
ldr r4, _0801A7D0 @ =0x000160a4
|
|
adds r2, r1, r4
|
|
movs r0, 0xF
|
|
b _0801A94C
|
|
.align 2, 0
|
|
_0801A7BC: .4byte gBattleTextBuff1
|
|
_0801A7C0: .4byte gBattleTextBuff2
|
|
_0801A7C4: .4byte gEffectBank
|
|
_0801A7C8: .4byte 0x02000000
|
|
_0801A7CC: .4byte 0x0001601e
|
|
_0801A7D0: .4byte 0x000160a4
|
|
_0801A7D4:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r1, r8
|
|
adds r5, r0, r1
|
|
ldrh r4, [r5, 0x28]
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801A7EC
|
|
b _0801AD5A
|
|
_0801A7EC:
|
|
cmp r6, 0
|
|
beq _0801A7F2
|
|
b _0801AD5A
|
|
_0801A7F2:
|
|
movs r0, 0x1A
|
|
ldrsb r0, [r5, r0]
|
|
cmp r0, 0xB
|
|
ble _0801A7FC
|
|
b _0801AD5A
|
|
_0801A7FC:
|
|
ldr r1, _0801A824 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x5
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x2
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r0, _0801A828 @ =gEffectBank
|
|
strb r7, [r0]
|
|
ldr r1, _0801A82C @ =0x02000000
|
|
ldr r3, _0801A830 @ =0x0001601e
|
|
adds r2, r1, r3
|
|
movs r0, 0x12
|
|
strb r0, [r2]
|
|
ldr r4, _0801A834 @ =0x000160a4
|
|
adds r2, r1, r4
|
|
movs r0, 0x10
|
|
b _0801A94C
|
|
.align 2, 0
|
|
_0801A824: .4byte gBattleTextBuff1
|
|
_0801A828: .4byte gEffectBank
|
|
_0801A82C: .4byte 0x02000000
|
|
_0801A830: .4byte 0x0001601e
|
|
_0801A834: .4byte 0x000160a4
|
|
_0801A838:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r1, r8
|
|
adds r5, r0, r1
|
|
ldrh r4, [r5, 0x28]
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801A850
|
|
b _0801AD5A
|
|
_0801A850:
|
|
cmp r6, 0
|
|
beq _0801A856
|
|
b _0801AD5A
|
|
_0801A856:
|
|
movs r0, 0x1B
|
|
ldrsb r0, [r5, r0]
|
|
cmp r0, 0xB
|
|
ble _0801A860
|
|
b _0801AD5A
|
|
_0801A860:
|
|
ldr r1, _0801A888 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x5
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r0, _0801A88C @ =gEffectBank
|
|
strb r7, [r0]
|
|
ldr r1, _0801A890 @ =0x02000000
|
|
ldr r3, _0801A894 @ =0x0001601e
|
|
adds r2, r1, r3
|
|
movs r0, 0x13
|
|
strb r0, [r2]
|
|
ldr r4, _0801A898 @ =0x000160a4
|
|
adds r2, r1, r4
|
|
movs r0, 0x11
|
|
b _0801A94C
|
|
.align 2, 0
|
|
_0801A888: .4byte gBattleTextBuff1
|
|
_0801A88C: .4byte gEffectBank
|
|
_0801A890: .4byte 0x02000000
|
|
_0801A894: .4byte 0x0001601e
|
|
_0801A898: .4byte 0x000160a4
|
|
_0801A89C:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r1, r8
|
|
adds r5, r0, r1
|
|
ldrh r4, [r5, 0x28]
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801A8B4
|
|
b _0801AD5A
|
|
_0801A8B4:
|
|
cmp r6, 0
|
|
beq _0801A8BA
|
|
b _0801AD5A
|
|
_0801A8BA:
|
|
movs r0, 0x1C
|
|
ldrsb r0, [r5, r0]
|
|
cmp r0, 0xB
|
|
ble _0801A8C4
|
|
b _0801AD5A
|
|
_0801A8C4:
|
|
ldr r1, _0801A8EC @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x5
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x4
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r0, _0801A8F0 @ =gEffectBank
|
|
strb r7, [r0]
|
|
ldr r1, _0801A8F4 @ =0x02000000
|
|
ldr r3, _0801A8F8 @ =0x0001601e
|
|
adds r2, r1, r3
|
|
movs r0, 0x14
|
|
strb r0, [r2]
|
|
ldr r4, _0801A8FC @ =0x000160a4
|
|
adds r2, r1, r4
|
|
movs r0, 0x12
|
|
b _0801A94C
|
|
.align 2, 0
|
|
_0801A8EC: .4byte gBattleTextBuff1
|
|
_0801A8F0: .4byte gEffectBank
|
|
_0801A8F4: .4byte 0x02000000
|
|
_0801A8F8: .4byte 0x0001601e
|
|
_0801A8FC: .4byte 0x000160a4
|
|
_0801A900:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r1, r8
|
|
adds r5, r0, r1
|
|
ldrh r4, [r5, 0x28]
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801A918
|
|
b _0801AD5A
|
|
_0801A918:
|
|
cmp r6, 0
|
|
beq _0801A91E
|
|
b _0801AD5A
|
|
_0801A91E:
|
|
movs r0, 0x1D
|
|
ldrsb r0, [r5, r0]
|
|
cmp r0, 0xB
|
|
ble _0801A928
|
|
b _0801AD5A
|
|
_0801A928:
|
|
ldr r1, _0801A960 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x5
|
|
strb r0, [r1, 0x1]
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r0, _0801A964 @ =gEffectBank
|
|
strb r7, [r0]
|
|
ldr r1, _0801A968 @ =0x02000000
|
|
ldr r3, _0801A96C @ =0x0001601e
|
|
adds r2, r1, r3
|
|
movs r0, 0x15
|
|
strb r0, [r2]
|
|
ldr r4, _0801A970 @ =0x000160a4
|
|
adds r2, r1, r4
|
|
movs r0, 0x13
|
|
_0801A94C:
|
|
strb r0, [r2]
|
|
ldr r5, _0801A974 @ =0x000160a5
|
|
adds r1, r5
|
|
strb r6, [r1]
|
|
ldr r0, _0801A978 @ =gUnknown_081D9AFE
|
|
bl b_call_bc_move_exec
|
|
movs r0, 0x5
|
|
str r0, [sp, 0xC]
|
|
b _0801AD62
|
|
.align 2, 0
|
|
_0801A960: .4byte gBattleTextBuff1
|
|
_0801A964: .4byte gEffectBank
|
|
_0801A968: .4byte 0x02000000
|
|
_0801A96C: .4byte 0x0001601e
|
|
_0801A970: .4byte 0x000160a4
|
|
_0801A974: .4byte 0x000160a5
|
|
_0801A978: .4byte gUnknown_081D9AFE
|
|
_0801A97C:
|
|
movs r0, 0x58
|
|
adds r5, r7, 0
|
|
muls r5, r0
|
|
mov r1, r8
|
|
adds r0, r5, r1
|
|
ldrh r4, [r0, 0x28]
|
|
ldrh r0, [r0, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801A996
|
|
b _0801AD5A
|
|
_0801A996:
|
|
cmp r6, 0
|
|
beq _0801A99C
|
|
b _0801AD5A
|
|
_0801A99C:
|
|
mov r0, r8
|
|
adds r0, 0x50
|
|
adds r1, r5, r0
|
|
ldr r2, [r1]
|
|
movs r3, 0x80
|
|
lsls r3, 13
|
|
adds r0, r2, 0
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _0801A9B2
|
|
b _0801AD5A
|
|
_0801A9B2:
|
|
orrs r2, r3
|
|
str r2, [r1]
|
|
ldr r0, _0801A9C4 @ =gUnknown_081D9B19
|
|
bl b_call_bc_move_exec
|
|
movs r2, 0x2
|
|
str r2, [sp, 0xC]
|
|
b _0801AD62
|
|
.align 2, 0
|
|
_0801A9C4: .4byte gUnknown_081D9B19
|
|
_0801A9C8:
|
|
cmp r6, 0
|
|
beq _0801A9CE
|
|
b _0801AD5A
|
|
_0801A9CE:
|
|
movs r0, 0x58
|
|
adds r5, r7, 0
|
|
muls r5, r0
|
|
mov r3, r8
|
|
adds r0, r5, r3
|
|
ldrh r4, [r0, 0x28]
|
|
ldrh r0, [r0, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801A9E8
|
|
b _0801AD5A
|
|
_0801A9E8:
|
|
movs r4, 0
|
|
mov r10, r4
|
|
adds r0, r5, 0x1
|
|
mov r1, r8
|
|
adds r1, 0x18
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
cmp r0, 0xB
|
|
ble _0801AA18
|
|
mov r0, r8
|
|
adds r0, 0x19
|
|
adds r1, r5, r0
|
|
_0801AA04:
|
|
adds r1, 0x1
|
|
movs r5, 0x1
|
|
add r10, r5
|
|
mov r0, r10
|
|
cmp r0, 0x4
|
|
bgt _0801AA18
|
|
movs r0, 0
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, 0xB
|
|
bgt _0801AA04
|
|
_0801AA18:
|
|
mov r1, r10
|
|
cmp r1, 0x5
|
|
bne _0801AA20
|
|
b _0801AD5A
|
|
_0801AA20:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r4, r0, 0x1
|
|
ldr r5, _0801AAA4 @ =gUnknown_02024A98
|
|
_0801AA28:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x5
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r10, r0
|
|
adds r0, r4
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
cmp r0, 0xC
|
|
beq _0801AA28
|
|
ldr r1, _0801AAA8 @ =gBattleTextBuff1
|
|
movs r3, 0
|
|
movs r2, 0xFD
|
|
strb r2, [r1]
|
|
movs r0, 0x5
|
|
strb r0, [r1, 0x1]
|
|
mov r0, r10
|
|
adds r0, 0x1
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r0, _0801AAAC @ =gBattleTextBuff2
|
|
strb r2, [r0]
|
|
strb r3, [r0, 0x1]
|
|
movs r1, 0xD1
|
|
strb r1, [r0, 0x2]
|
|
strb r3, [r0, 0x3]
|
|
strb r3, [r0, 0x4]
|
|
movs r1, 0xD2
|
|
strb r1, [r0, 0x5]
|
|
strb r3, [r0, 0x6]
|
|
subs r1, 0xD3
|
|
strb r1, [r0, 0x7]
|
|
ldr r0, _0801AAB0 @ =gEffectBank
|
|
strb r7, [r0]
|
|
ldr r1, _0801AAB4 @ =0x02000000
|
|
mov r2, r10
|
|
adds r2, 0x21
|
|
ldr r4, _0801AAB8 @ =0x0001601e
|
|
adds r0, r1, r4
|
|
strb r2, [r0]
|
|
adds r2, 0x6
|
|
ldr r5, _0801AABC @ =0x000160a4
|
|
adds r0, r1, r5
|
|
strb r2, [r0]
|
|
ldr r0, _0801AAC0 @ =0x000160a5
|
|
adds r1, r0
|
|
strb r3, [r1]
|
|
ldr r0, _0801AAC4 @ =gUnknown_081D9AFE
|
|
bl b_call_bc_move_exec
|
|
movs r1, 0x5
|
|
str r1, [sp, 0xC]
|
|
b _0801AD62
|
|
.align 2, 0
|
|
_0801AAA4: .4byte gUnknown_02024A98
|
|
_0801AAA8: .4byte gBattleTextBuff1
|
|
_0801AAAC: .4byte gBattleTextBuff2
|
|
_0801AAB0: .4byte gEffectBank
|
|
_0801AAB4: .4byte 0x02000000
|
|
_0801AAB8: .4byte 0x0001601e
|
|
_0801AABC: .4byte 0x000160a4
|
|
_0801AAC0: .4byte 0x000160a5
|
|
_0801AAC4: .4byte gUnknown_081D9AFE
|
|
_0801AAC8:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x4C
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
movs r0, 0x40
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0801AAE0
|
|
b _0801AD5A
|
|
_0801AAE0:
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
ands r2, r0
|
|
str r2, [r1]
|
|
ldr r0, _0801AAF4 @ =gUnknown_081D99B6
|
|
bl b_call_bc_move_exec
|
|
movs r2, 0x1
|
|
str r2, [sp, 0xC]
|
|
b _0801AD62
|
|
.align 2, 0
|
|
_0801AAF4: .4byte gUnknown_081D99B6
|
|
_0801AAF8:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x4C
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
movs r0, 0x88
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0801AB10
|
|
b _0801AD5A
|
|
_0801AB10:
|
|
ldr r0, _0801AB24 @ =0xfffff077
|
|
ands r2, r0
|
|
str r2, [r1]
|
|
ldr r0, _0801AB28 @ =gUnknown_081D99CE
|
|
bl b_call_bc_move_exec
|
|
movs r3, 0x1
|
|
str r3, [sp, 0xC]
|
|
b _0801AD62
|
|
.align 2, 0
|
|
_0801AB24: .4byte 0xfffff077
|
|
_0801AB28: .4byte gUnknown_081D99CE
|
|
_0801AB2C:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x4C
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
movs r0, 0x10
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0801AB44
|
|
b _0801AD5A
|
|
_0801AB44:
|
|
movs r0, 0x11
|
|
negs r0, r0
|
|
ands r2, r0
|
|
str r2, [r1]
|
|
ldr r0, _0801AB58 @ =gUnknown_081D99E6
|
|
bl b_call_bc_move_exec
|
|
movs r4, 0x1
|
|
str r4, [sp, 0xC]
|
|
b _0801AD62
|
|
.align 2, 0
|
|
_0801AB58: .4byte gUnknown_081D99E6
|
|
_0801AB5C:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x4C
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
movs r0, 0x20
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0801AB74
|
|
b _0801AD5A
|
|
_0801AB74:
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r2, r0
|
|
str r2, [r1]
|
|
ldr r0, _0801AB80 @ =gUnknown_081D99FE
|
|
b _0801AD0E
|
|
.align 2, 0
|
|
_0801AB80: .4byte gUnknown_081D99FE
|
|
_0801AB84:
|
|
movs r0, 0x58
|
|
adds r3, r7, 0
|
|
muls r3, r0
|
|
mov r0, r8
|
|
adds r0, 0x4C
|
|
adds r2, r3, r0
|
|
ldr r1, [r2]
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801AB9C
|
|
b _0801AD5A
|
|
_0801AB9C:
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
mov r1, r8
|
|
adds r1, 0x50
|
|
adds r1, r3, r1
|
|
ldr r0, [r1]
|
|
ldr r2, _0801ABC0 @ =0xf7ffffff
|
|
ands r0, r2
|
|
str r0, [r1]
|
|
ldr r0, _0801ABC4 @ =gUnknown_081D9A16
|
|
bl b_call_bc_move_exec
|
|
movs r0, 0x1
|
|
str r0, [sp, 0xC]
|
|
b _0801AD62
|
|
.align 2, 0
|
|
_0801ABC0: .4byte 0xf7ffffff
|
|
_0801ABC4: .4byte gUnknown_081D9A16
|
|
_0801ABC8:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x50
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
movs r0, 0x7
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0801ABE0
|
|
b _0801AD5A
|
|
_0801ABE0:
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
ands r2, r0
|
|
str r2, [r1]
|
|
ldr r0, _0801ABF4 @ =gUnknown_081D9A2E
|
|
bl b_call_bc_move_exec
|
|
movs r1, 0x2
|
|
str r1, [sp, 0xC]
|
|
b _0801AD62
|
|
.align 2, 0
|
|
_0801ABF4: .4byte gUnknown_081D9A2E
|
|
_0801ABF8:
|
|
movs r0, 0x58
|
|
adds r5, r7, 0
|
|
muls r5, r0
|
|
mov r0, r8
|
|
adds r0, 0x4C
|
|
adds r4, r5, r0
|
|
ldr r2, [r4]
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
bne _0801AC1E
|
|
mov r0, r8
|
|
adds r0, 0x50
|
|
adds r0, r5, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801AC1E
|
|
b _0801AD5A
|
|
_0801AC1E:
|
|
movs r3, 0
|
|
mov r10, r3
|
|
movs r0, 0x88
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0801AC36
|
|
ldr r0, _0801ACC4 @ =gBattleTextBuff1
|
|
ldr r1, _0801ACC8 @ =gStatusConditionString_PoisonJpn
|
|
bl StringCopy
|
|
movs r0, 0x1
|
|
mov r10, r0
|
|
_0801AC36:
|
|
ldr r0, [r4]
|
|
movs r1, 0x7
|
|
mov r9, r1
|
|
ands r0, r1
|
|
mov r6, r8
|
|
adds r6, 0x50
|
|
cmp r0, 0
|
|
beq _0801AC5C
|
|
adds r2, r5, r6
|
|
ldr r0, [r2]
|
|
ldr r1, _0801ACCC @ =0xf7ffffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r0, _0801ACC4 @ =gBattleTextBuff1
|
|
ldr r1, _0801ACD0 @ =gStatusConditionString_SleepJpn
|
|
bl StringCopy
|
|
movs r2, 0x1
|
|
add r10, r2
|
|
_0801AC5C:
|
|
ldr r0, [r4]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801AC72
|
|
ldr r0, _0801ACC4 @ =gBattleTextBuff1
|
|
ldr r1, _0801ACD4 @ =gStatusConditionString_ParalysisJpn
|
|
bl StringCopy
|
|
movs r3, 0x1
|
|
add r10, r3
|
|
_0801AC72:
|
|
ldr r0, [r4]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801AC88
|
|
ldr r0, _0801ACC4 @ =gBattleTextBuff1
|
|
ldr r1, _0801ACD8 @ =gStatusConditionString_BurnJpn
|
|
bl StringCopy
|
|
movs r0, 0x1
|
|
add r10, r0
|
|
_0801AC88:
|
|
ldr r0, [r4]
|
|
movs r1, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801AC9E
|
|
ldr r0, _0801ACC4 @ =gBattleTextBuff1
|
|
ldr r1, _0801ACDC @ =gStatusConditionString_IceJpn
|
|
bl StringCopy
|
|
movs r1, 0x1
|
|
add r10, r1
|
|
_0801AC9E:
|
|
adds r0, r5, r6
|
|
ldr r0, [r0]
|
|
mov r2, r9
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0801ACB6
|
|
ldr r0, _0801ACC4 @ =gBattleTextBuff1
|
|
ldr r1, _0801ACE0 @ =gStatusConditionString_ConfusionJpn
|
|
bl StringCopy
|
|
movs r3, 0x1
|
|
add r10, r3
|
|
_0801ACB6:
|
|
mov r4, r10
|
|
cmp r4, 0x1
|
|
bgt _0801ACE8
|
|
ldr r1, _0801ACE4 @ =gBattleCommunication
|
|
movs r0, 0
|
|
b _0801ACEC
|
|
.align 2, 0
|
|
_0801ACC4: .4byte gBattleTextBuff1
|
|
_0801ACC8: .4byte gStatusConditionString_PoisonJpn
|
|
_0801ACCC: .4byte 0xf7ffffff
|
|
_0801ACD0: .4byte gStatusConditionString_SleepJpn
|
|
_0801ACD4: .4byte gStatusConditionString_ParalysisJpn
|
|
_0801ACD8: .4byte gStatusConditionString_BurnJpn
|
|
_0801ACDC: .4byte gStatusConditionString_IceJpn
|
|
_0801ACE0: .4byte gStatusConditionString_ConfusionJpn
|
|
_0801ACE4: .4byte gBattleCommunication
|
|
_0801ACE8:
|
|
ldr r1, _0801AD18 @ =gBattleCommunication
|
|
movs r0, 0x1
|
|
_0801ACEC:
|
|
strb r0, [r1, 0x5]
|
|
ldr r2, _0801AD1C @ =gBattleMons
|
|
movs r0, 0x58
|
|
adds r3, r7, 0
|
|
muls r3, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x4C
|
|
adds r0, r3, r0
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
adds r2, 0x50
|
|
adds r3, r2
|
|
ldr r0, [r3]
|
|
subs r1, 0x8
|
|
ands r0, r1
|
|
str r0, [r3]
|
|
ldr r0, _0801AD20 @ =gUnknown_081D9A44
|
|
_0801AD0E:
|
|
bl b_call_bc_move_exec
|
|
movs r5, 0x1
|
|
str r5, [sp, 0xC]
|
|
b _0801AD62
|
|
.align 2, 0
|
|
_0801AD18: .4byte gBattleCommunication
|
|
_0801AD1C: .4byte gBattleMons
|
|
_0801AD20: .4byte gUnknown_081D9A44
|
|
_0801AD24:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x50
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
movs r0, 0xF0
|
|
lsls r0, 12
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0801AD5A
|
|
ldr r0, _0801AD84 @ =0xfff0ffff
|
|
ands r2, r0
|
|
str r2, [r1]
|
|
ldr r0, _0801AD88 @ =gBattleTextBuff1
|
|
ldr r1, _0801AD8C @ =gStatusConditionString_LoveJpn
|
|
bl StringCopy
|
|
ldr r0, _0801AD90 @ =gUnknown_081D9A44
|
|
bl b_call_bc_move_exec
|
|
ldr r1, _0801AD94 @ =gBattleCommunication
|
|
movs r0, 0
|
|
strb r0, [r1, 0x5]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0xC]
|
|
_0801AD5A:
|
|
ldr r1, [sp, 0xC]
|
|
cmp r1, 0
|
|
bne _0801AD62
|
|
b _0801B3CA
|
|
_0801AD62:
|
|
ldr r0, _0801AD98 @ =0x02000000
|
|
ldr r2, _0801AD9C @ =0x00016003
|
|
adds r0, r2
|
|
strb r7, [r0]
|
|
ldr r0, _0801ADA0 @ =gStringBank
|
|
strb r7, [r0]
|
|
ldr r4, _0801ADA4 @ =gActiveBank
|
|
ldr r0, _0801ADA8 @ =gBankAttacker
|
|
strb r7, [r0]
|
|
strb r7, [r4]
|
|
ldr r3, [sp, 0xC]
|
|
cmp r3, 0x1
|
|
beq _0801ADAC
|
|
cmp r3, 0x3
|
|
beq _0801ADB2
|
|
b _0801B3CA
|
|
.align 2, 0
|
|
_0801AD84: .4byte 0xfff0ffff
|
|
_0801AD88: .4byte gBattleTextBuff1
|
|
_0801AD8C: .4byte gStatusConditionString_LoveJpn
|
|
_0801AD90: .4byte gUnknown_081D9A44
|
|
_0801AD94: .4byte gBattleCommunication
|
|
_0801AD98: .4byte 0x02000000
|
|
_0801AD9C: .4byte 0x00016003
|
|
_0801ADA0: .4byte gStringBank
|
|
_0801ADA4: .4byte gActiveBank
|
|
_0801ADA8: .4byte gBankAttacker
|
|
_0801ADAC:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
b _0801B224
|
|
_0801ADB2:
|
|
ldr r4, _0801AE00 @ =gBattleMons
|
|
movs r0, 0x58
|
|
adds r3, r7, 0
|
|
muls r3, r0
|
|
adds r0, r4, 0
|
|
adds r0, 0x50
|
|
adds r0, r3, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 14
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801ADCE
|
|
b _0801B3CA
|
|
_0801ADCE:
|
|
ldr r1, _0801AE04 @ =gDisableStructs
|
|
lsls r0, r7, 3
|
|
subs r0, r7
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x18]
|
|
lsrs r1, 4
|
|
ldr r2, _0801AE08 @ =gBitTable
|
|
mov r5, r10
|
|
lsls r0, r5, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0801ADEE
|
|
b _0801B3CA
|
|
_0801ADEE:
|
|
adds r1, r5, r3
|
|
adds r0, r4, 0
|
|
adds r0, 0x24
|
|
adds r1, r0
|
|
add r0, sp, 0x4
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
b _0801B3CA
|
|
.align 2, 0
|
|
_0801AE00: .4byte gBattleMons
|
|
_0801AE04: .4byte gDisableStructs
|
|
_0801AE08: .4byte gBitTable
|
|
_0801AE0C:
|
|
movs r7, 0
|
|
ldr r0, _0801AE3C @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r7, r0
|
|
bcc _0801AE18
|
|
b _0801B3CA
|
|
_0801AE18:
|
|
ldr r4, _0801AE40 @ =gLastUsedItem
|
|
ldr r1, _0801AE44 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2E]
|
|
strh r0, [r4]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0xAF
|
|
bne _0801AE4C
|
|
ldr r1, _0801AE48 @ =gEnigmaBerries
|
|
lsls r0, r7, 3
|
|
subs r0, r7
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r5, [r0, 0x7]
|
|
b _0801AE5C
|
|
.align 2, 0
|
|
_0801AE3C: .4byte gNoOfAllBanks
|
|
_0801AE40: .4byte gLastUsedItem
|
|
_0801AE44: .4byte gBattleMons
|
|
_0801AE48: .4byte gEnigmaBerries
|
|
_0801AE4C:
|
|
ldrh r0, [r4]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldrh r0, [r4]
|
|
bl ItemId_GetHoldEffectParam
|
|
_0801AE5C:
|
|
subs r0, r5, 0x2
|
|
cmp r0, 0x1A
|
|
bls _0801AE64
|
|
b _0801B208
|
|
_0801AE64:
|
|
lsls r0, 2
|
|
ldr r1, _0801AE70 @ =_0801AE74
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801AE70: .4byte _0801AE74
|
|
.align 2, 0
|
|
_0801AE74:
|
|
.4byte _0801AEE0
|
|
.4byte _0801AFC8
|
|
.4byte _0801AF1C
|
|
.4byte _0801AF58
|
|
.4byte _0801AF94
|
|
.4byte _0801B208
|
|
.4byte _0801B018
|
|
.4byte _0801B0AC
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B1A0
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B208
|
|
.4byte _0801B054
|
|
_0801AEE0:
|
|
ldr r1, _0801AF10 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r1, 0x4C
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801AEF6
|
|
b _0801B208
|
|
_0801AEF6:
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _0801AF14 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801AF18 @ =gUnknown_081D99BC
|
|
str r0, [r1]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0xC]
|
|
b _0801B20E
|
|
.align 2, 0
|
|
_0801AF10: .4byte gBattleMons
|
|
_0801AF14: .4byte gBattlescriptCurrInstr
|
|
_0801AF18: .4byte gUnknown_081D99BC
|
|
_0801AF1C:
|
|
ldr r1, _0801AF48 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r1, 0x4C
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x88
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801AF32
|
|
b _0801B208
|
|
_0801AF32:
|
|
ldr r0, _0801AF4C @ =0xfffff077
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _0801AF50 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801AF54 @ =gUnknown_081D99D4
|
|
str r0, [r1]
|
|
movs r1, 0x1
|
|
str r1, [sp, 0xC]
|
|
b _0801B20E
|
|
.align 2, 0
|
|
_0801AF48: .4byte gBattleMons
|
|
_0801AF4C: .4byte 0xfffff077
|
|
_0801AF50: .4byte gBattlescriptCurrInstr
|
|
_0801AF54: .4byte gUnknown_081D99D4
|
|
_0801AF58:
|
|
ldr r1, _0801AF88 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r1, 0x4C
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801AF6E
|
|
b _0801B208
|
|
_0801AF6E:
|
|
movs r0, 0x11
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _0801AF8C @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801AF90 @ =gUnknown_081D99EC
|
|
str r0, [r1]
|
|
movs r2, 0x1
|
|
str r2, [sp, 0xC]
|
|
b _0801B20E
|
|
.align 2, 0
|
|
_0801AF88: .4byte gBattleMons
|
|
_0801AF8C: .4byte gBattlescriptCurrInstr
|
|
_0801AF90: .4byte gUnknown_081D99EC
|
|
_0801AF94:
|
|
ldr r1, _0801AFBC @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r1, 0x4C
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801AFAA
|
|
b _0801B208
|
|
_0801AFAA:
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _0801AFC0 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801AFC4 @ =gUnknown_081D9A04
|
|
b _0801B168
|
|
.align 2, 0
|
|
_0801AFBC: .4byte gBattleMons
|
|
_0801AFC0: .4byte gBattlescriptCurrInstr
|
|
_0801AFC4: .4byte gUnknown_081D9A04
|
|
_0801AFC8:
|
|
ldr r2, _0801B008 @ =gBattleMons
|
|
movs r0, 0x58
|
|
adds r4, r7, 0
|
|
muls r4, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x4C
|
|
adds r3, r4, r0
|
|
ldr r1, [r3]
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801AFE2
|
|
b _0801B208
|
|
_0801AFE2:
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r3]
|
|
adds r2, 0x50
|
|
adds r2, r4, r2
|
|
ldr r0, [r2]
|
|
ldr r1, _0801B00C @ =0xf7ffffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _0801B010 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801B014 @ =gUnknown_081D9A1C
|
|
str r0, [r1]
|
|
movs r4, 0x1
|
|
str r4, [sp, 0xC]
|
|
b _0801B20E
|
|
.align 2, 0
|
|
_0801B008: .4byte gBattleMons
|
|
_0801B00C: .4byte 0xf7ffffff
|
|
_0801B010: .4byte gBattlescriptCurrInstr
|
|
_0801B014: .4byte gUnknown_081D9A1C
|
|
_0801B018:
|
|
ldr r1, _0801B048 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r1, 0x50
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801B02E
|
|
b _0801B208
|
|
_0801B02E:
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _0801B04C @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801B050 @ =gUnknown_081D9A34
|
|
str r0, [r1]
|
|
movs r5, 0x2
|
|
str r5, [sp, 0xC]
|
|
b _0801B20E
|
|
.align 2, 0
|
|
_0801B048: .4byte gBattleMons
|
|
_0801B04C: .4byte gBattlescriptCurrInstr
|
|
_0801B050: .4byte gUnknown_081D9A34
|
|
_0801B054:
|
|
ldr r1, _0801B090 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r1, 0x50
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0xF0
|
|
lsls r0, 12
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801B06C
|
|
b _0801B208
|
|
_0801B06C:
|
|
ldr r0, _0801B094 @ =0xfff0ffff
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
ldr r0, _0801B098 @ =gBattleTextBuff1
|
|
ldr r1, _0801B09C @ =gStatusConditionString_LoveJpn
|
|
bl StringCopy
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _0801B0A0 @ =gBattleCommunication
|
|
movs r0, 0
|
|
strb r0, [r1, 0x5]
|
|
ldr r1, _0801B0A4 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801B0A8 @ =gUnknown_081D9A4A
|
|
str r0, [r1]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0xC]
|
|
b _0801B20E
|
|
.align 2, 0
|
|
_0801B090: .4byte gBattleMons
|
|
_0801B094: .4byte 0xfff0ffff
|
|
_0801B098: .4byte gBattleTextBuff1
|
|
_0801B09C: .4byte gStatusConditionString_LoveJpn
|
|
_0801B0A0: .4byte gBattleCommunication
|
|
_0801B0A4: .4byte gBattlescriptCurrInstr
|
|
_0801B0A8: .4byte gUnknown_081D9A4A
|
|
_0801B0AC:
|
|
ldr r4, _0801B170 @ =gBattleMons
|
|
movs r0, 0x58
|
|
adds r5, r7, 0
|
|
muls r5, r0
|
|
adds r0, r4, 0
|
|
adds r0, 0x4C
|
|
adds r6, r5, r0
|
|
ldr r2, [r6]
|
|
ldrb r0, [r6]
|
|
cmp r0, 0
|
|
bne _0801B0D4
|
|
adds r0, r4, 0
|
|
adds r0, 0x50
|
|
adds r0, r5, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801B0D4
|
|
b _0801B208
|
|
_0801B0D4:
|
|
movs r0, 0x88
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0801B0E4
|
|
ldr r0, _0801B174 @ =gBattleTextBuff1
|
|
ldr r1, _0801B178 @ =gStatusConditionString_PoisonJpn
|
|
bl StringCopy
|
|
_0801B0E4:
|
|
ldr r0, [r6]
|
|
movs r1, 0x7
|
|
mov r8, r1
|
|
ands r0, r1
|
|
adds r4, 0x50
|
|
cmp r0, 0
|
|
beq _0801B104
|
|
adds r2, r5, r4
|
|
ldr r0, [r2]
|
|
ldr r1, _0801B17C @ =0xf7ffffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r0, _0801B174 @ =gBattleTextBuff1
|
|
ldr r1, _0801B180 @ =gStatusConditionString_SleepJpn
|
|
bl StringCopy
|
|
_0801B104:
|
|
ldr r0, [r6]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801B116
|
|
ldr r0, _0801B174 @ =gBattleTextBuff1
|
|
ldr r1, _0801B184 @ =gStatusConditionString_ParalysisJpn
|
|
bl StringCopy
|
|
_0801B116:
|
|
ldr r0, [r6]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801B128
|
|
ldr r0, _0801B174 @ =gBattleTextBuff1
|
|
ldr r1, _0801B188 @ =gStatusConditionString_BurnJpn
|
|
bl StringCopy
|
|
_0801B128:
|
|
ldr r0, [r6]
|
|
movs r1, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801B13A
|
|
ldr r0, _0801B174 @ =gBattleTextBuff1
|
|
ldr r1, _0801B18C @ =gStatusConditionString_IceJpn
|
|
bl StringCopy
|
|
_0801B13A:
|
|
adds r5, r4
|
|
ldr r0, [r5]
|
|
mov r2, r8
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0801B14E
|
|
ldr r0, _0801B174 @ =gBattleTextBuff1
|
|
ldr r1, _0801B190 @ =gStatusConditionString_ConfusionJpn
|
|
bl StringCopy
|
|
_0801B14E:
|
|
movs r4, 0
|
|
str r4, [r6]
|
|
ldr r0, [r5]
|
|
movs r1, 0x8
|
|
negs r1, r1
|
|
ands r0, r1
|
|
str r0, [r5]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r0, _0801B194 @ =gBattleCommunication
|
|
strb r4, [r0, 0x5]
|
|
ldr r1, _0801B198 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801B19C @ =gUnknown_081D9A4A
|
|
_0801B168:
|
|
str r0, [r1]
|
|
movs r3, 0x1
|
|
str r3, [sp, 0xC]
|
|
b _0801B20E
|
|
.align 2, 0
|
|
_0801B170: .4byte gBattleMons
|
|
_0801B174: .4byte gBattleTextBuff1
|
|
_0801B178: .4byte gStatusConditionString_PoisonJpn
|
|
_0801B17C: .4byte 0xf7ffffff
|
|
_0801B180: .4byte gStatusConditionString_SleepJpn
|
|
_0801B184: .4byte gStatusConditionString_ParalysisJpn
|
|
_0801B188: .4byte gStatusConditionString_BurnJpn
|
|
_0801B18C: .4byte gStatusConditionString_IceJpn
|
|
_0801B190: .4byte gStatusConditionString_ConfusionJpn
|
|
_0801B194: .4byte gBattleCommunication
|
|
_0801B198: .4byte gBattlescriptCurrInstr
|
|
_0801B19C: .4byte gUnknown_081D9A4A
|
|
_0801B1A0:
|
|
ldr r4, _0801B1F0 @ =gBattleMons
|
|
mov r8, r4
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x18
|
|
adds r1, r0
|
|
movs r2, 0x6
|
|
movs r5, 0x7
|
|
mov r10, r5
|
|
_0801B1B6:
|
|
movs r0, 0
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, 0x5
|
|
bgt _0801B1C4
|
|
strb r2, [r1]
|
|
movs r0, 0x5
|
|
str r0, [sp, 0xC]
|
|
_0801B1C4:
|
|
adds r1, 0x1
|
|
movs r3, 0x1
|
|
negs r3, r3
|
|
add r10, r3
|
|
mov r4, r10
|
|
cmp r4, 0
|
|
bge _0801B1B6
|
|
ldr r5, [sp, 0xC]
|
|
cmp r5, 0
|
|
beq _0801B254
|
|
ldr r0, _0801B1F4 @ =0x02000000
|
|
ldr r1, _0801B1F8 @ =0x00016003
|
|
adds r0, r1
|
|
strb r7, [r0]
|
|
ldr r0, _0801B1FC @ =gStringBank
|
|
strb r7, [r0]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _0801B200 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801B204 @ =gUnknown_081D9A64
|
|
str r0, [r1]
|
|
b _0801B3CA
|
|
.align 2, 0
|
|
_0801B1F0: .4byte gBattleMons
|
|
_0801B1F4: .4byte 0x02000000
|
|
_0801B1F8: .4byte 0x00016003
|
|
_0801B1FC: .4byte gStringBank
|
|
_0801B200: .4byte gBattlescriptCurrInstr
|
|
_0801B204: .4byte gUnknown_081D9A64
|
|
_0801B208:
|
|
ldr r2, [sp, 0xC]
|
|
cmp r2, 0
|
|
beq _0801B254
|
|
_0801B20E:
|
|
ldr r0, _0801B240 @ =0x02000000
|
|
ldr r3, _0801B244 @ =0x00016003
|
|
adds r0, r3
|
|
strb r7, [r0]
|
|
ldr r0, _0801B248 @ =gStringBank
|
|
strb r7, [r0]
|
|
ldr r4, _0801B24C @ =gActiveBank
|
|
strb r7, [r4]
|
|
ldrb r1, [r4]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
_0801B224:
|
|
ldr r1, _0801B250 @ =gUnknown_02024ACC
|
|
adds r0, r1
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r1, 0x28
|
|
movs r2, 0
|
|
movs r3, 0x4
|
|
bl EmitSetAttributes
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
b _0801B3CA
|
|
.align 2, 0
|
|
_0801B240: .4byte 0x02000000
|
|
_0801B244: .4byte 0x00016003
|
|
_0801B248: .4byte gStringBank
|
|
_0801B24C: .4byte gActiveBank
|
|
_0801B250: .4byte gUnknown_02024ACC
|
|
_0801B254:
|
|
adds r0, r7, 0x1
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _0801B268 @ =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r7, r0
|
|
bcs _0801B264
|
|
b _0801AE18
|
|
_0801B264:
|
|
b _0801B3CA
|
|
.align 2, 0
|
|
_0801B268: .4byte gNoOfAllBanks
|
|
_0801B26C:
|
|
ldr r7, _0801B284 @ =gBattleMoveDamage
|
|
ldr r0, [r7]
|
|
cmp r0, 0
|
|
bne _0801B276
|
|
b _0801B3CA
|
|
_0801B276:
|
|
mov r4, r8
|
|
cmp r4, 0x1E
|
|
beq _0801B288
|
|
cmp r4, 0x3E
|
|
beq _0801B330
|
|
b _0801B3CA
|
|
.align 2, 0
|
|
_0801B284: .4byte gBattleMoveDamage
|
|
_0801B288:
|
|
ldr r0, _0801B314 @ =gBattleMoveFlags
|
|
ldrb r1, [r0]
|
|
movs r0, 0x29
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801B296
|
|
b _0801B3CA
|
|
_0801B296:
|
|
ldr r2, _0801B318 @ =gSpecialStatuses
|
|
ldr r4, _0801B31C @ =gBankTarget
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r1, r0, 2
|
|
adds r0, r2, 0
|
|
adds r0, 0x8
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0801B2BC
|
|
adds r0, r2, 0
|
|
adds r0, 0xC
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0801B2BC
|
|
b _0801B3CA
|
|
_0801B2BC:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x64
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, r9
|
|
bcs _0801B3CA
|
|
ldr r2, _0801B320 @ =gBattleMoves
|
|
ldr r0, _0801B324 @ =gCurrentMove
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801B3CA
|
|
ldr r2, _0801B328 @ =gBattleMons
|
|
ldrb r1, [r4]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
adds r0, r2
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
beq _0801B3CA
|
|
ldr r1, _0801B32C @ =gBattleCommunication
|
|
movs r0, 0x8
|
|
strb r0, [r1, 0x3]
|
|
bl b_movescr_stack_push_cursor
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_801E3EC
|
|
bl b_movescr_stack_pop_cursor
|
|
b _0801B3CA
|
|
.align 2, 0
|
|
_0801B314: .4byte gBattleMoveFlags
|
|
_0801B318: .4byte gSpecialStatuses
|
|
_0801B31C: .4byte gBankTarget
|
|
_0801B320: .4byte gBattleMoves
|
|
_0801B324: .4byte gCurrentMove
|
|
_0801B328: .4byte gBattleMons
|
|
_0801B32C: .4byte gBattleCommunication
|
|
_0801B330:
|
|
ldr r0, _0801B3DC @ =gBattleMoveFlags
|
|
ldrb r0, [r0]
|
|
movs r4, 0x29
|
|
ands r4, r0
|
|
cmp r4, 0
|
|
bne _0801B3CA
|
|
ldr r1, _0801B3E0 @ =gSpecialStatuses
|
|
ldr r5, _0801B3E4 @ =gBankTarget
|
|
ldrb r2, [r5]
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r6, r1, 0x4
|
|
adds r0, r6
|
|
ldr r1, [r0]
|
|
cmp r1, 0
|
|
beq _0801B3CA
|
|
ldr r0, _0801B3E8 @ =0x0000ffff
|
|
cmp r1, r0
|
|
beq _0801B3CA
|
|
ldr r0, _0801B3EC @ =gBankAttacker
|
|
ldrb r3, [r0]
|
|
cmp r3, r2
|
|
beq _0801B3CA
|
|
ldr r2, _0801B3F0 @ =gBattleMons
|
|
ldrb r1, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x28]
|
|
ldrh r0, [r0, 0x2C]
|
|
cmp r1, r0
|
|
beq _0801B3CA
|
|
cmp r1, 0
|
|
beq _0801B3CA
|
|
ldr r0, _0801B3F4 @ =gLastUsedItem
|
|
mov r1, sp
|
|
ldrh r1, [r1, 0x14]
|
|
strh r1, [r0]
|
|
ldr r0, _0801B3F8 @ =gStringBank
|
|
strb r3, [r0]
|
|
ldr r0, _0801B3FC @ =0x02000000
|
|
ldr r2, _0801B400 @ =0x00016003
|
|
adds r0, r2
|
|
strb r3, [r0]
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldr r0, [r0]
|
|
ldr r1, [sp, 0x10]
|
|
bl __divsi3
|
|
negs r0, r0
|
|
str r0, [r7]
|
|
ldrb r1, [r5]
|
|
cmp r0, 0
|
|
bne _0801B3AC
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r0, [r7]
|
|
_0801B3AC:
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
str r4, [r0]
|
|
bl b_movescr_stack_push_cursor
|
|
ldr r1, _0801B404 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801B408 @ =gUnknown_081D9AA7
|
|
str r0, [r1]
|
|
ldr r0, [sp, 0xC]
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0xC]
|
|
_0801B3CA:
|
|
ldr r0, [sp, 0xC]
|
|
add sp, 0x2C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0801B3DC: .4byte gBattleMoveFlags
|
|
_0801B3E0: .4byte gSpecialStatuses
|
|
_0801B3E4: .4byte gBankTarget
|
|
_0801B3E8: .4byte 0x0000ffff
|
|
_0801B3EC: .4byte gBankAttacker
|
|
_0801B3F0: .4byte gBattleMons
|
|
_0801B3F4: .4byte gLastUsedItem
|
|
_0801B3F8: .4byte gStringBank
|
|
_0801B3FC: .4byte 0x02000000
|
|
_0801B400: .4byte 0x00016003
|
|
_0801B404: .4byte gBattlescriptCurrInstr
|
|
_0801B408: .4byte gUnknown_081D9AA7
|
|
thumb_func_end sub_801A02C
|
|
|
|
thumb_func_start unref_sub_801B40C
|
|
unref_sub_801B40C: @ 801B40C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
ldr r0, _0801B464 @ =gBattleTypeFlags
|
|
ldrh r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801B42A
|
|
b _0801B56E
|
|
_0801B42A:
|
|
movs r1, 0x1
|
|
mov r9, r1
|
|
_0801B42E:
|
|
movs r5, 0
|
|
ldr r4, _0801B468 @ =gUnknown_081FC1D0
|
|
ldr r2, [sp]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x4]
|
|
_0801B438:
|
|
ldr r0, _0801B46C @ =gAbsentBankFlags
|
|
ldrb r2, [r0]
|
|
ldr r3, _0801B470 @ =gBitTable
|
|
lsls r0, r5, 2
|
|
adds r0, r3
|
|
ldr r0, [r0]
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0801B45A
|
|
adds r0, r5, 0x2
|
|
lsls r1, r0, 2
|
|
adds r1, r3
|
|
ldr r1, [r1]
|
|
ands r2, r1
|
|
adds r7, r0, 0
|
|
cmp r2, 0
|
|
beq _0801B474
|
|
_0801B45A:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
b _0801B556
|
|
.align 2, 0
|
|
_0801B464: .4byte gBattleTypeFlags
|
|
_0801B468: .4byte gUnknown_081FC1D0
|
|
_0801B46C: .4byte gAbsentBankFlags
|
|
_0801B470: .4byte gBitTable
|
|
_0801B474:
|
|
ldr r0, _0801B580 @ =gUnknown_081FC1D0
|
|
ldr r2, [sp]
|
|
lsls r1, r2, 3
|
|
adds r6, r1, r0
|
|
ldr r4, _0801B584 @ =gChosenMovesByBanks
|
|
lsls r0, r5, 1
|
|
adds r3, r0, r4
|
|
ldrh r2, [r6]
|
|
mov r8, r1
|
|
mov r10, r0
|
|
ldrh r3, [r3]
|
|
cmp r2, r3
|
|
bne _0801B4E4
|
|
lsls r0, r7, 1
|
|
adds r0, r4
|
|
ldrh r1, [r6, 0x2]
|
|
ldrh r0, [r0]
|
|
cmp r1, r0
|
|
bne _0801B4E4
|
|
adds r0, r5, 0
|
|
bl GetBankIdentity
|
|
mov r2, r9
|
|
ands r2, r0
|
|
lsls r1, r2, 1
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
ldr r0, _0801B588 @ =gSideTimer
|
|
adds r1, r0
|
|
lsls r0, r7, 4
|
|
orrs r0, r5
|
|
strb r0, [r1, 0x3]
|
|
adds r0, r5, 0
|
|
bl GetBankIdentity
|
|
mov r1, r9
|
|
ands r1, r0
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0801B588 @ =gSideTimer
|
|
adds r0, r1
|
|
ldrh r1, [r6, 0x4]
|
|
strh r1, [r0, 0x4]
|
|
adds r0, r5, 0
|
|
bl GetBankIdentity
|
|
mov r1, r9
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
ldr r2, _0801B58C @ =gSideAffecting
|
|
adds r1, r2
|
|
ldrh r0, [r1]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strh r0, [r1]
|
|
_0801B4E4:
|
|
ldr r0, _0801B580 @ =gUnknown_081FC1D0
|
|
mov r1, r8
|
|
adds r4, r1, r0
|
|
ldr r2, _0801B584 @ =gChosenMovesByBanks
|
|
lsls r0, r7, 1
|
|
adds r0, r2
|
|
ldrh r1, [r4]
|
|
ldrh r0, [r0]
|
|
cmp r1, r0
|
|
bne _0801B54E
|
|
mov r0, r10
|
|
adds r1, r0, r2
|
|
ldrh r0, [r4, 0x2]
|
|
ldrh r1, [r1]
|
|
cmp r0, r1
|
|
bne _0801B54E
|
|
adds r0, r5, 0
|
|
bl GetBankIdentity
|
|
mov r2, r9
|
|
ands r2, r0
|
|
lsls r1, r2, 1
|
|
adds r1, r2
|
|
lsls r1, 2
|
|
ldr r2, _0801B588 @ =gSideTimer
|
|
adds r1, r2
|
|
lsls r0, r5, 4
|
|
orrs r0, r7
|
|
strb r0, [r1, 0x3]
|
|
adds r0, r5, 0
|
|
bl GetBankIdentity
|
|
mov r1, r9
|
|
ands r1, r0
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0801B588 @ =gSideTimer
|
|
adds r0, r1
|
|
ldrh r1, [r4, 0x4]
|
|
strh r1, [r0, 0x4]
|
|
adds r0, r5, 0
|
|
bl GetBankIdentity
|
|
mov r1, r9
|
|
ands r1, r0
|
|
lsls r1, 1
|
|
ldr r2, _0801B58C @ =gSideAffecting
|
|
adds r1, r2
|
|
ldrh r0, [r1]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strh r0, [r1]
|
|
_0801B54E:
|
|
adds r0, r5, 0x1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r4, _0801B580 @ =gUnknown_081FC1D0
|
|
_0801B556:
|
|
cmp r5, 0x1
|
|
bhi _0801B55C
|
|
b _0801B438
|
|
_0801B55C:
|
|
ldr r0, [sp, 0x4]
|
|
str r0, [sp]
|
|
lsls r0, 3
|
|
adds r0, r4
|
|
ldrh r1, [r0]
|
|
ldr r0, _0801B590 @ =0x0000ffff
|
|
cmp r1, r0
|
|
beq _0801B56E
|
|
b _0801B42E
|
|
_0801B56E:
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801B580: .4byte gUnknown_081FC1D0
|
|
_0801B584: .4byte gChosenMovesByBanks
|
|
_0801B588: .4byte gSideTimer
|
|
_0801B58C: .4byte gSideAffecting
|
|
_0801B590: .4byte 0x0000ffff
|
|
thumb_func_end unref_sub_801B40C
|
|
|
|
thumb_func_start sub_801B594
|
|
sub_801B594: @ 801B594
|
|
push {lr}
|
|
ldr r0, _0801B5B4 @ =gBattleExecBuffer
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0801B5B0
|
|
ldr r1, _0801B5B8 @ =gBattleScriptingCommandsTable
|
|
ldr r0, _0801B5BC @ =gBattlescriptCurrInstr
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
_0801B5B0:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801B5B4: .4byte gBattleExecBuffer
|
|
_0801B5B8: .4byte gBattleScriptingCommandsTable
|
|
_0801B5BC: .4byte gBattlescriptCurrInstr
|
|
thumb_func_end sub_801B594
|
|
|
|
thumb_func_start sub_801B5C0
|
|
sub_801B5C0: @ 801B5C0
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
lsls r1, 24
|
|
lsrs r0, r1, 24
|
|
movs r5, 0
|
|
cmp r0, 0
|
|
beq _0801B5DE
|
|
subs r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
b _0801B5EA
|
|
_0801B5DE:
|
|
ldr r1, _0801B5FC @ =gBattleMoves
|
|
lsls r0, r7, 1
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r6, [r0, 0x6]
|
|
_0801B5EA:
|
|
cmp r6, 0x40
|
|
bls _0801B5F0
|
|
b _0801B900
|
|
_0801B5F0:
|
|
lsls r0, r6, 2
|
|
ldr r1, _0801B600 @ =_0801B604
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801B5FC: .4byte gBattleMoves
|
|
_0801B600: .4byte _0801B604
|
|
.align 2, 0
|
|
_0801B604:
|
|
.4byte _0801B708
|
|
.4byte _0801B808
|
|
.4byte _0801B8FC
|
|
.4byte _0801B900
|
|
.4byte _0801B820
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B808
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B8FC
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B808
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B900
|
|
.4byte _0801B808
|
|
_0801B708:
|
|
ldr r0, _0801B7E8 @ =gBankAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBankSide
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, _0801B7EC @ =gSideTimer
|
|
lsls r0, r4, 1
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r2, r0, r1
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
beq _0801B73A
|
|
ldr r1, _0801B7F0 @ =gBattleMons
|
|
ldrb r4, [r2, 0x9]
|
|
movs r0, 0x58
|
|
muls r0, r4
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
beq _0801B73A
|
|
b _0801B850
|
|
_0801B73A:
|
|
ldr r0, _0801B7E8 @ =gBankAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r7, 1
|
|
mov r8, r0
|
|
_0801B74A:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r1, _0801B7F4 @ =gNoOfAllBanks
|
|
ldrb r1, [r1]
|
|
bl __modsi3
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r6, _0801B7E8 @ =gBankAttacker
|
|
ldrb r2, [r6]
|
|
cmp r5, r2
|
|
beq _0801B74A
|
|
adds r0, r5, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r4, r0
|
|
beq _0801B74A
|
|
ldr r0, _0801B7F8 @ =gAbsentBankFlags
|
|
ldrb r2, [r0]
|
|
ldr r1, _0801B7FC @ =gBitTable
|
|
lsls r0, r5, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
bne _0801B74A
|
|
ldr r0, _0801B800 @ =gBattleMoves
|
|
mov r3, r8
|
|
adds r1, r3, r7
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x2]
|
|
cmp r0, 0xD
|
|
beq _0801B798
|
|
b _0801B900
|
|
_0801B798:
|
|
ldrb r1, [r6]
|
|
str r2, [sp]
|
|
movs r0, 0x10
|
|
movs r2, 0x1F
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801B7AE
|
|
b _0801B900
|
|
_0801B7AE:
|
|
ldr r2, _0801B7F0 @ =gBattleMons
|
|
movs r1, 0x58
|
|
adds r0, r5, 0
|
|
muls r0, r1
|
|
adds r0, r2
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1F
|
|
bne _0801B7C2
|
|
b _0801B900
|
|
_0801B7C2:
|
|
movs r4, 0x2
|
|
eors r5, r4
|
|
adds r0, r5, 0
|
|
muls r0, r1
|
|
adds r0, r2
|
|
adds r0, 0x20
|
|
ldrb r1, [r0]
|
|
adds r0, r5, 0
|
|
bl RecordAbilityBattle
|
|
ldr r1, _0801B804 @ =gSpecialStatuses
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
orrs r1, r4
|
|
strb r1, [r0]
|
|
b _0801B900
|
|
.align 2, 0
|
|
_0801B7E8: .4byte gBankAttacker
|
|
_0801B7EC: .4byte gSideTimer
|
|
_0801B7F0: .4byte gBattleMons
|
|
_0801B7F4: .4byte gNoOfAllBanks
|
|
_0801B7F8: .4byte gAbsentBankFlags
|
|
_0801B7FC: .4byte gBitTable
|
|
_0801B800: .4byte gBattleMoves
|
|
_0801B804: .4byte gSpecialStatuses
|
|
_0801B808:
|
|
ldr r0, _0801B81C @ =gBankAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBankIdentity
|
|
adds r1, r0, 0
|
|
movs r2, 0x1
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
eors r0, r2
|
|
b _0801B8B2
|
|
.align 2, 0
|
|
_0801B81C: .4byte gBankAttacker
|
|
_0801B820:
|
|
ldr r0, _0801B854 @ =gBankAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBankSide
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, _0801B858 @ =gSideTimer
|
|
lsls r0, r4, 1
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r2, r0, r1
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
beq _0801B860
|
|
ldr r1, _0801B85C @ =gBattleMons
|
|
ldrb r4, [r2, 0x9]
|
|
movs r0, 0x58
|
|
muls r0, r4
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
beq _0801B860
|
|
_0801B850:
|
|
adds r5, r4, 0
|
|
b _0801B900
|
|
.align 2, 0
|
|
_0801B854: .4byte gBankAttacker
|
|
_0801B858: .4byte gSideTimer
|
|
_0801B85C: .4byte gBattleMons
|
|
_0801B860:
|
|
ldr r0, _0801B894 @ =gBattleTypeFlags
|
|
ldrh r1, [r0]
|
|
movs r4, 0x1
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801B8DC
|
|
movs r0, 0x4
|
|
ands r6, r0
|
|
cmp r6, 0
|
|
beq _0801B8DC
|
|
ldr r0, _0801B898 @ =gBankAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801B8A0
|
|
bl Random
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0801B89C
|
|
movs r0, 0x1
|
|
b _0801B8B2
|
|
.align 2, 0
|
|
_0801B894: .4byte gBattleTypeFlags
|
|
_0801B898: .4byte gBankAttacker
|
|
_0801B89C:
|
|
movs r0, 0x3
|
|
b _0801B8B2
|
|
_0801B8A0:
|
|
bl Random
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0801B8B0
|
|
movs r0, 0
|
|
b _0801B8B2
|
|
_0801B8B0:
|
|
movs r0, 0x2
|
|
_0801B8B2:
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r0, _0801B8D4 @ =gAbsentBankFlags
|
|
ldrb r1, [r0]
|
|
ldr r2, _0801B8D8 @ =gBitTable
|
|
lsls r0, r5, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0801B900
|
|
movs r0, 0x2
|
|
eors r5, r0
|
|
b _0801B900
|
|
.align 2, 0
|
|
_0801B8D4: .4byte gAbsentBankFlags
|
|
_0801B8D8: .4byte gBitTable
|
|
_0801B8DC:
|
|
ldr r0, _0801B8F8 @ =gBankAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBankIdentity
|
|
adds r1, r0, 0
|
|
movs r2, 0x1
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
eors r0, r2
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
b _0801B900
|
|
.align 2, 0
|
|
_0801B8F8: .4byte gBankAttacker
|
|
_0801B8FC:
|
|
ldr r0, _0801B91C @ =gBankAttacker
|
|
ldrb r5, [r0]
|
|
_0801B900:
|
|
ldr r1, _0801B920 @ =0x02000000
|
|
ldr r0, _0801B91C @ =gBankAttacker
|
|
ldrb r0, [r0]
|
|
ldr r2, _0801B924 @ =0x00016010
|
|
adds r0, r2
|
|
adds r0, r1
|
|
strb r5, [r0]
|
|
adds r0, r5, 0
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0801B91C: .4byte gBankAttacker
|
|
_0801B920: .4byte 0x02000000
|
|
_0801B924: .4byte 0x00016010
|
|
thumb_func_end sub_801B5C0
|
|
|
|
thumb_func_start sub_801B928
|
|
sub_801B928: @ 801B928
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x10
|
|
ldr r0, _0801B9E0 @ =gBattleTypeFlags
|
|
ldrh r1, [r0]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801B9DA
|
|
ldr r7, _0801B9E4 @ =gBankAttacker
|
|
ldrb r0, [r7]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0801B9DA
|
|
ldr r5, _0801B9E8 @ =gBattleMons
|
|
ldrb r0, [r7]
|
|
movs r1, 0x58
|
|
mov r8, r1
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r5, 0
|
|
adds r0, 0x54
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
adds r2, r5, 0
|
|
adds r2, 0x3C
|
|
adds r1, r2
|
|
bl IsOtherTrainer
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0801B9DA
|
|
ldr r0, _0801B9EC @ =0x0000080e
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801B9DA
|
|
movs r6, 0xA
|
|
ldr r0, _0801B9F0 @ =0x00000808
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0801B98E
|
|
movs r6, 0x1E
|
|
_0801B98E:
|
|
ldr r0, _0801B9F4 @ =0x0000080a
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0801B99C
|
|
movs r6, 0x32
|
|
_0801B99C:
|
|
ldr r0, _0801B9F8 @ =0x0000080c
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0801B9AA
|
|
movs r6, 0x46
|
|
_0801B9AA:
|
|
ldrb r0, [r7]
|
|
mov r2, r8
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
adds r0, r5
|
|
adds r0, 0x2A
|
|
ldrb r0, [r0]
|
|
cmp r0, r6
|
|
bls _0801B9DA
|
|
bl Random
|
|
movs r1, 0xFF
|
|
ands r1, r0
|
|
ldrb r0, [r7]
|
|
mov r2, r8
|
|
muls r2, r0
|
|
adds r0, r2, r5
|
|
adds r0, 0x2A
|
|
ldrb r0, [r0]
|
|
adds r0, r6
|
|
muls r0, r1
|
|
asrs r4, r0, 8
|
|
cmp r4, r6
|
|
bge _0801B9FC
|
|
_0801B9DA:
|
|
movs r0, 0
|
|
b _0801BC24
|
|
.align 2, 0
|
|
_0801B9E0: .4byte gBattleTypeFlags
|
|
_0801B9E4: .4byte gBankAttacker
|
|
_0801B9E8: .4byte gBattleMons
|
|
_0801B9EC: .4byte 0x0000080e
|
|
_0801B9F0: .4byte 0x00000808
|
|
_0801B9F4: .4byte 0x0000080a
|
|
_0801B9F8: .4byte 0x0000080c
|
|
_0801B9FC:
|
|
ldr r3, _0801BA3C @ =gCurrentMove
|
|
ldrh r0, [r3]
|
|
cmp r0, 0x63
|
|
bne _0801BA12
|
|
adds r0, r5, 0
|
|
adds r0, 0x50
|
|
adds r0, r2, r0
|
|
ldr r1, [r0]
|
|
ldr r2, _0801BA40 @ =0xff7fffff
|
|
ands r1, r2
|
|
str r1, [r0]
|
|
_0801BA12:
|
|
ldrb r0, [r7]
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r1, r5, 0
|
|
adds r1, 0x4C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801BA4C
|
|
ldrh r0, [r3]
|
|
cmp r0, 0xAD
|
|
beq _0801BA34
|
|
cmp r0, 0xD6
|
|
bne _0801BA4C
|
|
_0801BA34:
|
|
ldr r1, _0801BA44 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801BA48 @ =gUnknown_081D995F
|
|
b _0801BBCE
|
|
.align 2, 0
|
|
_0801BA3C: .4byte gCurrentMove
|
|
_0801BA40: .4byte 0xff7fffff
|
|
_0801BA44: .4byte gBattlescriptCurrInstr
|
|
_0801BA48: .4byte gUnknown_081D995F
|
|
_0801BA4C:
|
|
bl Random
|
|
movs r5, 0xFF
|
|
adds r1, r5, 0
|
|
ands r1, r0
|
|
ldr r7, _0801BB04 @ =gBattleMons
|
|
ldr r2, _0801BB08 @ =gBankAttacker
|
|
mov r9, r2
|
|
ldrb r3, [r2]
|
|
movs r0, 0x58
|
|
mov r8, r0
|
|
mov r0, r8
|
|
muls r0, r3
|
|
adds r0, r7
|
|
adds r0, 0x2A
|
|
ldrb r2, [r0]
|
|
adds r0, r2, r6
|
|
muls r0, r1
|
|
asrs r4, r0, 8
|
|
cmp r4, r6
|
|
bge _0801BB3C
|
|
ldr r7, _0801BB0C @ =gBitTable
|
|
ldr r5, _0801BB10 @ =gCurrMovePos
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
ldrb r1, [r0]
|
|
adds r0, r3, 0
|
|
movs r2, 0xFF
|
|
bl sub_8015A98
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0xF
|
|
bne _0801BA94
|
|
b _0801BBBE
|
|
_0801BA94:
|
|
adds r6, r5, 0
|
|
ldr r1, _0801BB14 @ =gUnknown_02024BE5
|
|
mov r9, r1
|
|
movs r2, 0x3
|
|
mov r8, r2
|
|
_0801BA9E:
|
|
bl Random
|
|
mov r1, r8
|
|
ands r0, r1
|
|
mov r2, r9
|
|
strb r0, [r2]
|
|
strb r0, [r6]
|
|
ldrb r0, [r6]
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
ldr r5, [r0]
|
|
ands r5, r4
|
|
cmp r5, 0
|
|
bne _0801BA9E
|
|
ldr r4, _0801BB18 @ =gUnknown_02024BEA
|
|
ldr r3, _0801BB04 @ =gBattleMons
|
|
ldr r0, _0801BB10 @ =gCurrMovePos
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
ldr r1, _0801BB08 @ =gBankAttacker
|
|
ldrb r2, [r1]
|
|
movs r1, 0x58
|
|
muls r1, r2
|
|
adds r0, r1
|
|
adds r3, 0xC
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
strh r0, [r4]
|
|
ldr r0, _0801BB1C @ =gBattleCommunication
|
|
strb r5, [r0, 0x3]
|
|
ldr r0, _0801BB20 @ =gDynamicBasePower
|
|
movs r1, 0
|
|
strh r5, [r0]
|
|
ldr r0, _0801BB24 @ =0x02000000
|
|
ldr r2, _0801BB28 @ =0x0001601c
|
|
adds r0, r2
|
|
strb r1, [r0]
|
|
ldr r1, _0801BB2C @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801BB30 @ =gUnknown_081D996F
|
|
str r0, [r1]
|
|
ldrh r0, [r4]
|
|
movs r1, 0
|
|
bl sub_801B5C0
|
|
ldr r1, _0801BB34 @ =gBankTarget
|
|
strb r0, [r1]
|
|
ldr r2, _0801BB38 @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 14
|
|
b _0801BC1E
|
|
.align 2, 0
|
|
_0801BB04: .4byte gBattleMons
|
|
_0801BB08: .4byte gBankAttacker
|
|
_0801BB0C: .4byte gBitTable
|
|
_0801BB10: .4byte gCurrMovePos
|
|
_0801BB14: .4byte gUnknown_02024BE5
|
|
_0801BB18: .4byte gUnknown_02024BEA
|
|
_0801BB1C: .4byte gBattleCommunication
|
|
_0801BB20: .4byte gDynamicBasePower
|
|
_0801BB24: .4byte 0x02000000
|
|
_0801BB28: .4byte 0x0001601c
|
|
_0801BB2C: .4byte gBattlescriptCurrInstr
|
|
_0801BB30: .4byte gUnknown_081D996F
|
|
_0801BB34: .4byte gBankTarget
|
|
_0801BB38: .4byte gHitMarker
|
|
_0801BB3C:
|
|
subs r0, r2, r6
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
bl Random
|
|
adds r4, r5, 0
|
|
ands r4, r0
|
|
cmp r4, r6
|
|
bge _0801BBB8
|
|
mov r1, r9
|
|
ldrb r0, [r1]
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r7, 0
|
|
adds r0, 0x4C
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
bne _0801BBB8
|
|
adds r0, r1, r7
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x48
|
|
beq _0801BBB8
|
|
cmp r0, 0xF
|
|
beq _0801BBB8
|
|
movs r2, 0
|
|
ldr r0, _0801BBAC @ =gNoOfAllBanks
|
|
ldrb r3, [r0]
|
|
mov r8, r0
|
|
cmp r2, r3
|
|
bge _0801BB9E
|
|
ldr r0, [r7, 0x50]
|
|
movs r1, 0x70
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801BB9E
|
|
adds r1, r7, 0
|
|
adds r1, 0x50
|
|
movs r5, 0x70
|
|
_0801BB8E:
|
|
adds r1, 0x58
|
|
adds r2, 0x1
|
|
cmp r2, r3
|
|
bge _0801BB9E
|
|
ldr r0, [r1]
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
beq _0801BB8E
|
|
_0801BB9E:
|
|
mov r0, r8
|
|
ldrb r0, [r0]
|
|
cmp r2, r0
|
|
bne _0801BBB8
|
|
ldr r1, _0801BBB0 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801BBB4 @ =gUnknown_081D9989
|
|
b _0801BBCE
|
|
.align 2, 0
|
|
_0801BBAC: .4byte gNoOfAllBanks
|
|
_0801BBB0: .4byte gBattlescriptCurrInstr
|
|
_0801BBB4: .4byte gUnknown_081D9989
|
|
_0801BBB8:
|
|
subs r4, r6
|
|
cmp r4, r6
|
|
blt _0801BBE0
|
|
_0801BBBE:
|
|
bl Random
|
|
ldr r2, _0801BBD4 @ =gBattleCommunication
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
strb r1, [r2, 0x5]
|
|
ldr r1, _0801BBD8 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801BBDC @ =gUnknown_081D9977
|
|
_0801BBCE:
|
|
str r0, [r1]
|
|
movs r0, 0x1
|
|
b _0801BC24
|
|
.align 2, 0
|
|
_0801BBD4: .4byte gBattleCommunication
|
|
_0801BBD8: .4byte gBattlescriptCurrInstr
|
|
_0801BBDC: .4byte gUnknown_081D9977
|
|
_0801BBE0:
|
|
ldr r4, _0801BC34 @ =gBankAttacker
|
|
ldrb r1, [r4]
|
|
movs r0, 0x58
|
|
muls r1, r0
|
|
ldr r0, _0801BC38 @ =gBattleMons
|
|
adds r1, r0
|
|
movs r0, 0x28
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
str r0, [sp, 0x4]
|
|
ldrb r0, [r4]
|
|
str r0, [sp, 0x8]
|
|
ldrb r0, [r4]
|
|
str r0, [sp, 0xC]
|
|
adds r0, r1, 0
|
|
movs r2, 0x1
|
|
movs r3, 0
|
|
bl CalculateBaseDamage
|
|
ldr r1, _0801BC3C @ =gBattleMoveDamage
|
|
str r0, [r1]
|
|
ldr r1, _0801BC40 @ =gBankTarget
|
|
ldrb r0, [r4]
|
|
strb r0, [r1]
|
|
ldr r1, _0801BC44 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801BC48 @ =gUnknown_081D99A0
|
|
str r0, [r1]
|
|
ldr r2, _0801BC4C @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 12
|
|
_0801BC1E:
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
movs r0, 0x2
|
|
_0801BC24:
|
|
add sp, 0x10
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0801BC34: .4byte gBankAttacker
|
|
_0801BC38: .4byte gBattleMons
|
|
_0801BC3C: .4byte gBattleMoveDamage
|
|
_0801BC40: .4byte gBankTarget
|
|
_0801BC44: .4byte gBattlescriptCurrInstr
|
|
_0801BC48: .4byte gUnknown_081D99A0
|
|
_0801BC4C: .4byte gHitMarker
|
|
thumb_func_end sub_801B928
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|