3284 lines
60 KiB
ArmAsm
3284 lines
60 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start BattleScriptExecute
|
|
BattleScriptExecute: @ 801BBE4
|
|
ldr r1, _0801BC10 @ =gBattlescriptCurrInstr
|
|
str r0, [r1]
|
|
ldr r0, _0801BC14 @ =gBattleResources
|
|
ldr r0, [r0]
|
|
ldr r2, [r0, 0xC]
|
|
adds r3, r2, 0
|
|
adds r3, 0x20
|
|
ldrb r0, [r3]
|
|
adds r1, r0, 0x1
|
|
strb r1, [r3]
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
adds r2, r0
|
|
ldr r1, _0801BC18 @ =gBattleMainFunc
|
|
ldr r0, [r1]
|
|
str r0, [r2]
|
|
ldr r0, _0801BC1C @ =RunBattleScriptCommands_PopCallbacksStack
|
|
str r0, [r1]
|
|
ldr r1, _0801BC20 @ =gUnknown_2023BE3
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_0801BC10: .4byte gBattlescriptCurrInstr
|
|
_0801BC14: .4byte gBattleResources
|
|
_0801BC18: .4byte gBattleMainFunc
|
|
_0801BC1C: .4byte RunBattleScriptCommands_PopCallbacksStack
|
|
_0801BC20: .4byte gUnknown_2023BE3
|
|
thumb_func_end BattleScriptExecute
|
|
|
|
thumb_func_start BattleScriptPushCursorAndCallback
|
|
BattleScriptPushCursorAndCallback: @ 801BC24
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl BattleScriptPushCursor
|
|
ldr r0, _0801BC58 @ =gBattlescriptCurrInstr
|
|
str r4, [r0]
|
|
ldr r0, _0801BC5C @ =gBattleResources
|
|
ldr r0, [r0]
|
|
ldr r2, [r0, 0xC]
|
|
adds r3, r2, 0
|
|
adds r3, 0x20
|
|
ldrb r0, [r3]
|
|
adds r1, r0, 0x1
|
|
strb r1, [r3]
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
adds r2, r0
|
|
ldr r1, _0801BC60 @ =gBattleMainFunc
|
|
ldr r0, [r1]
|
|
str r0, [r2]
|
|
ldr r0, _0801BC64 @ =sub_8015C74
|
|
str r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801BC58: .4byte gBattlescriptCurrInstr
|
|
_0801BC5C: .4byte gBattleResources
|
|
_0801BC60: .4byte gBattleMainFunc
|
|
_0801BC64: .4byte sub_8015C74
|
|
thumb_func_end BattleScriptPushCursorAndCallback
|
|
|
|
thumb_func_start ItemBattleEffects
|
|
ItemBattleEffects: @ 801BC68
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x2C
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x8]
|
|
lsls r1, 24
|
|
lsrs r7, r1, 24
|
|
lsls r2, 24
|
|
lsrs r6, r2, 24
|
|
movs r0, 0
|
|
mov r10, r0
|
|
movs r1, 0
|
|
str r1, [sp, 0xC]
|
|
add r0, sp, 0x4
|
|
strb r1, [r0]
|
|
ldr r4, _0801BCB4 @ =gLastUsedItem
|
|
ldr r1, _0801BCB8 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2E]
|
|
strh r0, [r4]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0xAF
|
|
bne _0801BCC0
|
|
ldr r1, _0801BCBC @ =gEnigmaBerries
|
|
lsls r0, r7, 3
|
|
subs r0, r7
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r5, [r0, 0x7]
|
|
ldrb r0, [r0, 0x1A]
|
|
b _0801BCD4
|
|
.align 2, 0
|
|
_0801BCB4: .4byte gLastUsedItem
|
|
_0801BCB8: .4byte gBattleMons
|
|
_0801BCBC: .4byte gEnigmaBerries
|
|
_0801BCC0:
|
|
ldrh r0, [r4]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldrh r0, [r4]
|
|
bl ItemId_GetHoldEffectParam
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_0801BCD4:
|
|
mov r9, r0
|
|
ldr r1, _0801BCFC @ =gBattleMons
|
|
ldr r0, _0801BD00 @ =gBattlerAttacker
|
|
ldrb r2, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2E]
|
|
str r0, [sp, 0x14]
|
|
cmp r0, 0xAF
|
|
bne _0801BD08
|
|
ldr r1, _0801BD04 @ =gEnigmaBerries
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r3, [r0, 0x7]
|
|
mov r8, r3
|
|
ldrb r0, [r0, 0x1A]
|
|
b _0801BD1E
|
|
.align 2, 0
|
|
_0801BCFC: .4byte gBattleMons
|
|
_0801BD00: .4byte gBattlerAttacker
|
|
_0801BD04: .4byte gEnigmaBerries
|
|
_0801BD08:
|
|
ldr r0, [sp, 0x14]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
ldr r0, [sp, 0x14]
|
|
bl ItemId_GetHoldEffectParam
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_0801BD1E:
|
|
str r0, [sp, 0x10]
|
|
ldr r2, _0801BD54 @ =gBattleMons
|
|
ldr r0, _0801BD58 @ =gBattlerTarget
|
|
ldrb r1, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
adds r0, r2
|
|
ldrh r4, [r0, 0x2E]
|
|
cmp r4, 0xAF
|
|
beq _0801BD3E
|
|
adds r0, r4, 0
|
|
bl ItemId_GetHoldEffect
|
|
adds r0, r4, 0
|
|
bl ItemId_GetHoldEffectParam
|
|
_0801BD3E:
|
|
ldr r0, [sp, 0x8]
|
|
cmp r0, 0x4
|
|
bls _0801BD48
|
|
bl _0801CFA6
|
|
_0801BD48:
|
|
lsls r0, 2
|
|
ldr r1, _0801BD5C @ =_0801BD60
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801BD54: .4byte gBattleMons
|
|
_0801BD58: .4byte gBattlerTarget
|
|
_0801BD5C: .4byte _0801BD60
|
|
.align 2, 0
|
|
_0801BD60:
|
|
.4byte _0801BD74
|
|
.4byte _0801BE04
|
|
.4byte _0801CFA6
|
|
.4byte _0801C9FC
|
|
.4byte _0801CE4C
|
|
_0801BD74:
|
|
cmp r5, 0x17
|
|
beq _0801BD94
|
|
cmp r5, 0x20
|
|
beq _0801BD80
|
|
bl _0801CFA6
|
|
_0801BD80:
|
|
ldr r0, _0801BD90 @ =gBattleStruct
|
|
ldr r0, [r0]
|
|
adds r0, 0x4A
|
|
movs r1, 0x2
|
|
strb r1, [r0]
|
|
bl _0801CFA6
|
|
.align 2, 0
|
|
_0801BD90: .4byte gBattleStruct
|
|
_0801BD94:
|
|
ldr r1, _0801BDEC @ =gBattleMons
|
|
mov r8, r1
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x18
|
|
adds r1, r0
|
|
movs r2, 0x6
|
|
movs r3, 0x7
|
|
mov r10, r3
|
|
_0801BDAA:
|
|
movs r0, 0
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, 0x5
|
|
bgt _0801BDB8
|
|
strb r2, [r1]
|
|
movs r5, 0x5
|
|
str r5, [sp, 0xC]
|
|
_0801BDB8:
|
|
adds r1, 0x1
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
add r10, r0
|
|
mov r3, r10
|
|
cmp r3, 0
|
|
bge _0801BDAA
|
|
ldr r5, [sp, 0xC]
|
|
cmp r5, 0
|
|
bne _0801BDD0
|
|
bl _0801CFA6
|
|
_0801BDD0:
|
|
ldr r0, _0801BDF0 @ =gBattleScripting
|
|
strb r7, [r0, 0x17]
|
|
ldr r0, _0801BDF4 @ =gPotentialItemEffectBattler
|
|
strb r7, [r0]
|
|
ldr r1, _0801BDF8 @ =gActiveBattler
|
|
ldr r0, _0801BDFC @ =gBattlerAttacker
|
|
strb r7, [r0]
|
|
strb r7, [r1]
|
|
ldr r0, _0801BE00 @ =BattleScript_WhiteHerbEnd2
|
|
bl BattleScriptExecute
|
|
bl _0801CFA6
|
|
.align 2, 0
|
|
_0801BDEC: .4byte gBattleMons
|
|
_0801BDF0: .4byte gBattleScripting
|
|
_0801BDF4: .4byte gPotentialItemEffectBattler
|
|
_0801BDF8: .4byte gActiveBattler
|
|
_0801BDFC: .4byte gBattlerAttacker
|
|
_0801BE00: .4byte BattleScript_WhiteHerbEnd2
|
|
_0801BE04:
|
|
ldr r1, _0801BE2C @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
mov r8, r1
|
|
cmp r0, 0
|
|
bne _0801BE18
|
|
bl _0801CFA6
|
|
_0801BE18:
|
|
subs r0, r5, 0x1
|
|
cmp r0, 0x2A
|
|
bls _0801BE22
|
|
bl _0801C952
|
|
_0801BE22:
|
|
lsls r0, 2
|
|
ldr r1, _0801BE30 @ =_0801BE34
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801BE2C: .4byte gBattleMons
|
|
_0801BE30: .4byte _0801BE34
|
|
.align 2, 0
|
|
_0801BE34:
|
|
.4byte _0801BEE0
|
|
.4byte _0801C6C0
|
|
.4byte _0801C784
|
|
.4byte _0801C6F0
|
|
.4byte _0801C724
|
|
.4byte _0801C754
|
|
.4byte _0801BF2C
|
|
.4byte _0801C7C0
|
|
.4byte _0801C7F0
|
|
.4byte _0801C0F8
|
|
.4byte _0801C178
|
|
.4byte _0801C1F4
|
|
.4byte _0801C288
|
|
.4byte _0801C31C
|
|
.4byte _0801C3B0
|
|
.4byte _0801C418
|
|
.4byte _0801C46C
|
|
.4byte _0801C4C0
|
|
.4byte _0801C528
|
|
.4byte _0801C58C
|
|
.4byte _0801C5D8
|
|
.4byte _0801C952
|
|
.4byte _0801C02C
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C91C
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C952
|
|
.4byte _0801C098
|
|
_0801BEE0:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r1, r8
|
|
adds r2, r0, r1
|
|
ldrh r0, [r2, 0x2C]
|
|
ldrh r1, [r2, 0x28]
|
|
lsrs r0, 1
|
|
cmp r1, r0
|
|
bls _0801BEF6
|
|
bl _0801C952
|
|
_0801BEF6:
|
|
cmp r6, 0
|
|
beq _0801BEFE
|
|
bl _0801C952
|
|
_0801BEFE:
|
|
ldr r4, _0801BF24 @ =gBattleMoveDamage
|
|
mov r3, r9
|
|
str r3, [r4]
|
|
ldrh r3, [r2, 0x28]
|
|
mov r5, r9
|
|
adds r0, r3, r5
|
|
ldrh r1, [r2, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801BF14
|
|
subs r0, r1, r3
|
|
str r0, [r4]
|
|
_0801BF14:
|
|
ldr r0, [r4]
|
|
negs r0, r0
|
|
str r0, [r4]
|
|
ldr r0, _0801BF28 @ =BattleScript_ItemHealHP_RemoveItem
|
|
bl BattleScriptExecute
|
|
b _0801C27E
|
|
.align 2, 0
|
|
_0801BF24: .4byte gBattleMoveDamage
|
|
_0801BF28: .4byte BattleScript_ItemHealHP_RemoveItem
|
|
_0801BF2C:
|
|
cmp r6, 0
|
|
beq _0801BF34
|
|
bl _0801C952
|
|
_0801BF34:
|
|
adds r0, r7, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801BF58
|
|
ldr r1, _0801BF50 @ =gBattlerPartyIndexes
|
|
lsls r0, r7, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _0801BF54 @ =gPlayerParty
|
|
b _0801BF66
|
|
.align 2, 0
|
|
_0801BF50: .4byte gBattlerPartyIndexes
|
|
_0801BF54: .4byte gPlayerParty
|
|
_0801BF58:
|
|
ldr r1, _0801BFD4 @ =gBattlerPartyIndexes
|
|
lsls r0, r7, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r1, r0
|
|
ldr r0, _0801BFD8 @ =gEnemyParty
|
|
_0801BF66:
|
|
adds r4, r1, r0
|
|
movs r1, 0
|
|
mov r10, r1
|
|
add r5, sp, 0x4
|
|
_0801BF6E:
|
|
mov r1, r10
|
|
adds r1, 0xD
|
|
adds r0, r4, 0
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
mov r1, r10
|
|
adds r1, 0x11
|
|
adds r0, r4, 0
|
|
bl GetMonData
|
|
strb r0, [r5]
|
|
adds r0, r4, 0
|
|
movs r1, 0x15
|
|
bl GetMonData
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r6, 0
|
|
beq _0801BF9E
|
|
ldrb r0, [r5]
|
|
cmp r0, 0
|
|
beq _0801BFA8
|
|
_0801BF9E:
|
|
movs r2, 0x1
|
|
add r10, r2
|
|
mov r3, r10
|
|
cmp r3, 0x3
|
|
ble _0801BF6E
|
|
_0801BFA8:
|
|
mov r5, r10
|
|
cmp r5, 0x4
|
|
bne _0801BFB2
|
|
bl _0801C952
|
|
_0801BFB2:
|
|
lsls r2, r5, 24
|
|
lsrs r2, 24
|
|
adds r0, r6, 0
|
|
bl CalculatePPWithBonus
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
add r0, sp, 0x4
|
|
ldrb r0, [r0]
|
|
mov r3, r9
|
|
adds r1, r0, r3
|
|
cmp r1, r2
|
|
ble _0801BFDC
|
|
add r0, sp, 0x4
|
|
strb r2, [r0]
|
|
b _0801BFE0
|
|
.align 2, 0
|
|
_0801BFD4: .4byte gBattlerPartyIndexes
|
|
_0801BFD8: .4byte gEnemyParty
|
|
_0801BFDC:
|
|
add r0, sp, 0x4
|
|
strb r1, [r0]
|
|
_0801BFE0:
|
|
ldr r1, _0801C020 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x2
|
|
strb r0, [r1, 0x1]
|
|
strb r6, [r1, 0x2]
|
|
lsrs r0, r6, 8
|
|
strb r0, [r1, 0x3]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x4]
|
|
ldr r0, _0801C024 @ =BattleScript_BerryPPHealEnd2
|
|
bl BattleScriptExecute
|
|
mov r1, r10
|
|
adds r1, 0x9
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
add r5, sp, 0x4
|
|
str r5, [sp]
|
|
movs r0, 0
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
bl BtlController_EmitSetMonData
|
|
ldr r0, _0801C028 @ =gActiveBattler
|
|
ldrb r0, [r0]
|
|
bl MarkBattlerForControllerExec
|
|
movs r0, 0x3
|
|
str r0, [sp, 0xC]
|
|
bl _0801C95A
|
|
.align 2, 0
|
|
_0801C020: .4byte gBattleTextBuff1
|
|
_0801C024: .4byte BattleScript_BerryPPHealEnd2
|
|
_0801C028: .4byte gActiveBattler
|
|
_0801C02C:
|
|
ldr r0, _0801C080 @ =gBattleMons
|
|
movs r1, 0x58
|
|
muls r1, r7
|
|
adds r0, 0x18
|
|
adds r1, r0
|
|
movs r2, 0x6
|
|
movs r3, 0x7
|
|
mov r10, r3
|
|
_0801C03C:
|
|
movs r0, 0
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, 0x5
|
|
bgt _0801C04A
|
|
strb r2, [r1]
|
|
movs r5, 0x5
|
|
str r5, [sp, 0xC]
|
|
_0801C04A:
|
|
adds r1, 0x1
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
add r10, r0
|
|
mov r3, r10
|
|
cmp r3, 0
|
|
bge _0801C03C
|
|
movs r5, 0x8
|
|
mov r10, r5
|
|
ldr r0, [sp, 0xC]
|
|
cmp r0, 0
|
|
bne _0801C066
|
|
bl _0801CFA6
|
|
_0801C066:
|
|
ldr r0, _0801C084 @ =gBattleScripting
|
|
strb r7, [r0, 0x17]
|
|
ldr r0, _0801C088 @ =gPotentialItemEffectBattler
|
|
strb r7, [r0]
|
|
ldr r1, _0801C08C @ =gActiveBattler
|
|
ldr r0, _0801C090 @ =gBattlerAttacker
|
|
strb r7, [r0]
|
|
strb r7, [r1]
|
|
ldr r0, _0801C094 @ =BattleScript_WhiteHerbEnd2
|
|
bl BattleScriptExecute
|
|
bl _0801C952
|
|
.align 2, 0
|
|
_0801C080: .4byte gBattleMons
|
|
_0801C084: .4byte gBattleScripting
|
|
_0801C088: .4byte gPotentialItemEffectBattler
|
|
_0801C08C: .4byte gActiveBattler
|
|
_0801C090: .4byte gBattlerAttacker
|
|
_0801C094: .4byte BattleScript_WhiteHerbEnd2
|
|
_0801C098:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r2, r8
|
|
adds r1, r0, r2
|
|
ldrh r0, [r1, 0x28]
|
|
ldrh r3, [r1, 0x2C]
|
|
cmp r0, r3
|
|
bcc _0801C0AC
|
|
bl _0801C952
|
|
_0801C0AC:
|
|
cmp r6, 0
|
|
beq _0801C0B4
|
|
bl _0801C952
|
|
_0801C0B4:
|
|
ldr r3, _0801C0F0 @ =gBattleMoveDamage
|
|
ldrh r0, [r1, 0x2C]
|
|
lsrs r0, 4
|
|
str r0, [r3]
|
|
cmp r0, 0
|
|
bne _0801C0C4
|
|
movs r0, 0x1
|
|
str r0, [r3]
|
|
_0801C0C4:
|
|
ldrh r2, [r1, 0x28]
|
|
ldr r0, [r3]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r1, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801C0D4
|
|
subs r0, r1, r2
|
|
str r0, [r3]
|
|
_0801C0D4:
|
|
ldr r0, [r3]
|
|
negs r0, r0
|
|
str r0, [r3]
|
|
ldr r0, _0801C0F4 @ =BattleScript_ItemHealHP_End2
|
|
bl BattleScriptExecute
|
|
movs r0, 0x4
|
|
str r0, [sp, 0xC]
|
|
adds r0, r7, 0
|
|
adds r1, r5, 0
|
|
bl sub_80C7208
|
|
bl _0801C952
|
|
.align 2, 0
|
|
_0801C0F0: .4byte gBattleMoveDamage
|
|
_0801C0F4: .4byte BattleScript_ItemHealHP_End2
|
|
_0801C0F8:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
str r1, [sp, 0x18]
|
|
adds r4, r1, 0
|
|
add r4, r8
|
|
ldrh r0, [r4, 0x2C]
|
|
ldrh r1, [r4, 0x28]
|
|
lsrs r0, 1
|
|
cmp r1, r0
|
|
bls _0801C112
|
|
bl _0801C952
|
|
_0801C112:
|
|
cmp r6, 0
|
|
beq _0801C11A
|
|
bl _0801C952
|
|
_0801C11A:
|
|
ldr r1, _0801C170 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x8
|
|
strb r0, [r1, 0x1]
|
|
strb r6, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r5, _0801C174 @ =gBattleMoveDamage
|
|
ldrh r0, [r4, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
str r0, [r5]
|
|
cmp r0, 0
|
|
bne _0801C13E
|
|
movs r0, 0x1
|
|
str r0, [r5]
|
|
_0801C13E:
|
|
ldrh r2, [r4, 0x28]
|
|
ldr r0, [r5]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r4, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801C14E
|
|
subs r0, r1, r2
|
|
str r0, [r5]
|
|
_0801C14E:
|
|
ldr r0, [r5]
|
|
negs r0, r0
|
|
str r0, [r5]
|
|
mov r0, r8
|
|
adds r0, 0x48
|
|
ldr r2, [sp, 0x18]
|
|
adds r0, r2, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0
|
|
bl GetFlavorRelationByPersonality
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bge _0801C16C
|
|
b _0801C2F8
|
|
_0801C16C:
|
|
b _0801C30C
|
|
.align 2, 0
|
|
_0801C170: .4byte gBattleTextBuff1
|
|
_0801C174: .4byte gBattleMoveDamage
|
|
_0801C178:
|
|
movs r0, 0x58
|
|
adds r5, r7, 0
|
|
muls r5, r0
|
|
str r5, [sp, 0x1C]
|
|
add r5, r8
|
|
ldrh r0, [r5, 0x2C]
|
|
ldrh r1, [r5, 0x28]
|
|
lsrs r0, 1
|
|
cmp r1, r0
|
|
bls _0801C190
|
|
bl _0801C952
|
|
_0801C190:
|
|
cmp r6, 0
|
|
beq _0801C198
|
|
bl _0801C952
|
|
_0801C198:
|
|
ldr r1, _0801C1EC @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x8
|
|
strb r0, [r1, 0x1]
|
|
movs r6, 0x1
|
|
strb r6, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r4, _0801C1F0 @ =gBattleMoveDamage
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
str r0, [r4]
|
|
cmp r0, 0
|
|
bne _0801C1BC
|
|
str r6, [r4]
|
|
_0801C1BC:
|
|
ldrh r2, [r5, 0x28]
|
|
ldr r0, [r4]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r5, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801C1CC
|
|
subs r0, r1, r2
|
|
str r0, [r4]
|
|
_0801C1CC:
|
|
ldr r0, [r4]
|
|
negs r0, r0
|
|
str r0, [r4]
|
|
mov r0, r8
|
|
adds r0, 0x48
|
|
ldr r1, [sp, 0x1C]
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
bl GetFlavorRelationByPersonality
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bge _0801C1EA
|
|
b _0801C38A
|
|
_0801C1EA:
|
|
b _0801C3A0
|
|
.align 2, 0
|
|
_0801C1EC: .4byte gBattleTextBuff1
|
|
_0801C1F0: .4byte gBattleMoveDamage
|
|
_0801C1F4:
|
|
movs r0, 0x58
|
|
adds r3, r7, 0
|
|
muls r3, r0
|
|
str r3, [sp, 0x20]
|
|
adds r5, r3, 0
|
|
add r5, r8
|
|
ldrh r0, [r5, 0x2C]
|
|
ldrh r1, [r5, 0x28]
|
|
lsrs r0, 1
|
|
cmp r1, r0
|
|
bls _0801C20C
|
|
b _0801C952
|
|
_0801C20C:
|
|
cmp r6, 0
|
|
beq _0801C212
|
|
b _0801C952
|
|
_0801C212:
|
|
ldr r1, _0801C26C @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x8
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x2
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r4, _0801C270 @ =gBattleMoveDamage
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
str r0, [r4]
|
|
cmp r0, 0
|
|
bne _0801C238
|
|
movs r0, 0x1
|
|
str r0, [r4]
|
|
_0801C238:
|
|
ldrh r2, [r5, 0x28]
|
|
ldr r0, [r4]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r5, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801C248
|
|
subs r0, r1, r2
|
|
str r0, [r4]
|
|
_0801C248:
|
|
ldr r0, [r4]
|
|
negs r0, r0
|
|
str r0, [r4]
|
|
mov r0, r8
|
|
adds r0, 0x48
|
|
ldr r5, [sp, 0x20]
|
|
adds r0, r5, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
bl GetFlavorRelationByPersonality
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bge _0801C278
|
|
ldr r0, _0801C274 @ =BattleScript_BerryConfuseHealEnd2
|
|
bl BattleScriptExecute
|
|
b _0801C27E
|
|
.align 2, 0
|
|
_0801C26C: .4byte gBattleTextBuff1
|
|
_0801C270: .4byte gBattleMoveDamage
|
|
_0801C274: .4byte BattleScript_BerryConfuseHealEnd2
|
|
_0801C278:
|
|
ldr r0, _0801C284 @ =BattleScript_ItemHealHP_RemoveItem
|
|
bl BattleScriptExecute
|
|
_0801C27E:
|
|
movs r0, 0x4
|
|
str r0, [sp, 0xC]
|
|
b _0801C95A
|
|
.align 2, 0
|
|
_0801C284: .4byte BattleScript_ItemHealHP_RemoveItem
|
|
_0801C288:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
str r1, [sp, 0x24]
|
|
adds r5, r1, 0
|
|
add r5, r8
|
|
ldrh r0, [r5, 0x2C]
|
|
ldrh r1, [r5, 0x28]
|
|
lsrs r0, 1
|
|
cmp r1, r0
|
|
bls _0801C2A0
|
|
b _0801C952
|
|
_0801C2A0:
|
|
cmp r6, 0
|
|
beq _0801C2A6
|
|
b _0801C952
|
|
_0801C2A6:
|
|
ldr r1, _0801C300 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x8
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r4, _0801C304 @ =gBattleMoveDamage
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
str r0, [r4]
|
|
cmp r0, 0
|
|
bne _0801C2CC
|
|
movs r0, 0x1
|
|
str r0, [r4]
|
|
_0801C2CC:
|
|
ldrh r2, [r5, 0x28]
|
|
ldr r0, [r4]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r5, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801C2DC
|
|
subs r0, r1, r2
|
|
str r0, [r4]
|
|
_0801C2DC:
|
|
ldr r0, [r4]
|
|
negs r0, r0
|
|
str r0, [r4]
|
|
mov r0, r8
|
|
adds r0, 0x48
|
|
ldr r2, [sp, 0x24]
|
|
adds r0, r2, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x3
|
|
bl GetFlavorRelationByPersonality
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bge _0801C30C
|
|
_0801C2F8:
|
|
ldr r0, _0801C308 @ =BattleScript_BerryConfuseHealEnd2
|
|
bl BattleScriptExecute
|
|
b _0801C312
|
|
.align 2, 0
|
|
_0801C300: .4byte gBattleTextBuff1
|
|
_0801C304: .4byte gBattleMoveDamage
|
|
_0801C308: .4byte BattleScript_BerryConfuseHealEnd2
|
|
_0801C30C:
|
|
ldr r0, _0801C318 @ =BattleScript_ItemHealHP_RemoveItem
|
|
bl BattleScriptExecute
|
|
_0801C312:
|
|
movs r3, 0x4
|
|
str r3, [sp, 0xC]
|
|
b _0801C95A
|
|
.align 2, 0
|
|
_0801C318: .4byte BattleScript_ItemHealHP_RemoveItem
|
|
_0801C31C:
|
|
movs r0, 0x58
|
|
adds r5, r7, 0
|
|
muls r5, r0
|
|
str r5, [sp, 0x28]
|
|
add r5, r8
|
|
ldrh r0, [r5, 0x2C]
|
|
ldrh r1, [r5, 0x28]
|
|
lsrs r0, 1
|
|
cmp r1, r0
|
|
bls _0801C332
|
|
b _0801C952
|
|
_0801C332:
|
|
cmp r6, 0
|
|
beq _0801C338
|
|
b _0801C952
|
|
_0801C338:
|
|
ldr r1, _0801C394 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x8
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x4
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r4, _0801C398 @ =gBattleMoveDamage
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
str r0, [r4]
|
|
cmp r0, 0
|
|
bne _0801C35E
|
|
movs r0, 0x1
|
|
str r0, [r4]
|
|
_0801C35E:
|
|
ldrh r2, [r5, 0x28]
|
|
ldr r0, [r4]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r5, 0x2C]
|
|
cmp r0, r1
|
|
ble _0801C36E
|
|
subs r0, r1, r2
|
|
str r0, [r4]
|
|
_0801C36E:
|
|
ldr r0, [r4]
|
|
negs r0, r0
|
|
str r0, [r4]
|
|
mov r0, r8
|
|
adds r0, 0x48
|
|
ldr r1, [sp, 0x28]
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x4
|
|
bl GetFlavorRelationByPersonality
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bge _0801C3A0
|
|
_0801C38A:
|
|
ldr r0, _0801C39C @ =BattleScript_BerryConfuseHealEnd2
|
|
bl BattleScriptExecute
|
|
b _0801C3A6
|
|
.align 2, 0
|
|
_0801C394: .4byte gBattleTextBuff1
|
|
_0801C398: .4byte gBattleMoveDamage
|
|
_0801C39C: .4byte BattleScript_BerryConfuseHealEnd2
|
|
_0801C3A0:
|
|
ldr r0, _0801C3AC @ =BattleScript_ItemHealHP_RemoveItem
|
|
bl BattleScriptExecute
|
|
_0801C3A6:
|
|
movs r2, 0x4
|
|
str r2, [sp, 0xC]
|
|
b _0801C95A
|
|
.align 2, 0
|
|
_0801C3AC: .4byte BattleScript_ItemHealHP_RemoveItem
|
|
_0801C3B0:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r3, r8
|
|
adds r5, r0, r3
|
|
ldrh r4, [r5, 0x28]
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801C3C8
|
|
b _0801C952
|
|
_0801C3C8:
|
|
cmp r6, 0
|
|
beq _0801C3CE
|
|
b _0801C952
|
|
_0801C3CE:
|
|
movs r0, 0x19
|
|
ldrsb r0, [r5, r0]
|
|
cmp r0, 0xB
|
|
ble _0801C3D8
|
|
b _0801C952
|
|
_0801C3D8:
|
|
ldr r1, _0801C408 @ =gBattleTextBuff1
|
|
movs r2, 0xFD
|
|
strb r2, [r1]
|
|
movs r0, 0x5
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r1, _0801C40C @ =gBattleTextBuff2
|
|
strb r2, [r1]
|
|
strb r6, [r1, 0x1]
|
|
movs r0, 0xD2
|
|
strb r0, [r1, 0x2]
|
|
strb r6, [r1, 0x3]
|
|
subs r0, 0xD3
|
|
strb r0, [r1, 0x4]
|
|
ldr r0, _0801C410 @ =gEffectBattler
|
|
strb r7, [r0]
|
|
ldr r1, _0801C414 @ =gBattleScripting
|
|
movs r0, 0x11
|
|
strb r0, [r1, 0x1A]
|
|
movs r0, 0xF
|
|
b _0801C56C
|
|
.align 2, 0
|
|
_0801C408: .4byte gBattleTextBuff1
|
|
_0801C40C: .4byte gBattleTextBuff2
|
|
_0801C410: .4byte gEffectBattler
|
|
_0801C414: .4byte gBattleScripting
|
|
_0801C418:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r1, r8
|
|
adds r5, r0, r1
|
|
ldrh r4, [r5, 0x28]
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801C430
|
|
b _0801C952
|
|
_0801C430:
|
|
cmp r6, 0
|
|
beq _0801C436
|
|
b _0801C952
|
|
_0801C436:
|
|
movs r0, 0x1A
|
|
ldrsb r0, [r5, r0]
|
|
cmp r0, 0xB
|
|
ble _0801C440
|
|
b _0801C952
|
|
_0801C440:
|
|
ldr r1, _0801C460 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x5
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x2
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r0, _0801C464 @ =gEffectBattler
|
|
strb r7, [r0]
|
|
ldr r1, _0801C468 @ =gBattleScripting
|
|
movs r0, 0x12
|
|
strb r0, [r1, 0x1A]
|
|
movs r0, 0x10
|
|
b _0801C506
|
|
.align 2, 0
|
|
_0801C460: .4byte gBattleTextBuff1
|
|
_0801C464: .4byte gEffectBattler
|
|
_0801C468: .4byte gBattleScripting
|
|
_0801C46C:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r3, r8
|
|
adds r5, r0, r3
|
|
ldrh r4, [r5, 0x28]
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801C484
|
|
b _0801C952
|
|
_0801C484:
|
|
cmp r6, 0
|
|
beq _0801C48A
|
|
b _0801C952
|
|
_0801C48A:
|
|
movs r0, 0x1B
|
|
ldrsb r0, [r5, r0]
|
|
cmp r0, 0xB
|
|
ble _0801C494
|
|
b _0801C952
|
|
_0801C494:
|
|
ldr r1, _0801C4B4 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x5
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r0, _0801C4B8 @ =gEffectBattler
|
|
strb r7, [r0]
|
|
ldr r1, _0801C4BC @ =gBattleScripting
|
|
movs r0, 0x13
|
|
strb r0, [r1, 0x1A]
|
|
movs r0, 0x11
|
|
b _0801C56C
|
|
.align 2, 0
|
|
_0801C4B4: .4byte gBattleTextBuff1
|
|
_0801C4B8: .4byte gEffectBattler
|
|
_0801C4BC: .4byte gBattleScripting
|
|
_0801C4C0:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r1, r8
|
|
adds r5, r0, r1
|
|
ldrh r4, [r5, 0x28]
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801C4D8
|
|
b _0801C952
|
|
_0801C4D8:
|
|
cmp r6, 0
|
|
beq _0801C4DE
|
|
b _0801C952
|
|
_0801C4DE:
|
|
movs r0, 0x1C
|
|
ldrsb r0, [r5, r0]
|
|
cmp r0, 0xB
|
|
ble _0801C4E8
|
|
b _0801C952
|
|
_0801C4E8:
|
|
ldr r1, _0801C518 @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x5
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x4
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r0, _0801C51C @ =gEffectBattler
|
|
strb r7, [r0]
|
|
ldr r1, _0801C520 @ =gBattleScripting
|
|
movs r0, 0x14
|
|
strb r0, [r1, 0x1A]
|
|
movs r0, 0x12
|
|
_0801C506:
|
|
strb r0, [r1, 0x10]
|
|
strb r6, [r1, 0x11]
|
|
ldr r0, _0801C524 @ =BattleScript_BerryStatRaiseEnd2
|
|
bl BattleScriptExecute
|
|
movs r2, 0x5
|
|
str r2, [sp, 0xC]
|
|
b _0801C95A
|
|
.align 2, 0
|
|
_0801C518: .4byte gBattleTextBuff1
|
|
_0801C51C: .4byte gEffectBattler
|
|
_0801C520: .4byte gBattleScripting
|
|
_0801C524: .4byte BattleScript_BerryStatRaiseEnd2
|
|
_0801C528:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
mov r3, r8
|
|
adds r5, r0, r3
|
|
ldrh r4, [r5, 0x28]
|
|
ldrh r0, [r5, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801C540
|
|
b _0801C952
|
|
_0801C540:
|
|
cmp r6, 0
|
|
beq _0801C546
|
|
b _0801C952
|
|
_0801C546:
|
|
movs r0, 0x1D
|
|
ldrsb r0, [r5, r0]
|
|
cmp r0, 0xB
|
|
ble _0801C550
|
|
b _0801C952
|
|
_0801C550:
|
|
ldr r1, _0801C57C @ =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x5
|
|
strb r0, [r1, 0x1]
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r0, _0801C580 @ =gEffectBattler
|
|
strb r7, [r0]
|
|
ldr r1, _0801C584 @ =gBattleScripting
|
|
movs r0, 0x15
|
|
strb r0, [r1, 0x1A]
|
|
movs r0, 0x13
|
|
_0801C56C:
|
|
strb r0, [r1, 0x10]
|
|
strb r6, [r1, 0x11]
|
|
ldr r0, _0801C588 @ =BattleScript_BerryStatRaiseEnd2
|
|
bl BattleScriptExecute
|
|
movs r5, 0x5
|
|
str r5, [sp, 0xC]
|
|
b _0801C95A
|
|
.align 2, 0
|
|
_0801C57C: .4byte gBattleTextBuff1
|
|
_0801C580: .4byte gEffectBattler
|
|
_0801C584: .4byte gBattleScripting
|
|
_0801C588: .4byte BattleScript_BerryStatRaiseEnd2
|
|
_0801C58C:
|
|
movs r0, 0x58
|
|
adds r5, r7, 0
|
|
muls r5, r0
|
|
mov r1, r8
|
|
adds r0, r5, r1
|
|
ldrh r4, [r0, 0x28]
|
|
ldrh r0, [r0, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801C5A6
|
|
b _0801C952
|
|
_0801C5A6:
|
|
cmp r6, 0
|
|
beq _0801C5AC
|
|
b _0801C952
|
|
_0801C5AC:
|
|
mov r0, r8
|
|
adds r0, 0x50
|
|
adds r1, r5, r0
|
|
ldr r2, [r1]
|
|
movs r3, 0x80
|
|
lsls r3, 13
|
|
adds r0, r2, 0
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _0801C5C2
|
|
b _0801C952
|
|
_0801C5C2:
|
|
orrs r2, r3
|
|
str r2, [r1]
|
|
ldr r0, _0801C5D4 @ =BattleScript_BerryFocusEnergyEnd2
|
|
bl BattleScriptExecute
|
|
movs r2, 0x2
|
|
str r2, [sp, 0xC]
|
|
b _0801C95A
|
|
.align 2, 0
|
|
_0801C5D4: .4byte BattleScript_BerryFocusEnergyEnd2
|
|
_0801C5D8:
|
|
cmp r6, 0
|
|
beq _0801C5DE
|
|
b _0801C952
|
|
_0801C5DE:
|
|
movs r0, 0x58
|
|
adds r5, r7, 0
|
|
muls r5, r0
|
|
mov r3, r8
|
|
adds r0, r5, r3
|
|
ldrh r4, [r0, 0x28]
|
|
ldrh r0, [r0, 0x2C]
|
|
mov r1, r9
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
ble _0801C5F8
|
|
b _0801C952
|
|
_0801C5F8:
|
|
movs r0, 0
|
|
mov r10, r0
|
|
adds r0, r5, 0x1
|
|
mov r1, r8
|
|
adds r1, 0x18
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
cmp r0, 0xB
|
|
ble _0801C628
|
|
mov r0, r8
|
|
adds r0, 0x19
|
|
adds r1, r5, r0
|
|
_0801C614:
|
|
adds r1, 0x1
|
|
movs r2, 0x1
|
|
add r10, r2
|
|
mov r3, r10
|
|
cmp r3, 0x4
|
|
bgt _0801C628
|
|
movs r0, 0
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, 0xB
|
|
bgt _0801C614
|
|
_0801C628:
|
|
mov r5, r10
|
|
cmp r5, 0x5
|
|
bne _0801C630
|
|
b _0801C952
|
|
_0801C630:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r4, r0, 0x1
|
|
ldr r5, _0801C6A8 @ =gUnknown_2023BFC
|
|
_0801C638:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x5
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
mov r10, r0
|
|
adds r0, r4
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
cmp r0, 0xC
|
|
beq _0801C638
|
|
ldr r1, _0801C6AC @ =gBattleTextBuff1
|
|
movs r2, 0
|
|
movs r3, 0xFD
|
|
strb r3, [r1]
|
|
movs r0, 0x5
|
|
strb r0, [r1, 0x1]
|
|
mov r0, r10
|
|
adds r0, 0x1
|
|
strb r0, [r1, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x3]
|
|
ldr r0, _0801C6B0 @ =gBattleTextBuff2
|
|
strb r3, [r0]
|
|
strb r2, [r0, 0x1]
|
|
movs r1, 0xD1
|
|
strb r1, [r0, 0x2]
|
|
strb r2, [r0, 0x3]
|
|
strb r2, [r0, 0x4]
|
|
movs r1, 0xD2
|
|
strb r1, [r0, 0x5]
|
|
strb r2, [r0, 0x6]
|
|
subs r1, 0xD3
|
|
strb r1, [r0, 0x7]
|
|
ldr r0, _0801C6B4 @ =gEffectBattler
|
|
strb r7, [r0]
|
|
ldr r1, _0801C6B8 @ =gBattleScripting
|
|
mov r0, r10
|
|
adds r0, 0x21
|
|
strb r0, [r1, 0x1A]
|
|
adds r0, 0x6
|
|
strb r0, [r1, 0x10]
|
|
strb r2, [r1, 0x11]
|
|
ldr r0, _0801C6BC @ =BattleScript_BerryStatRaiseEnd2
|
|
bl BattleScriptExecute
|
|
movs r0, 0x5
|
|
str r0, [sp, 0xC]
|
|
b _0801C95A
|
|
.align 2, 0
|
|
_0801C6A8: .4byte gUnknown_2023BFC
|
|
_0801C6AC: .4byte gBattleTextBuff1
|
|
_0801C6B0: .4byte gBattleTextBuff2
|
|
_0801C6B4: .4byte gEffectBattler
|
|
_0801C6B8: .4byte gBattleScripting
|
|
_0801C6BC: .4byte BattleScript_BerryStatRaiseEnd2
|
|
_0801C6C0:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x4C
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
movs r0, 0x40
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0801C6D8
|
|
b _0801C952
|
|
_0801C6D8:
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
ands r2, r0
|
|
str r2, [r1]
|
|
ldr r0, _0801C6EC @ =BattleScript_BerryCurePrlzEnd2
|
|
bl BattleScriptExecute
|
|
movs r1, 0x1
|
|
str r1, [sp, 0xC]
|
|
b _0801C95A
|
|
.align 2, 0
|
|
_0801C6EC: .4byte BattleScript_BerryCurePrlzEnd2
|
|
_0801C6F0:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x4C
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
movs r0, 0x88
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0801C708
|
|
b _0801C952
|
|
_0801C708:
|
|
ldr r0, _0801C71C @ =0xfffff077
|
|
ands r2, r0
|
|
str r2, [r1]
|
|
ldr r0, _0801C720 @ =BattleScript_BerryCurePsnEnd2
|
|
bl BattleScriptExecute
|
|
movs r2, 0x1
|
|
str r2, [sp, 0xC]
|
|
b _0801C95A
|
|
.align 2, 0
|
|
_0801C71C: .4byte 0xfffff077
|
|
_0801C720: .4byte BattleScript_BerryCurePsnEnd2
|
|
_0801C724:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x4C
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
movs r0, 0x10
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0801C73C
|
|
b _0801C952
|
|
_0801C73C:
|
|
movs r0, 0x11
|
|
negs r0, r0
|
|
ands r2, r0
|
|
str r2, [r1]
|
|
ldr r0, _0801C750 @ =BattleScript_BerryCureBrnEnd2
|
|
bl BattleScriptExecute
|
|
movs r3, 0x1
|
|
str r3, [sp, 0xC]
|
|
b _0801C95A
|
|
.align 2, 0
|
|
_0801C750: .4byte BattleScript_BerryCureBrnEnd2
|
|
_0801C754:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x4C
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
movs r0, 0x20
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0801C76C
|
|
b _0801C952
|
|
_0801C76C:
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r2, r0
|
|
str r2, [r1]
|
|
ldr r0, _0801C780 @ =BattleScript_BerryCureFrzEnd2
|
|
bl BattleScriptExecute
|
|
movs r5, 0x1
|
|
str r5, [sp, 0xC]
|
|
b _0801C95A
|
|
.align 2, 0
|
|
_0801C780: .4byte BattleScript_BerryCureFrzEnd2
|
|
_0801C784:
|
|
movs r0, 0x58
|
|
adds r3, r7, 0
|
|
muls r3, r0
|
|
mov r0, r8
|
|
adds r0, 0x4C
|
|
adds r2, r3, r0
|
|
ldr r1, [r2]
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801C79C
|
|
b _0801C952
|
|
_0801C79C:
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
mov r1, r8
|
|
adds r1, 0x50
|
|
adds r1, r3, r1
|
|
ldr r0, [r1]
|
|
ldr r2, _0801C7B8 @ =0xf7ffffff
|
|
ands r0, r2
|
|
str r0, [r1]
|
|
ldr r0, _0801C7BC @ =BattleScript_BerryCureSlpEnd2
|
|
b _0801C906
|
|
.align 2, 0
|
|
_0801C7B8: .4byte 0xf7ffffff
|
|
_0801C7BC: .4byte BattleScript_BerryCureSlpEnd2
|
|
_0801C7C0:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x50
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
movs r0, 0x7
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0801C7D8
|
|
b _0801C952
|
|
_0801C7D8:
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
ands r2, r0
|
|
str r2, [r1]
|
|
ldr r0, _0801C7EC @ =BattleScript_BerryCureConfusionEnd2
|
|
bl BattleScriptExecute
|
|
movs r1, 0x2
|
|
str r1, [sp, 0xC]
|
|
b _0801C95A
|
|
.align 2, 0
|
|
_0801C7EC: .4byte BattleScript_BerryCureConfusionEnd2
|
|
_0801C7F0:
|
|
movs r0, 0x58
|
|
adds r5, r7, 0
|
|
muls r5, r0
|
|
mov r0, r8
|
|
adds r0, 0x4C
|
|
adds r4, r5, r0
|
|
ldr r2, [r4]
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
bne _0801C816
|
|
mov r0, r8
|
|
adds r0, 0x50
|
|
adds r0, r5, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801C816
|
|
b _0801C952
|
|
_0801C816:
|
|
movs r3, 0
|
|
mov r10, r3
|
|
movs r0, 0x88
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0801C82E
|
|
ldr r0, _0801C8BC @ =gBattleTextBuff1
|
|
ldr r1, _0801C8C0 @ =gStatusConditionString_PoisonJpn
|
|
bl StringCopy
|
|
movs r0, 0x1
|
|
mov r10, r0
|
|
_0801C82E:
|
|
ldr r0, [r4]
|
|
movs r1, 0x7
|
|
mov r9, r1
|
|
ands r0, r1
|
|
mov r6, r8
|
|
adds r6, 0x50
|
|
cmp r0, 0
|
|
beq _0801C854
|
|
adds r2, r5, r6
|
|
ldr r0, [r2]
|
|
ldr r1, _0801C8C4 @ =0xf7ffffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r0, _0801C8BC @ =gBattleTextBuff1
|
|
ldr r1, _0801C8C8 @ =gStatusConditionString_SleepJpn
|
|
bl StringCopy
|
|
movs r2, 0x1
|
|
add r10, r2
|
|
_0801C854:
|
|
ldr r0, [r4]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801C86A
|
|
ldr r0, _0801C8BC @ =gBattleTextBuff1
|
|
ldr r1, _0801C8CC @ =gStatusConditionString_ParalysisJpn
|
|
bl StringCopy
|
|
movs r3, 0x1
|
|
add r10, r3
|
|
_0801C86A:
|
|
ldr r0, [r4]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801C880
|
|
ldr r0, _0801C8BC @ =gBattleTextBuff1
|
|
ldr r1, _0801C8D0 @ =gStatusConditionString_BurnJpn
|
|
bl StringCopy
|
|
movs r0, 0x1
|
|
add r10, r0
|
|
_0801C880:
|
|
ldr r0, [r4]
|
|
movs r1, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801C896
|
|
ldr r0, _0801C8BC @ =gBattleTextBuff1
|
|
ldr r1, _0801C8D4 @ =gStatusConditionString_IceJpn
|
|
bl StringCopy
|
|
movs r1, 0x1
|
|
add r10, r1
|
|
_0801C896:
|
|
adds r0, r5, r6
|
|
ldr r0, [r0]
|
|
mov r2, r9
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0801C8AE
|
|
ldr r0, _0801C8BC @ =gBattleTextBuff1
|
|
ldr r1, _0801C8D8 @ =gStatusConditionString_ConfusionJpn
|
|
bl StringCopy
|
|
movs r3, 0x1
|
|
add r10, r3
|
|
_0801C8AE:
|
|
mov r5, r10
|
|
cmp r5, 0x1
|
|
bgt _0801C8E0
|
|
ldr r1, _0801C8DC @ =gBattleCommunication
|
|
movs r0, 0
|
|
b _0801C8E4
|
|
.align 2, 0
|
|
_0801C8BC: .4byte gBattleTextBuff1
|
|
_0801C8C0: .4byte gStatusConditionString_PoisonJpn
|
|
_0801C8C4: .4byte 0xf7ffffff
|
|
_0801C8C8: .4byte gStatusConditionString_SleepJpn
|
|
_0801C8CC: .4byte gStatusConditionString_ParalysisJpn
|
|
_0801C8D0: .4byte gStatusConditionString_BurnJpn
|
|
_0801C8D4: .4byte gStatusConditionString_IceJpn
|
|
_0801C8D8: .4byte gStatusConditionString_ConfusionJpn
|
|
_0801C8DC: .4byte gBattleCommunication
|
|
_0801C8E0:
|
|
ldr r1, _0801C910 @ =gBattleCommunication
|
|
movs r0, 0x1
|
|
_0801C8E4:
|
|
strb r0, [r1, 0x5]
|
|
ldr r2, _0801C914 @ =gBattleMons
|
|
movs r0, 0x58
|
|
adds r3, r7, 0
|
|
muls r3, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x4C
|
|
adds r0, r3, r0
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
adds r2, 0x50
|
|
adds r3, r2
|
|
ldr r0, [r3]
|
|
subs r1, 0x8
|
|
ands r0, r1
|
|
str r0, [r3]
|
|
ldr r0, _0801C918 @ =BattleScript_BerryCureChosenStatusEnd2
|
|
_0801C906:
|
|
bl BattleScriptExecute
|
|
movs r0, 0x1
|
|
str r0, [sp, 0xC]
|
|
b _0801C95A
|
|
.align 2, 0
|
|
_0801C910: .4byte gBattleCommunication
|
|
_0801C914: .4byte gBattleMons
|
|
_0801C918: .4byte BattleScript_BerryCureChosenStatusEnd2
|
|
_0801C91C:
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x50
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
movs r0, 0xF0
|
|
lsls r0, 12
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0801C952
|
|
ldr r0, _0801C978 @ =0xfff0ffff
|
|
ands r2, r0
|
|
str r2, [r1]
|
|
ldr r0, _0801C97C @ =gBattleTextBuff1
|
|
ldr r1, _0801C980 @ =gStatusConditionString_LoveJpn
|
|
bl StringCopy
|
|
ldr r0, _0801C984 @ =BattleScript_BerryCureChosenStatusEnd2
|
|
bl BattleScriptExecute
|
|
ldr r1, _0801C988 @ =gBattleCommunication
|
|
movs r0, 0
|
|
strb r0, [r1, 0x5]
|
|
movs r1, 0x2
|
|
str r1, [sp, 0xC]
|
|
_0801C952:
|
|
ldr r2, [sp, 0xC]
|
|
cmp r2, 0
|
|
bne _0801C95A
|
|
b _0801CFA6
|
|
_0801C95A:
|
|
ldr r0, _0801C98C @ =gBattleScripting
|
|
strb r7, [r0, 0x17]
|
|
ldr r0, _0801C990 @ =gPotentialItemEffectBattler
|
|
strb r7, [r0]
|
|
ldr r4, _0801C994 @ =gActiveBattler
|
|
ldr r0, _0801C998 @ =gBattlerAttacker
|
|
strb r7, [r0]
|
|
strb r7, [r4]
|
|
ldr r3, [sp, 0xC]
|
|
cmp r3, 0x1
|
|
beq _0801C99C
|
|
cmp r3, 0x3
|
|
beq _0801C9A2
|
|
b _0801CFA6
|
|
.align 2, 0
|
|
_0801C978: .4byte 0xfff0ffff
|
|
_0801C97C: .4byte gBattleTextBuff1
|
|
_0801C980: .4byte gStatusConditionString_LoveJpn
|
|
_0801C984: .4byte BattleScript_BerryCureChosenStatusEnd2
|
|
_0801C988: .4byte gBattleCommunication
|
|
_0801C98C: .4byte gBattleScripting
|
|
_0801C990: .4byte gPotentialItemEffectBattler
|
|
_0801C994: .4byte gActiveBattler
|
|
_0801C998: .4byte gBattlerAttacker
|
|
_0801C99C:
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
b _0801CE08
|
|
_0801C9A2:
|
|
ldr r4, _0801C9F0 @ =gBattleMons
|
|
movs r0, 0x58
|
|
adds r3, r7, 0
|
|
muls r3, r0
|
|
adds r0, r4, 0
|
|
adds r0, 0x50
|
|
adds r0, r3, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 14
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801C9BE
|
|
b _0801CFA6
|
|
_0801C9BE:
|
|
ldr r1, _0801C9F4 @ =gDisableStructs
|
|
lsls r0, r7, 3
|
|
subs r0, r7
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x18]
|
|
lsrs r1, 4
|
|
ldr r2, _0801C9F8 @ =gBitTable
|
|
mov r5, r10
|
|
lsls r0, r5, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0801C9DE
|
|
b _0801CFA6
|
|
_0801C9DE:
|
|
adds r1, r5, r3
|
|
adds r0, r4, 0
|
|
adds r0, 0x24
|
|
adds r1, r0
|
|
add r0, sp, 0x4
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
b _0801CFA6
|
|
.align 2, 0
|
|
_0801C9F0: .4byte gBattleMons
|
|
_0801C9F4: .4byte gDisableStructs
|
|
_0801C9F8: .4byte gBitTable
|
|
_0801C9FC:
|
|
movs r7, 0
|
|
ldr r0, _0801CA2C @ =gBattlersCount
|
|
ldrb r0, [r0]
|
|
cmp r7, r0
|
|
bcc _0801CA08
|
|
b _0801CFA6
|
|
_0801CA08:
|
|
ldr r4, _0801CA30 @ =gLastUsedItem
|
|
ldr r1, _0801CA34 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2E]
|
|
strh r0, [r4]
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0xAF
|
|
bne _0801CA3C
|
|
ldr r1, _0801CA38 @ =gEnigmaBerries
|
|
lsls r0, r7, 3
|
|
subs r0, r7
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r5, [r0, 0x7]
|
|
b _0801CA4C
|
|
.align 2, 0
|
|
_0801CA2C: .4byte gBattlersCount
|
|
_0801CA30: .4byte gLastUsedItem
|
|
_0801CA34: .4byte gBattleMons
|
|
_0801CA38: .4byte gEnigmaBerries
|
|
_0801CA3C:
|
|
ldrh r0, [r4]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldrh r0, [r4]
|
|
bl ItemId_GetHoldEffectParam
|
|
_0801CA4C:
|
|
subs r0, r5, 0x2
|
|
cmp r0, 0x1A
|
|
bls _0801CA54
|
|
b _0801CDF0
|
|
_0801CA54:
|
|
lsls r0, 2
|
|
ldr r1, _0801CA60 @ =_0801CA64
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801CA60: .4byte _0801CA64
|
|
.align 2, 0
|
|
_0801CA64:
|
|
.4byte _0801CAD0
|
|
.4byte _0801CBC0
|
|
.4byte _0801CB0C
|
|
.4byte _0801CB48
|
|
.4byte _0801CB84
|
|
.4byte _0801CDF0
|
|
.4byte _0801CC08
|
|
.4byte _0801CC9C
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CD90
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CDF0
|
|
.4byte _0801CC44
|
|
_0801CAD0:
|
|
ldr r1, _0801CB00 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r1, 0x4C
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801CAE6
|
|
b _0801CDF0
|
|
_0801CAE6:
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
bl BattleScriptPushCursor
|
|
ldr r1, _0801CB04 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801CB08 @ =BattleScript_BerryCureParRet
|
|
str r0, [r1]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0xC]
|
|
b _0801CDF6
|
|
.align 2, 0
|
|
_0801CB00: .4byte gBattleMons
|
|
_0801CB04: .4byte gBattlescriptCurrInstr
|
|
_0801CB08: .4byte BattleScript_BerryCureParRet
|
|
_0801CB0C:
|
|
ldr r1, _0801CB38 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r1, 0x4C
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x88
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801CB22
|
|
b _0801CDF0
|
|
_0801CB22:
|
|
ldr r0, _0801CB3C @ =0xfffff077
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
bl BattleScriptPushCursor
|
|
ldr r1, _0801CB40 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801CB44 @ =BattleScript_BerryCurePsnRet
|
|
str r0, [r1]
|
|
movs r1, 0x1
|
|
str r1, [sp, 0xC]
|
|
b _0801CDF6
|
|
.align 2, 0
|
|
_0801CB38: .4byte gBattleMons
|
|
_0801CB3C: .4byte 0xfffff077
|
|
_0801CB40: .4byte gBattlescriptCurrInstr
|
|
_0801CB44: .4byte BattleScript_BerryCurePsnRet
|
|
_0801CB48:
|
|
ldr r1, _0801CB78 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r1, 0x4C
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801CB5E
|
|
b _0801CDF0
|
|
_0801CB5E:
|
|
movs r0, 0x11
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
bl BattleScriptPushCursor
|
|
ldr r1, _0801CB7C @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801CB80 @ =BattleScript_BerryCureBrnRet
|
|
str r0, [r1]
|
|
movs r2, 0x1
|
|
str r2, [sp, 0xC]
|
|
b _0801CDF6
|
|
.align 2, 0
|
|
_0801CB78: .4byte gBattleMons
|
|
_0801CB7C: .4byte gBattlescriptCurrInstr
|
|
_0801CB80: .4byte BattleScript_BerryCureBrnRet
|
|
_0801CB84:
|
|
ldr r1, _0801CBB4 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r1, 0x4C
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801CB9A
|
|
b _0801CDF0
|
|
_0801CB9A:
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
bl BattleScriptPushCursor
|
|
ldr r1, _0801CBB8 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801CBBC @ =BattleScript_BerryCureFrzRet
|
|
str r0, [r1]
|
|
movs r3, 0x1
|
|
str r3, [sp, 0xC]
|
|
b _0801CDF6
|
|
.align 2, 0
|
|
_0801CBB4: .4byte gBattleMons
|
|
_0801CBB8: .4byte gBattlescriptCurrInstr
|
|
_0801CBBC: .4byte BattleScript_BerryCureFrzRet
|
|
_0801CBC0:
|
|
ldr r2, _0801CBF8 @ =gBattleMons
|
|
movs r0, 0x58
|
|
adds r4, r7, 0
|
|
muls r4, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x4C
|
|
adds r3, r4, r0
|
|
ldr r1, [r3]
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801CBDA
|
|
b _0801CDF0
|
|
_0801CBDA:
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r3]
|
|
adds r2, 0x50
|
|
adds r2, r4, r2
|
|
ldr r0, [r2]
|
|
ldr r1, _0801CBFC @ =0xf7ffffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
bl BattleScriptPushCursor
|
|
ldr r1, _0801CC00 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801CC04 @ =BattleScript_BerryCureSlpRet
|
|
b _0801CD58
|
|
.align 2, 0
|
|
_0801CBF8: .4byte gBattleMons
|
|
_0801CBFC: .4byte 0xf7ffffff
|
|
_0801CC00: .4byte gBattlescriptCurrInstr
|
|
_0801CC04: .4byte BattleScript_BerryCureSlpRet
|
|
_0801CC08:
|
|
ldr r1, _0801CC38 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r1, 0x50
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801CC1E
|
|
b _0801CDF0
|
|
_0801CC1E:
|
|
movs r0, 0x8
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
bl BattleScriptPushCursor
|
|
ldr r1, _0801CC3C @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801CC40 @ =BattleScript_BerryCureConfusionRet
|
|
str r0, [r1]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0xC]
|
|
b _0801CDF6
|
|
.align 2, 0
|
|
_0801CC38: .4byte gBattleMons
|
|
_0801CC3C: .4byte gBattlescriptCurrInstr
|
|
_0801CC40: .4byte BattleScript_BerryCureConfusionRet
|
|
_0801CC44:
|
|
ldr r1, _0801CC80 @ =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r7
|
|
adds r1, 0x50
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0xF0
|
|
lsls r0, 12
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801CC5C
|
|
b _0801CDF0
|
|
_0801CC5C:
|
|
ldr r0, _0801CC84 @ =0xfff0ffff
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
ldr r0, _0801CC88 @ =gBattleTextBuff1
|
|
ldr r1, _0801CC8C @ =gStatusConditionString_LoveJpn
|
|
bl StringCopy
|
|
bl BattleScriptPushCursor
|
|
ldr r1, _0801CC90 @ =gBattleCommunication
|
|
movs r0, 0
|
|
strb r0, [r1, 0x5]
|
|
ldr r1, _0801CC94 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801CC98 @ =BattleScript_BerryCureChosenStatusRet
|
|
str r0, [r1]
|
|
movs r1, 0x2
|
|
str r1, [sp, 0xC]
|
|
b _0801CDF6
|
|
.align 2, 0
|
|
_0801CC80: .4byte gBattleMons
|
|
_0801CC84: .4byte 0xfff0ffff
|
|
_0801CC88: .4byte gBattleTextBuff1
|
|
_0801CC8C: .4byte gStatusConditionString_LoveJpn
|
|
_0801CC90: .4byte gBattleCommunication
|
|
_0801CC94: .4byte gBattlescriptCurrInstr
|
|
_0801CC98: .4byte BattleScript_BerryCureChosenStatusRet
|
|
_0801CC9C:
|
|
ldr r4, _0801CD60 @ =gBattleMons
|
|
movs r0, 0x58
|
|
adds r5, r7, 0
|
|
muls r5, r0
|
|
adds r0, r4, 0
|
|
adds r0, 0x4C
|
|
adds r6, r5, r0
|
|
ldr r2, [r6]
|
|
ldrb r0, [r6]
|
|
cmp r0, 0
|
|
bne _0801CCC4
|
|
adds r0, r4, 0
|
|
adds r0, 0x50
|
|
adds r0, r5, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801CCC4
|
|
b _0801CDF0
|
|
_0801CCC4:
|
|
movs r0, 0x88
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0801CCD4
|
|
ldr r0, _0801CD64 @ =gBattleTextBuff1
|
|
ldr r1, _0801CD68 @ =gStatusConditionString_PoisonJpn
|
|
bl StringCopy
|
|
_0801CCD4:
|
|
ldr r0, [r6]
|
|
movs r2, 0x7
|
|
mov r8, r2
|
|
ands r0, r2
|
|
adds r4, 0x50
|
|
cmp r0, 0
|
|
beq _0801CCF4
|
|
adds r2, r5, r4
|
|
ldr r0, [r2]
|
|
ldr r1, _0801CD6C @ =0xf7ffffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r0, _0801CD64 @ =gBattleTextBuff1
|
|
ldr r1, _0801CD70 @ =gStatusConditionString_SleepJpn
|
|
bl StringCopy
|
|
_0801CCF4:
|
|
ldr r0, [r6]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801CD06
|
|
ldr r0, _0801CD64 @ =gBattleTextBuff1
|
|
ldr r1, _0801CD74 @ =gStatusConditionString_ParalysisJpn
|
|
bl StringCopy
|
|
_0801CD06:
|
|
ldr r0, [r6]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801CD18
|
|
ldr r0, _0801CD64 @ =gBattleTextBuff1
|
|
ldr r1, _0801CD78 @ =gStatusConditionString_BurnJpn
|
|
bl StringCopy
|
|
_0801CD18:
|
|
ldr r0, [r6]
|
|
movs r1, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801CD2A
|
|
ldr r0, _0801CD64 @ =gBattleTextBuff1
|
|
ldr r1, _0801CD7C @ =gStatusConditionString_IceJpn
|
|
bl StringCopy
|
|
_0801CD2A:
|
|
adds r5, r4
|
|
ldr r0, [r5]
|
|
mov r3, r8
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _0801CD3E
|
|
ldr r0, _0801CD64 @ =gBattleTextBuff1
|
|
ldr r1, _0801CD80 @ =gStatusConditionString_ConfusionJpn
|
|
bl StringCopy
|
|
_0801CD3E:
|
|
movs r4, 0
|
|
str r4, [r6]
|
|
ldr r0, [r5]
|
|
movs r1, 0x8
|
|
negs r1, r1
|
|
ands r0, r1
|
|
str r0, [r5]
|
|
bl BattleScriptPushCursor
|
|
ldr r0, _0801CD84 @ =gBattleCommunication
|
|
strb r4, [r0, 0x5]
|
|
ldr r1, _0801CD88 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801CD8C @ =BattleScript_BerryCureChosenStatusRet
|
|
_0801CD58:
|
|
str r0, [r1]
|
|
movs r5, 0x1
|
|
str r5, [sp, 0xC]
|
|
b _0801CDF6
|
|
.align 2, 0
|
|
_0801CD60: .4byte gBattleMons
|
|
_0801CD64: .4byte gBattleTextBuff1
|
|
_0801CD68: .4byte gStatusConditionString_PoisonJpn
|
|
_0801CD6C: .4byte 0xf7ffffff
|
|
_0801CD70: .4byte gStatusConditionString_SleepJpn
|
|
_0801CD74: .4byte gStatusConditionString_ParalysisJpn
|
|
_0801CD78: .4byte gStatusConditionString_BurnJpn
|
|
_0801CD7C: .4byte gStatusConditionString_IceJpn
|
|
_0801CD80: .4byte gStatusConditionString_ConfusionJpn
|
|
_0801CD84: .4byte gBattleCommunication
|
|
_0801CD88: .4byte gBattlescriptCurrInstr
|
|
_0801CD8C: .4byte BattleScript_BerryCureChosenStatusRet
|
|
_0801CD90:
|
|
ldr r0, _0801CDDC @ =gBattleMons
|
|
mov r8, r0
|
|
movs r0, 0x58
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
mov r0, r8
|
|
adds r0, 0x18
|
|
adds r1, r0
|
|
movs r2, 0x6
|
|
movs r3, 0x7
|
|
mov r10, r3
|
|
_0801CDA6:
|
|
movs r0, 0
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, 0x5
|
|
bgt _0801CDB4
|
|
strb r2, [r1]
|
|
movs r5, 0x5
|
|
str r5, [sp, 0xC]
|
|
_0801CDB4:
|
|
adds r1, 0x1
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
add r10, r0
|
|
mov r3, r10
|
|
cmp r3, 0
|
|
bge _0801CDA6
|
|
ldr r5, [sp, 0xC]
|
|
cmp r5, 0
|
|
beq _0801CE34
|
|
ldr r0, _0801CDE0 @ =gBattleScripting
|
|
strb r7, [r0, 0x17]
|
|
ldr r0, _0801CDE4 @ =gPotentialItemEffectBattler
|
|
strb r7, [r0]
|
|
bl BattleScriptPushCursor
|
|
ldr r1, _0801CDE8 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801CDEC @ =BattleScript_WhiteHerbRet
|
|
str r0, [r1]
|
|
b _0801CFA6
|
|
.align 2, 0
|
|
_0801CDDC: .4byte gBattleMons
|
|
_0801CDE0: .4byte gBattleScripting
|
|
_0801CDE4: .4byte gPotentialItemEffectBattler
|
|
_0801CDE8: .4byte gBattlescriptCurrInstr
|
|
_0801CDEC: .4byte BattleScript_WhiteHerbRet
|
|
_0801CDF0:
|
|
ldr r0, [sp, 0xC]
|
|
cmp r0, 0
|
|
beq _0801CE34
|
|
_0801CDF6:
|
|
ldr r0, _0801CE24 @ =gBattleScripting
|
|
strb r7, [r0, 0x17]
|
|
ldr r0, _0801CE28 @ =gPotentialItemEffectBattler
|
|
strb r7, [r0]
|
|
ldr r4, _0801CE2C @ =gActiveBattler
|
|
strb r7, [r4]
|
|
ldrb r1, [r4]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
_0801CE08:
|
|
ldr r1, _0801CE30 @ =gUnknown_2023C30
|
|
adds r0, r1
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r1, 0x28
|
|
movs r2, 0
|
|
movs r3, 0x4
|
|
bl BtlController_EmitSetMonData
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
b _0801CFA6
|
|
.align 2, 0
|
|
_0801CE24: .4byte gBattleScripting
|
|
_0801CE28: .4byte gPotentialItemEffectBattler
|
|
_0801CE2C: .4byte gActiveBattler
|
|
_0801CE30: .4byte gUnknown_2023C30
|
|
_0801CE34:
|
|
adds r0, r7, 0x1
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, _0801CE48 @ =gBattlersCount
|
|
ldrb r0, [r0]
|
|
cmp r7, r0
|
|
bcs _0801CE44
|
|
b _0801CA08
|
|
_0801CE44:
|
|
b _0801CFA6
|
|
.align 2, 0
|
|
_0801CE48: .4byte gBattlersCount
|
|
_0801CE4C:
|
|
ldr r7, _0801CE64 @ =gBattleMoveDamage
|
|
ldr r0, [r7]
|
|
cmp r0, 0
|
|
bne _0801CE56
|
|
b _0801CFA6
|
|
_0801CE56:
|
|
mov r1, r8
|
|
cmp r1, 0x1E
|
|
beq _0801CE68
|
|
cmp r1, 0x3E
|
|
beq _0801CF10
|
|
b _0801CFA6
|
|
.align 2, 0
|
|
_0801CE64: .4byte gBattleMoveDamage
|
|
_0801CE68:
|
|
ldr r0, _0801CEF4 @ =gMoveResultFlags
|
|
ldrb r1, [r0]
|
|
movs r0, 0x29
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801CE76
|
|
b _0801CFA6
|
|
_0801CE76:
|
|
ldr r2, _0801CEF8 @ =gSpecialStatuses
|
|
ldr r4, _0801CEFC @ =gBattlerTarget
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r1, r0, 2
|
|
adds r0, r2, 0
|
|
adds r0, 0x8
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0801CE9C
|
|
adds r0, r2, 0
|
|
adds r0, 0xC
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0801CE9C
|
|
b _0801CFA6
|
|
_0801CE9C:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
movs r1, 0x64
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, r9
|
|
bcs _0801CFA6
|
|
ldr r2, _0801CF00 @ =gBattleMoves
|
|
ldr r0, _0801CF04 @ =gCurrentMove
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r1, [r0, 0x8]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801CFA6
|
|
ldr r2, _0801CF08 @ =gBattleMons
|
|
ldrb r1, [r4]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
adds r0, r2
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
beq _0801CFA6
|
|
ldr r1, _0801CF0C @ =gBattleCommunication
|
|
movs r0, 0x8
|
|
strb r0, [r1, 0x3]
|
|
bl BattleScriptPushCursor
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl SetMoveEffect
|
|
bl BattleScriptPop
|
|
b _0801CFA6
|
|
.align 2, 0
|
|
_0801CEF4: .4byte gMoveResultFlags
|
|
_0801CEF8: .4byte gSpecialStatuses
|
|
_0801CEFC: .4byte gBattlerTarget
|
|
_0801CF00: .4byte gBattleMoves
|
|
_0801CF04: .4byte gCurrentMove
|
|
_0801CF08: .4byte gBattleMons
|
|
_0801CF0C: .4byte gBattleCommunication
|
|
_0801CF10:
|
|
ldr r0, _0801CFB8 @ =gMoveResultFlags
|
|
ldrb r0, [r0]
|
|
movs r5, 0x29
|
|
ands r5, r0
|
|
cmp r5, 0
|
|
bne _0801CFA6
|
|
ldr r1, _0801CFBC @ =gSpecialStatuses
|
|
ldr r4, _0801CFC0 @ =gBattlerTarget
|
|
ldrb r2, [r4]
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r6, r1, 0x4
|
|
adds r0, r6
|
|
ldr r1, [r0]
|
|
cmp r1, 0
|
|
beq _0801CFA6
|
|
ldr r0, _0801CFC4 @ =0x0000ffff
|
|
cmp r1, r0
|
|
beq _0801CFA6
|
|
ldr r0, _0801CFC8 @ =gBattlerAttacker
|
|
ldrb r3, [r0]
|
|
cmp r3, r2
|
|
beq _0801CFA6
|
|
ldr r2, _0801CFCC @ =gBattleMons
|
|
ldrb r1, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x28]
|
|
ldrh r0, [r0, 0x2C]
|
|
cmp r1, r0
|
|
beq _0801CFA6
|
|
cmp r1, 0
|
|
beq _0801CFA6
|
|
ldr r0, _0801CFD0 @ =gLastUsedItem
|
|
mov r2, sp
|
|
ldrh r2, [r2, 0x14]
|
|
strh r2, [r0]
|
|
ldr r0, _0801CFD4 @ =gPotentialItemEffectBattler
|
|
strb r3, [r0]
|
|
ldr r0, _0801CFD8 @ =gBattleScripting
|
|
strb r3, [r0, 0x17]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldr r0, [r0]
|
|
ldr r1, [sp, 0x10]
|
|
bl __divsi3
|
|
negs r0, r0
|
|
str r0, [r7]
|
|
ldrb r1, [r4]
|
|
cmp r0, 0
|
|
bne _0801CF88
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r0, [r7]
|
|
_0801CF88:
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
str r5, [r0]
|
|
bl BattleScriptPushCursor
|
|
ldr r1, _0801CFDC @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801CFE0 @ =BattleScript_ItemHealHP_Ret
|
|
str r0, [r1]
|
|
ldr r0, [sp, 0xC]
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0xC]
|
|
_0801CFA6:
|
|
ldr r0, [sp, 0xC]
|
|
add sp, 0x2C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0801CFB8: .4byte gMoveResultFlags
|
|
_0801CFBC: .4byte gSpecialStatuses
|
|
_0801CFC0: .4byte gBattlerTarget
|
|
_0801CFC4: .4byte 0x0000ffff
|
|
_0801CFC8: .4byte gBattlerAttacker
|
|
_0801CFCC: .4byte gBattleMons
|
|
_0801CFD0: .4byte gLastUsedItem
|
|
_0801CFD4: .4byte gPotentialItemEffectBattler
|
|
_0801CFD8: .4byte gBattleScripting
|
|
_0801CFDC: .4byte gBattlescriptCurrInstr
|
|
_0801CFE0: .4byte BattleScript_ItemHealHP_Ret
|
|
thumb_func_end ItemBattleEffects
|
|
|
|
thumb_func_start ClearFuryCutterDestinyBondGrudge
|
|
ClearFuryCutterDestinyBondGrudge: @ 801CFE4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, _0801D01C @ =gDisableStructs
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r2, 0
|
|
strb r2, [r1, 0x10]
|
|
ldr r1, _0801D020 @ =gBattleMons
|
|
movs r2, 0x58
|
|
adds r3, r0, 0
|
|
muls r3, r2
|
|
adds r1, 0x50
|
|
adds r3, r1
|
|
ldr r1, [r3]
|
|
ldr r2, _0801D024 @ =0xfdffffff
|
|
ands r1, r2
|
|
str r1, [r3]
|
|
ldr r1, _0801D028 @ =gStatuses3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
ldr r2, _0801D02C @ =0xffffbfff
|
|
ands r1, r2
|
|
str r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_0801D01C: .4byte gDisableStructs
|
|
_0801D020: .4byte gBattleMons
|
|
_0801D024: .4byte 0xfdffffff
|
|
_0801D028: .4byte gStatuses3
|
|
_0801D02C: .4byte 0xffffbfff
|
|
thumb_func_end ClearFuryCutterDestinyBondGrudge
|
|
|
|
thumb_func_start HandleAction_RunBattleScript
|
|
HandleAction_RunBattleScript: @ 801D030
|
|
push {lr}
|
|
ldr r0, _0801D050 @ =gBattleControllerExecFlags
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0801D04C
|
|
ldr r1, _0801D054 @ =gUnknown_825011C
|
|
ldr r0, _0801D058 @ =gBattlescriptCurrInstr
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
_0801D04C:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801D050: .4byte gBattleControllerExecFlags
|
|
_0801D054: .4byte gUnknown_825011C
|
|
_0801D058: .4byte gBattlescriptCurrInstr
|
|
thumb_func_end HandleAction_RunBattleScript
|
|
|
|
thumb_func_start GetMoveTarget
|
|
GetMoveTarget: @ 801D05C
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
lsls r1, 24
|
|
lsrs r0, r1, 24
|
|
movs r5, 0
|
|
cmp r0, 0
|
|
beq _0801D07A
|
|
subs r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
b _0801D086
|
|
_0801D07A:
|
|
ldr r1, _0801D098 @ =gBattleMoves
|
|
lsls r0, r7, 1
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r6, [r0, 0x6]
|
|
_0801D086:
|
|
cmp r6, 0x40
|
|
bls _0801D08C
|
|
b _0801D39C
|
|
_0801D08C:
|
|
lsls r0, r6, 2
|
|
ldr r1, _0801D09C @ =_0801D0A0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801D098: .4byte gBattleMoves
|
|
_0801D09C: .4byte _0801D0A0
|
|
.align 2, 0
|
|
_0801D0A0:
|
|
.4byte _0801D1A4
|
|
.4byte _0801D2A4
|
|
.4byte _0801D398
|
|
.4byte _0801D39C
|
|
.4byte _0801D2BC
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D2A4
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D398
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D2A4
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D39C
|
|
.4byte _0801D2A4
|
|
_0801D1A4:
|
|
ldr r0, _0801D284 @ =gBattlerAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, _0801D288 @ =gSideTimers
|
|
lsls r0, r4, 1
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r2, r0, r1
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
beq _0801D1D6
|
|
ldr r1, _0801D28C @ =gBattleMons
|
|
ldrb r4, [r2, 0x9]
|
|
movs r0, 0x58
|
|
muls r0, r4
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
beq _0801D1D6
|
|
b _0801D2EC
|
|
_0801D1D6:
|
|
ldr r0, _0801D284 @ =gBattlerAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r0, r7, 1
|
|
mov r8, r0
|
|
_0801D1E6:
|
|
bl Random
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldr r1, _0801D290 @ =gBattlersCount
|
|
ldrb r1, [r1]
|
|
bl __modsi3
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r6, _0801D284 @ =gBattlerAttacker
|
|
ldrb r3, [r6]
|
|
cmp r5, r3
|
|
beq _0801D1E6
|
|
adds r0, r5, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r4, r0
|
|
beq _0801D1E6
|
|
ldr r0, _0801D294 @ =gAbsentBattlerFlags
|
|
ldrb r2, [r0]
|
|
ldr r1, _0801D298 @ =gBitTable
|
|
lsls r0, r5, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
bne _0801D1E6
|
|
ldr r0, _0801D29C @ =gBattleMoves
|
|
mov r3, r8
|
|
adds r1, r3, r7
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x2]
|
|
cmp r0, 0xD
|
|
beq _0801D234
|
|
b _0801D39C
|
|
_0801D234:
|
|
ldrb r1, [r6]
|
|
str r2, [sp]
|
|
movs r0, 0x10
|
|
movs r2, 0x1F
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801D24A
|
|
b _0801D39C
|
|
_0801D24A:
|
|
ldr r2, _0801D28C @ =gBattleMons
|
|
movs r1, 0x58
|
|
adds r0, r5, 0
|
|
muls r0, r1
|
|
adds r0, r2
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1F
|
|
bne _0801D25E
|
|
b _0801D39C
|
|
_0801D25E:
|
|
movs r4, 0x2
|
|
eors r5, r4
|
|
adds r0, r5, 0
|
|
muls r0, r1
|
|
adds r0, r2
|
|
adds r0, 0x20
|
|
ldrb r1, [r0]
|
|
adds r0, r5, 0
|
|
bl RecordAbilityBattle
|
|
ldr r1, _0801D2A0 @ =gSpecialStatuses
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
orrs r1, r4
|
|
strb r1, [r0]
|
|
b _0801D39C
|
|
.align 2, 0
|
|
_0801D284: .4byte gBattlerAttacker
|
|
_0801D288: .4byte gSideTimers
|
|
_0801D28C: .4byte gBattleMons
|
|
_0801D290: .4byte gBattlersCount
|
|
_0801D294: .4byte gAbsentBattlerFlags
|
|
_0801D298: .4byte gBitTable
|
|
_0801D29C: .4byte gBattleMoves
|
|
_0801D2A0: .4byte gSpecialStatuses
|
|
_0801D2A4:
|
|
ldr r0, _0801D2B8 @ =gBattlerAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerPosition
|
|
adds r1, r0, 0
|
|
movs r2, 0x1
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
eors r0, r2
|
|
b _0801D34E
|
|
.align 2, 0
|
|
_0801D2B8: .4byte gBattlerAttacker
|
|
_0801D2BC:
|
|
ldr r0, _0801D2F0 @ =gBattlerAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r1, _0801D2F4 @ =gSideTimers
|
|
lsls r0, r4, 1
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
adds r2, r0, r1
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
beq _0801D2FC
|
|
ldr r1, _0801D2F8 @ =gBattleMons
|
|
ldrb r4, [r2, 0x9]
|
|
movs r0, 0x58
|
|
muls r0, r4
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
beq _0801D2FC
|
|
_0801D2EC:
|
|
adds r5, r4, 0
|
|
b _0801D39C
|
|
.align 2, 0
|
|
_0801D2F0: .4byte gBattlerAttacker
|
|
_0801D2F4: .4byte gSideTimers
|
|
_0801D2F8: .4byte gBattleMons
|
|
_0801D2FC:
|
|
ldr r0, _0801D330 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r4, 0x1
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0801D378
|
|
movs r0, 0x4
|
|
ands r6, r0
|
|
cmp r6, 0
|
|
beq _0801D378
|
|
ldr r0, _0801D334 @ =gBattlerAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801D33C
|
|
bl Random
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0801D338
|
|
movs r0, 0x1
|
|
b _0801D34E
|
|
.align 2, 0
|
|
_0801D330: .4byte gBattleTypeFlags
|
|
_0801D334: .4byte gBattlerAttacker
|
|
_0801D338:
|
|
movs r0, 0x3
|
|
b _0801D34E
|
|
_0801D33C:
|
|
bl Random
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0801D34C
|
|
movs r0, 0
|
|
b _0801D34E
|
|
_0801D34C:
|
|
movs r0, 0x2
|
|
_0801D34E:
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r0, _0801D370 @ =gAbsentBattlerFlags
|
|
ldrb r1, [r0]
|
|
ldr r2, _0801D374 @ =gBitTable
|
|
lsls r0, r5, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0801D39C
|
|
movs r0, 0x2
|
|
eors r5, r0
|
|
b _0801D39C
|
|
.align 2, 0
|
|
_0801D370: .4byte gAbsentBattlerFlags
|
|
_0801D374: .4byte gBitTable
|
|
_0801D378:
|
|
ldr r0, _0801D394 @ =gBattlerAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBattlerPosition
|
|
adds r1, r0, 0
|
|
movs r2, 0x1
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
eors r0, r2
|
|
bl GetBattlerAtPosition
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
b _0801D39C
|
|
.align 2, 0
|
|
_0801D394: .4byte gBattlerAttacker
|
|
_0801D398:
|
|
ldr r0, _0801D3B8 @ =gBattlerAttacker
|
|
ldrb r5, [r0]
|
|
_0801D39C:
|
|
ldr r0, _0801D3B8 @ =gBattlerAttacker
|
|
ldrb r0, [r0]
|
|
ldr r1, _0801D3BC @ =gBattleStruct
|
|
ldr r1, [r1]
|
|
adds r0, r1
|
|
strb r5, [r0, 0xC]
|
|
adds r0, r5, 0
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0801D3B8: .4byte gBattlerAttacker
|
|
_0801D3BC: .4byte gBattleStruct
|
|
thumb_func_end GetMoveTarget
|
|
|
|
thumb_func_start HasObedientBitSet
|
|
HasObedientBitSet: @ 801D3C0
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0801D406
|
|
ldr r0, _0801D40C @ =gBattlerPartyIndexes
|
|
lsls r4, 1
|
|
adds r5, r4, r0
|
|
ldrh r0, [r5]
|
|
movs r7, 0x64
|
|
muls r0, r7
|
|
ldr r6, _0801D410 @ =gPlayerParty
|
|
adds r0, r6
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
movs r1, 0xCD
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
beq _0801D414
|
|
ldrh r0, [r5]
|
|
muls r0, r7
|
|
adds r0, r6
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
cmp r0, 0x97
|
|
beq _0801D414
|
|
_0801D406:
|
|
movs r0, 0x1
|
|
b _0801D42A
|
|
.align 2, 0
|
|
_0801D40C: .4byte gBattlerPartyIndexes
|
|
_0801D410: .4byte gPlayerParty
|
|
_0801D414:
|
|
ldr r0, _0801D430 @ =gBattlerPartyIndexes
|
|
adds r0, r4, r0
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, _0801D434 @ =gPlayerParty
|
|
adds r0, r1
|
|
movs r1, 0x50
|
|
movs r2, 0
|
|
bl GetMonData
|
|
_0801D42A:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0801D430: .4byte gBattlerPartyIndexes
|
|
_0801D434: .4byte gPlayerParty
|
|
thumb_func_end HasObedientBitSet
|
|
|
|
thumb_func_start IsMonDisobedient
|
|
IsMonDisobedient: @ 801D438
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x10
|
|
movs r6, 0
|
|
ldr r0, _0801D4F8 @ =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, _0801D4FC @ =0x00010002
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801D4F4
|
|
ldr r4, _0801D500 @ =gBattlerAttacker
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0801D4F4
|
|
ldrb r0, [r4]
|
|
bl HasObedientBitSet
|
|
cmp r0, 0
|
|
beq _0801D4BE
|
|
ldr r2, _0801D504 @ =gBattleMons
|
|
ldrb r1, [r4]
|
|
movs r0, 0x58
|
|
muls r1, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x54
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
adds r2, 0x3C
|
|
adds r1, r2
|
|
bl IsOtherTrainer
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0801D4F4
|
|
ldr r0, _0801D508 @ =0x00000827
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801D4F4
|
|
movs r6, 0xA
|
|
ldr r0, _0801D50C @ =0x00000821
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0801D4A2
|
|
movs r6, 0x1E
|
|
_0801D4A2:
|
|
ldr r0, _0801D510 @ =0x00000823
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0801D4B0
|
|
movs r6, 0x32
|
|
_0801D4B0:
|
|
ldr r0, _0801D514 @ =0x00000825
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0801D4BE
|
|
movs r6, 0x46
|
|
_0801D4BE:
|
|
ldr r5, _0801D504 @ =gBattleMons
|
|
ldr r0, _0801D500 @ =gBattlerAttacker
|
|
mov r8, r0
|
|
ldrb r0, [r0]
|
|
movs r7, 0x58
|
|
muls r0, r7
|
|
adds r0, r5
|
|
adds r0, 0x2A
|
|
ldrb r0, [r0]
|
|
cmp r0, r6
|
|
bls _0801D4F4
|
|
bl Random
|
|
movs r1, 0xFF
|
|
ands r1, r0
|
|
mov r2, r8
|
|
ldrb r0, [r2]
|
|
adds r2, r0, 0
|
|
muls r2, r7
|
|
adds r0, r2, r5
|
|
adds r0, 0x2A
|
|
ldrb r0, [r0]
|
|
adds r0, r6
|
|
muls r0, r1
|
|
asrs r4, r0, 8
|
|
cmp r4, r6
|
|
bge _0801D518
|
|
_0801D4F4:
|
|
movs r0, 0
|
|
b _0801D738
|
|
.align 2, 0
|
|
_0801D4F8: .4byte gBattleTypeFlags
|
|
_0801D4FC: .4byte 0x00010002
|
|
_0801D500: .4byte gBattlerAttacker
|
|
_0801D504: .4byte gBattleMons
|
|
_0801D508: .4byte 0x00000827
|
|
_0801D50C: .4byte 0x00000821
|
|
_0801D510: .4byte 0x00000823
|
|
_0801D514: .4byte 0x00000825
|
|
_0801D518:
|
|
ldr r3, _0801D554 @ =gCurrentMove
|
|
ldrh r0, [r3]
|
|
cmp r0, 0x63
|
|
bne _0801D52E
|
|
adds r0, r5, 0
|
|
adds r0, 0x50
|
|
adds r0, r2, r0
|
|
ldr r1, [r0]
|
|
ldr r2, _0801D558 @ =0xff7fffff
|
|
ands r1, r2
|
|
str r1, [r0]
|
|
_0801D52E:
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
muls r0, r7
|
|
adds r1, r5, 0
|
|
adds r1, 0x4C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0801D564
|
|
ldrh r0, [r3]
|
|
cmp r0, 0xAD
|
|
beq _0801D54E
|
|
cmp r0, 0xD6
|
|
bne _0801D564
|
|
_0801D54E:
|
|
ldr r1, _0801D55C @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801D560 @ =BattleScript_IgnoresWhileAsleep
|
|
b _0801D6E2
|
|
.align 2, 0
|
|
_0801D554: .4byte gCurrentMove
|
|
_0801D558: .4byte 0xff7fffff
|
|
_0801D55C: .4byte gBattlescriptCurrInstr
|
|
_0801D560: .4byte BattleScript_IgnoresWhileAsleep
|
|
_0801D564:
|
|
bl Random
|
|
movs r1, 0xFF
|
|
ands r1, r0
|
|
ldr r2, _0801D608 @ =gBattleMons
|
|
ldr r0, _0801D60C @ =gBattlerAttacker
|
|
ldrb r3, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r3
|
|
adds r0, r2
|
|
adds r0, 0x2A
|
|
ldrb r0, [r0]
|
|
adds r0, r6
|
|
muls r0, r1
|
|
asrs r4, r0, 8
|
|
cmp r4, r6
|
|
bge _0801D634
|
|
ldr r0, _0801D610 @ =gCurrentMove
|
|
ldrh r1, [r0]
|
|
movs r0, 0x84
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
beq _0801D634
|
|
ldr r6, _0801D614 @ =gBitTable
|
|
ldr r5, _0801D618 @ =gUnknown_2023D48
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldrb r1, [r0]
|
|
adds r0, r3, 0
|
|
movs r2, 0xFF
|
|
bl CheckMoveLimitations
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0xF
|
|
bne _0801D5B0
|
|
b _0801D6D2
|
|
_0801D5B0:
|
|
ldr r2, _0801D61C @ =gUnknown_2023D49
|
|
mov r8, r2
|
|
movs r7, 0x3
|
|
_0801D5B6:
|
|
bl Random
|
|
ands r0, r7
|
|
mov r1, r8
|
|
strb r0, [r1]
|
|
strb r0, [r5]
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldr r0, [r0]
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
bne _0801D5B6
|
|
ldr r4, _0801D620 @ =gUnknown_2023D4E
|
|
ldr r3, _0801D608 @ =gBattleMons
|
|
ldr r0, _0801D618 @ =gUnknown_2023D48
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
ldr r1, _0801D60C @ =gBattlerAttacker
|
|
ldrb r2, [r1]
|
|
movs r1, 0x58
|
|
muls r1, r2
|
|
adds r0, r1
|
|
adds r3, 0xC
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
strh r0, [r4]
|
|
ldr r1, _0801D624 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801D628 @ =BattleScript_IgnoresAndUsesRandomMove
|
|
str r0, [r1]
|
|
ldrh r0, [r4]
|
|
movs r1, 0
|
|
bl GetMoveTarget
|
|
ldr r1, _0801D62C @ =gBattlerTarget
|
|
strb r0, [r1]
|
|
ldr r2, _0801D630 @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 14
|
|
b _0801D732
|
|
.align 2, 0
|
|
_0801D608: .4byte gBattleMons
|
|
_0801D60C: .4byte gBattlerAttacker
|
|
_0801D610: .4byte gCurrentMove
|
|
_0801D614: .4byte gBitTable
|
|
_0801D618: .4byte gUnknown_2023D48
|
|
_0801D61C: .4byte gUnknown_2023D49
|
|
_0801D620: .4byte gUnknown_2023D4E
|
|
_0801D624: .4byte gBattlescriptCurrInstr
|
|
_0801D628: .4byte BattleScript_IgnoresAndUsesRandomMove
|
|
_0801D62C: .4byte gBattlerTarget
|
|
_0801D630: .4byte gHitMarker
|
|
_0801D634:
|
|
ldr r5, _0801D6B8 @ =gBattleMons
|
|
ldr r2, _0801D6BC @ =gBattlerAttacker
|
|
mov r8, r2
|
|
ldrb r0, [r2]
|
|
movs r7, 0x58
|
|
muls r0, r7
|
|
adds r0, r5
|
|
adds r0, 0x2A
|
|
ldrb r0, [r0]
|
|
subs r0, r6
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
bl Random
|
|
movs r2, 0xFF
|
|
adds r4, r2, 0
|
|
ands r4, r0
|
|
cmp r4, r6
|
|
bge _0801D6CC
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
adds r1, r0, 0
|
|
muls r1, r7
|
|
adds r0, r5, 0
|
|
adds r0, 0x4C
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0801D6CC
|
|
adds r0, r1, r5
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x48
|
|
beq _0801D6CC
|
|
cmp r0, 0xF
|
|
beq _0801D6CC
|
|
movs r2, 0
|
|
ldr r0, _0801D6C0 @ =gBattlersCount
|
|
ldrb r3, [r0]
|
|
adds r7, r0, 0
|
|
cmp r2, r3
|
|
bge _0801D6AA
|
|
ldr r0, [r5, 0x50]
|
|
movs r1, 0x70
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0801D6AA
|
|
adds r1, r5, 0
|
|
adds r1, 0x50
|
|
movs r5, 0x70
|
|
_0801D69A:
|
|
adds r1, 0x58
|
|
adds r2, 0x1
|
|
cmp r2, r3
|
|
bge _0801D6AA
|
|
ldr r0, [r1]
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
beq _0801D69A
|
|
_0801D6AA:
|
|
ldrb r7, [r7]
|
|
cmp r2, r7
|
|
bne _0801D6CC
|
|
ldr r1, _0801D6C4 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801D6C8 @ =BattleScript_IgnoresAndFallsAsleep
|
|
b _0801D6E2
|
|
.align 2, 0
|
|
_0801D6B8: .4byte gBattleMons
|
|
_0801D6BC: .4byte gBattlerAttacker
|
|
_0801D6C0: .4byte gBattlersCount
|
|
_0801D6C4: .4byte gBattlescriptCurrInstr
|
|
_0801D6C8: .4byte BattleScript_IgnoresAndFallsAsleep
|
|
_0801D6CC:
|
|
subs r4, r6
|
|
cmp r4, r6
|
|
blt _0801D6F4
|
|
_0801D6D2:
|
|
bl Random
|
|
ldr r2, _0801D6E8 @ =gBattleCommunication
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
strb r1, [r2, 0x5]
|
|
ldr r1, _0801D6EC @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801D6F0 @ =BattleScript_MoveUsedLoafingAround
|
|
_0801D6E2:
|
|
str r0, [r1]
|
|
movs r0, 0x1
|
|
b _0801D738
|
|
.align 2, 0
|
|
_0801D6E8: .4byte gBattleCommunication
|
|
_0801D6EC: .4byte gBattlescriptCurrInstr
|
|
_0801D6F0: .4byte BattleScript_MoveUsedLoafingAround
|
|
_0801D6F4:
|
|
ldr r4, _0801D744 @ =gBattlerAttacker
|
|
ldrb r1, [r4]
|
|
movs r0, 0x58
|
|
muls r1, r0
|
|
ldr r0, _0801D748 @ =gBattleMons
|
|
adds r1, r0
|
|
movs r0, 0x28
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
str r0, [sp, 0x4]
|
|
ldrb r0, [r4]
|
|
str r0, [sp, 0x8]
|
|
ldrb r0, [r4]
|
|
str r0, [sp, 0xC]
|
|
adds r0, r1, 0
|
|
movs r2, 0x1
|
|
movs r3, 0
|
|
bl CalculateBaseDamage
|
|
ldr r1, _0801D74C @ =gBattleMoveDamage
|
|
str r0, [r1]
|
|
ldr r1, _0801D750 @ =gBattlerTarget
|
|
ldrb r0, [r4]
|
|
strb r0, [r1]
|
|
ldr r1, _0801D754 @ =gBattlescriptCurrInstr
|
|
ldr r0, _0801D758 @ =BattleScript_IgnoresAndHitsItself
|
|
str r0, [r1]
|
|
ldr r2, _0801D75C @ =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 12
|
|
_0801D732:
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
movs r0, 0x2
|
|
_0801D738:
|
|
add sp, 0x10
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0801D744: .4byte gBattlerAttacker
|
|
_0801D748: .4byte gBattleMons
|
|
_0801D74C: .4byte gBattleMoveDamage
|
|
_0801D750: .4byte gBattlerTarget
|
|
_0801D754: .4byte gBattlescriptCurrInstr
|
|
_0801D758: .4byte BattleScript_IgnoresAndHitsItself
|
|
_0801D75C: .4byte gHitMarker
|
|
thumb_func_end IsMonDisobedient
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|