mirror of
https://github.com/pret/pmd-red.git
synced 2026-03-27 04:25:20 -05:00
6235 lines
94 KiB
ArmAsm
6235 lines
94 KiB
ArmAsm
#include "asm/constants/gba_constants.inc"
|
|
#include "asm/macros.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_806CEBC
|
|
sub_806CEBC:
|
|
push {lr}
|
|
ldr r0, [r0, 0x70]
|
|
adds r1, r0, 0
|
|
adds r0, 0xA8
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
beq _0806CED2
|
|
cmp r0, 0x5
|
|
beq _0806CED2
|
|
cmp r0, 0x3
|
|
bne _0806CEE8
|
|
_0806CED2:
|
|
movs r2, 0x4
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0xB9
|
|
bne _0806CEE4
|
|
adds r0, r1, 0
|
|
adds r0, 0xA9
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x7F
|
|
beq _0806CEF2
|
|
_0806CEE4:
|
|
movs r0, 0x5
|
|
b _0806CEF8
|
|
_0806CEE8:
|
|
adds r0, r1, 0
|
|
adds r0, 0xC0
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
beq _0806CEF6
|
|
_0806CEF2:
|
|
movs r0, 0x7
|
|
b _0806CEF8
|
|
_0806CEF6:
|
|
movs r0, 0xB
|
|
_0806CEF8:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_806CEBC
|
|
|
|
thumb_func_start sub_806CEFC
|
|
sub_806CEFC:
|
|
push {r4,lr}
|
|
adds r4, r1, 0
|
|
ldr r2, [r0, 0x70]
|
|
movs r3, 0x7
|
|
ands r1, r3
|
|
adds r2, 0x46
|
|
strb r1, [r2]
|
|
movs r1, 0x7
|
|
ands r1, r4
|
|
bl sub_806CE68
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_806CEFC
|
|
|
|
thumb_func_start sub_806CF18
|
|
sub_806CF18:
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806CF4C
|
|
ldr r6, [r4, 0x70]
|
|
movs r5, 0
|
|
b _0806CF2E
|
|
_0806CF2C:
|
|
adds r5, 0x1
|
|
_0806CF2E:
|
|
cmp r5, 0x63
|
|
bgt _0806CF4C
|
|
movs r0, 0x21
|
|
bl sub_803E46C
|
|
movs r1, 0x4
|
|
ldrsh r0, [r6, r1]
|
|
adds r1, r4, 0
|
|
adds r1, 0x6B
|
|
ldrb r1, [r1]
|
|
bl sub_808DA44
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806CF2C
|
|
_0806CF4C:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_806CF18
|
|
|
|
thumb_func_start sub_806CF54
|
|
sub_806CF54:
|
|
ldr r0, [r0, 0x70]
|
|
movs r1, 0x81
|
|
lsls r1, 2
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bx lr
|
|
thumb_func_end sub_806CF54
|
|
|
|
thumb_func_start sub_806CF60
|
|
sub_806CF60:
|
|
push {r4,r5,lr}
|
|
movs r5, 0
|
|
_0806CF64:
|
|
ldr r0, _0806CF90
|
|
ldr r0, [r0]
|
|
lsls r1, r5, 2
|
|
ldr r2, _0806CF94
|
|
adds r0, r2
|
|
adds r0, r1
|
|
ldr r4, [r0]
|
|
adds r0, r4, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806CF84
|
|
adds r0, r4, 0
|
|
bl sub_806CF98
|
|
_0806CF84:
|
|
adds r5, 0x1
|
|
cmp r5, 0x13
|
|
ble _0806CF64
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0806CF90: .4byte gDungeonGlobalData
|
|
_0806CF94: .4byte 0x000135cc
|
|
thumb_func_end sub_806CF60
|
|
|
|
thumb_func_start sub_806CF98
|
|
sub_806CF98:
|
|
push {r4-r7,lr}
|
|
adds r4, r0, 0
|
|
bl GetMapEntityForDungeonEntity
|
|
ldrh r0, [r0]
|
|
movs r5, 0x3
|
|
ands r5, r0
|
|
adds r6, r5, 0
|
|
ldr r7, [r4, 0x70]
|
|
movs r1, 0x4
|
|
ldrsh r0, [r7, r1]
|
|
bl GetShadowSize
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r5, 0x3
|
|
bne _0806CFBE
|
|
movs r0, 0x6
|
|
b _0806CFF8
|
|
_0806CFBE:
|
|
cmp r5, 0x1
|
|
bne _0806CFCE
|
|
bl IsWaterTileset
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806CFEE
|
|
b _0806CFE8
|
|
_0806CFCE:
|
|
cmp r6, 0x2
|
|
bne _0806CFEE
|
|
ldr r1, _0806D000
|
|
ldr r0, _0806D004
|
|
ldr r0, [r0]
|
|
ldr r2, _0806D008
|
|
adds r0, r2
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
beq _0806CFEE
|
|
_0806CFE8:
|
|
ldr r0, _0806D00C
|
|
adds r0, r4, r0
|
|
ldrb r4, [r0]
|
|
_0806CFEE:
|
|
movs r1, 0x81
|
|
lsls r1, 2
|
|
adds r0, r7, r1
|
|
strb r4, [r0]
|
|
adds r0, r4, 0
|
|
_0806CFF8:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0806D000: .4byte gDungeonWaterType
|
|
_0806D004: .4byte gDungeonGlobalData
|
|
_0806D008: .4byte 0x00003a0e
|
|
_0806D00C: .4byte gUnknown_8106EEF
|
|
thumb_func_end sub_806CF98
|
|
|
|
thumb_func_start sub_806D010
|
|
sub_806D010:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x1C
|
|
adds r6, r0, 0
|
|
adds r5, r1, 0
|
|
mov r8, r2
|
|
ldr r0, [sp, 0x40]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
mov r10, r0
|
|
movs r7, 0
|
|
ldr r0, [sp, 0x3C]
|
|
str r0, [sp]
|
|
mov r1, r10
|
|
str r1, [sp, 0x4]
|
|
ldr r2, [sp, 0x48]
|
|
str r2, [sp, 0x8]
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
mov r2, r8
|
|
bl sub_806D528
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D04A
|
|
b _0806D514
|
|
_0806D04A:
|
|
mov r3, r8
|
|
ldrb r0, [r3, 0xF]
|
|
cmp r0, 0
|
|
beq _0806D054
|
|
b _0806D514
|
|
_0806D054:
|
|
adds r0, r6, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806D062
|
|
b _0806D514
|
|
_0806D062:
|
|
adds r0, r5, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806D070
|
|
b _0806D514
|
|
_0806D070:
|
|
adds r0, r6, 0
|
|
bl GetEntityType
|
|
cmp r0, 0x1
|
|
beq _0806D07C
|
|
b _0806D514
|
|
_0806D07C:
|
|
adds r0, r5, 0
|
|
bl GetEntityType
|
|
cmp r0, 0x1
|
|
beq _0806D088
|
|
b _0806D514
|
|
_0806D088:
|
|
ldr r0, [sp, 0x44]
|
|
mov r9, r0
|
|
adds r0, r5, 0
|
|
bl CannotAct
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806D0A2
|
|
ldr r0, [r5, 0x70]
|
|
adds r0, 0xC0
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0806D0A6
|
|
_0806D0A2:
|
|
movs r1, 0
|
|
mov r9, r1
|
|
_0806D0A6:
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
beq _0806D100
|
|
movs r3, 0x4
|
|
ldrsh r1, [r6, r3]
|
|
movs r2, 0x4
|
|
ldrsh r0, [r5, r2]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0806D0BC
|
|
negs r1, r1
|
|
_0806D0BC:
|
|
cmp r1, 0x1
|
|
bgt _0806D100
|
|
movs r3, 0x6
|
|
ldrsh r1, [r6, r3]
|
|
movs r2, 0x6
|
|
ldrsh r0, [r5, r2]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0806D0D0
|
|
negs r1, r1
|
|
_0806D0D0:
|
|
cmp r1, 0x1
|
|
bgt _0806D100
|
|
cmp r6, r5
|
|
beq _0806D100
|
|
mov r3, r8
|
|
ldrb r0, [r3, 0xC]
|
|
bl sub_8092354
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D100
|
|
ldr r0, [r5, 0x70]
|
|
adds r0, 0xC4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xD
|
|
bne _0806D100
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl sub_8042730
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl sub_807F43C
|
|
_0806D100:
|
|
ldr r0, [r5, 0x70]
|
|
adds r0, 0xC0
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xC
|
|
bne _0806D118
|
|
ldr r0, _0806D3BC
|
|
ldr r2, [r0]
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
movs r3, 0x1
|
|
bl sub_8077084
|
|
_0806D118:
|
|
adds r0, r6, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806D126
|
|
b _0806D514
|
|
_0806D126:
|
|
adds r0, r5, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806D134
|
|
b _0806D514
|
|
_0806D134:
|
|
mov r0, r9
|
|
cmp r0, 0
|
|
beq _0806D216
|
|
cmp r6, r5
|
|
beq _0806D216
|
|
movs r2, 0x4
|
|
ldrsh r1, [r6, r2]
|
|
movs r3, 0x4
|
|
ldrsh r0, [r5, r3]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0806D14E
|
|
negs r1, r1
|
|
_0806D14E:
|
|
cmp r1, 0x1
|
|
bgt _0806D216
|
|
movs r0, 0x6
|
|
ldrsh r1, [r6, r0]
|
|
movs r2, 0x6
|
|
ldrsh r0, [r5, r2]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0806D162
|
|
negs r1, r1
|
|
_0806D162:
|
|
cmp r1, 0x1
|
|
bgt _0806D216
|
|
mov r3, r8
|
|
ldrb r0, [r3, 0xC]
|
|
bl sub_8092354
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
ldr r0, [r5, 0x70]
|
|
adds r0, 0xC4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x4
|
|
bne _0806D188
|
|
cmp r4, 0
|
|
beq _0806D188
|
|
adds r0, r5, 0
|
|
bl sub_8041B18
|
|
adds r7, 0x4
|
|
_0806D188:
|
|
ldr r0, [r5, 0x70]
|
|
adds r0, 0xC4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xA
|
|
bne _0806D19E
|
|
cmp r4, 0
|
|
beq _0806D19E
|
|
adds r0, r5, 0
|
|
bl sub_8041B18
|
|
adds r7, 0x1
|
|
_0806D19E:
|
|
ldr r0, [r5, 0x70]
|
|
adds r0, 0xC4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x8
|
|
bne _0806D1B4
|
|
cmp r4, 0
|
|
bne _0806D1B4
|
|
adds r0, r5, 0
|
|
bl sub_8041B90
|
|
adds r7, 0x4
|
|
_0806D1B4:
|
|
adds r0, r5, 0
|
|
movs r1, 0x12
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D1C4
|
|
adds r7, 0x2
|
|
_0806D1C4:
|
|
cmp r7, 0
|
|
beq _0806D216
|
|
ldr r0, _0806D3C0
|
|
ldr r2, [r0]
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl sub_80522F4
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
muls r0, r7
|
|
cmp r0, 0
|
|
bge _0806D1E0
|
|
adds r0, 0x3
|
|
_0806D1E0:
|
|
asrs r0, 2
|
|
str r0, [sp, 0xC]
|
|
add r2, sp, 0xC
|
|
mov r3, r8
|
|
ldrb r0, [r3, 0xC]
|
|
movs r1, 0
|
|
strb r0, [r2, 0xC]
|
|
movs r0, 0x6
|
|
str r0, [sp, 0x10]
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x14]
|
|
adds r0, r2, 0
|
|
strb r1, [r0, 0xD]
|
|
strb r1, [r0, 0xE]
|
|
strb r1, [r0, 0xF]
|
|
ldr r0, [sp, 0x3C]
|
|
str r0, [sp]
|
|
mov r1, r10
|
|
str r1, [sp, 0x4]
|
|
ldr r2, [sp, 0x48]
|
|
str r2, [sp, 0x8]
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
add r2, sp, 0xC
|
|
movs r3, 0
|
|
bl sub_806D528
|
|
_0806D216:
|
|
adds r0, r6, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806D224
|
|
b _0806D514
|
|
_0806D224:
|
|
adds r0, r5, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806D232
|
|
b _0806D514
|
|
_0806D232:
|
|
mov r3, r9
|
|
cmp r3, 0
|
|
bne _0806D23A
|
|
b _0806D48A
|
|
_0806D23A:
|
|
cmp r6, r5
|
|
bne _0806D240
|
|
b _0806D48A
|
|
_0806D240:
|
|
movs r0, 0x4
|
|
ldrsh r1, [r6, r0]
|
|
movs r2, 0x4
|
|
ldrsh r0, [r5, r2]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0806D250
|
|
negs r1, r1
|
|
_0806D250:
|
|
cmp r1, 0x1
|
|
ble _0806D256
|
|
b _0806D48A
|
|
_0806D256:
|
|
movs r3, 0x6
|
|
ldrsh r1, [r6, r3]
|
|
movs r2, 0x6
|
|
ldrsh r0, [r5, r2]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0806D266
|
|
negs r1, r1
|
|
_0806D266:
|
|
cmp r1, 0x1
|
|
ble _0806D26C
|
|
b _0806D48A
|
|
_0806D26C:
|
|
mov r3, r8
|
|
ldrb r0, [r3, 0xC]
|
|
bl sub_8092354
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r4, [r6, 0x70]
|
|
adds r0, r5, 0
|
|
movs r1, 0x5
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D2C2
|
|
adds r0, r6, 0
|
|
movs r1, 0xA
|
|
bl HasType
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806D2C2
|
|
adds r0, r6, 0
|
|
movs r1, 0x37
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806D2C2
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
ldr r1, _0806D3C4
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
cmp r0, r1
|
|
bge _0806D2C2
|
|
movs r3, 0xBC
|
|
lsls r3, 1
|
|
adds r2, r4, r3
|
|
ldrh r1, [r2]
|
|
movs r0, 0x1
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
_0806D2C2:
|
|
adds r0, r5, 0
|
|
movs r1, 0xA
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D2EE
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
ldr r1, _0806D3C8
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
cmp r0, r1
|
|
bge _0806D2EE
|
|
movs r3, 0xBC
|
|
lsls r3, 1
|
|
adds r2, r4, r3
|
|
ldrh r1, [r2]
|
|
movs r0, 0x2
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
_0806D2EE:
|
|
adds r0, r5, 0
|
|
movs r1, 0x17
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D328
|
|
adds r0, r6, 0
|
|
movs r1, 0x11
|
|
bl HasType
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D328
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
ldr r1, _0806D3CC
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
cmp r0, r1
|
|
bge _0806D328
|
|
movs r3, 0xBC
|
|
lsls r3, 1
|
|
adds r2, r4, r3
|
|
ldrh r1, [r2]
|
|
movs r0, 0x4
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
_0806D328:
|
|
adds r0, r5, 0
|
|
movs r1, 0x20
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D358
|
|
cmp r7, 0
|
|
beq _0806D358
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
ldr r1, _0806D3D0
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
cmp r0, r1
|
|
bge _0806D358
|
|
movs r3, 0xBC
|
|
lsls r3, 1
|
|
adds r2, r4, r3
|
|
ldrh r1, [r2]
|
|
movs r0, 0x8
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
_0806D358:
|
|
adds r0, r5, 0
|
|
movs r1, 0x27
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D384
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
ldr r1, _0806D3D4
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
cmp r0, r1
|
|
bge _0806D384
|
|
movs r3, 0xBC
|
|
lsls r3, 1
|
|
adds r2, r4, r3
|
|
ldrh r1, [r2]
|
|
movs r0, 0x20
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
_0806D384:
|
|
adds r0, r5, 0
|
|
movs r1, 0x3D
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D3FA
|
|
cmp r7, 0
|
|
beq _0806D3FA
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
ldr r1, _0806D3D8
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
cmp r0, r1
|
|
bge _0806D3FA
|
|
movs r0, 0x3
|
|
bl DungeonRandomCapped
|
|
cmp r0, 0
|
|
bgt _0806D3DC
|
|
movs r3, 0xBC
|
|
lsls r3, 1
|
|
adds r2, r4, r3
|
|
ldrh r1, [r2]
|
|
movs r0, 0x40
|
|
b _0806D3F6
|
|
.align 2, 0
|
|
_0806D3BC: .4byte gUnknown_8106A4C
|
|
_0806D3C0: .4byte gUnknown_80FCFA4
|
|
_0806D3C4: .4byte gUnknown_80F4E10
|
|
_0806D3C8: .4byte gUnknown_80F4E12
|
|
_0806D3CC: .4byte gUnknown_80F4E14
|
|
_0806D3D0: .4byte gUnknown_80F4E16
|
|
_0806D3D4: .4byte gUnknown_80F4E18
|
|
_0806D3D8: .4byte gUnknown_80F4E1A
|
|
_0806D3DC:
|
|
cmp r0, 0x1
|
|
bgt _0806D3EC
|
|
movs r0, 0xBC
|
|
lsls r0, 1
|
|
adds r2, r4, r0
|
|
ldrh r1, [r2]
|
|
movs r0, 0x10
|
|
b _0806D3F6
|
|
_0806D3EC:
|
|
movs r1, 0xBC
|
|
lsls r1, 1
|
|
adds r2, r4, r1
|
|
ldrh r1, [r2]
|
|
movs r0, 0x80
|
|
_0806D3F6:
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
_0806D3FA:
|
|
adds r0, r5, 0
|
|
movs r1, 0x3E
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D428
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
ldr r1, _0806D4D4
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
cmp r0, r1
|
|
bge _0806D428
|
|
movs r3, 0xBC
|
|
lsls r3, 1
|
|
adds r2, r4, r3
|
|
ldrh r1, [r2]
|
|
subs r3, 0x78
|
|
adds r0, r3, 0
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
_0806D428:
|
|
adds r0, r5, 0
|
|
movs r1, 0x44
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D45A
|
|
cmp r7, 0
|
|
beq _0806D45A
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
ldr r1, _0806D4D8
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
cmp r0, r1
|
|
bge _0806D45A
|
|
movs r3, 0xBC
|
|
lsls r3, 1
|
|
adds r2, r4, r3
|
|
ldrh r1, [r2]
|
|
adds r3, 0x88
|
|
adds r0, r3, 0
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
_0806D45A:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D48A
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
ldr r1, _0806D4DC
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
cmp r0, r1
|
|
bge _0806D48A
|
|
movs r3, 0xBC
|
|
lsls r3, 1
|
|
adds r2, r4, r3
|
|
ldrh r1, [r2]
|
|
movs r3, 0x80
|
|
lsls r3, 3
|
|
adds r0, r3, 0
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
_0806D48A:
|
|
adds r0, r6, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D514
|
|
adds r0, r5, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D514
|
|
mov r0, r9
|
|
cmp r0, 0
|
|
beq _0806D514
|
|
ldr r2, [r5, 0x70]
|
|
adds r6, r2, 0
|
|
adds r3, r2, 0
|
|
adds r3, 0xD0
|
|
ldrb r0, [r3]
|
|
cmp r0, 0x2
|
|
bne _0806D514
|
|
ldr r0, _0806D4E0
|
|
ldr r1, [r0]
|
|
adds r0, r2, 0
|
|
adds r0, 0xD8
|
|
ldrb r0, [r0]
|
|
lsls r0, 2
|
|
ldr r2, _0806D4E4
|
|
adds r1, r2
|
|
adds r1, r0
|
|
ldr r4, [r1]
|
|
cmp r4, 0
|
|
bne _0806D4E8
|
|
strb r4, [r3]
|
|
b _0806D514
|
|
.align 2, 0
|
|
_0806D4D4: .4byte gUnknown_80F4E1C
|
|
_0806D4D8: .4byte gUnknown_80F4E1E
|
|
_0806D4DC: .4byte gUnknown_80F4E20
|
|
_0806D4E0: .4byte gDungeonGlobalData
|
|
_0806D4E4: .4byte 0x000135cc
|
|
_0806D4E8:
|
|
ldr r0, [r4, 0x70]
|
|
adds r0, 0x98
|
|
adds r1, r6, 0
|
|
adds r1, 0xD4
|
|
ldr r2, [r0]
|
|
ldr r0, [r1]
|
|
cmp r2, r0
|
|
beq _0806D4FE
|
|
movs r0, 0
|
|
strb r0, [r3]
|
|
b _0806D514
|
|
_0806D4FE:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_8041D00
|
|
mov r3, r8
|
|
ldr r1, [r3]
|
|
ldr r3, _0806D524
|
|
adds r0, r4, 0
|
|
movs r2, 0xC
|
|
bl sub_806F324
|
|
_0806D514:
|
|
add sp, 0x1C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0806D524: .4byte 0x000001f9
|
|
thumb_func_end sub_806D010
|
|
|
|
thumb_func_start sub_806D528
|
|
sub_806D528:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x58
|
|
mov r9, r0
|
|
adds r7, r1, 0
|
|
adds r5, r2, 0
|
|
str r3, [sp, 0x4C]
|
|
ldr r0, [sp, 0x7C]
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
str r0, [sp, 0x50]
|
|
movs r0, 0
|
|
str r0, [sp, 0x54]
|
|
mov r10, r0
|
|
mov r8, r0
|
|
mov r1, r10
|
|
strb r1, [r5, 0xF]
|
|
adds r0, r7, 0
|
|
bl GetEntityType
|
|
cmp r0, 0x1
|
|
beq _0806D55C
|
|
b _0806D754
|
|
_0806D55C:
|
|
ldr r6, [r7, 0x70]
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_807A96C
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl SetShopkeeperAggression
|
|
mov r0, r9
|
|
bl GetEntityType
|
|
cmp r0, 0x1
|
|
bne _0806D592
|
|
mov r2, r9
|
|
ldr r0, [r2, 0x70]
|
|
adds r0, 0xDC
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x3
|
|
bne _0806D592
|
|
ldrb r0, [r5, 0xE]
|
|
cmp r0, 0
|
|
bne _0806D592
|
|
ldr r0, _0806D5C8
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
str r0, [r5]
|
|
_0806D592:
|
|
ldr r0, _0806D5CC
|
|
ldr r1, [sp, 0x50]
|
|
cmp r1, r0
|
|
beq _0806D5DC
|
|
adds r0, r7, 0
|
|
movs r1, 0xD
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D5DC
|
|
ldr r1, [r5]
|
|
ldr r0, _0806D5D0
|
|
cmp r1, r0
|
|
bne _0806D5DC
|
|
ldr r0, _0806D5D4
|
|
adds r1, r7, 0
|
|
movs r2, 0
|
|
bl SetMessageArgument
|
|
ldr r0, _0806D5D8
|
|
ldr r2, [r0]
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_80522F4
|
|
b _0806D71E
|
|
.align 2, 0
|
|
_0806D5C8: .4byte gUnknown_80F4F8C
|
|
_0806D5CC: .4byte 0x0000020e
|
|
_0806D5D0: .4byte 0x0000270f
|
|
_0806D5D4: .4byte gUnknown_202DFE8
|
|
_0806D5D8: .4byte gUnknown_80FCA90
|
|
_0806D5DC:
|
|
adds r0, r6, 0
|
|
adds r0, 0xB0
|
|
ldrb r4, [r0]
|
|
mov r10, r0
|
|
cmp r4, 0x1
|
|
bne _0806D618
|
|
ldr r0, _0806D610
|
|
adds r1, r7, 0
|
|
movs r2, 0
|
|
bl SetMessageArgument
|
|
ldr r0, _0806D614
|
|
ldr r2, [r0]
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_80522F4
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_8042238
|
|
strb r4, [r5, 0xF]
|
|
_0806D608:
|
|
movs r0, 0
|
|
bl _0806E0F0
|
|
.align 2, 0
|
|
_0806D610: .4byte gUnknown_202DFE8
|
|
_0806D614: .4byte gUnknown_80F9600
|
|
_0806D618:
|
|
adds r0, r6, 0
|
|
adds r0, 0xA8
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
beq _0806D62A
|
|
cmp r0, 0x5
|
|
beq _0806D62A
|
|
cmp r0, 0x3
|
|
bne _0806D63A
|
|
_0806D62A:
|
|
adds r0, r6, 0
|
|
adds r0, 0xA9
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x7F
|
|
bne _0806D63A
|
|
adds r0, r7, 0
|
|
bl sub_807A9B0
|
|
_0806D63A:
|
|
adds r0, r7, 0
|
|
movs r1, 0x23
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D660
|
|
ldrb r0, [r5, 0xC]
|
|
cmp r0, 0x5
|
|
bne _0806D660
|
|
_0806D64E:
|
|
ldr r2, [r5]
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
movs r3, 0
|
|
bl HealTargetHP
|
|
b _0806D754
|
|
_0806D660:
|
|
adds r0, r7, 0
|
|
movs r1, 0x24
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D674
|
|
ldrb r0, [r5, 0xC]
|
|
cmp r0, 0x3
|
|
beq _0806D64E
|
|
_0806D674:
|
|
movs r2, 0xA9
|
|
lsls r2, 1
|
|
adds r0, r6, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0806D6D0
|
|
ldrb r0, [r5, 0xD]
|
|
cmp r0, 0
|
|
beq _0806D692
|
|
ldr r0, _0806D6A4
|
|
ldr r2, [r0]
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_80522F4
|
|
_0806D692:
|
|
ldr r0, [r5, 0x8]
|
|
cmp r0, 0x1
|
|
beq _0806D6B0
|
|
cmp r0, 0x1
|
|
bcc _0806D6A8
|
|
cmp r0, 0x3
|
|
beq _0806D6C4
|
|
b _0806D6D0
|
|
.align 2, 0
|
|
_0806D6A4: .4byte gUnknown_80F9614
|
|
_0806D6A8:
|
|
ldr r0, _0806D6AC
|
|
b _0806D6B2
|
|
.align 2, 0
|
|
_0806D6AC: .4byte gUnknown_80F9630
|
|
_0806D6B0:
|
|
ldr r0, _0806D6C0
|
|
_0806D6B2:
|
|
ldr r2, [r0]
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_80522F4
|
|
b _0806D6D0
|
|
.align 2, 0
|
|
_0806D6C0: .4byte gUnknown_80F9654
|
|
_0806D6C4:
|
|
ldr r0, _0806D728
|
|
ldr r2, [r0]
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_80522F4
|
|
_0806D6D0:
|
|
ldr r4, _0806D72C
|
|
adds r0, r4, 0
|
|
mov r1, r9
|
|
movs r2, 0
|
|
bl SetMessageArgument
|
|
adds r4, 0x50
|
|
adds r0, r4, 0
|
|
adds r1, r7, 0
|
|
movs r2, 0
|
|
bl SetMessageArgument
|
|
ldr r1, [r5]
|
|
cmp r1, 0
|
|
bne _0806D760
|
|
mov r0, r9
|
|
bl sub_8045888
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D734
|
|
adds r0, r7, 0
|
|
bl sub_8045888
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D734
|
|
movs r3, 0xA9
|
|
lsls r3, 1
|
|
adds r0, r6, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0806D71E
|
|
ldr r0, _0806D730
|
|
ldr r2, [r0]
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_80522F4
|
|
_0806D71E:
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_8042238
|
|
b _0806D754
|
|
.align 2, 0
|
|
_0806D728: .4byte gUnknown_80F9670
|
|
_0806D72C: .4byte gAvailablePokemonNames
|
|
_0806D730: .4byte gUnknown_80F9688
|
|
_0806D734:
|
|
movs r1, 0xA9
|
|
lsls r1, 1
|
|
adds r0, r6, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0806D74C
|
|
ldr r0, _0806D75C
|
|
ldr r2, [r0]
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_80522F4
|
|
_0806D74C:
|
|
movs r0, 0x1E
|
|
movs r1, 0x18
|
|
bl sub_803E708
|
|
_0806D754:
|
|
movs r0, 0x1
|
|
strb r0, [r5, 0xF]
|
|
b _0806D608
|
|
.align 2, 0
|
|
_0806D75C: .4byte gUnknown_80F9688
|
|
_0806D760:
|
|
ldr r0, _0806D7B8
|
|
cmp r1, r0
|
|
bne _0806D7C4
|
|
ldr r0, [sp, 0x80]
|
|
cmp r0, 0
|
|
beq _0806D796
|
|
adds r0, r7, 0
|
|
bl sub_8045888
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D796
|
|
adds r0, r7, 0
|
|
bl GetMapEntityForDungeonEntity
|
|
mov r8, r0
|
|
movs r0, 0x14
|
|
movs r1, 0x18
|
|
bl sub_803E708
|
|
mov r2, r8
|
|
ldrh r1, [r2, 0x4]
|
|
movs r0, 0x4
|
|
orrs r0, r1
|
|
strh r0, [r2, 0x4]
|
|
bl sub_8049ED4
|
|
_0806D796:
|
|
movs r3, 0xA9
|
|
lsls r3, 1
|
|
adds r0, r6, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0806D7AE
|
|
ldr r0, _0806D7BC
|
|
ldr r2, [r0]
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_80522F4
|
|
_0806D7AE:
|
|
adds r1, r6, 0
|
|
adds r1, 0xA0
|
|
ldr r0, _0806D7C0
|
|
str r0, [r1]
|
|
b _0806D84A
|
|
.align 2, 0
|
|
_0806D7B8: .4byte 0x0000270f
|
|
_0806D7BC: .4byte gUnknown_80F96A8
|
|
_0806D7C0: .4byte 0x000003e7
|
|
_0806D7C4:
|
|
ldr r0, _0806D824
|
|
str r1, [r0]
|
|
ldr r1, _0806D828
|
|
ldr r0, [r5, 0x4]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r4, [r0]
|
|
adds r2, r6, 0
|
|
adds r2, 0xA0
|
|
ldr r0, [r2]
|
|
ldr r1, [r5]
|
|
adds r0, r1
|
|
str r0, [r2]
|
|
ldr r1, _0806D82C
|
|
cmp r0, r1
|
|
ble _0806D7E6
|
|
str r1, [r2]
|
|
_0806D7E6:
|
|
adds r0, r7, 0
|
|
bl sub_8045888
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D830
|
|
ldr r0, [r5, 0x4]
|
|
cmp r0, 0xE
|
|
beq _0806D808
|
|
ldr r0, [r5]
|
|
negs r0, r0
|
|
movs r3, 0x1
|
|
negs r3, r3
|
|
adds r1, r7, 0
|
|
movs r2, 0x1
|
|
bl sub_803ED30
|
|
_0806D808:
|
|
movs r1, 0xA9
|
|
lsls r1, 1
|
|
adds r0, r6, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0806D84A
|
|
cmp r4, 0
|
|
beq _0806D84A
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
adds r2, r4, 0
|
|
bl sub_80522F4
|
|
b _0806D84A
|
|
.align 2, 0
|
|
_0806D824: .4byte gUnknown_202DE30
|
|
_0806D828: .4byte gUnknown_80F9764
|
|
_0806D82C: .4byte 0x000003e7
|
|
_0806D830:
|
|
movs r2, 0xA9
|
|
lsls r2, 1
|
|
adds r0, r6, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0806D84A
|
|
cmp r4, 0
|
|
beq _0806D84A
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
adds r2, r4, 0
|
|
bl sub_80522F4
|
|
_0806D84A:
|
|
ldr r0, [r5, 0x4]
|
|
cmp r0, 0xE
|
|
bne _0806D858
|
|
movs r3, 0xE
|
|
ldrsh r0, [r6, r3]
|
|
cmp r0, 0x1
|
|
bgt _0806D900
|
|
_0806D858:
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
bne _0806D900
|
|
adds r0, r7, 0
|
|
bl sub_8045888
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D900
|
|
mov r2, r9
|
|
ldr r1, [r2, 0x4]
|
|
ldr r0, [r7, 0x4]
|
|
cmp r1, r0
|
|
beq _0806D8E6
|
|
mov r0, r9
|
|
bl GetEntityType
|
|
cmp r0, 0x1
|
|
bne _0806D8E6
|
|
movs r4, 0
|
|
ldrb r0, [r6, 0x7]
|
|
cmp r0, 0
|
|
beq _0806D8B4
|
|
ldr r0, _0806D8B0
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x2]
|
|
cmp r0, 0
|
|
beq _0806D8B6
|
|
adds r0, r7, 0
|
|
bl sub_806A458
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806D8B6
|
|
adds r0, r7, 0
|
|
mov r1, r9
|
|
bl CanSee
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
negs r1, r0
|
|
orrs r1, r0
|
|
lsrs r4, r1, 31
|
|
b _0806D8B6
|
|
.align 2, 0
|
|
_0806D8B0: .4byte gUnknown_203B46C
|
|
_0806D8B4:
|
|
movs r4, 0
|
|
_0806D8B6:
|
|
adds r0, r6, 0
|
|
adds r0, 0xE8
|
|
ldrb r0, [r0]
|
|
subs r0, 0x1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bhi _0806D8C8
|
|
movs r4, 0
|
|
_0806D8C8:
|
|
cmp r4, 0
|
|
beq _0806D8E0
|
|
ldr r4, [r7, 0x70]
|
|
adds r0, r7, 0x4
|
|
mov r1, r9
|
|
adds r1, 0x4
|
|
bl CalculateFacingDir
|
|
movs r1, 0x7
|
|
ands r0, r1
|
|
adds r4, 0x46
|
|
strb r0, [r4]
|
|
_0806D8E0:
|
|
adds r0, r7, 0
|
|
bl TargetTileInFront
|
|
_0806D8E6:
|
|
ldr r0, [r7, 0x70]
|
|
adds r0, 0x46
|
|
ldrb r2, [r0]
|
|
adds r0, r7, 0
|
|
movs r1, 0x6
|
|
bl sub_806CDD4
|
|
adds r0, r7, 0
|
|
adds r1, r5, 0
|
|
bl sub_80420E8
|
|
movs r3, 0x1
|
|
str r3, [sp, 0x54]
|
|
_0806D900:
|
|
movs r0, 0xE
|
|
ldrsh r4, [r6, r0]
|
|
ldr r1, [r5]
|
|
cmp r4, r1
|
|
ble _0806D910
|
|
ldrh r0, [r6, 0xE]
|
|
subs r0, r1
|
|
b _0806D912
|
|
_0806D910:
|
|
movs r0, 0
|
|
_0806D912:
|
|
strh r0, [r6, 0xE]
|
|
adds r0, r6, 0
|
|
adds r0, 0xC4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x9
|
|
bne _0806D93C
|
|
movs r1, 0xE
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _0806D958
|
|
movs r0, 0x1
|
|
strh r0, [r6, 0xE]
|
|
ldr r0, _0806D938
|
|
ldr r2, [r0]
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_80522F4
|
|
b _0806D958
|
|
.align 2, 0
|
|
_0806D938: .4byte gUnknown_8100548
|
|
_0806D93C:
|
|
ldr r2, [sp, 0x4C]
|
|
cmp r2, 0x1
|
|
bne _0806D958
|
|
movs r3, 0xE
|
|
ldrsh r0, [r6, r3]
|
|
cmp r0, 0
|
|
bne _0806D958
|
|
strh r2, [r6, 0xE]
|
|
ldr r0, _0806D9C8
|
|
ldr r2, [r0]
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_80522F4
|
|
_0806D958:
|
|
movs r1, 0xE
|
|
ldrsh r0, [r6, r1]
|
|
subs r4, r0
|
|
cmp r4, 0
|
|
bge _0806D964
|
|
movs r4, 0
|
|
_0806D964:
|
|
ldr r2, [sp, 0x54]
|
|
cmp r2, 0
|
|
bne _0806D970
|
|
mov r3, r8
|
|
cmp r3, 0
|
|
beq _0806D978
|
|
_0806D970:
|
|
movs r0, 0xA
|
|
movs r1, 0x18
|
|
bl sub_803E708
|
|
_0806D978:
|
|
movs r1, 0xE
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
beq _0806D9D4
|
|
ldr r2, [sp, 0x54]
|
|
cmp r2, 0
|
|
beq _0806D98E
|
|
adds r0, r7, 0
|
|
movs r1, 0x8
|
|
bl sub_806CE68
|
|
_0806D98E:
|
|
adds r0, r7, 0
|
|
movs r1, 0x10
|
|
bl HasItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806D9B2
|
|
cmp r4, 0
|
|
ble _0806D9B2
|
|
ldr r1, [r5]
|
|
ldr r0, _0806D9CC
|
|
cmp r1, r0
|
|
beq _0806D9B2
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
adds r2, r4, 0
|
|
bl sub_8071D4C
|
|
_0806D9B2:
|
|
mov r3, r8
|
|
cmp r3, 0
|
|
bne _0806D9BA
|
|
b _0806D608
|
|
_0806D9BA:
|
|
ldrh r1, [r3, 0x4]
|
|
ldr r0, _0806D9D0
|
|
ands r0, r1
|
|
strh r0, [r3, 0x4]
|
|
bl sub_8049ED4
|
|
b _0806D608
|
|
.align 2, 0
|
|
_0806D9C8: .4byte gUnknown_810056C
|
|
_0806D9CC: .4byte 0x0000270f
|
|
_0806D9D0: .4byte 0x0000fffb
|
|
_0806D9D4:
|
|
adds r0, r6, 0
|
|
adds r0, 0xE4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
bne _0806D9E6
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_807A7C8
|
|
_0806D9E6:
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _0806DA18
|
|
movs r0, 0x14
|
|
movs r1, 0x18
|
|
bl sub_803E708
|
|
adds r1, r7, 0
|
|
adds r1, 0x22
|
|
movs r0, 0x2
|
|
strb r0, [r1]
|
|
movs r0, 0xA
|
|
movs r1, 0x18
|
|
bl sub_803E708
|
|
mov r2, r8
|
|
ldrh r1, [r2, 0x4]
|
|
ldr r0, _0806DA14
|
|
ands r0, r1
|
|
strh r0, [r2, 0x4]
|
|
bl sub_8049ED4
|
|
b _0806DA2E
|
|
.align 2, 0
|
|
_0806DA14: .4byte 0x0000fffb
|
|
_0806DA18:
|
|
ldr r3, [sp, 0x54]
|
|
cmp r3, 0
|
|
beq _0806DA2E
|
|
adds r1, r7, 0
|
|
adds r1, 0x22
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
movs r0, 0x1E
|
|
movs r1, 0x18
|
|
bl sub_803E708
|
|
_0806DA2E:
|
|
movs r0, 0x1
|
|
mov r8, r0
|
|
mov r0, r9
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806DA50
|
|
mov r0, r9
|
|
bl GetEntityType
|
|
cmp r0, 0x1
|
|
bne _0806DA50
|
|
cmp r9, r7
|
|
beq _0806DA50
|
|
movs r1, 0
|
|
mov r8, r1
|
|
_0806DA50:
|
|
movs r2, 0xA6
|
|
lsls r2, 1
|
|
adds r1, r6, r2
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r4, _0806DA88
|
|
adds r0, r4, 0
|
|
mov r1, r9
|
|
movs r2, 0
|
|
bl SetMessageArgument
|
|
adds r4, 0x50
|
|
adds r0, r4, 0
|
|
adds r1, r7, 0
|
|
movs r2, 0
|
|
bl SetMessageArgument
|
|
ldr r0, [r5, 0x4]
|
|
subs r0, 0x13
|
|
cmp r0, 0x1
|
|
bhi _0806DA9C
|
|
ldrb r0, [r6, 0x6]
|
|
cmp r0, 0
|
|
beq _0806DA90
|
|
ldr r0, _0806DA8C
|
|
ldr r2, [r0]
|
|
b _0806DAC2
|
|
.align 2, 0
|
|
_0806DA88: .4byte gAvailablePokemonNames
|
|
_0806DA8C: .4byte gUnknown_80F9E44
|
|
_0806DA90:
|
|
ldr r0, _0806DA98
|
|
ldr r1, [r0]
|
|
b _0806DB86
|
|
.align 2, 0
|
|
_0806DA98: .4byte gUnknown_80F9E44
|
|
_0806DA9C:
|
|
ldrb r0, [r6, 0x6]
|
|
cmp r0, 0
|
|
beq _0806DAD0
|
|
adds r0, r6, 0
|
|
adds r0, 0xA4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _0806DAB8
|
|
ldr r0, _0806DAB4
|
|
mov r3, r8
|
|
lsls r1, r3, 2
|
|
b _0806DB82
|
|
.align 2, 0
|
|
_0806DAB4: .4byte gUnknown_80F9DF0
|
|
_0806DAB8:
|
|
ldr r0, _0806DACC
|
|
mov r2, r8
|
|
lsls r1, r2, 2
|
|
adds r1, r0
|
|
ldr r2, [r1]
|
|
_0806DAC2:
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_80522F4
|
|
b _0806DBA4
|
|
.align 2, 0
|
|
_0806DACC: .4byte gUnknown_80F9CC0
|
|
_0806DAD0:
|
|
ldr r2, _0806DB04
|
|
ldrb r1, [r6, 0xA]
|
|
movs r0, 0x64
|
|
muls r0, r1
|
|
ldr r3, _0806DB08
|
|
adds r0, r3
|
|
ldr r1, [r2]
|
|
adds r3, r1, r0
|
|
ldrb r0, [r6, 0x7]
|
|
cmp r0, 0
|
|
bne _0806DB00
|
|
adds r0, r6, 0
|
|
adds r0, 0x40
|
|
ldrb r1, [r0]
|
|
adds r2, r0, 0
|
|
cmp r1, 0x41
|
|
bne _0806DB18
|
|
ldr r0, _0806DB0C
|
|
ldr r0, [r0]
|
|
ldr r1, _0806DB10
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0806DB18
|
|
_0806DB00:
|
|
ldr r0, _0806DB14
|
|
b _0806DB7E
|
|
.align 2, 0
|
|
_0806DB04: .4byte gRecruitedPokemonRef
|
|
_0806DB08: .4byte 0x00008df8
|
|
_0806DB0C: .4byte gDungeonGlobalData
|
|
_0806DB10: .4byte 0x0000065c
|
|
_0806DB14: .4byte gUnknown_80F9CEC
|
|
_0806DB18:
|
|
ldrb r0, [r2]
|
|
cmp r0, 0x4A
|
|
beq _0806DB22
|
|
cmp r0, 0x47
|
|
bne _0806DB26
|
|
_0806DB22:
|
|
movs r0, 0x1
|
|
b _0806DB28
|
|
_0806DB26:
|
|
movs r0, 0
|
|
_0806DB28:
|
|
cmp r0, 0
|
|
beq _0806DB38
|
|
ldr r0, _0806DB34
|
|
mov r3, r8
|
|
lsls r1, r3, 2
|
|
b _0806DB82
|
|
.align 2, 0
|
|
_0806DB34: .4byte gUnknown_80F9DAC
|
|
_0806DB38:
|
|
adds r0, r6, 0
|
|
adds r0, 0xA4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _0806DB4C
|
|
ldr r0, _0806DB48
|
|
b _0806DB7E
|
|
.align 2, 0
|
|
_0806DB48: .4byte gUnknown_80F9DF0
|
|
_0806DB4C:
|
|
movs r1, 0xA
|
|
ldrsh r0, [r3, r1]
|
|
bl sub_806A58C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806DB94
|
|
ldr r0, _0806DB70
|
|
ldr r0, [r0]
|
|
ldr r2, _0806DB74
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0806DB7C
|
|
ldr r0, _0806DB78
|
|
mov r3, r8
|
|
lsls r1, r3, 2
|
|
b _0806DB82
|
|
.align 2, 0
|
|
_0806DB70: .4byte gDungeonGlobalData
|
|
_0806DB74: .4byte 0x0000065d
|
|
_0806DB78: .4byte gUnknown_80F9D8C
|
|
_0806DB7C:
|
|
ldr r0, _0806DB90
|
|
_0806DB7E:
|
|
mov r2, r8
|
|
lsls r1, r2, 2
|
|
_0806DB82:
|
|
adds r1, r0
|
|
ldr r1, [r1]
|
|
_0806DB86:
|
|
mov r0, r9
|
|
bl sub_805239C
|
|
b _0806DBA4
|
|
.align 2, 0
|
|
_0806DB90: .4byte gUnknown_80F9D84
|
|
_0806DB94:
|
|
ldr r0, _0806DC4C
|
|
mov r3, r8
|
|
lsls r1, r3, 2
|
|
adds r1, r0
|
|
ldr r1, [r1]
|
|
mov r0, r9
|
|
bl sub_805239C
|
|
_0806DBA4:
|
|
mov r1, r10
|
|
ldrb r0, [r1]
|
|
subs r0, 0x3
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bhi _0806DBBC
|
|
adds r0, r6, 0
|
|
adds r0, 0x9C
|
|
ldr r0, [r0]
|
|
bl sub_8076CB4
|
|
_0806DBBC:
|
|
adds r1, r6, 0
|
|
adds r1, 0x60
|
|
ldrb r3, [r1]
|
|
movs r2, 0x1
|
|
mov r8, r2
|
|
mov r0, r8
|
|
ands r0, r3
|
|
adds r5, r1, 0
|
|
cmp r0, 0
|
|
beq _0806DC5C
|
|
movs r0, 0x8
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
bne _0806DC5C
|
|
movs r0, 0x2
|
|
ands r0, r3
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0
|
|
bne _0806DC5C
|
|
ldrb r0, [r5, 0x2]
|
|
cmp r0, 0xD2
|
|
bne _0806DC5C
|
|
adds r0, r7, 0
|
|
bl sub_8042148
|
|
adds r0, r7, 0
|
|
adds r0, 0x22
|
|
strb r4, [r0]
|
|
ldrh r0, [r6, 0x10]
|
|
movs r2, 0
|
|
strh r0, [r6, 0xE]
|
|
movs r3, 0xAC
|
|
lsls r3, 1
|
|
adds r0, r6, r3
|
|
strb r2, [r0]
|
|
movs r1, 0xA6
|
|
lsls r1, 1
|
|
adds r0, r6, r1
|
|
mov r3, r8
|
|
strb r3, [r0]
|
|
movs r0, 0x9E
|
|
lsls r0, 1
|
|
adds r1, r6, r0
|
|
movs r3, 0xA0
|
|
lsls r3, 1
|
|
adds r0, r6, r3
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldrb r0, [r6, 0x7]
|
|
cmp r0, 0
|
|
beq _0806DC36
|
|
ldr r0, _0806DC50
|
|
ldr r1, [r0]
|
|
ldr r3, _0806DC54
|
|
adds r1, r3
|
|
strb r2, [r1]
|
|
ldr r0, [r0]
|
|
ldr r1, _0806DC58
|
|
adds r0, r1
|
|
strb r2, [r0]
|
|
_0806DC36:
|
|
strb r2, [r5, 0x2]
|
|
strb r2, [r5, 0x1]
|
|
strb r2, [r5]
|
|
adds r0, r6, 0
|
|
adds r0, 0xC8
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x3
|
|
bne _0806DC48
|
|
b _0806DEC8
|
|
_0806DC48:
|
|
b _0806DEE4
|
|
.align 2, 0
|
|
_0806DC4C: .4byte gUnknown_80F9D28
|
|
_0806DC50: .4byte gDungeonGlobalData
|
|
_0806DC54: .4byte 0x00000679
|
|
_0806DC58: .4byte 0x00000676
|
|
_0806DC5C:
|
|
ldrb r0, [r6, 0x7]
|
|
cmp r0, 0
|
|
bne _0806DC64
|
|
b _0806DDFC
|
|
_0806DC64:
|
|
mov r10, r5
|
|
ldrb r1, [r5]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0806DC72
|
|
b _0806DDFC
|
|
_0806DC72:
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0806DC7C
|
|
b _0806DDFC
|
|
_0806DC7C:
|
|
ldrb r0, [r5, 0x2]
|
|
cmp r0, 0xD8
|
|
beq _0806DC84
|
|
b _0806DDFC
|
|
_0806DC84:
|
|
movs r4, 0
|
|
_0806DC86:
|
|
ldr r0, _0806DD80
|
|
ldr r0, [r0]
|
|
lsls r1, r4, 2
|
|
ldr r2, _0806DD84
|
|
adds r0, r2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov r8, r0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806DCDE
|
|
cmp r8, r7
|
|
beq _0806DCDE
|
|
adds r0, r7, 0
|
|
mov r1, r8
|
|
bl CanSee
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806DCDE
|
|
mov r3, r8
|
|
movs r0, 0x4
|
|
ldrsh r1, [r3, r0]
|
|
movs r2, 0x4
|
|
ldrsh r0, [r7, r2]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0806DCC4
|
|
negs r1, r1
|
|
_0806DCC4:
|
|
cmp r1, 0x1
|
|
bgt _0806DCDE
|
|
mov r3, r8
|
|
movs r0, 0x6
|
|
ldrsh r1, [r3, r0]
|
|
movs r2, 0x6
|
|
ldrsh r0, [r7, r2]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0806DCDA
|
|
negs r1, r1
|
|
_0806DCDA:
|
|
cmp r1, 0x1
|
|
ble _0806DCE4
|
|
_0806DCDE:
|
|
adds r4, 0x1
|
|
cmp r4, 0x3
|
|
ble _0806DC86
|
|
_0806DCE4:
|
|
cmp r4, 0x4
|
|
bne _0806DCEA
|
|
b _0806DDFC
|
|
_0806DCEA:
|
|
adds r0, r7, 0
|
|
bl sub_8042148
|
|
mov r3, r8
|
|
ldr r4, [r3, 0x4]
|
|
ldr r1, _0806DD88
|
|
mov r0, r8
|
|
adds r2, r7, 0
|
|
bl sub_8068FE0
|
|
lsls r1, r4, 16
|
|
asrs r1, 16
|
|
asrs r4, 16
|
|
adds r0, r7, 0
|
|
adds r2, r4, 0
|
|
movs r3, 0x1
|
|
bl sub_80694C0
|
|
adds r0, r7, 0
|
|
movs r1, 0
|
|
bl sub_804535C
|
|
adds r1, r7, 0
|
|
adds r1, 0x22
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldrh r0, [r6, 0x10]
|
|
movs r4, 0
|
|
strh r0, [r6, 0xE]
|
|
adds r0, r7, 0
|
|
bl sub_8042A24
|
|
movs r1, 0xAC
|
|
lsls r1, 1
|
|
adds r0, r6, r1
|
|
strb r4, [r0]
|
|
movs r2, 0xA6
|
|
lsls r2, 1
|
|
adds r1, r6, r2
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
movs r3, 0x9E
|
|
lsls r3, 1
|
|
adds r1, r6, r3
|
|
subs r2, 0xC
|
|
adds r0, r6, r2
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldrb r0, [r6, 0x7]
|
|
cmp r0, 0
|
|
beq _0806DD62
|
|
ldr r0, _0806DD80
|
|
ldr r1, [r0]
|
|
ldr r3, _0806DD8C
|
|
adds r1, r3
|
|
strb r4, [r1]
|
|
ldr r0, [r0]
|
|
ldr r1, _0806DD90
|
|
adds r0, r1
|
|
strb r4, [r0]
|
|
_0806DD62:
|
|
mov r2, r10
|
|
strb r4, [r2, 0x2]
|
|
strb r4, [r2, 0x1]
|
|
strb r4, [r2]
|
|
adds r0, r6, 0
|
|
adds r0, 0xC8
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x3
|
|
bne _0806DD94
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
movs r2, 0x3
|
|
bl sub_807A5D0
|
|
b _0806DDA2
|
|
.align 2, 0
|
|
_0806DD80: .4byte gDungeonGlobalData
|
|
_0806DD84: .4byte 0x0001357c
|
|
_0806DD88: .4byte 0x00000221
|
|
_0806DD8C: .4byte 0x00000679
|
|
_0806DD90: .4byte 0x00000676
|
|
_0806DD94:
|
|
cmp r0, 0x2
|
|
bne _0806DDA2
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
movs r2, 0x2
|
|
bl sub_807A5D0
|
|
_0806DDA2:
|
|
adds r0, r7, 0
|
|
bl sub_8078084
|
|
adds r0, r6, 0
|
|
movs r1, 0
|
|
bl sub_806BFC0
|
|
bl sub_800DBBC
|
|
adds r0, r7, 0
|
|
bl sub_806A390
|
|
adds r0, r7, 0
|
|
bl sub_806CEBC
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r7, 0
|
|
bl sub_806CCB4
|
|
adds r0, r7, 0
|
|
bl DungeonEntityUpdateStatusSprites
|
|
ldr r4, _0806DDF0
|
|
adds r0, r4, 0
|
|
adds r1, r7, 0
|
|
movs r2, 0
|
|
bl SetMessageArgument
|
|
adds r4, 0x50
|
|
adds r0, r4, 0
|
|
mov r1, r8
|
|
movs r2, 0
|
|
bl SetMessageArgument
|
|
ldr r0, _0806DDF4
|
|
b _0806DF2E
|
|
.align 2, 0
|
|
_0806DDF0: .4byte gAvailablePokemonNames
|
|
_0806DDF4: .4byte gUnknown_80FD484
|
|
_0806DDF8:
|
|
mov r4, r8
|
|
b _0806DE64
|
|
_0806DDFC:
|
|
adds r0, r7, 0
|
|
movs r1, 0x16
|
|
bl HasIQSkill
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806DE0C
|
|
b _0806DF48
|
|
_0806DE0C:
|
|
movs r4, 0
|
|
ldrb r1, [r5]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0806DE28
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0806DE28
|
|
ldrb r0, [r5, 0x2]
|
|
cmp r0, 0x3A
|
|
bne _0806DE28
|
|
adds r4, r5, 0
|
|
_0806DE28:
|
|
cmp r4, 0
|
|
bne _0806DE68
|
|
ldrb r0, [r6, 0x6]
|
|
cmp r0, 0
|
|
bne _0806DE64
|
|
movs r3, 0
|
|
ldr r0, _0806DED4
|
|
ldr r2, [r0]
|
|
mov r12, r2
|
|
movs r0, 0x1
|
|
mov r10, r0
|
|
_0806DE3E:
|
|
lsls r0, r3, 2
|
|
add r0, r12
|
|
mov r8, r0
|
|
ldrb r1, [r2]
|
|
mov r0, r10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0806DE5C
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0806DE5C
|
|
ldrb r0, [r2, 0x2]
|
|
cmp r0, 0x3A
|
|
beq _0806DDF8
|
|
_0806DE5C:
|
|
adds r2, 0x4
|
|
adds r3, 0x1
|
|
cmp r3, 0x13
|
|
ble _0806DE3E
|
|
_0806DE64:
|
|
cmp r4, 0
|
|
beq _0806DF48
|
|
_0806DE68:
|
|
adds r0, r7, 0
|
|
bl sub_8042148
|
|
adds r0, r4, 0
|
|
movs r1, 0x46
|
|
movs r2, 0x2
|
|
bl sub_8045C28
|
|
adds r1, r7, 0
|
|
adds r1, 0x22
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldrh r0, [r6, 0x10]
|
|
movs r2, 0
|
|
strh r0, [r6, 0xE]
|
|
movs r1, 0xAC
|
|
lsls r1, 1
|
|
adds r0, r6, r1
|
|
strb r2, [r0]
|
|
movs r3, 0xA6
|
|
lsls r3, 1
|
|
adds r1, r6, r3
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
movs r0, 0x9E
|
|
lsls r0, 1
|
|
adds r1, r6, r0
|
|
subs r3, 0xC
|
|
adds r0, r6, r3
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
ldrb r0, [r6, 0x7]
|
|
cmp r0, 0
|
|
beq _0806DEBE
|
|
ldr r0, _0806DED8
|
|
ldr r1, [r0]
|
|
ldr r3, _0806DEDC
|
|
adds r1, r3
|
|
strb r2, [r1]
|
|
ldr r0, [r0]
|
|
ldr r1, _0806DEE0
|
|
adds r0, r1
|
|
strb r2, [r0]
|
|
_0806DEBE:
|
|
adds r0, r6, 0
|
|
adds r0, 0xC8
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x3
|
|
bne _0806DEE4
|
|
_0806DEC8:
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
movs r2, 0x3
|
|
bl sub_807A5D0
|
|
b _0806DEF2
|
|
.align 2, 0
|
|
_0806DED4: .4byte gTeamInventory_203B460
|
|
_0806DED8: .4byte gDungeonGlobalData
|
|
_0806DEDC: .4byte 0x00000679
|
|
_0806DEE0: .4byte 0x00000676
|
|
_0806DEE4:
|
|
cmp r0, 0x2
|
|
bne _0806DEF2
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
movs r2, 0x2
|
|
bl sub_807A5D0
|
|
_0806DEF2:
|
|
adds r0, r7, 0
|
|
bl sub_8078084
|
|
adds r0, r6, 0
|
|
movs r1, 0
|
|
bl sub_806BFC0
|
|
bl sub_800DBBC
|
|
adds r0, r7, 0
|
|
bl sub_806A390
|
|
adds r0, r7, 0
|
|
bl sub_806CEBC
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r7, 0
|
|
bl sub_806CCB4
|
|
adds r0, r7, 0
|
|
bl DungeonEntityUpdateStatusSprites
|
|
ldr r0, _0806DF40
|
|
adds r1, r7, 0
|
|
movs r2, 0
|
|
bl SetMessageArgument
|
|
ldr r0, _0806DF44
|
|
_0806DF2E:
|
|
ldr r1, [r0]
|
|
mov r0, r9
|
|
bl sub_805239C
|
|
adds r0, r7, 0
|
|
bl sub_806F63C
|
|
bl _0806D608
|
|
.align 2, 0
|
|
_0806DF40: .4byte gUnknown_202DFE8
|
|
_0806DF44: .4byte gUnknown_80FD46C
|
|
_0806DF48:
|
|
ldrb r4, [r6, 0x7]
|
|
cmp r4, 0
|
|
bne _0806DF68
|
|
ldrb r1, [r5]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0806DF68
|
|
adds r1, r7, 0x4
|
|
adds r0, r7, 0
|
|
adds r2, r5, 0
|
|
bl sub_80464C8
|
|
strb r4, [r5, 0x2]
|
|
strb r4, [r5, 0x1]
|
|
strb r4, [r5]
|
|
_0806DF68:
|
|
adds r0, r6, 0
|
|
adds r0, 0xF7
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0806DF7E
|
|
ldr r0, _0806E02C
|
|
ldr r0, [r0]
|
|
ldr r2, _0806E030
|
|
adds r0, r2
|
|
ldr r1, _0806E034
|
|
strh r1, [r0]
|
|
_0806DF7E:
|
|
movs r3, 0
|
|
mov r10, r3
|
|
mov r0, r9
|
|
bl GetEntityType
|
|
cmp r0, 0x1
|
|
bne _0806E066
|
|
mov r0, r9
|
|
ldr r4, [r0, 0x70]
|
|
movs r1, 0x2
|
|
ldrsh r0, [r6, r1]
|
|
ldrb r1, [r6, 0x9]
|
|
bl CalculateEXPGain
|
|
adds r5, r0, 0
|
|
adds r0, r6, 0
|
|
adds r0, 0xFB
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0806DFAE
|
|
cmp r0, 0x2
|
|
bne _0806DFB4
|
|
lsls r0, r5, 1
|
|
adds r5, r0, r5
|
|
_0806DFAE:
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
_0806DFB4:
|
|
cmp r5, 0
|
|
bne _0806DFBA
|
|
movs r5, 0x1
|
|
_0806DFBA:
|
|
ldrb r0, [r4, 0x7]
|
|
cmp r0, 0
|
|
beq _0806DFC8
|
|
movs r2, 0x2
|
|
ldrsh r0, [r6, r2]
|
|
bl sub_80980B4
|
|
_0806DFC8:
|
|
adds r0, r6, 0
|
|
adds r0, 0xF4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0806DFDA
|
|
ldr r3, _0806E038
|
|
adds r1, r4, r3
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_0806DFDA:
|
|
ldr r0, [sp, 0x78]
|
|
cmp r0, 0x1
|
|
bne _0806E066
|
|
ldrb r0, [r4, 0x6]
|
|
cmp r0, 0
|
|
bne _0806E040
|
|
ldrb r0, [r6, 0x6]
|
|
cmp r0, 0
|
|
beq _0806E066
|
|
mov r0, r9
|
|
mov r1, r9
|
|
adds r2, r5, 0
|
|
bl sub_8071D4C
|
|
movs r6, 0
|
|
_0806DFF8:
|
|
ldr r0, _0806E02C
|
|
ldr r0, [r0]
|
|
lsls r1, r6, 2
|
|
ldr r2, _0806E03C
|
|
adds r0, r2
|
|
adds r0, r1
|
|
ldr r4, [r0]
|
|
adds r0, r4, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E020
|
|
cmp r4, r9
|
|
beq _0806E020
|
|
mov r0, r9
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_8071D4C
|
|
_0806E020:
|
|
adds r6, 0x1
|
|
cmp r6, 0x3
|
|
ble _0806DFF8
|
|
movs r3, 0x1
|
|
mov r10, r3
|
|
b _0806E066
|
|
.align 2, 0
|
|
_0806E02C: .4byte gDungeonGlobalData
|
|
_0806E030: .4byte 0x0000066a
|
|
_0806E034: .4byte 0x000003e7
|
|
_0806E038: .4byte 0x0000014b
|
|
_0806E03C: .4byte 0x0001357c
|
|
_0806E040:
|
|
ldr r5, _0806E0BC
|
|
ldr r0, [r5]
|
|
ldr r1, _0806E0C0
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bl sub_809033C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E066
|
|
ldr r2, _0806E0C4
|
|
adds r0, r4, r2
|
|
add r3, sp, 0x78
|
|
ldrb r3, [r3]
|
|
strb r3, [r0]
|
|
ldr r0, [r5]
|
|
add r1, sp, 0x78
|
|
ldrb r1, [r1]
|
|
strb r1, [r0, 0xD]
|
|
_0806E066:
|
|
mov r0, r9
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E08A
|
|
mov r0, r9
|
|
bl GetEntityType
|
|
cmp r0, 0x1
|
|
bne _0806E08A
|
|
mov r2, r9
|
|
ldr r0, [r2, 0x70]
|
|
ldrb r0, [r0, 0x7]
|
|
cmp r0, 0
|
|
bne _0806E08A
|
|
movs r3, 0
|
|
mov r10, r3
|
|
_0806E08A:
|
|
mov r0, r10
|
|
cmp r0, 0
|
|
beq _0806E0E4
|
|
add r0, sp, 0x4
|
|
adds r1, r7, 0
|
|
bl sub_8069D4C
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
bl sub_806F660
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E0D8
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
add r2, sp, 0x4
|
|
bl sub_806FA5C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806E0CC
|
|
ldr r1, _0806E0C8
|
|
adds r0, r7, 0
|
|
b _0806E0DC
|
|
.align 2, 0
|
|
_0806E0BC: .4byte gDungeonGlobalData
|
|
_0806E0C0: .4byte 0x00000644
|
|
_0806E0C4: .4byte 0x00000149
|
|
_0806E0C8: .4byte 0x000001f5
|
|
_0806E0CC:
|
|
ldr r1, _0806E0D4
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
b _0806E0EE
|
|
.align 2, 0
|
|
_0806E0D4: .4byte gUnknown_202F221
|
|
_0806E0D8:
|
|
adds r0, r7, 0
|
|
ldr r1, [sp, 0x50]
|
|
_0806E0DC:
|
|
mov r2, r9
|
|
bl sub_8068FE0
|
|
b _0806E0EE
|
|
_0806E0E4:
|
|
adds r0, r7, 0
|
|
ldr r1, [sp, 0x50]
|
|
mov r2, r9
|
|
bl sub_8068FE0
|
|
_0806E0EE:
|
|
movs r0, 0x1
|
|
_0806E0F0:
|
|
add sp, 0x58
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_806D528
|
|
|
|
thumb_func_start sub_806E100
|
|
sub_806E100:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x28
|
|
adds r6, r0, 0
|
|
mov r8, r1
|
|
str r2, [sp, 0x18]
|
|
lsls r3, 24
|
|
lsrs r7, r3, 24
|
|
movs r0, 0
|
|
mov r9, r0
|
|
movs r1, 0
|
|
str r1, [sp, 0x20]
|
|
mov r2, r8
|
|
ldr r2, [r2, 0x70]
|
|
str r2, [sp, 0x24]
|
|
ldr r3, [sp, 0x18]
|
|
ldr r3, [r3, 0x70]
|
|
mov r10, r3
|
|
adds r0, r6, 0
|
|
movs r1, 0x1
|
|
bl sub_800A020
|
|
mov r0, r9
|
|
ldr r4, [sp, 0x48]
|
|
strb r0, [r4, 0xD]
|
|
strb r0, [r4, 0xE]
|
|
movs r1, 0
|
|
str r1, [sp, 0x1C]
|
|
ldr r0, [sp, 0x18]
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806E14E
|
|
movs r0, 0x1
|
|
b _0806E61A
|
|
_0806E14E:
|
|
cmp r7, 0x1
|
|
beq _0806E156
|
|
cmp r7, 0x7
|
|
bne _0806E15A
|
|
_0806E156:
|
|
movs r2, 0x1
|
|
str r2, [sp, 0x20]
|
|
_0806E15A:
|
|
ldr r0, [sp, 0x18]
|
|
movs r1, 0x35
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E170
|
|
cmp r7, 0
|
|
beq _0806E170
|
|
movs r3, 0x1
|
|
str r3, [sp, 0x1C]
|
|
_0806E170:
|
|
movs r0, 0x2
|
|
ldr r4, [sp, 0x48]
|
|
str r0, [r4, 0x8]
|
|
movs r5, 0
|
|
add r0, sp, 0x10
|
|
mov r9, r0
|
|
b _0806E1F2
|
|
_0806E17E:
|
|
mov r1, r10
|
|
adds r1, 0x5C
|
|
ldr r2, [sp, 0x20]
|
|
cmp r2, 0
|
|
beq _0806E1B4
|
|
adds r0, r1, r5
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xE
|
|
bne _0806E1B4
|
|
mov r0, r10
|
|
adds r0, 0xF5
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0806E1B4
|
|
movs r4, 0
|
|
ldr r0, _0806E1AC
|
|
ldr r0, [r0]
|
|
ldr r3, _0806E1B0
|
|
adds r1, r0, r3
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
b _0806E1CA
|
|
.align 2, 0
|
|
_0806E1AC: .4byte gDungeonGlobalData
|
|
_0806E1B0: .4byte 0x00000179
|
|
_0806E1B4:
|
|
ldr r2, _0806E4E4
|
|
adds r0, r1, r5
|
|
ldrb r1, [r0]
|
|
lsls r1, 1
|
|
lsls r0, r7, 3
|
|
adds r0, r7
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
adds r1, r2
|
|
movs r0, 0
|
|
ldrsh r4, [r1, r0]
|
|
_0806E1CA:
|
|
cmp r4, 0x2
|
|
beq _0806E1DC
|
|
lsls r0, r4, 2
|
|
add r0, sp
|
|
ldr r2, [r0]
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
_0806E1DC:
|
|
lsls r0, r5, 2
|
|
add r0, r9
|
|
str r4, [r0]
|
|
ldr r0, _0806E4E8
|
|
ldr r0, [r0]
|
|
movs r1, 0x9E
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
adds r0, r5
|
|
strb r4, [r0]
|
|
adds r5, 0x1
|
|
_0806E1F2:
|
|
cmp r5, 0x1
|
|
bgt _0806E20E
|
|
mov r1, sp
|
|
ldr r0, _0806E4EC
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
adds r0, r6, 0
|
|
bl sub_800A2A0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E17E
|
|
_0806E20E:
|
|
ldr r2, _0806E4F0
|
|
mov r1, r9
|
|
ldr r0, [r1, 0x4]
|
|
lsls r0, 2
|
|
ldr r1, [sp, 0x10]
|
|
lsls r1, 4
|
|
adds r0, r1
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ldr r2, [sp, 0x48]
|
|
str r0, [r2, 0x8]
|
|
movs r3, 0x1
|
|
mov r9, r3
|
|
cmp r0, 0x3
|
|
beq _0806E240
|
|
movs r4, 0
|
|
mov r9, r4
|
|
ldr r0, [sp, 0x1C]
|
|
cmp r0, 0
|
|
beq _0806E240
|
|
ldr r0, _0806E4F4
|
|
ldr r1, [r0, 0x4]
|
|
ldr r0, [r0]
|
|
str r0, [r6]
|
|
str r1, [r6, 0x4]
|
|
_0806E240:
|
|
cmp r7, 0x2
|
|
beq _0806E248
|
|
cmp r7, 0x6
|
|
bne _0806E26C
|
|
_0806E248:
|
|
ldr r0, [sp, 0x18]
|
|
movs r1, 0x2
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E26C
|
|
ldr r0, _0806E4E8
|
|
ldr r0, [r0]
|
|
ldr r2, _0806E4F8
|
|
adds r1, r0, r2
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r2, _0806E4FC
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
_0806E26C:
|
|
cmp r7, 0x2
|
|
bne _0806E2A0
|
|
ldr r0, [sp, 0x18]
|
|
bl GetFlashFireStatus
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E2A0
|
|
ldr r0, _0806E4E8
|
|
ldr r0, [r0]
|
|
movs r3, 0xB7
|
|
lsls r3, 1
|
|
adds r0, r3
|
|
movs r4, 0
|
|
movs r5, 0x1
|
|
strb r5, [r0]
|
|
adds r0, r6, 0
|
|
movs r1, 0
|
|
bl sub_800A020
|
|
ldr r0, [sp, 0x48]
|
|
str r4, [r0, 0x8]
|
|
strb r4, [r0, 0xD]
|
|
strb r5, [r0, 0xE]
|
|
movs r1, 0
|
|
mov r9, r1
|
|
_0806E2A0:
|
|
cmp r7, 0x9
|
|
bne _0806E2D2
|
|
ldr r0, [sp, 0x18]
|
|
movs r1, 0x37
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E2D2
|
|
ldr r0, _0806E4E8
|
|
ldr r0, [r0]
|
|
ldr r2, _0806E500
|
|
adds r0, r2
|
|
movs r4, 0
|
|
movs r5, 0x1
|
|
strb r5, [r0]
|
|
adds r0, r6, 0
|
|
movs r1, 0
|
|
bl sub_800A020
|
|
ldr r3, [sp, 0x48]
|
|
str r4, [r3, 0x8]
|
|
strb r4, [r3, 0xD]
|
|
strb r5, [r3, 0xE]
|
|
mov r9, r4
|
|
_0806E2D2:
|
|
cmp r7, 0x3
|
|
bne _0806E340
|
|
mov r0, r8
|
|
movs r1, 0x10
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E340
|
|
movs r4, 0
|
|
ldr r0, [sp, 0x24]
|
|
movs r2, 0x10
|
|
ldrsh r1, [r0, r2]
|
|
cmp r1, 0
|
|
bge _0806E2F2
|
|
adds r1, 0x3
|
|
_0806E2F2:
|
|
asrs r1, 2
|
|
ldr r3, [sp, 0x24]
|
|
movs r2, 0xE
|
|
ldrsh r0, [r3, r2]
|
|
cmp r1, r0
|
|
blt _0806E300
|
|
movs r4, 0x1
|
|
_0806E300:
|
|
ldr r0, [sp, 0x24]
|
|
movs r1, 0x80
|
|
adds r2, r4, 0
|
|
bl SetVisualFlags
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r4, 0
|
|
beq _0806E32A
|
|
ldr r0, _0806E4E8
|
|
ldr r0, [r0]
|
|
movs r3, 0xB8
|
|
lsls r3, 1
|
|
adds r0, r3
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
ldr r2, _0806E504
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
_0806E32A:
|
|
cmp r5, 0
|
|
beq _0806E340
|
|
mov r0, r8
|
|
bl sub_80428EC
|
|
ldr r0, _0806E508
|
|
ldr r2, [r0]
|
|
mov r0, r8
|
|
ldr r1, [sp, 0x18]
|
|
bl sub_80522F4
|
|
_0806E340:
|
|
cmp r7, 0x4
|
|
bne _0806E3AC
|
|
mov r0, r8
|
|
movs r1, 0x1A
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E3AC
|
|
movs r4, 0
|
|
ldr r0, [sp, 0x24]
|
|
movs r2, 0x10
|
|
ldrsh r1, [r0, r2]
|
|
cmp r1, 0
|
|
bge _0806E360
|
|
adds r1, 0x3
|
|
_0806E360:
|
|
asrs r1, 2
|
|
ldr r3, [sp, 0x24]
|
|
movs r2, 0xE
|
|
ldrsh r0, [r3, r2]
|
|
cmp r1, r0
|
|
blt _0806E36E
|
|
movs r4, 0x1
|
|
_0806E36E:
|
|
ldr r0, [sp, 0x24]
|
|
movs r1, 0x2
|
|
adds r2, r4, 0
|
|
bl SetVisualFlags
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r4, 0
|
|
beq _0806E396
|
|
ldr r0, _0806E4E8
|
|
ldr r0, [r0]
|
|
ldr r3, _0806E50C
|
|
adds r1, r0, r3
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r2, _0806E504
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
_0806E396:
|
|
cmp r5, 0
|
|
beq _0806E3AC
|
|
mov r0, r8
|
|
bl sub_80428D8
|
|
ldr r0, _0806E510
|
|
ldr r2, [r0]
|
|
mov r0, r8
|
|
ldr r1, [sp, 0x18]
|
|
bl sub_80522F4
|
|
_0806E3AC:
|
|
cmp r7, 0xC
|
|
bne _0806E41A
|
|
mov r0, r8
|
|
movs r1, 0x43
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E41A
|
|
movs r4, 0
|
|
ldr r0, [sp, 0x24]
|
|
movs r2, 0x10
|
|
ldrsh r1, [r0, r2]
|
|
cmp r1, 0
|
|
bge _0806E3CC
|
|
adds r1, 0x3
|
|
_0806E3CC:
|
|
asrs r1, 2
|
|
ldr r3, [sp, 0x24]
|
|
movs r2, 0xE
|
|
ldrsh r0, [r3, r2]
|
|
cmp r1, r0
|
|
blt _0806E3DA
|
|
movs r4, 0x1
|
|
_0806E3DA:
|
|
ldr r0, [sp, 0x24]
|
|
movs r1, 0x10
|
|
adds r2, r4, 0
|
|
bl SetVisualFlags
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r4, 0
|
|
beq _0806E404
|
|
ldr r0, _0806E4E8
|
|
ldr r0, [r0]
|
|
movs r3, 0xB9
|
|
lsls r3, 1
|
|
adds r1, r0, r3
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r2, _0806E504
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
_0806E404:
|
|
cmp r5, 0
|
|
beq _0806E41A
|
|
mov r0, r8
|
|
bl sub_8042978
|
|
ldr r0, _0806E514
|
|
ldr r2, [r0]
|
|
mov r0, r8
|
|
ldr r1, [sp, 0x18]
|
|
bl sub_80522F4
|
|
_0806E41A:
|
|
cmp r7, 0x2
|
|
bne _0806E486
|
|
mov r0, r8
|
|
movs r1, 0x46
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E486
|
|
movs r4, 0
|
|
ldr r0, [sp, 0x24]
|
|
movs r2, 0x10
|
|
ldrsh r1, [r0, r2]
|
|
cmp r1, 0
|
|
bge _0806E43A
|
|
adds r1, 0x3
|
|
_0806E43A:
|
|
asrs r1, 2
|
|
ldr r3, [sp, 0x24]
|
|
movs r2, 0xE
|
|
ldrsh r0, [r3, r2]
|
|
cmp r1, r0
|
|
blt _0806E448
|
|
movs r4, 0x1
|
|
_0806E448:
|
|
ldr r0, [sp, 0x24]
|
|
movs r1, 0x20
|
|
adds r2, r4, 0
|
|
bl SetVisualFlags
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
cmp r4, 0
|
|
beq _0806E470
|
|
ldr r0, _0806E4E8
|
|
ldr r0, [r0]
|
|
ldr r3, _0806E518
|
|
adds r1, r0, r3
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r2, _0806E504
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
_0806E470:
|
|
cmp r5, 0
|
|
beq _0806E486
|
|
mov r0, r8
|
|
bl sub_804298C
|
|
ldr r0, _0806E51C
|
|
ldr r2, [r0]
|
|
mov r0, r8
|
|
ldr r1, [sp, 0x18]
|
|
bl sub_80522F4
|
|
_0806E486:
|
|
adds r0, r6, 0
|
|
bl sub_800A2A0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806E4B8
|
|
mov r0, r8
|
|
adds r1, r7, 0
|
|
bl HasType
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E4B8
|
|
ldr r0, _0806E4E8
|
|
ldr r0, [r0]
|
|
movs r4, 0xBA
|
|
lsls r4, 1
|
|
adds r0, r4
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
ldr r2, _0806E520
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
_0806E4B8:
|
|
mov r0, r8
|
|
bl GetWeather
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0x1
|
|
bne _0806E53E
|
|
cmp r7, 0x2
|
|
bne _0806E524
|
|
ldr r0, _0806E4E8
|
|
ldr r0, [r0]
|
|
movs r1, 0xB6
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
strb r4, [r0]
|
|
ldr r2, _0806E520
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
b _0806E53E
|
|
.align 2, 0
|
|
_0806E4E4: .4byte gTypeEffectivenessChart
|
|
_0806E4E8: .4byte gDungeonGlobalData
|
|
_0806E4EC: .4byte gUnknown_8106F54
|
|
_0806E4F0: .4byte gUnknown_80F54B4
|
|
_0806E4F4: .4byte gUnknown_8106EFC
|
|
_0806E4F8: .4byte 0x0000016d
|
|
_0806E4FC: .4byte gUnknown_8106F1C
|
|
_0806E500: .4byte 0x0000016f
|
|
_0806E504: .4byte gUnknown_8106F0C
|
|
_0806E508: .4byte gUnknown_80FEDA8
|
|
_0806E50C: .4byte 0x00000171
|
|
_0806E510: .4byte gUnknown_80FED88
|
|
_0806E514: .4byte gUnknown_80FEDC8
|
|
_0806E518: .4byte 0x00000173
|
|
_0806E51C: .4byte gUnknown_80FEDE8
|
|
_0806E520: .4byte gUnknown_8106F14
|
|
_0806E524:
|
|
cmp r7, 0x3
|
|
bne _0806E53E
|
|
ldr r0, _0806E560
|
|
ldr r0, [r0]
|
|
movs r2, 0xB6
|
|
lsls r2, 1
|
|
adds r0, r2
|
|
strb r4, [r0]
|
|
ldr r2, _0806E564
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
_0806E53E:
|
|
cmp r4, 0x4
|
|
bne _0806E586
|
|
cmp r7, 0x2
|
|
bne _0806E56C
|
|
ldr r0, _0806E560
|
|
ldr r0, [r0]
|
|
ldr r3, _0806E568
|
|
adds r1, r0, r3
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r2, _0806E564
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
b _0806E586
|
|
.align 2, 0
|
|
_0806E560: .4byte gDungeonGlobalData
|
|
_0806E564: .4byte gUnknown_8106F1C
|
|
_0806E568: .4byte 0x0000016b
|
|
_0806E56C:
|
|
cmp r7, 0x3
|
|
bne _0806E586
|
|
ldr r0, _0806E62C
|
|
ldr r0, [r0]
|
|
ldr r2, _0806E630
|
|
adds r1, r0, r2
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r2, _0806E634
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
_0806E586:
|
|
cmp r4, 0x3
|
|
bne _0806E5A6
|
|
cmp r7, 0x1
|
|
beq _0806E5A6
|
|
ldr r2, _0806E638
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
ldr r0, _0806E62C
|
|
ldr r0, [r0]
|
|
movs r3, 0xB5
|
|
lsls r3, 1
|
|
adds r1, r0, r3
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_0806E5A6:
|
|
ldr r0, _0806E62C
|
|
ldr r1, [r0]
|
|
ldr r2, _0806E63C
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0806E5B8
|
|
cmp r4, 0x6
|
|
bne _0806E5CE
|
|
_0806E5B8:
|
|
cmp r7, 0x5
|
|
bne _0806E5CE
|
|
ldr r3, _0806E640
|
|
adds r1, r3
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r2, _0806E644
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
_0806E5CE:
|
|
ldr r0, _0806E62C
|
|
ldr r1, [r0]
|
|
ldr r4, _0806E648
|
|
adds r0, r1, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0806E5F4
|
|
cmp r7, 0x2
|
|
bne _0806E5F4
|
|
movs r0, 0xBB
|
|
lsls r0, 1
|
|
adds r1, r0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r2, _0806E644
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
_0806E5F4:
|
|
cmp r7, 0x5
|
|
bne _0806E618
|
|
ldr r0, [sp, 0x24]
|
|
adds r0, 0xC0
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xB
|
|
bne _0806E618
|
|
ldr r0, _0806E62C
|
|
ldr r0, [r0]
|
|
ldr r2, _0806E64C
|
|
adds r1, r0, r2
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r2, _0806E650
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A34C
|
|
_0806E618:
|
|
mov r0, r9
|
|
_0806E61A:
|
|
add sp, 0x28
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0806E62C: .4byte gDungeonGlobalData
|
|
_0806E630: .4byte 0x0000016b
|
|
_0806E634: .4byte gUnknown_8106F14
|
|
_0806E638: .4byte gUnknown_8106F64
|
|
_0806E63C: .4byte 0x0000e277
|
|
_0806E640: .4byte 0x00000175
|
|
_0806E644: .4byte gUnknown_8106F1C
|
|
_0806E648: .4byte 0x0000e278
|
|
_0806E64C: .4byte 0x00000177
|
|
_0806E650: .4byte gUnknown_8106F0C
|
|
thumb_func_end sub_806E100
|
|
|
|
thumb_func_start WeightWeakTypePicker
|
|
WeightWeakTypePicker:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x1C
|
|
mov r9, r0
|
|
str r1, [sp, 0x14]
|
|
lsls r2, 24
|
|
lsrs r4, r2, 24
|
|
movs r5, 0x1
|
|
movs r0, 0
|
|
str r0, [sp, 0x10]
|
|
adds r0, r1, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E6DC
|
|
cmp r4, 0x1
|
|
beq _0806E682
|
|
cmp r4, 0x7
|
|
bne _0806E686
|
|
_0806E682:
|
|
movs r1, 0x1
|
|
str r1, [sp, 0x10]
|
|
_0806E686:
|
|
mov r2, r9
|
|
ldr r2, [r2, 0x70]
|
|
mov r8, r2
|
|
ldr r3, [sp, 0x14]
|
|
ldr r3, [r3, 0x70]
|
|
mov r10, r3
|
|
cmp r4, 0x2
|
|
bne _0806E6A2
|
|
ldr r0, [sp, 0x14]
|
|
bl GetFlashFireStatus
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806E6C6
|
|
_0806E6A2:
|
|
cmp r4, 0x5
|
|
bne _0806E6B4
|
|
ldr r0, [sp, 0x14]
|
|
movs r1, 0x23
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806E6C6
|
|
_0806E6B4:
|
|
cmp r4, 0x3
|
|
bne _0806E6CA
|
|
ldr r0, [sp, 0x14]
|
|
movs r1, 0x24
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E6CA
|
|
_0806E6C6:
|
|
movs r0, 0
|
|
b _0806E894
|
|
_0806E6CA:
|
|
cmp r4, 0x9
|
|
bne _0806E6E0
|
|
ldr r0, [sp, 0x14]
|
|
movs r1, 0x37
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E6E0
|
|
_0806E6DC:
|
|
movs r0, 0x1
|
|
b _0806E894
|
|
_0806E6E0:
|
|
mov r6, r10
|
|
adds r6, 0x5C
|
|
str r6, [sp, 0x18]
|
|
lsls r0, r4, 3
|
|
adds r0, r4
|
|
lsls r0, 2
|
|
mov r12, r0
|
|
adds r2, r6, 0
|
|
_0806E6F0:
|
|
mov r0, sp
|
|
ldr r1, _0806E724
|
|
ldm r1!, {r3,r6,r7}
|
|
stm r0!, {r3,r6,r7}
|
|
ldr r1, [r1]
|
|
str r1, [r0]
|
|
ldr r7, [sp, 0x10]
|
|
cmp r7, 0
|
|
beq _0806E730
|
|
ldrb r0, [r2]
|
|
cmp r0, 0xE
|
|
bne _0806E730
|
|
mov r0, r10
|
|
adds r0, 0xF5
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0806E730
|
|
movs r3, 0
|
|
ldr r0, _0806E728
|
|
ldr r0, [r0]
|
|
ldr r6, _0806E72C
|
|
adds r1, r0, r6
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
b _0806E73E
|
|
.align 2, 0
|
|
_0806E724: .4byte gTypeEffectivenessMultipliers
|
|
_0806E728: .4byte gDungeonGlobalData
|
|
_0806E72C: .4byte 0x00000179
|
|
_0806E730:
|
|
ldrb r0, [r2]
|
|
lsls r0, 1
|
|
add r0, r12
|
|
ldr r7, _0806E854
|
|
adds r0, r7
|
|
movs r1, 0
|
|
ldrsh r3, [r0, r1]
|
|
_0806E73E:
|
|
cmp r5, 0
|
|
beq _0806E75E
|
|
lsls r0, r3, 2
|
|
add r0, sp
|
|
ldr r0, [r0]
|
|
muls r5, r0
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r5, r0, 1
|
|
cmp r5, 0
|
|
beq _0806E84E
|
|
adds r2, 0x1
|
|
ldr r0, [sp, 0x18]
|
|
adds r0, 0x1
|
|
cmp r2, r0
|
|
ble _0806E6F0
|
|
_0806E75E:
|
|
cmp r4, 0x2
|
|
beq _0806E766
|
|
cmp r4, 0x6
|
|
bne _0806E774
|
|
_0806E766:
|
|
ldr r0, [sp, 0x14]
|
|
movs r1, 0x2
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806E84E
|
|
_0806E774:
|
|
cmp r4, 0x3
|
|
bne _0806E7A0
|
|
mov r0, r9
|
|
movs r1, 0x10
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E7A0
|
|
mov r2, r8
|
|
movs r3, 0x10
|
|
ldrsh r1, [r2, r3]
|
|
cmp r1, 0
|
|
bge _0806E792
|
|
adds r1, 0x3
|
|
_0806E792:
|
|
asrs r1, 2
|
|
mov r6, r8
|
|
movs r7, 0xE
|
|
ldrsh r0, [r6, r7]
|
|
cmp r1, r0
|
|
blt _0806E7A0
|
|
lsls r5, 1
|
|
_0806E7A0:
|
|
cmp r4, 0x4
|
|
bne _0806E7CC
|
|
mov r0, r9
|
|
movs r1, 0x1A
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E7CC
|
|
mov r0, r8
|
|
movs r2, 0x10
|
|
ldrsh r1, [r0, r2]
|
|
cmp r1, 0
|
|
bge _0806E7BE
|
|
adds r1, 0x3
|
|
_0806E7BE:
|
|
asrs r1, 2
|
|
mov r3, r8
|
|
movs r6, 0xE
|
|
ldrsh r0, [r3, r6]
|
|
cmp r1, r0
|
|
blt _0806E7CC
|
|
lsls r5, 1
|
|
_0806E7CC:
|
|
cmp r4, 0xC
|
|
bne _0806E7F8
|
|
mov r0, r9
|
|
movs r1, 0x43
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E7F8
|
|
mov r7, r8
|
|
movs r0, 0x10
|
|
ldrsh r1, [r7, r0]
|
|
cmp r1, 0
|
|
bge _0806E7EA
|
|
adds r1, 0x3
|
|
_0806E7EA:
|
|
asrs r1, 2
|
|
mov r2, r8
|
|
movs r3, 0xE
|
|
ldrsh r0, [r2, r3]
|
|
cmp r1, r0
|
|
blt _0806E7F8
|
|
lsls r5, 1
|
|
_0806E7F8:
|
|
cmp r4, 0x2
|
|
bne _0806E824
|
|
mov r0, r9
|
|
movs r1, 0x46
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E824
|
|
mov r6, r8
|
|
movs r7, 0x10
|
|
ldrsh r1, [r6, r7]
|
|
cmp r1, 0
|
|
bge _0806E816
|
|
adds r1, 0x3
|
|
_0806E816:
|
|
asrs r1, 2
|
|
mov r2, r8
|
|
movs r3, 0xE
|
|
ldrsh r0, [r2, r3]
|
|
cmp r1, r0
|
|
blt _0806E824
|
|
lsls r5, 1
|
|
_0806E824:
|
|
cmp r5, 0
|
|
beq _0806E84E
|
|
mov r0, r9
|
|
adds r1, r4, 0
|
|
bl HasType
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E838
|
|
lsls r5, 1
|
|
_0806E838:
|
|
mov r0, r9
|
|
bl GetWeather
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bne _0806E85A
|
|
cmp r4, 0x2
|
|
beq _0806E858
|
|
cmp r4, 0x3
|
|
bne _0806E85A
|
|
_0806E84E:
|
|
movs r0, 0x2
|
|
b _0806E894
|
|
.align 2, 0
|
|
_0806E854: .4byte gTypeEffectivenessChart
|
|
_0806E858:
|
|
lsls r5, 1
|
|
_0806E85A:
|
|
ldr r0, _0806E8A4
|
|
ldr r1, [r0]
|
|
ldr r6, _0806E8A8
|
|
adds r1, r6
|
|
ldrb r1, [r1]
|
|
cmp r1, 0
|
|
beq _0806E86C
|
|
cmp r4, 0x5
|
|
beq _0806E84E
|
|
_0806E86C:
|
|
ldr r0, [r0]
|
|
ldr r7, _0806E8AC
|
|
adds r0, r7
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0806E87C
|
|
cmp r4, 0x2
|
|
beq _0806E84E
|
|
_0806E87C:
|
|
cmp r4, 0x5
|
|
bne _0806E88C
|
|
mov r0, r8
|
|
adds r0, 0xC0
|
|
ldrb r0, [r0]
|
|
cmp r0, 0xB
|
|
bne _0806E88C
|
|
lsls r5, 1
|
|
_0806E88C:
|
|
cmp r5, 0x2
|
|
ble _0806E892
|
|
movs r5, 0x3
|
|
_0806E892:
|
|
adds r0, r5, 0x2
|
|
_0806E894:
|
|
add sp, 0x1C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0806E8A4: .4byte gDungeonGlobalData
|
|
_0806E8A8: .4byte 0x0000e277
|
|
_0806E8AC: .4byte 0x0000e278
|
|
thumb_func_end WeightWeakTypePicker
|
|
|
|
thumb_func_start sub_806E8B0
|
|
sub_806E8B0:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0xC
|
|
adds r6, r0, 0
|
|
mov r9, r1
|
|
adds r0, r2, 0
|
|
str r3, [sp]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
movs r7, 0x1
|
|
movs r1, 0x1
|
|
mov r8, r1
|
|
movs r2, 0x1
|
|
str r2, [sp, 0x4]
|
|
str r1, [sp, 0x8]
|
|
bl sub_8092354
|
|
movs r2, 0
|
|
mov r10, r2
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806E8E6
|
|
movs r0, 0x1
|
|
mov r10, r0
|
|
_0806E8E6:
|
|
adds r0, r6, 0
|
|
movs r1, 0x11
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E92C
|
|
ldr r5, [r6, 0x70]
|
|
adds r0, r6, 0
|
|
bl HasNegativeStatus
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
adds r2, r4, 0
|
|
bl SetVisualFlags
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r4, 0
|
|
beq _0806E916
|
|
movs r7, 0x2
|
|
_0806E916:
|
|
cmp r0, 0
|
|
beq _0806E92C
|
|
adds r0, r6, 0
|
|
bl sub_80428B0
|
|
ldr r0, _0806EADC
|
|
ldr r2, [r0]
|
|
adds r0, r6, 0
|
|
mov r1, r9
|
|
bl sub_80522F4
|
|
_0806E92C:
|
|
adds r0, r6, 0
|
|
movs r1, 0x22
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806E948
|
|
adds r0, r6, 0
|
|
movs r1, 0x4B
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E98E
|
|
_0806E948:
|
|
ldr r2, [r6, 0x70]
|
|
movs r4, 0
|
|
ldr r0, [sp, 0x30]
|
|
cmp r0, 0x20
|
|
bgt _0806E95A
|
|
mov r1, r10
|
|
cmp r1, 0
|
|
bne _0806E95A
|
|
movs r4, 0x1
|
|
_0806E95A:
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
adds r0, r2, 0
|
|
adds r2, r4, 0
|
|
bl SetVisualFlags
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r4, 0
|
|
beq _0806E978
|
|
lsls r0, r7, 1
|
|
adds r7, r0, r7
|
|
mov r2, r8
|
|
lsls r2, 1
|
|
mov r8, r2
|
|
_0806E978:
|
|
cmp r1, 0
|
|
beq _0806E98E
|
|
adds r0, r6, 0
|
|
bl sub_80428C4
|
|
ldr r0, _0806EAE0
|
|
ldr r2, [r0]
|
|
adds r0, r6, 0
|
|
mov r1, r9
|
|
bl sub_80522F4
|
|
_0806E98E:
|
|
adds r0, r6, 0
|
|
movs r1, 0x30
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E9AC
|
|
mov r0, r10
|
|
cmp r0, 0
|
|
bne _0806E9AC
|
|
lsls r0, r7, 1
|
|
adds r7, r0, r7
|
|
mov r1, r8
|
|
lsls r1, 1
|
|
mov r8, r1
|
|
_0806E9AC:
|
|
ldr r0, [r6, 0x70]
|
|
ldrb r0, [r0, 0x6]
|
|
movs r4, 0x1
|
|
cmp r0, 0
|
|
beq _0806E9B8
|
|
movs r4, 0
|
|
_0806E9B8:
|
|
adds r0, r6, 0
|
|
movs r1, 0x38
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806E9EA
|
|
mov r2, r10
|
|
cmp r2, 0x1
|
|
bne _0806E9EA
|
|
ldr r0, _0806EAE4
|
|
ldr r0, [r0]
|
|
ldr r1, _0806EAE8
|
|
adds r0, r1
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0806E9EA
|
|
lsls r0, r7, 4
|
|
subs r7, r0, r7
|
|
mov r2, r8
|
|
lsls r0, r2, 2
|
|
add r0, r8
|
|
lsls r0, 1
|
|
mov r8, r0
|
|
_0806E9EA:
|
|
adds r0, r6, 0
|
|
movs r1, 0x3F
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806EA1C
|
|
mov r0, r10
|
|
cmp r0, 0x1
|
|
bne _0806EA1C
|
|
ldr r0, _0806EAE4
|
|
ldr r0, [r0]
|
|
ldr r1, _0806EAEC
|
|
adds r0, r1
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0806EA1C
|
|
lsls r0, r7, 4
|
|
subs r7, r0, r7
|
|
mov r2, r8
|
|
lsls r0, r2, 2
|
|
add r0, r8
|
|
lsls r0, 1
|
|
mov r8, r0
|
|
_0806EA1C:
|
|
mov r0, r9
|
|
movs r1, 0x6
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806EA38
|
|
mov r0, r10
|
|
cmp r0, 0
|
|
bne _0806EA38
|
|
lsls r7, 2
|
|
mov r1, r8
|
|
lsls r0, r1, 2
|
|
add r8, r0
|
|
_0806EA38:
|
|
mov r0, r9
|
|
movs r1, 0x34
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806EA90
|
|
mov r2, r10
|
|
cmp r2, 0
|
|
bne _0806EA90
|
|
mov r0, r9
|
|
ldr r5, [r0, 0x70]
|
|
bl HasNegativeStatus
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r5, 0
|
|
movs r1, 0x8
|
|
adds r2, r4, 0
|
|
bl SetVisualFlags
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
cmp r4, 0
|
|
beq _0806EA7A
|
|
ldr r2, [sp, 0x4]
|
|
lsls r0, r2, 1
|
|
adds r2, r0, r2
|
|
str r2, [sp, 0x4]
|
|
ldr r0, [sp, 0x8]
|
|
lsls r0, 1
|
|
str r0, [sp, 0x8]
|
|
_0806EA7A:
|
|
cmp r1, 0
|
|
beq _0806EA90
|
|
mov r0, r9
|
|
bl sub_8042940
|
|
ldr r0, _0806EAF0
|
|
ldr r2, [r0]
|
|
adds r0, r6, 0
|
|
mov r1, r9
|
|
bl sub_80522F4
|
|
_0806EA90:
|
|
ldr r1, [sp]
|
|
ldr r0, [r1]
|
|
muls r0, r7
|
|
str r0, [r1]
|
|
ldr r2, [sp, 0x2C]
|
|
ldr r0, [r2]
|
|
ldr r1, [sp, 0x4]
|
|
muls r0, r1
|
|
str r0, [r2]
|
|
mov r2, r8
|
|
cmp r2, 0x1
|
|
beq _0806EAB6
|
|
ldr r1, [sp]
|
|
ldr r0, [r1]
|
|
mov r1, r8
|
|
bl __divsi3
|
|
ldr r2, [sp]
|
|
str r0, [r2]
|
|
_0806EAB6:
|
|
ldr r0, [sp, 0x8]
|
|
cmp r0, 0x1
|
|
beq _0806EACA
|
|
ldr r1, [sp, 0x2C]
|
|
ldr r0, [r1]
|
|
ldr r1, [sp, 0x8]
|
|
bl __divsi3
|
|
ldr r2, [sp, 0x2C]
|
|
str r0, [r2]
|
|
_0806EACA:
|
|
add sp, 0xC
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0806EADC: .4byte gUnknown_80FEE04
|
|
_0806EAE0: .4byte gUnknown_80FEE2C
|
|
_0806EAE4: .4byte gDungeonGlobalData
|
|
_0806EAE8: .4byte 0x000037fa
|
|
_0806EAEC: .4byte 0x000037f8
|
|
_0806EAF0: .4byte gUnknown_80FEE54
|
|
thumb_func_end sub_806E8B0
|
|
|
|
thumb_func_start sub_806EAF4
|
|
sub_806EAF4:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8C
|
|
str r0, [sp, 0x70]
|
|
mov r9, r1
|
|
adds r7, r3, 0
|
|
ldr r0, [sp, 0xB8]
|
|
ldr r1, [sp, 0xBC]
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
str r2, [sp, 0x74]
|
|
lsls r0, 16
|
|
lsrs r4, r0, 16
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
str r1, [sp, 0x78]
|
|
ldr r0, [sp, 0x70]
|
|
ldr r0, [r0, 0x70]
|
|
mov r10, r0
|
|
mov r1, r9
|
|
ldr r1, [r1, 0x70]
|
|
str r1, [sp, 0x7C]
|
|
adds r0, r2, 0
|
|
bl sub_8092354
|
|
movs r2, 0
|
|
str r2, [sp, 0x80]
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806EB3A
|
|
movs r3, 0x1
|
|
str r3, [sp, 0x80]
|
|
_0806EB3A:
|
|
bl sub_806F500
|
|
mov r6, r10
|
|
ldrb r0, [r6, 0x7]
|
|
cmp r0, 0
|
|
bne _0806EB72
|
|
movs r0, 0x9E
|
|
lsls r0, 1
|
|
add r0, r10
|
|
ldr r0, [r0]
|
|
bl RoundUpFixedPoint
|
|
adds r1, r0, 0
|
|
cmp r1, 0
|
|
bne _0806EB72
|
|
movs r0, 0x1
|
|
ldr r2, [sp, 0xB0]
|
|
str r0, [r2]
|
|
str r1, [r2, 0x4]
|
|
movs r0, 0x2
|
|
str r0, [r2, 0x8]
|
|
add r3, sp, 0x74
|
|
ldrb r3, [r3]
|
|
strb r3, [r2, 0xC]
|
|
strb r1, [r2, 0xD]
|
|
strb r1, [r2, 0xE]
|
|
strb r1, [r2, 0xF]
|
|
b _0806F294
|
|
_0806EB72:
|
|
ldr r0, _0806EBA4
|
|
cmp r4, r0
|
|
bne _0806EBA8
|
|
mov r0, r9
|
|
movs r1, 0x35
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806EBA8
|
|
movs r0, 0x1
|
|
ldr r6, [sp, 0xB0]
|
|
str r0, [r6]
|
|
movs r1, 0
|
|
str r1, [r6, 0x4]
|
|
movs r0, 0x2
|
|
str r0, [r6, 0x8]
|
|
add r0, sp, 0x74
|
|
ldrb r0, [r0]
|
|
strb r0, [r6, 0xC]
|
|
strb r1, [r6, 0xD]
|
|
strb r1, [r6, 0xE]
|
|
strb r1, [r6, 0xF]
|
|
b _0806F294
|
|
.align 2, 0
|
|
_0806EBA4: .4byte 0x00000163
|
|
_0806EBA8:
|
|
add r1, sp, 0x74
|
|
ldrb r2, [r1]
|
|
ldr r1, [sp, 0xB0]
|
|
strb r2, [r1, 0xC]
|
|
ldr r1, _0806EDA4
|
|
ldr r0, [r1]
|
|
movs r2, 0x9A
|
|
lsls r2, 1
|
|
adds r0, r2
|
|
add r3, sp, 0x74
|
|
ldrb r3, [r3]
|
|
strb r3, [r0]
|
|
ldr r2, [r1]
|
|
movs r6, 0x9C
|
|
lsls r6, 1
|
|
adds r0, r2, r6
|
|
ldr r1, [sp, 0x80]
|
|
str r1, [r0]
|
|
lsls r1, 1
|
|
mov r0, r10
|
|
adds r0, 0x1C
|
|
adds r0, r1
|
|
movs r3, 0
|
|
ldrsh r4, [r0, r3]
|
|
mov r8, r1
|
|
ldr r6, [sp, 0x78]
|
|
cmp r6, 0
|
|
beq _0806EBF8
|
|
ldr r0, [sp, 0x74]
|
|
cmp r0, 0x2
|
|
bne _0806EBF8
|
|
mov r1, r10
|
|
movs r3, 0x28
|
|
ldrsh r0, [r1, r3]
|
|
adds r4, r0
|
|
ldrh r1, [r1, 0x28]
|
|
movs r6, 0xA2
|
|
lsls r6, 1
|
|
adds r0, r2, r6
|
|
strh r1, [r0]
|
|
_0806EBF8:
|
|
mov r0, r10
|
|
movs r2, 0x4
|
|
ldrsh r1, [r0, r2]
|
|
ldr r0, _0806EDA8
|
|
cmp r1, r0
|
|
bne _0806EC06
|
|
adds r4, 0x2
|
|
_0806EC06:
|
|
movs r0, 0xD1
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
bne _0806EC10
|
|
subs r4, 0x2
|
|
_0806EC10:
|
|
ldr r0, _0806EDAC
|
|
cmp r1, r0
|
|
bne _0806EC18
|
|
subs r4, 0x2
|
|
_0806EC18:
|
|
cmp r4, 0
|
|
bge _0806EC1E
|
|
movs r4, 0
|
|
_0806EC1E:
|
|
cmp r4, 0x14
|
|
ble _0806EC24
|
|
movs r4, 0x14
|
|
_0806EC24:
|
|
ldr r6, _0806EDA4
|
|
ldr r0, [r6]
|
|
movs r3, 0x9F
|
|
lsls r3, 1
|
|
adds r0, r3
|
|
strb r4, [r0]
|
|
ldr r1, [r6]
|
|
mov r5, r10
|
|
adds r5, 0x14
|
|
ldr r0, [sp, 0x80]
|
|
adds r2, r5, r0
|
|
ldrb r0, [r2]
|
|
adds r0, r7
|
|
adds r3, 0x2
|
|
adds r1, r3
|
|
strh r0, [r1]
|
|
ldrb r0, [r2]
|
|
adds r0, r7
|
|
lsls r0, 8
|
|
ldr r2, _0806EDB0
|
|
lsls r1, r4, 2
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
bl sub_8009DA4
|
|
adds r2, r0, 0
|
|
ldr r0, [sp, 0x80]
|
|
lsls r4, r0, 2
|
|
mov r0, r10
|
|
adds r0, 0x2C
|
|
adds r0, r4
|
|
ldr r1, [r0]
|
|
adds r0, r2, 0
|
|
bl sub_8009DA4
|
|
adds r2, r0, 0
|
|
str r5, [sp, 0x88]
|
|
cmp r2, 0
|
|
bge _0806EC74
|
|
adds r0, 0xFF
|
|
_0806EC74:
|
|
asrs r0, 8
|
|
str r0, [sp, 0x8]
|
|
ldr r0, [sp, 0x7C]
|
|
adds r0, 0x20
|
|
add r0, r8
|
|
movs r1, 0
|
|
ldrsh r3, [r0, r1]
|
|
ldr r2, [sp, 0x80]
|
|
cmp r2, 0
|
|
bne _0806ECA0
|
|
ldr r0, [sp, 0x7C]
|
|
adds r0, 0xC0
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x6
|
|
bne _0806ECA0
|
|
ldr r0, [r6]
|
|
movs r6, 0xBD
|
|
lsls r6, 1
|
|
adds r1, r0, r6
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
adds r3, 0x1
|
|
_0806ECA0:
|
|
ldr r0, [sp, 0x7C]
|
|
movs r2, 0x4
|
|
ldrsh r1, [r0, r2]
|
|
ldr r0, _0806EDA8
|
|
cmp r1, r0
|
|
bne _0806ECAE
|
|
subs r3, 0x2
|
|
_0806ECAE:
|
|
movs r0, 0xD1
|
|
lsls r0, 1
|
|
cmp r1, r0
|
|
bne _0806ECB8
|
|
adds r3, 0x2
|
|
_0806ECB8:
|
|
ldr r0, _0806EDAC
|
|
cmp r1, r0
|
|
bne _0806ECC0
|
|
subs r3, 0x2
|
|
_0806ECC0:
|
|
cmp r3, 0
|
|
bge _0806ECC6
|
|
movs r3, 0
|
|
_0806ECC6:
|
|
cmp r3, 0x14
|
|
ble _0806ECCC
|
|
movs r3, 0x14
|
|
_0806ECCC:
|
|
ldr r5, _0806EDA4
|
|
ldr r0, [r5]
|
|
ldr r6, _0806EDB4
|
|
adds r0, r6
|
|
strb r3, [r0]
|
|
ldr r2, [r5]
|
|
ldr r0, [sp, 0x7C]
|
|
adds r0, 0x16
|
|
ldr r1, [sp, 0x80]
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
adds r6, 0x3
|
|
adds r2, r6
|
|
strh r1, [r2]
|
|
ldrb r0, [r0]
|
|
lsls r0, 8
|
|
ldr r2, _0806EDB8
|
|
lsls r1, r3, 2
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
bl sub_8009DA4
|
|
adds r2, r0, 0
|
|
ldr r0, [sp, 0x7C]
|
|
adds r0, 0x34
|
|
adds r0, r4
|
|
ldr r1, [r0]
|
|
adds r0, r2, 0
|
|
bl sub_8009DA4
|
|
cmp r0, 0
|
|
bge _0806ED0E
|
|
adds r0, 0xFF
|
|
_0806ED0E:
|
|
asrs r0, 8
|
|
str r0, [sp, 0xC]
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
str r0, [sp, 0x84]
|
|
ldr r0, [sp, 0x80]
|
|
cmp r0, 0
|
|
bne _0806EDC8
|
|
ldr r0, [sp, 0x70]
|
|
movs r1, 0x13
|
|
bl HasItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806ED4A
|
|
ldr r2, _0806EDBC
|
|
movs r3, 0
|
|
ldrsh r1, [r2, r3]
|
|
ldr r0, [sp, 0x8]
|
|
adds r0, r1
|
|
str r0, [sp, 0x8]
|
|
ldr r1, [r5]
|
|
movs r6, 0xB0
|
|
lsls r6, 1
|
|
adds r1, r6
|
|
ldrb r0, [r2]
|
|
ldrb r2, [r1]
|
|
adds r0, r2
|
|
strb r0, [r1]
|
|
_0806ED4A:
|
|
ldr r0, [sp, 0x70]
|
|
movs r1, 0x2B
|
|
bl HasItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806ED74
|
|
ldr r2, _0806EDC0
|
|
movs r3, 0
|
|
ldrsh r1, [r2, r3]
|
|
ldr r0, [sp, 0x8]
|
|
adds r0, r1
|
|
str r0, [sp, 0x8]
|
|
ldr r1, [r5]
|
|
movs r6, 0xB0
|
|
lsls r6, 1
|
|
adds r1, r6
|
|
ldrb r0, [r2]
|
|
ldrb r2, [r1]
|
|
adds r0, r2
|
|
strb r0, [r1]
|
|
_0806ED74:
|
|
ldr r3, [sp, 0x78]
|
|
cmp r3, 0
|
|
beq _0806EE4A
|
|
mov r0, r9
|
|
movs r1, 0x1E
|
|
bl HasItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806EE4A
|
|
ldr r2, _0806EDC4
|
|
movs r6, 0
|
|
ldrsh r1, [r2, r6]
|
|
ldr r0, [sp, 0xC]
|
|
adds r0, r1
|
|
str r0, [sp, 0xC]
|
|
ldr r0, [r5]
|
|
movs r3, 0xB1
|
|
lsls r3, 1
|
|
adds r1, r0, r3
|
|
ldrb r0, [r2]
|
|
ldrb r6, [r1]
|
|
adds r0, r6
|
|
b _0806EE48
|
|
.align 2, 0
|
|
_0806EDA4: .4byte gDungeonGlobalData
|
|
_0806EDA8: .4byte 0x000001a1
|
|
_0806EDAC: .4byte 0x000001a3
|
|
_0806EDB0: .4byte gUnknown_80F504C
|
|
_0806EDB4: .4byte 0x0000013f
|
|
_0806EDB8: .4byte gUnknown_80F50A0
|
|
_0806EDBC: .4byte gUnknown_810AC60
|
|
_0806EDC0: .4byte gUnknown_810AC68
|
|
_0806EDC4: .4byte gUnknown_810AC64
|
|
_0806EDC8:
|
|
ldr r0, [sp, 0x78]
|
|
cmp r0, 0
|
|
beq _0806EDF6
|
|
mov r0, r9
|
|
movs r1, 0x22
|
|
bl HasItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806EDF6
|
|
ldr r2, _0806EEF8
|
|
movs r3, 0
|
|
ldrsh r1, [r2, r3]
|
|
ldr r0, [sp, 0xC]
|
|
adds r0, r1
|
|
str r0, [sp, 0xC]
|
|
ldr r0, [r5]
|
|
ldr r6, _0806EEFC
|
|
adds r1, r0, r6
|
|
ldrb r0, [r2]
|
|
ldrb r2, [r1]
|
|
adds r0, r2
|
|
strb r0, [r1]
|
|
_0806EDF6:
|
|
ldr r0, [sp, 0x70]
|
|
movs r1, 0x21
|
|
bl HasItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806EE20
|
|
ldr r2, _0806EF00
|
|
movs r3, 0
|
|
ldrsh r1, [r2, r3]
|
|
ldr r0, [sp, 0x8]
|
|
adds r0, r1
|
|
str r0, [sp, 0x8]
|
|
ldr r0, _0806EF04
|
|
ldr r0, [r0]
|
|
ldr r6, _0806EF08
|
|
adds r1, r0, r6
|
|
ldrb r0, [r2]
|
|
ldrb r2, [r1]
|
|
adds r0, r2
|
|
strb r0, [r1]
|
|
_0806EE20:
|
|
ldr r0, [sp, 0x70]
|
|
movs r1, 0x2B
|
|
bl HasItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806EE4A
|
|
ldr r2, _0806EF0C
|
|
movs r3, 0
|
|
ldrsh r1, [r2, r3]
|
|
ldr r0, [sp, 0x8]
|
|
adds r0, r1
|
|
str r0, [sp, 0x8]
|
|
ldr r0, _0806EF04
|
|
ldr r0, [r0]
|
|
ldr r6, _0806EF08
|
|
adds r1, r0, r6
|
|
ldrb r0, [r2]
|
|
ldrb r2, [r1]
|
|
adds r0, r2
|
|
_0806EE48:
|
|
strb r0, [r1]
|
|
_0806EE4A:
|
|
ldr r0, _0806EF04
|
|
ldr r2, [r0]
|
|
movs r3, 0xA3
|
|
lsls r3, 1
|
|
adds r1, r2, r3
|
|
add r0, sp, 0x8
|
|
ldrh r0, [r0]
|
|
strh r0, [r1]
|
|
movs r6, 0xA4
|
|
lsls r6, 1
|
|
adds r1, r2, r6
|
|
add r4, sp, 0xC
|
|
ldrh r0, [r4]
|
|
strh r0, [r1]
|
|
ldr r0, [sp, 0x8]
|
|
cmp r0, 0
|
|
bge _0806EE70
|
|
movs r0, 0
|
|
str r0, [sp, 0x8]
|
|
_0806EE70:
|
|
ldr r1, _0806EF10
|
|
ldr r0, [sp, 0x8]
|
|
cmp r0, r1
|
|
ble _0806EE7C
|
|
ldr r0, _0806EF14
|
|
str r0, [sp, 0x8]
|
|
_0806EE7C:
|
|
movs r3, 0xA8
|
|
lsls r3, 1
|
|
add r3, r10
|
|
ldrh r2, [r3]
|
|
ldr r1, _0806EF18
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
strh r0, [r3]
|
|
movs r2, 0xA7
|
|
lsls r2, 1
|
|
add r2, r10
|
|
ldrh r0, [r2]
|
|
ands r1, r0
|
|
strh r1, [r2]
|
|
str r4, [sp]
|
|
ldr r0, [sp, 0x84]
|
|
str r0, [sp, 0x4]
|
|
ldr r0, [sp, 0x70]
|
|
mov r1, r9
|
|
ldr r2, [sp, 0x74]
|
|
add r3, sp, 0x8
|
|
bl sub_806E8B0
|
|
add r5, sp, 0x10
|
|
ldr r1, [sp, 0x8]
|
|
ldr r0, [sp, 0xC]
|
|
subs r1, r0
|
|
adds r0, r5, 0
|
|
bl sub_800A020
|
|
add r4, sp, 0x18
|
|
adds r0, r4, 0
|
|
movs r1, 0x8
|
|
bl sub_800A020
|
|
adds r0, r5, 0
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
bl sub_800A3F0
|
|
mov r1, r10
|
|
ldrb r6, [r1, 0x6]
|
|
mov r8, r5
|
|
adds r7, r4, 0
|
|
cmp r6, 0
|
|
bne _0806EF20
|
|
ldrb r1, [r1, 0x9]
|
|
adds r0, r7, 0
|
|
bl sub_800A020
|
|
str r6, [sp, 0x20]
|
|
ldr r0, _0806EF1C
|
|
add r2, sp, 0x20
|
|
str r0, [r2, 0x4]
|
|
adds r0, r7, 0
|
|
adds r1, r7, 0
|
|
bl sub_800A34C
|
|
mov r2, r10
|
|
ldrb r0, [r2, 0x9]
|
|
lsls r0, 1
|
|
b _0806EF60
|
|
.align 2, 0
|
|
_0806EEF8: .4byte gUnknown_810AC66
|
|
_0806EEFC: .4byte 0x00000163
|
|
_0806EF00: .4byte gUnknown_810AC62
|
|
_0806EF04: .4byte gDungeonGlobalData
|
|
_0806EF08: .4byte 0x00000161
|
|
_0806EF0C: .4byte gUnknown_810AC68
|
|
_0806EF10: .4byte 0x000003e6
|
|
_0806EF14: .4byte 0x000003e7
|
|
_0806EF18: .4byte 0x0000feff
|
|
_0806EF1C: .4byte 0x0000aaaa
|
|
_0806EF20:
|
|
ldr r3, [sp, 0x88]
|
|
ldr r6, [sp, 0x80]
|
|
adds r0, r3, r6
|
|
ldrb r0, [r0]
|
|
str r0, [sp, 0x28]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x2C]
|
|
add r3, sp, 0x28
|
|
add r0, sp, 0x2C
|
|
str r0, [sp]
|
|
ldr r0, [sp, 0x84]
|
|
str r0, [sp, 0x4]
|
|
ldr r0, [sp, 0x70]
|
|
mov r1, r9
|
|
ldr r2, [sp, 0x74]
|
|
bl sub_806E8B0
|
|
ldr r1, [sp, 0x28]
|
|
adds r0, r7, 0
|
|
bl sub_800A020
|
|
add r4, sp, 0x20
|
|
adds r0, r4, 0
|
|
movs r1, 0x3
|
|
bl sub_800A020
|
|
adds r0, r7, 0
|
|
adds r1, r7, 0
|
|
adds r2, r4, 0
|
|
bl sub_800A3F0
|
|
ldr r0, [sp, 0x28]
|
|
_0806EF60:
|
|
movs r1, 0x3
|
|
bl __divsi3
|
|
adds r6, r0, 0
|
|
add r5, sp, 0x30
|
|
adds r0, r5, 0
|
|
mov r1, r8
|
|
adds r2, r7, 0
|
|
bl sub_800A6D0
|
|
ldr r4, _0806F098
|
|
ldr r0, [r4]
|
|
movs r1, 0xA5
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
movs r2, 0
|
|
mov r8, r2
|
|
strh r6, [r0]
|
|
adds r0, r5, 0
|
|
bl sub_800A048
|
|
ldr r1, [r4]
|
|
movs r3, 0xA6
|
|
lsls r3, 1
|
|
adds r1, r3
|
|
strh r0, [r1]
|
|
ldr r0, [sp, 0x30]
|
|
ldr r1, [sp, 0x34]
|
|
str r0, [sp, 0x38]
|
|
str r1, [sp, 0x3C]
|
|
str r0, [sp, 0x48]
|
|
str r1, [sp, 0x4C]
|
|
add r6, sp, 0x38
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
adds r2, r6, 0
|
|
bl sub_800A34C
|
|
mov r0, r8
|
|
str r0, [sp, 0x40]
|
|
ldr r0, _0806F09C
|
|
add r5, sp, 0x40
|
|
str r0, [r5, 0x4]
|
|
adds r0, r6, 0
|
|
adds r1, r6, 0
|
|
adds r2, r5, 0
|
|
bl sub_800A34C
|
|
adds r0, r5, 0
|
|
movs r1, 0x2
|
|
bl sub_800A020
|
|
add r4, sp, 0x48
|
|
adds r0, r4, 0
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_800A34C
|
|
ldr r1, [sp, 0xC]
|
|
adds r0, r5, 0
|
|
bl sub_800A020
|
|
adds r0, r4, 0
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_800A6F0
|
|
adds r0, r5, 0
|
|
movs r1, 0xA
|
|
bl sub_800A020
|
|
adds r0, r4, 0
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_800A6D0
|
|
add r5, sp, 0x50
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
adds r2, r4, 0
|
|
bl sub_800A6D0
|
|
ldr r4, _0806F0A0
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_800A2F0
|
|
lsls r0, 24
|
|
mov r8, r5
|
|
cmp r0, 0
|
|
beq _0806F01E
|
|
ldr r0, [r4]
|
|
ldr r1, [r4, 0x4]
|
|
str r0, [sp, 0x50]
|
|
str r1, [sp, 0x54]
|
|
_0806F01E:
|
|
ldr r4, _0806F0A4
|
|
mov r0, r8
|
|
adds r1, r4, 0
|
|
bl sub_800A2F0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806F036
|
|
ldr r0, [r4]
|
|
ldr r1, [r4, 0x4]
|
|
str r0, [sp, 0x50]
|
|
str r1, [sp, 0x54]
|
|
_0806F036:
|
|
add r4, sp, 0x58
|
|
ldr r1, [sp, 0xB0]
|
|
str r1, [sp]
|
|
adds r0, r4, 0
|
|
ldr r1, [sp, 0x70]
|
|
mov r2, r9
|
|
ldr r3, [sp, 0x74]
|
|
bl sub_806E100
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r7, r4, 0
|
|
ldr r2, [sp, 0x74]
|
|
cmp r2, 0x2
|
|
bne _0806F0BC
|
|
mov r0, r9
|
|
bl GetFlashFireStatus
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
cmp r4, 0
|
|
beq _0806F0BC
|
|
ldr r3, [sp, 0x7C]
|
|
movs r6, 0xA9
|
|
lsls r6, 1
|
|
adds r1, r3, r6
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
bne _0806F0BC
|
|
ldr r0, [sp, 0x78]
|
|
cmp r0, 0
|
|
beq _0806F118
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r0, _0806F0A8
|
|
mov r1, r9
|
|
movs r2, 0
|
|
bl SetMessageArgument
|
|
cmp r4, 0x1
|
|
bne _0806F0B0
|
|
ldr r0, _0806F0AC
|
|
ldr r2, [r0]
|
|
ldr r0, [sp, 0x70]
|
|
mov r1, r9
|
|
bl sub_80522F4
|
|
b _0806F0BC
|
|
.align 2, 0
|
|
_0806F098: .4byte gDungeonGlobalData
|
|
_0806F09C: .4byte 0x00000ccc
|
|
_0806F0A0: .4byte gUnknown_8106F24
|
|
_0806F0A4: .4byte gUnknown_8106F04
|
|
_0806F0A8: .4byte gUnknown_202DFE8
|
|
_0806F0AC: .4byte gUnknown_80FAE00
|
|
_0806F0B0:
|
|
ldr r0, _0806F15C
|
|
ldr r2, [r0]
|
|
ldr r0, [sp, 0x70]
|
|
mov r1, r9
|
|
bl sub_80522F4
|
|
_0806F0BC:
|
|
ldr r1, [sp, 0x78]
|
|
cmp r1, 0
|
|
beq _0806F118
|
|
ldr r2, [sp, 0x80]
|
|
cmp r2, 0
|
|
bne _0806F0EE
|
|
ldr r0, [sp, 0x7C]
|
|
adds r0, 0xC4
|
|
ldrb r4, [r0]
|
|
cmp r4, 0x1
|
|
bne _0806F0EE
|
|
mov r0, r9
|
|
bl sub_8041B74
|
|
ldr r2, _0806F160
|
|
adds r0, r7, 0
|
|
adds r1, r7, 0
|
|
bl sub_800A34C
|
|
ldr r0, _0806F164
|
|
ldr r0, [r0]
|
|
movs r3, 0xB3
|
|
lsls r3, 1
|
|
adds r0, r3
|
|
strb r4, [r0]
|
|
_0806F0EE:
|
|
ldr r6, [sp, 0x80]
|
|
cmp r6, 0x1
|
|
bne _0806F118
|
|
ldr r0, [sp, 0x7C]
|
|
adds r0, 0xC4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x3
|
|
bne _0806F118
|
|
mov r0, r9
|
|
bl sub_8041B5C
|
|
ldr r2, _0806F160
|
|
adds r0, r7, 0
|
|
adds r1, r7, 0
|
|
bl sub_800A34C
|
|
ldr r0, _0806F164
|
|
ldr r0, [r0]
|
|
ldr r1, _0806F168
|
|
adds r0, r1
|
|
strb r6, [r0]
|
|
_0806F118:
|
|
mov r0, r9
|
|
movs r1, 0xC
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806F1F4
|
|
mov r0, r9
|
|
movs r1, 0x13
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806F1F4
|
|
mov r3, r10
|
|
ldrb r0, [r3, 0x6]
|
|
ldr r4, [sp, 0xAC]
|
|
cmp r0, 0
|
|
beq _0806F140
|
|
movs r4, 0
|
|
_0806F140:
|
|
mov r0, r10
|
|
adds r0, 0xDC
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x4
|
|
bne _0806F170
|
|
ldr r4, _0806F16C
|
|
ldr r0, _0806F164
|
|
ldr r0, [r0]
|
|
movs r6, 0xB4
|
|
lsls r6, 1
|
|
adds r0, r6
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
b _0806F1DA
|
|
.align 2, 0
|
|
_0806F15C: .4byte gUnknown_80FADD8
|
|
_0806F160: .4byte gUnknown_8106F1C
|
|
_0806F164: .4byte gDungeonGlobalData
|
|
_0806F168: .4byte 0x00000167
|
|
_0806F16C: .4byte 0x000003e7
|
|
_0806F170:
|
|
ldr r0, [sp, 0x70]
|
|
movs r1, 0xC
|
|
bl HasItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806F194
|
|
ldr r0, _0806F2A4
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
adds r4, r0
|
|
ldr r0, _0806F2A8
|
|
ldr r0, [r0]
|
|
movs r2, 0xB2
|
|
lsls r2, 1
|
|
adds r0, r2
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
_0806F194:
|
|
mov r0, r9
|
|
movs r1, 0xD
|
|
bl HasItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806F1B6
|
|
ldr r0, _0806F2A4
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
adds r4, r0
|
|
ldr r0, _0806F2A8
|
|
ldr r0, [r0]
|
|
ldr r6, _0806F2AC
|
|
adds r1, r0, r6
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_0806F1B6:
|
|
cmp r5, 0
|
|
beq _0806F1DA
|
|
ldr r0, [sp, 0x70]
|
|
movs r1, 0x1
|
|
bl HasIQSkill
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806F1DA
|
|
ldr r0, _0806F2B0
|
|
movs r1, 0
|
|
ldrsh r4, [r0, r1]
|
|
ldr r0, _0806F2A8
|
|
ldr r0, [r0]
|
|
ldr r2, _0806F2B4
|
|
adds r1, r0, r2
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_0806F1DA:
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
cmp r0, r4
|
|
bge _0806F1F4
|
|
ldr r2, _0806F2B8
|
|
adds r0, r7, 0
|
|
adds r1, r7, 0
|
|
bl sub_800A34C
|
|
movs r0, 0x1
|
|
ldr r3, [sp, 0xB0]
|
|
strb r0, [r3, 0xD]
|
|
_0806F1F4:
|
|
mov r0, r8
|
|
bl sub_800A048
|
|
ldr r5, _0806F2A8
|
|
ldr r1, [r5]
|
|
movs r6, 0xAA
|
|
lsls r6, 1
|
|
adds r1, r6
|
|
str r0, [r1]
|
|
mov r0, r8
|
|
mov r1, r8
|
|
adds r2, r7, 0
|
|
bl sub_800A34C
|
|
ldr r0, [r5]
|
|
movs r1, 0xAE
|
|
lsls r1, 1
|
|
adds r0, r1
|
|
ldr r2, [sp, 0xB4]
|
|
str r2, [r0]
|
|
add r4, sp, 0x60
|
|
adds r0, r4, 0
|
|
adds r1, r2, 0
|
|
bl sub_800A088
|
|
mov r0, r8
|
|
mov r1, r8
|
|
adds r2, r4, 0
|
|
bl sub_800A34C
|
|
mov r0, r8
|
|
bl sub_800A048
|
|
ldr r1, [r5]
|
|
movs r3, 0xA8
|
|
lsls r3, 1
|
|
adds r1, r3
|
|
str r0, [r1]
|
|
movs r0, 0x80
|
|
lsls r0, 7
|
|
bl DungeonRandomCapped
|
|
movs r6, 0
|
|
str r6, [sp, 0x58]
|
|
movs r1, 0xE0
|
|
lsls r1, 8
|
|
adds r0, r1
|
|
str r0, [r7, 0x4]
|
|
mov r0, r8
|
|
mov r1, r8
|
|
adds r2, r7, 0
|
|
bl sub_800A34C
|
|
add r4, sp, 0x68
|
|
adds r0, r4, 0
|
|
movs r1, 0x64
|
|
bl sub_800A020
|
|
adds r0, r7, 0
|
|
adds r1, r4, 0
|
|
adds r2, r7, 0
|
|
bl sub_800A34C
|
|
adds r0, r7, 0
|
|
bl sub_800A048
|
|
ldr r1, [r5]
|
|
movs r2, 0xAC
|
|
lsls r2, 1
|
|
adds r1, r2
|
|
str r0, [r1]
|
|
mov r0, r8
|
|
bl sub_800A048
|
|
ldr r3, [sp, 0xB0]
|
|
str r0, [r3]
|
|
str r6, [r3, 0x4]
|
|
cmp r0, 0
|
|
bne _0806F294
|
|
strb r0, [r3, 0xD]
|
|
_0806F294:
|
|
add sp, 0x8C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0806F2A4: .4byte gUnknown_80F4DAE
|
|
_0806F2A8: .4byte gDungeonGlobalData
|
|
_0806F2AC: .4byte 0x00000165
|
|
_0806F2B0: .4byte gUnknown_80F4DB0
|
|
_0806F2B4: .4byte 0x00000169
|
|
_0806F2B8: .4byte gUnknown_8106F14
|
|
thumb_func_end sub_806EAF4
|
|
|
|
thumb_func_start sub_806F2BC
|
|
sub_806F2BC:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x14
|
|
adds r5, r0, 0
|
|
mov r12, r1
|
|
ldr r7, [sp, 0x2C]
|
|
lsls r2, 24
|
|
lsrs r4, r2, 24
|
|
adds r6, r3, 0
|
|
cmp r6, 0
|
|
bgt _0806F2D6
|
|
movs r6, 0x1
|
|
_0806F2D6:
|
|
ldr r0, _0806F320
|
|
cmp r6, r0
|
|
ble _0806F2DE
|
|
adds r6, r0, 0
|
|
_0806F2DE:
|
|
movs r0, 0
|
|
mov r8, r0
|
|
strb r4, [r7, 0xC]
|
|
str r7, [sp]
|
|
add r0, sp, 0x4
|
|
adds r1, r5, 0
|
|
mov r2, r12
|
|
adds r3, r4, 0
|
|
bl sub_806E100
|
|
add r4, sp, 0xC
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl sub_800A020
|
|
adds r0, r4, 0
|
|
adds r1, r4, 0
|
|
add r2, sp, 0x4
|
|
bl sub_800A34C
|
|
adds r0, r4, 0
|
|
bl sub_800A048
|
|
str r0, [r7]
|
|
mov r0, r8
|
|
str r0, [r7, 0x4]
|
|
add sp, 0x14
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0806F320: .4byte 0x000003e7
|
|
thumb_func_end sub_806F2BC
|
|
|
|
thumb_func_start sub_806F324
|
|
sub_806F324:
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
sub sp, 0x94
|
|
mov r8, r0
|
|
adds r5, r1, 0
|
|
adds r6, r2, 0
|
|
lsls r4, r3, 16
|
|
asrs r4, 16
|
|
add r0, sp, 0x10
|
|
bl sub_80457DC
|
|
add r2, sp, 0x84
|
|
str r5, [sp, 0x84]
|
|
movs r0, 0x2
|
|
str r0, [r2, 0x8]
|
|
movs r0, 0
|
|
strb r0, [r2, 0xC]
|
|
str r6, [r2, 0x4]
|
|
strb r0, [r2, 0xD]
|
|
strb r0, [r2, 0xE]
|
|
strb r0, [r2, 0xF]
|
|
str r0, [sp]
|
|
str r4, [sp, 0x4]
|
|
str r0, [sp, 0x8]
|
|
str r0, [sp, 0xC]
|
|
add r0, sp, 0x10
|
|
mov r1, r8
|
|
movs r3, 0
|
|
bl sub_806D010
|
|
add sp, 0x94
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_806F324
|
|
|
|
thumb_func_start sub_806F370
|
|
sub_806F370:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x2C
|
|
mov r10, r0
|
|
adds r7, r1, 0
|
|
mov r9, r3
|
|
ldr r0, [sp, 0x50]
|
|
ldr r1, [sp, 0x54]
|
|
ldr r3, [sp, 0x58]
|
|
lsls r0, 24
|
|
lsrs r4, r0, 24
|
|
lsls r1, 16
|
|
asrs r1, 16
|
|
mov r8, r1
|
|
adds r5, r2, 0
|
|
movs r0, 0x2
|
|
str r0, [sp, 0x18]
|
|
str r3, [sp, 0x14]
|
|
add r0, sp, 0x10
|
|
movs r1, 0
|
|
strb r4, [r0, 0xC]
|
|
strb r1, [r0, 0xD]
|
|
strb r1, [r0, 0xE]
|
|
cmp r4, 0
|
|
beq _0806F3FC
|
|
ldr r1, [r7, 0x70]
|
|
movs r2, 0
|
|
lsls r0, r4, 3
|
|
mov r3, sp
|
|
adds r3, 0x20
|
|
str r3, [sp, 0x28]
|
|
ldr r6, _0806F408
|
|
mov r12, r6
|
|
adds r1, 0x5C
|
|
adds r0, r4
|
|
lsls r3, r0, 2
|
|
ldr r4, [sp, 0x28]
|
|
_0806F3C0:
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
adds r0, r3
|
|
add r0, r12
|
|
movs r6, 0
|
|
ldrsh r0, [r0, r6]
|
|
stm r4!, {r0}
|
|
adds r2, 0x1
|
|
cmp r2, 0x1
|
|
ble _0806F3C0
|
|
adds r0, r7, 0
|
|
movs r1, 0x35
|
|
bl HasAbility
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806F3FC
|
|
ldr r2, _0806F40C
|
|
ldr r1, [sp, 0x28]
|
|
ldr r0, [r1, 0x4]
|
|
lsls r0, 2
|
|
ldr r1, [sp, 0x20]
|
|
lsls r1, 4
|
|
adds r0, r1
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
cmp r0, 0x3
|
|
beq _0806F3FC
|
|
movs r5, 0
|
|
_0806F3FC:
|
|
str r5, [sp, 0x10]
|
|
cmp r5, 0
|
|
bne _0806F410
|
|
add r1, sp, 0x10
|
|
movs r0, 0x1
|
|
b _0806F414
|
|
.align 2, 0
|
|
_0806F408: .4byte gTypeEffectivenessChart
|
|
_0806F40C: .4byte gUnknown_80F54B4
|
|
_0806F410:
|
|
add r1, sp, 0x10
|
|
movs r0, 0
|
|
_0806F414:
|
|
strb r0, [r1, 0xF]
|
|
mov r3, r9
|
|
str r3, [sp]
|
|
mov r6, r8
|
|
str r6, [sp, 0x4]
|
|
ldr r0, [sp, 0x5C]
|
|
str r0, [sp, 0x8]
|
|
ldr r0, [sp, 0x60]
|
|
str r0, [sp, 0xC]
|
|
mov r0, r10
|
|
adds r1, r7, 0
|
|
add r2, sp, 0x10
|
|
movs r3, 0
|
|
bl sub_806D010
|
|
ldr r0, [sp, 0x4C]
|
|
cmp r0, 0
|
|
beq _0806F440
|
|
add r0, sp, 0x10
|
|
ldrb r0, [r0, 0xF]
|
|
ldr r1, [sp, 0x4C]
|
|
strb r0, [r1]
|
|
_0806F440:
|
|
add sp, 0x2C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_806F370
|
|
|
|
thumb_func_start SetShopkeeperAggression
|
|
SetShopkeeperAggression:
|
|
push {r4-r6,lr}
|
|
adds r5, r0, 0
|
|
ldr r4, [r1, 0x70]
|
|
adds r6, r4, 0
|
|
ldrb r0, [r4, 0x8]
|
|
cmp r0, 0
|
|
beq _0806F47A
|
|
adds r0, r5, 0
|
|
bl GetEntityType
|
|
cmp r0, 0x1
|
|
bne _0806F47A
|
|
ldr r0, [r5, 0x70]
|
|
ldrb r0, [r0, 0x6]
|
|
cmp r0, 0
|
|
beq _0806F476
|
|
movs r0, 0x2
|
|
strb r0, [r4, 0x8]
|
|
b _0806F47A
|
|
_0806F476:
|
|
movs r0, 0x3
|
|
strb r0, [r6, 0x8]
|
|
_0806F47A:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end SetShopkeeperAggression
|
|
|
|
thumb_func_start sub_806F480
|
|
sub_806F480:
|
|
push {lr}
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
ldr r2, [r0, 0x70]
|
|
adds r3, r2, 0
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
beq _0806F49E
|
|
cmp r1, 0
|
|
beq _0806F49A
|
|
movs r0, 0x2
|
|
strb r0, [r2, 0x8]
|
|
b _0806F49E
|
|
_0806F49A:
|
|
movs r0, 0x3
|
|
strb r0, [r3, 0x8]
|
|
_0806F49E:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_806F480
|
|
|
|
thumb_func_start sub_806F4A4
|
|
sub_806F4A4:
|
|
push {r4-r6,lr}
|
|
lsls r1, 24
|
|
lsrs r4, r1, 24
|
|
ldr r5, [r0, 0x70]
|
|
movs r1, 0xE
|
|
bl HasType
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806F4CE
|
|
cmp r4, 0x1
|
|
beq _0806F4C0
|
|
cmp r4, 0x7
|
|
bne _0806F4CE
|
|
_0806F4C0:
|
|
adds r0, r5, 0
|
|
adds r0, 0xF5
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0806F4CE
|
|
_0806F4CA:
|
|
movs r0, 0
|
|
b _0806F4F6
|
|
_0806F4CE:
|
|
movs r2, 0
|
|
lsls r0, r4, 3
|
|
ldr r6, _0806F4FC
|
|
adds r3, r5, 0
|
|
adds r3, 0x5C
|
|
adds r0, r4
|
|
lsls r1, r0, 2
|
|
_0806F4DC:
|
|
adds r0, r3, r2
|
|
ldrb r0, [r0]
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
adds r0, r6
|
|
movs r4, 0
|
|
ldrsh r0, [r0, r4]
|
|
cmp r0, 0
|
|
beq _0806F4CA
|
|
adds r2, 0x1
|
|
cmp r2, 0x1
|
|
ble _0806F4DC
|
|
movs r0, 0x1
|
|
_0806F4F6:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0806F4FC: .4byte gTypeEffectivenessChart
|
|
thumb_func_end sub_806F4A4
|
|
|
|
thumb_func_start sub_806F500
|
|
sub_806F500:
|
|
ldr r0, _0806F5F4
|
|
ldr r0, [r0]
|
|
mov r12, r0
|
|
movs r0, 0x9A
|
|
lsls r0, 1
|
|
add r0, r12
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
str r1, [r0, 0x4]
|
|
strb r1, [r0, 0x8]
|
|
strb r1, [r0, 0x9]
|
|
movs r2, 0xA
|
|
strb r2, [r0, 0xA]
|
|
strb r2, [r0, 0xB]
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
strh r3, [r0, 0xC]
|
|
strh r3, [r0, 0xE]
|
|
strh r1, [r0, 0x10]
|
|
strh r1, [r0, 0x14]
|
|
strh r1, [r0, 0x12]
|
|
strh r1, [r0, 0x16]
|
|
strh r1, [r0, 0x18]
|
|
str r1, [r0, 0x1C]
|
|
str r1, [r0, 0x24]
|
|
str r1, [r0, 0x28]
|
|
movs r0, 0xB0
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
ldr r0, _0806F5F8
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
movs r0, 0xB1
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
ldr r0, _0806F5FC
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
movs r0, 0xB2
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
ldr r0, _0806F600
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
movs r0, 0xB3
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
ldr r0, _0806F604
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
movs r0, 0xB4
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
ldr r0, _0806F608
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
movs r0, 0xB5
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
movs r0, 0xB6
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
ldr r0, _0806F60C
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
ldr r0, _0806F610
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
movs r0, 0xB7
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
ldr r0, _0806F614
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
movs r0, 0xB8
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
ldr r0, _0806F618
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
movs r0, 0xB9
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
ldr r0, _0806F61C
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
movs r0, 0xBA
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
ldr r0, _0806F620
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
movs r0, 0xBB
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
ldr r0, _0806F624
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
movs r0, 0xBC
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
ldr r0, _0806F628
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
movs r0, 0xBD
|
|
lsls r0, 1
|
|
add r0, r12
|
|
strb r2, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_0806F5F4: .4byte gDungeonGlobalData
|
|
_0806F5F8: .4byte 0x00000161
|
|
_0806F5FC: .4byte 0x00000163
|
|
_0806F600: .4byte 0x00000165
|
|
_0806F604: .4byte 0x00000167
|
|
_0806F608: .4byte 0x00000169
|
|
_0806F60C: .4byte 0x0000016b
|
|
_0806F610: .4byte 0x0000016d
|
|
_0806F614: .4byte 0x0000016f
|
|
_0806F618: .4byte 0x00000171
|
|
_0806F61C: .4byte 0x00000173
|
|
_0806F620: .4byte 0x00000175
|
|
_0806F624: .4byte 0x00000177
|
|
_0806F628: .4byte 0x00000179
|
|
thumb_func_end sub_806F500
|
|
|
|
thumb_func_start sub_806F62C
|
|
sub_806F62C:
|
|
ldr r1, _0806F638
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_0806F638: .4byte gUnknown_8106F7C
|
|
thumb_func_end sub_806F62C
|
|
|
|
thumb_func_start sub_806F63C
|
|
sub_806F63C:
|
|
push {lr}
|
|
ldr r1, _0806F658
|
|
ldr r1, [r1]
|
|
ldr r2, _0806F65C
|
|
adds r1, r2
|
|
ldr r1, [r1, 0x10]
|
|
cmp r1, r0
|
|
bne _0806F652
|
|
adds r0, r1, 0
|
|
bl sub_803F508
|
|
_0806F652:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0806F658: .4byte gDungeonGlobalData
|
|
_0806F65C: .4byte 0x000181e8
|
|
thumb_func_end sub_806F63C
|
|
|
|
thumb_func_start sub_806F660
|
|
sub_806F660:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
adds r6, r0, 0
|
|
mov r8, r1
|
|
ldr r0, [r6, 0x70]
|
|
mov r10, r0
|
|
ldr r4, [r1, 0x70]
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
mov r9, r1
|
|
movs r2, 0x4
|
|
ldrsh r0, [r4, r2]
|
|
bl GetPokemonSize
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
ldr r0, _0806F6C0
|
|
ldr r3, [r0]
|
|
ldr r1, _0806F6C4
|
|
adds r0, r3, r1
|
|
ldrh r2, [r0]
|
|
subs r0, r2, 0x4
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x1
|
|
bls _0806F702
|
|
lsls r0, r2, 16
|
|
asrs r1, r0, 16
|
|
cmp r1, 0x9
|
|
beq _0806F702
|
|
cmp r1, 0xF
|
|
beq _0806F702
|
|
adds r0, r2, 0
|
|
subs r0, 0x2C
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x4
|
|
bhi _0806F6CC
|
|
ldr r2, _0806F6C8
|
|
adds r0, r3, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0806F702
|
|
b _0806F8FC
|
|
.align 2, 0
|
|
_0806F6C0: .4byte gDungeonGlobalData
|
|
_0806F6C4: .4byte 0x00003a14
|
|
_0806F6C8: .4byte 0x0000065c
|
|
_0806F6CC:
|
|
cmp r1, 0x31
|
|
bne _0806F6F0
|
|
ldr r1, _0806F6EC
|
|
adds r0, r3, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0806F6DC
|
|
b _0806F8FC
|
|
_0806F6DC:
|
|
movs r0, 0xCF
|
|
lsls r0, 1
|
|
bl sub_8097900
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806F702
|
|
b _0806F8FC
|
|
.align 2, 0
|
|
_0806F6EC: .4byte 0x00000659
|
|
_0806F6F0:
|
|
ldr r2, _0806F834
|
|
adds r0, r3, r2
|
|
ldrb r0, [r0]
|
|
bl GetRecruitable
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806F702
|
|
b _0806F8FC
|
|
_0806F702:
|
|
ldr r0, _0806F838
|
|
ldr r0, [r0]
|
|
ldr r3, _0806F83C
|
|
adds r0, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0806F712
|
|
b _0806F8FC
|
|
_0806F712:
|
|
ldrh r1, [r4, 0x2]
|
|
adds r0, r1, 0
|
|
subs r0, 0x90
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
cmp r0, 0x2
|
|
bls _0806F766
|
|
lsls r0, r1, 16
|
|
asrs r1, r0, 16
|
|
ldr r0, _0806F840
|
|
cmp r1, r0
|
|
beq _0806F766
|
|
subs r0, 0x1
|
|
cmp r1, r0
|
|
beq _0806F766
|
|
adds r0, 0x2
|
|
cmp r1, r0
|
|
beq _0806F766
|
|
adds r0, 0x8A
|
|
cmp r1, r0
|
|
beq _0806F766
|
|
adds r0, 0x1
|
|
cmp r1, r0
|
|
beq _0806F766
|
|
adds r0, 0x4
|
|
cmp r1, r0
|
|
beq _0806F766
|
|
subs r0, 0x1
|
|
cmp r1, r0
|
|
beq _0806F766
|
|
adds r0, 0x2
|
|
cmp r1, r0
|
|
beq _0806F766
|
|
subs r0, 0x9
|
|
cmp r1, r0
|
|
beq _0806F766
|
|
adds r0, 0x1
|
|
cmp r1, r0
|
|
beq _0806F766
|
|
adds r0, 0x1
|
|
cmp r1, r0
|
|
bne _0806F776
|
|
_0806F766:
|
|
movs r1, 0x2
|
|
ldrsh r0, [r4, r1]
|
|
bl HasRecruitedMon
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806F776
|
|
b _0806F8FC
|
|
_0806F776:
|
|
movs r2, 0x2
|
|
ldrsh r0, [r4, r2]
|
|
bl sub_806F9BC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806F786
|
|
b _0806F8FC
|
|
_0806F786:
|
|
movs r3, 0x4
|
|
ldrsh r1, [r6, r3]
|
|
mov r2, r8
|
|
movs r3, 0x4
|
|
ldrsh r0, [r2, r3]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0806F798
|
|
negs r1, r1
|
|
_0806F798:
|
|
cmp r1, 0x1
|
|
ble _0806F79E
|
|
b _0806F8FC
|
|
_0806F79E:
|
|
movs r0, 0x6
|
|
ldrsh r1, [r6, r0]
|
|
mov r2, r8
|
|
movs r3, 0x6
|
|
ldrsh r0, [r2, r3]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0806F7B0
|
|
negs r1, r1
|
|
_0806F7B0:
|
|
cmp r1, 0x1
|
|
ble _0806F7B6
|
|
b _0806F8FC
|
|
_0806F7B6:
|
|
adds r0, r4, 0
|
|
adds r0, 0x40
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x4A
|
|
bne _0806F7C2
|
|
b _0806F8FC
|
|
_0806F7C2:
|
|
adds r0, r4, 0
|
|
adds r0, 0xA4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _0806F7CE
|
|
b _0806F8FC
|
|
_0806F7CE:
|
|
mov r0, r8
|
|
adds r1, r6, 0
|
|
bl CanSee
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806F7DE
|
|
b _0806F8FC
|
|
_0806F7DE:
|
|
bl sub_806F910
|
|
movs r0, 0xFA
|
|
lsls r0, 2
|
|
bl DungeonRandomCapped
|
|
adds r7, r0, 0
|
|
movs r1, 0x2
|
|
ldrsh r0, [r4, r1]
|
|
bl GetBaseRecruit
|
|
lsls r0, 16
|
|
asrs r4, r0, 16
|
|
ldr r0, _0806F844
|
|
cmp r4, r0
|
|
bne _0806F800
|
|
b _0806F8FC
|
|
_0806F800:
|
|
adds r0, r6, 0
|
|
movs r1, 0x2E
|
|
bl HasItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806F816
|
|
ldr r0, _0806F848
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
adds r4, r0
|
|
_0806F816:
|
|
ldr r0, _0806F84C
|
|
mov r3, r10
|
|
ldrb r1, [r3, 0x9]
|
|
lsls r1, 1
|
|
adds r1, r0
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
adds r4, r0
|
|
cmp r7, r4
|
|
bge _0806F8FC
|
|
movs r4, 0
|
|
movs r0, 0x6
|
|
subs r3, r0, r5
|
|
ldr r7, _0806F850
|
|
b _0806F856
|
|
.align 2, 0
|
|
_0806F834: .4byte 0x00000644
|
|
_0806F838: .4byte gDungeonGlobalData
|
|
_0806F83C: .4byte 0x0000065d
|
|
_0806F840: .4byte 0x0000010d
|
|
_0806F844: .4byte 0xfffffc19
|
|
_0806F848: .4byte gUnknown_80F5008
|
|
_0806F84C: .4byte gUnknown_80F5700
|
|
_0806F850: .4byte gUnknown_202EE70
|
|
_0806F854:
|
|
adds r4, 0x1
|
|
_0806F856:
|
|
cmp r4, r3
|
|
bgt _0806F878
|
|
movs r2, 0
|
|
cmp r2, r5
|
|
bge _0806F872
|
|
adds r1, r4, r7
|
|
b _0806F86C
|
|
_0806F864:
|
|
adds r1, 0x1
|
|
adds r2, 0x1
|
|
cmp r2, r5
|
|
bge _0806F872
|
|
_0806F86C:
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _0806F864
|
|
_0806F872:
|
|
cmp r2, r5
|
|
bne _0806F854
|
|
mov r9, r4
|
|
_0806F878:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r9, r0
|
|
beq _0806F8F4
|
|
movs r4, 0
|
|
ldr r3, _0806F8BC
|
|
ldr r0, [r3]
|
|
ldr r2, _0806F8C0
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0806F8B4
|
|
adds r7, r3, 0
|
|
adds r5, r2, 0
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
_0806F89C:
|
|
adds r2, 0x64
|
|
adds r4, 0x1
|
|
cmp r4, 0x3
|
|
bgt _0806F8B4
|
|
ldr r0, [r7]
|
|
adds r0, r2, r0
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0806F89C
|
|
_0806F8B4:
|
|
cmp r4, 0x4
|
|
beq _0806F8F4
|
|
movs r4, 0
|
|
b _0806F8C6
|
|
.align 2, 0
|
|
_0806F8BC: .4byte gRecruitedPokemonRef
|
|
_0806F8C0: .4byte 0x00008df8
|
|
_0806F8C4:
|
|
adds r4, 0x1
|
|
_0806F8C6:
|
|
cmp r4, 0x3
|
|
bgt _0806F8E2
|
|
ldr r0, _0806F8EC
|
|
ldr r0, [r0]
|
|
lsls r1, r4, 2
|
|
ldr r3, _0806F8F0
|
|
adds r0, r3
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806F8C4
|
|
_0806F8E2:
|
|
cmp r4, 0x4
|
|
beq _0806F8F4
|
|
movs r0, 0x1
|
|
b _0806F8FE
|
|
.align 2, 0
|
|
_0806F8EC: .4byte gDungeonGlobalData
|
|
_0806F8F0: .4byte 0x0001357c
|
|
_0806F8F4:
|
|
adds r0, r6, 0
|
|
mov r1, r8
|
|
bl nullsub_96
|
|
_0806F8FC:
|
|
movs r0, 0
|
|
_0806F8FE:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_806F660
|
|
|
|
thumb_func_start nullsub_96
|
|
nullsub_96:
|
|
bx lr
|
|
thumb_func_end nullsub_96
|
|
|
|
thumb_func_start sub_806F910
|
|
sub_806F910:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
movs r5, 0
|
|
movs r6, 0
|
|
movs r7, 0x40
|
|
_0806F91C:
|
|
ldr r0, _0806F9AC
|
|
ldr r0, [r0]
|
|
lsls r1, r6, 2
|
|
ldr r2, _0806F9B0
|
|
adds r0, r2
|
|
adds r0, r1
|
|
ldr r4, [r0]
|
|
adds r0, r4, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
adds r1, r6, 0x1
|
|
mov r8, r1
|
|
cmp r0, 0
|
|
beq _0806F98A
|
|
ldr r0, [r4, 0x70]
|
|
movs r2, 0x4
|
|
ldrsh r0, [r0, r2]
|
|
bl GetPokemonSize
|
|
lsls r0, 24
|
|
lsrs r1, r0, 24
|
|
adds r0, r4, 0
|
|
adds r0, 0x68
|
|
strh r7, [r0]
|
|
ldr r0, [r4, 0x70]
|
|
ldr r2, _0806F9B4
|
|
adds r0, r2
|
|
strb r6, [r0]
|
|
ldr r0, [r4, 0x70]
|
|
adds r2, 0x1
|
|
adds r0, r2
|
|
strb r1, [r0]
|
|
cmp r1, 0
|
|
beq _0806F978
|
|
ldr r3, _0806F9B8
|
|
movs r2, 0x1
|
|
_0806F966:
|
|
cmp r5, 0x5
|
|
bgt _0806F972
|
|
adds r0, r5, r3
|
|
strb r2, [r0]
|
|
adds r7, 0x10
|
|
adds r5, 0x1
|
|
_0806F972:
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bne _0806F966
|
|
_0806F978:
|
|
adds r0, r4, 0
|
|
bl sub_806CEBC
|
|
adds r1, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
adds r0, r4, 0
|
|
bl sub_806CCB4
|
|
_0806F98A:
|
|
mov r6, r8
|
|
cmp r6, 0x3
|
|
ble _0806F91C
|
|
cmp r5, 0x5
|
|
bgt _0806F9A2
|
|
ldr r2, _0806F9B8
|
|
movs r1, 0
|
|
_0806F998:
|
|
adds r0, r5, r2
|
|
strb r1, [r0]
|
|
adds r5, 0x1
|
|
cmp r5, 0x5
|
|
ble _0806F998
|
|
_0806F9A2:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0806F9AC: .4byte gDungeonGlobalData
|
|
_0806F9B0: .4byte 0x0001357c
|
|
_0806F9B4: .4byte 0x00000167
|
|
_0806F9B8: .4byte gUnknown_202EE70
|
|
thumb_func_end sub_806F910
|
|
|
|
thumb_func_start sub_806F9BC
|
|
sub_806F9BC:
|
|
push {r4,r5,lr}
|
|
sub sp, 0xC
|
|
lsls r0, 16
|
|
asrs r4, r0, 16
|
|
ldr r5, _0806FA40
|
|
ldr r0, [r5]
|
|
movs r1, 0xCB
|
|
lsls r1, 3
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0806FA3C
|
|
adds r0, r4, 0
|
|
bl sub_808529C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806FA3C
|
|
cmp r4, 0x97
|
|
bne _0806F9F2
|
|
ldr r0, [r5]
|
|
movs r1, 0xCF
|
|
lsls r1, 3
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
beq _0806FA3C
|
|
_0806F9F2:
|
|
movs r0, 0xCC
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
beq _0806FA3C
|
|
ldr r0, _0806FA44
|
|
cmp r4, r0
|
|
beq _0806FA3C
|
|
ldr r0, _0806FA48
|
|
cmp r4, r0
|
|
beq _0806FA3C
|
|
movs r0, 0xD1
|
|
lsls r0, 1
|
|
cmp r4, r0
|
|
beq _0806FA3C
|
|
ldr r0, _0806FA4C
|
|
cmp r4, r0
|
|
beq _0806FA3C
|
|
adds r0, r4, 0
|
|
bl GetUnk12
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806FA50
|
|
adds r0, r4, 0
|
|
bl GetFriendArea
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r1, sp
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_8092638
|
|
mov r0, sp
|
|
ldrb r0, [r0, 0x4]
|
|
cmp r0, 0
|
|
bne _0806FA50
|
|
_0806FA3C:
|
|
movs r0, 0
|
|
b _0806FA52
|
|
.align 2, 0
|
|
_0806FA40: .4byte gDungeonGlobalData
|
|
_0806FA44: .4byte 0x00000199
|
|
_0806FA48: .4byte 0x000001a1
|
|
_0806FA4C: .4byte 0x000001a3
|
|
_0806FA50:
|
|
movs r0, 0x1
|
|
_0806FA52:
|
|
add sp, 0xC
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_806F9BC
|
|
|
|
thumb_func_start sub_806FA5C
|
|
sub_806FA5C:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x10
|
|
mov r8, r0
|
|
adds r5, r1, 0
|
|
adds r6, r2, 0
|
|
adds r0, r5, 0x4
|
|
mov r1, r8
|
|
adds r1, 0x4
|
|
bl CalculateFacingDir
|
|
adds r4, r0, 0
|
|
movs r0, 0
|
|
mov r10, r0
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
bl GetFriendArea
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
adds r0, r5, 0
|
|
adds r0, 0x22
|
|
mov r2, r10
|
|
strb r2, [r0]
|
|
mov r0, r8
|
|
adds r1, r5, 0
|
|
bl sub_807A0CC
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl sub_806CE68
|
|
ldr r0, _0806FAD4
|
|
movs r3, 0
|
|
ldrsh r1, [r6, r3]
|
|
bl CopyCyanSpeciesNametoBuffer
|
|
ldr r0, _0806FAD8
|
|
ldr r1, [r0]
|
|
movs r0, 0
|
|
movs r2, 0x1
|
|
bl sub_8052B8C
|
|
cmp r0, 0
|
|
bne _0806FAE4
|
|
movs r4, 0
|
|
ldrsh r1, [r6, r4]
|
|
ldr r0, _0806FADC
|
|
cmp r1, r0
|
|
beq _0806FB28
|
|
ldr r0, _0806FAE0
|
|
ldr r1, [r0]
|
|
mov r0, r8
|
|
bl SendMessage
|
|
b _0806FB28
|
|
.align 2, 0
|
|
_0806FAD4: .4byte gAvailablePokemonNames
|
|
_0806FAD8: .4byte gUnknown_80F9FE8
|
|
_0806FADC: .4byte 0x0000019d
|
|
_0806FAE0: .4byte gUnknown_80FA004
|
|
_0806FAE4:
|
|
movs r7, 0
|
|
ldr r3, _0806FB2C
|
|
ldr r0, [r3]
|
|
ldr r2, _0806FB30
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0806FB1A
|
|
mov r12, r3
|
|
adds r4, r2, 0
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
_0806FB00:
|
|
adds r2, 0x64
|
|
adds r7, 0x1
|
|
cmp r7, 0x3
|
|
bgt _0806FB1A
|
|
mov r1, r12
|
|
ldr r0, [r1]
|
|
adds r0, r2, r0
|
|
adds r0, r4
|
|
ldrb r1, [r0]
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0806FB00
|
|
_0806FB1A:
|
|
cmp r7, 0x4
|
|
bne _0806FB38
|
|
ldr r0, _0806FB34
|
|
ldr r1, [r0]
|
|
mov r0, r8
|
|
bl SendMessage
|
|
_0806FB28:
|
|
movs r0, 0
|
|
b _0806FCF0
|
|
.align 2, 0
|
|
_0806FB2C: .4byte gRecruitedPokemonRef
|
|
_0806FB30: .4byte 0x00008df8
|
|
_0806FB34: .4byte gUnknown_80FA030
|
|
_0806FB38:
|
|
mov r0, r9
|
|
bl GetFriendAreaStatus
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806FB4E
|
|
mov r0, r9
|
|
bl UnlockFriendArea
|
|
movs r2, 0x1
|
|
mov r10, r2
|
|
_0806FB4E:
|
|
movs r1, 0xFA
|
|
lsls r1, 1
|
|
adds r0, r5, 0
|
|
mov r2, r8
|
|
bl sub_8068FE0
|
|
ldr r1, _0806FC40
|
|
movs r0, 0x64
|
|
muls r0, r7
|
|
ldr r3, _0806FC44
|
|
adds r0, r3
|
|
ldr r1, [r1]
|
|
adds r5, r1, r0
|
|
movs r4, 0
|
|
movs r0, 0x3
|
|
strh r0, [r5]
|
|
strb r4, [r5, 0x2]
|
|
ldrh r0, [r6, 0xE]
|
|
strb r0, [r5, 0x3]
|
|
movs r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
adds r0, r5, 0
|
|
adds r0, 0x4C
|
|
movs r1, 0
|
|
bl SetDefaultIQSkills
|
|
ldr r0, [r6, 0x44]
|
|
str r0, [r5, 0x54]
|
|
adds r0, r5, 0
|
|
adds r0, 0x50
|
|
strb r4, [r0]
|
|
ldr r0, _0806FC48
|
|
strh r0, [r5, 0xA]
|
|
strh r7, [r5, 0xC]
|
|
ldrh r0, [r6]
|
|
strh r0, [r5, 0xE]
|
|
ldr r0, _0806FC4C
|
|
ldr r0, [r0]
|
|
ldr r4, _0806FC50
|
|
adds r0, r4
|
|
ldr r0, [r0]
|
|
str r0, [r5, 0x4]
|
|
ldrh r0, [r6, 0x8]
|
|
strh r0, [r5, 0x10]
|
|
ldrh r0, [r6, 0x8]
|
|
strh r0, [r5, 0x12]
|
|
ldr r0, [r6, 0x14]
|
|
str r0, [r5, 0x44]
|
|
ldr r0, [r6, 0x18]
|
|
str r0, [r5, 0x48]
|
|
movs r2, 0
|
|
adds r7, r6, 0
|
|
adds r7, 0x20
|
|
adds r4, r6, 0
|
|
adds r4, 0xA
|
|
adds r3, r6, 0
|
|
adds r3, 0xC
|
|
adds r1, r5, 0
|
|
adds r1, 0x14
|
|
_0806FBC4:
|
|
adds r0, r4, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r0, r3, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1, 0x2]
|
|
adds r1, 0x1
|
|
adds r2, 0x1
|
|
cmp r2, 0x1
|
|
ble _0806FBC4
|
|
ldr r0, [r6, 0x10]
|
|
str r0, [r5, 0x18]
|
|
adds r1, r5, 0
|
|
adds r1, 0x1C
|
|
adds r0, r7, 0
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldr r0, [r6, 0x1C]
|
|
str r0, [r5, 0x40]
|
|
adds r4, r5, 0
|
|
adds r4, 0x58
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
bl GetMonSpecies
|
|
adds r1, r0, 0
|
|
adds r0, r4, 0
|
|
movs r2, 0xA
|
|
bl BoundedCopyStringtoBuffer
|
|
bl sub_8097848
|
|
movs r2, 0
|
|
ldrsh r0, [r6, r2]
|
|
movs r3, 0x4
|
|
ldrsh r1, [r6, r3]
|
|
movs r3, 0x6
|
|
ldrsh r2, [r6, r3]
|
|
add r3, sp, 0xC
|
|
str r3, [sp]
|
|
movs r3, 0
|
|
str r3, [sp, 0x4]
|
|
movs r3, 0x1
|
|
str r3, [sp, 0x8]
|
|
adds r3, r5, 0
|
|
bl sub_806B8CC
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
cmp r7, 0
|
|
bne _0806FC58
|
|
ldr r0, _0806FC54
|
|
ldr r1, [r0]
|
|
mov r0, r8
|
|
bl SendMessage
|
|
strh r7, [r5]
|
|
b _0806FCEE
|
|
.align 2, 0
|
|
_0806FC40: .4byte gRecruitedPokemonRef
|
|
_0806FC44: .4byte 0x00008df8
|
|
_0806FC48: .4byte 0x0000ffff
|
|
_0806FC4C: .4byte gDungeonGlobalData
|
|
_0806FC50: .4byte 0x00000644
|
|
_0806FC54: .4byte gUnknown_80FA058
|
|
_0806FC58:
|
|
bl sub_8083D88
|
|
movs r0, 0xA0
|
|
movs r1, 0x46
|
|
bl sub_803E708
|
|
ldr r0, _0806FC78
|
|
ldr r1, [r0]
|
|
movs r0, 0
|
|
movs r2, 0x1
|
|
bl sub_8052B8C
|
|
cmp r0, 0x1
|
|
bne _0806FC94
|
|
b _0806FC88
|
|
.align 2, 0
|
|
_0806FC78: .4byte gUnknown_80FA090
|
|
_0806FC7C:
|
|
ldr r0, _0806FD00
|
|
ldr r1, [r0]
|
|
movs r0, 0
|
|
movs r2, 0x1
|
|
bl PrintFieldMessage
|
|
_0806FC88:
|
|
adds r0, r4, 0
|
|
bl sub_805FBE8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806FC7C
|
|
_0806FC94:
|
|
ldr r4, _0806FD04
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0
|
|
bl sub_808D9DC
|
|
ldr r0, _0806FD08
|
|
ldr r1, [r0]
|
|
mov r0, r8
|
|
bl SendMessage
|
|
mov r0, r10
|
|
cmp r0, 0
|
|
beq _0806FCD8
|
|
bl xxx_call_GetLeaderEntity
|
|
adds r1, r0, 0
|
|
adds r0, r4, 0
|
|
movs r2, 0
|
|
bl SetMessageArgument
|
|
ldr r0, _0806FD0C
|
|
mov r1, r9
|
|
bl sub_8092558
|
|
movs r0, 0xCE
|
|
bl PlaySound
|
|
ldr r0, _0806FD10
|
|
ldr r1, [r0]
|
|
movs r0, 0
|
|
movs r2, 0x1
|
|
bl PrintFieldMessage
|
|
_0806FCD8:
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0x97
|
|
bne _0806FCEE
|
|
ldr r2, _0806FD14
|
|
ldr r1, [r2]
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x4]
|
|
ldr r1, [r2]
|
|
movs r0, 0x3
|
|
strb r0, [r1, 0x11]
|
|
_0806FCEE:
|
|
movs r0, 0x1
|
|
_0806FCF0:
|
|
add sp, 0x10
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0806FD00: .4byte gUnknown_80FA0C8
|
|
_0806FD04: .4byte gAvailablePokemonNames
|
|
_0806FD08: .4byte gUnknown_80FA0F0
|
|
_0806FD0C: .4byte gUnknown_202E628
|
|
_0806FD10: .4byte gUnknown_80FA120
|
|
_0806FD14: .4byte gDungeonGlobalData
|
|
thumb_func_end sub_806FA5C
|
|
|
|
thumb_func_start sub_806FD18
|
|
sub_806FD18:
|
|
push {r4-r7,lr}
|
|
ldr r4, [r0, 0x70]
|
|
movs r6, 0x1
|
|
negs r6, r6
|
|
movs r1, 0x4
|
|
ldrsh r0, [r4, r1]
|
|
bl GetPokemonSize
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r2, 0x2
|
|
ldrsh r0, [r4, r2]
|
|
bl sub_806F9BC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806FDEC
|
|
bl sub_806F910
|
|
movs r4, 0
|
|
movs r0, 0x6
|
|
subs r3, r0, r5
|
|
ldr r7, _0806FD48
|
|
b _0806FD4E
|
|
.align 2, 0
|
|
_0806FD48: .4byte gUnknown_202EE70
|
|
_0806FD4C:
|
|
adds r4, 0x1
|
|
_0806FD4E:
|
|
cmp r4, r3
|
|
bgt _0806FD70
|
|
movs r2, 0
|
|
cmp r2, r5
|
|
bge _0806FD6A
|
|
adds r1, r4, r7
|
|
b _0806FD64
|
|
_0806FD5C:
|
|
adds r1, 0x1
|
|
adds r2, 0x1
|
|
cmp r2, r5
|
|
bge _0806FD6A
|
|
_0806FD64:
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
beq _0806FD5C
|
|
_0806FD6A:
|
|
cmp r2, r5
|
|
bne _0806FD4C
|
|
adds r6, r4, 0
|
|
_0806FD70:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r6, r0
|
|
beq _0806FDEC
|
|
movs r4, 0
|
|
ldr r3, _0806FDB4
|
|
ldr r0, [r3]
|
|
ldr r2, _0806FDB8
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0806FDAC
|
|
adds r6, r3, 0
|
|
adds r5, r2, 0
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
_0806FD94:
|
|
adds r2, 0x64
|
|
adds r4, 0x1
|
|
cmp r4, 0x3
|
|
bgt _0806FDAC
|
|
ldr r0, [r6]
|
|
adds r0, r2, r0
|
|
adds r0, r5
|
|
ldrb r1, [r0]
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0806FD94
|
|
_0806FDAC:
|
|
cmp r4, 0x4
|
|
beq _0806FDEC
|
|
movs r4, 0
|
|
b _0806FDBE
|
|
.align 2, 0
|
|
_0806FDB4: .4byte gRecruitedPokemonRef
|
|
_0806FDB8: .4byte 0x00008df8
|
|
_0806FDBC:
|
|
adds r4, 0x1
|
|
_0806FDBE:
|
|
cmp r4, 0x3
|
|
bgt _0806FDDA
|
|
ldr r0, _0806FDE4
|
|
ldr r0, [r0]
|
|
lsls r1, r4, 2
|
|
ldr r2, _0806FDE8
|
|
adds r0, r2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806FDBC
|
|
_0806FDDA:
|
|
cmp r4, 0x4
|
|
beq _0806FDEC
|
|
movs r0, 0x1
|
|
b _0806FDEE
|
|
.align 2, 0
|
|
_0806FDE4: .4byte gDungeonGlobalData
|
|
_0806FDE8: .4byte 0x0001357c
|
|
_0806FDEC:
|
|
movs r0, 0
|
|
_0806FDEE:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_806FD18
|
|
|
|
thumb_func_start sub_806FDF4
|
|
sub_806FDF4:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x60
|
|
str r0, [sp, 0x58]
|
|
mov r10, r1
|
|
str r2, [sp, 0x5C]
|
|
movs r0, 0
|
|
mov r9, r0
|
|
str r0, [r2]
|
|
add r0, sp, 0xC
|
|
bl sub_8069D4C
|
|
movs r6, 0
|
|
ldr r3, _0806FE50
|
|
ldr r0, [r3]
|
|
ldr r2, _0806FE54
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0806FE46
|
|
adds r5, r3, 0
|
|
adds r4, r2, 0
|
|
movs r2, 0
|
|
movs r3, 0x1
|
|
_0806FE2E:
|
|
adds r2, 0x64
|
|
adds r6, 0x1
|
|
cmp r6, 0x3
|
|
bgt _0806FE46
|
|
ldr r0, [r5]
|
|
adds r0, r2, r0
|
|
adds r0, r4
|
|
ldrb r1, [r0]
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0806FE2E
|
|
_0806FE46:
|
|
cmp r6, 0x4
|
|
bne _0806FE58
|
|
movs r0, 0
|
|
b _0806FFF8
|
|
.align 2, 0
|
|
_0806FE50: .4byte gRecruitedPokemonRef
|
|
_0806FE54: .4byte 0x00008df8
|
|
_0806FE58:
|
|
add r0, sp, 0xC
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
bl GetFriendArea
|
|
lsls r0, 24
|
|
lsrs r7, r0, 24
|
|
ldr r1, _0806FF74
|
|
movs r0, 0x64
|
|
muls r0, r6
|
|
ldr r2, _0806FF78
|
|
adds r0, r2
|
|
ldr r1, [r1]
|
|
adds r5, r1, r0
|
|
movs r4, 0
|
|
movs r0, 0x3
|
|
strh r0, [r5]
|
|
strb r4, [r5, 0x2]
|
|
add r0, sp, 0xC
|
|
ldrh r0, [r0, 0xE]
|
|
strb r0, [r5, 0x3]
|
|
movs r0, 0x1
|
|
strh r0, [r5, 0x8]
|
|
adds r0, r5, 0
|
|
adds r0, 0x4C
|
|
movs r1, 0
|
|
bl SetDefaultIQSkills
|
|
ldr r0, [sp, 0x50]
|
|
str r0, [r5, 0x54]
|
|
adds r0, r5, 0
|
|
adds r0, 0x50
|
|
strb r4, [r0]
|
|
ldr r0, _0806FF7C
|
|
strh r0, [r5, 0xA]
|
|
strh r6, [r5, 0xC]
|
|
add r0, sp, 0xC
|
|
ldrh r0, [r0]
|
|
strh r0, [r5, 0xE]
|
|
ldr r0, _0806FF80
|
|
ldr r0, [r0]
|
|
ldr r3, _0806FF84
|
|
adds r0, r3
|
|
ldr r0, [r0]
|
|
str r0, [r5, 0x4]
|
|
add r0, sp, 0xC
|
|
ldrh r0, [r0, 0x8]
|
|
strh r0, [r5, 0x10]
|
|
add r0, sp, 0xC
|
|
ldrh r0, [r0, 0x8]
|
|
strh r0, [r5, 0x12]
|
|
ldr r0, [sp, 0x20]
|
|
str r0, [r5, 0x44]
|
|
ldr r0, [sp, 0x24]
|
|
str r0, [r5, 0x48]
|
|
movs r2, 0
|
|
add r6, sp, 0x2C
|
|
add r4, sp, 0x54
|
|
mov r8, r4
|
|
mov r4, sp
|
|
adds r4, 0x16
|
|
add r3, sp, 0x18
|
|
adds r1, r5, 0
|
|
adds r1, 0x14
|
|
_0806FED8:
|
|
adds r0, r4, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r0, r3, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1, 0x2]
|
|
adds r1, 0x1
|
|
adds r2, 0x1
|
|
cmp r2, 0x1
|
|
ble _0806FED8
|
|
ldr r0, [sp, 0x1C]
|
|
str r0, [r5, 0x18]
|
|
adds r1, r5, 0
|
|
adds r1, 0x1C
|
|
adds r0, r6, 0
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldr r0, [sp, 0x28]
|
|
str r0, [r5, 0x40]
|
|
adds r4, r5, 0
|
|
adds r4, 0x58
|
|
add r0, sp, 0xC
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
bl GetMonSpecies
|
|
adds r1, r0, 0
|
|
adds r0, r4, 0
|
|
movs r2, 0xA
|
|
bl BoundedCopyStringtoBuffer
|
|
adds r0, r7, 0
|
|
bl GetFriendAreaStatus
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0806FF34
|
|
adds r0, r7, 0
|
|
bl UnlockFriendArea
|
|
movs r2, 0x1
|
|
mov r9, r2
|
|
_0806FF34:
|
|
bl sub_8097848
|
|
movs r1, 0xFA
|
|
lsls r1, 1
|
|
mov r0, r10
|
|
ldr r2, [sp, 0x58]
|
|
bl sub_8068FE0
|
|
add r0, sp, 0xC
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
add r1, sp, 0xC
|
|
movs r2, 0x4
|
|
ldrsh r1, [r1, r2]
|
|
add r2, sp, 0xC
|
|
movs r3, 0x6
|
|
ldrsh r2, [r2, r3]
|
|
mov r3, r8
|
|
str r3, [sp]
|
|
movs r3, 0
|
|
str r3, [sp, 0x4]
|
|
str r3, [sp, 0x8]
|
|
adds r3, r5, 0
|
|
bl sub_806B8CC
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _0806FF88
|
|
strh r0, [r5]
|
|
b _0806FFF6
|
|
.align 2, 0
|
|
_0806FF74: .4byte gRecruitedPokemonRef
|
|
_0806FF78: .4byte 0x00008df8
|
|
_0806FF7C: .4byte 0x0000ffff
|
|
_0806FF80: .4byte gDungeonGlobalData
|
|
_0806FF84: .4byte 0x00000644
|
|
_0806FF88:
|
|
ldr r0, _0806FF9C
|
|
ldr r1, [r0]
|
|
movs r0, 0
|
|
movs r2, 0x1
|
|
bl sub_8052B8C
|
|
cmp r0, 0x1
|
|
bne _0806FFB8
|
|
b _0806FFAC
|
|
.align 2, 0
|
|
_0806FF9C: .4byte gUnknown_80FA090
|
|
_0806FFA0:
|
|
ldr r0, _08070008
|
|
ldr r1, [r0]
|
|
movs r0, 0
|
|
movs r2, 0x1
|
|
bl PrintFieldMessage
|
|
_0806FFAC:
|
|
adds r0, r4, 0
|
|
bl sub_805FBE8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0806FFA0
|
|
_0806FFB8:
|
|
mov r4, r9
|
|
cmp r4, 0
|
|
beq _0806FFE6
|
|
bl xxx_call_GetLeaderEntity
|
|
adds r1, r0, 0
|
|
ldr r0, _0807000C
|
|
movs r2, 0
|
|
bl SetMessageArgument
|
|
ldr r0, _08070010
|
|
adds r1, r7, 0
|
|
bl sub_8092558
|
|
movs r0, 0xCE
|
|
bl PlaySound
|
|
ldr r0, _08070014
|
|
ldr r1, [r0]
|
|
movs r0, 0
|
|
movs r2, 0x1
|
|
bl PrintFieldMessage
|
|
_0806FFE6:
|
|
ldr r0, _08070018
|
|
adds r1, r5, 0
|
|
movs r2, 0
|
|
bl sub_808D9DC
|
|
ldr r0, [sp, 0x54]
|
|
ldr r1, [sp, 0x5C]
|
|
str r0, [r1]
|
|
_0806FFF6:
|
|
movs r0, 0x1
|
|
_0806FFF8:
|
|
add sp, 0x60
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08070008: .4byte gUnknown_80FA0C8
|
|
_0807000C: .4byte gAvailablePokemonNames
|
|
_08070010: .4byte gUnknown_202E628
|
|
_08070014: .4byte gUnknown_80FA120
|
|
_08070018: .4byte gUnknown_202E088
|
|
thumb_func_end sub_806FDF4
|
|
|
|
.align 2,0
|