Files
Pokemon-Firered/asm/battle_script_commands.s
T
jiangzhengwenjz ca130a8aeb thru atkc0
2019-08-27 10:27:36 +08:00

5254 lines
98 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start atkC1_hiddenpowercalc
atkC1_hiddenpowercalc: @ 802B678
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r2, _0802B760 @ =gBattleMons
ldr r0, _0802B764 @ =gBattlerAttacker
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
adds r1, r2
ldrb r0, [r1, 0x14]
mov r9, r0
mov r7, r9
lsls r7, 27
adds r0, r7, 0
lsrs r0, 27
mov r9, r0
movs r4, 0x2
mov r2, r9
ands r2, r4
asrs r2, 1
ldrh r7, [r1, 0x14]
mov r8, r7
mov r0, r8
lsls r0, 22
lsrs r0, 27
mov r8, r0
ands r0, r4
orrs r2, r0
ldrb r6, [r1, 0x15]
lsls r6, 25
lsrs r6, 27
adds r0, r6, 0
ands r0, r4
lsls r0, 1
orrs r2, r0
ldr r5, [r1, 0x14]
lsls r5, 12
lsrs r5, 27
adds r0, r5, 0
ands r0, r4
lsls r0, 2
orrs r2, r0
ldrh r3, [r1, 0x16]
lsls r3, 23
lsrs r3, 27
adds r0, r3, 0
ands r0, r4
lsls r0, 3
orrs r2, r0
ldrb r1, [r1, 0x17]
lsls r1, 26
lsrs r1, 27
adds r0, r1, 0
ands r0, r4
lsls r0, 4
orrs r2, r0
movs r0, 0x1
adds r4, r0, 0
mov r7, r9
ands r4, r7
mov r7, r8
ands r7, r0
lsls r7, 1
orrs r4, r7
ands r6, r0
lsls r6, 2
orrs r4, r6
ands r5, r0
lsls r5, 3
orrs r4, r5
ands r3, r0
lsls r3, 4
orrs r4, r3
ands r1, r0
lsls r1, 5
orrs r4, r1
ldr r5, _0802B768 @ =gDynamicBasePower
lsls r0, r2, 2
adds r0, r2
lsls r0, 3
movs r1, 0x3F
bl __divsi3
adds r0, 0x1E
strh r0, [r5]
ldr r6, _0802B76C @ =gBattleStruct
ldr r5, [r6]
lsls r0, r4, 4
subs r0, r4
movs r1, 0x3F
bl __divsi3
adds r0, 0x1
strb r0, [r5, 0x13]
ldr r1, [r6]
ldrb r0, [r1, 0x13]
cmp r0, 0x8
bls _0802B742
adds r0, 0x1
strb r0, [r1, 0x13]
_0802B742:
ldr r2, [r6]
ldrb r0, [r2, 0x13]
movs r1, 0xC0
orrs r0, r1
strb r0, [r2, 0x13]
ldr r1, _0802B770 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802B760: .4byte gBattleMons
_0802B764: .4byte gBattlerAttacker
_0802B768: .4byte gDynamicBasePower
_0802B76C: .4byte gBattleStruct
_0802B770: .4byte gBattlescriptCurrInstr
thumb_func_end atkC1_hiddenpowercalc
thumb_func_start atkC2_selectfirstvalidtarget
atkC2_selectfirstvalidtarget: @ 802B774
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r0, _0802B7D0 @ =gBattlerTarget
movs r1, 0
strb r1, [r0]
ldr r1, _0802B7D4 @ =gBattlersCount
ldrb r1, [r1]
adds r6, r0, 0
ldr r0, _0802B7D8 @ =gBattlescriptCurrInstr
mov r8, r0
cmp r1, 0
beq _0802B7BE
adds r3, r6, 0
ldr r0, _0802B7DC @ =gBattlerAttacker
ldrb r5, [r0]
ldr r0, _0802B7E0 @ =gBitTable
mov r12, r0
adds r4, r1, 0
ldr r7, _0802B7E4 @ =gAbsentBattlerFlags
_0802B79C:
ldrb r2, [r3]
cmp r2, r5
beq _0802B7B2
ldrb r0, [r7]
ldrb r1, [r6]
lsls r1, 2
add r1, r12
ldr r1, [r1]
ands r0, r1
cmp r0, 0
beq _0802B7BE
_0802B7B2:
adds r0, r2, 0x1
strb r0, [r3]
lsls r0, 24
lsrs r0, 24
cmp r0, r4
bcc _0802B79C
_0802B7BE:
mov r1, r8
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802B7D0: .4byte gBattlerTarget
_0802B7D4: .4byte gBattlersCount
_0802B7D8: .4byte gBattlescriptCurrInstr
_0802B7DC: .4byte gBattlerAttacker
_0802B7E0: .4byte gBitTable
_0802B7E4: .4byte gAbsentBattlerFlags
thumb_func_end atkC2_selectfirstvalidtarget
thumb_func_start atkC3_trysetfutureattack
atkC3_trysetfutureattack: @ 802B7E8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x10
ldr r0, _0802B820 @ =gWishFutureKnock
mov r8, r0
ldr r7, _0802B824 @ =gBattlerTarget
ldrb r1, [r7]
adds r0, r1, r0
ldrb r6, [r0]
cmp r6, 0
beq _0802B82C
ldr r3, _0802B828 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802B8F6
.align 2, 0
_0802B820: .4byte gWishFutureKnock
_0802B824: .4byte gBattlerTarget
_0802B828: .4byte gBattlescriptCurrInstr
_0802B82C:
lsls r1, 1
mov r0, r8
adds r0, 0x18
adds r1, r0
ldr r2, _0802B8CC @ =gCurrentMove
mov r9, r2
ldrh r0, [r2]
strh r0, [r1]
mov r0, r8
adds r0, 0x4
ldrb r4, [r7]
adds r0, r4
ldr r5, _0802B8D0 @ =gBattlerAttacker
ldrb r1, [r5]
strb r1, [r0]
ldrb r0, [r7]
add r0, r8
movs r1, 0x3
strb r1, [r0]
ldr r4, _0802B8D4 @ =gSideStatuses
ldrb r0, [r7]
bl GetBattlerPosition
movs r1, 0x1
mov r10, r1
ands r1, r0
lsls r1, 1
adds r1, r4
ldrh r3, [r1]
ldrb r0, [r5]
movs r4, 0x58
muls r0, r4
ldr r2, _0802B8D8 @ =gBattleMons
adds r0, r2
ldrb r1, [r7]
muls r1, r4
adds r1, r2
mov r4, r9
ldrh r2, [r4]
str r6, [sp]
str r6, [sp, 0x4]
ldrb r4, [r5]
str r4, [sp, 0x8]
ldrb r4, [r7]
str r4, [sp, 0xC]
bl CalculateBaseDamage
ldrb r1, [r7]
lsls r1, 2
mov r2, r8
adds r2, 0x8
adds r1, r2
str r0, [r1]
ldr r1, _0802B8DC @ =gProtectStructs
ldrb r0, [r5]
lsls r0, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 28
cmp r0, 0
bge _0802B8BA
ldrb r4, [r7]
lsls r4, 2
adds r4, r2
ldr r1, [r4]
lsls r0, r1, 4
subs r0, r1
movs r1, 0xA
bl __divsi3
str r0, [r4]
_0802B8BA:
mov r0, r9
ldrh r1, [r0]
ldr r0, _0802B8E0 @ =0x00000161
cmp r1, r0
bne _0802B8E8
ldr r0, _0802B8E4 @ =gBattleCommunication
mov r1, r10
strb r1, [r0, 0x5]
b _0802B8EE
.align 2, 0
_0802B8CC: .4byte gCurrentMove
_0802B8D0: .4byte gBattlerAttacker
_0802B8D4: .4byte gSideStatuses
_0802B8D8: .4byte gBattleMons
_0802B8DC: .4byte gProtectStructs
_0802B8E0: .4byte 0x00000161
_0802B8E4: .4byte gBattleCommunication
_0802B8E8:
ldr r1, _0802B908 @ =gBattleCommunication
movs r0, 0
strb r0, [r1, 0x5]
_0802B8EE:
ldr r1, _0802B90C @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802B8F6:
add sp, 0x10
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802B908: .4byte gBattleCommunication
_0802B90C: .4byte gBattlescriptCurrInstr
thumb_func_end atkC3_trysetfutureattack
thumb_func_start atkC4_trydobeatup
atkC4_trydobeatup: @ 802B910
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, _0802B954 @ =gBattlerAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
ldr r7, _0802B958 @ =gEnemyParty
cmp r0, 0
bne _0802B92A
ldr r7, _0802B95C @ =gPlayerParty
_0802B92A:
ldr r2, _0802B960 @ =gBattleMons
ldr r0, _0802B964 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0, 0x28]
cmp r0, 0
bne _0802B96C
ldr r3, _0802B968 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
b _0802BB08
.align 2, 0
_0802B954: .4byte gBattlerAttacker
_0802B958: .4byte gEnemyParty
_0802B95C: .4byte gPlayerParty
_0802B960: .4byte gBattleMons
_0802B964: .4byte gBattlerTarget
_0802B968: .4byte gBattlescriptCurrInstr
_0802B96C:
ldr r6, _0802BAA8 @ =gBattleCommunication
ldrb r0, [r6]
mov r8, r0
cmp r0, 0x5
bls _0802B978
b _0802BAD4
_0802B978:
adds r4, r6, 0
movs r5, 0x64
_0802B97C:
ldrb r0, [r4]
muls r0, r5
adds r0, r7, r0
movs r1, 0x39
bl GetMonData
cmp r0, 0
beq _0802B9C0
ldrb r0, [r6]
muls r0, r5
adds r0, r7, r0
movs r1, 0x41
bl GetMonData
cmp r0, 0
beq _0802B9C0
ldrb r0, [r4]
muls r0, r5
adds r0, r7, r0
movs r1, 0x41
bl GetMonData
movs r1, 0xCE
lsls r1, 1
cmp r0, r1
beq _0802B9C0
ldrb r0, [r4]
muls r0, r5
adds r0, r7, r0
movs r1, 0x37
bl GetMonData
cmp r0, 0
beq _0802B9D0
_0802B9C0:
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
adds r6, r4, 0
lsls r0, 24
lsrs r0, 24
cmp r0, 0x5
bls _0802B97C
_0802B9D0:
ldr r1, _0802BAA8 @ =gBattleCommunication
mov r9, r1
ldrb r2, [r1]
cmp r2, 0x5
bhi _0802BAD4
ldr r1, _0802BAAC @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x4
strb r0, [r1, 0x1]
ldr r6, _0802BAB0 @ =gBattlerAttacker
ldrb r0, [r6]
strb r0, [r1, 0x2]
strb r2, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r1, _0802BAB4 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x9
str r0, [r1]
ldr r2, _0802BAB8 @ =gBattleMoveDamage
mov r8, r2
ldr r5, _0802BABC @ =gBaseStats
mov r1, r9
ldrb r0, [r1]
movs r4, 0x64
muls r0, r4
adds r0, r7, r0
movs r1, 0xB
bl GetMonData
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r5
ldrb r3, [r1, 0x1]
mov r2, r8
str r3, [r2]
ldr r2, _0802BAC0 @ =gBattleMoves
ldr r0, _0802BAC4 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x1]
muls r0, r3
mov r1, r8
str r0, [r1]
mov r2, r9
ldrb r0, [r2]
muls r0, r4
adds r0, r7, r0
movs r1, 0x38
bl GetMonData
lsls r0, 1
movs r1, 0x5
bl __udivsi3
adds r0, 0x2
mov r2, r8
ldr r1, [r2]
muls r0, r1
str r0, [r2]
ldr r3, _0802BAC8 @ =gBattleMons
ldr r1, _0802BACC @ =gBattlerTarget
ldrb r2, [r1]
movs r1, 0x58
muls r1, r2
adds r1, r3
ldrh r2, [r1]
lsls r1, r2, 3
subs r1, r2
lsls r1, 2
adds r1, r5
ldrb r1, [r1, 0x2]
bl __divsi3
mov r1, r8
str r0, [r1]
movs r1, 0x32
bl __divsi3
adds r2, r0, 0x2
mov r0, r8
str r2, [r0]
ldr r1, _0802BAD0 @ =gProtectStructs
ldrb r0, [r6]
lsls r0, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 28
cmp r0, 0
bge _0802BA9C
lsls r0, r2, 4
subs r0, r2
movs r1, 0xA
bl __divsi3
mov r1, r8
str r0, [r1]
_0802BA9C:
mov r2, r9
ldrb r0, [r2]
adds r0, 0x1
strb r0, [r2]
b _0802BB0E
.align 2, 0
_0802BAA8: .4byte gBattleCommunication
_0802BAAC: .4byte gBattleTextBuff1
_0802BAB0: .4byte gBattlerAttacker
_0802BAB4: .4byte gBattlescriptCurrInstr
_0802BAB8: .4byte gBattleMoveDamage
_0802BABC: .4byte gBaseStats
_0802BAC0: .4byte gBattleMoves
_0802BAC4: .4byte gCurrentMove
_0802BAC8: .4byte gBattleMons
_0802BACC: .4byte gBattlerTarget
_0802BAD0: .4byte gProtectStructs
_0802BAD4:
mov r0, r8
cmp r0, 0
beq _0802BAF4
ldr r3, _0802BAF0 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
b _0802BB08
.align 2, 0
_0802BAF0: .4byte gBattlescriptCurrInstr
_0802BAF4:
ldr r3, _0802BB1C @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x5]
ldrb r0, [r2, 0x6]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x7]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x8]
_0802BB08:
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802BB0E:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802BB1C: .4byte gBattlescriptCurrInstr
thumb_func_end atkC4_trydobeatup
thumb_func_start atkC5_setsemiinvulnerablebit
atkC5_setsemiinvulnerablebit: @ 802BB20
push {lr}
ldr r0, _0802BB34 @ =gCurrentMove
ldrh r1, [r0]
cmp r1, 0x5B
beq _0802BB60
cmp r1, 0x5B
bgt _0802BB38
cmp r1, 0x13
beq _0802BB44
b _0802BB8C
.align 2, 0
_0802BB34: .4byte gCurrentMove
_0802BB38:
ldr r0, _0802BB54 @ =0x00000123
cmp r1, r0
beq _0802BB78
adds r0, 0x31
cmp r1, r0
bne _0802BB8C
_0802BB44:
ldr r2, _0802BB58 @ =gStatuses3
ldr r0, _0802BB5C @ =gBattlerAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x40
b _0802BB88
.align 2, 0
_0802BB54: .4byte 0x00000123
_0802BB58: .4byte gStatuses3
_0802BB5C: .4byte gBattlerAttacker
_0802BB60:
ldr r2, _0802BB70 @ =gStatuses3
ldr r0, _0802BB74 @ =gBattlerAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x80
b _0802BB88
.align 2, 0
_0802BB70: .4byte gStatuses3
_0802BB74: .4byte gBattlerAttacker
_0802BB78:
ldr r2, _0802BB98 @ =gStatuses3
ldr r0, _0802BB9C @ =gBattlerAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x80
lsls r2, 11
_0802BB88:
orrs r0, r2
str r0, [r1]
_0802BB8C:
ldr r1, _0802BBA0 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802BB98: .4byte gStatuses3
_0802BB9C: .4byte gBattlerAttacker
_0802BBA0: .4byte gBattlescriptCurrInstr
thumb_func_end atkC5_setsemiinvulnerablebit
thumb_func_start atkC6_clearsemiinvulnerablebit
atkC6_clearsemiinvulnerablebit: @ 802BBA4
push {lr}
ldr r0, _0802BBB8 @ =gCurrentMove
ldrh r1, [r0]
cmp r1, 0x5B
beq _0802BBE8
cmp r1, 0x5B
bgt _0802BBBC
cmp r1, 0x13
beq _0802BBC8
b _0802BC16
.align 2, 0
_0802BBB8: .4byte gCurrentMove
_0802BBBC:
ldr r0, _0802BBDC @ =0x00000123
cmp r1, r0
beq _0802BC04
adds r0, 0x31
cmp r1, r0
bne _0802BC16
_0802BBC8:
ldr r2, _0802BBE0 @ =gStatuses3
ldr r0, _0802BBE4 @ =gBattlerAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x41
negs r2, r2
b _0802BC12
.align 2, 0
_0802BBDC: .4byte 0x00000123
_0802BBE0: .4byte gStatuses3
_0802BBE4: .4byte gBattlerAttacker
_0802BBE8:
ldr r2, _0802BBFC @ =gStatuses3
ldr r0, _0802BC00 @ =gBattlerAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x81
negs r2, r2
b _0802BC12
.align 2, 0
_0802BBFC: .4byte gStatuses3
_0802BC00: .4byte gBattlerAttacker
_0802BC04:
ldr r2, _0802BC24 @ =gStatuses3
ldr r0, _0802BC28 @ =gBattlerAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
ldr r2, _0802BC2C @ =0xfffbffff
_0802BC12:
ands r0, r2
str r0, [r1]
_0802BC16:
ldr r1, _0802BC30 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802BC24: .4byte gStatuses3
_0802BC28: .4byte gBattlerAttacker
_0802BC2C: .4byte 0xfffbffff
_0802BC30: .4byte gBattlescriptCurrInstr
thumb_func_end atkC6_clearsemiinvulnerablebit
thumb_func_start atkC7_setminimize
atkC7_setminimize: @ 802BC34
push {lr}
ldr r0, _0802BC64 @ =gHitMarker
ldr r0, [r0]
movs r1, 0x80
lsls r1, 18
ands r0, r1
cmp r0, 0
beq _0802BC58
ldr r2, _0802BC68 @ =gStatuses3
ldr r0, _0802BC6C @ =gBattlerAttacker
ldrb r1, [r0]
lsls r1, 2
adds r1, r2
ldr r0, [r1]
movs r2, 0x80
lsls r2, 1
orrs r0, r2
str r0, [r1]
_0802BC58:
ldr r1, _0802BC70 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802BC64: .4byte gHitMarker
_0802BC68: .4byte gStatuses3
_0802BC6C: .4byte gBattlerAttacker
_0802BC70: .4byte gBattlescriptCurrInstr
thumb_func_end atkC7_setminimize
thumb_func_start atkC8_sethail
atkC8_sethail: @ 802BC74
push {lr}
ldr r3, _0802BC98 @ =gBattleWeather
ldrh r1, [r3]
movs r2, 0x80
adds r0, r2, 0
ands r0, r1
cmp r0, 0
beq _0802BCA4
ldr r2, _0802BC9C @ =gMoveResultFlags
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r1, _0802BCA0 @ =gBattleCommunication
movs r0, 0x2
strb r0, [r1, 0x5]
b _0802BCB2
.align 2, 0
_0802BC98: .4byte gBattleWeather
_0802BC9C: .4byte gMoveResultFlags
_0802BCA0: .4byte gBattleCommunication
_0802BCA4:
strh r2, [r3]
ldr r0, _0802BCC0 @ =gBattleCommunication
movs r1, 0x5
strb r1, [r0, 0x5]
ldr r0, _0802BCC4 @ =gWishFutureKnock
adds r0, 0x28
strb r1, [r0]
_0802BCB2:
ldr r1, _0802BCC8 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802BCC0: .4byte gBattleCommunication
_0802BCC4: .4byte gWishFutureKnock
_0802BCC8: .4byte gBattlescriptCurrInstr
thumb_func_end atkC8_sethail
thumb_func_start atkC9_jumpifattackandspecialattackcannotfall
atkC9_jumpifattackandspecialattackcannotfall: @ 802BCCC
push {r4,lr}
ldr r2, _0802BD10 @ =gBattleMons
ldr r0, _0802BD14 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r1, r0, r2
movs r0, 0x19
ldrsb r0, [r1, r0]
adds r3, r2, 0
cmp r0, 0
bne _0802BD20
movs r0, 0x1C
ldrsb r0, [r1, r0]
cmp r0, 0
bne _0802BD20
ldr r0, _0802BD18 @ =gBattleCommunication
ldrb r0, [r0, 0x6]
cmp r0, 0x1
beq _0802BD20
ldr r3, _0802BD1C @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802BD4C
.align 2, 0
_0802BD10: .4byte gBattleMons
_0802BD14: .4byte gBattlerTarget
_0802BD18: .4byte gBattleCommunication
_0802BD1C: .4byte gBattlescriptCurrInstr
_0802BD20:
ldr r4, _0802BD54 @ =gActiveBattler
ldr r0, _0802BD58 @ =gBattlerAttacker
ldrb r0, [r0]
strb r0, [r4]
ldr r2, _0802BD5C @ =gBattleMoveDamage
ldrb r1, [r4]
movs r0, 0x58
muls r0, r1
adds r0, r3
ldrh r0, [r0, 0x28]
str r0, [r2]
ldr r1, _0802BD60 @ =0x00007fff
movs r0, 0
bl BtlController_EmitHealthBarUpdate
ldrb r0, [r4]
bl MarkBattlerForControllerExec
ldr r1, _0802BD64 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802BD4C:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802BD54: .4byte gActiveBattler
_0802BD58: .4byte gBattlerAttacker
_0802BD5C: .4byte gBattleMoveDamage
_0802BD60: .4byte 0x00007fff
_0802BD64: .4byte gBattlescriptCurrInstr
thumb_func_end atkC9_jumpifattackandspecialattackcannotfall
thumb_func_start atkCA_setforcedtarget
atkCA_setforcedtarget: @ 802BD68
push {r4,r5,lr}
ldr r4, _0802BDA8 @ =gBattlerAttacker
ldrb r0, [r4]
bl GetBattlerSide
ldr r5, _0802BDAC @ =gSideTimers
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r5
movs r0, 0x1
strb r0, [r1, 0x8]
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r5
ldrb r0, [r4]
strb r0, [r1, 0x9]
ldr r1, _0802BDB0 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802BDA8: .4byte gBattlerAttacker
_0802BDAC: .4byte gSideTimers
_0802BDB0: .4byte gBattlescriptCurrInstr
thumb_func_end atkCA_setforcedtarget
thumb_func_start atkCB_setcharge
atkCB_setcharge: @ 802BDB4
push {r4,lr}
ldr r0, _0802BE08 @ =gStatuses3
ldr r3, _0802BE0C @ =gBattlerAttacker
ldrb r1, [r3]
lsls r1, 2
adds r1, r0
ldr r0, [r1]
movs r2, 0x80
lsls r2, 2
orrs r0, r2
str r0, [r1]
ldr r4, _0802BE10 @ =gDisableStructs
ldrb r1, [r3]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r4
ldrb r2, [r0, 0x12]
movs r1, 0x10
negs r1, r1
ands r1, r2
movs r2, 0x2
orrs r1, r2
strb r1, [r0, 0x12]
ldrb r1, [r3]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r4
ldrb r2, [r0, 0x12]
movs r1, 0xF
ands r1, r2
movs r2, 0x20
orrs r1, r2
strb r1, [r0, 0x12]
ldr r1, _0802BE14 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802BE08: .4byte gStatuses3
_0802BE0C: .4byte gBattlerAttacker
_0802BE10: .4byte gDisableStructs
_0802BE14: .4byte gBattlescriptCurrInstr
thumb_func_end atkCB_setcharge
thumb_func_start atkCC_callterrainattack
atkCC_callterrainattack: @ 802BE18
push {r4,lr}
ldr r2, _0802BE68 @ =gHitMarker
ldr r0, [r2]
ldr r1, _0802BE6C @ =0xfffffbff
ands r0, r1
str r0, [r2]
ldr r4, _0802BE70 @ =gCurrentMove
ldr r1, _0802BE74 @ =sNaturePowerMoves
ldr r0, _0802BE78 @ =gBattleTerrain
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
strh r0, [r4]
ldrh r0, [r4]
movs r1, 0
bl GetMoveTarget
ldr r1, _0802BE7C @ =gBattlerTarget
strb r0, [r1]
ldr r3, _0802BE80 @ =gBattleScriptsForMoveEffects
ldr r2, _0802BE84 @ =gBattleMoves
ldrh r1, [r4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0]
lsls r0, 2
adds r0, r3
ldr r0, [r0]
bl BattleScriptPush
ldr r1, _0802BE88 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802BE68: .4byte gHitMarker
_0802BE6C: .4byte 0xfffffbff
_0802BE70: .4byte gCurrentMove
_0802BE74: .4byte sNaturePowerMoves
_0802BE78: .4byte gBattleTerrain
_0802BE7C: .4byte gBattlerTarget
_0802BE80: .4byte gBattleScriptsForMoveEffects
_0802BE84: .4byte gBattleMoves
_0802BE88: .4byte gBattlescriptCurrInstr
thumb_func_end atkCC_callterrainattack
thumb_func_start atkCD_cureifburnedparalysedorpoisoned
atkCD_cureifburnedparalysedorpoisoned: @ 802BE8C
push {r4-r6,lr}
sub sp, 0x4
ldr r1, _0802BED8 @ =gBattleMons
ldr r3, _0802BEDC @ =gBattlerAttacker
ldrb r0, [r3]
movs r6, 0x58
muls r0, r6
adds r5, r1, 0
adds r5, 0x4C
adds r2, r0, r5
ldr r0, [r2]
movs r1, 0xD8
ands r0, r1
cmp r0, 0
beq _0802BEE8
movs r0, 0
str r0, [r2]
ldr r1, _0802BEE0 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
ldr r4, _0802BEE4 @ =gActiveBattler
ldrb r0, [r3]
strb r0, [r4]
ldrb r0, [r4]
muls r0, r6
adds r0, r5
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r2, 0
movs r3, 0x4
bl BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
b _0802BF02
.align 2, 0
_0802BED8: .4byte gBattleMons
_0802BEDC: .4byte gBattlerAttacker
_0802BEE0: .4byte gBattlescriptCurrInstr
_0802BEE4: .4byte gActiveBattler
_0802BEE8:
ldr r3, _0802BF0C @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802BF02:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802BF0C: .4byte gBattlescriptCurrInstr
thumb_func_end atkCD_cureifburnedparalysedorpoisoned
thumb_func_start atkCE_settorment
atkCE_settorment: @ 802BF10
push {lr}
ldr r1, _0802BF48 @ =gBattleMons
ldr r0, _0802BF4C @ =gBattlerTarget
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r1, [r0]
movs r2, 0x80
lsls r2, 24
cmp r1, 0
bge _0802BF54
ldr r3, _0802BF50 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802BF60
.align 2, 0
_0802BF48: .4byte gBattleMons
_0802BF4C: .4byte gBattlerTarget
_0802BF50: .4byte gBattlescriptCurrInstr
_0802BF54:
orrs r1, r2
str r1, [r0]
ldr r1, _0802BF64 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802BF60:
pop {r0}
bx r0
.align 2, 0
_0802BF64: .4byte gBattlescriptCurrInstr
thumb_func_end atkCE_settorment
thumb_func_start atkCF_jumpifnodamage
atkCF_jumpifnodamage: @ 802BF68
push {lr}
ldr r2, _0802BF94 @ =gProtectStructs
ldr r0, _0802BF98 @ =gBattlerAttacker
ldrb r0, [r0]
lsls r1, r0, 4
adds r0, r2, 0x4
adds r0, r1, r0
ldr r0, [r0]
cmp r0, 0
bne _0802BF88
adds r0, r2, 0
adds r0, 0x8
adds r0, r1, r0
ldr r0, [r0]
cmp r0, 0
beq _0802BFA0
_0802BF88:
ldr r1, _0802BF9C @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802BFBA
.align 2, 0
_0802BF94: .4byte gProtectStructs
_0802BF98: .4byte gBattlerAttacker
_0802BF9C: .4byte gBattlescriptCurrInstr
_0802BFA0:
ldr r3, _0802BFC0 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802BFBA:
pop {r0}
bx r0
.align 2, 0
_0802BFC0: .4byte gBattlescriptCurrInstr
thumb_func_end atkCF_jumpifnodamage
thumb_func_start atkD0_settaunt
atkD0_settaunt: @ 802BFC4
push {r4,lr}
ldr r4, _0802C008 @ =gDisableStructs
ldr r3, _0802C00C @ =gBattlerTarget
ldrb r0, [r3]
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r2, r1, r4
ldrb r1, [r2, 0x13]
lsls r0, r1, 28
cmp r0, 0
bne _0802C014
movs r0, 0x10
negs r0, r0
ands r0, r1
movs r1, 0x2
orrs r0, r1
strb r0, [r2, 0x13]
ldrb r1, [r3]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r4
ldrb r2, [r0, 0x13]
movs r1, 0xF
ands r1, r2
movs r2, 0x20
orrs r1, r2
strb r1, [r0, 0x13]
ldr r1, _0802C010 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802C02E
.align 2, 0
_0802C008: .4byte gDisableStructs
_0802C00C: .4byte gBattlerTarget
_0802C010: .4byte gBattlescriptCurrInstr
_0802C014:
ldr r3, _0802C034 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802C02E:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802C034: .4byte gBattlescriptCurrInstr
thumb_func_end atkD0_settaunt
thumb_func_start atkD1_trysethelpinghand
atkD1_trysethelpinghand: @ 802C038
push {r4,lr}
ldr r4, _0802C0A0 @ =gBattlerAttacker
ldrb r0, [r4]
bl GetBattlerPosition
movs r1, 0x2
eors r0, r1
lsls r0, 24
lsrs r0, 24
bl GetBattlerAtPosition
ldr r3, _0802C0A4 @ =gBattlerTarget
strb r0, [r3]
ldr r0, _0802C0A8 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _0802C0BC
ldr r0, _0802C0AC @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r2, _0802C0B0 @ =gBitTable
ldrb r3, [r3]
lsls r0, r3, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0802C0BC
ldr r1, _0802C0B4 @ =gProtectStructs
ldrb r0, [r4]
lsls r0, 4
adds r0, r1
ldrb r0, [r0]
lsls r0, 28
cmp r0, 0
blt _0802C0BC
lsls r0, r3, 4
adds r2, r0, r1
ldrb r1, [r2]
lsls r0, r1, 28
cmp r0, 0
blt _0802C0BC
movs r0, 0x8
orrs r0, r1
strb r0, [r2]
ldr r1, _0802C0B8 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802C0D6
.align 2, 0
_0802C0A0: .4byte gBattlerAttacker
_0802C0A4: .4byte gBattlerTarget
_0802C0A8: .4byte gBattleTypeFlags
_0802C0AC: .4byte gAbsentBattlerFlags
_0802C0B0: .4byte gBitTable
_0802C0B4: .4byte gProtectStructs
_0802C0B8: .4byte gBattlescriptCurrInstr
_0802C0BC:
ldr r3, _0802C0DC @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802C0D6:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802C0DC: .4byte gBattlescriptCurrInstr
thumb_func_end atkD1_trysethelpinghand
thumb_func_start atkD2_tryswapitems
atkD2_tryswapitems: @ 802C0E0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
ldr r4, _0802C1FC @ =gBattleTypeFlags
ldr r0, [r4]
movs r1, 0x80
lsls r1, 12
ands r0, r1
cmp r0, 0
bne _0802C1DE
ldr r0, _0802C200 @ =gBattlerAttacker
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0802C120
ldr r0, [r4]
ldr r1, _0802C204 @ =0x00000902
ands r0, r1
cmp r0, 0
bne _0802C120
ldr r0, _0802C208 @ =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 3
cmp r1, r0
bne _0802C1DE
_0802C120:
ldr r6, _0802C200 @ =gBattlerAttacker
ldrb r0, [r6]
bl GetBattlerSide
lsls r0, 24
lsrs r4, r0, 24
ldr r7, _0802C20C @ =gBattlerTarget
ldrb r0, [r7]
bl GetBattlerSide
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _0802C1FC @ =gBattleTypeFlags
ldr r0, [r0]
ldr r1, _0802C204 @ =0x00000902
ands r0, r1
cmp r0, 0
bne _0802C18A
ldr r0, _0802C208 @ =gTrainerBattleOpponent_A
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 3
cmp r1, r0
beq _0802C18A
ldr r0, _0802C210 @ =gWishFutureKnock
adds r2, r0, 0
adds r2, 0x29
adds r0, r4, r2
ldrb r1, [r0]
ldr r4, _0802C214 @ =gBitTable
ldr r3, _0802C218 @ =gBattlerPartyIndexes
ldrb r0, [r6]
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
lsls r0, 2
adds r0, r4
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0802C1DE
adds r0, r5, r2
ldrb r1, [r0]
ldrb r0, [r7]
lsls r0, 1
adds r0, r3
ldrh r0, [r0]
lsls r0, 2
adds r0, r4
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0802C1DE
_0802C18A:
ldr r0, _0802C21C @ =gBattleMons
mov r8, r0
ldr r1, _0802C200 @ =gBattlerAttacker
ldrb r4, [r1]
movs r5, 0x58
adds r0, r4, 0
muls r0, r5
add r0, r8
mov r9, r0
ldrh r3, [r0, 0x2E]
adds r1, r3, 0
cmp r1, 0
bne _0802C1B2
ldr r0, _0802C20C @ =gBattlerTarget
ldrb r0, [r0]
muls r0, r5
add r0, r8
ldrh r0, [r0, 0x2E]
cmp r0, 0
beq _0802C1DE
_0802C1B2:
cmp r1, 0xAF
beq _0802C1DE
ldr r7, _0802C20C @ =gBattlerTarget
ldrb r0, [r7]
muls r0, r5
mov r2, r8
adds r1, r0, r2
ldrh r2, [r1, 0x2E]
cmp r2, 0xAF
beq _0802C1DE
adds r0, r3, 0
subs r0, 0x79
lsls r0, 16
lsrs r0, 16
cmp r0, 0xB
bls _0802C1DE
adds r0, r2, 0
subs r0, 0x79
lsls r0, 16
lsrs r0, 16
cmp r0, 0xB
bhi _0802C224
_0802C1DE:
ldr r3, _0802C220 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802C37A
.align 2, 0
_0802C1FC: .4byte gBattleTypeFlags
_0802C200: .4byte gBattlerAttacker
_0802C204: .4byte 0x00000902
_0802C208: .4byte gTrainerBattleOpponent_A
_0802C20C: .4byte gBattlerTarget
_0802C210: .4byte gWishFutureKnock
_0802C214: .4byte gBitTable
_0802C218: .4byte gBattlerPartyIndexes
_0802C21C: .4byte gBattleMons
_0802C220: .4byte gBattlescriptCurrInstr
_0802C224:
adds r0, r1, 0
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x3C
bne _0802C258
ldr r1, _0802C24C @ =gBattlescriptCurrInstr
ldr r0, _0802C250 @ =BattleScript_StickyHoldActivates
str r0, [r1]
ldr r1, _0802C254 @ =gLastUsedAbility
ldrb r0, [r7]
muls r0, r5
add r0, r8
adds r0, 0x20
ldrb r0, [r0]
strb r0, [r1]
ldrb r0, [r7]
ldrb r1, [r1]
bl RecordAbilityBattle
b _0802C37A
.align 2, 0
_0802C24C: .4byte gBattlescriptCurrInstr
_0802C250: .4byte BattleScript_StickyHoldActivates
_0802C254: .4byte gLastUsedAbility
_0802C258:
ldr r3, _0802C344 @ =gBattleStruct
mov r10, r3
lsls r0, r4, 1
adds r0, 0xD0
ldr r1, [r3]
adds r6, r1, r0
mov r0, r9
ldrh r0, [r0, 0x2E]
mov r9, r0
strh r2, [r6]
ldr r1, _0802C348 @ =gBattlerAttacker
ldrb r0, [r1]
muls r0, r5
add r0, r8
movs r1, 0
strh r1, [r0, 0x2E]
ldrb r0, [r7]
muls r0, r5
add r0, r8
mov r2, r9
strh r2, [r0, 0x2E]
ldr r4, _0802C34C @ =gActiveBattler
ldr r3, _0802C348 @ =gBattlerAttacker
ldrb r0, [r3]
strb r0, [r4]
str r6, [sp]
movs r0, 0
movs r1, 0x2
movs r2, 0
movs r3, 0x2
bl BtlController_EmitSetMonData
ldr r1, _0802C348 @ =gBattlerAttacker
ldrb r0, [r1]
bl MarkBattlerForControllerExec
ldrb r0, [r7]
strb r0, [r4]
ldrb r0, [r7]
muls r0, r5
mov r1, r8
adds r1, 0x2E
adds r0, r1
str r0, [sp]
movs r0, 0
movs r1, 0x2
movs r2, 0
movs r3, 0x2
bl BtlController_EmitSetMonData
ldrb r0, [r7]
bl MarkBattlerForControllerExec
ldrb r0, [r7]
mov r2, r10
ldr r1, [r2]
lsls r0, 1
adds r0, r1
adds r0, 0xC8
movs r3, 0
strb r3, [r0]
ldrb r0, [r7]
ldr r1, [r2]
lsls r0, 1
adds r0, r1
adds r0, 0xC9
strb r3, [r0]
ldr r1, _0802C348 @ =gBattlerAttacker
ldrb r0, [r1]
ldr r1, [r2]
lsls r0, 1
adds r0, r1
adds r0, 0xC8
strb r3, [r0]
ldr r2, _0802C348 @ =gBattlerAttacker
ldrb r0, [r2]
mov r3, r10
ldr r1, [r3]
lsls r0, 1
adds r0, r1
adds r0, 0xC9
movs r1, 0
strb r1, [r0]
ldr r1, _0802C350 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
ldr r1, _0802C354 @ =gBattleTextBuff1
movs r3, 0xFD
strb r3, [r1]
movs r2, 0xA
strb r2, [r1, 0x1]
ldrh r0, [r6]
strb r0, [r1, 0x2]
ldrh r0, [r6]
lsrs r0, 8
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r1, _0802C358 @ =gBattleTextBuff2
strb r3, [r1]
strb r2, [r1, 0x1]
mov r2, r9
strb r2, [r1, 0x2]
mov r3, r9
lsrs r0, r3, 8
strb r0, [r1, 0x3]
movs r0, 0x1
negs r0, r0
strb r0, [r1, 0x4]
cmp r3, 0
beq _0802C360
ldrh r0, [r6]
cmp r0, 0
beq _0802C374
ldr r1, _0802C35C @ =gBattleCommunication
movs r0, 0x2
b _0802C378
.align 2, 0
_0802C344: .4byte gBattleStruct
_0802C348: .4byte gBattlerAttacker
_0802C34C: .4byte gActiveBattler
_0802C350: .4byte gBattlescriptCurrInstr
_0802C354: .4byte gBattleTextBuff1
_0802C358: .4byte gBattleTextBuff2
_0802C35C: .4byte gBattleCommunication
_0802C360:
ldrh r0, [r6]
cmp r0, 0
beq _0802C374
ldr r0, _0802C370 @ =gBattleCommunication
movs r1, 0
strb r1, [r0, 0x5]
b _0802C37A
.align 2, 0
_0802C370: .4byte gBattleCommunication
_0802C374:
ldr r1, _0802C38C @ =gBattleCommunication
movs r0, 0x1
_0802C378:
strb r0, [r1, 0x5]
_0802C37A:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802C38C: .4byte gBattleCommunication
thumb_func_end atkD2_tryswapitems
thumb_func_start atkD3_trycopyability
atkD3_trycopyability: @ 802C390
push {r4,lr}
ldr r3, _0802C3D0 @ =gBattleMons
ldr r4, _0802C3D4 @ =gBattlerTarget
ldrb r0, [r4]
movs r2, 0x58
muls r0, r2
adds r0, r3
adds r0, 0x20
ldrb r1, [r0]
adds r0, r1, 0
cmp r0, 0
beq _0802C3E4
cmp r0, 0x19
beq _0802C3E4
ldr r0, _0802C3D8 @ =gBattlerAttacker
ldrb r0, [r0]
muls r0, r2
adds r0, r3
adds r0, 0x20
strb r1, [r0]
ldr r1, _0802C3DC @ =gLastUsedAbility
ldrb r0, [r4]
muls r0, r2
adds r0, r3
adds r0, 0x20
ldrb r0, [r0]
strb r0, [r1]
ldr r1, _0802C3E0 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802C3FE
.align 2, 0
_0802C3D0: .4byte gBattleMons
_0802C3D4: .4byte gBattlerTarget
_0802C3D8: .4byte gBattlerAttacker
_0802C3DC: .4byte gLastUsedAbility
_0802C3E0: .4byte gBattlescriptCurrInstr
_0802C3E4:
ldr r3, _0802C404 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802C3FE:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802C404: .4byte gBattlescriptCurrInstr
thumb_func_end atkD3_trycopyability
thumb_func_start atkD4_trywish
atkD4_trywish: @ 802C408
push {r4-r7,lr}
ldr r7, _0802C41C @ =gBattlescriptCurrInstr
ldr r2, [r7]
ldrb r3, [r2, 0x1]
cmp r3, 0
beq _0802C420
cmp r3, 0x1
beq _0802C458
b _0802C4D4
.align 2, 0
_0802C41C: .4byte gBattlescriptCurrInstr
_0802C420:
ldr r1, _0802C44C @ =gWishFutureKnock
ldr r4, _0802C450 @ =gBattlerAttacker
adds r0, r1, 0
adds r0, 0x20
ldrb r5, [r4]
adds r3, r0, r5
ldrb r0, [r3]
cmp r0, 0
bne _0802C4A4
movs r0, 0x2
strb r0, [r3]
ldrb r0, [r4]
adds r1, 0x24
adds r1, r0, r1
ldr r2, _0802C454 @ =gBattlerPartyIndexes
lsls r0, 1
adds r0, r2
ldrh r0, [r0]
strb r0, [r1]
ldr r0, [r7]
adds r0, 0x6
b _0802C4D2
.align 2, 0
_0802C44C: .4byte gWishFutureKnock
_0802C450: .4byte gBattlerAttacker
_0802C454: .4byte gBattlerPartyIndexes
_0802C458:
ldr r1, _0802C4BC @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x4
strb r0, [r1, 0x1]
ldr r4, _0802C4C0 @ =gBattlerTarget
ldrb r0, [r4]
strb r0, [r1, 0x2]
ldr r0, _0802C4C4 @ =gWishFutureKnock
adds r0, 0x24
ldrb r5, [r4]
adds r0, r5
ldrb r0, [r0]
strb r0, [r1, 0x3]
movs r0, 0xFF
strb r0, [r1, 0x4]
ldr r1, _0802C4C8 @ =gBattleMoveDamage
ldr r6, _0802C4CC @ =gBattleMons
ldrb r0, [r4]
movs r5, 0x58
muls r0, r5
adds r0, r6
ldrh r0, [r0, 0x2C]
lsrs r0, 1
str r0, [r1]
cmp r0, 0
bne _0802C490
str r3, [r1]
_0802C490:
ldr r0, [r1]
negs r0, r0
str r0, [r1]
ldrb r0, [r4]
muls r0, r5
adds r0, r6
ldrh r1, [r0, 0x28]
ldrh r0, [r0, 0x2C]
cmp r1, r0
bne _0802C4D0
_0802C4A4:
ldrb r1, [r2, 0x2]
ldrb r0, [r2, 0x3]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x5]
lsls r0, 24
orrs r1, r0
str r1, [r7]
b _0802C4D4
.align 2, 0
_0802C4BC: .4byte gBattleTextBuff1
_0802C4C0: .4byte gBattlerTarget
_0802C4C4: .4byte gWishFutureKnock
_0802C4C8: .4byte gBattleMoveDamage
_0802C4CC: .4byte gBattleMons
_0802C4D0:
adds r0, r2, 0x6
_0802C4D2:
str r0, [r7]
_0802C4D4:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end atkD4_trywish
thumb_func_start atkD5_trysetroots
atkD5_trysetroots: @ 802C4DC
push {lr}
ldr r1, _0802C514 @ =gStatuses3
ldr r0, _0802C518 @ =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 2
adds r2, r0, r1
ldr r1, [r2]
movs r3, 0x80
lsls r3, 3
adds r0, r1, 0
ands r0, r3
cmp r0, 0
beq _0802C520
ldr r3, _0802C51C @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802C52C
.align 2, 0
_0802C514: .4byte gStatuses3
_0802C518: .4byte gBattlerAttacker
_0802C51C: .4byte gBattlescriptCurrInstr
_0802C520:
orrs r1, r3
str r1, [r2]
ldr r1, _0802C530 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C52C:
pop {r0}
bx r0
.align 2, 0
_0802C530: .4byte gBattlescriptCurrInstr
thumb_func_end atkD5_trysetroots
thumb_func_start atkD6_doubledamagedealtifdamaged
atkD6_doubledamagedealtifdamaged: @ 802C534
push {lr}
ldr r3, _0802C580 @ =gProtectStructs
ldr r0, _0802C584 @ =gBattlerAttacker
ldrb r0, [r0]
lsls r2, r0, 4
adds r0, r3, 0x4
adds r0, r2, r0
ldr r0, [r0]
cmp r0, 0
beq _0802C554
adds r0, r2, r3
ldr r1, _0802C588 @ =gBattlerTarget
ldrb r0, [r0, 0xC]
ldrb r1, [r1]
cmp r0, r1
beq _0802C56C
_0802C554:
adds r0, r3, 0
adds r0, 0x8
adds r0, r2, r0
ldr r0, [r0]
cmp r0, 0
beq _0802C572
adds r0, r2, r3
ldr r1, _0802C588 @ =gBattlerTarget
ldrb r0, [r0, 0xD]
ldrb r1, [r1]
cmp r0, r1
bne _0802C572
_0802C56C:
ldr r1, _0802C58C @ =gBattleScripting
movs r0, 0x2
strb r0, [r1, 0xE]
_0802C572:
ldr r1, _0802C590 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802C580: .4byte gProtectStructs
_0802C584: .4byte gBattlerAttacker
_0802C588: .4byte gBattlerTarget
_0802C58C: .4byte gBattleScripting
_0802C590: .4byte gBattlescriptCurrInstr
thumb_func_end atkD6_doubledamagedealtifdamaged
thumb_func_start atkD7_setyawn
atkD7_setyawn: @ 802C594
push {r4,lr}
ldr r1, _0802C5D8 @ =gStatuses3
ldr r0, _0802C5DC @ =gBattlerTarget
ldrb r3, [r0]
lsls r0, r3, 2
adds r4, r0, r1
ldr r2, [r4]
movs r0, 0xC0
lsls r0, 5
ands r0, r2
cmp r0, 0
bne _0802C5BC
ldr r1, _0802C5E0 @ =gBattleMons
movs r0, 0x58
muls r0, r3
adds r1, 0x4C
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _0802C5E8
_0802C5BC:
ldr r3, _0802C5E4 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802C5F8
.align 2, 0
_0802C5D8: .4byte gStatuses3
_0802C5DC: .4byte gBattlerTarget
_0802C5E0: .4byte gBattleMons
_0802C5E4: .4byte gBattlescriptCurrInstr
_0802C5E8:
movs r0, 0x80
lsls r0, 5
orrs r2, r0
str r2, [r4]
ldr r1, _0802C600 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C5F8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802C600: .4byte gBattlescriptCurrInstr
thumb_func_end atkD7_setyawn
thumb_func_start atkD8_setdamagetohealthdifference
atkD8_setdamagetohealthdifference: @ 802C604
push {lr}
ldr r2, _0802C640 @ =gBattleMons
ldr r0, _0802C644 @ =gBattlerTarget
ldrb r0, [r0]
movs r1, 0x58
muls r0, r1
adds r3, r0, r2
ldr r0, _0802C648 @ =gBattlerAttacker
ldrb r0, [r0]
muls r0, r1
adds r1, r0, r2
ldrh r0, [r3, 0x28]
ldrh r2, [r1, 0x28]
cmp r0, r2
bhi _0802C650
ldr r3, _0802C64C @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802C662
.align 2, 0
_0802C640: .4byte gBattleMons
_0802C644: .4byte gBattlerTarget
_0802C648: .4byte gBattlerAttacker
_0802C64C: .4byte gBattlescriptCurrInstr
_0802C650:
ldr r2, _0802C668 @ =gBattleMoveDamage
ldrh r0, [r3, 0x28]
ldrh r1, [r1, 0x28]
subs r0, r1
str r0, [r2]
ldr r1, _0802C66C @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C662:
pop {r0}
bx r0
.align 2, 0
_0802C668: .4byte gBattleMoveDamage
_0802C66C: .4byte gBattlescriptCurrInstr
thumb_func_end atkD8_setdamagetohealthdifference
thumb_func_start atkD9_scaledamagebyhealthratio
atkD9_scaledamagebyhealthratio: @ 802C670
push {r4,lr}
ldr r4, _0802C6BC @ =gDynamicBasePower
ldrh r0, [r4]
cmp r0, 0
bne _0802C6AC
ldr r2, _0802C6C0 @ =gBattleMoves
ldr r0, _0802C6C4 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r3, [r0, 0x1]
ldr r2, _0802C6C8 @ =gBattleMons
ldr r0, _0802C6CC @ =gBattlerAttacker
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
adds r1, r2
ldrh r0, [r1, 0x28]
muls r0, r3
ldrh r1, [r1, 0x2C]
bl __divsi3
strh r0, [r4]
lsls r0, 16
cmp r0, 0
bne _0802C6AC
movs r0, 0x1
strh r0, [r4]
_0802C6AC:
ldr r1, _0802C6D0 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802C6BC: .4byte gDynamicBasePower
_0802C6C0: .4byte gBattleMoves
_0802C6C4: .4byte gCurrentMove
_0802C6C8: .4byte gBattleMons
_0802C6CC: .4byte gBattlerAttacker
_0802C6D0: .4byte gBattlescriptCurrInstr
thumb_func_end atkD9_scaledamagebyhealthratio
thumb_func_start atkDA_tryswapabilities
atkDA_tryswapabilities: @ 802C6D4
push {r4-r6,lr}
ldr r5, _0802C738 @ =gBattleMons
ldr r0, _0802C73C @ =gBattlerAttacker
ldrb r0, [r0]
movs r4, 0x58
muls r0, r4
adds r0, r5
adds r2, r0, 0
adds r2, 0x20
ldrb r1, [r2]
cmp r1, 0
bne _0802C6FC
ldr r0, _0802C740 @ =gBattlerTarget
ldrb r0, [r0]
muls r0, r4
adds r0, r5
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0
beq _0802C71C
_0802C6FC:
cmp r1, 0x19
beq _0802C71C
ldr r6, _0802C740 @ =gBattlerTarget
ldrb r0, [r6]
muls r0, r4
adds r0, r5
adds r0, 0x20
ldrb r3, [r0]
cmp r3, 0x19
beq _0802C71C
ldr r0, _0802C744 @ =gMoveResultFlags
ldrb r1, [r0]
movs r0, 0x29
ands r0, r1
cmp r0, 0
beq _0802C74C
_0802C71C:
ldr r3, _0802C748 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802C762
.align 2, 0
_0802C738: .4byte gBattleMons
_0802C73C: .4byte gBattlerAttacker
_0802C740: .4byte gBattlerTarget
_0802C744: .4byte gMoveResultFlags
_0802C748: .4byte gBattlescriptCurrInstr
_0802C74C:
ldrb r1, [r2]
strb r3, [r2]
ldrb r0, [r6]
muls r0, r4
adds r0, r5
adds r0, 0x20
strb r1, [r0]
ldr r1, _0802C768 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C762:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802C768: .4byte gBattlescriptCurrInstr
thumb_func_end atkDA_tryswapabilities
thumb_func_start atkDB_tryimprison
atkDB_tryimprison: @ 802C76C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r1, _0802C78C @ =gStatuses3
ldr r4, _0802C790 @ =gBattlerAttacker
ldrb r2, [r4]
lsls r0, r2, 2
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 6
ands r0, r1
cmp r0, 0
beq _0802C7BC
b _0802C83E
.align 2, 0
_0802C78C: .4byte gStatuses3
_0802C790: .4byte gBattlerAttacker
_0802C794:
ldr r0, _0802C7B4 @ =gStatuses3
mov r2, r9
ldrb r1, [r2]
lsls r1, 2
adds r1, r0
ldr r0, [r1]
movs r2, 0x80
lsls r2, 6
orrs r0, r2
str r0, [r1]
ldr r1, _0802C7B8 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802C836
.align 2, 0
_0802C7B4: .4byte gStatuses3
_0802C7B8: .4byte gBattlescriptCurrInstr
_0802C7BC:
adds r0, r2, 0
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldrb r0, [r4]
bl PressurePPLoseOnUsingImprison
movs r6, 0
b _0802C82E
_0802C7D2:
adds r0, r6, 0
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r8, r0
beq _0802C828
movs r4, 0
ldr r7, _0802C864 @ =gBattlerAttacker
mov r9, r7
ldr r0, _0802C868 @ =gBattleMons
mov r12, r0
mov r1, r9
ldrb r0, [r1]
mov r2, r12
adds r2, 0xC
movs r1, 0x58
muls r0, r1
adds r3, r0, r2
adds r5, r6, 0
muls r5, r1
_0802C7FC:
movs r2, 0
ldrh r1, [r3]
mov r0, r12
adds r0, 0xC
adds r0, r5, r0
_0802C806:
ldrh r7, [r0]
cmp r1, r7
bne _0802C810
cmp r1, 0
bne _0802C818
_0802C810:
adds r0, 0x2
adds r2, 0x1
cmp r2, 0x3
ble _0802C806
_0802C818:
cmp r2, 0x4
bne _0802C824
adds r3, 0x2
adds r4, 0x1
cmp r4, 0x3
ble _0802C7FC
_0802C824:
cmp r4, 0x4
bne _0802C794
_0802C828:
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
_0802C82E:
ldr r0, _0802C86C @ =gBattlersCount
ldrb r0, [r0]
cmp r6, r0
bcc _0802C7D2
_0802C836:
ldr r0, _0802C86C @ =gBattlersCount
ldrb r0, [r0]
cmp r6, r0
bne _0802C858
_0802C83E:
ldr r3, _0802C870 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802C858:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802C864: .4byte gBattlerAttacker
_0802C868: .4byte gBattleMons
_0802C86C: .4byte gBattlersCount
_0802C870: .4byte gBattlescriptCurrInstr
thumb_func_end atkDB_tryimprison
thumb_func_start atkDC_trysetgrudge
atkDC_trysetgrudge: @ 802C874
push {lr}
ldr r1, _0802C8AC @ =gStatuses3
ldr r0, _0802C8B0 @ =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 2
adds r2, r0, r1
ldr r1, [r2]
movs r3, 0x80
lsls r3, 7
adds r0, r1, 0
ands r0, r3
cmp r0, 0
beq _0802C8B8
ldr r3, _0802C8B4 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802C8C4
.align 2, 0
_0802C8AC: .4byte gStatuses3
_0802C8B0: .4byte gBattlerAttacker
_0802C8B4: .4byte gBattlescriptCurrInstr
_0802C8B8:
orrs r1, r3
str r1, [r2]
ldr r1, _0802C8C8 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802C8C4:
pop {r0}
bx r0
.align 2, 0
_0802C8C8: .4byte gBattlescriptCurrInstr
thumb_func_end atkDC_trysetgrudge
thumb_func_start atkDD_weightdamagecalculation
atkDD_weightdamagecalculation: @ 802C8CC
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r5, 0
ldr r2, _0802C930 @ =sWeightToDamageTable
ldrh r0, [r2]
ldr r1, _0802C934 @ =0x0000ffff
cmp r0, r1
beq _0802C944
adds r6, r2, 0
ldr r0, _0802C938 @ =gBattleMons
mov r8, r0
adds r7, r1, 0
adds r4, r6, 0
_0802C8E8:
ldr r0, _0802C93C @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
add r0, r8
ldrh r0, [r0]
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
bl GetPokedexHeightWeight
ldrh r1, [r4]
lsls r0, 16
lsrs r0, 16
cmp r1, r0
bhi _0802C916
adds r4, 0x4
adds r5, 0x2
ldrh r0, [r4]
cmp r0, r7
bne _0802C8E8
_0802C916:
lsls r0, r5, 1
adds r0, r6
ldrh r1, [r0]
ldr r0, _0802C934 @ =0x0000ffff
cmp r1, r0
beq _0802C944
ldr r0, _0802C940 @ =gDynamicBasePower
adds r1, r5, 0x1
lsls r1, 1
adds r1, r6
ldrh r1, [r1]
strh r1, [r0]
b _0802C94A
.align 2, 0
_0802C930: .4byte sWeightToDamageTable
_0802C934: .4byte 0x0000ffff
_0802C938: .4byte gBattleMons
_0802C93C: .4byte gBattlerTarget
_0802C940: .4byte gDynamicBasePower
_0802C944:
ldr r1, _0802C95C @ =gDynamicBasePower
movs r0, 0x78
strh r0, [r1]
_0802C94A:
ldr r1, _0802C960 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802C95C: .4byte gDynamicBasePower
_0802C960: .4byte gBattlescriptCurrInstr
thumb_func_end atkDD_weightdamagecalculation
thumb_func_start atkDE_assistattackselect
atkDE_assistattackselect: @ 802C964
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
movs r0, 0
mov r10, r0
ldr r0, _0802CA84 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x18
str r0, [sp, 0x4]
ldr r0, _0802CA88 @ =gBattlerAttacker
ldrb r0, [r0]
bl GetBattlerPosition
movs r1, 0x1
ands r1, r0
ldr r0, _0802CA8C @ =gPlayerParty
str r0, [sp]
cmp r1, 0
beq _0802C994
ldr r1, _0802CA90 @ =gEnemyParty
str r1, [sp]
_0802C994:
movs r2, 0
_0802C996:
ldr r1, _0802CA94 @ =gBattlerPartyIndexes
ldr r0, _0802CA88 @ =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
adds r1, r2, 0x1
str r1, [sp, 0x8]
ldrh r0, [r0]
cmp r2, r0
beq _0802CA3C
movs r0, 0x64
adds r6, r2, 0
muls r6, r0
ldr r0, [sp]
adds r4, r0, r6
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
cmp r0, 0
beq _0802CA3C
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
movs r1, 0xCE
lsls r1, 1
cmp r0, r1
beq _0802CA3C
movs r5, 0
ldr r1, _0802CA98 @ =0x0000ffff
mov r8, r1
mov r9, r6
mov r1, r10
lsls r0, r1, 1
ldr r1, [sp, 0x4]
adds r6, r0, r1
_0802C9E0:
movs r7, 0
adds r1, r5, 0
adds r1, 0xD
ldr r0, [sp]
add r0, r9
bl GetMonData
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
bl IsInvalidForSleepTalkOrAssist
lsls r0, 24
adds r1, r5, 0x1
cmp r0, 0
bne _0802CA36
ldr r0, _0802CA9C @ =sMovesForbiddenToCopy
ldrh r2, [r0]
adds r3, r0, 0
cmp r2, r8
beq _0802CA2A
cmp r4, r2
beq _0802CA20
ldr r5, _0802CA98 @ =0x0000ffff
adds r2, r3, 0
_0802CA12:
adds r2, 0x2
adds r7, 0x1
ldrh r0, [r2]
cmp r0, r5
beq _0802CA2A
cmp r4, r0
bne _0802CA12
_0802CA20:
lsls r0, r7, 1
adds r0, r3
ldrh r0, [r0]
cmp r0, r8
bne _0802CA36
_0802CA2A:
cmp r4, 0
beq _0802CA36
strh r4, [r6]
adds r6, 0x2
movs r0, 0x1
add r10, r0
_0802CA36:
adds r5, r1, 0
cmp r5, 0x3
ble _0802C9E0
_0802CA3C:
ldr r2, [sp, 0x8]
cmp r2, 0x5
ble _0802C996
mov r1, r10
cmp r1, 0
beq _0802CAB4
ldr r2, _0802CAA0 @ =gHitMarker
ldr r0, [r2]
ldr r1, _0802CAA4 @ =0xfffffbff
ands r0, r1
str r0, [r2]
ldr r4, _0802CAA8 @ =gCalledMove
bl Random
movs r1, 0xFF
ands r1, r0
mov r0, r10
muls r0, r1
asrs r0, 8
lsls r0, 1
ldr r1, [sp, 0x4]
adds r0, r1
ldrh r0, [r0]
strh r0, [r4]
ldrh r0, [r4]
movs r1, 0
bl GetMoveTarget
ldr r1, _0802CAAC @ =gBattlerTarget
strb r0, [r1]
ldr r1, _0802CAB0 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802CACE
.align 2, 0
_0802CA84: .4byte gBattleStruct
_0802CA88: .4byte gBattlerAttacker
_0802CA8C: .4byte gPlayerParty
_0802CA90: .4byte gEnemyParty
_0802CA94: .4byte gBattlerPartyIndexes
_0802CA98: .4byte 0x0000ffff
_0802CA9C: .4byte sMovesForbiddenToCopy
_0802CAA0: .4byte gHitMarker
_0802CAA4: .4byte 0xfffffbff
_0802CAA8: .4byte gCalledMove
_0802CAAC: .4byte gBattlerTarget
_0802CAB0: .4byte gBattlescriptCurrInstr
_0802CAB4:
ldr r3, _0802CAE0 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802CACE:
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802CAE0: .4byte gBattlescriptCurrInstr
thumb_func_end atkDE_assistattackselect
thumb_func_start atkDF_trysetmagiccoat
atkDF_trysetmagiccoat: @ 802CAE4
push {lr}
ldr r1, _0802CB2C @ =gBattlerTarget
ldr r3, _0802CB30 @ =gBattlerAttacker
ldrb r0, [r3]
strb r0, [r1]
ldr r2, _0802CB34 @ =gSpecialStatuses
ldrb r1, [r3]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x20
orrs r1, r2
strb r1, [r0]
ldr r0, _0802CB38 @ =gCurrentTurnActionNumber
ldrb r1, [r0]
ldr r0, _0802CB3C @ =gBattlersCount
ldrb r0, [r0]
subs r0, 0x1
cmp r1, r0
bne _0802CB44
ldr r3, _0802CB40 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802CB5C
.align 2, 0
_0802CB2C: .4byte gBattlerTarget
_0802CB30: .4byte gBattlerAttacker
_0802CB34: .4byte gSpecialStatuses
_0802CB38: .4byte gCurrentTurnActionNumber
_0802CB3C: .4byte gBattlersCount
_0802CB40: .4byte gBattlescriptCurrInstr
_0802CB44:
ldr r0, _0802CB60 @ =gProtectStructs
ldrb r1, [r3]
lsls r1, 4
adds r1, r0
ldrb r0, [r1]
movs r2, 0x10
orrs r0, r2
strb r0, [r1]
ldr r1, _0802CB64 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802CB5C:
pop {r0}
bx r0
.align 2, 0
_0802CB60: .4byte gProtectStructs
_0802CB64: .4byte gBattlescriptCurrInstr
thumb_func_end atkDF_trysetmagiccoat
thumb_func_start atkE0_trysetsnatch
atkE0_trysetsnatch: @ 802CB68
push {lr}
ldr r2, _0802CBAC @ =gSpecialStatuses
ldr r3, _0802CBB0 @ =gBattlerAttacker
ldrb r1, [r3]
lsls r0, r1, 2
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r2, 0x20
orrs r1, r2
strb r1, [r0]
ldr r0, _0802CBB4 @ =gCurrentTurnActionNumber
ldrb r1, [r0]
ldr r0, _0802CBB8 @ =gBattlersCount
ldrb r0, [r0]
subs r0, 0x1
cmp r1, r0
bne _0802CBC0
ldr r3, _0802CBBC @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802CBD6
.align 2, 0
_0802CBAC: .4byte gSpecialStatuses
_0802CBB0: .4byte gBattlerAttacker
_0802CBB4: .4byte gCurrentTurnActionNumber
_0802CBB8: .4byte gBattlersCount
_0802CBBC: .4byte gBattlescriptCurrInstr
_0802CBC0:
ldr r0, _0802CBDC @ =gProtectStructs
ldrb r1, [r3]
lsls r1, 4
adds r1, r0
ldrb r0, [r1]
orrs r0, r2
strb r0, [r1]
ldr r1, _0802CBE0 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802CBD6:
pop {r0}
bx r0
.align 2, 0
_0802CBDC: .4byte gProtectStructs
_0802CBE0: .4byte gBattlescriptCurrInstr
thumb_func_end atkE0_trysetsnatch
thumb_func_start atkE1_trygetintimidatetarget
atkE1_trygetintimidatetarget: @ 802CBE4
push {r4-r6,lr}
ldr r4, _0802CC88 @ =gBattleScripting
ldr r0, _0802CC8C @ =gBattleStruct
ldr r0, [r0]
adds r0, 0xD8
ldrb r0, [r0]
strb r0, [r4, 0x17]
ldrb r0, [r4, 0x17]
bl GetBattlerSide
lsls r0, 24
lsrs r5, r0, 24
ldr r2, _0802CC90 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r2]
movs r0, 0x9
strb r0, [r2, 0x1]
ldr r3, _0802CC94 @ =gBattleMons
ldrb r1, [r4, 0x17]
movs r0, 0x58
muls r0, r1
adds r0, r3
adds r0, 0x20
ldrb r0, [r0]
strb r0, [r2, 0x2]
movs r0, 0xFF
strb r0, [r2, 0x3]
ldr r2, _0802CC98 @ =gBattlerTarget
ldr r1, _0802CC9C @ =gBattlersCount
ldrb r0, [r2]
ldrb r1, [r1]
cmp r0, r1
bcs _0802CC6A
adds r4, r2, 0
ldr r6, _0802CCA0 @ =gBitTable
_0802CC2A:
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
lsrs r0, 24
cmp r0, r5
beq _0802CC4C
ldr r0, _0802CCA4 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldrb r0, [r4]
lsls r0, 2
adds r0, r6
ldr r0, [r0]
ands r1, r0
ldr r2, _0802CC9C @ =gBattlersCount
cmp r1, 0
beq _0802CC60
_0802CC4C:
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
ldr r1, _0802CC9C @ =gBattlersCount
lsls r0, 24
lsrs r0, 24
adds r2, r1, 0
ldrb r1, [r2]
cmp r0, r1
bcc _0802CC2A
_0802CC60:
ldr r0, _0802CC98 @ =gBattlerTarget
ldrb r0, [r0]
ldrb r2, [r2]
cmp r0, r2
bcc _0802CCAC
_0802CC6A:
ldr r3, _0802CCA8 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802CCB4
.align 2, 0
_0802CC88: .4byte gBattleScripting
_0802CC8C: .4byte gBattleStruct
_0802CC90: .4byte gBattleTextBuff1
_0802CC94: .4byte gBattleMons
_0802CC98: .4byte gBattlerTarget
_0802CC9C: .4byte gBattlersCount
_0802CCA0: .4byte gBitTable
_0802CCA4: .4byte gAbsentBattlerFlags
_0802CCA8: .4byte gBattlescriptCurrInstr
_0802CCAC:
ldr r1, _0802CCBC @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802CCB4:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802CCBC: .4byte gBattlescriptCurrInstr
thumb_func_end atkE1_trygetintimidatetarget
thumb_func_start atkE2_switchoutabilities
atkE2_switchoutabilities: @ 802CCC0
push {r4-r6,lr}
sub sp, 0x4
ldr r5, _0802CD28 @ =gBattlescriptCurrInstr
ldr r0, [r5]
ldrb r0, [r0, 0x1]
bl GetBattlerForBattleScript
ldr r4, _0802CD2C @ =gActiveBattler
strb r0, [r4]
ldr r3, _0802CD30 @ =gBattleMons
ldrb r0, [r4]
movs r6, 0x58
adds r1, r0, 0
muls r1, r6
adds r0, r1, r3
adds r0, 0x20
ldrb r0, [r0]
cmp r0, 0x1E
bne _0802CD1A
adds r3, 0x4C
adds r1, r3
movs r0, 0
str r0, [r1]
ldr r2, _0802CD34 @ =gBitTable
ldrb r1, [r4]
ldr r0, _0802CD38 @ =gBattleStruct
ldr r0, [r0]
adds r0, r1, r0
adds r0, 0x58
ldrb r0, [r0]
lsls r0, 2
adds r0, r2
ldrb r2, [r0]
adds r0, r1, 0
muls r0, r6
adds r0, r3
str r0, [sp]
movs r0, 0
movs r1, 0x28
movs r3, 0x4
bl BtlController_EmitSetMonData
ldrb r0, [r4]
bl MarkBattlerForControllerExec
_0802CD1A:
ldr r0, [r5]
adds r0, 0x2
str r0, [r5]
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802CD28: .4byte gBattlescriptCurrInstr
_0802CD2C: .4byte gActiveBattler
_0802CD30: .4byte gBattleMons
_0802CD34: .4byte gBitTable
_0802CD38: .4byte gBattleStruct
thumb_func_end atkE2_switchoutabilities
thumb_func_start atkE3_jumpifhasnohp
atkE3_jumpifhasnohp: @ 802CD3C
push {r4,lr}
ldr r4, _0802CD78 @ =gBattlescriptCurrInstr
ldr r0, [r4]
ldrb r0, [r0, 0x1]
bl GetBattlerForBattleScript
ldr r1, _0802CD7C @ =gActiveBattler
strb r0, [r1]
ldr r2, _0802CD80 @ =gBattleMons
ldrb r1, [r1]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0, 0x28]
cmp r0, 0
bne _0802CD84
ldr r2, [r4]
ldrb r1, [r2, 0x2]
ldrb r0, [r2, 0x3]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x5]
lsls r0, 24
orrs r1, r0
str r1, [r4]
b _0802CD8A
.align 2, 0
_0802CD78: .4byte gBattlescriptCurrInstr
_0802CD7C: .4byte gActiveBattler
_0802CD80: .4byte gBattleMons
_0802CD84:
ldr r0, [r4]
adds r0, 0x6
str r0, [r4]
_0802CD8A:
pop {r4}
pop {r0}
bx r0
thumb_func_end atkE3_jumpifhasnohp
thumb_func_start atkE4_getsecretpowereffect
atkE4_getsecretpowereffect: @ 802CD90
push {lr}
ldr r0, _0802CDA4 @ =gBattleTerrain
ldrb r0, [r0]
cmp r0, 0x7
bhi _0802CE2C
lsls r0, 2
ldr r1, _0802CDA8 @ =_0802CDAC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802CDA4: .4byte gBattleTerrain
_0802CDA8: .4byte _0802CDAC
.align 2, 0
_0802CDAC:
.4byte _0802CDCC
.4byte _0802CDD8
.4byte _0802CDE4
.4byte _0802CDF0
.4byte _0802CDFC
.4byte _0802CE08
.4byte _0802CE14
.4byte _0802CE20
_0802CDCC:
ldr r1, _0802CDD4 @ =gBattleCommunication
movs r0, 0x2
b _0802CE30
.align 2, 0
_0802CDD4: .4byte gBattleCommunication
_0802CDD8:
ldr r1, _0802CDE0 @ =gBattleCommunication
movs r0, 0x1
b _0802CE30
.align 2, 0
_0802CDE0: .4byte gBattleCommunication
_0802CDE4:
ldr r1, _0802CDEC @ =gBattleCommunication
movs r0, 0x1B
b _0802CE30
.align 2, 0
_0802CDEC: .4byte gBattleCommunication
_0802CDF0:
ldr r1, _0802CDF8 @ =gBattleCommunication
movs r0, 0x17
b _0802CE30
.align 2, 0
_0802CDF8: .4byte gBattleCommunication
_0802CDFC:
ldr r1, _0802CE04 @ =gBattleCommunication
movs r0, 0x16
b _0802CE30
.align 2, 0
_0802CE04: .4byte gBattleCommunication
_0802CE08:
ldr r1, _0802CE10 @ =gBattleCommunication
movs r0, 0x18
b _0802CE30
.align 2, 0
_0802CE10: .4byte gBattleCommunication
_0802CE14:
ldr r1, _0802CE1C @ =gBattleCommunication
movs r0, 0x7
b _0802CE30
.align 2, 0
_0802CE1C: .4byte gBattleCommunication
_0802CE20:
ldr r1, _0802CE28 @ =gBattleCommunication
movs r0, 0x8
b _0802CE30
.align 2, 0
_0802CE28: .4byte gBattleCommunication
_0802CE2C:
ldr r1, _0802CE40 @ =gBattleCommunication
movs r0, 0x5
_0802CE30:
strb r0, [r1, 0x3]
ldr r1, _0802CE44 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r0}
bx r0
.align 2, 0
_0802CE40: .4byte gBattleCommunication
_0802CE44: .4byte gBattlescriptCurrInstr
thumb_func_end atkE4_getsecretpowereffect
thumb_func_start atkE5_pickup
atkE5_pickup: @ 802CE48
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r7, 0
ldr r0, _0802CE90 @ =gBaseStats
mov r8, r0
_0802CE54:
movs r0, 0x64
adds r4, r7, 0
muls r4, r0
ldr r0, _0802CE94 @ =gPlayerParty
adds r4, r0
adds r0, r4, 0
movs r1, 0x41
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
adds r0, r4, 0
movs r1, 0xC
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
adds r0, r4, 0
movs r1, 0x2E
bl GetMonData
cmp r0, 0
beq _0802CE98
lsls r0, r5, 3
subs r0, r5
lsls r0, 2
add r0, r8
ldrb r0, [r0, 0x17]
b _0802CEA2
.align 2, 0
_0802CE90: .4byte gBaseStats
_0802CE94: .4byte gPlayerParty
_0802CE98:
lsls r0, r5, 3
subs r0, r5
lsls r0, 2
add r0, r8
ldrb r0, [r0, 0x16]
_0802CEA2:
adds r4, r7, 0x1
cmp r0, 0x35
bne _0802CF0A
cmp r5, 0
beq _0802CF0A
movs r0, 0xCE
lsls r0, 1
cmp r5, r0
beq _0802CF0A
cmp r6, 0
bne _0802CF0A
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0xA
bl __umodsi3
lsls r0, 16
cmp r0, 0
bne _0802CF0A
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r3, r0, 16
movs r2, 0
ldr r1, _0802CEE4 @ =sPickupItems
b _0802CEF0
.align 2, 0
_0802CEE4: .4byte sPickupItems
_0802CEE8:
adds r1, 0x4
adds r2, 0x1
cmp r2, 0xE
bhi _0802CEF6
_0802CEF0:
ldrb r0, [r1, 0x2]
cmp r0, r3
ble _0802CEE8
_0802CEF6:
movs r0, 0x64
muls r0, r7
ldr r1, _0802CF24 @ =gPlayerParty
adds r0, r1
lsls r2, 2
ldr r1, _0802CF28 @ =sPickupItems
adds r2, r1
movs r1, 0xC
bl SetMonData
_0802CF0A:
adds r7, r4, 0
cmp r7, 0x5
ble _0802CE54
ldr r1, _0802CF2C @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802CF24: .4byte gPlayerParty
_0802CF28: .4byte sPickupItems
_0802CF2C: .4byte gBattlescriptCurrInstr
thumb_func_end atkE5_pickup
thumb_func_start atkE6_docastformchangeanimation
atkE6_docastformchangeanimation: @ 802CF30
push {r4,lr}
ldr r4, _0802CF84 @ =gActiveBattler
ldr r0, _0802CF88 @ =gBattleScripting
ldrb r0, [r0, 0x17]
strb r0, [r4]
ldr r1, _0802CF8C @ =gBattleMons
ldrb r2, [r4]
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 17
ands r0, r1
ldr r3, _0802CF90 @ =gBattleStruct
cmp r0, 0
beq _0802CF60
ldr r0, [r3]
adds r0, 0x7F
ldrb r1, [r0]
movs r2, 0x80
orrs r1, r2
strb r1, [r0]
_0802CF60:
ldr r0, [r3]
adds r0, 0x7F
ldrb r2, [r0]
movs r0, 0
movs r1, 0
bl BtlController_EmitBattleAnimation
ldrb r0, [r4]
bl MarkBattlerForControllerExec
ldr r1, _0802CF94 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802CF84: .4byte gActiveBattler
_0802CF88: .4byte gBattleScripting
_0802CF8C: .4byte gBattleMons
_0802CF90: .4byte gBattleStruct
_0802CF94: .4byte gBattlescriptCurrInstr
thumb_func_end atkE6_docastformchangeanimation
thumb_func_start atkE7_trycastformdatachange
atkE7_trycastformdatachange: @ 802CF98
push {r4,lr}
ldr r1, _0802CFC8 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
ldr r0, _0802CFCC @ =gBattleScripting
ldrb r0, [r0, 0x17]
bl CastformDataTypeChange
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
beq _0802CFC2
ldr r0, _0802CFD0 @ =BattleScript_CastformChange
bl BattleScriptPushCursorAndCallback
ldr r0, _0802CFD4 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x7F
subs r1, r4, 0x1
strb r1, [r0]
_0802CFC2:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802CFC8: .4byte gBattlescriptCurrInstr
_0802CFCC: .4byte gBattleScripting
_0802CFD0: .4byte BattleScript_CastformChange
_0802CFD4: .4byte gBattleStruct
thumb_func_end atkE7_trycastformdatachange
thumb_func_start atkE8_settypebasedhalvers
atkE8_settypebasedhalvers: @ 802CFD8
push {r4,lr}
movs r4, 0
ldr r2, _0802D014 @ =gBattleMoves
ldr r0, _0802D018 @ =gCurrentMove
ldrh r1, [r0]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0]
cmp r0, 0xC9
bne _0802D028
ldr r1, _0802D01C @ =gStatuses3
ldr r0, _0802D020 @ =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 2
adds r2, r0, r1
ldr r1, [r2]
movs r3, 0x80
lsls r3, 9
adds r0, r1, 0
ands r0, r3
cmp r0, 0
bne _0802D04C
orrs r1, r3
str r1, [r2]
ldr r0, _0802D024 @ =gBattleCommunication
strb r4, [r0, 0x5]
b _0802D050
.align 2, 0
_0802D014: .4byte gBattleMoves
_0802D018: .4byte gCurrentMove
_0802D01C: .4byte gStatuses3
_0802D020: .4byte gBattlerAttacker
_0802D024: .4byte gBattleCommunication
_0802D028:
ldr r1, _0802D05C @ =gStatuses3
ldr r0, _0802D060 @ =gBattlerAttacker
ldrb r0, [r0]
lsls r0, 2
adds r2, r0, r1
ldr r1, [r2]
movs r3, 0x80
lsls r3, 10
adds r0, r1, 0
ands r0, r3
cmp r0, 0
bne _0802D04C
orrs r1, r3
str r1, [r2]
ldr r1, _0802D064 @ =gBattleCommunication
movs r0, 0x1
strb r0, [r1, 0x5]
movs r4, 0x1
_0802D04C:
cmp r4, 0
beq _0802D06C
_0802D050:
ldr r1, _0802D068 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802D086
.align 2, 0
_0802D05C: .4byte gStatuses3
_0802D060: .4byte gBattlerAttacker
_0802D064: .4byte gBattleCommunication
_0802D068: .4byte gBattlescriptCurrInstr
_0802D06C:
ldr r3, _0802D08C @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802D086:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802D08C: .4byte gBattlescriptCurrInstr
thumb_func_end atkE8_settypebasedhalvers
thumb_func_start atkE9_setweatherballtype
atkE9_setweatherballtype: @ 802D090
push {lr}
sub sp, 0x4
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 _0802D130
str r0, [sp]
movs r0, 0x13
movs r1, 0
movs r2, 0x4D
movs r3, 0
bl AbilityBattleEffects
lsls r0, 24
cmp r0, 0
bne _0802D130
ldr r2, _0802D0E0 @ =gBattleWeather
ldrb r0, [r2]
cmp r0, 0
beq _0802D0CE
ldr r1, _0802D0E4 @ =gBattleScripting
movs r0, 0x2
strb r0, [r1, 0xE]
_0802D0CE:
ldrh r1, [r2]
movs r0, 0x7
ands r0, r1
cmp r0, 0
beq _0802D0EC
ldr r0, _0802D0E8 @ =gBattleStruct
ldr r1, [r0]
movs r0, 0x8B
b _0802D12E
.align 2, 0
_0802D0E0: .4byte gBattleWeather
_0802D0E4: .4byte gBattleScripting
_0802D0E8: .4byte gBattleStruct
_0802D0EC:
movs r0, 0x18
ands r0, r1
cmp r0, 0
beq _0802D100
ldr r0, _0802D0FC @ =gBattleStruct
ldr r1, [r0]
movs r0, 0x85
b _0802D12E
.align 2, 0
_0802D0FC: .4byte gBattleStruct
_0802D100:
movs r0, 0x60
ands r0, r1
cmp r0, 0
beq _0802D114
ldr r0, _0802D110 @ =gBattleStruct
ldr r1, [r0]
movs r0, 0x8A
b _0802D12E
.align 2, 0
_0802D110: .4byte gBattleStruct
_0802D114:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0802D128
ldr r0, _0802D124 @ =gBattleStruct
ldr r1, [r0]
movs r0, 0x8F
b _0802D12E
.align 2, 0
_0802D124: .4byte gBattleStruct
_0802D128:
ldr r0, _0802D140 @ =gBattleStruct
ldr r1, [r0]
movs r0, 0x80
_0802D12E:
strb r0, [r1, 0x13]
_0802D130:
ldr r1, _0802D144 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
_0802D140: .4byte gBattleStruct
_0802D144: .4byte gBattlescriptCurrInstr
thumb_func_end atkE9_setweatherballtype
thumb_func_start atkEA_tryrecycleitem
atkEA_tryrecycleitem: @ 802D148
push {r4-r7,lr}
sub sp, 0x4
ldr r7, _0802D1B0 @ =gActiveBattler
ldr r0, _0802D1B4 @ =gBattlerAttacker
ldrb r0, [r0]
strb r0, [r7]
ldr r1, _0802D1B8 @ =gBattleStruct
ldrb r2, [r7]
lsls r0, r2, 1
adds r0, 0xB8
ldr r1, [r1]
adds r6, r1, r0
ldrh r5, [r6]
cmp r5, 0
beq _0802D1C8
ldr r4, _0802D1BC @ =gBattleMons
movs r3, 0x58
adds r0, r2, 0
muls r0, r3
adds r0, r4
ldrh r0, [r0, 0x2E]
cmp r0, 0
bne _0802D1C8
ldr r1, _0802D1C0 @ =gLastUsedItem
strh r5, [r1]
strh r0, [r6]
ldrb r0, [r7]
muls r0, r3
adds r0, r4
ldrh r1, [r1]
strh r1, [r0, 0x2E]
ldrb r0, [r7]
muls r0, r3
adds r1, r4, 0
adds r1, 0x2E
adds r0, r1
str r0, [sp]
movs r0, 0
movs r1, 0x2
movs r2, 0
movs r3, 0x2
bl BtlController_EmitSetMonData
ldrb r0, [r7]
bl MarkBattlerForControllerExec
ldr r1, _0802D1C4 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802D1E2
.align 2, 0
_0802D1B0: .4byte gActiveBattler
_0802D1B4: .4byte gBattlerAttacker
_0802D1B8: .4byte gBattleStruct
_0802D1BC: .4byte gBattleMons
_0802D1C0: .4byte gLastUsedItem
_0802D1C4: .4byte gBattlescriptCurrInstr
_0802D1C8:
ldr r3, _0802D1EC @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802D1E2:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802D1EC: .4byte gBattlescriptCurrInstr
thumb_func_end atkEA_tryrecycleitem
thumb_func_start atkEB_settypetoterrain
atkEB_settypetoterrain: @ 802D1F0
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r0, _0802D260 @ =gBattleMons
mov r8, r0
ldr r7, _0802D264 @ =gBattlerAttacker
ldrb r0, [r7]
movs r6, 0x58
muls r0, r6
mov r1, r8
adds r3, r0, r1
movs r0, 0x21
adds r0, r3
mov r12, r0
ldr r5, _0802D268 @ =sTerrainToType
ldr r4, _0802D26C @ =gBattleTerrain
ldrb r0, [r4]
adds r0, r5
ldrb r2, [r0]
mov r1, r12
ldrb r0, [r1]
adds r1, r2, 0
cmp r0, r1
beq _0802D278
adds r0, r3, 0
adds r0, 0x22
ldrb r0, [r0]
cmp r0, r1
beq _0802D278
mov r0, r12
strb r2, [r0]
ldrb r0, [r7]
adds r1, r0, 0
muls r1, r6
add r1, r8
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
adds r1, 0x22
strb r0, [r1]
ldr r1, _0802D270 @ =gBattleTextBuff1
movs r0, 0xFD
strb r0, [r1]
movs r0, 0x3
strb r0, [r1, 0x1]
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
strb r0, [r1, 0x2]
movs r0, 0xFF
strb r0, [r1, 0x3]
ldr r1, _0802D274 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802D292
.align 2, 0
_0802D260: .4byte gBattleMons
_0802D264: .4byte gBattlerAttacker
_0802D268: .4byte sTerrainToType
_0802D26C: .4byte gBattleTerrain
_0802D270: .4byte gBattleTextBuff1
_0802D274: .4byte gBattlescriptCurrInstr
_0802D278:
ldr r3, _0802D29C @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802D292:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802D29C: .4byte gBattlescriptCurrInstr
thumb_func_end atkEB_settypetoterrain
thumb_func_start atkEC_pursuitrelated
atkEC_pursuitrelated: @ 802D2A0
push {r4-r6,lr}
ldr r5, _0802D314 @ =gBattlerAttacker
ldrb r0, [r5]
bl GetBattlerPosition
movs r1, 0x2
eors r0, r1
lsls r0, 24
lsrs r0, 24
bl GetBattlerAtPosition
ldr r4, _0802D318 @ =gActiveBattler
strb r0, [r4]
ldr r0, _0802D31C @ =gBattleTypeFlags
ldr r0, [r0]
movs r6, 0x1
ands r0, r6
cmp r0, 0
beq _0802D340
ldr r0, _0802D320 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r2, _0802D324 @ =gBitTable
ldrb r3, [r4]
lsls r0, r3, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0802D340
ldr r0, _0802D328 @ =gChosenActionByBattler
adds r0, r3, r0
ldrb r0, [r0]
cmp r0, 0
bne _0802D340
ldr r1, _0802D32C @ =gChosenMoveByBattler
lsls r0, r3, 1
adds r0, r1
ldrh r2, [r0]
cmp r2, 0xE4
bne _0802D340
ldr r0, _0802D330 @ =gActionsByTurnOrder
adds r0, r3, r0
movs r1, 0xB
strb r1, [r0]
ldr r0, _0802D334 @ =gCurrentMove
strh r2, [r0]
ldr r1, _0802D338 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
ldr r0, _0802D33C @ =gBattleScripting
strb r6, [r0, 0x18]
ldrb r1, [r5]
adds r0, 0x20
strb r1, [r0]
ldrb r0, [r4]
strb r0, [r5]
b _0802D35A
.align 2, 0
_0802D314: .4byte gBattlerAttacker
_0802D318: .4byte gActiveBattler
_0802D31C: .4byte gBattleTypeFlags
_0802D320: .4byte gAbsentBattlerFlags
_0802D324: .4byte gBitTable
_0802D328: .4byte gChosenActionByBattler
_0802D32C: .4byte gChosenMoveByBattler
_0802D330: .4byte gActionsByTurnOrder
_0802D334: .4byte gCurrentMove
_0802D338: .4byte gBattlescriptCurrInstr
_0802D33C: .4byte gBattleScripting
_0802D340:
ldr r3, _0802D360 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802D35A:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802D360: .4byte gBattlescriptCurrInstr
thumb_func_end atkEC_pursuitrelated
thumb_func_start atkED_snatchsetbattlers
atkED_snatchsetbattlers: @ 802D364
push {r4,lr}
ldr r1, _0802D388 @ =gEffectBattler
ldr r3, _0802D38C @ =gBattlerAttacker
ldrb r0, [r3]
strb r0, [r1]
ldr r2, _0802D390 @ =gBattlerTarget
lsls r0, 24
lsrs r0, 24
adds r4, r1, 0
ldrb r1, [r2]
cmp r0, r1
bne _0802D398
ldr r1, _0802D394 @ =gBattleScripting
ldrb r0, [r1, 0x17]
strb r0, [r2]
strb r0, [r3]
b _0802D39E
.align 2, 0
_0802D388: .4byte gEffectBattler
_0802D38C: .4byte gBattlerAttacker
_0802D390: .4byte gBattlerTarget
_0802D394: .4byte gBattleScripting
_0802D398:
ldr r1, _0802D3B0 @ =gBattleScripting
ldrb r0, [r1, 0x17]
strb r0, [r2]
_0802D39E:
ldrb r0, [r4]
strb r0, [r1, 0x17]
ldr r1, _0802D3B4 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802D3B0: .4byte gBattleScripting
_0802D3B4: .4byte gBattlescriptCurrInstr
thumb_func_end atkED_snatchsetbattlers
thumb_func_start atkEE_removelightscreenreflect
atkEE_removelightscreenreflect: @ 802D3B8
push {r4,lr}
ldr r0, _0802D400 @ =gBattlerAttacker
ldrb r0, [r0]
bl GetBattlerSide
movs r1, 0x1
eors r0, r1
lsls r0, 24
lsrs r0, 24
ldr r1, _0802D404 @ =gSideTimers
lsls r3, r0, 1
adds r0, r3, r0
lsls r0, 2
adds r4, r0, r1
ldrb r0, [r4]
cmp r0, 0
bne _0802D3E0
ldrb r1, [r4, 0x2]
cmp r1, 0
beq _0802D418
_0802D3E0:
ldr r2, _0802D408 @ =gSideStatuses
adds r2, r3, r2
ldrh r1, [r2]
ldr r0, _0802D40C @ =0x0000fffe
ands r0, r1
movs r3, 0
ldr r1, _0802D410 @ =0x0000fffd
ands r0, r1
strh r0, [r2]
strb r3, [r4]
strb r3, [r4, 0x2]
ldr r1, _0802D414 @ =gBattleScripting
movs r0, 0x1
strb r0, [r1, 0x18]
strb r0, [r1, 0x19]
b _0802D41E
.align 2, 0
_0802D400: .4byte gBattlerAttacker
_0802D404: .4byte gSideTimers
_0802D408: .4byte gSideStatuses
_0802D40C: .4byte 0x0000fffe
_0802D410: .4byte 0x0000fffd
_0802D414: .4byte gBattleScripting
_0802D418:
ldr r0, _0802D42C @ =gBattleScripting
strb r1, [r0, 0x18]
strb r1, [r0, 0x19]
_0802D41E:
ldr r1, _0802D430 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0802D42C: .4byte gBattleScripting
_0802D430: .4byte gBattlescriptCurrInstr
thumb_func_end atkEE_removelightscreenreflect
thumb_func_start atkEF_handleballthrow
atkEF_handleballthrow: @ 802D434
push {r4-r6,lr}
movs r4, 0
ldr r0, _0802D474 @ =gBattleControllerExecFlags
ldr r0, [r0]
cmp r0, 0
beq _0802D442
b _0802D7EE
_0802D442:
ldr r5, _0802D478 @ =gActiveBattler
ldr r0, _0802D47C @ =gBattlerAttacker
ldrb r0, [r0]
strb r0, [r5]
ldr r6, _0802D480 @ =gBattlerTarget
movs r1, 0x1
eors r0, r1
strb r0, [r6]
ldr r0, _0802D484 @ =gBattleTypeFlags
ldr r1, [r0]
movs r0, 0x80
lsls r0, 8
ands r0, r1
cmp r0, 0
beq _0802D490
movs r0, 0
movs r1, 0x6
bl BtlController_EmitBallThrowAnim
ldrb r0, [r5]
bl MarkBattlerForControllerExec
ldr r1, _0802D488 @ =gBattlescriptCurrInstr
ldr r0, _0802D48C @ =BattleScript_GhostBallDodge
b _0802D7EC
.align 2, 0
_0802D474: .4byte gBattleControllerExecFlags
_0802D478: .4byte gActiveBattler
_0802D47C: .4byte gBattlerAttacker
_0802D480: .4byte gBattlerTarget
_0802D484: .4byte gBattleTypeFlags
_0802D488: .4byte gBattlescriptCurrInstr
_0802D48C: .4byte BattleScript_GhostBallDodge
_0802D490:
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _0802D4B4
movs r0, 0
movs r1, 0x5
bl BtlController_EmitBallThrowAnim
ldrb r0, [r5]
bl MarkBattlerForControllerExec
ldr r1, _0802D4AC @ =gBattlescriptCurrInstr
ldr r0, _0802D4B0 @ =BattleScript_TrainerBallBlock
b _0802D7EC
.align 2, 0
_0802D4AC: .4byte gBattlescriptCurrInstr
_0802D4B0: .4byte BattleScript_TrainerBallBlock
_0802D4B4:
movs r0, 0x81
lsls r0, 9
ands r1, r0
cmp r1, 0
beq _0802D4DC
movs r0, 0
movs r1, 0x4
bl BtlController_EmitBallThrowAnim
ldrb r0, [r5]
bl MarkBattlerForControllerExec
ldr r1, _0802D4D4 @ =gBattlescriptCurrInstr
ldr r0, _0802D4D8 @ =gUnknown_81D9A88
b _0802D7EC
.align 2, 0
_0802D4D4: .4byte gBattlescriptCurrInstr
_0802D4D8: .4byte gUnknown_81D9A88
_0802D4DC:
ldr r0, _0802D500 @ =gLastUsedItem
ldrh r0, [r0]
cmp r0, 0x5
bne _0802D508
ldr r0, _0802D504 @ =gBattleStruct
ldr r0, [r0]
adds r0, 0x7C
ldrb r0, [r0]
lsls r1, r0, 2
adds r1, r0
lsls r0, r1, 8
subs r0, r1
movs r1, 0x64
bl __divsi3
lsls r0, 24
lsrs r5, r0, 24
b _0802D520
.align 2, 0
_0802D500: .4byte gLastUsedItem
_0802D504: .4byte gBattleStruct
_0802D508:
ldr r3, _0802D53C @ =gBaseStats
ldr r2, _0802D540 @ =gBattleMons
ldrb r1, [r6]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r1, [r0]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r3
ldrb r5, [r0, 0x8]
_0802D520:
ldr r2, _0802D544 @ =gLastUsedItem
ldrh r0, [r2]
cmp r0, 0x5
bhi _0802D52A
b _0802D620
_0802D52A:
subs r0, 0x6
cmp r0, 0x6
bls _0802D532
b _0802D62A
_0802D532:
lsls r0, 2
ldr r1, _0802D548 @ =_0802D54C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802D53C: .4byte gBaseStats
_0802D540: .4byte gBattleMons
_0802D544: .4byte gLastUsedItem
_0802D548: .4byte _0802D54C
.align 2, 0
_0802D54C:
.4byte _0802D568
.4byte _0802D598
.4byte _0802D5AA
.4byte _0802D5D8
.4byte _0802D608
.4byte _0802D5CA
.4byte _0802D5CA
_0802D568:
ldr r2, _0802D590 @ =gBattleMons
ldr r0, _0802D594 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r1, r0, 0
adds r1, 0x21
ldrb r1, [r1]
cmp r1, 0xB
beq _0802D5FC
adds r0, 0x22
ldrb r0, [r0]
cmp r0, 0xB
beq _0802D5FC
cmp r1, 0x6
beq _0802D5FC
cmp r0, 0x6
beq _0802D5FC
b _0802D5CA
.align 2, 0
_0802D590: .4byte gBattleMons
_0802D594: .4byte gBattlerTarget
_0802D598:
bl GetCurrentMapType
lsls r0, 24
lsrs r0, 24
movs r4, 0xA
cmp r0, 0x5
bne _0802D62A
movs r4, 0x23
b _0802D62A
_0802D5AA:
ldr r2, _0802D5D0 @ =gBattleMons
ldr r0, _0802D5D4 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
adds r0, 0x2A
ldrb r1, [r0]
cmp r1, 0x27
bhi _0802D5CA
movs r0, 0x28
subs r0, r1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x9
bhi _0802D62A
_0802D5CA:
movs r4, 0xA
b _0802D62A
.align 2, 0
_0802D5D0: .4byte gBattleMons
_0802D5D4: .4byte gBattlerTarget
_0802D5D8:
ldr r2, _0802D600 @ =gBattleMons
ldr r0, _0802D604 @ =gBattlerTarget
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrh r0, [r0]
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
movs r4, 0xA
cmp r0, 0
beq _0802D62A
_0802D5FC:
movs r4, 0x1E
b _0802D62A
.align 2, 0
_0802D600: .4byte gBattleMons
_0802D604: .4byte gBattlerTarget
_0802D608:
ldr r0, _0802D61C @ =gBattleResults
ldrb r0, [r0, 0x13]
adds r0, 0xA
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x28
bls _0802D62A
movs r4, 0x28
b _0802D62A
.align 2, 0
_0802D61C: .4byte gBattleResults
_0802D620:
ldr r1, _0802D694 @ =sBallCatchBonuses
ldrh r0, [r2]
subs r0, 0x2
adds r0, r1
ldrb r4, [r0]
_0802D62A:
adds r0, r5, 0
muls r0, r4
movs r1, 0xA
bl __divsi3
ldr r5, _0802D698 @ =gBattleMons
ldr r1, _0802D69C @ =gBattlerTarget
ldrb r2, [r1]
movs r1, 0x58
adds r4, r2, 0
muls r4, r1
adds r3, r4, r5
ldrh r2, [r3, 0x2C]
lsls r1, r2, 1
adds r1, r2
ldrh r2, [r3, 0x28]
lsls r2, 1
subs r2, r1, r2
muls r0, r2
bl __divsi3
adds r6, r0, 0
adds r5, 0x4C
adds r4, r5
ldr r4, [r4]
movs r0, 0x27
ands r0, r4
cmp r0, 0
beq _0802D666
lsls r6, 1
_0802D666:
movs r0, 0xD8
ands r4, r0
cmp r4, 0
beq _0802D67A
lsls r0, r6, 4
subs r0, r6
movs r1, 0xA
bl __udivsi3
adds r6, r0, 0
_0802D67A:
ldr r1, _0802D6A0 @ =gLastUsedItem
ldrh r0, [r1]
cmp r0, 0x5
beq _0802D6BC
cmp r0, 0x1
bne _0802D6A8
ldr r0, _0802D6A4 @ =gBattleResults
ldrb r1, [r0, 0x5]
movs r2, 0x2
orrs r1, r2
strb r1, [r0, 0x5]
b _0802D6BC
.align 2, 0
_0802D694: .4byte sBallCatchBonuses
_0802D698: .4byte gBattleMons
_0802D69C: .4byte gBattlerTarget
_0802D6A0: .4byte gLastUsedItem
_0802D6A4: .4byte gBattleResults
_0802D6A8:
ldr r0, _0802D700 @ =gBattleResults
ldrh r1, [r1]
adds r0, r1
adds r1, r0, 0
adds r1, 0x34
ldrb r0, [r1]
cmp r0, 0xFE
bhi _0802D6BC
adds r0, 0x1
strb r0, [r1]
_0802D6BC:
cmp r6, 0xFE
bls _0802D720
movs r0, 0
movs r1, 0x4
bl BtlController_EmitBallThrowAnim
ldr r0, _0802D704 @ =gActiveBattler
ldrb r0, [r0]
bl MarkBattlerForControllerExec
ldr r1, _0802D708 @ =gBattlescriptCurrInstr
ldr r0, _0802D70C @ =BattleScript_SuccessBallThrow
str r0, [r1]
ldr r1, _0802D710 @ =gBattlerPartyIndexes
ldr r0, _0802D714 @ =gBattlerTarget
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _0802D718 @ =gEnemyParty
adds r0, r1
ldr r2, _0802D71C @ =gLastUsedItem
movs r1, 0x26
bl SetMonData
bl CalculatePlayerPartyCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x6
beq _0802D7AE
b _0802D7D8
.align 2, 0
_0802D700: .4byte gBattleResults
_0802D704: .4byte gActiveBattler
_0802D708: .4byte gBattlescriptCurrInstr
_0802D70C: .4byte BattleScript_SuccessBallThrow
_0802D710: .4byte gBattlerPartyIndexes
_0802D714: .4byte gBattlerTarget
_0802D718: .4byte gEnemyParty
_0802D71C: .4byte gLastUsedItem
_0802D720:
movs r0, 0xFF
lsls r0, 16
adds r1, r6, 0
bl __udivsi3
bl Sqrt
lsls r0, 16
lsrs r0, 16
bl Sqrt
lsls r0, 16
lsrs r6, r0, 16
ldr r0, _0802D748 @ =0x000ffff0
adds r1, r6, 0
bl __udivsi3
adds r6, r0, 0
movs r4, 0
b _0802D752
.align 2, 0
_0802D748: .4byte 0x000ffff0
_0802D74C:
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
_0802D752:
cmp r4, 0x3
bhi _0802D762
bl Random
lsls r0, 16
lsrs r0, 16
cmp r0, r6
bcc _0802D74C
_0802D762:
ldr r5, _0802D7B8 @ =gLastUsedItem
ldrh r0, [r5]
cmp r0, 0x1
bne _0802D76C
movs r4, 0x4
_0802D76C:
movs r0, 0
adds r1, r4, 0
bl BtlController_EmitBallThrowAnim
ldr r0, _0802D7BC @ =gActiveBattler
ldrb r0, [r0]
bl MarkBattlerForControllerExec
cmp r4, 0x4
bne _0802D7E4
ldr r1, _0802D7C0 @ =gBattlescriptCurrInstr
ldr r0, _0802D7C4 @ =BattleScript_SuccessBallThrow
str r0, [r1]
ldr r1, _0802D7C8 @ =gBattlerPartyIndexes
ldr r0, _0802D7CC @ =gBattlerTarget
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _0802D7D0 @ =gEnemyParty
adds r0, r1
movs r1, 0x26
adds r2, r5, 0
bl SetMonData
bl CalculatePlayerPartyCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x6
bne _0802D7D8
_0802D7AE:
ldr r1, _0802D7D4 @ =gBattleCommunication
movs r0, 0
strb r0, [r1, 0x5]
b _0802D7EE
.align 2, 0
_0802D7B8: .4byte gLastUsedItem
_0802D7BC: .4byte gActiveBattler
_0802D7C0: .4byte gBattlescriptCurrInstr
_0802D7C4: .4byte BattleScript_SuccessBallThrow
_0802D7C8: .4byte gBattlerPartyIndexes
_0802D7CC: .4byte gBattlerTarget
_0802D7D0: .4byte gEnemyParty
_0802D7D4: .4byte gBattleCommunication
_0802D7D8:
ldr r1, _0802D7E0 @ =gBattleCommunication
movs r0, 0x1
strb r0, [r1, 0x5]
b _0802D7EE
.align 2, 0
_0802D7E0: .4byte gBattleCommunication
_0802D7E4:
ldr r0, _0802D7F4 @ =gBattleCommunication
strb r4, [r0, 0x5]
ldr r1, _0802D7F8 @ =gBattlescriptCurrInstr
ldr r0, _0802D7FC @ =BattleScript_ShakeBallThrow
_0802D7EC:
str r0, [r1]
_0802D7EE:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0802D7F4: .4byte gBattleCommunication
_0802D7F8: .4byte gBattlescriptCurrInstr
_0802D7FC: .4byte BattleScript_ShakeBallThrow
thumb_func_end atkEF_handleballthrow
thumb_func_start atkF0_givecaughtmon
atkF0_givecaughtmon: @ 802D800
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
ldr r0, _0802D870 @ =gBattlerPartyIndexes
mov r9, r0
ldr r5, _0802D874 @ =gBattlerAttacker
ldrb r0, [r5]
movs r6, 0x1
eors r0, r6
lsls r0, 1
add r0, r9
ldrh r0, [r0]
movs r7, 0x64
muls r0, r7
ldr r1, _0802D878 @ =gEnemyParty
mov r8, r1
add r0, r8
bl GiveMonToPlayer
lsls r0, 24
cmp r0, 0
beq _0802D8EA
bl sub_80CC7B4
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _0802D88C
ldr r0, _0802D87C @ =gBattleCommunication
strb r1, [r0, 0x5]
ldr r4, _0802D880 @ =gStringVar1
ldr r0, _0802D884 @ =0x00004037
bl VarGet
lsls r0, 24
lsrs r0, 24
bl GetBoxNamePtr
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
ldrb r0, [r5]
eors r0, r6
lsls r0, 1
add r0, r9
ldrh r0, [r0]
muls r0, r7
add r0, r8
ldr r2, _0802D888 @ =gStringVar2
movs r1, 0x2
bl GetMonData
b _0802D8D6
.align 2, 0
_0802D870: .4byte gBattlerPartyIndexes
_0802D874: .4byte gBattlerAttacker
_0802D878: .4byte gEnemyParty
_0802D87C: .4byte gBattleCommunication
_0802D880: .4byte gStringVar1
_0802D884: .4byte 0x00004037
_0802D888: .4byte gStringVar2
_0802D88C:
ldr r4, _0802D92C @ =gStringVar1
ldr r0, _0802D930 @ =0x00004037
bl VarGet
lsls r0, 24
lsrs r0, 24
bl GetBoxNamePtr
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
ldrb r0, [r5]
eors r0, r6
lsls r0, 1
add r0, r9
ldrh r0, [r0]
muls r0, r7
add r0, r8
ldr r2, _0802D934 @ =gStringVar2
movs r1, 0x2
bl GetMonData
ldr r4, _0802D938 @ =gStringVar3
bl get_unknown_box_id
lsls r0, 24
lsrs r0, 24
bl GetBoxNamePtr
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
ldr r1, _0802D93C @ =gBattleCommunication
movs r0, 0x2
strb r0, [r1, 0x5]
_0802D8D6:
ldr r0, _0802D940 @ =0x00000834
bl FlagGet
lsls r0, 24
cmp r0, 0
beq _0802D8EA
ldr r1, _0802D93C @ =gBattleCommunication
ldrb r0, [r1, 0x5]
adds r0, 0x1
strb r0, [r1, 0x5]
_0802D8EA:
ldr r2, _0802D944 @ =gBattleResults
ldr r3, _0802D948 @ =gBattleMons
ldr r0, _0802D94C @ =gBattlerAttacker
ldrb r0, [r0]
movs r1, 0x1
eors r1, r0
movs r0, 0x58
muls r0, r1
adds r0, r3
ldrh r0, [r0]
strh r0, [r2, 0x28]
ldr r0, _0802D950 @ =gBattlerPartyIndexes
lsls r1, 1
adds r1, r0
ldrh r1, [r1]
movs r0, 0x64
muls r0, r1
ldr r1, _0802D954 @ =gEnemyParty
adds r0, r1
adds r2, 0x2A
movs r1, 0x2
bl GetMonData
ldr r1, _0802D958 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0802D92C: .4byte gStringVar1
_0802D930: .4byte 0x00004037
_0802D934: .4byte gStringVar2
_0802D938: .4byte gStringVar3
_0802D93C: .4byte gBattleCommunication
_0802D940: .4byte 0x00000834
_0802D944: .4byte gBattleResults
_0802D948: .4byte gBattleMons
_0802D94C: .4byte gBattlerAttacker
_0802D950: .4byte gBattlerPartyIndexes
_0802D954: .4byte gEnemyParty
_0802D958: .4byte gBattlescriptCurrInstr
thumb_func_end atkF0_givecaughtmon
thumb_func_start atkF1_trysetcaughtmondexflags
atkF1_trysetcaughtmondexflags: @ 802D95C
push {r4,r5,lr}
ldr r4, _0802D9AC @ =gEnemyParty
adds r0, r4, 0
movs r1, 0xB
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
adds r0, r4, 0
movs r1, 0
movs r2, 0
bl GetMonData
adds r4, r0, 0
adds r0, r5, 0
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _0802D9B4
ldr r3, _0802D9B0 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
b _0802D9CE
.align 2, 0
_0802D9AC: .4byte gEnemyParty
_0802D9B0: .4byte gBattlescriptCurrInstr
_0802D9B4:
adds r0, r5, 0
bl SpeciesToNationalPokedexNum
lsls r0, 16
lsrs r0, 16
movs r1, 0x3
adds r2, r4, 0
bl HandleSetPokedexFlag
ldr r1, _0802D9D4 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
_0802D9CE:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802D9D4: .4byte gBattlescriptCurrInstr
thumb_func_end atkF1_trysetcaughtmondexflags
thumb_func_start atkF2_displaydexinfo
atkF2_displaydexinfo: @ 802D9D8
push {r4,r5,lr}
sub sp, 0x18
ldr r0, _0802DA00 @ =gEnemyParty
movs r1, 0xB
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r5, r0, 16
ldr r0, _0802DA04 @ =gBattleCommunication
ldrb r0, [r0]
cmp r0, 0x5
bls _0802D9F4
b _0802DB6C
_0802D9F4:
lsls r0, 2
ldr r1, _0802DA08 @ =_0802DA0C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802DA00: .4byte gEnemyParty
_0802DA04: .4byte gBattleCommunication
_0802DA08: .4byte _0802DA0C
.align 2, 0
_0802DA0C:
.4byte _0802DA24
.4byte _0802DA3C
.4byte _0802DA64
.4byte _0802DAC8
.4byte _0802DAE0
.4byte _0802DB58
_0802DA24:
movs r0, 0x1
negs r0, r0
ldr r1, _0802DA38 @ =0x00007fff
str r1, [sp]
movs r1, 0
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
b _0802DB34
.align 2, 0
_0802DA38: .4byte 0x00007fff
_0802DA3C:
ldr r0, _0802DA5C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0802DA4A
b _0802DB6C
_0802DA4A:
bl FreeAllWindowBuffers
adds r0, r5, 0
bl sub_8106B60
ldr r1, _0802DA60 @ =gBattleCommunication
strb r0, [r1, 0x1]
b _0802DB36
.align 2, 0
_0802DA5C: .4byte gPaletteFade
_0802DA60: .4byte gBattleCommunication
_0802DA64:
ldr r0, _0802DAAC @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0802DA72
b _0802DB6C
_0802DA72:
ldr r0, _0802DAB0 @ =gMain
ldr r1, [r0, 0x4]
ldr r0, _0802DAB4 @ =BattleMainCB2
cmp r1, r0
bne _0802DB6C
ldr r2, _0802DAB8 @ =gTasks
ldr r4, _0802DABC @ =gBattleCommunication
ldrb r1, [r4, 0x1]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrb r0, [r0, 0x4]
cmp r0, 0
bne _0802DB6C
str r0, [sp, 0x10]
movs r1, 0xC0
lsls r1, 19
ldr r2, _0802DAC0 @ =0x05006000
add r0, sp, 0x10
bl CpuSet
ldr r0, _0802DAC4 @ =VBlankCB_Battle
bl SetVBlankCallback
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
b _0802DB6C
.align 2, 0
_0802DAAC: .4byte gPaletteFade
_0802DAB0: .4byte gMain
_0802DAB4: .4byte BattleMainCB2
_0802DAB8: .4byte gTasks
_0802DABC: .4byte gBattleCommunication
_0802DAC0: .4byte 0x05006000
_0802DAC4: .4byte VBlankCB_Battle
_0802DAC8:
bl sub_800F34C
bl LoadBattleTextboxAndBackground
ldr r1, _0802DADC @ =gBattle_BG3_X
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
b _0802DB34
.align 2, 0
_0802DADC: .4byte gBattle_BG3_X
_0802DAE0:
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
bne _0802DB6C
ldr r0, _0802DB40 @ =gBattleMons
adds r1, r0, 0
adds r1, 0xAC
ldr r1, [r1]
adds r0, 0xA0
ldr r2, [r0]
movs r0, 0x78
str r0, [sp]
movs r0, 0x40
str r0, [sp, 0x4]
str r4, [sp, 0x8]
ldr r0, _0802DB44 @ =0x0000ffff
str r0, [sp, 0xC]
adds r0, r5, 0
movs r3, 0x1
bl CreateMonPicSprite_HandleDeoxys
str r4, [sp, 0x14]
add r0, sp, 0x14
ldr r1, _0802DB48 @ =gPlttBufferFaded
ldr r2, _0802DB4C @ =0x05000080
bl CpuSet
ldr r0, _0802DB50 @ =0x0001ffff
str r4, [sp]
movs r1, 0
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
movs r0, 0
bl ShowBg
movs r0, 0x3
bl ShowBg
_0802DB34:
ldr r1, _0802DB54 @ =gBattleCommunication
_0802DB36:
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _0802DB6C
.align 2, 0
_0802DB40: .4byte gBattleMons
_0802DB44: .4byte 0x0000ffff
_0802DB48: .4byte gPlttBufferFaded
_0802DB4C: .4byte 0x05000080
_0802DB50: .4byte 0x0001ffff
_0802DB54: .4byte gBattleCommunication
_0802DB58:
ldr r0, _0802DB74 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _0802DB6C
ldr r1, _0802DB78 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_0802DB6C:
add sp, 0x18
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0802DB74: .4byte gPaletteFade
_0802DB78: .4byte gBattlescriptCurrInstr
thumb_func_end atkF2_displaydexinfo
thumb_func_start HandleBattleWindow
HandleBattleWindow: @ 802DB7C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x20
ldr r4, [sp, 0x40]
lsls r0, 24
lsrs r0, 24
mov r8, r0
lsls r1, 24
lsrs r1, 24
str r1, [sp, 0x10]
lsls r2, 24
lsrs r2, 24
str r2, [sp, 0x1C]
lsls r3, 24
lsrs r3, 24
str r3, [sp, 0x14]
lsls r4, 24
lsrs r4, 24
mov r10, r4
movs r1, 0
add r0, sp, 0xC
strh r1, [r0]
ldr r6, [sp, 0x10]
cmp r6, r3
ble _0802DBB6
b _0802DCA2
_0802DBB6:
mov r4, r8
adds r0, r6, 0x1
str r0, [sp, 0x18]
ldr r2, [sp, 0x1C]
cmp r4, r2
bgt _0802DC98
add r5, sp, 0xC
lsls r7, r6, 24
mov r9, r7
_0802DBC8:
ldr r0, [sp, 0x10]
cmp r6, r0
bne _0802DBF4
cmp r4, r8
bne _0802DBDC
ldr r0, _0802DBD8 @ =0x00001022
b _0802DC3E
.align 2, 0
_0802DBD8: .4byte 0x00001022
_0802DBDC:
ldr r2, [sp, 0x1C]
cmp r4, r2
bne _0802DBEC
ldr r0, _0802DBE8 @ =0x00001024
b _0802DC3E
.align 2, 0
_0802DBE8: .4byte 0x00001024
_0802DBEC:
ldr r0, _0802DBF0 @ =0x00001023
b _0802DC3E
.align 2, 0
_0802DBF0: .4byte 0x00001023
_0802DBF4:
ldr r7, [sp, 0x14]
cmp r6, r7
bne _0802DC20
cmp r4, r8
bne _0802DC08
ldr r0, _0802DC04 @ =0x00001028
b _0802DC3E
.align 2, 0
_0802DC04: .4byte 0x00001028
_0802DC08:
ldr r0, [sp, 0x1C]
cmp r4, r0
bne _0802DC18
ldr r0, _0802DC14 @ =0x0000102a
b _0802DC3E
.align 2, 0
_0802DC14: .4byte 0x0000102a
_0802DC18:
ldr r0, _0802DC1C @ =0x00001029
b _0802DC3E
.align 2, 0
_0802DC1C: .4byte 0x00001029
_0802DC20:
cmp r4, r8
bne _0802DC2C
ldr r0, _0802DC28 @ =0x00001025
b _0802DC3E
.align 2, 0
_0802DC28: .4byte 0x00001025
_0802DC2C:
ldr r2, [sp, 0x1C]
cmp r4, r2
bne _0802DC3C
ldr r0, _0802DC38 @ =0x00001027
b _0802DC3E
.align 2, 0
_0802DC38: .4byte 0x00001027
_0802DC3C:
ldr r0, _0802DC74 @ =0x00001026
_0802DC3E:
strh r0, [r5]
movs r1, 0x1
mov r0, r10
ands r0, r1
cmp r0, 0
beq _0802DC4E
movs r0, 0
strh r0, [r5]
_0802DC4E:
movs r0, 0x80
mov r7, r10
ands r0, r7
cmp r0, 0
beq _0802DC78
lsls r2, r4, 24
lsrs r2, 24
str r1, [sp]
str r1, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
movs r0, 0x1
add r1, sp, 0xC
mov r7, r9
lsrs r3, r7, 24
bl CopyToBgTilemapBufferRect_ChangePalette
b _0802DC90
.align 2, 0
_0802DC74: .4byte 0x00001026
_0802DC78:
lsls r2, r4, 24
lsrs r2, 24
str r1, [sp]
str r1, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
movs r0, 0
add r1, sp, 0xC
mov r7, r9
lsrs r3, r7, 24
bl CopyToBgTilemapBufferRect_ChangePalette
_0802DC90:
adds r4, 0x1
ldr r0, [sp, 0x1C]
cmp r4, r0
ble _0802DBC8
_0802DC98:
ldr r6, [sp, 0x18]
ldr r2, [sp, 0x14]
cmp r6, r2
bgt _0802DCA2
b _0802DBB6
_0802DCA2:
movs r0, 0x1
bl CopyBgTilemapBufferToVram
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end HandleBattleWindow
thumb_func_start BattleCreateYesNoCursorAt
BattleCreateYesNoCursorAt: @ 802DCB8
push {lr}
sub sp, 0x10
add r0, sp, 0xC
movs r2, 0x1
strh r2, [r0]
movs r1, 0x2
strh r1, [r0, 0x2]
ldr r0, _0802DCF4 @ =gBattleCommunication
ldrb r3, [r0, 0x1]
lsls r3, 25
movs r0, 0x90
lsls r0, 20
adds r3, r0
lsrs r3, 24
str r2, [sp]
str r1, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
movs r0, 0
add r1, sp, 0xC
movs r2, 0x18
bl CopyToBgTilemapBufferRect_ChangePalette
movs r0, 0
bl CopyBgTilemapBufferToVram
add sp, 0x10
pop {r0}
bx r0
.align 2, 0
_0802DCF4: .4byte gBattleCommunication
thumb_func_end BattleCreateYesNoCursorAt
thumb_func_start BattleDestroyYesNoCursorAt
BattleDestroyYesNoCursorAt: @ 802DCF8
push {lr}
sub sp, 0x10
add r0, sp, 0xC
movs r1, 0x20
strh r1, [r0]
strh r1, [r0, 0x2]
ldr r0, _0802DD34 @ =gBattleCommunication
ldrb r3, [r0, 0x1]
lsls r3, 25
movs r0, 0x90
lsls r0, 20
adds r3, r0
lsrs r3, 24
movs r0, 0x1
str r0, [sp]
movs r0, 0x2
str r0, [sp, 0x4]
movs r0, 0x11
str r0, [sp, 0x8]
movs r0, 0
add r1, sp, 0xC
movs r2, 0x18
bl CopyToBgTilemapBufferRect_ChangePalette
movs r0, 0
bl CopyBgTilemapBufferToVram
add sp, 0x10
pop {r0}
bx r0
.align 2, 0
_0802DD34: .4byte gBattleCommunication
thumb_func_end BattleDestroyYesNoCursorAt
thumb_func_start atkF3_trygivecaughtmonnick
atkF3_trygivecaughtmonnick: @ 802DD38
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
ldr r0, _0802DD5C @ =gBattleCommunication
ldrb r1, [r0]
adds r4, r0, 0
cmp r1, 0x4
bls _0802DD50
b _0802DFA6
_0802DD50:
lsls r0, r1, 2
ldr r1, _0802DD60 @ =_0802DD64
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0802DD5C: .4byte gBattleCommunication
_0802DD60: .4byte _0802DD64
.align 2, 0
_0802DD64:
.4byte _0802DD78
.4byte _0802DDA8
.4byte _0802DE40
.4byte _0802DF18
.4byte _0802DF70
_0802DD78:
movs r4, 0
str r4, [sp]
movs r0, 0x17
movs r1, 0x8
movs r2, 0x1D
movs r3, 0xD
bl HandleBattleWindow
ldr r0, _0802DDA0 @ =gText_BattleYesNoChoice
movs r1, 0xE
bl BattlePutTextOnWindow
ldr r1, _0802DDA4 @ =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
strb r4, [r1, 0x1]
bl BattleCreateYesNoCursorAt
b _0802DFA6
.align 2, 0
_0802DDA0: .4byte gText_BattleYesNoChoice
_0802DDA4: .4byte gBattleCommunication
_0802DDA8:
ldr r0, _0802DE1C @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _0802DDCC
ldrb r0, [r4, 0x1]
cmp r0, 0
beq _0802DDCC
movs r0, 0x5
bl PlaySE
bl BattleDestroyYesNoCursorAt
movs r0, 0
strb r0, [r4, 0x1]
bl BattleCreateYesNoCursorAt
_0802DDCC:
ldr r0, _0802DE1C @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0802DDF2
ldr r4, _0802DE20 @ =gBattleCommunication
ldrb r0, [r4, 0x1]
cmp r0, 0
bne _0802DDF2
movs r0, 0x5
bl PlaySE
bl BattleDestroyYesNoCursorAt
movs r0, 0x1
strb r0, [r4, 0x1]
bl BattleCreateYesNoCursorAt
_0802DDF2:
ldr r0, _0802DE1C @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0802DE24
movs r0, 0x5
bl PlaySE
ldr r1, _0802DE20 @ =gBattleCommunication
ldrb r0, [r1, 0x1]
cmp r0, 0
bne _0802DE36
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
movs r0, 0x3
bl BeginFastPaletteFade
b _0802DFA6
.align 2, 0
_0802DE1C: .4byte gMain
_0802DE20: .4byte gBattleCommunication
_0802DE24:
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _0802DE2E
b _0802DFA6
_0802DE2E:
movs r0, 0x5
bl PlaySE
ldr r1, _0802DE3C @ =gBattleCommunication
_0802DE36:
movs r0, 0x4
strb r0, [r1]
b _0802DFA6
.align 2, 0
_0802DE3C: .4byte gBattleCommunication
_0802DE40:
ldr r0, _0802DEFC @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0802DE4E
b _0802DFA6
_0802DE4E:
ldr r7, _0802DF00 @ =gBattlerPartyIndexes
ldr r0, _0802DF04 @ =gBattlerAttacker
mov r10, r0
ldrb r0, [r0]
movs r4, 0x1
eors r0, r4
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
movs r1, 0x64
mov r9, r1
mov r2, r9
muls r2, r0
adds r0, r2, 0
ldr r1, _0802DF08 @ =gEnemyParty
mov r8, r1
add r0, r8
ldr r1, _0802DF0C @ =gBattleStruct
ldr r2, [r1]
adds r2, 0x6D
movs r1, 0x2
bl GetMonData
bl FreeAllWindowBuffers
mov r2, r10
ldrb r0, [r2]
eors r0, r4
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
mov r1, r9
muls r1, r0
adds r0, r1, 0
add r0, r8
movs r1, 0xB
bl GetMonData
adds r6, r0, 0
lsls r6, 16
lsrs r6, 16
mov r2, r10
ldrb r0, [r2]
eors r0, r4
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
mov r1, r9
muls r1, r0
adds r0, r1, 0
add r0, r8
bl GetMonGender
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
mov r2, r10
ldrb r0, [r2]
eors r4, r0
lsls r4, 1
adds r4, r7
ldrh r0, [r4]
mov r1, r9
muls r1, r0
adds r0, r1, 0
add r0, r8
movs r1, 0
movs r2, 0
bl GetMonData
ldr r2, _0802DF0C @ =gBattleStruct
ldr r1, [r2]
adds r1, 0x6D
str r0, [sp]
ldr r0, _0802DF10 @ =BattleMainCB2
str r0, [sp, 0x4]
movs r0, 0x2
adds r2, r6, 0
adds r3, r5, 0
bl DoNamingScreen
ldr r1, _0802DF14 @ =gBattleCommunication
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
b _0802DFA6
.align 2, 0
_0802DEFC: .4byte gPaletteFade
_0802DF00: .4byte gBattlerPartyIndexes
_0802DF04: .4byte gBattlerAttacker
_0802DF08: .4byte gEnemyParty
_0802DF0C: .4byte gBattleStruct
_0802DF10: .4byte BattleMainCB2
_0802DF14: .4byte gBattleCommunication
_0802DF18:
ldr r0, _0802DF54 @ =gMain
ldr r1, [r0, 0x4]
ldr r0, _0802DF58 @ =BattleMainCB2
cmp r1, r0
bne _0802DFA6
ldr r0, _0802DF5C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _0802DFA6
ldr r2, _0802DF60 @ =gBattlerPartyIndexes
ldr r0, _0802DF64 @ =gBattlerAttacker
ldrb r1, [r0]
movs r0, 0x1
eors r0, r1
lsls r0, 1
adds r0, r2
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _0802DF68 @ =gEnemyParty
adds r0, r1
ldr r1, _0802DF6C @ =gBattleStruct
ldr r2, [r1]
adds r2, 0x6D
movs r1, 0x2
bl SetMonData
b _0802DF8C
.align 2, 0
_0802DF54: .4byte gMain
_0802DF58: .4byte BattleMainCB2
_0802DF5C: .4byte gPaletteFade
_0802DF60: .4byte gBattlerPartyIndexes
_0802DF64: .4byte gBattlerAttacker
_0802DF68: .4byte gEnemyParty
_0802DF6C: .4byte gBattleStruct
_0802DF70:
bl CalculatePlayerPartyCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x6
bne _0802DF8C
ldr r1, _0802DF88 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x5
str r0, [r1]
b _0802DFA6
.align 2, 0
_0802DF88: .4byte gBattlescriptCurrInstr
_0802DF8C:
ldr r3, _0802DFB8 @ =gBattlescriptCurrInstr
ldr r2, [r3]
ldrb r1, [r2, 0x1]
ldrb r0, [r2, 0x2]
lsls r0, 8
orrs r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 16
orrs r1, r0
ldrb r0, [r2, 0x4]
lsls r0, 24
orrs r1, r0
str r1, [r3]
_0802DFA6:
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
_0802DFB8: .4byte gBattlescriptCurrInstr
thumb_func_end atkF3_trygivecaughtmonnick
thumb_func_start atkF4_subattackerhpbydmg
atkF4_subattackerhpbydmg: @ 802DFBC
ldr r2, _0802DFDC @ =gBattleMons
ldr r0, _0802DFE0 @ =gBattlerAttacker
ldrb r1, [r0]
movs r0, 0x58
muls r1, r0
adds r1, r2
ldr r0, _0802DFE4 @ =gBattleMoveDamage
ldr r2, [r0]
ldrh r0, [r1, 0x28]
subs r0, r2
strh r0, [r1, 0x28]
ldr r1, _0802DFE8 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802DFDC: .4byte gBattleMons
_0802DFE0: .4byte gBattlerAttacker
_0802DFE4: .4byte gBattleMoveDamage
_0802DFE8: .4byte gBattlescriptCurrInstr
thumb_func_end atkF4_subattackerhpbydmg
thumb_func_start atkF5_removeattackerstatus1
atkF5_removeattackerstatus1: @ 802DFEC
ldr r1, _0802E008 @ =gBattleMons
ldr r0, _0802E00C @ =gBattlerAttacker
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r1, 0x4C
adds r0, r1
movs r1, 0
str r1, [r0]
ldr r1, _0802E010 @ =gBattlescriptCurrInstr
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bx lr
.align 2, 0
_0802E008: .4byte gBattleMons
_0802E00C: .4byte gBattlerAttacker
_0802E010: .4byte gBattlescriptCurrInstr
thumb_func_end atkF5_removeattackerstatus1
thumb_func_start atkF6_finishaction
atkF6_finishaction: @ 802E014
ldr r1, _0802E01C @ =gCurrentActionFuncId
movs r0, 0xC
strb r0, [r1]
bx lr
.align 2, 0
_0802E01C: .4byte gCurrentActionFuncId
thumb_func_end atkF6_finishaction
thumb_func_start atkF7_finishturn
atkF7_finishturn: @ 802E020
ldr r1, _0802E030 @ =gCurrentActionFuncId
movs r0, 0xC
strb r0, [r1]
ldr r1, _0802E034 @ =gCurrentTurnActionNumber
ldr r0, _0802E038 @ =gBattlersCount
ldrb r0, [r0]
strb r0, [r1]
bx lr
.align 2, 0
_0802E030: .4byte gCurrentActionFuncId
_0802E034: .4byte gCurrentTurnActionNumber
_0802E038: .4byte gBattlersCount
thumb_func_end atkF7_finishturn
.align 2, 0 @ Don't pad with nop.