mirror of
https://github.com/pret/pokeemerald-jp.git
synced 2026-03-21 17:24:33 -05:00
16887 lines
285 KiB
ArmAsm
16887 lines
285 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
.text
|
|
.syntax unified
|
|
|
|
thumb_func_start CB2_InitBattle
|
|
CB2_InitBattle: @ 0x080365B4
|
|
push {lr}
|
|
bl MoveSaveBlocks_ResetHeap
|
|
bl AllocateBattleResources
|
|
bl AllocateBattleSpritesData
|
|
bl AllocateMonSpritesGfx
|
|
bl sub_08185CDC
|
|
ldr r0, _080365E8
|
|
ldr r1, [r0]
|
|
movs r0, #0x40
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08036620
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080365EC
|
|
bl CB2_InitBattleInternal
|
|
b _0803660E
|
|
.align 2, 0
|
|
_080365E8: .4byte 0x02022C90
|
|
_080365EC:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xf
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
bne _08036608
|
|
bl HandleLinkBattleSetup
|
|
ldr r0, _08036604
|
|
bl SetMainCallback2
|
|
b _0803660E
|
|
.align 2, 0
|
|
_08036604: .4byte 0x0803782D
|
|
_08036608:
|
|
ldr r0, _08036618
|
|
bl SetMainCallback2
|
|
_0803660E:
|
|
ldr r1, _0803661C
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
b _08036624
|
|
.align 2, 0
|
|
_08036618: .4byte 0x08037A7D
|
|
_0803661C: .4byte 0x02023FD6
|
|
_08036620:
|
|
bl CB2_InitBattleInternal
|
|
_08036624:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end CB2_InitBattle
|
|
|
|
thumb_func_start CB2_InitBattleInternal
|
|
CB2_InitBattleInternal: @ 0x08036628
|
|
push {r4, r5, lr}
|
|
sub sp, #4
|
|
movs r0, #0
|
|
bl SetHBlankCallback
|
|
movs r0, #0
|
|
bl SetVBlankCallback
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
movs r1, #0xc0
|
|
lsls r1, r1, #0x13
|
|
ldr r2, _080366A0
|
|
mov r0, sp
|
|
bl CpuSet
|
|
movs r0, #0x4c
|
|
movs r1, #0
|
|
bl SetGpuReg
|
|
movs r0, #0x40
|
|
movs r1, #0xf0
|
|
bl SetGpuReg
|
|
ldr r1, _080366A4
|
|
movs r0, #0x44
|
|
bl SetGpuReg
|
|
movs r0, #0x48
|
|
movs r1, #0
|
|
bl SetGpuReg
|
|
movs r0, #0x4a
|
|
movs r1, #0
|
|
bl SetGpuReg
|
|
ldr r0, _080366A8
|
|
movs r2, #0xf0
|
|
strh r2, [r0]
|
|
ldr r0, _080366AC
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xf
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080366C4
|
|
ldr r0, _080366B0
|
|
ldrh r1, [r0]
|
|
ldr r0, _080366B4
|
|
cmp r1, r0
|
|
beq _080366C4
|
|
ldr r1, _080366B8
|
|
movs r0, #0x9f
|
|
strh r0, [r1]
|
|
ldr r0, _080366BC
|
|
strh r2, [r0]
|
|
ldr r1, _080366C0
|
|
movs r0, #0x20
|
|
strh r0, [r1]
|
|
b _08036712
|
|
.align 2, 0
|
|
_080366A0: .4byte 0x05006000
|
|
_080366A4: .4byte 0x00005051
|
|
_080366A8: .4byte 0x02022AD8
|
|
_080366AC: .4byte 0x02022C90
|
|
_080366B0: .4byte 0x0203886E
|
|
_080366B4: .4byte 0x00000C03
|
|
_080366B8: .4byte 0x02022ADA
|
|
_080366BC: .4byte 0x02022ADC
|
|
_080366C0: .4byte 0x02022ADE
|
|
_080366C4:
|
|
ldr r0, _0803679C
|
|
ldr r2, _080367A0
|
|
adds r1, r2, #0
|
|
strh r1, [r0]
|
|
bl ScanlineEffect_Clear
|
|
ldr r0, _080367A4
|
|
movs r3, #0xf0
|
|
movs r5, #0xf0
|
|
lsls r5, r5, #3
|
|
adds r2, r0, r5
|
|
movs r1, #0x4f
|
|
_080366DC:
|
|
strh r3, [r0]
|
|
strh r3, [r2]
|
|
adds r2, #2
|
|
adds r0, #2
|
|
subs r1, #1
|
|
cmp r1, #0
|
|
bge _080366DC
|
|
movs r1, #0x50
|
|
ldr r4, _080367A8
|
|
ldr r0, _080367A4
|
|
ldr r3, _080367AC
|
|
movs r5, #0x82
|
|
lsls r5, r5, #4
|
|
adds r2, r0, r5
|
|
adds r0, #0xa0
|
|
_080366FA:
|
|
strh r3, [r0]
|
|
strh r3, [r2]
|
|
adds r2, #2
|
|
adds r0, #2
|
|
adds r1, #1
|
|
cmp r1, #0x9f
|
|
ble _080366FA
|
|
ldr r0, [r4]
|
|
ldr r1, [r4, #4]
|
|
ldr r2, [r4, #8]
|
|
bl ScanlineEffect_SetParams
|
|
_08036712:
|
|
bl ResetPaletteFade
|
|
ldr r0, _080367B0
|
|
movs r1, #0
|
|
strh r1, [r0]
|
|
ldr r0, _080367B4
|
|
strh r1, [r0]
|
|
ldr r0, _080367B8
|
|
strh r1, [r0]
|
|
ldr r0, _080367BC
|
|
strh r1, [r0]
|
|
ldr r0, _080367C0
|
|
strh r1, [r0]
|
|
ldr r0, _080367C4
|
|
strh r1, [r0]
|
|
ldr r0, _080367C8
|
|
strh r1, [r0]
|
|
ldr r0, _080367CC
|
|
strh r1, [r0]
|
|
bl BattleSetup_GetTerrainId
|
|
ldr r2, _080367D0
|
|
strb r0, [r2]
|
|
ldr r4, _080367D4
|
|
ldr r0, [r4]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0x11
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08036752
|
|
movs r0, #8
|
|
strb r0, [r2]
|
|
_08036752:
|
|
bl sub_08035528
|
|
bl LoadBattleTextboxAndBackground
|
|
bl ResetSpriteData
|
|
bl ResetTasks
|
|
bl DrawBattleEntryBackground
|
|
bl FreeAllSpritePalettes
|
|
ldr r1, _080367D8
|
|
movs r0, #4
|
|
strb r0, [r1]
|
|
ldr r0, _080367DC
|
|
bl SetVBlankCallback
|
|
bl SetUpBattleVarsAndBirchZigzagoon
|
|
ldr r2, [r4]
|
|
movs r1, #0xa0
|
|
lsls r1, r1, #1
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
cmp r0, r1
|
|
beq _08036792
|
|
ldr r1, _080367E0
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
cmp r0, r1
|
|
bne _080367E8
|
|
_08036792:
|
|
ldr r0, _080367E4
|
|
bl SetMainCallback2
|
|
b _08036802
|
|
.align 2, 0
|
|
_0803679C: .4byte 0x02022ADA
|
|
_080367A0: .4byte 0x00005051
|
|
_080367A4: .4byte 0x020388C8
|
|
_080367A8: .4byte 0x082EBAC8
|
|
_080367AC: .4byte 0x0000FF10
|
|
_080367B0: .4byte 0x02022AC8
|
|
_080367B4: .4byte 0x02022ACA
|
|
_080367B8: .4byte 0x02022ACC
|
|
_080367BC: .4byte 0x02022ACE
|
|
_080367C0: .4byte 0x02022AD0
|
|
_080367C4: .4byte 0x02022AD2
|
|
_080367C8: .4byte 0x02022AD4
|
|
_080367CC: .4byte 0x02022AD6
|
|
_080367D0: .4byte 0x02022C94
|
|
_080367D4: .4byte 0x02022C90
|
|
_080367D8: .4byte 0x030030BC
|
|
_080367DC: .4byte 0x080386DD
|
|
_080367E0: .4byte 0x00400040
|
|
_080367E4: .4byte 0x08037275
|
|
_080367E8:
|
|
movs r0, #0x40
|
|
ands r2, r0
|
|
cmp r2, #0
|
|
beq _080367FC
|
|
ldr r0, _080367F8
|
|
bl SetMainCallback2
|
|
b _08036802
|
|
.align 2, 0
|
|
_080367F8: .4byte 0x08037B45
|
|
_080367FC:
|
|
ldr r0, _08036880
|
|
bl SetMainCallback2
|
|
_08036802:
|
|
ldr r5, _08036884
|
|
ldr r0, [r5]
|
|
ldr r1, _08036888
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803683C
|
|
ldr r4, _0803688C
|
|
ldr r0, _08036890
|
|
ldrh r1, [r0]
|
|
adds r0, r4, #0
|
|
movs r2, #1
|
|
bl CreateNPCTrainerParty
|
|
ldr r0, [r5]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08036838
|
|
movs r1, #0x96
|
|
lsls r1, r1, #1
|
|
adds r0, r4, r1
|
|
ldr r1, _08036894
|
|
ldrh r1, [r1]
|
|
movs r2, #0
|
|
bl CreateNPCTrainerParty
|
|
_08036838:
|
|
bl SetWildMonHeldItem
|
|
_0803683C:
|
|
ldr r1, _08036898
|
|
ldr r2, _0803689C
|
|
adds r1, r1, r2
|
|
ldrb r0, [r1]
|
|
movs r2, #2
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
ldr r0, _080368A0
|
|
ldr r1, [r0]
|
|
ldr r5, _080368A4
|
|
adds r1, r1, r5
|
|
ldrb r2, [r1]
|
|
movs r0, #9
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r4, _080368A8
|
|
movs r0, #0xfa
|
|
lsls r0, r0, #1
|
|
adds r5, r4, r0
|
|
_08036864:
|
|
adds r0, r4, #0
|
|
movs r1, #3
|
|
bl AdjustFriendship
|
|
adds r4, #0x64
|
|
cmp r4, r5
|
|
ble _08036864
|
|
movs r1, #0
|
|
ldr r0, _080368AC
|
|
strb r1, [r0]
|
|
add sp, #4
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08036880: .4byte 0x08036E01
|
|
_08036884: .4byte 0x02022C90
|
|
_08036888: .4byte 0x01000002
|
|
_0803688C: .4byte 0x020243E8
|
|
_08036890: .4byte 0x0203886A
|
|
_08036894: .4byte 0x0203886C
|
|
_08036898: .4byte 0x03002360
|
|
_0803689C: .4byte 0x00000439
|
|
_080368A0: .4byte 0x03005AF0
|
|
_080368A4: .4byte 0x00000CA9
|
|
_080368A8: .4byte 0x02024190
|
|
_080368AC: .4byte 0x02023FD6
|
|
thumb_func_end CB2_InitBattleInternal
|
|
|
|
thumb_func_start sub_080368B0
|
|
sub_080368B0: @ 0x080368B0
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
movs r6, #0
|
|
mov sb, r6
|
|
movs r0, #0xce
|
|
lsls r0, r0, #1
|
|
mov sl, r0
|
|
mov r8, r6
|
|
_080368C6:
|
|
movs r0, #0x64
|
|
mov r4, sb
|
|
muls r4, r0, r4
|
|
ldr r0, _08036988
|
|
adds r4, r4, r0
|
|
adds r0, r4, #0
|
|
movs r1, #0x41
|
|
bl GetMonData
|
|
lsls r0, r0, #0x10
|
|
lsrs r5, r0, #0x10
|
|
adds r0, r4, #0
|
|
movs r1, #0x39
|
|
bl GetMonData
|
|
lsls r0, r0, #0x10
|
|
lsrs r7, r0, #0x10
|
|
adds r0, r4, #0
|
|
movs r1, #0x37
|
|
bl GetMonData
|
|
adds r1, r0, #0
|
|
cmp r5, #0
|
|
beq _08036942
|
|
cmp r5, sl
|
|
beq _0803690E
|
|
cmp r7, #0
|
|
beq _0803690E
|
|
cmp r1, #0
|
|
bne _0803690E
|
|
movs r0, #1
|
|
mov r2, r8
|
|
lsls r0, r2
|
|
orrs r6, r0
|
|
lsls r0, r6, #0x10
|
|
lsrs r6, r0, #0x10
|
|
_0803690E:
|
|
cmp r5, #0
|
|
beq _08036942
|
|
cmp r7, #0
|
|
beq _0803692A
|
|
cmp r5, sl
|
|
beq _0803691E
|
|
cmp r1, #0
|
|
beq _0803692A
|
|
_0803691E:
|
|
movs r0, #2
|
|
mov r1, r8
|
|
lsls r0, r1
|
|
orrs r6, r0
|
|
lsls r0, r6, #0x10
|
|
lsrs r6, r0, #0x10
|
|
_0803692A:
|
|
cmp r5, #0
|
|
beq _08036942
|
|
cmp r5, sl
|
|
beq _08036942
|
|
cmp r7, #0
|
|
bne _08036942
|
|
movs r0, #3
|
|
mov r2, r8
|
|
lsls r0, r2
|
|
orrs r6, r0
|
|
lsls r0, r6, #0x10
|
|
lsrs r6, r0, #0x10
|
|
_08036942:
|
|
movs r0, #2
|
|
add r8, r0
|
|
movs r1, #1
|
|
add sb, r1
|
|
mov r2, sb
|
|
cmp r2, #5
|
|
ble _080368C6
|
|
ldr r4, _0803698C
|
|
ldr r0, [r4]
|
|
movs r1, #0xc1
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
strb r6, [r0]
|
|
ldr r0, [r4]
|
|
ldr r5, _08036990
|
|
adds r0, r0, r5
|
|
lsrs r1, r6, #8
|
|
strb r1, [r0]
|
|
ldr r0, _08036994
|
|
bl FlagGet
|
|
ldr r1, [r4]
|
|
adds r1, r1, r5
|
|
lsls r0, r0, #7
|
|
ldrb r2, [r1]
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08036988: .4byte 0x02024190
|
|
_0803698C: .4byte 0x02024140
|
|
_08036990: .4byte 0x00000183
|
|
_08036994: .4byte 0x000008D2
|
|
thumb_func_end sub_080368B0
|
|
|
|
thumb_func_start SetPlayerBerryDataInBattleStruct
|
|
SetPlayerBerryDataInBattleStruct: @ 0x08036998
|
|
push {r4, r5, r6, r7, lr}
|
|
ldr r0, _08036A00
|
|
ldr r5, [r0]
|
|
movs r0, #0xc2
|
|
lsls r0, r0, #1
|
|
adds r4, r5, r0
|
|
bl IsEnigmaBerryValid
|
|
cmp r0, #1
|
|
bne _08036A14
|
|
movs r2, #0
|
|
ldr r7, _08036A04
|
|
movs r1, #0xc6
|
|
lsls r1, r1, #1
|
|
adds r5, r5, r1
|
|
adds r6, r7, #0
|
|
ldr r3, _08036A08
|
|
_080369BA:
|
|
adds r0, r4, r2
|
|
ldr r1, [r6]
|
|
adds r1, r1, r3
|
|
adds r1, r1, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, #1
|
|
cmp r2, #5
|
|
ble _080369BA
|
|
adds r1, r4, r2
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
movs r2, #0
|
|
adds r3, r5, #0
|
|
ldr r6, _08036A04
|
|
ldr r5, _08036A0C
|
|
_080369DA:
|
|
adds r0, r3, r2
|
|
ldr r1, [r6]
|
|
adds r1, r1, r5
|
|
adds r1, r1, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, #1
|
|
cmp r2, #0x11
|
|
ble _080369DA
|
|
ldr r0, [r7]
|
|
ldr r1, _08036A10
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r4, #7]
|
|
ldr r0, [r7]
|
|
adds r1, #1
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
b _08036A54
|
|
.align 2, 0
|
|
_08036A00: .4byte 0x02024140
|
|
_08036A04: .4byte 0x03005AEC
|
|
_08036A08: .4byte 0x000031F8
|
|
_08036A0C: .4byte 0x00003214
|
|
_08036A10: .4byte 0x00003226
|
|
_08036A14:
|
|
movs r0, #0xaf
|
|
bl ItemIdToBerryType
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBerryInfo
|
|
adds r3, r0, #0
|
|
movs r2, #0
|
|
movs r0, #0xc6
|
|
lsls r0, r0, #1
|
|
adds r5, r5, r0
|
|
_08036A2C:
|
|
adds r0, r4, r2
|
|
adds r1, r3, r2
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, #1
|
|
cmp r2, #5
|
|
ble _08036A2C
|
|
adds r1, r4, r2
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
adds r0, r5, #0
|
|
movs r2, #0
|
|
adds r1, r0, #0
|
|
adds r1, #0x11
|
|
_08036A48:
|
|
strb r2, [r1]
|
|
subs r1, #1
|
|
cmp r1, r0
|
|
bge _08036A48
|
|
movs r0, #0
|
|
strb r0, [r4, #7]
|
|
_08036A54:
|
|
strb r0, [r4, #0x1a]
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end SetPlayerBerryDataInBattleStruct
|
|
|
|
thumb_func_start SetAllPlayersBerryData
|
|
SetAllPlayersBerryData: @ 0x08036A5C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
ldr r0, _08036B14
|
|
ldr r1, [r0]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08036A74
|
|
b _08036BA0
|
|
_08036A74:
|
|
bl IsEnigmaBerryValid
|
|
cmp r0, #1
|
|
bne _08036B30
|
|
movs r5, #0
|
|
ldr r3, _08036B18
|
|
ldr r0, _08036B1C
|
|
mov r8, r0
|
|
adds r6, r3, #0
|
|
mov r4, r8
|
|
ldr r2, _08036B20
|
|
adds r7, r3, #0
|
|
adds r7, #0x38
|
|
_08036A8E:
|
|
adds r1, r5, r6
|
|
ldr r0, [r4]
|
|
adds r0, r0, r2
|
|
adds r0, r0, r5
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r1, r5, r7
|
|
ldr r0, [r4]
|
|
adds r0, r0, r2
|
|
adds r0, r0, r5
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r5, #1
|
|
cmp r5, #5
|
|
ble _08036A8E
|
|
adds r1, r5, r3
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
adds r0, r3, #0
|
|
adds r0, #0x38
|
|
adds r0, r5, r0
|
|
movs r1, #1
|
|
rsbs r1, r1, #0
|
|
strb r1, [r0]
|
|
movs r5, #0
|
|
adds r7, r3, #0
|
|
adds r7, #8
|
|
ldr r4, _08036B1C
|
|
ldr r2, _08036B24
|
|
adds r6, r3, #0
|
|
adds r6, #0x40
|
|
_08036ACC:
|
|
adds r1, r5, r7
|
|
ldr r0, [r4]
|
|
adds r0, r0, r2
|
|
adds r0, r0, r5
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r1, r5, r6
|
|
ldr r0, [r4]
|
|
adds r0, r0, r2
|
|
adds r0, r0, r5
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r5, #1
|
|
cmp r5, #0x11
|
|
ble _08036ACC
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
ldr r2, _08036B28
|
|
adds r0, r0, r2
|
|
ldrb r1, [r0]
|
|
strb r1, [r3, #7]
|
|
ldrb r0, [r0]
|
|
adds r1, r3, #0
|
|
adds r1, #0x3f
|
|
strb r0, [r1]
|
|
mov r4, r8
|
|
ldr r0, [r4]
|
|
ldr r1, _08036B2C
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
strb r1, [r3, #0x1a]
|
|
ldrb r1, [r0]
|
|
adds r0, r3, #0
|
|
adds r0, #0x52
|
|
strb r1, [r0]
|
|
b _08036CF4
|
|
.align 2, 0
|
|
_08036B14: .4byte 0x02022C90
|
|
_08036B18: .4byte 0x020240A8
|
|
_08036B1C: .4byte 0x03005AEC
|
|
_08036B20: .4byte 0x000031F8
|
|
_08036B24: .4byte 0x00003214
|
|
_08036B28: .4byte 0x00003226
|
|
_08036B2C: .4byte 0x00003227
|
|
_08036B30:
|
|
movs r0, #0xaf
|
|
bl ItemIdToBerryType
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBerryInfo
|
|
adds r6, r0, #0
|
|
movs r5, #0
|
|
ldr r4, _08036B9C
|
|
adds r7, r4, #0
|
|
adds r7, #0x38
|
|
adds r3, r4, #0
|
|
_08036B4A:
|
|
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, #1
|
|
cmp r5, #5
|
|
ble _08036B4A
|
|
adds r1, r5, r3
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
adds r0, r3, #0
|
|
adds r0, #0x38
|
|
adds r0, r5, r0
|
|
movs r1, #1
|
|
rsbs r1, r1, #0
|
|
strb r1, [r0]
|
|
movs r5, #0
|
|
adds r4, r3, #0
|
|
adds r4, #8
|
|
movs r1, #0
|
|
adds r2, r3, #0
|
|
adds r2, #0x40
|
|
_08036B7C:
|
|
adds r0, r5, r4
|
|
strb r1, [r0]
|
|
adds r0, r5, r2
|
|
strb r1, [r0]
|
|
adds r5, #1
|
|
cmp r5, #0x11
|
|
ble _08036B7C
|
|
movs r1, #0
|
|
strb r1, [r3, #7]
|
|
adds r0, r3, #0
|
|
adds r0, #0x3f
|
|
strb r1, [r0]
|
|
strb r1, [r3, #0x1a]
|
|
adds r0, #0x13
|
|
strb r1, [r0]
|
|
b _08036CF4
|
|
.align 2, 0
|
|
_08036B9C: .4byte 0x020240A8
|
|
_08036BA0:
|
|
movs r0, #0x40
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08036C44
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
ands r1, r0
|
|
movs r2, #4
|
|
mov r8, r2
|
|
cmp r1, #0
|
|
beq _08036BBA
|
|
movs r4, #2
|
|
mov r8, r4
|
|
_08036BBA:
|
|
movs r5, #0
|
|
cmp r5, r8
|
|
blt _08036BC2
|
|
b _08036CF4
|
|
_08036BC2:
|
|
ldr r0, _08036C38
|
|
mov ip, r0
|
|
ldr r3, _08036C3C
|
|
adds r6, r3, #0
|
|
movs r1, #8
|
|
adds r1, r1, r6
|
|
mov sb, r1
|
|
_08036BD0:
|
|
lsls r1, r5, #8
|
|
ldr r0, _08036C40
|
|
adds r7, r1, r0
|
|
lsls r0, r5, #3
|
|
subs r0, r0, r5
|
|
lsls r0, r0, #2
|
|
add r0, ip
|
|
ldrb r3, [r0, #0x18]
|
|
movs r4, #0
|
|
adds r5, #1
|
|
mov sl, r5
|
|
lsls r1, r3, #3
|
|
subs r0, r1, r3
|
|
adds r5, r1, #0
|
|
lsls r0, r0, #2
|
|
adds r1, r0, r6
|
|
_08036BF0:
|
|
adds r0, r7, r4
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r1, #1
|
|
adds r4, #1
|
|
cmp r4, #5
|
|
ble _08036BF0
|
|
subs r0, r5, r3
|
|
lsls r0, r0, #2
|
|
adds r1, r4, r0
|
|
adds r1, r1, r6
|
|
movs r2, #0xff
|
|
strb r2, [r1]
|
|
movs r4, #0
|
|
mov r2, sb
|
|
adds r1, r0, r2
|
|
adds r2, r7, #0
|
|
adds r2, #8
|
|
_08036C14:
|
|
adds r0, r2, r4
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r1, #1
|
|
adds r4, #1
|
|
cmp r4, #0x11
|
|
ble _08036C14
|
|
subs r0, r5, r3
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r6
|
|
ldrb r1, [r7, #7]
|
|
strb r1, [r0, #7]
|
|
ldrb r1, [r7, #0x1a]
|
|
strb r1, [r0, #0x1a]
|
|
mov r5, sl
|
|
cmp r5, r8
|
|
blt _08036BD0
|
|
b _08036CF4
|
|
.align 2, 0
|
|
_08036C38: .4byte 0x020226A0
|
|
_08036C3C: .4byte 0x020240A8
|
|
_08036C40: .4byte 0x02022080
|
|
_08036C44:
|
|
movs r5, #0
|
|
ldr r4, _08036D04
|
|
mov sb, r4
|
|
_08036C4A:
|
|
lsls r0, r5, #8
|
|
ldr r1, _08036D08
|
|
adds r7, r0, r1
|
|
movs r4, #0
|
|
adds r2, r5, #1
|
|
mov sl, r2
|
|
lsls r0, r5, #3
|
|
mov r8, r0
|
|
adds r1, r5, #2
|
|
mov ip, r1
|
|
subs r1, r0, r5
|
|
mov r2, ip
|
|
lsls r0, r2, #3
|
|
subs r0, r0, r2
|
|
lsls r0, r0, #2
|
|
mov r2, sb
|
|
adds r3, r0, r2
|
|
lsls r1, r1, #2
|
|
adds r2, r1, r2
|
|
_08036C70:
|
|
adds r0, r7, r4
|
|
ldrb r1, [r0]
|
|
strb r1, [r2]
|
|
ldrb r0, [r0]
|
|
strb r0, [r3]
|
|
adds r3, #1
|
|
adds r2, #1
|
|
adds r4, #1
|
|
cmp r4, #5
|
|
ble _08036C70
|
|
mov r0, r8
|
|
subs r3, r0, r5
|
|
lsls r3, r3, #2
|
|
adds r1, r4, r3
|
|
add r1, sb
|
|
ldrb r0, [r1]
|
|
movs r2, #0xff
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
mov r0, ip
|
|
lsls r2, r0, #3
|
|
subs r2, r2, r0
|
|
lsls r2, r2, #2
|
|
adds r1, r4, r2
|
|
add r1, sb
|
|
ldrb r0, [r1]
|
|
movs r4, #0xff
|
|
orrs r0, r4
|
|
strb r0, [r1]
|
|
movs r4, #0
|
|
ldr r0, _08036D04
|
|
adds r0, #8
|
|
adds r2, r2, r0
|
|
adds r3, r3, r0
|
|
adds r6, r7, #0
|
|
adds r6, #8
|
|
_08036CB8:
|
|
adds r0, r6, r4
|
|
ldrb r1, [r0]
|
|
strb r1, [r3]
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
adds r2, #1
|
|
adds r3, #1
|
|
adds r4, #1
|
|
cmp r4, #0x11
|
|
ble _08036CB8
|
|
mov r0, r8
|
|
subs r2, r0, r5
|
|
lsls r2, r2, #2
|
|
add r2, sb
|
|
ldrb r0, [r7, #7]
|
|
strb r0, [r2, #7]
|
|
mov r1, ip
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
add r0, sb
|
|
ldrb r1, [r7, #7]
|
|
strb r1, [r0, #7]
|
|
ldrb r1, [r7, #0x1a]
|
|
strb r1, [r2, #0x1a]
|
|
ldrb r1, [r7, #0x1a]
|
|
strb r1, [r0, #0x1a]
|
|
mov r5, sl
|
|
cmp r5, #1
|
|
ble _08036C4A
|
|
_08036CF4:
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08036D04: .4byte 0x020240A8
|
|
_08036D08: .4byte 0x02022080
|
|
thumb_func_end SetAllPlayersBerryData
|
|
|
|
thumb_func_start sub_08036D0C
|
|
sub_08036D0C: @ 0x08036D0C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
lsls r1, r1, #0x18
|
|
lsrs r3, r1, #0x18
|
|
movs r6, #0
|
|
ldr r0, _08036D38
|
|
ldrh r2, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
mov ip, r0
|
|
cmp r2, r1
|
|
bne _08036D50
|
|
cmp r3, #0
|
|
bne _08036D40
|
|
ldr r0, _08036D3C
|
|
ldr r1, [r0]
|
|
movs r2, #0xc
|
|
b _08036D46
|
|
.align 2, 0
|
|
_08036D38: .4byte 0x0202207C
|
|
_08036D3C: .4byte 0x02022C90
|
|
_08036D40:
|
|
ldr r0, _08036D84
|
|
ldr r1, [r0]
|
|
movs r2, #8
|
|
_08036D46:
|
|
orrs r1, r2
|
|
str r1, [r0]
|
|
adds r0, r6, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
_08036D50:
|
|
cmp r6, #0
|
|
bne _08036DF4
|
|
movs r2, #0
|
|
cmp r2, r4
|
|
bge _08036D74
|
|
ldr r1, _08036D88
|
|
mov r8, r1
|
|
movs r5, #0x80
|
|
lsls r5, r5, #1
|
|
_08036D62:
|
|
adds r1, r1, r5
|
|
adds r2, #1
|
|
cmp r2, r4
|
|
bge _08036D74
|
|
mov r7, r8
|
|
ldrh r0, [r7]
|
|
ldrh r7, [r1]
|
|
cmp r0, r7
|
|
beq _08036D62
|
|
_08036D74:
|
|
cmp r2, r4
|
|
bne _08036D9C
|
|
cmp r3, #0
|
|
bne _08036D8C
|
|
ldr r0, _08036D84
|
|
ldr r1, [r0]
|
|
movs r2, #0xc
|
|
b _08036D92
|
|
.align 2, 0
|
|
_08036D84: .4byte 0x02022C90
|
|
_08036D88: .4byte 0x0202207C
|
|
_08036D8C:
|
|
ldr r0, _08036DE8
|
|
ldr r1, [r0]
|
|
movs r2, #8
|
|
_08036D92:
|
|
orrs r1, r2
|
|
str r1, [r0]
|
|
adds r0, r6, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
_08036D9C:
|
|
cmp r6, #0
|
|
bne _08036DF4
|
|
movs r2, #0
|
|
ldr r5, _08036DE8
|
|
cmp r2, r4
|
|
bge _08036DDE
|
|
mov r0, ip
|
|
ldrh r1, [r0]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #2
|
|
cmp r1, r0
|
|
beq _08036DD6
|
|
_08036DB4:
|
|
lsls r0, r2, #8
|
|
add r0, ip
|
|
ldrh r0, [r0]
|
|
movs r1, #0xc0
|
|
lsls r1, r1, #2
|
|
cmp r0, r1
|
|
bls _08036DC6
|
|
cmp r2, r3
|
|
bne _08036DDE
|
|
_08036DC6:
|
|
adds r2, #1
|
|
cmp r2, r4
|
|
bge _08036DDE
|
|
lsls r0, r2, #8
|
|
add r0, ip
|
|
ldrh r0, [r0]
|
|
cmp r0, r1
|
|
bne _08036DB4
|
|
_08036DD6:
|
|
cmp r2, r3
|
|
beq _08036DB4
|
|
cmp r2, r3
|
|
bge _08036DB4
|
|
_08036DDE:
|
|
cmp r2, r4
|
|
bne _08036DEC
|
|
ldr r0, [r5]
|
|
movs r1, #0xc
|
|
b _08036DF0
|
|
.align 2, 0
|
|
_08036DE8: .4byte 0x02022C90
|
|
_08036DEC:
|
|
ldr r0, [r5]
|
|
movs r1, #8
|
|
_08036DF0:
|
|
orrs r0, r1
|
|
str r0, [r5]
|
|
_08036DF4:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
thumb_func_end sub_08036D0C
|
|
|
|
thumb_func_start CB2_HandleStartBattle
|
|
CB2_HandleStartBattle: @ 0x08036E00
|
|
push {r4, r5, r6, lr}
|
|
bl RunTasks
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
bl GetMultiplayerId
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
ldr r0, _08036E38
|
|
adds r0, #0x25
|
|
strb r5, [r0]
|
|
movs r0, #1
|
|
adds r4, r5, #0
|
|
eors r4, r0
|
|
ldr r0, _08036E3C
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x12
|
|
bls _08036E2C
|
|
b _08037268
|
|
_08036E2C:
|
|
lsls r0, r0, #2
|
|
ldr r1, _08036E40
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08036E38: .4byte 0x02024118
|
|
_08036E3C: .4byte 0x02023FD6
|
|
_08036E40: .4byte 0x08036E44
|
|
_08036E44: @ jump table
|
|
.4byte _08036E90 @ case 0
|
|
.4byte _08036ED4 @ case 1
|
|
.4byte _08036F98 @ case 2
|
|
.4byte _0803702C @ case 3
|
|
.4byte _08037054 @ case 4
|
|
.4byte _08037248 @ case 5
|
|
.4byte _08037254 @ case 6
|
|
.4byte _08037084 @ case 7
|
|
.4byte _080370AC @ case 8
|
|
.4byte _08037248 @ case 9
|
|
.4byte _08037254 @ case 10
|
|
.4byte _080370DC @ case 11
|
|
.4byte _08037104 @ case 12
|
|
.4byte _08037248 @ case 13
|
|
.4byte _08037254 @ case 14
|
|
.4byte _08037134 @ case 15
|
|
.4byte _08037194 @ case 16
|
|
.4byte _080371BC @ case 17
|
|
.4byte _080371FC @ case 18
|
|
_08036E90:
|
|
bl IsDma3ManagerBusyWithBgCopy
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08036EBC
|
|
movs r0, #0
|
|
bl ShowBg
|
|
movs r0, #1
|
|
bl ShowBg
|
|
movs r0, #2
|
|
bl ShowBg
|
|
movs r0, #3
|
|
bl ShowBg
|
|
bl sub_0805EB30
|
|
ldr r1, _08036ECC
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
_08036EBC:
|
|
ldr r0, _08036ED0
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08036EC6
|
|
b _08037268
|
|
_08036EC6:
|
|
bl LoadWirelessStatusIndicatorSpriteGfx
|
|
b _08037268
|
|
.align 2, 0
|
|
_08036ECC: .4byte 0x02023FD6
|
|
_08036ED0: .4byte 0x0300319C
|
|
_08036ED4:
|
|
ldr r2, _08036F58
|
|
ldr r1, [r2]
|
|
movs r6, #2
|
|
adds r0, r1, #0
|
|
ands r0, r6
|
|
cmp r0, #0
|
|
beq _08036F78
|
|
ldr r0, _08036F5C
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08036EEC
|
|
b _08037268
|
|
_08036EEC:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08036F42
|
|
ldr r4, _08036F60
|
|
ldr r0, [r4]
|
|
movs r5, #0xc0
|
|
lsls r5, r5, #1
|
|
adds r0, r0, r5
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
ldr r0, [r4]
|
|
ldr r2, _08036F64
|
|
adds r1, r0, r2
|
|
movs r0, #3
|
|
strb r0, [r1]
|
|
bl sub_080368B0
|
|
bl SetPlayerBerryDataInBattleStruct
|
|
ldr r0, _08036F68
|
|
ldrh r1, [r0]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #4
|
|
cmp r1, r0
|
|
bne _08036F2C
|
|
ldr r0, _08036F6C
|
|
movs r1, #0
|
|
strh r1, [r0, #0x18]
|
|
movs r1, #1
|
|
strh r1, [r0, #0x34]
|
|
_08036F2C:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, [r4]
|
|
adds r1, r1, r5
|
|
movs r2, #0x20
|
|
bl SendBlock
|
|
ldr r0, _08036F70
|
|
strb r6, [r0]
|
|
_08036F42:
|
|
ldr r0, _08036F74
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08036F4C
|
|
b _08037268
|
|
_08036F4C:
|
|
movs r0, #0
|
|
movs r1, #0
|
|
bl CreateWirelessStatusIndicatorSprite
|
|
b _08037268
|
|
.align 2, 0
|
|
_08036F58: .4byte 0x02022C90
|
|
_08036F5C: .4byte 0x030031C4
|
|
_08036F60: .4byte 0x02024140
|
|
_08036F64: .4byte 0x00000181
|
|
_08036F68: .4byte 0x0203886A
|
|
_08036F6C: .4byte 0x020226A0
|
|
_08036F70: .4byte 0x02023FD6
|
|
_08036F74: .4byte 0x0300319C
|
|
_08036F78:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08036F88
|
|
movs r0, #4
|
|
orrs r1, r0
|
|
str r1, [r2]
|
|
_08036F88:
|
|
ldr r1, _08036F94
|
|
movs r0, #0xf
|
|
strb r0, [r1]
|
|
bl SetAllPlayersBerryData
|
|
b _08037268
|
|
.align 2, 0
|
|
_08036F94: .4byte 0x02023FD6
|
|
_08036F98:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #3
|
|
ands r1, r0
|
|
cmp r1, #3
|
|
beq _08036FA6
|
|
b _08037268
|
|
_08036FA6:
|
|
bl ResetBlockReceivedFlags
|
|
movs r0, #2
|
|
adds r1, r5, #0
|
|
bl sub_08036D0C
|
|
bl SetAllPlayersBerryData
|
|
ldr r0, _08037018
|
|
movs r1, #0
|
|
bl CreateTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _0803701C
|
|
lsls r2, r0, #2
|
|
adds r2, r2, r0
|
|
lsls r2, r2, #3
|
|
adds r2, r2, r1
|
|
movs r1, #0
|
|
movs r0, #0x87
|
|
lsls r0, r0, #1
|
|
strh r0, [r2, #0xa]
|
|
movs r0, #0x5a
|
|
strh r0, [r2, #0xc]
|
|
strh r1, [r2, #0x12]
|
|
ldr r0, _08037020
|
|
ldr r3, [r0]
|
|
movs r6, #0xc1
|
|
lsls r6, r6, #1
|
|
adds r0, r3, r6
|
|
ldrb r1, [r0]
|
|
adds r6, #1
|
|
adds r0, r3, r6
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #8
|
|
orrs r1, r0
|
|
strh r1, [r2, #0xe]
|
|
ldr r1, _08037024
|
|
lsls r4, r4, #8
|
|
adds r1, #2
|
|
adds r4, r4, r1
|
|
ldrh r0, [r4]
|
|
strh r0, [r2, #0x10]
|
|
lsls r0, r5, #8
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0]
|
|
bl sub_08185CE8
|
|
ldrh r0, [r4]
|
|
bl sub_08185CE8
|
|
bl SetDeoxysStats
|
|
ldr r1, _08037028
|
|
b _08037262
|
|
.align 2, 0
|
|
_08037018: .4byte 0x08035BC9
|
|
_0803701C: .4byte 0x03005B60
|
|
_08037020: .4byte 0x02024140
|
|
_08037024: .4byte 0x0202207C
|
|
_08037028: .4byte 0x02023FD6
|
|
_0803702C:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08037038
|
|
b _08037268
|
|
_08037038:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _0803704C
|
|
movs r2, #0xc8
|
|
bl SendBlock
|
|
ldr r1, _08037050
|
|
b _08037262
|
|
.align 2, 0
|
|
_0803704C: .4byte 0x02024190
|
|
_08037050: .4byte 0x02023FD6
|
|
_08037054:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #3
|
|
ands r1, r0
|
|
cmp r1, #3
|
|
beq _08037062
|
|
b _08037268
|
|
_08037062:
|
|
bl ResetBlockReceivedFlags
|
|
ldr r0, _08037078
|
|
lsls r1, r4, #8
|
|
ldr r2, _0803707C
|
|
adds r1, r1, r2
|
|
movs r2, #0xc8
|
|
bl memcpy
|
|
ldr r1, _08037080
|
|
b _08037262
|
|
.align 2, 0
|
|
_08037078: .4byte 0x020243E8
|
|
_0803707C: .4byte 0x0202207C
|
|
_08037080: .4byte 0x02023FD6
|
|
_08037084:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08037090
|
|
b _08037268
|
|
_08037090:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _080370A4
|
|
movs r2, #0xc8
|
|
bl SendBlock
|
|
ldr r1, _080370A8
|
|
b _08037262
|
|
.align 2, 0
|
|
_080370A4: .4byte 0x02024258
|
|
_080370A8: .4byte 0x02023FD6
|
|
_080370AC:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #3
|
|
ands r1, r0
|
|
cmp r1, #3
|
|
beq _080370BA
|
|
b _08037268
|
|
_080370BA:
|
|
bl ResetBlockReceivedFlags
|
|
ldr r0, _080370D0
|
|
lsls r1, r4, #8
|
|
ldr r2, _080370D4
|
|
adds r1, r1, r2
|
|
movs r2, #0xc8
|
|
bl memcpy
|
|
ldr r1, _080370D8
|
|
b _08037262
|
|
.align 2, 0
|
|
_080370D0: .4byte 0x020244B0
|
|
_080370D4: .4byte 0x0202207C
|
|
_080370D8: .4byte 0x02023FD6
|
|
_080370DC:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _080370E8
|
|
b _08037268
|
|
_080370E8:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _080370FC
|
|
movs r2, #0xc8
|
|
bl SendBlock
|
|
ldr r1, _08037100
|
|
b _08037262
|
|
.align 2, 0
|
|
_080370FC: .4byte 0x02024320
|
|
_08037100: .4byte 0x02023FD6
|
|
_08037104:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #3
|
|
ands r1, r0
|
|
cmp r1, #3
|
|
beq _08037112
|
|
b _08037268
|
|
_08037112:
|
|
bl ResetBlockReceivedFlags
|
|
ldr r0, _08037128
|
|
lsls r1, r4, #8
|
|
ldr r2, _0803712C
|
|
adds r1, r1, r2
|
|
movs r2, #0xc8
|
|
bl memcpy
|
|
ldr r1, _08037130
|
|
b _08037262
|
|
.align 2, 0
|
|
_08037128: .4byte 0x02024578
|
|
_0803712C: .4byte 0x0202207C
|
|
_08037130: .4byte 0x02023FD6
|
|
_08037134:
|
|
bl sub_08032600
|
|
bl sub_08184D04
|
|
ldr r2, _0803717C
|
|
movs r0, #0
|
|
strb r0, [r2, #1]
|
|
strb r0, [r2, #2]
|
|
ldr r0, _08037180
|
|
ldr r0, [r0]
|
|
movs r1, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803718E
|
|
movs r3, #0
|
|
ldr r1, _08037184
|
|
ldrb r0, [r1]
|
|
adds r5, r2, #0
|
|
cmp r0, #3
|
|
bne _08037172
|
|
movs r4, #0xff
|
|
adds r2, r1, #0
|
|
_08037160:
|
|
adds r2, #0x1c
|
|
adds r3, #1
|
|
cmp r3, #1
|
|
bgt _08037172
|
|
ldrh r1, [r2]
|
|
adds r0, r4, #0
|
|
ands r0, r1
|
|
cmp r0, #3
|
|
beq _08037160
|
|
_08037172:
|
|
cmp r3, #2
|
|
bne _08037188
|
|
movs r0, #0x10
|
|
strb r0, [r5]
|
|
b _08037268
|
|
.align 2, 0
|
|
_0803717C: .4byte 0x02023FD6
|
|
_08037180: .4byte 0x02022C90
|
|
_08037184: .4byte 0x020226A0
|
|
_08037188:
|
|
movs r0, #0x12
|
|
strb r0, [r5]
|
|
b _08037268
|
|
_0803718E:
|
|
movs r0, #0x12
|
|
strb r0, [r2]
|
|
b _08037268
|
|
_08037194:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08037268
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _080371B4
|
|
movs r2, #4
|
|
bl SendBlock
|
|
ldr r1, _080371B8
|
|
b _08037262
|
|
.align 2, 0
|
|
_080371B4: .4byte 0x0203B9F8
|
|
_080371B8: .4byte 0x02023FD6
|
|
_080371BC:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #3
|
|
ands r1, r0
|
|
cmp r1, #3
|
|
bne _08037268
|
|
bl ResetBlockReceivedFlags
|
|
ldr r0, _080371EC
|
|
ldr r0, [r0]
|
|
movs r1, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _080371E6
|
|
ldr r0, _080371F0
|
|
lsls r1, r4, #8
|
|
ldr r2, _080371F4
|
|
adds r1, r1, r2
|
|
movs r2, #4
|
|
bl memcpy
|
|
_080371E6:
|
|
ldr r1, _080371F8
|
|
b _08037262
|
|
.align 2, 0
|
|
_080371EC: .4byte 0x02022C90
|
|
_080371F0: .4byte 0x0203B9F8
|
|
_080371F4: .4byte 0x0202207C
|
|
_080371F8: .4byte 0x02023FD6
|
|
_080371FC:
|
|
ldr r0, _08037230
|
|
adds r1, r0, #1
|
|
bl BattleInitAllSprites
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08037268
|
|
ldr r2, _08037234
|
|
ldr r1, _08037238
|
|
ldr r0, [r1]
|
|
str r0, [r2]
|
|
ldr r0, _0803723C
|
|
str r0, [r1]
|
|
ldr r0, _08037240
|
|
bl SetMainCallback2
|
|
ldr r2, _08037244
|
|
ldr r1, [r2]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08037268
|
|
movs r0, #0x20
|
|
orrs r1, r0
|
|
str r1, [r2]
|
|
b _08037268
|
|
.align 2, 0
|
|
_08037230: .4byte 0x02023FD7
|
|
_08037234: .4byte 0x03005A60
|
|
_08037238: .4byte 0x03002360
|
|
_0803723C: .4byte 0x08039B35
|
|
_08037240: .4byte 0x080380FD
|
|
_08037244: .4byte 0x02022C90
|
|
_08037248:
|
|
ldr r0, _08037270
|
|
ldrb r1, [r0]
|
|
adds r1, #1
|
|
strb r1, [r0]
|
|
movs r1, #1
|
|
strb r1, [r0, #1]
|
|
_08037254:
|
|
ldr r1, _08037270
|
|
ldrb r0, [r1, #1]
|
|
subs r0, #1
|
|
strb r0, [r1, #1]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08037268
|
|
_08037262:
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
_08037268:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08037270: .4byte 0x02023FD6
|
|
thumb_func_end CB2_HandleStartBattle
|
|
|
|
thumb_func_start CB2_HandleStartMultiPartnerBattle
|
|
CB2_HandleStartMultiPartnerBattle: @ 0x08037274
|
|
push {r4, r5, r6, r7, lr}
|
|
bl RunTasks
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
bl GetMultiplayerId
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
ldr r0, _080372AC
|
|
adds r0, #0x25
|
|
strb r6, [r0]
|
|
movs r0, #1
|
|
adds r7, r6, #0
|
|
eors r7, r0
|
|
ldr r0, _080372B0
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x10
|
|
bls _080372A0
|
|
b _08037752
|
|
_080372A0:
|
|
lsls r0, r0, #2
|
|
ldr r1, _080372B4
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_080372AC: .4byte 0x02024118
|
|
_080372B0: .4byte 0x02023FD6
|
|
_080372B4: .4byte 0x080372B8
|
|
_080372B8: @ jump table
|
|
.4byte _080372FC @ case 0
|
|
.4byte _08037334 @ case 1
|
|
.4byte _08037414 @ case 2
|
|
.4byte _08037468 @ case 3
|
|
.4byte _0803748C @ case 4
|
|
.4byte _08037508 @ case 5
|
|
.4byte _0803752C @ case 6
|
|
.4byte _080375A8 @ case 7
|
|
.4byte _080375C4 @ case 8
|
|
.4byte _080375F4 @ case 9
|
|
.4byte _08037610 @ case 10
|
|
.4byte _0803763C @ case 11
|
|
.4byte _08037658 @ case 12
|
|
.4byte _08037684 @ case 13
|
|
.4byte _080376B6 @ case 14
|
|
.4byte _080376D8 @ case 15
|
|
.4byte _0803771C @ case 16
|
|
_080372FC:
|
|
bl IsDma3ManagerBusyWithBgCopy
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08037328
|
|
movs r0, #0
|
|
bl ShowBg
|
|
movs r0, #1
|
|
bl ShowBg
|
|
movs r0, #2
|
|
bl ShowBg
|
|
movs r0, #3
|
|
bl ShowBg
|
|
bl sub_0805EB30
|
|
ldr r1, _080373D0
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
_08037328:
|
|
ldr r0, _080373D4
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _08037334
|
|
bl LoadWirelessStatusIndicatorSpriteGfx
|
|
_08037334:
|
|
ldr r2, _080373D8
|
|
ldr r1, [r2]
|
|
movs r3, #2
|
|
adds r0, r1, #0
|
|
ands r0, r3
|
|
cmp r0, #0
|
|
beq _080373F4
|
|
ldr r0, _080373DC
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803734C
|
|
b _08037752
|
|
_0803734C:
|
|
ldr r4, _080373E0
|
|
movs r0, #0
|
|
strh r0, [r4, #0x18]
|
|
strh r3, [r4, #0x34]
|
|
adds r1, r4, #0
|
|
adds r1, #0x50
|
|
movs r0, #1
|
|
strh r0, [r1]
|
|
adds r1, #0x1c
|
|
movs r0, #3
|
|
strh r0, [r1]
|
|
adds r0, r4, #0
|
|
adds r0, #0x40
|
|
ldr r1, _080373E4
|
|
ldrh r1, [r1]
|
|
bl GetFrontierTrainerName
|
|
adds r0, r4, #0
|
|
adds r0, #0x5c
|
|
ldr r1, _080373E8
|
|
ldrh r1, [r1]
|
|
bl GetFrontierTrainerName
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _080373BC
|
|
ldr r4, _080373EC
|
|
ldr r0, [r4]
|
|
movs r5, #0xc0
|
|
lsls r5, r5, #1
|
|
adds r0, r0, r5
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
ldr r0, [r4]
|
|
ldr r2, _080373F0
|
|
adds r1, r0, r2
|
|
movs r0, #3
|
|
strb r0, [r1]
|
|
bl sub_080368B0
|
|
bl SetPlayerBerryDataInBattleStruct
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, [r4]
|
|
adds r1, r1, r5
|
|
movs r2, #0x20
|
|
bl SendBlock
|
|
ldr r1, _080373D0
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
_080373BC:
|
|
ldr r0, _080373D4
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _080373C6
|
|
b _08037752
|
|
_080373C6:
|
|
movs r0, #0
|
|
movs r1, #0
|
|
bl CreateWirelessStatusIndicatorSprite
|
|
b _08037752
|
|
.align 2, 0
|
|
_080373D0: .4byte 0x02023FD6
|
|
_080373D4: .4byte 0x0300319C
|
|
_080373D8: .4byte 0x02022C90
|
|
_080373DC: .4byte 0x030031C4
|
|
_080373E0: .4byte 0x020226A0
|
|
_080373E4: .4byte 0x0203886A
|
|
_080373E8: .4byte 0x0203886C
|
|
_080373EC: .4byte 0x02024140
|
|
_080373F0: .4byte 0x00000181
|
|
_080373F4:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08037404
|
|
movs r0, #4
|
|
orrs r1, r0
|
|
str r1, [r2]
|
|
_08037404:
|
|
ldr r1, _08037410
|
|
movs r0, #0xd
|
|
strb r0, [r1]
|
|
bl SetAllPlayersBerryData
|
|
b _08037752
|
|
.align 2, 0
|
|
_08037410: .4byte 0x02023FD6
|
|
_08037414:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #3
|
|
ands r1, r0
|
|
cmp r1, #3
|
|
beq _08037422
|
|
b _08037752
|
|
_08037422:
|
|
bl ResetBlockReceivedFlags
|
|
movs r0, #2
|
|
adds r1, r6, #0
|
|
bl sub_08036D0C
|
|
bl SetAllPlayersBerryData
|
|
ldr r0, _08037460
|
|
movs r1, #0
|
|
bl CreateTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r2, _08037464
|
|
lsls r1, r0, #2
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #3
|
|
adds r1, r1, r2
|
|
movs r2, #0
|
|
movs r0, #0x87
|
|
lsls r0, 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 _08037702
|
|
.align 2, 0
|
|
_08037460: .4byte 0x08035BC9
|
|
_08037464: .4byte 0x03005B60
|
|
_08037468:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08037474
|
|
b _08037752
|
|
_08037474:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _08037488
|
|
_0803747E:
|
|
movs r2, #0xc8
|
|
bl SendBlock
|
|
b _08037702
|
|
.align 2, 0
|
|
_08037488: .4byte 0x02024190
|
|
_0803748C:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #3
|
|
ands r1, r0
|
|
cmp r1, #3
|
|
beq _0803749A
|
|
b _08037752
|
|
_0803749A:
|
|
bl ResetBlockReceivedFlags
|
|
ldr r0, _080374D4
|
|
lsls r1, r6, #3
|
|
subs r1, r1, r6
|
|
lsls r1, r1, #2
|
|
adds r1, r1, r0
|
|
ldrh r0, [r1, #0x18]
|
|
cmp r0, #0
|
|
beq _080374E0
|
|
ldr r4, _080374D8
|
|
lsls r1, r7, #8
|
|
ldr r5, _080374DC
|
|
adds r1, r1, r5
|
|
adds r0, r4, #0
|
|
movs r2, #0xc8
|
|
bl memcpy
|
|
movs r0, #0x96
|
|
lsls r0, r0, #1
|
|
adds r4, r4, r0
|
|
lsls r1, r6, #8
|
|
adds r1, r1, r5
|
|
adds r0, r4, #0
|
|
movs r2, #0xc8
|
|
bl memcpy
|
|
b _08037702
|
|
.align 2, 0
|
|
_080374D4: .4byte 0x020226A0
|
|
_080374D8: .4byte 0x02024190
|
|
_080374DC: .4byte 0x0202207C
|
|
_080374E0:
|
|
ldr r4, _08037500
|
|
lsls r1, r6, #8
|
|
ldr r5, _08037504
|
|
adds r1, r1, r5
|
|
adds r0, r4, #0
|
|
movs r2, #0xc8
|
|
bl memcpy
|
|
movs r2, #0x96
|
|
lsls r2, r2, #1
|
|
adds r4, r4, r2
|
|
lsls r1, r7, #8
|
|
adds r1, r1, r5
|
|
adds r0, r4, #0
|
|
movs r2, #0xc8
|
|
b _080376FE
|
|
.align 2, 0
|
|
_08037500: .4byte 0x02024190
|
|
_08037504: .4byte 0x0202207C
|
|
_08037508:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08037514
|
|
b _08037752
|
|
_08037514:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _08037528
|
|
movs r2, #0x64
|
|
bl SendBlock
|
|
b _08037702
|
|
.align 2, 0
|
|
_08037528: .4byte 0x02024258
|
|
_0803752C:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #3
|
|
ands r1, r0
|
|
cmp r1, #3
|
|
beq _0803753A
|
|
b _08037752
|
|
_0803753A:
|
|
bl ResetBlockReceivedFlags
|
|
ldr r0, _08037574
|
|
lsls r1, r6, #3
|
|
subs r1, r1, r6
|
|
lsls r1, r1, #2
|
|
adds r1, r1, r0
|
|
ldrh r0, [r1, #0x18]
|
|
cmp r0, #0
|
|
beq _08037580
|
|
ldr r4, _08037578
|
|
lsls r1, r7, #8
|
|
ldr r5, _0803757C
|
|
adds r1, r1, r5
|
|
adds r0, r4, #0
|
|
movs r2, #0x64
|
|
bl memcpy
|
|
movs r0, #0x96
|
|
lsls r0, r0, #1
|
|
adds r4, r4, r0
|
|
lsls r1, r6, #8
|
|
adds r1, r1, r5
|
|
adds r0, r4, #0
|
|
movs r2, #0x64
|
|
bl memcpy
|
|
b _08037702
|
|
.align 2, 0
|
|
_08037574: .4byte 0x020226A0
|
|
_08037578: .4byte 0x02024258
|
|
_0803757C: .4byte 0x0202207C
|
|
_08037580:
|
|
ldr r4, _080375A0
|
|
lsls r1, r6, #8
|
|
ldr r5, _080375A4
|
|
adds r1, r1, r5
|
|
adds r0, r4, #0
|
|
movs r2, #0x64
|
|
bl memcpy
|
|
movs r2, #0x96
|
|
lsls r2, r2, #1
|
|
adds r4, r4, r2
|
|
lsls r1, r7, #8
|
|
adds r1, r1, r5
|
|
adds r0, r4, #0
|
|
movs r2, #0x64
|
|
b _080376FE
|
|
.align 2, 0
|
|
_080375A0: .4byte 0x02024258
|
|
_080375A4: .4byte 0x0202207C
|
|
_080375A8:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _080375B4
|
|
b _08037752
|
|
_080375B4:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _080375C0
|
|
b _0803747E
|
|
.align 2, 0
|
|
_080375C0: .4byte 0x020243E8
|
|
_080375C4:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #3
|
|
ands r1, r0
|
|
cmp r1, #3
|
|
beq _080375D2
|
|
b _08037752
|
|
_080375D2:
|
|
bl ResetBlockReceivedFlags
|
|
bl GetMultiplayerId
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _080375E2
|
|
b _08037702
|
|
_080375E2:
|
|
ldr r0, _080375EC
|
|
ldr r1, _080375F0
|
|
movs r2, #0xc8
|
|
b _080376FE
|
|
.align 2, 0
|
|
_080375EC: .4byte 0x020243E8
|
|
_080375F0: .4byte 0x0202207C
|
|
_080375F4:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08037600
|
|
b _08037752
|
|
_08037600:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _0803760C
|
|
b _0803747E
|
|
.align 2, 0
|
|
_0803760C: .4byte 0x020244B0
|
|
_08037610:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #3
|
|
ands r1, r0
|
|
cmp r1, #3
|
|
beq _0803761E
|
|
b _08037752
|
|
_0803761E:
|
|
bl ResetBlockReceivedFlags
|
|
bl GetMultiplayerId
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08037702
|
|
ldr r0, _08037634
|
|
ldr r1, _08037638
|
|
movs r2, #0xc8
|
|
b _080376FE
|
|
.align 2, 0
|
|
_08037634: .4byte 0x020244B0
|
|
_08037638: .4byte 0x0202207C
|
|
_0803763C:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08037648
|
|
b _08037752
|
|
_08037648:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _08037654
|
|
b _0803747E
|
|
.align 2, 0
|
|
_08037654: .4byte 0x02024578
|
|
_08037658:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #3
|
|
ands r1, r0
|
|
cmp r1, #3
|
|
bne _08037752
|
|
bl ResetBlockReceivedFlags
|
|
bl GetMultiplayerId
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08037702
|
|
ldr r0, _0803767C
|
|
ldr r1, _08037680
|
|
movs r2, #0xc8
|
|
b _080376FE
|
|
.align 2, 0
|
|
_0803767C: .4byte 0x02024578
|
|
_08037680: .4byte 0x0202207C
|
|
_08037684:
|
|
bl sub_08032600
|
|
bl sub_08184D04
|
|
ldr r2, _080376A8
|
|
movs r0, #0
|
|
strb r0, [r2, #1]
|
|
strb r0, [r2, #2]
|
|
ldr r0, _080376AC
|
|
ldr r0, [r0]
|
|
movs r1, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080376B0
|
|
movs r0, #0xe
|
|
strb r0, [r2]
|
|
b _08037752
|
|
.align 2, 0
|
|
_080376A8: .4byte 0x02023FD6
|
|
_080376AC: .4byte 0x02022C90
|
|
_080376B0:
|
|
movs r0, #0x10
|
|
strb r0, [r2]
|
|
b _08037752
|
|
_080376B6:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08037752
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _080376D4
|
|
movs r2, #4
|
|
bl SendBlock
|
|
b _08037702
|
|
.align 2, 0
|
|
_080376D4: .4byte 0x0203B9F8
|
|
_080376D8:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #3
|
|
ands r1, r0
|
|
cmp r1, #3
|
|
bne _08037752
|
|
bl ResetBlockReceivedFlags
|
|
ldr r0, _0803770C
|
|
ldr r0, [r0]
|
|
movs r1, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08037702
|
|
ldr r0, _08037710
|
|
lsls r1, r7, #8
|
|
ldr r2, _08037714
|
|
adds r1, r1, r2
|
|
movs r2, #4
|
|
_080376FE:
|
|
bl memcpy
|
|
_08037702:
|
|
ldr r1, _08037718
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
b _08037752
|
|
.align 2, 0
|
|
_0803770C: .4byte 0x02022C90
|
|
_08037710: .4byte 0x0203B9F8
|
|
_08037714: .4byte 0x0202207C
|
|
_08037718: .4byte 0x02023FD6
|
|
_0803771C:
|
|
ldr r0, _08037758
|
|
adds r1, r0, #1
|
|
bl BattleInitAllSprites
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08037752
|
|
bl sub_08165F94
|
|
ldr r2, _0803775C
|
|
ldr r1, _08037760
|
|
ldr r0, [r1]
|
|
str r0, [r2]
|
|
ldr r0, _08037764
|
|
str r0, [r1]
|
|
ldr r0, _08037768
|
|
bl SetMainCallback2
|
|
ldr r2, _0803776C
|
|
ldr r1, [r2]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08037752
|
|
movs r0, #0x20
|
|
orrs r1, r0
|
|
str r1, [r2]
|
|
_08037752:
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08037758: .4byte 0x02023FD7
|
|
_0803775C: .4byte 0x03005A60
|
|
_08037760: .4byte 0x03002360
|
|
_08037764: .4byte 0x08039B35
|
|
_08037768: .4byte 0x080380FD
|
|
_0803776C: .4byte 0x02022C90
|
|
thumb_func_end CB2_HandleStartMultiPartnerBattle
|
|
|
|
thumb_func_start sub_08037770
|
|
sub_08037770: @ 0x08037770
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
mov sl, r0
|
|
movs r7, #0
|
|
ldr r6, _08037820
|
|
mov sb, r6
|
|
_08037786:
|
|
mov r0, sl
|
|
adds r1, r7, r0
|
|
movs r0, #0x64
|
|
adds r4, r1, #0
|
|
muls r4, r0, r4
|
|
ldr r0, _08037824
|
|
adds r4, r4, r0
|
|
adds r0, r4, #0
|
|
movs r1, #0xb
|
|
bl GetMonData
|
|
lsls r5, r7, #5
|
|
strh r0, [r6]
|
|
adds r0, r4, #0
|
|
movs r1, #0xc
|
|
bl GetMonData
|
|
strh r0, [r6, #2]
|
|
movs r0, #4
|
|
add r0, sb
|
|
mov r8, r0
|
|
adds r2, r5, r0
|
|
adds r0, r4, #0
|
|
movs r1, #2
|
|
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, sb
|
|
adds r1, #0x14
|
|
adds r5, 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 r6, #0x20
|
|
adds r7, #1
|
|
cmp r7, #2
|
|
ble _08037786
|
|
ldr r0, _08037828
|
|
ldr r0, [r0]
|
|
mov r1, r8
|
|
subs r1, #4
|
|
movs r2, #0x60
|
|
bl memcpy
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08037820: .4byte 0x02022C9C
|
|
_08037824: .4byte 0x02024190
|
|
_08037828: .4byte 0x02022CFC
|
|
thumb_func_end sub_08037770
|
|
|
|
thumb_func_start CB2_PreInitMultiBattle
|
|
CB2_PreInitMultiBattle: @ 0x0803782C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #4
|
|
movs r0, #4
|
|
mov sb, r0
|
|
movs r4, #0xf
|
|
ldr r6, _08037890
|
|
ldr r0, [r6]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08037852
|
|
movs r1, #2
|
|
mov sb, r1
|
|
movs r4, #3
|
|
_08037852:
|
|
bl GetMultiplayerId
|
|
lsls r0, r0, #0x18
|
|
lsrs r7, r0, #0x18
|
|
ldr r0, _08037894
|
|
adds r0, #0x25
|
|
movs r2, #0
|
|
mov r8, r2
|
|
strb r7, [r0]
|
|
ldr r0, _08037898
|
|
ldr r0, [r0]
|
|
adds r1, r0, #0
|
|
adds r1, #0xb4
|
|
str r1, [sp]
|
|
adds r0, #0xac
|
|
mov sl, r0
|
|
bl RunTasks
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
ldr r5, _0803789C
|
|
ldrb r0, [r5]
|
|
cmp r0, #1
|
|
beq _080378F4
|
|
cmp r0, #1
|
|
bgt _080378A0
|
|
cmp r0, #0
|
|
beq _080378AE
|
|
b _08037A5A
|
|
.align 2, 0
|
|
_08037890: .4byte 0x02022C90
|
|
_08037894: .4byte 0x02024118
|
|
_08037898: .4byte 0x02024140
|
|
_0803789C: .4byte 0x02023FD6
|
|
_080378A0:
|
|
cmp r0, #2
|
|
bne _080378A6
|
|
b _080379B4
|
|
_080378A6:
|
|
cmp r0, #3
|
|
bne _080378AC
|
|
b _080379EE
|
|
_080378AC:
|
|
b _08037A5A
|
|
_080378AE:
|
|
ldr r0, _080378EC
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _080378B8
|
|
b _08037A5A
|
|
_080378B8:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _080378C4
|
|
b _08037A5A
|
|
_080378C4:
|
|
ldr r4, _080378F0
|
|
movs r0, #0x60
|
|
bl Alloc
|
|
str r0, [r4]
|
|
movs r0, #0
|
|
bl sub_08037770
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, [r4]
|
|
movs r2, #0x60
|
|
bl SendBlock
|
|
ldrb r0, [r5]
|
|
adds r0, #1
|
|
strb r0, [r5]
|
|
b _08037A5A
|
|
.align 2, 0
|
|
_080378EC: .4byte 0x030031C4
|
|
_080378F0: .4byte 0x02022CFC
|
|
_080378F4:
|
|
bl GetBlockReceivedStatus
|
|
adds r1, r4, #0
|
|
ands r1, r0
|
|
cmp r1, r4
|
|
beq _08037902
|
|
b _08037A5A
|
|
_08037902:
|
|
bl ResetBlockReceivedFlags
|
|
movs r5, #0
|
|
cmp r8, sb
|
|
bge _0803797E
|
|
lsls r0, r7, #3
|
|
subs r0, r0, r7
|
|
lsls r6, r0, #2
|
|
mov r8, r5
|
|
ldr r4, _08037940
|
|
_08037916:
|
|
cmp r5, r7
|
|
beq _0803796E
|
|
mov r2, sb
|
|
cmp r2, #4
|
|
bne _08037964
|
|
ldr r2, _08037944
|
|
mov r1, r8
|
|
adds r0, r1, r2
|
|
ldrh r1, [r0, #0x18]
|
|
movs r3, #1
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08037948
|
|
adds r0, r6, r2
|
|
ldrh r1, [r0, #0x18]
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08037954
|
|
b _0803796E
|
|
.align 2, 0
|
|
_08037940: .4byte 0x0202207C
|
|
_08037944: .4byte 0x020226A0
|
|
_08037948:
|
|
adds r0, r6, r2
|
|
ldrh r1, [r0, #0x18]
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803796E
|
|
_08037954:
|
|
ldr r0, _08037960
|
|
adds r1, r4, #0
|
|
movs r2, #0x60
|
|
bl memcpy
|
|
b _0803796E
|
|
.align 2, 0
|
|
_08037960: .4byte 0x02022C9C
|
|
_08037964:
|
|
ldr r0, _080379A0
|
|
adds r1, r4, #0
|
|
movs r2, #0x60
|
|
bl memcpy
|
|
_0803796E:
|
|
movs r2, #0x80
|
|
lsls r2, r2, #1
|
|
adds r4, r4, r2
|
|
movs r0, #0x1c
|
|
add r8, r0
|
|
adds r5, #1
|
|
cmp r5, sb
|
|
blt _08037916
|
|
_0803797E:
|
|
ldr r1, _080379A4
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
ldr r1, _080379A8
|
|
ldr r0, [r1, #8]
|
|
ldr r2, [sp]
|
|
str r0, [r2]
|
|
ldr r0, _080379AC
|
|
ldr r0, [r0]
|
|
mov r2, sl
|
|
str r0, [r2]
|
|
ldr r0, _080379B0
|
|
str r0, [r1, #8]
|
|
bl sub_081B8DF0
|
|
b _08037A5A
|
|
.align 2, 0
|
|
_080379A0: .4byte 0x02022C9C
|
|
_080379A4: .4byte 0x02023FD6
|
|
_080379A8: .4byte 0x03002360
|
|
_080379AC: .4byte 0x02022C90
|
|
_080379B0: .4byte 0x0803782D
|
|
_080379B4:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08037A5A
|
|
ldr r0, _080379E0
|
|
ldrb r1, [r0, #7]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08037A5A
|
|
ldrb r0, [r5]
|
|
adds r0, #1
|
|
strb r0, [r5]
|
|
ldr r0, _080379E4
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _080379E8
|
|
bl sub_0800A8D4
|
|
b _08037A5A
|
|
.align 2, 0
|
|
_080379E0: .4byte 0x02037C74
|
|
_080379E4: .4byte 0x0300319C
|
|
_080379E8:
|
|
bl sub_0800A7F8
|
|
b _08037A5A
|
|
_080379EE:
|
|
ldr r0, _08037A24
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _08037A34
|
|
bl sub_08010000
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08037A5A
|
|
mov r1, sl
|
|
ldr r0, [r1]
|
|
str r0, [r6]
|
|
ldr r1, _08037A28
|
|
ldr r2, [sp]
|
|
ldr r0, [r2]
|
|
str r0, [r1, #8]
|
|
ldr r0, _08037A2C
|
|
bl SetMainCallback2
|
|
ldr r4, _08037A30
|
|
ldr r0, [r4]
|
|
bl Free
|
|
mov r0, r8
|
|
str r0, [r4]
|
|
b _08037A5A
|
|
.align 2, 0
|
|
_08037A24: .4byte 0x0300319C
|
|
_08037A28: .4byte 0x03002360
|
|
_08037A2C: .4byte 0x08036629
|
|
_08037A30: .4byte 0x02022CFC
|
|
_08037A34:
|
|
ldr r0, _08037A6C
|
|
ldrb r5, [r0]
|
|
cmp r5, #0
|
|
bne _08037A5A
|
|
mov r1, sl
|
|
ldr r0, [r1]
|
|
str r0, [r6]
|
|
ldr r1, _08037A70
|
|
ldr r2, [sp]
|
|
ldr r0, [r2]
|
|
str r0, [r1, #8]
|
|
ldr r0, _08037A74
|
|
bl SetMainCallback2
|
|
ldr r4, _08037A78
|
|
ldr r0, [r4]
|
|
bl Free
|
|
str r5, [r4]
|
|
_08037A5A:
|
|
add sp, #4
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08037A6C: .4byte 0x030031C4
|
|
_08037A70: .4byte 0x03002360
|
|
_08037A74: .4byte 0x08036629
|
|
_08037A78: .4byte 0x02022CFC
|
|
thumb_func_end CB2_PreInitMultiBattle
|
|
|
|
thumb_func_start CB2_PreInitIngamePlayerPartnerBattle
|
|
CB2_PreInitIngamePlayerPartnerBattle: @ 0x08037A7C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
ldr r0, _08037AAC
|
|
ldr r0, [r0]
|
|
movs r1, #0xb4
|
|
adds r1, r1, r0
|
|
mov r8, r1
|
|
adds r7, r0, #0
|
|
adds r7, #0xac
|
|
bl RunTasks
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
ldr r5, _08037AB0
|
|
ldrb r0, [r5]
|
|
cmp r0, #0
|
|
beq _08037AB4
|
|
cmp r0, #1
|
|
beq _08037AF4
|
|
b _08037B26
|
|
.align 2, 0
|
|
_08037AAC: .4byte 0x02024140
|
|
_08037AB0: .4byte 0x02023FD6
|
|
_08037AB4:
|
|
ldr r4, _08037AE4
|
|
movs r0, #0x60
|
|
bl Alloc
|
|
str r0, [r4]
|
|
movs r0, #3
|
|
bl sub_08037770
|
|
ldrb r0, [r5]
|
|
adds r0, #1
|
|
strb r0, [r5]
|
|
ldr r1, _08037AE8
|
|
ldr r0, [r1, #8]
|
|
mov r2, r8
|
|
str r0, [r2]
|
|
ldr r0, _08037AEC
|
|
ldr r0, [r0]
|
|
str r0, [r7]
|
|
ldr r0, _08037AF0
|
|
str r0, [r1, #8]
|
|
bl sub_081B8DF0
|
|
b _08037B26
|
|
.align 2, 0
|
|
_08037AE4: .4byte 0x02022CFC
|
|
_08037AE8: .4byte 0x03002360
|
|
_08037AEC: .4byte 0x02022C90
|
|
_08037AF0: .4byte 0x08037A7D
|
|
_08037AF4:
|
|
ldr r0, _08037B30
|
|
ldrb r1, [r0, #7]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
cmp r6, #0
|
|
bne _08037B26
|
|
movs r0, #2
|
|
strb r0, [r5]
|
|
ldr r1, _08037B34
|
|
ldr r0, [r7]
|
|
str r0, [r1]
|
|
ldr r1, _08037B38
|
|
mov r2, r8
|
|
ldr r0, [r2]
|
|
str r0, [r1, #8]
|
|
ldr r0, _08037B3C
|
|
bl SetMainCallback2
|
|
ldr r4, _08037B40
|
|
ldr r0, [r4]
|
|
bl Free
|
|
str r6, [r4]
|
|
_08037B26:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08037B30: .4byte 0x02037C74
|
|
_08037B34: .4byte 0x02022C90
|
|
_08037B38: .4byte 0x03002360
|
|
_08037B3C: .4byte 0x08036629
|
|
_08037B40: .4byte 0x02022CFC
|
|
thumb_func_end CB2_PreInitIngamePlayerPartnerBattle
|
|
|
|
thumb_func_start CB2_HandleStartMultiBattle
|
|
CB2_HandleStartMultiBattle: @ 0x08037B44
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, #4
|
|
bl GetMultiplayerId
|
|
lsls r0, r0, #0x18
|
|
lsrs r7, r0, #0x18
|
|
ldr r0, _08037B7C
|
|
adds r0, #0x25
|
|
strb r7, [r0]
|
|
bl RunTasks
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
ldr r0, _08037B80
|
|
ldrb r0, [r0]
|
|
cmp r0, #0xa
|
|
bls _08037B70
|
|
b _080380D4
|
|
_08037B70:
|
|
lsls r0, r0, #2
|
|
ldr r1, _08037B84
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08037B7C: .4byte 0x02024118
|
|
_08037B80: .4byte 0x02023FD6
|
|
_08037B84: .4byte 0x08037B88
|
|
_08037B88: @ jump table
|
|
.4byte _08037BB4 @ case 0
|
|
.4byte _08037BF8 @ case 1
|
|
.4byte _08037CA0 @ case 2
|
|
.4byte _08037D76 @ case 3
|
|
.4byte _08037D9C @ case 4
|
|
.4byte _08037E90 @ case 5
|
|
.4byte _08037EB4 @ case 6
|
|
.4byte _08037FA8 @ case 7
|
|
.4byte _08038008 @ case 8
|
|
.4byte _08038048 @ case 9
|
|
.4byte _08038098 @ case 10
|
|
_08037BB4:
|
|
bl IsDma3ManagerBusyWithBgCopy
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08037BE0
|
|
movs r0, #0
|
|
bl ShowBg
|
|
movs r0, #1
|
|
bl ShowBg
|
|
movs r0, #2
|
|
bl ShowBg
|
|
movs r0, #3
|
|
bl ShowBg
|
|
bl sub_0805EB30
|
|
ldr r1, _08037BF0
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
_08037BE0:
|
|
ldr r0, _08037BF4
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08037BEA
|
|
b _080380D4
|
|
_08037BEA:
|
|
bl LoadWirelessStatusIndicatorSpriteGfx
|
|
b _080380D4
|
|
.align 2, 0
|
|
_08037BF0: .4byte 0x02023FD6
|
|
_08037BF4: .4byte 0x0300319C
|
|
_08037BF8:
|
|
ldr r2, _08037C68
|
|
ldr r1, [r2]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08037C80
|
|
ldr r0, _08037C6C
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08037C0E
|
|
b _080380D4
|
|
_08037C0E:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08037C52
|
|
ldr r4, _08037C70
|
|
ldr r0, [r4]
|
|
movs r5, #0xc0
|
|
lsls r5, r5, #1
|
|
adds r0, r0, r5
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
ldr r0, [r4]
|
|
ldr r2, _08037C74
|
|
adds r1, r0, r2
|
|
movs r0, #3
|
|
strb r0, [r1]
|
|
bl sub_080368B0
|
|
bl SetPlayerBerryDataInBattleStruct
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, [r4]
|
|
adds r1, r1, r5
|
|
movs r2, #0x20
|
|
bl SendBlock
|
|
ldr r1, _08037C78
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
_08037C52:
|
|
ldr r0, _08037C7C
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08037C5C
|
|
b _080380D4
|
|
_08037C5C:
|
|
movs r0, #0
|
|
movs r1, #0
|
|
bl CreateWirelessStatusIndicatorSprite
|
|
b _080380D4
|
|
.align 2, 0
|
|
_08037C68: .4byte 0x02022C90
|
|
_08037C6C: .4byte 0x030031C4
|
|
_08037C70: .4byte 0x02024140
|
|
_08037C74: .4byte 0x00000181
|
|
_08037C78: .4byte 0x02023FD6
|
|
_08037C7C: .4byte 0x0300319C
|
|
_08037C80:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08037C90
|
|
movs r0, #4
|
|
orrs r1, r0
|
|
str r1, [r2]
|
|
_08037C90:
|
|
ldr r1, _08037C9C
|
|
movs r0, #7
|
|
strb r0, [r1]
|
|
bl SetAllPlayersBerryData
|
|
b _080380D4
|
|
.align 2, 0
|
|
_08037C9C: .4byte 0x02023FD6
|
|
_08037CA0:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #0xf
|
|
ands r1, r0
|
|
cmp r1, #0xf
|
|
beq _08037CAE
|
|
b _080380D4
|
|
_08037CAE:
|
|
bl ResetBlockReceivedFlags
|
|
movs r0, #4
|
|
adds r1, r7, #0
|
|
bl sub_08036D0C
|
|
bl SetAllPlayersBerryData
|
|
bl SetDeoxysStats
|
|
ldr r0, _08037D14
|
|
movs r1, #0
|
|
bl CreateTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
ldr r1, _08037D18
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r2
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
movs r2, #0
|
|
movs r1, #0x87
|
|
lsls r1, 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, _08037D1C
|
|
adds r4, r0, #0
|
|
adds r5, r1, #2
|
|
movs r7, #0x3f
|
|
movs r6, #3
|
|
_08037CF4:
|
|
ldrh r0, [r5]
|
|
str r2, [sp]
|
|
bl sub_08185CE8
|
|
ldr r0, _08037D20
|
|
ldr r2, [sp]
|
|
adds r0, r2, r0
|
|
ldrh r0, [r0, #0x18]
|
|
cmp r0, #1
|
|
beq _08037D36
|
|
cmp r0, #1
|
|
bgt _08037D24
|
|
cmp r0, #0
|
|
beq _08037D2E
|
|
b _08037D5C
|
|
.align 2, 0
|
|
_08037D14: .4byte 0x08035BC9
|
|
_08037D18: .4byte 0x03005B60
|
|
_08037D1C: .4byte 0x0202207C
|
|
_08037D20: .4byte 0x020226A0
|
|
_08037D24:
|
|
cmp r0, #2
|
|
beq _08037D3E
|
|
cmp r0, #3
|
|
beq _08037D4E
|
|
b _08037D5C
|
|
_08037D2E:
|
|
ldrh r0, [r5]
|
|
adds r1, r7, #0
|
|
ands r1, r0
|
|
b _08037D46
|
|
_08037D36:
|
|
ldrh r0, [r5]
|
|
adds r1, r7, #0
|
|
ands r1, r0
|
|
b _08037D56
|
|
_08037D3E:
|
|
ldrh r0, [r5]
|
|
adds r1, r7, #0
|
|
ands r1, r0
|
|
lsls r1, r1, #6
|
|
_08037D46:
|
|
ldrh r0, [r4, #0xe]
|
|
orrs r1, r0
|
|
strh r1, [r4, #0xe]
|
|
b _08037D5C
|
|
_08037D4E:
|
|
ldrh r0, [r5]
|
|
adds r1, r7, #0
|
|
ands r1, r0
|
|
lsls r1, r1, #6
|
|
_08037D56:
|
|
ldrh r0, [r4, #0x10]
|
|
orrs r1, r0
|
|
strh r1, [r4, #0x10]
|
|
_08037D5C:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #1
|
|
adds r5, r5, r0
|
|
adds r2, #0x1c
|
|
subs r6, #1
|
|
cmp r6, #0
|
|
bge _08037CF4
|
|
bl ZeroEnemyPartyMons
|
|
ldr r1, _08037D94
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
_08037D76:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08037D82
|
|
b _080380D4
|
|
_08037D82:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _08037D98
|
|
movs r2, #0xc8
|
|
bl SendBlock
|
|
b _08038082
|
|
.align 2, 0
|
|
_08037D94: .4byte 0x02023FD6
|
|
_08037D98: .4byte 0x02024190
|
|
_08037D9C:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #0xf
|
|
ands r1, r0
|
|
cmp r1, #0xf
|
|
beq _08037DAA
|
|
b _080380D4
|
|
_08037DAA:
|
|
bl ResetBlockReceivedFlags
|
|
movs r6, #0
|
|
lsls r0, r7, #3
|
|
subs r0, r0, r7
|
|
lsls r0, r0, #2
|
|
mov r8, r0
|
|
ldr r4, _08037DD4
|
|
movs r5, #0
|
|
_08037DBC:
|
|
cmp r6, r7
|
|
bne _08037DF0
|
|
ldr r0, _08037DD8
|
|
adds r0, r5, r0
|
|
ldrh r0, [r0, #0x18]
|
|
cmp r0, #2
|
|
bgt _08037DDC
|
|
cmp r0, #1
|
|
bge _08037DE8
|
|
cmp r0, #0
|
|
beq _08037DE0
|
|
b _08037E7A
|
|
.align 2, 0
|
|
_08037DD4: .4byte 0x0202207C
|
|
_08037DD8: .4byte 0x020226A0
|
|
_08037DDC:
|
|
cmp r0, #3
|
|
bne _08037E7A
|
|
_08037DE0:
|
|
ldr r0, _08037DE4
|
|
b _08037E60
|
|
.align 2, 0
|
|
_08037DE4: .4byte 0x02024190
|
|
_08037DE8:
|
|
ldr r0, _08037DEC
|
|
b _08037E60
|
|
.align 2, 0
|
|
_08037DEC: .4byte 0x020242BC
|
|
_08037DF0:
|
|
ldr r2, _08037E10
|
|
adds r0, r5, r2
|
|
ldrh r1, [r0, #0x18]
|
|
movs r3, #1
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08037E14
|
|
mov r1, r8
|
|
adds r0, r1, r2
|
|
ldrh r1, [r0, #0x18]
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08037E22
|
|
b _08037E48
|
|
.align 2, 0
|
|
_08037E10: .4byte 0x020226A0
|
|
_08037E14:
|
|
mov r1, r8
|
|
adds r0, r1, r2
|
|
ldrh r1, [r0, #0x18]
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08037E48
|
|
_08037E22:
|
|
adds r0, r5, r2
|
|
ldrh r0, [r0, #0x18]
|
|
cmp r0, #2
|
|
bgt _08037E34
|
|
cmp r0, #1
|
|
bge _08037E40
|
|
cmp r0, #0
|
|
beq _08037E38
|
|
b _08037E7A
|
|
_08037E34:
|
|
cmp r0, #3
|
|
bne _08037E7A
|
|
_08037E38:
|
|
ldr r0, _08037E3C
|
|
b _08037E60
|
|
.align 2, 0
|
|
_08037E3C: .4byte 0x02024190
|
|
_08037E40:
|
|
ldr r0, _08037E44
|
|
b _08037E60
|
|
.align 2, 0
|
|
_08037E44: .4byte 0x020242BC
|
|
_08037E48:
|
|
adds r0, r5, r2
|
|
ldrh r0, [r0, #0x18]
|
|
cmp r0, #2
|
|
bgt _08037E5A
|
|
cmp r0, #1
|
|
bge _08037E70
|
|
cmp r0, #0
|
|
beq _08037E5E
|
|
b _08037E7A
|
|
_08037E5A:
|
|
cmp r0, #3
|
|
bne _08037E7A
|
|
_08037E5E:
|
|
ldr r0, _08037E6C
|
|
_08037E60:
|
|
adds r1, r4, #0
|
|
movs r2, #0xc8
|
|
bl memcpy
|
|
b _08037E7A
|
|
.align 2, 0
|
|
_08037E6C: .4byte 0x020243E8
|
|
_08037E70:
|
|
ldr r0, _08037E8C
|
|
adds r1, r4, #0
|
|
movs r2, #0xc8
|
|
bl memcpy
|
|
_08037E7A:
|
|
movs r2, #0x80
|
|
lsls r2, r2, #1
|
|
adds r4, r4, r2
|
|
adds r5, #0x1c
|
|
adds r6, #1
|
|
cmp r6, #3
|
|
ble _08037DBC
|
|
b _08038082
|
|
.align 2, 0
|
|
_08037E8C: .4byte 0x02024514
|
|
_08037E90:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08037E9C
|
|
b _080380D4
|
|
_08037E9C:
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _08037EB0
|
|
movs r2, #0x64
|
|
bl SendBlock
|
|
b _08038082
|
|
.align 2, 0
|
|
_08037EB0: .4byte 0x02024258
|
|
_08037EB4:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #0xf
|
|
ands r1, r0
|
|
cmp r1, #0xf
|
|
beq _08037EC2
|
|
b _080380D4
|
|
_08037EC2:
|
|
bl ResetBlockReceivedFlags
|
|
movs r6, #0
|
|
lsls r0, r7, #3
|
|
subs r0, r0, r7
|
|
lsls r0, r0, #2
|
|
mov r8, r0
|
|
ldr r4, _08037EEC
|
|
movs r5, #0
|
|
_08037ED4:
|
|
cmp r6, r7
|
|
bne _08037F08
|
|
ldr r0, _08037EF0
|
|
adds r0, r5, r0
|
|
ldrh r0, [r0, #0x18]
|
|
cmp r0, #2
|
|
bgt _08037EF4
|
|
cmp r0, #1
|
|
bge _08037F00
|
|
cmp r0, #0
|
|
beq _08037EF8
|
|
b _08037F92
|
|
.align 2, 0
|
|
_08037EEC: .4byte 0x0202207C
|
|
_08037EF0: .4byte 0x020226A0
|
|
_08037EF4:
|
|
cmp r0, #3
|
|
bne _08037F92
|
|
_08037EF8:
|
|
ldr r0, _08037EFC
|
|
b _08037F78
|
|
.align 2, 0
|
|
_08037EFC: .4byte 0x02024258
|
|
_08037F00:
|
|
ldr r0, _08037F04
|
|
b _08037F78
|
|
.align 2, 0
|
|
_08037F04: .4byte 0x02024384
|
|
_08037F08:
|
|
ldr r2, _08037F28
|
|
adds r0, r5, r2
|
|
ldrh r1, [r0, #0x18]
|
|
movs r3, #1
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08037F2C
|
|
mov r1, r8
|
|
adds r0, r1, r2
|
|
ldrh r1, [r0, #0x18]
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08037F3A
|
|
b _08037F60
|
|
.align 2, 0
|
|
_08037F28: .4byte 0x020226A0
|
|
_08037F2C:
|
|
mov r1, r8
|
|
adds r0, r1, r2
|
|
ldrh r1, [r0, #0x18]
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08037F60
|
|
_08037F3A:
|
|
adds r0, r5, r2
|
|
ldrh r0, [r0, #0x18]
|
|
cmp r0, #2
|
|
bgt _08037F4C
|
|
cmp r0, #1
|
|
bge _08037F58
|
|
cmp r0, #0
|
|
beq _08037F50
|
|
b _08037F92
|
|
_08037F4C:
|
|
cmp r0, #3
|
|
bne _08037F92
|
|
_08037F50:
|
|
ldr r0, _08037F54
|
|
b _08037F78
|
|
.align 2, 0
|
|
_08037F54: .4byte 0x02024258
|
|
_08037F58:
|
|
ldr r0, _08037F5C
|
|
b _08037F78
|
|
.align 2, 0
|
|
_08037F5C: .4byte 0x02024384
|
|
_08037F60:
|
|
adds r0, r5, r2
|
|
ldrh r0, [r0, #0x18]
|
|
cmp r0, #2
|
|
bgt _08037F72
|
|
cmp r0, #1
|
|
bge _08037F88
|
|
cmp r0, #0
|
|
beq _08037F76
|
|
b _08037F92
|
|
_08037F72:
|
|
cmp r0, #3
|
|
bne _08037F92
|
|
_08037F76:
|
|
ldr r0, _08037F84
|
|
_08037F78:
|
|
adds r1, r4, #0
|
|
movs r2, #0x64
|
|
bl memcpy
|
|
b _08037F92
|
|
.align 2, 0
|
|
_08037F84: .4byte 0x020244B0
|
|
_08037F88:
|
|
ldr r0, _08037FA4
|
|
adds r1, r4, #0
|
|
movs r2, #0x64
|
|
bl memcpy
|
|
_08037F92:
|
|
movs r2, #0x80
|
|
lsls r2, r2, #1
|
|
adds r4, r4, r2
|
|
adds r5, #0x1c
|
|
adds r6, #1
|
|
cmp r6, #3
|
|
ble _08037ED4
|
|
b _08038082
|
|
.align 2, 0
|
|
_08037FA4: .4byte 0x020245DC
|
|
_08037FA8:
|
|
bl sub_08032600
|
|
bl sub_08184D04
|
|
ldr r3, _08037FF0
|
|
movs r0, #0
|
|
strb r0, [r3, #1]
|
|
strb r0, [r3, #2]
|
|
ldr r0, _08037FF4
|
|
ldr r0, [r0]
|
|
movs r1, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08038002
|
|
movs r6, #0
|
|
ldr r0, _08037FF8
|
|
ldrb r1, [r0]
|
|
adds r4, r3, #0
|
|
adds r2, r0, #0
|
|
cmp r1, #3
|
|
bne _08037FE6
|
|
movs r3, #0xff
|
|
_08037FD4:
|
|
adds r2, #0x1c
|
|
adds r6, #1
|
|
cmp r6, #3
|
|
bgt _08037FE6
|
|
ldrh r1, [r2]
|
|
adds r0, r3, #0
|
|
ands r0, r1
|
|
cmp r0, #3
|
|
beq _08037FD4
|
|
_08037FE6:
|
|
cmp r6, #4
|
|
bne _08037FFC
|
|
movs r0, #8
|
|
strb r0, [r4]
|
|
b _080380D4
|
|
.align 2, 0
|
|
_08037FF0: .4byte 0x02023FD6
|
|
_08037FF4: .4byte 0x02022C90
|
|
_08037FF8: .4byte 0x020226A0
|
|
_08037FFC:
|
|
movs r0, #0xa
|
|
strb r0, [r4]
|
|
b _080380D4
|
|
_08038002:
|
|
movs r0, #0xa
|
|
strb r0, [r3]
|
|
b _080380D4
|
|
_08038008:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _080380D4
|
|
ldr r0, _0803803C
|
|
ldr r4, [r0]
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #1
|
|
adds r4, r4, r0
|
|
ldr r0, _08038040
|
|
ldr r0, [r0]
|
|
str r0, [r4]
|
|
ldr r0, _08038044
|
|
ldr r0, [r0]
|
|
str r0, [r4, #4]
|
|
bl bitmask_all_link_players_but_self
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
adds r1, r4, #0
|
|
movs r2, #8
|
|
bl SendBlock
|
|
b _08038082
|
|
.align 2, 0
|
|
_0803803C: .4byte 0x02024140
|
|
_08038040: .4byte 0x02022C90
|
|
_08038044: .4byte 0x0203B9F8
|
|
_08038048:
|
|
bl GetBlockReceivedStatus
|
|
movs r1, #0xf
|
|
ands r1, r0
|
|
cmp r1, #0xf
|
|
bne _080380D4
|
|
bl ResetBlockReceivedFlags
|
|
movs r2, #0
|
|
b _08038062
|
|
_0803805C:
|
|
adds r0, r2, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
_08038062:
|
|
cmp r2, #3
|
|
bhi _08038082
|
|
ldr r4, _0803808C
|
|
lsls r3, r2, #8
|
|
adds r0, r3, r4
|
|
ldrh r0, [r0]
|
|
movs r1, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803805C
|
|
adds r1, r4, #4
|
|
adds r1, r3, r1
|
|
ldr r0, _08038090
|
|
movs r2, #4
|
|
bl memcpy
|
|
_08038082:
|
|
ldr r1, _08038094
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
b _080380D4
|
|
.align 2, 0
|
|
_0803808C: .4byte 0x0202207C
|
|
_08038090: .4byte 0x0203B9F8
|
|
_08038094: .4byte 0x02023FD6
|
|
_08038098:
|
|
ldr r0, _080380E0
|
|
adds r1, r0, #1
|
|
bl BattleInitAllSprites
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _080380D4
|
|
ldr r2, _080380E4
|
|
ldr r1, _080380E8
|
|
ldr r0, [r1]
|
|
str r0, [r2]
|
|
ldr r0, _080380EC
|
|
str r0, [r1]
|
|
ldr r0, _080380F0
|
|
bl SetMainCallback2
|
|
ldr r3, _080380F4
|
|
ldr r2, [r3]
|
|
movs r0, #2
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _080380D4
|
|
ldr r0, _080380F8
|
|
movs r4, #0x80
|
|
lsls r4, r4, #4
|
|
adds r1, r4, #0
|
|
strh r1, [r0]
|
|
movs r0, #0x20
|
|
orrs r2, r0
|
|
str r2, [r3]
|
|
_080380D4:
|
|
add sp, #4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080380E0: .4byte 0x02023FD7
|
|
_080380E4: .4byte 0x03005A60
|
|
_080380E8: .4byte 0x03002360
|
|
_080380EC: .4byte 0x08039B35
|
|
_080380F0: .4byte 0x080380FD
|
|
_080380F4: .4byte 0x02022C90
|
|
_080380F8: .4byte 0x0203886A
|
|
thumb_func_end CB2_HandleStartMultiBattle
|
|
|
|
thumb_func_start BattleMainCB2
|
|
BattleMainCB2: @ 0x080380FC
|
|
push {lr}
|
|
sub sp, #4
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
bl RunTextPrinters
|
|
bl UpdatePaletteFade
|
|
bl RunTasks
|
|
ldr r0, _08038164
|
|
ldrh r1, [r0, #0x2c]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803815E
|
|
ldr r0, _08038168
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0x11
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803815E
|
|
bl sub_081861A8
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803815E
|
|
ldr r2, _0803816C
|
|
ldr r1, _08038170
|
|
movs r0, #5
|
|
strb r0, [r1]
|
|
movs r0, #5
|
|
strh r0, [r2]
|
|
bl ResetPaletteFadeControl
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
movs r1, #0
|
|
str r1, [sp]
|
|
movs r2, #0
|
|
movs r3, #0x10
|
|
bl BeginNormalPaletteFade
|
|
ldr r0, _08038174
|
|
bl SetMainCallback2
|
|
_0803815E:
|
|
add sp, #4
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08038164: .4byte 0x03002360
|
|
_08038168: .4byte 0x02022C90
|
|
_0803816C: .4byte 0x02037290
|
|
_08038170: .4byte 0x02023FDE
|
|
_08038174: .4byte 0x080381C1
|
|
thumb_func_end BattleMainCB2
|
|
|
|
thumb_func_start FreeRestoreBattleData
|
|
FreeRestoreBattleData: @ 0x08038178
|
|
push {lr}
|
|
ldr r1, _080381B0
|
|
ldr r0, _080381B4
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldr r2, _080381B8
|
|
movs r0, #3
|
|
strb r0, [r2, #0x15]
|
|
ldr r0, _080381BC
|
|
adds r1, r1, r0
|
|
ldrb r2, [r1]
|
|
movs r0, #3
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
bl ZeroEnemyPartyMons
|
|
movs r0, #0x5a
|
|
bl m4aSongNumStop
|
|
bl FreeMonSpritesGfx
|
|
bl FreeBattleSpritesData
|
|
bl FreeBattleResources
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080381B0: .4byte 0x03002360
|
|
_080381B4: .4byte 0x03005A60
|
|
_080381B8: .4byte 0x020397C8
|
|
_080381BC: .4byte 0x00000439
|
|
thumb_func_end FreeRestoreBattleData
|
|
|
|
thumb_func_start CB2_QuitRecordedBattle
|
|
CB2_QuitRecordedBattle: @ 0x080381C0
|
|
push {lr}
|
|
bl UpdatePaletteFade
|
|
ldr r0, _080381F4
|
|
ldrb r1, [r0, #7]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _080381EE
|
|
ldr r0, _080381F8
|
|
bl m4aMPlayStop
|
|
ldr r0, _080381FC
|
|
bl m4aMPlayStop
|
|
bl FreeRestoreBattleData
|
|
bl FreeAllWindowBuffers
|
|
ldr r0, _08038200
|
|
ldr r0, [r0, #8]
|
|
bl SetMainCallback2
|
|
_080381EE:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080381F4: .4byte 0x02037C74
|
|
_080381F8: .4byte 0x03007510
|
|
_080381FC: .4byte 0x03007550
|
|
_08038200: .4byte 0x03002360
|
|
thumb_func_end CB2_QuitRecordedBattle
|
|
|
|
thumb_func_start sub_08038204
|
|
sub_08038204: @ 0x08038204
|
|
movs r1, #0
|
|
strh r1, [r0, #0x2e]
|
|
ldr r1, _08038210
|
|
str r1, [r0, #0x1c]
|
|
bx lr
|
|
.align 2, 0
|
|
_08038210: .4byte 0x08038215
|
|
thumb_func_end sub_08038204
|
|
|
|
thumb_func_start sub_08038214
|
|
sub_08038214: @ 0x08038214
|
|
push {r4, r5, lr}
|
|
adds r3, r0, #0
|
|
ldr r5, _0803822C
|
|
movs r0, #0x2e
|
|
ldrsh r1, [r3, r0]
|
|
cmp r1, #1
|
|
beq _08038248
|
|
cmp r1, #1
|
|
bgt _08038230
|
|
cmp r1, #0
|
|
beq _08038236
|
|
b _080382B8
|
|
.align 2, 0
|
|
_0803822C: .4byte 0x0201C000
|
|
_08038230:
|
|
cmp r1, #2
|
|
beq _080382A4
|
|
b _080382B8
|
|
_08038236:
|
|
ldrh r0, [r3, #0x2e]
|
|
adds r0, #1
|
|
strh r0, [r3, #0x2e]
|
|
strh r1, [r3, #0x30]
|
|
ldr r0, _080382A0
|
|
strh r0, [r3, #0x32]
|
|
strh r1, [r3, #0x34]
|
|
movs r0, #1
|
|
strh r0, [r3, #0x36]
|
|
_08038248:
|
|
ldrh r0, [r3, #0x36]
|
|
subs r0, #1
|
|
strh r0, [r3, #0x36]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne _080382B8
|
|
movs r0, #2
|
|
strh r0, [r3, #0x36]
|
|
movs r4, #0x30
|
|
ldrsh r2, [r3, r4]
|
|
movs r0, #0x34
|
|
ldrsh r1, [r3, r0]
|
|
lsls r1, r1, #5
|
|
adds r2, r2, r1
|
|
movs r4, #0x32
|
|
ldrsh r0, [r3, r4]
|
|
subs r0, r0, r1
|
|
movs r4, #0x3d
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r5
|
|
lsls r2, r2, #1
|
|
adds r2, r2, r5
|
|
movs r1, #0x1c
|
|
_08038276:
|
|
strh r4, [r2]
|
|
strh r4, [r0]
|
|
adds r0, #4
|
|
adds r2, #4
|
|
subs r1, #2
|
|
cmp r1, #0
|
|
bge _08038276
|
|
ldrh r0, [r3, #0x34]
|
|
adds r0, #1
|
|
strh r0, [r3, #0x34]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
cmp r0, #0x15
|
|
bne _080382B8
|
|
ldrh r0, [r3, #0x2e]
|
|
adds r0, #1
|
|
strh r0, [r3, #0x2e]
|
|
movs r0, #0x20
|
|
strh r0, [r3, #0x30]
|
|
b _080382B8
|
|
.align 2, 0
|
|
_080382A0: .4byte 0x00000281
|
|
_080382A4:
|
|
ldrh r0, [r3, #0x30]
|
|
subs r0, #1
|
|
strh r0, [r3, #0x30]
|
|
lsls r0, r0, #0x10
|
|
asrs r0, r0, #0x10
|
|
cmp r0, #0x14
|
|
bne _080382B8
|
|
ldr r0, _080382C0
|
|
bl SetMainCallback2
|
|
_080382B8:
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080382C0: .4byte 0x080365B5
|
|
thumb_func_end sub_08038214
|
|
|
|
thumb_func_start CreateNPCTrainerParty
|
|
CreateNPCTrainerParty: @ 0x080382C4
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x24
|
|
str r0, [sp, #0x10]
|
|
lsls r1, r1, #0x10
|
|
lsrs r3, r1, #0x10
|
|
lsls r2, r2, #0x18
|
|
lsrs r2, r2, #0x18
|
|
movs r0, #0
|
|
mov sb, r0
|
|
movs r0, #0x80
|
|
lsls r0, r0, #3
|
|
cmp r3, r0
|
|
bne _080382EA
|
|
movs r0, #0
|
|
b _08038696
|
|
_080382EA:
|
|
ldr r4, _08038328
|
|
ldr r0, [r4]
|
|
ldr r1, _0803832C
|
|
ands r0, r1
|
|
lsls r3, r3, #5
|
|
str r3, [sp, #0x20]
|
|
cmp r0, #8
|
|
beq _080382FC
|
|
b _0803868E
|
|
_080382FC:
|
|
cmp r2, #1
|
|
bne _08038304
|
|
bl ZeroEnemyPartyMons
|
|
_08038304:
|
|
ldr r0, [r4]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08038334
|
|
ldr r0, _08038330
|
|
ldr r1, [sp, #0x20]
|
|
adds r2, r1, r0
|
|
ldrb r1, [r2, #0x18]
|
|
movs r3, #3
|
|
str r3, [sp, #0x18]
|
|
adds r4, r0, #0
|
|
cmp r1, #3
|
|
bhi _08038340
|
|
adds r2, r1, #0
|
|
str r2, [sp, #0x18]
|
|
b _08038340
|
|
.align 2, 0
|
|
_08038328: .4byte 0x02022C90
|
|
_0803832C: .4byte 0x043F0908
|
|
_08038330: .4byte 0x082E383C
|
|
_08038334:
|
|
ldr r1, _0803835C
|
|
ldr r2, [sp, #0x20]
|
|
adds r0, r2, r1
|
|
ldrb r0, [r0, #0x18]
|
|
str r0, [sp, #0x18]
|
|
adds r4, r1, #0
|
|
_08038340:
|
|
movs r3, #0
|
|
str r3, [sp, #0x14]
|
|
ldr r0, [sp, #0x18]
|
|
cmp r3, r0
|
|
blt _0803834C
|
|
b _0803867E
|
|
_0803834C:
|
|
ldr r2, [sp, #0x20]
|
|
adds r1, r2, r4
|
|
ldrb r0, [r1, #0x12]
|
|
cmp r0, #1
|
|
bne _08038360
|
|
movs r3, #0x80
|
|
mov sl, r3
|
|
b _08038372
|
|
.align 2, 0
|
|
_0803835C: .4byte 0x082E383C
|
|
_08038360:
|
|
ldrb r1, [r1, #2]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
movs r1, #0x88
|
|
mov sl, r1
|
|
cmp r0, #0
|
|
beq _08038372
|
|
movs r2, #0x78
|
|
mov sl, r2
|
|
_08038372:
|
|
movs r6, #0
|
|
ldr r2, [sp, #0x20]
|
|
adds r1, r4, #4
|
|
adds r0, r2, r1
|
|
ldrb r0, [r0]
|
|
ldr r3, [sp, #0x14]
|
|
adds r3, #1
|
|
str r3, [sp, #0x1c]
|
|
cmp r0, #0xff
|
|
beq _0803839E
|
|
adds r3, r1, #0
|
|
_08038388:
|
|
adds r1, r2, #0
|
|
adds r0, r6, r2
|
|
adds r0, r0, r3
|
|
ldrb r0, [r0]
|
|
add sb, r0
|
|
adds r6, #1
|
|
adds r1, r6, r1
|
|
adds r1, r1, r3
|
|
ldrb r0, [r1]
|
|
cmp r0, #0xff
|
|
bne _08038388
|
|
_0803839E:
|
|
ldr r1, [sp, #0x20]
|
|
adds r0, r1, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, #1
|
|
beq _0803844C
|
|
cmp r0, #1
|
|
bgt _080383B2
|
|
cmp r0, #0
|
|
beq _080383C0
|
|
b _08038670
|
|
_080383B2:
|
|
cmp r0, #2
|
|
bne _080383B8
|
|
b _08038510
|
|
_080383B8:
|
|
cmp r0, #3
|
|
bne _080383BE
|
|
b _080385A8
|
|
_080383BE:
|
|
b _08038670
|
|
_080383C0:
|
|
adds r0, r4, #0
|
|
adds r0, #0x1c
|
|
ldr r2, [sp, #0x20]
|
|
adds r0, r2, r0
|
|
ldr r4, [r0]
|
|
movs r6, #0
|
|
ldr r3, [sp, #0x14]
|
|
lsls r2, r3, #3
|
|
adds r0, r2, r4
|
|
ldrh r1, [r0, #4]
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
ldr r1, _08038448
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
adds r5, r2, #0
|
|
cmp r0, #0xff
|
|
beq _08038406
|
|
adds r3, r1, #0
|
|
_080383E8:
|
|
adds r0, r2, r4
|
|
ldrh r0, [r0, #4]
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #1
|
|
adds r0, r6, r1
|
|
adds r0, r0, r3
|
|
ldrb r0, [r0]
|
|
add sb, r0
|
|
adds r6, #1
|
|
adds r1, r6, r1
|
|
adds r1, r1, r3
|
|
ldrb r0, [r1]
|
|
cmp r0, #0xff
|
|
bne _080383E8
|
|
_08038406:
|
|
mov r2, sb
|
|
lsls r0, r2, #8
|
|
add sl, r0
|
|
adds r4, r5, r4
|
|
ldrh r1, [r4]
|
|
lsls r0, r1, #5
|
|
subs r0, r0, r1
|
|
movs r1, #0xff
|
|
bl __divsi3
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
ldr r3, [sp, #0x14]
|
|
movs r1, #0x64
|
|
adds r0, r3, #0
|
|
muls r0, r1, r0
|
|
ldr r2, [sp, #0x10]
|
|
adds r0, r2, r0
|
|
ldrh r1, [r4, #4]
|
|
ldrb r2, [r4, #2]
|
|
movs r3, #1
|
|
str r3, [sp]
|
|
mov r3, sl
|
|
str r3, [sp, #4]
|
|
movs r3, #2
|
|
str r3, [sp, #8]
|
|
movs r3, #0
|
|
str r3, [sp, #0xc]
|
|
adds r3, r6, #0
|
|
bl CreateMon
|
|
b _08038670
|
|
.align 2, 0
|
|
_08038448: .4byte 0x082EA31C
|
|
_0803844C:
|
|
adds r0, r4, #0
|
|
adds r0, #0x1c
|
|
ldr r1, [sp, #0x20]
|
|
adds r0, r1, r0
|
|
ldr r7, [r0]
|
|
movs r6, #0
|
|
ldr r3, [sp, #0x14]
|
|
lsls r2, r3, #4
|
|
adds r0, r2, r7
|
|
ldrh r1, [r0, #4]
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
ldr r1, _08038508
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
mov r8, r2
|
|
cmp r0, #0xff
|
|
beq _08038492
|
|
adds r3, r1, #0
|
|
_08038474:
|
|
adds r0, r2, r7
|
|
ldrh r0, [r0, #4]
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #1
|
|
adds r0, r6, r1
|
|
adds r0, r0, r3
|
|
ldrb r0, [r0]
|
|
add sb, r0
|
|
adds r6, #1
|
|
adds r1, r6, r1
|
|
adds r1, r1, r3
|
|
ldrb r0, [r1]
|
|
cmp r0, #0xff
|
|
bne _08038474
|
|
_08038492:
|
|
mov r2, sb
|
|
lsls r0, r2, #8
|
|
add sl, r0
|
|
mov r3, r8
|
|
adds r4, r3, r7
|
|
ldrh r1, [r4]
|
|
lsls r0, r1, #5
|
|
subs r0, r0, r1
|
|
movs r1, #0xff
|
|
bl __divsi3
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
ldr r0, [sp, #0x14]
|
|
movs r1, #0x64
|
|
adds r5, r0, #0
|
|
muls r5, r1, r5
|
|
ldr r2, [sp, #0x10]
|
|
adds r5, r2, r5
|
|
ldrh r1, [r4, #4]
|
|
ldrb r2, [r4, #2]
|
|
movs r0, #1
|
|
str r0, [sp]
|
|
mov r3, sl
|
|
str r3, [sp, #4]
|
|
movs r0, #2
|
|
str r0, [sp, #8]
|
|
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, #6
|
|
adds r4, r7, r0
|
|
_080384DC:
|
|
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, r2, r0
|
|
lsls r2, r2, #2
|
|
ldr r0, _0803850C
|
|
adds r2, r2, r0
|
|
adds r0, r5, #0
|
|
bl SetMonData
|
|
adds r4, #2
|
|
adds r6, #1
|
|
cmp r6, #3
|
|
ble _080384DC
|
|
b _08038670
|
|
.align 2, 0
|
|
_08038508: .4byte 0x082EA31C
|
|
_0803850C: .4byte 0x082ED224
|
|
_08038510:
|
|
adds r0, r4, #0
|
|
adds r0, #0x1c
|
|
ldr r1, [sp, #0x20]
|
|
adds r0, r1, r0
|
|
ldr r4, [r0]
|
|
movs r6, #0
|
|
ldr r3, [sp, #0x14]
|
|
lsls r2, r3, #3
|
|
adds r0, r2, r4
|
|
ldrh r1, [r0, #4]
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
ldr r1, _080385A4
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
adds r5, r2, #0
|
|
cmp r0, #0xff
|
|
beq _08038556
|
|
adds r3, r1, #0
|
|
_08038538:
|
|
adds r0, r2, r4
|
|
ldrh r0, [r0, #4]
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #1
|
|
adds r0, r6, r1
|
|
adds r0, r0, r3
|
|
ldrb r0, [r0]
|
|
add sb, r0
|
|
adds r6, #1
|
|
adds r1, r6, r1
|
|
adds r1, r1, r3
|
|
ldrb r0, [r1]
|
|
cmp r0, #0xff
|
|
bne _08038538
|
|
_08038556:
|
|
mov r2, sb
|
|
lsls r0, r2, #8
|
|
add sl, r0
|
|
adds r5, r5, r4
|
|
ldrh r1, [r5]
|
|
lsls r0, r1, #5
|
|
subs r0, r0, r1
|
|
movs r1, #0xff
|
|
bl __divsi3
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
ldr r3, [sp, #0x14]
|
|
movs r0, #0x64
|
|
adds r4, r3, #0
|
|
muls r4, r0, r4
|
|
ldr r1, [sp, #0x10]
|
|
adds r4, r1, r4
|
|
ldrh r1, [r5, #4]
|
|
ldrb r2, [r5, #2]
|
|
movs r0, #1
|
|
str r0, [sp]
|
|
mov r3, sl
|
|
str r3, [sp, #4]
|
|
movs r0, #2
|
|
str r0, [sp, #8]
|
|
movs r0, #0
|
|
str r0, [sp, #0xc]
|
|
adds r0, r4, #0
|
|
adds r3, r6, #0
|
|
bl CreateMon
|
|
adds r5, #6
|
|
adds r0, r4, #0
|
|
movs r1, #0xc
|
|
adds r2, r5, #0
|
|
bl SetMonData
|
|
b _08038670
|
|
.align 2, 0
|
|
_080385A4: .4byte 0x082EA31C
|
|
_080385A8:
|
|
adds r0, r4, #0
|
|
adds r0, #0x1c
|
|
ldr r1, [sp, #0x20]
|
|
adds r0, r1, r0
|
|
ldr r7, [r0]
|
|
movs r6, #0
|
|
ldr r3, [sp, #0x14]
|
|
lsls r2, r3, #4
|
|
adds r0, r2, r7
|
|
ldrh r1, [r0, #4]
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
ldr r1, _080386A8
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
mov r8, r2
|
|
cmp r0, #0xff
|
|
beq _080385EE
|
|
adds r3, r1, #0
|
|
_080385D0:
|
|
adds r0, r2, r7
|
|
ldrh r0, [r0, #4]
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #1
|
|
adds r0, r6, r1
|
|
adds r0, r0, r3
|
|
ldrb r0, [r0]
|
|
add sb, r0
|
|
adds r6, #1
|
|
adds r1, r6, r1
|
|
adds r1, r1, r3
|
|
ldrb r0, [r1]
|
|
cmp r0, #0xff
|
|
bne _080385D0
|
|
_080385EE:
|
|
mov r2, sb
|
|
lsls r0, r2, #8
|
|
add sl, r0
|
|
mov r3, r8
|
|
adds r5, r3, r7
|
|
ldrh r1, [r5]
|
|
lsls r0, r1, #5
|
|
subs r0, r0, r1
|
|
movs r1, #0xff
|
|
bl __divsi3
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
ldr r0, [sp, #0x14]
|
|
movs r1, #0x64
|
|
adds r4, r0, #0
|
|
muls r4, r1, r4
|
|
ldr r2, [sp, #0x10]
|
|
adds r4, r2, r4
|
|
ldrh r1, [r5, #4]
|
|
ldrb r2, [r5, #2]
|
|
movs r0, #1
|
|
str r0, [sp]
|
|
mov r3, sl
|
|
str r3, [sp, #4]
|
|
movs r0, #2
|
|
str r0, [sp, #8]
|
|
movs r0, #0
|
|
str r0, [sp, #0xc]
|
|
adds r0, r4, #0
|
|
adds r3, r6, #0
|
|
bl CreateMon
|
|
adds r5, #6
|
|
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, #8
|
|
adds r4, r7, r0
|
|
_08038646:
|
|
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, r2, r0
|
|
lsls r2, r2, #2
|
|
ldr r0, _080386AC
|
|
adds r2, r2, r0
|
|
adds r0, r5, #0
|
|
bl SetMonData
|
|
adds r4, #2
|
|
adds r6, #1
|
|
cmp r6, #3
|
|
ble _08038646
|
|
_08038670:
|
|
ldr r0, [sp, #0x1c]
|
|
str r0, [sp, #0x14]
|
|
ldr r4, _080386B0
|
|
ldr r1, [sp, #0x18]
|
|
cmp r0, r1
|
|
bge _0803867E
|
|
b _0803834C
|
|
_0803867E:
|
|
ldr r2, _080386B4
|
|
ldr r0, _080386B0
|
|
ldr r3, [sp, #0x20]
|
|
adds r0, r3, r0
|
|
ldrb r1, [r0, #0x12]
|
|
ldr r0, [r2]
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
_0803868E:
|
|
ldr r0, _080386B0
|
|
ldr r1, [sp, #0x20]
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0, #0x18]
|
|
_08038696:
|
|
add sp, #0x24
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080386A8: .4byte 0x082EA31C
|
|
_080386AC: .4byte 0x082ED224
|
|
_080386B0: .4byte 0x082E383C
|
|
_080386B4: .4byte 0x02022C90
|
|
thumb_func_end CreateNPCTrainerParty
|
|
|
|
thumb_func_start sub_080386B8
|
|
sub_080386B8: @ 0x080386B8
|
|
push {lr}
|
|
ldr r0, _080386D8
|
|
ldrh r0, [r0]
|
|
subs r0, #0x6f
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #0x30
|
|
bhi _080386D2
|
|
movs r1, #0x98
|
|
lsls r1, r1, #8
|
|
movs r0, #8
|
|
bl SetGpuReg
|
|
_080386D2:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080386D8: .4byte 0x04000006
|
|
thumb_func_end sub_080386B8
|
|
|
|
thumb_func_start VBlankCB_Battle
|
|
VBlankCB_Battle: @ 0x080386DC
|
|
push {lr}
|
|
ldr r0, _0803877C
|
|
ldr r0, [r0]
|
|
ldr r1, _08038780
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _080386EE
|
|
bl Random
|
|
_080386EE:
|
|
ldr r0, _08038784
|
|
ldrh r1, [r0]
|
|
movs r0, #0x10
|
|
bl SetGpuReg
|
|
ldr r0, _08038788
|
|
ldrh r1, [r0]
|
|
movs r0, #0x12
|
|
bl SetGpuReg
|
|
ldr r0, _0803878C
|
|
ldrh r1, [r0]
|
|
movs r0, #0x14
|
|
bl SetGpuReg
|
|
ldr r0, _08038790
|
|
ldrh r1, [r0]
|
|
movs r0, #0x16
|
|
bl SetGpuReg
|
|
ldr r0, _08038794
|
|
ldrh r1, [r0]
|
|
movs r0, #0x18
|
|
bl SetGpuReg
|
|
ldr r0, _08038798
|
|
ldrh r1, [r0]
|
|
movs r0, #0x1a
|
|
bl SetGpuReg
|
|
ldr r0, _0803879C
|
|
ldrh r1, [r0]
|
|
movs r0, #0x1c
|
|
bl SetGpuReg
|
|
ldr r0, _080387A0
|
|
ldrh r1, [r0]
|
|
movs r0, #0x1e
|
|
bl SetGpuReg
|
|
ldr r0, _080387A4
|
|
ldrh r1, [r0]
|
|
movs r0, #0x40
|
|
bl SetGpuReg
|
|
ldr r0, _080387A8
|
|
ldrh r1, [r0]
|
|
movs r0, #0x44
|
|
bl SetGpuReg
|
|
ldr r0, _080387AC
|
|
ldrh r1, [r0]
|
|
movs r0, #0x42
|
|
bl SetGpuReg
|
|
ldr r0, _080387B0
|
|
ldrh r1, [r0]
|
|
movs r0, #0x46
|
|
bl SetGpuReg
|
|
bl LoadOam
|
|
bl ProcessSpriteCopyRequests
|
|
bl TransferPlttBuffer
|
|
bl ScanlineEffect_InitHBlankDmaTransfer
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803877C: .4byte 0x02022C90
|
|
_08038780: .4byte 0x013F0102
|
|
_08038784: .4byte 0x02022AC8
|
|
_08038788: .4byte 0x02022ACA
|
|
_0803878C: .4byte 0x02022ACC
|
|
_08038790: .4byte 0x02022ACE
|
|
_08038794: .4byte 0x02022AD0
|
|
_08038798: .4byte 0x02022AD2
|
|
_0803879C: .4byte 0x02022AD4
|
|
_080387A0: .4byte 0x02022AD6
|
|
_080387A4: .4byte 0x02022AD8
|
|
_080387A8: .4byte 0x02022ADA
|
|
_080387AC: .4byte 0x02022ADC
|
|
_080387B0: .4byte 0x02022ADE
|
|
thumb_func_end VBlankCB_Battle
|
|
|
|
thumb_func_start sub_080387B4
|
|
sub_080387B4: @ 0x080387B4
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end sub_080387B4
|
|
|
|
thumb_func_start sub_080387B8
|
|
sub_080387B8: @ 0x080387B8
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
movs r1, #0x2e
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, #0
|
|
beq _080387D8
|
|
movs r1, #0x32
|
|
ldrsh r0, [r5, r1]
|
|
movs r1, #0xff
|
|
lsls r1, r1, #8
|
|
ands r0, r1
|
|
lsrs r0, r0, #8
|
|
ldrh r1, [r5, #0x30]
|
|
adds r0, r0, r1
|
|
strh r0, [r5, #0x20]
|
|
b _080387EA
|
|
_080387D8:
|
|
movs r1, #0x32
|
|
ldrsh r0, [r5, r1]
|
|
movs r1, #0xff
|
|
lsls r1, r1, #8
|
|
ands r0, r1
|
|
asrs r0, r0, #8
|
|
ldrh r1, [r5, #0x30]
|
|
subs r1, r1, r0
|
|
strh r1, [r5, #0x20]
|
|
_080387EA:
|
|
movs r1, #0xc0
|
|
lsls r1, r1, #1
|
|
adds r0, r1, #0
|
|
ldrh r1, [r5, #0x32]
|
|
adds r0, 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 _0803881E
|
|
ldr r4, _08038824
|
|
adds r0, r4, #0
|
|
bl FreeSpriteTilesByTag
|
|
adds r0, r4, #0
|
|
bl FreeSpritePaletteByTag
|
|
adds r0, r5, #0
|
|
bl FreeSpriteOamMatrix
|
|
adds r0, r5, #0
|
|
bl DestroySprite
|
|
_0803881E:
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08038824: .4byte 0x00002710
|
|
thumb_func_end sub_080387B8
|
|
|
|
thumb_func_start sub_08038828
|
|
sub_08038828: @ 0x08038828
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
movs r1, #1
|
|
bl StartSpriteAffineAnim
|
|
ldr r0, _08038844
|
|
str r0, [r4, #0x1c]
|
|
movs r0, #0x68
|
|
bl PlaySE
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08038844: .4byte 0x080387B9
|
|
thumb_func_end sub_08038828
|
|
|
|
thumb_func_start sub_08038848
|
|
sub_08038848: @ 0x08038848
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x10
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r0, [sp]
|
|
movs r0, #0
|
|
str r0, [sp, #4]
|
|
movs r1, #0
|
|
str r1, [sp, #8]
|
|
ldr r0, _08038890
|
|
adds r0, #0x25
|
|
ldrb r2, [r0]
|
|
ldr r0, _08038894
|
|
ldr r0, [r0]
|
|
movs r1, #0x40
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080388B8
|
|
ldr r1, _08038898
|
|
lsls r0, r2, #3
|
|
subs r0, r0, r2
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0, #0x18]
|
|
cmp r0, #1
|
|
beq _080388A4
|
|
cmp r0, #1
|
|
bgt _0803889C
|
|
cmp r0, #0
|
|
beq _080388B8
|
|
b _080388C0
|
|
.align 2, 0
|
|
_08038890: .4byte 0x02024118
|
|
_08038894: .4byte 0x02022C90
|
|
_08038898: .4byte 0x020226A0
|
|
_0803889C:
|
|
cmp r0, #2
|
|
beq _080388B8
|
|
cmp r0, #3
|
|
bne _080388C0
|
|
_080388A4:
|
|
ldr r0, _080388B0
|
|
str r0, [sp, #4]
|
|
ldr r1, _080388B4
|
|
str r1, [sp, #8]
|
|
b _080388C0
|
|
.align 2, 0
|
|
_080388B0: .4byte 0x020243E8
|
|
_080388B4: .4byte 0x02024190
|
|
_080388B8:
|
|
ldr r2, _08038A0C
|
|
str r2, [sp, #4]
|
|
ldr r3, _08038A10
|
|
str r3, [sp, #8]
|
|
_080388C0:
|
|
movs r7, #0
|
|
movs r0, #0
|
|
mov r8, r0
|
|
ldr r1, [sp]
|
|
lsls r1, r1, #2
|
|
str r1, [sp, #0xc]
|
|
movs r2, #0xce
|
|
lsls r2, r2, #1
|
|
mov sl, r2
|
|
mov sb, r0
|
|
_080388D4:
|
|
movs r0, #0x64
|
|
mov r4, r8
|
|
muls r4, r0, r4
|
|
ldr r3, [sp, #4]
|
|
adds r4, r3, r4
|
|
adds r0, r4, #0
|
|
movs r1, #0x41
|
|
bl GetMonData
|
|
lsls r0, r0, #0x10
|
|
lsrs r5, r0, #0x10
|
|
adds r0, r4, #0
|
|
movs r1, #0x39
|
|
bl GetMonData
|
|
lsls r0, r0, #0x10
|
|
lsrs r6, r0, #0x10
|
|
adds r0, r4, #0
|
|
movs r1, #0x37
|
|
bl GetMonData
|
|
adds r1, r0, #0
|
|
cmp r5, #0
|
|
beq _08038944
|
|
cmp r5, sl
|
|
beq _08038918
|
|
cmp r6, #0
|
|
beq _08038918
|
|
cmp r1, #0
|
|
bne _08038918
|
|
movs r0, #1
|
|
mov r2, sb
|
|
lsls r0, r2
|
|
orrs r7, r0
|
|
_08038918:
|
|
cmp r5, #0
|
|
beq _08038944
|
|
cmp r6, #0
|
|
beq _08038930
|
|
cmp r5, sl
|
|
beq _08038928
|
|
cmp r1, #0
|
|
beq _08038930
|
|
_08038928:
|
|
movs r0, #2
|
|
mov r3, sb
|
|
lsls r0, r3
|
|
orrs r7, r0
|
|
_08038930:
|
|
cmp r5, #0
|
|
beq _08038944
|
|
cmp r5, sl
|
|
beq _08038944
|
|
cmp r6, #0
|
|
bne _08038944
|
|
movs r0, #3
|
|
mov r1, sb
|
|
lsls r0, r1
|
|
orrs r7, r0
|
|
_08038944:
|
|
movs r2, #2
|
|
add sb, r2
|
|
movs r3, #1
|
|
add r8, r3
|
|
mov r0, r8
|
|
cmp r0, #5
|
|
ble _080388D4
|
|
ldr r1, _08038A14
|
|
ldr r2, [sp, #0xc]
|
|
ldr r3, [sp]
|
|
adds r0, r2, r3
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
strh r7, [r0, #0xe]
|
|
movs r7, #0
|
|
movs r0, #0
|
|
mov r8, r0
|
|
movs r1, #0xce
|
|
lsls r1, r1, #1
|
|
mov sl, r1
|
|
mov sb, r0
|
|
_0803896E:
|
|
movs r0, #0x64
|
|
mov r4, r8
|
|
muls r4, r0, r4
|
|
ldr r2, [sp, #8]
|
|
adds r4, r2, r4
|
|
adds r0, r4, #0
|
|
movs r1, #0x41
|
|
bl GetMonData
|
|
lsls r0, r0, #0x10
|
|
lsrs r5, r0, #0x10
|
|
adds r0, r4, #0
|
|
movs r1, #0x39
|
|
bl GetMonData
|
|
lsls r0, r0, #0x10
|
|
lsrs r6, r0, #0x10
|
|
adds r0, r4, #0
|
|
movs r1, #0x37
|
|
bl GetMonData
|
|
adds r1, r0, #0
|
|
cmp r5, #0
|
|
beq _080389DE
|
|
cmp r5, sl
|
|
beq _080389B2
|
|
cmp r6, #0
|
|
beq _080389B2
|
|
cmp r1, #0
|
|
bne _080389B2
|
|
movs r0, #1
|
|
mov r3, sb
|
|
lsls r0, r3
|
|
orrs r7, r0
|
|
_080389B2:
|
|
cmp r5, #0
|
|
beq _080389DE
|
|
cmp r6, #0
|
|
beq _080389CA
|
|
cmp r5, sl
|
|
beq _080389C2
|
|
cmp r1, #0
|
|
beq _080389CA
|
|
_080389C2:
|
|
movs r0, #2
|
|
mov r1, sb
|
|
lsls r0, r1
|
|
orrs r7, r0
|
|
_080389CA:
|
|
cmp r5, #0
|
|
beq _080389DE
|
|
cmp r5, sl
|
|
beq _080389DE
|
|
cmp r6, #0
|
|
bne _080389DE
|
|
movs r0, #3
|
|
mov r2, sb
|
|
lsls r0, r2
|
|
orrs r7, r0
|
|
_080389DE:
|
|
movs r3, #2
|
|
add sb, r3
|
|
movs r0, #1
|
|
add r8, r0
|
|
mov r1, r8
|
|
cmp r1, #5
|
|
ble _0803896E
|
|
ldr r1, _08038A14
|
|
ldr r2, [sp, #0xc]
|
|
ldr r3, [sp]
|
|
adds r0, r2, r3
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
strh r7, [r0, #0x10]
|
|
add sp, #0x10
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08038A0C: .4byte 0x02024190
|
|
_08038A10: .4byte 0x020243E8
|
|
_08038A14: .4byte 0x03005B60
|
|
thumb_func_end sub_08038848
|
|
|
|
thumb_func_start sub_08038A18
|
|
sub_08038A18: @ 0x08038A18
|
|
push {r4, lr}
|
|
sub sp, #4
|
|
movs r0, #0
|
|
bl SetHBlankCallback
|
|
movs r0, #0
|
|
bl SetVBlankCallback
|
|
ldr r0, _08038A54
|
|
ldr r1, [r0]
|
|
movs r2, #0x21
|
|
rsbs r2, r2, #0
|
|
ands r1, r2
|
|
str r1, [r0]
|
|
ldr r0, _08038A58
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08038A60
|
|
ldr r0, _08038A5C
|
|
ldr r0, [r0, #8]
|
|
bl SetMainCallback2
|
|
bl FreeBattleResources
|
|
bl FreeBattleSpritesData
|
|
bl FreeMonSpritesGfx
|
|
b _08038B6A
|
|
.align 2, 0
|
|
_08038A54: .4byte 0x02022C90
|
|
_08038A58: .4byte 0x003F0100
|
|
_08038A5C: .4byte 0x03002360
|
|
_08038A60:
|
|
str r0, [sp]
|
|
movs r1, #0xc0
|
|
lsls r1, r1, #0x13
|
|
ldr r2, _08038B74
|
|
mov r0, sp
|
|
bl CpuSet
|
|
movs r0, #0x4c
|
|
movs r1, #0
|
|
bl SetGpuReg
|
|
movs r0, #0x40
|
|
movs r1, #0xf0
|
|
bl SetGpuReg
|
|
ldr r4, _08038B78
|
|
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, _08038B7C
|
|
movs r0, #0xf0
|
|
strh r0, [r1]
|
|
ldr r0, _08038B80
|
|
strh r4, [r0]
|
|
bl ScanlineEffect_Clear
|
|
ldr r0, _08038B84
|
|
movs r3, #0xf0
|
|
movs r1, #0xf0
|
|
lsls r1, r1, #3
|
|
adds r2, r0, r1
|
|
movs r1, #0x4f
|
|
_08038AB2:
|
|
strh r3, [r0]
|
|
strh r3, [r2]
|
|
adds r2, #2
|
|
adds r0, #2
|
|
subs r1, #1
|
|
cmp r1, #0
|
|
bge _08038AB2
|
|
movs r1, #0x50
|
|
ldr r0, _08038B84
|
|
ldr r3, _08038B88
|
|
movs r4, #0x82
|
|
lsls r4, r4, #4
|
|
adds r2, r0, r4
|
|
adds r0, #0xa0
|
|
_08038ACE:
|
|
strh r3, [r0]
|
|
strh r3, [r2]
|
|
adds r2, #2
|
|
adds r0, #2
|
|
adds r1, #1
|
|
cmp r1, #0x9f
|
|
ble _08038ACE
|
|
bl ResetPaletteFade
|
|
ldr r0, _08038B8C
|
|
movs r4, #0
|
|
strh r4, [r0]
|
|
ldr r0, _08038B90
|
|
strh r4, [r0]
|
|
ldr r0, _08038B94
|
|
strh r4, [r0]
|
|
ldr r0, _08038B98
|
|
strh r4, [r0]
|
|
ldr r0, _08038B9C
|
|
strh r4, [r0]
|
|
ldr r0, _08038BA0
|
|
strh r4, [r0]
|
|
ldr r0, _08038BA4
|
|
strh r4, [r0]
|
|
ldr r0, _08038BA8
|
|
strh r4, [r0]
|
|
bl sub_08035528
|
|
ldr r0, _08038BAC
|
|
movs r1, #0
|
|
movs r2, #0x40
|
|
bl LoadCompressedPalette
|
|
bl LoadBattleMenuWindowGfx
|
|
bl ResetSpriteData
|
|
bl ResetTasks
|
|
bl DrawBattleEntryBackground
|
|
movs r0, #0x4a
|
|
movs r1, #0x37
|
|
bl SetGpuReg
|
|
bl FreeAllSpritePalettes
|
|
ldr r1, _08038BB0
|
|
movs r0, #4
|
|
strb r0, [r1]
|
|
ldr r0, _08038BB4
|
|
bl SetVBlankCallback
|
|
ldr r0, _08038BB8
|
|
movs r1, #0
|
|
bl CreateTask
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r2, _08038BBC
|
|
lsls r1, r0, #2
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #3
|
|
adds r1, r1, r2
|
|
movs r2, #0x87
|
|
lsls r2, r2, #1
|
|
strh r2, [r1, #0xa]
|
|
movs r2, #0x5a
|
|
strh r2, [r1, #0xc]
|
|
movs r2, #1
|
|
strh r2, [r1, #0x12]
|
|
bl sub_08038848
|
|
ldr r0, _08038BC0
|
|
bl SetMainCallback2
|
|
ldr r0, _08038BC4
|
|
strb r4, [r0]
|
|
_08038B6A:
|
|
add sp, #4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08038B74: .4byte 0x05006000
|
|
_08038B78: .4byte 0x00005051
|
|
_08038B7C: .4byte 0x02022AD8
|
|
_08038B80: .4byte 0x02022ADA
|
|
_08038B84: .4byte 0x020388C8
|
|
_08038B88: .4byte 0x0000FF10
|
|
_08038B8C: .4byte 0x02022AC8
|
|
_08038B90: .4byte 0x02022ACA
|
|
_08038B94: .4byte 0x02022ACC
|
|
_08038B98: .4byte 0x02022ACE
|
|
_08038B9C: .4byte 0x02022AD0
|
|
_08038BA0: .4byte 0x02022AD2
|
|
_08038BA4: .4byte 0x02022AD4
|
|
_08038BA8: .4byte 0x02022AD6
|
|
_08038BAC: .4byte 0x08C004EC
|
|
_08038BB0: .4byte 0x030030BC
|
|
_08038BB4: .4byte 0x080386DD
|
|
_08038BB8: .4byte 0x08035BC9
|
|
_08038BBC: .4byte 0x03005B60
|
|
_08038BC0: .4byte 0x08038BC9
|
|
_08038BC4: .4byte 0x02023FD6
|
|
thumb_func_end sub_08038A18
|
|
|
|
thumb_func_start sub_08038BC8
|
|
sub_08038BC8: @ 0x08038BC8
|
|
push {lr}
|
|
bl sub_08038BE8
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
bl RunTextPrinters
|
|
bl UpdatePaletteFade
|
|
bl RunTasks
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
thumb_func_end sub_08038BC8
|
|
|
|
thumb_func_start sub_08038BE8
|
|
sub_08038BE8: @ 0x08038BE8
|
|
push {r4, r5, r6, lr}
|
|
sub sp, #8
|
|
ldr r0, _08038C04
|
|
ldrb r1, [r0]
|
|
adds r4, r0, #0
|
|
cmp r1, #9
|
|
bls _08038BF8
|
|
b _08038E7A
|
|
_08038BF8:
|
|
lsls r0, r1, #2
|
|
ldr r1, _08038C08
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08038C04: .4byte 0x02023FD6
|
|
_08038C08: .4byte 0x08038C0C
|
|
_08038C0C: @ jump table
|
|
.4byte _08038C34 @ case 0
|
|
.4byte _08038C54 @ case 1
|
|
.4byte _08038C76 @ case 2
|
|
.4byte _08038D7C @ case 3
|
|
.4byte _08038DB4 @ case 4
|
|
.4byte _08038DCC @ case 5
|
|
.4byte _08038DE0 @ case 6
|
|
.4byte _08038E00 @ case 7
|
|
.4byte _08038E1A @ case 8
|
|
.4byte _08038E38 @ case 9
|
|
_08038C34:
|
|
movs r0, #0
|
|
bl ShowBg
|
|
movs r0, #1
|
|
bl ShowBg
|
|
movs r0, #2
|
|
bl ShowBg
|
|
ldr r1, _08038C50
|
|
movs r0, #0xff
|
|
strb r0, [r1, #1]
|
|
b _08038E28
|
|
.align 2, 0
|
|
_08038C50: .4byte 0x02023FD6
|
|
_08038C54:
|
|
ldrb r0, [r4, #1]
|
|
subs r0, #1
|
|
strb r0, [r4, #1]
|
|
lsls r0, r0, #0x18
|
|
lsrs r1, r0, #0x18
|
|
cmp r1, #0
|
|
beq _08038C64
|
|
b _08038E7A
|
|
_08038C64:
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
str r1, [sp]
|
|
movs r1, #0
|
|
movs r2, #0
|
|
movs r3, #0x10
|
|
bl BeginNormalPaletteFade
|
|
b _08038DC0
|
|
_08038C76:
|
|
ldr r0, _08038D04
|
|
ldrb r1, [r0, #7]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08038C84
|
|
b _08038E7A
|
|
_08038C84:
|
|
bl GetRecordedBattleFrontierFacility
|
|
ldr r2, _08038D08
|
|
ldr r1, _08038D0C
|
|
adds r2, r2, r1
|
|
movs r1, #1
|
|
ands r1, r0
|
|
lsls r1, r1, #2
|
|
ldrb r3, [r2]
|
|
movs r0, #5
|
|
rsbs r0, r0, #0
|
|
ands r0, r3
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, _08038D10
|
|
ldr r0, [r0]
|
|
movs r1, #0x40
|
|
ands r0, r1
|
|
movs r3, #2
|
|
cmp r0, #0
|
|
beq _08038CB0
|
|
movs r3, #4
|
|
_08038CB0:
|
|
movs r4, #0
|
|
ldr r6, _08038D14
|
|
cmp r4, r3
|
|
bge _08038CD6
|
|
ldr r1, _08038D18
|
|
ldrb r0, [r1]
|
|
cmp r0, #3
|
|
bne _08038CD6
|
|
movs r5, #0xff
|
|
adds r2, r1, #0
|
|
_08038CC4:
|
|
adds r2, #0x1c
|
|
adds r4, #1
|
|
cmp r4, r3
|
|
bge _08038CD6
|
|
ldrh r1, [r2]
|
|
adds r0, r5, #0
|
|
ands r0, r1
|
|
cmp r0, #3
|
|
beq _08038CC4
|
|
_08038CD6:
|
|
ldr r0, [r6]
|
|
ldr r1, _08038D1C
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08038D60
|
|
cmp r4, r3
|
|
bne _08038D60
|
|
ldr r0, _08038D20
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08038D28
|
|
bl FreeAllWindowBuffers
|
|
ldr r0, _08038D24
|
|
bl SetMainCallback2
|
|
b _08038E7A
|
|
.align 2, 0
|
|
_08038D04: .4byte 0x02037C74
|
|
_08038D08: .4byte 0x03002360
|
|
_08038D0C: .4byte 0x00000439
|
|
_08038D10: .4byte 0x02022C90
|
|
_08038D14: .4byte 0x03005AF0
|
|
_08038D18: .4byte 0x020226A0
|
|
_08038D1C: .4byte 0x00000CA9
|
|
_08038D20: .4byte 0x000008D2
|
|
_08038D24: .4byte 0x08038F5D
|
|
_08038D28:
|
|
ldr r2, _08038D3C
|
|
ldr r1, _08038D40
|
|
adds r0, r2, r1
|
|
ldrb r1, [r0]
|
|
movs r0, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08038D44
|
|
ldr r0, [r2, #8]
|
|
b _08038D64
|
|
.align 2, 0
|
|
_08038D3C: .4byte 0x03002360
|
|
_08038D40: .4byte 0x00000439
|
|
_08038D44:
|
|
ldr r0, _08038D58
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08038E26
|
|
ldr r0, _08038D5C
|
|
movs r1, #5
|
|
bl CreateTask
|
|
b _08038E26
|
|
.align 2, 0
|
|
_08038D58: .4byte 0x030031C4
|
|
_08038D5C: .4byte 0x080B3251
|
|
_08038D60:
|
|
ldr r0, _08038D78
|
|
ldr r0, [r0, #8]
|
|
_08038D64:
|
|
bl SetMainCallback2
|
|
bl FreeBattleResources
|
|
bl FreeBattleSpritesData
|
|
bl FreeMonSpritesGfx
|
|
b _08038E7A
|
|
.align 2, 0
|
|
_08038D78: .4byte 0x03002360
|
|
_08038D7C:
|
|
movs r0, #0
|
|
str r0, [sp, #4]
|
|
movs r1, #0xc0
|
|
lsls r1, r1, #0x13
|
|
ldr r2, _08038DB0
|
|
add r0, sp, #4
|
|
bl CpuSet
|
|
movs r4, #0
|
|
_08038D8E:
|
|
lsls r0, r4, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl LoadChosenBattleElement
|
|
adds r4, #1
|
|
cmp r4, #1
|
|
ble _08038D8E
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
movs r1, #0
|
|
str r1, [sp]
|
|
movs r2, #0x10
|
|
movs r3, #0
|
|
bl BeginNormalPaletteFade
|
|
b _08038E26
|
|
.align 2, 0
|
|
_08038DB0: .4byte 0x05006000
|
|
_08038DB4:
|
|
ldr r0, _08038DC8
|
|
ldrb r1, [r0, #7]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08038E7A
|
|
_08038DC0:
|
|
ldrb r0, [r4]
|
|
adds r0, #1
|
|
strb r0, [r4]
|
|
b _08038E7A
|
|
.align 2, 0
|
|
_08038DC8: .4byte 0x02037C74
|
|
_08038DCC:
|
|
ldr r0, _08038DDC
|
|
bl FuncIsActiveTask
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08038E7A
|
|
b _08038E26
|
|
.align 2, 0
|
|
_08038DDC: .4byte 0x080B3251
|
|
_08038DE0:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _08038E7A
|
|
bl sub_0800A8D4
|
|
ldr r0, _08038DFC
|
|
movs r1, #0
|
|
bl sub_0814FA04
|
|
b _08038E26
|
|
.align 2, 0
|
|
_08038DFC: .4byte 0x08226D53
|
|
_08038E00:
|
|
movs r0, #0
|
|
bl IsTextPrinterActive
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne _08038E7A
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _08038E7A
|
|
b _08038E26
|
|
_08038E1A:
|
|
ldr r0, _08038E30
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08038E26
|
|
bl sub_0800A7F8
|
|
_08038E26:
|
|
ldr r1, _08038E34
|
|
_08038E28:
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
b _08038E7A
|
|
.align 2, 0
|
|
_08038E30: .4byte 0x0300319C
|
|
_08038E34: .4byte 0x02023FD6
|
|
_08038E38:
|
|
ldr r2, _08038E84
|
|
ldr r1, _08038E88
|
|
adds r0, r2, r1
|
|
ldrb r1, [r0]
|
|
movs r0, #4
|
|
ands r0, r1
|
|
adds r3, r2, #0
|
|
cmp r0, #0
|
|
beq _08038E5A
|
|
ldr r0, _08038E8C
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _08038E5A
|
|
ldr r0, _08038E90
|
|
ldrb r0, [r0]
|
|
cmp r0, #1
|
|
beq _08038E7A
|
|
_08038E5A:
|
|
ldr r0, _08038E88
|
|
adds r2, r3, r0
|
|
ldrb r1, [r2]
|
|
movs r0, #5
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, [r3, #8]
|
|
bl SetMainCallback2
|
|
bl FreeBattleResources
|
|
bl FreeBattleSpritesData
|
|
bl FreeMonSpritesGfx
|
|
_08038E7A:
|
|
add sp, #8
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08038E84: .4byte 0x03002360
|
|
_08038E88: .4byte 0x00000439
|
|
_08038E8C: .4byte 0x0300319C
|
|
_08038E90: .4byte 0x030031C4
|
|
thumb_func_end sub_08038BE8
|
|
|
|
thumb_func_start sub_08038E94
|
|
sub_08038E94: @ 0x08038E94
|
|
push {lr}
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
movs r0, #0
|
|
cmp r1, #6
|
|
bhi _08038F54
|
|
lsls r0, r1, #2
|
|
ldr r1, _08038EB0
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08038EB0: .4byte 0x08038EB4
|
|
_08038EB4: @ jump table
|
|
.4byte _08038ED0 @ case 0
|
|
.4byte _08038EE4 @ case 1
|
|
.4byte _08038EF8 @ case 2
|
|
.4byte _08038F0C @ case 3
|
|
.4byte _08038F20 @ case 4
|
|
.4byte _08038F34 @ case 5
|
|
.4byte _08038F48 @ case 6
|
|
_08038ED0:
|
|
ldr r0, _08038EE0
|
|
lsls r1, r2, #2
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #0x1e
|
|
lsrs r0, r0, #0x1e
|
|
b _08038F54
|
|
.align 2, 0
|
|
_08038EE0: .4byte 0x082EB860
|
|
_08038EE4:
|
|
ldr r0, _08038EF4
|
|
lsls r1, r2, #2
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #0x1c
|
|
lsrs r0, r0, #0x1e
|
|
b _08038F54
|
|
.align 2, 0
|
|
_08038EF4: .4byte 0x082EB860
|
|
_08038EF8:
|
|
ldr r0, _08038F08
|
|
lsls r1, r2, #2
|
|
adds r1, r1, r0
|
|
ldrh r0, [r1]
|
|
lsls r0, r0, #0x17
|
|
lsrs r0, r0, #0x1b
|
|
b _08038F54
|
|
.align 2, 0
|
|
_08038F08: .4byte 0x082EB860
|
|
_08038F0C:
|
|
ldr r0, _08038F1C
|
|
lsls r1, r2, #2
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1, #1]
|
|
lsls r0, r0, #0x1d
|
|
lsrs r0, r0, #0x1e
|
|
b _08038F54
|
|
.align 2, 0
|
|
_08038F1C: .4byte 0x082EB860
|
|
_08038F20:
|
|
ldr r0, _08038F30
|
|
lsls r1, r2, #2
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1, #1]
|
|
lsls r0, r0, #0x1c
|
|
lsrs r0, r0, #0x1f
|
|
b _08038F54
|
|
.align 2, 0
|
|
_08038F30: .4byte 0x082EB860
|
|
_08038F34:
|
|
ldr r0, _08038F44
|
|
lsls r1, r2, #2
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1, #1]
|
|
lsls r0, r0, #0x1a
|
|
lsrs r0, r0, #0x1e
|
|
b _08038F54
|
|
.align 2, 0
|
|
_08038F44: .4byte 0x082EB860
|
|
_08038F48:
|
|
ldr r0, _08038F58
|
|
lsls r1, r2, #2
|
|
adds r1, r1, r0
|
|
ldr r0, [r1]
|
|
lsls r0, r0, #8
|
|
lsrs r0, r0, #0x16
|
|
_08038F54:
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08038F58: .4byte 0x082EB860
|
|
thumb_func_end sub_08038E94
|
|
|
|
thumb_func_start sub_08038F5C
|
|
sub_08038F5C: @ 0x08038F5C
|
|
push {r4, lr}
|
|
sub sp, #8
|
|
movs r0, #0
|
|
bl SetHBlankCallback
|
|
movs r0, #0
|
|
bl SetVBlankCallback
|
|
movs r4, #0
|
|
str r4, [sp, #4]
|
|
movs r1, #0xc0
|
|
lsls r1, r1, #0x13
|
|
ldr r2, _08038FFC
|
|
add r0, sp, #4
|
|
bl CpuSet
|
|
bl ResetPaletteFade
|
|
ldr r0, _08039000
|
|
strh r4, [r0]
|
|
ldr r0, _08039004
|
|
strh r4, [r0]
|
|
ldr r0, _08039008
|
|
strh r4, [r0]
|
|
ldr r0, _0803900C
|
|
strh r4, [r0]
|
|
ldr r0, _08039010
|
|
strh r4, [r0]
|
|
ldr r0, _08039014
|
|
strh r4, [r0]
|
|
ldr r0, _08039018
|
|
strh r4, [r0]
|
|
ldr r0, _0803901C
|
|
strh r4, [r0]
|
|
bl sub_08035528
|
|
movs r1, #0x82
|
|
lsls r1, r1, #5
|
|
movs r0, #0
|
|
bl SetGpuReg
|
|
bl LoadBattleMenuWindowGfx
|
|
_08038FB2:
|
|
lsls r0, r4, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl LoadChosenBattleElement
|
|
adds r4, #1
|
|
cmp r4, #1
|
|
ble _08038FB2
|
|
bl ResetSpriteData
|
|
bl ResetTasks
|
|
bl FreeAllSpritePalettes
|
|
ldr r1, _08039020
|
|
movs r0, #4
|
|
strb r0, [r1]
|
|
ldr r0, _08039024
|
|
bl SetVBlankCallback
|
|
ldr r0, _08039028
|
|
bl SetMainCallback2
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
movs r4, #0
|
|
str r4, [sp]
|
|
movs r1, #0
|
|
movs r2, #0x10
|
|
movs r3, #0
|
|
bl BeginNormalPaletteFade
|
|
ldr r0, _0803902C
|
|
strb r4, [r0]
|
|
add sp, #8
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08038FFC: .4byte 0x05006000
|
|
_08039000: .4byte 0x02022AC8
|
|
_08039004: .4byte 0x02022ACA
|
|
_08039008: .4byte 0x02022ACC
|
|
_0803900C: .4byte 0x02022ACE
|
|
_08039010: .4byte 0x02022AD0
|
|
_08039014: .4byte 0x02022AD2
|
|
_08039018: .4byte 0x02022AD4
|
|
_0803901C: .4byte 0x02022AD6
|
|
_08039020: .4byte 0x030030BC
|
|
_08039024: .4byte 0x080386DD
|
|
_08039028: .4byte 0x08039031
|
|
_0803902C: .4byte 0x02023FD6
|
|
thumb_func_end sub_08038F5C
|
|
|
|
thumb_func_start sub_08039030
|
|
sub_08039030: @ 0x08039030
|
|
push {lr}
|
|
bl sub_08039050
|
|
bl AnimateSprites
|
|
bl BuildOamBuffer
|
|
bl RunTextPrinters
|
|
bl UpdatePaletteFade
|
|
bl RunTasks
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
thumb_func_end sub_08039030
|
|
|
|
thumb_func_start sub_08039050
|
|
sub_08039050: @ 0x08039050
|
|
push {r4, r5, lr}
|
|
sub sp, #4
|
|
ldr r0, _0803906C
|
|
ldrb r1, [r0]
|
|
adds r4, r0, #0
|
|
cmp r1, #0xc
|
|
bls _08039060
|
|
b _08039412
|
|
_08039060:
|
|
lsls r0, r1, #2
|
|
ldr r1, _08039070
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0803906C: .4byte 0x02023FD6
|
|
_08039070: .4byte 0x08039074
|
|
_08039074: @ jump table
|
|
.4byte _080390A8 @ case 0
|
|
.4byte _080390C8 @ case 1
|
|
.4byte _08039104 @ case 2
|
|
.4byte _08039124 @ case 3
|
|
.4byte _08039150 @ case 4
|
|
.4byte _0803918C @ case 5
|
|
.4byte _08039230 @ case 6
|
|
.4byte _080393B8 @ case 7
|
|
.4byte _08039280 @ case 8
|
|
.4byte _080392C4 @ case 9
|
|
.4byte _0803932C @ case 10
|
|
.4byte _0803935C @ case 11
|
|
.4byte _080393B8 @ case 12
|
|
_080390A8:
|
|
movs r0, #0
|
|
bl ShowBg
|
|
movs r0, #1
|
|
bl ShowBg
|
|
movs r0, #2
|
|
bl ShowBg
|
|
ldr r1, _080390C4
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
b _08039410
|
|
.align 2, 0
|
|
_080390C4: .4byte 0x02023FD6
|
|
_080390C8:
|
|
ldr r0, _080390F0
|
|
ldr r1, _080390F4
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080390E8
|
|
ldr r0, _080390F8
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _080390E8
|
|
ldr r0, _080390FC
|
|
movs r1, #5
|
|
bl CreateTask
|
|
_080390E8:
|
|
ldr r1, _08039100
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
b _08039410
|
|
.align 2, 0
|
|
_080390F0: .4byte 0x03002360
|
|
_080390F4: .4byte 0x00000439
|
|
_080390F8: .4byte 0x030031C4
|
|
_080390FC: .4byte 0x080B3251
|
|
_08039100: .4byte 0x02023FD6
|
|
_08039104:
|
|
ldr r0, _0803911C
|
|
bl FuncIsActiveTask
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08039112
|
|
b _08039412
|
|
_08039112:
|
|
ldr r1, _08039120
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
b _08039410
|
|
.align 2, 0
|
|
_0803911C: .4byte 0x080B3251
|
|
_08039120: .4byte 0x02023FD6
|
|
_08039124:
|
|
ldr r0, _08039144
|
|
ldrb r1, [r0, #7]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08039132
|
|
b _08039412
|
|
_08039132:
|
|
ldr r0, _08039148
|
|
movs r1, #0
|
|
bl sub_0814FA04
|
|
ldr r1, _0803914C
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
b _08039410
|
|
.align 2, 0
|
|
_08039144: .4byte 0x02037C74
|
|
_08039148: .4byte 0x085AC0DD
|
|
_0803914C: .4byte 0x02023FD6
|
|
_08039150:
|
|
movs r0, #0
|
|
bl IsTextPrinterActive
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #0
|
|
beq _08039160
|
|
b _08039412
|
|
_08039160:
|
|
str r0, [sp]
|
|
movs r0, #0x18
|
|
movs r1, #8
|
|
movs r2, #0x1d
|
|
movs r3, #0xd
|
|
bl HandleBattleWindow
|
|
ldr r0, _08039184
|
|
movs r1, #0xc
|
|
bl sub_0814FA04
|
|
ldr r4, _08039188
|
|
movs r0, #1
|
|
strb r0, [r4, #1]
|
|
bl BattleCreateYesNoCursorAt
|
|
b _0803939E
|
|
.align 2, 0
|
|
_08039184: .4byte 0x085ABBC9
|
|
_08039188: .4byte 0x02023FD6
|
|
_0803918C:
|
|
ldr r0, _080391B0
|
|
ldrh r1, [r0, #0x2e]
|
|
movs r0, #0x40
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080391B4
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #0
|
|
bne _080391A0
|
|
b _08039412
|
|
_080391A0:
|
|
movs r0, #5
|
|
bl PlaySE
|
|
ldrb r0, [r4, #1]
|
|
bl BattleDestroyYesNoCursorAt
|
|
movs r0, #0
|
|
b _080391D2
|
|
.align 2, 0
|
|
_080391B0: .4byte 0x03002360
|
|
_080391B4:
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080391DA
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #0
|
|
beq _080391C4
|
|
b _08039412
|
|
_080391C4:
|
|
movs r0, #5
|
|
bl PlaySE
|
|
ldrb r0, [r4, #1]
|
|
bl BattleDestroyYesNoCursorAt
|
|
movs r0, #1
|
|
_080391D2:
|
|
strb r0, [r4, #1]
|
|
bl BattleCreateYesNoCursorAt
|
|
b _08039412
|
|
_080391DA:
|
|
movs r5, #1
|
|
adds r0, r5, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08039214
|
|
movs r0, #5
|
|
bl PlaySE
|
|
ldr r4, _08039210
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #0
|
|
beq _080391F4
|
|
b _0803939E
|
|
_080391F4:
|
|
str r5, [sp]
|
|
movs r0, #0x18
|
|
movs r1, #8
|
|
movs r2, #0x1d
|
|
movs r3, #0xd
|
|
bl HandleBattleWindow
|
|
bl MoveRecordedBattleToSaveData
|
|
strb r0, [r4, #1]
|
|
movs r0, #0xa
|
|
strb r0, [r4]
|
|
b _08039412
|
|
.align 2, 0
|
|
_08039210: .4byte 0x02023FD6
|
|
_08039214:
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803921E
|
|
b _08039412
|
|
_0803921E:
|
|
movs r0, #5
|
|
bl PlaySE
|
|
ldr r1, _0803922C
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
b _08039410
|
|
.align 2, 0
|
|
_0803922C: .4byte 0x02023FD6
|
|
_08039230:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
beq _0803923E
|
|
b _08039412
|
|
_0803923E:
|
|
str r0, [sp]
|
|
movs r0, #0x18
|
|
movs r1, #8
|
|
movs r2, #0x1d
|
|
movs r3, #0xd
|
|
bl HandleBattleWindow
|
|
ldr r0, _08039270
|
|
ldr r1, _08039274
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08039268
|
|
bl sub_0800A8D4
|
|
ldr r0, _08039278
|
|
movs r1, #0
|
|
bl sub_0814FA04
|
|
_08039268:
|
|
ldr r1, _0803927C
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
b _08039410
|
|
.align 2, 0
|
|
_08039270: .4byte 0x03002360
|
|
_08039274: .4byte 0x00000439
|
|
_08039278: .4byte 0x08226D53
|
|
_0803927C: .4byte 0x02023FD6
|
|
_08039280:
|
|
ldrb r0, [r4, #1]
|
|
subs r0, #1
|
|
strb r0, [r4, #1]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803928E
|
|
b _08039412
|
|
_0803928E:
|
|
ldr r0, _080392B4
|
|
ldr r1, _080392B8
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080392AA
|
|
ldr r0, _080392BC
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _080392AA
|
|
bl sub_0800A7F8
|
|
_080392AA:
|
|
ldr r1, _080392C0
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
b _08039410
|
|
.align 2, 0
|
|
_080392B4: .4byte 0x03002360
|
|
_080392B8: .4byte 0x00000439
|
|
_080392BC: .4byte 0x0300319C
|
|
_080392C0: .4byte 0x02023FD6
|
|
_080392C4:
|
|
ldr r2, _08039318
|
|
ldr r1, _0803931C
|
|
adds r0, r2, r1
|
|
ldrb r1, [r0]
|
|
movs r0, #4
|
|
ands r0, r1
|
|
adds r3, r2, #0
|
|
cmp r0, #0
|
|
beq _080392E8
|
|
ldr r0, _08039320
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _080392E8
|
|
ldr r0, _08039324
|
|
ldrb r0, [r0]
|
|
cmp r0, #1
|
|
bne _080392E8
|
|
b _08039412
|
|
_080392E8:
|
|
ldr r0, _0803931C
|
|
adds r2, r3, r0
|
|
ldrb r1, [r2]
|
|
movs r0, #5
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, _08039328
|
|
ldrb r1, [r0, #7]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08039304
|
|
b _08039412
|
|
_08039304:
|
|
ldr r0, [r3, #8]
|
|
bl SetMainCallback2
|
|
bl FreeBattleResources
|
|
bl FreeBattleSpritesData
|
|
bl FreeMonSpritesGfx
|
|
b _08039412
|
|
.align 2, 0
|
|
_08039318: .4byte 0x03002360
|
|
_0803931C: .4byte 0x00000439
|
|
_08039320: .4byte 0x0300319C
|
|
_08039324: .4byte 0x030031C4
|
|
_08039328: .4byte 0x02037C74
|
|
_0803932C:
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #1
|
|
bne _08039354
|
|
movs r0, #0x37
|
|
bl PlaySE
|
|
ldr r0, _0803934C
|
|
_0803933A:
|
|
bl TryGetStatusString
|
|
ldr r0, _08039350
|
|
movs r1, #0
|
|
bl sub_0814FA04
|
|
movs r0, #0x80
|
|
strb r0, [r4, #1]
|
|
b _0803939E
|
|
.align 2, 0
|
|
_0803934C: .4byte 0x085AC0FB
|
|
_08039350: .4byte 0x02022AE0
|
|
_08039354:
|
|
ldr r0, _08039358
|
|
b _0803933A
|
|
.align 2, 0
|
|
_08039358: .4byte 0x0822247E
|
|
_0803935C:
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _08039412
|
|
movs r0, #0
|
|
bl IsTextPrinterActive
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne _08039412
|
|
ldr r4, _080393A8
|
|
ldrb r0, [r4, #1]
|
|
subs r0, #1
|
|
strb r0, [r4, #1]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08039412
|
|
ldr r0, _080393AC
|
|
ldr r1, _080393B0
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803939E
|
|
bl sub_0800A8D4
|
|
ldr r0, _080393B4
|
|
movs r1, #0
|
|
bl sub_0814FA04
|
|
_0803939E:
|
|
ldrb r0, [r4]
|
|
adds r0, #1
|
|
strb r0, [r4]
|
|
b _08039412
|
|
.align 2, 0
|
|
_080393A8: .4byte 0x02023FD6
|
|
_080393AC: .4byte 0x03002360
|
|
_080393B0: .4byte 0x00000439
|
|
_080393B4: .4byte 0x08226D53
|
|
_080393B8:
|
|
movs r0, #0
|
|
bl IsTextPrinterActive
|
|
lsls r0, r0, #0x10
|
|
lsrs r4, r0, #0x10
|
|
cmp r4, #0
|
|
bne _08039412
|
|
ldr r0, _080393F0
|
|
ldr r1, _080393F4
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, #4
|
|
ands r0, r1
|
|
lsls r0, r0, #0x18
|
|
lsrs r1, r0, #0x18
|
|
cmp r1, #0
|
|
beq _080393F8
|
|
bl IsLinkTaskFinished
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _08039412
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
str r4, [sp]
|
|
b _080393FE
|
|
.align 2, 0
|
|
_080393F0: .4byte 0x03002360
|
|
_080393F4: .4byte 0x00000439
|
|
_080393F8:
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
str r1, [sp]
|
|
_080393FE:
|
|
movs r1, #0
|
|
movs r2, #0
|
|
movs r3, #0x10
|
|
bl BeginNormalPaletteFade
|
|
ldr r1, _0803941C
|
|
movs r0, #0x20
|
|
strb r0, [r1, #1]
|
|
movs r0, #8
|
|
_08039410:
|
|
strb r0, [r1]
|
|
_08039412:
|
|
add sp, #4
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803941C: .4byte 0x02023FD6
|
|
thumb_func_end sub_08039050
|
|
|
|
thumb_func_start SpriteCb_WildMon
|
|
SpriteCb_WildMon: @ 0x08039420
|
|
push {lr}
|
|
sub sp, #4
|
|
ldr r1, _08039448
|
|
str r1, [r0, #0x1c]
|
|
movs r1, #0
|
|
bl StartSpriteAnimIfDifferent
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xa
|
|
ldr r1, _0803944C
|
|
str r1, [sp]
|
|
movs r1, #0
|
|
movs r2, #0xa
|
|
movs r3, #0xa
|
|
bl BeginNormalPaletteFade
|
|
add sp, #4
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039448: .4byte 0x08039451
|
|
_0803944C: .4byte 0x00002108
|
|
thumb_func_end SpriteCb_WildMon
|
|
|
|
thumb_func_start SpriteCb_MoveWildMonToRight
|
|
SpriteCb_MoveWildMonToRight: @ 0x08039450
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldr r0, _08039474
|
|
ldrh r1, [r0]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08039470
|
|
ldrh r0, [r2, #0x24]
|
|
adds r0, #2
|
|
strh r0, [r2, #0x24]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne _08039470
|
|
ldr r0, _08039478
|
|
str r0, [r2, #0x1c]
|
|
_08039470:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039474: .4byte 0x020240A0
|
|
_08039478: .4byte 0x0803947D
|
|
thumb_func_end SpriteCb_MoveWildMonToRight
|
|
|
|
thumb_func_start SpriteCb_WildMonShowHealthbox
|
|
SpriteCb_WildMonShowHealthbox: @ 0x0803947C
|
|
push {r4, lr}
|
|
sub sp, #4
|
|
adds r4, r0, #0
|
|
adds r0, #0x3f
|
|
ldrb r1, [r0]
|
|
movs r0, #0x10
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080394C4
|
|
ldrh r0, [r4, #0x2e]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl sub_08076320
|
|
ldr r1, _080394CC
|
|
movs r2, #0x2e
|
|
ldrsh r0, [r4, r2]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
bl SetHealthboxSpriteVisible
|
|
ldr r0, _080394D0
|
|
str r0, [r4, #0x1c]
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl StartSpriteAnimIfDifferent
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xa
|
|
ldr r1, _080394D4
|
|
str r1, [sp]
|
|
movs r1, #0
|
|
movs r2, #0xa
|
|
movs r3, #0
|
|
bl BeginNormalPaletteFade
|
|
_080394C4:
|
|
add sp, #4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080394CC: .4byte 0x03005AD0
|
|
_080394D0: .4byte 0x080394D9
|
|
_080394D4: .4byte 0x00002108
|
|
thumb_func_end SpriteCb_WildMonShowHealthbox
|
|
|
|
thumb_func_start SpriteCb_WildMonAnimate
|
|
SpriteCb_WildMonAnimate: @ 0x080394D8
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldr r0, _080394F8
|
|
ldrb r1, [r0, #7]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _080394F4
|
|
ldrh r1, [r2, #0x32]
|
|
adds r0, r2, #0
|
|
movs r2, #0
|
|
movs r3, #1
|
|
bl BattleAnimateFrontSprite
|
|
_080394F4:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080394F8: .4byte 0x02037C74
|
|
thumb_func_end SpriteCb_WildMonAnimate
|
|
|
|
thumb_func_start SpriteCallbackDummy_2
|
|
SpriteCallbackDummy_2: @ 0x080394FC
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end SpriteCallbackDummy_2
|
|
|
|
thumb_func_start sub_08039500
|
|
sub_08039500: @ 0x08039500
|
|
movs r1, #6
|
|
strh r1, [r0, #0x34]
|
|
movs r1, #1
|
|
strh r1, [r0, #0x36]
|
|
ldr r1, _08039510
|
|
str r1, [r0, #0x1c]
|
|
bx lr
|
|
.align 2, 0
|
|
_08039510: .4byte 0x08039515
|
|
thumb_func_end sub_08039500
|
|
|
|
thumb_func_start sub_08039514
|
|
sub_08039514: @ 0x08039514
|
|
push {r4, lr}
|
|
adds r3, r0, #0
|
|
ldrh r0, [r3, #0x36]
|
|
subs r0, #1
|
|
strh r0, [r3, #0x36]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne _08039568
|
|
movs r0, #8
|
|
strh r0, [r3, #0x36]
|
|
movs r0, #0x3e
|
|
adds r0, r0, r3
|
|
mov ip, r0
|
|
ldrb r2, [r0]
|
|
lsls r0, r2, #0x1d
|
|
lsrs r0, r0, #0x1f
|
|
movs r1, #1
|
|
eors r1, r0
|
|
lsls r1, r1, #2
|
|
movs r4, #5
|
|
rsbs r4, r4, #0
|
|
adds r0, r4, #0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
mov r1, ip
|
|
strb r0, [r1]
|
|
ldrh r0, [r3, #0x34]
|
|
subs r0, #1
|
|
strh r0, [r3, #0x34]
|
|
lsls r0, r0, #0x10
|
|
asrs r2, r0, #0x10
|
|
cmp r2, #0
|
|
bne _08039568
|
|
ldrb r1, [r1]
|
|
adds r0, r4, #0
|
|
ands r0, r1
|
|
mov r1, ip
|
|
strb r0, [r1]
|
|
ldr r0, _08039570
|
|
str r0, [r3, #0x1c]
|
|
ldr r0, _08039574
|
|
str r2, [r0]
|
|
_08039568:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039570: .4byte 0x080394FD
|
|
_08039574: .4byte 0x02022C2C
|
|
thumb_func_end sub_08039514
|
|
|
|
thumb_func_start SpriteCB_FaintOpponentMon
|
|
SpriteCB_FaintOpponentMon: @ 0x08039578
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sb
|
|
mov r6, r8
|
|
push {r6, r7}
|
|
mov sb, r0
|
|
ldrh r0, [r0, #0x2e]
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
ldr r0, _0803959C
|
|
ldr r0, [r0]
|
|
ldr r1, [r0]
|
|
lsls r0, r6, #2
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, #2]
|
|
cmp r0, #0
|
|
beq _080395A0
|
|
adds r4, r0, #0
|
|
b _080395A4
|
|
.align 2, 0
|
|
_0803959C: .4byte 0x02024174
|
|
_080395A0:
|
|
mov r0, sb
|
|
ldrh r4, [r0, #0x32]
|
|
_080395A4:
|
|
ldr r1, _0803960C
|
|
lsls r0, r6, #1
|
|
adds r5, r0, r1
|
|
ldrh r0, [r5]
|
|
movs r1, #0x64
|
|
mov r8, r1
|
|
mov r1, r8
|
|
muls r1, r0, r1
|
|
adds r0, r1, #0
|
|
ldr r7, _08039610
|
|
adds r0, r0, r7
|
|
movs r1, #0
|
|
bl GetMonData
|
|
cmp r4, #0xc9
|
|
bne _08039628
|
|
ldrh r0, [r5]
|
|
mov r1, r8
|
|
muls r1, r0, r1
|
|
adds r0, r1, #0
|
|
adds r0, r0, r7
|
|
movs r1, #0
|
|
bl GetMonData
|
|
adds r2, r0, #0
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #0x12
|
|
ands r0, r2
|
|
lsrs r0, r0, #0x12
|
|
movs r1, #0xc0
|
|
lsls r1, r1, #0xa
|
|
ands r1, r2
|
|
lsrs r1, r1, #0xc
|
|
orrs r0, r1
|
|
movs r1, #0xc0
|
|
lsls r1, r1, #2
|
|
ands r1, r2
|
|
lsrs r1, r1, #6
|
|
orrs r0, r1
|
|
movs r1, #3
|
|
ands r1, r2
|
|
orrs r0, r1
|
|
movs r1, #0x1c
|
|
bl __umodsi3
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne _08039614
|
|
movs r0, #0xc9
|
|
b _0803961E
|
|
.align 2, 0
|
|
_0803960C: .4byte 0x02023D12
|
|
_08039610: .4byte 0x020243E8
|
|
_08039614:
|
|
movs r1, #0xce
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
_0803961E:
|
|
ldr r1, _08039624
|
|
lsls r0, r0, #2
|
|
b _08039660
|
|
.align 2, 0
|
|
_08039624: .4byte 0x082D45C8
|
|
_08039628:
|
|
ldr r0, _08039640
|
|
cmp r4, r0
|
|
bne _0803964C
|
|
ldr r0, _08039644
|
|
ldr r1, _08039648
|
|
adds r1, r6, r1
|
|
ldrb r1, [r1]
|
|
lsls r1, r1, #2
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1, #1]
|
|
b _08039664
|
|
.align 2, 0
|
|
_08039640: .4byte 0x00000181
|
|
_08039644: .4byte 0x084FE684
|
|
_08039648: .4byte 0x02024188
|
|
_0803964C:
|
|
movs r0, #0xce
|
|
lsls r0, r0, #1
|
|
cmp r4, r0
|
|
bls _0803965C
|
|
ldr r0, _08039658
|
|
b _08039662
|
|
.align 2, 0
|
|
_08039658: .4byte 0x082D45C8
|
|
_0803965C:
|
|
ldr r1, _08039684
|
|
lsls r0, r4, #2
|
|
_08039660:
|
|
adds r0, r0, r1
|
|
_08039662:
|
|
ldrb r0, [r0, #1]
|
|
_08039664:
|
|
lsrs r1, r0, #3
|
|
movs r0, #8
|
|
subs r0, r0, r1
|
|
mov r1, sb
|
|
strh r0, [r1, #0x34]
|
|
movs r0, #1
|
|
strh r0, [r1, #0x36]
|
|
ldr r0, _08039688
|
|
str r0, [r1, #0x1c]
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039684: .4byte 0x082D45C8
|
|
_08039688: .4byte 0x0803968D
|
|
thumb_func_end SpriteCB_FaintOpponentMon
|
|
|
|
thumb_func_start SpriteCB_AnimFaintOpponent
|
|
SpriteCB_AnimFaintOpponent: @ 0x0803968C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrh r0, [r4, #0x36]
|
|
subs r0, #1
|
|
strh r0, [r4, #0x36]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne _0803970C
|
|
movs r0, #2
|
|
strh r0, [r4, #0x36]
|
|
ldrh r0, [r4, #0x26]
|
|
adds r0, #8
|
|
strh r0, [r4, #0x26]
|
|
ldrh r0, [r4, #0x34]
|
|
subs r0, #1
|
|
strh r0, [r4, #0x34]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bge _080396C0
|
|
adds r0, r4, #0
|
|
bl FreeSpriteOamMatrix
|
|
adds r0, r4, #0
|
|
bl DestroySprite
|
|
b _0803970C
|
|
_080396C0:
|
|
ldrh r0, [r4, #0x2e]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerPosition
|
|
ldr r1, _08039714
|
|
ldr r1, [r1]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x16
|
|
adds r1, #4
|
|
adds r1, r1, r0
|
|
ldr r2, _08039718
|
|
movs r3, #0x2e
|
|
ldrsh r0, [r4, r3]
|
|
adds r0, r0, r2
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0xb
|
|
ldr r1, [r1]
|
|
adds r1, r1, r0
|
|
movs r2, #0x34
|
|
ldrsh r0, [r4, r2]
|
|
lsls r0, r0, #8
|
|
adds r1, r1, r0
|
|
movs r2, #0
|
|
movs r0, #0xff
|
|
_080396F2:
|
|
strb r2, [r1]
|
|
adds r1, #1
|
|
subs r0, #1
|
|
cmp r0, #0
|
|
bge _080396F2
|
|
ldr r0, _08039718
|
|
movs r3, #0x2e
|
|
ldrsh r1, [r4, r3]
|
|
adds r1, r1, r0
|
|
ldrb r1, [r1]
|
|
adds r0, r4, #0
|
|
bl StartSpriteAnim
|
|
_0803970C:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039714: .4byte 0x02024178
|
|
_08039718: .4byte 0x02024188
|
|
thumb_func_end SpriteCB_AnimFaintOpponent
|
|
|
|
thumb_func_start sub_0803971C
|
|
sub_0803971C: @ 0x0803971C
|
|
movs r1, #8
|
|
strh r1, [r0, #0x34]
|
|
adds r1, r0, #0
|
|
adds r1, #0x3e
|
|
ldrb r1, [r1]
|
|
lsls r1, r1, #0x1d
|
|
lsrs r1, r1, #0x1f
|
|
strh r1, [r0, #0x36]
|
|
ldr r1, _08039734
|
|
str r1, [r0, #0x1c]
|
|
bx lr
|
|
.align 2, 0
|
|
_08039734: .4byte 0x08039739
|
|
thumb_func_end sub_0803971C
|
|
|
|
thumb_func_start sub_08039738
|
|
sub_08039738: @ 0x08039738
|
|
push {lr}
|
|
adds r3, r0, #0
|
|
ldrh r0, [r3, #0x34]
|
|
subs r0, #1
|
|
strh r0, [r3, #0x34]
|
|
lsls r0, r0, #0x10
|
|
cmp r0, #0
|
|
bne _0803976A
|
|
movs r0, #0x3e
|
|
adds r0, r0, r3
|
|
mov ip, r0
|
|
ldrb r2, [r0]
|
|
lsls r0, r2, #0x1d
|
|
lsrs r0, r0, #0x1f
|
|
movs r1, #1
|
|
eors r1, r0
|
|
lsls r1, r1, #2
|
|
movs r0, #5
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
mov r1, ip
|
|
strb r0, [r1]
|
|
movs r0, #8
|
|
strh r0, [r3, #0x34]
|
|
_0803976A:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
thumb_func_end sub_08039738
|
|
|
|
thumb_func_start sub_08039770
|
|
sub_08039770: @ 0x08039770
|
|
movs r1, #0x3e
|
|
adds r1, r1, r0
|
|
mov ip, r1
|
|
movs r1, #1
|
|
ldrh r2, [r0, #0x36]
|
|
ands r2, r1
|
|
lsls r2, r2, #2
|
|
mov r1, ip
|
|
ldrb r3, [r1]
|
|
movs r1, #5
|
|
rsbs r1, r1, #0
|
|
ands r1, r3
|
|
orrs r1, r2
|
|
mov r2, ip
|
|
strb r1, [r2]
|
|
movs r1, #0
|
|
strh r1, [r0, #0x36]
|
|
ldr r1, _08039798
|
|
str r1, [r0, #0x1c]
|
|
bx lr
|
|
.align 2, 0
|
|
_08039798: .4byte 0x080394FD
|
|
thumb_func_end sub_08039770
|
|
|
|
thumb_func_start sub_0803979C
|
|
sub_0803979C: @ 0x0803979C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
adds r0, #0x3f
|
|
ldrb r1, [r0]
|
|
movs r0, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080397E4
|
|
ldr r0, _080397EC
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080397C4
|
|
ldr r0, _080397F0
|
|
ldr r0, [r0]
|
|
ldr r1, _080397F4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _080397D8
|
|
_080397C4:
|
|
ldrh r0, [r4, #0x32]
|
|
bl HasTwoFramesAnimation
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _080397D8
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
bl StartSpriteAnim
|
|
_080397D8:
|
|
ldrh r1, [r4, #0x32]
|
|
adds r0, r4, #0
|
|
movs r2, #1
|
|
movs r3, #1
|
|
bl BattleAnimateFrontSprite
|
|
_080397E4:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080397EC: .4byte 0x02023F24
|
|
_080397F0: .4byte 0x02022C90
|
|
_080397F4: .4byte 0x02000002
|
|
thumb_func_end sub_0803979C
|
|
|
|
thumb_func_start sub_080397F8
|
|
sub_080397F8: @ 0x080397F8
|
|
ldr r1, _08039800
|
|
str r1, [r0, #0x1c]
|
|
bx lr
|
|
.align 2, 0
|
|
_08039800: .4byte 0x08039805
|
|
thumb_func_end sub_080397F8
|
|
|
|
thumb_func_start oac_poke_ally_
|
|
oac_poke_ally_: @ 0x08039804
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldr r0, _0803982C
|
|
ldrh r1, [r0]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08039828
|
|
ldrh r0, [r2, #0x24]
|
|
subs r0, #2
|
|
strh r0, [r2, #0x24]
|
|
lsls r0, r0, #0x10
|
|
asrs r1, r0, #0x10
|
|
cmp r1, #0
|
|
bne _08039828
|
|
ldr r0, _08039830
|
|
str r0, [r2, #0x1c]
|
|
strh r1, [r2, #0x30]
|
|
_08039828:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803982C: .4byte 0x020240A0
|
|
_08039830: .4byte 0x08039841
|
|
thumb_func_end oac_poke_ally_
|
|
|
|
thumb_func_start sub_08039834
|
|
sub_08039834: @ 0x08039834
|
|
ldr r1, _0803983C
|
|
str r1, [r0, #0x1c]
|
|
bx lr
|
|
.align 2, 0
|
|
_0803983C: .4byte 0x08039841
|
|
thumb_func_end sub_08039834
|
|
|
|
thumb_func_start SpriteCallbackDummy_3
|
|
SpriteCallbackDummy_3: @ 0x08039840
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end SpriteCallbackDummy_3
|
|
|
|
thumb_func_start sub_08039844
|
|
sub_08039844: @ 0x08039844
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldr r0, _08039868
|
|
ldrh r1, [r0]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08039864
|
|
ldrh r0, [r2, #0x30]
|
|
ldrh r1, [r2, #0x24]
|
|
adds r0, r0, r1
|
|
strh r0, [r2, #0x24]
|
|
ldrh r0, [r2, #0x32]
|
|
ldrh r1, [r2, #0x26]
|
|
adds r0, r0, r1
|
|
strh r0, [r2, #0x26]
|
|
_08039864:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039868: .4byte 0x020240A0
|
|
thumb_func_end sub_08039844
|
|
|
|
thumb_func_start DoBounceEffect
|
|
DoBounceEffect: @ 0x0803986C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
mov r8, r1
|
|
lsls r2, r2, #0x18
|
|
lsrs r2, r2, #0x18
|
|
mov sb, r2
|
|
lsls r3, r3, #0x18
|
|
lsrs r3, r3, #0x18
|
|
mov sl, r3
|
|
cmp r1, #0
|
|
beq _080398A8
|
|
ldr r0, _080398A4
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, #4]
|
|
lsls r2, r4, #1
|
|
adds r0, r2, r4
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, #2
|
|
b _080398BA
|
|
.align 2, 0
|
|
_080398A4: .4byte 0x02024174
|
|
_080398A8:
|
|
ldr r0, _08039904
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, #4]
|
|
lsls r2, r4, #1
|
|
adds r0, r2, r4
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, #4
|
|
_080398BA:
|
|
ands r0, r1
|
|
adds r6, r2, #0
|
|
cmp r0, #0
|
|
bne _08039970
|
|
ldr r0, _08039908
|
|
bl CreateInvisibleSpriteWithCallback
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
mov r0, r8
|
|
cmp r0, #1
|
|
bne _08039914
|
|
ldr r0, _0803990C
|
|
adds r0, r4, r0
|
|
ldrb r7, [r0]
|
|
ldr r2, _08039904
|
|
ldr r0, [r2]
|
|
ldr r0, [r0, #4]
|
|
adds r1, r6, r4
|
|
lsls r1, r1, #2
|
|
adds r0, r1, r0
|
|
strb r5, [r0, #2]
|
|
ldr r0, [r2]
|
|
ldr r0, [r0, #4]
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, #2
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
ldr r2, _08039910
|
|
lsls r3, r5, #4
|
|
adds r0, r3, r5
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
movs r1, #0x80
|
|
b _08039942
|
|
.align 2, 0
|
|
_08039904: .4byte 0x02024174
|
|
_08039908: .4byte 0x08039A3D
|
|
_0803990C: .4byte 0x03005AD0
|
|
_08039910: .4byte 0x020205AC
|
|
_08039914:
|
|
ldr r0, _08039980
|
|
adds r0, r4, r0
|
|
ldrb r7, [r0]
|
|
ldr r2, _08039984
|
|
ldr r0, [r2]
|
|
ldr r0, [r0, #4]
|
|
adds r1, r6, r4
|
|
lsls r1, r1, #2
|
|
adds r0, r1, r0
|
|
strb r5, [r0, #3]
|
|
ldr r0, [r2]
|
|
ldr r0, [r0, #4]
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, #4
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
ldr r2, _08039988
|
|
lsls r3, r5, #4
|
|
adds r0, r3, r5
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
movs r1, #0xc0
|
|
_08039942:
|
|
strh r1, [r0, #0x2e]
|
|
adds r4, r2, #0
|
|
adds r1, r3, r5
|
|
lsls r1, r1, #2
|
|
adds r1, r1, r4
|
|
mov r2, sb
|
|
lsls r0, r2, #0x18
|
|
asrs r0, r0, #0x18
|
|
movs r2, #0
|
|
strh r0, [r1, #0x30]
|
|
mov r3, sl
|
|
lsls r0, r3, #0x18
|
|
asrs r0, r0, #0x18
|
|
strh r0, [r1, #0x32]
|
|
strh r7, [r1, #0x34]
|
|
mov r0, r8
|
|
strh r0, [r1, #0x36]
|
|
lsls r0, r7, #4
|
|
adds r0, r0, r7
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r4
|
|
strh r2, [r0, #0x24]
|
|
strh r2, [r0, #0x26]
|
|
_08039970:
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039980: .4byte 0x02023E88
|
|
_08039984: .4byte 0x02024174
|
|
_08039988: .4byte 0x020205AC
|
|
thumb_func_end DoBounceEffect
|
|
|
|
thumb_func_start EndBounceEffect
|
|
EndBounceEffect: @ 0x0803998C
|
|
push {r4, r5, r6, lr}
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
cmp r1, #1
|
|
bne _080399E0
|
|
ldr r6, _080399D8
|
|
ldr r0, [r6]
|
|
ldr r1, [r0, #4]
|
|
lsls r0, r2, #1
|
|
adds r0, r0, r2
|
|
lsls r5, r0, #2
|
|
adds r3, r5, r1
|
|
ldrb r1, [r3]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08039A2E
|
|
ldr r2, _080399DC
|
|
ldrb r1, [r3, #2]
|
|
lsls r0, r1, #4
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
ldrh r1, [r0, #0x34]
|
|
lsls r1, r1, #0x18
|
|
lsrs r4, r1, #0x18
|
|
bl DestroySprite
|
|
ldr r0, [r6]
|
|
ldr r1, [r0, #4]
|
|
adds r1, r5, r1
|
|
ldrb r2, [r1]
|
|
movs r0, #3
|
|
rsbs r0, r0, #0
|
|
b _08039A1A
|
|
.align 2, 0
|
|
_080399D8: .4byte 0x02024174
|
|
_080399DC: .4byte 0x020205AC
|
|
_080399E0:
|
|
ldr r6, _08039A34
|
|
ldr r0, [r6]
|
|
ldr r1, [r0, #4]
|
|
lsls r0, r2, #1
|
|
adds r0, r0, r2
|
|
lsls r5, r0, #2
|
|
adds r3, r5, r1
|
|
ldrb r1, [r3]
|
|
movs r0, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08039A2E
|
|
ldr r2, _08039A38
|
|
ldrb r1, [r3, #3]
|
|
lsls r0, r1, #4
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
ldrh r1, [r0, #0x34]
|
|
lsls r1, r1, #0x18
|
|
lsrs r4, r1, #0x18
|
|
bl DestroySprite
|
|
ldr r0, [r6]
|
|
ldr r1, [r0, #4]
|
|
adds r1, r5, r1
|
|
ldrb r2, [r1]
|
|
movs r0, #5
|
|
rsbs r0, r0, #0
|
|
_08039A1A:
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r0, _08039A38
|
|
lsls r1, r4, #4
|
|
adds r1, r1, r4
|
|
lsls r1, r1, #2
|
|
adds r1, r1, r0
|
|
movs r0, #0
|
|
strh r0, [r1, #0x24]
|
|
strh r0, [r1, #0x26]
|
|
_08039A2E:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039A34: .4byte 0x02024174
|
|
_08039A38: .4byte 0x020205AC
|
|
thumb_func_end EndBounceEffect
|
|
|
|
thumb_func_start SpriteCB_BounceEffect
|
|
SpriteCB_BounceEffect: @ 0x08039A3C
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
ldrh r0, [r4, #0x34]
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
movs r1, #0x36
|
|
ldrsh r0, [r4, r1]
|
|
cmp r0, #1
|
|
bne _08039A54
|
|
movs r2, #0x2e
|
|
ldrsh r0, [r4, r2]
|
|
b _08039A58
|
|
_08039A54:
|
|
movs r1, #0x2e
|
|
ldrsh r0, [r4, r1]
|
|
_08039A58:
|
|
movs r2, #0x32
|
|
ldrsh r1, [r4, r2]
|
|
bl Sin
|
|
ldr r2, _08039A84
|
|
lsls r1, r5, #4
|
|
adds r1, r1, r5
|
|
lsls r1, r1, #2
|
|
adds r1, r1, r2
|
|
ldrh r2, [r4, #0x32]
|
|
adds r0, r0, r2
|
|
strh r0, [r1, #0x26]
|
|
ldrh r0, [r4, #0x30]
|
|
ldrh r1, [r4, #0x2e]
|
|
adds r0, r0, r1
|
|
movs r1, #0xff
|
|
ands r0, r1
|
|
strh r0, [r4, #0x2e]
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039A84: .4byte 0x020205AC
|
|
thumb_func_end SpriteCB_BounceEffect
|
|
|
|
thumb_func_start sub_08039A88
|
|
sub_08039A88: @ 0x08039A88
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
adds r0, #0x3f
|
|
ldrb r1, [r0]
|
|
movs r0, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08039AA0
|
|
ldrh r1, [r2, #0x32]
|
|
adds r0, r2, #0
|
|
bl BattleAnimateBackSprite
|
|
_08039AA0:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_08039A88
|
|
|
|
thumb_func_start sub_08039AA4
|
|
sub_08039AA4: @ 0x08039AA4
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
bl sub_08039AE0
|
|
adds r0, r4, #0
|
|
adds r0, #0x3f
|
|
ldrb r1, [r0]
|
|
movs r0, #0x10
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08039ABE
|
|
ldr r0, _08039AC4
|
|
str r0, [r4, #0x1c]
|
|
_08039ABE:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039AC4: .4byte 0x08039841
|
|
thumb_func_end sub_08039AA4
|
|
|
|
thumb_func_start sub_08039AC8
|
|
sub_08039AC8: @ 0x08039AC8
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
movs r1, #1
|
|
bl StartSpriteAnim
|
|
ldr r0, _08039ADC
|
|
str r0, [r4, #0x1c]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039ADC: .4byte 0x08039AA5
|
|
thumb_func_end sub_08039AC8
|
|
|
|
thumb_func_start sub_08039AE0
|
|
sub_08039AE0: @ 0x08039AE0
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
adds r0, #0x2c
|
|
ldrb r1, [r0]
|
|
movs r0, #0x3f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08039B02
|
|
ldr r1, _08039B08
|
|
adds r0, r2, #0
|
|
adds r0, #0x2b
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
adds r0, r2, #0
|
|
adds r0, #0x28
|
|
strb r1, [r0]
|
|
_08039B02:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039B08: .4byte 0x082EBB30
|
|
thumb_func_end sub_08039AE0
|
|
|
|
thumb_func_start nullsub_20
|
|
nullsub_20: @ 0x08039B0C
|
|
bx lr
|
|
.align 2, 0
|
|
thumb_func_end nullsub_20
|
|
|
|
thumb_func_start BeginBattleIntro
|
|
BeginBattleIntro: @ 0x08039B10
|
|
push {lr}
|
|
bl BattleStartClearSetData
|
|
ldr r1, _08039B28
|
|
movs r0, #0
|
|
strb r0, [r1, #1]
|
|
ldr r1, _08039B2C
|
|
ldr r0, _08039B30
|
|
str r0, [r1]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039B28: .4byte 0x02023FD6
|
|
_08039B2C: .4byte 0x03005A64
|
|
_08039B30: .4byte 0x0803A805
|
|
thumb_func_end BeginBattleIntro
|
|
|
|
thumb_func_start sub_08039B34
|
|
sub_08039B34: @ 0x08039B34
|
|
push {r4, r5, lr}
|
|
ldr r0, _08039B74
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
ldr r1, _08039B78
|
|
thumb_func_end sub_08039B34
|
|
|
|
thumb_func_start BattleMainCB1
|
|
BattleMainCB1: @ 0x08039B40
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
ldr r0, _08039B7C
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _08039B6E
|
|
ldr r5, _08039B80
|
|
adds r4, r1, #0
|
|
_08039B50:
|
|
ldrb r0, [r4]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r5
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
ldrb r0, [r4]
|
|
adds r0, #1
|
|
strb r0, [r4]
|
|
ldr r1, _08039B7C
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _08039B50
|
|
_08039B6E:
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039B74: .4byte 0x03005A64
|
|
_08039B78: .4byte 0x02023D08
|
|
_08039B7C: .4byte 0x02023D10
|
|
_08039B80: .4byte 0x03005AC0
|
|
thumb_func_end BattleMainCB1
|
|
|
|
thumb_func_start BattleStartClearSetData
|
|
BattleStartClearSetData: @ 0x08039B84
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
movs r0, #0
|
|
bl TurnValuesCleanUp
|
|
bl SpecialStatusesClear
|
|
movs r2, #0
|
|
movs r3, #0
|
|
ldr r0, _08039C80
|
|
mov sl, r0
|
|
ldr r1, _08039C84
|
|
mov sb, r1
|
|
ldr r0, _08039C88
|
|
mov r8, r0
|
|
ldr r1, _08039C8C
|
|
mov ip, r1
|
|
ldr r5, _08039C90
|
|
movs r4, #0
|
|
ldr r7, _08039C94
|
|
ldr r6, _08039C98
|
|
_08039BB4:
|
|
ldr r0, _08039C9C
|
|
adds r0, r4, r0
|
|
str r3, [r0]
|
|
movs r1, #0
|
|
_08039BBC:
|
|
adds r0, r5, r1
|
|
strb r3, [r0]
|
|
adds r1, #1
|
|
cmp r1, #0x1b
|
|
bls _08039BBC
|
|
movs r0, #2
|
|
strb r0, [r5, #0x16]
|
|
ldr r1, _08039CA0
|
|
adds r0, r2, r1
|
|
strb r3, [r0]
|
|
mov r0, ip
|
|
strh r3, [r0]
|
|
mov r1, r8
|
|
strh r3, [r1]
|
|
mov r0, sb
|
|
strh r3, [r0]
|
|
mov r1, sl
|
|
strh r3, [r1]
|
|
ldr r0, _08039CA4
|
|
adds r1, r2, r0
|
|
movs r0, #0xff
|
|
strb r0, [r1]
|
|
strh r3, [r6]
|
|
strh r3, [r7]
|
|
ldr r1, _08039CA8
|
|
ldr r0, [r1]
|
|
ldr r0, [r0, #4]
|
|
adds r0, r0, r4
|
|
str r3, [r0]
|
|
ldr r1, _08039CAC
|
|
adds r0, r4, r1
|
|
str r3, [r0]
|
|
movs r0, #2
|
|
add sl, r0
|
|
add sb, r0
|
|
add r8, r0
|
|
add ip, r0
|
|
adds r5, #0x1c
|
|
adds r4, #4
|
|
adds r7, #2
|
|
adds r6, #2
|
|
adds r2, #1
|
|
cmp r2, #3
|
|
ble _08039BB4
|
|
movs r5, #0
|
|
ldr r3, _08039CB0
|
|
ldr r4, _08039CB4
|
|
movs r2, #1
|
|
_08039C1C:
|
|
strh r5, [r4]
|
|
movs r1, #0
|
|
_08039C20:
|
|
adds r0, r3, r1
|
|
strb r5, [r0]
|
|
adds r1, #1
|
|
cmp r1, #0xb
|
|
bls _08039C20
|
|
adds r3, #0xc
|
|
adds r4, #2
|
|
subs r2, #1
|
|
cmp r2, #0
|
|
bge _08039C1C
|
|
movs r1, #0
|
|
ldr r2, _08039CB8
|
|
strb r1, [r2]
|
|
ldr r0, _08039CBC
|
|
strb r1, [r0]
|
|
ldr r2, _08039CC0
|
|
strh r1, [r2]
|
|
ldr r1, _08039CC4
|
|
movs r2, #0
|
|
movs r3, #0
|
|
_08039C48:
|
|
adds r0, r1, r2
|
|
strb r3, [r0]
|
|
adds r2, #1
|
|
cmp r2, #0x2b
|
|
bls _08039C48
|
|
ldr r2, _08039CC8
|
|
movs r0, #0
|
|
str r0, [r2]
|
|
ldr r0, _08039CCC
|
|
ldr r1, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08039CD4
|
|
movs r0, #2
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
bne _08039CF2
|
|
ldr r0, _08039CD0
|
|
ldr r0, [r0]
|
|
ldrb r1, [r0, #0x15]
|
|
movs r0, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08039CF2
|
|
movs r0, #0x80
|
|
b _08039CF0
|
|
.align 2, 0
|
|
_08039C80: .4byte 0x02023F04
|
|
_08039C84: .4byte 0x02023EFC
|
|
_08039C88: .4byte 0x02023EF4
|
|
_08039C8C: .4byte 0x02023EEC
|
|
_08039C90: .4byte 0x02023F60
|
|
_08039C94: .4byte 0x02023EE4
|
|
_08039C98: .4byte 0x02023F0C
|
|
_08039C9C: .4byte 0x02023F50
|
|
_08039CA0: .4byte 0x02023F28
|
|
_08039CA4: .4byte 0x02023F14
|
|
_08039CA8: .4byte 0x0202414C
|
|
_08039CAC: .4byte 0x02023ED4
|
|
_08039CB0: .4byte 0x02023F38
|
|
_08039CB4: .4byte 0x02023F32
|
|
_08039CB8: .4byte 0x02023EAF
|
|
_08039CBC: .4byte 0x02023EB0
|
|
_08039CC0: .4byte 0x02024070
|
|
_08039CC4: .4byte 0x02024074
|
|
_08039CC8: .4byte 0x02023F24
|
|
_08039CCC: .4byte 0x02022C90
|
|
_08039CD0: .4byte 0x03005AF0
|
|
_08039CD4:
|
|
ldr r0, _08039E70
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
bne _08039CF2
|
|
bl GetRecordedBattleRecordMixFriendClass
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _08039CF2
|
|
ldr r1, _08039E74
|
|
ldr r0, [r1]
|
|
movs r1, #0x80
|
|
orrs r0, r1
|
|
ldr r2, _08039E74
|
|
_08039CF0:
|
|
str r0, [r2]
|
|
_08039CF2:
|
|
ldr r3, _08039E78
|
|
ldr r0, _08039E7C
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x15]
|
|
lsls r0, r0, #0x1e
|
|
lsrs r0, r0, #0x1f
|
|
movs r1, #0
|
|
strb r0, [r3, #0x1d]
|
|
ldr r0, _08039E80
|
|
strb r1, [r0]
|
|
ldr r0, _08039E84
|
|
strb r1, [r0]
|
|
ldr r0, _08039E88
|
|
str r1, [r0]
|
|
ldr r0, _08039E8C
|
|
movs r2, #0
|
|
strh r1, [r0]
|
|
ldr r1, _08039E90
|
|
ldr r0, [r1]
|
|
ldr r0, [r0, #8]
|
|
adds r0, #0x20
|
|
strb r2, [r0]
|
|
ldr r0, [r1]
|
|
ldr r0, [r0, #0xc]
|
|
adds r0, #0x20
|
|
strb r2, [r0]
|
|
ldr r5, _08039E94
|
|
ldr r6, _08039E98
|
|
ldr r7, _08039E9C
|
|
ldr r0, _08039EA0
|
|
mov r8, r0
|
|
ldr r1, _08039EA4
|
|
mov sb, r1
|
|
ldr r2, _08039EA8
|
|
mov sl, r2
|
|
ldr r1, _08039EAC
|
|
movs r2, #0
|
|
adds r0, r1, #7
|
|
_08039D3E:
|
|
strb r2, [r0]
|
|
subs r0, #1
|
|
cmp r0, r1
|
|
bge _08039D3E
|
|
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, sb
|
|
strb r4, [r1]
|
|
ldr r5, _08039EB0
|
|
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, sl
|
|
movs r1, #0xb
|
|
bl GetMonData
|
|
ldr r6, [r5]
|
|
adds r6, #0x7c
|
|
ldr r2, _08039EB4
|
|
lsls r1, r0, #3
|
|
subs r1, r1, r0
|
|
lsls r1, r1, #2
|
|
adds r1, r1, r2
|
|
ldrb r1, [r1, #8]
|
|
movs r0, #0x64
|
|
muls r0, r1, r0
|
|
ldr r1, _08039EB8
|
|
bl __divsi3
|
|
strb r0, [r6]
|
|
ldr r0, [r5]
|
|
adds r0, #0x7b
|
|
movs r1, #3
|
|
strb r1, [r0]
|
|
ldr r0, [r5]
|
|
strb r4, [r0, #0x12]
|
|
ldr r0, [r5]
|
|
adds r0, #0x4a
|
|
movs r1, #1
|
|
strb r1, [r0]
|
|
movs r2, #0
|
|
movs r1, #0
|
|
adds r6, r5, #0
|
|
_08039DAE:
|
|
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, #1
|
|
cmp r2, #7
|
|
ble _08039DAE
|
|
movs r2, #0
|
|
ldr r4, _08039EB0
|
|
movs r3, #0xa5
|
|
lsls r3, r3, #2
|
|
movs r1, #6
|
|
_08039DFE:
|
|
ldr r0, [r4]
|
|
adds r0, r2, r0
|
|
adds r0, r0, r3
|
|
strb r1, [r0]
|
|
adds r2, #1
|
|
cmp r2, #3
|
|
ble _08039DFE
|
|
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, _08039EBC
|
|
strh r0, [r1]
|
|
ldr r1, _08039EC0
|
|
movs r2, #0
|
|
movs r3, #0
|
|
_08039E28:
|
|
adds r0, r1, r2
|
|
strb r3, [r0]
|
|
adds r2, #1
|
|
cmp r2, #0x43
|
|
bls _08039E28
|
|
ldr r0, _08039EA8
|
|
bl IsMonShiny
|
|
ldr r3, _08039EC0
|
|
movs r1, #1
|
|
ands r1, r0
|
|
lsls r1, r1, #6
|
|
ldrb r2, [r3, #5]
|
|
movs r0, #0x41
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, #5]
|
|
ldr r2, _08039EB0
|
|
ldr r0, [r2]
|
|
movs r1, #0xa8
|
|
lsls r1, r1, #2
|
|
adds r0, r0, r1
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
ldr r2, _08039EC4
|
|
adds r0, r0, r2
|
|
strb r1, [r0]
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08039E70: .4byte 0x02000002
|
|
_08039E74: .4byte 0x02023F24
|
|
_08039E78: .4byte 0x02024118
|
|
_08039E7C: .4byte 0x03005AF0
|
|
_08039E80: .4byte 0x02023EB6
|
|
_08039E84: .4byte 0x02023FDE
|
|
_08039E88: .4byte 0x02023D0C
|
|
_08039E8C: .4byte 0x02023FD2
|
|
_08039E90: .4byte 0x0202414C
|
|
_08039E94: .4byte 0x02023FD0
|
|
_08039E98: .4byte 0x02023E94
|
|
_08039E9C: .4byte 0x020240A0
|
|
_08039EA0: .4byte 0x03005AB4
|
|
_08039EA4: .4byte 0x02023EB4
|
|
_08039EA8: .4byte 0x020243E8
|
|
_08039EAC: .4byte 0x02023FD6
|
|
_08039EB0: .4byte 0x02024140
|
|
_08039EB4: .4byte 0x082F0D54
|
|
_08039EB8: .4byte 0x000004FB
|
|
_08039EBC: .4byte 0x02023FD4
|
|
_08039EC0: .4byte 0x03005A70
|
|
_08039EC4: .4byte 0x000002A1
|
|
thumb_func_end BattleStartClearSetData
|
|
|
|
thumb_func_start SwitchInClearSetData
|
|
SwitchInClearSetData: @ 0x08039EC8
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x20
|
|
ldr r4, _0803A02C
|
|
ldr r5, _0803A030
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
mov r1, sp
|
|
adds r0, 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, _0803A034
|
|
ldr r3, _0803A038
|
|
ldrh r1, [r3]
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
ldrb r0, [r0]
|
|
mov ip, r4
|
|
mov sb, r5
|
|
ldr r6, _0803A03C
|
|
mov sl, r6
|
|
cmp r0, #0x7f
|
|
beq _08039FA0
|
|
movs r5, #0
|
|
mov r6, sb
|
|
movs r4, #0x58
|
|
ldr r2, _0803A040
|
|
adds r2, #0x18
|
|
movs r1, #6
|
|
_08039F18:
|
|
ldrb r0, [r6]
|
|
muls r0, r4, r0
|
|
adds r0, r5, r0
|
|
adds r0, r0, r2
|
|
strb r1, [r0]
|
|
adds r5, #1
|
|
cmp r5, #7
|
|
ble _08039F18
|
|
movs r5, #0
|
|
ldr r7, _0803A044
|
|
ldrb r7, [r7]
|
|
cmp r5, r7
|
|
bge _08039F8C
|
|
ldr r0, _0803A048
|
|
mov r8, r0
|
|
ldr r4, _0803A02C
|
|
ldr r3, _0803A03C
|
|
_08039F3A:
|
|
movs r0, #0x58
|
|
muls r0, r5, r0
|
|
mov r1, r8
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x13
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08039F5E
|
|
ldrb r0, [r4, #0x14]
|
|
ldr r6, _0803A030
|
|
ldrb r6, [r6]
|
|
cmp r0, r6
|
|
bne _08039F5E
|
|
ldr r0, _0803A04C
|
|
ands r1, r0
|
|
str r1, [r2]
|
|
_08039F5E:
|
|
ldr r1, [r3]
|
|
movs r0, #0x18
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08039F7E
|
|
ldrb r0, [r4, #0x15]
|
|
ldr r7, _0803A030
|
|
ldrb r7, [r7]
|
|
cmp r0, r7
|
|
bne _08039F7E
|
|
movs r0, #0x19
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
str r1, [r3]
|
|
movs r0, #0
|
|
strb r0, [r4, #0x15]
|
|
_08039F7E:
|
|
adds r4, #0x1c
|
|
adds r3, #4
|
|
adds r5, #1
|
|
ldr r0, _0803A044
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _08039F3A
|
|
_08039F8C:
|
|
ldr r1, _0803A038
|
|
ldrh r0, [r1]
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #2
|
|
ldr r2, _0803A034
|
|
adds r1, r1, r2
|
|
ldrb r0, [r1]
|
|
cmp r0, #0x7f
|
|
bne _0803A058
|
|
_08039FA0:
|
|
mov r3, sb
|
|
ldrb r1, [r3]
|
|
movs r0, #0x58
|
|
adds r2, r1, #0
|
|
muls r2, r0, r2
|
|
ldr r0, _0803A040
|
|
adds r0, #0x50
|
|
adds r2, r2, r0
|
|
ldr r0, [r2]
|
|
ldr r1, _0803A050
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldrb r1, [r3]
|
|
lsls r1, r1, #2
|
|
add r1, sl
|
|
ldr r0, [r1]
|
|
ldr r2, _0803A054
|
|
ands r0, r2
|
|
str r0, [r1]
|
|
movs r5, #0
|
|
ldr r6, _0803A044
|
|
ldrb r6, [r6]
|
|
cmp r5, r6
|
|
bge _0803A074
|
|
mov r7, sb
|
|
movs r6, #0
|
|
_08039FD4:
|
|
ldrb r0, [r7]
|
|
bl GetBattlerSide
|
|
adds r4, r0, #0
|
|
lsls r0, r5, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerSide
|
|
lsls r4, r4, #0x18
|
|
lsls r0, r0, #0x18
|
|
cmp r4, r0
|
|
beq _0803A014
|
|
ldr r1, _0803A03C
|
|
lsls r0, r5, #2
|
|
adds r2, r0, r1
|
|
ldr r1, [r2]
|
|
movs r0, #0x18
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803A014
|
|
ldr r0, _0803A02C
|
|
adds r0, r6, r0
|
|
ldrb r0, [r0, #0x15]
|
|
ldrb r3, [r7]
|
|
cmp r0, r3
|
|
bne _0803A014
|
|
movs r0, #0x19
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
movs r0, #0x10
|
|
orrs r1, r0
|
|
str r1, [r2]
|
|
_0803A014:
|
|
adds r6, #0x1c
|
|
adds r5, #1
|
|
ldr r0, _0803A044
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _08039FD4
|
|
ldr r6, _0803A02C
|
|
mov ip, r6
|
|
ldr r7, _0803A030
|
|
mov sb, r7
|
|
b _0803A074
|
|
.align 2, 0
|
|
_0803A02C: .4byte 0x02023F60
|
|
_0803A030: .4byte 0x02023D08
|
|
_0803A034: .4byte 0x082ED220
|
|
_0803A038: .4byte 0x02023E8E
|
|
_0803A03C: .4byte 0x02023F50
|
|
_0803A040: .4byte 0x02023D28
|
|
_0803A044: .4byte 0x02023D10
|
|
_0803A048: .4byte 0x02023D78
|
|
_0803A04C: .4byte 0xFBFFFFFF
|
|
_0803A050: .4byte 0x15100007
|
|
_0803A054: .4byte 0x0003043F
|
|
_0803A058:
|
|
mov r0, sb
|
|
ldrb r1, [r0]
|
|
movs r0, #0x58
|
|
muls r0, r1, r0
|
|
ldr r1, _0803A354
|
|
adds r1, #0x50
|
|
adds r0, r0, r1
|
|
movs r1, #0
|
|
str r1, [r0]
|
|
mov r2, sb
|
|
ldrb r0, [r2]
|
|
lsls r0, r0, #2
|
|
add r0, sl
|
|
str r1, [r0]
|
|
_0803A074:
|
|
movs r5, #0
|
|
ldr r3, _0803A358
|
|
mov r8, r3
|
|
ldr r6, _0803A35C
|
|
mov sl, r6
|
|
ldr r7, _0803A360
|
|
ldrb r7, [r7]
|
|
cmp r5, r7
|
|
bge _0803A0D4
|
|
ldr r3, _0803A364
|
|
ldr r7, _0803A368
|
|
ldr r6, _0803A36C
|
|
_0803A08C:
|
|
movs r0, #0x58
|
|
muls r0, r5, r0
|
|
adds r4, r0, r3
|
|
ldrb r0, [r6]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r7
|
|
ldr r0, [r0]
|
|
lsls r2, r0, #0x10
|
|
ldr r1, [r4]
|
|
adds r0, r1, #0
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0803A0AA
|
|
bics r1, r2
|
|
str r1, [r4]
|
|
_0803A0AA:
|
|
ldr r1, [r4]
|
|
movs r0, #0xe0
|
|
lsls r0, r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803A0CA
|
|
mov r2, r8
|
|
ldr r0, [r2]
|
|
adds r0, r5, r0
|
|
ldrb r0, [r0, #0x14]
|
|
ldrb r2, [r6]
|
|
cmp r0, r2
|
|
bne _0803A0CA
|
|
ldr r0, _0803A370
|
|
ands r1, r0
|
|
str r1, [r4]
|
|
_0803A0CA:
|
|
adds r5, #1
|
|
ldr r0, _0803A360
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0803A08C
|
|
_0803A0D4:
|
|
mov r1, sb
|
|
ldrb r0, [r1]
|
|
add r0, sl
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
mov r2, sb
|
|
ldrb r0, [r2]
|
|
ldr r3, _0803A374
|
|
adds r0, r0, r3
|
|
strb r1, [r0]
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
mov r6, ip
|
|
adds r1, r0, r6
|
|
movs r5, #0
|
|
movs r2, #0
|
|
_0803A0F8:
|
|
adds r0, r1, r5
|
|
strb r2, [r0]
|
|
adds r5, #1
|
|
cmp r5, #0x1b
|
|
bls _0803A0F8
|
|
ldr r7, _0803A378
|
|
ldrh r0, [r7]
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r0
|
|
lsls r1, r1, #2
|
|
ldr r0, _0803A37C
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, #0x7f
|
|
bne _0803A184
|
|
mov r2, sb
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
add r0, ip
|
|
mov r1, sp
|
|
ldrb r1, [r1, #0xa]
|
|
strb r1, [r0, #0xa]
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
add r0, ip
|
|
mov r1, sp
|
|
ldrb r1, [r1, #0x15]
|
|
strb r1, [r0, #0x15]
|
|
ldrb r0, [r2]
|
|
lsls r1, r0, #3
|
|
subs r1, r1, r0
|
|
lsls r1, r1, #2
|
|
add r1, ip
|
|
mov r0, sp
|
|
ldrb r2, [r0, #0xf]
|
|
lsls r2, r2, #0x1c
|
|
movs r4, #0xf
|
|
lsrs r2, r2, #0x1c
|
|
ldrb r3, [r1, #0xf]
|
|
movs r0, #0x10
|
|
rsbs r0, r0, #0
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
strb r0, [r1, #0xf]
|
|
mov r3, sb
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
add r0, ip
|
|
mov r1, sp
|
|
ldrb r1, [r1, #0xf]
|
|
lsrs r1, r1, #4
|
|
lsls r1, 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, r0, r1
|
|
lsls r0, r0, #2
|
|
add r0, ip
|
|
mov r1, sp
|
|
ldrb r1, [r1, #0x14]
|
|
strb r1, [r0, #0x14]
|
|
_0803A184:
|
|
movs r0, #0
|
|
ldr r6, _0803A380
|
|
strb r0, [r6]
|
|
mov r7, sb
|
|
ldrb r1, [r7]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
add r0, ip
|
|
movs r4, #0
|
|
movs r1, #2
|
|
strb r1, [r0, #0x16]
|
|
ldrb r0, [r7]
|
|
lsls r1, r0, #3
|
|
subs r1, r1, r0
|
|
lsls r1, r1, #2
|
|
add r1, ip
|
|
mov r0, sp
|
|
ldrb r0, [r0, #0x18]
|
|
movs r2, #2
|
|
ands r2, r0
|
|
ldrb r3, [r1, #0x18]
|
|
movs r0, #3
|
|
rsbs r0, r0, #0
|
|
ands r0, r3
|
|
orrs r0, r2
|
|
strb r0, [r1, #0x18]
|
|
ldrb r0, [r7]
|
|
lsls r0, r0, #1
|
|
ldr r1, _0803A384
|
|
adds r0, r0, r1
|
|
movs r2, #0
|
|
strh r4, [r0]
|
|
ldrb r0, [r7]
|
|
lsls r0, r0, #1
|
|
ldr r3, _0803A388
|
|
adds r0, r0, r3
|
|
strh r4, [r0]
|
|
ldrb r0, [r7]
|
|
lsls r0, r0, #1
|
|
ldr r6, _0803A38C
|
|
adds r0, r0, r6
|
|
strh r4, [r0]
|
|
ldrb r0, [r7]
|
|
lsls r0, r0, #1
|
|
ldr r7, _0803A390
|
|
adds r0, r0, r7
|
|
strh r4, [r0]
|
|
mov r1, sb
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #1
|
|
ldr r3, _0803A394
|
|
adds r0, r0, r3
|
|
strh r4, [r0]
|
|
ldrb r0, [r1]
|
|
ldr r6, _0803A398
|
|
adds r0, r0, r6
|
|
movs r1, #0xff
|
|
strb r1, [r0]
|
|
mov r7, sb
|
|
ldrb r0, [r7]
|
|
mov r3, r8
|
|
ldr r1, [r3]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
adds r0, #0x98
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
adds r0, #0x99
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe0
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe1
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe2
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe3
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe4
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe5
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe6
|
|
strb r2, [r0]
|
|
ldrb r0, [r7]
|
|
ldr r1, [r3]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe7
|
|
strb r2, [r0]
|
|
ldr r1, [r3]
|
|
adds r1, #0x92
|
|
ldrb r0, [r7]
|
|
lsls r0, r0, #2
|
|
ldr r6, _0803A368
|
|
adds r0, r0, r6
|
|
ldr r2, [r0]
|
|
ldrb r0, [r1]
|
|
bics r0, r2
|
|
strb r0, [r1]
|
|
movs r5, #0
|
|
ldr r7, _0803A360
|
|
ldrb r7, [r7]
|
|
cmp r5, r7
|
|
bge _0803A2F8
|
|
mov r3, sb
|
|
mov r7, r8
|
|
movs r6, #0
|
|
_0803A29A:
|
|
ldrb r0, [r3]
|
|
cmp r5, r0
|
|
beq _0803A2D0
|
|
lsls r0, r5, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r3, [sp, #0x1c]
|
|
bl GetBattlerSide
|
|
adds r4, r0, #0
|
|
ldr r3, [sp, #0x1c]
|
|
ldrb r0, [r3]
|
|
bl GetBattlerSide
|
|
lsls r4, r4, #0x18
|
|
lsls r0, r0, #0x18
|
|
ldr r3, [sp, #0x1c]
|
|
cmp r4, r0
|
|
beq _0803A2D0
|
|
ldr r0, [r7]
|
|
lsls r1, r5, #1
|
|
adds r0, r1, r0
|
|
adds r0, #0x98
|
|
strb r6, [r0]
|
|
ldr r0, [r7]
|
|
adds r1, r1, r0
|
|
adds r1, #0x99
|
|
strb r6, [r1]
|
|
_0803A2D0:
|
|
ldrb r0, [r3]
|
|
ldr r1, [r7]
|
|
lsls r0, r0, #1
|
|
lsls r2, r5, #3
|
|
adds r0, r0, r2
|
|
adds r0, r0, r1
|
|
adds r0, #0xe0
|
|
strb r6, [r0]
|
|
ldrb r0, [r3]
|
|
ldr r1, [r7]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
adds r0, r0, r1
|
|
adds r0, #0xe1
|
|
strb r6, [r0]
|
|
adds r5, #1
|
|
ldr r0, _0803A360
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0803A29A
|
|
_0803A2F8:
|
|
mov r1, sb
|
|
ldrb r0, [r1]
|
|
mov r2, r8
|
|
ldr r1, [r2]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
adds r0, #0xc8
|
|
movs r2, #0
|
|
strb r2, [r0]
|
|
mov r3, sb
|
|
ldrb r0, [r3]
|
|
mov r6, r8
|
|
ldr r1, [r6]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
adds r0, #0xc9
|
|
strb r2, [r0]
|
|
ldr r0, _0803A39C
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, #4]
|
|
ldrb r0, [r3]
|
|
lsls r0, r0, #2
|
|
adds r1, r1, r0
|
|
movs r2, #0
|
|
str r2, [r1]
|
|
ldr r0, _0803A378
|
|
strh r2, [r0]
|
|
ldr r0, [r6]
|
|
adds r0, #0xda
|
|
movs r1, #0xff
|
|
strb r1, [r0]
|
|
ldrb r0, [r3]
|
|
bl ClearBattlerMoveHistory
|
|
mov r7, sb
|
|
ldrb r0, [r7]
|
|
bl ClearBattlerAbilityHistory
|
|
add sp, #0x20
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803A354: .4byte 0x02023D28
|
|
_0803A358: .4byte 0x02024140
|
|
_0803A35C: .4byte 0x02024150
|
|
_0803A360: .4byte 0x02023D10
|
|
_0803A364: .4byte 0x02023D78
|
|
_0803A368: .4byte 0x082FACB4
|
|
_0803A36C: .4byte 0x02023D08
|
|
_0803A370: .4byte 0xFFFF1FFF
|
|
_0803A374: .4byte 0x02024154
|
|
_0803A378: .4byte 0x02023E8E
|
|
_0803A37C: .4byte 0x082ED220
|
|
_0803A380: .4byte 0x02023F20
|
|
_0803A384: .4byte 0x02023EEC
|
|
_0803A388: .4byte 0x02023EF4
|
|
_0803A38C: .4byte 0x02023EFC
|
|
_0803A390: .4byte 0x02023F04
|
|
_0803A394: .4byte 0x02023EE4
|
|
_0803A398: .4byte 0x02023F14
|
|
_0803A39C: .4byte 0x0202414C
|
|
thumb_func_end SwitchInClearSetData
|
|
|
|
thumb_func_start FaintClearSetData
|
|
FaintClearSetData: @ 0x0803A3A0
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #4
|
|
movs r5, #0
|
|
ldr r6, _0803A764
|
|
ldr r0, _0803A768
|
|
mov r8, r0
|
|
ldr r1, _0803A76C
|
|
mov ip, r1
|
|
ldr r2, _0803A770
|
|
mov sb, r2
|
|
ldr r3, _0803A774
|
|
mov sl, r3
|
|
ldr r7, _0803A778
|
|
ldr r4, _0803A77C
|
|
movs r3, #0x58
|
|
adds r2, r6, #0
|
|
adds r2, #0x18
|
|
movs r1, #6
|
|
_0803A3CC:
|
|
ldrb r0, [r4]
|
|
muls r0, r3, r0
|
|
adds r0, r5, r0
|
|
adds r0, r0, r2
|
|
strb r1, [r0]
|
|
adds r5, #1
|
|
cmp r5, #7
|
|
ble _0803A3CC
|
|
ldr r0, _0803A77C
|
|
ldrb r1, [r0]
|
|
movs r0, #0x58
|
|
muls r0, r1, r0
|
|
adds r2, r6, #0
|
|
adds r2, #0x50
|
|
adds r0, r0, r2
|
|
movs r1, #0
|
|
str r1, [r0]
|
|
ldr r3, _0803A77C
|
|
ldrb r0, [r3]
|
|
lsls r0, r0, #2
|
|
add r0, r8
|
|
str r1, [r0]
|
|
movs r5, #0
|
|
ldr r6, _0803A780
|
|
ldrb r6, [r6]
|
|
cmp r5, r6
|
|
bge _0803A474
|
|
adds r3, r2, #0
|
|
movs r4, #0
|
|
ldr r0, _0803A784
|
|
mov r8, r0
|
|
_0803A40A:
|
|
ldr r1, [r3]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x13
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803A42A
|
|
ldr r2, _0803A788
|
|
adds r0, r4, r2
|
|
ldrb r0, [r0, #0x14]
|
|
ldr r6, _0803A77C
|
|
ldrb r6, [r6]
|
|
cmp r0, r6
|
|
bne _0803A42A
|
|
ldr r0, _0803A78C
|
|
ands r1, r0
|
|
str r1, [r3]
|
|
_0803A42A:
|
|
ldr r1, _0803A77C
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #2
|
|
add r0, r8
|
|
ldr r0, [r0]
|
|
lsls r2, r0, #0x10
|
|
ldr r1, [r3]
|
|
adds r0, r1, #0
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0803A444
|
|
bics r1, r2
|
|
str r1, [r3]
|
|
_0803A444:
|
|
ldr r1, [r3]
|
|
movs r0, #0xe0
|
|
lsls r0, r0, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803A466
|
|
mov r2, ip
|
|
ldr r0, [r2]
|
|
adds r0, r5, r0
|
|
ldrb r0, [r0, #0x14]
|
|
ldr r6, _0803A77C
|
|
ldrb r6, [r6]
|
|
cmp r0, r6
|
|
bne _0803A466
|
|
ldr r0, _0803A790
|
|
ands r1, r0
|
|
str r1, [r3]
|
|
_0803A466:
|
|
adds r3, #0x58
|
|
adds r4, #0x1c
|
|
adds r5, #1
|
|
ldr r0, _0803A780
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0803A40A
|
|
_0803A474:
|
|
ldr r1, _0803A77C
|
|
ldrb r0, [r1]
|
|
add r0, sb
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
ldr r2, _0803A77C
|
|
ldrb r0, [r2]
|
|
add r0, sl
|
|
strb r1, [r0]
|
|
ldrb r1, [r2]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
ldr r3, _0803A788
|
|
adds r1, r0, r3
|
|
movs r5, #0
|
|
movs r2, #0
|
|
_0803A496:
|
|
adds r0, r1, r5
|
|
strb r2, [r0]
|
|
adds r5, #1
|
|
cmp r5, #0x1b
|
|
bls _0803A496
|
|
ldr r6, _0803A77C
|
|
ldrb r1, [r6]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1]
|
|
movs r0, #2
|
|
rsbs r0, r0, #0
|
|
mov sb, r0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldrb r1, [r6]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1]
|
|
movs r3, #3
|
|
rsbs r3, r3, #0
|
|
mov r8, r3
|
|
mov r0, r8
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldrb r1, [r6]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1]
|
|
movs r6, #5
|
|
rsbs r6, r6, #0
|
|
adds r0, r6, #0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r0, _0803A77C
|
|
ldrb r1, [r0]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1]
|
|
subs r3, #6
|
|
mov sl, r3
|
|
mov r0, sl
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r0, _0803A77C
|
|
ldrb r1, [r0]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1]
|
|
movs r0, #0x11
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r2, _0803A77C
|
|
ldrb r1, [r2]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1]
|
|
movs r5, #0x21
|
|
rsbs r5, r5, #0
|
|
adds r0, r5, #0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r3, _0803A77C
|
|
ldrb r1, [r3]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1]
|
|
movs r4, #0x41
|
|
rsbs r4, r4, #0
|
|
adds r0, r4, #0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldrb r1, [r3]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1]
|
|
movs r3, #0x7f
|
|
adds r0, r3, #0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldr r0, _0803A77C
|
|
ldrb r1, [r0]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1, #1]
|
|
mov r0, sb
|
|
ands r0, r2
|
|
strb r0, [r1, #1]
|
|
ldr r2, _0803A77C
|
|
ldrb r1, [r2]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1, #1]
|
|
mov r0, r8
|
|
ands r0, r2
|
|
strb r0, [r1, #1]
|
|
ldr r0, _0803A77C
|
|
ldrb r1, [r0]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1, #1]
|
|
adds r0, r6, #0
|
|
ands r0, r2
|
|
strb r0, [r1, #1]
|
|
ldr r2, _0803A77C
|
|
ldrb r1, [r2]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1, #1]
|
|
movs r0, #0x19
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
strb r0, [r1, #1]
|
|
ldr r1, _0803A77C
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #4
|
|
adds r0, r0, r7
|
|
ldrb r1, [r0, #1]
|
|
ands r5, r1
|
|
strb r5, [r0, #1]
|
|
ldr r2, _0803A77C
|
|
ldrb r0, [r2]
|
|
lsls r0, r0, #4
|
|
adds r0, r0, r7
|
|
ldrb r1, [r0, #1]
|
|
ands r4, r1
|
|
strb r4, [r0, #1]
|
|
ldrb r0, [r2]
|
|
lsls r0, r0, #4
|
|
adds r0, r0, r7
|
|
ldrb r1, [r0, #1]
|
|
ands r3, r1
|
|
strb r3, [r0, #1]
|
|
ldrb r0, [r2]
|
|
lsls r0, r0, #4
|
|
adds r0, r0, r7
|
|
ldrb r1, [r0, #2]
|
|
mov r3, sb
|
|
ands r3, r1
|
|
strb r3, [r0, #2]
|
|
ldrb r0, [r2]
|
|
lsls r0, r0, #4
|
|
adds r0, r0, r7
|
|
ldrb r1, [r0, #2]
|
|
mov r2, r8
|
|
ands r2, r1
|
|
strb r2, [r0, #2]
|
|
ldr r3, _0803A77C
|
|
ldrb r0, [r3]
|
|
lsls r0, r0, #4
|
|
adds r0, r0, r7
|
|
ldrb r1, [r0, #2]
|
|
ands r6, r1
|
|
strb r6, [r0, #2]
|
|
ldrb r0, [r3]
|
|
lsls r0, r0, #4
|
|
adds r0, r0, r7
|
|
ldrb r1, [r0, #2]
|
|
mov r6, sl
|
|
ands r6, r1
|
|
strb r6, [r0, #2]
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
ldr r1, _0803A788
|
|
adds r0, r0, r1
|
|
movs r2, #0
|
|
movs r1, #2
|
|
strb r1, [r0, #0x16]
|
|
ldrb r0, [r3]
|
|
lsls r0, r0, #1
|
|
ldr r3, _0803A794
|
|
adds r0, r0, r3
|
|
movs r3, #0
|
|
strh r2, [r0]
|
|
ldr r6, _0803A77C
|
|
ldrb r0, [r6]
|
|
lsls r0, r0, #1
|
|
ldr r1, _0803A798
|
|
adds r0, r0, r1
|
|
strh r2, [r0]
|
|
ldrb r0, [r6]
|
|
lsls r0, r0, #1
|
|
ldr r6, _0803A79C
|
|
adds r0, r0, r6
|
|
strh r2, [r0]
|
|
ldr r1, _0803A77C
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #1
|
|
ldr r6, _0803A7A0
|
|
adds r0, r0, r6
|
|
strh r2, [r0]
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #1
|
|
ldr r1, _0803A7A4
|
|
adds r0, r0, r1
|
|
strh r2, [r0]
|
|
ldr r2, _0803A77C
|
|
ldrb r0, [r2]
|
|
ldr r6, _0803A7A8
|
|
adds r0, r0, r6
|
|
movs r1, #0xff
|
|
strb r1, [r0]
|
|
ldrb r0, [r2]
|
|
mov r2, ip
|
|
ldr r1, [r2]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
adds r0, #0xc8
|
|
strb r3, [r0]
|
|
ldr r6, _0803A77C
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
adds r0, #0xc9
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
adds r0, #0x98
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
adds r0, #0x99
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe0
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe1
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe2
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe3
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe4
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe5
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe6
|
|
strb r3, [r0]
|
|
ldrb r0, [r6]
|
|
ldr r1, [r2]
|
|
lsls r0, r0, #3
|
|
adds r0, r0, r1
|
|
adds r0, #0xe7
|
|
strb r3, [r0]
|
|
ldr r1, [r2]
|
|
adds r1, #0x92
|
|
ldrb r0, [r6]
|
|
lsls r0, r0, #2
|
|
ldr r2, _0803A784
|
|
adds r0, r0, r2
|
|
ldr r2, [r0]
|
|
ldrb r0, [r1]
|
|
bics r0, r2
|
|
strb r0, [r1]
|
|
movs r5, #0
|
|
ldr r3, _0803A780
|
|
ldrb r3, [r3]
|
|
cmp r5, r3
|
|
bge _0803A746
|
|
adds r3, r6, #0
|
|
mov r7, ip
|
|
movs r6, #0
|
|
_0803A6E8:
|
|
ldrb r0, [r3]
|
|
cmp r5, r0
|
|
beq _0803A71E
|
|
lsls r0, r5, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r3, [sp]
|
|
bl GetBattlerSide
|
|
adds r4, r0, #0
|
|
ldr r3, [sp]
|
|
ldrb r0, [r3]
|
|
bl GetBattlerSide
|
|
lsls r4, r4, #0x18
|
|
lsls r0, r0, #0x18
|
|
ldr r3, [sp]
|
|
cmp r4, r0
|
|
beq _0803A71E
|
|
ldr r0, [r7]
|
|
lsls r1, r5, #1
|
|
adds r0, r1, r0
|
|
adds r0, #0x98
|
|
strb r6, [r0]
|
|
ldr r0, [r7]
|
|
adds r1, r1, r0
|
|
adds r1, #0x99
|
|
strb r6, [r1]
|
|
_0803A71E:
|
|
ldrb r0, [r3]
|
|
ldr r1, [r7]
|
|
lsls r0, r0, #1
|
|
lsls r2, r5, #3
|
|
adds r0, r0, r2
|
|
adds r0, r0, r1
|
|
adds r0, #0xe0
|
|
strb r6, [r0]
|
|
ldrb r0, [r3]
|
|
ldr r1, [r7]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
adds r0, r0, r1
|
|
adds r0, #0xe1
|
|
strb r6, [r0]
|
|
adds r5, #1
|
|
ldr r0, _0803A780
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0803A6E8
|
|
_0803A746:
|
|
ldr r0, _0803A7AC
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, #4]
|
|
ldr r2, _0803A77C
|
|
ldrb r0, [r2]
|
|
lsls r0, r0, #2
|
|
adds r1, r1, r0
|
|
movs r0, #0
|
|
str r0, [r1]
|
|
ldr r4, _0803A764
|
|
ldrb r0, [r2]
|
|
movs r3, #0x58
|
|
adds r2, r0, #0
|
|
muls r2, r3, r2
|
|
b _0803A7B0
|
|
.align 2, 0
|
|
_0803A764: .4byte 0x02023D28
|
|
_0803A768: .4byte 0x02023F50
|
|
_0803A76C: .4byte 0x02024140
|
|
_0803A770: .4byte 0x02024150
|
|
_0803A774: .4byte 0x02024154
|
|
_0803A778: .4byte 0x02023FE0
|
|
_0803A77C: .4byte 0x02023D08
|
|
_0803A780: .4byte 0x02023D10
|
|
_0803A784: .4byte 0x082FACB4
|
|
_0803A788: .4byte 0x02023F60
|
|
_0803A78C: .4byte 0xFBFFFFFF
|
|
_0803A790: .4byte 0xFFFF1FFF
|
|
_0803A794: .4byte 0x02023EEC
|
|
_0803A798: .4byte 0x02023EF4
|
|
_0803A79C: .4byte 0x02023EFC
|
|
_0803A7A0: .4byte 0x02023F04
|
|
_0803A7A4: .4byte 0x02023EE4
|
|
_0803A7A8: .4byte 0x02023F14
|
|
_0803A7AC: .4byte 0x0202414C
|
|
_0803A7B0:
|
|
adds r2, r2, r4
|
|
ldr r5, _0803A7FC
|
|
ldrh r1, [r2]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r5
|
|
ldrb r0, [r0, #6]
|
|
adds r2, #0x21
|
|
strb r0, [r2]
|
|
ldr r6, _0803A800
|
|
ldrb r0, [r6]
|
|
adds r1, r0, #0
|
|
muls r1, r3, r1
|
|
adds r1, r1, r4
|
|
ldrh r2, [r1]
|
|
lsls r0, r2, #3
|
|
subs r0, r0, r2
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r5
|
|
ldrb r0, [r0, #7]
|
|
adds r1, #0x22
|
|
strb r0, [r1]
|
|
ldrb r0, [r6]
|
|
bl ClearBattlerMoveHistory
|
|
ldrb r0, [r6]
|
|
bl ClearBattlerAbilityHistory
|
|
add sp, #4
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803A7FC: .4byte 0x082F0D54
|
|
_0803A800: .4byte 0x02023D08
|
|
thumb_func_end FaintClearSetData
|
|
|
|
thumb_func_start BattleIntroGetMonsData
|
|
BattleIntroGetMonsData: @ 0x0803A804
|
|
push {r4, r5, lr}
|
|
ldr r5, _0803A814
|
|
ldrb r0, [r5]
|
|
cmp r0, #0
|
|
beq _0803A818
|
|
cmp r0, #1
|
|
beq _0803A83C
|
|
b _0803A872
|
|
.align 2, 0
|
|
_0803A814: .4byte 0x02023FD6
|
|
_0803A818:
|
|
ldr r4, _0803A838
|
|
ldrb r0, [r5, #1]
|
|
strb r0, [r4]
|
|
movs r0, #0
|
|
movs r1, #0
|
|
movs r2, #0
|
|
bl BtlController_EmitGetMonData
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
ldrb r0, [r5]
|
|
adds r0, #1
|
|
strb r0, [r5]
|
|
b _0803A872
|
|
.align 2, 0
|
|
_0803A838: .4byte 0x02023D08
|
|
_0803A83C:
|
|
ldr r0, _0803A860
|
|
ldr r2, [r0]
|
|
cmp r2, #0
|
|
bne _0803A872
|
|
ldrb r0, [r5, #1]
|
|
adds r0, #1
|
|
strb r0, [r5, #1]
|
|
ldr r1, _0803A864
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bne _0803A870
|
|
ldr r1, _0803A868
|
|
ldr r0, _0803A86C
|
|
str r0, [r1]
|
|
b _0803A872
|
|
.align 2, 0
|
|
_0803A860: .4byte 0x02023D0C
|
|
_0803A864: .4byte 0x02023D10
|
|
_0803A868: .4byte 0x03005A64
|
|
_0803A86C: .4byte 0x0803A879
|
|
_0803A870:
|
|
strb r2, [r5]
|
|
_0803A872:
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end BattleIntroGetMonsData
|
|
|
|
thumb_func_start BattleIntroPrepareBackgroundSlide
|
|
BattleIntroPrepareBackgroundSlide: @ 0x0803A878
|
|
push {r4, r5, lr}
|
|
ldr r0, _0803A8B0
|
|
ldr r5, [r0]
|
|
cmp r5, #0
|
|
bne _0803A8A8
|
|
movs r0, #0
|
|
bl GetBattlerAtPosition
|
|
ldr r4, _0803A8B4
|
|
strb r0, [r4]
|
|
ldr r0, _0803A8B8
|
|
ldrb r1, [r0]
|
|
movs r0, #0
|
|
bl BtlController_EmitIntroSlide
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
ldr r1, _0803A8BC
|
|
ldr r0, _0803A8C0
|
|
str r0, [r1]
|
|
ldr r0, _0803A8C4
|
|
strb r5, [r0]
|
|
strb r5, [r0, #1]
|
|
_0803A8A8:
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803A8B0: .4byte 0x02023D0C
|
|
_0803A8B4: .4byte 0x02023D08
|
|
_0803A8B8: .4byte 0x02022C94
|
|
_0803A8BC: .4byte 0x03005A64
|
|
_0803A8C0: .4byte 0x0803A8C9
|
|
_0803A8C4: .4byte 0x02023FD6
|
|
thumb_func_end BattleIntroPrepareBackgroundSlide
|
|
|
|
thumb_func_start BattleIntroDrawTrainersOrMonsSprites
|
|
BattleIntroDrawTrainersOrMonsSprites: @ 0x0803A8C8
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
ldr r0, _0803A92C
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
beq _0803A8DC
|
|
b _0803AB92
|
|
_0803A8DC:
|
|
ldr r2, _0803A930
|
|
strb r1, [r2]
|
|
ldr r0, _0803A934
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
blo _0803A8EA
|
|
b _0803AB8C
|
|
_0803A8EA:
|
|
movs r7, #0x58
|
|
ldr r0, _0803A938
|
|
mov r8, r0
|
|
mov sb, r2
|
|
movs r1, #0x48
|
|
add r1, r8
|
|
mov sl, r1
|
|
_0803A8F8:
|
|
ldr r0, _0803A93C
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803A940
|
|
ldr r4, _0803A930
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803A940
|
|
ldrb r0, [r4]
|
|
muls r0, r7, r0
|
|
mov r2, r8
|
|
adds r3, r0, r2
|
|
movs r2, #0
|
|
movs r1, #0
|
|
_0803A91E:
|
|
adds r0, r3, r2
|
|
strb r1, [r0]
|
|
adds r2, #1
|
|
cmp r2, #0x57
|
|
bls _0803A91E
|
|
b _0803AA0E
|
|
.align 2, 0
|
|
_0803A92C: .4byte 0x02023D0C
|
|
_0803A930: .4byte 0x02023D08
|
|
_0803A934: .4byte 0x02023D10
|
|
_0803A938: .4byte 0x02023D28
|
|
_0803A93C: .4byte 0x02022C90
|
|
_0803A940:
|
|
mov r1, sb
|
|
ldrb r0, [r1]
|
|
muls r0, r7, r0
|
|
mov r2, r8
|
|
adds r3, r0, r2
|
|
movs r2, #0
|
|
ldr r6, _0803AA88
|
|
ldr r5, _0803AA8C
|
|
ldr r4, _0803AA90
|
|
_0803A952:
|
|
adds r0, r3, r2
|
|
ldrb r1, [r4]
|
|
lsls r1, r1, #9
|
|
adds r1, #4
|
|
adds r1, r2, r1
|
|
adds r1, r1, r5
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, #1
|
|
cmp r2, #0x57
|
|
bls _0803A952
|
|
mov r1, sb
|
|
ldrb r0, [r1]
|
|
adds r2, r0, #0
|
|
muls r2, r7, r2
|
|
add r2, r8
|
|
ldrh r1, [r2]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r6
|
|
ldrb r0, [r0, #6]
|
|
adds r2, #0x21
|
|
strb r0, [r2]
|
|
mov r2, sb
|
|
ldrb r0, [r2]
|
|
adds r2, r0, #0
|
|
muls r2, r7, r2
|
|
add r2, r8
|
|
ldrh r1, [r2]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r6
|
|
ldrb r0, [r0, #7]
|
|
adds r2, #0x22
|
|
strb r0, [r2]
|
|
mov r1, sb
|
|
ldrb r0, [r1]
|
|
adds r1, r0, #0
|
|
muls r1, r7, r1
|
|
add r1, r8
|
|
ldrh r0, [r1]
|
|
ldrb r1, [r1, #0x17]
|
|
lsrs r1, r1, #7
|
|
bl GetAbilityBySpecies
|
|
mov r2, sb
|
|
ldrb r1, [r2]
|
|
muls r1, r7, r1
|
|
add r1, r8
|
|
adds r1, #0x20
|
|
strb r0, [r1]
|
|
ldrb r0, [r2]
|
|
bl GetBattlerSide
|
|
ldr r1, _0803AA94
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x17
|
|
adds r0, #0xa8
|
|
ldr r1, [r1]
|
|
adds r1, r1, r0
|
|
mov r2, sb
|
|
ldrb r0, [r2]
|
|
muls r0, r7, r0
|
|
add r0, r8
|
|
ldrh r0, [r0, #0x28]
|
|
strh r0, [r1]
|
|
movs r2, #0
|
|
ldr r4, _0803AA90
|
|
movs r5, #0x58
|
|
ldr r1, _0803AA98
|
|
adds r6, r4, #0
|
|
movs r0, #0x18
|
|
rsbs r0, r0, #0
|
|
adds r0, r0, r1
|
|
mov ip, r0
|
|
movs r3, #6
|
|
_0803A9EE:
|
|
ldrb r0, [r4]
|
|
muls r0, r5, r0
|
|
adds r0, r2, r0
|
|
adds r0, r0, r1
|
|
strb r3, [r0]
|
|
adds r2, #1
|
|
cmp r2, #7
|
|
ble _0803A9EE
|
|
ldrb r0, [r6]
|
|
adds r1, r0, #0
|
|
muls r1, r7, r1
|
|
mov r0, ip
|
|
adds r0, #0x50
|
|
adds r1, r1, r0
|
|
movs r0, #0
|
|
str r0, [r1]
|
|
_0803AA0E:
|
|
ldr r4, _0803AA90
|
|
ldrb r0, [r4]
|
|
bl GetBattlerPosition
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803AA28
|
|
movs r0, #0
|
|
bl BtlController_EmitDrawTrainerPic
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
_0803AA28:
|
|
ldr r5, _0803AA9C
|
|
ldr r0, [r5]
|
|
movs r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803AAA4
|
|
ldrb r0, [r4]
|
|
bl GetBattlerPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _0803AA4E
|
|
movs r0, #0
|
|
bl BtlController_EmitDrawTrainerPic
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
_0803AA4E:
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _0803AB04
|
|
ldr r0, [r5]
|
|
ldr r1, _0803AAA0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803AB04
|
|
ldrb r0, [r4]
|
|
muls r0, r7, r0
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
bl HoennToNationalOrder
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
ldrb r1, [r4]
|
|
muls r1, r7, r1
|
|
add r1, sl
|
|
ldr r2, [r1]
|
|
movs r1, #2
|
|
bl HandleSetPokedexFlag
|
|
b _0803AB04
|
|
.align 2, 0
|
|
_0803AA88: .4byte 0x082F0D54
|
|
_0803AA8C: .4byte 0x02023508
|
|
_0803AA90: .4byte 0x02023D08
|
|
_0803AA94: .4byte 0x02024140
|
|
_0803AA98: .4byte 0x02023D40
|
|
_0803AA9C: .4byte 0x02022C90
|
|
_0803AAA0: .4byte 0x063F0902
|
|
_0803AAA4:
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _0803AB04
|
|
ldr r0, [r5]
|
|
ldr r1, _0803ABA0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803AADA
|
|
ldrb r0, [r4]
|
|
muls r0, r7, r0
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
bl HoennToNationalOrder
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
ldrb r1, [r4]
|
|
muls r1, r7, r1
|
|
add r1, sl
|
|
ldr r2, [r1]
|
|
movs r1, #2
|
|
bl HandleSetPokedexFlag
|
|
_0803AADA:
|
|
movs r0, #0
|
|
bl BtlController_EmitLoadMonSprite
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
ldr r1, _0803ABA4
|
|
ldrb r0, [r4]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
ldrh r1, [r0]
|
|
movs r0, #0x64
|
|
muls r0, r1, r0
|
|
ldr r1, _0803ABA8
|
|
adds r0, r0, r1
|
|
movs r1, #0xb
|
|
movs r2, #0
|
|
bl GetMonData
|
|
ldr r1, _0803ABAC
|
|
strh r0, [r1, #0x20]
|
|
_0803AB04:
|
|
ldr r0, _0803ABB0
|
|
ldr r0, [r0]
|
|
movs r1, #0x40
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803AB3A
|
|
ldr r4, _0803ABB4
|
|
ldrb r0, [r4]
|
|
bl GetBattlerPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #2
|
|
beq _0803AB2E
|
|
ldrb r0, [r4]
|
|
bl GetBattlerPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #3
|
|
bne _0803AB3A
|
|
_0803AB2E:
|
|
movs r0, #0
|
|
bl BtlController_EmitDrawTrainerPic
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
_0803AB3A:
|
|
ldr r0, _0803ABB0
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803AB64
|
|
ldr r4, _0803ABB4
|
|
ldrb r0, [r4]
|
|
bl GetBattlerPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #3
|
|
bne _0803AB64
|
|
movs r0, #0
|
|
bl BtlController_EmitDrawTrainerPic
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
_0803AB64:
|
|
ldr r0, _0803ABB0
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xb
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803AB76
|
|
bl BattleArena_InitPoints
|
|
_0803AB76:
|
|
mov r1, sb
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
ldr r1, _0803ABB8
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bhs _0803AB8C
|
|
b _0803A8F8
|
|
_0803AB8C:
|
|
ldr r1, _0803ABBC
|
|
ldr r0, _0803ABC0
|
|
str r0, [r1]
|
|
_0803AB92:
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803ABA0: .4byte 0x063F0902
|
|
_0803ABA4: .4byte 0x02023D12
|
|
_0803ABA8: .4byte 0x020243E8
|
|
_0803ABAC: .4byte 0x03005A70
|
|
_0803ABB0: .4byte 0x02022C90
|
|
_0803ABB4: .4byte 0x02023D08
|
|
_0803ABB8: .4byte 0x02023D10
|
|
_0803ABBC: .4byte 0x03005A64
|
|
_0803ABC0: .4byte 0x0803ABC5
|
|
thumb_func_end BattleIntroDrawTrainersOrMonsSprites
|
|
|
|
thumb_func_start BattleIntroDrawPartySummaryScreens
|
|
BattleIntroDrawPartySummaryScreens: @ 0x0803ABC4
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, #0x30
|
|
ldr r0, _0803AC1C
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _0803ABD6
|
|
b _0803AD50
|
|
_0803ABD6:
|
|
ldr r0, _0803AC20
|
|
ldr r0, [r0]
|
|
movs r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803ABE4
|
|
b _0803ACF0
|
|
_0803ABE4:
|
|
movs r7, #0
|
|
add r0, sp, #4
|
|
mov r8, r0
|
|
mov r6, r8
|
|
mov r5, sp
|
|
_0803ABEE:
|
|
movs r0, #0x64
|
|
adds r1, r7, #0
|
|
muls r1, r0, r1
|
|
ldr r0, _0803AC24
|
|
adds r4, r1, r0
|
|
adds r0, r4, #0
|
|
movs r1, #0x41
|
|
bl GetMonData
|
|
cmp r0, #0
|
|
beq _0803AC14
|
|
adds r0, r4, #0
|
|
movs r1, #0x41
|
|
bl GetMonData
|
|
movs r1, #0xce
|
|
lsls r1, r1, #1
|
|
cmp r0, r1
|
|
bne _0803AC2C
|
|
_0803AC14:
|
|
ldr r0, _0803AC28
|
|
strh r0, [r5]
|
|
movs r0, #0
|
|
b _0803AC3E
|
|
.align 2, 0
|
|
_0803AC1C: .4byte 0x02023D0C
|
|
_0803AC20: .4byte 0x02022C90
|
|
_0803AC24: .4byte 0x020243E8
|
|
_0803AC28: .4byte 0x0000FFFF
|
|
_0803AC2C:
|
|
adds r0, r4, #0
|
|
movs r1, #0x39
|
|
bl GetMonData
|
|
strh r0, [r5]
|
|
adds r0, r4, #0
|
|
movs r1, #0x37
|
|
bl GetMonData
|
|
_0803AC3E:
|
|
str r0, [r6]
|
|
adds r6, #8
|
|
adds r5, #8
|
|
adds r7, #1
|
|
cmp r7, #5
|
|
ble _0803ABEE
|
|
movs r0, #1
|
|
bl GetBattlerAtPosition
|
|
ldr r4, _0803AC98
|
|
strb r0, [r4]
|
|
movs r0, #0
|
|
mov r1, sp
|
|
movs r2, #0x80
|
|
bl BtlController_EmitDrawPartyStatusSummary
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
movs r7, #0
|
|
mov r6, r8
|
|
mov r5, sp
|
|
_0803AC6A:
|
|
movs r0, #0x64
|
|
adds r1, r7, #0
|
|
muls r1, r0, r1
|
|
ldr r0, _0803AC9C
|
|
adds r4, r1, r0
|
|
adds r0, r4, #0
|
|
movs r1, #0x41
|
|
bl GetMonData
|
|
cmp r0, #0
|
|
beq _0803AC90
|
|
adds r0, r4, #0
|
|
movs r1, #0x41
|
|
bl GetMonData
|
|
movs r1, #0xce
|
|
lsls r1, r1, #1
|
|
cmp r0, r1
|
|
bne _0803ACA4
|
|
_0803AC90:
|
|
ldr r0, _0803ACA0
|
|
strh r0, [r5]
|
|
movs r0, #0
|
|
b _0803ACB6
|
|
.align 2, 0
|
|
_0803AC98: .4byte 0x02023D08
|
|
_0803AC9C: .4byte 0x02024190
|
|
_0803ACA0: .4byte 0x0000FFFF
|
|
_0803ACA4:
|
|
adds r0, r4, #0
|
|
movs r1, #0x39
|
|
bl GetMonData
|
|
strh r0, [r5]
|
|
adds r0, r4, #0
|
|
movs r1, #0x37
|
|
bl GetMonData
|
|
_0803ACB6:
|
|
str r0, [r6]
|
|
adds r6, #8
|
|
adds r5, #8
|
|
adds r7, #1
|
|
cmp r7, #5
|
|
ble _0803AC6A
|
|
movs r0, #0
|
|
bl GetBattlerAtPosition
|
|
ldr r4, _0803ACE4
|
|
strb r0, [r4]
|
|
movs r0, #0
|
|
mov r1, sp
|
|
movs r2, #0x80
|
|
bl BtlController_EmitDrawPartyStatusSummary
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
ldr r1, _0803ACE8
|
|
ldr r0, _0803ACEC
|
|
b _0803AD4E
|
|
.align 2, 0
|
|
_0803ACE4: .4byte 0x02023D08
|
|
_0803ACE8: .4byte 0x03005A64
|
|
_0803ACEC: .4byte 0x0803AD65
|
|
_0803ACF0:
|
|
movs r7, #0
|
|
add r6, sp, #4
|
|
mov r5, sp
|
|
_0803ACF6:
|
|
movs r0, #0x64
|
|
adds r1, r7, #0
|
|
muls r1, r0, r1
|
|
ldr r0, _0803AD24
|
|
adds r4, r1, r0
|
|
adds r0, r4, #0
|
|
movs r1, #0x41
|
|
bl GetMonData
|
|
cmp r0, #0
|
|
beq _0803AD1C
|
|
adds r0, r4, #0
|
|
movs r1, #0x41
|
|
bl GetMonData
|
|
movs r1, #0xce
|
|
lsls r1, r1, #1
|
|
cmp r0, r1
|
|
bne _0803AD2C
|
|
_0803AD1C:
|
|
ldr r0, _0803AD28
|
|
strh r0, [r5]
|
|
movs r0, #0
|
|
b _0803AD3E
|
|
.align 2, 0
|
|
_0803AD24: .4byte 0x02024190
|
|
_0803AD28: .4byte 0x0000FFFF
|
|
_0803AD2C:
|
|
adds r0, r4, #0
|
|
movs r1, #0x39
|
|
bl GetMonData
|
|
strh r0, [r5]
|
|
adds r0, r4, #0
|
|
movs r1, #0x37
|
|
bl GetMonData
|
|
_0803AD3E:
|
|
str r0, [r6]
|
|
adds r6, #8
|
|
adds r5, #8
|
|
adds r7, #1
|
|
cmp r7, #5
|
|
ble _0803ACF6
|
|
ldr r1, _0803AD5C
|
|
ldr r0, _0803AD60
|
|
_0803AD4E:
|
|
str r0, [r1]
|
|
_0803AD50:
|
|
add sp, #0x30
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803AD5C: .4byte 0x03005A64
|
|
_0803AD60: .4byte 0x0803AD9D
|
|
thumb_func_end BattleIntroDrawPartySummaryScreens
|
|
|
|
thumb_func_start BattleIntroPrintTrainerWantsToBattle
|
|
BattleIntroPrintTrainerWantsToBattle: @ 0x0803AD64
|
|
push {lr}
|
|
ldr r0, _0803AD8C
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803AD86
|
|
movs r0, #1
|
|
bl GetBattlerAtPosition
|
|
ldr r1, _0803AD90
|
|
strb r0, [r1]
|
|
ldrb r1, [r1]
|
|
movs r0, #0
|
|
bl PrepareStringBattle
|
|
ldr r1, _0803AD94
|
|
ldr r0, _0803AD98
|
|
str r0, [r1]
|
|
_0803AD86:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803AD8C: .4byte 0x02023D0C
|
|
_0803AD90: .4byte 0x02023D08
|
|
_0803AD94: .4byte 0x03005A64
|
|
_0803AD98: .4byte 0x0803ADC5
|
|
thumb_func_end BattleIntroPrintTrainerWantsToBattle
|
|
|
|
thumb_func_start BattleIntroPrintWildMonAttacked
|
|
BattleIntroPrintWildMonAttacked: @ 0x0803AD9C
|
|
push {lr}
|
|
ldr r0, _0803ADB8
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803ADB4
|
|
ldr r1, _0803ADBC
|
|
ldr r0, _0803ADC0
|
|
str r0, [r1]
|
|
movs r0, #0
|
|
movs r1, #0
|
|
bl PrepareStringBattle
|
|
_0803ADB4:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803ADB8: .4byte 0x02023D0C
|
|
_0803ADBC: .4byte 0x03005A64
|
|
_0803ADC0: .4byte 0x0803B011
|
|
thumb_func_end BattleIntroPrintWildMonAttacked
|
|
|
|
thumb_func_start BattleIntroPrintOpponentSendsOut
|
|
BattleIntroPrintOpponentSendsOut: @ 0x0803ADC4
|
|
push {lr}
|
|
ldr r0, _0803ADF4
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803AE14
|
|
ldr r0, _0803ADF8
|
|
ldr r2, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0803ADFC
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x12
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0803ADFC
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0x18
|
|
ands r1, r2
|
|
rsbs r0, r1, #0
|
|
orrs r0, r1
|
|
lsrs r0, r0, #0x1f
|
|
b _0803ADFE
|
|
.align 2, 0
|
|
_0803ADF4: .4byte 0x02023D0C
|
|
_0803ADF8: .4byte 0x02022C90
|
|
_0803ADFC:
|
|
movs r0, #1
|
|
_0803ADFE:
|
|
bl GetBattlerAtPosition
|
|
adds r1, r0, #0
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
movs r0, #1
|
|
bl PrepareStringBattle
|
|
ldr r1, _0803AE18
|
|
ldr r0, _0803AE1C
|
|
str r0, [r1]
|
|
_0803AE14:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803AE18: .4byte 0x03005A64
|
|
_0803AE1C: .4byte 0x0803AEA1
|
|
thumb_func_end BattleIntroPrintOpponentSendsOut
|
|
|
|
thumb_func_start BattleIntroOpponent2SendsOutMonAnimation
|
|
BattleIntroOpponent2SendsOutMonAnimation: @ 0x0803AE20
|
|
push {r4, r5, lr}
|
|
ldr r0, _0803AE8C
|
|
ldr r1, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803AE40
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x12
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803AE40
|
|
movs r5, #2
|
|
cmp r1, #0
|
|
bge _0803AE42
|
|
_0803AE40:
|
|
movs r5, #3
|
|
_0803AE42:
|
|
ldr r1, _0803AE90
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
ldr r0, _0803AE94
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _0803AE7E
|
|
adds r4, r1, #0
|
|
_0803AE52:
|
|
ldrb r0, [r4]
|
|
bl GetBattlerPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, r5
|
|
bne _0803AE6C
|
|
movs r0, #0
|
|
bl BtlController_EmitIntroTrainerBallThrow
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
_0803AE6C:
|
|
ldrb r0, [r4]
|
|
adds r0, #1
|
|
strb r0, [r4]
|
|
ldr r1, _0803AE94
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803AE52
|
|
_0803AE7E:
|
|
ldr r1, _0803AE98
|
|
ldr r0, _0803AE9C
|
|
str r0, [r1]
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803AE8C: .4byte 0x02022C90
|
|
_0803AE90: .4byte 0x02023D08
|
|
_0803AE94: .4byte 0x02023D10
|
|
_0803AE98: .4byte 0x03005A64
|
|
_0803AE9C: .4byte 0x0803AF59
|
|
thumb_func_end BattleIntroOpponent2SendsOutMonAnimation
|
|
|
|
thumb_func_start BattleIntroOpponent1SendsOutMonAnimation
|
|
BattleIntroOpponent1SendsOutMonAnimation: @ 0x0803AEA0
|
|
push {r4, r5, r6, lr}
|
|
ldr r0, _0803AEC8
|
|
ldr r2, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0803AEDC
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x12
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0803AEDC
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0x18
|
|
ands r1, r2
|
|
rsbs r0, r1, #0
|
|
orrs r0, r1
|
|
lsrs r5, r0, #0x1f
|
|
b _0803AEDE
|
|
.align 2, 0
|
|
_0803AEC8: .4byte 0x02022C90
|
|
_0803AECC:
|
|
ldr r1, _0803AED4
|
|
ldr r0, _0803AED8
|
|
b _0803AF34
|
|
.align 2, 0
|
|
_0803AED4: .4byte 0x03005A64
|
|
_0803AED8: .4byte 0x0803AE21
|
|
_0803AEDC:
|
|
movs r5, #1
|
|
_0803AEDE:
|
|
ldr r0, _0803AF3C
|
|
ldr r2, [r0]
|
|
cmp r2, #0
|
|
bne _0803AF36
|
|
ldr r0, _0803AF40
|
|
strb r2, [r0]
|
|
ldr r1, _0803AF44
|
|
adds r4, r0, #0
|
|
ldrb r1, [r1]
|
|
cmp r2, r1
|
|
bhs _0803AF30
|
|
adds r6, r4, #0
|
|
_0803AEF6:
|
|
ldrb r0, [r4]
|
|
bl GetBattlerPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, r5
|
|
bne _0803AF1C
|
|
movs r0, #0
|
|
bl BtlController_EmitIntroTrainerBallThrow
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
ldr r0, _0803AF48
|
|
ldr r0, [r0]
|
|
ldr r1, _0803AF4C
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803AECC
|
|
_0803AF1C:
|
|
ldrb r0, [r6]
|
|
adds r0, #1
|
|
strb r0, [r6]
|
|
ldr r1, _0803AF44
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r4, _0803AF40
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803AEF6
|
|
_0803AF30:
|
|
ldr r1, _0803AF50
|
|
ldr r0, _0803AF54
|
|
_0803AF34:
|
|
str r0, [r1]
|
|
_0803AF36:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803AF3C: .4byte 0x02023D0C
|
|
_0803AF40: .4byte 0x02023D08
|
|
_0803AF44: .4byte 0x02023D10
|
|
_0803AF48: .4byte 0x02022C90
|
|
_0803AF4C: .4byte 0x00008040
|
|
_0803AF50: .4byte 0x03005A64
|
|
_0803AF54: .4byte 0x0803AF59
|
|
thumb_func_end BattleIntroOpponent1SendsOutMonAnimation
|
|
|
|
thumb_func_start BattleIntroRecordMonsToDex
|
|
BattleIntroRecordMonsToDex: @ 0x0803AF58
|
|
push {r4, r5, r6, r7, lr}
|
|
ldr r0, _0803AFD0
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
bne _0803AFC8
|
|
ldr r2, _0803AFD4
|
|
strb r1, [r2]
|
|
ldr r0, _0803AFD8
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
bhs _0803AFC2
|
|
adds r4, r2, #0
|
|
ldr r6, _0803AFDC
|
|
movs r5, #0x58
|
|
adds r7, r6, #0
|
|
adds r7, #0x48
|
|
_0803AF78:
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bne _0803AFB0
|
|
ldr r0, _0803AFE0
|
|
ldr r0, [r0]
|
|
ldr r1, _0803AFE4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803AFB0
|
|
ldrb r0, [r4]
|
|
muls r0, r5, r0
|
|
adds r0, r0, r6
|
|
ldrh r0, [r0]
|
|
bl HoennToNationalOrder
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
ldrb r1, [r4]
|
|
muls r1, r5, r1
|
|
adds r1, r1, r7
|
|
ldr r2, [r1]
|
|
movs r1, #2
|
|
bl HandleSetPokedexFlag
|
|
_0803AFB0:
|
|
ldrb r0, [r4]
|
|
adds r0, #1
|
|
strb r0, [r4]
|
|
ldr r1, _0803AFD8
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803AF78
|
|
_0803AFC2:
|
|
ldr r1, _0803AFE8
|
|
ldr r0, _0803AFEC
|
|
str r0, [r1]
|
|
_0803AFC8:
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803AFD0: .4byte 0x02023D0C
|
|
_0803AFD4: .4byte 0x02023D08
|
|
_0803AFD8: .4byte 0x02023D10
|
|
_0803AFDC: .4byte 0x02023D28
|
|
_0803AFE0: .4byte 0x02022C90
|
|
_0803AFE4: .4byte 0x063F0902
|
|
_0803AFE8: .4byte 0x03005A64
|
|
_0803AFEC: .4byte 0x0803B011
|
|
thumb_func_end BattleIntroRecordMonsToDex
|
|
|
|
thumb_func_start sub_0803AFF0
|
|
sub_0803AFF0: @ 0x0803AFF0
|
|
push {lr}
|
|
ldr r0, _0803B004
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803B000
|
|
ldr r1, _0803B008
|
|
ldr r0, _0803B00C
|
|
str r0, [r1]
|
|
_0803B000:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803B004: .4byte 0x02023D0C
|
|
_0803B008: .4byte 0x03005A64
|
|
_0803B00C: .4byte 0x0803B011
|
|
thumb_func_end sub_0803AFF0
|
|
|
|
thumb_func_start BattleIntroPrintPlayerSendsOut
|
|
BattleIntroPrintPlayerSendsOut: @ 0x0803B010
|
|
push {lr}
|
|
ldr r0, _0803B060
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803B05C
|
|
ldr r1, _0803B064
|
|
ldr r2, [r1]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0803B038
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x12
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0803B038
|
|
movs r3, #1
|
|
cmp r2, #0
|
|
bge _0803B03A
|
|
_0803B038:
|
|
movs r3, #0
|
|
_0803B03A:
|
|
ldr r0, [r1]
|
|
movs r1, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803B056
|
|
adds r0, r3, #0
|
|
bl GetBattlerAtPosition
|
|
adds r1, r0, #0
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
movs r0, #1
|
|
bl PrepareStringBattle
|
|
_0803B056:
|
|
ldr r1, _0803B068
|
|
ldr r0, _0803B06C
|
|
str r0, [r1]
|
|
_0803B05C:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803B060: .4byte 0x02023D0C
|
|
_0803B064: .4byte 0x02022C90
|
|
_0803B068: .4byte 0x03005A64
|
|
_0803B06C: .4byte 0x0803B10D
|
|
thumb_func_end BattleIntroPrintPlayerSendsOut
|
|
|
|
thumb_func_start BattleIntroPlayer2SendsOutMonAnimation
|
|
BattleIntroPlayer2SendsOutMonAnimation: @ 0x0803B070
|
|
push {r4, r5, lr}
|
|
ldr r0, _0803B0F4
|
|
ldr r1, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803B090
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x12
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803B090
|
|
movs r5, #3
|
|
cmp r1, #0
|
|
bge _0803B092
|
|
_0803B090:
|
|
movs r5, #2
|
|
_0803B092:
|
|
ldr r1, _0803B0F8
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
ldr r0, _0803B0FC
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _0803B0CE
|
|
adds r4, r1, #0
|
|
_0803B0A2:
|
|
ldrb r0, [r4]
|
|
bl GetBattlerPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, r5
|
|
bne _0803B0BC
|
|
movs r0, #0
|
|
bl BtlController_EmitIntroTrainerBallThrow
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
_0803B0BC:
|
|
ldrb r0, [r4]
|
|
adds r0, #1
|
|
strb r0, [r4]
|
|
ldr r1, _0803B0FC
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803B0A2
|
|
_0803B0CE:
|
|
ldr r2, _0803B100
|
|
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, r2, #1
|
|
adds r0, r0, r2
|
|
strb r1, [r0]
|
|
ldr r1, _0803B104
|
|
ldr r0, _0803B108
|
|
str r0, [r1]
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803B0F4: .4byte 0x02022C90
|
|
_0803B0F8: .4byte 0x02023D08
|
|
_0803B0FC: .4byte 0x02023D10
|
|
_0803B100: .4byte 0x02024140
|
|
_0803B104: .4byte 0x03005A64
|
|
_0803B108: .4byte 0x0803B26D
|
|
thumb_func_end BattleIntroPlayer2SendsOutMonAnimation
|
|
|
|
thumb_func_start BattleIntroPlayer1SendsOutMonAnimation
|
|
BattleIntroPlayer1SendsOutMonAnimation: @ 0x0803B10C
|
|
push {r4, r5, r6, lr}
|
|
ldr r0, _0803B130
|
|
ldr r1, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803B144
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x12
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803B144
|
|
movs r6, #1
|
|
cmp r1, #0
|
|
bge _0803B146
|
|
b _0803B144
|
|
.align 2, 0
|
|
_0803B130: .4byte 0x02022C90
|
|
_0803B134:
|
|
ldr r1, _0803B13C
|
|
ldr r0, _0803B140
|
|
b _0803B1B6
|
|
.align 2, 0
|
|
_0803B13C: .4byte 0x03005A64
|
|
_0803B140: .4byte 0x0803B071
|
|
_0803B144:
|
|
movs r6, #0
|
|
_0803B146:
|
|
ldr r0, _0803B1C0
|
|
ldr r2, [r0]
|
|
cmp r2, #0
|
|
bne _0803B1B8
|
|
ldr r0, _0803B1C4
|
|
strb r2, [r0]
|
|
ldr r1, _0803B1C8
|
|
adds r4, r0, #0
|
|
ldrb r1, [r1]
|
|
cmp r2, r1
|
|
bhs _0803B198
|
|
adds r5, r4, #0
|
|
_0803B15E:
|
|
ldrb r0, [r4]
|
|
bl GetBattlerPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, r6
|
|
bne _0803B184
|
|
movs r0, #0
|
|
bl BtlController_EmitIntroTrainerBallThrow
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
ldr r0, _0803B1CC
|
|
ldr r0, [r0]
|
|
movs r1, #0x40
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803B134
|
|
_0803B184:
|
|
ldrb r0, [r5]
|
|
adds r0, #1
|
|
strb r0, [r5]
|
|
ldr r1, _0803B1C8
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r4, _0803B1C4
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803B15E
|
|
_0803B198:
|
|
ldr r2, _0803B1D0
|
|
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, r2, #1
|
|
adds r0, r0, r2
|
|
strb r1, [r0]
|
|
ldr r1, _0803B1D4
|
|
ldr r0, _0803B1D8
|
|
_0803B1B6:
|
|
str r0, [r1]
|
|
_0803B1B8:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803B1C0: .4byte 0x02023D0C
|
|
_0803B1C4: .4byte 0x02023D08
|
|
_0803B1C8: .4byte 0x02023D10
|
|
_0803B1CC: .4byte 0x02022C90
|
|
_0803B1D0: .4byte 0x02024140
|
|
_0803B1D4: .4byte 0x03005A64
|
|
_0803B1D8: .4byte 0x0803B26D
|
|
thumb_func_end BattleIntroPlayer1SendsOutMonAnimation
|
|
|
|
thumb_func_start sub_0803B1DC
|
|
sub_0803B1DC: @ 0x0803B1DC
|
|
push {r4, r5, lr}
|
|
ldr r0, _0803B250
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
bne _0803B24A
|
|
ldr r2, _0803B254
|
|
strb r1, [r2]
|
|
ldr r0, _0803B258
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
bhs _0803B22A
|
|
adds r4, r2, #0
|
|
ldr r5, _0803B25C
|
|
_0803B1F6:
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803B218
|
|
ldrb r0, [r4]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r5
|
|
ldrb r1, [r0]
|
|
movs r0, #0
|
|
movs r2, #0
|
|
bl BtlController_EmitSwitchInAnim
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
_0803B218:
|
|
ldrb r0, [r4]
|
|
adds r0, #1
|
|
strb r0, [r4]
|
|
ldr r1, _0803B258
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803B1F6
|
|
_0803B22A:
|
|
ldr r2, _0803B260
|
|
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, r2, #1
|
|
adds r0, r0, r2
|
|
strb r1, [r0]
|
|
ldr r1, _0803B264
|
|
ldr r0, _0803B268
|
|
str r0, [r1]
|
|
_0803B24A:
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803B250: .4byte 0x02023D0C
|
|
_0803B254: .4byte 0x02023D08
|
|
_0803B258: .4byte 0x02023D10
|
|
_0803B25C: .4byte 0x02023D12
|
|
_0803B260: .4byte 0x02024140
|
|
_0803B264: .4byte 0x03005A64
|
|
_0803B268: .4byte 0x0803B26D
|
|
thumb_func_end sub_0803B1DC
|
|
|
|
thumb_func_start TryDoEventsBeforeFirstTurn
|
|
TryDoEventsBeforeFirstTurn: @ 0x0803B26C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #4
|
|
movs r0, #0
|
|
mov sb, r0
|
|
ldr r0, _0803B2B0
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _0803B286
|
|
b _0803B4F6
|
|
_0803B286:
|
|
ldr r0, _0803B2B4
|
|
ldr r0, [r0]
|
|
adds r0, #0x4c
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803B306
|
|
movs r5, #0
|
|
ldr r1, _0803B2B8
|
|
mov sl, r1
|
|
ldrb r3, [r1]
|
|
cmp r5, r3
|
|
bge _0803B2AC
|
|
ldr r2, _0803B2BC
|
|
_0803B2A0:
|
|
adds r0, r5, r2
|
|
strb r5, [r0]
|
|
adds r5, #1
|
|
ldrb r0, [r1]
|
|
cmp r5, r0
|
|
blt _0803B2A0
|
|
_0803B2AC:
|
|
movs r5, #0
|
|
b _0803B2FC
|
|
.align 2, 0
|
|
_0803B2B0: .4byte 0x02023D0C
|
|
_0803B2B4: .4byte 0x02024140
|
|
_0803B2B8: .4byte 0x02023D10
|
|
_0803B2BC: .4byte 0x02023D22
|
|
_0803B2C0:
|
|
adds r4, r5, #1
|
|
mov r8, r4
|
|
ldrb r1, [r1]
|
|
cmp r8, r1
|
|
bge _0803B2FA
|
|
ldr r6, _0803B334
|
|
ldr r1, _0803B338
|
|
mov sl, r1
|
|
lsls r7, r5, #0x18
|
|
_0803B2D2:
|
|
adds r0, r5, r6
|
|
ldrb r0, [r0]
|
|
adds r1, r4, r6
|
|
ldrb r1, [r1]
|
|
movs r2, #1
|
|
bl GetWhoStrikesFirst
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803B2F0
|
|
lsls r1, r4, #0x18
|
|
lsrs r1, r1, #0x18
|
|
lsrs r0, r7, #0x18
|
|
bl SwapTurnOrder
|
|
_0803B2F0:
|
|
adds r4, #1
|
|
ldr r0, _0803B338
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _0803B2D2
|
|
_0803B2FA:
|
|
mov r5, r8
|
|
_0803B2FC:
|
|
mov r1, sl
|
|
ldrb r0, [r1]
|
|
subs r0, #1
|
|
cmp r5, r0
|
|
blt _0803B2C0
|
|
_0803B306:
|
|
ldr r5, _0803B33C
|
|
ldr r0, [r5]
|
|
movs r4, #0xd1
|
|
lsls r4, r4, #1
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803B340
|
|
str r0, [sp]
|
|
movs r0, #0
|
|
movs r1, #0
|
|
movs r2, #0
|
|
movs r3, #0xff
|
|
bl AbilityBattleEffects
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803B340
|
|
ldr r0, [r5]
|
|
adds r0, r0, r4
|
|
movs r1, #1
|
|
strb r1, [r0]
|
|
b _0803B4F6
|
|
.align 2, 0
|
|
_0803B334: .4byte 0x02023D22
|
|
_0803B338: .4byte 0x02023D10
|
|
_0803B33C: .4byte 0x02024140
|
|
_0803B340:
|
|
ldr r2, _0803B508
|
|
ldr r0, [r2]
|
|
adds r0, #0x4c
|
|
ldr r1, _0803B50C
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bhs _0803B39A
|
|
ldr r5, _0803B510
|
|
adds r4, r2, #0
|
|
_0803B354:
|
|
ldr r0, [r4]
|
|
adds r0, #0x4c
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r5
|
|
ldrb r1, [r0]
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
movs r2, #0
|
|
movs r3, #0
|
|
bl AbilityBattleEffects
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803B37A
|
|
mov r0, sb
|
|
adds r0, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
mov sb, r0
|
|
_0803B37A:
|
|
ldr r1, [r4]
|
|
adds r1, #0x4c
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
mov r3, sb
|
|
cmp r3, #0
|
|
beq _0803B38C
|
|
b _0803B4F6
|
|
_0803B38C:
|
|
ldr r0, [r4]
|
|
adds r0, #0x4c
|
|
ldr r1, _0803B50C
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803B354
|
|
_0803B39A:
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
movs r0, #9
|
|
movs r1, #0
|
|
movs r2, #0
|
|
movs r3, #0
|
|
bl AbilityBattleEffects
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803B3B4
|
|
b _0803B4F6
|
|
_0803B3B4:
|
|
str r0, [sp]
|
|
movs r0, #0xb
|
|
movs r1, #0
|
|
movs r2, #0
|
|
movs r3, #0
|
|
bl AbilityBattleEffects
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803B3CA
|
|
b _0803B4F6
|
|
_0803B3CA:
|
|
ldr r2, _0803B508
|
|
ldr r0, [r2]
|
|
adds r0, #0xd9
|
|
ldr r1, _0803B50C
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bhs _0803B41E
|
|
ldr r5, _0803B510
|
|
adds r4, r2, #0
|
|
_0803B3DE:
|
|
ldr r0, [r4]
|
|
adds r0, #0xd9
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r5
|
|
ldrb r1, [r0]
|
|
movs r0, #0
|
|
movs r2, #0
|
|
bl ItemBattleEffects
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803B400
|
|
mov r0, sb
|
|
adds r0, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
mov sb, r0
|
|
_0803B400:
|
|
ldr r1, [r4]
|
|
adds r1, #0xd9
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
mov r0, sb
|
|
cmp r0, #0
|
|
bne _0803B4F6
|
|
ldr r0, [r4]
|
|
adds r0, #0xd9
|
|
ldr r1, _0803B50C
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803B3DE
|
|
_0803B41E:
|
|
movs r5, #0
|
|
ldr r1, _0803B508
|
|
mov r8, r1
|
|
movs r7, #6
|
|
ldr r6, _0803B514
|
|
ldr r2, _0803B518
|
|
movs r4, #0xff
|
|
movs r3, #0
|
|
_0803B42E:
|
|
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, #2
|
|
adds r5, #1
|
|
cmp r5, #3
|
|
ble _0803B42E
|
|
movs r0, #0
|
|
bl TurnValuesCleanUp
|
|
bl SpecialStatusesClear
|
|
ldr r0, _0803B508
|
|
ldr r0, [r0]
|
|
adds r0, #0x91
|
|
ldr r1, _0803B51C
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
ldr r0, _0803B520
|
|
movs r1, #0
|
|
bl sub_0814FA04
|
|
ldr r1, _0803B524
|
|
ldr r0, _0803B528
|
|
str r0, [r1]
|
|
bl ResetSentPokesToOpponentValue
|
|
ldr r1, _0803B52C
|
|
movs r2, #0
|
|
adds r0, r1, #7
|
|
_0803B478:
|
|
strb r2, [r0]
|
|
subs r0, #1
|
|
cmp r0, r1
|
|
bge _0803B478
|
|
movs r5, #0
|
|
ldr r3, _0803B50C
|
|
ldr r2, _0803B508
|
|
ldr r6, _0803B530
|
|
ldr r7, _0803B534
|
|
ldrb r0, [r3]
|
|
cmp r5, r0
|
|
bge _0803B4AA
|
|
ldr r0, _0803B538
|
|
movs r4, #9
|
|
rsbs r4, r4, #0
|
|
adds r1, r0, #0
|
|
adds r1, #0x50
|
|
_0803B49A:
|
|
ldr r0, [r1]
|
|
ands r0, r4
|
|
str r0, [r1]
|
|
adds r1, #0x58
|
|
adds r5, #1
|
|
ldrb r0, [r3]
|
|
cmp r5, r0
|
|
blt _0803B49A
|
|
_0803B4AA:
|
|
ldr r0, [r2]
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
strb r1, [r0, #1]
|
|
ldr r0, [r2]
|
|
movs r3, #0xd0
|
|
lsls r3, r3, #1
|
|
adds r0, r0, r3
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
adds r3, #1
|
|
adds r0, 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, #3]
|
|
strb r1, [r7]
|
|
bl Random
|
|
ldr r1, _0803B53C
|
|
strh r0, [r1]
|
|
ldr r0, _0803B540
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xb
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803B4F6
|
|
bl StopCryAndClearCrySongs
|
|
ldr r0, _0803B544
|
|
bl BattleScriptExecute
|
|
_0803B4F6:
|
|
add sp, #4
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803B508: .4byte 0x02024140
|
|
_0803B50C: .4byte 0x02023D10
|
|
_0803B510: .4byte 0x02023D22
|
|
_0803B514: .4byte 0x02023EC0
|
|
_0803B518: .4byte 0x02023F18
|
|
_0803B51C: .4byte 0x02023EB4
|
|
_0803B520: .4byte 0x085AB3BD
|
|
_0803B524: .4byte 0x03005A64
|
|
_0803B528: .4byte 0x0803BAB9
|
|
_0803B52C: .4byte 0x02023FD6
|
|
_0803B530: .4byte 0x02024118
|
|
_0803B534: .4byte 0x02023F20
|
|
_0803B538: .4byte 0x02023D28
|
|
_0803B53C: .4byte 0x02023FD4
|
|
_0803B540: .4byte 0x02022C90
|
|
_0803B544: .4byte 0x08289E46
|
|
thumb_func_end TryDoEventsBeforeFirstTurn
|
|
|
|
thumb_func_start HandleEndTurn_ContinueBattle
|
|
HandleEndTurn_ContinueBattle: @ 0x0803B548
|
|
push {r4, r5, r6, lr}
|
|
ldr r0, _0803B5E0
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803B5D8
|
|
ldr r1, _0803B5E4
|
|
ldr r0, _0803B5E8
|
|
str r0, [r1]
|
|
ldr r3, _0803B5EC
|
|
ldr r1, _0803B5F0
|
|
movs r2, #0
|
|
adds r0, r1, #7
|
|
_0803B560:
|
|
strb r2, [r0]
|
|
subs r0, #1
|
|
cmp r0, r1
|
|
bge _0803B560
|
|
movs r4, #0
|
|
ldrb r3, [r3]
|
|
cmp r4, r3
|
|
bge _0803B5B2
|
|
ldr r5, _0803B5F4
|
|
adds r6, r5, #0
|
|
adds r6, #0x4c
|
|
_0803B576:
|
|
movs r0, #0x58
|
|
adds r2, r4, #0
|
|
muls r2, r0, r2
|
|
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, r2, r6
|
|
ldr r0, [r2]
|
|
movs r1, #7
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803B5A8
|
|
movs r0, #0x80
|
|
lsls r0, r0, #5
|
|
ands r3, r0
|
|
cmp r3, #0
|
|
beq _0803B5A8
|
|
lsls r0, r4, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl CancelMultiTurnMoves
|
|
_0803B5A8:
|
|
adds r4, #1
|
|
ldr r0, _0803B5EC
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _0803B576
|
|
_0803B5B2:
|
|
ldr r2, _0803B5F8
|
|
ldr r0, [r2]
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
strb r1, [r0, #1]
|
|
ldr r0, [r2]
|
|
movs r3, #0xd0
|
|
lsls r3, r3, #1
|
|
adds r0, r0, r3
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
adds r3, #1
|
|
adds r0, r0, r3
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
strb r1, [r0, #3]
|
|
ldr r0, _0803B5FC
|
|
strb r1, [r0]
|
|
_0803B5D8:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803B5E0: .4byte 0x02023D0C
|
|
_0803B5E4: .4byte 0x03005A64
|
|
_0803B5E8: .4byte 0x0803B601
|
|
_0803B5EC: .4byte 0x02023D10
|
|
_0803B5F0: .4byte 0x02023FD6
|
|
_0803B5F4: .4byte 0x02023D28
|
|
_0803B5F8: .4byte 0x02024140
|
|
_0803B5FC: .4byte 0x02023F20
|
|
thumb_func_end HandleEndTurn_ContinueBattle
|
|
|
|
thumb_func_start BattleTurnPassed
|
|
BattleTurnPassed: @ 0x0803B600
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sb
|
|
mov r6, r8
|
|
push {r6, r7}
|
|
movs r0, #1
|
|
bl TurnValuesCleanUp
|
|
ldr r0, _0803B6A4
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803B62E
|
|
bl DoFieldEndTurnEffects
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803B622
|
|
b _0803B7BC
|
|
_0803B622:
|
|
bl BattleScriptPop
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803B62E
|
|
b _0803B7BC
|
|
_0803B62E:
|
|
bl HandleFaintedMonActions
|
|
lsls r0, r0, #0x18
|
|
lsrs r1, r0, #0x18
|
|
cmp r1, #0
|
|
beq _0803B63C
|
|
b _0803B7BC
|
|
_0803B63C:
|
|
ldr r0, _0803B6A8
|
|
ldr r0, [r0]
|
|
adds r0, #0x4d
|
|
strb r1, [r0]
|
|
bl HandleWishPerishSongOnTurnEnd
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
cmp r4, #0
|
|
beq _0803B652
|
|
b _0803B7BC
|
|
_0803B652:
|
|
movs r0, #0
|
|
bl TurnValuesCleanUp
|
|
ldr r2, _0803B6AC
|
|
ldr r0, [r2]
|
|
ldr r1, _0803B6B0
|
|
ands r0, r1
|
|
ldr r1, _0803B6B4
|
|
ands r0, r1
|
|
ldr r1, _0803B6B8
|
|
ands r0, r1
|
|
ldr r1, _0803B6BC
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r0, _0803B6C0
|
|
strb r4, [r0, #0x18]
|
|
strb r4, [r0, #0x19]
|
|
strb r4, [r0, #0x14]
|
|
ldr r0, _0803B6C4
|
|
str r4, [r0]
|
|
ldr r0, _0803B6C8
|
|
strb r4, [r0]
|
|
ldr r1, _0803B6CC
|
|
movs r2, #0
|
|
adds r0, r1, #4
|
|
_0803B684:
|
|
strb r2, [r0]
|
|
subs r0, #1
|
|
cmp r0, r1
|
|
bge _0803B684
|
|
ldr r0, _0803B6A4
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _0803B6DC
|
|
ldr r1, _0803B6D0
|
|
movs r0, #0xc
|
|
strb r0, [r1]
|
|
ldr r1, _0803B6D4
|
|
ldr r0, _0803B6D8
|
|
str r0, [r1]
|
|
b _0803B7BC
|
|
.align 2, 0
|
|
_0803B6A4: .4byte 0x02023FDE
|
|
_0803B6A8: .4byte 0x02024140
|
|
_0803B6AC: .4byte 0x02023F24
|
|
_0803B6B0: .4byte 0xFFFFFDFF
|
|
_0803B6B4: .4byte 0xFFF7FFFF
|
|
_0803B6B8: .4byte 0xFFBFFFFF
|
|
_0803B6BC: .4byte 0xFFEFFFFF
|
|
_0803B6C0: .4byte 0x02024118
|
|
_0803B6C4: .4byte 0x02023E94
|
|
_0803B6C8: .4byte 0x02023F20
|
|
_0803B6CC: .4byte 0x02023FD6
|
|
_0803B6D0: .4byte 0x02023D27
|
|
_0803B6D4: .4byte 0x03005A64
|
|
_0803B6D8: .4byte 0x0803D45D
|
|
_0803B6DC:
|
|
ldr r1, _0803B770
|
|
ldrb r0, [r1, #0x13]
|
|
ldr r2, _0803B774
|
|
mov r8, r2
|
|
cmp r0, #0xfe
|
|
bhi _0803B6F6
|
|
adds r0, #1
|
|
strb r0, [r1, #0x13]
|
|
ldr r1, [r2]
|
|
adds r1, #0xda
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
_0803B6F6:
|
|
movs r2, #0
|
|
ldr r4, _0803B778
|
|
ldr r0, _0803B77C
|
|
mov ip, r0
|
|
ldr r1, _0803B780
|
|
mov sb, r1
|
|
ldrb r0, [r4]
|
|
cmp r2, r0
|
|
bge _0803B724
|
|
ldr r7, _0803B784
|
|
movs r6, #0xff
|
|
movs r5, #0
|
|
ldr r3, _0803B788
|
|
_0803B710:
|
|
adds r1, r2, r7
|
|
ldrb r0, [r1]
|
|
orrs r0, r6
|
|
strb r0, [r1]
|
|
strh r5, [r3]
|
|
adds r3, #2
|
|
adds r2, #1
|
|
ldrb r1, [r4]
|
|
cmp r2, r1
|
|
blt _0803B710
|
|
_0803B724:
|
|
movs r2, #0
|
|
ldr r3, _0803B774
|
|
movs r1, #6
|
|
_0803B72A:
|
|
ldr r0, [r3]
|
|
adds r0, r2, r0
|
|
adds r0, #0x5c
|
|
strb r1, [r0]
|
|
adds r2, #1
|
|
cmp r2, #3
|
|
ble _0803B72A
|
|
mov r2, r8
|
|
ldr r0, [r2]
|
|
adds r0, #0x91
|
|
mov r2, ip
|
|
ldrb r1, [r2]
|
|
strb r1, [r0]
|
|
mov r0, sb
|
|
movs r1, #0
|
|
bl sub_0814FA04
|
|
ldr r1, _0803B78C
|
|
ldr r0, _0803B790
|
|
str r0, [r1]
|
|
bl Random
|
|
ldr r1, _0803B794
|
|
strh r0, [r1]
|
|
ldr r0, _0803B798
|
|
ldr r1, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xa
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803B7A0
|
|
ldr r0, _0803B79C
|
|
bl BattleScriptExecute
|
|
b _0803B7BC
|
|
.align 2, 0
|
|
_0803B770: .4byte 0x03005A70
|
|
_0803B774: .4byte 0x02024140
|
|
_0803B778: .4byte 0x02023D10
|
|
_0803B77C: .4byte 0x02023EB4
|
|
_0803B780: .4byte 0x085AB3BD
|
|
_0803B784: .4byte 0x02023EC0
|
|
_0803B788: .4byte 0x02023F18
|
|
_0803B78C: .4byte 0x03005A64
|
|
_0803B790: .4byte 0x0803BAB9
|
|
_0803B794: .4byte 0x02023FD4
|
|
_0803B798: .4byte 0x02022C90
|
|
_0803B79C: .4byte 0x08289E09
|
|
_0803B7A0:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xb
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803B7BC
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
adds r0, #0xda
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803B7BC
|
|
ldr r0, _0803B7C8
|
|
bl BattleScriptExecute
|
|
_0803B7BC:
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803B7C8: .4byte 0x08289E46
|
|
thumb_func_end BattleTurnPassed
|
|
|
|
thumb_func_start IsRunningFromBattleImpossible
|
|
IsRunningFromBattleImpossible: @ 0x0803B7CC
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #4
|
|
ldr r1, _0803B7F0
|
|
ldr r0, _0803B7F4
|
|
ldrb r2, [r0]
|
|
movs r0, #0x58
|
|
muls r0, r2, r0
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, #0x2e]
|
|
cmp r0, #0xaf
|
|
bne _0803B7FC
|
|
ldr r1, _0803B7F8
|
|
lsls r0, r2, #3
|
|
subs r0, r0, r2
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldrb r2, [r0, #7]
|
|
b _0803B806
|
|
.align 2, 0
|
|
_0803B7F0: .4byte 0x02023D28
|
|
_0803B7F4: .4byte 0x02023D08
|
|
_0803B7F8: .4byte 0x020240A8
|
|
_0803B7FC:
|
|
ldrh r0, [r1, #0x2e]
|
|
bl sub_080D6CF8
|
|
lsls r0, r0, #0x18
|
|
lsrs r2, r0, #0x18
|
|
_0803B806:
|
|
ldr r1, _0803B91C
|
|
ldr r3, _0803B920
|
|
ldrb r0, [r3]
|
|
strb r0, [r1]
|
|
cmp r2, #0x25
|
|
bne _0803B814
|
|
b _0803B990
|
|
_0803B814:
|
|
ldr r0, _0803B924
|
|
ldr r0, [r0]
|
|
movs r1, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803B822
|
|
b _0803B990
|
|
_0803B822:
|
|
ldr r1, _0803B928
|
|
ldrb r2, [r3]
|
|
movs r0, #0x58
|
|
muls r0, r2, r0
|
|
adds r0, r0, r1
|
|
adds r0, #0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x32
|
|
bne _0803B836
|
|
b _0803B990
|
|
_0803B836:
|
|
adds r0, r2, #0
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
movs r5, #0
|
|
ldr r0, _0803B92C
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
bge _0803B8CA
|
|
movs r7, #0
|
|
_0803B84C:
|
|
lsrs r4, r7, #0x18
|
|
adds r0, r4, #0
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r6, r0
|
|
beq _0803B870
|
|
ldr r1, _0803B928
|
|
movs r0, #0x58
|
|
muls r0, r5, r0
|
|
adds r0, r0, r1
|
|
adds r2, r0, #0
|
|
adds r2, #0x20
|
|
ldrb r0, [r2]
|
|
cmp r0, #0x17
|
|
bne _0803B870
|
|
b _0803B998
|
|
_0803B870:
|
|
adds r0, r4, #0
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r6, r0
|
|
beq _0803B8BA
|
|
ldr r3, _0803B928
|
|
ldr r0, _0803B920
|
|
ldrb r0, [r0]
|
|
movs r2, #0x58
|
|
muls r0, r2, r0
|
|
adds r1, r0, r3
|
|
adds r0, r1, #0
|
|
adds r0, #0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x1a
|
|
beq _0803B8BA
|
|
adds r0, r1, #0
|
|
adds r0, #0x21
|
|
ldrb r0, [r0]
|
|
cmp r0, #2
|
|
beq _0803B8BA
|
|
adds r0, r1, #0
|
|
adds r0, #0x22
|
|
ldrb r0, [r0]
|
|
cmp r0, #2
|
|
beq _0803B8BA
|
|
adds r0, r5, #0
|
|
muls r0, r2, r0
|
|
adds r0, r0, r3
|
|
adds r2, r0, #0
|
|
adds r2, #0x20
|
|
ldrb r0, [r2]
|
|
cmp r0, #0x47
|
|
bne _0803B8BA
|
|
b _0803B9B4
|
|
_0803B8BA:
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x11
|
|
adds r7, r7, r0
|
|
adds r5, #1
|
|
ldr r0, _0803B92C
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
blt _0803B84C
|
|
_0803B8CA:
|
|
ldr r4, _0803B920
|
|
ldrb r1, [r4]
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
movs r0, #0xf
|
|
movs r2, #0x2a
|
|
movs r3, #0
|
|
bl AbilityBattleEffects
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
cmp r5, #0
|
|
beq _0803B93C
|
|
ldr r6, _0803B928
|
|
ldrb r0, [r4]
|
|
movs r3, #0x58
|
|
muls r0, r3, r0
|
|
adds r1, r0, r6
|
|
adds r0, r1, #0
|
|
adds r0, #0x21
|
|
ldrb r0, [r0]
|
|
cmp r0, #8
|
|
beq _0803B902
|
|
adds r0, r1, #0
|
|
adds r0, #0x22
|
|
ldrb r0, [r0]
|
|
cmp r0, #8
|
|
bne _0803B93C
|
|
_0803B902:
|
|
ldr r0, _0803B930
|
|
subs r1, r5, #1
|
|
strb r1, [r0, #0x17]
|
|
ldr r2, _0803B934
|
|
adds r0, r1, #0
|
|
muls r0, r3, r0
|
|
adds r0, r0, r6
|
|
adds r0, #0x20
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
ldr r1, _0803B938
|
|
movs r0, #2
|
|
b _0803B9D4
|
|
.align 2, 0
|
|
_0803B91C: .4byte 0x02023EB3
|
|
_0803B920: .4byte 0x02023D08
|
|
_0803B924: .4byte 0x02022C90
|
|
_0803B928: .4byte 0x02023D28
|
|
_0803B92C: .4byte 0x02023D10
|
|
_0803B930: .4byte 0x02024118
|
|
_0803B934: .4byte 0x02023EAE
|
|
_0803B938: .4byte 0x02023FD6
|
|
_0803B93C:
|
|
ldr r1, _0803B970
|
|
ldr r0, _0803B974
|
|
ldrb r2, [r0]
|
|
movs r0, #0x58
|
|
muls r0, r2, r0
|
|
adds r1, #0x50
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
ldr r1, _0803B978
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803B966
|
|
ldr r1, _0803B97C
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #3
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803B984
|
|
_0803B966:
|
|
ldr r1, _0803B980
|
|
movs r0, #0
|
|
strb r0, [r1, #5]
|
|
movs r0, #1
|
|
b _0803B9D6
|
|
.align 2, 0
|
|
_0803B970: .4byte 0x02023D28
|
|
_0803B974: .4byte 0x02023D08
|
|
_0803B978: .4byte 0x0400E000
|
|
_0803B97C: .4byte 0x02023F50
|
|
_0803B980: .4byte 0x02023FD6
|
|
_0803B984:
|
|
ldr r0, _0803B994
|
|
ldr r0, [r0]
|
|
movs r1, #0x10
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803B9D0
|
|
_0803B990:
|
|
movs r0, #0
|
|
b _0803B9D6
|
|
.align 2, 0
|
|
_0803B994: .4byte 0x02022C90
|
|
_0803B998:
|
|
ldr r0, _0803B9A8
|
|
strb r5, [r0, #0x17]
|
|
ldr r1, _0803B9AC
|
|
ldrb r0, [r2]
|
|
strb r0, [r1]
|
|
ldr r1, _0803B9B0
|
|
movs r0, #2
|
|
b _0803B9D4
|
|
.align 2, 0
|
|
_0803B9A8: .4byte 0x02024118
|
|
_0803B9AC: .4byte 0x02023EAE
|
|
_0803B9B0: .4byte 0x02023FD6
|
|
_0803B9B4:
|
|
ldr r0, _0803B9C4
|
|
strb r5, [r0, #0x17]
|
|
ldr r1, _0803B9C8
|
|
ldrb r0, [r2]
|
|
strb r0, [r1]
|
|
ldr r1, _0803B9CC
|
|
movs r0, #2
|
|
b _0803B9D4
|
|
.align 2, 0
|
|
_0803B9C4: .4byte 0x02024118
|
|
_0803B9C8: .4byte 0x02023EAE
|
|
_0803B9CC: .4byte 0x02023FD6
|
|
_0803B9D0:
|
|
ldr r1, _0803B9E0
|
|
movs r0, #1
|
|
_0803B9D4:
|
|
strb r0, [r1, #5]
|
|
_0803B9D6:
|
|
add sp, #4
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0803B9E0: .4byte 0x02023FD6
|
|
thumb_func_end IsRunningFromBattleImpossible
|
|
|
|
thumb_func_start sub_0803B9E4
|
|
sub_0803B9E4: @ 0x0803B9E4
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
movs r3, #0
|
|
ldr r0, _0803BA80
|
|
mov r8, r0
|
|
ldr r1, _0803BA84
|
|
mov ip, r1
|
|
ldr r7, _0803BA88
|
|
lsls r0, r5, #1
|
|
adds r4, r0, r5
|
|
adds r6, r0, #0
|
|
_0803BA00:
|
|
mov r0, ip
|
|
adds r2, r3, r0
|
|
ldr r1, [r7]
|
|
adds r0, r4, r3
|
|
adds r0, r0, r1
|
|
adds r0, #0x60
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
adds r3, #1
|
|
cmp r3, #2
|
|
ble _0803BA00
|
|
mov r1, r8
|
|
adds r0, r6, r1
|
|
ldrb r0, [r0]
|
|
bl pokemon_order_func
|
|
adds r4, r0, #0
|
|
lsls r4, r4, #0x18
|
|
lsrs r4, r4, #0x18
|
|
ldr r7, _0803BA88
|
|
ldr r0, [r7]
|
|
adds r0, r5, r0
|
|
adds r0, #0x5c
|
|
ldrb r0, [r0]
|
|
bl pokemon_order_func
|
|
adds r1, r0, #0
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
adds r0, r4, #0
|
|
bl sub_081B8C50
|
|
ldr r0, _0803BA8C
|
|
ldr r0, [r0]
|
|
movs r1, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803BA90
|
|
movs r3, #0
|
|
adds r4, r7, #0
|
|
adds r6, r6, r5
|
|
movs r0, #2
|
|
adds r1, r5, #0
|
|
eors r1, r0
|
|
ldr r7, _0803BA84
|
|
lsls r0, r1, #1
|
|
adds r5, r0, r1
|
|
_0803BA5E:
|
|
ldr r0, [r4]
|
|
adds r1, r6, r3
|
|
adds r1, r1, r0
|
|
adds r1, #0x60
|
|
adds r2, r3, r7
|
|
ldrb r0, [r2]
|
|
strb r0, [r1]
|
|
ldr r1, [r4]
|
|
adds r0, r5, r3
|
|
adds r0, r0, r1
|
|
adds r0, #0x60
|
|
ldrb r1, [r2]
|
|
strb r1, [r0]
|
|
adds r3, #1
|
|
cmp r3, #2
|
|
ble _0803BA5E
|
|
b _0803BAAA
|
|
.align 2, 0
|
|
_0803BA80: .4byte 0x02023D12
|
|
_0803BA84: .4byte 0x0203CBCC
|
|
_0803BA88: .4byte 0x02024140
|
|
_0803BA8C: .4byte 0x02022C90
|
|
_0803BA90:
|
|
movs r3, #0
|
|
adds r2, r6, r5
|
|
ldr r4, _0803BAB4
|
|
_0803BA96:
|
|
ldr r0, [r7]
|
|
adds r1, r2, r3
|
|
adds r1, r1, r0
|
|
adds r1, #0x60
|
|
adds r0, r3, r4
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r3, #1
|
|
cmp r3, #2
|
|
ble _0803BA96
|
|
_0803BAAA:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803BAB4: .4byte 0x0203CBCC
|
|
thumb_func_end sub_0803B9E4
|
|
|
|
thumb_func_start HandleAction_TryFinish
|
|
HandleAction_TryFinish: @ 0x0803BAB8
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x1c
|
|
ldr r0, _0803BAD4
|
|
movs r1, #0
|
|
strb r1, [r0, #4]
|
|
ldr r0, _0803BAD8
|
|
strb r1, [r0]
|
|
ldr r0, _0803BADC
|
|
bl _0803C956
|
|
.align 2, 0
|
|
_0803BAD4: .4byte 0x02023FD6
|
|
_0803BAD8: .4byte 0x02023D08
|
|
_0803BADC: .4byte 0x02023D10
|
|
thumb_func_end HandleAction_TryFinish
|
|
|
|
thumb_func_start HandleTurnActionSelectionState
|
|
HandleTurnActionSelectionState: @ 0x0803BAE0
|
|
ldr r4, _0803BB08
|
|
ldrb r0, [r4]
|
|
bl GetBattlerPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
ldr r1, _0803BB0C
|
|
ldrb r0, [r4]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, #8
|
|
bls _0803BAFC
|
|
bl _0803C948
|
|
_0803BAFC:
|
|
lsls r0, r0, #2
|
|
ldr r1, _0803BB10
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0803BB08: .4byte 0x02023D08
|
|
_0803BB0C: .4byte 0x02023FD6
|
|
_0803BB10: .4byte 0x0803BB14
|
|
_0803BB14: @ jump table
|
|
.4byte _0803BB38 @ case 0
|
|
.4byte _0803BB50 @ case 1
|
|
.4byte _0803BC70 @ case 2
|
|
.4byte _0803C41C @ case 3
|
|
.4byte _0803C714 @ case 4
|
|
.4byte _0803C7C8 @ case 5
|
|
.4byte _0803C80C @ case 6
|
|
.4byte _0803C838 @ case 7
|
|
.4byte _0803C87C @ case 8
|
|
_0803BB38:
|
|
bl RecordedBattle_CopyBattlerMoves
|
|
ldr r1, _0803BB48
|
|
ldr r0, _0803BB4C
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
bl _0803C864
|
|
.align 2, 0
|
|
_0803BB48: .4byte 0x02023FD6
|
|
_0803BB4C: .4byte 0x02023D08
|
|
_0803BB50:
|
|
ldr r0, _0803BBE8
|
|
ldrb r1, [r0]
|
|
ldr r4, _0803BBEC
|
|
ldr r0, [r4]
|
|
adds r1, r1, r0
|
|
adds r1, #0x5c
|
|
movs r0, #6
|
|
strb r0, [r1]
|
|
ldr r0, _0803BBF0
|
|
ldr r0, [r0]
|
|
movs r1, #0x40
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803BBAC
|
|
movs r1, #2
|
|
movs r0, #2
|
|
ands r0, r5
|
|
cmp r0, #0
|
|
beq _0803BBAC
|
|
eors r5, r1
|
|
adds r0, r5, #0
|
|
bl GetBattlerAtPosition
|
|
ldr r1, [r4]
|
|
adds r1, #0x91
|
|
ldrb r1, [r1]
|
|
ldr r2, _0803BBF4
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x16
|
|
adds r0, r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
bne _0803BBAC
|
|
ldr r4, _0803BBF8
|
|
adds r0, r5, #0
|
|
bl GetBattlerAtPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, #5
|
|
beq _0803BBAC
|
|
bl _0803C948
|
|
_0803BBAC:
|
|
ldr r0, _0803BBEC
|
|
ldr r0, [r0]
|
|
adds r0, #0x91
|
|
ldrb r3, [r0]
|
|
ldr r1, _0803BBF4
|
|
ldr r4, _0803BBE8
|
|
ldrb r2, [r4]
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
ands r3, r0
|
|
cmp r3, #0
|
|
beq _0803BC14
|
|
ldr r0, _0803BBFC
|
|
adds r0, r2, r0
|
|
movs r1, #0xd
|
|
strb r1, [r0]
|
|
ldr r0, _0803BBF0
|
|
ldr r0, [r0]
|
|
movs r1, #0x40
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803BC00
|
|
ldr r0, _0803BBF8
|
|
ldrb r1, [r4]
|
|
adds r1, r1, r0
|
|
movs r0, #5
|
|
strb r0, [r1]
|
|
bl _0803C948
|
|
.align 2, 0
|
|
_0803BBE8: .4byte 0x02023D08
|
|
_0803BBEC: .4byte 0x02024140
|
|
_0803BBF0: .4byte 0x02022C90
|
|
_0803BBF4: .4byte 0x082FACB4
|
|
_0803BBF8: .4byte 0x02023FD6
|
|
_0803BBFC: .4byte 0x02023EC0
|
|
_0803BC00:
|
|
ldr r0, _0803BC10
|
|
ldrb r1, [r4]
|
|
adds r1, r1, r0
|
|
movs r0, #4
|
|
strb r0, [r1]
|
|
bl _0803C948
|
|
.align 2, 0
|
|
_0803BC10: .4byte 0x02023FD6
|
|
_0803BC14:
|
|
ldr r1, _0803BC44
|
|
movs r0, #0x58
|
|
muls r0, r2, r0
|
|
adds r1, #0x50
|
|
adds r0, r0, r1
|
|
ldr r1, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #5
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803BC34
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0xf
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803BC50
|
|
_0803BC34:
|
|
ldr r0, _0803BC48
|
|
adds r0, r2, r0
|
|
strb r3, [r0]
|
|
ldr r1, _0803BC4C
|
|
ldrb r0, [r4]
|
|
bl _0803C8B6
|
|
.align 2, 0
|
|
_0803BC44: .4byte 0x02023D28
|
|
_0803BC48: .4byte 0x02023EC0
|
|
_0803BC4C: .4byte 0x02023FD6
|
|
_0803BC50:
|
|
ldr r0, _0803BC68
|
|
ldrb r1, [r0]
|
|
ldr r0, _0803BC6C
|
|
ldrb r2, [r0, #1]
|
|
ldrb r0, [r0, #2]
|
|
lsls r0, r0, #8
|
|
orrs r2, r0
|
|
movs r0, #0
|
|
bl BtlController_EmitChooseAction
|
|
bl _0803C7AC
|
|
.align 2, 0
|
|
_0803BC68: .4byte 0x02023EC0
|
|
_0803BC6C: .4byte 0x02023508
|
|
_0803BC70:
|
|
ldr r3, _0803BCD4
|
|
ldr r1, _0803BCD8
|
|
ldr r6, _0803BCDC
|
|
ldrb r5, [r6]
|
|
lsls r0, r5, #2
|
|
adds r0, r0, r1
|
|
ldr r2, [r0]
|
|
lsls r1, r2, #4
|
|
movs r0, #0xf0
|
|
lsls r0, r0, #0x18
|
|
orrs r1, r0
|
|
orrs r1, r2
|
|
lsls r0, r2, #8
|
|
orrs r1, r0
|
|
lsls r2, r2, #0xc
|
|
orrs r1, r2
|
|
ldr r0, [r3]
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803BC9C
|
|
bl _0803C948
|
|
_0803BC9C:
|
|
ldr r4, _0803BCE0
|
|
lsls r0, r5, #9
|
|
adds r4, #1
|
|
adds r0, r0, r4
|
|
ldrb r1, [r0]
|
|
adds r0, r5, #0
|
|
bl RecordedBattle_SetBattlerAction
|
|
ldr r1, _0803BCE4
|
|
ldrb r0, [r6]
|
|
adds r1, r0, r1
|
|
lsls r0, r0, #9
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldrb r0, [r6]
|
|
lsls r0, r0, #9
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, #0xc
|
|
bls _0803BCC8
|
|
b _0803C308
|
|
_0803BCC8:
|
|
lsls r0, r0, #2
|
|
ldr r1, _0803BCE8
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0803BCD4: .4byte 0x02023D0C
|
|
_0803BCD8: .4byte 0x082FACB4
|
|
_0803BCDC: .4byte 0x02023D08
|
|
_0803BCE0: .4byte 0x02023508
|
|
_0803BCE4: .4byte 0x02023EC0
|
|
_0803BCE8: .4byte 0x0803BCEC
|
|
_0803BCEC: @ jump table
|
|
.4byte _0803BD20 @ case 0
|
|
.4byte _0803BE74 @ case 1
|
|
.4byte _0803BEAC @ case 2
|
|
.4byte _0803C308 @ case 3
|
|
.4byte _0803C308 @ case 4
|
|
.4byte _0803C084 @ case 5
|
|
.4byte _0803C0D0 @ case 6
|
|
.4byte _0803C308 @ case 7
|
|
.4byte _0803C308 @ case 8
|
|
.4byte _0803C308 @ case 9
|
|
.4byte _0803C308 @ case 10
|
|
.4byte _0803C308 @ case 11
|
|
.4byte _0803C0F8 @ case 12
|
|
_0803BD20:
|
|
bl AreAllMovesUnusable
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803BD78
|
|
ldr r0, _0803BD68
|
|
ldr r3, _0803BD6C
|
|
ldrb r1, [r3]
|
|
adds r1, r1, r0
|
|
movs r4, #0
|
|
movs r0, #6
|
|
strb r0, [r1]
|
|
ldrb r1, [r3]
|
|
ldr r2, _0803BD70
|
|
ldr r0, [r2]
|
|
adds r1, r1, r0
|
|
adds r1, #0x54
|
|
strb r4, [r1]
|
|
ldrb r1, [r3]
|
|
ldr r0, [r2]
|
|
adds r1, r1, r0
|
|
adds r1, #0x84
|
|
movs r0, #4
|
|
strb r0, [r1]
|
|
ldrb r1, [r3]
|
|
ldr r2, [r2]
|
|
adds r2, r1, r2
|
|
ldr r0, _0803BD74
|
|
lsls r1, r1, #9
|
|
adds r0, #3
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
strb r0, [r2, #0xc]
|
|
bl _0803C9B4
|
|
.align 2, 0
|
|
_0803BD68: .4byte 0x02023FD6
|
|
_0803BD6C: .4byte 0x02023D08
|
|
_0803BD70: .4byte 0x02024140
|
|
_0803BD74: .4byte 0x02023508
|
|
_0803BD78:
|
|
ldr r3, _0803BDB8
|
|
ldr r5, _0803BDBC
|
|
ldrb r4, [r5]
|
|
lsls r0, r4, #3
|
|
subs r0, r0, r4
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r3
|
|
ldrh r2, [r0, #6]
|
|
cmp r2, #0
|
|
beq _0803BDCC
|
|
ldr r1, _0803BDC0
|
|
lsls r0, r4, #1
|
|
adds r0, r0, r1
|
|
strh r2, [r0]
|
|
ldrb r2, [r5]
|
|
ldr r0, _0803BDC4
|
|
ldr r1, [r0]
|
|
adds r1, r2, r1
|
|
adds r1, #0x80
|
|
lsls r0, r2, #3
|
|
subs r0, r0, r2
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r3
|
|
ldrb r0, [r0, #0xc]
|
|
strb r0, [r1]
|
|
ldr r1, _0803BDC8
|
|
ldrb r0, [r5]
|
|
adds r0, r0, r1
|
|
movs r1, #4
|
|
strb r1, [r0]
|
|
bl _0803C9B4
|
|
.align 2, 0
|
|
_0803BDB8: .4byte 0x02023F60
|
|
_0803BDBC: .4byte 0x02023D08
|
|
_0803BDC0: .4byte 0x02023F18
|
|
_0803BDC4: .4byte 0x02024140
|
|
_0803BDC8: .4byte 0x02023FD6
|
|
_0803BDCC:
|
|
add r2, sp, #4
|
|
ldr r3, _0803BE6C
|
|
movs r1, #0x58
|
|
adds r0, r4, #0
|
|
muls r0, r1, r0
|
|
adds r0, r0, r3
|
|
ldrh r0, [r0]
|
|
strh r0, [r2, #0x10]
|
|
ldrb r0, [r5]
|
|
muls r0, r1, r0
|
|
adds r0, r0, r3
|
|
adds r0, #0x21
|
|
ldrb r0, [r0]
|
|
strb r0, [r2, #0x12]
|
|
ldrb r0, [r5]
|
|
muls r0, r1, r0
|
|
adds r0, 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 sl, r2
|
|
mov r8, r3
|
|
adds r7, r5, #0
|
|
movs r6, #0x58
|
|
movs r0, #0xc
|
|
add r0, r8
|
|
mov sb, r0
|
|
add r5, sp, #4
|
|
_0803BE0E:
|
|
lsls r2, r4, #1
|
|
ldrb r0, [r7]
|
|
muls r0, r6, r0
|
|
adds r0, r2, r0
|
|
add r0, sb
|
|
ldrh r0, [r0]
|
|
strh r0, [r5]
|
|
ldr r1, [sp, #0x18]
|
|
adds r3, r1, r4
|
|
ldrb r0, [r7]
|
|
muls r0, r6, r0
|
|
adds r0, r4, r0
|
|
mov r1, r8
|
|
adds r1, #0x24
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r3]
|
|
ldrb r0, [r7]
|
|
adds r1, r0, #0
|
|
muls r1, r6, r1
|
|
adds r2, r2, r1
|
|
add r2, sb
|
|
ldrh r0, [r2]
|
|
add r1, r8
|
|
adds r1, #0x3b
|
|
ldrb r1, [r1]
|
|
lsls r2, r4, #0x18
|
|
lsrs r2, r2, #0x18
|
|
bl CalculatePPWithBonus
|
|
mov r2, sl
|
|
adds r1, r2, r4
|
|
strb r0, [r1]
|
|
adds r5, #2
|
|
adds r4, #1
|
|
cmp r4, #3
|
|
ble _0803BE0E
|
|
ldr r0, _0803BE70
|
|
ldr r1, [r0]
|
|
movs r0, #1
|
|
ands r1, r0
|
|
movs r0, #0
|
|
movs r2, #0
|
|
add r3, sp, #4
|
|
bl BtlController_EmitChooseMove
|
|
b _0803C072
|
|
.align 2, 0
|
|
_0803BE6C: .4byte 0x02023D28
|
|
_0803BE70: .4byte 0x02022C90
|
|
_0803BE74:
|
|
ldr r0, _0803BE98
|
|
ldr r0, [r0]
|
|
ldr r1, _0803BE9C
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803BE82
|
|
b _0803C0D0
|
|
_0803BE82:
|
|
ldr r4, _0803BEA0
|
|
ldrb r0, [r4]
|
|
movs r1, #1
|
|
bl RecordedBattle_ClearBattlerAction
|
|
ldr r1, _0803BEA4
|
|
ldrb r0, [r4]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r1, _0803BEA8
|
|
b _0803C3C8
|
|
.align 2, 0
|
|
_0803BE98: .4byte 0x02022C90
|
|
_0803BE9C: .4byte 0x021F0902
|
|
_0803BEA0: .4byte 0x02023D08
|
|
_0803BEA4: .4byte 0x02023EC4
|
|
_0803BEA8: .4byte 0x08289E01
|
|
_0803BEAC:
|
|
ldr r5, _0803BF14
|
|
ldrb r0, [r5]
|
|
ldr r3, _0803BF18
|
|
ldr r1, [r3]
|
|
adds r1, r0, r1
|
|
adds r1, #0x58
|
|
ldr r2, _0803BF1C
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r7, _0803BF20
|
|
ldrb r2, [r5]
|
|
movs r6, #0x58
|
|
adds r0, r2, #0
|
|
muls r0, r6, r0
|
|
adds r1, r7, #0
|
|
adds r1, #0x50
|
|
adds r0, r0, r1
|
|
ldr r1, [r0]
|
|
ldr r0, _0803BF24
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
bne _0803BEFC
|
|
ldr r0, _0803BF28
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xb
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803BEFC
|
|
ldr r0, _0803BF2C
|
|
lsls r1, r2, #2
|
|
adds r1, r1, r0
|
|
ldr r1, [r1]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #3
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803BF30
|
|
_0803BEFC:
|
|
ldr r0, _0803BF14
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r0
|
|
adds r1, #0x60
|
|
ldr r0, [r3]
|
|
adds r0, r0, r1
|
|
str r0, [sp]
|
|
movs r0, #0
|
|
movs r1, #2
|
|
movs r2, #6
|
|
b _0803C044
|
|
.align 2, 0
|
|
_0803BF14: .4byte 0x02023D08
|
|
_0803BF18: .4byte 0x02024140
|
|
_0803BF1C: .4byte 0x02023D12
|
|
_0803BF20: .4byte 0x02023D28
|
|
_0803BF24: .4byte 0x0400E000
|
|
_0803BF28: .4byte 0x02022C90
|
|
_0803BF2C: .4byte 0x02023F50
|
|
_0803BF30:
|
|
str r1, [sp]
|
|
movs r0, #0xc
|
|
adds r1, r2, #0
|
|
movs r2, #0x17
|
|
movs r3, #0
|
|
bl AbilityBattleEffects
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
cmp r4, #0
|
|
bne _0803BFB8
|
|
ldrb r1, [r5]
|
|
str r4, [sp]
|
|
movs r0, #0xc
|
|
movs r2, #0x47
|
|
movs r3, #0
|
|
bl AbilityBattleEffects
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
cmp r4, #0
|
|
beq _0803BF80
|
|
ldrb r0, [r5]
|
|
muls r0, r6, r0
|
|
adds r1, r0, r7
|
|
adds r0, r1, #0
|
|
adds r0, #0x21
|
|
ldrb r0, [r0]
|
|
cmp r0, #2
|
|
beq _0803BF80
|
|
adds r0, r1, #0
|
|
adds r0, #0x22
|
|
ldrb r0, [r0]
|
|
cmp r0, #2
|
|
beq _0803BF80
|
|
adds r0, r1, #0
|
|
adds r0, #0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x1a
|
|
bne _0803BFB8
|
|
_0803BF80:
|
|
ldr r5, _0803BFE4
|
|
ldrb r1, [r5]
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
movs r0, #0xf
|
|
movs r2, #0x2a
|
|
movs r3, #0
|
|
bl AbilityBattleEffects
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
cmp r4, #0
|
|
beq _0803BFF4
|
|
ldr r2, _0803BFE8
|
|
ldrb r1, [r5]
|
|
movs r0, #0x58
|
|
muls r0, r1, r0
|
|
adds r1, r0, r2
|
|
adds r0, r1, #0
|
|
adds r0, #0x21
|
|
ldrb r0, [r0]
|
|
cmp r0, #8
|
|
beq _0803BFB8
|
|
adds r0, r1, #0
|
|
adds r0, #0x22
|
|
ldrb r0, [r0]
|
|
cmp r0, #8
|
|
bne _0803BFF4
|
|
_0803BFB8:
|
|
subs r1, r4, #1
|
|
lsls r1, r1, #4
|
|
movs r0, #4
|
|
orrs r1, r0
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
ldr r0, _0803BFEC
|
|
ldrb r3, [r0]
|
|
ldr r4, _0803BFF0
|
|
ldr r0, _0803BFE4
|
|
ldrb r0, [r0]
|
|
lsls r2, r0, #1
|
|
adds r2, r2, r0
|
|
adds r2, #0x60
|
|
ldr r0, [r4]
|
|
adds r0, r0, r2
|
|
str r0, [sp]
|
|
movs r0, #0
|
|
movs r2, #6
|
|
bl BtlController_EmitChoosePokemon
|
|
b _0803C072
|
|
.align 2, 0
|
|
_0803BFE4: .4byte 0x02023D08
|
|
_0803BFE8: .4byte 0x02023D28
|
|
_0803BFEC: .4byte 0x02023EAE
|
|
_0803BFF0: .4byte 0x02024140
|
|
_0803BFF4:
|
|
ldr r0, _0803C010
|
|
ldrb r1, [r0]
|
|
adds r4, r0, #0
|
|
cmp r1, #2
|
|
bne _0803C01C
|
|
ldr r0, _0803C014
|
|
ldrb r0, [r0]
|
|
cmp r0, #2
|
|
bne _0803C01C
|
|
ldr r0, _0803C018
|
|
ldr r3, [r0]
|
|
adds r0, r3, #0
|
|
adds r0, #0x5c
|
|
b _0803C032
|
|
.align 2, 0
|
|
_0803C010: .4byte 0x02023D08
|
|
_0803C014: .4byte 0x02023EC0
|
|
_0803C018: .4byte 0x02024140
|
|
_0803C01C:
|
|
ldrb r0, [r4]
|
|
cmp r0, #3
|
|
bne _0803C054
|
|
ldr r0, _0803C04C
|
|
ldrb r0, [r0, #1]
|
|
cmp r0, #2
|
|
bne _0803C054
|
|
ldr r0, _0803C050
|
|
ldr r3, [r0]
|
|
adds r0, r3, #0
|
|
adds r0, #0x5d
|
|
_0803C032:
|
|
ldrb r2, [r0]
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r1
|
|
adds r0, #0x60
|
|
adds r3, r3, r0
|
|
str r3, [sp]
|
|
movs r0, #0
|
|
movs r1, #0
|
|
_0803C044:
|
|
movs r3, #0
|
|
bl BtlController_EmitChoosePokemon
|
|
b _0803C072
|
|
.align 2, 0
|
|
_0803C04C: .4byte 0x02023EC0
|
|
_0803C050: .4byte 0x02024140
|
|
_0803C054:
|
|
ldr r2, _0803C07C
|
|
ldr r0, _0803C080
|
|
ldrb r0, [r0]
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r0
|
|
adds r1, #0x60
|
|
ldr r0, [r2]
|
|
adds r0, r0, r1
|
|
str r0, [sp]
|
|
movs r0, #0
|
|
movs r1, #0
|
|
movs r2, #6
|
|
movs r3, #0
|
|
bl BtlController_EmitChoosePokemon
|
|
_0803C072:
|
|
ldr r0, _0803C080
|
|
ldrb r0, [r0]
|
|
bl MarkBattlerForControllerExec
|
|
b _0803C308
|
|
.align 2, 0
|
|
_0803C07C: .4byte 0x02024140
|
|
_0803C080: .4byte 0x02023D08
|
|
_0803C084:
|
|
bl IsPlayerPartyAndPokemonStorageFull
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803C090
|
|
b _0803C308
|
|
_0803C090:
|
|
ldr r1, _0803C0BC
|
|
ldr r3, _0803C0C0
|
|
ldrb r0, [r3]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r1, _0803C0C4
|
|
str r1, [r0]
|
|
ldr r0, _0803C0C8
|
|
ldrb r1, [r3]
|
|
adds r1, r1, r0
|
|
movs r4, #0
|
|
movs r0, #6
|
|
strb r0, [r1]
|
|
ldrb r1, [r3]
|
|
ldr r2, _0803C0CC
|
|
ldr r0, [r2]
|
|
adds r1, r1, r0
|
|
adds r1, #0x54
|
|
strb r4, [r1]
|
|
ldrb r1, [r3]
|
|
b _0803C3E4
|
|
.align 2, 0
|
|
_0803C0BC: .4byte 0x02023EC4
|
|
_0803C0C0: .4byte 0x02023D08
|
|
_0803C0C4: .4byte 0x08289099
|
|
_0803C0C8: .4byte 0x02023FD6
|
|
_0803C0CC: .4byte 0x02024140
|
|
_0803C0D0:
|
|
ldr r2, _0803C0F0
|
|
ldr r4, _0803C0F4
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r1
|
|
adds r0, #0x60
|
|
ldr r1, [r2]
|
|
adds r1, r1, r0
|
|
movs r0, #0
|
|
bl BtlController_EmitChooseItem
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
b _0803C308
|
|
.align 2, 0
|
|
_0803C0F0: .4byte 0x02024140
|
|
_0803C0F4: .4byte 0x02023D08
|
|
_0803C0F8:
|
|
ldr r4, _0803C188
|
|
ldr r5, _0803C18C
|
|
ldrb r0, [r5]
|
|
adds r0, r0, r4
|
|
movs r1, #7
|
|
strb r1, [r0]
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
movs r6, #2
|
|
eors r0, r6
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
adds r0, r0, r4
|
|
movs r1, #1
|
|
strb r1, [r0]
|
|
ldrb r0, [r5]
|
|
bl RecordedBattle_ClearBattlerAction
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
eors r0, r6
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
ldr r1, _0803C190
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
movs r7, #0x58
|
|
muls r0, r7, r0
|
|
adds r4, r1, #0
|
|
adds r4, #0x50
|
|
adds r0, r0, r4
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #5
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803C176
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
eors r0, r6
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
muls r0, r7, r0
|
|
adds r0, r0, r4
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xf
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803C194
|
|
_0803C176:
|
|
movs r0, #0
|
|
bl BtlController_EmitEndBounceEffect
|
|
ldrb r0, [r5]
|
|
bl MarkBattlerForControllerExec
|
|
bl _0803C9B4
|
|
.align 2, 0
|
|
_0803C188: .4byte 0x02023FD6
|
|
_0803C18C: .4byte 0x02023D08
|
|
_0803C190: .4byte 0x02023D28
|
|
_0803C194:
|
|
ldr r4, _0803C1D0
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
eors r0, r6
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, #2
|
|
bne _0803C1D4
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
eors r0, r6
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
movs r1, #2
|
|
bl RecordedBattle_ClearBattlerAction
|
|
b _0803C2F2
|
|
.align 2, 0
|
|
_0803C1D0: .4byte 0x02023EC0
|
|
_0803C1D4:
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
eors r0, r6
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, #3
|
|
bne _0803C1FA
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
eors r0, r6
|
|
b _0803C2AC
|
|
_0803C1FA:
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
eors r0, r6
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803C26C
|
|
ldr r4, _0803C264
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
eors r0, r6
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x14
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x1d
|
|
cmp r0, #0
|
|
blt _0803C25A
|
|
ldr r4, _0803C268
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
eors r0, r6
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
lsls r1, r0, #3
|
|
subs r1, r1, r0
|
|
lsls r1, r1, #2
|
|
adds r1, r1, r4
|
|
ldrh r0, [r1, #6]
|
|
cmp r0, #0
|
|
beq _0803C26C
|
|
_0803C25A:
|
|
ldrb r0, [r5]
|
|
bl GetBattlerPosition
|
|
eors r0, r6
|
|
b _0803C2AC
|
|
.align 2, 0
|
|
_0803C264: .4byte 0x02023FE0
|
|
_0803C268: .4byte 0x02023F60
|
|
_0803C26C:
|
|
ldr r0, _0803C2C0
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xa
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803C2D4
|
|
ldr r4, _0803C2C4
|
|
ldr r6, _0803C2C8
|
|
ldrb r0, [r6]
|
|
bl GetBattlerPosition
|
|
movs r5, #2
|
|
eors r0, r5
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803C2D4
|
|
ldr r1, _0803C2CC
|
|
ldr r0, _0803C2D0
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldrb r0, [r6]
|
|
bl GetBattlerPosition
|
|
eors r0, r5
|
|
_0803C2AC:
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
movs r1, #1
|
|
bl RecordedBattle_ClearBattlerAction
|
|
b _0803C2F2
|
|
.align 2, 0
|
|
_0803C2C0: .4byte 0x02022C90
|
|
_0803C2C4: .4byte 0x02023EC0
|
|
_0803C2C8: .4byte 0x02023D08
|
|
_0803C2CC: .4byte 0x03005AE0
|
|
_0803C2D0: .4byte 0x0203B9FC
|
|
_0803C2D4:
|
|
ldr r0, _0803C304
|
|
ldrb r0, [r0]
|
|
bl GetBattlerPosition
|
|
movs r1, #2
|
|
eors r0, r1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
movs r1, #3
|
|
bl RecordedBattle_ClearBattlerAction
|
|
_0803C2F2:
|
|
movs r0, #0
|
|
bl BtlController_EmitEndBounceEffect
|
|
ldr r0, _0803C304
|
|
ldrb r0, [r0]
|
|
bl MarkBattlerForControllerExec
|
|
b _0803C9B4
|
|
.align 2, 0
|
|
_0803C304: .4byte 0x02023D08
|
|
_0803C308:
|
|
ldr r1, _0803C348
|
|
ldr r2, [r1]
|
|
movs r5, #8
|
|
adds r0, r2, #0
|
|
ands r0, r5
|
|
adds r3, r1, #0
|
|
cmp r0, #0
|
|
beq _0803C364
|
|
ldr r0, _0803C34C
|
|
ands r2, r0
|
|
cmp r2, #0
|
|
beq _0803C364
|
|
ldr r0, _0803C350
|
|
ldr r4, _0803C354
|
|
ldrb r2, [r4]
|
|
lsls r1, r2, #9
|
|
adds r0, #1
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, #3
|
|
bne _0803C364
|
|
ldr r1, _0803C358
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r1
|
|
ldr r1, _0803C35C
|
|
str r1, [r0]
|
|
ldr r1, _0803C360
|
|
ldrb r0, [r4]
|
|
adds r0, r0, r1
|
|
movs r3, #0
|
|
strb r5, [r0]
|
|
b _0803C3D6
|
|
.align 2, 0
|
|
_0803C348: .4byte 0x02022C90
|
|
_0803C34C: .4byte 0x043F0100
|
|
_0803C350: .4byte 0x02023508
|
|
_0803C354: .4byte 0x02023D08
|
|
_0803C358: .4byte 0x02023EC4
|
|
_0803C35C: .4byte 0x08289F42
|
|
_0803C360: .4byte 0x02023FD6
|
|
_0803C364:
|
|
ldr r0, [r3]
|
|
ldr r1, _0803C390
|
|
ands r0, r1
|
|
cmp r0, #8
|
|
bne _0803C3A4
|
|
ldr r0, _0803C394
|
|
ldr r4, _0803C398
|
|
ldrb r1, [r4]
|
|
lsls r1, r1, #9
|
|
adds r0, #1
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, #3
|
|
bne _0803C3A4
|
|
ldr r0, _0803C39C
|
|
bl BattleScriptExecute
|
|
ldr r1, _0803C3A0
|
|
ldrb r0, [r4]
|
|
adds r0, r0, r1
|
|
b _0803C864
|
|
.align 2, 0
|
|
_0803C390: .4byte 0x0200000A
|
|
_0803C394: .4byte 0x02023508
|
|
_0803C398: .4byte 0x02023D08
|
|
_0803C39C: .4byte 0x08289086
|
|
_0803C3A0: .4byte 0x02023FD6
|
|
_0803C3A4:
|
|
bl IsRunningFromBattleImpossible
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803C408
|
|
ldr r0, _0803C3F0
|
|
ldr r4, _0803C3F4
|
|
ldrb r2, [r4]
|
|
lsls r1, r2, #9
|
|
adds r0, #1
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, #3
|
|
bne _0803C408
|
|
ldr r1, _0803C3F8
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r1
|
|
ldr r1, _0803C3FC
|
|
_0803C3C8:
|
|
str r1, [r0]
|
|
ldr r0, _0803C400
|
|
ldrb r1, [r4]
|
|
adds r1, r1, r0
|
|
movs r3, #0
|
|
movs r0, #6
|
|
strb r0, [r1]
|
|
_0803C3D6:
|
|
ldrb r1, [r4]
|
|
ldr r2, _0803C404
|
|
ldr r0, [r2]
|
|
adds r1, r1, r0
|
|
adds r1, #0x54
|
|
strb r3, [r1]
|
|
ldrb r1, [r4]
|
|
_0803C3E4:
|
|
ldr r0, [r2]
|
|
adds r1, r1, r0
|
|
adds r1, #0x84
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
b _0803C9B4
|
|
.align 2, 0
|
|
_0803C3F0: .4byte 0x02023508
|
|
_0803C3F4: .4byte 0x02023D08
|
|
_0803C3F8: .4byte 0x02023EC4
|
|
_0803C3FC: .4byte 0x08289093
|
|
_0803C400: .4byte 0x02023FD6
|
|
_0803C404: .4byte 0x02024140
|
|
_0803C408:
|
|
ldr r2, _0803C414
|
|
ldr r0, _0803C418
|
|
ldrb r1, [r0]
|
|
adds r1, r1, r2
|
|
b _0803C7B8
|
|
.align 2, 0
|
|
_0803C414: .4byte 0x02023FD6
|
|
_0803C418: .4byte 0x02023D08
|
|
_0803C41C:
|
|
ldr r4, _0803C460
|
|
ldr r1, _0803C464
|
|
ldr r3, _0803C468
|
|
ldrb r5, [r3]
|
|
lsls r0, r5, #2
|
|
adds r0, r0, r1
|
|
ldr r2, [r0]
|
|
lsls r0, r2, #4
|
|
movs r1, #0xf0
|
|
lsls r1, r1, #0x18
|
|
orrs r0, r1
|
|
orrs r0, r2
|
|
lsls r1, r2, #8
|
|
orrs r0, r1
|
|
lsls r2, r2, #0xc
|
|
orrs r0, r2
|
|
ldr r1, [r4]
|
|
ands r1, r0
|
|
adds r4, r3, #0
|
|
cmp r1, #0
|
|
beq _0803C448
|
|
b _0803C948
|
|
_0803C448:
|
|
ldr r1, _0803C46C
|
|
adds r0, r5, r1
|
|
ldrb r0, [r0]
|
|
adds r2, r1, #0
|
|
cmp r0, #9
|
|
bls _0803C456
|
|
b _0803C948
|
|
_0803C456:
|
|
lsls r0, r0, #2
|
|
ldr r1, _0803C470
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0803C460: .4byte 0x02023D0C
|
|
_0803C464: .4byte 0x082FACB4
|
|
_0803C468: .4byte 0x02023D08
|
|
_0803C46C: .4byte 0x02023EC0
|
|
_0803C470: .4byte 0x0803C474
|
|
_0803C474: @ jump table
|
|
.4byte _0803C49C @ case 0
|
|
.4byte _0803C5E0 @ case 1
|
|
.4byte _0803C618 @ case 2
|
|
.4byte _0803C64E @ case 3
|
|
.4byte _0803C670 @ case 4
|
|
.4byte _0803C684 @ case 5
|
|
.4byte _0803C698 @ case 6
|
|
.4byte _0803C6C8 @ case 7
|
|
.4byte _0803C6DC @ case 8
|
|
.4byte _0803C700 @ case 9
|
|
_0803C49C:
|
|
ldr r1, _0803C4B8
|
|
ldrb r3, [r4]
|
|
lsls r0, r3, #9
|
|
adds r1, #1
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0]
|
|
cmp r1, #3
|
|
blt _0803C4CE
|
|
cmp r1, #9
|
|
ble _0803C4BC
|
|
cmp r1, #0xf
|
|
beq _0803C4C2
|
|
b _0803C4CE
|
|
.align 2, 0
|
|
_0803C4B8: .4byte 0x02023508
|
|
_0803C4BC:
|
|
adds r0, r3, r2
|
|
strb r1, [r0]
|
|
b _0803C9B4
|
|
_0803C4C2:
|
|
adds r1, r3, r2
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
bl sub_0803CA3C
|
|
b _0803C9B4
|
|
_0803C4CE:
|
|
movs r0, #2
|
|
bl sub_08185D94
|
|
ldr r4, _0803C504
|
|
ldr r6, _0803C508
|
|
ldrb r3, [r6]
|
|
lsls r1, r3, #9
|
|
adds r5, r4, #2
|
|
adds r0, r1, r5
|
|
ldrb r2, [r0]
|
|
adds r7, r4, #3
|
|
adds r1, r1, r7
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #8
|
|
orrs r2, r0
|
|
ldr r0, _0803C50C
|
|
cmp r2, r0
|
|
bne _0803C514
|
|
ldr r0, _0803C510
|
|
adds r0, r3, r0
|
|
movs r1, #1
|
|
strb r1, [r0]
|
|
ldrb r0, [r6]
|
|
bl RecordedBattle_ClearBattlerAction
|
|
b _0803C948
|
|
.align 2, 0
|
|
_0803C504: .4byte 0x02023508
|
|
_0803C508: .4byte 0x02023D08
|
|
_0803C50C: .4byte 0x0000FFFF
|
|
_0803C510: .4byte 0x02023FD6
|
|
_0803C514:
|
|
bl TrySetCantSelectMoveBattleScript
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803C560
|
|
ldrb r0, [r6]
|
|
movs r1, #1
|
|
bl RecordedBattle_ClearBattlerAction
|
|
ldr r0, _0803C558
|
|
ldrb r1, [r6]
|
|
adds r1, r1, r0
|
|
movs r3, #0
|
|
movs r0, #6
|
|
strb r0, [r1]
|
|
ldrb r1, [r6]
|
|
ldr r2, _0803C55C
|
|
ldr r0, [r2]
|
|
adds r1, r1, r0
|
|
adds r1, #0x54
|
|
strb r3, [r1]
|
|
ldrb r0, [r6]
|
|
lsls r0, r0, #9
|
|
adds r1, r4, #1
|
|
adds r0, r0, r1
|
|
strb r3, [r0]
|
|
ldrb r1, [r6]
|
|
ldr r0, [r2]
|
|
adds r1, r1, r0
|
|
adds r1, #0x84
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
b _0803C9B4
|
|
.align 2, 0
|
|
_0803C558: .4byte 0x02023FD6
|
|
_0803C55C: .4byte 0x02024140
|
|
_0803C560:
|
|
ldr r0, _0803C5CC
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xa
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803C586
|
|
ldrb r0, [r6]
|
|
lsls r1, r0, #9
|
|
adds r1, r1, r5
|
|
ldrb r1, [r1]
|
|
bl RecordedBattle_SetBattlerAction
|
|
ldrb r0, [r6]
|
|
lsls r1, r0, #9
|
|
adds r1, r1, r7
|
|
ldrb r1, [r1]
|
|
bl RecordedBattle_SetBattlerAction
|
|
_0803C586:
|
|
ldrb r0, [r6]
|
|
ldr r4, _0803C5D0
|
|
ldr r1, [r4]
|
|
adds r1, r0, r1
|
|
adds r1, #0x80
|
|
lsls r0, r0, #9
|
|
adds r0, r0, r5
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r0, _0803C5D4
|
|
ldrb r2, [r6]
|
|
lsls r5, r2, #1
|
|
adds r5, r5, r0
|
|
ldr r3, _0803C5D8
|
|
ldr r4, [r4]
|
|
adds r0, r2, r4
|
|
adds r0, #0x80
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #1
|
|
movs r1, #0x58
|
|
muls r1, r2, r1
|
|
adds r0, r0, r1
|
|
adds r3, #0xc
|
|
adds r0, r0, r3
|
|
ldrh r0, [r0]
|
|
strh r0, [r5]
|
|
ldrb r0, [r6]
|
|
adds r4, r0, r4
|
|
lsls r0, r0, #9
|
|
adds r0, r0, r7
|
|
ldrb r0, [r0]
|
|
strb r0, [r4, #0xc]
|
|
ldr r0, _0803C5DC
|
|
ldrb r1, [r6]
|
|
b _0803C7B6
|
|
.align 2, 0
|
|
_0803C5CC: .4byte 0x02022C90
|
|
_0803C5D0: .4byte 0x02024140
|
|
_0803C5D4: .4byte 0x02023F18
|
|
_0803C5D8: .4byte 0x02023D28
|
|
_0803C5DC: .4byte 0x02023FD6
|
|
_0803C5E0:
|
|
ldr r2, _0803C608
|
|
ldr r5, _0803C60C
|
|
ldrb r4, [r5]
|
|
lsls r1, r4, #9
|
|
adds r0, r2, #1
|
|
adds r0, r1, r0
|
|
ldrb r3, [r0]
|
|
adds r2, #2
|
|
adds r1, r1, r2
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #8
|
|
orrs r3, r0
|
|
cmp r3, #0
|
|
bne _0803C5FE
|
|
b _0803C860
|
|
_0803C5FE:
|
|
ldr r0, _0803C610
|
|
strh r3, [r0]
|
|
ldr r0, _0803C614
|
|
ldrb r1, [r5]
|
|
b _0803C7B6
|
|
.align 2, 0
|
|
_0803C608: .4byte 0x02023508
|
|
_0803C60C: .4byte 0x02023D08
|
|
_0803C610: .4byte 0x02023EAC
|
|
_0803C614: .4byte 0x02023FD6
|
|
_0803C618:
|
|
ldr r0, _0803C63C
|
|
ldr r4, _0803C640
|
|
ldrb r2, [r4]
|
|
lsls r1, r2, #9
|
|
adds r0, #1
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, #6
|
|
bne _0803C648
|
|
ldr r0, _0803C644
|
|
adds r0, r2, r0
|
|
movs r1, #1
|
|
strb r1, [r0]
|
|
ldrb r0, [r4]
|
|
bl RecordedBattle_ClearBattlerAction
|
|
b _0803C948
|
|
.align 2, 0
|
|
_0803C63C: .4byte 0x02023508
|
|
_0803C640: .4byte 0x02023D08
|
|
_0803C644: .4byte 0x02023FD6
|
|
_0803C648:
|
|
bl sub_0803CA3C
|
|
b _0803C7B2
|
|
_0803C64E:
|
|
ldr r2, _0803C664
|
|
ldr r0, [r2]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #8
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
ldr r2, _0803C668
|
|
ldr r0, _0803C66C
|
|
ldrb r1, [r0]
|
|
adds r1, r1, r2
|
|
b _0803C7B8
|
|
.align 2, 0
|
|
_0803C664: .4byte 0x02023F24
|
|
_0803C668: .4byte 0x02023FD6
|
|
_0803C66C: .4byte 0x02023D08
|
|
_0803C670:
|
|
ldr r2, _0803C67C
|
|
ldr r0, _0803C680
|
|
ldrb r1, [r0]
|
|
adds r1, r1, r2
|
|
b _0803C7B8
|
|
.align 2, 0
|
|
_0803C67C: .4byte 0x02023FD6
|
|
_0803C680: .4byte 0x02023D08
|
|
_0803C684:
|
|
ldr r2, _0803C690
|
|
ldr r0, _0803C694
|
|
ldrb r1, [r0]
|
|
adds r1, r1, r2
|
|
b _0803C7B8
|
|
.align 2, 0
|
|
_0803C690: .4byte 0x02023FD6
|
|
_0803C694: .4byte 0x02023D08
|
|
_0803C698:
|
|
ldr r3, _0803C6BC
|
|
ldr r0, _0803C6C0
|
|
ldrb r4, [r0]
|
|
lsls r1, r4, #9
|
|
adds r0, r3, #1
|
|
adds r0, r1, r0
|
|
ldrb r2, [r0]
|
|
adds r3, #2
|
|
adds r1, r1, r3
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #8
|
|
orrs r2, r0
|
|
cmp r2, #0
|
|
bne _0803C6B6
|
|
b _0803C860
|
|
_0803C6B6:
|
|
ldr r1, _0803C6C4
|
|
adds r1, r4, r1
|
|
b _0803C7B8
|
|
.align 2, 0
|
|
_0803C6BC: .4byte 0x02023508
|
|
_0803C6C0: .4byte 0x02023D08
|
|
_0803C6C4: .4byte 0x02023FD6
|
|
_0803C6C8:
|
|
ldr r2, _0803C6D4
|
|
ldr r0, _0803C6D8
|
|
ldrb r1, [r0]
|
|
adds r1, r1, r2
|
|
b _0803C7B8
|
|
.align 2, 0
|
|
_0803C6D4: .4byte 0x02023FD6
|
|
_0803C6D8: .4byte 0x02023D08
|
|
_0803C6DC:
|
|
ldr r2, _0803C6F4
|
|
ldr r0, [r2]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #8
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
ldr r2, _0803C6F8
|
|
ldr r0, _0803C6FC
|
|
ldrb r1, [r0]
|
|
adds r1, r1, r2
|
|
b _0803C7B8
|
|
.align 2, 0
|
|
_0803C6F4: .4byte 0x02023F24
|
|
_0803C6F8: .4byte 0x02023FD6
|
|
_0803C6FC: .4byte 0x02023D08
|
|
_0803C700:
|
|
ldr r2, _0803C70C
|
|
ldr r0, _0803C710
|
|
ldrb r1, [r0]
|
|
adds r1, r1, r2
|
|
b _0803C7B8
|
|
.align 2, 0
|
|
_0803C70C: .4byte 0x02023FD6
|
|
_0803C710: .4byte 0x02023D08
|
|
_0803C714:
|
|
ldr r3, _0803C78C
|
|
ldr r6, _0803C790
|
|
ldr r0, _0803C794
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r6
|
|
ldr r2, [r0]
|
|
lsls r1, r2, #4
|
|
movs r0, #0xf0
|
|
lsls r0, r0, #0x18
|
|
orrs r1, r0
|
|
orrs r1, r2
|
|
lsls r0, r2, #8
|
|
orrs r1, r0
|
|
lsls r2, r2, #0xc
|
|
orrs r1, r2
|
|
ldr r0, [r3]
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803C73E
|
|
b _0803C948
|
|
_0803C73E:
|
|
bl AllAtActionConfirmed
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
rsbs r1, r0, #0
|
|
orrs r1, r0
|
|
lsrs r4, r1, #0x1f
|
|
ldr r0, _0803C798
|
|
ldr r0, [r0]
|
|
movs r1, #0x41
|
|
ands r0, r1
|
|
cmp r0, #1
|
|
bne _0803C780
|
|
movs r1, #2
|
|
movs r0, #2
|
|
ands r0, r5
|
|
cmp r0, #0
|
|
bne _0803C780
|
|
adds r0, r5, #0
|
|
eors r0, r1
|
|
bl GetBattlerAtPosition
|
|
ldr r1, _0803C79C
|
|
ldr r1, [r1]
|
|
adds r1, #0x91
|
|
ldrb r1, [r1]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x16
|
|
adds r0, r0, r6
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803C7A0
|
|
_0803C780:
|
|
movs r0, #0
|
|
movs r1, #0
|
|
adds r2, r4, #0
|
|
bl BtlController_EmitLinkStandbyMsg
|
|
b _0803C7AA
|
|
.align 2, 0
|
|
_0803C78C: .4byte 0x02023D0C
|
|
_0803C790: .4byte 0x082FACB4
|
|
_0803C794: .4byte 0x02023D08
|
|
_0803C798: .4byte 0x02022C90
|
|
_0803C79C: .4byte 0x02024140
|
|
_0803C7A0:
|
|
movs r0, #0
|
|
movs r1, #1
|
|
adds r2, r4, #0
|
|
bl BtlController_EmitLinkStandbyMsg
|
|
_0803C7AA:
|
|
ldr r4, _0803C7C0
|
|
_0803C7AC:
|
|
ldrb r0, [r4]
|
|
bl MarkBattlerForControllerExec
|
|
_0803C7B2:
|
|
ldr r0, _0803C7C4
|
|
ldrb r1, [r4]
|
|
_0803C7B6:
|
|
adds r1, r1, r0
|
|
_0803C7B8:
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
b _0803C948
|
|
.align 2, 0
|
|
_0803C7C0: .4byte 0x02023D08
|
|
_0803C7C4: .4byte 0x02023FD6
|
|
_0803C7C8:
|
|
ldr r3, _0803C7FC
|
|
ldr r1, _0803C800
|
|
ldr r0, _0803C804
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r2, [r0]
|
|
lsls r1, r2, #4
|
|
movs r0, #0xf0
|
|
lsls r0, r0, #0x18
|
|
orrs r1, r0
|
|
orrs r1, r2
|
|
lsls r0, r2, #8
|
|
orrs r1, r0
|
|
lsls r2, r2, #0xc
|
|
orrs r1, r2
|
|
ldr r0, [r3]
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803C7F2
|
|
b _0803C948
|
|
_0803C7F2:
|
|
ldr r1, _0803C808
|
|
ldrb r0, [r1, #4]
|
|
adds r0, #1
|
|
strb r0, [r1, #4]
|
|
b _0803C948
|
|
.align 2, 0
|
|
_0803C7FC: .4byte 0x02023D0C
|
|
_0803C800: .4byte 0x082FACB4
|
|
_0803C804: .4byte 0x02023D08
|
|
_0803C808: .4byte 0x02023FD6
|
|
_0803C80C:
|
|
ldr r5, _0803C82C
|
|
ldrb r2, [r5]
|
|
ldr r0, _0803C830
|
|
ldr r0, [r0]
|
|
adds r1, r2, r0
|
|
adds r0, r1, #0
|
|
adds r0, #0x54
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _0803C8F8
|
|
ldr r0, _0803C834
|
|
adds r0, r2, r0
|
|
adds r1, #0x84
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
b _0803C948
|
|
.align 2, 0
|
|
_0803C82C: .4byte 0x02023D08
|
|
_0803C830: .4byte 0x02024140
|
|
_0803C834: .4byte 0x02023FD6
|
|
_0803C838:
|
|
ldr r3, _0803C86C
|
|
ldr r1, _0803C870
|
|
ldr r0, _0803C874
|
|
ldrb r4, [r0]
|
|
lsls r0, r4, #2
|
|
adds r0, r0, r1
|
|
ldr r2, [r0]
|
|
lsls r1, r2, #4
|
|
movs r0, #0xf0
|
|
lsls r0, r0, #0x18
|
|
orrs r1, r0
|
|
orrs r1, r2
|
|
lsls r0, r2, #8
|
|
orrs r1, r0
|
|
lsls r2, r2, #0xc
|
|
orrs r1, r2
|
|
ldr r0, [r3]
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803C948
|
|
_0803C860:
|
|
ldr r0, _0803C878
|
|
adds r0, r4, r0
|
|
_0803C864:
|
|
movs r1, #1
|
|
strb r1, [r0]
|
|
b _0803C948
|
|
.align 2, 0
|
|
_0803C86C: .4byte 0x02023D0C
|
|
_0803C870: .4byte 0x082FACB4
|
|
_0803C874: .4byte 0x02023D08
|
|
_0803C878: .4byte 0x02023FD6
|
|
_0803C87C:
|
|
ldr r5, _0803C8C0
|
|
ldrb r2, [r5]
|
|
ldr r4, _0803C8C4
|
|
ldr r0, [r4]
|
|
adds r0, r2, r0
|
|
adds r0, #0x54
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _0803C8F8
|
|
ldr r0, _0803C8C8
|
|
lsls r1, r2, #9
|
|
adds r0, #1
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, #0xd
|
|
bne _0803C8D8
|
|
ldr r2, _0803C8CC
|
|
ldr r0, [r2]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #8
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
ldr r1, _0803C8D0
|
|
ldrb r0, [r5]
|
|
adds r0, r0, r1
|
|
movs r1, #3
|
|
strb r1, [r0]
|
|
ldr r1, _0803C8D4
|
|
ldrb r0, [r5]
|
|
_0803C8B6:
|
|
adds r0, r0, r1
|
|
movs r1, #4
|
|
strb r1, [r0]
|
|
b _0803C948
|
|
.align 2, 0
|
|
_0803C8C0: .4byte 0x02023D08
|
|
_0803C8C4: .4byte 0x02024140
|
|
_0803C8C8: .4byte 0x02023508
|
|
_0803C8CC: .4byte 0x02023F24
|
|
_0803C8D0: .4byte 0x02023EC0
|
|
_0803C8D4: .4byte 0x02023FD6
|
|
_0803C8D8:
|
|
adds r0, r2, #0
|
|
movs r1, #1
|
|
bl RecordedBattle_ClearBattlerAction
|
|
ldr r2, _0803C8F4
|
|
ldrb r0, [r5]
|
|
adds r2, r0, r2
|
|
ldr r1, [r4]
|
|
adds r0, r0, r1
|
|
adds r0, #0x84
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
b _0803C948
|
|
.align 2, 0
|
|
_0803C8F4: .4byte 0x02023FD6
|
|
_0803C8F8:
|
|
ldr r0, _0803C9C4
|
|
strb r2, [r0]
|
|
ldr r7, _0803C9C8
|
|
ldr r6, _0803C9CC
|
|
ldrb r0, [r5]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r6
|
|
ldr r4, [r0]
|
|
str r4, [r7]
|
|
ldr r3, _0803C9D0
|
|
ldr r1, _0803C9D4
|
|
ldrb r0, [r5]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r2, [r0]
|
|
lsls r1, r2, #4
|
|
movs r0, #0xf0
|
|
lsls r0, r0, #0x18
|
|
orrs r1, r0
|
|
orrs r1, r2
|
|
lsls r0, r2, #8
|
|
orrs r1, r0
|
|
lsls r2, r2, #0xc
|
|
orrs r1, r2
|
|
ldr r0, [r3]
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803C93E
|
|
ldr r0, _0803C9D8
|
|
ldrb r1, [r4]
|
|
lsls r1, r1, #2
|
|
adds r1, r1, r0
|
|
ldr r0, [r1]
|
|
bl _call_via_r0
|
|
_0803C93E:
|
|
ldrb r0, [r5]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r6
|
|
ldr r1, [r7]
|
|
str r1, [r0]
|
|
_0803C948:
|
|
ldr r0, _0803C9DC
|
|
ldrb r1, [r0]
|
|
adds r1, #1
|
|
strb r1, [r0]
|
|
ldr r0, _0803C9E0
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
_0803C956:
|
|
adds r5, r0, #0
|
|
ldrb r0, [r5]
|
|
cmp r1, r0
|
|
bhs _0803C962
|
|
bl HandleTurnActionSelectionState
|
|
_0803C962:
|
|
ldr r0, _0803C9E4
|
|
ldrb r0, [r0, #4]
|
|
ldrb r1, [r5]
|
|
cmp r0, r1
|
|
bne _0803C9B4
|
|
movs r0, #1
|
|
bl sub_08185D94
|
|
ldr r1, _0803C9E8
|
|
ldr r0, _0803C9EC
|
|
str r0, [r1]
|
|
ldr r0, _0803C9F0
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xf
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803C9B4
|
|
movs r4, #0
|
|
ldrb r5, [r5]
|
|
cmp r4, r5
|
|
bge _0803C9B4
|
|
_0803C98E:
|
|
ldr r0, _0803C9F4
|
|
adds r0, r4, r0
|
|
ldrb r0, [r0]
|
|
cmp r0, #2
|
|
bne _0803C9AA
|
|
lsls r0, r4, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _0803C9F8
|
|
ldr r1, [r1]
|
|
adds r1, r4, r1
|
|
adds r1, #0x5c
|
|
ldrb r1, [r1]
|
|
bl sub_08056DEC
|
|
_0803C9AA:
|
|
adds r4, #1
|
|
ldr r0, _0803C9E0
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _0803C98E
|
|
_0803C9B4:
|
|
add sp, #0x1c
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803C9C4: .4byte 0x02023EAF
|
|
_0803C9C8: .4byte 0x02023EB8
|
|
_0803C9CC: .4byte 0x02023EC4
|
|
_0803C9D0: .4byte 0x02023D0C
|
|
_0803C9D4: .4byte 0x082FACB4
|
|
_0803C9D8: .4byte 0x082EC694
|
|
_0803C9DC: .4byte 0x02023D08
|
|
_0803C9E0: .4byte 0x02023D10
|
|
_0803C9E4: .4byte 0x02023FD6
|
|
_0803C9E8: .4byte 0x03005A64
|
|
_0803C9EC: .4byte 0x0803CF2D
|
|
_0803C9F0: .4byte 0x02022C90
|
|
_0803C9F4: .4byte 0x02023EC0
|
|
_0803C9F8: .4byte 0x02024140
|
|
thumb_func_end HandleTurnActionSelectionState
|
|
|
|
thumb_func_start AllAtActionConfirmed
|
|
AllAtActionConfirmed: @ 0x0803C9FC
|
|
push {r4, r5, lr}
|
|
movs r3, #0
|
|
movs r1, #0
|
|
ldr r0, _0803CA2C
|
|
ldrb r2, [r0]
|
|
adds r5, r0, #0
|
|
cmp r3, r2
|
|
bge _0803CA1E
|
|
ldr r4, _0803CA30
|
|
_0803CA0E:
|
|
adds r0, r1, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, #5
|
|
bne _0803CA18
|
|
adds r3, #1
|
|
_0803CA18:
|
|
adds r1, #1
|
|
cmp r1, r2
|
|
blt _0803CA0E
|
|
_0803CA1E:
|
|
adds r0, r3, #1
|
|
ldrb r5, [r5]
|
|
cmp r0, r5
|
|
beq _0803CA34
|
|
movs r0, #0
|
|
b _0803CA36
|
|
.align 2, 0
|
|
_0803CA2C: .4byte 0x02023D10
|
|
_0803CA30: .4byte 0x02023FD6
|
|
_0803CA34:
|
|
movs r0, #1
|
|
_0803CA36:
|
|
pop {r4, r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end AllAtActionConfirmed
|
|
|
|
thumb_func_start sub_0803CA3C
|
|
sub_0803CA3C: @ 0x0803CA3C
|
|
push {r4, r5, r6, r7, lr}
|
|
ldr r7, _0803CB10
|
|
ldrb r0, [r7]
|
|
ldr r6, _0803CB14
|
|
ldr r1, [r6]
|
|
adds r1, r0, r1
|
|
adds r1, #0x5c
|
|
ldr r4, _0803CB18
|
|
lsls r0, r0, #9
|
|
adds r2, r4, #1
|
|
adds r0, r0, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldrb r0, [r7]
|
|
lsls r1, r0, #9
|
|
adds r1, r1, r2
|
|
ldrb r1, [r1]
|
|
bl RecordedBattle_SetBattlerAction
|
|
ldr r0, _0803CB1C
|
|
ldr r0, [r0]
|
|
movs r1, #0x42
|
|
ands r0, r1
|
|
cmp r0, #0x42
|
|
bne _0803CB0A
|
|
ldrb r0, [r7]
|
|
ldr r2, [r6]
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r0
|
|
adds r1, 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, r1, r0
|
|
adds r1, r1, r2
|
|
adds r1, #0x60
|
|
lsls r0, r0, #9
|
|
adds r5, r4, #2
|
|
adds r0, 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, r0, r1
|
|
adds r0, r0, r2
|
|
adds r0, #0x61
|
|
lsls r1, r1, #9
|
|
adds r4, #3
|
|
mov ip, r4
|
|
add r1, ip
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
ldrb r0, [r7]
|
|
movs r4, #2
|
|
eors r0, r4
|
|
ldr r2, [r6]
|
|
lsls r1, r0, #1
|
|
adds r1, r1, r0
|
|
adds r1, 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, r1, r0
|
|
adds r1, r1, r2
|
|
adds r1, #0x60
|
|
ldrb r0, [r7]
|
|
lsls r0, r0, #9
|
|
adds r0, r0, r5
|
|
ldrb r0, [r0]
|
|
ands r3, r0
|
|
lsrs r3, 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, r1, r4
|
|
adds r1, r1, r0
|
|
adds r1, #0x62
|
|
ldrb r0, [r7]
|
|
lsls r0, r0, #9
|
|
add r0, ip
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
_0803CB0A:
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803CB10: .4byte 0x02023D08
|
|
_0803CB14: .4byte 0x02024140
|
|
_0803CB18: .4byte 0x02023508
|
|
_0803CB1C: .4byte 0x02022C90
|
|
thumb_func_end sub_0803CA3C
|
|
|
|
thumb_func_start SwapTurnOrder
|
|
SwapTurnOrder: @ 0x0803CB20
|
|
push {r4, r5, lr}
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
ldr r2, _0803CB4C
|
|
adds r4, r0, r2
|
|
ldrb r5, [r4]
|
|
adds r2, r1, r2
|
|
ldrb r3, [r2]
|
|
strb r3, [r4]
|
|
strb r5, [r2]
|
|
ldr r2, _0803CB50
|
|
adds r0, r0, r2
|
|
ldrb r5, [r0]
|
|
adds r1, r1, r2
|
|
ldrb r2, [r1]
|
|
strb r2, [r0]
|
|
strb r5, [r1]
|
|
pop {r4, r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803CB4C: .4byte 0x02023D1E
|
|
_0803CB50: .4byte 0x02023D22
|
|
thumb_func_end SwapTurnOrder
|
|
|
|
thumb_func_start GetWhoStrikesFirst
|
|
GetWhoStrikesFirst: @ 0x0803CB54
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0xc
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
mov sb, r0
|
|
lsls r1, r1, #0x18
|
|
lsrs r1, r1, #0x18
|
|
mov sl, r1
|
|
lsls r2, r2, #0x18
|
|
lsrs r2, r2, #0x18
|
|
str r2, [sp, #4]
|
|
movs r0, #0
|
|
str r0, [sp, #8]
|
|
str r0, [sp]
|
|
movs r0, #0x13
|
|
movs r1, #0
|
|
movs r2, #0xd
|
|
movs r3, #0
|
|
bl AbilityBattleEffects
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803CC1C
|
|
ldr r1, [sp, #8]
|
|
str r1, [sp]
|
|
movs r0, #0x13
|
|
movs r1, #0
|
|
movs r2, #0x4d
|
|
movs r3, #0
|
|
bl AbilityBattleEffects
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803CC1C
|
|
ldr r1, _0803CBD4
|
|
movs r0, #0x58
|
|
mov r2, sb
|
|
muls r2, r0, r2
|
|
adds r0, r2, #0
|
|
adds r0, r0, r1
|
|
adds r0, #0x20
|
|
ldrb r3, [r0]
|
|
cmp r3, #0x21
|
|
bne _0803CBC0
|
|
ldr r0, _0803CBD8
|
|
ldrh r1, [r0]
|
|
movs r0, #7
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803CBD0
|
|
_0803CBC0:
|
|
cmp r3, #0x22
|
|
bne _0803CBDC
|
|
ldr r0, _0803CBD8
|
|
ldrh r1, [r0]
|
|
movs r0, #0x60
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803CBDC
|
|
_0803CBD0:
|
|
movs r3, #2
|
|
b _0803CBDE
|
|
.align 2, 0
|
|
_0803CBD4: .4byte 0x02023D28
|
|
_0803CBD8: .4byte 0x02024070
|
|
_0803CBDC:
|
|
movs r3, #1
|
|
_0803CBDE:
|
|
movs r0, #0x58
|
|
mov r1, sl
|
|
muls r1, r0, r1
|
|
adds r0, r1, #0
|
|
ldr r2, _0803CC14
|
|
adds r0, r0, r2
|
|
adds r0, #0x20
|
|
ldrb r2, [r0]
|
|
cmp r2, #0x21
|
|
bne _0803CBFE
|
|
ldr r0, _0803CC18
|
|
ldrh r1, [r0]
|
|
movs r0, #7
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803CC0E
|
|
_0803CBFE:
|
|
cmp r2, #0x22
|
|
bne _0803CC1E
|
|
ldr r0, _0803CC18
|
|
ldrh r1, [r0]
|
|
movs r0, #0x60
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803CC1E
|
|
_0803CC0E:
|
|
movs r7, #2
|
|
b _0803CC20
|
|
.align 2, 0
|
|
_0803CC14: .4byte 0x02023D28
|
|
_0803CC18: .4byte 0x02024070
|
|
_0803CC1C:
|
|
movs r3, #1
|
|
_0803CC1E:
|
|
movs r7, #1
|
|
_0803CC20:
|
|
ldr r1, _0803CC64
|
|
movs r0, #0x58
|
|
mov r2, sb
|
|
muls r2, r0, r2
|
|
adds r0, r2, #0
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4, #6]
|
|
muls r3, r0, r3
|
|
ldr r2, _0803CC68
|
|
movs r1, #0x1b
|
|
ldrsb r1, [r4, r1]
|
|
lsls r1, r1, #1
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
muls r0, r3, r0
|
|
adds r2, #1
|
|
adds r1, r1, r2
|
|
ldrb r1, [r1]
|
|
bl __divsi3
|
|
mov r8, r0
|
|
ldrh r0, [r4, #0x2e]
|
|
cmp r0, #0xaf
|
|
bne _0803CC70
|
|
ldr r1, _0803CC6C
|
|
mov r3, sb
|
|
lsls r0, r3, #3
|
|
subs r0, r0, r3
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldrb r6, [r0, #7]
|
|
ldrb r5, [r0, #0x1a]
|
|
b _0803CC84
|
|
.align 2, 0
|
|
_0803CC64: .4byte 0x02023D28
|
|
_0803CC68: .4byte 0x082FA6B6
|
|
_0803CC6C: .4byte 0x020240A8
|
|
_0803CC70:
|
|
ldrh r0, [r4, #0x2e]
|
|
bl sub_080D6CF8
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
ldrh r0, [r4, #0x2e]
|
|
bl sub_080D6D1C
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
_0803CC84:
|
|
ldr r0, _0803CD40
|
|
ldr r0, [r0]
|
|
ldr r1, _0803CD44
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803CCB8
|
|
ldr r0, _0803CD48
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803CCB8
|
|
mov r0, sb
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803CCB8
|
|
movs r0, #0x6e
|
|
mov r1, r8
|
|
muls r1, r0, r1
|
|
adds r0, r1, #0
|
|
movs r1, #0x64
|
|
bl __udivsi3
|
|
mov r8, r0
|
|
_0803CCB8:
|
|
cmp r6, #0x18
|
|
bne _0803CCC2
|
|
mov r2, r8
|
|
lsrs r2, r2, #1
|
|
mov r8, r2
|
|
_0803CCC2:
|
|
ldr r1, _0803CD4C
|
|
movs r0, #0x58
|
|
mov r3, sb
|
|
muls r3, r0, r3
|
|
adds r0, r3, #0
|
|
adds r1, #0x4c
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, #0x40
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803CCE0
|
|
mov r0, r8
|
|
lsrs r0, r0, #2
|
|
mov r8, r0
|
|
_0803CCE0:
|
|
cmp r6, #0x1a
|
|
bne _0803CCFC
|
|
ldr r0, _0803CD50
|
|
ldrh r4, [r0]
|
|
lsls r0, r5, #0x10
|
|
subs r0, r0, r5
|
|
movs r1, #0x64
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
bge _0803CCFC
|
|
movs r1, #1
|
|
rsbs r1, r1, #0
|
|
mov r8, r1
|
|
_0803CCFC:
|
|
ldr r1, _0803CD4C
|
|
movs r0, #0x58
|
|
mov r2, sl
|
|
muls r2, r0, r2
|
|
adds r0, r2, #0
|
|
adds r4, r0, r1
|
|
ldrh r0, [r4, #6]
|
|
adds r3, r0, #0
|
|
muls r3, r7, r3
|
|
ldr r2, _0803CD54
|
|
movs r1, #0x1b
|
|
ldrsb r1, [r4, r1]
|
|
lsls r1, r1, #1
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
muls r0, r3, r0
|
|
adds r2, #1
|
|
adds r1, r1, r2
|
|
ldrb r1, [r1]
|
|
bl __divsi3
|
|
adds r7, r0, #0
|
|
ldrh r0, [r4, #0x2e]
|
|
cmp r0, #0xaf
|
|
bne _0803CD5C
|
|
ldr r1, _0803CD58
|
|
mov r3, sl
|
|
lsls r0, r3, #3
|
|
subs r0, r0, r3
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldrb r6, [r0, #7]
|
|
ldrb r5, [r0, #0x1a]
|
|
b _0803CD70
|
|
.align 2, 0
|
|
_0803CD40: .4byte 0x02022C90
|
|
_0803CD44: .4byte 0x023F0102
|
|
_0803CD48: .4byte 0x00000869
|
|
_0803CD4C: .4byte 0x02023D28
|
|
_0803CD50: .4byte 0x02023FD4
|
|
_0803CD54: .4byte 0x082FA6B6
|
|
_0803CD58: .4byte 0x020240A8
|
|
_0803CD5C:
|
|
ldrh r0, [r4, #0x2e]
|
|
bl sub_080D6CF8
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
ldrh r0, [r4, #0x2e]
|
|
bl sub_080D6D1C
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
_0803CD70:
|
|
ldr r0, _0803CDE8
|
|
ldr r0, [r0]
|
|
ldr r1, _0803CDEC
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803CDA0
|
|
ldr r0, _0803CDF0
|
|
bl FlagGet
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803CDA0
|
|
mov r0, sl
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803CDA0
|
|
movs r0, #0x6e
|
|
muls r0, r7, r0
|
|
movs r1, #0x64
|
|
bl __udivsi3
|
|
adds r7, r0, #0
|
|
_0803CDA0:
|
|
cmp r6, #0x18
|
|
bne _0803CDA6
|
|
lsrs r7, r7, #1
|
|
_0803CDA6:
|
|
ldr r2, _0803CDF4
|
|
movs r0, #0x58
|
|
mov r1, sl
|
|
muls r1, r0, r1
|
|
adds r0, r1, #0
|
|
adds r1, r2, #0
|
|
adds r1, #0x4c
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, #0x40
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803CDC2
|
|
lsrs r7, r7, #2
|
|
_0803CDC2:
|
|
cmp r6, #0x1a
|
|
bne _0803CDDC
|
|
ldr r0, _0803CDF8
|
|
ldrh r4, [r0]
|
|
lsls r0, r5, #0x10
|
|
subs r0, r0, r5
|
|
movs r1, #0x64
|
|
bl __divsi3
|
|
cmp r4, r0
|
|
bge _0803CDDC
|
|
movs r7, #1
|
|
rsbs r7, r7, #0
|
|
_0803CDDC:
|
|
ldr r2, [sp, #4]
|
|
cmp r2, #0
|
|
beq _0803CDFC
|
|
movs r3, #0
|
|
b _0803CE98
|
|
.align 2, 0
|
|
_0803CDE8: .4byte 0x02022C90
|
|
_0803CDEC: .4byte 0x023F0102
|
|
_0803CDF0: .4byte 0x00000869
|
|
_0803CDF4: .4byte 0x02023D28
|
|
_0803CDF8: .4byte 0x02023FD4
|
|
_0803CDFC:
|
|
ldr r0, _0803CE1C
|
|
mov r3, sb
|
|
adds r1, r3, r0
|
|
ldrb r1, [r1]
|
|
adds r2, r0, #0
|
|
cmp r1, #0
|
|
bne _0803CE4C
|
|
ldr r0, _0803CE20
|
|
lsls r1, r3, #4
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #0x1d
|
|
cmp r0, #0
|
|
bge _0803CE24
|
|
movs r3, #0xa5
|
|
b _0803CE4E
|
|
.align 2, 0
|
|
_0803CE1C: .4byte 0x02023EC0
|
|
_0803CE20: .4byte 0x02023FE0
|
|
_0803CE24:
|
|
ldr r0, _0803CE44
|
|
ldr r0, [r0]
|
|
add r0, sb
|
|
adds r0, #0x80
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #1
|
|
movs r1, #0x58
|
|
mov r3, sb
|
|
muls r3, r1, r3
|
|
adds r1, r3, #0
|
|
adds r0, r0, r1
|
|
ldr r1, _0803CE48
|
|
adds r1, #0xc
|
|
adds r0, r0, r1
|
|
ldrh r3, [r0]
|
|
b _0803CE4E
|
|
.align 2, 0
|
|
_0803CE44: .4byte 0x02024140
|
|
_0803CE48: .4byte 0x02023D28
|
|
_0803CE4C:
|
|
movs r3, #0
|
|
_0803CE4E:
|
|
mov r1, sl
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803CE98
|
|
ldr r0, _0803CE6C
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #0x1d
|
|
cmp r0, #0
|
|
bge _0803CE70
|
|
movs r2, #0xa5
|
|
b _0803CE9A
|
|
.align 2, 0
|
|
_0803CE6C: .4byte 0x02023FE0
|
|
_0803CE70:
|
|
ldr r0, _0803CE90
|
|
ldr r0, [r0]
|
|
add r0, sl
|
|
adds r0, #0x80
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #1
|
|
movs r1, #0x58
|
|
mov r2, sl
|
|
muls r2, r1, r2
|
|
adds r1, r2, #0
|
|
adds r0, r0, r1
|
|
ldr r1, _0803CE94
|
|
adds r1, #0xc
|
|
adds r0, r0, r1
|
|
ldrh r2, [r0]
|
|
b _0803CE9A
|
|
.align 2, 0
|
|
_0803CE90: .4byte 0x02024140
|
|
_0803CE94: .4byte 0x02023D28
|
|
_0803CE98:
|
|
movs r2, #0
|
|
_0803CE9A:
|
|
ldr r4, _0803CEE4
|
|
lsls r0, r3, #1
|
|
adds r0, r0, r3
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r4
|
|
movs r1, #7
|
|
ldrsb r1, [r0, r1]
|
|
lsls r3, r2, #1
|
|
cmp r1, #0
|
|
bne _0803CEBE
|
|
adds r0, r3, r2
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0, #7]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803CEFC
|
|
_0803CEBE:
|
|
adds r0, r3, r2
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0, #7]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
cmp r1, r0
|
|
bne _0803CEF2
|
|
cmp r8, r7
|
|
bne _0803CEE8
|
|
bl Random
|
|
movs r1, #1
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803CEE8
|
|
movs r3, #2
|
|
b _0803CF18
|
|
.align 2, 0
|
|
_0803CEE4: .4byte 0x082ED220
|
|
_0803CEE8:
|
|
cmp r8, r7
|
|
bhs _0803CF1A
|
|
movs r0, #1
|
|
str r0, [sp, #8]
|
|
b _0803CF1A
|
|
_0803CEF2:
|
|
cmp r1, r0
|
|
bge _0803CF1A
|
|
movs r1, #1
|
|
str r1, [sp, #8]
|
|
b _0803CF1A
|
|
_0803CEFC:
|
|
cmp r8, r7
|
|
bne _0803CF12
|
|
bl Random
|
|
movs r1, #1
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803CF12
|
|
movs r2, #2
|
|
str r2, [sp, #8]
|
|
b _0803CF1A
|
|
_0803CF12:
|
|
cmp r8, r7
|
|
bhs _0803CF1A
|
|
movs r3, #1
|
|
_0803CF18:
|
|
str r3, [sp, #8]
|
|
_0803CF1A:
|
|
ldr r0, [sp, #8]
|
|
add sp, #0xc
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end GetWhoStrikesFirst
|
|
|
|
thumb_func_start SetActionsAndBattlersTurnOrder
|
|
SetActionsAndBattlersTurnOrder: @ 0x0803CF2C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
movs r3, #0
|
|
ldr r0, _0803CF80
|
|
ldr r1, [r0]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803CF98
|
|
ldr r0, _0803CF84
|
|
strb r3, [r0]
|
|
ldr r4, _0803CF88
|
|
mov r8, r0
|
|
ldrb r0, [r4]
|
|
cmp r3, r0
|
|
blo _0803CF54
|
|
b _0803D18E
|
|
_0803CF54:
|
|
ldr r7, _0803CF8C
|
|
ldr r6, _0803CF90
|
|
mov r2, r8
|
|
ldr r5, _0803CF94
|
|
_0803CF5C:
|
|
adds r1, r3, r7
|
|
ldrb r0, [r2]
|
|
adds r0, r0, r6
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r1, r3, r5
|
|
ldrb r0, [r2]
|
|
strb r0, [r1]
|
|
adds r3, #1
|
|
ldrb r0, [r2]
|
|
adds r0, #1
|
|
strb r0, [r2]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldrb r1, [r4]
|
|
cmp r0, r1
|
|
blo _0803CF5C
|
|
b _0803D18E
|
|
.align 2, 0
|
|
_0803CF80: .4byte 0x02022C90
|
|
_0803CF84: .4byte 0x02023D08
|
|
_0803CF88: .4byte 0x02023D10
|
|
_0803CF8C: .4byte 0x02023D1E
|
|
_0803CF90: .4byte 0x02023EC0
|
|
_0803CF94: .4byte 0x02023D22
|
|
_0803CF98:
|
|
movs r2, #2
|
|
ands r1, r2
|
|
cmp r1, #0
|
|
beq _0803CFE8
|
|
ldr r0, _0803CFDC
|
|
strb r3, [r0]
|
|
ldr r1, _0803CFE0
|
|
mov r8, r0
|
|
adds r2, r1, #0
|
|
ldrb r2, [r2]
|
|
cmp r3, r2
|
|
bhs _0803D004
|
|
ldr r0, _0803CFE4
|
|
ldrb r1, [r0]
|
|
adds r4, r0, #0
|
|
cmp r1, #3
|
|
beq _0803D002
|
|
_0803CFBA:
|
|
mov r7, r8
|
|
ldrb r0, [r7]
|
|
adds r0, #1
|
|
strb r0, [r7]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _0803CFE0
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
bhs _0803D004
|
|
ldrb r0, [r7]
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, #3
|
|
bne _0803CFBA
|
|
b _0803D002
|
|
.align 2, 0
|
|
_0803CFDC: .4byte 0x02023D08
|
|
_0803CFE0: .4byte 0x02023D10
|
|
_0803CFE4: .4byte 0x02023EC0
|
|
_0803CFE8:
|
|
ldr r1, _0803D06C
|
|
ldrb r0, [r1]
|
|
ldr r4, _0803D070
|
|
mov r8, r4
|
|
cmp r0, #3
|
|
bne _0803CFF8
|
|
strb r3, [r4]
|
|
movs r3, #5
|
|
_0803CFF8:
|
|
ldrb r0, [r1, #2]
|
|
cmp r0, #3
|
|
bne _0803D004
|
|
mov r7, r8
|
|
strb r2, [r7]
|
|
_0803D002:
|
|
movs r3, #5
|
|
_0803D004:
|
|
cmp r3, #5
|
|
bne _0803D08C
|
|
ldr r6, _0803D074
|
|
ldr r1, _0803D06C
|
|
mov r2, r8
|
|
ldrb r0, [r2]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r6]
|
|
ldr r2, _0803D078
|
|
mov r3, r8
|
|
ldrb r0, [r3]
|
|
strb r0, [r2]
|
|
movs r3, #1
|
|
movs r5, #0
|
|
adds r4, r1, #0
|
|
ldr r7, _0803D07C
|
|
mov sl, r7
|
|
ldr r0, _0803D080
|
|
mov ip, r0
|
|
ldr r1, _0803D084
|
|
mov sb, r1
|
|
ldr r7, _0803D088
|
|
ldrb r7, [r7]
|
|
cmp r5, r7
|
|
bge _0803D05E
|
|
adds r7, r6, #0
|
|
adds r6, r4, #0
|
|
adds r4, r2, #0
|
|
ldr r2, _0803D088
|
|
_0803D040:
|
|
mov r0, r8
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
beq _0803D056
|
|
adds r1, r3, r7
|
|
adds r0, r5, r6
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r0, r3, r4
|
|
strb r5, [r0]
|
|
adds r3, #1
|
|
_0803D056:
|
|
adds r5, #1
|
|
ldrb r1, [r2]
|
|
cmp r5, r1
|
|
blt _0803D040
|
|
_0803D05E:
|
|
mov r2, ip
|
|
mov r3, sl
|
|
str r2, [r3]
|
|
mov r4, sb
|
|
ldr r0, [r4]
|
|
b _0803D198
|
|
.align 2, 0
|
|
_0803D06C: .4byte 0x02023EC0
|
|
_0803D070: .4byte 0x02023D08
|
|
_0803D074: .4byte 0x02023D1E
|
|
_0803D078: .4byte 0x02023D22
|
|
_0803D07C: .4byte 0x03005A64
|
|
_0803D080: .4byte 0x0803D335
|
|
_0803D084: .4byte 0x02024140
|
|
_0803D088: .4byte 0x02023D10
|
|
_0803D08C:
|
|
movs r0, #0
|
|
mov r7, r8
|
|
strb r0, [r7]
|
|
ldr r1, _0803D11C
|
|
ldrb r0, [r1]
|
|
cmp r0, #0
|
|
beq _0803D0D2
|
|
ldr r6, _0803D120
|
|
mov r2, r8
|
|
ldr r5, _0803D124
|
|
ldr r4, _0803D128
|
|
_0803D0A2:
|
|
ldrb r0, [r2]
|
|
adds r0, r0, r6
|
|
ldrb r1, [r0]
|
|
subs r0, r1, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bhi _0803D0C0
|
|
adds r0, r3, r5
|
|
strb r1, [r0]
|
|
adds r1, r3, r4
|
|
mov r7, r8
|
|
ldrb r0, [r7]
|
|
strb r0, [r1]
|
|
adds r3, #1
|
|
_0803D0C0:
|
|
ldrb r0, [r2]
|
|
adds r0, #1
|
|
strb r0, [r2]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _0803D11C
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803D0A2
|
|
_0803D0D2:
|
|
movs r0, #0
|
|
mov r2, r8
|
|
strb r0, [r2]
|
|
ldr r4, _0803D11C
|
|
ldrb r0, [r4]
|
|
cmp r0, #0
|
|
beq _0803D116
|
|
ldr r6, _0803D120
|
|
ldr r5, _0803D124
|
|
ldr r4, _0803D128
|
|
_0803D0E6:
|
|
ldrb r0, [r2]
|
|
adds r0, r0, r6
|
|
ldrb r1, [r0]
|
|
subs r0, r1, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bls _0803D104
|
|
adds r0, r3, r5
|
|
strb r1, [r0]
|
|
adds r1, r3, r4
|
|
mov r7, r8
|
|
ldrb r0, [r7]
|
|
strb r0, [r1]
|
|
adds r3, #1
|
|
_0803D104:
|
|
ldrb r0, [r2]
|
|
adds r0, #1
|
|
strb r0, [r2]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _0803D11C
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803D0E6
|
|
_0803D116:
|
|
movs r5, #0
|
|
b _0803D184
|
|
.align 2, 0
|
|
_0803D11C: .4byte 0x02023D10
|
|
_0803D120: .4byte 0x02023EC0
|
|
_0803D124: .4byte 0x02023D1E
|
|
_0803D128: .4byte 0x02023D22
|
|
_0803D12C:
|
|
adds r4, r5, #1
|
|
adds r7, r4, #0
|
|
ldrb r1, [r1]
|
|
cmp r7, r1
|
|
bge _0803D182
|
|
ldr r6, _0803D1AC
|
|
lsls r2, r5, #0x18
|
|
mov r8, r2
|
|
_0803D13C:
|
|
ldr r0, _0803D1B0
|
|
adds r1, r5, r0
|
|
ldrb r3, [r1]
|
|
adds r0, r4, r0
|
|
ldrb r1, [r0]
|
|
adds r0, r5, r6
|
|
ldrb r2, [r0]
|
|
cmp r2, #1
|
|
beq _0803D178
|
|
adds r0, r4, r6
|
|
ldrb r0, [r0]
|
|
cmp r0, #1
|
|
beq _0803D178
|
|
cmp r2, #2
|
|
beq _0803D178
|
|
cmp r0, #2
|
|
beq _0803D178
|
|
adds r0, r3, #0
|
|
movs r2, #0
|
|
bl GetWhoStrikesFirst
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803D178
|
|
lsls r1, r4, #0x18
|
|
lsrs r1, r1, #0x18
|
|
mov r3, r8
|
|
lsrs r0, r3, #0x18
|
|
bl SwapTurnOrder
|
|
_0803D178:
|
|
adds r4, #1
|
|
ldr r0, _0803D1B4
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
blt _0803D13C
|
|
_0803D182:
|
|
adds r5, r7, #0
|
|
_0803D184:
|
|
ldr r1, _0803D1B4
|
|
ldrb r0, [r1]
|
|
subs r0, #1
|
|
cmp r5, r0
|
|
blt _0803D12C
|
|
_0803D18E:
|
|
ldr r1, _0803D1B8
|
|
ldr r0, _0803D1BC
|
|
str r0, [r1]
|
|
ldr r0, _0803D1C0
|
|
ldr r0, [r0]
|
|
_0803D198:
|
|
adds r0, #0x48
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803D1AC: .4byte 0x02023D1E
|
|
_0803D1B0: .4byte 0x02023D22
|
|
_0803D1B4: .4byte 0x02023D10
|
|
_0803D1B8: .4byte 0x03005A64
|
|
_0803D1BC: .4byte 0x0803D335
|
|
_0803D1C0: .4byte 0x02024140
|
|
thumb_func_end SetActionsAndBattlersTurnOrder
|
|
|
|
thumb_func_start TurnValuesCleanUp
|
|
TurnValuesCleanUp: @ 0x0803D1C4
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
mov sb, r0
|
|
ldr r1, _0803D21C
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
ldr r0, _0803D220
|
|
ldrb r2, [r0]
|
|
adds r5, r1, #0
|
|
cmp r2, #0
|
|
beq _0803D2BC
|
|
ldr r7, _0803D224
|
|
adds r6, r5, #0
|
|
ldr r0, _0803D228
|
|
mov ip, r0
|
|
ldr r1, _0803D22C
|
|
mov r8, r1
|
|
mov sl, r8
|
|
_0803D1F2:
|
|
mov r2, sb
|
|
cmp r2, #0
|
|
beq _0803D230
|
|
ldrb r1, [r6]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1]
|
|
movs r0, #2
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
ldrb r1, [r6]
|
|
lsls r1, r1, #4
|
|
adds r1, r1, r7
|
|
ldrb r2, [r1]
|
|
movs r0, #3
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
strb r0, [r1]
|
|
b _0803D28C
|
|
.align 2, 0
|
|
_0803D21C: .4byte 0x02023D08
|
|
_0803D220: .4byte 0x02023D10
|
|
_0803D224: .4byte 0x02023FE0
|
|
_0803D228: .4byte 0x02023D78
|
|
_0803D22C: .4byte 0x02023F60
|
|
_0803D230:
|
|
ldrb r0, [r6]
|
|
lsls r0, r0, #4
|
|
adds r2, r0, r7
|
|
movs r1, #0
|
|
mov r4, sl
|
|
movs r3, #0
|
|
_0803D23C:
|
|
adds r0, r2, r1
|
|
strb r3, [r0]
|
|
adds r1, #1
|
|
cmp r1, #0xf
|
|
bls _0803D23C
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r1, r0, r4
|
|
ldrb r0, [r1, #0x16]
|
|
cmp r0, #0
|
|
beq _0803D25A
|
|
subs r0, #1
|
|
strb r0, [r1, #0x16]
|
|
_0803D25A:
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r1, r0, r4
|
|
ldrb r0, [r1, #0x19]
|
|
cmp r0, #0
|
|
beq _0803D28C
|
|
subs r0, #1
|
|
strb r0, [r1, #0x19]
|
|
ldrb r2, [r5]
|
|
lsls r0, r2, #3
|
|
subs r0, r0, r2
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r4
|
|
ldrb r0, [r0, #0x19]
|
|
cmp r0, #0
|
|
bne _0803D28C
|
|
movs r0, #0x58
|
|
muls r2, r0, r2
|
|
add r2, ip
|
|
ldr r0, [r2]
|
|
ldr r1, _0803D2D4
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
_0803D28C:
|
|
ldrb r2, [r5]
|
|
lsls r0, r2, #3
|
|
subs r0, r0, r2
|
|
lsls r0, r0, #2
|
|
add r0, r8
|
|
ldrb r0, [r0, #0xa]
|
|
cmp r0, #0
|
|
bne _0803D2AA
|
|
movs r0, #0x58
|
|
muls r2, r0, r2
|
|
add r2, ip
|
|
ldr r0, [r2]
|
|
ldr r1, _0803D2D8
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
_0803D2AA:
|
|
ldrb r0, [r5]
|
|
adds r0, #1
|
|
strb r0, [r5]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r1, _0803D2DC
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803D1F2
|
|
_0803D2BC:
|
|
movs r0, #0
|
|
ldr r2, _0803D2E0
|
|
strb r0, [r2, #8]
|
|
strb r0, [r2, #0x14]
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803D2D4: .4byte 0xFFBFFFFF
|
|
_0803D2D8: .4byte 0xFEFFFFFF
|
|
_0803D2DC: .4byte 0x02023D10
|
|
_0803D2E0: .4byte 0x02023F38
|
|
thumb_func_end TurnValuesCleanUp
|
|
|
|
thumb_func_start SpecialStatusesClear
|
|
SpecialStatusesClear: @ 0x0803D2E4
|
|
push {r4, r5, r6, lr}
|
|
ldr r2, _0803D328
|
|
movs r0, #0
|
|
strb r0, [r2]
|
|
ldr r0, _0803D32C
|
|
ldrb r1, [r0]
|
|
adds r6, r0, #0
|
|
cmp r1, #0
|
|
beq _0803D322
|
|
adds r3, r2, #0
|
|
movs r4, #0
|
|
ldr r5, _0803D330
|
|
_0803D2FC:
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r2, r0, r5
|
|
movs r1, #0
|
|
_0803D308:
|
|
adds r0, r2, r1
|
|
strb r4, [r0]
|
|
adds r1, #1
|
|
cmp r1, #0x13
|
|
bls _0803D308
|
|
ldrb r0, [r3]
|
|
adds r0, #1
|
|
strb r0, [r3]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldrb r1, [r6]
|
|
cmp r0, r1
|
|
blo _0803D2FC
|
|
_0803D322:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803D328: .4byte 0x02023D08
|
|
_0803D32C: .4byte 0x02023D10
|
|
_0803D330: .4byte 0x02024020
|
|
thumb_func_end SpecialStatusesClear
|
|
|
|
thumb_func_start CheckFocusPunch_ClearVarsBeforeTurnStarts
|
|
CheckFocusPunch_ClearVarsBeforeTurnStarts: @ 0x0803D334
|
|
push {r4, r5, r6, r7, lr}
|
|
ldr r0, _0803D3BC
|
|
ldr r0, [r0]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803D3F2
|
|
ldr r2, _0803D3C0
|
|
ldr r0, [r2]
|
|
adds r0, #0x48
|
|
ldr r1, _0803D3C4
|
|
ldrb r0, [r0]
|
|
mov ip, r2
|
|
adds r6, r1, #0
|
|
ldrb r1, [r6]
|
|
cmp r0, r1
|
|
bhs _0803D3F2
|
|
ldr r5, _0803D3C8
|
|
ldr r4, _0803D3CC
|
|
movs r7, #0x84
|
|
lsls r7, r7, #1
|
|
_0803D360:
|
|
ldr r1, [r2]
|
|
adds r1, #0x48
|
|
ldrb r0, [r1]
|
|
strb r0, [r4]
|
|
strb r0, [r5]
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
ldr r1, _0803D3D0
|
|
ldrb r3, [r5]
|
|
lsls r0, r3, #1
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0]
|
|
cmp r0, r7
|
|
bne _0803D3E4
|
|
ldr r1, _0803D3D4
|
|
movs r0, #0x58
|
|
muls r0, r3, r0
|
|
adds r1, #0x4c
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
movs r1, #7
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803D3E4
|
|
ldr r2, _0803D3D8
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
ldrb r0, [r0, #0x18]
|
|
lsls r0, r0, #0x1f
|
|
cmp r0, #0
|
|
bne _0803D3E4
|
|
ldr r0, _0803D3DC
|
|
lsls r1, r3, #4
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #0x1d
|
|
cmp r0, #0
|
|
blt _0803D3E4
|
|
ldr r0, _0803D3E0
|
|
bl BattleScriptExecute
|
|
b _0803D42C
|
|
.align 2, 0
|
|
_0803D3BC: .4byte 0x02023F24
|
|
_0803D3C0: .4byte 0x02024140
|
|
_0803D3C4: .4byte 0x02023D10
|
|
_0803D3C8: .4byte 0x02023D08
|
|
_0803D3CC: .4byte 0x02023EAF
|
|
_0803D3D0: .4byte 0x02023F18
|
|
_0803D3D4: .4byte 0x02023D28
|
|
_0803D3D8: .4byte 0x02023F60
|
|
_0803D3DC: .4byte 0x02023FE0
|
|
_0803D3E0: .4byte 0x08289787
|
|
_0803D3E4:
|
|
mov r2, ip
|
|
ldr r0, [r2]
|
|
adds r0, #0x48
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r6]
|
|
cmp r0, r1
|
|
blo _0803D360
|
|
_0803D3F2:
|
|
bl TryClearRageStatuses
|
|
ldr r1, _0803D434
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
ldr r1, _0803D438
|
|
ldr r0, _0803D43C
|
|
movs r3, #0
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r0, _0803D440
|
|
movs r2, #0
|
|
strh r3, [r0]
|
|
ldr r0, _0803D444
|
|
ldr r0, [r0]
|
|
strb r2, [r0, #0x13]
|
|
ldr r1, _0803D448
|
|
ldr r0, _0803D44C
|
|
str r0, [r1]
|
|
ldr r0, _0803D450
|
|
strb r2, [r0, #3]
|
|
strb r2, [r0, #4]
|
|
ldr r0, _0803D454
|
|
strb r2, [r0, #0x16]
|
|
ldr r0, _0803D458
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #8]
|
|
adds r0, #0x20
|
|
strb r2, [r0]
|
|
_0803D42C:
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803D434: .4byte 0x02023D26
|
|
_0803D438: .4byte 0x02023D27
|
|
_0803D43C: .4byte 0x02023D1E
|
|
_0803D440: .4byte 0x020240A4
|
|
_0803D444: .4byte 0x02024140
|
|
_0803D448: .4byte 0x03005A64
|
|
_0803D44C: .4byte 0x0803D45D
|
|
_0803D450: .4byte 0x02023FD6
|
|
_0803D454: .4byte 0x02024118
|
|
_0803D458: .4byte 0x0202414C
|
|
thumb_func_end CheckFocusPunch_ClearVarsBeforeTurnStarts
|
|
|
|
thumb_func_start RunBattleScriptCommands
|
|
RunBattleScriptCommands: @ 0x0803D45C
|
|
push {r4, r5, r6, lr}
|
|
ldr r6, _0803D4B0
|
|
ldrb r0, [r6]
|
|
ldr r2, _0803D4B4
|
|
cmp r0, #0
|
|
beq _0803D46C
|
|
movs r0, #0xc
|
|
strb r0, [r2]
|
|
_0803D46C:
|
|
ldr r5, _0803D4B8
|
|
ldr r0, [r5]
|
|
adds r0, #0x4b
|
|
ldr r4, _0803D4BC
|
|
ldrb r1, [r4]
|
|
strb r1, [r0]
|
|
ldr r1, _0803D4C0
|
|
ldrb r0, [r2]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
ldr r0, _0803D4C4
|
|
thumb_func_end RunBattleScriptCommands
|
|
|
|
thumb_func_start RunTurnActionsFunctions
|
|
RunTurnActionsFunctions: @ 0x0803D488
|
|
ldrb r1, [r4]
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
blo _0803D4D8
|
|
ldr r2, _0803D4C8
|
|
ldr r0, [r2]
|
|
ldr r1, _0803D4CC
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r3, _0803D4D0
|
|
ldr r2, _0803D4D4
|
|
ldrb r1, [r6]
|
|
movs r0, #0x7f
|
|
ands r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
ldr r0, [r0]
|
|
str r0, [r3]
|
|
b _0803D4F0
|
|
.align 2, 0
|
|
_0803D4B0: .4byte 0x02023FDE
|
|
_0803D4B4: .4byte 0x02023D27
|
|
_0803D4B8: .4byte 0x02024140
|
|
_0803D4BC: .4byte 0x02023D26
|
|
_0803D4C0: .4byte 0x082EC600
|
|
_0803D4C4: .4byte 0x02023D10
|
|
_0803D4C8: .4byte 0x02023F24
|
|
_0803D4CC: .4byte 0xFFEFFFFF
|
|
_0803D4D0: .4byte 0x03005A64
|
|
_0803D4D4: .4byte 0x082EC638
|
|
_0803D4D8:
|
|
ldr r0, [r5]
|
|
adds r0, #0x4b
|
|
ldrb r0, [r0]
|
|
cmp r0, r1
|
|
beq _0803D4F0
|
|
ldr r2, _0803D4F8
|
|
ldr r0, [r2]
|
|
ldr r1, _0803D4FC
|
|
ands r0, r1
|
|
ldr r1, _0803D500
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
_0803D4F0:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803D4F8: .4byte 0x02023F24
|
|
_0803D4FC: .4byte 0xFFFFFDFF
|
|
_0803D500: .4byte 0xFFF7FFFF
|
|
thumb_func_end RunTurnActionsFunctions
|
|
|
|
thumb_func_start HandleEndTurn_BattleWon
|
|
HandleEndTurn_BattleWon: @ 0x0803D504
|
|
push {r4, lr}
|
|
ldr r1, _0803D540
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
ldr r1, _0803D544
|
|
ldr r2, [r1]
|
|
ldr r0, _0803D548
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0803D564
|
|
ldr r1, _0803D54C
|
|
ldr r4, _0803D550
|
|
ldrb r0, [r4]
|
|
strh r0, [r1]
|
|
ldr r1, _0803D554
|
|
ldrb r0, [r4]
|
|
strb r0, [r1]
|
|
movs r0, #0
|
|
bl GetBattlerAtPosition
|
|
ldr r1, _0803D558
|
|
strb r0, [r1]
|
|
ldr r1, _0803D55C
|
|
ldr r0, _0803D560
|
|
str r0, [r1]
|
|
ldrb r1, [r4]
|
|
movs r0, #0x7f
|
|
ands r0, r1
|
|
strb r0, [r4]
|
|
b _0803D6E4
|
|
.align 2, 0
|
|
_0803D540: .4byte 0x02023D27
|
|
_0803D544: .4byte 0x02022C90
|
|
_0803D548: .4byte 0x02000002
|
|
_0803D54C: .4byte 0x02037290
|
|
_0803D550: .4byte 0x02023FDE
|
|
_0803D554: .4byte 0x02022C0C
|
|
_0803D558: .4byte 0x02023EAF
|
|
_0803D55C: .4byte 0x02023EB8
|
|
_0803D560: .4byte 0x08288FBD
|
|
_0803D564:
|
|
movs r0, #8
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0803D5A0
|
|
ldr r0, _0803D58C
|
|
ands r2, r0
|
|
cmp r2, #0
|
|
beq _0803D5A0
|
|
bl BattleStopLowHpSound
|
|
ldr r1, _0803D590
|
|
ldr r0, _0803D594
|
|
str r0, [r1]
|
|
ldr r0, _0803D598
|
|
ldrh r1, [r0]
|
|
ldr r0, _0803D59C
|
|
cmp r1, r0
|
|
bne _0803D58A
|
|
b _0803D6CA
|
|
_0803D58A:
|
|
b _0803D6D4
|
|
.align 2, 0
|
|
_0803D58C: .4byte 0x043F0900
|
|
_0803D590: .4byte 0x02023EB8
|
|
_0803D594: .4byte 0x0828900F
|
|
_0803D598: .4byte 0x0203886A
|
|
_0803D59C: .4byte 0x000003FE
|
|
_0803D5A0:
|
|
ldr r0, [r1]
|
|
movs r1, #0xa
|
|
ands r0, r1
|
|
cmp r0, #8
|
|
beq _0803D5AC
|
|
b _0803D6DE
|
|
_0803D5AC:
|
|
bl BattleStopLowHpSound
|
|
ldr r1, _0803D5D4
|
|
ldr r0, _0803D5D8
|
|
str r0, [r1]
|
|
ldr r1, _0803D5DC
|
|
ldr r0, _0803D5E0
|
|
ldrh r0, [r0]
|
|
lsls r0, r0, #5
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0, #1]
|
|
subs r0, #3
|
|
cmp r0, #0x32
|
|
bls _0803D5CA
|
|
b _0803D6D4
|
|
_0803D5CA:
|
|
lsls r0, r0, #2
|
|
ldr r1, _0803D5E4
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0803D5D4: .4byte 0x02023EB8
|
|
_0803D5D8: .4byte 0x08288EB5
|
|
_0803D5DC: .4byte 0x082E383C
|
|
_0803D5E0: .4byte 0x0203886A
|
|
_0803D5E4: .4byte 0x0803D5E8
|
|
_0803D5E8: @ jump table
|
|
.4byte _0803D6C0 @ case 0
|
|
.4byte _0803D6D4 @ case 1
|
|
.4byte _0803D6D4 @ case 2
|
|
.4byte _0803D6D4 @ case 3
|
|
.4byte _0803D6D4 @ case 4
|
|
.4byte _0803D6D4 @ case 5
|
|
.4byte _0803D6C0 @ case 6
|
|
.4byte _0803D6D4 @ case 7
|
|
.4byte _0803D6C0 @ case 8
|
|
.4byte _0803D6D4 @ case 9
|
|
.4byte _0803D6C0 @ case 10
|
|
.4byte _0803D6D4 @ case 11
|
|
.4byte _0803D6D4 @ case 12
|
|
.4byte _0803D6D4 @ case 13
|
|
.4byte _0803D6D4 @ case 14
|
|
.4byte _0803D6D4 @ case 15
|
|
.4byte _0803D6D4 @ case 16
|
|
.4byte _0803D6D4 @ case 17
|
|
.4byte _0803D6D4 @ case 18
|
|
.4byte _0803D6D4 @ case 19
|
|
.4byte _0803D6D4 @ case 20
|
|
.4byte _0803D6D4 @ case 21
|
|
.4byte _0803D6D4 @ case 22
|
|
.4byte _0803D6D4 @ case 23
|
|
.4byte _0803D6D4 @ case 24
|
|
.4byte _0803D6D4 @ case 25
|
|
.4byte _0803D6D4 @ case 26
|
|
.4byte _0803D6D4 @ case 27
|
|
.4byte _0803D6B4 @ case 28
|
|
.4byte _0803D6CA @ case 29
|
|
.4byte _0803D6D4 @ case 30
|
|
.4byte _0803D6D4 @ case 31
|
|
.4byte _0803D6D4 @ case 32
|
|
.4byte _0803D6D4 @ case 33
|
|
.4byte _0803D6D4 @ case 34
|
|
.4byte _0803D6B4 @ case 35
|
|
.4byte _0803D6D4 @ case 36
|
|
.4byte _0803D6D4 @ case 37
|
|
.4byte _0803D6D4 @ case 38
|
|
.4byte _0803D6D4 @ case 39
|
|
.4byte _0803D6D4 @ case 40
|
|
.4byte _0803D6D4 @ case 41
|
|
.4byte _0803D6D4 @ case 42
|
|
.4byte _0803D6D4 @ case 43
|
|
.4byte _0803D6D4 @ case 44
|
|
.4byte _0803D6D4 @ case 45
|
|
.4byte _0803D6C0 @ case 46
|
|
.4byte _0803D6D4 @ case 47
|
|
.4byte _0803D6D4 @ case 48
|
|
.4byte _0803D6D4 @ case 49
|
|
.4byte _0803D6C0 @ case 50
|
|
_0803D6B4:
|
|
ldr r0, _0803D6BC
|
|
bl PlayBGM
|
|
b _0803D6E4
|
|
.align 2, 0
|
|
_0803D6BC: .4byte 0x00000163
|
|
_0803D6C0:
|
|
movs r0, #0xd4
|
|
lsls r0, r0, #1
|
|
bl PlayBGM
|
|
b _0803D6E4
|
|
_0803D6CA:
|
|
movs r0, #0xb1
|
|
lsls r0, r0, #1
|
|
bl PlayBGM
|
|
b _0803D6E4
|
|
_0803D6D4:
|
|
movs r0, #0xce
|
|
lsls r0, r0, #1
|
|
bl PlayBGM
|
|
b _0803D6E4
|
|
_0803D6DE:
|
|
ldr r1, _0803D6F0
|
|
ldr r0, _0803D6F4
|
|
str r0, [r1]
|
|
_0803D6E4:
|
|
ldr r1, _0803D6F8
|
|
ldr r0, _0803D6FC
|
|
str r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803D6F0: .4byte 0x02023EB8
|
|
_0803D6F4: .4byte 0x08288EF2
|
|
_0803D6F8: .4byte 0x03005A64
|
|
_0803D6FC: .4byte 0x0803D919
|
|
thumb_func_end HandleEndTurn_BattleWon
|
|
|
|
thumb_func_start HandleEndTurn_BattleLost
|
|
HandleEndTurn_BattleLost: @ 0x0803D700
|
|
push {r4, lr}
|
|
ldr r1, _0803D748
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
ldr r0, _0803D74C
|
|
ldr r1, [r0]
|
|
ldr r0, _0803D750
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803D7BC
|
|
ldr r0, _0803D754
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803D784
|
|
ldr r3, _0803D758
|
|
ldrb r2, [r3]
|
|
movs r0, #0x80
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0803D76C
|
|
ldr r1, _0803D75C
|
|
ldr r0, _0803D760
|
|
str r0, [r1]
|
|
movs r0, #0x7f
|
|
ands r0, r2
|
|
strb r0, [r3]
|
|
ldr r0, _0803D764
|
|
ldr r1, [r0]
|
|
ldr r0, _0803D768
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, #8
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
b _0803D7C2
|
|
.align 2, 0
|
|
_0803D748: .4byte 0x02023D27
|
|
_0803D74C: .4byte 0x02022C90
|
|
_0803D750: .4byte 0x02000002
|
|
_0803D754: .4byte 0x003F0100
|
|
_0803D758: .4byte 0x02023FDE
|
|
_0803D75C: .4byte 0x02023EB8
|
|
_0803D760: .4byte 0x08289F50
|
|
_0803D764: .4byte 0x03005AF0
|
|
_0803D768: .4byte 0x00000CA9
|
|
_0803D76C:
|
|
ldr r1, _0803D77C
|
|
ldr r0, _0803D780
|
|
str r0, [r1]
|
|
movs r0, #0x7f
|
|
ands r0, r2
|
|
strb r0, [r3]
|
|
b _0803D7C2
|
|
.align 2, 0
|
|
_0803D77C: .4byte 0x02023EB8
|
|
_0803D780: .4byte 0x08288F93
|
|
_0803D784:
|
|
ldr r1, _0803D7A8
|
|
ldr r4, _0803D7AC
|
|
ldrb r0, [r4]
|
|
strb r0, [r1]
|
|
movs r0, #0
|
|
bl GetBattlerAtPosition
|
|
ldr r1, _0803D7B0
|
|
strb r0, [r1]
|
|
ldr r1, _0803D7B4
|
|
ldr r0, _0803D7B8
|
|
str r0, [r1]
|
|
ldrb r1, [r4]
|
|
movs r0, #0x7f
|
|
ands r0, r1
|
|
strb r0, [r4]
|
|
b _0803D7C2
|
|
.align 2, 0
|
|
_0803D7A8: .4byte 0x02022C0C
|
|
_0803D7AC: .4byte 0x02023FDE
|
|
_0803D7B0: .4byte 0x02023EAF
|
|
_0803D7B4: .4byte 0x02023EB8
|
|
_0803D7B8: .4byte 0x08288FBD
|
|
_0803D7BC:
|
|
ldr r1, _0803D7D0
|
|
ldr r0, _0803D7D4
|
|
str r0, [r1]
|
|
_0803D7C2:
|
|
ldr r1, _0803D7D8
|
|
ldr r0, _0803D7DC
|
|
str r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803D7D0: .4byte 0x02023EB8
|
|
_0803D7D4: .4byte 0x08288EF5
|
|
_0803D7D8: .4byte 0x03005A64
|
|
_0803D7DC: .4byte 0x0803D919
|
|
thumb_func_end HandleEndTurn_BattleLost
|
|
|
|
thumb_func_start HandleEndTurn_RanFromBattle
|
|
HandleEndTurn_RanFromBattle: @ 0x0803D7E0
|
|
push {lr}
|
|
ldr r1, _0803D81C
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
ldr r1, _0803D820
|
|
ldr r2, [r1]
|
|
ldr r0, _0803D824
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0803D83C
|
|
movs r0, #8
|
|
ands r2, r0
|
|
cmp r2, #0
|
|
beq _0803D83C
|
|
ldr r1, _0803D828
|
|
ldr r0, _0803D82C
|
|
str r0, [r1]
|
|
ldr r1, _0803D830
|
|
movs r0, #9
|
|
strb r0, [r1]
|
|
ldr r0, _0803D834
|
|
ldr r1, [r0]
|
|
ldr r0, _0803D838
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, #8
|
|
orrs r0, r2
|
|
strb r0, [r1]
|
|
b _0803D8AA
|
|
.align 2, 0
|
|
_0803D81C: .4byte 0x02023D27
|
|
_0803D820: .4byte 0x02022C90
|
|
_0803D824: .4byte 0x003F0100
|
|
_0803D828: .4byte 0x02023EB8
|
|
_0803D82C: .4byte 0x08289F49
|
|
_0803D830: .4byte 0x02023FDE
|
|
_0803D834: .4byte 0x03005AF0
|
|
_0803D838: .4byte 0x00000CA9
|
|
_0803D83C:
|
|
ldr r0, [r1]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0x13
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803D864
|
|
ldr r1, _0803D858
|
|
ldr r0, _0803D85C
|
|
str r0, [r1]
|
|
ldr r1, _0803D860
|
|
movs r0, #9
|
|
strb r0, [r1]
|
|
b _0803D8AA
|
|
.align 2, 0
|
|
_0803D858: .4byte 0x02023EB8
|
|
_0803D85C: .4byte 0x08289F49
|
|
_0803D860: .4byte 0x02023FDE
|
|
_0803D864:
|
|
ldr r1, _0803D884
|
|
ldr r0, _0803D888
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #4
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0, #1]
|
|
lsls r0, r0, #0x1b
|
|
lsrs r0, r0, #0x1e
|
|
cmp r0, #1
|
|
beq _0803D894
|
|
cmp r0, #2
|
|
beq _0803D8A4
|
|
ldr r1, _0803D88C
|
|
ldr r0, _0803D890
|
|
b _0803D8A8
|
|
.align 2, 0
|
|
_0803D884: .4byte 0x02023FE0
|
|
_0803D888: .4byte 0x02023EAF
|
|
_0803D88C: .4byte 0x02023EB8
|
|
_0803D890: .4byte 0x08289078
|
|
_0803D894:
|
|
ldr r1, _0803D89C
|
|
ldr r0, _0803D8A0
|
|
b _0803D8A8
|
|
.align 2, 0
|
|
_0803D89C: .4byte 0x02023EB8
|
|
_0803D8A0: .4byte 0x08289063
|
|
_0803D8A4:
|
|
ldr r1, _0803D8B4
|
|
ldr r0, _0803D8B8
|
|
_0803D8A8:
|
|
str r0, [r1]
|
|
_0803D8AA:
|
|
ldr r1, _0803D8BC
|
|
ldr r0, _0803D8C0
|
|
str r0, [r1]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803D8B4: .4byte 0x02023EB8
|
|
_0803D8B8: .4byte 0x08289071
|
|
_0803D8BC: .4byte 0x03005A64
|
|
_0803D8C0: .4byte 0x0803D919
|
|
thumb_func_end HandleEndTurn_RanFromBattle
|
|
|
|
thumb_func_start HandleEndTurn_MonFled
|
|
HandleEndTurn_MonFled: @ 0x0803D8C4
|
|
ldr r1, _0803D8F8
|
|
movs r0, #0
|
|
strb r0, [r1]
|
|
ldr r1, _0803D8FC
|
|
movs r0, #0xfd
|
|
strb r0, [r1]
|
|
movs r0, #7
|
|
strb r0, [r1, #1]
|
|
ldr r2, _0803D900
|
|
ldrb r0, [r2]
|
|
strb r0, [r1, #2]
|
|
ldr r3, _0803D904
|
|
ldrb r0, [r2]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r3
|
|
ldrh r0, [r0]
|
|
strb r0, [r1, #3]
|
|
movs r0, #0xff
|
|
strb r0, [r1, #4]
|
|
ldr r1, _0803D908
|
|
ldr r0, _0803D90C
|
|
str r0, [r1]
|
|
ldr r1, _0803D910
|
|
ldr r0, _0803D914
|
|
str r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_0803D8F8: .4byte 0x02023D27
|
|
_0803D8FC: .4byte 0x02022C0C
|
|
_0803D900: .4byte 0x02023EAF
|
|
_0803D904: .4byte 0x02023D12
|
|
_0803D908: .4byte 0x02023EB8
|
|
_0803D90C: .4byte 0x0828907F
|
|
_0803D910: .4byte 0x03005A64
|
|
_0803D914: .4byte 0x0803D919
|
|
thumb_func_end HandleEndTurn_MonFled
|
|
|
|
thumb_func_start HandleEndTurn_FinishBattle
|
|
HandleEndTurn_FinishBattle: @ 0x0803D918
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
ldr r0, _0803D994
|
|
ldrb r0, [r0]
|
|
subs r0, #0xb
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bls _0803D92E
|
|
b _0803DA50
|
|
_0803D92E:
|
|
ldr r0, _0803D998
|
|
ldr r1, [r0]
|
|
ldr r0, _0803D99C
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
bne _0803D9F6
|
|
ldr r2, _0803D9A0
|
|
strb r1, [r2]
|
|
ldr r0, _0803D9A4
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
bhs _0803D9F2
|
|
adds r5, r2, #0
|
|
ldr r0, _0803D9A8
|
|
mov r8, r0
|
|
movs r7, #0x64
|
|
ldr r6, _0803D9AC
|
|
_0803D950:
|
|
ldrb r0, [r5]
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803D9E0
|
|
ldr r4, _0803D9B0
|
|
ldrh r0, [r4, #6]
|
|
cmp r0, #0
|
|
bne _0803D9B4
|
|
ldrb r0, [r5]
|
|
lsls r0, r0, #1
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
muls r0, r7, r0
|
|
adds r0, r0, r6
|
|
movs r1, #0xb
|
|
movs r2, #0
|
|
bl GetMonData
|
|
strh r0, [r4, #6]
|
|
ldrb r0, [r5]
|
|
lsls r0, r0, #1
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
muls r0, r7, r0
|
|
adds r0, r0, r6
|
|
movs r1, #2
|
|
adds r2, r4, #0
|
|
adds r2, #8
|
|
bl GetMonData
|
|
b _0803D9E0
|
|
.align 2, 0
|
|
_0803D994: .4byte 0x02023D27
|
|
_0803D998: .4byte 0x02022C90
|
|
_0803D99C: .4byte 0x023F0B92
|
|
_0803D9A0: .4byte 0x02023D08
|
|
_0803D9A4: .4byte 0x02023D10
|
|
_0803D9A8: .4byte 0x02023D12
|
|
_0803D9AC: .4byte 0x02024190
|
|
_0803D9B0: .4byte 0x03005A70
|
|
_0803D9B4:
|
|
ldrb r0, [r5]
|
|
lsls r0, r0, #1
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
muls r0, r7, r0
|
|
adds r0, r0, r6
|
|
movs r1, #0xb
|
|
movs r2, #0
|
|
bl GetMonData
|
|
strh r0, [r4, #0x26]
|
|
ldrb r0, [r5]
|
|
lsls r0, r0, #1
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
muls r0, r7, r0
|
|
adds r0, r0, r6
|
|
movs r1, #2
|
|
adds r2, r4, #0
|
|
adds r2, #0x14
|
|
bl GetMonData
|
|
_0803D9E0:
|
|
ldrb r0, [r5]
|
|
adds r0, #1
|
|
strb r0, [r5]
|
|
ldr r1, _0803DA30
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803D950
|
|
_0803D9F2:
|
|
bl PutPokemonTodayCaughtOnAir
|
|
_0803D9F6:
|
|
ldr r0, _0803DA34
|
|
ldr r0, [r0]
|
|
ldr r1, _0803DA38
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803DA12
|
|
ldr r0, _0803DA3C
|
|
ldrb r1, [r0, #5]
|
|
movs r0, #0x40
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803DA12
|
|
bl sub_080EECA4
|
|
_0803DA12:
|
|
bl sub_0818619C
|
|
movs r0, #3
|
|
bl BeginFastPaletteFade
|
|
movs r0, #5
|
|
bl FadeOutMapMusic
|
|
ldr r1, _0803DA40
|
|
ldr r0, _0803DA44
|
|
str r0, [r1]
|
|
ldr r1, _0803DA48
|
|
ldr r0, _0803DA4C
|
|
str r0, [r1]
|
|
b _0803DA6A
|
|
.align 2, 0
|
|
_0803DA30: .4byte 0x02023D10
|
|
_0803DA34: .4byte 0x02022C90
|
|
_0803DA38: .4byte 0x023F0B9A
|
|
_0803DA3C: .4byte 0x03005A70
|
|
_0803DA40: .4byte 0x03005A64
|
|
_0803DA44: .4byte 0x0803DA81
|
|
_0803DA48: .4byte 0x03005F28
|
|
_0803DA4C: .4byte 0x080380FD
|
|
_0803DA50:
|
|
ldr r0, _0803DA74
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803DA6A
|
|
ldr r1, _0803DA78
|
|
ldr r0, _0803DA7C
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
_0803DA6A:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803DA74: .4byte 0x02023D0C
|
|
_0803DA78: .4byte 0x082EC694
|
|
_0803DA7C: .4byte 0x02023EB8
|
|
thumb_func_end HandleEndTurn_FinishBattle
|
|
|
|
thumb_func_start FreeResetData_ReturnToOvOrDoEvolutions
|
|
FreeResetData_ReturnToOvOrDoEvolutions: @ 0x0803DA80
|
|
push {lr}
|
|
ldr r0, _0803DAAC
|
|
ldrb r1, [r0, #7]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803DAC6
|
|
bl ResetSpriteData
|
|
ldr r0, _0803DAB0
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
beq _0803DAA2
|
|
ldr r0, _0803DAB4
|
|
ldrb r0, [r0]
|
|
cmp r0, #1
|
|
beq _0803DAC0
|
|
_0803DAA2:
|
|
ldr r1, _0803DAB8
|
|
ldr r0, _0803DABC
|
|
str r0, [r1]
|
|
b _0803DAE2
|
|
.align 2, 0
|
|
_0803DAAC: .4byte 0x02037C74
|
|
_0803DAB0: .4byte 0x03005AB4
|
|
_0803DAB4: .4byte 0x02023FDE
|
|
_0803DAB8: .4byte 0x03005A64
|
|
_0803DABC: .4byte 0x0803DBB1
|
|
_0803DAC0:
|
|
ldr r1, _0803DAE8
|
|
ldr r0, _0803DAEC
|
|
str r0, [r1]
|
|
_0803DAC6:
|
|
bl FreeAllWindowBuffers
|
|
ldr r0, _0803DAF0
|
|
ldr r0, [r0]
|
|
movs r1, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803DAE2
|
|
bl FreeMonSpritesGfx
|
|
bl FreeBattleResources
|
|
bl FreeBattleSpritesData
|
|
_0803DAE2:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803DAE8: .4byte 0x03005A64
|
|
_0803DAEC: .4byte 0x0803DAF5
|
|
_0803DAF0: .4byte 0x02022C90
|
|
thumb_func_end FreeResetData_ReturnToOvOrDoEvolutions
|
|
|
|
thumb_func_start TryEvolvePokemon
|
|
TryEvolvePokemon: @ 0x0803DAF4
|
|
push {r4, r5, r6, lr}
|
|
ldr r0, _0803DB4C
|
|
ldrb r1, [r0]
|
|
adds r3, r0, #0
|
|
cmp r1, #0
|
|
beq _0803DB6E
|
|
_0803DB00:
|
|
movs r6, #0
|
|
_0803DB02:
|
|
ldrb r2, [r3]
|
|
ldr r0, _0803DB50
|
|
lsls r1, r6, #2
|
|
adds r1, r1, r0
|
|
ldr r1, [r1]
|
|
adds r0, r2, #0
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803DB60
|
|
bics r2, r1
|
|
strb r2, [r3]
|
|
movs r0, #0x64
|
|
adds r1, r6, #0
|
|
muls r1, r0, r1
|
|
ldr r0, _0803DB54
|
|
adds r5, r1, r0
|
|
adds r0, r5, #0
|
|
movs r1, #0
|
|
bl GetEvolutionTargetSpecies
|
|
lsls r0, r0, #0x10
|
|
lsrs r4, r0, #0x10
|
|
cmp r4, #0
|
|
beq _0803DB60
|
|
bl FreeAllWindowBuffers
|
|
ldr r0, _0803DB58
|
|
ldr r1, _0803DB5C
|
|
str r1, [r0]
|
|
lsls r3, r6, #0x18
|
|
lsrs r3, r3, #0x18
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
movs r2, #1
|
|
bl EvolutionScene
|
|
b _0803DB74
|
|
.align 2, 0
|
|
_0803DB4C: .4byte 0x03005AB4
|
|
_0803DB50: .4byte 0x082FACB4
|
|
_0803DB54: .4byte 0x02024190
|
|
_0803DB58: .4byte 0x03005A64
|
|
_0803DB5C: .4byte 0x0803DB89
|
|
_0803DB60:
|
|
adds r6, #1
|
|
ldr r3, _0803DB7C
|
|
cmp r6, #5
|
|
ble _0803DB02
|
|
ldrb r0, [r3]
|
|
cmp r0, #0
|
|
bne _0803DB00
|
|
_0803DB6E:
|
|
ldr r1, _0803DB80
|
|
ldr r0, _0803DB84
|
|
str r0, [r1]
|
|
_0803DB74:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803DB7C: .4byte 0x03005AB4
|
|
_0803DB80: .4byte 0x03005A64
|
|
_0803DB84: .4byte 0x0803DBB1
|
|
thumb_func_end TryEvolvePokemon
|
|
|
|
thumb_func_start WaitForEvoSceneToFinish
|
|
WaitForEvoSceneToFinish: @ 0x0803DB88
|
|
push {lr}
|
|
ldr r0, _0803DBA0
|
|
ldr r1, [r0, #4]
|
|
ldr r0, _0803DBA4
|
|
cmp r1, r0
|
|
bne _0803DB9A
|
|
ldr r1, _0803DBA8
|
|
ldr r0, _0803DBAC
|
|
str r0, [r1]
|
|
_0803DB9A:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803DBA0: .4byte 0x03002360
|
|
_0803DBA4: .4byte 0x080380FD
|
|
_0803DBA8: .4byte 0x03005A64
|
|
_0803DBAC: .4byte 0x0803DAF5
|
|
thumb_func_end WaitForEvoSceneToFinish
|
|
|
|
thumb_func_start ReturnFromBattleToOverworld
|
|
ReturnFromBattleToOverworld: @ 0x0803DBB0
|
|
push {r4, r5, r6, lr}
|
|
ldr r6, _0803DC34
|
|
ldr r0, [r6]
|
|
movs r5, #2
|
|
ands r0, r5
|
|
cmp r0, #0
|
|
bne _0803DBCC
|
|
ldr r4, _0803DC38
|
|
adds r0, r4, #0
|
|
bl RandomlyGivePartyPokerus
|
|
adds r0, r4, #0
|
|
bl PartySpreadPokerus
|
|
_0803DBCC:
|
|
ldr r4, [r6]
|
|
adds r0, r4, #0
|
|
ands r0, r5
|
|
cmp r0, #0
|
|
beq _0803DBDE
|
|
ldr r0, _0803DC3C
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803DC2C
|
|
_0803DBDE:
|
|
ldr r1, _0803DC40
|
|
ldr r5, _0803DC44
|
|
ldrb r0, [r5]
|
|
strh r0, [r1]
|
|
ldr r3, _0803DC48
|
|
ldr r0, _0803DC4C
|
|
adds r2, r3, r0
|
|
ldrb r1, [r2]
|
|
movs r0, #3
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, _0803DC50
|
|
ldr r0, [r0]
|
|
str r0, [r3]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #3
|
|
ands r4, r0
|
|
cmp r4, #0
|
|
beq _0803DC1E
|
|
ldr r0, _0803DC54
|
|
bl UpdateRoamerHPStatus
|
|
ldrb r1, [r5]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803DC1A
|
|
cmp r1, #7
|
|
bne _0803DC1E
|
|
_0803DC1A:
|
|
bl SetRoamerInactive
|
|
_0803DC1E:
|
|
movs r0, #0x5a
|
|
bl m4aSongNumStop
|
|
ldr r0, _0803DC48
|
|
ldr r0, [r0, #8]
|
|
bl SetMainCallback2
|
|
_0803DC2C:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803DC34: .4byte 0x02022C90
|
|
_0803DC38: .4byte 0x02024190
|
|
_0803DC3C: .4byte 0x030031C4
|
|
_0803DC40: .4byte 0x02037290
|
|
_0803DC44: .4byte 0x02023FDE
|
|
_0803DC48: .4byte 0x03002360
|
|
_0803DC4C: .4byte 0x00000439
|
|
_0803DC50: .4byte 0x03005A60
|
|
_0803DC54: .4byte 0x020243E8
|
|
thumb_func_end ReturnFromBattleToOverworld
|
|
|
|
thumb_func_start RunBattleScriptCommands_PopCallbacksStack
|
|
RunBattleScriptCommands_PopCallbacksStack: @ 0x0803DC58
|
|
push {lr}
|
|
ldr r0, _0803DC94
|
|
ldrb r0, [r0]
|
|
subs r0, #0xb
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #1
|
|
bhi _0803DCA0
|
|
ldr r3, _0803DC98
|
|
ldr r0, [r3]
|
|
ldr r0, [r0, #0xc]
|
|
adds r1, r0, #0
|
|
adds r1, #0x20
|
|
ldrb r0, [r1]
|
|
cmp r0, #0
|
|
beq _0803DC7C
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
_0803DC7C:
|
|
ldr r2, _0803DC9C
|
|
ldr r0, [r3]
|
|
ldr r1, [r0, #0xc]
|
|
adds r0, r1, #0
|
|
adds r0, #0x20
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #2
|
|
adds r1, r1, r0
|
|
ldr r0, [r1]
|
|
str r0, [r2]
|
|
b _0803DCBA
|
|
.align 2, 0
|
|
_0803DC94: .4byte 0x02023D27
|
|
_0803DC98: .4byte 0x0202414C
|
|
_0803DC9C: .4byte 0x03005A64
|
|
_0803DCA0:
|
|
ldr r0, _0803DCC0
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803DCBA
|
|
ldr r1, _0803DCC4
|
|
ldr r0, _0803DCC8
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
_0803DCBA:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803DCC0: .4byte 0x02023D0C
|
|
_0803DCC4: .4byte 0x082EC694
|
|
_0803DCC8: .4byte 0x02023EB8
|
|
thumb_func_end RunBattleScriptCommands_PopCallbacksStack
|
|
|
|
thumb_func_start sub_0803DCCC
|
|
sub_0803DCCC: @ 0x0803DCCC
|
|
push {lr}
|
|
ldr r0, _0803DCEC
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _0803DCE8
|
|
ldr r1, _0803DCF0
|
|
ldr r0, _0803DCF4
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
_0803DCE8:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803DCEC: .4byte 0x02023D0C
|
|
_0803DCF0: .4byte 0x082EC694
|
|
_0803DCF4: .4byte 0x02023EB8
|
|
thumb_func_end sub_0803DCCC
|
|
|
|
thumb_func_start HandleAction_UseMove
|
|
HandleAction_UseMove: @ 0x0803DCF8
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #4
|
|
movs r0, #4
|
|
str r0, [sp]
|
|
ldr r6, _0803DD38
|
|
ldr r1, _0803DD3C
|
|
ldr r0, _0803DD40
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r6]
|
|
ldr r1, _0803DD44
|
|
ldr r3, [r1]
|
|
adds r0, r3, #0
|
|
adds r0, #0x91
|
|
ldrb r2, [r0]
|
|
ldr r1, _0803DD48
|
|
ldrb r0, [r6]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
ands r2, r0
|
|
cmp r2, #0
|
|
beq _0803DD50
|
|
ldr r1, _0803DD4C
|
|
movs r0, #0xc
|
|
b _0803E47C
|
|
.align 2, 0
|
|
_0803DD38: .4byte 0x02023EAF
|
|
_0803DD3C: .4byte 0x02023D22
|
|
_0803DD40: .4byte 0x02023D26
|
|
_0803DD44: .4byte 0x02024140
|
|
_0803DD48: .4byte 0x082FACB4
|
|
_0803DD4C: .4byte 0x02023D27
|
|
_0803DD50:
|
|
ldr r1, _0803DDC8
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
ldr r1, _0803DDCC
|
|
movs r0, #1
|
|
strb r0, [r1, #0xe]
|
|
ldr r5, _0803DDD0
|
|
adds r0, r3, r5
|
|
strb r2, [r0]
|
|
ldr r0, _0803DDD4
|
|
strb r2, [r0]
|
|
ldr r0, _0803DDD8
|
|
strb r2, [r0]
|
|
ldr r0, _0803DDDC
|
|
strb r2, [r0, #6]
|
|
ldr r2, _0803DDE0
|
|
ldr r0, _0803DDE4
|
|
mov sb, r0
|
|
ldrb r0, [r6]
|
|
ldr r3, _0803DDE8
|
|
ldr r1, [r3]
|
|
adds r0, r0, r1
|
|
adds r0, #0x80
|
|
ldrb r0, [r0]
|
|
mov r5, sb
|
|
strb r0, [r5]
|
|
strb r0, [r2]
|
|
ldr r1, _0803DDEC
|
|
ldrb r4, [r6]
|
|
lsls r0, r4, #4
|
|
adds r3, r0, r1
|
|
ldrb r1, [r3]
|
|
lsls r0, r1, #0x1d
|
|
mov r8, r2
|
|
cmp r0, #0
|
|
bge _0803DDFC
|
|
movs r0, #5
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
strb r0, [r3]
|
|
ldr r2, _0803DDF0
|
|
ldr r1, _0803DDF4
|
|
movs r0, #0xa5
|
|
strh r0, [r1]
|
|
strh r0, [r2]
|
|
ldr r2, _0803DDF8
|
|
ldr r0, [r2]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #4
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
movs r0, #0xa5
|
|
movs r1, #0
|
|
bl GetMoveTarget
|
|
ldrb r1, [r6]
|
|
ldr r3, _0803DDE8
|
|
ldr r2, [r3]
|
|
b _0803DF56
|
|
.align 2, 0
|
|
_0803DDC8: .4byte 0x02023EB5
|
|
_0803DDCC: .4byte 0x02024118
|
|
_0803DDD0: .4byte 0x000001A3
|
|
_0803DDD4: .4byte 0x02023F20
|
|
_0803DDD8: .4byte 0x02023EB6
|
|
_0803DDDC: .4byte 0x02023FD6
|
|
_0803DDE0: .4byte 0x02023E8C
|
|
_0803DDE4: .4byte 0x02023E8D
|
|
_0803DDE8: .4byte 0x02024140
|
|
_0803DDEC: .4byte 0x02023FE0
|
|
_0803DDF0: .4byte 0x02023E8E
|
|
_0803DDF4: .4byte 0x02023E90
|
|
_0803DDF8: .4byte 0x02023F24
|
|
_0803DDFC:
|
|
ldr r5, _0803DE34
|
|
mov sl, r5
|
|
movs r0, #0x58
|
|
adds r5, r4, #0
|
|
muls r5, r0, r5
|
|
mov r0, sl
|
|
adds r0, #0x50
|
|
adds r0, r5, r0
|
|
ldr r1, [r0]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #5
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803DE22
|
|
movs r7, #0x80
|
|
lsls r7, r7, #0xf
|
|
ands r7, r1
|
|
cmp r7, #0
|
|
beq _0803DE44
|
|
_0803DE22:
|
|
ldr r3, _0803DE38
|
|
ldr r2, _0803DE3C
|
|
ldr r1, _0803DE40
|
|
lsls r0, r4, #1
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0]
|
|
strh r0, [r2]
|
|
strh r0, [r3]
|
|
b _0803DF7C
|
|
.align 2, 0
|
|
_0803DE34: .4byte 0x02023D28
|
|
_0803DE38: .4byte 0x02023E8E
|
|
_0803DE3C: .4byte 0x02023E90
|
|
_0803DE40: .4byte 0x02023F0C
|
|
_0803DE44:
|
|
ldr r1, _0803DE98
|
|
mov ip, r1
|
|
lsls r0, r4, #3
|
|
subs r0, r0, r4
|
|
lsls r0, r0, #2
|
|
add r0, ip
|
|
ldrh r3, [r0, #6]
|
|
adds r1, r3, #0
|
|
cmp r1, #0
|
|
beq _0803DF1C
|
|
ldrb r2, [r0, #0xc]
|
|
lsls r0, r2, #1
|
|
adds r0, r0, r5
|
|
mov r4, sl
|
|
adds r4, #0xc
|
|
adds r0, r0, r4
|
|
ldrh r0, [r0]
|
|
cmp r1, r0
|
|
bne _0803DEA8
|
|
ldr r2, _0803DE9C
|
|
ldr r0, _0803DEA0
|
|
strh r3, [r0]
|
|
strh r3, [r2]
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
add r0, ip
|
|
ldrb r0, [r0, #0xc]
|
|
mov r3, sb
|
|
strb r0, [r3]
|
|
mov r5, r8
|
|
strb r0, [r5]
|
|
ldrh r0, [r2]
|
|
movs r1, #0
|
|
bl GetMoveTarget
|
|
ldrb r1, [r6]
|
|
ldr r3, _0803DEA4
|
|
ldr r2, [r3]
|
|
b _0803DF56
|
|
.align 2, 0
|
|
_0803DE98: .4byte 0x02023F60
|
|
_0803DE9C: .4byte 0x02023E8E
|
|
_0803DEA0: .4byte 0x02023E90
|
|
_0803DEA4: .4byte 0x02024140
|
|
_0803DEA8:
|
|
cmp r1, #0
|
|
beq _0803DF1C
|
|
cmp r1, r0
|
|
beq _0803DF1C
|
|
mov r5, sb
|
|
strb r2, [r5]
|
|
mov r0, r8
|
|
strb r2, [r0]
|
|
ldr r3, _0803DF10
|
|
ldr r2, _0803DF14
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #1
|
|
ldrb r1, [r6]
|
|
movs r5, #0x58
|
|
muls r1, r5, r1
|
|
adds r0, r0, r1
|
|
adds r0, r0, r4
|
|
ldrh r0, [r0]
|
|
strh r0, [r2]
|
|
strh r0, [r3]
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
add r0, ip
|
|
movs r2, #0
|
|
strh r7, [r0, #6]
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, #3
|
|
subs r0, r0, r1
|
|
lsls r0, r0, #2
|
|
add r0, ip
|
|
strb r2, [r0, #0xc]
|
|
ldrb r0, [r6]
|
|
lsls r1, r0, #3
|
|
subs r1, r1, r0
|
|
lsls r1, r1, #2
|
|
add r1, ip
|
|
ldrb r2, [r1, #0xe]
|
|
movs r0, #0x10
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
strb r0, [r1, #0xe]
|
|
ldrh r0, [r3]
|
|
movs r1, #0
|
|
bl GetMoveTarget
|
|
ldrb r1, [r6]
|
|
ldr r3, _0803DF18
|
|
ldr r2, [r3]
|
|
b _0803DF56
|
|
.align 2, 0
|
|
_0803DF10: .4byte 0x02023E8E
|
|
_0803DF14: .4byte 0x02023E90
|
|
_0803DF18: .4byte 0x02024140
|
|
_0803DF1C:
|
|
ldr r3, _0803DF5C
|
|
mov r5, r8
|
|
ldrb r0, [r5]
|
|
lsls r0, r0, #1
|
|
ldr r4, _0803DF60
|
|
ldrb r2, [r4]
|
|
movs r1, #0x58
|
|
muls r1, r2, r1
|
|
adds r0, r0, r1
|
|
adds r3, #0xc
|
|
adds r0, r0, r3
|
|
ldr r1, _0803DF64
|
|
lsls r2, r2, #1
|
|
adds r2, r2, r1
|
|
ldrh r3, [r0]
|
|
ldrh r2, [r2]
|
|
cmp r3, r2
|
|
beq _0803DF74
|
|
ldr r1, _0803DF68
|
|
ldr r0, _0803DF6C
|
|
strh r3, [r0]
|
|
strh r3, [r1]
|
|
ldrh r0, [r1]
|
|
movs r1, #0
|
|
bl GetMoveTarget
|
|
ldrb r1, [r4]
|
|
ldr r2, _0803DF70
|
|
ldr r2, [r2]
|
|
_0803DF56:
|
|
adds r1, r1, r2
|
|
strb r0, [r1, #0xc]
|
|
b _0803DF7C
|
|
.align 2, 0
|
|
_0803DF5C: .4byte 0x02023D28
|
|
_0803DF60: .4byte 0x02023EAF
|
|
_0803DF64: .4byte 0x02023F18
|
|
_0803DF68: .4byte 0x02023E8E
|
|
_0803DF6C: .4byte 0x02023E90
|
|
_0803DF70: .4byte 0x02024140
|
|
_0803DF74:
|
|
ldr r1, _0803DFA8
|
|
ldr r0, _0803DFAC
|
|
strh r3, [r0]
|
|
strh r3, [r1]
|
|
_0803DF7C:
|
|
ldr r2, _0803DFB0
|
|
ldr r1, _0803DFB4
|
|
ldrb r3, [r1]
|
|
movs r0, #0x58
|
|
muls r0, r3, r0
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0, #0x28]
|
|
mov r8, r1
|
|
cmp r0, #0
|
|
beq _0803DFC4
|
|
adds r0, r3, #0
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803DFBC
|
|
ldr r0, _0803DFB8
|
|
ldr r1, _0803DFA8
|
|
ldrh r1, [r1]
|
|
strh r1, [r0, #0x22]
|
|
b _0803DFC4
|
|
.align 2, 0
|
|
_0803DFA8: .4byte 0x02023E8E
|
|
_0803DFAC: .4byte 0x02023E90
|
|
_0803DFB0: .4byte 0x02023D28
|
|
_0803DFB4: .4byte 0x02023EAF
|
|
_0803DFB8: .4byte 0x03005A70
|
|
_0803DFBC:
|
|
ldr r0, _0803E028
|
|
ldr r1, _0803E02C
|
|
ldrh r1, [r1]
|
|
strh r1, [r0, #0x24]
|
|
_0803DFC4:
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
bl GetBattlerSide
|
|
movs r1, #1
|
|
eors r0, r1
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
ldr r1, _0803E030
|
|
lsls r0, r6, #1
|
|
adds r0, r0, r6
|
|
lsls r0, r0, #2
|
|
adds r5, r0, r1
|
|
ldrb r0, [r5, #8]
|
|
cmp r0, #0
|
|
beq _0803E040
|
|
ldr r2, _0803E034
|
|
ldr r0, _0803E02C
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
ldrb r0, [r0, #6]
|
|
cmp r0, #0
|
|
bne _0803E040
|
|
mov r3, r8
|
|
ldrb r0, [r3]
|
|
bl GetBattlerSide
|
|
adds r4, r0, #0
|
|
ldrb r0, [r5, #9]
|
|
bl GetBattlerSide
|
|
lsls r4, r4, #0x18
|
|
lsls r0, r0, #0x18
|
|
cmp r4, r0
|
|
beq _0803E040
|
|
ldr r1, _0803E038
|
|
ldrb r2, [r5, #9]
|
|
movs r0, #0x58
|
|
muls r0, r2, r0
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0, #0x28]
|
|
cmp r0, #0
|
|
beq _0803E040
|
|
ldr r0, _0803E03C
|
|
strb r2, [r0]
|
|
b _0803E3AA
|
|
.align 2, 0
|
|
_0803E028: .4byte 0x03005A70
|
|
_0803E02C: .4byte 0x02023E8E
|
|
_0803E030: .4byte 0x02023F38
|
|
_0803E034: .4byte 0x082ED220
|
|
_0803E038: .4byte 0x02023D28
|
|
_0803E03C: .4byte 0x02023EB0
|
|
_0803E040:
|
|
ldr r0, _0803E15C
|
|
ldr r0, [r0]
|
|
movs r1, #1
|
|
ands r0, r1
|
|
ldr r5, _0803E160
|
|
mov r8, r5
|
|
cmp r0, #0
|
|
bne _0803E052
|
|
b _0803E320
|
|
_0803E052:
|
|
ldr r1, _0803E164
|
|
lsls r0, r6, #1
|
|
adds r0, r0, r6
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldrb r5, [r0, #8]
|
|
cmp r5, #0
|
|
beq _0803E064
|
|
b _0803E270
|
|
_0803E064:
|
|
ldr r2, _0803E168
|
|
ldr r0, _0803E16C
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r4, r0, r2
|
|
ldrb r0, [r4, #1]
|
|
cmp r0, #0
|
|
bne _0803E080
|
|
ldrb r0, [r4, #6]
|
|
cmp r0, #0x10
|
|
bne _0803E080
|
|
b _0803E270
|
|
_0803E080:
|
|
ldr r3, _0803E170
|
|
ldr r2, _0803E160
|
|
ldrb r6, [r2]
|
|
ldr r0, _0803E174
|
|
ldr r0, [r0]
|
|
adds r0, r6, r0
|
|
ldrb r1, [r0, #0xc]
|
|
movs r0, #0x58
|
|
muls r0, r1, r0
|
|
adds r0, r0, r3
|
|
adds r0, #0x20
|
|
ldrb r0, [r0]
|
|
mov r8, r2
|
|
cmp r0, #0x1f
|
|
bne _0803E0A0
|
|
b _0803E270
|
|
_0803E0A0:
|
|
ldrb r0, [r4, #2]
|
|
cmp r0, #0xd
|
|
beq _0803E0A8
|
|
b _0803E270
|
|
_0803E0A8:
|
|
adds r0, r6, #0
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
lsrs r6, r0, #0x18
|
|
ldr r1, _0803E178
|
|
strb r5, [r1]
|
|
ldr r0, _0803E17C
|
|
ldrb r0, [r0]
|
|
cmp r5, r0
|
|
bhs _0803E120
|
|
adds r4, r1, #0
|
|
_0803E0C0:
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r6, r0
|
|
beq _0803E10E
|
|
ldr r0, _0803E160
|
|
ldrb r1, [r0]
|
|
ldr r0, _0803E174
|
|
ldr r0, [r0]
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1, #0xc]
|
|
ldrb r1, [r4]
|
|
cmp r0, r1
|
|
beq _0803E10E
|
|
ldr r1, _0803E170
|
|
ldrb r2, [r4]
|
|
movs r0, #0x58
|
|
muls r0, r2, r0
|
|
adds r0, r0, r1
|
|
adds r0, #0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, #0x1f
|
|
bne _0803E10E
|
|
adds r0, r2, #0
|
|
bl GetBattlerTurnOrderNum
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldr r3, [sp]
|
|
cmp r0, r3
|
|
bhs _0803E10E
|
|
ldrb r0, [r4]
|
|
bl GetBattlerTurnOrderNum
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
str r0, [sp]
|
|
_0803E10E:
|
|
ldrb r0, [r4]
|
|
adds r0, #1
|
|
strb r0, [r4]
|
|
ldr r1, _0803E17C
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803E0C0
|
|
_0803E120:
|
|
ldr r5, [sp]
|
|
cmp r5, #4
|
|
beq _0803E128
|
|
b _0803E222
|
|
_0803E128:
|
|
ldr r2, _0803E168
|
|
ldr r0, _0803E180
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
ldrb r0, [r0, #6]
|
|
ands r5, r0
|
|
cmp r5, #0
|
|
beq _0803E1A8
|
|
ldr r0, _0803E160
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803E188
|
|
bl Random
|
|
movs r1, #1
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803E184
|
|
movs r0, #1
|
|
b _0803E19A
|
|
.align 2, 0
|
|
_0803E15C: .4byte 0x02022C90
|
|
_0803E160: .4byte 0x02023EAF
|
|
_0803E164: .4byte 0x02023F38
|
|
_0803E168: .4byte 0x082ED220
|
|
_0803E16C: .4byte 0x02023E8E
|
|
_0803E170: .4byte 0x02023D28
|
|
_0803E174: .4byte 0x02024140
|
|
_0803E178: .4byte 0x02023D08
|
|
_0803E17C: .4byte 0x02023D10
|
|
_0803E180: .4byte 0x02023E90
|
|
_0803E184:
|
|
movs r0, #3
|
|
b _0803E19A
|
|
_0803E188:
|
|
bl Random
|
|
movs r1, #1
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803E198
|
|
movs r0, #0
|
|
b _0803E19A
|
|
_0803E198:
|
|
movs r0, #2
|
|
_0803E19A:
|
|
bl GetBattlerAtPosition
|
|
ldr r1, _0803E1A4
|
|
strb r0, [r1]
|
|
b _0803E1B8
|
|
.align 2, 0
|
|
_0803E1A4: .4byte 0x02023EB0
|
|
_0803E1A8:
|
|
ldr r2, _0803E1F0
|
|
ldr r0, _0803E1F4
|
|
ldrb r0, [r0]
|
|
ldr r1, _0803E1F8
|
|
ldr r1, [r1]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0, #0xc]
|
|
strb r0, [r2]
|
|
_0803E1B8:
|
|
ldr r7, _0803E1FC
|
|
ldrb r0, [r7]
|
|
ldr r1, _0803E200
|
|
mov r8, r1
|
|
ldr r5, _0803E1F0
|
|
ldrb r1, [r5]
|
|
lsls r1, r1, #2
|
|
add r1, r8
|
|
ldr r1, [r1]
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803E1D2
|
|
b _0803E3AA
|
|
_0803E1D2:
|
|
ldr r6, _0803E1F4
|
|
ldrb r0, [r6]
|
|
bl GetBattlerSide
|
|
adds r4, r0, #0
|
|
ldrb r0, [r5]
|
|
bl GetBattlerSide
|
|
lsls r4, r4, #0x18
|
|
lsls r0, r0, #0x18
|
|
cmp r4, r0
|
|
beq _0803E204
|
|
ldrb r0, [r5]
|
|
b _0803E398
|
|
.align 2, 0
|
|
_0803E1F0: .4byte 0x02023EB0
|
|
_0803E1F4: .4byte 0x02023EAF
|
|
_0803E1F8: .4byte 0x02024140
|
|
_0803E1FC: .4byte 0x02023EB4
|
|
_0803E200: .4byte 0x082FACB4
|
|
_0803E204:
|
|
ldrb r0, [r6]
|
|
bl GetBattlerPosition
|
|
movs r1, #1
|
|
eors r0, r1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
strb r0, [r5]
|
|
ldrb r1, [r7]
|
|
ldrb r2, [r5]
|
|
lsls r0, r2, #2
|
|
add r0, r8
|
|
b _0803E38E
|
|
_0803E222:
|
|
ldr r4, _0803E25C
|
|
ldr r0, _0803E260
|
|
ldr r3, [sp]
|
|
adds r0, r3, r0
|
|
ldrb r0, [r0]
|
|
strb r0, [r4]
|
|
ldrb r0, [r4]
|
|
ldr r2, _0803E264
|
|
movs r1, #0x58
|
|
muls r1, r0, r1
|
|
adds r1, r1, r2
|
|
adds r1, #0x20
|
|
ldrb r1, [r1]
|
|
bl RecordAbilityBattle
|
|
ldr r2, _0803E268
|
|
ldrb r1, [r4]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
ldrb r1, [r0]
|
|
movs r2, #2
|
|
orrs r1, r2
|
|
strb r1, [r0]
|
|
ldr r1, _0803E26C
|
|
ldrb r0, [r4]
|
|
strb r0, [r1]
|
|
b _0803E3AA
|
|
.align 2, 0
|
|
_0803E25C: .4byte 0x02023D08
|
|
_0803E260: .4byte 0x02023D22
|
|
_0803E264: .4byte 0x02023D28
|
|
_0803E268: .4byte 0x02024020
|
|
_0803E26C: .4byte 0x02023EB0
|
|
_0803E270:
|
|
ldr r0, _0803E2B4
|
|
ldr r0, [r0]
|
|
movs r4, #1
|
|
ands r0, r4
|
|
cmp r0, #0
|
|
beq _0803E320
|
|
ldr r2, _0803E2B8
|
|
ldr r0, _0803E2BC
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
ldrb r1, [r0, #6]
|
|
movs r0, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803E320
|
|
mov r5, r8
|
|
ldrb r0, [r5]
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803E2C4
|
|
bl Random
|
|
adds r1, r4, #0
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803E2C0
|
|
movs r0, #1
|
|
b _0803E2D6
|
|
.align 2, 0
|
|
_0803E2B4: .4byte 0x02022C90
|
|
_0803E2B8: .4byte 0x082ED220
|
|
_0803E2BC: .4byte 0x02023E90
|
|
_0803E2C0:
|
|
movs r0, #3
|
|
b _0803E2D6
|
|
_0803E2C4:
|
|
bl Random
|
|
adds r1, r4, #0
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803E2D4
|
|
movs r0, #0
|
|
b _0803E2D6
|
|
_0803E2D4:
|
|
movs r0, #2
|
|
_0803E2D6:
|
|
bl GetBattlerAtPosition
|
|
ldr r1, _0803E310
|
|
strb r0, [r1]
|
|
ldr r0, _0803E314
|
|
ldrb r1, [r0]
|
|
ldr r2, _0803E318
|
|
ldr r5, _0803E310
|
|
ldrb r0, [r5]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803E3AA
|
|
ldr r0, _0803E31C
|
|
ldrb r0, [r0]
|
|
bl GetBattlerSide
|
|
adds r4, r0, #0
|
|
ldrb r0, [r5]
|
|
bl GetBattlerSide
|
|
lsls r4, r4, #0x18
|
|
lsls r0, r0, #0x18
|
|
cmp r4, r0
|
|
beq _0803E3AA
|
|
ldrb r0, [r5]
|
|
b _0803E398
|
|
.align 2, 0
|
|
_0803E310: .4byte 0x02023EB0
|
|
_0803E314: .4byte 0x02023EB4
|
|
_0803E318: .4byte 0x082FACB4
|
|
_0803E31C: .4byte 0x02023EAF
|
|
_0803E320:
|
|
ldr r5, _0803E360
|
|
mov r2, r8
|
|
ldrb r0, [r2]
|
|
ldr r1, _0803E364
|
|
ldr r1, [r1]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0, #0xc]
|
|
strb r0, [r5]
|
|
ldr r6, _0803E368
|
|
ldrb r1, [r6]
|
|
ldr r7, _0803E36C
|
|
ldrb r0, [r5]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r7
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803E3AA
|
|
ldrb r0, [r2]
|
|
bl GetBattlerSide
|
|
adds r4, r0, #0
|
|
ldrb r0, [r5]
|
|
bl GetBattlerSide
|
|
lsls r4, r4, #0x18
|
|
lsls r0, r0, #0x18
|
|
cmp r4, r0
|
|
beq _0803E370
|
|
ldrb r0, [r5]
|
|
b _0803E398
|
|
.align 2, 0
|
|
_0803E360: .4byte 0x02023EB0
|
|
_0803E364: .4byte 0x02024140
|
|
_0803E368: .4byte 0x02023EB4
|
|
_0803E36C: .4byte 0x082FACB4
|
|
_0803E370:
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
bl GetBattlerPosition
|
|
movs r1, #1
|
|
eors r0, r1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
strb r0, [r5]
|
|
ldrb r1, [r6]
|
|
ldrb r2, [r5]
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r7
|
|
_0803E38E:
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803E3AA
|
|
adds r0, r2, #0
|
|
_0803E398:
|
|
bl GetBattlerPosition
|
|
movs r1, #2
|
|
eors r0, r1
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
bl GetBattlerAtPosition
|
|
strb r0, [r5]
|
|
_0803E3AA:
|
|
ldr r0, _0803E3E0
|
|
ldr r1, [r0]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #0xa
|
|
ands r1, r2
|
|
adds r5, r0, #0
|
|
cmp r1, #0
|
|
beq _0803E448
|
|
ldr r0, _0803E3E4
|
|
ldr r4, _0803E3E8
|
|
ldrb r2, [r4]
|
|
lsls r1, r2, #4
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1, #2]
|
|
lsls r0, r0, #0x1b
|
|
cmp r0, #0
|
|
bge _0803E448
|
|
ldr r1, _0803E3EC
|
|
movs r0, #0x58
|
|
muls r0, r2, r0
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0, #0x28]
|
|
cmp r0, #0
|
|
bne _0803E3F4
|
|
ldr r1, _0803E3F0
|
|
movs r0, #0xc
|
|
b _0803E47C
|
|
.align 2, 0
|
|
_0803E3E0: .4byte 0x02022C90
|
|
_0803E3E4: .4byte 0x02023FE0
|
|
_0803E3E8: .4byte 0x02023EAF
|
|
_0803E3EC: .4byte 0x02023D28
|
|
_0803E3F0: .4byte 0x02023D27
|
|
_0803E3F4:
|
|
ldr r3, _0803E420
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r3
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _0803E42C
|
|
ldr r1, _0803E424
|
|
movs r2, #0
|
|
movs r0, #4
|
|
strb r0, [r1, #5]
|
|
ldr r1, _0803E428
|
|
ldrb r0, [r4]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r3
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldrb r0, [r4]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r3
|
|
str r2, [r0]
|
|
b _0803E464
|
|
.align 2, 0
|
|
_0803E420: .4byte 0x02023ED4
|
|
_0803E424: .4byte 0x02023FD6
|
|
_0803E428: .4byte 0x02023EB8
|
|
_0803E42C:
|
|
ldr r1, _0803E43C
|
|
movs r0, #4
|
|
strb r0, [r1, #5]
|
|
ldr r1, _0803E440
|
|
ldr r0, _0803E444
|
|
str r0, [r1]
|
|
b _0803E464
|
|
.align 2, 0
|
|
_0803E43C: .4byte 0x02023FD6
|
|
_0803E440: .4byte 0x02023EB8
|
|
_0803E444: .4byte 0x08289C35
|
|
_0803E448:
|
|
ldr r4, _0803E490
|
|
ldr r3, _0803E494
|
|
ldr r2, _0803E498
|
|
ldr r0, _0803E49C
|
|
ldrh r1, [r0]
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r3
|
|
ldr r0, [r0]
|
|
str r0, [r4]
|
|
_0803E464:
|
|
ldr r0, [r5]
|
|
movs r1, #0x80
|
|
lsls r1, r1, #0xb
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803E478
|
|
ldr r0, _0803E4A0
|
|
ldrb r0, [r0]
|
|
bl BattleArena_AddMindPoints
|
|
_0803E478:
|
|
ldr r1, _0803E4A4
|
|
movs r0, #0xa
|
|
_0803E47C:
|
|
strb r0, [r1]
|
|
add sp, #4
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E490: .4byte 0x02023EB8
|
|
_0803E494: .4byte 0x08286C30
|
|
_0803E498: .4byte 0x082ED220
|
|
_0803E49C: .4byte 0x02023E8E
|
|
_0803E4A0: .4byte 0x02023EAF
|
|
_0803E4A4: .4byte 0x02023D27
|
|
thumb_func_end HandleAction_UseMove
|
|
|
|
thumb_func_start HandleAction_Switch
|
|
HandleAction_Switch: @ 0x0803E4A8
|
|
push {r4, lr}
|
|
ldr r3, _0803E514
|
|
ldr r1, _0803E518
|
|
ldr r0, _0803E51C
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r3]
|
|
ldr r0, _0803E520
|
|
movs r2, #0
|
|
strh r2, [r0]
|
|
ldr r0, _0803E524
|
|
strh r2, [r0]
|
|
ldr r1, _0803E528
|
|
ldrb r0, [r3]
|
|
adds r0, r0, r1
|
|
strb r2, [r0]
|
|
ldr r1, _0803E52C
|
|
ldrb r0, [r3]
|
|
adds r0, r0, r1
|
|
strb r2, [r0]
|
|
ldr r2, _0803E530
|
|
movs r0, #0xfd
|
|
strb r0, [r2]
|
|
movs r0, #7
|
|
strb r0, [r2, #1]
|
|
ldrb r4, [r3]
|
|
strb r4, [r2, #2]
|
|
ldrb r0, [r3]
|
|
ldr r1, _0803E534
|
|
ldr r1, [r1]
|
|
adds r0, r0, r1
|
|
adds r0, #0x58
|
|
ldrb r0, [r0]
|
|
strb r0, [r2, #3]
|
|
movs r0, #0xff
|
|
strb r0, [r2, #4]
|
|
ldr r0, _0803E538
|
|
strb r4, [r0, #0x17]
|
|
ldr r1, _0803E53C
|
|
ldr r0, _0803E540
|
|
str r0, [r1]
|
|
ldr r1, _0803E544
|
|
movs r0, #0xa
|
|
strb r0, [r1]
|
|
ldr r1, _0803E548
|
|
ldrb r0, [r1, #2]
|
|
cmp r0, #0xfe
|
|
bhi _0803E50E
|
|
adds r0, #1
|
|
strb r0, [r1, #2]
|
|
_0803E50E:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E514: .4byte 0x02023EAF
|
|
_0803E518: .4byte 0x02023D22
|
|
_0803E51C: .4byte 0x02023D26
|
|
_0803E520: .4byte 0x02022AC8
|
|
_0803E524: .4byte 0x02022ACA
|
|
_0803E528: .4byte 0x02024150
|
|
_0803E52C: .4byte 0x02024154
|
|
_0803E530: .4byte 0x02022C0C
|
|
_0803E534: .4byte 0x02024140
|
|
_0803E538: .4byte 0x02024118
|
|
_0803E53C: .4byte 0x02023EB8
|
|
_0803E540: .4byte 0x0828909D
|
|
_0803E544: .4byte 0x02023D27
|
|
_0803E548: .4byte 0x03005A70
|
|
thumb_func_end HandleAction_Switch
|
|
|
|
thumb_func_start HandleAction_UseItem
|
|
HandleAction_UseItem: @ 0x0803E54C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
ldr r4, _0803E5AC
|
|
ldr r2, _0803E5B0
|
|
ldr r1, _0803E5B4
|
|
ldr r0, _0803E5B8
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
strb r0, [r4]
|
|
ldr r0, _0803E5BC
|
|
movs r1, #0
|
|
strh r1, [r0]
|
|
ldr r0, _0803E5C0
|
|
strh r1, [r0]
|
|
ldrb r0, [r4]
|
|
bl ClearFuryCutterDestinyBondGrudge
|
|
ldr r5, _0803E5C4
|
|
ldr r2, _0803E5C8
|
|
ldrb r1, [r4]
|
|
lsls r1, r1, #9
|
|
adds r0, r2, #1
|
|
adds r0, r1, r0
|
|
ldrb r3, [r0]
|
|
adds r2, #2
|
|
adds r1, r1, r2
|
|
ldrb r0, [r1]
|
|
lsls r0, r0, #8
|
|
orrs r3, r0
|
|
strh r3, [r5]
|
|
cmp r3, #0xc
|
|
bhi _0803E5D8
|
|
ldr r2, _0803E5CC
|
|
ldr r1, _0803E5D0
|
|
ldrh r0, [r5]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
str r0, [r2]
|
|
ldr r0, _0803E5D4
|
|
mov sl, r0
|
|
b _0803E836
|
|
.align 2, 0
|
|
_0803E5AC: .4byte 0x02023EAF
|
|
_0803E5B0: .4byte 0x02023EB0
|
|
_0803E5B4: .4byte 0x02023D22
|
|
_0803E5B8: .4byte 0x02023D26
|
|
_0803E5BC: .4byte 0x02022AC8
|
|
_0803E5C0: .4byte 0x02022ACA
|
|
_0803E5C4: .4byte 0x02023EAC
|
|
_0803E5C8: .4byte 0x02023508
|
|
_0803E5CC: .4byte 0x02023EB8
|
|
_0803E5D0: .4byte 0x0828A290
|
|
_0803E5D4: .4byte 0x02023D27
|
|
_0803E5D8:
|
|
adds r0, r3, #0
|
|
subs r0, #0x50
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #1
|
|
bhi _0803E600
|
|
ldr r0, _0803E5F4
|
|
ldr r1, _0803E5F8
|
|
ldr r1, [r1]
|
|
str r1, [r0]
|
|
ldr r1, _0803E5FC
|
|
mov sl, r1
|
|
b _0803E836
|
|
.align 2, 0
|
|
_0803E5F4: .4byte 0x02023EB8
|
|
_0803E5F8: .4byte 0x0828A2DC
|
|
_0803E5FC: .4byte 0x02023D27
|
|
_0803E600:
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803E628
|
|
ldr r0, _0803E61C
|
|
ldr r1, _0803E620
|
|
ldr r1, [r1]
|
|
str r1, [r0]
|
|
ldr r2, _0803E624
|
|
mov sl, r2
|
|
b _0803E836
|
|
.align 2, 0
|
|
_0803E61C: .4byte 0x02023EB8
|
|
_0803E620: .4byte 0x0828A2C4
|
|
_0803E624: .4byte 0x02023D27
|
|
_0803E628:
|
|
ldr r3, _0803E660
|
|
ldrb r0, [r4]
|
|
strb r0, [r3, #0x17]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x19
|
|
ldr r2, _0803E664
|
|
ldr r1, [r2]
|
|
adds r0, r0, r1
|
|
adds r0, #0xc4
|
|
ldrb r0, [r0]
|
|
subs r0, #1
|
|
mov r8, r4
|
|
ldr r1, _0803E668
|
|
mov sb, r1
|
|
ldr r6, _0803E66C
|
|
mov ip, r3
|
|
adds r7, r2, #0
|
|
ldr r2, _0803E670
|
|
mov sl, r2
|
|
cmp r0, #4
|
|
bls _0803E654
|
|
b _0803E81E
|
|
_0803E654:
|
|
lsls r0, r0, #2
|
|
ldr r1, _0803E674
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0803E660: .4byte 0x02024118
|
|
_0803E664: .4byte 0x02024140
|
|
_0803E668: .4byte 0x02023EB8
|
|
_0803E66C: .4byte 0x0828A2C4
|
|
_0803E670: .4byte 0x02023D27
|
|
_0803E674: .4byte 0x0803E678
|
|
_0803E678: @ jump table
|
|
.4byte _0803E81E @ case 0
|
|
.4byte _0803E81E @ case 1
|
|
.4byte _0803E68C @ case 2
|
|
.4byte _0803E720 @ case 3
|
|
.4byte _0803E7F0 @ case 4
|
|
_0803E68C:
|
|
ldr r5, _0803E6C4
|
|
movs r0, #0
|
|
strb r0, [r5, #5]
|
|
ldr r2, _0803E6C8
|
|
ldrb r0, [r2]
|
|
lsrs r0, r0, #1
|
|
ldr r1, [r7]
|
|
adds r0, r0, r1
|
|
adds r0, #0xc6
|
|
ldrb r1, [r0]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
mov r8, r2
|
|
cmp r0, #0
|
|
beq _0803E6D8
|
|
movs r0, #0x3e
|
|
ands r0, r1
|
|
ldr r1, _0803E6CC
|
|
mov sb, r1
|
|
ldr r6, _0803E6D0
|
|
ldr r2, _0803E6D4
|
|
mov sl, r2
|
|
cmp r0, #0
|
|
bne _0803E6BE
|
|
b _0803E81E
|
|
_0803E6BE:
|
|
movs r0, #5
|
|
strb r0, [r5, #5]
|
|
b _0803E81E
|
|
.align 2, 0
|
|
_0803E6C4: .4byte 0x02023FD6
|
|
_0803E6C8: .4byte 0x02023EAF
|
|
_0803E6CC: .4byte 0x02023EB8
|
|
_0803E6D0: .4byte 0x0828A2C4
|
|
_0803E6D4: .4byte 0x02023D27
|
|
_0803E6D8:
|
|
ldr r0, _0803E714
|
|
mov sb, r0
|
|
ldr r6, _0803E718
|
|
ldr r1, _0803E71C
|
|
mov sl, r1
|
|
mov r4, r8
|
|
adds r3, r7, #0
|
|
adds r2, r5, #0
|
|
_0803E6E8:
|
|
ldrb r1, [r4]
|
|
lsrs r1, r1, #1
|
|
ldr r0, [r3]
|
|
adds r1, r1, r0
|
|
adds r1, #0xc6
|
|
ldrb r0, [r1]
|
|
lsrs r0, r0, #1
|
|
strb r0, [r1]
|
|
ldrb r0, [r2, #5]
|
|
adds r0, #1
|
|
strb r0, [r2, #5]
|
|
ldrb r0, [r4]
|
|
lsrs r0, r0, #1
|
|
ldr r1, [r3]
|
|
adds r0, r0, r1
|
|
adds r0, #0xc6
|
|
ldrb r1, [r0]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803E6E8
|
|
b _0803E81E
|
|
.align 2, 0
|
|
_0803E714: .4byte 0x02023EB8
|
|
_0803E718: .4byte 0x0828A2C4
|
|
_0803E71C: .4byte 0x02023D27
|
|
_0803E720:
|
|
ldr r3, _0803E754
|
|
movs r0, #4
|
|
strb r0, [r3, #5]
|
|
ldr r2, _0803E758
|
|
ldrb r0, [r2]
|
|
lsrs r0, r0, #1
|
|
ldr r1, [r7]
|
|
adds r0, r0, r1
|
|
adds r6, r0, #0
|
|
adds r6, #0xc6
|
|
ldrb r1, [r6]
|
|
movs r0, #0x80
|
|
ands r0, r1
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
mov r8, r2
|
|
cmp r5, #0
|
|
beq _0803E768
|
|
movs r0, #5
|
|
strb r0, [r3, #5]
|
|
ldr r2, _0803E75C
|
|
mov sb, r2
|
|
ldr r6, _0803E760
|
|
ldr r0, _0803E764
|
|
mov sl, r0
|
|
b _0803E81E
|
|
.align 2, 0
|
|
_0803E754: .4byte 0x02023FD6
|
|
_0803E758: .4byte 0x02023EAF
|
|
_0803E75C: .4byte 0x02023EB8
|
|
_0803E760: .4byte 0x0828A2C4
|
|
_0803E764: .4byte 0x02023D27
|
|
_0803E768:
|
|
ldr r3, _0803E7DC
|
|
movs r4, #0xfd
|
|
strb r4, [r3]
|
|
movs r0, #5
|
|
strb r0, [r3, #1]
|
|
movs r2, #1
|
|
strb r2, [r3, #2]
|
|
movs r0, #0xff
|
|
strb r0, [r3, #3]
|
|
ldr r1, _0803E7E0
|
|
strb r4, [r1]
|
|
strb r5, [r1, #1]
|
|
movs r0, #0xd2
|
|
strb r0, [r1, #2]
|
|
strb r5, [r1, #3]
|
|
subs r0, #0xd3
|
|
strb r0, [r1, #4]
|
|
ldrb r0, [r6]
|
|
ands r2, r0
|
|
ldr r1, _0803E7E4
|
|
mov sb, r1
|
|
ldr r6, _0803E7E8
|
|
ldr r0, _0803E7EC
|
|
mov sl, r0
|
|
cmp r2, #0
|
|
bne _0803E7CC
|
|
mov r5, r8
|
|
adds r4, r7, #0
|
|
adds r2, r3, #0
|
|
_0803E7A2:
|
|
ldrb r1, [r5]
|
|
lsrs r1, r1, #1
|
|
ldr r0, [r4]
|
|
adds r1, r1, r0
|
|
adds r1, #0xc6
|
|
ldrb r0, [r1]
|
|
lsrs r0, r0, #1
|
|
strb r0, [r1]
|
|
ldrb r0, [r2, #2]
|
|
adds r0, #1
|
|
strb r0, [r2, #2]
|
|
ldrb r0, [r5]
|
|
lsrs r0, r0, #1
|
|
ldr r1, [r4]
|
|
adds r0, r0, r1
|
|
adds r0, #0xc6
|
|
ldrb r1, [r0]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803E7A2
|
|
_0803E7CC:
|
|
ldrb r0, [r3, #2]
|
|
adds r0, #0xe
|
|
movs r1, #0
|
|
mov r2, ip
|
|
strb r0, [r2, #0x10]
|
|
strb r1, [r2, #0x11]
|
|
b _0803E81E
|
|
.align 2, 0
|
|
_0803E7DC: .4byte 0x02022C0C
|
|
_0803E7E0: .4byte 0x02022C1C
|
|
_0803E7E4: .4byte 0x02023EB8
|
|
_0803E7E8: .4byte 0x0828A2C4
|
|
_0803E7EC: .4byte 0x02023D27
|
|
_0803E7F0:
|
|
ldr r0, _0803E804
|
|
ldr r1, [r0]
|
|
movs r0, #1
|
|
ands r1, r0
|
|
cmp r1, #0
|
|
beq _0803E80C
|
|
ldr r1, _0803E808
|
|
movs r0, #2
|
|
strb r0, [r1, #5]
|
|
b _0803E810
|
|
.align 2, 0
|
|
_0803E804: .4byte 0x02022C90
|
|
_0803E808: .4byte 0x02023FD6
|
|
_0803E80C:
|
|
ldr r0, _0803E84C
|
|
strb r1, [r0, #5]
|
|
_0803E810:
|
|
ldr r0, _0803E850
|
|
mov r8, r0
|
|
ldr r1, _0803E854
|
|
mov sb, r1
|
|
ldr r6, _0803E858
|
|
ldr r2, _0803E85C
|
|
mov sl, r2
|
|
_0803E81E:
|
|
mov r1, r8
|
|
ldrb r0, [r1]
|
|
lsrs r0, r0, #1
|
|
ldr r1, [r7]
|
|
adds r0, r0, r1
|
|
adds r0, #0xc4
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r6
|
|
ldr r0, [r0]
|
|
mov r2, sb
|
|
str r0, [r2]
|
|
_0803E836:
|
|
movs r0, #0xa
|
|
mov r1, sl
|
|
strb r0, [r1]
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E84C: .4byte 0x02023FD6
|
|
_0803E850: .4byte 0x02023EAF
|
|
_0803E854: .4byte 0x02023EB8
|
|
_0803E858: .4byte 0x0828A2C4
|
|
_0803E85C: .4byte 0x02023D27
|
|
thumb_func_end HandleAction_UseItem
|
|
|
|
thumb_func_start TryRunFromBattle
|
|
TryRunFromBattle: @ 0x0803E860
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
lsls r0, r0, #0x18
|
|
lsrs r5, r0, #0x18
|
|
movs r7, #0
|
|
ldr r1, _0803E88C
|
|
movs r0, #0x58
|
|
muls r0, r5, r0
|
|
adds r1, r0, r1
|
|
ldrh r0, [r1, #0x2e]
|
|
cmp r0, #0xaf
|
|
bne _0803E894
|
|
ldr r1, _0803E890
|
|
lsls r0, r5, #3
|
|
subs r0, r0, r5
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0, #7]
|
|
b _0803E89E
|
|
.align 2, 0
|
|
_0803E88C: .4byte 0x02023D28
|
|
_0803E890: .4byte 0x020240A8
|
|
_0803E894:
|
|
ldrh r0, [r1, #0x2e]
|
|
bl sub_080D6CF8
|
|
lsls r0, r0, #0x18
|
|
lsrs r1, r0, #0x18
|
|
_0803E89E:
|
|
ldr r0, _0803E8CC
|
|
strb r5, [r0]
|
|
cmp r1, #0x25
|
|
bne _0803E8DC
|
|
ldr r2, _0803E8D0
|
|
ldr r1, _0803E8D4
|
|
movs r0, #0x58
|
|
muls r0, r5, r0
|
|
adds r0, r0, r1
|
|
ldrh r0, [r0, #0x2e]
|
|
strh r0, [r2]
|
|
ldr r0, _0803E8D8
|
|
lsls r2, r5, #4
|
|
adds r2, r2, r0
|
|
ldrb r1, [r2, #1]
|
|
movs r0, #0x19
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
movs r1, #8
|
|
orrs r0, r1
|
|
strb r0, [r2, #1]
|
|
b _0803E9B0
|
|
.align 2, 0
|
|
_0803E8CC: .4byte 0x02023EB3
|
|
_0803E8D0: .4byte 0x02023EAC
|
|
_0803E8D4: .4byte 0x02023D28
|
|
_0803E8D8: .4byte 0x02023FE0
|
|
_0803E8DC:
|
|
ldr r0, _0803E968
|
|
mov sl, r0
|
|
movs r2, #0x58
|
|
mov sb, r2
|
|
mov r0, sb
|
|
muls r0, r5, r0
|
|
add r0, sl
|
|
mov r8, r0
|
|
adds r0, #0x20
|
|
ldrb r6, [r0]
|
|
cmp r6, #0x32
|
|
bne _0803E99C
|
|
bl InBattlePyramid
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803E978
|
|
ldr r4, _0803E96C
|
|
ldr r1, [r4]
|
|
adds r1, #0x6c
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
bl GetPyramidRunMultiplier
|
|
lsls r0, r0, #0x18
|
|
lsrs r1, r0, #0x18
|
|
mov r2, r8
|
|
ldrh r0, [r2, #6]
|
|
muls r0, r1, r0
|
|
movs r2, #1
|
|
adds r1, r5, #0
|
|
eors r1, r2
|
|
mov r2, sb
|
|
muls r2, r1, r2
|
|
adds r1, r2, #0
|
|
add r1, sl
|
|
ldrh r1, [r1, #6]
|
|
bl __divsi3
|
|
ldr r1, [r4]
|
|
adds r1, #0x6c
|
|
ldrb r2, [r1]
|
|
lsls r1, r2, #4
|
|
subs r1, r1, r2
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
bl Random
|
|
movs r1, #0xff
|
|
ands r1, r0
|
|
cmp r4, r1
|
|
bhi _0803E94C
|
|
b _0803EA52
|
|
_0803E94C:
|
|
ldr r0, _0803E970
|
|
strb r6, [r0]
|
|
ldr r0, _0803E974
|
|
lsls r2, r5, #4
|
|
adds r2, r2, r0
|
|
ldrb r1, [r2, #1]
|
|
movs r0, #0x19
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
movs r1, #0x10
|
|
orrs r0, r1
|
|
strb r0, [r2, #1]
|
|
b _0803E9B0
|
|
.align 2, 0
|
|
_0803E968: .4byte 0x02023D28
|
|
_0803E96C: .4byte 0x02024140
|
|
_0803E970: .4byte 0x02023EAE
|
|
_0803E974: .4byte 0x02023FE0
|
|
_0803E978:
|
|
ldr r0, _0803E994
|
|
strb r6, [r0]
|
|
ldr r0, _0803E998
|
|
lsls r2, r5, #4
|
|
adds r2, r2, r0
|
|
ldrb r1, [r2, #1]
|
|
movs r0, #0x19
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
movs r1, #0x10
|
|
orrs r0, r1
|
|
strb r0, [r2, #1]
|
|
b _0803E9B0
|
|
.align 2, 0
|
|
_0803E994: .4byte 0x02023EAE
|
|
_0803E998: .4byte 0x02023FE0
|
|
_0803E99C:
|
|
ldr r1, _0803E9B8
|
|
ldr r2, [r1]
|
|
ldr r0, _0803E9BC
|
|
ands r0, r2
|
|
cmp r0, #0
|
|
beq _0803E9C0
|
|
movs r0, #8
|
|
ands r2, r0
|
|
cmp r2, #0
|
|
beq _0803E9C0
|
|
_0803E9B0:
|
|
adds r0, r7, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r7, r0, #0x18
|
|
b _0803EA52
|
|
.align 2, 0
|
|
_0803E9B8: .4byte 0x02022C90
|
|
_0803E9BC: .4byte 0x043F0100
|
|
_0803E9C0:
|
|
ldr r0, [r1]
|
|
movs r1, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0803EA46
|
|
bl InBattlePyramid
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
beq _0803E9FC
|
|
bl GetPyramidRunMultiplier
|
|
lsls r0, r0, #0x18
|
|
lsrs r1, r0, #0x18
|
|
ldr r4, _0803E9F8
|
|
movs r3, #0x58
|
|
adds r0, r5, #0
|
|
muls r0, r3, r0
|
|
adds r0, r0, r4
|
|
ldrh r0, [r0, #6]
|
|
muls r0, r1, r0
|
|
movs r2, #1
|
|
adds r1, r5, #0
|
|
eors r1, r2
|
|
muls r1, r3, r1
|
|
adds r1, r1, r4
|
|
b _0803EA1A
|
|
.align 2, 0
|
|
_0803E9F8: .4byte 0x02023D28
|
|
_0803E9FC:
|
|
ldr r3, _0803EA74
|
|
movs r2, #0x58
|
|
adds r0, r5, #0
|
|
muls r0, r2, r0
|
|
adds r4, r0, r3
|
|
movs r1, #1
|
|
adds r0, r5, #0
|
|
eors r0, r1
|
|
muls r0, r2, r0
|
|
adds r1, r0, r3
|
|
ldrh r0, [r4, #6]
|
|
ldrh r2, [r1, #6]
|
|
cmp r0, r2
|
|
bhs _0803EA40
|
|
lsls r0, r0, #7
|
|
_0803EA1A:
|
|
ldrh r1, [r1, #6]
|
|
bl __divsi3
|
|
ldr r1, _0803EA78
|
|
ldr r1, [r1]
|
|
adds r1, #0x6c
|
|
ldrb r2, [r1]
|
|
lsls r1, r2, #4
|
|
subs r1, r1, r2
|
|
lsls r1, r1, #1
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #0x18
|
|
lsrs r4, r0, #0x18
|
|
bl Random
|
|
movs r1, #0xff
|
|
ands r1, r0
|
|
cmp r4, r1
|
|
bls _0803EA46
|
|
_0803EA40:
|
|
adds r0, r7, #1
|
|
lsls r0, r0, #0x18
|
|
lsrs r7, r0, #0x18
|
|
_0803EA46:
|
|
ldr r0, _0803EA78
|
|
ldr r1, [r0]
|
|
adds r1, #0x6c
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
_0803EA52:
|
|
cmp r7, #0
|
|
beq _0803EA64
|
|
ldr r1, _0803EA7C
|
|
ldr r0, _0803EA80
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
ldr r1, _0803EA84
|
|
movs r0, #4
|
|
strb r0, [r1]
|
|
_0803EA64:
|
|
adds r0, r7, #0
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0803EA74: .4byte 0x02023D28
|
|
_0803EA78: .4byte 0x02024140
|
|
_0803EA7C: .4byte 0x02023D26
|
|
_0803EA80: .4byte 0x02023D10
|
|
_0803EA84: .4byte 0x02023FDE
|
|
thumb_func_end TryRunFromBattle
|
|
|
|
thumb_func_start HandleAction_Run
|
|
HandleAction_Run: @ 0x0803EA88
|
|
push {r4, r5, r6, lr}
|
|
ldr r4, _0803EAD8
|
|
ldr r1, _0803EADC
|
|
ldr r5, _0803EAE0
|
|
ldrb r0, [r5]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r4]
|
|
ldr r0, _0803EAE4
|
|
ldr r0, [r0]
|
|
ldr r1, _0803EAE8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803EB4C
|
|
ldr r0, _0803EAEC
|
|
ldrb r1, [r0]
|
|
strb r1, [r5]
|
|
ldr r2, _0803EAF0
|
|
movs r0, #0
|
|
strb r0, [r2]
|
|
lsls r1, r1, #0x18
|
|
cmp r1, #0
|
|
beq _0803EB20
|
|
adds r4, r2, #0
|
|
ldr r6, _0803EAF4
|
|
ldr r5, _0803EAF8
|
|
_0803EABC:
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803EAFC
|
|
ldrb r0, [r4]
|
|
adds r0, r0, r6
|
|
ldrb r0, [r0]
|
|
cmp r0, #3
|
|
bne _0803EB0E
|
|
ldrb r0, [r5]
|
|
movs r1, #2
|
|
b _0803EB0A
|
|
.align 2, 0
|
|
_0803EAD8: .4byte 0x02023EAF
|
|
_0803EADC: .4byte 0x02023D22
|
|
_0803EAE0: .4byte 0x02023D26
|
|
_0803EAE4: .4byte 0x02022C90
|
|
_0803EAE8: .4byte 0x02000002
|
|
_0803EAEC: .4byte 0x02023D10
|
|
_0803EAF0: .4byte 0x02023D08
|
|
_0803EAF4: .4byte 0x02023EC0
|
|
_0803EAF8: .4byte 0x02023FDE
|
|
_0803EAFC:
|
|
ldrb r0, [r4]
|
|
adds r0, r0, r6
|
|
ldrb r0, [r0]
|
|
cmp r0, #3
|
|
bne _0803EB0E
|
|
ldrb r0, [r5]
|
|
movs r1, #1
|
|
_0803EB0A:
|
|
orrs r0, r1
|
|
strb r0, [r5]
|
|
_0803EB0E:
|
|
ldrb r0, [r4]
|
|
adds r0, #1
|
|
strb r0, [r4]
|
|
ldr r1, _0803EB3C
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
ldrb r1, [r1]
|
|
cmp r0, r1
|
|
blo _0803EABC
|
|
_0803EB20:
|
|
ldr r2, _0803EB40
|
|
ldrb r0, [r2]
|
|
movs r1, #0x80
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, _0803EB44
|
|
ldr r1, [r0]
|
|
ldr r0, _0803EB48
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
movs r2, #8
|
|
orrs r0, r2
|
|
b _0803EBD6
|
|
.align 2, 0
|
|
_0803EB3C: .4byte 0x02023D10
|
|
_0803EB40: .4byte 0x02023FDE
|
|
_0803EB44: .4byte 0x03005AF0
|
|
_0803EB48: .4byte 0x00000CA9
|
|
_0803EB4C:
|
|
ldrb r0, [r4]
|
|
bl GetBattlerSide
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803EB8C
|
|
ldrb r0, [r4]
|
|
bl TryRunFromBattle
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0803EBD8
|
|
ldrb r0, [r4]
|
|
bl ClearFuryCutterDestinyBondGrudge
|
|
ldr r1, _0803EB7C
|
|
movs r0, #3
|
|
strb r0, [r1, #5]
|
|
ldr r1, _0803EB80
|
|
ldr r0, _0803EB84
|
|
str r0, [r1]
|
|
ldr r1, _0803EB88
|
|
movs r0, #0xa
|
|
b _0803EBD6
|
|
.align 2, 0
|
|
_0803EB7C: .4byte 0x02023FD6
|
|
_0803EB80: .4byte 0x02023EB8
|
|
_0803EB84: .4byte 0x0828908A
|
|
_0803EB88: .4byte 0x02023D27
|
|
_0803EB8C:
|
|
ldr r1, _0803EBB4
|
|
ldrb r2, [r4]
|
|
movs r0, #0x58
|
|
muls r0, r2, r0
|
|
adds r1, #0x50
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
ldr r1, _0803EBB8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0803EBCC
|
|
ldr r1, _0803EBBC
|
|
movs r0, #4
|
|
strb r0, [r1, #5]
|
|
ldr r1, _0803EBC0
|
|
ldr r0, _0803EBC4
|
|
str r0, [r1]
|
|
ldr r1, _0803EBC8
|
|
movs r0, #0xa
|
|
b _0803EBD6
|
|
.align 2, 0
|
|
_0803EBB4: .4byte 0x02023D28
|
|
_0803EBB8: .4byte 0x0400E000
|
|
_0803EBBC: .4byte 0x02023FD6
|
|
_0803EBC0: .4byte 0x02023EB8
|
|
_0803EBC4: .4byte 0x0828908A
|
|
_0803EBC8: .4byte 0x02023D27
|
|
_0803EBCC:
|
|
ldr r0, _0803EBE0
|
|
ldrb r0, [r0]
|
|
strb r0, [r5]
|
|
ldr r1, _0803EBE4
|
|
movs r0, #6
|
|
_0803EBD6:
|
|
strb r0, [r1]
|
|
_0803EBD8:
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803EBE0: .4byte 0x02023D10
|
|
_0803EBE4: .4byte 0x02023FDE
|
|
thumb_func_end HandleAction_Run
|
|
|
|
thumb_func_start HandleAction_WatchesCarefully
|
|
HandleAction_WatchesCarefully: @ 0x0803EBE8
|
|
ldr r2, _0803EC10
|
|
ldr r1, _0803EC14
|
|
ldr r0, _0803EC18
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
ldr r0, _0803EC1C
|
|
movs r1, #0
|
|
strh r1, [r0]
|
|
ldr r0, _0803EC20
|
|
strh r1, [r0]
|
|
ldr r1, _0803EC24
|
|
ldr r0, _0803EC28
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldr r1, _0803EC2C
|
|
movs r0, #0xa
|
|
strb r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_0803EC10: .4byte 0x02023EAF
|
|
_0803EC14: .4byte 0x02023D22
|
|
_0803EC18: .4byte 0x02023D26
|
|
_0803EC1C: .4byte 0x02022AC8
|
|
_0803EC20: .4byte 0x02022ACA
|
|
_0803EC24: .4byte 0x02023EB8
|
|
_0803EC28: .4byte 0x0828A2E0
|
|
_0803EC2C: .4byte 0x02023D27
|
|
thumb_func_end HandleAction_WatchesCarefully
|
|
|
|
thumb_func_start HandleAction_SafariZoneBallThrow
|
|
HandleAction_SafariZoneBallThrow: @ 0x0803EC30
|
|
ldr r2, _0803EC68
|
|
ldr r1, _0803EC6C
|
|
ldr r0, _0803EC70
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
ldr r0, _0803EC74
|
|
movs r1, #0
|
|
strh r1, [r0]
|
|
ldr r0, _0803EC78
|
|
strh r1, [r0]
|
|
ldr r1, _0803EC7C
|
|
ldrb r0, [r1]
|
|
subs r0, #1
|
|
strb r0, [r1]
|
|
ldr r1, _0803EC80
|
|
movs r0, #5
|
|
strh r0, [r1]
|
|
ldr r1, _0803EC84
|
|
ldr r0, _0803EC88
|
|
ldr r0, [r0, #0x14]
|
|
str r0, [r1]
|
|
ldr r1, _0803EC8C
|
|
movs r0, #0xa
|
|
strb r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_0803EC68: .4byte 0x02023EAF
|
|
_0803EC6C: .4byte 0x02023D22
|
|
_0803EC70: .4byte 0x02023D26
|
|
_0803EC74: .4byte 0x02022AC8
|
|
_0803EC78: .4byte 0x02022ACA
|
|
_0803EC7C: .4byte 0x02039D18
|
|
_0803EC80: .4byte 0x02023EAC
|
|
_0803EC84: .4byte 0x02023EB8
|
|
_0803EC88: .4byte 0x0828A290
|
|
_0803EC8C: .4byte 0x02023D27
|
|
thumb_func_end HandleAction_SafariZoneBallThrow
|
|
|
|
thumb_func_start HandleAction_ThrowPokeblock
|
|
HandleAction_ThrowPokeblock: @ 0x0803EC90
|
|
push {r4, r5, r6, lr}
|
|
ldr r3, _0803ED10
|
|
ldr r1, _0803ED14
|
|
ldr r0, _0803ED18
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r3]
|
|
ldr r0, _0803ED1C
|
|
movs r1, #0
|
|
strh r1, [r0]
|
|
ldr r0, _0803ED20
|
|
strh r1, [r0]
|
|
ldr r6, _0803ED24
|
|
ldr r2, _0803ED28
|
|
ldrb r0, [r3]
|
|
lsls r0, r0, #9
|
|
adds r1, r2, #1
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
subs r0, #1
|
|
strb r0, [r6, #5]
|
|
ldr r1, _0803ED2C
|
|
ldrb r0, [r3]
|
|
lsls r0, r0, #9
|
|
adds r2, #2
|
|
adds r0, r0, r2
|
|
ldrb r0, [r0]
|
|
strh r0, [r1]
|
|
ldr r1, _0803ED30
|
|
ldrb r0, [r1, #0x1f]
|
|
cmp r0, #0xfe
|
|
bhi _0803ECD6
|
|
adds r0, #1
|
|
strb r0, [r1, #0x1f]
|
|
_0803ECD6:
|
|
ldr r2, _0803ED34
|
|
ldr r0, [r2]
|
|
adds r1, r0, #0
|
|
adds r1, #0x7a
|
|
ldrb r0, [r1]
|
|
cmp r0, #2
|
|
bhi _0803ECE8
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
_0803ECE8:
|
|
ldr r0, [r2]
|
|
adds r3, r0, #0
|
|
adds r3, #0x7b
|
|
ldrb r5, [r3]
|
|
adds r4, r5, #0
|
|
cmp r4, #1
|
|
bls _0803ED40
|
|
ldr r2, _0803ED38
|
|
adds r0, #0x7a
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, #1
|
|
adds r0, r0, r1
|
|
ldrb r6, [r6, #5]
|
|
adds r0, r0, r6
|
|
adds r0, r0, r2
|
|
ldrb r0, [r0]
|
|
cmp r4, r0
|
|
bhs _0803ED3C
|
|
movs r0, #1
|
|
b _0803ED3E
|
|
.align 2, 0
|
|
_0803ED10: .4byte 0x02023EAF
|
|
_0803ED14: .4byte 0x02023D22
|
|
_0803ED18: .4byte 0x02023D26
|
|
_0803ED1C: .4byte 0x02022AC8
|
|
_0803ED20: .4byte 0x02022ACA
|
|
_0803ED24: .4byte 0x02023FD6
|
|
_0803ED28: .4byte 0x02023508
|
|
_0803ED2C: .4byte 0x02023EAC
|
|
_0803ED30: .4byte 0x03005A70
|
|
_0803ED34: .4byte 0x02024140
|
|
_0803ED38: .4byte 0x082EC664
|
|
_0803ED3C:
|
|
subs r0, r5, r0
|
|
_0803ED3E:
|
|
strb r0, [r3]
|
|
_0803ED40:
|
|
ldr r1, _0803ED54
|
|
ldr r0, _0803ED58
|
|
ldr r0, [r0, #8]
|
|
str r0, [r1]
|
|
ldr r1, _0803ED5C
|
|
movs r0, #0xa
|
|
strb r0, [r1]
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803ED54: .4byte 0x02023EB8
|
|
_0803ED58: .4byte 0x0828A2E0
|
|
_0803ED5C: .4byte 0x02023D27
|
|
thumb_func_end HandleAction_ThrowPokeblock
|
|
|
|
thumb_func_start HandleAction_GoNear
|
|
HandleAction_GoNear: @ 0x0803ED60
|
|
push {r4, lr}
|
|
ldr r2, _0803EDE0
|
|
ldr r1, _0803EDE4
|
|
ldr r0, _0803EDE8
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
ldr r0, _0803EDEC
|
|
movs r4, #0
|
|
strh r4, [r0]
|
|
ldr r0, _0803EDF0
|
|
strh r4, [r0]
|
|
ldr r3, _0803EDF4
|
|
ldr r0, [r3]
|
|
adds r2, r0, #0
|
|
adds r2, #0x7c
|
|
ldr r1, _0803EDF8
|
|
adds r0, #0x79
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r2]
|
|
adds r0, r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, [r3]
|
|
adds r1, r0, #0
|
|
adds r1, #0x7c
|
|
ldrb r0, [r1]
|
|
cmp r0, #0x14
|
|
bls _0803EDA2
|
|
movs r0, #0x14
|
|
strb r0, [r1]
|
|
_0803EDA2:
|
|
ldr r0, [r3]
|
|
adds r2, r0, #0
|
|
adds r2, #0x7b
|
|
ldr r1, _0803EDFC
|
|
adds r0, #0x79
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
ldrb r1, [r2]
|
|
adds r0, r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, [r3]
|
|
adds r1, r0, #0
|
|
adds r1, #0x7b
|
|
ldrb r0, [r1]
|
|
cmp r0, #0x14
|
|
bls _0803EDC8
|
|
movs r0, #0x14
|
|
strb r0, [r1]
|
|
_0803EDC8:
|
|
ldr r0, [r3]
|
|
adds r1, r0, #0
|
|
adds r1, #0x79
|
|
ldrb r0, [r1]
|
|
cmp r0, #2
|
|
bhi _0803EE04
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
ldr r0, _0803EE00
|
|
strb r4, [r0, #5]
|
|
b _0803EE0A
|
|
.align 2, 0
|
|
_0803EDE0: .4byte 0x02023EAF
|
|
_0803EDE4: .4byte 0x02023D22
|
|
_0803EDE8: .4byte 0x02023D26
|
|
_0803EDEC: .4byte 0x02022AC8
|
|
_0803EDF0: .4byte 0x02022ACA
|
|
_0803EDF4: .4byte 0x02024140
|
|
_0803EDF8: .4byte 0x082EC673
|
|
_0803EDFC: .4byte 0x082EC677
|
|
_0803EE00: .4byte 0x02023FD6
|
|
_0803EE04:
|
|
ldr r1, _0803EE20
|
|
movs r0, #1
|
|
strb r0, [r1, #5]
|
|
_0803EE0A:
|
|
ldr r1, _0803EE24
|
|
ldr r0, _0803EE28
|
|
ldr r0, [r0, #4]
|
|
str r0, [r1]
|
|
ldr r1, _0803EE2C
|
|
movs r0, #0xa
|
|
strb r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803EE20: .4byte 0x02023FD6
|
|
_0803EE24: .4byte 0x02023EB8
|
|
_0803EE28: .4byte 0x0828A2E0
|
|
_0803EE2C: .4byte 0x02023D27
|
|
thumb_func_end HandleAction_GoNear
|
|
|
|
thumb_func_start HandleAction_SafariZoneRun
|
|
HandleAction_SafariZoneRun: @ 0x0803EE30
|
|
push {r4, lr}
|
|
ldr r2, _0803EE58
|
|
ldr r1, _0803EE5C
|
|
ldr r4, _0803EE60
|
|
ldrb r0, [r4]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r2]
|
|
movs r0, #0x11
|
|
bl PlaySE
|
|
ldr r0, _0803EE64
|
|
ldrb r0, [r0]
|
|
strb r0, [r4]
|
|
ldr r1, _0803EE68
|
|
movs r0, #4
|
|
strb r0, [r1]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803EE58: .4byte 0x02023EAF
|
|
_0803EE5C: .4byte 0x02023D22
|
|
_0803EE60: .4byte 0x02023D26
|
|
_0803EE64: .4byte 0x02023D10
|
|
_0803EE68: .4byte 0x02023FDE
|
|
thumb_func_end HandleAction_SafariZoneRun
|
|
|
|
thumb_func_start HandleAction_WallyBallThrow
|
|
HandleAction_WallyBallThrow: @ 0x0803EE6C
|
|
ldr r3, _0803EEB8
|
|
ldr r1, _0803EEBC
|
|
ldr r0, _0803EEC0
|
|
ldrb r0, [r0]
|
|
adds r0, r0, r1
|
|
ldrb r2, [r0]
|
|
strb r2, [r3]
|
|
ldr r0, _0803EEC4
|
|
movs r1, #0
|
|
strh r1, [r0]
|
|
ldr r0, _0803EEC8
|
|
strh r1, [r0]
|
|
ldr r1, _0803EECC
|
|
movs r0, #0xfd
|
|
strb r0, [r1]
|
|
movs r0, #7
|
|
strb r0, [r1, #1]
|
|
strb r2, [r1, #2]
|
|
ldr r2, _0803EED0
|
|
ldrb r0, [r3]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
ldrh r0, [r0]
|
|
strb r0, [r1, #3]
|
|
movs r0, #0xff
|
|
strb r0, [r1, #4]
|
|
ldr r1, _0803EED4
|
|
ldr r0, _0803EED8
|
|
ldr r0, [r0, #0xc]
|
|
str r0, [r1]
|
|
ldr r1, _0803EEDC
|
|
movs r0, #0xa
|
|
strb r0, [r1]
|
|
ldr r1, _0803EEE0
|
|
movs r0, #0xc
|
|
strb r0, [r1, #1]
|
|
bx lr
|
|
.align 2, 0
|
|
_0803EEB8: .4byte 0x02023EAF
|
|
_0803EEBC: .4byte 0x02023D22
|
|
_0803EEC0: .4byte 0x02023D26
|
|
_0803EEC4: .4byte 0x02022AC8
|
|
_0803EEC8: .4byte 0x02022ACA
|
|
_0803EECC: .4byte 0x02022C0C
|
|
_0803EED0: .4byte 0x02023D12
|
|
_0803EED4: .4byte 0x02023EB8
|
|
_0803EED8: .4byte 0x0828A2E0
|
|
_0803EEDC: .4byte 0x02023D27
|
|
_0803EEE0: .4byte 0x02023D1E
|
|
thumb_func_end HandleAction_WallyBallThrow
|
|
|
|
thumb_func_start sub_0803EEE4
|
|
sub_0803EEE4: @ 0x0803EEE4
|
|
push {lr}
|
|
bl HandleFaintedMonActions
|
|
lsls r0, r0, #0x18
|
|
lsrs r1, r0, #0x18
|
|
cmp r1, #0
|
|
bne _0803EF00
|
|
ldr r0, _0803EF04
|
|
ldr r0, [r0]
|
|
adds r0, #0x4d
|
|
strb r1, [r0]
|
|
ldr r1, _0803EF08
|
|
movs r0, #0xc
|
|
strb r0, [r1]
|
|
_0803EF00:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803EF04: .4byte 0x02024140
|
|
_0803EF08: .4byte 0x02023D27
|
|
thumb_func_end sub_0803EEE4
|
|
|
|
thumb_func_start HandleAction_NothingIsFainted
|
|
HandleAction_NothingIsFainted: @ 0x0803EF0C
|
|
ldr r1, _0803EF2C
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
strb r0, [r1]
|
|
ldr r3, _0803EF30
|
|
ldr r2, _0803EF34
|
|
ldrb r0, [r1]
|
|
adds r0, r0, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r3]
|
|
ldr r2, _0803EF38
|
|
ldr r0, [r2]
|
|
ldr r1, _0803EF3C
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
bx lr
|
|
.align 2, 0
|
|
_0803EF2C: .4byte 0x02023D26
|
|
_0803EF30: .4byte 0x02023D27
|
|
_0803EF34: .4byte 0x02023D1E
|
|
_0803EF38: .4byte 0x02023F24
|
|
_0803EF3C: .4byte 0xF1E892AF
|
|
thumb_func_end HandleAction_NothingIsFainted
|
|
|
|
thumb_func_start HandleAction_ActionFinished
|
|
HandleAction_ActionFinished: @ 0x0803EF40
|
|
push {r4, r5, r6, lr}
|
|
ldr r1, _0803EFC8
|
|
ldr r2, _0803EFCC
|
|
ldrb r0, [r2]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
ldr r6, _0803EFD0
|
|
ldr r1, [r6]
|
|
adds r0, r0, r1
|
|
adds r0, #0x5c
|
|
movs r1, #6
|
|
strb r1, [r0]
|
|
ldrb r0, [r2]
|
|
adds r0, #1
|
|
strb r0, [r2]
|
|
ldr r3, _0803EFD4
|
|
ldr r1, _0803EFD8
|
|
ldrb r0, [r2]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
strb r0, [r3]
|
|
bl SpecialStatusesClear
|
|
ldr r2, _0803EFDC
|
|
ldr r0, [r2]
|
|
ldr r1, _0803EFE0
|
|
ands r0, r1
|
|
str r0, [r2]
|
|
ldr r0, _0803EFE4
|
|
movs r1, #0
|
|
strh r1, [r0]
|
|
ldr r0, _0803EFE8
|
|
movs r4, #0
|
|
str r4, [r0]
|
|
ldr r0, _0803EFEC
|
|
strb r1, [r0]
|
|
ldr r5, _0803EFF0
|
|
strb r1, [r5, #0x18]
|
|
strb r1, [r5, #0x19]
|
|
ldr r2, _0803EFF4
|
|
ldr r3, _0803EFF8
|
|
ldrb r0, [r3]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
strh r4, [r0]
|
|
ldr r2, _0803EFFC
|
|
ldrb r0, [r3]
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r2
|
|
strh r4, [r0]
|
|
ldr r0, [r6]
|
|
strb r1, [r0, #0x13]
|
|
ldr r0, _0803F000
|
|
strh r4, [r0]
|
|
strb r1, [r5, #0x14]
|
|
ldr r0, _0803F004
|
|
strb r1, [r0, #3]
|
|
strb r1, [r0, #4]
|
|
strb r1, [r5, #0x16]
|
|
ldr r0, _0803F008
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #8]
|
|
adds r0, #0x20
|
|
strb r1, [r0]
|
|
pop {r4, r5, r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803EFC8: .4byte 0x02023D22
|
|
_0803EFCC: .4byte 0x02023D26
|
|
_0803EFD0: .4byte 0x02024140
|
|
_0803EFD4: .4byte 0x02023D27
|
|
_0803EFD8: .4byte 0x02023D1E
|
|
_0803EFDC: .4byte 0x02023F24
|
|
_0803EFE0: .4byte 0xF1E892AF
|
|
_0803EFE4: .4byte 0x02023E8E
|
|
_0803EFE8: .4byte 0x02023E94
|
|
_0803EFEC: .4byte 0x02023F20
|
|
_0803EFF0: .4byte 0x02024118
|
|
_0803EFF4: .4byte 0x02023EF4
|
|
_0803EFF8: .4byte 0x02023EAF
|
|
_0803EFFC: .4byte 0x02023EFC
|
|
_0803F000: .4byte 0x020240A4
|
|
_0803F004: .4byte 0x02023FD6
|
|
_0803F008: .4byte 0x0202414C
|
|
thumb_func_end HandleAction_ActionFinished
|
|
|