mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-28 04:34:28 +01:00
16487 lines
249 KiB
ArmAsm
16487 lines
249 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
|
|
thumb_func_start sub_8036760
|
|
sub_8036760: @ 8036760
|
|
push {lr}
|
|
bl MoveSaveBlocks_ResetHeap
|
|
bl sub_8056F28
|
|
bl dp11_init
|
|
bl init_uns_table_pokemon_copy
|
|
bl sub_8185F84
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080367CC
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08036798
|
|
bl InitBattle
|
|
b _080367BA
|
|
.pool
|
|
_08036798:
|
|
movs r0, 0x80
|
|
lsls r0, 15
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _080367B4
|
|
bl battle_wireless_setup_if_required_maybe
|
|
ldr r0, =sub_8037ADC
|
|
bl SetMainCallback2
|
|
b _080367BA
|
|
.pool
|
|
_080367B4:
|
|
ldr r0, =intro_end
|
|
bl SetMainCallback2
|
|
_080367BA:
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
b _080367D0
|
|
.pool
|
|
_080367CC:
|
|
bl InitBattle
|
|
_080367D0:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8036760
|
|
|
|
thumb_func_start InitBattle
|
|
InitBattle: @ 80367D4
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
movs r0, 0
|
|
bl SetHBlankCallback
|
|
movs r0, 0
|
|
bl SetVBlankCallback
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r1, 0xC0
|
|
lsls r1, 19
|
|
ldr r2, =0x05006000
|
|
mov r0, sp
|
|
bl CpuSet
|
|
movs r0, 0x4C
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x40
|
|
movs r1, 0xF0
|
|
bl SetGpuReg
|
|
ldr r1, =0x00005051
|
|
movs r0, 0x44
|
|
bl SetGpuReg
|
|
movs r0, 0x48
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldr r0, =gUnknown_02022E24
|
|
movs r2, 0xF0
|
|
strh r2, [r0]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 15
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08036870
|
|
ldr r0, =gPartnerTrainerId
|
|
ldrh r1, [r0]
|
|
ldr r0, =0x00000c03
|
|
cmp r1, r0
|
|
beq _08036870
|
|
ldr r1, =gUnknown_02022E26
|
|
movs r0, 0x9F
|
|
strh r0, [r1]
|
|
ldr r0, =gUnknown_02022E28
|
|
strh r2, [r0]
|
|
ldr r1, =gUnknown_02022E2A
|
|
movs r0, 0x20
|
|
strh r0, [r1]
|
|
b _080368BE
|
|
.pool
|
|
_08036870:
|
|
ldr r0, =gUnknown_02022E26
|
|
ldr r2, =0x00005051
|
|
adds r1, r2, 0
|
|
strh r1, [r0]
|
|
bl dp12_8087EA4
|
|
ldr r0, =gUnknown_02038C28
|
|
movs r3, 0xF0
|
|
movs r5, 0xF0
|
|
lsls r5, 3
|
|
adds r2, r0, r5
|
|
movs r1, 0x4F
|
|
_08036888:
|
|
strh r3, [r0]
|
|
strh r3, [r2]
|
|
adds r2, 0x2
|
|
adds r0, 0x2
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bge _08036888
|
|
movs r1, 0x50
|
|
ldr r4, =gUnknown_0831AC70
|
|
ldr r0, =gUnknown_02038C28
|
|
ldr r3, =0x0000ff10
|
|
movs r5, 0x82
|
|
lsls r5, 4
|
|
adds r2, r0, r5
|
|
adds r0, 0xA0
|
|
_080368A6:
|
|
strh r3, [r0]
|
|
strh r3, [r2]
|
|
adds r2, 0x2
|
|
adds r0, 0x2
|
|
adds r1, 0x1
|
|
cmp r1, 0x9F
|
|
ble _080368A6
|
|
ldr r0, [r4]
|
|
ldr r1, [r4, 0x4]
|
|
ldr r2, [r4, 0x8]
|
|
bl sub_80BA038
|
|
_080368BE:
|
|
bl ResetPaletteFade
|
|
ldr r0, =gUnknown_02022E14
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, =gUnknown_02022E16
|
|
strh r1, [r0]
|
|
ldr r0, =gUnknown_02022E18
|
|
strh r1, [r0]
|
|
ldr r0, =gUnknown_02022E1A
|
|
strh r1, [r0]
|
|
ldr r0, =gUnknown_02022E1C
|
|
strh r1, [r0]
|
|
ldr r0, =gUnknown_02022E1E
|
|
strh r1, [r0]
|
|
ldr r0, =gUnknown_02022E20
|
|
strh r1, [r0]
|
|
ldr r0, =gUnknown_02022E22
|
|
strh r1, [r0]
|
|
bl sub_80B0BD0
|
|
ldr r2, =gUnknown_02022FF0
|
|
strb r0, [r2]
|
|
ldr r4, =gBattleTypeFlags
|
|
ldr r0, [r4]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080368FE
|
|
movs r0, 0x8
|
|
strb r0, [r2]
|
|
_080368FE:
|
|
bl c2_berry_program_update_menu
|
|
bl sub_8035AA4
|
|
bl ResetSpriteData
|
|
bl ResetTasks
|
|
bl sub_8036154
|
|
bl FreeAllSpritePalettes
|
|
ldr r1, =gReservedSpritePaletteCount
|
|
movs r0, 0x4
|
|
strb r0, [r1]
|
|
ldr r0, =vblank_cb_08078BB4
|
|
bl SetVBlankCallback
|
|
bl sub_803269C
|
|
ldr r2, [r4]
|
|
movs r1, 0xA0
|
|
lsls r1, 1
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, r1
|
|
beq _0803693E
|
|
ldr r1, =0x00400040
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, r1
|
|
bne _08036994
|
|
_0803693E:
|
|
ldr r0, =sub_8037458
|
|
bl SetMainCallback2
|
|
b _080369AE
|
|
.pool
|
|
_08036994:
|
|
movs r0, 0x40
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _080369A8
|
|
ldr r0, =sub_8037DF4
|
|
bl SetMainCallback2
|
|
b _080369AE
|
|
.pool
|
|
_080369A8:
|
|
ldr r0, =sub_8036FAC
|
|
bl SetMainCallback2
|
|
_080369AE:
|
|
ldr r5, =gBattleTypeFlags
|
|
ldr r0, [r5]
|
|
ldr r1, =0x01000002
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080369E8
|
|
ldr r4, =gEnemyParty
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r1, [r0]
|
|
adds r0, r4, 0
|
|
movs r2, 0x1
|
|
bl CreateNPCTrainerParty
|
|
ldr r0, [r5]
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080369E4
|
|
movs r1, 0x96
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
ldr r1, =gTrainerBattleOpponent_B
|
|
ldrh r1, [r1]
|
|
movs r2, 0
|
|
bl CreateNPCTrainerParty
|
|
_080369E4:
|
|
bl SetWildMonHeldItem
|
|
_080369E8:
|
|
ldr r1, =gMain
|
|
ldr r2, =0x00000439
|
|
adds r1, r2
|
|
ldrb r0, [r1]
|
|
movs r2, 0x2
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r5, =0x00000ca9
|
|
adds r1, r5
|
|
ldrb r2, [r1]
|
|
movs r0, 0x9
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r4, =gPlayerParty
|
|
movs r0, 0xFA
|
|
lsls r0, 1
|
|
adds r5, r4, r0
|
|
_08036A10:
|
|
adds r0, r4, 0
|
|
movs r1, 0x3
|
|
bl AdjustFriendship
|
|
adds r4, 0x64
|
|
cmp r4, r5
|
|
ble _08036A10
|
|
movs r1, 0
|
|
ldr r0, =gBattleCommunication
|
|
strb r1, [r0]
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end InitBattle
|
|
|
|
thumb_func_start sub_8036A5C
|
|
sub_8036A5C: @ 8036A5C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
movs r6, 0
|
|
mov r9, r6
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
mov r10, r0
|
|
mov r8, r6
|
|
_08036A72:
|
|
movs r0, 0x64
|
|
mov r4, r9
|
|
muls r4, r0
|
|
ldr r0, =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, 0x39
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r7, r0, 16
|
|
adds r0, r4, 0
|
|
movs r1, 0x37
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
cmp r5, 0
|
|
beq _08036AEE
|
|
cmp r5, r10
|
|
beq _08036ABA
|
|
cmp r7, 0
|
|
beq _08036ABA
|
|
cmp r1, 0
|
|
bne _08036ABA
|
|
movs r0, 0x1
|
|
mov r2, r8
|
|
lsls r0, r2
|
|
orrs r6, r0
|
|
lsls r0, r6, 16
|
|
lsrs r6, r0, 16
|
|
_08036ABA:
|
|
cmp r5, 0
|
|
beq _08036AEE
|
|
cmp r7, 0
|
|
beq _08036AD6
|
|
cmp r5, r10
|
|
beq _08036ACA
|
|
cmp r1, 0
|
|
beq _08036AD6
|
|
_08036ACA:
|
|
movs r0, 0x2
|
|
mov r1, r8
|
|
lsls r0, r1
|
|
orrs r6, r0
|
|
lsls r0, r6, 16
|
|
lsrs r6, r0, 16
|
|
_08036AD6:
|
|
cmp r5, 0
|
|
beq _08036AEE
|
|
cmp r5, r10
|
|
beq _08036AEE
|
|
cmp r7, 0
|
|
bne _08036AEE
|
|
movs r0, 0x3
|
|
mov r2, r8
|
|
lsls r0, r2
|
|
orrs r6, r0
|
|
lsls r0, r6, 16
|
|
lsrs r6, r0, 16
|
|
_08036AEE:
|
|
movs r0, 0x2
|
|
add r8, r0
|
|
movs r1, 0x1
|
|
add r9, r1
|
|
mov r2, r9
|
|
cmp r2, 0x5
|
|
ble _08036A72
|
|
ldr r4, =gBattleStruct
|
|
ldr r0, [r4]
|
|
movs r1, 0xC1
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
strb r6, [r0]
|
|
ldr r0, [r4]
|
|
ldr r5, =0x00000183
|
|
adds r0, r5
|
|
lsrs r1, r6, 8
|
|
strb r1, [r0]
|
|
ldr r0, =0x000008d2
|
|
bl FlagGet
|
|
ldr r1, [r4]
|
|
adds r1, r5
|
|
lsls r0, 7
|
|
ldrb r2, [r1]
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8036A5C
|
|
|
|
thumb_func_start sub_8036B44
|
|
sub_8036B44: @ 8036B44
|
|
push {r4-r7,lr}
|
|
ldr r0, =gBattleStruct
|
|
ldr r5, [r0]
|
|
movs r0, 0xC2
|
|
lsls r0, 1
|
|
adds r4, r5, r0
|
|
bl IsEnigmaBerryValid
|
|
cmp r0, 0x1
|
|
bne _08036BC0
|
|
movs r2, 0
|
|
ldr r7, =gSaveBlock1Ptr
|
|
movs r1, 0xC6
|
|
lsls r1, 1
|
|
adds r5, r1
|
|
adds r6, r7, 0
|
|
ldr r3, =0x000031f8
|
|
_08036B66:
|
|
adds r0, r4, r2
|
|
ldr r1, [r6]
|
|
adds r1, r3
|
|
adds r1, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x5
|
|
ble _08036B66
|
|
adds r1, r4, r2
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
movs r2, 0
|
|
adds r3, r5, 0
|
|
ldr r6, =gSaveBlock1Ptr
|
|
ldr r5, =0x00003214
|
|
_08036B86:
|
|
adds r0, r3, r2
|
|
ldr r1, [r6]
|
|
adds r1, r5
|
|
adds r1, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x11
|
|
ble _08036B86
|
|
ldr r0, [r7]
|
|
ldr r1, =0x00003226
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r4, 0x7]
|
|
ldr r0, [r7]
|
|
adds r1, 0x1
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
b _08036C00
|
|
.pool
|
|
_08036BC0:
|
|
movs r0, 0xAF
|
|
bl ItemIdToBerryType
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBerryInfo
|
|
adds r3, r0, 0
|
|
movs r2, 0
|
|
movs r0, 0xC6
|
|
lsls r0, 1
|
|
adds r5, r0
|
|
_08036BD8:
|
|
adds r0, r4, r2
|
|
adds r1, r3, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x5
|
|
ble _08036BD8
|
|
adds r1, r4, r2
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
adds r0, r5, 0
|
|
movs r2, 0
|
|
adds r1, r0, 0
|
|
adds r1, 0x11
|
|
_08036BF4:
|
|
strb r2, [r1]
|
|
subs r1, 0x1
|
|
cmp r1, r0
|
|
bge _08036BF4
|
|
movs r0, 0
|
|
strb r0, [r4, 0x7]
|
|
_08036C00:
|
|
strb r0, [r4, 0x1A]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8036B44
|
|
|
|
thumb_func_start berry_801017C
|
|
berry_801017C: @ 8036C08
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08036C20
|
|
b _08036D4C
|
|
_08036C20:
|
|
bl IsEnigmaBerryValid
|
|
cmp r0, 0x1
|
|
bne _08036CDC
|
|
movs r5, 0
|
|
ldr r3, =gEnigmaBerries
|
|
ldr r0, =gSaveBlock1Ptr
|
|
mov r8, r0
|
|
adds r6, r3, 0
|
|
mov r4, r8
|
|
ldr r2, =0x000031f8
|
|
adds r7, r3, 0
|
|
adds r7, 0x38
|
|
_08036C3A:
|
|
adds r1, r5, r6
|
|
ldr r0, [r4]
|
|
adds r0, r2
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r1, r5, r7
|
|
ldr r0, [r4]
|
|
adds r0, r2
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _08036C3A
|
|
adds r1, r5, r3
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
adds r0, r3, 0
|
|
adds r0, 0x38
|
|
adds r0, r5, r0
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
strb r1, [r0]
|
|
movs r5, 0
|
|
adds r7, r3, 0
|
|
adds r7, 0x8
|
|
ldr r4, =gSaveBlock1Ptr
|
|
ldr r2, =0x00003214
|
|
adds r6, r3, 0
|
|
adds r6, 0x40
|
|
_08036C78:
|
|
adds r1, r5, r7
|
|
ldr r0, [r4]
|
|
adds r0, r2
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r1, r5, r6
|
|
ldr r0, [r4]
|
|
adds r0, r2
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r5, 0x1
|
|
cmp r5, 0x11
|
|
ble _08036C78
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
ldr r2, =0x00003226
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
strb r1, [r3, 0x7]
|
|
ldrb r0, [r0]
|
|
adds r1, r3, 0
|
|
adds r1, 0x3F
|
|
strb r0, [r1]
|
|
mov r4, r8
|
|
ldr r0, [r4]
|
|
ldr r1, =0x00003227
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
strb r1, [r3, 0x1A]
|
|
ldrb r1, [r0]
|
|
adds r0, r3, 0
|
|
adds r0, 0x52
|
|
strb r1, [r0]
|
|
b _08036EA0
|
|
.pool
|
|
_08036CDC:
|
|
movs r0, 0xAF
|
|
bl ItemIdToBerryType
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBerryInfo
|
|
adds r6, r0, 0
|
|
movs r5, 0
|
|
ldr r4, =gEnigmaBerries
|
|
adds r7, r4, 0
|
|
adds r7, 0x38
|
|
adds r3, r4, 0
|
|
_08036CF6:
|
|
adds r1, r5, r4
|
|
adds r2, r6, r5
|
|
ldrb r0, [r2]
|
|
strb r0, [r1]
|
|
adds r1, r5, r7
|
|
ldrb r0, [r2]
|
|
strb r0, [r1]
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _08036CF6
|
|
adds r1, r5, r3
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
adds r0, r3, 0
|
|
adds r0, 0x38
|
|
adds r0, r5, r0
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
strb r1, [r0]
|
|
movs r5, 0
|
|
adds r4, r3, 0
|
|
adds r4, 0x8
|
|
movs r1, 0
|
|
adds r2, r3, 0
|
|
adds r2, 0x40
|
|
_08036D28:
|
|
adds r0, r5, r4
|
|
strb r1, [r0]
|
|
adds r0, r5, r2
|
|
strb r1, [r0]
|
|
adds r5, 0x1
|
|
cmp r5, 0x11
|
|
ble _08036D28
|
|
movs r1, 0
|
|
strb r1, [r3, 0x7]
|
|
adds r0, r3, 0
|
|
adds r0, 0x3F
|
|
strb r1, [r0]
|
|
strb r1, [r3, 0x1A]
|
|
adds r0, 0x13
|
|
strb r1, [r0]
|
|
b _08036EA0
|
|
.pool
|
|
_08036D4C:
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08036DF0
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
ands r1, r0
|
|
movs r2, 0x4
|
|
mov r8, r2
|
|
cmp r1, 0
|
|
beq _08036D66
|
|
movs r4, 0x2
|
|
mov r8, r4
|
|
_08036D66:
|
|
movs r5, 0
|
|
cmp r5, r8
|
|
blt _08036D6E
|
|
b _08036EA0
|
|
_08036D6E:
|
|
ldr r0, =gLinkPlayers
|
|
mov r12, r0
|
|
ldr r3, =gEnigmaBerries
|
|
adds r6, r3, 0
|
|
movs r1, 0x8
|
|
adds r1, r6
|
|
mov r9, r1
|
|
_08036D7C:
|
|
lsls r1, r5, 8
|
|
ldr r0, =gUnknown_020223C8
|
|
adds r7, r1, r0
|
|
lsls r0, r5, 3
|
|
subs r0, r5
|
|
lsls r0, 2
|
|
add r0, r12
|
|
ldrb r3, [r0, 0x18]
|
|
movs r4, 0
|
|
adds r5, 0x1
|
|
mov r10, r5
|
|
lsls r1, r3, 3
|
|
subs r0, r1, r3
|
|
adds r5, r1, 0
|
|
lsls r0, 2
|
|
adds r1, r0, r6
|
|
_08036D9C:
|
|
adds r0, r7, r4
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r1, 0x1
|
|
adds r4, 0x1
|
|
cmp r4, 0x5
|
|
ble _08036D9C
|
|
subs r0, r5, r3
|
|
lsls r0, 2
|
|
adds r1, r4, r0
|
|
adds r1, r6
|
|
movs r2, 0xFF
|
|
strb r2, [r1]
|
|
movs r4, 0
|
|
mov r2, r9
|
|
adds r1, r0, r2
|
|
adds r2, r7, 0
|
|
adds r2, 0x8
|
|
_08036DC0:
|
|
adds r0, r2, r4
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r1, 0x1
|
|
adds r4, 0x1
|
|
cmp r4, 0x11
|
|
ble _08036DC0
|
|
subs r0, r5, r3
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldrb r1, [r7, 0x7]
|
|
strb r1, [r0, 0x7]
|
|
ldrb r1, [r7, 0x1A]
|
|
strb r1, [r0, 0x1A]
|
|
mov r5, r10
|
|
cmp r5, r8
|
|
blt _08036D7C
|
|
b _08036EA0
|
|
.pool
|
|
_08036DF0:
|
|
movs r5, 0
|
|
ldr r4, =gEnigmaBerries
|
|
mov r9, r4
|
|
_08036DF6:
|
|
lsls r0, r5, 8
|
|
ldr r1, =gUnknown_020223C8
|
|
adds r7, r0, r1
|
|
movs r4, 0
|
|
adds r2, r5, 0x1
|
|
mov r10, r2
|
|
lsls r0, r5, 3
|
|
mov r8, r0
|
|
adds r1, r5, 0x2
|
|
mov r12, r1
|
|
subs r1, r0, r5
|
|
mov r2, r12
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
mov r2, r9
|
|
adds r3, r0, r2
|
|
lsls r1, 2
|
|
adds r2, r1, r2
|
|
_08036E1C:
|
|
adds r0, r7, r4
|
|
ldrb r1, [r0]
|
|
strb r1, [r2]
|
|
ldrb r0, [r0]
|
|
strb r0, [r3]
|
|
adds r3, 0x1
|
|
adds r2, 0x1
|
|
adds r4, 0x1
|
|
cmp r4, 0x5
|
|
ble _08036E1C
|
|
mov r0, r8
|
|
subs r3, r0, r5
|
|
lsls r3, 2
|
|
adds r1, r4, r3
|
|
add r1, r9
|
|
ldrb r0, [r1]
|
|
movs r2, 0xFF
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
mov r0, r12
|
|
lsls r2, r0, 3
|
|
subs r2, r0
|
|
lsls r2, 2
|
|
adds r1, r4, r2
|
|
add r1, r9
|
|
ldrb r0, [r1]
|
|
movs r4, 0xFF
|
|
orrs r0, r4
|
|
strb r0, [r1]
|
|
movs r4, 0
|
|
ldr r0, =gEnigmaBerries
|
|
adds r0, 0x8
|
|
adds r2, r0
|
|
adds r3, r0
|
|
adds r6, r7, 0
|
|
adds r6, 0x8
|
|
_08036E64:
|
|
adds r0, r6, r4
|
|
ldrb r1, [r0]
|
|
strb r1, [r3]
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
adds r2, 0x1
|
|
adds r3, 0x1
|
|
adds r4, 0x1
|
|
cmp r4, 0x11
|
|
ble _08036E64
|
|
mov r0, r8
|
|
subs r2, r0, r5
|
|
lsls r2, 2
|
|
add r2, r9
|
|
ldrb r0, [r7, 0x7]
|
|
strb r0, [r2, 0x7]
|
|
mov r1, r12
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
add r0, r9
|
|
ldrb r1, [r7, 0x7]
|
|
strb r1, [r0, 0x7]
|
|
ldrb r1, [r7, 0x1A]
|
|
strb r1, [r2, 0x1A]
|
|
ldrb r1, [r7, 0x1A]
|
|
strb r1, [r0, 0x1A]
|
|
mov r5, r10
|
|
cmp r5, 0x1
|
|
ble _08036DF6
|
|
_08036EA0:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end berry_801017C
|
|
|
|
thumb_func_start sub_8036EB8
|
|
sub_8036EB8: @ 8036EB8
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 24
|
|
lsrs r3, r1, 24
|
|
movs r6, 0
|
|
ldr r0, =gUnknown_020223C4
|
|
ldrh r2, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
mov r12, r0
|
|
cmp r2, r1
|
|
bne _08036EFC
|
|
cmp r3, 0
|
|
bne _08036EEC
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r2, 0xC
|
|
b _08036EF2
|
|
.pool
|
|
_08036EEC:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r2, 0x8
|
|
_08036EF2:
|
|
orrs r1, r2
|
|
str r1, [r0]
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_08036EFC:
|
|
cmp r6, 0
|
|
bne _08036FA0
|
|
movs r2, 0
|
|
cmp r2, r4
|
|
bge _08036F20
|
|
ldr r1, =gUnknown_020223C4
|
|
mov r8, r1
|
|
movs r5, 0x80
|
|
lsls r5, 1
|
|
_08036F0E:
|
|
adds r1, r5
|
|
adds r2, 0x1
|
|
cmp r2, r4
|
|
bge _08036F20
|
|
mov r7, r8
|
|
ldrh r0, [r7]
|
|
ldrh r7, [r1]
|
|
cmp r0, r7
|
|
beq _08036F0E
|
|
_08036F20:
|
|
cmp r2, r4
|
|
bne _08036F48
|
|
cmp r3, 0
|
|
bne _08036F38
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r2, 0xC
|
|
b _08036F3E
|
|
.pool
|
|
_08036F38:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r2, 0x8
|
|
_08036F3E:
|
|
orrs r1, r2
|
|
str r1, [r0]
|
|
adds r0, r6, 0x1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
_08036F48:
|
|
cmp r6, 0
|
|
bne _08036FA0
|
|
movs r2, 0
|
|
ldr r5, =gBattleTypeFlags
|
|
cmp r2, r4
|
|
bge _08036F8A
|
|
mov r0, r12
|
|
ldrh r1, [r0]
|
|
movs r0, 0xC0
|
|
lsls r0, 2
|
|
cmp r1, r0
|
|
beq _08036F82
|
|
_08036F60:
|
|
lsls r0, r2, 8
|
|
add r0, r12
|
|
ldrh r0, [r0]
|
|
movs r1, 0xC0
|
|
lsls r1, 2
|
|
cmp r0, r1
|
|
bls _08036F72
|
|
cmp r2, r3
|
|
bne _08036F8A
|
|
_08036F72:
|
|
adds r2, 0x1
|
|
cmp r2, r4
|
|
bge _08036F8A
|
|
lsls r0, r2, 8
|
|
add r0, r12
|
|
ldrh r0, [r0]
|
|
cmp r0, r1
|
|
bne _08036F60
|
|
_08036F82:
|
|
cmp r2, r3
|
|
beq _08036F60
|
|
cmp r2, r3
|
|
bge _08036F60
|
|
_08036F8A:
|
|
cmp r2, r4
|
|
bne _08036F98
|
|
ldr r0, [r5]
|
|
movs r1, 0xC
|
|
b _08036F9C
|
|
.pool
|
|
_08036F98:
|
|
ldr r0, [r5]
|
|
movs r1, 0x8
|
|
_08036F9C:
|
|
orrs r0, r1
|
|
str r0, [r5]
|
|
_08036FA0:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8036EB8
|
|
|
|
thumb_func_start sub_8036FAC
|
|
sub_8036FAC: @ 8036FAC
|
|
push {r4-r6,lr}
|
|
bl RunTasks
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
bl GetMultiplayerId
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, =gBattleScripting
|
|
adds r0, 0x25
|
|
strb r6, [r0]
|
|
movs r0, 0x1
|
|
adds r5, r6, 0
|
|
eors r5, r0
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x12
|
|
bls _08036FD8
|
|
b _0803744C
|
|
_08036FD8:
|
|
lsls r0, 2
|
|
ldr r1, =_08036FF0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_08036FF0:
|
|
.4byte _0803703C
|
|
.4byte _08037080
|
|
.4byte _08037144
|
|
.4byte _080371D8
|
|
.4byte _08037200
|
|
.4byte _0803742C
|
|
.4byte _08037438
|
|
.4byte _08037230
|
|
.4byte _08037258
|
|
.4byte _0803742C
|
|
.4byte _08037438
|
|
.4byte _08037288
|
|
.4byte _080372B0
|
|
.4byte _0803742C
|
|
.4byte _08037438
|
|
.4byte _08037318
|
|
.4byte _08037378
|
|
.4byte _080373A0
|
|
.4byte _080373E0
|
|
_0803703C:
|
|
bl IsDma3ManagerBusyWithBgCopy
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08037068
|
|
movs r0, 0
|
|
bl ShowBg
|
|
movs r0, 0x1
|
|
bl ShowBg
|
|
movs r0, 0x2
|
|
bl ShowBg
|
|
movs r0, 0x3
|
|
bl ShowBg
|
|
bl sub_805EF14
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_08037068:
|
|
ldr r0, =gLinkVSyncDisabled
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08037072
|
|
b _0803744C
|
|
_08037072:
|
|
bl sub_800E0E8
|
|
b _0803744C
|
|
.pool
|
|
_08037080:
|
|
ldr r2, =gBattleTypeFlags
|
|
ldr r1, [r2]
|
|
movs r6, 0x2
|
|
adds r0, r1, 0
|
|
ands r0, r6
|
|
cmp r0, 0
|
|
beq _08037124
|
|
ldr r0, =gUnknown_03003124
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08037098
|
|
b _0803744C
|
|
_08037098:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080370EE
|
|
ldr r4, =gBattleStruct
|
|
ldr r0, [r4]
|
|
movs r5, 0xC0
|
|
lsls r5, 1
|
|
adds r0, r5
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
ldr r0, [r4]
|
|
ldr r2, =0x00000181
|
|
adds r1, r0, r2
|
|
movs r0, 0x3
|
|
strb r0, [r1]
|
|
bl sub_8036A5C
|
|
bl sub_8036B44
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r1, [r0]
|
|
movs r0, 0xC0
|
|
lsls r0, 4
|
|
cmp r1, r0
|
|
bne _080370D8
|
|
ldr r0, =gLinkPlayers
|
|
movs r1, 0
|
|
strh r1, [r0, 0x18]
|
|
movs r1, 0x1
|
|
strh r1, [r0, 0x34]
|
|
_080370D8:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, [r4]
|
|
adds r1, r5
|
|
movs r2, 0x20
|
|
bl link_0800A448
|
|
ldr r0, =gBattleCommunication
|
|
strb r6, [r0]
|
|
_080370EE:
|
|
ldr r0, =gLinkVSyncDisabled
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _080370F8
|
|
b _0803744C
|
|
_080370F8:
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_800DFB4
|
|
b _0803744C
|
|
.pool
|
|
_08037124:
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08037134
|
|
movs r0, 0x4
|
|
orrs r1, r0
|
|
str r1, [r2]
|
|
_08037134:
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0xF
|
|
strb r0, [r1]
|
|
bl berry_801017C
|
|
b _0803744C
|
|
.pool
|
|
_08037144:
|
|
bl sub_800A550
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
beq _08037152
|
|
b _0803744C
|
|
_08037152:
|
|
bl sub_800A5B4
|
|
movs r0, 0x2
|
|
adds r1, r6, 0
|
|
bl sub_8036EB8
|
|
bl berry_801017C
|
|
ldr r0, =task00_0800F6FC
|
|
movs r1, 0
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gTasks
|
|
lsls r2, r0, 2
|
|
adds r2, r0
|
|
lsls r2, 3
|
|
adds r2, r1
|
|
movs r1, 0
|
|
movs r0, 0x87
|
|
lsls r0, 1
|
|
strh r0, [r2, 0xA]
|
|
movs r0, 0x5A
|
|
strh r0, [r2, 0xC]
|
|
strh r1, [r2, 0x12]
|
|
ldr r0, =gBattleStruct
|
|
ldr r3, [r0]
|
|
movs r4, 0xC1
|
|
lsls r4, 1
|
|
adds r0, r3, r4
|
|
ldrb r1, [r0]
|
|
adds r4, 0x1
|
|
adds r0, r3, r4
|
|
ldrb r0, [r0]
|
|
lsls r0, 8
|
|
orrs r1, r0
|
|
strh r1, [r2, 0xE]
|
|
ldr r1, =gUnknown_020223C4
|
|
lsls r4, r5, 8
|
|
adds r1, 0x2
|
|
adds r4, r1
|
|
ldrh r0, [r4]
|
|
strh r0, [r2, 0x10]
|
|
lsls r0, r6, 8
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
bl sub_8185F90
|
|
ldrh r0, [r4]
|
|
bl sub_8185F90
|
|
bl sub_8068AA4
|
|
ldr r1, =gBattleCommunication
|
|
b _08037446
|
|
.pool
|
|
_080371D8:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080371E4
|
|
b _0803744C
|
|
_080371E4:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gPlayerParty
|
|
movs r2, 0xC8
|
|
bl link_0800A448
|
|
ldr r1, =gBattleCommunication
|
|
b _08037446
|
|
.pool
|
|
_08037200:
|
|
bl sub_800A550
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
beq _0803720E
|
|
b _0803744C
|
|
_0803720E:
|
|
bl sub_800A5B4
|
|
ldr r0, =gEnemyParty
|
|
lsls r1, r5, 8
|
|
ldr r2, =gUnknown_020223C4
|
|
adds r1, r2
|
|
movs r2, 0xC8
|
|
bl memcpy
|
|
ldr r1, =gBattleCommunication
|
|
b _08037446
|
|
.pool
|
|
_08037230:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803723C
|
|
b _0803744C
|
|
_0803723C:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gPlayerParty + 200
|
|
movs r2, 0xC8
|
|
bl link_0800A448
|
|
ldr r1, =gBattleCommunication
|
|
b _08037446
|
|
.pool
|
|
_08037258:
|
|
bl sub_800A550
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
beq _08037266
|
|
b _0803744C
|
|
_08037266:
|
|
bl sub_800A5B4
|
|
ldr r0, =gEnemyParty + 200
|
|
lsls r1, r5, 8
|
|
ldr r2, =gUnknown_020223C4
|
|
adds r1, r2
|
|
movs r2, 0xC8
|
|
bl memcpy
|
|
ldr r1, =gBattleCommunication
|
|
b _08037446
|
|
.pool
|
|
_08037288:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08037294
|
|
b _0803744C
|
|
_08037294:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gPlayerParty + 400
|
|
movs r2, 0xC8
|
|
bl link_0800A448
|
|
ldr r1, =gBattleCommunication
|
|
b _08037446
|
|
.pool
|
|
_080372B0:
|
|
bl sub_800A550
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
beq _080372BE
|
|
b _0803744C
|
|
_080372BE:
|
|
bl sub_800A5B4
|
|
ldr r4, =gEnemyParty + 400
|
|
lsls r1, r5, 8
|
|
ldr r0, =gUnknown_020223C4
|
|
adds r1, r0
|
|
adds r0, r4, 0
|
|
movs r2, 0xC8
|
|
bl memcpy
|
|
ldr r1, =0xfffffe70
|
|
adds r0, r4, r1
|
|
bl shedinja_something
|
|
ldr r2, =0xfffffed4
|
|
adds r0, r4, r2
|
|
bl shedinja_something
|
|
adds r0, r4, 0
|
|
subs r0, 0xC8
|
|
bl shedinja_something
|
|
adds r0, r4, 0
|
|
subs r0, 0x64
|
|
bl shedinja_something
|
|
adds r0, r4, 0
|
|
bl shedinja_something
|
|
adds r0, r4, 0
|
|
adds r0, 0x64
|
|
bl shedinja_something
|
|
ldr r1, =gBattleCommunication
|
|
b _08037446
|
|
.pool
|
|
_08037318:
|
|
bl sub_8032768
|
|
bl sub_8184E58
|
|
ldr r2, =gBattleCommunication
|
|
movs r0, 0
|
|
strb r0, [r2, 0x1]
|
|
strb r0, [r2, 0x2]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08037372
|
|
movs r3, 0
|
|
ldr r1, =gLinkPlayers
|
|
ldrb r0, [r1]
|
|
adds r5, r2, 0
|
|
cmp r0, 0x3
|
|
bne _08037356
|
|
movs r4, 0xFF
|
|
adds r2, r1, 0
|
|
_08037344:
|
|
adds r2, 0x1C
|
|
adds r3, 0x1
|
|
cmp r3, 0x1
|
|
bgt _08037356
|
|
ldrh r1, [r2]
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
cmp r0, 0x3
|
|
beq _08037344
|
|
_08037356:
|
|
cmp r3, 0x2
|
|
bne _0803736C
|
|
movs r0, 0x10
|
|
strb r0, [r5]
|
|
b _0803744C
|
|
.pool
|
|
_0803736C:
|
|
movs r0, 0x12
|
|
strb r0, [r5]
|
|
b _0803744C
|
|
_08037372:
|
|
movs r0, 0x12
|
|
strb r0, [r2]
|
|
b _0803744C
|
|
_08037378:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803744C
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gUnknown_0203BD2C
|
|
movs r2, 0x4
|
|
bl link_0800A448
|
|
ldr r1, =gBattleCommunication
|
|
b _08037446
|
|
.pool
|
|
_080373A0:
|
|
bl sub_800A550
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
bne _0803744C
|
|
bl sub_800A5B4
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080373CA
|
|
ldr r0, =gUnknown_0203BD2C
|
|
lsls r1, r5, 8
|
|
ldr r2, =gUnknown_020223C4
|
|
adds r1, r2
|
|
movs r2, 0x4
|
|
bl memcpy
|
|
_080373CA:
|
|
ldr r1, =gBattleCommunication
|
|
b _08037446
|
|
.pool
|
|
_080373E0:
|
|
ldr r0, =gUnknown_02024333
|
|
adds r1, r0, 0x1
|
|
bl battle_load_something
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803744C
|
|
ldr r2, =gUnknown_03005D00
|
|
ldr r1, =gMain
|
|
ldr r0, [r1]
|
|
str r0, [r2]
|
|
ldr r0, =sub_8039EF0
|
|
str r0, [r1]
|
|
ldr r0, =sub_8038420
|
|
bl SetMainCallback2
|
|
ldr r2, =gBattleTypeFlags
|
|
ldr r1, [r2]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803744C
|
|
movs r0, 0x20
|
|
orrs r1, r0
|
|
str r1, [r2]
|
|
b _0803744C
|
|
.pool
|
|
_0803742C:
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r1, [r0]
|
|
adds r1, 0x1
|
|
strb r1, [r0]
|
|
movs r1, 0x1
|
|
strb r1, [r0, 0x1]
|
|
_08037438:
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1, 0x1]
|
|
subs r0, 0x1
|
|
strb r0, [r1, 0x1]
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803744C
|
|
_08037446:
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
_0803744C:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8036FAC
|
|
|
|
thumb_func_start sub_8037458
|
|
sub_8037458: @ 8037458
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
bl RunTasks
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
bl GetMultiplayerId
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, =gBattleScripting
|
|
adds r0, 0x25
|
|
strb r6, [r0]
|
|
movs r0, 0x1
|
|
adds r7, r6, 0
|
|
eors r7, r0
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x10
|
|
bls _08037486
|
|
b _080379D6
|
|
_08037486:
|
|
lsls r0, 2
|
|
ldr r1, =_0803749C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_0803749C:
|
|
.4byte _080374E0
|
|
.4byte _08037518
|
|
.4byte _0803761C
|
|
.4byte _08037670
|
|
.4byte _08037694
|
|
.4byte _08037710
|
|
.4byte _08037734
|
|
.4byte _080377B0
|
|
.4byte _080377CC
|
|
.4byte _080377FC
|
|
.4byte _08037818
|
|
.4byte _08037848
|
|
.4byte _08037864
|
|
.4byte _08037908
|
|
.4byte _0803793A
|
|
.4byte _0803795C
|
|
.4byte _080379A0
|
|
_080374E0:
|
|
bl IsDma3ManagerBusyWithBgCopy
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803750C
|
|
movs r0, 0
|
|
bl ShowBg
|
|
movs r0, 0x1
|
|
bl ShowBg
|
|
movs r0, 0x2
|
|
bl ShowBg
|
|
movs r0, 0x3
|
|
bl ShowBg
|
|
bl sub_805EF14
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_0803750C:
|
|
ldr r0, =gLinkVSyncDisabled
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08037518
|
|
bl sub_800E0E8
|
|
_08037518:
|
|
ldr r2, =gBattleTypeFlags
|
|
ldr r1, [r2]
|
|
movs r3, 0x2
|
|
adds r0, r1, 0
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _080375FC
|
|
ldr r0, =gUnknown_03003124
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08037530
|
|
b _080379D6
|
|
_08037530:
|
|
ldr r6, =gLinkPlayers
|
|
movs r0, 0
|
|
strh r0, [r6, 0x18]
|
|
strh r3, [r6, 0x34]
|
|
adds r1, r6, 0
|
|
adds r1, 0x50
|
|
movs r0, 0x1
|
|
strh r0, [r1]
|
|
adds r1, 0x1C
|
|
movs r0, 0x3
|
|
strh r0, [r1]
|
|
adds r0, r6, 0
|
|
adds r0, 0x40
|
|
ldr r4, =gTrainerBattleOpponent_A
|
|
ldrh r1, [r4]
|
|
bl GetFrontierTrainerName
|
|
adds r0, r6, 0
|
|
adds r0, 0x5C
|
|
ldr r5, =gTrainerBattleOpponent_B
|
|
ldrh r1, [r5]
|
|
bl GetFrontierTrainerName
|
|
ldrh r1, [r4]
|
|
mov r0, sp
|
|
bl sub_8165B88
|
|
mov r0, sp
|
|
ldrb r0, [r0]
|
|
adds r1, r6, 0
|
|
adds r1, 0x52
|
|
strh r0, [r1]
|
|
ldrh r1, [r5]
|
|
mov r0, sp
|
|
bl sub_8165B88
|
|
mov r0, sp
|
|
ldrb r1, [r0]
|
|
adds r0, r6, 0
|
|
adds r0, 0x6E
|
|
strh r1, [r0]
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080375C4
|
|
ldr r4, =gBattleStruct
|
|
ldr r0, [r4]
|
|
movs r5, 0xC0
|
|
lsls r5, 1
|
|
adds r0, r5
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
ldr r0, [r4]
|
|
ldr r2, =0x00000181
|
|
adds r1, r0, r2
|
|
movs r0, 0x3
|
|
strb r0, [r1]
|
|
bl sub_8036A5C
|
|
bl sub_8036B44
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, [r4]
|
|
adds r1, r5
|
|
movs r2, 0x20
|
|
bl link_0800A448
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x2
|
|
strb r0, [r1]
|
|
_080375C4:
|
|
ldr r0, =gLinkVSyncDisabled
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _080375CE
|
|
b _080379D6
|
|
_080375CE:
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_800DFB4
|
|
b _080379D6
|
|
.pool
|
|
_080375FC:
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803760C
|
|
movs r0, 0x4
|
|
orrs r1, r0
|
|
str r1, [r2]
|
|
_0803760C:
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0xD
|
|
strb r0, [r1]
|
|
bl berry_801017C
|
|
b _080379D6
|
|
.pool
|
|
_0803761C:
|
|
bl sub_800A550
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
beq _0803762A
|
|
b _080379D6
|
|
_0803762A:
|
|
bl sub_800A5B4
|
|
movs r0, 0x2
|
|
adds r1, r6, 0
|
|
bl sub_8036EB8
|
|
bl berry_801017C
|
|
ldr r0, =task00_0800F6FC
|
|
movs r1, 0
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
movs r2, 0
|
|
movs r0, 0x87
|
|
lsls r0, 1
|
|
strh r0, [r1, 0xA]
|
|
movs r0, 0x5A
|
|
strh r0, [r1, 0xC]
|
|
strh r2, [r1, 0x12]
|
|
adds r0, 0xEB
|
|
strh r0, [r1, 0xE]
|
|
strh r0, [r1, 0x10]
|
|
b _08037986
|
|
.pool
|
|
_08037670:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803767C
|
|
b _080379D6
|
|
_0803767C:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gPlayerParty
|
|
_08037686:
|
|
movs r2, 0xC8
|
|
bl link_0800A448
|
|
b _08037986
|
|
.pool
|
|
_08037694:
|
|
bl sub_800A550
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
beq _080376A2
|
|
b _080379D6
|
|
_080376A2:
|
|
bl sub_800A5B4
|
|
ldr r0, =gLinkPlayers
|
|
lsls r1, r6, 3
|
|
subs r1, r6
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x18]
|
|
cmp r0, 0
|
|
beq _080376E8
|
|
ldr r4, =gPlayerParty
|
|
lsls r1, r7, 8
|
|
ldr r5, =gUnknown_020223C4
|
|
adds r1, r5
|
|
adds r0, r4, 0
|
|
movs r2, 0xC8
|
|
bl memcpy
|
|
movs r0, 0x96
|
|
lsls r0, 1
|
|
adds r4, r0
|
|
lsls r1, r6, 8
|
|
adds r1, r5
|
|
adds r0, r4, 0
|
|
movs r2, 0xC8
|
|
bl memcpy
|
|
b _08037986
|
|
.pool
|
|
_080376E8:
|
|
ldr r4, =gPlayerParty
|
|
lsls r1, r6, 8
|
|
ldr r5, =gUnknown_020223C4
|
|
adds r1, r5
|
|
adds r0, r4, 0
|
|
movs r2, 0xC8
|
|
bl memcpy
|
|
movs r1, 0x96
|
|
lsls r1, 1
|
|
adds r4, r1
|
|
lsls r1, r7, 8
|
|
adds r1, r5
|
|
adds r0, r4, 0
|
|
movs r2, 0xC8
|
|
b _08037982
|
|
.pool
|
|
_08037710:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803771C
|
|
b _080379D6
|
|
_0803771C:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gPlayerParty + 200
|
|
movs r2, 0x64
|
|
bl link_0800A448
|
|
b _08037986
|
|
.pool
|
|
_08037734:
|
|
bl sub_800A550
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
beq _08037742
|
|
b _080379D6
|
|
_08037742:
|
|
bl sub_800A5B4
|
|
ldr r0, =gLinkPlayers
|
|
lsls r1, r6, 3
|
|
subs r1, r6
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrh r0, [r1, 0x18]
|
|
cmp r0, 0
|
|
beq _08037788
|
|
ldr r4, =gPlayerParty + 200
|
|
lsls r1, r7, 8
|
|
ldr r5, =gUnknown_020223C4
|
|
adds r1, r5
|
|
adds r0, r4, 0
|
|
movs r2, 0x64
|
|
bl memcpy
|
|
movs r2, 0x96
|
|
lsls r2, 1
|
|
adds r4, r2
|
|
lsls r1, r6, 8
|
|
adds r1, r5
|
|
adds r0, r4, 0
|
|
movs r2, 0x64
|
|
bl memcpy
|
|
b _08037986
|
|
.pool
|
|
_08037788:
|
|
ldr r4, =gPlayerParty + 200
|
|
lsls r1, r6, 8
|
|
ldr r5, =gUnknown_020223C4
|
|
adds r1, r5
|
|
adds r0, r4, 0
|
|
movs r2, 0x64
|
|
bl memcpy
|
|
movs r0, 0x96
|
|
lsls r0, 1
|
|
adds r4, r0
|
|
lsls r1, r7, 8
|
|
adds r1, r5
|
|
adds r0, r4, 0
|
|
movs r2, 0x64
|
|
b _08037982
|
|
.pool
|
|
_080377B0:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080377BC
|
|
b _080379D6
|
|
_080377BC:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gEnemyParty
|
|
b _08037686
|
|
.pool
|
|
_080377CC:
|
|
bl sub_800A550
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
beq _080377DA
|
|
b _080379D6
|
|
_080377DA:
|
|
bl sub_800A5B4
|
|
bl GetMultiplayerId
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080377EA
|
|
b _08037986
|
|
_080377EA:
|
|
ldr r0, =gEnemyParty
|
|
ldr r1, =gUnknown_020223C4
|
|
movs r2, 0xC8
|
|
b _08037982
|
|
.pool
|
|
_080377FC:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08037808
|
|
b _080379D6
|
|
_08037808:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gEnemyParty + 200
|
|
b _08037686
|
|
.pool
|
|
_08037818:
|
|
bl sub_800A550
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
beq _08037826
|
|
b _080379D6
|
|
_08037826:
|
|
bl sub_800A5B4
|
|
bl GetMultiplayerId
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08037836
|
|
b _08037986
|
|
_08037836:
|
|
ldr r0, =gEnemyParty + 200
|
|
ldr r1, =gUnknown_020223C4
|
|
movs r2, 0xC8
|
|
b _08037982
|
|
.pool
|
|
_08037848:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08037854
|
|
b _080379D6
|
|
_08037854:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gEnemyParty + 400
|
|
b _08037686
|
|
.pool
|
|
_08037864:
|
|
bl sub_800A550
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
beq _08037872
|
|
b _080379D6
|
|
_08037872:
|
|
bl sub_800A5B4
|
|
bl GetMultiplayerId
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803788A
|
|
ldr r0, =gEnemyParty + 400
|
|
ldr r1, =gUnknown_020223C4
|
|
movs r2, 0xC8
|
|
bl memcpy
|
|
_0803788A:
|
|
ldr r4, =gPlayerParty
|
|
adds r0, r4, 0
|
|
bl shedinja_something
|
|
adds r0, r4, 0
|
|
adds r0, 0x64
|
|
bl shedinja_something
|
|
adds r0, r4, 0
|
|
adds r0, 0xC8
|
|
bl shedinja_something
|
|
movs r1, 0x96
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
bl shedinja_something
|
|
movs r2, 0xC8
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
bl shedinja_something
|
|
movs r1, 0xFA
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
bl shedinja_something
|
|
ldr r4, =gEnemyParty
|
|
adds r0, r4, 0
|
|
bl shedinja_something
|
|
adds r0, r4, 0
|
|
adds r0, 0x64
|
|
bl shedinja_something
|
|
adds r0, r4, 0
|
|
adds r0, 0xC8
|
|
bl shedinja_something
|
|
movs r2, 0x96
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
bl shedinja_something
|
|
movs r1, 0xC8
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
bl shedinja_something
|
|
movs r2, 0xFA
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
bl shedinja_something
|
|
b _08037986
|
|
.pool
|
|
_08037908:
|
|
bl sub_8032768
|
|
bl sub_8184E58
|
|
ldr r2, =gBattleCommunication
|
|
movs r0, 0
|
|
strb r0, [r2, 0x1]
|
|
strb r0, [r2, 0x2]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08037934
|
|
movs r0, 0xE
|
|
strb r0, [r2]
|
|
b _080379D6
|
|
.pool
|
|
_08037934:
|
|
movs r0, 0x10
|
|
strb r0, [r2]
|
|
b _080379D6
|
|
_0803793A:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080379D6
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gUnknown_0203BD2C
|
|
movs r2, 0x4
|
|
bl link_0800A448
|
|
b _08037986
|
|
.pool
|
|
_0803795C:
|
|
bl sub_800A550
|
|
movs r1, 0x3
|
|
ands r1, r0
|
|
cmp r1, 0x3
|
|
bne _080379D6
|
|
bl sub_800A5B4
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08037986
|
|
ldr r0, =gUnknown_0203BD2C
|
|
lsls r1, r7, 8
|
|
ldr r2, =gUnknown_020223C4
|
|
adds r1, r2
|
|
movs r2, 0x4
|
|
_08037982:
|
|
bl memcpy
|
|
_08037986:
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
b _080379D6
|
|
.pool
|
|
_080379A0:
|
|
ldr r0, =gUnknown_02024333
|
|
adds r1, r0, 0x1
|
|
bl battle_load_something
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080379D6
|
|
bl sub_8166188
|
|
ldr r2, =gUnknown_03005D00
|
|
ldr r1, =gMain
|
|
ldr r0, [r1]
|
|
str r0, [r2]
|
|
ldr r0, =sub_8039EF0
|
|
str r0, [r1]
|
|
ldr r0, =sub_8038420
|
|
bl SetMainCallback2
|
|
ldr r2, =gBattleTypeFlags
|
|
ldr r1, [r2]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080379D6
|
|
movs r0, 0x20
|
|
orrs r1, r0
|
|
str r1, [r2]
|
|
_080379D6:
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8037458
|
|
|
|
thumb_func_start sub_80379F8
|
|
sub_80379F8: @ 80379F8
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
mov r8, r0
|
|
ldr r6, =gUnknown_02022FF8
|
|
mov r10, r6
|
|
_08037A12:
|
|
ldr r1, [sp]
|
|
add r1, r8
|
|
movs r0, 0x64
|
|
adds r4, r1, 0
|
|
muls r4, r0
|
|
ldr r0, =gPlayerParty
|
|
adds r4, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
mov r1, r8
|
|
lsls r5, r1, 5
|
|
strh r0, [r6]
|
|
adds r0, r4, 0
|
|
movs r1, 0xC
|
|
bl GetMonData
|
|
strh r0, [r6, 0x2]
|
|
movs r0, 0x4
|
|
add r0, r10
|
|
mov r9, r0
|
|
adds r7, r5, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
adds r2, r7, 0
|
|
bl GetMonData
|
|
adds r0, r4, 0
|
|
movs r1, 0x38
|
|
bl GetMonData
|
|
strb r0, [r6, 0xF]
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
strh r0, [r6, 0x10]
|
|
adds r0, r4, 0
|
|
movs r1, 0x3A
|
|
bl GetMonData
|
|
strh r0, [r6, 0x12]
|
|
adds r0, r4, 0
|
|
movs r1, 0x37
|
|
bl GetMonData
|
|
mov r1, r10
|
|
adds r1, 0x14
|
|
adds r5, r1
|
|
str r0, [r5]
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl GetMonData
|
|
str r0, [r6, 0x18]
|
|
adds r0, r4, 0
|
|
bl GetMonGender
|
|
strb r0, [r6, 0x1C]
|
|
adds r0, r7, 0
|
|
bl StripExtCtrlCodes
|
|
adds r0, r4, 0
|
|
movs r1, 0x3
|
|
bl GetMonData
|
|
cmp r0, 0x1
|
|
beq _08037AA4
|
|
adds r0, r7, 0
|
|
movs r1, 0
|
|
bl sub_81DB4DC
|
|
_08037AA4:
|
|
adds r6, 0x20
|
|
movs r1, 0x1
|
|
add r8, r1
|
|
mov r0, r8
|
|
cmp r0, 0x2
|
|
ble _08037A12
|
|
ldr r0, =gUnknown_02023058
|
|
ldr r0, [r0]
|
|
mov r1, r9
|
|
subs r1, 0x4
|
|
movs r2, 0x60
|
|
bl memcpy
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80379F8
|
|
|
|
thumb_func_start sub_8037ADC
|
|
sub_8037ADC: @ 8037ADC
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
movs r0, 0x4
|
|
mov r9, r0
|
|
movs r4, 0xF
|
|
ldr r6, =gBattleTypeFlags
|
|
ldr r0, [r6]
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08037B02
|
|
movs r1, 0x2
|
|
mov r9, r1
|
|
movs r4, 0x3
|
|
_08037B02:
|
|
bl GetMultiplayerId
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, =gBattleScripting
|
|
adds r0, 0x25
|
|
movs r2, 0
|
|
mov r8, r2
|
|
strb r7, [r0]
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
adds r1, r0, 0
|
|
adds r1, 0xB4
|
|
str r1, [sp]
|
|
adds r0, 0xAC
|
|
mov r10, r0
|
|
bl RunTasks
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
ldr r5, =gBattleCommunication
|
|
ldrb r0, [r5]
|
|
cmp r0, 0x1
|
|
beq _08037BA4
|
|
cmp r0, 0x1
|
|
bgt _08037B50
|
|
cmp r0, 0
|
|
beq _08037B5E
|
|
b _08037D0A
|
|
.pool
|
|
_08037B50:
|
|
cmp r0, 0x2
|
|
bne _08037B56
|
|
b _08037C64
|
|
_08037B56:
|
|
cmp r0, 0x3
|
|
bne _08037B5C
|
|
b _08037C9E
|
|
_08037B5C:
|
|
b _08037D0A
|
|
_08037B5E:
|
|
ldr r0, =gUnknown_03003124
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08037B68
|
|
b _08037D0A
|
|
_08037B68:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08037B74
|
|
b _08037D0A
|
|
_08037B74:
|
|
ldr r4, =gUnknown_02023058
|
|
movs r0, 0x60
|
|
bl Alloc
|
|
str r0, [r4]
|
|
movs r0, 0
|
|
bl sub_80379F8
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, [r4]
|
|
movs r2, 0x60
|
|
bl link_0800A448
|
|
ldrb r0, [r5]
|
|
adds r0, 0x1
|
|
strb r0, [r5]
|
|
b _08037D0A
|
|
.pool
|
|
_08037BA4:
|
|
bl sub_800A550
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
cmp r1, r4
|
|
beq _08037BB2
|
|
b _08037D0A
|
|
_08037BB2:
|
|
bl sub_800A5B4
|
|
movs r5, 0
|
|
cmp r8, r9
|
|
bge _08037C2E
|
|
lsls r0, r7, 3
|
|
subs r0, r7
|
|
lsls r6, r0, 2
|
|
mov r8, r5
|
|
ldr r4, =gUnknown_020223C4
|
|
_08037BC6:
|
|
cmp r5, r7
|
|
beq _08037C1E
|
|
mov r2, r9
|
|
cmp r2, 0x4
|
|
bne _08037C14
|
|
ldr r2, =gLinkPlayers
|
|
mov r1, r8
|
|
adds r0, r1, r2
|
|
ldrh r1, [r0, 0x18]
|
|
movs r3, 0x1
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08037BF8
|
|
adds r0, r6, r2
|
|
ldrh r1, [r0, 0x18]
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08037C04
|
|
b _08037C1E
|
|
.pool
|
|
_08037BF8:
|
|
adds r0, r6, r2
|
|
ldrh r1, [r0, 0x18]
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08037C1E
|
|
_08037C04:
|
|
ldr r0, =gUnknown_02022FF8
|
|
adds r1, r4, 0
|
|
movs r2, 0x60
|
|
bl memcpy
|
|
b _08037C1E
|
|
.pool
|
|
_08037C14:
|
|
ldr r0, =gUnknown_02022FF8
|
|
adds r1, r4, 0
|
|
movs r2, 0x60
|
|
bl memcpy
|
|
_08037C1E:
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r4, r2
|
|
movs r0, 0x1C
|
|
add r8, r0
|
|
adds r5, 0x1
|
|
cmp r5, r9
|
|
blt _08037BC6
|
|
_08037C2E:
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r1, =gMain
|
|
ldr r0, [r1, 0x8]
|
|
ldr r2, [sp]
|
|
str r0, [r2]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
mov r2, r10
|
|
str r0, [r2]
|
|
ldr r0, =sub_8037ADC
|
|
str r0, [r1, 0x8]
|
|
bl sub_81B9150
|
|
b _08037D0A
|
|
.pool
|
|
_08037C64:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08037D0A
|
|
ldr r0, =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08037D0A
|
|
ldrb r0, [r5]
|
|
adds r0, 0x1
|
|
strb r0, [r5]
|
|
ldr r0, =gLinkVSyncDisabled
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08037C98
|
|
bl sub_800ADF8
|
|
b _08037D0A
|
|
.pool
|
|
_08037C98:
|
|
bl sub_800AC34
|
|
b _08037D0A
|
|
_08037C9E:
|
|
ldr r0, =gLinkVSyncDisabled
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08037CE4
|
|
bl sub_8010500
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08037D0A
|
|
mov r1, r10
|
|
ldr r0, [r1]
|
|
str r0, [r6]
|
|
ldr r1, =gMain
|
|
ldr r2, [sp]
|
|
ldr r0, [r2]
|
|
str r0, [r1, 0x8]
|
|
ldr r0, =InitBattle
|
|
bl SetMainCallback2
|
|
ldr r4, =gUnknown_02023058
|
|
ldr r0, [r4]
|
|
bl Free
|
|
mov r0, r8
|
|
str r0, [r4]
|
|
b _08037D0A
|
|
.pool
|
|
_08037CE4:
|
|
ldr r0, =gUnknown_03003124
|
|
ldrb r5, [r0]
|
|
cmp r5, 0
|
|
bne _08037D0A
|
|
mov r1, r10
|
|
ldr r0, [r1]
|
|
str r0, [r6]
|
|
ldr r1, =gMain
|
|
ldr r2, [sp]
|
|
ldr r0, [r2]
|
|
str r0, [r1, 0x8]
|
|
ldr r0, =InitBattle
|
|
bl SetMainCallback2
|
|
ldr r4, =gUnknown_02023058
|
|
ldr r0, [r4]
|
|
bl Free
|
|
str r5, [r4]
|
|
_08037D0A:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8037ADC
|
|
|
|
thumb_func_start intro_end
|
|
intro_end: @ 8037D2C
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
movs r1, 0xB4
|
|
adds r1, r0
|
|
mov r8, r1
|
|
adds r7, r0, 0
|
|
adds r7, 0xAC
|
|
bl RunTasks
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
ldr r5, =gBattleCommunication
|
|
ldrb r0, [r5]
|
|
cmp r0, 0
|
|
beq _08037D64
|
|
cmp r0, 0x1
|
|
beq _08037DA4
|
|
b _08037DD6
|
|
.pool
|
|
_08037D64:
|
|
ldr r4, =gUnknown_02023058
|
|
movs r0, 0x60
|
|
bl Alloc
|
|
str r0, [r4]
|
|
movs r0, 0x3
|
|
bl sub_80379F8
|
|
ldrb r0, [r5]
|
|
adds r0, 0x1
|
|
strb r0, [r5]
|
|
ldr r1, =gMain
|
|
ldr r0, [r1, 0x8]
|
|
mov r2, r8
|
|
str r0, [r2]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
str r0, [r7]
|
|
ldr r0, =intro_end
|
|
str r0, [r1, 0x8]
|
|
bl sub_81B9150
|
|
b _08037DD6
|
|
.pool
|
|
_08037DA4:
|
|
ldr r0, =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
cmp r6, 0
|
|
bne _08037DD6
|
|
movs r0, 0x2
|
|
strb r0, [r5]
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r0, [r7]
|
|
str r0, [r1]
|
|
ldr r1, =gMain
|
|
mov r2, r8
|
|
ldr r0, [r2]
|
|
str r0, [r1, 0x8]
|
|
ldr r0, =InitBattle
|
|
bl SetMainCallback2
|
|
ldr r4, =gUnknown_02023058
|
|
ldr r0, [r4]
|
|
bl Free
|
|
str r6, [r4]
|
|
_08037DD6:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end intro_end
|
|
|
|
thumb_func_start sub_8037DF4
|
|
sub_8037DF4: @ 8037DF4
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
bl GetMultiplayerId
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r0, =gBattleScripting
|
|
adds r0, 0x25
|
|
strb r7, [r0]
|
|
bl RunTasks
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xA
|
|
bls _08037E20
|
|
b _080383F8
|
|
_08037E20:
|
|
lsls r0, 2
|
|
ldr r1, =_08037E38
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_08037E38:
|
|
.4byte _08037E64
|
|
.4byte _08037EA8
|
|
.4byte _08037F50
|
|
.4byte _08038026
|
|
.4byte _0803804C
|
|
.4byte _08038140
|
|
.4byte _08038164
|
|
.4byte _080382CC
|
|
.4byte _0803832C
|
|
.4byte _0803836C
|
|
.4byte _080383BC
|
|
_08037E64:
|
|
bl IsDma3ManagerBusyWithBgCopy
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08037E90
|
|
movs r0, 0
|
|
bl ShowBg
|
|
movs r0, 0x1
|
|
bl ShowBg
|
|
movs r0, 0x2
|
|
bl ShowBg
|
|
movs r0, 0x3
|
|
bl ShowBg
|
|
bl sub_805EF14
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_08037E90:
|
|
ldr r0, =gLinkVSyncDisabled
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08037E9A
|
|
b _080383F8
|
|
_08037E9A:
|
|
bl sub_800E0E8
|
|
b _080383F8
|
|
.pool
|
|
_08037EA8:
|
|
ldr r2, =gBattleTypeFlags
|
|
ldr r1, [r2]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08037F30
|
|
ldr r0, =gUnknown_03003124
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08037EBE
|
|
b _080383F8
|
|
_08037EBE:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08037F02
|
|
ldr r4, =gBattleStruct
|
|
ldr r0, [r4]
|
|
movs r5, 0xC0
|
|
lsls r5, 1
|
|
adds r0, r5
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
ldr r0, [r4]
|
|
ldr r2, =0x00000181
|
|
adds r1, r0, r2
|
|
movs r0, 0x3
|
|
strb r0, [r1]
|
|
bl sub_8036A5C
|
|
bl sub_8036B44
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, [r4]
|
|
adds r1, r5
|
|
movs r2, 0x20
|
|
bl link_0800A448
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
_08037F02:
|
|
ldr r0, =gLinkVSyncDisabled
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08037F0C
|
|
b _080383F8
|
|
_08037F0C:
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_800DFB4
|
|
b _080383F8
|
|
.pool
|
|
_08037F30:
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08037F40
|
|
movs r0, 0x4
|
|
orrs r1, r0
|
|
str r1, [r2]
|
|
_08037F40:
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x7
|
|
strb r0, [r1]
|
|
bl berry_801017C
|
|
b _080383F8
|
|
.pool
|
|
_08037F50:
|
|
bl sub_800A550
|
|
movs r1, 0xF
|
|
ands r1, r0
|
|
cmp r1, 0xF
|
|
beq _08037F5E
|
|
b _080383F8
|
|
_08037F5E:
|
|
bl sub_800A5B4
|
|
movs r0, 0x4
|
|
adds r1, r7, 0
|
|
bl sub_8036EB8
|
|
bl berry_801017C
|
|
bl sub_8068AA4
|
|
ldr r0, =task00_0800F6FC
|
|
movs r1, 0
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
ldr r1, =gTasks
|
|
lsls r0, r2, 2
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
movs r2, 0
|
|
movs r1, 0x87
|
|
lsls r1, 1
|
|
strh r1, [r0, 0xA]
|
|
movs r1, 0x5A
|
|
strh r1, [r0, 0xC]
|
|
strh r2, [r0, 0x12]
|
|
strh r2, [r0, 0xE]
|
|
strh r2, [r0, 0x10]
|
|
ldr r1, =gUnknown_020223C4
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0x2
|
|
movs r7, 0x3F
|
|
movs r6, 0x3
|
|
_08037FA4:
|
|
ldrh r0, [r5]
|
|
str r2, [sp]
|
|
bl sub_8185F90
|
|
ldr r0, =gLinkPlayers
|
|
ldr r2, [sp]
|
|
adds r0, r2, r0
|
|
ldrh r0, [r0, 0x18]
|
|
cmp r0, 0x1
|
|
beq _08037FE6
|
|
cmp r0, 0x1
|
|
bgt _08037FD4
|
|
cmp r0, 0
|
|
beq _08037FDE
|
|
b _0803800C
|
|
.pool
|
|
_08037FD4:
|
|
cmp r0, 0x2
|
|
beq _08037FEE
|
|
cmp r0, 0x3
|
|
beq _08037FFE
|
|
b _0803800C
|
|
_08037FDE:
|
|
ldrh r0, [r5]
|
|
adds r1, r7, 0
|
|
ands r1, r0
|
|
b _08037FF6
|
|
_08037FE6:
|
|
ldrh r0, [r5]
|
|
adds r1, r7, 0
|
|
ands r1, r0
|
|
b _08038006
|
|
_08037FEE:
|
|
ldrh r0, [r5]
|
|
adds r1, r7, 0
|
|
ands r1, r0
|
|
lsls r1, 6
|
|
_08037FF6:
|
|
ldrh r0, [r4, 0xE]
|
|
orrs r1, r0
|
|
strh r1, [r4, 0xE]
|
|
b _0803800C
|
|
_08037FFE:
|
|
ldrh r0, [r5]
|
|
adds r1, r7, 0
|
|
ands r1, r0
|
|
lsls r1, 6
|
|
_08038006:
|
|
ldrh r0, [r4, 0x10]
|
|
orrs r1, r0
|
|
strh r1, [r4, 0x10]
|
|
_0803800C:
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
adds r5, r0
|
|
adds r2, 0x1C
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bge _08037FA4
|
|
bl ZeroEnemyPartyMons
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
_08038026:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _08038032
|
|
b _080383F8
|
|
_08038032:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gPlayerParty
|
|
movs r2, 0xC8
|
|
bl link_0800A448
|
|
b _080383A6
|
|
.pool
|
|
_0803804C:
|
|
bl sub_800A550
|
|
movs r1, 0xF
|
|
ands r1, r0
|
|
cmp r1, 0xF
|
|
beq _0803805A
|
|
b _080383F8
|
|
_0803805A:
|
|
bl sub_800A5B4
|
|
movs r6, 0
|
|
lsls r0, r7, 3
|
|
subs r0, r7
|
|
lsls r0, 2
|
|
mov r8, r0
|
|
ldr r4, =gUnknown_020223C4
|
|
movs r5, 0
|
|
_0803806C:
|
|
cmp r6, r7
|
|
bne _080380A0
|
|
ldr r0, =gLinkPlayers
|
|
adds r0, r5, r0
|
|
ldrh r0, [r0, 0x18]
|
|
cmp r0, 0x2
|
|
bgt _0803808C
|
|
cmp r0, 0x1
|
|
bge _08038098
|
|
cmp r0, 0
|
|
beq _08038090
|
|
b _0803812A
|
|
.pool
|
|
_0803808C:
|
|
cmp r0, 0x3
|
|
bne _0803812A
|
|
_08038090:
|
|
ldr r0, =gPlayerParty
|
|
b _08038110
|
|
.pool
|
|
_08038098:
|
|
ldr r0, =gPlayerParty + 300
|
|
b _08038110
|
|
.pool
|
|
_080380A0:
|
|
ldr r2, =gLinkPlayers
|
|
adds r0, r5, r2
|
|
ldrh r1, [r0, 0x18]
|
|
movs r3, 0x1
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080380C4
|
|
mov r1, r8
|
|
adds r0, r1, r2
|
|
ldrh r1, [r0, 0x18]
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080380D2
|
|
b _080380F8
|
|
.pool
|
|
_080380C4:
|
|
mov r1, r8
|
|
adds r0, r1, r2
|
|
ldrh r1, [r0, 0x18]
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080380F8
|
|
_080380D2:
|
|
adds r0, r5, r2
|
|
ldrh r0, [r0, 0x18]
|
|
cmp r0, 0x2
|
|
bgt _080380E4
|
|
cmp r0, 0x1
|
|
bge _080380F0
|
|
cmp r0, 0
|
|
beq _080380E8
|
|
b _0803812A
|
|
_080380E4:
|
|
cmp r0, 0x3
|
|
bne _0803812A
|
|
_080380E8:
|
|
ldr r0, =gPlayerParty
|
|
b _08038110
|
|
.pool
|
|
_080380F0:
|
|
ldr r0, =gPlayerParty + 300
|
|
b _08038110
|
|
.pool
|
|
_080380F8:
|
|
adds r0, r5, r2
|
|
ldrh r0, [r0, 0x18]
|
|
cmp r0, 0x2
|
|
bgt _0803810A
|
|
cmp r0, 0x1
|
|
bge _08038120
|
|
cmp r0, 0
|
|
beq _0803810E
|
|
b _0803812A
|
|
_0803810A:
|
|
cmp r0, 0x3
|
|
bne _0803812A
|
|
_0803810E:
|
|
ldr r0, =gEnemyParty
|
|
_08038110:
|
|
adds r1, r4, 0
|
|
movs r2, 0xC8
|
|
bl memcpy
|
|
b _0803812A
|
|
.pool
|
|
_08038120:
|
|
ldr r0, =gEnemyParty + 300
|
|
adds r1, r4, 0
|
|
movs r2, 0xC8
|
|
bl memcpy
|
|
_0803812A:
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r4, r2
|
|
adds r5, 0x1C
|
|
adds r6, 0x1
|
|
cmp r6, 0x3
|
|
ble _0803806C
|
|
b _080383A6
|
|
.pool
|
|
_08038140:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803814C
|
|
b _080383F8
|
|
_0803814C:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gPlayerParty + 200
|
|
movs r2, 0x64
|
|
bl link_0800A448
|
|
b _080383A6
|
|
.pool
|
|
_08038164:
|
|
bl sub_800A550
|
|
movs r1, 0xF
|
|
ands r1, r0
|
|
cmp r1, 0xF
|
|
beq _08038172
|
|
b _080383F8
|
|
_08038172:
|
|
bl sub_800A5B4
|
|
movs r6, 0
|
|
lsls r0, r7, 3
|
|
subs r0, r7
|
|
lsls r0, 2
|
|
mov r8, r0
|
|
ldr r4, =gUnknown_020223C4
|
|
movs r5, 0
|
|
_08038184:
|
|
cmp r6, r7
|
|
bne _080381B8
|
|
ldr r0, =gLinkPlayers
|
|
adds r0, r5, r0
|
|
ldrh r0, [r0, 0x18]
|
|
cmp r0, 0x2
|
|
bgt _080381A4
|
|
cmp r0, 0x1
|
|
bge _080381B0
|
|
cmp r0, 0
|
|
beq _080381A8
|
|
b _08038242
|
|
.pool
|
|
_080381A4:
|
|
cmp r0, 0x3
|
|
bne _08038242
|
|
_080381A8:
|
|
ldr r0, =gPlayerParty + 200
|
|
b _08038228
|
|
.pool
|
|
_080381B0:
|
|
ldr r0, =gPlayerParty + 500
|
|
b _08038228
|
|
.pool
|
|
_080381B8:
|
|
ldr r2, =gLinkPlayers
|
|
adds r0, r5, r2
|
|
ldrh r1, [r0, 0x18]
|
|
movs r3, 0x1
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080381DC
|
|
mov r1, r8
|
|
adds r0, r1, r2
|
|
ldrh r1, [r0, 0x18]
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080381EA
|
|
b _08038210
|
|
.pool
|
|
_080381DC:
|
|
mov r1, r8
|
|
adds r0, r1, r2
|
|
ldrh r1, [r0, 0x18]
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08038210
|
|
_080381EA:
|
|
adds r0, r5, r2
|
|
ldrh r0, [r0, 0x18]
|
|
cmp r0, 0x2
|
|
bgt _080381FC
|
|
cmp r0, 0x1
|
|
bge _08038208
|
|
cmp r0, 0
|
|
beq _08038200
|
|
b _08038242
|
|
_080381FC:
|
|
cmp r0, 0x3
|
|
bne _08038242
|
|
_08038200:
|
|
ldr r0, =gPlayerParty + 200
|
|
b _08038228
|
|
.pool
|
|
_08038208:
|
|
ldr r0, =gPlayerParty + 500
|
|
b _08038228
|
|
.pool
|
|
_08038210:
|
|
adds r0, r5, r2
|
|
ldrh r0, [r0, 0x18]
|
|
cmp r0, 0x2
|
|
bgt _08038222
|
|
cmp r0, 0x1
|
|
bge _08038238
|
|
cmp r0, 0
|
|
beq _08038226
|
|
b _08038242
|
|
_08038222:
|
|
cmp r0, 0x3
|
|
bne _08038242
|
|
_08038226:
|
|
ldr r0, =gEnemyParty + 200
|
|
_08038228:
|
|
adds r1, r4, 0
|
|
movs r2, 0x64
|
|
bl memcpy
|
|
b _08038242
|
|
.pool
|
|
_08038238:
|
|
ldr r0, =gEnemyParty + 500
|
|
adds r1, r4, 0
|
|
movs r2, 0x64
|
|
bl memcpy
|
|
_08038242:
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r4, r2
|
|
adds r5, 0x1C
|
|
adds r6, 0x1
|
|
cmp r6, 0x3
|
|
ble _08038184
|
|
ldr r4, =gPlayerParty
|
|
adds r0, r4, 0
|
|
bl shedinja_something
|
|
adds r0, r4, 0
|
|
adds r0, 0x64
|
|
bl shedinja_something
|
|
adds r0, r4, 0
|
|
adds r0, 0xC8
|
|
bl shedinja_something
|
|
movs r1, 0x96
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
bl shedinja_something
|
|
movs r2, 0xC8
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
bl shedinja_something
|
|
movs r1, 0xFA
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
bl shedinja_something
|
|
ldr r4, =gEnemyParty
|
|
adds r0, r4, 0
|
|
bl shedinja_something
|
|
adds r0, r4, 0
|
|
adds r0, 0x64
|
|
bl shedinja_something
|
|
adds r0, r4, 0
|
|
adds r0, 0xC8
|
|
bl shedinja_something
|
|
movs r2, 0x96
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
bl shedinja_something
|
|
movs r1, 0xC8
|
|
lsls r1, 1
|
|
adds r0, r4, r1
|
|
bl shedinja_something
|
|
movs r2, 0xFA
|
|
lsls r2, 1
|
|
adds r0, r4, r2
|
|
bl shedinja_something
|
|
b _080383A6
|
|
.pool
|
|
_080382CC:
|
|
bl sub_8032768
|
|
bl sub_8184E58
|
|
ldr r3, =gBattleCommunication
|
|
movs r0, 0
|
|
strb r0, [r3, 0x1]
|
|
strb r0, [r3, 0x2]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08038326
|
|
movs r6, 0
|
|
ldr r0, =gLinkPlayers
|
|
ldrb r1, [r0]
|
|
adds r4, r3, 0
|
|
adds r2, r0, 0
|
|
cmp r1, 0x3
|
|
bne _0803830A
|
|
movs r3, 0xFF
|
|
_080382F8:
|
|
adds r2, 0x1C
|
|
adds r6, 0x1
|
|
cmp r6, 0x3
|
|
bgt _0803830A
|
|
ldrh r1, [r2]
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0x3
|
|
beq _080382F8
|
|
_0803830A:
|
|
cmp r6, 0x4
|
|
bne _08038320
|
|
movs r0, 0x8
|
|
strb r0, [r4]
|
|
b _080383F8
|
|
.pool
|
|
_08038320:
|
|
movs r0, 0xA
|
|
strb r0, [r4]
|
|
b _080383F8
|
|
_08038326:
|
|
movs r0, 0xA
|
|
strb r0, [r3]
|
|
b _080383F8
|
|
_0803832C:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080383F8
|
|
ldr r0, =gBattleStruct
|
|
ldr r4, [r0]
|
|
movs r0, 0xC0
|
|
lsls r0, 1
|
|
adds r4, r0
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
str r0, [r4]
|
|
ldr r0, =gUnknown_0203BD2C
|
|
ldr r0, [r0]
|
|
str r0, [r4, 0x4]
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r1, r4, 0
|
|
movs r2, 0x8
|
|
bl link_0800A448
|
|
b _080383A6
|
|
.pool
|
|
_0803836C:
|
|
bl sub_800A550
|
|
movs r1, 0xF
|
|
ands r1, r0
|
|
cmp r1, 0xF
|
|
bne _080383F8
|
|
bl sub_800A5B4
|
|
movs r2, 0
|
|
b _08038386
|
|
_08038380:
|
|
adds r0, r2, 0x1
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
_08038386:
|
|
cmp r2, 0x3
|
|
bhi _080383A6
|
|
ldr r4, =gUnknown_020223C4
|
|
lsls r3, r2, 8
|
|
adds r0, r3, r4
|
|
ldrh r0, [r0]
|
|
movs r1, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08038380
|
|
adds r1, r4, 0x4
|
|
adds r1, r3, r1
|
|
ldr r0, =gUnknown_0203BD2C
|
|
movs r2, 0x4
|
|
bl memcpy
|
|
_080383A6:
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
b _080383F8
|
|
.pool
|
|
_080383BC:
|
|
ldr r0, =gUnknown_02024333
|
|
adds r1, r0, 0x1
|
|
bl battle_load_something
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080383F8
|
|
ldr r2, =gUnknown_03005D00
|
|
ldr r1, =gMain
|
|
ldr r0, [r1]
|
|
str r0, [r2]
|
|
ldr r0, =sub_8039EF0
|
|
str r0, [r1]
|
|
ldr r0, =sub_8038420
|
|
bl SetMainCallback2
|
|
ldr r3, =gBattleTypeFlags
|
|
ldr r2, [r3]
|
|
movs r0, 0x2
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _080383F8
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
movs r4, 0x80
|
|
lsls r4, 4
|
|
adds r1, r4, 0
|
|
strh r1, [r0]
|
|
movs r0, 0x20
|
|
orrs r2, r0
|
|
str r2, [r3]
|
|
_080383F8:
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8037DF4
|
|
|
|
thumb_func_start sub_8038420
|
|
sub_8038420: @ 8038420
|
|
push {lr}
|
|
sub sp, 0x4
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
bl RunTextPrinters
|
|
bl UpdatePaletteFade
|
|
bl RunTasks
|
|
ldr r0, =gMain
|
|
ldrh r1, [r0, 0x2C]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08038482
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08038482
|
|
bl rfu_lacks_rfufunc
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08038482
|
|
ldr r2, =gScriptResult
|
|
ldr r1, =gBattleOutcome
|
|
movs r0, 0x5
|
|
strb r0, [r1]
|
|
movs r0, 0x5
|
|
strh r0, [r2]
|
|
bl ResetPaletteFadeControl
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
movs r2, 0
|
|
movs r3, 0x10
|
|
bl BeginNormalPaletteFade
|
|
ldr r0, =sub_80384E4
|
|
bl SetMainCallback2
|
|
_08038482:
|
|
add sp, 0x4
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8038420
|
|
|
|
thumb_func_start sub_803849C
|
|
sub_803849C: @ 803849C
|
|
push {lr}
|
|
ldr r1, =gMain
|
|
ldr r0, =gUnknown_03005D00
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldr r2, =gUnknown_02039B28
|
|
movs r0, 0x3
|
|
strb r0, [r2, 0x15]
|
|
ldr r0, =0x00000439
|
|
adds r1, r0
|
|
ldrb r2, [r1]
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
bl ZeroEnemyPartyMons
|
|
movs r0, 0x5A
|
|
bl m4aSongNumStop
|
|
bl sub_805F094
|
|
bl dp11_free
|
|
bl sub_8057028
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803849C
|
|
|
|
thumb_func_start sub_80384E4
|
|
sub_80384E4: @ 80384E4
|
|
push {lr}
|
|
bl UpdatePaletteFade
|
|
ldr r0, =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08038512
|
|
ldr r0, =gMPlay_SE1
|
|
bl m4aMPlayStop
|
|
ldr r0, =gMPlay_SE2
|
|
bl m4aMPlayStop
|
|
bl sub_803849C
|
|
bl FreeAllWindowBuffers
|
|
ldr r0, =gMain
|
|
ldr r0, [r0, 0x8]
|
|
bl SetMainCallback2
|
|
_08038512:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80384E4
|
|
|
|
thumb_func_start sub_8038528
|
|
sub_8038528: @ 8038528
|
|
movs r1, 0
|
|
strh r1, [r0, 0x2E]
|
|
ldr r1, =sub_8038538
|
|
str r1, [r0, 0x1C]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end sub_8038528
|
|
|
|
thumb_func_start sub_8038538
|
|
sub_8038538: @ 8038538
|
|
push {r4,r5,lr}
|
|
adds r3, r0, 0
|
|
ldr r5, =0x0201c000
|
|
movs r0, 0x2E
|
|
ldrsh r1, [r3, r0]
|
|
cmp r1, 0x1
|
|
beq _0803856C
|
|
cmp r1, 0x1
|
|
bgt _08038554
|
|
cmp r1, 0
|
|
beq _0803855A
|
|
b _080385DC
|
|
.pool
|
|
_08038554:
|
|
cmp r1, 0x2
|
|
beq _080385C8
|
|
b _080385DC
|
|
_0803855A:
|
|
ldrh r0, [r3, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x2E]
|
|
strh r1, [r3, 0x30]
|
|
ldr r0, =0x00000281
|
|
strh r0, [r3, 0x32]
|
|
strh r1, [r3, 0x34]
|
|
movs r0, 0x1
|
|
strh r0, [r3, 0x36]
|
|
_0803856C:
|
|
ldrh r0, [r3, 0x36]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x36]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080385DC
|
|
movs r0, 0x2
|
|
strh r0, [r3, 0x36]
|
|
movs r4, 0x30
|
|
ldrsh r2, [r3, r4]
|
|
movs r0, 0x34
|
|
ldrsh r1, [r3, r0]
|
|
lsls r1, 5
|
|
adds r2, r1
|
|
movs r4, 0x32
|
|
ldrsh r0, [r3, r4]
|
|
subs r0, r1
|
|
movs r4, 0x3D
|
|
lsls r0, 1
|
|
adds r0, r5
|
|
lsls r2, 1
|
|
adds r2, r5
|
|
movs r1, 0x1C
|
|
_0803859A:
|
|
strh r4, [r2]
|
|
strh r4, [r0]
|
|
adds r0, 0x4
|
|
adds r2, 0x4
|
|
subs r1, 0x2
|
|
cmp r1, 0
|
|
bge _0803859A
|
|
ldrh r0, [r3, 0x34]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x34]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x15
|
|
bne _080385DC
|
|
ldrh r0, [r3, 0x2E]
|
|
adds r0, 0x1
|
|
strh r0, [r3, 0x2E]
|
|
movs r0, 0x20
|
|
strh r0, [r3, 0x30]
|
|
b _080385DC
|
|
.pool
|
|
_080385C8:
|
|
ldrh r0, [r3, 0x30]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x30]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0x14
|
|
bne _080385DC
|
|
ldr r0, =sub_8036760
|
|
bl SetMainCallback2
|
|
_080385DC:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8038538
|
|
|
|
thumb_func_start CreateNPCTrainerParty
|
|
CreateNPCTrainerParty: @ 80385E8
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x28
|
|
str r0, [sp, 0x10]
|
|
lsls r1, 16
|
|
lsrs r1, 16
|
|
str r1, [sp, 0x14]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
movs r0, 0
|
|
mov r9, r0
|
|
movs r0, 0x80
|
|
lsls r0, 3
|
|
cmp r1, r0
|
|
bne _08038610
|
|
movs r0, 0
|
|
b _080389E2
|
|
_08038610:
|
|
ldr r4, =gBattleTypeFlags
|
|
ldr r0, [r4]
|
|
ldr r1, =0x043f0908
|
|
ands r0, r1
|
|
ldr r1, [sp, 0x14]
|
|
lsls r1, 2
|
|
str r1, [sp, 0x20]
|
|
cmp r0, 0x8
|
|
beq _08038624
|
|
b _080389D2
|
|
_08038624:
|
|
cmp r2, 0x1
|
|
bne _0803862C
|
|
bl ZeroEnemyPartyMons
|
|
_0803862C:
|
|
ldr r0, [r4]
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08038668
|
|
ldr r0, =gTrainers
|
|
ldr r2, [sp, 0x20]
|
|
ldr r3, [sp, 0x14]
|
|
adds r1, r2, r3
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
adds r2, r1, 0
|
|
adds r2, 0x20
|
|
ldrb r1, [r2]
|
|
movs r4, 0x3
|
|
str r4, [sp, 0x1C]
|
|
adds r4, r0, 0
|
|
cmp r1, 0x3
|
|
bhi _0803867C
|
|
adds r2, r1, 0
|
|
str r2, [sp, 0x1C]
|
|
b _0803867C
|
|
.pool
|
|
_08038668:
|
|
ldr r1, =gTrainers
|
|
ldr r2, [sp, 0x20]
|
|
ldr r3, [sp, 0x14]
|
|
adds r0, r2, r3
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
str r0, [sp, 0x1C]
|
|
adds r4, r1, 0
|
|
_0803867C:
|
|
movs r0, 0
|
|
str r0, [sp, 0x18]
|
|
b _080389B4
|
|
.pool
|
|
_08038688:
|
|
ldr r2, [sp, 0x20]
|
|
ldr r3, [sp, 0x14]
|
|
adds r0, r2, r3
|
|
lsls r0, 3
|
|
adds r1, r0, r4
|
|
ldrb r0, [r1, 0x18]
|
|
cmp r0, 0x1
|
|
bne _0803869E
|
|
movs r0, 0x80
|
|
mov r10, r0
|
|
b _080386B0
|
|
_0803869E:
|
|
ldrb r1, [r1, 0x2]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
movs r1, 0x88
|
|
mov r10, r1
|
|
cmp r0, 0
|
|
beq _080386B0
|
|
movs r2, 0x78
|
|
mov r10, r2
|
|
_080386B0:
|
|
movs r6, 0
|
|
ldr r2, [sp, 0x20]
|
|
ldr r3, [sp, 0x14]
|
|
adds r0, r2, r3
|
|
lsls r0, 3
|
|
adds r1, r4, 0x4
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
ldr r3, [sp, 0x18]
|
|
adds r3, 0x1
|
|
str r3, [sp, 0x24]
|
|
cmp r0, 0xFF
|
|
beq _080386E6
|
|
adds r3, r1, 0
|
|
_080386CC:
|
|
ldr r0, [sp, 0x14]
|
|
adds r1, r2, r0
|
|
lsls r1, 3
|
|
adds r0, r6, r1
|
|
adds r0, r3
|
|
ldrb r0, [r0]
|
|
add r9, r0
|
|
adds r6, 0x1
|
|
adds r1, r6, r1
|
|
adds r1, r3
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xFF
|
|
bne _080386CC
|
|
_080386E6:
|
|
ldr r1, [sp, 0x20]
|
|
ldr r2, [sp, 0x14]
|
|
adds r0, r1, r2
|
|
lsls r1, r0, 3
|
|
adds r0, r1, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
beq _08038794
|
|
cmp r0, 0x1
|
|
bgt _08038700
|
|
cmp r0, 0
|
|
beq _0803870E
|
|
b _080389AC
|
|
_08038700:
|
|
cmp r0, 0x2
|
|
bne _08038706
|
|
b _08038854
|
|
_08038706:
|
|
cmp r0, 0x3
|
|
bne _0803870C
|
|
b _080388E8
|
|
_0803870C:
|
|
b _080389AC
|
|
_0803870E:
|
|
adds r0, r4, 0
|
|
adds r0, 0x24
|
|
adds r0, r1, r0
|
|
ldr r4, [r0]
|
|
movs r6, 0
|
|
ldr r3, [sp, 0x18]
|
|
lsls r2, r3, 3
|
|
adds r0, r2, r4
|
|
ldrh r1, [r0, 0x4]
|
|
movs r0, 0xB
|
|
muls r0, r1
|
|
ldr r1, =gSpeciesNames
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
adds r5, r2, 0
|
|
cmp r0, 0xFF
|
|
beq _08038750
|
|
adds r3, r1, 0
|
|
movs r7, 0xB
|
|
_08038734:
|
|
adds r0, r2, r4
|
|
ldrh r0, [r0, 0x4]
|
|
adds r1, r0, 0
|
|
muls r1, r7
|
|
adds r0, r6, r1
|
|
adds r0, r3
|
|
ldrb r0, [r0]
|
|
add r9, r0
|
|
adds r6, 0x1
|
|
adds r1, r6, r1
|
|
adds r1, r3
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xFF
|
|
bne _08038734
|
|
_08038750:
|
|
mov r2, r9
|
|
lsls r0, r2, 8
|
|
add r10, r0
|
|
adds r4, r5, r4
|
|
ldrh r1, [r4]
|
|
lsls r0, r1, 5
|
|
subs r0, r1
|
|
movs r1, 0xFF
|
|
bl __divsi3
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r3, [sp, 0x18]
|
|
movs r1, 0x64
|
|
adds r0, r3, 0
|
|
muls r0, r1
|
|
ldr r2, [sp, 0x10]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r4, 0x4]
|
|
ldrb r2, [r4, 0x2]
|
|
movs r3, 0x1
|
|
str r3, [sp]
|
|
mov r3, r10
|
|
str r3, [sp, 0x4]
|
|
movs r3, 0x2
|
|
str r3, [sp, 0x8]
|
|
movs r3, 0
|
|
str r3, [sp, 0xC]
|
|
adds r3, r6, 0
|
|
bl CreateMon
|
|
b _080389AC
|
|
.pool
|
|
_08038794:
|
|
adds r0, r4, 0
|
|
adds r0, 0x24
|
|
adds r0, r1, r0
|
|
ldr r7, [r0]
|
|
movs r6, 0
|
|
ldr r4, [sp, 0x18]
|
|
lsls r2, r4, 4
|
|
adds r0, r2, r7
|
|
ldrh r1, [r0, 0x4]
|
|
movs r0, 0xB
|
|
muls r0, r1
|
|
ldr r1, =gSpeciesNames
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
mov r8, r2
|
|
cmp r0, 0xFF
|
|
beq _080387D6
|
|
adds r3, r1, 0
|
|
movs r4, 0xB
|
|
_080387BA:
|
|
adds r0, r2, r7
|
|
ldrh r0, [r0, 0x4]
|
|
adds r1, r0, 0
|
|
muls r1, r4
|
|
adds r0, r6, r1
|
|
adds r0, r3
|
|
ldrb r0, [r0]
|
|
add r9, r0
|
|
adds r6, 0x1
|
|
adds r1, r6, r1
|
|
adds r1, r3
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xFF
|
|
bne _080387BA
|
|
_080387D6:
|
|
mov r2, r9
|
|
lsls r0, r2, 8
|
|
add r10, r0
|
|
mov r3, r8
|
|
adds r4, r3, r7
|
|
ldrh r1, [r4]
|
|
lsls r0, r1, 5
|
|
subs r0, r1
|
|
movs r1, 0xFF
|
|
bl __divsi3
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, [sp, 0x18]
|
|
movs r1, 0x64
|
|
adds r5, r0, 0
|
|
muls r5, r1
|
|
ldr r2, [sp, 0x10]
|
|
adds r5, r2, r5
|
|
ldrh r1, [r4, 0x4]
|
|
ldrb r2, [r4, 0x2]
|
|
movs r0, 0x1
|
|
str r0, [sp]
|
|
mov r3, r10
|
|
str r3, [sp, 0x4]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0
|
|
str r0, [sp, 0xC]
|
|
adds r0, r5, 0
|
|
adds r3, r6, 0
|
|
bl CreateMon
|
|
movs r6, 0
|
|
mov r0, r8
|
|
adds r0, 0x6
|
|
adds r4, r7, r0
|
|
_08038820:
|
|
adds r1, r6, 0
|
|
adds r1, 0xD
|
|
adds r0, r5, 0
|
|
adds r2, r4, 0
|
|
bl SetMonData
|
|
adds r1, r6, 0
|
|
adds r1, 0x11
|
|
ldrh r0, [r4]
|
|
lsls r2, r0, 1
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
ldr r0, =gBattleMoves + 0x4 @ PP offset
|
|
adds r2, r0
|
|
adds r0, r5, 0
|
|
bl SetMonData
|
|
adds r4, 0x2
|
|
adds r6, 0x1
|
|
cmp r6, 0x3
|
|
ble _08038820
|
|
b _080389AC
|
|
.pool
|
|
_08038854:
|
|
adds r0, r4, 0
|
|
adds r0, 0x24
|
|
adds r0, r1, r0
|
|
ldr r4, [r0]
|
|
movs r6, 0
|
|
ldr r0, [sp, 0x18]
|
|
lsls r2, r0, 3
|
|
adds r0, r2, r4
|
|
ldrh r1, [r0, 0x4]
|
|
movs r0, 0xB
|
|
muls r0, r1
|
|
ldr r1, =gSpeciesNames
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
adds r5, r2, 0
|
|
cmp r0, 0xFF
|
|
beq _08038896
|
|
adds r3, r1, 0
|
|
movs r7, 0xB
|
|
_0803887A:
|
|
adds r0, r2, r4
|
|
ldrh r0, [r0, 0x4]
|
|
adds r1, r0, 0
|
|
muls r1, r7
|
|
adds r0, r6, r1
|
|
adds r0, r3
|
|
ldrb r0, [r0]
|
|
add r9, r0
|
|
adds r6, 0x1
|
|
adds r1, r6, r1
|
|
adds r1, r3
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xFF
|
|
bne _0803887A
|
|
_08038896:
|
|
mov r2, r9
|
|
lsls r0, r2, 8
|
|
add r10, r0
|
|
adds r5, r4
|
|
ldrh r1, [r5]
|
|
lsls r0, r1, 5
|
|
subs r0, r1
|
|
movs r1, 0xFF
|
|
bl __divsi3
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r3, [sp, 0x18]
|
|
movs r0, 0x64
|
|
adds r4, r3, 0
|
|
muls r4, r0
|
|
ldr r1, [sp, 0x10]
|
|
adds r4, r1, r4
|
|
ldrh r1, [r5, 0x4]
|
|
ldrb r2, [r5, 0x2]
|
|
movs r0, 0x1
|
|
str r0, [sp]
|
|
mov r3, r10
|
|
str r3, [sp, 0x4]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0
|
|
str r0, [sp, 0xC]
|
|
adds r0, r4, 0
|
|
adds r3, r6, 0
|
|
bl CreateMon
|
|
adds r5, 0x6
|
|
adds r0, r4, 0
|
|
movs r1, 0xC
|
|
adds r2, r5, 0
|
|
bl SetMonData
|
|
b _080389AC
|
|
.pool
|
|
_080388E8:
|
|
adds r0, r4, 0
|
|
adds r0, 0x24
|
|
adds r0, r1, r0
|
|
ldr r7, [r0]
|
|
movs r6, 0
|
|
ldr r4, [sp, 0x18]
|
|
lsls r2, r4, 4
|
|
adds r0, r2, r7
|
|
ldrh r1, [r0, 0x4]
|
|
movs r0, 0xB
|
|
muls r0, r1
|
|
ldr r1, =gSpeciesNames
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
mov r8, r2
|
|
cmp r0, 0xFF
|
|
beq _0803892A
|
|
adds r3, r1, 0
|
|
movs r4, 0xB
|
|
_0803890E:
|
|
adds r0, r2, r7
|
|
ldrh r0, [r0, 0x4]
|
|
adds r1, r0, 0
|
|
muls r1, r4
|
|
adds r0, r6, r1
|
|
adds r0, r3
|
|
ldrb r0, [r0]
|
|
add r9, r0
|
|
adds r6, 0x1
|
|
adds r1, r6, r1
|
|
adds r1, r3
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xFF
|
|
bne _0803890E
|
|
_0803892A:
|
|
mov r2, r9
|
|
lsls r0, r2, 8
|
|
add r10, r0
|
|
mov r3, r8
|
|
adds r5, r3, r7
|
|
ldrh r1, [r5]
|
|
lsls r0, r1, 5
|
|
subs r0, r1
|
|
movs r1, 0xFF
|
|
bl __divsi3
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, [sp, 0x18]
|
|
movs r1, 0x64
|
|
adds r4, r0, 0
|
|
muls r4, r1
|
|
ldr r2, [sp, 0x10]
|
|
adds r4, r2, r4
|
|
ldrh r1, [r5, 0x4]
|
|
ldrb r2, [r5, 0x2]
|
|
movs r0, 0x1
|
|
str r0, [sp]
|
|
mov r3, r10
|
|
str r3, [sp, 0x4]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0
|
|
str r0, [sp, 0xC]
|
|
adds r0, r4, 0
|
|
adds r3, r6, 0
|
|
bl CreateMon
|
|
adds r5, 0x6
|
|
adds r0, r4, 0
|
|
movs r1, 0xC
|
|
adds r2, r5, 0
|
|
bl SetMonData
|
|
movs r6, 0
|
|
adds r5, r4, 0
|
|
mov r0, r8
|
|
adds r0, 0x8
|
|
adds r4, r7, r0
|
|
_08038982:
|
|
adds r1, r6, 0
|
|
adds r1, 0xD
|
|
adds r0, r5, 0
|
|
adds r2, r4, 0
|
|
bl SetMonData
|
|
adds r1, r6, 0
|
|
adds r1, 0x11
|
|
ldrh r0, [r4]
|
|
lsls r2, r0, 1
|
|
adds r2, r0
|
|
lsls r2, 2
|
|
ldr r0, =gBattleMoves + 0x4 @ PP offset
|
|
adds r2, r0
|
|
adds r0, r5, 0
|
|
bl SetMonData
|
|
adds r4, 0x2
|
|
adds r6, 0x1
|
|
cmp r6, 0x3
|
|
ble _08038982
|
|
_080389AC:
|
|
ldr r4, [sp, 0x24]
|
|
str r4, [sp, 0x18]
|
|
ldr r4, =gTrainers
|
|
ldr r0, [sp, 0x18]
|
|
_080389B4:
|
|
ldr r1, [sp, 0x1C]
|
|
cmp r0, r1
|
|
bge _080389BC
|
|
b _08038688
|
|
_080389BC:
|
|
ldr r2, =gBattleTypeFlags
|
|
ldr r1, =gTrainers
|
|
ldr r3, [sp, 0x20]
|
|
ldr r4, [sp, 0x14]
|
|
adds r0, r3, r4
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x18]
|
|
ldr r0, [r2]
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
_080389D2:
|
|
ldr r0, =gTrainers
|
|
ldr r2, [sp, 0x20]
|
|
ldr r3, [sp, 0x14]
|
|
adds r1, r2, r3
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
adds r1, 0x20
|
|
ldrb r0, [r1]
|
|
_080389E2:
|
|
add sp, 0x28
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end CreateNPCTrainerParty
|
|
|
|
thumb_func_start sub_8038A04
|
|
sub_8038A04: @ 8038A04
|
|
push {lr}
|
|
ldr r0, =0x04000006
|
|
ldrh r0, [r0]
|
|
subs r0, 0x6F
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x30
|
|
bhi _08038A1E
|
|
movs r1, 0x98
|
|
lsls r1, 8
|
|
movs r0, 0x8
|
|
bl SetGpuReg
|
|
_08038A1E:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8038A04
|
|
|
|
thumb_func_start vblank_cb_08078BB4
|
|
vblank_cb_08078BB4: @ 8038A28
|
|
push {lr}
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, =0x013f0102
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08038A3A
|
|
bl Random
|
|
_08038A3A:
|
|
ldr r0, =gUnknown_02022E14
|
|
ldrh r1, [r0]
|
|
movs r0, 0x10
|
|
bl SetGpuReg
|
|
ldr r0, =gUnknown_02022E16
|
|
ldrh r1, [r0]
|
|
movs r0, 0x12
|
|
bl SetGpuReg
|
|
ldr r0, =gUnknown_02022E18
|
|
ldrh r1, [r0]
|
|
movs r0, 0x14
|
|
bl SetGpuReg
|
|
ldr r0, =gUnknown_02022E1A
|
|
ldrh r1, [r0]
|
|
movs r0, 0x16
|
|
bl SetGpuReg
|
|
ldr r0, =gUnknown_02022E1C
|
|
ldrh r1, [r0]
|
|
movs r0, 0x18
|
|
bl SetGpuReg
|
|
ldr r0, =gUnknown_02022E1E
|
|
ldrh r1, [r0]
|
|
movs r0, 0x1A
|
|
bl SetGpuReg
|
|
ldr r0, =gUnknown_02022E20
|
|
ldrh r1, [r0]
|
|
movs r0, 0x1C
|
|
bl SetGpuReg
|
|
ldr r0, =gUnknown_02022E22
|
|
ldrh r1, [r0]
|
|
movs r0, 0x1E
|
|
bl SetGpuReg
|
|
ldr r0, =gUnknown_02022E24
|
|
ldrh r1, [r0]
|
|
movs r0, 0x40
|
|
bl SetGpuReg
|
|
ldr r0, =gUnknown_02022E26
|
|
ldrh r1, [r0]
|
|
movs r0, 0x44
|
|
bl SetGpuReg
|
|
ldr r0, =gUnknown_02022E28
|
|
ldrh r1, [r0]
|
|
movs r0, 0x42
|
|
bl SetGpuReg
|
|
ldr r0, =gUnknown_02022E2A
|
|
ldrh r1, [r0]
|
|
movs r0, 0x46
|
|
bl SetGpuReg
|
|
bl LoadOam
|
|
bl ProcessSpriteCopyRequests
|
|
bl TransferPlttBuffer
|
|
bl sub_80BA0A8
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end vblank_cb_08078BB4
|
|
|
|
thumb_func_start nullsub_17
|
|
nullsub_17: @ 8038B00
|
|
bx lr
|
|
thumb_func_end nullsub_17
|
|
|
|
thumb_func_start sub_8038B04
|
|
sub_8038B04: @ 8038B04
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
beq _08038B24
|
|
movs r1, 0x32
|
|
ldrsh r0, [r5, r1]
|
|
movs r1, 0xFF
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
lsrs r0, 8
|
|
ldrh r1, [r5, 0x30]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x20]
|
|
b _08038B36
|
|
_08038B24:
|
|
movs r1, 0x32
|
|
ldrsh r0, [r5, r1]
|
|
movs r1, 0xFF
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
asrs r0, 8
|
|
ldrh r1, [r5, 0x30]
|
|
subs r1, r0
|
|
strh r1, [r5, 0x20]
|
|
_08038B36:
|
|
movs r1, 0xC0
|
|
lsls r1, 1
|
|
adds r0, r1, 0
|
|
ldrh r1, [r5, 0x32]
|
|
adds r0, r1
|
|
strh r0, [r5, 0x32]
|
|
adds r0, r5, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08038B6A
|
|
ldr r4, =0x00002710
|
|
adds r0, r4, 0
|
|
bl FreeSpriteTilesByTag
|
|
adds r0, r4, 0
|
|
bl FreeSpritePaletteByTag
|
|
adds r0, r5, 0
|
|
bl FreeSpriteOamMatrix
|
|
adds r0, r5, 0
|
|
bl DestroySprite
|
|
_08038B6A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8038B04
|
|
|
|
thumb_func_start sub_8038B74
|
|
sub_8038B74: @ 8038B74
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAffineAnim
|
|
ldr r0, =sub_8038B04
|
|
str r0, [r4, 0x1C]
|
|
movs r0, 0x68
|
|
bl PlaySE
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8038B74
|
|
|
|
thumb_func_start sub_8038B94
|
|
sub_8038B94: @ 8038B94
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x10
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
str r0, [sp, 0x4]
|
|
movs r1, 0
|
|
str r1, [sp, 0x8]
|
|
ldr r0, =gBattleScripting
|
|
adds r0, 0x25
|
|
ldrb r2, [r0]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08038C04
|
|
ldr r1, =gLinkPlayers
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x18]
|
|
cmp r0, 0x1
|
|
beq _08038BF0
|
|
cmp r0, 0x1
|
|
bgt _08038BE8
|
|
cmp r0, 0
|
|
beq _08038C04
|
|
b _08038C0C
|
|
.pool
|
|
_08038BE8:
|
|
cmp r0, 0x2
|
|
beq _08038C04
|
|
cmp r0, 0x3
|
|
bne _08038C0C
|
|
_08038BF0:
|
|
ldr r0, =gEnemyParty
|
|
str r0, [sp, 0x4]
|
|
ldr r1, =gPlayerParty
|
|
str r1, [sp, 0x8]
|
|
b _08038C0C
|
|
.pool
|
|
_08038C04:
|
|
ldr r2, =gPlayerParty
|
|
str r2, [sp, 0x4]
|
|
ldr r3, =gEnemyParty
|
|
str r3, [sp, 0x8]
|
|
_08038C0C:
|
|
movs r7, 0
|
|
movs r0, 0
|
|
mov r8, r0
|
|
ldr r1, [sp]
|
|
lsls r1, 2
|
|
str r1, [sp, 0xC]
|
|
movs r2, 0xCE
|
|
lsls r2, 1
|
|
mov r10, r2
|
|
mov r9, r0
|
|
_08038C20:
|
|
movs r0, 0x64
|
|
mov r4, r8
|
|
muls r4, r0
|
|
ldr r3, [sp, 0x4]
|
|
adds r4, r3, r4
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
adds r0, r4, 0
|
|
movs r1, 0x37
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
cmp r5, 0
|
|
beq _08038C90
|
|
cmp r5, r10
|
|
beq _08038C64
|
|
cmp r6, 0
|
|
beq _08038C64
|
|
cmp r1, 0
|
|
bne _08038C64
|
|
movs r0, 0x1
|
|
mov r2, r9
|
|
lsls r0, r2
|
|
orrs r7, r0
|
|
_08038C64:
|
|
cmp r5, 0
|
|
beq _08038C90
|
|
cmp r6, 0
|
|
beq _08038C7C
|
|
cmp r5, r10
|
|
beq _08038C74
|
|
cmp r1, 0
|
|
beq _08038C7C
|
|
_08038C74:
|
|
movs r0, 0x2
|
|
mov r3, r9
|
|
lsls r0, r3
|
|
orrs r7, r0
|
|
_08038C7C:
|
|
cmp r5, 0
|
|
beq _08038C90
|
|
cmp r5, r10
|
|
beq _08038C90
|
|
cmp r6, 0
|
|
bne _08038C90
|
|
movs r0, 0x3
|
|
mov r1, r9
|
|
lsls r0, r1
|
|
orrs r7, r0
|
|
_08038C90:
|
|
movs r2, 0x2
|
|
add r9, r2
|
|
movs r3, 0x1
|
|
add r8, r3
|
|
mov r0, r8
|
|
cmp r0, 0x5
|
|
ble _08038C20
|
|
ldr r1, =gTasks
|
|
ldr r2, [sp, 0xC]
|
|
ldr r3, [sp]
|
|
adds r0, r2, r3
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
strh r7, [r0, 0xE]
|
|
movs r7, 0
|
|
movs r0, 0
|
|
mov r8, r0
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
mov r10, r1
|
|
mov r9, r0
|
|
_08038CBA:
|
|
movs r0, 0x64
|
|
mov r4, r8
|
|
muls r4, r0
|
|
ldr r2, [sp, 0x8]
|
|
adds r4, r2, r4
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r5, r0, 16
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
lsls r0, 16
|
|
lsrs r6, r0, 16
|
|
adds r0, r4, 0
|
|
movs r1, 0x37
|
|
bl GetMonData
|
|
adds r1, r0, 0
|
|
cmp r5, 0
|
|
beq _08038D2A
|
|
cmp r5, r10
|
|
beq _08038CFE
|
|
cmp r6, 0
|
|
beq _08038CFE
|
|
cmp r1, 0
|
|
bne _08038CFE
|
|
movs r0, 0x1
|
|
mov r3, r9
|
|
lsls r0, r3
|
|
orrs r7, r0
|
|
_08038CFE:
|
|
cmp r5, 0
|
|
beq _08038D2A
|
|
cmp r6, 0
|
|
beq _08038D16
|
|
cmp r5, r10
|
|
beq _08038D0E
|
|
cmp r1, 0
|
|
beq _08038D16
|
|
_08038D0E:
|
|
movs r0, 0x2
|
|
mov r1, r9
|
|
lsls r0, r1
|
|
orrs r7, r0
|
|
_08038D16:
|
|
cmp r5, 0
|
|
beq _08038D2A
|
|
cmp r5, r10
|
|
beq _08038D2A
|
|
cmp r6, 0
|
|
bne _08038D2A
|
|
movs r0, 0x3
|
|
mov r2, r9
|
|
lsls r0, r2
|
|
orrs r7, r0
|
|
_08038D2A:
|
|
movs r3, 0x2
|
|
add r9, r3
|
|
movs r0, 0x1
|
|
add r8, r0
|
|
mov r1, r8
|
|
cmp r1, 0x5
|
|
ble _08038CBA
|
|
ldr r1, =gTasks
|
|
ldr r2, [sp, 0xC]
|
|
ldr r3, [sp]
|
|
adds r0, r2, r3
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
strh r7, [r0, 0x10]
|
|
add sp, 0x10
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8038B94
|
|
|
|
thumb_func_start sub_8038D64
|
|
sub_8038D64: @ 8038D64
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
movs r0, 0
|
|
bl SetHBlankCallback
|
|
movs r0, 0
|
|
bl SetVBlankCallback
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r2, 0x21
|
|
negs r2, r2
|
|
ands r1, r2
|
|
str r1, [r0]
|
|
ldr r0, =0x003f0100
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08038DAC
|
|
ldr r0, =gMain
|
|
ldr r0, [r0, 0x8]
|
|
bl SetMainCallback2
|
|
bl sub_8057028
|
|
bl dp11_free
|
|
bl sub_805F094
|
|
b _08038EB6
|
|
.pool
|
|
_08038DAC:
|
|
str r0, [sp]
|
|
movs r1, 0xC0
|
|
lsls r1, 19
|
|
ldr r2, =0x05006000
|
|
mov r0, sp
|
|
bl CpuSet
|
|
movs r0, 0x4C
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x40
|
|
movs r1, 0xF0
|
|
bl SetGpuReg
|
|
ldr r4, =0x00005051
|
|
movs r0, 0x44
|
|
adds r1, r4, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x48
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
movs r0, 0x4A
|
|
movs r1, 0
|
|
bl SetGpuReg
|
|
ldr r1, =gUnknown_02022E24
|
|
movs r0, 0xF0
|
|
strh r0, [r1]
|
|
ldr r0, =gUnknown_02022E26
|
|
strh r4, [r0]
|
|
bl dp12_8087EA4
|
|
ldr r0, =gUnknown_02038C28
|
|
movs r3, 0xF0
|
|
movs r1, 0xF0
|
|
lsls r1, 3
|
|
adds r2, r0, r1
|
|
movs r1, 0x4F
|
|
_08038DFE:
|
|
strh r3, [r0]
|
|
strh r3, [r2]
|
|
adds r2, 0x2
|
|
adds r0, 0x2
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bge _08038DFE
|
|
movs r1, 0x50
|
|
ldr r0, =gUnknown_02038C28
|
|
ldr r3, =0x0000ff10
|
|
movs r4, 0x82
|
|
lsls r4, 4
|
|
adds r2, r0, r4
|
|
adds r0, 0xA0
|
|
_08038E1A:
|
|
strh r3, [r0]
|
|
strh r3, [r2]
|
|
adds r2, 0x2
|
|
adds r0, 0x2
|
|
adds r1, 0x1
|
|
cmp r1, 0x9F
|
|
ble _08038E1A
|
|
bl ResetPaletteFade
|
|
ldr r0, =gUnknown_02022E14
|
|
movs r4, 0
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E16
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E18
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E1A
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E1C
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E1E
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E20
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E22
|
|
strh r4, [r0]
|
|
bl c2_berry_program_update_menu
|
|
ldr r0, =gUnknown_08C004E0
|
|
movs r1, 0
|
|
movs r2, 0x40
|
|
bl LoadCompressedPalette
|
|
bl sub_803570C
|
|
bl ResetSpriteData
|
|
bl ResetTasks
|
|
bl sub_8036154
|
|
movs r0, 0x4A
|
|
movs r1, 0x37
|
|
bl SetGpuReg
|
|
bl FreeAllSpritePalettes
|
|
ldr r1, =gReservedSpritePaletteCount
|
|
movs r0, 0x4
|
|
strb r0, [r1]
|
|
ldr r0, =vblank_cb_08078BB4
|
|
bl SetVBlankCallback
|
|
ldr r0, =task00_0800F6FC
|
|
movs r1, 0
|
|
bl CreateTask
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r2, =gTasks
|
|
lsls r1, r0, 2
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2
|
|
movs r2, 0x87
|
|
lsls r2, 1
|
|
strh r2, [r1, 0xA]
|
|
movs r2, 0x5A
|
|
strh r2, [r1, 0xC]
|
|
movs r2, 0x1
|
|
strh r2, [r1, 0x12]
|
|
bl sub_8038B94
|
|
ldr r0, =sub_8038F14
|
|
bl SetMainCallback2
|
|
ldr r0, =gBattleCommunication
|
|
strb r4, [r0]
|
|
_08038EB6:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8038D64
|
|
|
|
thumb_func_start sub_8038F14
|
|
sub_8038F14: @ 8038F14
|
|
push {lr}
|
|
bl sub_8038F34
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
bl RunTextPrinters
|
|
bl UpdatePaletteFade
|
|
bl RunTasks
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8038F14
|
|
|
|
thumb_func_start sub_8038F34
|
|
sub_8038F34: @ 8038F34
|
|
push {r4-r6,lr}
|
|
sub sp, 0x8
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r1, [r0]
|
|
adds r4, r0, 0
|
|
cmp r1, 0x9
|
|
bls _08038F44
|
|
b _080391C6
|
|
_08038F44:
|
|
lsls r0, r1, 2
|
|
ldr r1, =_08038F58
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_08038F58:
|
|
.4byte _08038F80
|
|
.4byte _08038FA0
|
|
.4byte _08038FC2
|
|
.4byte _080390C8
|
|
.4byte _08039100
|
|
.4byte _08039118
|
|
.4byte _0803912C
|
|
.4byte _0803914C
|
|
.4byte _08039166
|
|
.4byte _08039184
|
|
_08038F80:
|
|
movs r0, 0
|
|
bl ShowBg
|
|
movs r0, 0x1
|
|
bl ShowBg
|
|
movs r0, 0x2
|
|
bl ShowBg
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x1]
|
|
b _08039174
|
|
.pool
|
|
_08038FA0:
|
|
ldrb r0, [r4, 0x1]
|
|
subs r0, 0x1
|
|
strb r0, [r4, 0x1]
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _08038FB0
|
|
b _080391C6
|
|
_08038FB0:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r1, [sp]
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0x10
|
|
bl BeginNormalPaletteFade
|
|
b _0803910C
|
|
_08038FC2:
|
|
ldr r0, =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08038FD0
|
|
b _080391C6
|
|
_08038FD0:
|
|
bl sub_8185FAC
|
|
ldr r2, =gMain
|
|
ldr r1, =0x00000439
|
|
adds r2, r1
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
ldrb r3, [r2]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
movs r3, 0x2
|
|
cmp r0, 0
|
|
beq _08038FFC
|
|
movs r3, 0x4
|
|
_08038FFC:
|
|
movs r4, 0
|
|
ldr r6, =gSaveBlock2Ptr
|
|
cmp r4, r3
|
|
bge _08039022
|
|
ldr r1, =gLinkPlayers
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x3
|
|
bne _08039022
|
|
movs r5, 0xFF
|
|
adds r2, r1, 0
|
|
_08039010:
|
|
adds r2, 0x1C
|
|
adds r4, 0x1
|
|
cmp r4, r3
|
|
bge _08039022
|
|
ldrh r1, [r2]
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0x3
|
|
beq _08039010
|
|
_08039022:
|
|
ldr r0, [r6]
|
|
ldr r1, =0x00000ca9
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080390AC
|
|
cmp r4, r3
|
|
bne _080390AC
|
|
ldr r0, =0x000008d2
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08039074
|
|
bl FreeAllWindowBuffers
|
|
ldr r0, =sub_80392A8
|
|
bl SetMainCallback2
|
|
b _080391C6
|
|
.pool
|
|
_08039074:
|
|
ldr r2, =gMain
|
|
ldr r1, =0x00000439
|
|
adds r0, r2, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08039090
|
|
ldr r0, [r2, 0x8]
|
|
b _080390B0
|
|
.pool
|
|
_08039090:
|
|
ldr r0, =gUnknown_03003124
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08039172
|
|
ldr r0, =sub_80B3AF8
|
|
movs r1, 0x5
|
|
bl CreateTask
|
|
b _08039172
|
|
.pool
|
|
_080390AC:
|
|
ldr r0, =gMain
|
|
ldr r0, [r0, 0x8]
|
|
_080390B0:
|
|
bl SetMainCallback2
|
|
bl sub_8057028
|
|
bl dp11_free
|
|
bl sub_805F094
|
|
b _080391C6
|
|
.pool
|
|
_080390C8:
|
|
movs r0, 0
|
|
str r0, [sp, 0x4]
|
|
movs r1, 0xC0
|
|
lsls r1, 19
|
|
ldr r2, =0x05006000
|
|
add r0, sp, 0x4
|
|
bl CpuSet
|
|
movs r4, 0
|
|
_080390DA:
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl sub_80363C4
|
|
adds r4, 0x1
|
|
cmp r4, 0x1
|
|
ble _080390DA
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
movs r2, 0x10
|
|
movs r3, 0
|
|
bl BeginNormalPaletteFade
|
|
b _08039172
|
|
.pool
|
|
_08039100:
|
|
ldr r0, =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080391C6
|
|
_0803910C:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
b _080391C6
|
|
.pool
|
|
_08039118:
|
|
ldr r0, =sub_80B3AF8
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _080391C6
|
|
b _08039172
|
|
.pool
|
|
_0803912C:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080391C6
|
|
bl sub_800ADF8
|
|
ldr r0, =gUnknown_0824978D
|
|
movs r1, 0
|
|
bl battle_show_message_maybe
|
|
b _08039172
|
|
.pool
|
|
_0803914C:
|
|
movs r0, 0
|
|
bl IsTextPrinterActive
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _080391C6
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _080391C6
|
|
b _08039172
|
|
_08039166:
|
|
ldr r0, =gLinkVSyncDisabled
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08039172
|
|
bl sub_800AC34
|
|
_08039172:
|
|
ldr r1, =gBattleCommunication
|
|
_08039174:
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
b _080391C6
|
|
.pool
|
|
_08039184:
|
|
ldr r2, =gMain
|
|
ldr r1, =0x00000439
|
|
adds r0, r2, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
adds r3, r2, 0
|
|
cmp r0, 0
|
|
beq _080391A6
|
|
ldr r0, =gLinkVSyncDisabled
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _080391A6
|
|
ldr r0, =gUnknown_03003124
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
beq _080391C6
|
|
_080391A6:
|
|
ldr r0, =0x00000439
|
|
adds r2, r3, r0
|
|
ldrb r1, [r2]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, [r3, 0x8]
|
|
bl SetMainCallback2
|
|
bl sub_8057028
|
|
bl dp11_free
|
|
bl sub_805F094
|
|
_080391C6:
|
|
add sp, 0x8
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8038F34
|
|
|
|
thumb_func_start sub_80391E0
|
|
sub_80391E0: @ 80391E0
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0
|
|
cmp r1, 0x6
|
|
bhi _080392A0
|
|
lsls r0, r1, 2
|
|
ldr r1, =_08039200
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_08039200:
|
|
.4byte _0803921C
|
|
.4byte _08039230
|
|
.4byte _08039244
|
|
.4byte _08039258
|
|
.4byte _0803926C
|
|
.4byte _08039280
|
|
.4byte _08039294
|
|
_0803921C:
|
|
ldr r0, =gUnknown_0831AA08
|
|
lsls r1, r2, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, 30
|
|
lsrs r0, 30
|
|
b _080392A0
|
|
.pool
|
|
_08039230:
|
|
ldr r0, =gUnknown_0831AA08
|
|
lsls r1, r2, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, 28
|
|
lsrs r0, 30
|
|
b _080392A0
|
|
.pool
|
|
_08039244:
|
|
ldr r0, =gUnknown_0831AA08
|
|
lsls r1, r2, 2
|
|
adds r1, r0
|
|
ldrh r0, [r1]
|
|
lsls r0, 23
|
|
lsrs r0, 27
|
|
b _080392A0
|
|
.pool
|
|
_08039258:
|
|
ldr r0, =gUnknown_0831AA08
|
|
lsls r1, r2, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
lsls r0, 29
|
|
lsrs r0, 30
|
|
b _080392A0
|
|
.pool
|
|
_0803926C:
|
|
ldr r0, =gUnknown_0831AA08
|
|
lsls r1, r2, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
lsls r0, 28
|
|
lsrs r0, 31
|
|
b _080392A0
|
|
.pool
|
|
_08039280:
|
|
ldr r0, =gUnknown_0831AA08
|
|
lsls r1, r2, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
lsls r0, 26
|
|
lsrs r0, 30
|
|
b _080392A0
|
|
.pool
|
|
_08039294:
|
|
ldr r0, =gUnknown_0831AA08
|
|
lsls r1, r2, 2
|
|
adds r1, r0
|
|
ldr r0, [r1]
|
|
lsls r0, 8
|
|
lsrs r0, 22
|
|
_080392A0:
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_80391E0
|
|
|
|
thumb_func_start sub_80392A8
|
|
sub_80392A8: @ 80392A8
|
|
push {r4,lr}
|
|
sub sp, 0x8
|
|
movs r0, 0
|
|
bl SetHBlankCallback
|
|
movs r0, 0
|
|
bl SetVBlankCallback
|
|
movs r4, 0
|
|
str r4, [sp, 0x4]
|
|
movs r1, 0xC0
|
|
lsls r1, 19
|
|
ldr r2, =0x05006000
|
|
add r0, sp, 0x4
|
|
bl CpuSet
|
|
bl ResetPaletteFade
|
|
ldr r0, =gUnknown_02022E14
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E16
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E18
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E1A
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E1C
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E1E
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E20
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E22
|
|
strh r4, [r0]
|
|
bl c2_berry_program_update_menu
|
|
movs r1, 0x82
|
|
lsls r1, 5
|
|
movs r0, 0
|
|
bl SetGpuReg
|
|
bl sub_803570C
|
|
_080392FE:
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl sub_80363C4
|
|
adds r4, 0x1
|
|
cmp r4, 0x1
|
|
ble _080392FE
|
|
bl ResetSpriteData
|
|
bl ResetTasks
|
|
bl FreeAllSpritePalettes
|
|
ldr r1, =gReservedSpritePaletteCount
|
|
movs r0, 0x4
|
|
strb r0, [r1]
|
|
ldr r0, =vblank_cb_08078BB4
|
|
bl SetVBlankCallback
|
|
ldr r0, =sub_803937C
|
|
bl SetMainCallback2
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
movs r4, 0
|
|
str r4, [sp]
|
|
movs r1, 0
|
|
movs r2, 0x10
|
|
movs r3, 0
|
|
bl BeginNormalPaletteFade
|
|
ldr r0, =gBattleCommunication
|
|
strb r4, [r0]
|
|
add sp, 0x8
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80392A8
|
|
|
|
thumb_func_start sub_803937C
|
|
sub_803937C: @ 803937C
|
|
push {lr}
|
|
bl sub_803939C
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
bl RunTextPrinters
|
|
bl UpdatePaletteFade
|
|
bl RunTasks
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_803937C
|
|
|
|
thumb_func_start sub_803939C
|
|
sub_803939C: @ 803939C
|
|
push {r4,r5,lr}
|
|
sub sp, 0x4
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r1, [r0]
|
|
adds r4, r0, 0
|
|
cmp r1, 0xC
|
|
bls _080393AC
|
|
b _0803975E
|
|
_080393AC:
|
|
lsls r0, r1, 2
|
|
ldr r1, =_080393C0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_080393C0:
|
|
.4byte _080393F4
|
|
.4byte _08039414
|
|
.4byte _08039450
|
|
.4byte _08039470
|
|
.4byte _0803949C
|
|
.4byte _080394D8
|
|
.4byte _0803957C
|
|
.4byte _08039704
|
|
.4byte _080395CC
|
|
.4byte _08039610
|
|
.4byte _08039678
|
|
.4byte _080396A8
|
|
.4byte _08039704
|
|
_080393F4:
|
|
movs r0, 0
|
|
bl ShowBg
|
|
movs r0, 0x1
|
|
bl ShowBg
|
|
movs r0, 0x2
|
|
bl ShowBg
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
b _0803975C
|
|
.pool
|
|
_08039414:
|
|
ldr r0, =gMain
|
|
ldr r1, =0x00000439
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08039434
|
|
ldr r0, =gUnknown_03003124
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08039434
|
|
ldr r0, =sub_80B3AF8
|
|
movs r1, 0x5
|
|
bl CreateTask
|
|
_08039434:
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
b _0803975C
|
|
.pool
|
|
_08039450:
|
|
ldr r0, =sub_80B3AF8
|
|
bl FuncIsActiveTask
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803945E
|
|
b _0803975E
|
|
_0803945E:
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
b _0803975C
|
|
.pool
|
|
_08039470:
|
|
ldr r0, =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803947E
|
|
b _0803975E
|
|
_0803947E:
|
|
ldr r0, =gText_RecordBattleToPass
|
|
movs r1, 0
|
|
bl battle_show_message_maybe
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
b _0803975C
|
|
.pool
|
|
_0803949C:
|
|
movs r0, 0
|
|
bl IsTextPrinterActive
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
beq _080394AC
|
|
b _0803975E
|
|
_080394AC:
|
|
str r0, [sp]
|
|
movs r0, 0x18
|
|
movs r1, 0x8
|
|
movs r2, 0x1D
|
|
movs r3, 0xD
|
|
bl sub_8056A3C
|
|
ldr r0, =gText_BattleYesNoChoice
|
|
movs r1, 0xC
|
|
bl battle_show_message_maybe
|
|
ldr r4, =gBattleCommunication
|
|
movs r0, 0x1
|
|
strb r0, [r4, 0x1]
|
|
bl sub_8056B74
|
|
b _080396EA
|
|
.pool
|
|
_080394D8:
|
|
ldr r0, =gMain
|
|
ldrh r1, [r0, 0x2E]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08039500
|
|
ldrb r0, [r4, 0x1]
|
|
cmp r0, 0
|
|
bne _080394EC
|
|
b _0803975E
|
|
_080394EC:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldrb r0, [r4, 0x1]
|
|
bl sub_8056BAC
|
|
movs r0, 0
|
|
b _0803951E
|
|
.pool
|
|
_08039500:
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08039526
|
|
ldrb r0, [r4, 0x1]
|
|
cmp r0, 0
|
|
beq _08039510
|
|
b _0803975E
|
|
_08039510:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldrb r0, [r4, 0x1]
|
|
bl sub_8056BAC
|
|
movs r0, 0x1
|
|
_0803951E:
|
|
strb r0, [r4, 0x1]
|
|
bl sub_8056B74
|
|
b _0803975E
|
|
_08039526:
|
|
movs r5, 0x1
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08039560
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r4, =gBattleCommunication
|
|
ldrb r0, [r4, 0x1]
|
|
cmp r0, 0
|
|
beq _08039540
|
|
b _080396EA
|
|
_08039540:
|
|
str r5, [sp]
|
|
movs r0, 0x18
|
|
movs r1, 0x8
|
|
movs r2, 0x1D
|
|
movs r3, 0xD
|
|
bl sub_8056A3C
|
|
bl sub_8185338
|
|
strb r0, [r4, 0x1]
|
|
movs r0, 0xA
|
|
strb r0, [r4]
|
|
b _0803975E
|
|
.pool
|
|
_08039560:
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803956A
|
|
b _0803975E
|
|
_0803956A:
|
|
movs r0, 0x5
|
|
bl PlaySE
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
b _0803975C
|
|
.pool
|
|
_0803957C:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0803958A
|
|
b _0803975E
|
|
_0803958A:
|
|
str r0, [sp]
|
|
movs r0, 0x18
|
|
movs r1, 0x8
|
|
movs r2, 0x1D
|
|
movs r3, 0xD
|
|
bl sub_8056A3C
|
|
ldr r0, =gMain
|
|
ldr r1, =0x00000439
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080395B4
|
|
bl sub_800ADF8
|
|
ldr r0, =gUnknown_0824978D
|
|
movs r1, 0
|
|
bl battle_show_message_maybe
|
|
_080395B4:
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
b _0803975C
|
|
.pool
|
|
_080395CC:
|
|
ldrb r0, [r4, 0x1]
|
|
subs r0, 0x1
|
|
strb r0, [r4, 0x1]
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _080395DA
|
|
b _0803975E
|
|
_080395DA:
|
|
ldr r0, =gMain
|
|
ldr r1, =0x00000439
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080395F6
|
|
ldr r0, =gLinkVSyncDisabled
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _080395F6
|
|
bl sub_800AC34
|
|
_080395F6:
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
b _0803975C
|
|
.pool
|
|
_08039610:
|
|
ldr r2, =gMain
|
|
ldr r1, =0x00000439
|
|
adds r0, r2, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
adds r3, r2, 0
|
|
cmp r0, 0
|
|
beq _08039634
|
|
ldr r0, =gLinkVSyncDisabled
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08039634
|
|
ldr r0, =gUnknown_03003124
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _08039634
|
|
b _0803975E
|
|
_08039634:
|
|
ldr r0, =0x00000439
|
|
adds r2, r3, r0
|
|
ldrb r1, [r2]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08039650
|
|
b _0803975E
|
|
_08039650:
|
|
ldr r0, [r3, 0x8]
|
|
bl SetMainCallback2
|
|
bl sub_8057028
|
|
bl dp11_free
|
|
bl sub_805F094
|
|
b _0803975E
|
|
.pool
|
|
_08039678:
|
|
ldrb r0, [r4, 0x1]
|
|
cmp r0, 0x1
|
|
bne _080396A0
|
|
movs r0, 0x37
|
|
bl PlaySE
|
|
ldr r0, =gText_BattleRecordedOnPass
|
|
_08039686:
|
|
bl StrCpyDecodeToDisplayedStringBattle
|
|
ldr r0, =gDisplayedStringBattle
|
|
movs r1, 0
|
|
bl battle_show_message_maybe
|
|
movs r0, 0x80
|
|
strb r0, [r4, 0x1]
|
|
b _080396EA
|
|
.pool
|
|
_080396A0:
|
|
ldr r0, =gUnknown_08242481
|
|
b _08039686
|
|
.pool
|
|
_080396A8:
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0803975E
|
|
movs r0, 0
|
|
bl IsTextPrinterActive
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _0803975E
|
|
ldr r4, =gBattleCommunication
|
|
ldrb r0, [r4, 0x1]
|
|
subs r0, 0x1
|
|
strb r0, [r4, 0x1]
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803975E
|
|
ldr r0, =gMain
|
|
ldr r1, =0x00000439
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080396EA
|
|
bl sub_800ADF8
|
|
ldr r0, =gUnknown_0824978D
|
|
movs r1, 0
|
|
bl battle_show_message_maybe
|
|
_080396EA:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
b _0803975E
|
|
.pool
|
|
_08039704:
|
|
movs r0, 0
|
|
bl IsTextPrinterActive
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
cmp r4, 0
|
|
bne _0803975E
|
|
ldr r0, =gMain
|
|
ldr r1, =0x00000439
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _08039744
|
|
bl sub_800A520
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0803975E
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r4, [sp]
|
|
b _0803974A
|
|
.pool
|
|
_08039744:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r1, [sp]
|
|
_0803974A:
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0x10
|
|
bl BeginNormalPaletteFade
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x20
|
|
strb r0, [r1, 0x1]
|
|
movs r0, 0x8
|
|
_0803975C:
|
|
strb r0, [r1]
|
|
_0803975E:
|
|
add sp, 0x4
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803939C
|
|
|
|
thumb_func_start shedinja_something
|
|
shedinja_something: @ 803976C
|
|
push {r4,r5,lr}
|
|
sub sp, 0x10
|
|
adds r4, r0, 0
|
|
add r5, sp, 0xC
|
|
movs r0, 0x1
|
|
strb r0, [r5]
|
|
adds r0, r4, 0
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
ldr r1, =0x0000012f
|
|
cmp r0, r1
|
|
bne _080397B4
|
|
adds r0, r4, 0
|
|
movs r1, 0x3
|
|
bl GetMonData
|
|
ldrb r1, [r5]
|
|
cmp r0, r1
|
|
beq _080397B4
|
|
adds r0, r4, 0
|
|
movs r1, 0x2
|
|
mov r2, sp
|
|
bl GetMonData
|
|
ldr r1, =gUnknown_0831ACA0
|
|
mov r0, sp
|
|
bl StringCompareWithoutExtCtrlCodes
|
|
cmp r0, 0
|
|
bne _080397B4
|
|
adds r0, r4, 0
|
|
movs r1, 0x3
|
|
adds r2, r5, 0
|
|
bl SetMonData
|
|
_080397B4:
|
|
add sp, 0x10
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end shedinja_something
|
|
|
|
thumb_func_start sub_80397C4
|
|
sub_80397C4: @ 80397C4
|
|
ldr r2, =gUnknown_0831ABA0
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
lsls r1, 3
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x3]
|
|
lsls r0, 3
|
|
bx lr
|
|
.pool
|
|
thumb_func_end sub_80397C4
|
|
|
|
thumb_func_start oac_poke_opponent
|
|
oac_poke_opponent: @ 80397DC
|
|
push {lr}
|
|
sub sp, 0x4
|
|
ldr r1, =sub_803980C
|
|
str r1, [r0, 0x1C]
|
|
movs r1, 0
|
|
bl StartSpriteAnimIfDifferent
|
|
movs r0, 0x80
|
|
lsls r0, 10
|
|
ldr r1, =0x00002108
|
|
str r1, [sp]
|
|
movs r1, 0
|
|
movs r2, 0xA
|
|
movs r3, 0xA
|
|
bl BeginNormalPaletteFade
|
|
add sp, 0x4
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end oac_poke_opponent
|
|
|
|
thumb_func_start sub_803980C
|
|
sub_803980C: @ 803980C
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldr r0, =gUnknown_020243FC
|
|
ldrh r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803982C
|
|
ldrh r0, [r2, 0x24]
|
|
adds r0, 0x2
|
|
strh r0, [r2, 0x24]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _0803982C
|
|
ldr r0, =sub_8039838
|
|
str r0, [r2, 0x1C]
|
|
_0803982C:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803980C
|
|
|
|
thumb_func_start sub_8039838
|
|
sub_8039838: @ 8039838
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08039880
|
|
ldrh r0, [r4, 0x2E]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl sub_8076918
|
|
ldr r1, =gHealthBoxesIds
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bl sub_80729D0
|
|
ldr r0, =sub_8039894
|
|
str r0, [r4, 0x1C]
|
|
adds r0, r4, 0
|
|
movs r1, 0
|
|
bl StartSpriteAnimIfDifferent
|
|
movs r0, 0x80
|
|
lsls r0, 10
|
|
ldr r1, =0x00002108
|
|
str r1, [sp]
|
|
movs r1, 0
|
|
movs r2, 0xA
|
|
movs r3, 0
|
|
bl BeginNormalPaletteFade
|
|
_08039880:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8039838
|
|
|
|
thumb_func_start sub_8039894
|
|
sub_8039894: @ 8039894
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldr r0, =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080398B0
|
|
ldrh r1, [r2, 0x32]
|
|
adds r0, r2, 0
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
bl BattleAnimateFrontSprite
|
|
_080398B0:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8039894
|
|
|
|
thumb_func_start SpriteCallbackDummy_2
|
|
SpriteCallbackDummy_2: @ 80398B8
|
|
bx lr
|
|
thumb_func_end SpriteCallbackDummy_2
|
|
|
|
thumb_func_start sub_80398BC
|
|
sub_80398BC: @ 80398BC
|
|
movs r1, 0x6
|
|
strh r1, [r0, 0x34]
|
|
movs r1, 0x1
|
|
strh r1, [r0, 0x36]
|
|
ldr r1, =sub_80398D0
|
|
str r1, [r0, 0x1C]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end sub_80398BC
|
|
|
|
thumb_func_start sub_80398D0
|
|
sub_80398D0: @ 80398D0
|
|
push {r4,lr}
|
|
adds r3, r0, 0
|
|
ldrh r0, [r3, 0x36]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x36]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08039924
|
|
movs r0, 0x8
|
|
strh r0, [r3, 0x36]
|
|
movs r0, 0x3E
|
|
adds r0, r3
|
|
mov r12, r0
|
|
ldrb r2, [r0]
|
|
lsls r0, r2, 29
|
|
lsrs r0, 31
|
|
movs r1, 0x1
|
|
eors r1, r0
|
|
lsls r1, 2
|
|
movs r4, 0x5
|
|
negs r4, r4
|
|
adds r0, r4, 0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
mov r1, r12
|
|
strb r0, [r1]
|
|
ldrh r0, [r3, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x34]
|
|
lsls r0, 16
|
|
asrs r2, r0, 16
|
|
cmp r2, 0
|
|
bne _08039924
|
|
ldrb r1, [r1]
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
mov r1, r12
|
|
strb r0, [r1]
|
|
ldr r0, =SpriteCallbackDummy_2
|
|
str r0, [r3, 0x1C]
|
|
ldr r0, =gUnknown_02022F88
|
|
str r2, [r0]
|
|
_08039924:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_80398D0
|
|
|
|
thumb_func_start sub_8039934
|
|
sub_8039934: @ 8039934
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
mov r9, r0
|
|
ldrh r0, [r0, 0x2E]
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r0, =gUnknown_020244D0
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r6, 2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
beq _0803995C
|
|
adds r4, r0, 0
|
|
b _08039960
|
|
.pool
|
|
_0803995C:
|
|
mov r0, r9
|
|
ldrh r4, [r0, 0x32]
|
|
_08039960:
|
|
ldr r1, =gBattlePartyID
|
|
lsls r0, r6, 1
|
|
adds r5, r0, r1
|
|
ldrh r0, [r5]
|
|
movs r1, 0x64
|
|
mov r8, r1
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
ldr r7, =gEnemyParty
|
|
adds r0, r7
|
|
movs r1, 0
|
|
bl GetMonData
|
|
cmp r4, 0xC9
|
|
bne _080399E4
|
|
ldrh r0, [r5]
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r0, r7
|
|
movs r1, 0
|
|
bl GetMonData
|
|
adds r2, r0, 0
|
|
movs r0, 0xC0
|
|
lsls r0, 18
|
|
ands r0, r2
|
|
lsrs r0, 18
|
|
movs r1, 0xC0
|
|
lsls r1, 10
|
|
ands r1, r2
|
|
lsrs r1, 12
|
|
orrs r0, r1
|
|
movs r1, 0xC0
|
|
lsls r1, 2
|
|
ands r1, r2
|
|
lsrs r1, 6
|
|
orrs r0, r1
|
|
movs r1, 0x3
|
|
ands r1, r2
|
|
orrs r0, r1
|
|
movs r1, 0x1C
|
|
bl __umodsi3
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0
|
|
bne _080399D0
|
|
movs r0, 0xC9
|
|
b _080399DA
|
|
.pool
|
|
_080399D0:
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
_080399DA:
|
|
ldr r1, =gUnknown_08300D38
|
|
lsls r0, 2
|
|
b _08039A1C
|
|
.pool
|
|
_080399E4:
|
|
ldr r0, =0x00000181
|
|
cmp r4, r0
|
|
bne _08039A08
|
|
ldr r0, =gUnknown_08525F78
|
|
ldr r1, =gBattleMonForms
|
|
adds r1, r6, r1
|
|
ldrb r1, [r1]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x1]
|
|
b _08039A20
|
|
.pool
|
|
_08039A08:
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
bls _08039A18
|
|
ldr r0, =gUnknown_08300D38
|
|
b _08039A1E
|
|
.pool
|
|
_08039A18:
|
|
ldr r1, =gUnknown_08300D38
|
|
lsls r0, r4, 2
|
|
_08039A1C:
|
|
adds r0, r1
|
|
_08039A1E:
|
|
ldrb r0, [r0, 0x1]
|
|
_08039A20:
|
|
lsrs r1, r0, 3
|
|
movs r0, 0x8
|
|
subs r0, r1
|
|
mov r1, r9
|
|
strh r0, [r1, 0x34]
|
|
movs r0, 0x1
|
|
strh r0, [r1, 0x36]
|
|
ldr r0, =sub_8039A48
|
|
str r0, [r1, 0x1C]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8039934
|
|
|
|
thumb_func_start sub_8039A48
|
|
sub_8039A48: @ 8039A48
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x36]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x36]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08039AC8
|
|
movs r0, 0x2
|
|
strh r0, [r4, 0x36]
|
|
ldrh r0, [r4, 0x26]
|
|
adds r0, 0x8
|
|
strh r0, [r4, 0x26]
|
|
ldrh r0, [r4, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r4, 0x34]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bge _08039A7C
|
|
adds r0, r4, 0
|
|
bl FreeSpriteOamMatrix
|
|
adds r0, r4, 0
|
|
bl DestroySprite
|
|
b _08039AC8
|
|
_08039A7C:
|
|
ldrh r0, [r4, 0x2E]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankIdentity
|
|
ldr r1, =gBattleSpritesGfx
|
|
ldr r1, [r1]
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
adds r1, 0x4
|
|
adds r1, r0
|
|
ldr r2, =gBattleMonForms
|
|
movs r3, 0x2E
|
|
ldrsh r0, [r4, r3]
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
lsls r0, 11
|
|
ldr r1, [r1]
|
|
adds r1, r0
|
|
movs r2, 0x34
|
|
ldrsh r0, [r4, r2]
|
|
lsls r0, 8
|
|
adds r1, r0
|
|
movs r2, 0
|
|
movs r0, 0xFF
|
|
_08039AAE:
|
|
strb r2, [r1]
|
|
adds r1, 0x1
|
|
subs r0, 0x1
|
|
cmp r0, 0
|
|
bge _08039AAE
|
|
ldr r0, =gBattleMonForms
|
|
movs r3, 0x2E
|
|
ldrsh r1, [r4, r3]
|
|
adds r1, r0
|
|
ldrb r1, [r1]
|
|
adds r0, r4, 0
|
|
bl StartSpriteAnim
|
|
_08039AC8:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8039A48
|
|
|
|
thumb_func_start sub_8039AD8
|
|
sub_8039AD8: @ 8039AD8
|
|
movs r1, 0x8
|
|
strh r1, [r0, 0x34]
|
|
adds r1, r0, 0
|
|
adds r1, 0x3E
|
|
ldrb r1, [r1]
|
|
lsls r1, 29
|
|
lsrs r1, 31
|
|
strh r1, [r0, 0x36]
|
|
ldr r1, =sub_8039AF4
|
|
str r1, [r0, 0x1C]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end sub_8039AD8
|
|
|
|
thumb_func_start sub_8039AF4
|
|
sub_8039AF4: @ 8039AF4
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
ldrh r0, [r3, 0x34]
|
|
subs r0, 0x1
|
|
strh r0, [r3, 0x34]
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
bne _08039B26
|
|
movs r0, 0x3E
|
|
adds r0, r3
|
|
mov r12, r0
|
|
ldrb r2, [r0]
|
|
lsls r0, r2, 29
|
|
lsrs r0, 31
|
|
movs r1, 0x1
|
|
eors r1, r0
|
|
lsls r1, 2
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
mov r1, r12
|
|
strb r0, [r1]
|
|
movs r0, 0x8
|
|
strh r0, [r3, 0x34]
|
|
_08039B26:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8039AF4
|
|
|
|
thumb_func_start sub_8039B2C
|
|
sub_8039B2C: @ 8039B2C
|
|
movs r1, 0x3E
|
|
adds r1, r0
|
|
mov r12, r1
|
|
movs r1, 0x1
|
|
ldrh r2, [r0, 0x36]
|
|
ands r2, r1
|
|
lsls r2, 2
|
|
mov r1, r12
|
|
ldrb r3, [r1]
|
|
movs r1, 0x5
|
|
negs r1, r1
|
|
ands r1, r3
|
|
orrs r1, r2
|
|
mov r2, r12
|
|
strb r1, [r2]
|
|
movs r1, 0
|
|
strh r1, [r0, 0x36]
|
|
ldr r1, =SpriteCallbackDummy_2
|
|
str r1, [r0, 0x1C]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end sub_8039B2C
|
|
|
|
thumb_func_start sub_8039B58
|
|
sub_8039B58: @ 8039B58
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08039BA0
|
|
ldr r0, =gHitMarker
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08039B80
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, =0x02000002
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08039B94
|
|
_08039B80:
|
|
ldrh r0, [r4, 0x32]
|
|
bl HasTwoFramesAnimation
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08039B94
|
|
adds r0, r4, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
_08039B94:
|
|
ldrh r1, [r4, 0x32]
|
|
adds r0, r4, 0
|
|
movs r2, 0x1
|
|
movs r3, 0x1
|
|
bl BattleAnimateFrontSprite
|
|
_08039BA0:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8039B58
|
|
|
|
thumb_func_start sub_8039BB4
|
|
sub_8039BB4: @ 8039BB4
|
|
ldr r1, =oac_poke_ally_
|
|
str r1, [r0, 0x1C]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end sub_8039BB4
|
|
|
|
thumb_func_start oac_poke_ally_
|
|
oac_poke_ally_: @ 8039BC0
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldr r0, =gUnknown_020243FC
|
|
ldrh r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08039BE4
|
|
ldrh r0, [r2, 0x24]
|
|
subs r0, 0x2
|
|
strh r0, [r2, 0x24]
|
|
lsls r0, 16
|
|
asrs r1, r0, 16
|
|
cmp r1, 0
|
|
bne _08039BE4
|
|
ldr r0, =nullsub_19
|
|
str r0, [r2, 0x1C]
|
|
strh r1, [r2, 0x30]
|
|
_08039BE4:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end oac_poke_ally_
|
|
|
|
thumb_func_start sub_8039BF0
|
|
sub_8039BF0: @ 8039BF0
|
|
ldr r1, =nullsub_19
|
|
str r1, [r0, 0x1C]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end sub_8039BF0
|
|
|
|
thumb_func_start nullsub_19
|
|
nullsub_19: @ 8039BFC
|
|
bx lr
|
|
thumb_func_end nullsub_19
|
|
|
|
thumb_func_start sub_8039C00
|
|
sub_8039C00: @ 8039C00
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldr r0, =gUnknown_020243FC
|
|
ldrh r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08039C20
|
|
ldrh r0, [r2, 0x30]
|
|
ldrh r1, [r2, 0x24]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x24]
|
|
ldrh r0, [r2, 0x32]
|
|
ldrh r1, [r2, 0x26]
|
|
adds r0, r1
|
|
strh r0, [r2, 0x26]
|
|
_08039C20:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8039C00
|
|
|
|
thumb_func_start dp11b_obj_instanciate
|
|
dp11b_obj_instanciate: @ 8039C28
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r8, r1
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r9, r2
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
mov r10, r3
|
|
cmp r1, 0
|
|
beq _08039C64
|
|
ldr r0, =gUnknown_020244D0
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, 0x4]
|
|
lsls r2, r4, 1
|
|
adds r0, r2, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x2
|
|
b _08039C76
|
|
.pool
|
|
_08039C64:
|
|
ldr r0, =gUnknown_020244D0
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, 0x4]
|
|
lsls r2, r4, 1
|
|
adds r0, r2, r4
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x4
|
|
_08039C76:
|
|
ands r0, r1
|
|
adds r6, r2, 0
|
|
cmp r0, 0
|
|
bne _08039D2C
|
|
ldr r0, =objc_dp11b_pingpong
|
|
bl CreateInvisibleSpriteWithCallback
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
mov r0, r8
|
|
cmp r0, 0x1
|
|
bne _08039CD0
|
|
ldr r0, =gHealthBoxesIds
|
|
adds r0, r4, r0
|
|
ldrb r7, [r0]
|
|
ldr r2, =gUnknown_020244D0
|
|
ldr r0, [r2]
|
|
ldr r0, [r0, 0x4]
|
|
adds r1, r6, r4
|
|
lsls r1, 2
|
|
adds r0, r1, r0
|
|
strb r5, [r0, 0x2]
|
|
ldr r0, [r2]
|
|
ldr r0, [r0, 0x4]
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, 0x2
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
ldr r2, =gSprites
|
|
lsls r3, r5, 4
|
|
adds r0, r3, r5
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0x80
|
|
b _08039CFE
|
|
.pool
|
|
_08039CD0:
|
|
ldr r0, =gBankSpriteIds
|
|
adds r0, r4, r0
|
|
ldrb r7, [r0]
|
|
ldr r2, =gUnknown_020244D0
|
|
ldr r0, [r2]
|
|
ldr r0, [r0, 0x4]
|
|
adds r1, r6, r4
|
|
lsls r1, 2
|
|
adds r0, r1, r0
|
|
strb r5, [r0, 0x3]
|
|
ldr r0, [r2]
|
|
ldr r0, [r0, 0x4]
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, 0x4
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
ldr r2, =gSprites
|
|
lsls r3, r5, 4
|
|
adds r0, r3, r5
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
movs r1, 0xC0
|
|
_08039CFE:
|
|
strh r1, [r0, 0x2E]
|
|
adds r4, r2, 0
|
|
adds r1, r3, r5
|
|
lsls r1, 2
|
|
adds r1, r4
|
|
mov r2, r9
|
|
lsls r0, r2, 24
|
|
asrs r0, 24
|
|
movs r2, 0
|
|
strh r0, [r1, 0x30]
|
|
mov r3, r10
|
|
lsls r0, r3, 24
|
|
asrs r0, 24
|
|
strh r0, [r1, 0x32]
|
|
strh r7, [r1, 0x34]
|
|
mov r0, r8
|
|
strh r0, [r1, 0x36]
|
|
lsls r0, r7, 4
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
strh r2, [r0, 0x24]
|
|
strh r2, [r0, 0x26]
|
|
_08039D2C:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end dp11b_obj_instanciate
|
|
|
|
thumb_func_start dp11b_obj_free
|
|
dp11b_obj_free: @ 8039D48
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
cmp r1, 0x1
|
|
bne _08039D9C
|
|
ldr r6, =gUnknown_020244D0
|
|
ldr r0, [r6]
|
|
ldr r1, [r0, 0x4]
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
lsls r5, r0, 2
|
|
adds r3, r5, r1
|
|
ldrb r1, [r3]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08039DEA
|
|
ldr r2, =gSprites
|
|
ldrb r1, [r3, 0x2]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x34]
|
|
lsls r1, 24
|
|
lsrs r4, r1, 24
|
|
bl DestroySprite
|
|
ldr r0, [r6]
|
|
ldr r1, [r0, 0x4]
|
|
adds r1, r5, r1
|
|
ldrb r2, [r1]
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
b _08039DD6
|
|
.pool
|
|
_08039D9C:
|
|
ldr r6, =gUnknown_020244D0
|
|
ldr r0, [r6]
|
|
ldr r1, [r0, 0x4]
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
lsls r5, r0, 2
|
|
adds r3, r5, r1
|
|
ldrb r1, [r3]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08039DEA
|
|
ldr r2, =gSprites
|
|
ldrb r1, [r3, 0x3]
|
|
lsls r0, r1, 4
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrh r1, [r0, 0x34]
|
|
lsls r1, 24
|
|
lsrs r4, r1, 24
|
|
bl DestroySprite
|
|
ldr r0, [r6]
|
|
ldr r1, [r0, 0x4]
|
|
adds r1, r5, r1
|
|
ldrb r2, [r1]
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
_08039DD6:
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r0, =gSprites
|
|
lsls r1, r4, 4
|
|
adds r1, r4
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
movs r0, 0
|
|
strh r0, [r1, 0x24]
|
|
strh r0, [r1, 0x26]
|
|
_08039DEA:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end dp11b_obj_free
|
|
|
|
thumb_func_start objc_dp11b_pingpong
|
|
objc_dp11b_pingpong: @ 8039DF8
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4, 0x34]
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r1, 0x36
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, 0x1
|
|
bne _08039E10
|
|
movs r2, 0x2E
|
|
ldrsh r0, [r4, r2]
|
|
b _08039E14
|
|
_08039E10:
|
|
movs r1, 0x2E
|
|
ldrsh r0, [r4, r1]
|
|
_08039E14:
|
|
movs r2, 0x32
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldr r2, =gSprites
|
|
lsls r1, r5, 4
|
|
adds r1, r5
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrh r2, [r4, 0x32]
|
|
adds r0, r2
|
|
strh r0, [r1, 0x26]
|
|
ldrh r0, [r4, 0x30]
|
|
ldrh r1, [r4, 0x2E]
|
|
adds r0, r1
|
|
movs r1, 0xFF
|
|
ands r0, r1
|
|
strh r0, [r4, 0x2E]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end objc_dp11b_pingpong
|
|
|
|
thumb_func_start sub_8039E44
|
|
sub_8039E44: @ 8039E44
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08039E5C
|
|
ldrh r1, [r2, 0x32]
|
|
adds r0, r2, 0
|
|
bl BattleAnimateBackSprite
|
|
_08039E5C:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8039E44
|
|
|
|
thumb_func_start sub_8039E60
|
|
sub_8039E60: @ 8039E60
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
bl sub_8039E9C
|
|
adds r0, r4, 0
|
|
adds r0, 0x3F
|
|
ldrb r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08039E7A
|
|
ldr r0, =nullsub_19
|
|
str r0, [r4, 0x1C]
|
|
_08039E7A:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8039E60
|
|
|
|
thumb_func_start sub_8039E84
|
|
sub_8039E84: @ 8039E84
|
|
push {r4,lr}
|
|
adds r4, r0, 0
|
|
movs r1, 0x1
|
|
bl StartSpriteAnim
|
|
ldr r0, =sub_8039E60
|
|
str r0, [r4, 0x1C]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8039E84
|
|
|
|
thumb_func_start sub_8039E9C
|
|
sub_8039E9C: @ 8039E9C
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
adds r0, 0x2C
|
|
ldrb r1, [r0]
|
|
movs r0, 0x3F
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08039EBE
|
|
ldr r1, =gUnknown_0831ACE0
|
|
adds r0, r2, 0
|
|
adds r0, 0x2B
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
adds r0, r2, 0
|
|
adds r0, 0x28
|
|
strb r1, [r0]
|
|
_08039EBE:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8039E9C
|
|
|
|
thumb_func_start nullsub_20
|
|
nullsub_20: @ 8039EC8
|
|
bx lr
|
|
thumb_func_end nullsub_20
|
|
|
|
thumb_func_start sub_8039ECC
|
|
sub_8039ECC: @ 8039ECC
|
|
push {lr}
|
|
bl sub_8039F40
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0
|
|
strb r0, [r1, 0x1]
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =bc_8012FAC
|
|
str r0, [r1]
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8039ECC
|
|
|
|
thumb_func_start sub_8039EF0
|
|
sub_8039EF0: @ 8039EF0
|
|
push {r4,r5,lr}
|
|
ldr r0, =gBattleMainFunc
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
ldr r1, =gActiveBank
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08039F2A
|
|
ldr r5, =gBattleBankFunc
|
|
adds r4, r1, 0
|
|
_08039F0C:
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
ldr r1, =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _08039F0C
|
|
_08039F2A:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8039EF0
|
|
|
|
thumb_func_start sub_8039F40
|
|
sub_8039F40: @ 8039F40
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
movs r0, 0
|
|
bl sub_803D580
|
|
bl sub_803D6A0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
ldr r0, =gUnknown_02024260
|
|
mov r10, r0
|
|
ldr r1, =gUnknown_02024258
|
|
mov r9, r1
|
|
ldr r0, =gUnknown_02024250
|
|
mov r8, r0
|
|
ldr r1, =gLastUsedMovesByBanks
|
|
mov r12, r1
|
|
ldr r5, =gDisableStructs
|
|
movs r4, 0
|
|
ldr r7, =gUnknown_02024240
|
|
ldr r6, =gUnknown_02024268
|
|
_08039F70:
|
|
ldr r0, =gStatuses3
|
|
adds r0, r4, r0
|
|
str r3, [r0]
|
|
movs r1, 0
|
|
_08039F78:
|
|
adds r0, r5, r1
|
|
strb r3, [r0]
|
|
adds r1, 0x1
|
|
cmp r1, 0x1B
|
|
bls _08039F78
|
|
movs r0, 0x2
|
|
strb r0, [r5, 0x16]
|
|
ldr r1, =gUnknown_02024284
|
|
adds r0, r2, r1
|
|
strb r3, [r0]
|
|
mov r0, r12
|
|
strh r3, [r0]
|
|
mov r1, r8
|
|
strh r3, [r1]
|
|
mov r0, r9
|
|
strh r3, [r0]
|
|
mov r1, r10
|
|
strh r3, [r1]
|
|
ldr r0, =gUnknown_02024270
|
|
adds r1, r2, r0
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
strh r3, [r6]
|
|
strh r3, [r7]
|
|
ldr r1, =gBattleResources
|
|
ldr r0, [r1]
|
|
ldr r0, [r0, 0x4]
|
|
adds r0, r4
|
|
str r3, [r0]
|
|
ldr r1, =gUnknown_02024230
|
|
adds r0, r4, r1
|
|
str r3, [r0]
|
|
movs r0, 0x2
|
|
add r10, r0
|
|
add r9, r0
|
|
add r8, r0
|
|
add r12, r0
|
|
adds r5, 0x1C
|
|
adds r4, 0x4
|
|
adds r7, 0x2
|
|
adds r6, 0x2
|
|
adds r2, 0x1
|
|
cmp r2, 0x3
|
|
ble _08039F70
|
|
movs r5, 0
|
|
ldr r3, =gSideTimers
|
|
ldr r4, =gSideAffecting
|
|
movs r2, 0x1
|
|
_08039FD8:
|
|
strh r5, [r4]
|
|
movs r1, 0
|
|
_08039FDC:
|
|
adds r0, r3, r1
|
|
strb r5, [r0]
|
|
adds r1, 0x1
|
|
cmp r1, 0xB
|
|
bls _08039FDC
|
|
adds r3, 0xC
|
|
adds r4, 0x2
|
|
subs r2, 0x1
|
|
cmp r2, 0
|
|
bge _08039FD8
|
|
movs r1, 0
|
|
ldr r2, =gBankAttacker
|
|
strb r1, [r2]
|
|
ldr r0, =gBankTarget
|
|
strb r1, [r0]
|
|
ldr r2, =gBattleWeather
|
|
strh r1, [r2]
|
|
ldr r1, =gWishFutureKnock
|
|
movs r2, 0
|
|
movs r3, 0
|
|
_0803A004:
|
|
adds r0, r1, r2
|
|
strb r3, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x2B
|
|
bls _0803A004
|
|
ldr r2, =gHitMarker
|
|
movs r0, 0
|
|
str r0, [r2]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803A090
|
|
movs r0, 0x2
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _0803A0AE
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldrb r1, [r0, 0x15]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803A0AE
|
|
movs r0, 0x80
|
|
b _0803A0AC
|
|
.pool
|
|
_0803A090:
|
|
ldr r0, =0x02000002
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _0803A0AE
|
|
bl sub_8185FB8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803A0AE
|
|
ldr r1, =gHitMarker
|
|
ldr r0, [r1]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
ldr r2, =gHitMarker
|
|
_0803A0AC:
|
|
str r0, [r2]
|
|
_0803A0AE:
|
|
ldr r3, =gBattleScripting
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x15]
|
|
lsls r0, 30
|
|
lsrs r0, 31
|
|
movs r1, 0
|
|
strb r0, [r3, 0x1D]
|
|
ldr r0, =gUnknown_02024212
|
|
strb r1, [r0]
|
|
ldr r0, =gBattleOutcome
|
|
strb r1, [r0]
|
|
ldr r0, =gBattleExecBuffer
|
|
str r1, [r0]
|
|
ldr r0, =gUnknown_0202432E
|
|
movs r2, 0
|
|
strh r1, [r0]
|
|
ldr r1, =gBattleResources
|
|
ldr r0, [r1]
|
|
ldr r0, [r0, 0x8]
|
|
adds r0, 0x20
|
|
strb r2, [r0]
|
|
ldr r0, [r1]
|
|
ldr r0, [r0, 0xC]
|
|
adds r0, 0x20
|
|
strb r2, [r0]
|
|
ldr r5, =gUnknown_0202432C
|
|
ldr r6, =gBattleMoveDamage
|
|
ldr r7, =gUnknown_020243FC
|
|
ldr r0, =gUnknown_03005D54
|
|
mov r8, r0
|
|
ldr r1, =gAbsentBankFlags
|
|
mov r9, r1
|
|
ldr r2, =gEnemyParty
|
|
mov r10, r2
|
|
ldr r1, =gBattleCommunication
|
|
movs r2, 0
|
|
adds r0, r1, 0x7
|
|
_0803A0FA:
|
|
strb r2, [r0]
|
|
subs r0, 0x1
|
|
cmp r0, r1
|
|
bge _0803A0FA
|
|
movs r4, 0
|
|
strh r4, [r5]
|
|
movs r0, 0
|
|
str r0, [r6]
|
|
strh r0, [r7]
|
|
strb r4, [r3, 0x18]
|
|
strb r4, [r3, 0x19]
|
|
mov r0, r8
|
|
strb r4, [r0]
|
|
mov r1, r9
|
|
strb r4, [r1]
|
|
ldr r5, =gBattleStruct
|
|
ldr r0, [r5]
|
|
adds r0, 0x6C
|
|
strb r4, [r0]
|
|
ldr r0, [r5]
|
|
adds r0, 0x79
|
|
strb r4, [r0]
|
|
ldr r0, [r5]
|
|
adds r0, 0x7A
|
|
strb r4, [r0]
|
|
mov r0, r10
|
|
movs r1, 0xB
|
|
bl GetMonData
|
|
ldr r6, [r5]
|
|
adds r6, 0x7C
|
|
ldr r2, =gBaseStats
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r1, [r1, 0x8]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =0x000004fb
|
|
bl __divsi3
|
|
strb r0, [r6]
|
|
ldr r0, [r5]
|
|
adds r0, 0x7B
|
|
movs r1, 0x3
|
|
strb r1, [r0]
|
|
ldr r0, [r5]
|
|
strb r4, [r0, 0x12]
|
|
ldr r0, [r5]
|
|
adds r0, 0x4A
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
movs r2, 0
|
|
movs r1, 0
|
|
adds r6, r5, 0
|
|
_0803A16A:
|
|
ldr r0, [r5]
|
|
adds r0, r2, r0
|
|
adds r0, 0x98
|
|
strb r1, [r0]
|
|
ldr r0, [r5]
|
|
adds r0, r2, r0
|
|
adds r0, 0xB8
|
|
strb r1, [r0]
|
|
ldr r0, [r5]
|
|
adds r0, r2, r0
|
|
adds r0, 0xC8
|
|
strb r1, [r0]
|
|
ldr r0, [r5]
|
|
adds r0, r2, r0
|
|
adds r0, 0xD0
|
|
strb r1, [r0]
|
|
ldr r0, [r5]
|
|
adds r0, r2, r0
|
|
adds r0, 0xE0
|
|
strb r1, [r0]
|
|
ldr r0, [r5]
|
|
adds r0, r2, r0
|
|
adds r0, 0xE8
|
|
strb r1, [r0]
|
|
ldr r0, [r5]
|
|
adds r0, r2, r0
|
|
adds r0, 0xF0
|
|
strb r1, [r0]
|
|
ldr r0, [r5]
|
|
adds r0, r2, r0
|
|
adds r0, 0xF8
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x7
|
|
ble _0803A16A
|
|
movs r2, 0
|
|
ldr r4, =gBattleStruct
|
|
movs r3, 0xA5
|
|
lsls r3, 2
|
|
movs r1, 0x6
|
|
_0803A1BA:
|
|
ldr r0, [r4]
|
|
adds r0, r2, r0
|
|
adds r0, r3
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x3
|
|
ble _0803A1BA
|
|
ldr r0, [r6]
|
|
adds r0, 0xDF
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
ldr r0, [r6]
|
|
adds r0, 0x92
|
|
strb r1, [r0]
|
|
bl Random
|
|
ldr r1, =gUnknown_02024330
|
|
strh r0, [r1]
|
|
ldr r1, =gBattleResults
|
|
movs r2, 0
|
|
movs r3, 0
|
|
_0803A1E4:
|
|
adds r0, r1, r2
|
|
strb r3, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x43
|
|
bls _0803A1E4
|
|
ldr r0, =gEnemyParty
|
|
bl IsMonShiny
|
|
ldr r3, =gBattleResults
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
lsls r1, 6
|
|
ldrb r2, [r3, 0x5]
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, 0x5]
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r2]
|
|
movs r1, 0xA8
|
|
lsls r1, 2
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
ldr r2, =0x000002a1
|
|
adds r0, r2
|
|
strb r1, [r0]
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_8039F40
|
|
|
|
thumb_func_start sub_803A284
|
|
sub_803A284: @ 803A284
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x20
|
|
ldr r4, =gDisableStructs
|
|
ldr r5, =gActiveBank
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
mov r1, sp
|
|
adds r0, r4
|
|
ldm r0!, {r2,r3,r6}
|
|
stm r1!, {r2,r3,r6}
|
|
ldm r0!, {r2,r3,r7}
|
|
stm r1!, {r2,r3,r7}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldr r2, =gBattleMoves
|
|
ldr r3, =gCurrentMove
|
|
ldrh r1, [r3]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
mov r12, r4
|
|
mov r9, r5
|
|
ldr r6, =gStatuses3
|
|
mov r10, r6
|
|
cmp r0, 0x7F
|
|
beq _0803A35C
|
|
movs r5, 0
|
|
mov r6, r9
|
|
movs r4, 0x58
|
|
ldr r2, =gBattleMons
|
|
adds r2, 0x18
|
|
movs r1, 0x6
|
|
_0803A2D4:
|
|
ldrb r0, [r6]
|
|
muls r0, r4
|
|
adds r0, r5, r0
|
|
adds r0, r2
|
|
strb r1, [r0]
|
|
adds r5, 0x1
|
|
cmp r5, 0x7
|
|
ble _0803A2D4
|
|
movs r5, 0
|
|
ldr r7, =gNoOfAllBanks
|
|
ldrb r7, [r7]
|
|
cmp r5, r7
|
|
bge _0803A348
|
|
ldr r0, =gBattleMons + 0x50
|
|
mov r8, r0
|
|
ldr r4, =gDisableStructs
|
|
ldr r3, =gStatuses3
|
|
_0803A2F6:
|
|
movs r0, 0x58
|
|
muls r0, r5
|
|
mov r1, r8
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x80
|
|
lsls r0, 19
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803A31A
|
|
ldrb r0, [r4, 0x14]
|
|
ldr r6, =gActiveBank
|
|
ldrb r6, [r6]
|
|
cmp r0, r6
|
|
bne _0803A31A
|
|
ldr r0, =0xfbffffff
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
_0803A31A:
|
|
ldr r1, [r3]
|
|
movs r0, 0x18
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803A33A
|
|
ldrb r0, [r4, 0x15]
|
|
ldr r7, =gActiveBank
|
|
ldrb r7, [r7]
|
|
cmp r0, r7
|
|
bne _0803A33A
|
|
movs r0, 0x19
|
|
negs r0, r0
|
|
ands r1, r0
|
|
str r1, [r3]
|
|
movs r0, 0
|
|
strb r0, [r4, 0x15]
|
|
_0803A33A:
|
|
adds r4, 0x1C
|
|
adds r3, 0x4
|
|
adds r5, 0x1
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0803A2F6
|
|
_0803A348:
|
|
ldr r1, =gCurrentMove
|
|
ldrh r0, [r1]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r2, =gBattleMoves
|
|
adds r1, r2
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x7F
|
|
bne _0803A414
|
|
_0803A35C:
|
|
mov r3, r9
|
|
ldrb r1, [r3]
|
|
movs r0, 0x58
|
|
adds r2, r1, 0
|
|
muls r2, r0
|
|
ldr r0, =gBattleMons
|
|
adds r0, 0x50
|
|
adds r2, r0
|
|
ldr r0, [r2]
|
|
ldr r1, =0x15100007
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldrb r1, [r3]
|
|
lsls r1, 2
|
|
add r1, r10
|
|
ldr r0, [r1]
|
|
ldr r2, =0x0003043f
|
|
ands r0, r2
|
|
str r0, [r1]
|
|
movs r5, 0
|
|
ldr r6, =gNoOfAllBanks
|
|
ldrb r6, [r6]
|
|
cmp r5, r6
|
|
bge _0803A430
|
|
mov r7, r9
|
|
movs r6, 0
|
|
_0803A390:
|
|
ldrb r0, [r7]
|
|
bl GetBankSide
|
|
adds r4, r0, 0
|
|
lsls r0, r5, 24
|
|
lsrs r0, 24
|
|
bl GetBankSide
|
|
lsls r4, 24
|
|
lsls r0, 24
|
|
cmp r4, r0
|
|
beq _0803A3D0
|
|
ldr r1, =gStatuses3
|
|
lsls r0, r5, 2
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, 0x18
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803A3D0
|
|
ldr r0, =gDisableStructs
|
|
adds r0, r6, r0
|
|
ldrb r0, [r0, 0x15]
|
|
ldrb r3, [r7]
|
|
cmp r0, r3
|
|
bne _0803A3D0
|
|
movs r0, 0x19
|
|
negs r0, r0
|
|
ands r1, r0
|
|
movs r0, 0x10
|
|
orrs r1, r0
|
|
str r1, [r2]
|
|
_0803A3D0:
|
|
adds r6, 0x1C
|
|
adds r5, 0x1
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0803A390
|
|
ldr r6, =gDisableStructs
|
|
mov r12, r6
|
|
ldr r7, =gActiveBank
|
|
mov r9, r7
|
|
b _0803A430
|
|
.pool
|
|
_0803A414:
|
|
mov r0, r9
|
|
ldrb r1, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
ldr r1, =gBattleMons
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
mov r2, r9
|
|
ldrb r0, [r2]
|
|
lsls r0, 2
|
|
add r0, r10
|
|
str r1, [r0]
|
|
_0803A430:
|
|
movs r5, 0
|
|
ldr r3, =gBattleStruct
|
|
mov r8, r3
|
|
ldr r6, =gUnknown_020244AC
|
|
mov r10, r6
|
|
ldr r7, =gNoOfAllBanks
|
|
ldrb r7, [r7]
|
|
cmp r5, r7
|
|
bge _0803A490
|
|
ldr r3, =gBattleMons + 0x50
|
|
ldr r7, =gBitTable
|
|
ldr r6, =gActiveBank
|
|
_0803A448:
|
|
movs r0, 0x58
|
|
muls r0, r5
|
|
adds r4, r0, r3
|
|
ldrb r0, [r6]
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
ldr r0, [r0]
|
|
lsls r2, r0, 16
|
|
ldr r1, [r4]
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803A466
|
|
bics r1, r2
|
|
str r1, [r4]
|
|
_0803A466:
|
|
ldr r1, [r4]
|
|
movs r0, 0xE0
|
|
lsls r0, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803A486
|
|
mov r2, r8
|
|
ldr r0, [r2]
|
|
adds r0, r5, r0
|
|
ldrb r0, [r0, 0x14]
|
|
ldrb r2, [r6]
|
|
cmp r0, r2
|
|
bne _0803A486
|
|
ldr r0, =0xffff1fff
|
|
ands r1, r0
|
|
str r1, [r4]
|
|
_0803A486:
|
|
adds r5, 0x1
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0803A448
|
|
_0803A490:
|
|
mov r1, r9
|
|
ldrb r0, [r1]
|
|
add r0, r10
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
mov r2, r9
|
|
ldrb r0, [r2]
|
|
ldr r3, =gUnknown_020244B0
|
|
adds r0, r3
|
|
strb r1, [r0]
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
mov r6, r12
|
|
adds r1, r0, r6
|
|
movs r5, 0
|
|
movs r2, 0
|
|
_0803A4B4:
|
|
adds r0, r1, r5
|
|
strb r2, [r0]
|
|
adds r5, 0x1
|
|
cmp r5, 0x1B
|
|
bls _0803A4B4
|
|
ldr r7, =gCurrentMove
|
|
ldrh r0, [r7]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
lsls r1, 2
|
|
ldr r0, =gBattleMoves
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x7F
|
|
bne _0803A540
|
|
mov r2, r9
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
add r0, r12
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0xA]
|
|
strb r1, [r0, 0xA]
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
add r0, r12
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x15]
|
|
strb r1, [r0, 0x15]
|
|
ldrb r0, [r2]
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
add r1, r12
|
|
mov r0, sp
|
|
ldrb r2, [r0, 0xF]
|
|
lsls r2, 28
|
|
movs r4, 0xF
|
|
lsrs r2, 28
|
|
ldrb r3, [r1, 0xF]
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
strb r0, [r1, 0xF]
|
|
mov r3, r9
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
add r0, r12
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0xF]
|
|
lsrs r1, 4
|
|
lsls r1, 4
|
|
ldrb r2, [r0, 0xF]
|
|
ands r4, r2
|
|
orrs r4, r1
|
|
strb r4, [r0, 0xF]
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
add r0, r12
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x14]
|
|
strb r1, [r0, 0x14]
|
|
_0803A540:
|
|
movs r0, 0
|
|
ldr r6, =gBattleMoveFlags
|
|
strb r0, [r6]
|
|
mov r7, r9
|
|
ldrb r1, [r7]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
add r0, r12
|
|
movs r4, 0
|
|
movs r1, 0x2
|
|
strb r1, [r0, 0x16]
|
|
ldrb r0, [r7]
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
add r1, r12
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x18]
|
|
movs r2, 0x2
|
|
ands r2, r0
|
|
ldrb r3, [r1, 0x18]
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
strb r0, [r1, 0x18]
|
|
ldrb r0, [r7]
|
|
lsls r0, 1
|
|
ldr r1, =gLastUsedMovesByBanks
|
|
adds r0, r1
|
|
movs r2, 0
|
|
strh r4, [r0]
|
|
ldrb r0, [r7]
|
|
lsls r0, 1
|
|
ldr r3, =gUnknown_02024250
|
|
adds r0, r3
|
|
strh r4, [r0]
|
|
ldrb r0, [r7]
|
|
lsls r0, 1
|
|
ldr r6, =gUnknown_02024258
|
|
adds r0, r6
|
|
strh r4, [r0]
|
|
ldrb r0, [r7]
|
|
lsls r0, 1
|
|
ldr r7, =gUnknown_02024260
|
|
adds r0, r7
|
|
strh r4, [r0]
|
|
mov r1, r9
|
|
ldrb r0, [r1]
|
|
lsls r0, 1
|
|
ldr r3, =gUnknown_02024240
|
|
adds r0, r3
|
|
strh r4, [r0]
|
|
ldrb r0, [r1]
|
|
ldr r6, =gUnknown_02024270
|
|
adds r0, r6
|
|
movs r1, 0xFF
|
|
strb r1, [r0]
|
|
mov r7, r9
|
|
ldrb r0, [r7]
|
|
mov r3, r8
|
|
ldr r1, [r3]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
adds r0, 0x98
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
adds r0, 0x99
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE0
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE1
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE2
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE3
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE4
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE5
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE6
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE7
|
|
strb r2, [r0]
|
|
ldr r1, [r3]
|
|
adds r1, 0x92
|
|
ldrb r0, [r7]
|
|
lsls r0, 2
|
|
ldr r6, =gBitTable
|
|
adds r0, r6
|
|
ldr r2, [r0]
|
|
ldrb r0, [r1]
|
|
bics r0, r2
|
|
strb r0, [r1]
|
|
movs r5, 0
|
|
ldr r7, =gNoOfAllBanks
|
|
ldrb r7, [r7]
|
|
cmp r5, r7
|
|
bge _0803A6B4
|
|
mov r3, r9
|
|
mov r7, r8
|
|
movs r6, 0
|
|
_0803A656:
|
|
ldrb r0, [r3]
|
|
cmp r5, r0
|
|
beq _0803A68C
|
|
lsls r0, r5, 24
|
|
lsrs r0, 24
|
|
str r3, [sp, 0x1C]
|
|
bl GetBankSide
|
|
adds r4, r0, 0
|
|
ldr r3, [sp, 0x1C]
|
|
ldrb r0, [r3]
|
|
bl GetBankSide
|
|
lsls r4, 24
|
|
lsls r0, 24
|
|
ldr r3, [sp, 0x1C]
|
|
cmp r4, r0
|
|
beq _0803A68C
|
|
ldr r0, [r7]
|
|
lsls r1, r5, 1
|
|
adds r0, r1, r0
|
|
adds r0, 0x98
|
|
strb r6, [r0]
|
|
ldr r0, [r7]
|
|
adds r1, r0
|
|
adds r1, 0x99
|
|
strb r6, [r1]
|
|
_0803A68C:
|
|
ldrb r0, [r3]
|
|
ldr r1, [r7]
|
|
lsls r0, 1
|
|
lsls r2, r5, 3
|
|
adds r0, r2
|
|
adds r0, r1
|
|
adds r0, 0xE0
|
|
strb r6, [r0]
|
|
ldrb r0, [r3]
|
|
ldr r1, [r7]
|
|
lsls r0, 1
|
|
adds r0, r2
|
|
adds r0, r1
|
|
adds r0, 0xE1
|
|
strb r6, [r0]
|
|
adds r5, 0x1
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0803A656
|
|
_0803A6B4:
|
|
mov r1, r9
|
|
ldrb r0, [r1]
|
|
mov r2, r8
|
|
ldr r1, [r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
adds r0, 0xC8
|
|
movs r2, 0
|
|
strb r2, [r0]
|
|
mov r3, r9
|
|
ldrb r0, [r3]
|
|
mov r6, r8
|
|
ldr r1, [r6]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
adds r0, 0xC9
|
|
strb r2, [r0]
|
|
ldr r0, =gBattleResources
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, 0x4]
|
|
ldrb r0, [r3]
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
movs r2, 0
|
|
str r2, [r1]
|
|
ldr r0, =gCurrentMove
|
|
strh r2, [r0]
|
|
ldr r0, [r6]
|
|
adds r0, 0xDA
|
|
movs r1, 0xFF
|
|
strb r1, [r0]
|
|
ldrb r0, [r3]
|
|
bl ClearBankMoveHistory
|
|
mov r7, r9
|
|
ldrb r0, [r7]
|
|
bl ClearBankAbilityHistory
|
|
add sp, 0x20
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803A284
|
|
|
|
thumb_func_start sub_803A75C
|
|
sub_803A75C: @ 803A75C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
movs r5, 0
|
|
ldr r6, =gBattleMons
|
|
ldr r0, =gStatuses3
|
|
mov r8, r0
|
|
ldr r1, =gBattleStruct
|
|
mov r12, r1
|
|
ldr r2, =gUnknown_020244AC
|
|
mov r9, r2
|
|
ldr r3, =gUnknown_020244B0
|
|
mov r10, r3
|
|
ldr r7, =gProtectStructs
|
|
ldr r4, =gActiveBank
|
|
movs r3, 0x58
|
|
adds r2, r6, 0
|
|
adds r2, 0x18
|
|
movs r1, 0x6
|
|
_0803A788:
|
|
ldrb r0, [r4]
|
|
muls r0, r3
|
|
adds r0, r5, r0
|
|
adds r0, r2
|
|
strb r1, [r0]
|
|
adds r5, 0x1
|
|
cmp r5, 0x7
|
|
ble _0803A788
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
adds r2, r6, 0
|
|
adds r2, 0x50
|
|
adds r0, r2
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
ldr r3, =gActiveBank
|
|
ldrb r0, [r3]
|
|
lsls r0, 2
|
|
add r0, r8
|
|
str r1, [r0]
|
|
movs r5, 0
|
|
ldr r6, =gNoOfAllBanks
|
|
ldrb r6, [r6]
|
|
cmp r5, r6
|
|
bge _0803A830
|
|
adds r3, r2, 0
|
|
movs r4, 0
|
|
ldr r0, =gBitTable
|
|
mov r8, r0
|
|
_0803A7C6:
|
|
ldr r1, [r3]
|
|
movs r0, 0x80
|
|
lsls r0, 19
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803A7E6
|
|
ldr r2, =gDisableStructs
|
|
adds r0, r4, r2
|
|
ldrb r0, [r0, 0x14]
|
|
ldr r6, =gActiveBank
|
|
ldrb r6, [r6]
|
|
cmp r0, r6
|
|
bne _0803A7E6
|
|
ldr r0, =0xfbffffff
|
|
ands r1, r0
|
|
str r1, [r3]
|
|
_0803A7E6:
|
|
ldr r1, =gActiveBank
|
|
ldrb r0, [r1]
|
|
lsls r0, 2
|
|
add r0, r8
|
|
ldr r0, [r0]
|
|
lsls r2, r0, 16
|
|
ldr r1, [r3]
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803A800
|
|
bics r1, r2
|
|
str r1, [r3]
|
|
_0803A800:
|
|
ldr r1, [r3]
|
|
movs r0, 0xE0
|
|
lsls r0, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803A822
|
|
mov r2, r12
|
|
ldr r0, [r2]
|
|
adds r0, r5, r0
|
|
ldrb r0, [r0, 0x14]
|
|
ldr r6, =gActiveBank
|
|
ldrb r6, [r6]
|
|
cmp r0, r6
|
|
bne _0803A822
|
|
ldr r0, =0xffff1fff
|
|
ands r1, r0
|
|
str r1, [r3]
|
|
_0803A822:
|
|
adds r3, 0x58
|
|
adds r4, 0x1C
|
|
adds r5, 0x1
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0803A7C6
|
|
_0803A830:
|
|
ldr r1, =gActiveBank
|
|
ldrb r0, [r1]
|
|
add r0, r9
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
ldr r2, =gActiveBank
|
|
ldrb r0, [r2]
|
|
add r0, r10
|
|
strb r1, [r0]
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
ldr r3, =gDisableStructs
|
|
adds r1, r0, r3
|
|
movs r5, 0
|
|
movs r2, 0
|
|
_0803A852:
|
|
adds r0, r1, r5
|
|
strb r2, [r0]
|
|
adds r5, 0x1
|
|
cmp r5, 0x1B
|
|
bls _0803A852
|
|
ldr r6, =gActiveBank
|
|
ldrb r1, [r6]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1]
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
mov r9, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldrb r1, [r6]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1]
|
|
movs r3, 0x3
|
|
negs r3, r3
|
|
mov r8, r3
|
|
mov r0, r8
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldrb r1, [r6]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1]
|
|
movs r6, 0x5
|
|
negs r6, r6
|
|
adds r0, r6, 0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1]
|
|
subs r3, 0x6
|
|
mov r10, r3
|
|
mov r0, r10
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1]
|
|
movs r0, 0x11
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r2, =gActiveBank
|
|
ldrb r1, [r2]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1]
|
|
movs r5, 0x21
|
|
negs r5, r5
|
|
adds r0, r5, 0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r3, =gActiveBank
|
|
ldrb r1, [r3]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1]
|
|
movs r4, 0x41
|
|
negs r4, r4
|
|
adds r0, r4, 0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldrb r1, [r3]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1]
|
|
movs r3, 0x7F
|
|
adds r0, r3, 0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1, 0x1]
|
|
mov r0, r9
|
|
ands r0, r2
|
|
strb r0, [r1, 0x1]
|
|
ldr r2, =gActiveBank
|
|
ldrb r1, [r2]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1, 0x1]
|
|
mov r0, r8
|
|
ands r0, r2
|
|
strb r0, [r1, 0x1]
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1, 0x1]
|
|
adds r0, r6, 0
|
|
ands r0, r2
|
|
strb r0, [r1, 0x1]
|
|
ldr r2, =gActiveBank
|
|
ldrb r1, [r2]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1, 0x1]
|
|
movs r0, 0x19
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1, 0x1]
|
|
ldr r1, =gActiveBank
|
|
ldrb r0, [r1]
|
|
lsls r0, 4
|
|
adds r0, r7
|
|
ldrb r1, [r0, 0x1]
|
|
ands r5, r1
|
|
strb r5, [r0, 0x1]
|
|
ldr r2, =gActiveBank
|
|
ldrb r0, [r2]
|
|
lsls r0, 4
|
|
adds r0, r7
|
|
ldrb r1, [r0, 0x1]
|
|
ands r4, r1
|
|
strb r4, [r0, 0x1]
|
|
ldrb r0, [r2]
|
|
lsls r0, 4
|
|
adds r0, r7
|
|
ldrb r1, [r0, 0x1]
|
|
ands r3, r1
|
|
strb r3, [r0, 0x1]
|
|
ldrb r0, [r2]
|
|
lsls r0, 4
|
|
adds r0, r7
|
|
ldrb r1, [r0, 0x2]
|
|
mov r3, r9
|
|
ands r3, r1
|
|
strb r3, [r0, 0x2]
|
|
ldrb r0, [r2]
|
|
lsls r0, 4
|
|
adds r0, r7
|
|
ldrb r1, [r0, 0x2]
|
|
mov r2, r8
|
|
ands r2, r1
|
|
strb r2, [r0, 0x2]
|
|
ldr r3, =gActiveBank
|
|
ldrb r0, [r3]
|
|
lsls r0, 4
|
|
adds r0, r7
|
|
ldrb r1, [r0, 0x2]
|
|
ands r6, r1
|
|
strb r6, [r0, 0x2]
|
|
ldrb r0, [r3]
|
|
lsls r0, 4
|
|
adds r0, r7
|
|
ldrb r1, [r0, 0x2]
|
|
mov r6, r10
|
|
ands r6, r1
|
|
strb r6, [r0, 0x2]
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
ldr r1, =gDisableStructs
|
|
adds r0, r1
|
|
movs r2, 0
|
|
movs r1, 0x2
|
|
strb r1, [r0, 0x16]
|
|
ldrb r0, [r3]
|
|
lsls r0, 1
|
|
ldr r3, =gLastUsedMovesByBanks
|
|
adds r0, r3
|
|
movs r3, 0
|
|
strh r2, [r0]
|
|
ldr r6, =gActiveBank
|
|
ldrb r0, [r6]
|
|
lsls r0, 1
|
|
ldr r1, =gUnknown_02024250
|
|
adds r0, r1
|
|
strh r2, [r0]
|
|
ldrb r0, [r6]
|
|
lsls r0, 1
|
|
ldr r6, =gUnknown_02024258
|
|
adds r0, r6
|
|
strh r2, [r0]
|
|
ldr r1, =gActiveBank
|
|
ldrb r0, [r1]
|
|
lsls r0, 1
|
|
ldr r6, =gUnknown_02024260
|
|
adds r0, r6
|
|
strh r2, [r0]
|
|
ldrb r0, [r1]
|
|
lsls r0, 1
|
|
ldr r1, =gUnknown_02024240
|
|
adds r0, r1
|
|
strh r2, [r0]
|
|
ldr r2, =gActiveBank
|
|
ldrb r0, [r2]
|
|
ldr r6, =gUnknown_02024270
|
|
adds r0, r6
|
|
movs r1, 0xFF
|
|
strb r1, [r0]
|
|
ldrb r0, [r2]
|
|
mov r2, r12
|
|
ldr r1, [r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
adds r0, 0xC8
|
|
strb r3, [r0]
|
|
ldr r6, =gActiveBank
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
adds r0, 0xC9
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
adds r0, 0x98
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
adds r0, 0x99
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE0
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE1
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE2
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE3
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE4
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE5
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE6
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, 3
|
|
adds r0, r1
|
|
adds r0, 0xE7
|
|
strb r3, [r0]
|
|
ldr r1, [r2]
|
|
adds r1, 0x92
|
|
ldrb r0, [r6]
|
|
lsls r0, 2
|
|
ldr r2, =gBitTable
|
|
adds r0, r2
|
|
ldr r2, [r0]
|
|
ldrb r0, [r1]
|
|
bics r0, r2
|
|
strb r0, [r1]
|
|
movs r5, 0
|
|
ldr r3, =gNoOfAllBanks
|
|
ldrb r3, [r3]
|
|
cmp r5, r3
|
|
bge _0803AB02
|
|
adds r3, r6, 0
|
|
mov r7, r12
|
|
movs r6, 0
|
|
_0803AAA4:
|
|
ldrb r0, [r3]
|
|
cmp r5, r0
|
|
beq _0803AADA
|
|
lsls r0, r5, 24
|
|
lsrs r0, 24
|
|
str r3, [sp]
|
|
bl GetBankSide
|
|
adds r4, r0, 0
|
|
ldr r3, [sp]
|
|
ldrb r0, [r3]
|
|
bl GetBankSide
|
|
lsls r4, 24
|
|
lsls r0, 24
|
|
ldr r3, [sp]
|
|
cmp r4, r0
|
|
beq _0803AADA
|
|
ldr r0, [r7]
|
|
lsls r1, r5, 1
|
|
adds r0, r1, r0
|
|
adds r0, 0x98
|
|
strb r6, [r0]
|
|
ldr r0, [r7]
|
|
adds r1, r0
|
|
adds r1, 0x99
|
|
strb r6, [r1]
|
|
_0803AADA:
|
|
ldrb r0, [r3]
|
|
ldr r1, [r7]
|
|
lsls r0, 1
|
|
lsls r2, r5, 3
|
|
adds r0, r2
|
|
adds r0, r1
|
|
adds r0, 0xE0
|
|
strb r6, [r0]
|
|
ldrb r0, [r3]
|
|
ldr r1, [r7]
|
|
lsls r0, 1
|
|
adds r0, r2
|
|
adds r0, r1
|
|
adds r0, 0xE1
|
|
strb r6, [r0]
|
|
adds r5, 0x1
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0803AAA4
|
|
_0803AB02:
|
|
ldr r0, =gBattleResources
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, 0x4]
|
|
ldr r2, =gActiveBank
|
|
ldrb r0, [r2]
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
ldr r4, =gBattleMons
|
|
ldrb r0, [r2]
|
|
movs r3, 0x58
|
|
adds r2, r0, 0
|
|
muls r2, r3
|
|
b _0803AB6C
|
|
.pool
|
|
_0803AB6C:
|
|
adds r2, r4
|
|
ldr r5, =gBaseStats
|
|
ldrh r1, [r2]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldrb r0, [r0, 0x6]
|
|
adds r2, 0x21
|
|
strb r0, [r2]
|
|
ldr r6, =gActiveBank
|
|
ldrb r0, [r6]
|
|
adds r1, r0, 0
|
|
muls r1, r3
|
|
adds r1, r4
|
|
ldrh r2, [r1]
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldrb r0, [r0, 0x7]
|
|
adds r1, 0x22
|
|
strb r0, [r1]
|
|
ldrb r0, [r6]
|
|
bl ClearBankMoveHistory
|
|
ldrb r0, [r6]
|
|
bl ClearBankAbilityHistory
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803A75C
|
|
|
|
thumb_func_start bc_8012FAC
|
|
bc_8012FAC: @ 803ABC0
|
|
push {r4,r5,lr}
|
|
ldr r5, =gBattleCommunication
|
|
ldrb r0, [r5]
|
|
cmp r0, 0
|
|
beq _0803ABD4
|
|
cmp r0, 0x1
|
|
beq _0803ABF8
|
|
b _0803AC2E
|
|
.pool
|
|
_0803ABD4:
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r5, 0x1]
|
|
strb r0, [r4]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl dp01_build_cmdbuf_x00_a_b_0
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
ldrb r0, [r5]
|
|
adds r0, 0x1
|
|
strb r0, [r5]
|
|
b _0803AC2E
|
|
.pool
|
|
_0803ABF8:
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r2, [r0]
|
|
cmp r2, 0
|
|
bne _0803AC2E
|
|
ldrb r0, [r5, 0x1]
|
|
adds r0, 0x1
|
|
strb r0, [r5, 0x1]
|
|
ldr r1, =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bne _0803AC2C
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =bc_load_battlefield
|
|
str r0, [r1]
|
|
b _0803AC2E
|
|
.pool
|
|
_0803AC2C:
|
|
strb r2, [r5]
|
|
_0803AC2E:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end bc_8012FAC
|
|
|
|
thumb_func_start bc_load_battlefield
|
|
bc_load_battlefield: @ 803AC34
|
|
push {r4,r5,lr}
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r5, [r0]
|
|
cmp r5, 0
|
|
bne _0803AC64
|
|
movs r0, 0
|
|
bl GetBankByPlayerAI
|
|
ldr r4, =gActiveBank
|
|
strb r0, [r4]
|
|
ldr r0, =gUnknown_02022FF0
|
|
ldrb r1, [r0]
|
|
movs r0, 0
|
|
bl dp01_build_cmdbuf_x2E_a
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803AC84
|
|
str r0, [r1]
|
|
ldr r0, =gBattleCommunication
|
|
strb r5, [r0]
|
|
strb r5, [r0, 0x1]
|
|
_0803AC64:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bc_load_battlefield
|
|
|
|
thumb_func_start sub_803AC84
|
|
sub_803AC84: @ 803AC84
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r1, [r0]
|
|
cmp r1, 0
|
|
beq _0803AC98
|
|
b _0803AF4E
|
|
_0803AC98:
|
|
ldr r2, =gActiveBank
|
|
strb r1, [r2]
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
bcc _0803ACA6
|
|
b _0803AF48
|
|
_0803ACA6:
|
|
movs r7, 0x58
|
|
ldr r0, =gBattleMons
|
|
mov r8, r0
|
|
mov r9, r2
|
|
movs r1, 0x48
|
|
add r1, r8
|
|
mov r10, r1
|
|
_0803ACB4:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803ACFC
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803ACFC
|
|
ldrb r0, [r4]
|
|
muls r0, r7
|
|
mov r2, r8
|
|
adds r3, r0, r2
|
|
movs r2, 0
|
|
movs r1, 0
|
|
_0803ACDA:
|
|
adds r0, r3, r2
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x57
|
|
bls _0803ACDA
|
|
b _0803ADCA
|
|
.pool
|
|
_0803ACFC:
|
|
mov r1, r9
|
|
ldrb r0, [r1]
|
|
muls r0, r7
|
|
mov r2, r8
|
|
adds r3, r0, r2
|
|
movs r2, 0
|
|
ldr r6, =gBaseStats
|
|
ldr r5, =gBattleBufferB
|
|
ldr r4, =gActiveBank
|
|
_0803AD0E:
|
|
adds r0, r3, r2
|
|
ldrb r1, [r4]
|
|
lsls r1, 9
|
|
adds r1, 0x4
|
|
adds r1, r2, r1
|
|
adds r1, r5
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x57
|
|
bls _0803AD0E
|
|
mov r1, r9
|
|
ldrb r0, [r1]
|
|
adds r2, r0, 0
|
|
muls r2, r7
|
|
add r2, r8
|
|
ldrh r1, [r2]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldrb r0, [r0, 0x6]
|
|
adds r2, 0x21
|
|
strb r0, [r2]
|
|
mov r2, r9
|
|
ldrb r0, [r2]
|
|
adds r2, r0, 0
|
|
muls r2, r7
|
|
add r2, r8
|
|
ldrh r1, [r2]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldrb r0, [r0, 0x7]
|
|
adds r2, 0x22
|
|
strb r0, [r2]
|
|
mov r1, r9
|
|
ldrb r0, [r1]
|
|
adds r1, r0, 0
|
|
muls r1, r7
|
|
add r1, r8
|
|
ldrh r0, [r1]
|
|
ldrb r1, [r1, 0x17]
|
|
lsrs r1, 7
|
|
bl GetAbilityBySpecies
|
|
mov r2, r9
|
|
ldrb r1, [r2]
|
|
muls r1, r7
|
|
add r1, r8
|
|
adds r1, 0x20
|
|
strb r0, [r1]
|
|
ldrb r0, [r2]
|
|
bl GetBankSide
|
|
ldr r1, =gBattleStruct
|
|
lsls r0, 24
|
|
lsrs r0, 23
|
|
adds r0, 0xA8
|
|
ldr r1, [r1]
|
|
adds r1, r0
|
|
mov r2, r9
|
|
ldrb r0, [r2]
|
|
muls r0, r7
|
|
add r0, r8
|
|
ldrh r0, [r0, 0x28]
|
|
strh r0, [r1]
|
|
movs r2, 0
|
|
ldr r4, =gActiveBank
|
|
movs r5, 0x58
|
|
ldr r1, =gBattleMons + 0x18
|
|
adds r6, r4, 0
|
|
movs r0, 0x18
|
|
negs r0, r0
|
|
adds r0, r1
|
|
mov r12, r0
|
|
movs r3, 0x6
|
|
_0803ADAA:
|
|
ldrb r0, [r4]
|
|
muls r0, r5
|
|
adds r0, r2, r0
|
|
adds r0, r1
|
|
strb r3, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x7
|
|
ble _0803ADAA
|
|
ldrb r0, [r6]
|
|
adds r1, r0, 0
|
|
muls r1, r7
|
|
mov r0, r12
|
|
adds r0, 0x50
|
|
adds r1, r0
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
_0803ADCA:
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803ADE4
|
|
movs r0, 0
|
|
bl dp01_build_cmdbuf_x07_7_7_7
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
_0803ADE4:
|
|
ldr r5, =gBattleTypeFlags
|
|
ldr r0, [r5]
|
|
movs r1, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803AE60
|
|
ldrb r0, [r4]
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0803AE0A
|
|
movs r0, 0
|
|
bl dp01_build_cmdbuf_x07_7_7_7
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
_0803AE0A:
|
|
ldrb r0, [r4]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0803AEC0
|
|
ldr r0, [r5]
|
|
ldr r1, =0x063f0902
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803AEC0
|
|
ldrb r0, [r4]
|
|
muls r0, r7
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
bl SpeciesToNationalPokedexNum
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldrb r1, [r4]
|
|
muls r1, r7
|
|
add r1, r10
|
|
ldr r2, [r1]
|
|
movs r1, 0x2
|
|
bl HandleSetPokedexFlag
|
|
b _0803AEC0
|
|
.pool
|
|
_0803AE60:
|
|
ldrb r0, [r4]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0803AEC0
|
|
ldr r0, [r5]
|
|
ldr r1, =0x063f0902
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803AE96
|
|
ldrb r0, [r4]
|
|
muls r0, r7
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
bl SpeciesToNationalPokedexNum
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldrb r1, [r4]
|
|
muls r1, r7
|
|
add r1, r10
|
|
ldr r2, [r1]
|
|
movs r1, 0x2
|
|
bl HandleSetPokedexFlag
|
|
_0803AE96:
|
|
movs r0, 0
|
|
bl dp01_build_cmdbuf_x04_4_4_4
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
ldr r1, =gBattlePartyID
|
|
ldrb r0, [r4]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r1, =gEnemyParty
|
|
adds r0, r1
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
ldr r1, =gBattleResults
|
|
strh r0, [r1, 0x20]
|
|
_0803AEC0:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803AEF6
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
beq _0803AEEA
|
|
ldrb r0, [r4]
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x3
|
|
bne _0803AEF6
|
|
_0803AEEA:
|
|
movs r0, 0
|
|
bl dp01_build_cmdbuf_x07_7_7_7
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
_0803AEF6:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803AF20
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x3
|
|
bne _0803AF20
|
|
movs r0, 0
|
|
bl dp01_build_cmdbuf_x07_7_7_7
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
_0803AF20:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 11
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803AF32
|
|
bl sub_81A56B4
|
|
_0803AF32:
|
|
mov r1, r9
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r1, =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcs _0803AF48
|
|
b _0803ACB4
|
|
_0803AF48:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =bc_801333C
|
|
str r0, [r1]
|
|
_0803AF4E:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803AC84
|
|
|
|
thumb_func_start bc_801333C
|
|
bc_801333C: @ 803AF80
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x30
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803AF92
|
|
b _0803B10C
|
|
_0803AF92:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803AFA0
|
|
b _0803B0AC
|
|
_0803AFA0:
|
|
movs r7, 0
|
|
add r0, sp, 0x4
|
|
mov r8, r0
|
|
mov r6, r8
|
|
mov r5, sp
|
|
_0803AFAA:
|
|
movs r0, 0x64
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
ldr r0, =gEnemyParty
|
|
adds r4, r1, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _0803AFD0
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
bne _0803AFE8
|
|
_0803AFD0:
|
|
ldr r0, =0x0000ffff
|
|
strh r0, [r5]
|
|
movs r0, 0
|
|
b _0803AFFA
|
|
.pool
|
|
_0803AFE8:
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
strh r0, [r5]
|
|
adds r0, r4, 0
|
|
movs r1, 0x37
|
|
bl GetMonData
|
|
_0803AFFA:
|
|
str r0, [r6]
|
|
adds r6, 0x8
|
|
adds r5, 0x8
|
|
adds r7, 0x1
|
|
cmp r7, 0x5
|
|
ble _0803AFAA
|
|
movs r0, 0x1
|
|
bl GetBankByPlayerAI
|
|
ldr r4, =gActiveBank
|
|
strb r0, [r4]
|
|
movs r0, 0
|
|
mov r1, sp
|
|
movs r2, 0x80
|
|
bl dp01_build_cmdbuf_x30_TODO
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
movs r7, 0
|
|
mov r6, r8
|
|
mov r5, sp
|
|
_0803B026:
|
|
movs r0, 0x64
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
ldr r0, =gPlayerParty
|
|
adds r4, r1, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _0803B04C
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
bne _0803B060
|
|
_0803B04C:
|
|
ldr r0, =0x0000ffff
|
|
strh r0, [r5]
|
|
movs r0, 0
|
|
b _0803B072
|
|
.pool
|
|
_0803B060:
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
strh r0, [r5]
|
|
adds r0, r4, 0
|
|
movs r1, 0x37
|
|
bl GetMonData
|
|
_0803B072:
|
|
str r0, [r6]
|
|
adds r6, 0x8
|
|
adds r5, 0x8
|
|
adds r7, 0x1
|
|
cmp r7, 0x5
|
|
ble _0803B026
|
|
movs r0, 0
|
|
bl GetBankByPlayerAI
|
|
ldr r4, =gActiveBank
|
|
strb r0, [r4]
|
|
movs r0, 0
|
|
mov r1, sp
|
|
movs r2, 0x80
|
|
bl dp01_build_cmdbuf_x30_TODO
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =bc_battle_begin_message
|
|
b _0803B10A
|
|
.pool
|
|
_0803B0AC:
|
|
movs r7, 0
|
|
add r6, sp, 0x4
|
|
mov r5, sp
|
|
_0803B0B2:
|
|
movs r0, 0x64
|
|
adds r1, r7, 0
|
|
muls r1, r0
|
|
ldr r0, =gPlayerParty
|
|
adds r4, r1, r0
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
cmp r0, 0
|
|
beq _0803B0D8
|
|
adds r0, r4, 0
|
|
movs r1, 0x41
|
|
bl GetMonData
|
|
movs r1, 0xCE
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
bne _0803B0E8
|
|
_0803B0D8:
|
|
ldr r0, =0x0000ffff
|
|
strh r0, [r5]
|
|
movs r0, 0
|
|
b _0803B0FA
|
|
.pool
|
|
_0803B0E8:
|
|
adds r0, r4, 0
|
|
movs r1, 0x39
|
|
bl GetMonData
|
|
strh r0, [r5]
|
|
adds r0, r4, 0
|
|
movs r1, 0x37
|
|
bl GetMonData
|
|
_0803B0FA:
|
|
str r0, [r6]
|
|
adds r6, 0x8
|
|
adds r5, 0x8
|
|
adds r7, 0x1
|
|
cmp r7, 0x5
|
|
ble _0803B0B2
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =bc_8013568
|
|
_0803B10A:
|
|
str r0, [r1]
|
|
_0803B10C:
|
|
add sp, 0x30
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bc_801333C
|
|
|
|
thumb_func_start bc_battle_begin_message
|
|
bc_battle_begin_message: @ 803B120
|
|
push {lr}
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803B142
|
|
movs r0, 0x1
|
|
bl GetBankByPlayerAI
|
|
ldr r1, =gActiveBank
|
|
strb r0, [r1]
|
|
ldrb r1, [r1]
|
|
movs r0, 0
|
|
bl b_std_message
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803B180
|
|
str r0, [r1]
|
|
_0803B142:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bc_battle_begin_message
|
|
|
|
thumb_func_start bc_8013568
|
|
bc_8013568: @ 803B158
|
|
push {lr}
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803B170
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803B3CC
|
|
str r0, [r1]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl b_std_message
|
|
_0803B170:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bc_8013568
|
|
|
|
thumb_func_start sub_803B180
|
|
sub_803B180: @ 803B180
|
|
push {lr}
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803B1D0
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r2, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803B1B8
|
|
movs r0, 0x80
|
|
lsls r0, 18
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803B1B8
|
|
movs r1, 0x80
|
|
lsls r1, 24
|
|
ands r1, r2
|
|
negs r0, r1
|
|
orrs r0, r1
|
|
lsrs r0, 31
|
|
b _0803B1BA
|
|
.pool
|
|
_0803B1B8:
|
|
movs r0, 0x1
|
|
_0803B1BA:
|
|
bl GetBankByPlayerAI
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0x1
|
|
bl b_std_message
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803B25C
|
|
str r0, [r1]
|
|
_0803B1D0:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803B180
|
|
|
|
thumb_func_start sub_803B1DC
|
|
sub_803B1DC: @ 803B1DC
|
|
push {r4,r5,lr}
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803B1FC
|
|
movs r0, 0x80
|
|
lsls r0, 18
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803B1FC
|
|
movs r5, 0x2
|
|
cmp r1, 0
|
|
bge _0803B1FE
|
|
_0803B1FC:
|
|
movs r5, 0x3
|
|
_0803B1FE:
|
|
ldr r1, =gActiveBank
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803B23A
|
|
adds r4, r1, 0
|
|
_0803B20E:
|
|
ldrb r0, [r4]
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, r5
|
|
bne _0803B228
|
|
movs r0, 0
|
|
bl dp01_build_cmdbuf_x2F_2F_2F_2F
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
_0803B228:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
ldr r1, =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803B20E
|
|
_0803B23A:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =bc_801362C
|
|
str r0, [r1]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803B1DC
|
|
|
|
thumb_func_start sub_803B25C
|
|
sub_803B25C: @ 803B25C
|
|
push {r4-r6,lr}
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r2, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803B298
|
|
movs r0, 0x80
|
|
lsls r0, 18
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803B298
|
|
movs r1, 0x80
|
|
lsls r1, 24
|
|
ands r1, r2
|
|
negs r0, r1
|
|
orrs r0, r1
|
|
lsrs r5, r0, 31
|
|
b _0803B29A
|
|
.pool
|
|
_0803B288:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803B1DC
|
|
b _0803B2F0
|
|
.pool
|
|
_0803B298:
|
|
movs r5, 0x1
|
|
_0803B29A:
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r2, [r0]
|
|
cmp r2, 0
|
|
bne _0803B2F2
|
|
ldr r0, =gActiveBank
|
|
strb r2, [r0]
|
|
ldr r1, =gNoOfAllBanks
|
|
adds r4, r0, 0
|
|
ldrb r1, [r1]
|
|
cmp r2, r1
|
|
bcs _0803B2EC
|
|
adds r6, r4, 0
|
|
_0803B2B2:
|
|
ldrb r0, [r4]
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, r5
|
|
bne _0803B2D8
|
|
movs r0, 0
|
|
bl dp01_build_cmdbuf_x2F_2F_2F_2F
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, =0x00008040
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803B288
|
|
_0803B2D8:
|
|
ldrb r0, [r6]
|
|
adds r0, 0x1
|
|
strb r0, [r6]
|
|
ldr r1, =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r4, =gActiveBank
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803B2B2
|
|
_0803B2EC:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =bc_801362C
|
|
_0803B2F0:
|
|
str r0, [r1]
|
|
_0803B2F2:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803B25C
|
|
|
|
thumb_func_start bc_801362C
|
|
bc_801362C: @ 803B314
|
|
push {r4-r7,lr}
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r1, [r0]
|
|
cmp r1, 0
|
|
bne _0803B384
|
|
ldr r2, =gActiveBank
|
|
strb r1, [r2]
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
bcs _0803B37E
|
|
adds r4, r2, 0
|
|
ldr r6, =gBattleMons
|
|
movs r5, 0x58
|
|
adds r7, r6, 0
|
|
adds r7, 0x48
|
|
_0803B334:
|
|
ldrb r0, [r4]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0803B36C
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, =0x063f0902
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803B36C
|
|
ldrb r0, [r4]
|
|
muls r0, r5
|
|
adds r0, r6
|
|
ldrh r0, [r0]
|
|
bl SpeciesToNationalPokedexNum
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
ldrb r1, [r4]
|
|
muls r1, r5
|
|
adds r1, r7
|
|
ldr r2, [r1]
|
|
movs r1, 0x2
|
|
bl HandleSetPokedexFlag
|
|
_0803B36C:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
ldr r1, =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803B334
|
|
_0803B37E:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803B3CC
|
|
str r0, [r1]
|
|
_0803B384:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bc_801362C
|
|
|
|
thumb_func_start sub_803B3AC
|
|
sub_803B3AC: @ 803B3AC
|
|
push {lr}
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803B3BC
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803B3CC
|
|
str r0, [r1]
|
|
_0803B3BC:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803B3AC
|
|
|
|
thumb_func_start sub_803B3CC
|
|
sub_803B3CC: @ 803B3CC
|
|
push {lr}
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803B418
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r2, [r1]
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803B3F4
|
|
movs r0, 0x80
|
|
lsls r0, 18
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803B3F4
|
|
movs r3, 0x1
|
|
cmp r2, 0
|
|
bge _0803B3F6
|
|
_0803B3F4:
|
|
movs r3, 0
|
|
_0803B3F6:
|
|
ldr r0, [r1]
|
|
movs r1, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803B412
|
|
adds r0, r3, 0
|
|
bl GetBankByPlayerAI
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0x1
|
|
bl b_std_message
|
|
_0803B412:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803B4C8
|
|
str r0, [r1]
|
|
_0803B418:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803B3CC
|
|
|
|
thumb_func_start sub_803B42C
|
|
sub_803B42C: @ 803B42C
|
|
push {r4,r5,lr}
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803B44C
|
|
movs r0, 0x80
|
|
lsls r0, 18
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803B44C
|
|
movs r5, 0x3
|
|
cmp r1, 0
|
|
bge _0803B44E
|
|
_0803B44C:
|
|
movs r5, 0x2
|
|
_0803B44E:
|
|
ldr r1, =gActiveBank
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803B48A
|
|
adds r4, r1, 0
|
|
_0803B45E:
|
|
ldrb r0, [r4]
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, r5
|
|
bne _0803B478
|
|
movs r0, 0
|
|
bl dp01_build_cmdbuf_x2F_2F_2F_2F
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
_0803B478:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
ldr r1, =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803B45E
|
|
_0803B48A:
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r2]
|
|
adds r0, 0x4C
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
adds r0, 0xD9
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
movs r2, 0xD1
|
|
lsls r2, 1
|
|
adds r0, r2
|
|
strb r1, [r0]
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803B628
|
|
str r0, [r1]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803B42C
|
|
|
|
thumb_func_start sub_803B4C8
|
|
sub_803B4C8: @ 803B4C8
|
|
push {r4-r6,lr}
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803B500
|
|
movs r0, 0x80
|
|
lsls r0, 18
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803B500
|
|
movs r6, 0x1
|
|
cmp r1, 0
|
|
bge _0803B502
|
|
b _0803B500
|
|
.pool
|
|
_0803B4F0:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803B42C
|
|
b _0803B572
|
|
.pool
|
|
_0803B500:
|
|
movs r6, 0
|
|
_0803B502:
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r2, [r0]
|
|
cmp r2, 0
|
|
bne _0803B574
|
|
ldr r0, =gActiveBank
|
|
strb r2, [r0]
|
|
ldr r1, =gNoOfAllBanks
|
|
adds r4, r0, 0
|
|
ldrb r1, [r1]
|
|
cmp r2, r1
|
|
bcs _0803B554
|
|
adds r5, r4, 0
|
|
_0803B51A:
|
|
ldrb r0, [r4]
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, r6
|
|
bne _0803B540
|
|
movs r0, 0
|
|
bl dp01_build_cmdbuf_x2F_2F_2F_2F
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803B4F0
|
|
_0803B540:
|
|
ldrb r0, [r5]
|
|
adds r0, 0x1
|
|
strb r0, [r5]
|
|
ldr r1, =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r4, =gActiveBank
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803B51A
|
|
_0803B554:
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r2]
|
|
adds r0, 0x4C
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
adds r0, 0xD9
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
movs r2, 0xD1
|
|
lsls r2, 1
|
|
adds r0, r2
|
|
strb r1, [r0]
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803B628
|
|
_0803B572:
|
|
str r0, [r1]
|
|
_0803B574:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803B4C8
|
|
|
|
thumb_func_start sub_803B598
|
|
sub_803B598: @ 803B598
|
|
push {r4,r5,lr}
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r1, [r0]
|
|
cmp r1, 0
|
|
bne _0803B606
|
|
ldr r2, =gActiveBank
|
|
strb r1, [r2]
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
bcs _0803B5E6
|
|
adds r4, r2, 0
|
|
ldr r5, =gBattlePartyID
|
|
_0803B5B2:
|
|
ldrb r0, [r4]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803B5D4
|
|
ldrb r0, [r4]
|
|
lsls r0, 1
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
movs r0, 0
|
|
movs r2, 0
|
|
bl dp01_build_cmdbuf_x05_a_b_c
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
_0803B5D4:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
ldr r1, =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803B5B2
|
|
_0803B5E6:
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r2]
|
|
adds r0, 0x4C
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
adds r0, 0xD9
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
movs r2, 0xD1
|
|
lsls r2, 1
|
|
adds r0, r2
|
|
strb r1, [r0]
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803B628
|
|
str r0, [r1]
|
|
_0803B606:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803B598
|
|
|
|
thumb_func_start sub_803B628
|
|
sub_803B628: @ 803B628
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
movs r0, 0
|
|
mov r9, r0
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803B642
|
|
b _0803B8B2
|
|
_0803B642:
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
adds r0, 0x4C
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803B6C2
|
|
movs r5, 0
|
|
ldr r1, =gNoOfAllBanks
|
|
mov r10, r1
|
|
ldrb r3, [r1]
|
|
cmp r5, r3
|
|
bge _0803B668
|
|
ldr r2, =gTurnOrder
|
|
_0803B65C:
|
|
adds r0, r5, r2
|
|
strb r5, [r0]
|
|
adds r5, 0x1
|
|
ldrb r0, [r1]
|
|
cmp r5, r0
|
|
blt _0803B65C
|
|
_0803B668:
|
|
movs r5, 0
|
|
b _0803B6B8
|
|
.pool
|
|
_0803B67C:
|
|
adds r4, r5, 0x1
|
|
mov r8, r4
|
|
ldrb r1, [r1]
|
|
cmp r8, r1
|
|
bge _0803B6B6
|
|
ldr r6, =gTurnOrder
|
|
ldr r1, =gNoOfAllBanks
|
|
mov r10, r1
|
|
lsls r7, r5, 24
|
|
_0803B68E:
|
|
adds r0, r5, r6
|
|
ldrb r0, [r0]
|
|
adds r1, r4, r6
|
|
ldrb r1, [r1]
|
|
movs r2, 0x1
|
|
bl b_first_side
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803B6AC
|
|
lsls r1, r4, 24
|
|
lsrs r1, 24
|
|
lsrs r0, r7, 24
|
|
bl sub_803CEDC
|
|
_0803B6AC:
|
|
adds r4, 0x1
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _0803B68E
|
|
_0803B6B6:
|
|
mov r5, r8
|
|
_0803B6B8:
|
|
mov r1, r10
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
cmp r5, r0
|
|
blt _0803B67C
|
|
_0803B6C2:
|
|
ldr r5, =gBattleStruct
|
|
ldr r0, [r5]
|
|
movs r4, 0xD1
|
|
lsls r4, 1
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803B6FC
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0xFF
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803B6FC
|
|
ldr r0, [r5]
|
|
adds r0, r4
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
b _0803B8B2
|
|
.pool
|
|
_0803B6FC:
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r2]
|
|
adds r0, 0x4C
|
|
ldr r1, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcs _0803B756
|
|
ldr r5, =gTurnOrder
|
|
adds r4, r2, 0
|
|
_0803B710:
|
|
ldr r0, [r4]
|
|
adds r0, 0x4C
|
|
ldrb r0, [r0]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803B736
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_0803B736:
|
|
ldr r1, [r4]
|
|
adds r1, 0x4C
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
mov r3, r9
|
|
cmp r3, 0
|
|
beq _0803B748
|
|
b _0803B8B2
|
|
_0803B748:
|
|
ldr r0, [r4]
|
|
adds r0, 0x4C
|
|
ldr r1, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803B710
|
|
_0803B756:
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0x9
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _0803B770
|
|
b _0803B8B2
|
|
_0803B770:
|
|
str r0, [sp]
|
|
movs r0, 0xB
|
|
movs r1, 0
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803B786
|
|
b _0803B8B2
|
|
_0803B786:
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r2]
|
|
adds r0, 0xD9
|
|
ldr r1, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcs _0803B7DA
|
|
ldr r5, =gTurnOrder
|
|
adds r4, r2, 0
|
|
_0803B79A:
|
|
ldr r0, [r4]
|
|
adds r0, 0xD9
|
|
ldrb r0, [r0]
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
movs r0, 0
|
|
movs r2, 0
|
|
bl ItemBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803B7BC
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
_0803B7BC:
|
|
ldr r1, [r4]
|
|
adds r1, 0xD9
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
mov r0, r9
|
|
cmp r0, 0
|
|
bne _0803B8B2
|
|
ldr r0, [r4]
|
|
adds r0, 0xD9
|
|
ldr r1, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803B79A
|
|
_0803B7DA:
|
|
movs r5, 0
|
|
ldr r1, =gBattleStruct
|
|
mov r8, r1
|
|
movs r7, 0x6
|
|
ldr r6, =gUnknown_0202421C
|
|
ldr r2, =gChosenMovesByBanks
|
|
movs r4, 0xFF
|
|
movs r3, 0
|
|
_0803B7EA:
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
adds r0, r5, r0
|
|
adds r0, 0x5C
|
|
strb r7, [r0]
|
|
adds r1, r5, r6
|
|
ldrb r0, [r1]
|
|
orrs r0, r4
|
|
strb r0, [r1]
|
|
strh r3, [r2]
|
|
adds r2, 0x2
|
|
adds r5, 0x1
|
|
cmp r5, 0x3
|
|
ble _0803B7EA
|
|
movs r0, 0
|
|
bl sub_803D580
|
|
bl sub_803D6A0
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
adds r0, 0x91
|
|
ldr r1, =gAbsentBankFlags
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
ldr r0, =gText_EmptyString3
|
|
movs r1, 0
|
|
bl battle_show_message_maybe
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803BE74
|
|
str r0, [r1]
|
|
bl sub_803F988
|
|
ldr r1, =gBattleCommunication
|
|
movs r2, 0
|
|
adds r0, r1, 0x7
|
|
_0803B834:
|
|
strb r2, [r0]
|
|
subs r0, 0x1
|
|
cmp r0, r1
|
|
bge _0803B834
|
|
movs r5, 0
|
|
ldr r3, =gNoOfAllBanks
|
|
ldr r2, =gBattleStruct
|
|
ldr r6, =gBattleScripting
|
|
ldr r7, =gBattleMoveFlags
|
|
ldrb r0, [r3]
|
|
cmp r5, r0
|
|
bge _0803B866
|
|
ldr r0, =gBattleMons
|
|
movs r4, 0x9
|
|
negs r4, r4
|
|
adds r1, r0, 0
|
|
adds r1, 0x50
|
|
_0803B856:
|
|
ldr r0, [r1]
|
|
ands r0, r4
|
|
str r0, [r1]
|
|
adds r1, 0x58
|
|
adds r5, 0x1
|
|
ldrb r0, [r3]
|
|
cmp r5, r0
|
|
blt _0803B856
|
|
_0803B866:
|
|
ldr r0, [r2]
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
strb r1, [r0, 0x1]
|
|
ldr r0, [r2]
|
|
movs r3, 0xD0
|
|
lsls r3, 1
|
|
adds r0, r3
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
adds r3, 0x1
|
|
adds r0, r3
|
|
strb r1, [r0]
|
|
movs r1, 0
|
|
strb r1, [r6, 0x14]
|
|
ldr r0, [r2]
|
|
adds r0, 0x4D
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
strb r1, [r0, 0x3]
|
|
strb r1, [r7]
|
|
bl Random
|
|
ldr r1, =gUnknown_02024330
|
|
strh r0, [r1]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 11
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803B8B2
|
|
bl StopCryAndClearCrySongs
|
|
ldr r0, =gUnknown_082DB8BE
|
|
bl b_call_bc_move_exec
|
|
_0803B8B2:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803B628
|
|
|
|
thumb_func_start bc_8013B1C
|
|
bc_8013B1C: @ 803B904
|
|
push {r4-r6,lr}
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803B994
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =BattleTurnPassed
|
|
str r0, [r1]
|
|
ldr r3, =gNoOfAllBanks
|
|
ldr r1, =gBattleCommunication
|
|
movs r2, 0
|
|
adds r0, r1, 0x7
|
|
_0803B91C:
|
|
strb r2, [r0]
|
|
subs r0, 0x1
|
|
cmp r0, r1
|
|
bge _0803B91C
|
|
movs r4, 0
|
|
ldrb r3, [r3]
|
|
cmp r4, r3
|
|
bge _0803B96E
|
|
ldr r5, =gBattleMons
|
|
adds r6, r5, 0
|
|
adds r6, 0x4C
|
|
_0803B932:
|
|
movs r0, 0x58
|
|
adds r2, r4, 0
|
|
muls r2, r0
|
|
adds r1, r5, 0
|
|
adds r1, 0x50
|
|
adds r1, r2, r1
|
|
ldr r3, [r1]
|
|
subs r0, 0x61
|
|
ands r3, r0
|
|
str r3, [r1]
|
|
adds r2, r6
|
|
ldr r0, [r2]
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803B964
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
ands r3, r0
|
|
cmp r3, 0
|
|
beq _0803B964
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl CancelMultiTurnMoves
|
|
_0803B964:
|
|
adds r4, 0x1
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _0803B932
|
|
_0803B96E:
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r2]
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
strb r1, [r0, 0x1]
|
|
ldr r0, [r2]
|
|
movs r3, 0xD0
|
|
lsls r3, 1
|
|
adds r0, r3
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
adds r3, 0x1
|
|
adds r0, r3
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
strb r1, [r0, 0x3]
|
|
ldr r0, =gBattleMoveFlags
|
|
strb r1, [r0]
|
|
_0803B994:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bc_8013B1C
|
|
|
|
thumb_func_start BattleTurnPassed
|
|
BattleTurnPassed: @ 803B9BC
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
movs r0, 0x1
|
|
bl sub_803D580
|
|
ldr r0, =gBattleOutcome
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803B9EA
|
|
bl UpdateTurnCounters
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803B9DE
|
|
b _0803BB78
|
|
_0803B9DE:
|
|
bl TurnBasedEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803B9EA
|
|
b _0803BB78
|
|
_0803B9EA:
|
|
bl sub_8041728
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
beq _0803B9F8
|
|
b _0803BB78
|
|
_0803B9F8:
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
adds r0, 0x4D
|
|
strb r1, [r0]
|
|
bl sub_8041364
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0
|
|
beq _0803BA0E
|
|
b _0803BB78
|
|
_0803BA0E:
|
|
movs r0, 0
|
|
bl sub_803D580
|
|
ldr r2, =gHitMarker
|
|
ldr r0, [r2]
|
|
ldr r1, =0xfffffdff
|
|
ands r0, r1
|
|
ldr r1, =0xfff7ffff
|
|
ands r0, r1
|
|
ldr r1, =0xffbfffff
|
|
ands r0, r1
|
|
ldr r1, =0xffefffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r0, =gBattleScripting
|
|
strb r4, [r0, 0x18]
|
|
strb r4, [r0, 0x19]
|
|
strb r4, [r0, 0x14]
|
|
ldr r0, =gBattleMoveDamage
|
|
str r4, [r0]
|
|
ldr r0, =gBattleMoveFlags
|
|
strb r4, [r0]
|
|
ldr r1, =gBattleCommunication
|
|
movs r2, 0
|
|
adds r0, r1, 0x4
|
|
_0803BA40:
|
|
strb r2, [r0]
|
|
subs r0, 0x1
|
|
cmp r0, r1
|
|
bge _0803BA40
|
|
ldr r0, =gBattleOutcome
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803BA98
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0xC
|
|
strb r0, [r1]
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =bc_bs_exec
|
|
str r0, [r1]
|
|
b _0803BB78
|
|
.pool
|
|
_0803BA98:
|
|
ldr r1, =gBattleResults
|
|
ldrb r0, [r1, 0x13]
|
|
ldr r2, =gBattleStruct
|
|
mov r8, r2
|
|
cmp r0, 0xFE
|
|
bhi _0803BAB2
|
|
adds r0, 0x1
|
|
strb r0, [r1, 0x13]
|
|
ldr r1, [r2]
|
|
adds r1, 0xDA
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
_0803BAB2:
|
|
movs r2, 0
|
|
ldr r4, =gNoOfAllBanks
|
|
ldr r0, =gAbsentBankFlags
|
|
mov r12, r0
|
|
ldr r1, =gText_EmptyString3
|
|
mov r9, r1
|
|
ldrb r0, [r4]
|
|
cmp r2, r0
|
|
bge _0803BAE0
|
|
ldr r7, =gUnknown_0202421C
|
|
movs r6, 0xFF
|
|
movs r5, 0
|
|
ldr r3, =gChosenMovesByBanks
|
|
_0803BACC:
|
|
adds r1, r2, r7
|
|
ldrb r0, [r1]
|
|
orrs r0, r6
|
|
strb r0, [r1]
|
|
strh r5, [r3]
|
|
adds r3, 0x2
|
|
adds r2, 0x1
|
|
ldrb r1, [r4]
|
|
cmp r2, r1
|
|
blt _0803BACC
|
|
_0803BAE0:
|
|
movs r2, 0
|
|
ldr r3, =gBattleStruct
|
|
movs r1, 0x6
|
|
_0803BAE6:
|
|
ldr r0, [r3]
|
|
adds r0, r2, r0
|
|
adds r0, 0x5C
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
cmp r2, 0x3
|
|
ble _0803BAE6
|
|
mov r2, r8
|
|
ldr r0, [r2]
|
|
adds r0, 0x91
|
|
mov r2, r12
|
|
ldrb r1, [r2]
|
|
strb r1, [r0]
|
|
mov r0, r9
|
|
movs r1, 0
|
|
bl battle_show_message_maybe
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803BE74
|
|
str r0, [r1]
|
|
bl Random
|
|
ldr r1, =gUnknown_02024330
|
|
strh r0, [r1]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803BB5C
|
|
ldr r0, =gUnknown_082DB881
|
|
bl b_call_bc_move_exec
|
|
b _0803BB78
|
|
.pool
|
|
_0803BB5C:
|
|
movs r0, 0x80
|
|
lsls r0, 11
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803BB78
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
adds r0, 0xDA
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803BB78
|
|
ldr r0, =gUnknown_082DB8BE
|
|
bl b_call_bc_move_exec
|
|
_0803BB78:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end BattleTurnPassed
|
|
|
|
thumb_func_start sub_803BB88
|
|
sub_803BB88: @ 803BB88
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
ldr r1, =gBattleMons
|
|
ldr r0, =gActiveBank
|
|
ldrb r2, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2E]
|
|
cmp r0, 0xAF
|
|
bne _0803BBB8
|
|
ldr r1, =gEnigmaBerries
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r2, [r0, 0x7]
|
|
b _0803BBC2
|
|
.pool
|
|
_0803BBB8:
|
|
ldrh r0, [r1, 0x2E]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r2, r0, 24
|
|
_0803BBC2:
|
|
ldr r1, =gStringBank
|
|
ldr r3, =gActiveBank
|
|
ldrb r0, [r3]
|
|
strb r0, [r1]
|
|
cmp r2, 0x25
|
|
bne _0803BBD0
|
|
b _0803BD4C
|
|
_0803BBD0:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803BBDE
|
|
b _0803BD4C
|
|
_0803BBDE:
|
|
ldr r1, =gBattleMons
|
|
ldrb r2, [r3]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r1
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x32
|
|
bne _0803BBF2
|
|
b _0803BD4C
|
|
_0803BBF2:
|
|
adds r0, r2, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r5, 0
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
bge _0803BC86
|
|
movs r7, 0
|
|
_0803BC08:
|
|
lsrs r4, r7, 24
|
|
adds r0, r4, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r6, r0
|
|
beq _0803BC2C
|
|
ldr r1, =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r5
|
|
adds r0, r1
|
|
adds r2, r0, 0
|
|
adds r2, 0x20
|
|
ldrb r0, [r2]
|
|
cmp r0, 0x17
|
|
bne _0803BC2C
|
|
b _0803BD54
|
|
_0803BC2C:
|
|
adds r0, r4, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r6, r0
|
|
beq _0803BC76
|
|
ldr r3, =gBattleMons
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
movs r2, 0x58
|
|
muls r0, r2
|
|
adds r1, r0, r3
|
|
adds r0, r1, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1A
|
|
beq _0803BC76
|
|
adds r0, r1, 0
|
|
adds r0, 0x21
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
beq _0803BC76
|
|
adds r0, r1, 0
|
|
adds r0, 0x22
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
beq _0803BC76
|
|
adds r0, r5, 0
|
|
muls r0, r2
|
|
adds r0, r3
|
|
adds r2, r0, 0
|
|
adds r2, 0x20
|
|
ldrb r0, [r2]
|
|
cmp r0, 0x47
|
|
bne _0803BC76
|
|
b _0803BD70
|
|
_0803BC76:
|
|
movs r0, 0x80
|
|
lsls r0, 17
|
|
adds r7, r0
|
|
adds r5, 0x1
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0803BC08
|
|
_0803BC86:
|
|
ldr r4, =gActiveBank
|
|
ldrb r1, [r4]
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xF
|
|
movs r2, 0x2A
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r5, 0
|
|
beq _0803BCF8
|
|
ldr r6, =gBattleMons
|
|
ldrb r0, [r4]
|
|
movs r3, 0x58
|
|
muls r0, r3
|
|
adds r1, r0, r6
|
|
adds r0, r1, 0
|
|
adds r0, 0x21
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x8
|
|
beq _0803BCBE
|
|
adds r0, r1, 0
|
|
adds r0, 0x22
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x8
|
|
bne _0803BCF8
|
|
_0803BCBE:
|
|
ldr r0, =gBattleScripting
|
|
subs r1, r5, 0x1
|
|
strb r1, [r0, 0x17]
|
|
ldr r2, =gLastUsedAbility
|
|
adds r0, r1, 0
|
|
muls r0, r3
|
|
adds r0, r6
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x2
|
|
b _0803BD90
|
|
.pool
|
|
_0803BCF8:
|
|
ldr r1, =gBattleMons
|
|
ldr r0, =gActiveBank
|
|
ldrb r2, [r0]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
ldr r1, =0x0400e000
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803BD22
|
|
ldr r1, =gStatuses3
|
|
lsls r0, r2, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 3
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803BD40
|
|
_0803BD22:
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0
|
|
strb r0, [r1, 0x5]
|
|
movs r0, 0x1
|
|
b _0803BD92
|
|
.pool
|
|
_0803BD40:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803BD8C
|
|
_0803BD4C:
|
|
movs r0, 0
|
|
b _0803BD92
|
|
.pool
|
|
_0803BD54:
|
|
ldr r0, =gBattleScripting
|
|
strb r5, [r0, 0x17]
|
|
ldr r1, =gLastUsedAbility
|
|
ldrb r0, [r2]
|
|
strb r0, [r1]
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x2
|
|
b _0803BD90
|
|
.pool
|
|
_0803BD70:
|
|
ldr r0, =gBattleScripting
|
|
strb r5, [r0, 0x17]
|
|
ldr r1, =gLastUsedAbility
|
|
ldrb r0, [r2]
|
|
strb r0, [r1]
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x2
|
|
b _0803BD90
|
|
.pool
|
|
_0803BD8C:
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x1
|
|
_0803BD90:
|
|
strb r0, [r1, 0x5]
|
|
_0803BD92:
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_803BB88
|
|
|
|
thumb_func_start sub_803BDA0
|
|
sub_803BDA0: @ 803BDA0
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r3, 0
|
|
ldr r0, =gBattlePartyID
|
|
mov r8, r0
|
|
ldr r1, =gUnknown_0203CF00
|
|
mov r12, r1
|
|
ldr r7, =gBattleStruct
|
|
lsls r0, r5, 1
|
|
adds r4, r0, r5
|
|
adds r6, r0, 0
|
|
_0803BDBC:
|
|
mov r0, r12
|
|
adds r2, r3, r0
|
|
ldr r1, [r7]
|
|
adds r0, r4, r3
|
|
adds r0, r1
|
|
adds r0, 0x60
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
adds r3, 0x1
|
|
cmp r3, 0x2
|
|
ble _0803BDBC
|
|
mov r1, r8
|
|
adds r0, r6, r1
|
|
ldrb r0, [r0]
|
|
bl pokemon_order_func
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r7, =gBattleStruct
|
|
ldr r0, [r7]
|
|
adds r0, r5, r0
|
|
adds r0, 0x5C
|
|
ldrb r0, [r0]
|
|
bl pokemon_order_func
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_81B8FB0
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803BE4C
|
|
movs r3, 0
|
|
adds r4, r7, 0
|
|
adds r6, r5
|
|
movs r0, 0x2
|
|
adds r1, r5, 0
|
|
eors r1, r0
|
|
ldr r7, =gUnknown_0203CF00
|
|
lsls r0, r1, 1
|
|
adds r5, r0, r1
|
|
_0803BE1A:
|
|
ldr r0, [r4]
|
|
adds r1, r6, r3
|
|
adds r1, r0
|
|
adds r1, 0x60
|
|
adds r2, r3, r7
|
|
ldrb r0, [r2]
|
|
strb r0, [r1]
|
|
ldr r1, [r4]
|
|
adds r0, r5, r3
|
|
adds r0, r1
|
|
adds r0, 0x60
|
|
ldrb r1, [r2]
|
|
strb r1, [r0]
|
|
adds r3, 0x1
|
|
cmp r3, 0x2
|
|
ble _0803BE1A
|
|
b _0803BE66
|
|
.pool
|
|
_0803BE4C:
|
|
movs r3, 0
|
|
adds r2, r6, r5
|
|
ldr r4, =gUnknown_0203CF00
|
|
_0803BE52:
|
|
ldr r0, [r7]
|
|
adds r1, r2, r3
|
|
adds r1, r0
|
|
adds r1, 0x60
|
|
adds r0, r3, r4
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r3, 0x1
|
|
cmp r3, 0x2
|
|
ble _0803BE52
|
|
_0803BE66:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803BDA0
|
|
|
|
thumb_func_start sub_803BE74
|
|
sub_803BE74: @ 803BE74
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x1C
|
|
ldr r0, =gBattleCommunication
|
|
movs r1, 0
|
|
strb r1, [r0, 0x4]
|
|
ldr r0, =gActiveBank
|
|
strb r1, [r0]
|
|
ldr r0, =gNoOfAllBanks
|
|
bl _0803CD12
|
|
.pool
|
|
_0803BE9C:
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
bl GetBankIdentity
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r4]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x8
|
|
bls _0803BEB8
|
|
bl _0803CD04
|
|
_0803BEB8:
|
|
lsls r0, 2
|
|
ldr r1, =_0803BED0
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_0803BED0:
|
|
.4byte _0803BEF4
|
|
.4byte _0803BF0C
|
|
.4byte _0803C02C
|
|
.4byte _0803C7D8
|
|
.4byte _0803CAD0
|
|
.4byte _0803CB84
|
|
.4byte _0803CBC8
|
|
.4byte _0803CBF4
|
|
.4byte _0803CC38
|
|
_0803BEF4:
|
|
bl sub_8185FD0
|
|
ldr r1, =gBattleCommunication
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
bl _0803CC20
|
|
.pool
|
|
_0803BF0C:
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
ldr r4, =gBattleStruct
|
|
ldr r0, [r4]
|
|
adds r1, r0
|
|
adds r1, 0x5C
|
|
movs r0, 0x6
|
|
strb r0, [r1]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803BF68
|
|
movs r1, 0x2
|
|
movs r0, 0x2
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
beq _0803BF68
|
|
eors r5, r1
|
|
adds r0, r5, 0
|
|
bl GetBankByPlayerAI
|
|
ldr r1, [r4]
|
|
adds r1, 0x91
|
|
ldrb r1, [r1]
|
|
ldr r2, =gBitTable
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _0803BF68
|
|
ldr r4, =gBattleCommunication
|
|
adds r0, r5, 0
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x5
|
|
beq _0803BF68
|
|
bl _0803CD04
|
|
_0803BF68:
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
adds r0, 0x91
|
|
ldrb r3, [r0]
|
|
ldr r1, =gBitTable
|
|
ldr r4, =gActiveBank
|
|
ldrb r2, [r4]
|
|
lsls r0, r2, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
ands r3, r0
|
|
cmp r3, 0
|
|
beq _0803BFD0
|
|
ldr r0, =gUnknown_0202421C
|
|
adds r0, r2, r0
|
|
movs r1, 0xD
|
|
strb r1, [r0]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803BFBC
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r1, [r4]
|
|
adds r1, r0
|
|
movs r0, 0x5
|
|
strb r0, [r1]
|
|
bl _0803CD04
|
|
.pool
|
|
_0803BFBC:
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r1, [r4]
|
|
adds r1, r0
|
|
movs r0, 0x4
|
|
strb r0, [r1]
|
|
bl _0803CD04
|
|
.pool
|
|
_0803BFD0:
|
|
ldr r1, =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803BFF0
|
|
movs r0, 0x80
|
|
lsls r0, 15
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803C00C
|
|
_0803BFF0:
|
|
ldr r0, =gUnknown_0202421C
|
|
adds r0, r2, r0
|
|
strb r3, [r0]
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r4]
|
|
bl _0803CC72
|
|
.pool
|
|
_0803C00C:
|
|
ldr r0, =gUnknown_0202421C
|
|
ldrb r1, [r0]
|
|
ldr r0, =gBattleBufferB
|
|
ldrb r2, [r0, 0x1]
|
|
ldrb r0, [r0, 0x2]
|
|
lsls r0, 8
|
|
orrs r2, r0
|
|
movs r0, 0
|
|
bl dp01_build_cmdbuf_x12_a_bb
|
|
bl _0803CB68
|
|
.pool
|
|
_0803C02C:
|
|
ldr r3, =gBattleExecBuffer
|
|
ldr r1, =gBitTable
|
|
ldr r6, =gActiveBank
|
|
ldrb r5, [r6]
|
|
lsls r0, r5, 2
|
|
adds r0, r1
|
|
ldr r2, [r0]
|
|
lsls r1, r2, 4
|
|
movs r0, 0xF0
|
|
lsls r0, 24
|
|
orrs r1, r0
|
|
orrs r1, r2
|
|
lsls r0, r2, 8
|
|
orrs r1, r0
|
|
lsls r2, 12
|
|
orrs r1, r2
|
|
ldr r0, [r3]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803C058
|
|
bl _0803CD04
|
|
_0803C058:
|
|
ldr r4, =gBattleBufferB
|
|
lsls r0, r5, 9
|
|
adds r4, 0x1
|
|
adds r0, r4
|
|
ldrb r1, [r0]
|
|
adds r0, r5, 0
|
|
bl sub_8184FBC
|
|
ldr r1, =gUnknown_0202421C
|
|
ldrb r0, [r6]
|
|
adds r1, r0, r1
|
|
lsls r0, 9
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldrb r0, [r6]
|
|
lsls r0, 9
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xC
|
|
bls _0803C084
|
|
b _0803C6C4
|
|
_0803C084:
|
|
lsls r0, 2
|
|
ldr r1, =_0803C0A8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_0803C0A8:
|
|
.4byte _0803C0DC
|
|
.4byte _0803C230
|
|
.4byte _0803C268
|
|
.4byte _0803C6C4
|
|
.4byte _0803C6C4
|
|
.4byte _0803C440
|
|
.4byte _0803C48C
|
|
.4byte _0803C6C4
|
|
.4byte _0803C6C4
|
|
.4byte _0803C6C4
|
|
.4byte _0803C6C4
|
|
.4byte _0803C6C4
|
|
.4byte _0803C4B4
|
|
_0803C0DC:
|
|
bl AreAllMovesUnusable
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803C134
|
|
ldr r0, =gBattleCommunication
|
|
ldr r3, =gActiveBank
|
|
ldrb r1, [r3]
|
|
adds r1, r0
|
|
movs r4, 0
|
|
movs r0, 0x6
|
|
strb r0, [r1]
|
|
ldrb r1, [r3]
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r2]
|
|
adds r1, r0
|
|
adds r1, 0x54
|
|
strb r4, [r1]
|
|
ldrb r1, [r3]
|
|
ldr r0, [r2]
|
|
adds r1, r0
|
|
adds r1, 0x84
|
|
movs r0, 0x4
|
|
strb r0, [r1]
|
|
ldrb r1, [r3]
|
|
ldr r2, [r2]
|
|
adds r2, r1, r2
|
|
ldr r0, =gBattleBufferB
|
|
lsls r1, 9
|
|
adds r0, 0x3
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
strb r0, [r2, 0xC]
|
|
bl _0803CD70
|
|
.pool
|
|
_0803C134:
|
|
ldr r3, =gDisableStructs
|
|
ldr r5, =gActiveBank
|
|
ldrb r4, [r5]
|
|
lsls r0, r4, 3
|
|
subs r0, r4
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrh r2, [r0, 0x6]
|
|
cmp r2, 0
|
|
beq _0803C188
|
|
ldr r1, =gChosenMovesByBanks
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
strh r2, [r0]
|
|
ldrb r2, [r5]
|
|
ldr r0, =gBattleStruct
|
|
ldr r1, [r0]
|
|
adds r1, r2, r1
|
|
adds r1, 0x80
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldrb r0, [r0, 0xC]
|
|
strb r0, [r1]
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r5]
|
|
adds r0, r1
|
|
movs r1, 0x4
|
|
strb r1, [r0]
|
|
bl _0803CD70
|
|
.pool
|
|
_0803C188:
|
|
add r2, sp, 0x4
|
|
ldr r3, =gBattleMons
|
|
movs r1, 0x58
|
|
adds r0, r4, 0
|
|
muls r0, r1
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
strh r0, [r2, 0x10]
|
|
ldrb r0, [r5]
|
|
muls r0, r1
|
|
adds r0, r3
|
|
adds r0, 0x21
|
|
ldrb r0, [r0]
|
|
strb r0, [r2, 0x12]
|
|
ldrb r0, [r5]
|
|
muls r0, r1
|
|
adds r0, r3
|
|
adds r0, 0x22
|
|
ldrb r0, [r0]
|
|
strb r0, [r2, 0x13]
|
|
movs r4, 0
|
|
mov r1, sp
|
|
adds r1, 0xC
|
|
str r1, [sp, 0x18]
|
|
add r2, sp, 0x10
|
|
mov r10, r2
|
|
mov r8, r3
|
|
adds r7, r5, 0
|
|
movs r6, 0x58
|
|
movs r0, 0xC
|
|
add r0, r8
|
|
mov r9, r0
|
|
add r5, sp, 0x4
|
|
_0803C1CA:
|
|
lsls r2, r4, 1
|
|
ldrb r0, [r7]
|
|
muls r0, r6
|
|
adds r0, r2, r0
|
|
add r0, r9
|
|
ldrh r0, [r0]
|
|
strh r0, [r5]
|
|
ldr r1, [sp, 0x18]
|
|
adds r3, r1, r4
|
|
ldrb r0, [r7]
|
|
muls r0, r6
|
|
adds r0, r4, r0
|
|
mov r1, r8
|
|
adds r1, 0x24
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r3]
|
|
ldrb r0, [r7]
|
|
adds r1, r0, 0
|
|
muls r1, r6
|
|
adds r2, r1
|
|
add r2, r9
|
|
ldrh r0, [r2]
|
|
add r1, r8
|
|
adds r1, 0x3B
|
|
ldrb r1, [r1]
|
|
lsls r2, r4, 24
|
|
lsrs r2, 24
|
|
bl CalculatePPWithBonus
|
|
mov r2, r10
|
|
adds r1, r2, r4
|
|
strb r0, [r1]
|
|
adds r5, 0x2
|
|
adds r4, 0x1
|
|
cmp r4, 0x3
|
|
ble _0803C1CA
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
movs r0, 0
|
|
movs r2, 0
|
|
add r3, sp, 0x4
|
|
bl sub_8033E30
|
|
b _0803C42E
|
|
.pool
|
|
_0803C230:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, =0x021f0902
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803C23E
|
|
b _0803C48C
|
|
_0803C23E:
|
|
ldr r4, =gActiveBank
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
bl sub_8185008
|
|
ldr r1, =gUnknown_02024220
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =gUnknown_082DB879
|
|
b _0803C784
|
|
.pool
|
|
_0803C268:
|
|
ldr r5, =gActiveBank
|
|
ldrb r0, [r5]
|
|
ldr r3, =gBattleStruct
|
|
ldr r1, [r3]
|
|
adds r1, r0, r1
|
|
adds r1, 0x58
|
|
ldr r2, =gBattlePartyID
|
|
lsls r0, 1
|
|
adds r0, r2
|
|
ldrh r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r7, =gBattleMons
|
|
ldrb r2, [r5]
|
|
movs r6, 0x58
|
|
adds r0, r2, 0
|
|
muls r0, r6
|
|
adds r1, r7, 0
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
ldr r0, =0x0400e000
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _0803C2B8
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 11
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803C2B8
|
|
ldr r0, =gStatuses3
|
|
lsls r1, r2, 2
|
|
adds r1, r0
|
|
ldr r1, [r1]
|
|
movs r0, 0x80
|
|
lsls r0, 3
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803C2EC
|
|
_0803C2B8:
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
adds r1, 0x60
|
|
ldr r0, [r3]
|
|
adds r0, r1
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r1, 0x2
|
|
movs r2, 0x6
|
|
b _0803C400
|
|
.pool
|
|
_0803C2EC:
|
|
str r1, [sp]
|
|
movs r0, 0xC
|
|
adds r1, r2, 0
|
|
movs r2, 0x17
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0
|
|
bne _0803C374
|
|
ldrb r1, [r5]
|
|
str r4, [sp]
|
|
movs r0, 0xC
|
|
movs r2, 0x47
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0
|
|
beq _0803C33C
|
|
ldrb r0, [r5]
|
|
muls r0, r6
|
|
adds r1, r0, r7
|
|
adds r0, r1, 0
|
|
adds r0, 0x21
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
beq _0803C33C
|
|
adds r0, r1, 0
|
|
adds r0, 0x22
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
beq _0803C33C
|
|
adds r0, r1, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1A
|
|
bne _0803C374
|
|
_0803C33C:
|
|
ldr r5, =gActiveBank
|
|
ldrb r1, [r5]
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xF
|
|
movs r2, 0x2A
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0
|
|
beq _0803C3B0
|
|
ldr r2, =gBattleMons
|
|
ldrb r1, [r5]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
adds r1, r0, r2
|
|
adds r0, r1, 0
|
|
adds r0, 0x21
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x8
|
|
beq _0803C374
|
|
adds r0, r1, 0
|
|
adds r0, 0x22
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x8
|
|
bne _0803C3B0
|
|
_0803C374:
|
|
subs r1, r4, 0x1
|
|
lsls r1, 4
|
|
movs r0, 0x4
|
|
orrs r1, r0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r0, =gLastUsedAbility
|
|
ldrb r3, [r0]
|
|
ldr r4, =gBattleStruct
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
lsls r2, r0, 1
|
|
adds r2, r0
|
|
adds r2, 0x60
|
|
ldr r0, [r4]
|
|
adds r0, r2
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r2, 0x6
|
|
bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
|
|
b _0803C42E
|
|
.pool
|
|
_0803C3B0:
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
adds r4, r0, 0
|
|
cmp r1, 0x2
|
|
bne _0803C3D8
|
|
ldr r0, =gUnknown_0202421C
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
bne _0803C3D8
|
|
ldr r0, =gBattleStruct
|
|
ldr r3, [r0]
|
|
adds r0, r3, 0
|
|
adds r0, 0x5C
|
|
b _0803C3EE
|
|
.pool
|
|
_0803C3D8:
|
|
ldrb r0, [r4]
|
|
cmp r0, 0x3
|
|
bne _0803C410
|
|
ldr r0, =gUnknown_0202421C
|
|
ldrb r0, [r0, 0x1]
|
|
cmp r0, 0x2
|
|
bne _0803C410
|
|
ldr r0, =gBattleStruct
|
|
ldr r3, [r0]
|
|
adds r0, r3, 0
|
|
adds r0, 0x5D
|
|
_0803C3EE:
|
|
ldrb r2, [r0]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
adds r0, 0x60
|
|
adds r3, r0
|
|
str r3, [sp]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
_0803C400:
|
|
movs r3, 0
|
|
bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
|
|
b _0803C42E
|
|
.pool
|
|
_0803C410:
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
adds r1, 0x60
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0x6
|
|
movs r3, 0
|
|
bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
|
|
_0803C42E:
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
bl MarkBufferBankForExecution
|
|
b _0803C6C4
|
|
.pool
|
|
_0803C440:
|
|
bl IsPlayerPartyAndPokemonStorageFull
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803C44C
|
|
b _0803C6C4
|
|
_0803C44C:
|
|
ldr r1, =gUnknown_02024220
|
|
ldr r3, =gActiveBank
|
|
ldrb r0, [r3]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r1, =gUnknown_082DAB11
|
|
str r1, [r0]
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r1, [r3]
|
|
adds r1, r0
|
|
movs r4, 0
|
|
movs r0, 0x6
|
|
strb r0, [r1]
|
|
ldrb r1, [r3]
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r2]
|
|
adds r1, r0
|
|
adds r1, 0x54
|
|
strb r4, [r1]
|
|
ldrb r1, [r3]
|
|
b _0803C7A0
|
|
.pool
|
|
_0803C48C:
|
|
ldr r2, =gBattleStruct
|
|
ldr r4, =gActiveBank
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
adds r0, 0x60
|
|
ldr r1, [r2]
|
|
adds r1, r0
|
|
movs r0, 0
|
|
bl sub_8033E6C
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
b _0803C6C4
|
|
.pool
|
|
_0803C4B4:
|
|
ldr r4, =gBattleCommunication
|
|
ldr r5, =gActiveBank
|
|
ldrb r0, [r5]
|
|
adds r0, r4
|
|
movs r1, 0x7
|
|
strb r1, [r0]
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
movs r6, 0x2
|
|
eors r0, r6
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r4
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
ldrb r0, [r5]
|
|
bl sub_8185008
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
eors r0, r6
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
ldr r1, =gBattleMons
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r7, 0x58
|
|
muls r0, r7
|
|
adds r4, r1, 0
|
|
adds r4, 0x50
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803C532
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
eors r0, r6
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
muls r0, r7
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 15
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803C550
|
|
_0803C532:
|
|
movs r0, 0
|
|
bl dp01_build_cmdbuf_x32_32_32_32
|
|
ldrb r0, [r5]
|
|
bl MarkBufferBankForExecution
|
|
bl _0803CD70
|
|
.pool
|
|
_0803C550:
|
|
ldr r4, =gUnknown_0202421C
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
eors r0, r6
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
bne _0803C590
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
eors r0, r6
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x2
|
|
bl sub_8185008
|
|
b _0803C6AE
|
|
.pool
|
|
_0803C590:
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
eors r0, r6
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x3
|
|
bne _0803C5B6
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
eors r0, r6
|
|
b _0803C668
|
|
_0803C5B6:
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
eors r0, r6
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803C628
|
|
ldr r4, =gProtectStructs
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
eors r0, r6
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r0, 20
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
lsls r0, 29
|
|
cmp r0, 0
|
|
blt _0803C616
|
|
ldr r4, =gDisableStructs
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
eors r0, r6
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r4
|
|
ldrh r0, [r1, 0x6]
|
|
cmp r0, 0
|
|
beq _0803C628
|
|
_0803C616:
|
|
ldrb r0, [r5]
|
|
bl GetBankIdentity
|
|
eors r0, r6
|
|
b _0803C668
|
|
.pool
|
|
_0803C628:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803C690
|
|
ldr r4, =gUnknown_0202421C
|
|
ldr r6, =gActiveBank
|
|
ldrb r0, [r6]
|
|
bl GetBankIdentity
|
|
movs r5, 0x2
|
|
eors r0, r5
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803C690
|
|
ldr r1, =gRngValue
|
|
ldr r0, =gUnknown_0203BD30
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldrb r0, [r6]
|
|
bl GetBankIdentity
|
|
eors r0, r5
|
|
_0803C668:
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x1
|
|
bl sub_8185008
|
|
b _0803C6AE
|
|
.pool
|
|
_0803C690:
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
bl GetBankIdentity
|
|
movs r1, 0x2
|
|
eors r0, r1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r1, 0x3
|
|
bl sub_8185008
|
|
_0803C6AE:
|
|
movs r0, 0
|
|
bl dp01_build_cmdbuf_x32_32_32_32
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
bl MarkBufferBankForExecution
|
|
b _0803CD70
|
|
.pool
|
|
_0803C6C4:
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r2, [r1]
|
|
movs r5, 0x8
|
|
adds r0, r2, 0
|
|
ands r0, r5
|
|
adds r3, r1, 0
|
|
cmp r0, 0
|
|
beq _0803C720
|
|
ldr r0, =0x043f0100
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0803C720
|
|
ldr r0, =gBattleBufferB
|
|
ldr r4, =gActiveBank
|
|
ldrb r2, [r4]
|
|
lsls r1, r2, 9
|
|
adds r0, 0x1
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x3
|
|
bne _0803C720
|
|
ldr r1, =gUnknown_02024220
|
|
lsls r0, r2, 2
|
|
adds r0, r1
|
|
ldr r1, =gUnknown_082DB9BA
|
|
str r1, [r0]
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r4]
|
|
adds r0, r1
|
|
movs r3, 0
|
|
strb r5, [r0]
|
|
b _0803C792
|
|
.pool
|
|
_0803C720:
|
|
ldr r0, [r3]
|
|
ldr r1, =0x0200000a
|
|
ands r0, r1
|
|
cmp r0, 0x8
|
|
bne _0803C760
|
|
ldr r0, =gBattleBufferB
|
|
ldr r4, =gActiveBank
|
|
ldrb r1, [r4]
|
|
lsls r1, 9
|
|
adds r0, 0x1
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x3
|
|
bne _0803C760
|
|
ldr r0, =gUnknown_082DAAFE
|
|
bl b_call_bc_move_exec
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r4]
|
|
adds r0, r1
|
|
b _0803CC20
|
|
.pool
|
|
_0803C760:
|
|
bl sub_803BB88
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803C7C4
|
|
ldr r0, =gBattleBufferB
|
|
ldr r4, =gActiveBank
|
|
ldrb r2, [r4]
|
|
lsls r1, r2, 9
|
|
adds r0, 0x1
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x3
|
|
bne _0803C7C4
|
|
ldr r1, =gUnknown_02024220
|
|
lsls r0, r2, 2
|
|
adds r0, r1
|
|
ldr r1, =gUnknown_082DAB0B
|
|
_0803C784:
|
|
str r1, [r0]
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r1, [r4]
|
|
adds r1, r0
|
|
movs r3, 0
|
|
movs r0, 0x6
|
|
strb r0, [r1]
|
|
_0803C792:
|
|
ldrb r1, [r4]
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r2]
|
|
adds r1, r0
|
|
adds r1, 0x54
|
|
strb r3, [r1]
|
|
ldrb r1, [r4]
|
|
_0803C7A0:
|
|
ldr r0, [r2]
|
|
adds r1, r0
|
|
adds r1, 0x84
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
b _0803CD70
|
|
.pool
|
|
_0803C7C4:
|
|
ldr r2, =gBattleCommunication
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
adds r1, r2
|
|
b _0803CB74
|
|
.pool
|
|
_0803C7D8:
|
|
ldr r4, =gBattleExecBuffer
|
|
ldr r1, =gBitTable
|
|
ldr r3, =gActiveBank
|
|
ldrb r5, [r3]
|
|
lsls r0, r5, 2
|
|
adds r0, r1
|
|
ldr r2, [r0]
|
|
lsls r0, r2, 4
|
|
movs r1, 0xF0
|
|
lsls r1, 24
|
|
orrs r0, r1
|
|
orrs r0, r2
|
|
lsls r1, r2, 8
|
|
orrs r0, r1
|
|
lsls r2, 12
|
|
orrs r0, r2
|
|
ldr r1, [r4]
|
|
ands r1, r0
|
|
adds r4, r3, 0
|
|
cmp r1, 0
|
|
beq _0803C804
|
|
b _0803CD04
|
|
_0803C804:
|
|
ldr r1, =gUnknown_0202421C
|
|
adds r0, r5, r1
|
|
ldrb r0, [r0]
|
|
adds r2, r1, 0
|
|
cmp r0, 0x9
|
|
bls _0803C812
|
|
b _0803CD04
|
|
_0803C812:
|
|
lsls r0, 2
|
|
ldr r1, =_0803C830
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_0803C830:
|
|
.4byte _0803C858
|
|
.4byte _0803C99C
|
|
.4byte _0803C9D4
|
|
.4byte _0803CA0A
|
|
.4byte _0803CA2C
|
|
.4byte _0803CA40
|
|
.4byte _0803CA54
|
|
.4byte _0803CA84
|
|
.4byte _0803CA98
|
|
.4byte _0803CABC
|
|
_0803C858:
|
|
ldr r1, =gBattleBufferB
|
|
ldrb r3, [r4]
|
|
lsls r0, r3, 9
|
|
adds r1, 0x1
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
cmp r1, 0x3
|
|
blt _0803C88A
|
|
cmp r1, 0x9
|
|
ble _0803C878
|
|
cmp r1, 0xF
|
|
beq _0803C87E
|
|
b _0803C88A
|
|
.pool
|
|
_0803C878:
|
|
adds r0, r3, r2
|
|
strb r1, [r0]
|
|
b _0803CD70
|
|
_0803C87E:
|
|
adds r1, r3, r2
|
|
movs r0, 0x2
|
|
strb r0, [r1]
|
|
bl sub_803CDF8
|
|
b _0803CD70
|
|
_0803C88A:
|
|
movs r0, 0x2
|
|
bl sub_818603C
|
|
ldr r4, =gBattleBufferB
|
|
ldr r6, =gActiveBank
|
|
ldrb r3, [r6]
|
|
lsls r1, r3, 9
|
|
adds r5, r4, 0x2
|
|
adds r0, r1, r5
|
|
ldrb r2, [r0]
|
|
adds r7, r4, 0x3
|
|
adds r1, r7
|
|
ldrb r0, [r1]
|
|
lsls r0, 8
|
|
orrs r2, r0
|
|
ldr r0, =0x0000ffff
|
|
cmp r2, r0
|
|
bne _0803C8D0
|
|
ldr r0, =gBattleCommunication
|
|
adds r0, r3, r0
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
ldrb r0, [r6]
|
|
bl sub_8185008
|
|
b _0803CD04
|
|
.pool
|
|
_0803C8D0:
|
|
bl sub_803FB4C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803C91C
|
|
ldrb r0, [r6]
|
|
movs r1, 0x1
|
|
bl sub_8185008
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r1, [r6]
|
|
adds r1, r0
|
|
movs r3, 0
|
|
movs r0, 0x6
|
|
strb r0, [r1]
|
|
ldrb r1, [r6]
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r2]
|
|
adds r1, r0
|
|
adds r1, 0x54
|
|
strb r3, [r1]
|
|
ldrb r0, [r6]
|
|
lsls r0, 9
|
|
adds r1, r4, 0x1
|
|
adds r0, r1
|
|
strb r3, [r0]
|
|
ldrb r1, [r6]
|
|
ldr r0, [r2]
|
|
adds r1, r0
|
|
adds r1, 0x84
|
|
movs r0, 0x2
|
|
strb r0, [r1]
|
|
b _0803CD70
|
|
.pool
|
|
_0803C91C:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803C942
|
|
ldrb r0, [r6]
|
|
lsls r1, r0, 9
|
|
adds r1, r5
|
|
ldrb r1, [r1]
|
|
bl sub_8184FBC
|
|
ldrb r0, [r6]
|
|
lsls r1, r0, 9
|
|
adds r1, r7
|
|
ldrb r1, [r1]
|
|
bl sub_8184FBC
|
|
_0803C942:
|
|
ldrb r0, [r6]
|
|
ldr r4, =gBattleStruct
|
|
ldr r1, [r4]
|
|
adds r1, r0, r1
|
|
adds r1, 0x80
|
|
lsls r0, 9
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r0, =gChosenMovesByBanks
|
|
ldrb r2, [r6]
|
|
lsls r5, r2, 1
|
|
adds r5, r0
|
|
ldr r3, =gBattleMons
|
|
ldr r4, [r4]
|
|
adds r0, r2, r4
|
|
adds r0, 0x80
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
movs r1, 0x58
|
|
muls r1, r2
|
|
adds r0, r1
|
|
adds r3, 0xC
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
strh r0, [r5]
|
|
ldrb r0, [r6]
|
|
adds r4, r0, r4
|
|
lsls r0, 9
|
|
adds r0, r7
|
|
ldrb r0, [r0]
|
|
strb r0, [r4, 0xC]
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r1, [r6]
|
|
b _0803CB72
|
|
.pool
|
|
_0803C99C:
|
|
ldr r2, =gBattleBufferB
|
|
ldr r5, =gActiveBank
|
|
ldrb r4, [r5]
|
|
lsls r1, r4, 9
|
|
adds r0, r2, 0x1
|
|
adds r0, r1, r0
|
|
ldrb r3, [r0]
|
|
adds r2, 0x2
|
|
adds r1, r2
|
|
ldrb r0, [r1]
|
|
lsls r0, 8
|
|
orrs r3, r0
|
|
cmp r3, 0
|
|
bne _0803C9BA
|
|
b _0803CC1C
|
|
_0803C9BA:
|
|
ldr r0, =gLastUsedItem
|
|
strh r3, [r0]
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r1, [r5]
|
|
b _0803CB72
|
|
.pool
|
|
_0803C9D4:
|
|
ldr r0, =gBattleBufferB
|
|
ldr r4, =gActiveBank
|
|
ldrb r2, [r4]
|
|
lsls r1, r2, 9
|
|
adds r0, 0x1
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x6
|
|
bne _0803CA04
|
|
ldr r0, =gBattleCommunication
|
|
adds r0, r2, r0
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
ldrb r0, [r4]
|
|
bl sub_8185008
|
|
b _0803CD04
|
|
.pool
|
|
_0803CA04:
|
|
bl sub_803CDF8
|
|
b _0803CB6E
|
|
_0803CA0A:
|
|
ldr r2, =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
ldr r2, =gBattleCommunication
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
adds r1, r2
|
|
b _0803CB74
|
|
.pool
|
|
_0803CA2C:
|
|
ldr r2, =gBattleCommunication
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
adds r1, r2
|
|
b _0803CB74
|
|
.pool
|
|
_0803CA40:
|
|
ldr r2, =gBattleCommunication
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
adds r1, r2
|
|
b _0803CB74
|
|
.pool
|
|
_0803CA54:
|
|
ldr r3, =gBattleBufferB
|
|
ldr r0, =gActiveBank
|
|
ldrb r4, [r0]
|
|
lsls r1, r4, 9
|
|
adds r0, r3, 0x1
|
|
adds r0, r1, r0
|
|
ldrb r2, [r0]
|
|
adds r3, 0x2
|
|
adds r1, r3
|
|
ldrb r0, [r1]
|
|
lsls r0, 8
|
|
orrs r2, r0
|
|
cmp r2, 0
|
|
bne _0803CA72
|
|
b _0803CC1C
|
|
_0803CA72:
|
|
ldr r1, =gBattleCommunication
|
|
adds r1, r4, r1
|
|
b _0803CB74
|
|
.pool
|
|
_0803CA84:
|
|
ldr r2, =gBattleCommunication
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
adds r1, r2
|
|
b _0803CB74
|
|
.pool
|
|
_0803CA98:
|
|
ldr r2, =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
ldr r2, =gBattleCommunication
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
adds r1, r2
|
|
b _0803CB74
|
|
.pool
|
|
_0803CABC:
|
|
ldr r2, =gBattleCommunication
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
adds r1, r2
|
|
b _0803CB74
|
|
.pool
|
|
_0803CAD0:
|
|
ldr r3, =gBattleExecBuffer
|
|
ldr r6, =gBitTable
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldr r2, [r0]
|
|
lsls r1, r2, 4
|
|
movs r0, 0xF0
|
|
lsls r0, 24
|
|
orrs r1, r0
|
|
orrs r1, r2
|
|
lsls r0, r2, 8
|
|
orrs r1, r0
|
|
lsls r2, 12
|
|
orrs r1, r2
|
|
ldr r0, [r3]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803CAFA
|
|
b _0803CD04
|
|
_0803CAFA:
|
|
bl sub_803CDB8
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
negs r1, r0
|
|
orrs r1, r0
|
|
lsrs r4, r1, 31
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x41
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0803CB3C
|
|
movs r1, 0x2
|
|
movs r0, 0x2
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
bne _0803CB3C
|
|
adds r0, r5, 0
|
|
eors r0, r1
|
|
bl GetBankByPlayerAI
|
|
ldr r1, =gBattleStruct
|
|
ldr r1, [r1]
|
|
adds r1, 0x91
|
|
ldrb r1, [r1]
|
|
lsls r0, 24
|
|
lsrs r0, 22
|
|
adds r0, r6
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803CB5C
|
|
_0803CB3C:
|
|
movs r0, 0
|
|
movs r1, 0
|
|
adds r2, r4, 0
|
|
bl sub_8034464
|
|
b _0803CB66
|
|
.pool
|
|
_0803CB5C:
|
|
movs r0, 0
|
|
movs r1, 0x1
|
|
adds r2, r4, 0
|
|
bl sub_8034464
|
|
_0803CB66:
|
|
ldr r4, =gActiveBank
|
|
_0803CB68:
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
_0803CB6E:
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r1, [r4]
|
|
_0803CB72:
|
|
adds r1, r0
|
|
_0803CB74:
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
b _0803CD04
|
|
.pool
|
|
_0803CB84:
|
|
ldr r3, =gBattleExecBuffer
|
|
ldr r1, =gBitTable
|
|
ldr r0, =gActiveBank
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r2, [r0]
|
|
lsls r1, r2, 4
|
|
movs r0, 0xF0
|
|
lsls r0, 24
|
|
orrs r1, r0
|
|
orrs r1, r2
|
|
lsls r0, r2, 8
|
|
orrs r1, r0
|
|
lsls r2, 12
|
|
orrs r1, r2
|
|
ldr r0, [r3]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803CBAE
|
|
b _0803CD04
|
|
_0803CBAE:
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r1, 0x4]
|
|
adds r0, 0x1
|
|
strb r0, [r1, 0x4]
|
|
b _0803CD04
|
|
.pool
|
|
_0803CBC8:
|
|
ldr r5, =gActiveBank
|
|
ldrb r2, [r5]
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
adds r1, r2, r0
|
|
adds r0, r1, 0
|
|
adds r0, 0x54
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803CCB4
|
|
ldr r0, =gBattleCommunication
|
|
adds r0, r2, r0
|
|
adds r1, 0x84
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
b _0803CD04
|
|
.pool
|
|
_0803CBF4:
|
|
ldr r3, =gBattleExecBuffer
|
|
ldr r1, =gBitTable
|
|
ldr r0, =gActiveBank
|
|
ldrb r4, [r0]
|
|
lsls r0, r4, 2
|
|
adds r0, r1
|
|
ldr r2, [r0]
|
|
lsls r1, r2, 4
|
|
movs r0, 0xF0
|
|
lsls r0, 24
|
|
orrs r1, r0
|
|
orrs r1, r2
|
|
lsls r0, r2, 8
|
|
orrs r1, r0
|
|
lsls r2, 12
|
|
orrs r1, r2
|
|
ldr r0, [r3]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803CD04
|
|
_0803CC1C:
|
|
ldr r0, =gBattleCommunication
|
|
adds r0, r4, r0
|
|
_0803CC20:
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
b _0803CD04
|
|
.pool
|
|
_0803CC38:
|
|
ldr r5, =gActiveBank
|
|
ldrb r2, [r5]
|
|
ldr r4, =gBattleStruct
|
|
ldr r0, [r4]
|
|
adds r0, r2, r0
|
|
adds r0, 0x54
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803CCB4
|
|
ldr r0, =gBattleBufferB
|
|
lsls r1, r2, 9
|
|
adds r0, 0x1
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, 0xD
|
|
bne _0803CC94
|
|
ldr r2, =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
ldr r1, =gUnknown_0202421C
|
|
ldrb r0, [r5]
|
|
adds r0, r1
|
|
movs r1, 0x3
|
|
strb r1, [r0]
|
|
ldr r1, =gBattleCommunication
|
|
ldrb r0, [r5]
|
|
_0803CC72:
|
|
adds r0, r1
|
|
movs r1, 0x4
|
|
strb r1, [r0]
|
|
b _0803CD04
|
|
.pool
|
|
_0803CC94:
|
|
adds r0, r2, 0
|
|
movs r1, 0x1
|
|
bl sub_8185008
|
|
ldr r2, =gBattleCommunication
|
|
ldrb r0, [r5]
|
|
adds r2, r0, r2
|
|
ldr r1, [r4]
|
|
adds r0, r1
|
|
adds r0, 0x84
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
b _0803CD04
|
|
.pool
|
|
_0803CCB4:
|
|
ldr r0, =gBankAttacker
|
|
strb r2, [r0]
|
|
ldr r7, =gBattlescriptCurrInstr
|
|
ldr r6, =gUnknown_02024220
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldr r4, [r0]
|
|
str r4, [r7]
|
|
ldr r3, =gBattleExecBuffer
|
|
ldr r1, =gBitTable
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r2, [r0]
|
|
lsls r1, r2, 4
|
|
movs r0, 0xF0
|
|
lsls r0, 24
|
|
orrs r1, r0
|
|
orrs r1, r2
|
|
lsls r0, r2, 8
|
|
orrs r1, r0
|
|
lsls r2, 12
|
|
orrs r1, r2
|
|
ldr r0, [r3]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803CCFA
|
|
ldr r0, =gBattleScriptingCommandsTable
|
|
ldrb r1, [r4]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldr r0, [r1]
|
|
bl _call_via_r0
|
|
_0803CCFA:
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldr r1, [r7]
|
|
str r1, [r0]
|
|
_0803CD04:
|
|
ldr r0, =gActiveBank
|
|
ldrb r1, [r0]
|
|
adds r1, 0x1
|
|
strb r1, [r0]
|
|
ldr r0, =gNoOfAllBanks
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
_0803CD12:
|
|
adds r5, r0, 0
|
|
ldrb r0, [r5]
|
|
cmp r1, r0
|
|
bcs _0803CD1E
|
|
bl _0803BE9C
|
|
_0803CD1E:
|
|
ldr r0, =gBattleCommunication
|
|
ldrb r0, [r0, 0x4]
|
|
ldrb r1, [r5]
|
|
cmp r0, r1
|
|
bne _0803CD70
|
|
movs r0, 0x1
|
|
bl sub_818603C
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803D2E8
|
|
str r0, [r1]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 15
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803CD70
|
|
movs r4, 0
|
|
ldrb r5, [r5]
|
|
cmp r4, r5
|
|
bge _0803CD70
|
|
_0803CD4A:
|
|
ldr r0, =gUnknown_0202421C
|
|
adds r0, r4, r0
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
bne _0803CD66
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gBattleStruct
|
|
ldr r1, [r1]
|
|
adds r1, r4, r1
|
|
adds r1, 0x5C
|
|
ldrb r1, [r1]
|
|
bl sub_80571DC
|
|
_0803CD66:
|
|
adds r4, 0x1
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _0803CD4A
|
|
_0803CD70:
|
|
add sp, 0x1C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803BE74
|
|
|
|
thumb_func_start sub_803CDB8
|
|
sub_803CDB8: @ 803CDB8
|
|
push {r4,r5,lr}
|
|
movs r3, 0
|
|
movs r1, 0
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r2, [r0]
|
|
adds r5, r0, 0
|
|
cmp r3, r2
|
|
bge _0803CDDA
|
|
ldr r4, =gBattleCommunication
|
|
_0803CDCA:
|
|
adds r0, r1, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x5
|
|
bne _0803CDD4
|
|
adds r3, 0x1
|
|
_0803CDD4:
|
|
adds r1, 0x1
|
|
cmp r1, r2
|
|
blt _0803CDCA
|
|
_0803CDDA:
|
|
adds r0, r3, 0x1
|
|
ldrb r5, [r5]
|
|
cmp r0, r5
|
|
beq _0803CDF0
|
|
movs r0, 0
|
|
b _0803CDF2
|
|
.pool
|
|
_0803CDF0:
|
|
movs r0, 0x1
|
|
_0803CDF2:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_803CDB8
|
|
|
|
thumb_func_start sub_803CDF8
|
|
sub_803CDF8: @ 803CDF8
|
|
push {r4-r7,lr}
|
|
ldr r7, =gActiveBank
|
|
ldrb r0, [r7]
|
|
ldr r6, =gBattleStruct
|
|
ldr r1, [r6]
|
|
adds r1, r0, r1
|
|
adds r1, 0x5C
|
|
ldr r4, =gBattleBufferB
|
|
lsls r0, 9
|
|
adds r2, r4, 0x1
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldrb r0, [r7]
|
|
lsls r1, r0, 9
|
|
adds r1, r2
|
|
ldrb r1, [r1]
|
|
bl sub_8184FBC
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x42
|
|
ands r0, r1
|
|
cmp r0, 0x42
|
|
bne _0803CEC6
|
|
ldrb r0, [r7]
|
|
ldr r2, [r6]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
adds r1, r2
|
|
adds r1, 0x60
|
|
ldrb r2, [r1]
|
|
movs r0, 0xF
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldrb r0, [r7]
|
|
ldr r2, [r6]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
adds r1, r2
|
|
adds r1, 0x60
|
|
lsls r0, 9
|
|
adds r5, r4, 0x2
|
|
adds r0, r5
|
|
ldrb r2, [r0]
|
|
movs r3, 0xF0
|
|
adds r0, r3, 0
|
|
ands r0, r2
|
|
ldrb r2, [r1]
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
ldrb r1, [r7]
|
|
ldr r2, [r6]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
adds r0, r2
|
|
adds r0, 0x61
|
|
lsls r1, 9
|
|
adds r4, 0x3
|
|
mov r12, r4
|
|
add r1, r12
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
ldrb r0, [r7]
|
|
movs r4, 0x2
|
|
eors r0, r4
|
|
ldr r2, [r6]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
adds r1, r2
|
|
adds r1, 0x60
|
|
ldrb r2, [r1]
|
|
adds r0, r3, 0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldrb r0, [r7]
|
|
eors r0, r4
|
|
ldr r2, [r6]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
adds r1, r2
|
|
adds r1, 0x60
|
|
ldrb r0, [r7]
|
|
lsls r0, 9
|
|
adds r0, r5
|
|
ldrb r0, [r0]
|
|
ands r3, r0
|
|
lsrs r3, 4
|
|
ldrb r0, [r1]
|
|
orrs r3, r0
|
|
strb r3, [r1]
|
|
ldrb r0, [r7]
|
|
eors r4, r0
|
|
ldr r0, [r6]
|
|
lsls r1, r4, 1
|
|
adds r1, r4
|
|
adds r1, r0
|
|
adds r1, 0x62
|
|
ldrb r0, [r7]
|
|
lsls r0, 9
|
|
add r0, r12
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
_0803CEC6:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803CDF8
|
|
|
|
thumb_func_start sub_803CEDC
|
|
sub_803CEDC: @ 803CEDC
|
|
push {r4,r5,lr}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r2, =gUnknown_0202407A
|
|
adds r4, r0, r2
|
|
ldrb r5, [r4]
|
|
adds r2, r1, r2
|
|
ldrb r3, [r2]
|
|
strb r3, [r4]
|
|
strb r5, [r2]
|
|
ldr r2, =gTurnOrder
|
|
adds r0, r2
|
|
ldrb r5, [r0]
|
|
adds r1, r2
|
|
ldrb r2, [r1]
|
|
strb r2, [r0]
|
|
strb r5, [r1]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803CEDC
|
|
|
|
thumb_func_start b_first_side
|
|
b_first_side: @ 803CF10
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0xC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r10, r1
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
str r2, [sp, 0x4]
|
|
movs r0, 0
|
|
str r0, [sp, 0x8]
|
|
str r0, [sp]
|
|
movs r0, 0x13
|
|
movs r1, 0
|
|
movs r2, 0xD
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803CFD8
|
|
ldr r1, [sp, 0x8]
|
|
str r1, [sp]
|
|
movs r0, 0x13
|
|
movs r1, 0
|
|
movs r2, 0x4D
|
|
movs r3, 0
|
|
bl AbilityBattleEffects
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803CFD8
|
|
ldr r1, =gBattleMons
|
|
movs r0, 0x58
|
|
mov r2, r9
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
adds r0, r1
|
|
adds r0, 0x20
|
|
ldrb r3, [r0]
|
|
cmp r3, 0x21
|
|
bne _0803CF7C
|
|
ldr r0, =gBattleWeather
|
|
ldrh r1, [r0]
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803CF8C
|
|
_0803CF7C:
|
|
cmp r3, 0x22
|
|
bne _0803CF98
|
|
ldr r0, =gBattleWeather
|
|
ldrh r1, [r0]
|
|
movs r0, 0x60
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803CF98
|
|
_0803CF8C:
|
|
movs r3, 0x2
|
|
b _0803CF9A
|
|
.pool
|
|
_0803CF98:
|
|
movs r3, 0x1
|
|
_0803CF9A:
|
|
movs r0, 0x58
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
ldr r2, =gBattleMons
|
|
adds r0, r2
|
|
adds r0, 0x20
|
|
ldrb r2, [r0]
|
|
cmp r2, 0x21
|
|
bne _0803CFBA
|
|
ldr r0, =gBattleWeather
|
|
ldrh r1, [r0]
|
|
movs r0, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803CFCA
|
|
_0803CFBA:
|
|
cmp r2, 0x22
|
|
bne _0803CFDA
|
|
ldr r0, =gBattleWeather
|
|
ldrh r1, [r0]
|
|
movs r0, 0x60
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803CFDA
|
|
_0803CFCA:
|
|
movs r7, 0x2
|
|
b _0803CFDC
|
|
.pool
|
|
_0803CFD8:
|
|
movs r3, 0x1
|
|
_0803CFDA:
|
|
movs r7, 0x1
|
|
_0803CFDC:
|
|
ldr r1, =gBattleMons
|
|
movs r0, 0x58
|
|
mov r2, r9
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4, 0x6]
|
|
muls r3, r0
|
|
ldr r2, =gStatStageRatios
|
|
movs r1, 0x1B
|
|
ldrsb r1, [r4, r1]
|
|
lsls r1, 1
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
muls r0, r3
|
|
adds r2, 0x1
|
|
adds r1, r2
|
|
ldrb r1, [r1]
|
|
bl __divsi3
|
|
mov r8, r0
|
|
ldrh r0, [r4, 0x2E]
|
|
cmp r0, 0xAF
|
|
bne _0803D02C
|
|
ldr r1, =gEnigmaBerries
|
|
mov r3, r9
|
|
lsls r0, r3, 3
|
|
subs r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r6, [r0, 0x7]
|
|
ldrb r5, [r0, 0x1A]
|
|
b _0803D040
|
|
.pool
|
|
_0803D02C:
|
|
ldrh r0, [r4, 0x2E]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldrh r0, [r4, 0x2E]
|
|
bl ItemId_GetHoldEffectParam
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
_0803D040:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, =0x023f0102
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803D074
|
|
ldr r0, =0x00000869
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803D074
|
|
mov r0, r9
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803D074
|
|
movs r0, 0x6E
|
|
mov r1, r8
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
movs r1, 0x64
|
|
bl __udivsi3
|
|
mov r8, r0
|
|
_0803D074:
|
|
cmp r6, 0x18
|
|
bne _0803D07E
|
|
mov r2, r8
|
|
lsrs r2, 1
|
|
mov r8, r2
|
|
_0803D07E:
|
|
ldr r1, =gBattleMons
|
|
movs r0, 0x58
|
|
mov r3, r9
|
|
muls r3, r0
|
|
adds r0, r3, 0
|
|
adds r1, 0x4C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803D09C
|
|
mov r0, r8
|
|
lsrs r0, 2
|
|
mov r8, r0
|
|
_0803D09C:
|
|
cmp r6, 0x1A
|
|
bne _0803D0B8
|
|
ldr r0, =gUnknown_02024330
|
|
ldrh r4, [r0]
|
|
lsls r0, r5, 16
|
|
subs r0, r5
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
bge _0803D0B8
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
mov r8, r1
|
|
_0803D0B8:
|
|
ldr r1, =gBattleMons
|
|
movs r0, 0x58
|
|
mov r2, r10
|
|
muls r2, r0
|
|
adds r0, r2, 0
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4, 0x6]
|
|
adds r3, r0, 0
|
|
muls r3, r7
|
|
ldr r2, =gStatStageRatios
|
|
movs r1, 0x1B
|
|
ldrsb r1, [r4, r1]
|
|
lsls r1, 1
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
muls r0, r3
|
|
adds r2, 0x1
|
|
adds r1, r2
|
|
ldrb r1, [r1]
|
|
bl __divsi3
|
|
adds r7, r0, 0
|
|
ldrh r0, [r4, 0x2E]
|
|
cmp r0, 0xAF
|
|
bne _0803D118
|
|
ldr r1, =gEnigmaBerries
|
|
mov r3, r10
|
|
lsls r0, r3, 3
|
|
subs r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r6, [r0, 0x7]
|
|
ldrb r5, [r0, 0x1A]
|
|
b _0803D12C
|
|
.pool
|
|
_0803D118:
|
|
ldrh r0, [r4, 0x2E]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldrh r0, [r4, 0x2E]
|
|
bl ItemId_GetHoldEffectParam
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
_0803D12C:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, =0x023f0102
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803D15C
|
|
ldr r0, =0x00000869
|
|
bl FlagGet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803D15C
|
|
mov r0, r10
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803D15C
|
|
movs r0, 0x6E
|
|
muls r0, r7
|
|
movs r1, 0x64
|
|
bl __udivsi3
|
|
adds r7, r0, 0
|
|
_0803D15C:
|
|
cmp r6, 0x18
|
|
bne _0803D162
|
|
lsrs r7, 1
|
|
_0803D162:
|
|
ldr r2, =gBattleMons
|
|
movs r0, 0x58
|
|
mov r1, r10
|
|
muls r1, r0
|
|
adds r0, r1, 0
|
|
adds r1, r2, 0
|
|
adds r1, 0x4C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803D17E
|
|
lsrs r7, 2
|
|
_0803D17E:
|
|
cmp r6, 0x1A
|
|
bne _0803D198
|
|
ldr r0, =gUnknown_02024330
|
|
ldrh r4, [r0]
|
|
lsls r0, r5, 16
|
|
subs r0, r5
|
|
movs r1, 0x64
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
bge _0803D198
|
|
movs r7, 0x1
|
|
negs r7, r7
|
|
_0803D198:
|
|
ldr r2, [sp, 0x4]
|
|
cmp r2, 0
|
|
beq _0803D1B8
|
|
movs r3, 0
|
|
b _0803D254
|
|
.pool
|
|
_0803D1B8:
|
|
ldr r0, =gUnknown_0202421C
|
|
mov r3, r9
|
|
adds r1, r3, r0
|
|
ldrb r1, [r1]
|
|
adds r2, r0, 0
|
|
cmp r1, 0
|
|
bne _0803D208
|
|
ldr r0, =gProtectStructs
|
|
lsls r1, r3, 4
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, 29
|
|
cmp r0, 0
|
|
bge _0803D1E0
|
|
movs r3, 0xA5
|
|
b _0803D20A
|
|
.pool
|
|
_0803D1E0:
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
add r0, r9
|
|
adds r0, 0x80
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
movs r1, 0x58
|
|
mov r3, r9
|
|
muls r3, r1
|
|
adds r1, r3, 0
|
|
adds r0, r1
|
|
ldr r1, =gBattleMons
|
|
adds r1, 0xC
|
|
adds r0, r1
|
|
ldrh r3, [r0]
|
|
b _0803D20A
|
|
.pool
|
|
_0803D208:
|
|
movs r3, 0
|
|
_0803D20A:
|
|
mov r1, r10
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803D254
|
|
ldr r0, =gProtectStructs
|
|
lsls r1, 4
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, 29
|
|
cmp r0, 0
|
|
bge _0803D22C
|
|
movs r2, 0xA5
|
|
b _0803D256
|
|
.pool
|
|
_0803D22C:
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
add r0, r10
|
|
adds r0, 0x80
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
movs r1, 0x58
|
|
mov r2, r10
|
|
muls r2, r1
|
|
adds r1, r2, 0
|
|
adds r0, r1
|
|
ldr r1, =gBattleMons
|
|
adds r1, 0xC
|
|
adds r0, r1
|
|
ldrh r2, [r0]
|
|
b _0803D256
|
|
.pool
|
|
_0803D254:
|
|
movs r2, 0
|
|
_0803D256:
|
|
ldr r4, =gBattleMoves
|
|
lsls r0, r3, 1
|
|
adds r0, r3
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
movs r1, 0x7
|
|
ldrsb r1, [r0, r1]
|
|
lsls r3, r2, 1
|
|
cmp r1, 0
|
|
bne _0803D27A
|
|
adds r0, r3, r2
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x7]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
cmp r0, 0
|
|
beq _0803D2B8
|
|
_0803D27A:
|
|
adds r0, r3, r2
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x7]
|
|
lsls r0, 24
|
|
asrs r0, 24
|
|
cmp r1, r0
|
|
bne _0803D2AE
|
|
cmp r8, r7
|
|
bne _0803D2A4
|
|
bl Random
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803D2A4
|
|
movs r3, 0x2
|
|
b _0803D2D4
|
|
.pool
|
|
_0803D2A4:
|
|
cmp r8, r7
|
|
bcs _0803D2D6
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x8]
|
|
b _0803D2D6
|
|
_0803D2AE:
|
|
cmp r1, r0
|
|
bge _0803D2D6
|
|
movs r1, 0x1
|
|
str r1, [sp, 0x8]
|
|
b _0803D2D6
|
|
_0803D2B8:
|
|
cmp r8, r7
|
|
bne _0803D2CE
|
|
bl Random
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803D2CE
|
|
movs r2, 0x2
|
|
str r2, [sp, 0x8]
|
|
b _0803D2D6
|
|
_0803D2CE:
|
|
cmp r8, r7
|
|
bcs _0803D2D6
|
|
movs r3, 0x1
|
|
_0803D2D4:
|
|
str r3, [sp, 0x8]
|
|
_0803D2D6:
|
|
ldr r0, [sp, 0x8]
|
|
add sp, 0xC
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end b_first_side
|
|
|
|
thumb_func_start sub_803D2E8
|
|
sub_803D2E8: @ 803D2E8
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
movs r3, 0
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803D354
|
|
ldr r0, =gActiveBank
|
|
strb r3, [r0]
|
|
ldr r4, =gNoOfAllBanks
|
|
mov r8, r0
|
|
ldrb r0, [r4]
|
|
cmp r3, r0
|
|
bcc _0803D310
|
|
b _0803D54A
|
|
_0803D310:
|
|
ldr r7, =gUnknown_0202407A
|
|
ldr r6, =gUnknown_0202421C
|
|
mov r2, r8
|
|
ldr r5, =gTurnOrder
|
|
_0803D318:
|
|
adds r1, r3, r7
|
|
ldrb r0, [r2]
|
|
adds r0, r6
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r1, r3, r5
|
|
ldrb r0, [r2]
|
|
strb r0, [r1]
|
|
adds r3, 0x1
|
|
ldrb r0, [r2]
|
|
adds r0, 0x1
|
|
strb r0, [r2]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r4]
|
|
cmp r0, r1
|
|
bcc _0803D318
|
|
b _0803D54A
|
|
.pool
|
|
_0803D354:
|
|
movs r2, 0x2
|
|
ands r1, r2
|
|
cmp r1, 0
|
|
beq _0803D3A4
|
|
ldr r0, =gActiveBank
|
|
strb r3, [r0]
|
|
ldr r1, =gNoOfAllBanks
|
|
mov r8, r0
|
|
adds r2, r1, 0
|
|
ldrb r2, [r2]
|
|
cmp r3, r2
|
|
bcs _0803D3C0
|
|
ldr r0, =gUnknown_0202421C
|
|
ldrb r1, [r0]
|
|
adds r4, r0, 0
|
|
cmp r1, 0x3
|
|
beq _0803D3BE
|
|
_0803D376:
|
|
mov r7, r8
|
|
ldrb r0, [r7]
|
|
adds r0, 0x1
|
|
strb r0, [r7]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gNoOfAllBanks
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcs _0803D3C0
|
|
ldrb r0, [r7]
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x3
|
|
bne _0803D376
|
|
b _0803D3BE
|
|
.pool
|
|
_0803D3A4:
|
|
ldr r1, =gUnknown_0202421C
|
|
ldrb r0, [r1]
|
|
ldr r4, =gActiveBank
|
|
mov r8, r4
|
|
cmp r0, 0x3
|
|
bne _0803D3B4
|
|
strb r3, [r4]
|
|
movs r3, 0x5
|
|
_0803D3B4:
|
|
ldrb r0, [r1, 0x2]
|
|
cmp r0, 0x3
|
|
bne _0803D3C0
|
|
mov r7, r8
|
|
strb r2, [r7]
|
|
_0803D3BE:
|
|
movs r3, 0x5
|
|
_0803D3C0:
|
|
cmp r3, 0x5
|
|
bne _0803D448
|
|
ldr r6, =gUnknown_0202407A
|
|
ldr r1, =gUnknown_0202421C
|
|
mov r2, r8
|
|
ldrb r0, [r2]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r6]
|
|
ldr r2, =gTurnOrder
|
|
mov r3, r8
|
|
ldrb r0, [r3]
|
|
strb r0, [r2]
|
|
movs r3, 0x1
|
|
movs r5, 0
|
|
adds r4, r1, 0
|
|
ldr r7, =gBattleMainFunc
|
|
mov r10, r7
|
|
ldr r0, =bc_80154A0
|
|
mov r12, r0
|
|
ldr r1, =gBattleStruct
|
|
mov r9, r1
|
|
ldr r7, =gNoOfAllBanks
|
|
ldrb r7, [r7]
|
|
cmp r5, r7
|
|
bge _0803D41A
|
|
adds r7, r6, 0
|
|
adds r6, r4, 0
|
|
adds r4, r2, 0
|
|
ldr r2, =gNoOfAllBanks
|
|
_0803D3FC:
|
|
mov r0, r8
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
beq _0803D412
|
|
adds r1, r3, r7
|
|
adds r0, r5, r6
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r0, r3, r4
|
|
strb r5, [r0]
|
|
adds r3, 0x1
|
|
_0803D412:
|
|
adds r5, 0x1
|
|
ldrb r1, [r2]
|
|
cmp r5, r1
|
|
blt _0803D3FC
|
|
_0803D41A:
|
|
mov r2, r12
|
|
mov r3, r10
|
|
str r2, [r3]
|
|
mov r4, r9
|
|
ldr r0, [r4]
|
|
b _0803D554
|
|
.pool
|
|
_0803D448:
|
|
movs r0, 0
|
|
mov r7, r8
|
|
strb r0, [r7]
|
|
ldr r1, =gNoOfAllBanks
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _0803D48E
|
|
ldr r6, =gUnknown_0202421C
|
|
mov r2, r8
|
|
ldr r5, =gUnknown_0202407A
|
|
ldr r4, =gTurnOrder
|
|
_0803D45E:
|
|
ldrb r0, [r2]
|
|
adds r0, r6
|
|
ldrb r1, [r0]
|
|
subs r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bhi _0803D47C
|
|
adds r0, r3, r5
|
|
strb r1, [r0]
|
|
adds r1, r3, r4
|
|
mov r7, r8
|
|
ldrb r0, [r7]
|
|
strb r0, [r1]
|
|
adds r3, 0x1
|
|
_0803D47C:
|
|
ldrb r0, [r2]
|
|
adds r0, 0x1
|
|
strb r0, [r2]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gNoOfAllBanks
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803D45E
|
|
_0803D48E:
|
|
movs r0, 0
|
|
mov r2, r8
|
|
strb r0, [r2]
|
|
ldr r4, =gNoOfAllBanks
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
beq _0803D4D2
|
|
ldr r6, =gUnknown_0202421C
|
|
ldr r5, =gUnknown_0202407A
|
|
ldr r4, =gTurnOrder
|
|
_0803D4A2:
|
|
ldrb r0, [r2]
|
|
adds r0, r6
|
|
ldrb r1, [r0]
|
|
subs r0, r1, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bls _0803D4C0
|
|
adds r0, r3, r5
|
|
strb r1, [r0]
|
|
adds r1, r3, r4
|
|
mov r7, r8
|
|
ldrb r0, [r7]
|
|
strb r0, [r1]
|
|
adds r3, 0x1
|
|
_0803D4C0:
|
|
ldrb r0, [r2]
|
|
adds r0, 0x1
|
|
strb r0, [r2]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gNoOfAllBanks
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803D4A2
|
|
_0803D4D2:
|
|
movs r5, 0
|
|
b _0803D540
|
|
.pool
|
|
_0803D4E8:
|
|
adds r4, r5, 0x1
|
|
adds r7, r4, 0
|
|
ldrb r1, [r1]
|
|
cmp r7, r1
|
|
bge _0803D53E
|
|
ldr r6, =gUnknown_0202407A
|
|
lsls r2, r5, 24
|
|
mov r8, r2
|
|
_0803D4F8:
|
|
ldr r0, =gTurnOrder
|
|
adds r1, r5, r0
|
|
ldrb r3, [r1]
|
|
adds r0, r4, r0
|
|
ldrb r1, [r0]
|
|
adds r0, r5, r6
|
|
ldrb r2, [r0]
|
|
cmp r2, 0x1
|
|
beq _0803D534
|
|
adds r0, r4, r6
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
beq _0803D534
|
|
cmp r2, 0x2
|
|
beq _0803D534
|
|
cmp r0, 0x2
|
|
beq _0803D534
|
|
adds r0, r3, 0
|
|
movs r2, 0
|
|
bl b_first_side
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803D534
|
|
lsls r1, r4, 24
|
|
lsrs r1, 24
|
|
mov r3, r8
|
|
lsrs r0, r3, 24
|
|
bl sub_803CEDC
|
|
_0803D534:
|
|
adds r4, 0x1
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _0803D4F8
|
|
_0803D53E:
|
|
adds r5, r7, 0
|
|
_0803D540:
|
|
ldr r1, =gNoOfAllBanks
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
cmp r5, r0
|
|
blt _0803D4E8
|
|
_0803D54A:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =bc_80154A0
|
|
str r0, [r1]
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
_0803D554:
|
|
adds r0, 0x48
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803D2E8
|
|
|
|
thumb_func_start sub_803D580
|
|
sub_803D580: @ 803D580
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
ldr r1, =gActiveBank
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r2, [r0]
|
|
adds r5, r1, 0
|
|
cmp r2, 0
|
|
beq _0803D678
|
|
ldr r7, =gProtectStructs
|
|
adds r6, r5, 0
|
|
ldr r0, =gBattleMons + 0x50
|
|
mov r12, r0
|
|
ldr r1, =gDisableStructs
|
|
mov r8, r1
|
|
mov r10, r8
|
|
_0803D5AE:
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
beq _0803D5EC
|
|
ldrb r1, [r6]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1]
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldrb r1, [r6]
|
|
lsls r1, 4
|
|
adds r1, r7
|
|
ldrb r2, [r1]
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
b _0803D648
|
|
.pool
|
|
_0803D5EC:
|
|
ldrb r0, [r6]
|
|
lsls r0, 4
|
|
adds r2, r0, r7
|
|
movs r1, 0
|
|
mov r4, r10
|
|
movs r3, 0
|
|
_0803D5F8:
|
|
adds r0, r2, r1
|
|
strb r3, [r0]
|
|
adds r1, 0x1
|
|
cmp r1, 0xF
|
|
bls _0803D5F8
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r1, r0, r4
|
|
ldrb r0, [r1, 0x16]
|
|
cmp r0, 0
|
|
beq _0803D616
|
|
subs r0, 0x1
|
|
strb r0, [r1, 0x16]
|
|
_0803D616:
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r1, r0, r4
|
|
ldrb r0, [r1, 0x19]
|
|
cmp r0, 0
|
|
beq _0803D648
|
|
subs r0, 0x1
|
|
strb r0, [r1, 0x19]
|
|
ldrb r2, [r5]
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldrb r0, [r0, 0x19]
|
|
cmp r0, 0
|
|
bne _0803D648
|
|
movs r0, 0x58
|
|
muls r2, r0
|
|
add r2, r12
|
|
ldr r0, [r2]
|
|
ldr r1, =0xffbfffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
_0803D648:
|
|
ldrb r2, [r5]
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
add r0, r8
|
|
ldrb r0, [r0, 0xA]
|
|
cmp r0, 0
|
|
bne _0803D666
|
|
movs r0, 0x58
|
|
muls r2, r0
|
|
add r2, r12
|
|
ldr r0, [r2]
|
|
ldr r1, =0xfeffffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
_0803D666:
|
|
ldrb r0, [r5]
|
|
adds r0, 0x1
|
|
strb r0, [r5]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gNoOfAllBanks
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803D5AE
|
|
_0803D678:
|
|
movs r0, 0
|
|
ldr r2, =gSideTimers
|
|
strb r0, [r2, 0x8]
|
|
strb r0, [r2, 0x14]
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803D580
|
|
|
|
thumb_func_start sub_803D6A0
|
|
sub_803D6A0: @ 803D6A0
|
|
push {r4-r6,lr}
|
|
ldr r2, =gActiveBank
|
|
movs r0, 0
|
|
strb r0, [r2]
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r1, [r0]
|
|
adds r6, r0, 0
|
|
cmp r1, 0
|
|
beq _0803D6DE
|
|
adds r3, r2, 0
|
|
movs r4, 0
|
|
ldr r5, =gSpecialStatuses
|
|
_0803D6B8:
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r2, r0, r5
|
|
movs r1, 0
|
|
_0803D6C4:
|
|
adds r0, r2, r1
|
|
strb r4, [r0]
|
|
adds r1, 0x1
|
|
cmp r1, 0x13
|
|
bls _0803D6C4
|
|
ldrb r0, [r3]
|
|
adds r0, 0x1
|
|
strb r0, [r3]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r6]
|
|
cmp r0, r1
|
|
bcc _0803D6B8
|
|
_0803D6DE:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803D6A0
|
|
|
|
thumb_func_start bc_80154A0
|
|
bc_80154A0: @ 803D6F0
|
|
push {r4-r7,lr}
|
|
ldr r0, =gHitMarker
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803D7AE
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r2]
|
|
adds r0, 0x48
|
|
ldr r1, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
mov r12, r2
|
|
adds r6, r1, 0
|
|
ldrb r1, [r6]
|
|
cmp r0, r1
|
|
bcs _0803D7AE
|
|
ldr r5, =gActiveBank
|
|
ldr r4, =gBankAttacker
|
|
movs r7, 0x84
|
|
lsls r7, 1
|
|
_0803D71C:
|
|
ldr r1, [r2]
|
|
adds r1, 0x48
|
|
ldrb r0, [r1]
|
|
strb r0, [r4]
|
|
strb r0, [r5]
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r1, =gChosenMovesByBanks
|
|
ldrb r3, [r5]
|
|
lsls r0, r3, 1
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
cmp r0, r7
|
|
bne _0803D7A0
|
|
ldr r1, =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r3
|
|
adds r1, 0x4C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803D7A0
|
|
ldr r2, =gDisableStructs
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0, 0x18]
|
|
lsls r0, 31
|
|
cmp r0, 0
|
|
bne _0803D7A0
|
|
ldr r0, =gProtectStructs
|
|
lsls r1, r3, 4
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, 29
|
|
cmp r0, 0
|
|
blt _0803D7A0
|
|
ldr r0, =gUnknown_082DB1FF
|
|
bl b_call_bc_move_exec
|
|
b _0803D7E8
|
|
.pool
|
|
_0803D7A0:
|
|
mov r2, r12
|
|
ldr r0, [r2]
|
|
adds r0, 0x48
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r6]
|
|
cmp r0, r1
|
|
bcc _0803D71C
|
|
_0803D7AE:
|
|
bl b_clear_atk_up_if_hit_flag_unless_enraged
|
|
ldr r1, =gUnknown_02024082
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r1, =gFightStateTracker
|
|
ldr r0, =gUnknown_0202407A
|
|
movs r3, 0
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r0, =gDynamicBasePower
|
|
movs r2, 0
|
|
strh r3, [r0]
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
strb r2, [r0, 0x13]
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =bc_bs_exec
|
|
str r0, [r1]
|
|
ldr r0, =gBattleCommunication
|
|
strb r2, [r0, 0x3]
|
|
strb r2, [r0, 0x4]
|
|
ldr r0, =gBattleScripting
|
|
strb r2, [r0, 0x16]
|
|
ldr r0, =gBattleResources
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, 0x8]
|
|
adds r0, 0x20
|
|
strb r2, [r0]
|
|
_0803D7E8:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bc_80154A0
|
|
|
|
thumb_func_start bc_bs_exec
|
|
bc_bs_exec: @ 803D818
|
|
push {r4-r6,lr}
|
|
ldr r6, =gBattleOutcome
|
|
ldrb r0, [r6]
|
|
ldr r2, =gFightStateTracker
|
|
cmp r0, 0
|
|
beq _0803D828
|
|
movs r0, 0xC
|
|
strb r0, [r2]
|
|
_0803D828:
|
|
ldr r5, =gBattleStruct
|
|
ldr r0, [r5]
|
|
adds r0, 0x4B
|
|
ldr r4, =gUnknown_02024082
|
|
ldrb r1, [r4]
|
|
strb r1, [r0]
|
|
ldr r1, =gUnknown_0831BC0C
|
|
ldrb r0, [r2]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r1, [r4]
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
bcc _0803D894
|
|
ldr r2, =gHitMarker
|
|
ldr r0, [r2]
|
|
ldr r1, =0xffefffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r3, =gBattleMainFunc
|
|
ldr r2, =gUnknown_0831BC44
|
|
ldrb r1, [r6]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
str r0, [r3]
|
|
b _0803D8AC
|
|
.pool
|
|
_0803D894:
|
|
ldr r0, [r5]
|
|
adds r0, 0x4B
|
|
ldrb r0, [r0]
|
|
cmp r0, r1
|
|
beq _0803D8AC
|
|
ldr r2, =gHitMarker
|
|
ldr r0, [r2]
|
|
ldr r1, =0xfffffdff
|
|
ands r0, r1
|
|
ldr r1, =0xfff7ffff
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
_0803D8AC:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bc_bs_exec
|
|
|
|
thumb_func_start sub_803D8C0
|
|
sub_803D8C0: @ 803D8C0
|
|
push {r4,lr}
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r2, [r1]
|
|
ldr r0, =0x02000002
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803D920
|
|
ldr r1, =gScriptResult
|
|
ldr r4, =gBattleOutcome
|
|
ldrb r0, [r4]
|
|
strh r0, [r1]
|
|
ldr r1, =gBattleTextBuff1
|
|
ldrb r0, [r4]
|
|
strb r0, [r1]
|
|
movs r0, 0
|
|
bl GetBankByPlayerAI
|
|
ldr r1, =gBankAttacker
|
|
strb r0, [r1]
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DAA35
|
|
str r0, [r1]
|
|
ldrb r1, [r4]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
strb r0, [r4]
|
|
b _0803DAA4
|
|
.pool
|
|
_0803D920:
|
|
movs r0, 0x8
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803D95C
|
|
ldr r0, =0x043f0900
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0803D95C
|
|
bl sub_805EA60
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DAA87
|
|
str r0, [r1]
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r1, [r0]
|
|
ldr r0, =0x000003fe
|
|
cmp r1, r0
|
|
bne _0803D946
|
|
b _0803DA8A
|
|
_0803D946:
|
|
b _0803DA94
|
|
.pool
|
|
_0803D95C:
|
|
ldr r0, [r1]
|
|
movs r1, 0xA
|
|
ands r0, r1
|
|
cmp r0, 0x8
|
|
beq _0803D968
|
|
b _0803DA9E
|
|
_0803D968:
|
|
bl sub_805EA60
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DA92D
|
|
str r0, [r1]
|
|
ldr r2, =gTrainers
|
|
ldr r0, =gTrainerBattleOpponent_A
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
adds r0, r2
|
|
ldrb r0, [r0, 0x1]
|
|
subs r0, 0x3
|
|
cmp r0, 0x32
|
|
bls _0803D98A
|
|
b _0803DA94
|
|
_0803D98A:
|
|
lsls r0, 2
|
|
ldr r1, =_0803D9A8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_0803D9A8:
|
|
.4byte _0803DA80
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA80
|
|
.4byte _0803DA94
|
|
.4byte _0803DA80
|
|
.4byte _0803DA94
|
|
.4byte _0803DA80
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA74
|
|
.4byte _0803DA8A
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA74
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA80
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA94
|
|
.4byte _0803DA80
|
|
_0803DA74:
|
|
ldr r0, =0x00000163
|
|
bl PlayBGM
|
|
b _0803DAA4
|
|
.pool
|
|
_0803DA80:
|
|
movs r0, 0xD4
|
|
lsls r0, 1
|
|
bl PlayBGM
|
|
b _0803DAA4
|
|
_0803DA8A:
|
|
movs r0, 0xB1
|
|
lsls r0, 1
|
|
bl PlayBGM
|
|
b _0803DAA4
|
|
_0803DA94:
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
bl PlayBGM
|
|
b _0803DAA4
|
|
_0803DA9E:
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DA96A
|
|
str r0, [r1]
|
|
_0803DAA4:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803DCD8
|
|
str r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803D8C0
|
|
|
|
thumb_func_start sub_803DAC0
|
|
sub_803DAC0: @ 803DAC0
|
|
push {r4,lr}
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
ldr r0, =0x02000002
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803DB7C
|
|
ldr r0, =0x003f0100
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803DB44
|
|
ldr r3, =gBattleOutcome
|
|
ldrb r2, [r3]
|
|
movs r0, 0x80
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803DB2C
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DB9C8
|
|
str r0, [r1]
|
|
movs r0, 0x7F
|
|
ands r0, r2
|
|
strb r0, [r3]
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r0, =0x00000ca9
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, 0x8
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
b _0803DB82
|
|
.pool
|
|
_0803DB2C:
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DAA0B
|
|
str r0, [r1]
|
|
movs r0, 0x7F
|
|
ands r0, r2
|
|
strb r0, [r3]
|
|
b _0803DB82
|
|
.pool
|
|
_0803DB44:
|
|
ldr r1, =gBattleTextBuff1
|
|
ldr r4, =gBattleOutcome
|
|
ldrb r0, [r4]
|
|
strb r0, [r1]
|
|
movs r0, 0
|
|
bl GetBankByPlayerAI
|
|
ldr r1, =gBankAttacker
|
|
strb r0, [r1]
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DAA35
|
|
str r0, [r1]
|
|
ldrb r1, [r4]
|
|
movs r0, 0x7F
|
|
ands r0, r1
|
|
strb r0, [r4]
|
|
b _0803DB82
|
|
.pool
|
|
_0803DB7C:
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DA96D
|
|
str r0, [r1]
|
|
_0803DB82:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803DCD8
|
|
str r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803DAC0
|
|
|
|
thumb_func_start sub_803DBA0
|
|
sub_803DBA0: @ 803DBA0
|
|
push {lr}
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r2, [r1]
|
|
ldr r0, =0x003f0100
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803DBFC
|
|
movs r0, 0x8
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0803DBFC
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DB9C1
|
|
str r0, [r1]
|
|
ldr r1, =gBattleOutcome
|
|
movs r0, 0x9
|
|
strb r0, [r1]
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r0, =0x00000ca9
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, 0x8
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
b _0803DC6A
|
|
.pool
|
|
_0803DBFC:
|
|
ldr r0, [r1]
|
|
movs r1, 0x80
|
|
lsls r1, 19
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803DC24
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DB9C1
|
|
str r0, [r1]
|
|
ldr r1, =gBattleOutcome
|
|
movs r0, 0x9
|
|
strb r0, [r1]
|
|
b _0803DC6A
|
|
.pool
|
|
_0803DC24:
|
|
ldr r1, =gProtectStructs
|
|
ldr r0, =gBankAttacker
|
|
ldrb r0, [r0]
|
|
lsls r0, 4
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0x1]
|
|
lsls r0, 27
|
|
lsrs r0, 30
|
|
cmp r0, 0x1
|
|
beq _0803DC54
|
|
cmp r0, 0x2
|
|
beq _0803DC64
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DAAF0
|
|
b _0803DC68
|
|
.pool
|
|
_0803DC54:
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DAADB
|
|
b _0803DC68
|
|
.pool
|
|
_0803DC64:
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DAAE9
|
|
_0803DC68:
|
|
str r0, [r1]
|
|
_0803DC6A:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803DCD8
|
|
str r0, [r1]
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803DBA0
|
|
|
|
thumb_func_start bc_80158BC
|
|
bc_80158BC: @ 803DC84
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r1, =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x7
|
|
strb r0, [r1, 0x1]
|
|
ldr r2, =gBankAttacker
|
|
ldrb r0, [r2]
|
|
strb r0, [r1, 0x2]
|
|
ldr r3, =gBattlePartyID
|
|
ldrb r0, [r2]
|
|
lsls r0, 1
|
|
adds r0, r3
|
|
ldrh r0, [r0]
|
|
strb r0, [r1, 0x3]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x4]
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DAAF7
|
|
str r0, [r1]
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803DCD8
|
|
str r0, [r1]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end bc_80158BC
|
|
|
|
thumb_func_start sub_803DCD8
|
|
sub_803DCD8: @ 803DCD8
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
ldr r0, =gFightStateTracker
|
|
ldrb r0, [r0]
|
|
subs r0, 0xB
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bls _0803DCEE
|
|
b _0803DE10
|
|
_0803DCEE:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
ldr r0, =0x023f0b92
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _0803DDB6
|
|
ldr r2, =gActiveBank
|
|
strb r1, [r2]
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
bcs _0803DDB2
|
|
adds r5, r2, 0
|
|
ldr r0, =gBattlePartyID
|
|
mov r8, r0
|
|
movs r7, 0x64
|
|
ldr r6, =gPlayerParty
|
|
_0803DD10:
|
|
ldrb r0, [r5]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803DDA0
|
|
ldr r4, =gBattleResults
|
|
ldrh r0, [r4, 0x6]
|
|
cmp r0, 0
|
|
bne _0803DD74
|
|
ldrb r0, [r5]
|
|
lsls r0, 1
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
muls r0, r7
|
|
adds r0, r6
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
strh r0, [r4, 0x6]
|
|
ldrb r0, [r5]
|
|
lsls r0, 1
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
muls r0, r7
|
|
adds r0, r6
|
|
movs r1, 0x2
|
|
adds r2, r4, 0
|
|
adds r2, 0x8
|
|
bl GetMonData
|
|
b _0803DDA0
|
|
.pool
|
|
_0803DD74:
|
|
ldrb r0, [r5]
|
|
lsls r0, 1
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
muls r0, r7
|
|
adds r0, r6
|
|
movs r1, 0xB
|
|
movs r2, 0
|
|
bl GetMonData
|
|
strh r0, [r4, 0x26]
|
|
ldrb r0, [r5]
|
|
lsls r0, 1
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
muls r0, r7
|
|
adds r0, r6
|
|
movs r1, 0x2
|
|
adds r2, r4, 0
|
|
adds r2, 0x14
|
|
bl GetMonData
|
|
_0803DDA0:
|
|
ldrb r0, [r5]
|
|
adds r0, 0x1
|
|
strb r0, [r5]
|
|
ldr r1, =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803DD10
|
|
_0803DDB2:
|
|
bl sub_80EC728
|
|
_0803DDB6:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, =0x023f0b9a
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803DDD2
|
|
ldr r0, =gBattleResults
|
|
ldrb r1, [r0, 0x5]
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803DDD2
|
|
bl sub_80EE184
|
|
_0803DDD2:
|
|
bl sub_8186444
|
|
movs r0, 0x3
|
|
bl BeginFastPaletteFade
|
|
movs r0, 0x5
|
|
bl FadeOutMapMusic
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =sub_803DE40
|
|
str r0, [r1]
|
|
ldr r1, =gUnknown_030061E8
|
|
ldr r0, =sub_8038420
|
|
str r0, [r1]
|
|
b _0803DE2A
|
|
.pool
|
|
_0803DE10:
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803DE2A
|
|
ldr r1, =gBattleScriptingCommandsTable
|
|
ldr r0, =gBattlescriptCurrInstr
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
_0803DE2A:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803DCD8
|
|
|
|
thumb_func_start sub_803DE40
|
|
sub_803DE40: @ 803DE40
|
|
push {lr}
|
|
ldr r0, =gPaletteFade
|
|
ldrb r1, [r0, 0x7]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803DE86
|
|
bl ResetSpriteData
|
|
ldr r0, =gUnknown_03005D54
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803DE62
|
|
ldr r0, =gBattleOutcome
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
beq _0803DE80
|
|
_0803DE62:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =c4_overworld
|
|
str r0, [r1]
|
|
b _0803DEA2
|
|
.pool
|
|
_0803DE80:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =bc_evolution_cutscene
|
|
str r0, [r1]
|
|
_0803DE86:
|
|
bl FreeAllWindowBuffers
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803DEA2
|
|
bl sub_805F094
|
|
bl sub_8057028
|
|
bl dp11_free
|
|
_0803DEA2:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803DE40
|
|
|
|
thumb_func_start bc_evolution_cutscene
|
|
bc_evolution_cutscene: @ 803DEB4
|
|
push {r4-r6,lr}
|
|
ldr r0, =gUnknown_03005D54
|
|
ldrb r1, [r0]
|
|
adds r3, r0, 0
|
|
cmp r1, 0
|
|
beq _0803DF2E
|
|
_0803DEC0:
|
|
movs r6, 0
|
|
_0803DEC2:
|
|
ldrb r2, [r3]
|
|
ldr r0, =gBitTable
|
|
lsls r1, r6, 2
|
|
adds r1, r0
|
|
ldr r1, [r1]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803DF20
|
|
bics r2, r1
|
|
strb r2, [r3]
|
|
movs r0, 0x64
|
|
adds r1, r6, 0
|
|
muls r1, r0
|
|
ldr r0, =gPlayerParty
|
|
adds r5, r1, r0
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl GetEvolutionTargetSpecies
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
cmp r4, 0
|
|
beq _0803DF20
|
|
bl FreeAllWindowBuffers
|
|
ldr r0, =gBattleMainFunc
|
|
ldr r1, =sub_803DF48
|
|
str r1, [r0]
|
|
lsls r3, r6, 24
|
|
lsrs r3, 24
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
movs r2, 0x1
|
|
bl evolution_cutscene
|
|
b _0803DF34
|
|
.pool
|
|
_0803DF20:
|
|
adds r6, 0x1
|
|
ldr r3, =gUnknown_03005D54
|
|
cmp r6, 0x5
|
|
ble _0803DEC2
|
|
ldrb r0, [r3]
|
|
cmp r0, 0
|
|
bne _0803DEC0
|
|
_0803DF2E:
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =c4_overworld
|
|
str r0, [r1]
|
|
_0803DF34:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bc_evolution_cutscene
|
|
|
|
thumb_func_start sub_803DF48
|
|
sub_803DF48: @ 803DF48
|
|
push {lr}
|
|
ldr r0, =gMain
|
|
ldr r1, [r0, 0x4]
|
|
ldr r0, =sub_8038420
|
|
cmp r1, r0
|
|
bne _0803DF5A
|
|
ldr r1, =gBattleMainFunc
|
|
ldr r0, =bc_evolution_cutscene
|
|
str r0, [r1]
|
|
_0803DF5A:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803DF48
|
|
|
|
thumb_func_start c4_overworld
|
|
c4_overworld: @ 803DF70
|
|
push {r4-r6,lr}
|
|
ldr r6, =gBattleTypeFlags
|
|
ldr r0, [r6]
|
|
movs r5, 0x2
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
bne _0803DF8C
|
|
ldr r4, =gPlayerParty
|
|
adds r0, r4, 0
|
|
bl RandomlyGivePartyPokerus
|
|
adds r0, r4, 0
|
|
bl PartySpreadPokerus
|
|
_0803DF8C:
|
|
ldr r4, [r6]
|
|
adds r0, r4, 0
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
beq _0803DF9E
|
|
ldr r0, =gUnknown_03003124
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803DFEC
|
|
_0803DF9E:
|
|
ldr r1, =gScriptResult
|
|
ldr r5, =gBattleOutcome
|
|
ldrb r0, [r5]
|
|
strh r0, [r1]
|
|
ldr r3, =gMain
|
|
ldr r0, =0x00000439
|
|
adds r2, r3, r0
|
|
ldrb r1, [r2]
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, =gUnknown_03005D00
|
|
ldr r0, [r0]
|
|
str r0, [r3]
|
|
movs r0, 0x80
|
|
lsls r0, 3
|
|
ands r4, r0
|
|
cmp r4, 0
|
|
beq _0803DFDE
|
|
ldr r0, =gEnemyParty
|
|
bl UpdateRoamerHPStatus
|
|
ldrb r1, [r5]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803DFDA
|
|
cmp r1, 0x7
|
|
bne _0803DFDE
|
|
_0803DFDA:
|
|
bl SetRoamerInactive
|
|
_0803DFDE:
|
|
movs r0, 0x5A
|
|
bl m4aSongNumStop
|
|
ldr r0, =gMain
|
|
ldr r0, [r0, 0x8]
|
|
bl SetMainCallback2
|
|
_0803DFEC:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end c4_overworld
|
|
|
|
thumb_func_start bc_move_exec_returning
|
|
bc_move_exec_returning: @ 803E018
|
|
push {lr}
|
|
ldr r0, =gFightStateTracker
|
|
ldrb r0, [r0]
|
|
subs r0, 0xB
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bhi _0803E060
|
|
ldr r3, =gBattleResources
|
|
ldr r0, [r3]
|
|
ldr r0, [r0, 0xC]
|
|
adds r1, r0, 0
|
|
adds r1, 0x20
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _0803E03C
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
_0803E03C:
|
|
ldr r2, =gBattleMainFunc
|
|
ldr r0, [r3]
|
|
ldr r1, [r0, 0xC]
|
|
adds r0, r1, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
ldr r0, [r1]
|
|
str r0, [r2]
|
|
b _0803E07A
|
|
.pool
|
|
_0803E060:
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803E07A
|
|
ldr r1, =gBattleScriptingCommandsTable
|
|
ldr r0, =gBattlescriptCurrInstr
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
_0803E07A:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bc_move_exec_returning
|
|
|
|
thumb_func_start sub_803E08C
|
|
sub_803E08C: @ 803E08C
|
|
push {lr}
|
|
ldr r0, =gBattleExecBuffer
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803E0A8
|
|
ldr r1, =gBattleScriptingCommandsTable
|
|
ldr r0, =gBattlescriptCurrInstr
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
_0803E0A8:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803E08C
|
|
|
|
thumb_func_start sub_803E0B8
|
|
sub_803E0B8: @ 803E0B8
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
movs r0, 0x4
|
|
str r0, [sp]
|
|
ldr r6, =gBankAttacker
|
|
ldr r1, =gTurnOrder
|
|
ldr r0, =gUnknown_02024082
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r6]
|
|
ldr r1, =gBattleStruct
|
|
ldr r3, [r1]
|
|
adds r0, r3, 0
|
|
adds r0, 0x91
|
|
ldrb r2, [r0]
|
|
ldr r1, =gBitTable
|
|
ldrb r0, [r6]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0803E110
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0xC
|
|
b _0803E83C
|
|
.pool
|
|
_0803E110:
|
|
ldr r1, =gCritMultiplier
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r1, =gBattleScripting
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0xE]
|
|
ldr r5, =0x000001a3
|
|
adds r0, r3, r5
|
|
strb r2, [r0]
|
|
ldr r0, =gBattleMoveFlags
|
|
strb r2, [r0]
|
|
ldr r0, =gUnknown_02024212
|
|
strb r2, [r0]
|
|
ldr r0, =gBattleCommunication
|
|
strb r2, [r0, 0x6]
|
|
ldr r2, =gCurrMovePos
|
|
ldr r0, =gUnknown_020241E9
|
|
mov r9, r0
|
|
ldrb r0, [r6]
|
|
ldr r3, =gBattleStruct
|
|
ldr r1, [r3]
|
|
adds r0, r1
|
|
adds r0, 0x80
|
|
ldrb r0, [r0]
|
|
mov r5, r9
|
|
strb r0, [r5]
|
|
strb r0, [r2]
|
|
ldr r1, =gProtectStructs
|
|
ldrb r4, [r6]
|
|
lsls r0, r4, 4
|
|
adds r3, r0, r1
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, 29
|
|
mov r8, r2
|
|
cmp r0, 0
|
|
bge _0803E1BC
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r0, r1
|
|
strb r0, [r3]
|
|
ldr r2, =gCurrentMove
|
|
ldr r1, =gUnknown_020241EC
|
|
movs r0, 0xA5
|
|
strh r0, [r1]
|
|
strh r0, [r2]
|
|
ldr r2, =gHitMarker
|
|
ldr r0, [r2]
|
|
movs r1, 0x80
|
|
lsls r1, 4
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
movs r0, 0xA5
|
|
movs r1, 0
|
|
bl GetMoveTarget
|
|
ldrb r1, [r6]
|
|
ldr r3, =gBattleStruct
|
|
ldr r2, [r3]
|
|
b _0803E316
|
|
.pool
|
|
_0803E1BC:
|
|
ldr r5, =gBattleMons
|
|
mov r10, r5
|
|
movs r0, 0x58
|
|
adds r5, r4, 0
|
|
muls r5, r0
|
|
mov r0, r10
|
|
adds r0, 0x50
|
|
adds r0, r5, r0
|
|
ldr r1, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803E1E2
|
|
movs r7, 0x80
|
|
lsls r7, 15
|
|
ands r7, r1
|
|
cmp r7, 0
|
|
beq _0803E204
|
|
_0803E1E2:
|
|
ldr r3, =gCurrentMove
|
|
ldr r2, =gUnknown_020241EC
|
|
ldr r1, =gUnknown_02024268
|
|
lsls r0, r4, 1
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
strh r0, [r2]
|
|
strh r0, [r3]
|
|
b _0803E33C
|
|
.pool
|
|
_0803E204:
|
|
ldr r1, =gDisableStructs
|
|
mov r12, r1
|
|
lsls r0, r4, 3
|
|
subs r0, r4
|
|
lsls r0, 2
|
|
add r0, r12
|
|
ldrh r3, [r0, 0x6]
|
|
adds r1, r3, 0
|
|
cmp r1, 0
|
|
beq _0803E2DC
|
|
ldrb r2, [r0, 0xC]
|
|
lsls r0, r2, 1
|
|
adds r0, r5
|
|
mov r4, r10
|
|
adds r4, 0xC
|
|
adds r0, r4
|
|
ldrh r0, [r0]
|
|
cmp r1, r0
|
|
bne _0803E268
|
|
ldr r2, =gCurrentMove
|
|
ldr r0, =gUnknown_020241EC
|
|
strh r3, [r0]
|
|
strh r3, [r2]
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
add r0, r12
|
|
ldrb r0, [r0, 0xC]
|
|
mov r3, r9
|
|
strb r0, [r3]
|
|
mov r5, r8
|
|
strb r0, [r5]
|
|
ldrh r0, [r2]
|
|
movs r1, 0
|
|
bl GetMoveTarget
|
|
ldrb r1, [r6]
|
|
ldr r3, =gBattleStruct
|
|
ldr r2, [r3]
|
|
b _0803E316
|
|
.pool
|
|
_0803E268:
|
|
cmp r1, 0
|
|
beq _0803E2DC
|
|
cmp r1, r0
|
|
beq _0803E2DC
|
|
mov r5, r9
|
|
strb r2, [r5]
|
|
mov r0, r8
|
|
strb r2, [r0]
|
|
ldr r3, =gCurrentMove
|
|
ldr r2, =gUnknown_020241EC
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
ldrb r1, [r6]
|
|
movs r5, 0x58
|
|
muls r1, r5
|
|
adds r0, r1
|
|
adds r0, r4
|
|
ldrh r0, [r0]
|
|
strh r0, [r2]
|
|
strh r0, [r3]
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
add r0, r12
|
|
movs r2, 0
|
|
strh r7, [r0, 0x6]
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
add r0, r12
|
|
strb r2, [r0, 0xC]
|
|
ldrb r0, [r6]
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
add r1, r12
|
|
ldrb r2, [r1, 0xE]
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1, 0xE]
|
|
ldrh r0, [r3]
|
|
movs r1, 0
|
|
bl GetMoveTarget
|
|
ldrb r1, [r6]
|
|
ldr r3, =gBattleStruct
|
|
ldr r2, [r3]
|
|
b _0803E316
|
|
.pool
|
|
_0803E2DC:
|
|
ldr r3, =gBattleMons
|
|
mov r5, r8
|
|
ldrb r0, [r5]
|
|
lsls r0, 1
|
|
ldr r4, =gBankAttacker
|
|
ldrb r2, [r4]
|
|
movs r1, 0x58
|
|
muls r1, r2
|
|
adds r0, r1
|
|
adds r3, 0xC
|
|
adds r0, r3
|
|
ldr r1, =gChosenMovesByBanks
|
|
lsls r2, 1
|
|
adds r2, r1
|
|
ldrh r3, [r0]
|
|
ldrh r2, [r2]
|
|
cmp r3, r2
|
|
beq _0803E334
|
|
ldr r1, =gCurrentMove
|
|
ldr r0, =gUnknown_020241EC
|
|
strh r3, [r0]
|
|
strh r3, [r1]
|
|
ldrh r0, [r1]
|
|
movs r1, 0
|
|
bl GetMoveTarget
|
|
ldrb r1, [r4]
|
|
ldr r2, =gBattleStruct
|
|
ldr r2, [r2]
|
|
_0803E316:
|
|
adds r1, r2
|
|
strb r0, [r1, 0xC]
|
|
b _0803E33C
|
|
.pool
|
|
_0803E334:
|
|
ldr r1, =gCurrentMove
|
|
ldr r0, =gUnknown_020241EC
|
|
strh r3, [r0]
|
|
strh r3, [r1]
|
|
_0803E33C:
|
|
ldr r2, =gBattleMons
|
|
ldr r1, =gBankAttacker
|
|
ldrb r3, [r1]
|
|
movs r0, 0x58
|
|
muls r0, r3
|
|
adds r0, r2
|
|
ldrh r0, [r0, 0x28]
|
|
mov r8, r1
|
|
cmp r0, 0
|
|
beq _0803E384
|
|
adds r0, r3, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803E37C
|
|
ldr r0, =gBattleResults
|
|
ldr r1, =gCurrentMove
|
|
ldrh r1, [r1]
|
|
strh r1, [r0, 0x22]
|
|
b _0803E384
|
|
.pool
|
|
_0803E37C:
|
|
ldr r0, =gBattleResults
|
|
ldr r1, =gCurrentMove
|
|
ldrh r1, [r1]
|
|
strh r1, [r0, 0x24]
|
|
_0803E384:
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
bl GetBankSide
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r1, =gSideTimers
|
|
lsls r0, r6, 1
|
|
adds r0, r6
|
|
lsls r0, 2
|
|
adds r5, r0, r1
|
|
ldrb r0, [r5, 0x8]
|
|
cmp r0, 0
|
|
beq _0803E400
|
|
ldr r2, =gBattleMoves
|
|
ldr r0, =gCurrentMove
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0, 0x6]
|
|
cmp r0, 0
|
|
bne _0803E400
|
|
mov r3, r8
|
|
ldrb r0, [r3]
|
|
bl GetBankSide
|
|
adds r4, r0, 0
|
|
ldrb r0, [r5, 0x9]
|
|
bl GetBankSide
|
|
lsls r4, 24
|
|
lsls r0, 24
|
|
cmp r4, r0
|
|
beq _0803E400
|
|
ldr r1, =gBattleMons
|
|
ldrb r2, [r5, 0x9]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
beq _0803E400
|
|
ldr r0, =gBankTarget
|
|
strb r2, [r0]
|
|
b _0803E76A
|
|
.pool
|
|
_0803E400:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
ldr r5, =gBankAttacker
|
|
mov r8, r5
|
|
cmp r0, 0
|
|
bne _0803E412
|
|
b _0803E6E0
|
|
_0803E412:
|
|
ldr r1, =gSideTimers
|
|
lsls r0, r6, 1
|
|
adds r0, r6
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r5, [r0, 0x8]
|
|
cmp r5, 0
|
|
beq _0803E424
|
|
b _0803E630
|
|
_0803E424:
|
|
ldr r2, =gBattleMoves
|
|
ldr r0, =gCurrentMove
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r4, r0, r2
|
|
ldrb r0, [r4, 0x1]
|
|
cmp r0, 0
|
|
bne _0803E440
|
|
ldrb r0, [r4, 0x6]
|
|
cmp r0, 0x10
|
|
bne _0803E440
|
|
b _0803E630
|
|
_0803E440:
|
|
ldr r3, =gBattleMons
|
|
ldr r2, =gBankAttacker
|
|
ldrb r6, [r2]
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
adds r0, r6, r0
|
|
ldrb r1, [r0, 0xC]
|
|
movs r0, 0x58
|
|
muls r0, r1
|
|
adds r0, r3
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
mov r8, r2
|
|
cmp r0, 0x1F
|
|
bne _0803E460
|
|
b _0803E630
|
|
_0803E460:
|
|
ldrb r0, [r4, 0x2]
|
|
cmp r0, 0xD
|
|
beq _0803E468
|
|
b _0803E630
|
|
_0803E468:
|
|
adds r0, r6, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
ldr r1, =gActiveBank
|
|
strb r5, [r1]
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
bcs _0803E4E0
|
|
adds r4, r1, 0
|
|
_0803E480:
|
|
ldrb r0, [r4]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r6, r0
|
|
beq _0803E4CE
|
|
ldr r0, =gBankAttacker
|
|
ldrb r1, [r0]
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0xC]
|
|
ldrb r1, [r4]
|
|
cmp r0, r1
|
|
beq _0803E4CE
|
|
ldr r1, =gBattleMons
|
|
ldrb r2, [r4]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r1
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1F
|
|
bne _0803E4CE
|
|
adds r0, r2, 0
|
|
bl sub_8048728
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r3, [sp]
|
|
cmp r0, r3
|
|
bcs _0803E4CE
|
|
ldrb r0, [r4]
|
|
bl sub_8048728
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp]
|
|
_0803E4CE:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
ldr r1, =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803E480
|
|
_0803E4E0:
|
|
ldr r5, [sp]
|
|
cmp r5, 0x4
|
|
beq _0803E4E8
|
|
b _0803E5E2
|
|
_0803E4E8:
|
|
ldr r2, =gBattleMoves
|
|
ldr r0, =gUnknown_020241EC
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r0, [r0, 0x6]
|
|
ands r5, r0
|
|
cmp r5, 0
|
|
beq _0803E568
|
|
ldr r0, =gBankAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803E548
|
|
bl Random
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803E544
|
|
movs r0, 0x1
|
|
b _0803E55A
|
|
.pool
|
|
_0803E544:
|
|
movs r0, 0x3
|
|
b _0803E55A
|
|
_0803E548:
|
|
bl Random
|
|
movs r1, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803E558
|
|
movs r0, 0
|
|
b _0803E55A
|
|
_0803E558:
|
|
movs r0, 0x2
|
|
_0803E55A:
|
|
bl GetBankByPlayerAI
|
|
ldr r1, =gBankTarget
|
|
strb r0, [r1]
|
|
b _0803E578
|
|
.pool
|
|
_0803E568:
|
|
ldr r2, =gBankTarget
|
|
ldr r0, =gBankAttacker
|
|
ldrb r0, [r0]
|
|
ldr r1, =gBattleStruct
|
|
ldr r1, [r1]
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0xC]
|
|
strb r0, [r2]
|
|
_0803E578:
|
|
ldr r7, =gAbsentBankFlags
|
|
ldrb r0, [r7]
|
|
ldr r1, =gBitTable
|
|
mov r8, r1
|
|
ldr r5, =gBankTarget
|
|
ldrb r1, [r5]
|
|
lsls r1, 2
|
|
add r1, r8
|
|
ldr r1, [r1]
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803E592
|
|
b _0803E76A
|
|
_0803E592:
|
|
ldr r6, =gBankAttacker
|
|
ldrb r0, [r6]
|
|
bl GetBankSide
|
|
adds r4, r0, 0
|
|
ldrb r0, [r5]
|
|
bl GetBankSide
|
|
lsls r4, 24
|
|
lsls r0, 24
|
|
cmp r4, r0
|
|
beq _0803E5C4
|
|
ldrb r0, [r5]
|
|
b _0803E758
|
|
.pool
|
|
_0803E5C4:
|
|
ldrb r0, [r6]
|
|
bl GetBankIdentity
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
strb r0, [r5]
|
|
ldrb r1, [r7]
|
|
ldrb r2, [r5]
|
|
lsls r0, r2, 2
|
|
add r0, r8
|
|
b _0803E74E
|
|
_0803E5E2:
|
|
ldr r4, =gActiveBank
|
|
ldr r0, =gTurnOrder
|
|
ldr r3, [sp]
|
|
adds r0, r3, r0
|
|
ldrb r0, [r0]
|
|
strb r0, [r4]
|
|
ldrb r0, [r4]
|
|
ldr r2, =gBattleMons
|
|
movs r1, 0x58
|
|
muls r1, r0
|
|
adds r1, r2
|
|
adds r1, 0x20
|
|
ldrb r1, [r1]
|
|
bl RecordAbilityBattle
|
|
ldr r2, =gSpecialStatuses
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
movs r2, 0x2
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
ldr r1, =gBankTarget
|
|
ldrb r0, [r4]
|
|
strb r0, [r1]
|
|
b _0803E76A
|
|
.pool
|
|
_0803E630:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r4, 0x1
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0803E6E0
|
|
ldr r2, =gBattleMoves
|
|
ldr r0, =gUnknown_020241EC
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldrb r1, [r0, 0x6]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803E6E0
|
|
mov r5, r8
|
|
ldrb r0, [r5]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803E684
|
|
bl Random
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803E680
|
|
movs r0, 0x1
|
|
b _0803E696
|
|
.pool
|
|
_0803E680:
|
|
movs r0, 0x3
|
|
b _0803E696
|
|
_0803E684:
|
|
bl Random
|
|
adds r1, r4, 0
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803E694
|
|
movs r0, 0
|
|
b _0803E696
|
|
_0803E694:
|
|
movs r0, 0x2
|
|
_0803E696:
|
|
bl GetBankByPlayerAI
|
|
ldr r1, =gBankTarget
|
|
strb r0, [r1]
|
|
ldr r0, =gAbsentBankFlags
|
|
ldrb r1, [r0]
|
|
ldr r2, =gBitTable
|
|
ldr r5, =gBankTarget
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803E76A
|
|
ldr r0, =gBankAttacker
|
|
ldrb r0, [r0]
|
|
bl GetBankSide
|
|
adds r4, r0, 0
|
|
ldrb r0, [r5]
|
|
bl GetBankSide
|
|
lsls r4, 24
|
|
lsls r0, 24
|
|
cmp r4, r0
|
|
beq _0803E76A
|
|
ldrb r0, [r5]
|
|
b _0803E758
|
|
.pool
|
|
_0803E6E0:
|
|
ldr r5, =gBankTarget
|
|
mov r2, r8
|
|
ldrb r0, [r2]
|
|
ldr r1, =gBattleStruct
|
|
ldr r1, [r1]
|
|
adds r0, r1
|
|
ldrb r0, [r0, 0xC]
|
|
strb r0, [r5]
|
|
ldr r6, =gAbsentBankFlags
|
|
ldrb r1, [r6]
|
|
ldr r7, =gBitTable
|
|
ldrb r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803E76A
|
|
ldrb r0, [r2]
|
|
bl GetBankSide
|
|
adds r4, r0, 0
|
|
ldrb r0, [r5]
|
|
bl GetBankSide
|
|
lsls r4, 24
|
|
lsls r0, 24
|
|
cmp r4, r0
|
|
beq _0803E730
|
|
ldrb r0, [r5]
|
|
b _0803E758
|
|
.pool
|
|
_0803E730:
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
bl GetBankIdentity
|
|
movs r1, 0x1
|
|
eors r0, r1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
strb r0, [r5]
|
|
ldrb r1, [r6]
|
|
ldrb r2, [r5]
|
|
lsls r0, r2, 2
|
|
adds r0, r7
|
|
_0803E74E:
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803E76A
|
|
adds r0, r2, 0
|
|
_0803E758:
|
|
bl GetBankIdentity
|
|
movs r1, 0x2
|
|
eors r0, r1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
bl GetBankByPlayerAI
|
|
strb r0, [r5]
|
|
_0803E76A:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r2, 0x80
|
|
lsls r2, 10
|
|
ands r1, r2
|
|
adds r5, r0, 0
|
|
cmp r1, 0
|
|
beq _0803E808
|
|
ldr r0, =gProtectStructs
|
|
ldr r4, =gBankAttacker
|
|
ldrb r2, [r4]
|
|
lsls r1, r2, 4
|
|
adds r1, r0
|
|
ldrb r0, [r1, 0x2]
|
|
lsls r0, 27
|
|
cmp r0, 0
|
|
bge _0803E808
|
|
ldr r1, =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x28]
|
|
cmp r0, 0
|
|
bne _0803E7B4
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0xC
|
|
b _0803E83C
|
|
.pool
|
|
_0803E7B4:
|
|
ldr r3, =gUnknown_02024230
|
|
lsls r0, r2, 2
|
|
adds r0, r3
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803E7EC
|
|
ldr r1, =gBattleCommunication
|
|
movs r2, 0
|
|
movs r0, 0x4
|
|
strb r0, [r1, 0x5]
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldrb r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r3
|
|
str r2, [r0]
|
|
b _0803E824
|
|
.pool
|
|
_0803E7EC:
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x4
|
|
strb r0, [r1, 0x5]
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =BattleScript_MoveUsedLoafingAround
|
|
str r0, [r1]
|
|
b _0803E824
|
|
.pool
|
|
_0803E808:
|
|
ldr r4, =gBattlescriptCurrInstr
|
|
ldr r3, =gUnknown_082D86A8
|
|
ldr r2, =gBattleMoves
|
|
ldr r0, =gCurrentMove
|
|
ldrh r1, [r0]
|
|
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]
|
|
str r0, [r4]
|
|
_0803E824:
|
|
ldr r0, [r5]
|
|
movs r1, 0x80
|
|
lsls r1, 11
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803E838
|
|
ldr r0, =gBankAttacker
|
|
ldrb r0, [r0]
|
|
bl sub_81A56E8
|
|
_0803E838:
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0xA
|
|
_0803E83C:
|
|
strb r0, [r1]
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803E0B8
|
|
|
|
thumb_func_start bs2_8016374
|
|
bs2_8016374: @ 803E868
|
|
push {r4,lr}
|
|
ldr r3, =gBankAttacker
|
|
ldr r1, =gTurnOrder
|
|
ldr r0, =gUnknown_02024082
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r3]
|
|
ldr r0, =gUnknown_02022E14
|
|
movs r2, 0
|
|
strh r2, [r0]
|
|
ldr r0, =gUnknown_02022E16
|
|
strh r2, [r0]
|
|
ldr r1, =gUnknown_020244AC
|
|
ldrb r0, [r3]
|
|
adds r0, r1
|
|
strb r2, [r0]
|
|
ldr r1, =gUnknown_020244B0
|
|
ldrb r0, [r3]
|
|
adds r0, r1
|
|
strb r2, [r0]
|
|
ldr r2, =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r2]
|
|
movs r0, 0x7
|
|
strb r0, [r2, 0x1]
|
|
ldrb r4, [r3]
|
|
strb r4, [r2, 0x2]
|
|
ldrb r0, [r3]
|
|
ldr r1, =gBattleStruct
|
|
ldr r1, [r1]
|
|
adds r0, r1
|
|
adds r0, 0x58
|
|
ldrb r0, [r0]
|
|
strb r0, [r2, 0x3]
|
|
movs r0, 0xFF
|
|
strb r0, [r2, 0x4]
|
|
ldr r0, =gBattleScripting
|
|
strb r4, [r0, 0x17]
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DAB15
|
|
str r0, [r1]
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0xA
|
|
strb r0, [r1]
|
|
ldr r1, =gBattleResults
|
|
ldrb r0, [r1, 0x2]
|
|
cmp r0, 0xFE
|
|
bhi _0803E8CE
|
|
adds r0, 0x1
|
|
strb r0, [r1, 0x2]
|
|
_0803E8CE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bs2_8016374
|
|
|
|
thumb_func_start sub_803E90C
|
|
sub_803E90C: @ 803E90C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r4, =gBankAttacker
|
|
ldr r2, =gBankTarget
|
|
ldr r1, =gTurnOrder
|
|
ldr r0, =gUnknown_02024082
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
strb r0, [r4]
|
|
ldr r0, =gUnknown_02022E14
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, =gUnknown_02022E16
|
|
strh r1, [r0]
|
|
ldrb r0, [r4]
|
|
bl sub_8045868
|
|
ldr r5, =gLastUsedItem
|
|
ldr r2, =gBattleBufferB
|
|
ldrb r1, [r4]
|
|
lsls r1, 9
|
|
adds r0, r2, 0x1
|
|
adds r0, r1, r0
|
|
ldrb r3, [r0]
|
|
adds r2, 0x2
|
|
adds r1, r2
|
|
ldrb r0, [r1]
|
|
lsls r0, 8
|
|
orrs r3, r0
|
|
strh r3, [r5]
|
|
cmp r3, 0xC
|
|
bhi _0803E998
|
|
ldr r2, =gBattlescriptCurrInstr
|
|
ldr r1, =gUnknown_082DBD08
|
|
ldrh r0, [r5]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
str r0, [r2]
|
|
ldr r0, =gFightStateTracker
|
|
mov r10, r0
|
|
b _0803EBF6
|
|
.pool
|
|
_0803E998:
|
|
adds r0, r3, 0
|
|
subs r0, 0x50
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
bhi _0803E9C0
|
|
ldr r0, =gBattlescriptCurrInstr
|
|
ldr r1, =gUnknown_082DBD54
|
|
ldr r1, [r1]
|
|
str r1, [r0]
|
|
ldr r1, =gFightStateTracker
|
|
mov r10, r1
|
|
b _0803EBF6
|
|
.pool
|
|
_0803E9C0:
|
|
ldrb r0, [r4]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803E9E8
|
|
ldr r0, =gBattlescriptCurrInstr
|
|
ldr r1, =gUnknown_082DBD3C
|
|
ldr r1, [r1]
|
|
str r1, [r0]
|
|
ldr r2, =gFightStateTracker
|
|
mov r10, r2
|
|
b _0803EBF6
|
|
.pool
|
|
_0803E9E8:
|
|
ldr r3, =gBattleScripting
|
|
ldrb r0, [r4]
|
|
strb r0, [r3, 0x17]
|
|
lsls r0, 24
|
|
lsrs r0, 25
|
|
ldr r2, =gBattleStruct
|
|
ldr r1, [r2]
|
|
adds r0, r1
|
|
adds r0, 0xC4
|
|
ldrb r0, [r0]
|
|
subs r0, 0x1
|
|
mov r8, r4
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
mov r9, r1
|
|
ldr r6, =gUnknown_082DBD3C
|
|
mov r12, r3
|
|
adds r7, r2, 0
|
|
ldr r2, =gFightStateTracker
|
|
mov r10, r2
|
|
cmp r0, 0x4
|
|
bls _0803EA14
|
|
b _0803EBDE
|
|
_0803EA14:
|
|
lsls r0, 2
|
|
ldr r1, =_0803EA38
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_0803EA38:
|
|
.4byte _0803EBDE
|
|
.4byte _0803EBDE
|
|
.4byte _0803EA4C
|
|
.4byte _0803EAE0
|
|
.4byte _0803EBB0
|
|
_0803EA4C:
|
|
ldr r5, =gBattleCommunication
|
|
movs r0, 0
|
|
strb r0, [r5, 0x5]
|
|
ldr r2, =gBankAttacker
|
|
ldrb r0, [r2]
|
|
lsrs r0, 1
|
|
ldr r1, [r7]
|
|
adds r0, r1
|
|
adds r0, 0xC6
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
mov r8, r2
|
|
cmp r0, 0
|
|
beq _0803EA98
|
|
movs r0, 0x3E
|
|
ands r0, r1
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
mov r9, r1
|
|
ldr r6, =gUnknown_082DBD3C
|
|
ldr r2, =gFightStateTracker
|
|
mov r10, r2
|
|
cmp r0, 0
|
|
bne _0803EA7E
|
|
b _0803EBDE
|
|
_0803EA7E:
|
|
movs r0, 0x5
|
|
strb r0, [r5, 0x5]
|
|
b _0803EBDE
|
|
.pool
|
|
_0803EA98:
|
|
ldr r0, =gBattlescriptCurrInstr
|
|
mov r9, r0
|
|
ldr r6, =gUnknown_082DBD3C
|
|
ldr r1, =gFightStateTracker
|
|
mov r10, r1
|
|
mov r4, r8
|
|
adds r3, r7, 0
|
|
adds r2, r5, 0
|
|
_0803EAA8:
|
|
ldrb r1, [r4]
|
|
lsrs r1, 1
|
|
ldr r0, [r3]
|
|
adds r1, r0
|
|
adds r1, 0xC6
|
|
ldrb r0, [r1]
|
|
lsrs r0, 1
|
|
strb r0, [r1]
|
|
ldrb r0, [r2, 0x5]
|
|
adds r0, 0x1
|
|
strb r0, [r2, 0x5]
|
|
ldrb r0, [r4]
|
|
lsrs r0, 1
|
|
ldr r1, [r3]
|
|
adds r0, r1
|
|
adds r0, 0xC6
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803EAA8
|
|
b _0803EBDE
|
|
.pool
|
|
_0803EAE0:
|
|
ldr r3, =gBattleCommunication
|
|
movs r0, 0x4
|
|
strb r0, [r3, 0x5]
|
|
ldr r2, =gBankAttacker
|
|
ldrb r0, [r2]
|
|
lsrs r0, 1
|
|
ldr r1, [r7]
|
|
adds r0, r1
|
|
adds r6, r0, 0
|
|
adds r6, 0xC6
|
|
ldrb r1, [r6]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
mov r8, r2
|
|
cmp r5, 0
|
|
beq _0803EB28
|
|
movs r0, 0x5
|
|
strb r0, [r3, 0x5]
|
|
ldr r2, =gBattlescriptCurrInstr
|
|
mov r9, r2
|
|
ldr r6, =gUnknown_082DBD3C
|
|
ldr r0, =gFightStateTracker
|
|
mov r10, r0
|
|
b _0803EBDE
|
|
.pool
|
|
_0803EB28:
|
|
ldr r3, =gBattleTextBuff1
|
|
movs r4, 0xFD
|
|
strb r4, [r3]
|
|
movs r0, 0x5
|
|
strb r0, [r3, 0x1]
|
|
movs r2, 0x1
|
|
strb r2, [r3, 0x2]
|
|
movs r0, 0xFF
|
|
strb r0, [r3, 0x3]
|
|
ldr r1, =gBattleTextBuff2
|
|
strb r4, [r1]
|
|
strb r5, [r1, 0x1]
|
|
movs r0, 0xD2
|
|
strb r0, [r1, 0x2]
|
|
strb r5, [r1, 0x3]
|
|
subs r0, 0xD3
|
|
strb r0, [r1, 0x4]
|
|
ldrb r0, [r6]
|
|
ands r2, r0
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
mov r9, r1
|
|
ldr r6, =gUnknown_082DBD3C
|
|
ldr r0, =gFightStateTracker
|
|
mov r10, r0
|
|
cmp r2, 0
|
|
bne _0803EB8C
|
|
mov r5, r8
|
|
adds r4, r7, 0
|
|
adds r2, r3, 0
|
|
_0803EB62:
|
|
ldrb r1, [r5]
|
|
lsrs r1, 1
|
|
ldr r0, [r4]
|
|
adds r1, r0
|
|
adds r1, 0xC6
|
|
ldrb r0, [r1]
|
|
lsrs r0, 1
|
|
strb r0, [r1]
|
|
ldrb r0, [r2, 0x2]
|
|
adds r0, 0x1
|
|
strb r0, [r2, 0x2]
|
|
ldrb r0, [r5]
|
|
lsrs r0, 1
|
|
ldr r1, [r4]
|
|
adds r0, r1
|
|
adds r0, 0xC6
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803EB62
|
|
_0803EB8C:
|
|
ldrb r0, [r3, 0x2]
|
|
adds r0, 0xE
|
|
movs r1, 0
|
|
mov r2, r12
|
|
strb r0, [r2, 0x10]
|
|
strb r1, [r2, 0x11]
|
|
b _0803EBDE
|
|
.pool
|
|
_0803EBB0:
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r1, [r0]
|
|
movs r0, 0x1
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803EBCC
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x2
|
|
strb r0, [r1, 0x5]
|
|
b _0803EBD0
|
|
.pool
|
|
_0803EBCC:
|
|
ldr r0, =gBattleCommunication
|
|
strb r1, [r0, 0x5]
|
|
_0803EBD0:
|
|
ldr r0, =gBankAttacker
|
|
mov r8, r0
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
mov r9, r1
|
|
ldr r6, =gUnknown_082DBD3C
|
|
ldr r2, =gFightStateTracker
|
|
mov r10, r2
|
|
_0803EBDE:
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
lsrs r0, 1
|
|
ldr r1, [r7]
|
|
adds r0, r1
|
|
adds r0, 0xC4
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldr r0, [r0]
|
|
mov r2, r9
|
|
str r0, [r2]
|
|
_0803EBF6:
|
|
movs r0, 0xA
|
|
mov r1, r10
|
|
strb r0, [r1]
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803E90C
|
|
|
|
thumb_func_start sub_803EC20
|
|
sub_803EC20: @ 803EC20
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r7, 0
|
|
ldr r1, =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r5
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, 0x2E]
|
|
cmp r0, 0xAF
|
|
bne _0803EC54
|
|
ldr r1, =gEnigmaBerries
|
|
lsls r0, r5, 3
|
|
subs r0, r5
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x7]
|
|
b _0803EC5E
|
|
.pool
|
|
_0803EC54:
|
|
ldrh r0, [r1, 0x2E]
|
|
bl ItemId_GetHoldEffect
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
_0803EC5E:
|
|
ldr r0, =gStringBank
|
|
strb r5, [r0]
|
|
cmp r1, 0x25
|
|
bne _0803EC9C
|
|
ldr r2, =gLastUsedItem
|
|
ldr r1, =gBattleMons
|
|
movs r0, 0x58
|
|
muls r0, r5
|
|
adds r0, r1
|
|
ldrh r0, [r0, 0x2E]
|
|
strh r0, [r2]
|
|
ldr r0, =gProtectStructs
|
|
lsls r2, r5, 4
|
|
adds r2, r0
|
|
ldrb r1, [r2, 0x1]
|
|
movs r0, 0x19
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x8
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x1]
|
|
b _0803ED70
|
|
.pool
|
|
_0803EC9C:
|
|
ldr r0, =gBattleMons
|
|
mov r10, r0
|
|
movs r2, 0x58
|
|
mov r9, r2
|
|
mov r0, r9
|
|
muls r0, r5
|
|
add r0, r10
|
|
mov r8, r0
|
|
adds r0, 0x20
|
|
ldrb r6, [r0]
|
|
cmp r6, 0x32
|
|
bne _0803ED5C
|
|
bl InBattlePyramid
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803ED38
|
|
ldr r4, =gBattleStruct
|
|
ldr r1, [r4]
|
|
adds r1, 0x6C
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
bl sub_81A9E28
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
mov r2, r8
|
|
ldrh r0, [r2, 0x6]
|
|
muls r0, r1
|
|
movs r2, 0x1
|
|
adds r1, r5, 0
|
|
eors r1, r2
|
|
mov r2, r9
|
|
muls r2, r1
|
|
adds r1, r2, 0
|
|
add r1, r10
|
|
ldrh r1, [r1, 0x6]
|
|
bl __divsi3
|
|
ldr r1, [r4]
|
|
adds r1, 0x6C
|
|
ldrb r2, [r1]
|
|
lsls r1, r2, 4
|
|
subs r1, r2
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl Random
|
|
movs r1, 0xFF
|
|
ands r1, r0
|
|
cmp r4, r1
|
|
bhi _0803ED0C
|
|
b _0803EE12
|
|
_0803ED0C:
|
|
ldr r0, =gLastUsedAbility
|
|
strb r6, [r0]
|
|
ldr r0, =gProtectStructs
|
|
lsls r2, r5, 4
|
|
adds r2, r0
|
|
ldrb r1, [r2, 0x1]
|
|
movs r0, 0x19
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x10
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x1]
|
|
b _0803ED70
|
|
.pool
|
|
_0803ED38:
|
|
ldr r0, =gLastUsedAbility
|
|
strb r6, [r0]
|
|
ldr r0, =gProtectStructs
|
|
lsls r2, r5, 4
|
|
adds r2, r0
|
|
ldrb r1, [r2, 0x1]
|
|
movs r0, 0x19
|
|
negs r0, r0
|
|
ands r0, r1
|
|
movs r1, 0x10
|
|
orrs r0, r1
|
|
strb r0, [r2, 0x1]
|
|
b _0803ED70
|
|
.pool
|
|
_0803ED5C:
|
|
ldr r1, =gBattleTypeFlags
|
|
ldr r2, [r1]
|
|
ldr r0, =0x043f0100
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0803ED80
|
|
movs r0, 0x8
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0803ED80
|
|
_0803ED70:
|
|
adds r0, r7, 0x1
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
b _0803EE12
|
|
.pool
|
|
_0803ED80:
|
|
ldr r0, [r1]
|
|
movs r1, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803EE06
|
|
bl InBattlePyramid
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803EDBC
|
|
bl sub_81A9E28
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
ldr r4, =gBattleMons
|
|
movs r3, 0x58
|
|
adds r0, r5, 0
|
|
muls r0, r3
|
|
adds r0, r4
|
|
ldrh r0, [r0, 0x6]
|
|
muls r0, r1
|
|
movs r2, 0x1
|
|
adds r1, r5, 0
|
|
eors r1, r2
|
|
muls r1, r3
|
|
adds r1, r4
|
|
b _0803EDDA
|
|
.pool
|
|
_0803EDBC:
|
|
ldr r3, =gBattleMons
|
|
movs r2, 0x58
|
|
adds r0, r5, 0
|
|
muls r0, r2
|
|
adds r4, r0, r3
|
|
movs r1, 0x1
|
|
adds r0, r5, 0
|
|
eors r0, r1
|
|
muls r0, r2
|
|
adds r1, r0, r3
|
|
ldrh r0, [r4, 0x6]
|
|
ldrh r2, [r1, 0x6]
|
|
cmp r0, r2
|
|
bcs _0803EE00
|
|
lsls r0, 7
|
|
_0803EDDA:
|
|
ldrh r1, [r1, 0x6]
|
|
bl __divsi3
|
|
ldr r1, =gBattleStruct
|
|
ldr r1, [r1]
|
|
adds r1, 0x6C
|
|
ldrb r2, [r1]
|
|
lsls r1, r2, 4
|
|
subs r1, r2
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
bl Random
|
|
movs r1, 0xFF
|
|
ands r1, r0
|
|
cmp r4, r1
|
|
bls _0803EE06
|
|
_0803EE00:
|
|
adds r0, r7, 0x1
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
_0803EE06:
|
|
ldr r0, =gBattleStruct
|
|
ldr r1, [r0]
|
|
adds r1, 0x6C
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
_0803EE12:
|
|
cmp r7, 0
|
|
beq _0803EE24
|
|
ldr r1, =gUnknown_02024082
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r1, =gBattleOutcome
|
|
movs r0, 0x4
|
|
strb r0, [r1]
|
|
_0803EE24:
|
|
adds r0, r7, 0
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.pool
|
|
thumb_func_end sub_803EC20
|
|
|
|
thumb_func_start sub_803EE48
|
|
sub_803EE48: @ 803EE48
|
|
push {r4-r6,lr}
|
|
ldr r4, =gBankAttacker
|
|
ldr r1, =gTurnOrder
|
|
ldr r5, =gUnknown_02024082
|
|
ldrb r0, [r5]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r4]
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
ldr r1, =0x02000002
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803EF0C
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r1, [r0]
|
|
strb r1, [r5]
|
|
ldr r2, =gActiveBank
|
|
movs r0, 0
|
|
strb r0, [r2]
|
|
lsls r1, 24
|
|
cmp r1, 0
|
|
beq _0803EEE0
|
|
adds r4, r2, 0
|
|
ldr r6, =gUnknown_0202421C
|
|
ldr r5, =gBattleOutcome
|
|
_0803EE7C:
|
|
ldrb r0, [r4]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803EEBC
|
|
ldrb r0, [r4]
|
|
adds r0, r6
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x3
|
|
bne _0803EECE
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
b _0803EECA
|
|
.pool
|
|
_0803EEBC:
|
|
ldrb r0, [r4]
|
|
adds r0, r6
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x3
|
|
bne _0803EECE
|
|
ldrb r0, [r5]
|
|
movs r1, 0x1
|
|
_0803EECA:
|
|
orrs r0, r1
|
|
strb r0, [r5]
|
|
_0803EECE:
|
|
ldrb r0, [r4]
|
|
adds r0, 0x1
|
|
strb r0, [r4]
|
|
ldr r1, =gNoOfAllBanks
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bcc _0803EE7C
|
|
_0803EEE0:
|
|
ldr r2, =gBattleOutcome
|
|
ldrb r0, [r2]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, =gSaveBlock2Ptr
|
|
ldr r1, [r0]
|
|
ldr r0, =0x00000ca9
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, 0x8
|
|
orrs r0, r2
|
|
b _0803EF96
|
|
.pool
|
|
_0803EF0C:
|
|
ldrb r0, [r4]
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803EF4C
|
|
ldrb r0, [r4]
|
|
bl sub_803EC20
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803EF98
|
|
ldrb r0, [r4]
|
|
bl sub_8045868
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x5]
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DAB02
|
|
str r0, [r1]
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0xA
|
|
b _0803EF96
|
|
.pool
|
|
_0803EF4C:
|
|
ldr r1, =gBattleMons
|
|
ldrb r2, [r4]
|
|
movs r0, 0x58
|
|
muls r0, r2
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
ldr r1, =0x0400e000
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803EF8C
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x4
|
|
strb r0, [r1, 0x5]
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DAB02
|
|
str r0, [r1]
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0xA
|
|
b _0803EF96
|
|
.pool
|
|
_0803EF8C:
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
strb r0, [r5]
|
|
ldr r1, =gBattleOutcome
|
|
movs r0, 0x6
|
|
_0803EF96:
|
|
strb r0, [r1]
|
|
_0803EF98:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803EE48
|
|
|
|
thumb_func_start sub_803EFA8
|
|
sub_803EFA8: @ 803EFA8
|
|
ldr r2, =gBankAttacker
|
|
ldr r1, =gTurnOrder
|
|
ldr r0, =gUnknown_02024082
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
ldr r0, =gUnknown_02022E14
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, =gUnknown_02022E16
|
|
strh r1, [r0]
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DBD58
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0xA
|
|
strb r0, [r1]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end sub_803EFA8
|
|
|
|
thumb_func_start bs5_8016AC0
|
|
bs5_8016AC0: @ 803EFF0
|
|
ldr r2, =gBankAttacker
|
|
ldr r1, =gTurnOrder
|
|
ldr r0, =gUnknown_02024082
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
ldr r0, =gUnknown_02022E14
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, =gUnknown_02022E16
|
|
strh r1, [r0]
|
|
ldr r1, =gNumSafariBalls
|
|
ldrb r0, [r1]
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r1, =gLastUsedItem
|
|
movs r0, 0x5
|
|
strh r0, [r1]
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DBD08
|
|
ldr r0, [r0, 0x14]
|
|
str r0, [r1]
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0xA
|
|
strb r0, [r1]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end bs5_8016AC0
|
|
|
|
thumb_func_start sub_803F050
|
|
sub_803F050: @ 803F050
|
|
push {r4-r6,lr}
|
|
ldr r3, =gBankAttacker
|
|
ldr r1, =gTurnOrder
|
|
ldr r0, =gUnknown_02024082
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r3]
|
|
ldr r0, =gUnknown_02022E14
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, =gUnknown_02022E16
|
|
strh r1, [r0]
|
|
ldr r6, =gBattleCommunication
|
|
ldr r2, =gBattleBufferB
|
|
ldrb r0, [r3]
|
|
lsls r0, 9
|
|
adds r1, r2, 0x1
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
subs r0, 0x1
|
|
strb r0, [r6, 0x5]
|
|
ldr r1, =gLastUsedItem
|
|
ldrb r0, [r3]
|
|
lsls r0, 9
|
|
adds r2, 0x2
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
strh r0, [r1]
|
|
ldr r1, =gBattleResults
|
|
ldrb r0, [r1, 0x1F]
|
|
cmp r0, 0xFE
|
|
bhi _0803F096
|
|
adds r0, 0x1
|
|
strb r0, [r1, 0x1F]
|
|
_0803F096:
|
|
ldr r2, =gBattleStruct
|
|
ldr r0, [r2]
|
|
adds r1, r0, 0
|
|
adds r1, 0x7A
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x2
|
|
bhi _0803F0A8
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
_0803F0A8:
|
|
ldr r0, [r2]
|
|
adds r3, r0, 0
|
|
adds r3, 0x7B
|
|
ldrb r5, [r3]
|
|
adds r4, r5, 0
|
|
cmp r4, 0x1
|
|
bls _0803F100
|
|
ldr r2, =gUnknown_0831BCE0
|
|
adds r0, 0x7A
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
ldrb r6, [r6, 0x5]
|
|
adds r0, r6
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
bcs _0803F0FC
|
|
movs r0, 0x1
|
|
b _0803F0FE
|
|
.pool
|
|
_0803F0FC:
|
|
subs r0, r5, r0
|
|
_0803F0FE:
|
|
strb r0, [r3]
|
|
_0803F100:
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DBD58
|
|
ldr r0, [r0, 0x8]
|
|
str r0, [r1]
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0xA
|
|
strb r0, [r1]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803F050
|
|
|
|
thumb_func_start sub_803F120
|
|
sub_803F120: @ 803F120
|
|
push {r4,lr}
|
|
ldr r2, =gBankAttacker
|
|
ldr r1, =gTurnOrder
|
|
ldr r0, =gUnknown_02024082
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
ldr r0, =gUnknown_02022E14
|
|
movs r4, 0
|
|
strh r4, [r0]
|
|
ldr r0, =gUnknown_02022E16
|
|
strh r4, [r0]
|
|
ldr r3, =gBattleStruct
|
|
ldr r0, [r3]
|
|
adds r2, r0, 0
|
|
adds r2, 0x7C
|
|
ldr r1, =gUnknown_0831BCEF
|
|
adds r0, 0x79
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r2]
|
|
adds r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, [r3]
|
|
adds r1, r0, 0
|
|
adds r1, 0x7C
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x14
|
|
bls _0803F162
|
|
movs r0, 0x14
|
|
strb r0, [r1]
|
|
_0803F162:
|
|
ldr r0, [r3]
|
|
adds r2, r0, 0
|
|
adds r2, 0x7B
|
|
ldr r1, =gUnknown_0831BCF3
|
|
adds r0, 0x79
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r2]
|
|
adds r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, [r3]
|
|
adds r1, r0, 0
|
|
adds r1, 0x7B
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x14
|
|
bls _0803F188
|
|
movs r0, 0x14
|
|
strb r0, [r1]
|
|
_0803F188:
|
|
ldr r0, [r3]
|
|
adds r1, r0, 0
|
|
adds r1, 0x79
|
|
ldrb r0, [r1]
|
|
cmp r0, 0x2
|
|
bhi _0803F1C4
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r0, =gBattleCommunication
|
|
strb r4, [r0, 0x5]
|
|
b _0803F1CA
|
|
.pool
|
|
_0803F1C4:
|
|
ldr r1, =gBattleCommunication
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x5]
|
|
_0803F1CA:
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DBD58
|
|
ldr r0, [r0, 0x4]
|
|
str r0, [r1]
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0xA
|
|
strb r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803F120
|
|
|
|
thumb_func_start bs8_exit_by_flight
|
|
bs8_exit_by_flight: @ 803F1F0
|
|
push {r4,lr}
|
|
ldr r2, =gBankAttacker
|
|
ldr r1, =gTurnOrder
|
|
ldr r4, =gUnknown_02024082
|
|
ldrb r0, [r4]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
movs r0, 0x11
|
|
bl PlaySE
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
strb r0, [r4]
|
|
ldr r1, =gBattleOutcome
|
|
movs r0, 0x4
|
|
strb r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bs8_exit_by_flight
|
|
|
|
thumb_func_start bs9_8016C9C
|
|
bs9_8016C9C: @ 803F22C
|
|
ldr r3, =gBankAttacker
|
|
ldr r1, =gTurnOrder
|
|
ldr r0, =gUnknown_02024082
|
|
ldrb r0, [r0]
|
|
adds r0, r1
|
|
ldrb r2, [r0]
|
|
strb r2, [r3]
|
|
ldr r0, =gUnknown_02022E14
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, =gUnknown_02022E16
|
|
strh r1, [r0]
|
|
ldr r1, =gBattleTextBuff1
|
|
movs r0, 0xFD
|
|
strb r0, [r1]
|
|
movs r0, 0x7
|
|
strb r0, [r1, 0x1]
|
|
strb r2, [r1, 0x2]
|
|
ldr r2, =gBattlePartyID
|
|
ldrb r0, [r3]
|
|
lsls r0, 1
|
|
adds r0, r2
|
|
ldrh r0, [r0]
|
|
strb r0, [r1, 0x3]
|
|
movs r0, 0xFF
|
|
strb r0, [r1, 0x4]
|
|
ldr r1, =gBattlescriptCurrInstr
|
|
ldr r0, =gUnknown_082DBD58
|
|
ldr r0, [r0, 0xC]
|
|
str r0, [r1]
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0xA
|
|
strb r0, [r1]
|
|
ldr r1, =gUnknown_0202407A
|
|
movs r0, 0xC
|
|
strb r0, [r1, 0x1]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end bs9_8016C9C
|
|
|
|
thumb_func_start bsB_exit_by_move
|
|
bsB_exit_by_move: @ 803F2A4
|
|
push {lr}
|
|
bl sub_8041728
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r1, 0
|
|
bne _0803F2C0
|
|
ldr r0, =gBattleStruct
|
|
ldr r0, [r0]
|
|
adds r0, 0x4D
|
|
strb r1, [r0]
|
|
ldr r1, =gFightStateTracker
|
|
movs r0, 0xC
|
|
strb r0, [r1]
|
|
_0803F2C0:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bsB_exit_by_move
|
|
|
|
thumb_func_start bsD_proceed
|
|
bsD_proceed: @ 803F2CC
|
|
ldr r1, =gUnknown_02024082
|
|
ldrb r0, [r1]
|
|
adds r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r3, =gFightStateTracker
|
|
ldr r2, =gUnknown_0202407A
|
|
ldrb r0, [r1]
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r3]
|
|
ldr r2, =gHitMarker
|
|
ldr r0, [r2]
|
|
ldr r1, =0xf1e892af
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end bsD_proceed
|
|
|
|
thumb_func_start bsC_8016D70
|
|
bsC_8016D70: @ 803F300
|
|
push {r4-r6,lr}
|
|
ldr r1, =gTurnOrder
|
|
ldr r2, =gUnknown_02024082
|
|
ldrb r0, [r2]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
ldr r6, =gBattleStruct
|
|
ldr r1, [r6]
|
|
adds r0, r1
|
|
adds r0, 0x5C
|
|
movs r1, 0x6
|
|
strb r1, [r0]
|
|
ldrb r0, [r2]
|
|
adds r0, 0x1
|
|
strb r0, [r2]
|
|
ldr r3, =gFightStateTracker
|
|
ldr r1, =gUnknown_0202407A
|
|
ldrb r0, [r2]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r3]
|
|
bl sub_803D6A0
|
|
ldr r2, =gHitMarker
|
|
ldr r0, [r2]
|
|
ldr r1, =0xf1e892af
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r0, =gCurrentMove
|
|
movs r1, 0
|
|
strh r1, [r0]
|
|
ldr r0, =gBattleMoveDamage
|
|
movs r4, 0
|
|
str r4, [r0]
|
|
ldr r0, =gBattleMoveFlags
|
|
strb r1, [r0]
|
|
ldr r5, =gBattleScripting
|
|
strb r1, [r5, 0x18]
|
|
strb r1, [r5, 0x19]
|
|
ldr r2, =gUnknown_02024250
|
|
ldr r3, =gBankAttacker
|
|
ldrb r0, [r3]
|
|
lsls r0, 1
|
|
adds r0, r2
|
|
strh r4, [r0]
|
|
ldr r2, =gUnknown_02024258
|
|
ldrb r0, [r3]
|
|
lsls r0, 1
|
|
adds r0, r2
|
|
strh r4, [r0]
|
|
ldr r0, [r6]
|
|
strb r1, [r0, 0x13]
|
|
ldr r0, =gDynamicBasePower
|
|
strh r4, [r0]
|
|
strb r1, [r5, 0x14]
|
|
ldr r0, =gBattleCommunication
|
|
strb r1, [r0, 0x3]
|
|
strb r1, [r0, 0x4]
|
|
strb r1, [r5, 0x16]
|
|
ldr r0, =gBattleResources
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, 0x8]
|
|
adds r0, 0x20
|
|
strb r1, [r0]
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end bsC_8016D70
|
|
|
|
thumb_func_start get_battle_side_of_something
|
|
get_battle_side_of_something: @ 803F3CC
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
movs r0, 0
|
|
cmp r1, 0xE
|
|
bhi _0803F47A
|
|
lsls r0, r1, 2
|
|
ldr r1, =_0803F3E8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.pool
|
|
.align 2, 0
|
|
_0803F3E8:
|
|
.4byte _0803F424
|
|
.4byte _0803F430
|
|
.4byte _0803F43C
|
|
.4byte _0803F458
|
|
.4byte _0803F464
|
|
.4byte _0803F458
|
|
.4byte _0803F464
|
|
.4byte _0803F448
|
|
.4byte _0803F464
|
|
.4byte _0803F464
|
|
.4byte _0803F44C
|
|
.4byte _0803F464
|
|
.4byte _0803F468
|
|
.4byte _0803F46C
|
|
.4byte _0803F470
|
|
_0803F424:
|
|
ldr r0, =gBankTarget
|
|
ldrb r0, [r0]
|
|
b _0803F47A
|
|
.pool
|
|
_0803F430:
|
|
ldr r0, =gBankAttacker
|
|
ldrb r0, [r0]
|
|
b _0803F47A
|
|
.pool
|
|
_0803F43C:
|
|
ldr r0, =gEffectBank
|
|
ldrb r0, [r0]
|
|
b _0803F47A
|
|
.pool
|
|
_0803F448:
|
|
movs r0, 0
|
|
b _0803F47A
|
|
_0803F44C:
|
|
ldr r0, =gBattleScripting
|
|
ldrb r0, [r0, 0x17]
|
|
b _0803F47A
|
|
.pool
|
|
_0803F458:
|
|
ldr r0, =gBank1
|
|
ldrb r0, [r0]
|
|
b _0803F47A
|
|
.pool
|
|
_0803F464:
|
|
movs r0, 0
|
|
b _0803F472
|
|
_0803F468:
|
|
movs r0, 0x1
|
|
b _0803F472
|
|
_0803F46C:
|
|
movs r0, 0x2
|
|
b _0803F472
|
|
_0803F470:
|
|
movs r0, 0x3
|
|
_0803F472:
|
|
bl GetBankByPlayerAI
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
_0803F47A:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end get_battle_side_of_something
|
|
|
|
thumb_func_start sub_803F480
|
|
sub_803F480: @ 803F480
|
|
push {r4-r7,lr}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
ldr r1, =gBattleMons
|
|
movs r4, 0x58
|
|
muls r0, r4
|
|
adds r0, r1
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
mov r12, r1
|
|
cmp r0, 0x2E
|
|
bne _0803F532
|
|
movs r3, 0
|
|
adds r0, r5, 0
|
|
muls r0, r4
|
|
adds r1, 0xC
|
|
adds r1, r0, r1
|
|
b _0803F4BC
|
|
.pool
|
|
_0803F4B4:
|
|
adds r1, 0x2
|
|
adds r3, 0x1
|
|
cmp r3, 0x3
|
|
bgt _0803F4C2
|
|
_0803F4BC:
|
|
ldrh r0, [r1]
|
|
cmp r0, r2
|
|
bne _0803F4B4
|
|
_0803F4C2:
|
|
cmp r3, 0x4
|
|
beq _0803F532
|
|
movs r7, 0x58
|
|
adds r2, r5, 0
|
|
muls r2, r7
|
|
adds r0, r3, r2
|
|
mov r6, r12
|
|
adds r6, 0x24
|
|
adds r1, r0, r6
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _0803F4DE
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
_0803F4DE:
|
|
mov r0, r12
|
|
adds r0, 0x50
|
|
adds r0, r2, r0
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 14
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803F532
|
|
ldr r1, =gDisableStructs
|
|
lsls r0, r5, 3
|
|
subs r0, r5
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x18]
|
|
lsrs r1, 4
|
|
ldr r2, =gBitTable
|
|
lsls r0, r3, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _0803F532
|
|
ldr r4, =gActiveBank
|
|
strb r5, [r4]
|
|
adds r1, r3, 0
|
|
adds r1, 0x9
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldrb r0, [r4]
|
|
muls r0, r7
|
|
adds r0, r6
|
|
adds r0, r3
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
bl EmitSetAttributes
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
_0803F532:
|
|
add sp, 0x4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803F480
|
|
|
|
thumb_func_start sub_803F548
|
|
sub_803F548: @ 803F548
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r0, 0x4
|
|
mov r8, r0
|
|
adds r0, r5, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
movs r4, 0
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
bge _0803F5F0
|
|
ldr r1, =gBattleMons
|
|
movs r0, 0x58
|
|
adds r7, r5, 0
|
|
muls r7, r0
|
|
adds r1, 0xC
|
|
mov r10, r1
|
|
_0803F57E:
|
|
lsls r0, r4, 24
|
|
lsrs r0, 24
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r6, r4, 0x1
|
|
cmp r9, r0
|
|
beq _0803F5E6
|
|
ldr r0, =gBattleMons
|
|
movs r3, 0x58
|
|
adds r1, r4, 0
|
|
muls r1, r3
|
|
adds r1, r0
|
|
adds r1, 0x20
|
|
ldrb r1, [r1]
|
|
adds r4, r0, 0
|
|
cmp r1, 0x2E
|
|
bne _0803F5E6
|
|
movs r2, 0
|
|
adds r0, r5, 0
|
|
muls r0, r3
|
|
adds r1, r4, 0
|
|
adds r1, 0xC
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
movs r1, 0x8F
|
|
lsls r1, 1
|
|
cmp r0, r1
|
|
beq _0803F5CE
|
|
adds r3, r1, 0
|
|
mov r0, r10
|
|
adds r1, r7, r0
|
|
_0803F5C0:
|
|
adds r1, 0x2
|
|
adds r2, 0x1
|
|
cmp r2, 0x3
|
|
bgt _0803F5CE
|
|
ldrh r0, [r1]
|
|
cmp r0, r3
|
|
bne _0803F5C0
|
|
_0803F5CE:
|
|
cmp r2, 0x4
|
|
beq _0803F5E6
|
|
mov r8, r2
|
|
adds r1, r2, r7
|
|
adds r0, r4, 0
|
|
adds r0, 0x24
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _0803F5E6
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
_0803F5E6:
|
|
adds r4, r6, 0
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _0803F57E
|
|
_0803F5F0:
|
|
mov r1, r8
|
|
cmp r1, 0x4
|
|
beq _0803F658
|
|
ldr r6, =gBattleMons
|
|
movs r3, 0x58
|
|
adds r0, r5, 0
|
|
muls r0, r3
|
|
adds r1, r6, 0
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 14
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803F658
|
|
ldr r1, =gDisableStructs
|
|
lsls r0, r5, 3
|
|
subs r0, r5
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x18]
|
|
lsrs r1, 4
|
|
ldr r2, =gBitTable
|
|
mov r4, r8
|
|
lsls r0, r4, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _0803F658
|
|
ldr r4, =gActiveBank
|
|
strb r5, [r4]
|
|
mov r1, r8
|
|
adds r1, 0x9
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldrb r0, [r4]
|
|
muls r0, r3
|
|
adds r2, r6, 0
|
|
adds r2, 0x24
|
|
adds r0, r2
|
|
add r0, r8
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
bl EmitSetAttributes
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
_0803F658:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803F548
|
|
|
|
thumb_func_start sub_803F67C
|
|
sub_803F67C: @ 803F67C
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
movs r6, 0x4
|
|
movs r1, 0
|
|
ldr r0, =gNoOfAllBanks
|
|
mov r8, r0
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
bge _0803F6FE
|
|
ldr r7, =gBattleMons
|
|
movs r2, 0x58
|
|
mov r12, r2
|
|
mov r5, r12
|
|
muls r5, r3
|
|
adds r0, r7, 0
|
|
adds r0, 0xC
|
|
adds r2, r5, r0
|
|
mov r10, r2
|
|
mov r9, r5
|
|
_0803F6AE:
|
|
mov r0, r12
|
|
muls r0, r1
|
|
adds r0, r7
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
adds r4, r1, 0x1
|
|
cmp r0, 0x2E
|
|
bne _0803F6F4
|
|
cmp r1, r3
|
|
beq _0803F6F4
|
|
movs r2, 0
|
|
mov r1, r10
|
|
ldrh r0, [r1]
|
|
cmp r0, 0xC3
|
|
beq _0803F6DE
|
|
ldr r1, =gBattleMons + 0xC
|
|
add r1, r9
|
|
_0803F6D0:
|
|
adds r1, 0x2
|
|
adds r2, 0x1
|
|
cmp r2, 0x3
|
|
bgt _0803F6DE
|
|
ldrh r0, [r1]
|
|
cmp r0, 0xC3
|
|
bne _0803F6D0
|
|
_0803F6DE:
|
|
cmp r2, 0x4
|
|
beq _0803F6F4
|
|
adds r6, r2, 0
|
|
adds r0, r6, r5
|
|
ldr r2, =gBattleMons + 0x24
|
|
adds r1, r0, r2
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _0803F6F4
|
|
subs r0, 0x1
|
|
strb r0, [r1]
|
|
_0803F6F4:
|
|
adds r1, r4, 0
|
|
mov r0, r8
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
blt _0803F6AE
|
|
_0803F6FE:
|
|
cmp r6, 0x4
|
|
beq _0803F762
|
|
ldr r7, =gBattleMons
|
|
movs r5, 0x58
|
|
adds r0, r3, 0
|
|
muls r0, r5
|
|
adds r1, r7, 0
|
|
adds r1, 0x50
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, 0x80
|
|
lsls r1, 14
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803F762
|
|
ldr r1, =gDisableStructs
|
|
lsls r0, r3, 3
|
|
subs r0, r3
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldrb r1, [r0, 0x18]
|
|
lsrs r1, 4
|
|
ldr r2, =gBitTable
|
|
lsls r0, r6, 2
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _0803F762
|
|
ldr r4, =gActiveBank
|
|
strb r3, [r4]
|
|
adds r1, r6, 0
|
|
adds r1, 0x9
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldrb r0, [r4]
|
|
muls r0, r5
|
|
adds r2, r7, 0
|
|
adds r2, 0x24
|
|
adds r0, r2
|
|
adds r0, r6
|
|
str r0, [sp]
|
|
movs r0, 0
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
bl EmitSetAttributes
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
_0803F762:
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803F67C
|
|
|
|
thumb_func_start sub_803F790
|
|
sub_803F790: @ 803F790
|
|
push {r4,r5,lr}
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803F7D0
|
|
movs r2, 0
|
|
ldr r4, =gNoOfAllBanks
|
|
ldrb r0, [r4]
|
|
cmp r2, r0
|
|
bge _0803F7EE
|
|
ldr r3, =gBattleExecBuffer
|
|
ldr r5, =gBitTable
|
|
_0803F7AC:
|
|
ldm r5!, {r1}
|
|
lsls r1, 28
|
|
ldr r0, [r3]
|
|
orrs r0, r1
|
|
str r0, [r3]
|
|
adds r2, 0x1
|
|
ldrb r0, [r4]
|
|
cmp r2, r0
|
|
blt _0803F7AC
|
|
b _0803F7EE
|
|
.pool
|
|
_0803F7D0:
|
|
movs r2, 0
|
|
ldr r4, =gNoOfAllBanks
|
|
ldrb r0, [r4]
|
|
cmp r2, r0
|
|
bge _0803F7EE
|
|
ldr r3, =gBattleExecBuffer
|
|
ldr r5, =gBitTable
|
|
_0803F7DE:
|
|
ldr r0, [r3]
|
|
ldm r5!, {r1}
|
|
orrs r0, r1
|
|
str r0, [r3]
|
|
adds r2, 0x1
|
|
ldrb r0, [r4]
|
|
cmp r2, r0
|
|
blt _0803F7DE
|
|
_0803F7EE:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803F790
|
|
|
|
thumb_func_start MarkBufferBankForExecution
|
|
MarkBufferBankForExecution: @ 803F800
|
|
push {lr}
|
|
lsls r0, 24
|
|
lsrs r3, r0, 24
|
|
ldr r0, =gBattleTypeFlags
|
|
ldr r0, [r0]
|
|
movs r1, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803F834
|
|
ldr r2, =gBattleExecBuffer
|
|
ldr r1, =gBitTable
|
|
lsls r0, r3, 2
|
|
adds r0, r1
|
|
ldr r1, [r0]
|
|
lsls r1, 28
|
|
ldr r0, [r2]
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
b _0803F844
|
|
.pool
|
|
_0803F834:
|
|
ldr r2, =gBattleExecBuffer
|
|
ldr r1, =gBitTable
|
|
lsls r0, r3, 2
|
|
adds r0, r1
|
|
ldr r1, [r2]
|
|
ldr r0, [r0]
|
|
orrs r1, r0
|
|
str r1, [r2]
|
|
_0803F844:
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end MarkBufferBankForExecution
|
|
|
|
thumb_func_start sub_803F850
|
|
sub_803F850: @ 803F850
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
movs r4, 0
|
|
ldr r5, =gBattleExecBuffer
|
|
ldr r1, =gBitTable
|
|
lsls r0, r7, 2
|
|
adds r6, r0, r1
|
|
b _0803F87A
|
|
.pool
|
|
_0803F86C:
|
|
lsls r0, r4, 2
|
|
ldr r1, [r6]
|
|
lsls r1, r0
|
|
ldr r0, [r5]
|
|
orrs r0, r1
|
|
str r0, [r5]
|
|
adds r4, 0x1
|
|
_0803F87A:
|
|
bl sub_8009FCC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r4, r0
|
|
blt _0803F86C
|
|
ldr r2, =gBattleExecBuffer
|
|
movs r1, 0x80
|
|
lsls r1, 21
|
|
lsls r1, r7
|
|
ldr r0, [r2]
|
|
bics r0, r1
|
|
str r0, [r2]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803F850
|
|
|
|
thumb_func_start CancelMultiTurnMoves
|
|
CancelMultiTurnMoves: @ 803F8A0
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, =gBattleMons
|
|
movs r2, 0x58
|
|
adds r3, r0, 0
|
|
muls r3, r2
|
|
adds r1, 0x50
|
|
adds r3, r1
|
|
ldr r1, [r3]
|
|
ldr r2, =0xffffefff
|
|
ands r1, r2
|
|
ldr r2, =0xfffff3ff
|
|
ands r1, r2
|
|
movs r2, 0x71
|
|
negs r2, r2
|
|
ands r1, r2
|
|
ldr r2, =0xfffffcff
|
|
ands r1, r2
|
|
str r1, [r3]
|
|
ldr r1, =gStatuses3
|
|
lsls r2, r0, 2
|
|
adds r2, r1
|
|
ldr r1, [r2]
|
|
ldr r3, =0xfffbff3f
|
|
ands r1, r3
|
|
str r1, [r2]
|
|
ldr r2, =gDisableStructs
|
|
lsls r1, r0, 3
|
|
subs r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldrb r2, [r1, 0x11]
|
|
movs r0, 0x10
|
|
negs r0, r0
|
|
ands r0, r2
|
|
strb r0, [r1, 0x11]
|
|
movs r0, 0
|
|
strb r0, [r1, 0x10]
|
|
bx lr
|
|
.pool
|
|
thumb_func_end CancelMultiTurnMoves
|
|
|
|
thumb_func_start sub_803F90C
|
|
sub_803F90C: @ 803F90C
|
|
push {lr}
|
|
lsls r0, 24
|
|
ldr r1, =gProtectStructs
|
|
lsrs r0, 20
|
|
adds r1, r0, r1
|
|
ldrb r0, [r1]
|
|
lsrs r0, 7
|
|
cmp r0, 0
|
|
bne _0803F952
|
|
ldrb r2, [r1, 0x1]
|
|
lsls r0, r2, 30
|
|
cmp r0, 0
|
|
blt _0803F952
|
|
lsls r0, r2, 26
|
|
cmp r0, 0
|
|
blt _0803F952
|
|
lsls r0, r2, 25
|
|
cmp r0, 0
|
|
blt _0803F952
|
|
lsrs r0, r2, 7
|
|
cmp r0, 0
|
|
bne _0803F952
|
|
ldrb r1, [r1, 0x2]
|
|
lsls r0, r1, 31
|
|
cmp r0, 0
|
|
bne _0803F952
|
|
lsls r0, r1, 30
|
|
cmp r0, 0
|
|
blt _0803F952
|
|
lsls r0, r1, 29
|
|
cmp r0, 0
|
|
blt _0803F952
|
|
lsls r0, r2, 31
|
|
cmp r0, 0
|
|
beq _0803F95C
|
|
_0803F952:
|
|
movs r0, 0x1
|
|
b _0803F95E
|
|
.pool
|
|
_0803F95C:
|
|
movs r0, 0
|
|
_0803F95E:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_803F90C
|
|
|
|
thumb_func_start b_std_message
|
|
b_std_message: @ 803F964
|
|
push {r4,lr}
|
|
adds r2, r0, 0
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
ldr r4, =gActiveBank
|
|
strb r1, [r4]
|
|
movs r0, 0
|
|
adds r1, r2, 0
|
|
bl dp01_build_cmdbuf_x10_TODO
|
|
ldrb r0, [r4]
|
|
bl MarkBufferBankForExecution
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end b_std_message
|
|
|
|
thumb_func_start sub_803F988
|
|
sub_803F988: @ 803F988
|
|
push {r4-r6,lr}
|
|
movs r3, 0
|
|
ldr r0, =gUnknown_020243FE
|
|
strb r3, [r0]
|
|
strb r3, [r0, 0x1]
|
|
movs r1, 0
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r2, [r0]
|
|
adds r6, r0, 0
|
|
cmp r1, r2
|
|
bge _0803F9B6
|
|
ldr r5, =gBitTable
|
|
adds r4, r2, 0
|
|
ldr r2, =gBattlePartyID
|
|
_0803F9A4:
|
|
ldrh r0, [r2]
|
|
lsls r0, 2
|
|
adds r0, r5
|
|
ldr r0, [r0]
|
|
orrs r3, r0
|
|
adds r2, 0x4
|
|
adds r1, 0x2
|
|
cmp r1, r4
|
|
blt _0803F9A4
|
|
_0803F9B6:
|
|
movs r1, 0x1
|
|
adds r2, r6, 0
|
|
ldrb r0, [r2]
|
|
cmp r1, r0
|
|
bge _0803F9D6
|
|
ldr r5, =gUnknown_020243FE
|
|
movs r4, 0x2
|
|
_0803F9C4:
|
|
adds r0, r1, 0
|
|
ands r0, r4
|
|
asrs r0, 1
|
|
adds r0, r5
|
|
strb r3, [r0]
|
|
adds r1, 0x2
|
|
ldrb r0, [r2]
|
|
cmp r1, r0
|
|
blt _0803F9C4
|
|
_0803F9D6:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803F988
|
|
|
|
thumb_func_start sub_803F9EC
|
|
sub_803F9EC: @ 803F9EC
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r4, 0
|
|
adds r0, r5, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0803FA50
|
|
movs r0, 0x2
|
|
ands r0, r5
|
|
lsls r0, 24
|
|
lsrs r0, 25
|
|
mov r12, r0
|
|
ldr r1, =gUnknown_020243FE
|
|
adds r0, r1
|
|
strb r4, [r0]
|
|
adds r5, r4, 0
|
|
ldr r0, =gNoOfAllBanks
|
|
ldrb r2, [r0]
|
|
mov r8, r1
|
|
cmp r4, r2
|
|
bge _0803FA4A
|
|
ldr r0, =gAbsentBankFlags
|
|
ldrb r7, [r0]
|
|
ldr r1, =gBitTable
|
|
adds r6, r2, 0
|
|
ldr r3, =gBattlePartyID
|
|
adds r2, r1, 0
|
|
_0803FA2E:
|
|
ldr r0, [r2]
|
|
ands r0, r7
|
|
cmp r0, 0
|
|
bne _0803FA40
|
|
ldrh r0, [r3]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
orrs r4, r0
|
|
_0803FA40:
|
|
adds r3, 0x4
|
|
adds r2, 0x8
|
|
adds r5, 0x2
|
|
cmp r5, r6
|
|
blt _0803FA2E
|
|
_0803FA4A:
|
|
mov r0, r12
|
|
add r0, r8
|
|
strb r4, [r0]
|
|
_0803FA50:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803F9EC
|
|
|
|
thumb_func_start sub_803FA70
|
|
sub_803FA70: @ 803FA70
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
adds r0, r4, 0
|
|
bl GetBankSide
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0803FA8C
|
|
adds r0, r4, 0
|
|
bl sub_803F9EC
|
|
b _0803FAC2
|
|
_0803FA8C:
|
|
movs r3, 0x1
|
|
ldr r5, =gNoOfAllBanks
|
|
ldrb r0, [r5]
|
|
cmp r3, r0
|
|
bge _0803FAC2
|
|
ldr r0, =gUnknown_020243FE
|
|
mov r12, r0
|
|
movs r7, 0x2
|
|
ldr r6, =gBitTable
|
|
ldr r1, =gBattlePartyID
|
|
lsls r0, r4, 1
|
|
adds r4, r0, r1
|
|
_0803FAA4:
|
|
adds r2, r3, 0
|
|
ands r2, r7
|
|
asrs r2, 1
|
|
add r2, r12
|
|
ldrh r0, [r4]
|
|
lsls r0, 2
|
|
adds r0, r6
|
|
ldr r0, [r0]
|
|
ldrb r1, [r2]
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
adds r3, 0x1
|
|
ldrb r0, [r5]
|
|
cmp r3, r0
|
|
blt _0803FAA4
|
|
_0803FAC2:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.pool
|
|
thumb_func_end sub_803FA70
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|
|
|