mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-04 16:34:58 -05:00
This decision was made to reduce the complexity of using .include whilst juggling with tools/scaninc and tools/preproc: - tools/scaninc doesn't apply the proper search rules for .include (it assumes #include behavior). In particular, it doesn't consider paths starting from $PWD, and doesn't scan the included files as a result. - .include had to be processed before #include by preproc in many cases, as code was being included that had to be preprocessed by CPP (think of #define). This contradicts standard GCC behavior. To make include paths consistent across the asm/ data/ and src/ directories, the following files were moved: - constants/ → include/asm/constants/ - asm/macros/ → include/asm/macros/ - asm/macros.inc → include/asm/macros.inc - include/macros/m4a.inc → include/asm/macros/m4a.inc As part of the necessary changes for this to work, the scaninc method in the makefile was improved to generate .d files that don't choke when files are missing.
18474 lines
277 KiB
ArmAsm
18474 lines
277 KiB
ArmAsm
#include "asm/constants/gba_constants.inc"
|
|
#include "asm/macros.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start GetMapEntity
|
|
GetMapEntity:
|
|
push {r4,r5,lr}
|
|
adds r2, r0, 0
|
|
adds r3, r1, 0
|
|
cmp r2, 0
|
|
blt _080495A6
|
|
cmp r3, 0
|
|
blt _080495A6
|
|
cmp r2, 0x37
|
|
bgt _080495A6
|
|
cmp r3, 0x1F
|
|
ble _080495C0
|
|
_080495A6:
|
|
ldr r0, _080495B8
|
|
ldr r1, _080495BC
|
|
adds r2, r0, 0
|
|
ldr r1, [r1]
|
|
ldm r1!, {r3-r5}
|
|
stm r2!, {r3-r5}
|
|
ldm r1!, {r3-r5}
|
|
stm r2!, {r3-r5}
|
|
b _080495D6
|
|
.align 2, 0
|
|
_080495B8: .4byte gUnknown_202F190
|
|
_080495BC: .4byte gUnknown_203B430
|
|
_080495C0:
|
|
ldr r0, _080495DC
|
|
ldr r1, [r0]
|
|
lsls r2, 2
|
|
lsls r0, r3, 3
|
|
subs r0, r3
|
|
lsls r0, 5
|
|
adds r2, r0
|
|
ldr r0, _080495E0
|
|
adds r1, r0
|
|
adds r1, r2
|
|
ldr r0, [r1]
|
|
_080495D6:
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_080495DC: .4byte gDungeonGlobalData
|
|
_080495E0: .4byte 0x0000e8c0
|
|
thumb_func_end GetMapEntity
|
|
|
|
thumb_func_start sub_80495E4
|
|
sub_80495E4:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
movs r2, 0
|
|
ldr r0, _08049658
|
|
mov r9, r0
|
|
mov r12, r9
|
|
ldr r7, _0804965C
|
|
ldr r1, _08049660
|
|
mov r8, r1
|
|
_080495FA:
|
|
lsls r1, r2, 3
|
|
lsls r0, r2, 2
|
|
adds r6, r2, 0x1
|
|
subs r1, r2
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
adds r0, r2
|
|
lsls r0, 6
|
|
movs r4, 0
|
|
lsls r2, r1, 5
|
|
mov r3, r8
|
|
adds r5, r0, r3
|
|
movs r3, 0x37
|
|
_08049614:
|
|
mov r1, r12
|
|
ldr r0, [r1]
|
|
adds r1, r0, r7
|
|
adds r1, r2
|
|
adds r0, r5
|
|
adds r0, r4
|
|
str r0, [r1]
|
|
adds r4, 0x18
|
|
adds r2, 0x4
|
|
subs r3, 0x1
|
|
cmp r3, 0
|
|
bge _08049614
|
|
adds r2, r6, 0
|
|
cmp r2, 0x1F
|
|
ble _080495FA
|
|
movs r2, 0
|
|
mov r3, r9
|
|
ldr r1, [r3]
|
|
ldr r4, _08049664
|
|
adds r0, r1, r4
|
|
movs r3, 0
|
|
strh r2, [r0]
|
|
adds r4, 0x2
|
|
adds r0, r1, r4
|
|
strh r2, [r0]
|
|
ldr r0, _08049668
|
|
adds r1, r0
|
|
strb r3, [r1]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08049658: .4byte gDungeonGlobalData
|
|
_0804965C: .4byte 0x0000e8c0
|
|
_08049660: .4byte 0x00003a18
|
|
_08049664: .4byte 0x00003a0e
|
|
_08049668: .4byte 0x00013570
|
|
thumb_func_end sub_80495E4
|
|
|
|
thumb_func_start sub_804966C
|
|
sub_804966C:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0xC
|
|
ldr r1, _08049734
|
|
ldr r0, _08049738
|
|
mov r8, r0
|
|
ldr r6, _0804973C
|
|
ldr r0, [r6]
|
|
ldr r5, _08049740
|
|
adds r0, r5
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
add r0, r8
|
|
ldrb r2, [r0]
|
|
mov r0, sp
|
|
bl sprintf
|
|
ldr r7, _08049744
|
|
mov r0, sp
|
|
adds r1, r7, 0
|
|
bl OpenFileAndGetFileDataPtr
|
|
adds r4, r0, 0
|
|
ldr r0, _08049748
|
|
movs r1, 0
|
|
adds r2, r4, 0
|
|
bl DecompressATGlobalFile
|
|
adds r0, r4, 0
|
|
bl CloseFile
|
|
ldr r1, _0804974C
|
|
ldr r0, [r6]
|
|
adds r0, r5
|
|
movs r3, 0
|
|
ldrsh r2, [r0, r3]
|
|
mov r0, sp
|
|
bl sprintf
|
|
mov r0, sp
|
|
adds r1, r7, 0
|
|
bl OpenFileAndGetFileDataPtr
|
|
ldr r1, _08049750
|
|
str r0, [r1]
|
|
ldr r1, _08049754
|
|
ldr r0, [r6]
|
|
adds r0, r5
|
|
movs r4, 0
|
|
ldrsh r0, [r0, r4]
|
|
add r0, r8
|
|
ldrb r2, [r0]
|
|
mov r0, sp
|
|
bl sprintf
|
|
mov r0, sp
|
|
adds r1, r7, 0
|
|
bl OpenFileAndGetFileDataPtr
|
|
adds r4, r0, 0
|
|
ldr r0, [r6]
|
|
ldr r1, _08049758
|
|
adds r0, r1
|
|
ldr r1, _0804975C
|
|
adds r2, r4, 0
|
|
bl DecompressATFile
|
|
adds r0, r4, 0
|
|
bl CloseFile
|
|
ldr r0, [r6]
|
|
adds r2, r0, r5
|
|
movs r3, 0
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, 0x3F
|
|
bgt _08049768
|
|
ldr r1, _08049760
|
|
add r0, r8
|
|
ldrb r2, [r0]
|
|
mov r0, sp
|
|
bl sprintf
|
|
mov r0, sp
|
|
adds r1, r7, 0
|
|
bl OpenFileAndGetFileDataPtr
|
|
adds r4, r0, 0
|
|
ldr r0, [r6]
|
|
ldr r1, _08049764
|
|
adds r0, r1
|
|
movs r1, 0x93
|
|
lsls r1, 4
|
|
adds r2, r4, 0
|
|
bl DecompressATFile
|
|
adds r0, r4, 0
|
|
bl CloseFile
|
|
b _08049794
|
|
.align 2, 0
|
|
_08049734: .4byte gUnknown_80F6A04
|
|
_08049738: .4byte gUnknown_8108EC0
|
|
_0804973C: .4byte gDungeonGlobalData
|
|
_08049740: .4byte 0x00003a0e
|
|
_08049744: .4byte gDungeonFileArchive
|
|
_08049748: .4byte 0x06008000
|
|
_0804974C: .4byte gUnknown_80F6A10
|
|
_08049750: .4byte gUnknown_202EE88
|
|
_08049754: .4byte gUnknown_80F6A1C
|
|
_08049758: .4byte 0x00011884
|
|
_0804975C: .4byte 0x00001194
|
|
_08049760: .4byte gUnknown_80F6A28
|
|
_08049764: .4byte 0x00012c24
|
|
_08049768:
|
|
ldr r1, _080497E8
|
|
movs r3, 0
|
|
ldrsh r2, [r2, r3]
|
|
mov r0, sp
|
|
bl sprintf
|
|
mov r0, sp
|
|
adds r1, r7, 0
|
|
bl OpenFileAndGetFileDataPtr
|
|
adds r4, r0, 0
|
|
ldr r0, [r6]
|
|
ldr r1, _080497EC
|
|
adds r0, r1
|
|
movs r1, 0x90
|
|
lsls r1, 2
|
|
adds r2, r4, 0
|
|
bl DecompressATFile
|
|
adds r0, r4, 0
|
|
bl CloseFile
|
|
_08049794:
|
|
ldr r1, _080497F0
|
|
ldr r5, _080497F4
|
|
ldr r0, [r5]
|
|
ldr r4, _080497F8
|
|
adds r0, r4
|
|
movs r3, 0
|
|
ldrsh r2, [r0, r3]
|
|
mov r0, sp
|
|
bl sprintf
|
|
ldr r1, _080497FC
|
|
mov r0, sp
|
|
bl OpenFileAndGetFileDataPtr
|
|
adds r1, r0, 0
|
|
ldr r0, _08049800
|
|
str r1, [r0]
|
|
ldr r0, _08049804
|
|
movs r2, 0x20
|
|
bl sub_8004AA4
|
|
ldr r2, _08049808
|
|
movs r6, 0
|
|
strb r6, [r2]
|
|
movs r3, 0x1
|
|
strb r3, [r2, 0x1]
|
|
movs r0, 0x2
|
|
strb r0, [r2, 0x2]
|
|
movs r0, 0x3
|
|
strb r0, [r2, 0x3]
|
|
ldr r1, _0804980C
|
|
ldr r0, [r5]
|
|
adds r0, r4
|
|
movs r4, 0
|
|
ldrsh r0, [r0, r4]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _08049810
|
|
strb r3, [r2, 0x4]
|
|
strb r6, [r2, 0x5]
|
|
b _08049814
|
|
.align 2, 0
|
|
_080497E8: .4byte gUnknown_80F6A34
|
|
_080497EC: .4byte 0x00012c24
|
|
_080497F0: .4byte gUnknown_80F6A40
|
|
_080497F4: .4byte gDungeonGlobalData
|
|
_080497F8: .4byte 0x00003a0e
|
|
_080497FC: .4byte gDungeonFileArchive
|
|
_08049800: .4byte gUnknown_202F18C
|
|
_08049804: .4byte gUnknown_202EE8C
|
|
_08049808: .4byte gUnknown_202F314
|
|
_0804980C: .4byte gDungeonWaterType
|
|
_08049810:
|
|
strb r6, [r2, 0x4]
|
|
strb r3, [r2, 0x5]
|
|
_08049814:
|
|
add sp, 0xC
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804966C
|
|
|
|
thumb_func_start sub_8049820
|
|
sub_8049820:
|
|
push {lr}
|
|
ldr r0, _08049838
|
|
ldr r0, [r0]
|
|
bl CloseFile
|
|
ldr r0, _0804983C
|
|
ldr r0, [r0]
|
|
bl CloseFile
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08049838: .4byte gUnknown_202F18C
|
|
_0804983C: .4byte gUnknown_202EE88
|
|
thumb_func_end sub_8049820
|
|
|
|
thumb_func_start sub_8049840
|
|
sub_8049840:
|
|
push {lr}
|
|
ldr r0, _08049860
|
|
ldr r0, [r0]
|
|
ldr r1, _08049864
|
|
adds r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
bl sub_8043CE4
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08049870
|
|
ldr r1, _08049868
|
|
ldr r0, _0804986C
|
|
b _08049874
|
|
.align 2, 0
|
|
_08049860: .4byte gDungeonGlobalData
|
|
_08049864: .4byte 0x00003a0e
|
|
_08049868: .4byte gUnknown_203B430
|
|
_0804986C: .4byte gUnknown_80F69EC
|
|
_08049870:
|
|
ldr r1, _0804987C
|
|
ldr r0, _08049880
|
|
_08049874:
|
|
str r0, [r1]
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804987C: .4byte gUnknown_203B430
|
|
_08049880: .4byte gUnknown_80F69D4
|
|
thumb_func_end sub_8049840
|
|
|
|
thumb_func_start sub_8049884
|
|
sub_8049884:
|
|
push {r4-r6,lr}
|
|
movs r5, 0
|
|
_08049888:
|
|
movs r4, 0
|
|
adds r6, r5, 0x1
|
|
_0804988C:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_80498A8
|
|
adds r4, 0x1
|
|
cmp r4, 0x37
|
|
ble _0804988C
|
|
adds r5, r6, 0
|
|
cmp r5, 0x1F
|
|
ble _08049888
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8049884
|
|
|
|
thumb_func_start sub_80498A8
|
|
sub_80498A8:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x28
|
|
mov r10, r0
|
|
mov r9, r1
|
|
cmp r0, 0
|
|
bge _080498BE
|
|
b _08049B72
|
|
_080498BE:
|
|
cmp r1, 0
|
|
bge _080498C4
|
|
b _08049B72
|
|
_080498C4:
|
|
cmp r0, 0x37
|
|
ble _080498CA
|
|
b _08049B72
|
|
_080498CA:
|
|
cmp r1, 0x1F
|
|
ble _080498D0
|
|
b _08049B72
|
|
_080498D0:
|
|
movs r7, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r0, [r0]
|
|
movs r1, 0x3
|
|
mov r8, r1
|
|
mov r6, r8
|
|
ands r6, r0
|
|
str r6, [sp, 0x20]
|
|
ldr r4, _08049914
|
|
ldr r0, [r4]
|
|
ldr r3, _08049918
|
|
adds r0, r3
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0x3F
|
|
ble _08049928
|
|
mov r3, r10
|
|
cmp r3, 0x17
|
|
bgt _0804991C
|
|
mov r0, r9
|
|
cmp r0, 0x17
|
|
bgt _0804991C
|
|
mov r0, r10
|
|
mov r1, r9
|
|
bl GetMapEntity
|
|
ldr r2, [r4]
|
|
mov r3, r9
|
|
lsls r1, r3, 1
|
|
add r1, r9
|
|
lsls r1, 3
|
|
add r1, r10
|
|
b _08049B68
|
|
.align 2, 0
|
|
_08049914: .4byte gDungeonGlobalData
|
|
_08049918: .4byte 0x00003a0e
|
|
_0804991C:
|
|
mov r0, r10
|
|
mov r1, r9
|
|
bl GetMapEntity
|
|
movs r1, 0
|
|
b _08049B70
|
|
_08049928:
|
|
mov r0, r9
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x24]
|
|
mov r0, r10
|
|
ldr r1, [sp, 0x24]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
str r0, [sp]
|
|
mov r4, r10
|
|
adds r4, 0x1
|
|
adds r0, r4, 0
|
|
ldr r1, [sp, 0x24]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
str r0, [sp, 0x4]
|
|
adds r0, r4, 0
|
|
mov r1, r9
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
str r0, [sp, 0x8]
|
|
mov r5, r9
|
|
subs r5, 0x1
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
str r0, [sp, 0xC]
|
|
mov r0, r10
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
str r0, [sp, 0x10]
|
|
subs r4, 0x2
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
str r0, [sp, 0x14]
|
|
adds r0, r4, 0
|
|
mov r1, r9
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
str r0, [sp, 0x18]
|
|
adds r0, r4, 0
|
|
ldr r1, [sp, 0x24]
|
|
bl GetMapTileAtPosition
|
|
ldrh r0, [r0]
|
|
mov r1, r8
|
|
ands r1, r0
|
|
str r1, [sp, 0x1C]
|
|
cmp r6, 0x1
|
|
bne _08049A1E
|
|
movs r7, 0xFF
|
|
ldr r0, [sp]
|
|
cmp r0, 0
|
|
bne _080499C6
|
|
movs r7, 0xFE
|
|
_080499C6:
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, 0
|
|
bne _080499D2
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_080499D2:
|
|
ldr r0, [sp, 0x8]
|
|
cmp r0, 0
|
|
bne _080499DE
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_080499DE:
|
|
ldr r0, [sp, 0xC]
|
|
cmp r0, 0
|
|
bne _080499EA
|
|
movs r0, 0x9
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_080499EA:
|
|
ldr r0, [sp, 0x10]
|
|
cmp r0, 0
|
|
bne _080499F6
|
|
movs r0, 0x11
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_080499F6:
|
|
ldr r0, [sp, 0x14]
|
|
cmp r0, 0
|
|
bne _08049A02
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049A02:
|
|
ldr r0, [sp, 0x18]
|
|
cmp r0, 0
|
|
bne _08049A0E
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049A0E:
|
|
cmp r1, 0
|
|
bne _08049A18
|
|
movs r0, 0x81
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049A18:
|
|
movs r0, 0x80
|
|
lsls r0, 2
|
|
b _08049B3A
|
|
_08049A1E:
|
|
cmp r6, 0x2
|
|
bne _08049A84
|
|
movs r7, 0xFF
|
|
ldr r0, [sp]
|
|
cmp r0, 0x2
|
|
beq _08049A2C
|
|
movs r7, 0xFE
|
|
_08049A2C:
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, 0x2
|
|
beq _08049A38
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049A38:
|
|
ldr r0, [sp, 0x8]
|
|
cmp r0, 0x2
|
|
beq _08049A44
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049A44:
|
|
ldr r0, [sp, 0xC]
|
|
cmp r0, 0x2
|
|
beq _08049A50
|
|
movs r0, 0x9
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049A50:
|
|
ldr r0, [sp, 0x10]
|
|
cmp r0, 0x2
|
|
beq _08049A5C
|
|
movs r0, 0x11
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049A5C:
|
|
ldr r0, [sp, 0x14]
|
|
cmp r0, 0x2
|
|
beq _08049A68
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049A68:
|
|
ldr r0, [sp, 0x18]
|
|
cmp r0, 0x2
|
|
beq _08049A74
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049A74:
|
|
cmp r1, 0x2
|
|
beq _08049A7E
|
|
movs r0, 0x81
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049A7E:
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
b _08049B3A
|
|
_08049A84:
|
|
ldr r1, [sp, 0x20]
|
|
cmp r1, 0x3
|
|
bne _08049AEE
|
|
movs r7, 0xFF
|
|
ldr r0, [sp]
|
|
cmp r0, 0x3
|
|
beq _08049A94
|
|
movs r7, 0xFE
|
|
_08049A94:
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, 0x3
|
|
beq _08049AA0
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049AA0:
|
|
ldr r0, [sp, 0x8]
|
|
cmp r0, 0x3
|
|
beq _08049AAC
|
|
movs r0, 0x5
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049AAC:
|
|
ldr r0, [sp, 0xC]
|
|
cmp r0, 0x3
|
|
beq _08049AB8
|
|
movs r0, 0x9
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049AB8:
|
|
ldr r0, [sp, 0x10]
|
|
cmp r0, 0x3
|
|
beq _08049AC4
|
|
movs r0, 0x11
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049AC4:
|
|
ldr r0, [sp, 0x14]
|
|
cmp r0, 0x3
|
|
beq _08049AD0
|
|
movs r0, 0x21
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049AD0:
|
|
ldr r0, [sp, 0x18]
|
|
cmp r0, 0x3
|
|
beq _08049ADC
|
|
movs r0, 0x41
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049ADC:
|
|
ldr r0, [sp, 0x1C]
|
|
cmp r0, 0x3
|
|
beq _08049AE8
|
|
movs r0, 0x81
|
|
negs r0, r0
|
|
ands r7, r0
|
|
_08049AE8:
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
b _08049B3A
|
|
_08049AEE:
|
|
ldr r0, [sp]
|
|
cmp r0, 0
|
|
bne _08049AF6
|
|
movs r7, 0x1
|
|
_08049AF6:
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, 0
|
|
bne _08049B00
|
|
movs r0, 0x2
|
|
orrs r7, r0
|
|
_08049B00:
|
|
ldr r0, [sp, 0x8]
|
|
cmp r0, 0
|
|
bne _08049B0A
|
|
movs r0, 0x4
|
|
orrs r7, r0
|
|
_08049B0A:
|
|
ldr r0, [sp, 0xC]
|
|
cmp r0, 0
|
|
bne _08049B14
|
|
movs r0, 0x8
|
|
orrs r7, r0
|
|
_08049B14:
|
|
ldr r0, [sp, 0x10]
|
|
cmp r0, 0
|
|
bne _08049B1E
|
|
movs r0, 0x10
|
|
orrs r7, r0
|
|
_08049B1E:
|
|
ldr r0, [sp, 0x14]
|
|
cmp r0, 0
|
|
bne _08049B28
|
|
movs r0, 0x20
|
|
orrs r7, r0
|
|
_08049B28:
|
|
ldr r0, [sp, 0x18]
|
|
cmp r0, 0
|
|
bne _08049B32
|
|
movs r0, 0x40
|
|
orrs r7, r0
|
|
_08049B32:
|
|
ldr r0, [sp, 0x1C]
|
|
cmp r0, 0
|
|
bne _08049B3C
|
|
movs r0, 0x80
|
|
_08049B3A:
|
|
orrs r7, r0
|
|
_08049B3C:
|
|
movs r0, 0x4
|
|
bl RandomCapped
|
|
adds r4, r0, 0
|
|
cmp r4, 0x3
|
|
bne _08049B4A
|
|
movs r4, 0
|
|
_08049B4A:
|
|
bl IsBossBattle
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08049B56
|
|
movs r4, 0
|
|
_08049B56:
|
|
mov r0, r10
|
|
mov r1, r9
|
|
bl GetMapEntity
|
|
ldr r1, _08049B84
|
|
ldr r2, [r1]
|
|
lsls r1, r7, 1
|
|
adds r1, r7
|
|
adds r1, r4, r1
|
|
_08049B68:
|
|
ldr r3, _08049B88
|
|
adds r2, r3
|
|
adds r2, r1
|
|
ldrb r1, [r2]
|
|
_08049B70:
|
|
strb r1, [r0, 0x8]
|
|
_08049B72:
|
|
add sp, 0x28
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08049B84: .4byte gDungeonGlobalData
|
|
_08049B88: .4byte 0x00012c24
|
|
thumb_func_end sub_80498A8
|
|
|
|
thumb_func_start sub_8049B8C
|
|
sub_8049B8C:
|
|
push {r4-r6,lr}
|
|
movs r5, 0
|
|
_08049B90:
|
|
movs r4, 0
|
|
adds r6, r5, 0x1
|
|
_08049B94:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_8049BB0
|
|
adds r4, 0x1
|
|
cmp r4, 0x37
|
|
ble _08049B94
|
|
adds r5, r6, 0
|
|
cmp r5, 0x1F
|
|
ble _08049B90
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8049B8C
|
|
|
|
thumb_func_start sub_8049BB0
|
|
sub_8049BB0:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x44
|
|
mov r10, r0
|
|
str r1, [sp, 0x40]
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
str r0, [sp, 0x4]
|
|
str r0, [sp, 0x8]
|
|
str r0, [sp, 0xC]
|
|
adds r0, r1, 0
|
|
adds r0, 0x1
|
|
mov r9, r0
|
|
mov r0, r10
|
|
mov r1, r9
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r4, 0x3
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
add r6, sp, 0x18
|
|
str r0, [sp, 0x18]
|
|
mov r5, r10
|
|
adds r5, 0x1
|
|
adds r0, r5, 0
|
|
mov r1, r9
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
str r0, [r6, 0x4]
|
|
adds r0, r5, 0
|
|
ldr r1, [sp, 0x40]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
str r0, [r6, 0x8]
|
|
ldr r0, [sp, 0x40]
|
|
subs r0, 0x1
|
|
mov r8, r0
|
|
adds r0, r5, 0
|
|
mov r1, r8
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
str r0, [r6, 0xC]
|
|
mov r0, r10
|
|
mov r1, r8
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
str r0, [r6, 0x10]
|
|
subs r5, 0x2
|
|
adds r0, r5, 0
|
|
mov r1, r8
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
str r0, [r6, 0x14]
|
|
adds r0, r5, 0
|
|
ldr r1, [sp, 0x40]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
str r0, [r6, 0x18]
|
|
adds r0, r5, 0
|
|
mov r1, r9
|
|
bl GetMapTileAtPosition
|
|
ldrh r0, [r0]
|
|
ands r4, r0
|
|
str r4, [r6, 0x1C]
|
|
ldr r1, [sp, 0x18]
|
|
cmp r1, 0x1
|
|
bne _08049C6A
|
|
ldr r0, [sp]
|
|
orrs r0, r1
|
|
str r0, [sp]
|
|
_08049C6A:
|
|
ldr r0, [r6, 0x8]
|
|
cmp r0, 0x1
|
|
bne _08049C78
|
|
ldr r0, [sp]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
str r0, [sp]
|
|
_08049C78:
|
|
ldr r0, [r6, 0x10]
|
|
cmp r0, 0x1
|
|
bne _08049C86
|
|
ldr r0, [sp]
|
|
movs r1, 0x10
|
|
orrs r0, r1
|
|
str r0, [sp]
|
|
_08049C86:
|
|
ldr r0, [r6, 0x18]
|
|
cmp r0, 0x1
|
|
bne _08049C94
|
|
ldr r0, [sp]
|
|
movs r1, 0x40
|
|
orrs r0, r1
|
|
str r0, [sp]
|
|
_08049C94:
|
|
ldr r2, [sp, 0x18]
|
|
cmp r2, 0
|
|
beq _08049CAE
|
|
ldr r0, [r6, 0x4]
|
|
cmp r0, 0x1
|
|
bne _08049CAE
|
|
ldr r0, [r6, 0x8]
|
|
cmp r0, 0
|
|
beq _08049CC8
|
|
ldr r0, [sp]
|
|
movs r1, 0x2
|
|
orrs r0, r1
|
|
str r0, [sp]
|
|
_08049CAE:
|
|
ldr r0, [r6, 0x8]
|
|
cmp r0, 0
|
|
beq _08049CC8
|
|
ldr r0, [r6, 0xC]
|
|
cmp r0, 0x1
|
|
bne _08049CC8
|
|
ldr r0, [r6, 0x10]
|
|
cmp r0, 0
|
|
beq _08049CE2
|
|
ldr r0, [sp]
|
|
movs r1, 0x8
|
|
orrs r0, r1
|
|
str r0, [sp]
|
|
_08049CC8:
|
|
ldr r0, [r6, 0x10]
|
|
cmp r0, 0
|
|
beq _08049CE2
|
|
ldr r0, [r6, 0x14]
|
|
cmp r0, 0x1
|
|
bne _08049CE2
|
|
ldr r0, [r6, 0x18]
|
|
cmp r0, 0
|
|
beq _08049CFA
|
|
ldr r0, [sp]
|
|
movs r1, 0x20
|
|
orrs r0, r1
|
|
str r0, [sp]
|
|
_08049CE2:
|
|
ldr r0, [r6, 0x18]
|
|
cmp r0, 0
|
|
beq _08049CFA
|
|
ldr r0, [r6, 0x1C]
|
|
cmp r0, 0x1
|
|
bne _08049CFA
|
|
cmp r2, 0
|
|
beq _08049CFA
|
|
ldr r0, [sp]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
str r0, [sp]
|
|
_08049CFA:
|
|
add r4, sp, 0x38
|
|
movs r7, 0x1
|
|
adds r2, r4, 0
|
|
adds r1, r6, 0
|
|
movs r5, 0
|
|
movs r3, 0x7
|
|
_08049D06:
|
|
ldr r0, [r1]
|
|
subs r0, 0x1
|
|
cmp r0, 0x1
|
|
bhi _08049D12
|
|
strb r7, [r2]
|
|
b _08049D14
|
|
_08049D12:
|
|
strb r5, [r2]
|
|
_08049D14:
|
|
adds r2, 0x1
|
|
adds r1, 0x4
|
|
subs r3, 0x1
|
|
cmp r3, 0
|
|
bge _08049D06
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
beq _08049D2C
|
|
ldr r0, [sp, 0x4]
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
str r0, [sp, 0x4]
|
|
_08049D2C:
|
|
ldrb r0, [r4, 0x2]
|
|
cmp r0, 0
|
|
beq _08049D3A
|
|
ldr r0, [sp, 0x4]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
str r0, [sp, 0x4]
|
|
_08049D3A:
|
|
ldrb r0, [r4, 0x4]
|
|
cmp r0, 0
|
|
beq _08049D48
|
|
ldr r0, [sp, 0x4]
|
|
movs r1, 0x10
|
|
orrs r0, r1
|
|
str r0, [sp, 0x4]
|
|
_08049D48:
|
|
ldrb r0, [r4, 0x6]
|
|
cmp r0, 0
|
|
beq _08049D56
|
|
ldr r0, [sp, 0x4]
|
|
movs r1, 0x40
|
|
orrs r0, r1
|
|
str r0, [sp, 0x4]
|
|
_08049D56:
|
|
ldr r2, [sp, 0x18]
|
|
cmp r2, 0
|
|
beq _08049D70
|
|
ldrb r0, [r4, 0x1]
|
|
cmp r0, 0
|
|
beq _08049D70
|
|
ldr r0, [r6, 0x8]
|
|
cmp r0, 0
|
|
beq _08049D8A
|
|
ldr r0, [sp, 0x4]
|
|
movs r1, 0x2
|
|
orrs r0, r1
|
|
str r0, [sp, 0x4]
|
|
_08049D70:
|
|
ldr r0, [r6, 0x8]
|
|
cmp r0, 0
|
|
beq _08049D8A
|
|
ldrb r0, [r4, 0x3]
|
|
cmp r0, 0
|
|
beq _08049D8A
|
|
ldr r0, [r6, 0x10]
|
|
cmp r0, 0
|
|
beq _08049DA4
|
|
ldr r0, [sp, 0x4]
|
|
movs r1, 0x8
|
|
orrs r0, r1
|
|
str r0, [sp, 0x4]
|
|
_08049D8A:
|
|
ldr r0, [r6, 0x10]
|
|
cmp r0, 0
|
|
beq _08049DA4
|
|
ldrb r0, [r4, 0x5]
|
|
cmp r0, 0
|
|
beq _08049DA4
|
|
ldr r0, [r6, 0x18]
|
|
cmp r0, 0
|
|
beq _08049DBC
|
|
ldr r0, [sp, 0x4]
|
|
movs r1, 0x20
|
|
orrs r0, r1
|
|
str r0, [sp, 0x4]
|
|
_08049DA4:
|
|
ldr r0, [r6, 0x18]
|
|
cmp r0, 0
|
|
beq _08049DBC
|
|
ldrb r0, [r4, 0x7]
|
|
cmp r0, 0
|
|
beq _08049DBC
|
|
cmp r2, 0
|
|
beq _08049DC8
|
|
ldr r0, [sp, 0x4]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
str r0, [sp, 0x4]
|
|
_08049DBC:
|
|
cmp r2, 0
|
|
beq _08049DC8
|
|
ldr r0, [sp, 0x8]
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
str r0, [sp, 0x8]
|
|
_08049DC8:
|
|
ldr r0, [r6, 0x8]
|
|
cmp r0, 0
|
|
beq _08049DD6
|
|
ldr r0, [sp, 0x8]
|
|
movs r1, 0x4
|
|
orrs r0, r1
|
|
str r0, [sp, 0x8]
|
|
_08049DD6:
|
|
ldr r0, [r6, 0x10]
|
|
cmp r0, 0
|
|
beq _08049DE4
|
|
ldr r0, [sp, 0x8]
|
|
movs r1, 0x10
|
|
orrs r0, r1
|
|
str r0, [sp, 0x8]
|
|
_08049DE4:
|
|
ldr r0, [r6, 0x18]
|
|
cmp r0, 0
|
|
beq _08049DF2
|
|
ldr r0, [sp, 0x8]
|
|
movs r1, 0x40
|
|
orrs r0, r1
|
|
str r0, [sp, 0x8]
|
|
_08049DF2:
|
|
cmp r2, 0
|
|
beq _08049E0A
|
|
ldr r0, [r6, 0x4]
|
|
cmp r0, 0
|
|
beq _08049E0A
|
|
ldr r0, [r6, 0x8]
|
|
cmp r0, 0
|
|
beq _08049E24
|
|
ldr r0, [sp, 0x8]
|
|
movs r1, 0x2
|
|
orrs r0, r1
|
|
str r0, [sp, 0x8]
|
|
_08049E0A:
|
|
ldr r0, [r6, 0x8]
|
|
cmp r0, 0
|
|
beq _08049E24
|
|
ldr r0, [r6, 0xC]
|
|
cmp r0, 0
|
|
beq _08049E24
|
|
ldr r0, [r6, 0x10]
|
|
cmp r0, 0
|
|
beq _08049E3E
|
|
ldr r0, [sp, 0x8]
|
|
movs r1, 0x8
|
|
orrs r0, r1
|
|
str r0, [sp, 0x8]
|
|
_08049E24:
|
|
ldr r0, [r6, 0x10]
|
|
cmp r0, 0
|
|
beq _08049E3E
|
|
ldr r0, [r6, 0x14]
|
|
cmp r0, 0
|
|
beq _08049E3E
|
|
ldr r0, [r6, 0x18]
|
|
cmp r0, 0
|
|
beq _08049E56
|
|
ldr r0, [sp, 0x8]
|
|
movs r1, 0x20
|
|
orrs r0, r1
|
|
str r0, [sp, 0x8]
|
|
_08049E3E:
|
|
ldr r0, [r6, 0x18]
|
|
cmp r0, 0
|
|
beq _08049E56
|
|
ldr r0, [r6, 0x1C]
|
|
cmp r0, 0
|
|
beq _08049E56
|
|
cmp r2, 0
|
|
beq _08049E56
|
|
ldr r0, [sp, 0x8]
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
str r0, [sp, 0x8]
|
|
_08049E56:
|
|
movs r0, 0xFF
|
|
str r0, [sp, 0xC]
|
|
mov r0, r10
|
|
cmp r0, 0x1
|
|
bgt _08049E64
|
|
movs r0, 0x1F
|
|
str r0, [sp, 0xC]
|
|
_08049E64:
|
|
ldr r0, [sp, 0x40]
|
|
cmp r0, 0x1
|
|
bgt _08049E74
|
|
ldr r0, [sp, 0xC]
|
|
movs r1, 0x39
|
|
negs r1, r1
|
|
ands r0, r1
|
|
str r0, [sp, 0xC]
|
|
_08049E74:
|
|
mov r0, r10
|
|
cmp r0, 0x35
|
|
ble _08049E84
|
|
ldr r0, [sp, 0xC]
|
|
movs r1, 0xF
|
|
negs r1, r1
|
|
ands r0, r1
|
|
str r0, [sp, 0xC]
|
|
_08049E84:
|
|
ldr r0, [sp, 0x40]
|
|
cmp r0, 0x1D
|
|
ble _08049E94
|
|
ldr r0, [sp, 0xC]
|
|
movs r1, 0x84
|
|
negs r1, r1
|
|
ands r0, r1
|
|
str r0, [sp, 0xC]
|
|
_08049E94:
|
|
mov r0, r10
|
|
ldr r1, [sp, 0x40]
|
|
bl GetMapEntity
|
|
ldr r1, [sp]
|
|
strb r1, [r0, 0xA]
|
|
mov r0, r10
|
|
ldr r1, [sp, 0x40]
|
|
bl GetMapEntity
|
|
ldr r1, [sp, 0x4]
|
|
strb r1, [r0, 0xB]
|
|
mov r0, r10
|
|
ldr r1, [sp, 0x40]
|
|
bl GetMapEntity
|
|
ldr r1, [sp, 0x8]
|
|
strb r1, [r0, 0xC]
|
|
mov r0, r10
|
|
ldr r1, [sp, 0x40]
|
|
bl GetMapEntity
|
|
ldr r1, [sp, 0xC]
|
|
strb r1, [r0, 0xD]
|
|
add sp, 0x44
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8049BB0
|
|
|
|
thumb_func_start sub_8049ED4
|
|
sub_8049ED4:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x38
|
|
ldr r0, _08049F78
|
|
ldr r6, [r0]
|
|
ldr r1, _08049F7C
|
|
adds r0, r6, r1
|
|
ldrb r0, [r0]
|
|
str r0, [sp]
|
|
ldr r2, _08049F80
|
|
adds r0, r6, r2
|
|
ldrb r0, [r0]
|
|
str r0, [sp, 0x4]
|
|
ldr r4, _08049F84
|
|
adds r0, r6, r4
|
|
ldrh r0, [r0]
|
|
lsls r0, 16
|
|
asrs r3, r0, 19
|
|
ldr r1, _08049F88
|
|
adds r0, r3, 0
|
|
adds r0, 0x1E
|
|
lsls r0, 1
|
|
adds r1, r0, r1
|
|
movs r4, 0
|
|
ldrsh r2, [r1, r4]
|
|
mov r10, r2
|
|
ldr r1, _08049F8C
|
|
adds r0, r1
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
str r1, [sp, 0x10]
|
|
movs r4, 0
|
|
str r4, [sp, 0x8]
|
|
_08049F1C:
|
|
ldr r1, _08049F90
|
|
adds r0, r6, r1
|
|
ldrh r0, [r0]
|
|
lsls r0, 16
|
|
asrs r0, 19
|
|
subs r2, r0, 0x1
|
|
mov r9, r2
|
|
movs r1, 0x1F
|
|
ands r3, r1
|
|
ldr r1, _08049F88
|
|
adds r0, 0x1D
|
|
lsls r0, 1
|
|
adds r1, r0, r1
|
|
movs r2, 0
|
|
ldrsh r4, [r1, r2]
|
|
mov r8, r4
|
|
ldr r1, _08049F8C
|
|
adds r0, r1
|
|
movs r1, 0
|
|
ldrsh r4, [r0, r1]
|
|
str r4, [sp, 0x14]
|
|
mov r2, r8
|
|
lsls r0, r2, 1
|
|
add r0, r8
|
|
mov r4, r10
|
|
adds r7, r4, r0
|
|
ldr r0, [sp, 0x10]
|
|
ldr r1, [sp, 0x14]
|
|
str r3, [sp, 0x34]
|
|
bl GetMapTileAtPosition
|
|
adds r5, r0, 0
|
|
ldrh r2, [r5]
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
ldr r3, [sp, 0x34]
|
|
cmp r0, 0
|
|
beq _08049F98
|
|
lsls r0, r7, 1
|
|
ldr r2, _08049F94
|
|
adds r0, r2
|
|
adds r2, r6, r0
|
|
b _0804A06A
|
|
.align 2, 0
|
|
_08049F78: .4byte gDungeonGlobalData
|
|
_08049F7C: .4byte 0x00018210
|
|
_08049F80: .4byte 0x0001820f
|
|
_08049F84: .4byte 0x000181f0
|
|
_08049F88: .4byte gUnknown_80F6A4A
|
|
_08049F8C: .4byte gUnknown_80F6C06
|
|
_08049F90: .4byte 0x000181f2
|
|
_08049F94: .4byte 0x00012bec
|
|
_08049F98:
|
|
movs r0, 0x20
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _08049FAC
|
|
lsls r0, r7, 1
|
|
ldr r4, _08049FA8
|
|
b _08049FD2
|
|
.align 2, 0
|
|
_08049FA8: .4byte 0x00012bda
|
|
_08049FAC:
|
|
ldr r0, [sp]
|
|
cmp r0, 0
|
|
beq _08049FC4
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r2, _08049FC0
|
|
adds r1, r2
|
|
b _0804A064
|
|
.align 2, 0
|
|
_08049FC0: .4byte 0x00011884
|
|
_08049FC4:
|
|
ldrh r1, [r5, 0x4]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08049FDC
|
|
lsls r0, r7, 1
|
|
ldr r4, _08049FD8
|
|
_08049FD2:
|
|
adds r0, r4
|
|
adds r2, r6, r0
|
|
b _0804A06A
|
|
.align 2, 0
|
|
_08049FD8: .4byte 0x00012bfe
|
|
_08049FDC:
|
|
ldr r4, [r5, 0x14]
|
|
cmp r4, 0
|
|
beq _0804A028
|
|
adds r0, r4, 0
|
|
str r3, [sp, 0x34]
|
|
bl GetEntityType
|
|
ldr r3, [sp, 0x34]
|
|
cmp r0, 0x2
|
|
bne _0804A014
|
|
adds r0, r4, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0804A000
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, 0
|
|
beq _0804A014
|
|
_0804A000:
|
|
ldr r0, [r4, 0x70]
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
ldr r1, _0804A010
|
|
adds r0, r1
|
|
b _0804A046
|
|
.align 2, 0
|
|
_0804A010: .4byte 0x00012a18
|
|
_0804A014:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r2, _0804A024
|
|
adds r1, r2
|
|
b _0804A064
|
|
.align 2, 0
|
|
_0804A024: .4byte 0x00011884
|
|
_0804A028:
|
|
movs r4, 0x80
|
|
lsls r4, 2
|
|
adds r0, r4, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0804A058
|
|
ldr r1, _0804A050
|
|
adds r0, r6, r1
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
ldr r4, _0804A054
|
|
adds r0, r4
|
|
_0804A046:
|
|
adds r0, r6, r0
|
|
lsls r1, r7, 1
|
|
adds r2, r0, r1
|
|
b _0804A06A
|
|
.align 2, 0
|
|
_0804A050: .4byte 0x00003a12
|
|
_0804A054: .4byte 0x00012a18
|
|
_0804A058:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r0, _0804A0E8
|
|
adds r1, r0
|
|
_0804A064:
|
|
adds r1, r6, r1
|
|
lsls r0, r7, 1
|
|
adds r2, r1, r0
|
|
_0804A06A:
|
|
lsls r1, r3, 1
|
|
str r1, [sp, 0x30]
|
|
adds r3, 0x1
|
|
str r3, [sp, 0x2C]
|
|
mov r4, r10
|
|
adds r4, 0x1
|
|
str r4, [sp, 0x28]
|
|
ldr r0, [sp, 0x8]
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x24]
|
|
mov r1, r10
|
|
lsls r3, r1, 1
|
|
ldr r4, _0804A0EC
|
|
adds r4, r3, r4
|
|
str r4, [sp, 0x18]
|
|
ldr r0, _0804A0F0
|
|
adds r0, r3, r0
|
|
str r0, [sp, 0x1C]
|
|
ldr r1, _0804A0F4
|
|
adds r1, r3, r1
|
|
str r1, [sp, 0x20]
|
|
movs r4, 0x16
|
|
str r4, [sp, 0xC]
|
|
_0804A098:
|
|
movs r0, 0x1F
|
|
mov r1, r9
|
|
ands r1, r0
|
|
mov r9, r1
|
|
lsls r0, r1, 6
|
|
ldr r4, [sp, 0x30]
|
|
adds r0, r4, r0
|
|
ldr r1, _0804A0F8
|
|
adds r0, r1
|
|
ldrh r1, [r2]
|
|
strh r1, [r0]
|
|
adds r2, 0x6
|
|
movs r4, 0x1
|
|
add r9, r4
|
|
add r8, r4
|
|
mov r0, r8
|
|
cmp r0, 0x3
|
|
bne _0804A1AC
|
|
movs r1, 0
|
|
mov r8, r1
|
|
ldr r2, [sp, 0x14]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x14]
|
|
mov r7, r10
|
|
ldr r0, [sp, 0x10]
|
|
adds r1, r2, 0
|
|
str r3, [sp, 0x34]
|
|
bl GetMapTileAtPosition
|
|
adds r5, r0, 0
|
|
ldrh r2, [r5]
|
|
movs r0, 0x20
|
|
ands r0, r2
|
|
ldr r3, [sp, 0x34]
|
|
cmp r0, 0
|
|
beq _0804A0FC
|
|
ldr r4, [sp, 0x18]
|
|
adds r2, r6, r4
|
|
b _0804A1AC
|
|
.align 2, 0
|
|
_0804A0E8: .4byte 0x00011884
|
|
_0804A0EC: .4byte 0x00012bda
|
|
_0804A0F0: .4byte 0x00012bec
|
|
_0804A0F4: .4byte 0x00012bfe
|
|
_0804A0F8: .4byte gUnknown_202C838
|
|
_0804A0FC:
|
|
movs r1, 0x80
|
|
lsls r1, 5
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0804A10E
|
|
ldr r4, [sp, 0x1C]
|
|
adds r2, r6, r4
|
|
b _0804A1AC
|
|
_0804A10E:
|
|
ldr r0, [sp]
|
|
cmp r0, 0
|
|
bne _0804A19C
|
|
ldrh r1, [r5, 0x4]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804A124
|
|
ldr r4, [sp, 0x20]
|
|
adds r2, r6, r4
|
|
b _0804A1AC
|
|
_0804A124:
|
|
ldr r4, [r5, 0x14]
|
|
cmp r4, 0
|
|
beq _0804A174
|
|
adds r0, r4, 0
|
|
str r3, [sp, 0x34]
|
|
bl GetEntityType
|
|
ldr r3, [sp, 0x34]
|
|
cmp r0, 0x2
|
|
bne _0804A15C
|
|
adds r0, r4, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0804A148
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, 0
|
|
beq _0804A15C
|
|
_0804A148:
|
|
ldr r0, [r4, 0x70]
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
ldr r1, _0804A158
|
|
b _0804A1A6
|
|
.align 2, 0
|
|
_0804A158: .4byte 0x00012a18
|
|
_0804A15C:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r2, _0804A170
|
|
adds r1, r2
|
|
adds r1, r6, r1
|
|
lsls r0, r7, 1
|
|
adds r2, r1, r0
|
|
b _0804A1AC
|
|
.align 2, 0
|
|
_0804A170: .4byte 0x00011884
|
|
_0804A174:
|
|
movs r4, 0x80
|
|
lsls r4, 2
|
|
adds r0, r4, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _0804A19C
|
|
ldr r1, _0804A194
|
|
adds r0, r6, r1
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
ldr r4, _0804A198
|
|
adds r0, r4
|
|
b _0804A1A8
|
|
.align 2, 0
|
|
_0804A194: .4byte 0x00003a12
|
|
_0804A198: .4byte 0x00012a18
|
|
_0804A19C:
|
|
ldrb r1, [r5, 0x8]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
ldr r1, _0804A1EC
|
|
_0804A1A6:
|
|
adds r0, r1
|
|
_0804A1A8:
|
|
adds r0, r6, r0
|
|
adds r2, r0, r3
|
|
_0804A1AC:
|
|
ldr r4, [sp, 0xC]
|
|
subs r4, 0x1
|
|
str r4, [sp, 0xC]
|
|
cmp r4, 0
|
|
blt _0804A1B8
|
|
b _0804A098
|
|
_0804A1B8:
|
|
ldr r3, [sp, 0x2C]
|
|
ldr r0, [sp, 0x28]
|
|
mov r10, r0
|
|
cmp r0, 0x3
|
|
bne _0804A1CC
|
|
movs r1, 0
|
|
mov r10, r1
|
|
ldr r2, [sp, 0x10]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x10]
|
|
_0804A1CC:
|
|
ldr r4, [sp, 0x24]
|
|
str r4, [sp, 0x8]
|
|
cmp r4, 0x1E
|
|
bgt _0804A1D6
|
|
b _08049F1C
|
|
_0804A1D6:
|
|
movs r0, 0x3
|
|
bl sub_80098F8
|
|
add sp, 0x38
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804A1EC: .4byte 0x00011884
|
|
thumb_func_end sub_8049ED4
|
|
|
|
thumb_func_start sub_804A1F0
|
|
sub_804A1F0:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x18
|
|
ldr r2, _0804A284
|
|
ldr r7, [r2]
|
|
ldr r3, _0804A288
|
|
adds r2, r7, r3
|
|
ldrb r2, [r2]
|
|
str r2, [sp]
|
|
ldr r4, _0804A28C
|
|
adds r2, r7, r4
|
|
ldrb r2, [r2]
|
|
str r2, [sp, 0x4]
|
|
ldr r5, _0804A290
|
|
adds r2, r7, r5
|
|
movs r3, 0
|
|
ldrsh r2, [r2, r3]
|
|
adds r2, r0
|
|
subs r4, 0x1D
|
|
adds r0, r7, r4
|
|
movs r5, 0
|
|
ldrsh r0, [r0, r5]
|
|
adds r0, r1
|
|
asrs r0, 3
|
|
asrs r2, 3
|
|
str r2, [sp, 0x14]
|
|
subs r1, r0, 0x1
|
|
mov r9, r1
|
|
ldr r3, _0804A294
|
|
adds r1, r2, 0
|
|
adds r1, 0x1E
|
|
lsls r1, 1
|
|
adds r2, r1, r3
|
|
movs r5, 0
|
|
ldrsh r4, [r2, r5]
|
|
str r4, [sp, 0x10]
|
|
ldr r2, _0804A298
|
|
adds r1, r2
|
|
movs r5, 0
|
|
ldrsh r4, [r1, r5]
|
|
str r4, [sp, 0xC]
|
|
adds r0, 0x1D
|
|
lsls r0, 1
|
|
adds r3, r0, r3
|
|
movs r4, 0
|
|
ldrsh r1, [r3, r4]
|
|
mov r8, r1
|
|
adds r0, r2
|
|
movs r1, 0
|
|
ldrsh r5, [r0, r1]
|
|
mov r10, r5
|
|
mov r2, r8
|
|
lsls r0, r2, 1
|
|
add r0, r8
|
|
ldr r3, [sp, 0x10]
|
|
adds r6, r3, r0
|
|
ldr r0, [sp, 0xC]
|
|
mov r1, r10
|
|
bl GetMapTileAtPosition
|
|
adds r5, r0, 0
|
|
ldrh r1, [r5]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804A2A0
|
|
lsls r0, r6, 1
|
|
ldr r4, _0804A29C
|
|
adds r0, r4
|
|
adds r2, r7, r0
|
|
b _0804A356
|
|
.align 2, 0
|
|
_0804A284: .4byte gDungeonGlobalData
|
|
_0804A288: .4byte 0x00018210
|
|
_0804A28C: .4byte 0x0001820f
|
|
_0804A290: .4byte 0x000181f0
|
|
_0804A294: .4byte gUnknown_80F6A4A
|
|
_0804A298: .4byte gUnknown_80F6C06
|
|
_0804A29C: .4byte 0x00012bda
|
|
_0804A2A0:
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804A2B8
|
|
lsls r0, r6, 1
|
|
ldr r5, _0804A2B4
|
|
adds r0, r5
|
|
adds r2, r7, r0
|
|
b _0804A356
|
|
.align 2, 0
|
|
_0804A2B4: .4byte 0x00012bec
|
|
_0804A2B8:
|
|
ldr r0, [sp]
|
|
cmp r0, 0
|
|
beq _0804A2D0
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r2, _0804A2CC
|
|
adds r1, r2
|
|
b _0804A350
|
|
.align 2, 0
|
|
_0804A2CC: .4byte 0x00011884
|
|
_0804A2D0:
|
|
ldr r4, [r5, 0x14]
|
|
cmp r4, 0
|
|
beq _0804A318
|
|
adds r0, r4, 0
|
|
bl GetEntityType
|
|
cmp r0, 0x2
|
|
bne _0804A304
|
|
adds r0, r4, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0804A2F0
|
|
ldr r3, [sp, 0x4]
|
|
cmp r3, 0
|
|
beq _0804A304
|
|
_0804A2F0:
|
|
ldr r0, [r4, 0x70]
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
ldr r4, _0804A300
|
|
adds r0, r4
|
|
b _0804A334
|
|
.align 2, 0
|
|
_0804A300: .4byte 0x00012a18
|
|
_0804A304:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r5, _0804A314
|
|
adds r1, r5
|
|
b _0804A350
|
|
.align 2, 0
|
|
_0804A314: .4byte 0x00011884
|
|
_0804A318:
|
|
movs r0, 0x80
|
|
lsls r0, 2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804A344
|
|
ldr r1, _0804A33C
|
|
adds r0, r7, r1
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
ldr r3, _0804A340
|
|
adds r0, r3
|
|
_0804A334:
|
|
adds r0, r7, r0
|
|
lsls r1, r6, 1
|
|
adds r2, r0, r1
|
|
b _0804A356
|
|
.align 2, 0
|
|
_0804A33C: .4byte 0x00003a12
|
|
_0804A340: .4byte 0x00012a18
|
|
_0804A344:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r4, _0804A3AC
|
|
adds r1, r4
|
|
_0804A350:
|
|
adds r1, r7, r1
|
|
lsls r0, r6, 1
|
|
adds r2, r1, r0
|
|
_0804A356:
|
|
movs r5, 0x16
|
|
str r5, [sp, 0x8]
|
|
_0804A35A:
|
|
movs r0, 0x1F
|
|
ldr r1, [sp, 0x14]
|
|
ands r1, r0
|
|
str r1, [sp, 0x14]
|
|
mov r3, r9
|
|
ands r3, r0
|
|
mov r9, r3
|
|
lsls r1, 1
|
|
lsls r0, r3, 6
|
|
adds r1, r0
|
|
ldr r4, _0804A3B0
|
|
adds r1, r4
|
|
ldrh r0, [r2]
|
|
strh r0, [r1]
|
|
adds r2, 0x6
|
|
movs r5, 0x1
|
|
add r9, r5
|
|
add r8, r5
|
|
mov r0, r8
|
|
cmp r0, 0x3
|
|
beq _0804A386
|
|
b _0804A476
|
|
_0804A386:
|
|
movs r1, 0
|
|
mov r8, r1
|
|
add r10, r5
|
|
ldr r6, [sp, 0x10]
|
|
ldr r0, [sp, 0xC]
|
|
mov r1, r10
|
|
bl GetMapTileAtPosition
|
|
adds r5, r0, 0
|
|
ldrh r1, [r5]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804A3B8
|
|
lsls r0, r6, 1
|
|
ldr r2, _0804A3B4
|
|
adds r0, r2
|
|
adds r2, r7, r0
|
|
b _0804A476
|
|
.align 2, 0
|
|
_0804A3AC: .4byte 0x00011884
|
|
_0804A3B0: .4byte gUnknown_202C838
|
|
_0804A3B4: .4byte 0x00012bda
|
|
_0804A3B8:
|
|
movs r3, 0x80
|
|
lsls r3, 5
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804A3D4
|
|
lsls r0, r6, 1
|
|
ldr r4, _0804A3D0
|
|
adds r0, r4
|
|
adds r2, r7, r0
|
|
b _0804A476
|
|
.align 2, 0
|
|
_0804A3D0: .4byte 0x00012bec
|
|
_0804A3D4:
|
|
ldr r0, [sp]
|
|
cmp r0, 0
|
|
beq _0804A3EC
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r2, _0804A3E8
|
|
adds r1, r2
|
|
b _0804A470
|
|
.align 2, 0
|
|
_0804A3E8: .4byte 0x00011884
|
|
_0804A3EC:
|
|
ldr r4, [r5, 0x14]
|
|
cmp r4, 0
|
|
beq _0804A434
|
|
adds r0, r4, 0
|
|
bl GetEntityType
|
|
cmp r0, 0x2
|
|
bne _0804A420
|
|
adds r0, r4, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0804A40C
|
|
ldr r3, [sp, 0x4]
|
|
cmp r3, 0
|
|
beq _0804A420
|
|
_0804A40C:
|
|
ldr r0, [r4, 0x70]
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
ldr r4, _0804A41C
|
|
adds r0, r4
|
|
b _0804A452
|
|
.align 2, 0
|
|
_0804A41C: .4byte 0x00012a18
|
|
_0804A420:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r5, _0804A430
|
|
adds r1, r5
|
|
b _0804A470
|
|
.align 2, 0
|
|
_0804A430: .4byte 0x00011884
|
|
_0804A434:
|
|
movs r2, 0x80
|
|
lsls r2, 2
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804A464
|
|
ldr r3, _0804A45C
|
|
adds r0, r7, r3
|
|
movs r4, 0
|
|
ldrsh r1, [r0, r4]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
ldr r5, _0804A460
|
|
adds r0, r5
|
|
_0804A452:
|
|
adds r0, r7, r0
|
|
lsls r1, r6, 1
|
|
adds r2, r0, r1
|
|
b _0804A476
|
|
.align 2, 0
|
|
_0804A45C: .4byte 0x00003a12
|
|
_0804A460: .4byte 0x00012a18
|
|
_0804A464:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r0, _0804A498
|
|
adds r1, r0
|
|
_0804A470:
|
|
adds r1, r7, r1
|
|
lsls r0, r6, 1
|
|
adds r2, r1, r0
|
|
_0804A476:
|
|
ldr r1, [sp, 0x8]
|
|
subs r1, 0x1
|
|
str r1, [sp, 0x8]
|
|
cmp r1, 0
|
|
blt _0804A482
|
|
b _0804A35A
|
|
_0804A482:
|
|
movs r0, 0x3
|
|
bl sub_80098F8
|
|
add sp, 0x18
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804A498: .4byte 0x00011884
|
|
thumb_func_end sub_804A1F0
|
|
|
|
thumb_func_start sub_804A49C
|
|
sub_804A49C:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x18
|
|
ldr r2, _0804A52C
|
|
ldr r7, [r2]
|
|
ldr r3, _0804A530
|
|
adds r2, r7, r3
|
|
ldrb r2, [r2]
|
|
str r2, [sp]
|
|
ldr r4, _0804A534
|
|
adds r2, r7, r4
|
|
ldrb r2, [r2]
|
|
str r2, [sp, 0x4]
|
|
subs r3, 0x20
|
|
adds r2, r7, r3
|
|
movs r4, 0
|
|
ldrsh r2, [r2, r4]
|
|
adds r2, r0
|
|
adds r3, 0x2
|
|
adds r0, r7, r3
|
|
movs r4, 0
|
|
ldrsh r0, [r0, r4]
|
|
adds r0, r1
|
|
asrs r2, 3
|
|
mov r8, r2
|
|
asrs r0, 3
|
|
str r0, [sp, 0x14]
|
|
ldr r2, _0804A538
|
|
mov r0, r8
|
|
adds r0, 0x1E
|
|
lsls r0, 1
|
|
adds r1, r0, r2
|
|
movs r4, 0
|
|
ldrsh r3, [r1, r4]
|
|
mov r9, r3
|
|
ldr r1, _0804A53C
|
|
adds r0, r1
|
|
movs r4, 0
|
|
ldrsh r3, [r0, r4]
|
|
mov r10, r3
|
|
ldr r0, [sp, 0x14]
|
|
adds r0, 0x1E
|
|
lsls r0, 1
|
|
adds r2, r0, r2
|
|
movs r4, 0
|
|
ldrsh r3, [r2, r4]
|
|
str r3, [sp, 0x10]
|
|
adds r0, r1
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
str r1, [sp, 0xC]
|
|
lsls r0, r3, 1
|
|
adds r0, r3
|
|
mov r3, r9
|
|
adds r6, r3, r0
|
|
mov r0, r10
|
|
bl GetMapTileAtPosition
|
|
adds r5, r0, 0
|
|
ldrh r1, [r5]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804A544
|
|
lsls r0, r6, 1
|
|
ldr r4, _0804A540
|
|
adds r0, r4
|
|
adds r2, r7, r0
|
|
b _0804A5DA
|
|
.align 2, 0
|
|
_0804A52C: .4byte gDungeonGlobalData
|
|
_0804A530: .4byte 0x00018210
|
|
_0804A534: .4byte 0x0001820f
|
|
_0804A538: .4byte gUnknown_80F6A4A
|
|
_0804A53C: .4byte gUnknown_80F6C06
|
|
_0804A540: .4byte 0x00012bda
|
|
_0804A544:
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804A55C
|
|
lsls r0, r6, 1
|
|
ldr r1, _0804A558
|
|
adds r0, r1
|
|
adds r2, r7, r0
|
|
b _0804A5DA
|
|
.align 2, 0
|
|
_0804A558: .4byte 0x00012bec
|
|
_0804A55C:
|
|
ldr r2, [sp]
|
|
cmp r2, 0
|
|
beq _0804A574
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r3, _0804A570
|
|
adds r1, r3
|
|
b _0804A5D4
|
|
.align 2, 0
|
|
_0804A570: .4byte 0x00011884
|
|
_0804A574:
|
|
ldr r4, [r5, 0x14]
|
|
cmp r4, 0
|
|
beq _0804A59A
|
|
adds r0, r4, 0
|
|
bl GetEntityType
|
|
cmp r0, 0x2
|
|
bne _0804A5C8
|
|
adds r0, r4, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0804A594
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, 0
|
|
beq _0804A5C8
|
|
_0804A594:
|
|
ldr r0, [r4, 0x70]
|
|
ldrb r1, [r0]
|
|
b _0804A5AC
|
|
_0804A59A:
|
|
movs r0, 0x80
|
|
lsls r0, 2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804A5C8
|
|
ldr r3, _0804A5C0
|
|
adds r0, r7, r3
|
|
movs r4, 0
|
|
ldrsh r1, [r0, r4]
|
|
_0804A5AC:
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
ldr r1, _0804A5C4
|
|
adds r0, r1
|
|
adds r0, r7, r0
|
|
lsls r1, r6, 1
|
|
adds r2, r0, r1
|
|
b _0804A5DA
|
|
.align 2, 0
|
|
_0804A5C0: .4byte 0x00003a12
|
|
_0804A5C4: .4byte 0x00012a18
|
|
_0804A5C8:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r2, _0804A638
|
|
adds r1, r2
|
|
_0804A5D4:
|
|
adds r1, r7, r1
|
|
lsls r0, r6, 1
|
|
adds r2, r1, r0
|
|
_0804A5DA:
|
|
movs r3, 0x1E
|
|
str r3, [sp, 0x8]
|
|
_0804A5DE:
|
|
movs r0, 0x1F
|
|
mov r4, r8
|
|
ands r4, r0
|
|
mov r8, r4
|
|
ldr r1, [sp, 0x14]
|
|
ands r1, r0
|
|
str r1, [sp, 0x14]
|
|
lsls r1, r4, 1
|
|
ldr r3, [sp, 0x14]
|
|
lsls r0, r3, 6
|
|
adds r1, r0
|
|
ldr r4, _0804A63C
|
|
adds r1, r4
|
|
ldrh r0, [r2]
|
|
strh r0, [r1]
|
|
adds r2, 0x2
|
|
movs r0, 0x1
|
|
add r8, r0
|
|
add r9, r0
|
|
mov r1, r9
|
|
cmp r1, 0x3
|
|
beq _0804A60C
|
|
b _0804A702
|
|
_0804A60C:
|
|
movs r2, 0
|
|
mov r9, r2
|
|
add r10, r0
|
|
ldr r3, [sp, 0x10]
|
|
lsls r0, r3, 1
|
|
adds r6, r0, r3
|
|
mov r0, r10
|
|
ldr r1, [sp, 0xC]
|
|
bl GetMapTileAtPosition
|
|
adds r5, r0, 0
|
|
ldrh r1, [r5]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804A644
|
|
lsls r0, r6, 1
|
|
ldr r4, _0804A640
|
|
adds r0, r4
|
|
adds r2, r7, r0
|
|
b _0804A702
|
|
.align 2, 0
|
|
_0804A638: .4byte 0x00011884
|
|
_0804A63C: .4byte gUnknown_202C838
|
|
_0804A640: .4byte 0x00012bda
|
|
_0804A644:
|
|
movs r2, 0x80
|
|
lsls r2, 5
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804A660
|
|
lsls r0, r6, 1
|
|
ldr r3, _0804A65C
|
|
adds r0, r3
|
|
adds r2, r7, r0
|
|
b _0804A702
|
|
.align 2, 0
|
|
_0804A65C: .4byte 0x00012bec
|
|
_0804A660:
|
|
ldr r4, [sp]
|
|
cmp r4, 0
|
|
beq _0804A678
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r0, _0804A674
|
|
adds r1, r0
|
|
b _0804A6FC
|
|
.align 2, 0
|
|
_0804A674: .4byte 0x00011884
|
|
_0804A678:
|
|
ldr r4, [r5, 0x14]
|
|
cmp r4, 0
|
|
beq _0804A6C0
|
|
adds r0, r4, 0
|
|
bl GetEntityType
|
|
cmp r0, 0x2
|
|
bne _0804A6AC
|
|
adds r0, r4, 0
|
|
adds r0, 0x20
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0804A698
|
|
ldr r1, [sp, 0x4]
|
|
cmp r1, 0
|
|
beq _0804A6AC
|
|
_0804A698:
|
|
ldr r0, [r4, 0x70]
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
ldr r2, _0804A6A8
|
|
adds r0, r2
|
|
b _0804A6DE
|
|
.align 2, 0
|
|
_0804A6A8: .4byte 0x00012a18
|
|
_0804A6AC:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r3, _0804A6BC
|
|
adds r1, r3
|
|
b _0804A6FC
|
|
.align 2, 0
|
|
_0804A6BC: .4byte 0x00011884
|
|
_0804A6C0:
|
|
movs r4, 0x80
|
|
lsls r4, 2
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804A6F0
|
|
ldr r1, _0804A6E8
|
|
adds r0, r7, r1
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
ldr r3, _0804A6EC
|
|
adds r0, r3
|
|
_0804A6DE:
|
|
adds r0, r7, r0
|
|
lsls r1, r6, 1
|
|
adds r2, r0, r1
|
|
b _0804A702
|
|
.align 2, 0
|
|
_0804A6E8: .4byte 0x00003a12
|
|
_0804A6EC: .4byte 0x00012a18
|
|
_0804A6F0:
|
|
ldrb r0, [r5, 0x8]
|
|
lsls r1, r0, 3
|
|
adds r1, r0
|
|
lsls r1, 1
|
|
ldr r4, _0804A724
|
|
adds r1, r4
|
|
_0804A6FC:
|
|
adds r1, r7, r1
|
|
lsls r0, r6, 1
|
|
adds r2, r1, r0
|
|
_0804A702:
|
|
ldr r0, [sp, 0x8]
|
|
subs r0, 0x1
|
|
str r0, [sp, 0x8]
|
|
cmp r0, 0
|
|
blt _0804A70E
|
|
b _0804A5DE
|
|
_0804A70E:
|
|
movs r0, 0x3
|
|
bl sub_80098F8
|
|
add sp, 0x18
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804A724: .4byte 0x00011884
|
|
thumb_func_end sub_804A49C
|
|
|
|
thumb_func_start sub_804A728
|
|
sub_804A728:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x40
|
|
str r0, [sp, 0x1C]
|
|
adds r5, r1, 0
|
|
adds r4, r3, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
str r2, [sp, 0x20]
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
ldr r6, _0804A814
|
|
ldr r0, [r6]
|
|
mov r8, r0
|
|
bl GetLeaderEntity
|
|
str r0, [sp, 0x24]
|
|
ldr r0, _0804A818
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
lsls r0, 16
|
|
asrs r0, 19
|
|
str r0, [sp, 0x30]
|
|
adds r1, r0, 0
|
|
ldr r0, [r6]
|
|
ldr r2, _0804A81C
|
|
adds r0, r2
|
|
strb r4, [r0]
|
|
ldr r3, [sp, 0x1C]
|
|
movs r4, 0
|
|
ldrsh r7, [r3, r4]
|
|
movs r0, 0x2
|
|
ldrsh r6, [r3, r0]
|
|
ldr r0, _0804A820
|
|
lsls r5, 2
|
|
adds r5, r0
|
|
movs r2, 0
|
|
ldrsh r4, [r5, r2]
|
|
movs r0, 0x2
|
|
ldrsh r3, [r5, r0]
|
|
mov r0, sp
|
|
movs r2, 0x5
|
|
_0804A782:
|
|
strh r7, [r0]
|
|
strh r6, [r0, 0x2]
|
|
adds r7, r4
|
|
adds r6, r3
|
|
adds r0, 0x4
|
|
subs r2, 0x1
|
|
cmp r2, 0
|
|
bge _0804A782
|
|
ldr r0, _0804A824
|
|
adds r1, 0x1E
|
|
lsls r1, 1
|
|
adds r0, r1, r0
|
|
movs r3, 0
|
|
ldrsh r2, [r0, r3]
|
|
str r2, [sp, 0x28]
|
|
ldr r0, _0804A828
|
|
adds r1, r0
|
|
movs r0, 0
|
|
ldrsh r4, [r1, r0]
|
|
mov r10, r4
|
|
movs r7, 0
|
|
_0804A7AC:
|
|
ldr r0, _0804A82C
|
|
add r0, r8
|
|
ldrh r0, [r0]
|
|
lsls r0, 16
|
|
asrs r0, 19
|
|
str r0, [sp, 0x34]
|
|
ldr r0, _0804A824
|
|
ldr r1, [sp, 0x34]
|
|
adds r1, 0x1E
|
|
lsls r1, 1
|
|
adds r0, r1, r0
|
|
movs r3, 0
|
|
ldrsh r2, [r0, r3]
|
|
str r2, [sp, 0x2C]
|
|
ldr r0, _0804A828
|
|
adds r1, r0
|
|
movs r0, 0
|
|
ldrsh r4, [r1, r0]
|
|
mov r9, r4
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
ldr r1, [sp, 0x28]
|
|
adds r5, r1, r0
|
|
mov r2, r10
|
|
lsls r0, r2, 16
|
|
lsls r1, r4, 16
|
|
lsrs r0, 16
|
|
orrs r0, r1
|
|
str r0, [sp, 0x18]
|
|
ldr r3, [sp, 0x20]
|
|
cmp r3, 0
|
|
beq _0804A850
|
|
ldr r4, [sp, 0x1C]
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
cmp r10, r0
|
|
bne _0804A834
|
|
movs r2, 0x2
|
|
ldrsh r0, [r4, r2]
|
|
cmp r9, r0
|
|
bne _0804A834
|
|
lsls r0, r5, 1
|
|
ldr r3, _0804A830
|
|
adds r0, r3
|
|
mov r4, r8
|
|
adds r2, r4, r0
|
|
ldr r0, [sp, 0x28]
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x3C]
|
|
adds r1, r7, 0x1
|
|
str r1, [sp, 0x38]
|
|
b _0804A8FC
|
|
.align 2, 0
|
|
_0804A814: .4byte gDungeonGlobalData
|
|
_0804A818: .4byte 0x000181f0
|
|
_0804A81C: .4byte 0x0001821a
|
|
_0804A820: .4byte gAdjacentTileOffsets
|
|
_0804A824: .4byte gUnknown_80F6A4A
|
|
_0804A828: .4byte gUnknown_80F6C06
|
|
_0804A82C: .4byte 0x000181f2
|
|
_0804A830: .4byte 0x00012b92
|
|
_0804A834:
|
|
lsls r0, r5, 1
|
|
ldr r2, _0804A84C
|
|
adds r0, r2
|
|
mov r3, r8
|
|
adds r2, r3, r0
|
|
ldr r4, [sp, 0x28]
|
|
adds r4, 0x1
|
|
str r4, [sp, 0x3C]
|
|
adds r0, r7, 0x1
|
|
str r0, [sp, 0x38]
|
|
b _0804A8FC
|
|
.align 2, 0
|
|
_0804A84C: .4byte 0x00013554
|
|
_0804A850:
|
|
add r4, sp, 0x18
|
|
ldr r0, [sp, 0x24]
|
|
adds r1, r4, 0
|
|
bl sub_807049C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0804A8E8
|
|
ldr r0, [sp, 0x24]
|
|
adds r1, r4, 0
|
|
bl sub_8045AAC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0804A8E8
|
|
movs r2, 0
|
|
mov r0, sp
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
lsls r3, r5, 1
|
|
ldr r4, [sp, 0x28]
|
|
adds r4, 0x1
|
|
str r4, [sp, 0x3C]
|
|
adds r1, r7, 0x1
|
|
str r1, [sp, 0x38]
|
|
cmp r0, r10
|
|
bne _0804A890
|
|
mov r0, sp
|
|
movs r4, 0x2
|
|
ldrsh r0, [r0, r4]
|
|
cmp r0, r9
|
|
beq _0804A8AC
|
|
_0804A890:
|
|
adds r2, 0x1
|
|
cmp r2, 0x5
|
|
bgt _0804A8AC
|
|
lsls r0, r2, 2
|
|
mov r4, sp
|
|
adds r1, r4, r0
|
|
movs r4, 0
|
|
ldrsh r0, [r1, r4]
|
|
cmp r0, r10
|
|
bne _0804A890
|
|
movs r4, 0x2
|
|
ldrsh r0, [r1, r4]
|
|
cmp r0, r9
|
|
bne _0804A890
|
|
_0804A8AC:
|
|
cmp r2, 0x6
|
|
bne _0804A8D8
|
|
ldr r0, _0804A8C0
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x3]
|
|
cmp r0, 0
|
|
beq _0804A8C8
|
|
ldr r1, _0804A8C4
|
|
adds r0, r3, r1
|
|
b _0804A8DC
|
|
.align 2, 0
|
|
_0804A8C0: .4byte gUnknown_203B46C
|
|
_0804A8C4: .4byte 0x00012b80
|
|
_0804A8C8:
|
|
ldr r4, _0804A8D4
|
|
adds r0, r3, r4
|
|
mov r1, r8
|
|
adds r2, r1, r0
|
|
b _0804A8FC
|
|
.align 2, 0
|
|
_0804A8D4: .4byte 0x00013554
|
|
_0804A8D8:
|
|
ldr r2, _0804A8E4
|
|
adds r0, r3, r2
|
|
_0804A8DC:
|
|
mov r3, r8
|
|
adds r2, r3, r0
|
|
b _0804A8FC
|
|
.align 2, 0
|
|
_0804A8E4: .4byte 0x00012b92
|
|
_0804A8E8:
|
|
lsls r0, r5, 1
|
|
ldr r4, _0804A968
|
|
adds r0, r4
|
|
mov r1, r8
|
|
adds r2, r1, r0
|
|
ldr r3, [sp, 0x28]
|
|
adds r3, 0x1
|
|
str r3, [sp, 0x3C]
|
|
adds r4, r7, 0x1
|
|
str r4, [sp, 0x38]
|
|
_0804A8FC:
|
|
movs r6, 0
|
|
_0804A8FE:
|
|
movs r0, 0x1F
|
|
ldr r1, [sp, 0x30]
|
|
ands r1, r0
|
|
str r1, [sp, 0x30]
|
|
ldr r3, [sp, 0x34]
|
|
ands r3, r0
|
|
lsls r0, r1, 1
|
|
lsls r1, r3, 6
|
|
adds r0, r1
|
|
ldr r4, _0804A96C
|
|
adds r0, r4
|
|
ldrh r1, [r2]
|
|
strh r1, [r0]
|
|
adds r2, 0x6
|
|
adds r3, 0x1
|
|
str r3, [sp, 0x34]
|
|
ldr r0, [sp, 0x2C]
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x2C]
|
|
adds r7, r6, 0x1
|
|
cmp r0, 0x3
|
|
beq _0804A92C
|
|
b _0804AA20
|
|
_0804A92C:
|
|
movs r1, 0
|
|
str r1, [sp, 0x2C]
|
|
movs r2, 0x1
|
|
add r9, r2
|
|
ldr r5, [sp, 0x28]
|
|
add r4, sp, 0x18
|
|
mov r3, r10
|
|
strh r3, [r4]
|
|
adds r0, r4, 0
|
|
mov r1, r9
|
|
strh r1, [r0, 0x2]
|
|
ldr r2, [sp, 0x20]
|
|
cmp r2, 0
|
|
beq _0804A984
|
|
ldr r3, [sp, 0x1C]
|
|
movs r4, 0
|
|
ldrsh r0, [r3, r4]
|
|
cmp r10, r0
|
|
bne _0804A974
|
|
movs r1, 0x2
|
|
ldrsh r0, [r3, r1]
|
|
cmp r9, r0
|
|
bne _0804A974
|
|
ldr r2, [sp, 0x28]
|
|
lsls r0, r2, 1
|
|
ldr r3, _0804A970
|
|
adds r0, r3
|
|
mov r4, r8
|
|
adds r2, r4, r0
|
|
b _0804AA20
|
|
.align 2, 0
|
|
_0804A968: .4byte 0x00013554
|
|
_0804A96C: .4byte gUnknown_202C038
|
|
_0804A970: .4byte 0x00012b92
|
|
_0804A974:
|
|
lsls r0, r5, 1
|
|
ldr r1, _0804A980
|
|
adds r0, r1
|
|
mov r3, r8
|
|
adds r2, r3, r0
|
|
b _0804AA1E
|
|
.align 2, 0
|
|
_0804A980: .4byte 0x00013554
|
|
_0804A984:
|
|
ldr r0, [sp, 0x24]
|
|
adds r1, r4, 0
|
|
bl sub_807049C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0804AA14
|
|
ldr r0, [sp, 0x24]
|
|
adds r1, r4, 0
|
|
bl sub_8045AAC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0804AA14
|
|
movs r2, 0
|
|
mov r0, sp
|
|
movs r4, 0
|
|
ldrsh r0, [r0, r4]
|
|
ldr r1, [sp, 0x28]
|
|
lsls r3, r1, 1
|
|
cmp r0, r10
|
|
bne _0804A9BA
|
|
mov r0, sp
|
|
movs r4, 0x2
|
|
ldrsh r0, [r0, r4]
|
|
cmp r0, r9
|
|
beq _0804A9D6
|
|
_0804A9BA:
|
|
adds r2, 0x1
|
|
cmp r2, 0x5
|
|
bgt _0804A9D6
|
|
lsls r0, r2, 2
|
|
mov r4, sp
|
|
adds r1, r4, r0
|
|
movs r4, 0
|
|
ldrsh r0, [r1, r4]
|
|
cmp r0, r10
|
|
bne _0804A9BA
|
|
movs r4, 0x2
|
|
ldrsh r0, [r1, r4]
|
|
cmp r0, r9
|
|
bne _0804A9BA
|
|
_0804A9D6:
|
|
cmp r2, 0x6
|
|
bne _0804AA04
|
|
ldr r0, _0804A9EC
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x3]
|
|
cmp r0, 0
|
|
beq _0804A9F4
|
|
ldr r1, _0804A9F0
|
|
adds r0, r3, r1
|
|
b _0804AA08
|
|
.align 2, 0
|
|
_0804A9EC: .4byte gUnknown_203B46C
|
|
_0804A9F0: .4byte 0x00012b80
|
|
_0804A9F4:
|
|
ldr r4, _0804AA00
|
|
adds r0, r3, r4
|
|
mov r1, r8
|
|
adds r2, r1, r0
|
|
b _0804AA20
|
|
.align 2, 0
|
|
_0804AA00: .4byte 0x00013554
|
|
_0804AA04:
|
|
ldr r2, _0804AA10
|
|
adds r0, r3, r2
|
|
_0804AA08:
|
|
mov r3, r8
|
|
adds r2, r3, r0
|
|
b _0804AA20
|
|
.align 2, 0
|
|
_0804AA10: .4byte 0x00012b92
|
|
_0804AA14:
|
|
lsls r0, r5, 1
|
|
ldr r4, _0804AA5C
|
|
adds r0, r4
|
|
mov r1, r8
|
|
adds r2, r1, r0
|
|
_0804AA1E:
|
|
adds r7, r6, 0x1
|
|
_0804AA20:
|
|
adds r6, r7, 0
|
|
cmp r6, 0x14
|
|
bgt _0804AA28
|
|
b _0804A8FE
|
|
_0804AA28:
|
|
ldr r2, [sp, 0x30]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x30]
|
|
ldr r3, [sp, 0x3C]
|
|
str r3, [sp, 0x28]
|
|
cmp r3, 0x3
|
|
bne _0804AA3E
|
|
movs r4, 0
|
|
str r4, [sp, 0x28]
|
|
movs r0, 0x1
|
|
add r10, r0
|
|
_0804AA3E:
|
|
ldr r7, [sp, 0x38]
|
|
cmp r7, 0x1E
|
|
bgt _0804AA46
|
|
b _0804A7AC
|
|
_0804AA46:
|
|
movs r0, 0x2
|
|
bl sub_80098F8
|
|
add sp, 0x40
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804AA5C: .4byte 0x00013554
|
|
thumb_func_end sub_804A728
|
|
|
|
thumb_func_start sub_804AA60
|
|
sub_804AA60:
|
|
push {r4,lr}
|
|
movs r1, 0
|
|
ldr r0, _0804AAA0
|
|
movs r3, 0
|
|
movs r2, 0x80
|
|
lsls r2, 5
|
|
adds r4, r0, r2
|
|
_0804AA6E:
|
|
lsls r0, r1, 6
|
|
adds r2, r1, 0x1
|
|
movs r1, 0x1F
|
|
adds r0, r4
|
|
adds r0, 0x3E
|
|
_0804AA78:
|
|
strh r3, [r0]
|
|
subs r0, 0x2
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bge _0804AA78
|
|
adds r1, r2, 0
|
|
cmp r1, 0x1F
|
|
ble _0804AA6E
|
|
movs r4, 0
|
|
movs r0, 0x2
|
|
bl sub_80098F8
|
|
ldr r0, _0804AAA4
|
|
ldr r0, [r0]
|
|
ldr r1, _0804AAA8
|
|
adds r0, r1
|
|
strb r4, [r0]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804AAA0: .4byte gUnknown_202B038
|
|
_0804AAA4: .4byte gDungeonGlobalData
|
|
_0804AAA8: .4byte 0x0001821a
|
|
thumb_func_end sub_804AA60
|
|
|
|
thumb_func_start sub_804AAAC
|
|
sub_804AAAC:
|
|
push {r4-r7,lr}
|
|
movs r5, 0
|
|
movs r7, 0
|
|
_0804AAB2:
|
|
movs r4, 0
|
|
adds r6, r5, 0x1
|
|
_0804AAB6:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetMapEntity
|
|
strh r7, [r0, 0x4]
|
|
adds r4, 0x1
|
|
cmp r4, 0x37
|
|
ble _0804AAB6
|
|
adds r5, r6, 0
|
|
cmp r5, 0x1F
|
|
ble _0804AAB2
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804AAAC
|
|
|
|
thumb_func_start sub_804AAD4
|
|
sub_804AAD4:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
ldr r4, _0804AC04
|
|
movs r0, 0
|
|
mov r8, r0
|
|
ldr r6, _0804AC08
|
|
ldr r5, _0804AC0C
|
|
movs r2, 0
|
|
movs r3, 0x1F
|
|
_0804AAEA:
|
|
ldr r0, [r4]
|
|
adds r0, r2
|
|
ldr r1, _0804AC10
|
|
adds r0, r1
|
|
mov r7, r8
|
|
strb r7, [r0]
|
|
ldr r0, [r4]
|
|
adds r0, r2
|
|
adds r1, 0x1
|
|
adds r0, r1
|
|
strb r7, [r0]
|
|
ldr r0, [r4]
|
|
adds r0, r2
|
|
ldr r7, _0804AC14
|
|
adds r1, r0, r7
|
|
strh r6, [r1]
|
|
adds r7, 0x2
|
|
adds r1, r0, r7
|
|
strh r6, [r1]
|
|
adds r7, 0x2
|
|
adds r1, r0, r7
|
|
strh r5, [r1]
|
|
ldr r1, _0804AC18
|
|
adds r0, r1
|
|
strh r5, [r0]
|
|
adds r2, 0x1C
|
|
subs r3, 0x1
|
|
cmp r3, 0
|
|
bge _0804AAEA
|
|
movs r4, 0
|
|
mov r9, r4
|
|
movs r6, 0
|
|
ldr r7, _0804AC04
|
|
mov r8, r7
|
|
_0804AB2E:
|
|
movs r4, 0
|
|
adds r5, r6, 0x1
|
|
_0804AB32:
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl GetMapTileAtPosition
|
|
ldrb r2, [r0, 0x9]
|
|
adds r3, r4, 0x1
|
|
cmp r2, 0xFF
|
|
beq _0804AB84
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
ldr r1, _0804AC10
|
|
adds r0, r1
|
|
mov r7, r8
|
|
ldr r1, [r7]
|
|
adds r1, r0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
movs r7, 0x2
|
|
ldrsh r0, [r1, r7]
|
|
cmp r0, r4
|
|
ble _0804AB60
|
|
strh r4, [r1, 0x2]
|
|
_0804AB60:
|
|
movs r4, 0x4
|
|
ldrsh r0, [r1, r4]
|
|
cmp r0, r6
|
|
ble _0804AB6A
|
|
strh r6, [r1, 0x4]
|
|
_0804AB6A:
|
|
movs r7, 0x6
|
|
ldrsh r0, [r1, r7]
|
|
cmp r0, r3
|
|
bge _0804AB74
|
|
strh r3, [r1, 0x6]
|
|
_0804AB74:
|
|
movs r4, 0x8
|
|
ldrsh r0, [r1, r4]
|
|
cmp r0, r5
|
|
bge _0804AB7E
|
|
strh r5, [r1, 0x8]
|
|
_0804AB7E:
|
|
cmp r9, r2
|
|
bge _0804AB84
|
|
mov r9, r2
|
|
_0804AB84:
|
|
adds r4, r3, 0
|
|
cmp r4, 0x37
|
|
ble _0804AB32
|
|
adds r6, r5, 0
|
|
cmp r6, 0x1F
|
|
ble _0804AB2E
|
|
ldr r7, _0804AC04
|
|
mov r8, r7
|
|
mov r5, r9
|
|
adds r5, 0x1
|
|
mov r6, r8
|
|
movs r4, 0
|
|
movs r3, 0x1F
|
|
_0804AB9E:
|
|
ldr r1, _0804AC10
|
|
adds r0, r4, r1
|
|
ldr r1, [r6]
|
|
adds r2, r1, r0
|
|
ldrb r0, [r2]
|
|
cmp r0, 0
|
|
beq _0804ABE4
|
|
movs r7, 0x2
|
|
ldrsh r1, [r2, r7]
|
|
subs r1, 0x1
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
str r0, [r2, 0xC]
|
|
movs r0, 0x4
|
|
ldrsh r1, [r2, r0]
|
|
subs r1, 0x1
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
str r0, [r2, 0x10]
|
|
movs r7, 0x6
|
|
ldrsh r1, [r2, r7]
|
|
adds r1, 0x1
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
str r0, [r2, 0x14]
|
|
movs r0, 0x8
|
|
ldrsh r1, [r2, r0]
|
|
adds r1, 0x1
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsls r0, 3
|
|
str r0, [r2, 0x18]
|
|
_0804ABE4:
|
|
adds r4, 0x1C
|
|
subs r3, 0x1
|
|
cmp r3, 0
|
|
bge _0804AB9E
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
ldr r4, _0804AC1C
|
|
adds r0, r4
|
|
strb r5, [r0]
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804AC04: .4byte gDungeonGlobalData
|
|
_0804AC08: .4byte 0x0000270f
|
|
_0804AC0C: .4byte 0x0000d8f1
|
|
_0804AC10: .4byte 0x000104c4
|
|
_0804AC14: .4byte 0x000104c6
|
|
_0804AC18: .4byte 0x000104cc
|
|
_0804AC1C: .4byte 0x000104c0
|
|
thumb_func_end sub_804AAD4
|
|
|
|
thumb_func_start sub_804AC20
|
|
sub_804AC20:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
adds r4, r0, 0
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r4, r2]
|
|
bl GetMapTileAtPosition
|
|
ldrb r1, [r0, 0x9]
|
|
ldr r0, _0804AC6C
|
|
ldr r3, [r0]
|
|
ldr r5, _0804AC70
|
|
adds r0, r3, r5
|
|
ldrb r2, [r0]
|
|
adds r5, 0x1
|
|
adds r0, r3, r5
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0804ACD4
|
|
cmp r2, 0
|
|
bne _0804AC52
|
|
movs r2, 0x2
|
|
_0804AC52:
|
|
cmp r1, 0xFF
|
|
bne _0804AC74
|
|
movs r0, 0
|
|
ldrsh r1, [r4, r0]
|
|
subs r3, r1, r2
|
|
mov r9, r3
|
|
movs r5, 0x2
|
|
ldrsh r0, [r4, r5]
|
|
subs r3, r0, r2
|
|
adds r6, r1, r2
|
|
adds r0, r2
|
|
mov r8, r0
|
|
b _0804ACA2
|
|
.align 2, 0
|
|
_0804AC6C: .4byte gDungeonGlobalData
|
|
_0804AC70: .4byte 0x00018209
|
|
_0804AC74:
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
ldr r1, _0804ACE0
|
|
adds r0, r1
|
|
adds r2, r3, r0
|
|
ldrb r0, [r2, 0x1]
|
|
cmp r0, 0
|
|
bne _0804ACD4
|
|
movs r0, 0x1
|
|
strb r0, [r2, 0x1]
|
|
movs r3, 0x2
|
|
ldrsh r0, [r2, r3]
|
|
subs r0, 0x1
|
|
mov r9, r0
|
|
movs r5, 0x4
|
|
ldrsh r0, [r2, r5]
|
|
subs r3, r0, 0x1
|
|
movs r0, 0x6
|
|
ldrsh r6, [r2, r0]
|
|
movs r5, 0x8
|
|
ldrsh r1, [r2, r5]
|
|
mov r8, r1
|
|
_0804ACA2:
|
|
adds r5, r3, 0
|
|
cmp r5, r8
|
|
bgt _0804ACD4
|
|
_0804ACA8:
|
|
mov r4, r9
|
|
adds r7, r5, 0x1
|
|
cmp r4, r6
|
|
bgt _0804ACCE
|
|
_0804ACB0:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0, 0x4]
|
|
movs r1, 0x3
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl sub_80402AC
|
|
adds r4, 0x1
|
|
cmp r4, r6
|
|
ble _0804ACB0
|
|
_0804ACCE:
|
|
adds r5, r7, 0
|
|
cmp r5, r8
|
|
ble _0804ACA8
|
|
_0804ACD4:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804ACE0: .4byte 0x000104c4
|
|
thumb_func_end sub_804AC20
|
|
|
|
thumb_func_start sub_804ACE4
|
|
sub_804ACE4:
|
|
push {lr}
|
|
movs r1, 0
|
|
ldrsh r2, [r0, r1]
|
|
movs r3, 0x2
|
|
ldrsh r1, [r0, r3]
|
|
adds r0, r2, 0
|
|
bl GetMapTileAtPosition
|
|
ldr r0, [r0, 0x14]
|
|
cmp r0, 0
|
|
beq _0804AD06
|
|
bl GetEntityType
|
|
cmp r0, 0x3
|
|
bne _0804AD06
|
|
movs r0, 0x1
|
|
b _0804AD08
|
|
_0804AD06:
|
|
movs r0, 0
|
|
_0804AD08:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_804ACE4
|
|
|
|
thumb_func_start sub_804AD0C
|
|
sub_804AD0C:
|
|
push {lr}
|
|
movs r1, 0
|
|
ldrsh r2, [r0, r1]
|
|
movs r3, 0x2
|
|
ldrsh r1, [r0, r3]
|
|
adds r0, r2, 0
|
|
bl GetMapTileAtPosition
|
|
ldr r1, [r0, 0x10]
|
|
cmp r1, 0
|
|
beq _0804AD2C
|
|
ldr r0, [r1]
|
|
cmp r0, 0x1
|
|
bne _0804AD2C
|
|
adds r0, r1, 0
|
|
b _0804AD2E
|
|
_0804AD2C:
|
|
movs r0, 0
|
|
_0804AD2E:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_804AD0C
|
|
|
|
thumb_func_start sub_804AD34
|
|
sub_804AD34:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r6, r0, 0
|
|
movs r0, 0
|
|
mov r8, r0
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r6, r2]
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrh r1, [r2]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0804ADB6
|
|
movs r0, 0x88
|
|
lsls r0, 1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0804ADB6
|
|
movs r0, 0x1
|
|
mov r8, r0
|
|
ldr r0, _0804ADFC
|
|
ands r0, r1
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
movs r5, 0x1
|
|
negs r5, r5
|
|
_0804AD74:
|
|
movs r4, 0x1
|
|
negs r4, r4
|
|
adds r7, r5, 0x1
|
|
_0804AD7A:
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
adds r0, r4, r0
|
|
movs r2, 0x2
|
|
ldrsh r1, [r6, r2]
|
|
adds r1, r5, r1
|
|
bl sub_80498A8
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
adds r0, r4, r0
|
|
movs r2, 0x2
|
|
ldrsh r1, [r6, r2]
|
|
adds r1, r5, r1
|
|
bl sub_8049BB0
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
adds r0, r4, r0
|
|
movs r2, 0x2
|
|
ldrsh r1, [r6, r2]
|
|
adds r1, r5, r1
|
|
bl sub_80402AC
|
|
adds r4, 0x1
|
|
cmp r4, 0x1
|
|
ble _0804AD7A
|
|
adds r5, r7, 0
|
|
cmp r5, 0x1
|
|
ble _0804AD74
|
|
_0804ADB6:
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _0804ADEE
|
|
movs r5, 0
|
|
_0804ADBE:
|
|
ldr r0, _0804AE00
|
|
ldr r0, [r0]
|
|
lsls r1, r5, 2
|
|
ldr r2, _0804AE04
|
|
adds r0, r2
|
|
adds r0, r1
|
|
ldr r4, [r0]
|
|
adds r0, r4, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0804ADDE
|
|
adds r0, r4, 0
|
|
bl sub_806CF98
|
|
_0804ADDE:
|
|
adds r5, 0x1
|
|
cmp r5, 0x13
|
|
ble _0804ADBE
|
|
bl sub_8049ED4
|
|
adds r0, r6, 0
|
|
bl sub_8042A14
|
|
_0804ADEE:
|
|
mov r0, r8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0804ADFC: .4byte 0x0000fffc
|
|
_0804AE00: .4byte gDungeonGlobalData
|
|
_0804AE04: .4byte 0x000135cc
|
|
thumb_func_end sub_804AD34
|
|
|
|
thumb_func_start sub_804AE08
|
|
sub_804AE08:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r7, r0, 0
|
|
movs r0, 0
|
|
mov r8, r0
|
|
movs r1, 0
|
|
ldrsh r0, [r7, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r7, r2]
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrh r1, [r2]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0804AE72
|
|
movs r0, 0x88
|
|
lsls r0, 1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0804AE72
|
|
movs r0, 0x1
|
|
mov r8, r0
|
|
ldr r0, _0804AE80
|
|
ands r0, r1
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
ldrh r1, [r2, 0x4]
|
|
movs r0, 0x10
|
|
orrs r0, r1
|
|
strh r0, [r2, 0x4]
|
|
movs r5, 0x1
|
|
negs r5, r5
|
|
_0804AE50:
|
|
movs r4, 0x1
|
|
negs r4, r4
|
|
adds r6, r5, 0x1
|
|
_0804AE56:
|
|
movs r1, 0
|
|
ldrsh r0, [r7, r1]
|
|
adds r0, r4, r0
|
|
movs r2, 0x2
|
|
ldrsh r1, [r7, r2]
|
|
adds r1, r5, r1
|
|
bl sub_8049BB0
|
|
adds r4, 0x1
|
|
cmp r4, 0x1
|
|
ble _0804AE56
|
|
adds r5, r6, 0
|
|
cmp r5, 0x1
|
|
ble _0804AE50
|
|
_0804AE72:
|
|
mov r0, r8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0804AE80: .4byte 0x0000fffc
|
|
thumb_func_end sub_804AE08
|
|
|
|
thumb_func_start sub_804AE84
|
|
sub_804AE84:
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r5, r2]
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrh r1, [r2, 0x4]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804AF0E
|
|
ldr r0, _0804AF14
|
|
ands r0, r1
|
|
strh r0, [r2, 0x4]
|
|
movs r6, 0x1
|
|
negs r6, r6
|
|
_0804AEAA:
|
|
movs r4, 0x1
|
|
negs r4, r4
|
|
adds r7, r6, 0x1
|
|
_0804AEB0:
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
adds r0, r4, r0
|
|
movs r2, 0x2
|
|
ldrsh r1, [r5, r2]
|
|
adds r1, r6, r1
|
|
bl sub_80498A8
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
adds r0, r4, r0
|
|
movs r2, 0x2
|
|
ldrsh r1, [r5, r2]
|
|
adds r1, r6, r1
|
|
bl sub_80402AC
|
|
adds r4, 0x1
|
|
cmp r4, 0x1
|
|
ble _0804AEB0
|
|
adds r6, r7, 0
|
|
cmp r6, 0x1
|
|
ble _0804AEAA
|
|
movs r6, 0
|
|
_0804AEDE:
|
|
ldr r0, _0804AF18
|
|
ldr r0, [r0]
|
|
lsls r1, r6, 2
|
|
ldr r2, _0804AF1C
|
|
adds r0, r2
|
|
adds r0, r1
|
|
ldr r4, [r0]
|
|
adds r0, r4, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0804AEFE
|
|
adds r0, r4, 0
|
|
bl sub_806CF98
|
|
_0804AEFE:
|
|
adds r6, 0x1
|
|
cmp r6, 0x13
|
|
ble _0804AEDE
|
|
bl sub_8049ED4
|
|
adds r0, r5, 0
|
|
bl sub_8042A14
|
|
_0804AF0E:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804AF14: .4byte 0x0000ffef
|
|
_0804AF18: .4byte gDungeonGlobalData
|
|
_0804AF1C: .4byte 0x000135cc
|
|
thumb_func_end sub_804AE84
|
|
|
|
thumb_func_start IsTileWater
|
|
IsTileWater:
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r5, 0
|
|
bl IsWaterTileset
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0804AF3C
|
|
ldrh r1, [r4]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0804AF5E
|
|
b _0804AF5C
|
|
_0804AF3C:
|
|
ldrh r1, [r4]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
bne _0804AF5C
|
|
ldr r1, _0804AF68
|
|
ldr r0, _0804AF6C
|
|
ldr r0, [r0]
|
|
ldr r2, _0804AF70
|
|
adds r0, r2
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _0804AF5E
|
|
_0804AF5C:
|
|
movs r5, 0x1
|
|
_0804AF5E:
|
|
adds r0, r5, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0804AF68: .4byte gDungeonWaterType
|
|
_0804AF6C: .4byte gDungeonGlobalData
|
|
_0804AF70: .4byte 0x00003a0e
|
|
thumb_func_end IsTileWater
|
|
|
|
thumb_func_start IsWaterTileset
|
|
IsWaterTileset:
|
|
push {lr}
|
|
ldr r0, _0804AF9C
|
|
ldr r0, [r0]
|
|
ldr r1, _0804AFA0
|
|
adds r0, r1
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
beq _0804AF96
|
|
cmp r0, 0x31
|
|
beq _0804AF96
|
|
cmp r0, 0x20
|
|
beq _0804AF96
|
|
cmp r0, 0x21
|
|
beq _0804AF96
|
|
cmp r0, 0x36
|
|
bne _0804AFA4
|
|
_0804AF96:
|
|
movs r0, 0x1
|
|
b _0804AFA6
|
|
.align 2, 0
|
|
_0804AF9C: .4byte gDungeonGlobalData
|
|
_0804AFA0: .4byte 0x00003a0e
|
|
_0804AFA4:
|
|
movs r0, 0
|
|
_0804AFA6:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end IsWaterTileset
|
|
|
|
thumb_func_start sub_804AFAC
|
|
sub_804AFAC:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x44
|
|
movs r0, 0
|
|
mov r10, r0
|
|
ldr r4, _0804B0E8
|
|
ldr r0, [r4]
|
|
ldr r1, _0804B0EC
|
|
adds r1, r0
|
|
mov r8, r1
|
|
ldr r0, _0804B0F0
|
|
ldr r1, _0804B0F4
|
|
bl OpenFileAndGetFileDataPtr
|
|
ldr r2, [r4]
|
|
ldr r3, _0804B0F8
|
|
adds r1, r2, r3
|
|
str r0, [r1]
|
|
ldr r0, _0804B0FC
|
|
mov r6, r10
|
|
strb r6, [r0]
|
|
ldr r0, _0804B100
|
|
strb r6, [r0]
|
|
ldr r0, _0804B104
|
|
strb r6, [r0]
|
|
ldr r5, _0804B108
|
|
movs r3, 0
|
|
ldr r1, _0804B10C
|
|
ldr r0, _0804B110
|
|
adds r2, r0
|
|
movs r6, 0
|
|
ldrsh r0, [r2, r6]
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
bne _0804AFFC
|
|
movs r3, 0x1
|
|
_0804AFFC:
|
|
strb r3, [r5]
|
|
ldr r1, _0804B114
|
|
movs r0, 0xFF
|
|
strb r0, [r1]
|
|
ldr r0, _0804B118
|
|
mov r1, r10
|
|
strb r1, [r0]
|
|
ldr r1, _0804B11C
|
|
mov r2, r8
|
|
ldrb r0, [r2, 0x7]
|
|
strh r0, [r1]
|
|
ldr r1, _0804B120
|
|
ldrb r0, [r2, 0x8]
|
|
strh r0, [r1]
|
|
ldr r1, _0804B124
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r1, _0804B128
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r0, [r1]
|
|
str r0, [r1, 0x8]
|
|
str r0, [r1, 0x4]
|
|
str r0, [r1, 0xC]
|
|
bl sub_804FD30
|
|
ldr r3, [r4]
|
|
mov r6, r8
|
|
ldrb r2, [r6, 0x6]
|
|
ldr r1, _0804B12C
|
|
adds r0, r3, r1
|
|
movs r1, 0
|
|
strh r2, [r0]
|
|
ldr r2, _0804B130
|
|
adds r0, r3, r2
|
|
strb r1, [r0]
|
|
ldr r0, [r4]
|
|
ldr r3, _0804B134
|
|
adds r0, r3
|
|
strb r1, [r0]
|
|
ldr r1, _0804B138
|
|
mov r6, r8
|
|
ldrb r0, [r6, 0xC]
|
|
str r0, [r1]
|
|
movs r0, 0
|
|
str r0, [sp, 0x40]
|
|
_0804B058:
|
|
ldr r0, _0804B0E8
|
|
ldr r2, [r0]
|
|
ldr r3, _0804B13C
|
|
adds r1, r2, r3
|
|
ldr r0, _0804B140
|
|
strh r0, [r1]
|
|
ldr r6, _0804B144
|
|
adds r1, r2, r6
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
strh r0, [r1]
|
|
ldr r0, _0804B148
|
|
adds r1, r2, r0
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
strh r0, [r1]
|
|
ldr r1, _0804B14C
|
|
adds r2, r1
|
|
strh r0, [r2]
|
|
movs r2, 0
|
|
mov r9, r2
|
|
_0804B082:
|
|
ldr r4, _0804B0E8
|
|
ldr r0, [r4]
|
|
ldr r3, _0804B150
|
|
adds r0, r3
|
|
movs r5, 0
|
|
movs r1, 0
|
|
mov r6, r9
|
|
strh r6, [r0]
|
|
mov r0, r9
|
|
cmp r0, 0
|
|
ble _0804B09C
|
|
ldr r0, _0804B138
|
|
str r1, [r0]
|
|
_0804B09C:
|
|
ldr r0, _0804B154
|
|
strb r5, [r0]
|
|
ldr r1, _0804B158
|
|
ldr r0, _0804B140
|
|
strh r0, [r1]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
strh r0, [r1, 0x2]
|
|
bl sub_804FD30
|
|
ldr r1, [r4]
|
|
ldr r3, _0804B13C
|
|
adds r2, r1, r3
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
strh r0, [r2]
|
|
ldr r6, _0804B144
|
|
adds r2, r1, r6
|
|
strh r0, [r2]
|
|
ldr r0, _0804B15C
|
|
adds r1, r0
|
|
strb r5, [r1]
|
|
ldr r0, [r4]
|
|
ldr r2, _0804B160
|
|
adds r1, r0, r2
|
|
movs r3, 0
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
beq _0804B164
|
|
mov r1, r8
|
|
bl sub_804C70C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0804B0E4
|
|
b _0804B376
|
|
_0804B0E4:
|
|
b _0804B2F6
|
|
.align 2, 0
|
|
_0804B0E8: .4byte gDungeonGlobalData
|
|
_0804B0EC: .4byte 0x0001c574
|
|
_0804B0F0: .4byte gUnknown_80F6DCC
|
|
_0804B0F4: .4byte gDungeonFileArchive
|
|
_0804B0F8: .4byte 0x00013568
|
|
_0804B0FC: .4byte gUnknown_202F1AA
|
|
_0804B100: .4byte gUnknown_202F1AB
|
|
_0804B104: .4byte gUnknown_202F1AC
|
|
_0804B108: .4byte gUnknown_202F1A8
|
|
_0804B10C: .4byte gDungeonWaterType
|
|
_0804B110: .4byte 0x00003a0e
|
|
_0804B114: .4byte gUnknown_202F1B4
|
|
_0804B118: .4byte gUnknown_202F1AE
|
|
_0804B11C: .4byte gUnknown_202F1B0
|
|
_0804B120: .4byte gUnknown_202F1B2
|
|
_0804B124: .4byte gUnknown_202F1AD
|
|
_0804B128: .4byte gUnknown_202F1B8
|
|
_0804B12C: .4byte 0x00000664
|
|
_0804B130: .4byte 0x00003a09
|
|
_0804B134: .4byte 0x00003a0a
|
|
_0804B138: .4byte gUnknown_202F1C8
|
|
_0804B13C: .4byte 0x0000e218
|
|
_0804B140: .4byte 0x0000ffff
|
|
_0804B144: .4byte 0x0000e21a
|
|
_0804B148: .4byte 0x0000e21c
|
|
_0804B14C: .4byte 0x0000e21e
|
|
_0804B150: .4byte 0x00003a16
|
|
_0804B154: .4byte gUnknown_202F1A9
|
|
_0804B158: .4byte gUnknown_202F1D8
|
|
_0804B15C: .4byte 0x00003a08
|
|
_0804B160: .4byte 0x00003a14
|
|
_0804B164:
|
|
mov r0, r8
|
|
ldrb r7, [r0]
|
|
movs r6, 0x20
|
|
_0804B16A:
|
|
cmp r7, 0x8
|
|
beq _0804B17E
|
|
movs r0, 0x2
|
|
movs r1, 0x9
|
|
bl sub_808411C
|
|
adds r5, r0, 0
|
|
movs r0, 0x2
|
|
movs r1, 0x8
|
|
b _0804B18C
|
|
_0804B17E:
|
|
movs r0, 0x2
|
|
movs r1, 0x5
|
|
bl sub_808411C
|
|
adds r5, r0, 0
|
|
movs r0, 0x2
|
|
movs r1, 0x4
|
|
_0804B18C:
|
|
bl sub_808411C
|
|
adds r4, r0, 0
|
|
cmp r5, 0x6
|
|
bgt _0804B19A
|
|
cmp r4, 0x4
|
|
ble _0804B1A4
|
|
_0804B19A:
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bne _0804B16A
|
|
movs r5, 0x4
|
|
movs r4, 0x4
|
|
_0804B1A4:
|
|
movs r0, 0x38
|
|
adds r1, r5, 0
|
|
bl __divsi3
|
|
cmp r0, 0x7
|
|
bgt _0804B1B2
|
|
movs r5, 0x1
|
|
_0804B1B2:
|
|
movs r0, 0x20
|
|
adds r1, r4, 0
|
|
bl __divsi3
|
|
cmp r0, 0x7
|
|
bgt _0804B1C0
|
|
movs r4, 0x1
|
|
_0804B1C0:
|
|
ldr r2, _0804B1EC
|
|
ldr r0, [r2]
|
|
ldr r1, _0804B1F0
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
ldr r2, _0804B1F4
|
|
adds r0, r2
|
|
movs r1, 0xFF
|
|
strb r1, [r0]
|
|
ldr r0, _0804B1F8
|
|
str r7, [r0]
|
|
movs r0, 0xF
|
|
ands r0, r7
|
|
cmp r0, 0xB
|
|
bhi _0804B274
|
|
lsls r0, 2
|
|
ldr r1, _0804B1FC
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0804B1EC: .4byte gDungeonGlobalData
|
|
_0804B1F0: .4byte 0x00003a08
|
|
_0804B1F4: .4byte 0x00003a0c
|
|
_0804B1F8: .4byte gUnknown_202F1D0
|
|
_0804B1FC: .4byte _0804B200
|
|
.align 2, 0
|
|
_0804B200:
|
|
.4byte _0804B274
|
|
.4byte _0804B230
|
|
.4byte _0804B280
|
|
.4byte _0804B298
|
|
.4byte _0804B2A4
|
|
.4byte _0804B2B0
|
|
.4byte _0804B2CC
|
|
.4byte _0804B2D8
|
|
.4byte _0804B274
|
|
.4byte _0804B2E0
|
|
.4byte _0804B2E8
|
|
.4byte _0804B250
|
|
_0804B230:
|
|
movs r0, 0x2
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0x2
|
|
ldr r1, _0804B24C
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
movs r0, 0x4
|
|
adds r1, r4, 0
|
|
mov r2, r8
|
|
bl sub_804B634
|
|
b _0804B2AA
|
|
.align 2, 0
|
|
_0804B24C: .4byte gUnknown_202F1AE
|
|
_0804B250:
|
|
movs r0, 0x2
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0x2
|
|
ldr r1, _0804B270
|
|
movs r0, 0x2
|
|
strb r0, [r1]
|
|
movs r0, 0x4
|
|
adds r1, r4, 0
|
|
mov r2, r8
|
|
bl sub_804B634
|
|
movs r6, 0x1
|
|
mov r10, r6
|
|
b _0804B2F6
|
|
.align 2, 0
|
|
_0804B270: .4byte gUnknown_202F1AE
|
|
_0804B274:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
mov r2, r8
|
|
bl sub_804B634
|
|
b _0804B2D2
|
|
_0804B280:
|
|
bl sub_804C918
|
|
ldr r0, _0804B290
|
|
ldr r0, [r0]
|
|
ldr r1, _0804B294
|
|
adds r0, r1
|
|
b _0804B2BC
|
|
.align 2, 0
|
|
_0804B290: .4byte gDungeonGlobalData
|
|
_0804B294: .4byte 0x00003a08
|
|
_0804B298:
|
|
mov r0, r8
|
|
bl sub_804B72C
|
|
movs r2, 0x1
|
|
mov r10, r2
|
|
b _0804B2F6
|
|
_0804B2A4:
|
|
mov r0, r8
|
|
bl sub_804BC80
|
|
_0804B2AA:
|
|
movs r3, 0x1
|
|
mov r10, r3
|
|
b _0804B2F6
|
|
_0804B2B0:
|
|
bl sub_804C9D0
|
|
ldr r0, _0804B2C4
|
|
ldr r0, [r0]
|
|
ldr r6, _0804B2C8
|
|
adds r0, r6
|
|
_0804B2BC:
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
b _0804B2F6
|
|
.align 2, 0
|
|
_0804B2C4: .4byte gDungeonGlobalData
|
|
_0804B2C8: .4byte 0x00003a08
|
|
_0804B2CC:
|
|
mov r0, r8
|
|
bl sub_804C0A8
|
|
_0804B2D2:
|
|
movs r0, 0x1
|
|
mov r10, r0
|
|
b _0804B2F6
|
|
_0804B2D8:
|
|
mov r0, r8
|
|
bl sub_804C190
|
|
b _0804B2F6
|
|
_0804B2E0:
|
|
mov r0, r8
|
|
bl sub_804C2F4
|
|
b _0804B2F6
|
|
_0804B2E8:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
mov r2, r8
|
|
bl sub_804C53C
|
|
movs r1, 0x1
|
|
mov r10, r1
|
|
_0804B2F6:
|
|
bl sub_80518F0
|
|
bl sub_804FCCC
|
|
ldr r0, _0804B4B4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0804B36A
|
|
movs r7, 0
|
|
movs r1, 0
|
|
mov r0, sp
|
|
adds r0, 0x3F
|
|
_0804B30E:
|
|
strb r1, [r0]
|
|
subs r0, 0x1
|
|
cmp r0, sp
|
|
bge _0804B30E
|
|
movs r5, 0
|
|
_0804B318:
|
|
movs r4, 0
|
|
adds r6, r5, 0x1
|
|
_0804B31C:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
adds r1, r0, 0
|
|
ldrh r0, [r1]
|
|
movs r2, 0x3
|
|
ands r2, r0
|
|
cmp r2, 0x1
|
|
bne _0804B340
|
|
ldrb r0, [r1, 0x9]
|
|
cmp r0, 0xF0
|
|
bhi _0804B340
|
|
adds r7, 0x1
|
|
cmp r0, 0x3F
|
|
bhi _0804B340
|
|
add r0, sp
|
|
strb r2, [r0]
|
|
_0804B340:
|
|
adds r4, 0x1
|
|
cmp r4, 0x1F
|
|
ble _0804B31C
|
|
adds r5, r6, 0
|
|
cmp r5, 0x37
|
|
ble _0804B318
|
|
movs r1, 0
|
|
movs r4, 0
|
|
_0804B350:
|
|
mov r2, sp
|
|
adds r0, r2, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0804B35C
|
|
adds r1, 0x1
|
|
_0804B35C:
|
|
adds r4, 0x1
|
|
cmp r4, 0x3F
|
|
ble _0804B350
|
|
cmp r7, 0x1D
|
|
ble _0804B36A
|
|
cmp r1, 0x1
|
|
bgt _0804B376
|
|
_0804B36A:
|
|
movs r3, 0x1
|
|
add r9, r3
|
|
mov r6, r9
|
|
cmp r6, 0x9
|
|
bgt _0804B376
|
|
b _0804B082
|
|
_0804B376:
|
|
mov r0, r9
|
|
cmp r0, 0xA
|
|
bne _0804B398
|
|
ldr r1, _0804B4B8
|
|
ldr r0, _0804B4BC
|
|
strh r0, [r1]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
strh r0, [r1, 0x2]
|
|
bl sub_804C918
|
|
ldr r0, _0804B4C0
|
|
ldr r0, [r0]
|
|
ldr r1, _0804B4C4
|
|
adds r0, r1
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
_0804B398:
|
|
bl sub_804E9DC
|
|
mov r2, r10
|
|
cmp r2, 0
|
|
beq _0804B3AA
|
|
movs r0, 0x1
|
|
mov r1, r8
|
|
bl sub_80506F0
|
|
_0804B3AA:
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
movs r4, 0
|
|
mov r3, r8
|
|
ldrb r3, [r3, 0x19]
|
|
cmp r0, r3
|
|
bge _0804B3BC
|
|
movs r4, 0x1
|
|
_0804B3BC:
|
|
mov r0, r8
|
|
adds r1, r4, 0
|
|
bl sub_804FF08
|
|
mov r0, r8
|
|
adds r1, r4, 0
|
|
bl sub_8050438
|
|
bl sub_804FBE8
|
|
ldr r5, _0804B4C0
|
|
ldr r1, [r5]
|
|
ldr r6, _0804B4C8
|
|
adds r0, r1, r6
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
movs r4, 0x1
|
|
negs r4, r4
|
|
cmp r0, r4
|
|
beq _0804B42A
|
|
ldr r3, _0804B4CC
|
|
adds r0, r1, r3
|
|
movs r6, 0
|
|
ldrsh r0, [r0, r6]
|
|
cmp r0, r4
|
|
beq _0804B42A
|
|
bl sub_8043D10
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
beq _0804B436
|
|
ldr r1, [r5]
|
|
ldr r0, _0804B4D0
|
|
adds r2, r1, r0
|
|
movs r3, 0
|
|
ldrsh r0, [r2, r3]
|
|
cmp r0, r4
|
|
beq _0804B42A
|
|
ldr r6, _0804B4D4
|
|
adds r1, r6
|
|
movs r3, 0
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, r4
|
|
beq _0804B42A
|
|
movs r6, 0
|
|
ldrsh r0, [r2, r6]
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
movs r2, 0
|
|
bl sub_8050C30
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0804B436
|
|
_0804B42A:
|
|
ldr r3, [sp, 0x40]
|
|
adds r3, 0x1
|
|
str r3, [sp, 0x40]
|
|
cmp r3, 0x9
|
|
bgt _0804B436
|
|
b _0804B058
|
|
_0804B436:
|
|
ldr r6, [sp, 0x40]
|
|
cmp r6, 0xA
|
|
bne _0804B474
|
|
ldr r1, _0804B4B8
|
|
ldr r0, _0804B4BC
|
|
strh r0, [r1]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
strh r0, [r1, 0x2]
|
|
bl sub_804FD30
|
|
bl sub_804C918
|
|
ldr r0, _0804B4C0
|
|
ldr r0, [r0]
|
|
ldr r1, _0804B4C4
|
|
adds r0, r1
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
bl sub_804E9DC
|
|
mov r0, r8
|
|
movs r1, 0
|
|
bl sub_804FF08
|
|
mov r0, r8
|
|
movs r1, 0
|
|
bl sub_8050438
|
|
bl sub_804FBE8
|
|
_0804B474:
|
|
ldr r1, _0804B4B8
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
blt _0804B498
|
|
movs r3, 0x2
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0
|
|
blt _0804B498
|
|
movs r6, 0
|
|
ldrsh r0, [r1, r6]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r1, r2]
|
|
movs r2, 0xBE
|
|
lsls r2, 1
|
|
movs r3, 0
|
|
bl sub_806C330
|
|
_0804B498:
|
|
ldr r0, _0804B4D8
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
blt _0804B4E0
|
|
mov r0, r8
|
|
bl sub_8051654
|
|
ldr r0, _0804B4C0
|
|
ldr r0, [r0]
|
|
ldr r3, _0804B4DC
|
|
adds r0, r3
|
|
movs r1, 0x1
|
|
b _0804B4EA
|
|
.align 2, 0
|
|
_0804B4B4: .4byte gUnknown_202F1A9
|
|
_0804B4B8: .4byte gUnknown_202F1D8
|
|
_0804B4BC: .4byte 0x0000ffff
|
|
_0804B4C0: .4byte gDungeonGlobalData
|
|
_0804B4C4: .4byte 0x00003a08
|
|
_0804B4C8: .4byte 0x0000e218
|
|
_0804B4CC: .4byte 0x0000e21a
|
|
_0804B4D0: .4byte 0x0000e21c
|
|
_0804B4D4: .4byte 0x0000e21e
|
|
_0804B4D8: .4byte gUnknown_202F1B8
|
|
_0804B4DC: .4byte 0x00003a0a
|
|
_0804B4E0:
|
|
ldr r0, _0804B524
|
|
ldr r0, [r0]
|
|
ldr r6, _0804B528
|
|
adds r0, r6
|
|
movs r1, 0
|
|
_0804B4EA:
|
|
strb r1, [r0]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
movs r2, 0x38
|
|
movs r3, 0x20
|
|
bl sub_804B534
|
|
ldr r0, _0804B52C
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0804B504
|
|
bl sub_804FC74
|
|
_0804B504:
|
|
ldr r0, _0804B524
|
|
ldr r0, [r0]
|
|
ldr r1, _0804B530
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
bl CloseFile
|
|
add sp, 0x44
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804B524: .4byte gDungeonGlobalData
|
|
_0804B528: .4byte 0x00003a0a
|
|
_0804B52C: .4byte gUnknown_202F1A8
|
|
_0804B530: .4byte 0x00013568
|
|
thumb_func_end sub_804AFAC
|
|
|
|
thumb_func_start sub_804B534
|
|
sub_804B534:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x10
|
|
str r1, [sp]
|
|
str r2, [sp, 0x4]
|
|
mov r10, r3
|
|
adds r5, r0, 0
|
|
cmp r5, r2
|
|
bge _0804B620
|
|
_0804B54C:
|
|
ldr r4, [sp]
|
|
adds r0, r5, 0x1
|
|
mov r9, r0
|
|
cmp r4, r10
|
|
bge _0804B618
|
|
movs r6, 0x3
|
|
mov r8, r6
|
|
_0804B55A:
|
|
movs r3, 0
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
str r3, [sp, 0xC]
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2]
|
|
ldr r6, _0804B630
|
|
adds r1, r6, 0
|
|
ands r1, r0
|
|
strh r1, [r2]
|
|
ldrb r0, [r2, 0x9]
|
|
adds r6, r4, 0x1
|
|
ldr r3, [sp, 0xC]
|
|
cmp r0, 0xFF
|
|
bne _0804B612
|
|
movs r7, 0x3
|
|
adds r0, r1, 0
|
|
ands r0, r7
|
|
cmp r0, 0x1
|
|
bne _0804B612
|
|
cmp r5, 0
|
|
ble _0804B5A4
|
|
subs r0, r5, 0x1
|
|
adds r1, r4, 0
|
|
str r2, [sp, 0x8]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
adds r0, r7, 0
|
|
ands r0, r1
|
|
ldr r2, [sp, 0x8]
|
|
ldr r3, [sp, 0xC]
|
|
cmp r0, 0x1
|
|
bne _0804B5A4
|
|
movs r3, 0x1
|
|
_0804B5A4:
|
|
cmp r4, 0
|
|
ble _0804B5C4
|
|
subs r1, r4, 0x1
|
|
adds r0, r5, 0
|
|
str r2, [sp, 0x8]
|
|
str r3, [sp, 0xC]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
ldr r2, [sp, 0x8]
|
|
ldr r3, [sp, 0xC]
|
|
cmp r0, 0x1
|
|
bne _0804B5C4
|
|
adds r3, 0x1
|
|
_0804B5C4:
|
|
cmp r5, 0x35
|
|
bgt _0804B5E4
|
|
mov r0, r9
|
|
adds r1, r4, 0
|
|
str r2, [sp, 0x8]
|
|
str r3, [sp, 0xC]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
ldr r2, [sp, 0x8]
|
|
ldr r3, [sp, 0xC]
|
|
cmp r0, 0x1
|
|
bne _0804B5E4
|
|
adds r3, 0x1
|
|
_0804B5E4:
|
|
adds r6, r4, 0x1
|
|
cmp r5, 0x1D
|
|
bgt _0804B606
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
str r2, [sp, 0x8]
|
|
str r3, [sp, 0xC]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
ldr r2, [sp, 0x8]
|
|
ldr r3, [sp, 0xC]
|
|
cmp r0, 0x1
|
|
bne _0804B606
|
|
adds r3, 0x1
|
|
_0804B606:
|
|
cmp r3, 0x2
|
|
ble _0804B612
|
|
ldrh r1, [r2]
|
|
movs r0, 0x8
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
_0804B612:
|
|
adds r4, r6, 0
|
|
cmp r4, r10
|
|
blt _0804B55A
|
|
_0804B618:
|
|
mov r5, r9
|
|
ldr r0, [sp, 0x4]
|
|
cmp r5, r0
|
|
blt _0804B54C
|
|
_0804B620:
|
|
add sp, 0x10
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804B630: .4byte 0x0000fffb
|
|
thumb_func_end sub_804B534
|
|
|
|
thumb_func_start sub_804B634
|
|
sub_804B634:
|
|
push {r4-r6,lr}
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5,r6}
|
|
ldr r4, _0804B718
|
|
add sp, r4
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
mov r9, r2
|
|
ldr r0, _0804B71C
|
|
add r0, sp
|
|
mov r8, r0
|
|
ldr r6, _0804B720
|
|
add r6, sp
|
|
adds r1, r6, 0
|
|
adds r2, r4, 0
|
|
adds r3, r5, 0
|
|
bl sub_804D024
|
|
add r0, sp, 0x8
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_804D084
|
|
mov r1, r9
|
|
movs r3, 0x1
|
|
ldrsb r3, [r1, r3]
|
|
add r0, sp, 0x8
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_804D154
|
|
str r6, [sp]
|
|
mov r1, r9
|
|
ldrb r0, [r1, 0xD]
|
|
str r0, [sp, 0x4]
|
|
add r0, sp, 0x8
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
mov r3, r8
|
|
bl sub_804D2D0
|
|
add r0, sp, 0x8
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
mov r3, r9
|
|
bl sub_804D5B0
|
|
str r6, [sp]
|
|
movs r0, 0
|
|
str r0, [sp, 0x4]
|
|
add r0, sp, 0x8
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
mov r3, r8
|
|
bl sub_804D8C8
|
|
str r6, [sp]
|
|
add r0, sp, 0x8
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
mov r3, r8
|
|
bl sub_804E590
|
|
mov r0, r9
|
|
ldrb r3, [r0, 0x9]
|
|
add r0, sp, 0x8
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_804F0D0
|
|
ldr r0, _0804B724
|
|
movs r1, 0
|
|
ldrsh r3, [r0, r1]
|
|
add r0, sp, 0x8
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_804EBC8
|
|
ldr r0, _0804B728
|
|
movs r1, 0
|
|
ldrsh r3, [r0, r1]
|
|
add r0, sp, 0x8
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_804EEE4
|
|
mov r0, r9
|
|
ldrb r3, [r0, 0x13]
|
|
add r0, sp, 0x8
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_804CBEC
|
|
add r0, sp, 0x8
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_804E03C
|
|
add r0, sp, 0x8
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
bl sub_804D534
|
|
movs r3, 0xE5
|
|
lsls r3, 5
|
|
add sp, r3
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804B718: .4byte 0xffffe360
|
|
_0804B71C: .4byte 0x00001c28
|
|
_0804B720: .4byte 0x00001c64
|
|
_0804B724: .4byte gUnknown_202F1B0
|
|
_0804B728: .4byte gUnknown_202F1B2
|
|
thumb_func_end sub_804B634
|
|
|
|
thumb_func_start sub_804B72C
|
|
sub_804B72C:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r4, _0804B9AC
|
|
add sp, r4
|
|
movs r1, 0xE5
|
|
lsls r1, 5
|
|
add r1, sp
|
|
str r0, [r1]
|
|
movs r5, 0
|
|
movs r6, 0x1
|
|
ldr r1, _0804B9B0
|
|
add r1, sp
|
|
str r5, [r1]
|
|
movs r0, 0x5
|
|
str r0, [r1, 0x4]
|
|
movs r0, 0x1C
|
|
str r0, [r1, 0xC]
|
|
movs r0, 0x33
|
|
str r0, [r1, 0x14]
|
|
movs r0, 0x38
|
|
str r0, [r1, 0x18]
|
|
movs r2, 0x10
|
|
str r2, [r1, 0x8]
|
|
movs r0, 0x27
|
|
str r0, [r1, 0x10]
|
|
ldr r1, _0804B9B4
|
|
add r1, sp
|
|
movs r0, 0x2
|
|
str r0, [r1]
|
|
movs r0, 0x7
|
|
str r0, [r1, 0x4]
|
|
str r2, [r1, 0x8]
|
|
movs r0, 0x19
|
|
str r0, [r1, 0xC]
|
|
movs r0, 0x1E
|
|
str r0, [r1, 0x10]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x6
|
|
movs r2, 0x4
|
|
bl sub_804D084
|
|
mov r2, sp
|
|
adds r2, 0x3B
|
|
ldr r3, _0804B9B8
|
|
add r3, sp
|
|
str r2, [r3]
|
|
mov r4, sp
|
|
adds r4, 0x3C
|
|
ldr r0, _0804B9BC
|
|
add r0, sp
|
|
str r4, [r0]
|
|
mov r1, sp
|
|
adds r1, 0x5B
|
|
ldr r2, _0804B9C0
|
|
add r2, sp
|
|
str r1, [r2]
|
|
mov r3, sp
|
|
adds r3, 0x5C
|
|
movs r4, 0xE6
|
|
lsls r4, 5
|
|
add r4, sp
|
|
str r3, [r4]
|
|
mov r0, sp
|
|
adds r0, 0x7B
|
|
ldr r1, _0804B9C4
|
|
add r1, sp
|
|
str r0, [r1]
|
|
mov r2, sp
|
|
adds r2, 0x7E
|
|
ldr r3, _0804B9C8
|
|
add r3, sp
|
|
str r2, [r3]
|
|
add r1, sp, 0x68
|
|
add r0, sp, 0x8
|
|
movs r2, 0xF0
|
|
lsls r2, 1
|
|
movs r4, 0x6
|
|
_0804B7CC:
|
|
strb r5, [r0, 0xA]
|
|
strb r5, [r1, 0xA]
|
|
adds r1, r2
|
|
adds r0, r2
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _0804B7CC
|
|
movs r2, 0x6
|
|
subs r2, 0x1
|
|
movs r4, 0x4
|
|
cmp r4, 0
|
|
beq _0804B80C
|
|
lsls r0, r2, 4
|
|
subs r0, r2
|
|
lsls r0, 5
|
|
add r0, sp
|
|
adds r0, 0x8
|
|
add r1, sp, 0x8
|
|
ldr r3, _0804B9CC
|
|
add r3, sp
|
|
str r4, [r3]
|
|
_0804B7F6:
|
|
strb r5, [r1, 0xA]
|
|
strb r5, [r0, 0xA]
|
|
adds r0, 0x20
|
|
adds r1, 0x20
|
|
ldr r3, _0804B9CC
|
|
add r3, sp
|
|
ldr r4, [r3]
|
|
subs r4, 0x1
|
|
str r4, [r3]
|
|
cmp r4, 0
|
|
bne _0804B7F6
|
|
_0804B80C:
|
|
movs r4, 0x1
|
|
cmp r4, r2
|
|
bge _0804B848
|
|
movs r1, 0x3
|
|
_0804B814:
|
|
adds r5, r4, 0x1
|
|
mov r8, r5
|
|
cmp r1, 0x1
|
|
ble _0804B842
|
|
lsls r0, r4, 4
|
|
subs r0, r4
|
|
lsls r0, 5
|
|
add r0, sp
|
|
adds r0, 0x8
|
|
adds r0, 0x20
|
|
subs r3, r1, 0x1
|
|
ldr r4, _0804B9CC
|
|
add r4, sp
|
|
str r3, [r4]
|
|
_0804B830:
|
|
strb r6, [r0, 0xA]
|
|
adds r0, 0x20
|
|
ldr r3, _0804B9CC
|
|
add r3, sp
|
|
ldr r5, [r3]
|
|
subs r5, 0x1
|
|
str r5, [r3]
|
|
cmp r5, 0
|
|
bne _0804B830
|
|
_0804B842:
|
|
mov r4, r8
|
|
cmp r4, r2
|
|
blt _0804B814
|
|
_0804B848:
|
|
movs r4, 0
|
|
ldr r5, _0804B9D0
|
|
add r5, sp
|
|
str r4, [r5]
|
|
ldr r0, _0804B9CC
|
|
add r0, sp
|
|
str r4, [r0]
|
|
cmp r4, 0x4
|
|
blt _0804B85C
|
|
b _0804BA8C
|
|
_0804B85C:
|
|
movs r4, 0
|
|
ldr r2, _0804B9CC
|
|
add r2, sp
|
|
ldr r1, [r2]
|
|
adds r1, 0x1
|
|
ldr r2, _0804B9D4
|
|
add r2, sp
|
|
str r1, [r2]
|
|
cmp r4, 0x6
|
|
blt _0804B872
|
|
b _0804BA7A
|
|
_0804B872:
|
|
ldr r3, _0804B9B0
|
|
add r3, sp
|
|
ldr r5, _0804B9D8
|
|
add r5, sp
|
|
str r3, [r5]
|
|
ldr r0, _0804B9B4
|
|
add r0, sp
|
|
ldr r1, _0804B9DC
|
|
add r1, sp
|
|
str r0, [r1]
|
|
ldr r2, _0804B9CC
|
|
add r2, sp
|
|
ldr r2, [r2]
|
|
lsls r0, r2, 2
|
|
ldr r3, [r1]
|
|
adds r0, r3, r0
|
|
ldr r3, _0804B9E0
|
|
add r3, sp
|
|
str r0, [r3]
|
|
_0804B898:
|
|
lsls r0, r4, 4
|
|
subs r0, r4
|
|
ldr r5, _0804B9CC
|
|
add r5, sp
|
|
ldr r5, [r5]
|
|
adds r0, r5
|
|
lsls r0, 5
|
|
mov r7, sp
|
|
adds r7, r0
|
|
adds r7, 0x8
|
|
ldrb r0, [r7, 0xA]
|
|
cmp r0, 0
|
|
bne _0804B8B4
|
|
b _0804B9F4
|
|
_0804B8B4:
|
|
lsls r0, r4, 2
|
|
ldr r1, _0804B9D8
|
|
add r1, sp
|
|
ldr r1, [r1]
|
|
adds r0, r1, r0
|
|
ldr r1, [r0]
|
|
adds r2, r1, 0x2
|
|
mov r10, r2
|
|
ldr r3, _0804B9E0
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
ldr r2, [r3]
|
|
adds r5, r2, 0x2
|
|
ldr r0, _0804B9E4
|
|
add r0, sp
|
|
str r5, [r0]
|
|
adds r4, 0x1
|
|
mov r9, r4
|
|
lsls r0, r4, 2
|
|
ldr r3, _0804B9D8
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
adds r0, r3, r0
|
|
ldr r4, [r0]
|
|
subs r4, r1
|
|
subs r4, 0x3
|
|
ldr r5, _0804B9D4
|
|
add r5, sp
|
|
ldr r5, [r5]
|
|
lsls r0, r5, 2
|
|
ldr r1, _0804B9DC
|
|
add r1, sp
|
|
ldr r1, [r1]
|
|
adds r0, r1, r0
|
|
ldr r5, [r0]
|
|
subs r5, r2
|
|
subs r5, 0x3
|
|
movs r0, 0x5
|
|
adds r1, r4, 0
|
|
bl sub_808411C
|
|
mov r8, r0
|
|
movs r0, 0x4
|
|
adds r1, r5, 0
|
|
bl sub_808411C
|
|
adds r6, r0, 0
|
|
mov r2, r8
|
|
subs r4, r2
|
|
adds r0, r4, 0
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0
|
|
add r4, r10
|
|
subs r5, r6
|
|
adds r0, r5, 0
|
|
bl DungeonRandomCapped
|
|
ldr r5, _0804B9E4
|
|
add r5, sp
|
|
ldr r3, [r5]
|
|
adds r3, r0
|
|
mov r10, r3
|
|
mov r0, r8
|
|
adds r3, r4, r0
|
|
add r6, r10
|
|
strh r4, [r7]
|
|
strh r3, [r7, 0x4]
|
|
mov r1, r10
|
|
strh r1, [r7, 0x2]
|
|
strh r6, [r7, 0x6]
|
|
mov r8, r9
|
|
ldr r5, _0804B9D0
|
|
add r5, sp
|
|
ldr r2, [r5]
|
|
adds r2, 0x1
|
|
ldr r5, _0804B9E8
|
|
add r5, sp
|
|
str r2, [r5]
|
|
cmp r4, r3
|
|
bge _0804B99E
|
|
_0804B956:
|
|
mov r5, r10
|
|
adds r7, r4, 0x1
|
|
cmp r5, r6
|
|
bge _0804B998
|
|
ldr r0, _0804B9EC
|
|
mov r9, r0
|
|
_0804B962:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
ldr r2, _0804B9F0
|
|
add r2, sp
|
|
str r3, [r2]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
mov r2, r9
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetMapEntity
|
|
ldr r1, _0804B9D0
|
|
add r1, sp
|
|
ldrb r1, [r1]
|
|
strb r1, [r0, 0x9]
|
|
adds r5, 0x1
|
|
ldr r2, _0804B9F0
|
|
add r2, sp
|
|
ldr r3, [r2]
|
|
cmp r5, r6
|
|
blt _0804B962
|
|
_0804B998:
|
|
adds r4, r7, 0
|
|
cmp r4, r3
|
|
blt _0804B956
|
|
_0804B99E:
|
|
ldr r3, _0804B9E8
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
ldr r4, _0804B9D0
|
|
add r4, sp
|
|
str r3, [r4]
|
|
b _0804BA72
|
|
.align 2, 0
|
|
_0804B9AC: .4byte 0xffffe320
|
|
_0804B9B0: .4byte 0x00001c28
|
|
_0804B9B4: .4byte 0x00001c64
|
|
_0804B9B8: .4byte 0x00001cd4
|
|
_0804B9BC: .4byte 0x00001cd8
|
|
_0804B9C0: .4byte 0x00001cbc
|
|
_0804B9C4: .4byte 0x00001cc4
|
|
_0804B9C8: .4byte 0x00001cc8
|
|
_0804B9CC: .4byte 0x00001ca4
|
|
_0804B9D0: .4byte 0x00001ca8
|
|
_0804B9D4: .4byte 0x00001ccc
|
|
_0804B9D8: .4byte 0x00001cac
|
|
_0804B9DC: .4byte 0x00001cb4
|
|
_0804B9E0: .4byte 0x00001cb8
|
|
_0804B9E4: .4byte 0x00001cb0
|
|
_0804B9E8: .4byte 0x00001cd0
|
|
_0804B9EC: .4byte 0x0000fffc
|
|
_0804B9F0: .4byte 0x00001cdc
|
|
_0804B9F4:
|
|
lsls r0, r4, 2
|
|
ldr r5, _0804BBE8
|
|
add r5, sp
|
|
ldr r5, [r5]
|
|
adds r0, r5, r0
|
|
ldr r2, [r0]
|
|
adds r0, r2, 0x1
|
|
ldr r1, _0804BBEC
|
|
add r1, sp
|
|
ldr r1, [r1]
|
|
ldr r3, [r1]
|
|
adds r6, r3, 0x1
|
|
adds r4, 0x1
|
|
mov r8, r4
|
|
lsls r1, r4, 2
|
|
adds r1, r5, r1
|
|
ldr r1, [r1]
|
|
subs r1, r2
|
|
subs r1, 0x3
|
|
ldr r5, _0804BBF0
|
|
add r5, sp
|
|
ldr r5, [r5]
|
|
lsls r2, r5, 2
|
|
ldr r4, _0804BBF4
|
|
add r4, sp
|
|
ldr r4, [r4]
|
|
adds r2, r4, r2
|
|
ldr r4, [r2]
|
|
subs r4, r3
|
|
subs r4, 0x3
|
|
adds r1, r0, r1
|
|
bl sub_808411C
|
|
adds r5, r0, 0
|
|
adds r4, r6, r4
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl sub_808411C
|
|
adds r4, r0, 0
|
|
strh r5, [r7]
|
|
adds r0, r5, 0x1
|
|
strh r0, [r7, 0x4]
|
|
strh r4, [r7, 0x2]
|
|
adds r0, r4, 0x1
|
|
strh r0, [r7, 0x6]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ldr r3, _0804BBF8
|
|
adds r2, r3, 0
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0xFF
|
|
strb r1, [r0, 0x9]
|
|
_0804BA72:
|
|
mov r4, r8
|
|
cmp r4, 0x6
|
|
bge _0804BA7A
|
|
b _0804B898
|
|
_0804BA7A:
|
|
ldr r4, _0804BBF0
|
|
add r4, sp
|
|
ldr r4, [r4]
|
|
ldr r5, _0804BBFC
|
|
add r5, sp
|
|
str r4, [r5]
|
|
cmp r4, 0x4
|
|
bge _0804BA8C
|
|
b _0804B85C
|
|
_0804BA8C:
|
|
add r1, sp, 0x8
|
|
movs r6, 0
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x16]
|
|
ldr r1, _0804BC00
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
movs r1, 0xFF
|
|
lsls r1, 1
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC04
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC08
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC0C
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC10
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC14
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC18
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC1C
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
add r1, sp, 0x8
|
|
strb r0, [r1, 0x14]
|
|
ldr r5, _0804BC20
|
|
add r5, sp
|
|
ldr r5, [r5]
|
|
strb r0, [r5]
|
|
ldr r1, _0804BC24
|
|
add r1, sp
|
|
ldr r1, [r1]
|
|
strb r0, [r1]
|
|
ldr r2, _0804BC28
|
|
add r2, sp
|
|
ldr r2, [r2]
|
|
strb r0, [r2]
|
|
movs r3, 0xE6
|
|
lsls r3, 5
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
strb r0, [r3]
|
|
ldr r4, _0804BC2C
|
|
add r4, sp
|
|
ldr r4, [r4]
|
|
strb r0, [r4]
|
|
ldr r5, _0804BC30
|
|
add r5, sp
|
|
ldr r5, [r5]
|
|
strb r0, [r5]
|
|
ldr r1, _0804BC34
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC38
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC3C
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC40
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC44
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC48
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC4C
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC50
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC54
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC58
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC5C
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC60
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC64
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC68
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
ldr r1, _0804BC6C
|
|
add r1, sp
|
|
strb r0, [r1]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x6
|
|
movs r2, 0x4
|
|
movs r4, 0xE5
|
|
lsls r4, 5
|
|
add r4, sp
|
|
ldr r3, [r4]
|
|
bl sub_804D5B0
|
|
ldr r5, _0804BC70
|
|
add r5, sp
|
|
ldr r4, _0804BC74
|
|
add r4, sp
|
|
str r4, [sp]
|
|
str r6, [sp, 0x4]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x6
|
|
movs r2, 0x4
|
|
adds r3, r5, 0
|
|
bl sub_804D8C8
|
|
str r4, [sp]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x6
|
|
movs r2, 0x4
|
|
adds r3, r5, 0
|
|
bl sub_804E590
|
|
ldr r0, _0804BC78
|
|
movs r5, 0
|
|
ldrsh r3, [r0, r5]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x6
|
|
movs r2, 0x4
|
|
bl sub_804EBC8
|
|
ldr r0, _0804BC7C
|
|
movs r1, 0
|
|
ldrsh r3, [r0, r1]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x6
|
|
movs r2, 0x4
|
|
bl sub_804EEE4
|
|
movs r2, 0xE5
|
|
lsls r2, 5
|
|
add r2, sp
|
|
ldr r2, [r2]
|
|
ldrb r3, [r2, 0x13]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x6
|
|
movs r2, 0x4
|
|
bl sub_804CBEC
|
|
add r0, sp, 0x8
|
|
movs r1, 0x6
|
|
movs r2, 0x4
|
|
bl sub_804E03C
|
|
movs r3, 0xE7
|
|
lsls r3, 5
|
|
add sp, r3
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804BBE8: .4byte 0x00001cac
|
|
_0804BBEC: .4byte 0x00001cb8
|
|
_0804BBF0: .4byte 0x00001ccc
|
|
_0804BBF4: .4byte 0x00001cb4
|
|
_0804BBF8: .4byte 0x0000fffc
|
|
_0804BBFC: .4byte 0x00001ca4
|
|
_0804BC00: .4byte 0x000001fd
|
|
_0804BC04: .4byte 0x000003dd
|
|
_0804BC08: .4byte 0x000003de
|
|
_0804BC0C: .4byte 0x000005bd
|
|
_0804BC10: .4byte 0x000005be
|
|
_0804BC14: .4byte 0x0000079d
|
|
_0804BC18: .4byte 0x0000079e
|
|
_0804BC1C: .4byte 0x0000097d
|
|
_0804BC20: .4byte 0x00001cd4
|
|
_0804BC24: .4byte 0x00001cd8
|
|
_0804BC28: .4byte 0x00001cbc
|
|
_0804BC2C: .4byte 0x00001cc4
|
|
_0804BC30: .4byte 0x00001cc8
|
|
_0804BC34: .4byte 0x0000025d
|
|
_0804BC38: .4byte 0x0000025e
|
|
_0804BC3C: .4byte 0x0000043d
|
|
_0804BC40: .4byte 0x0000043e
|
|
_0804BC44: .4byte 0x0000061d
|
|
_0804BC48: .4byte 0x0000061e
|
|
_0804BC4C: .4byte 0x000007fd
|
|
_0804BC50: .4byte 0x000007fe
|
|
_0804BC54: .4byte 0x000009dd
|
|
_0804BC58: .4byte 0x0000097c
|
|
_0804BC5C: .4byte 0x0000099b
|
|
_0804BC60: .4byte 0x0000099c
|
|
_0804BC64: .4byte 0x000009bb
|
|
_0804BC68: .4byte 0x000009bc
|
|
_0804BC6C: .4byte 0x000009db
|
|
_0804BC70: .4byte 0x00001c28
|
|
_0804BC74: .4byte 0x00001c64
|
|
_0804BC78: .4byte gUnknown_202F1B0
|
|
_0804BC7C: .4byte gUnknown_202F1B2
|
|
thumb_func_end sub_804B72C
|
|
|
|
thumb_func_start sub_804BC80
|
|
sub_804BC80:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r4, _0804BED0
|
|
add sp, r4
|
|
movs r1, 0xE5
|
|
lsls r1, 5
|
|
add r1, sp
|
|
str r0, [r1]
|
|
movs r4, 0x1
|
|
movs r5, 0
|
|
ldr r1, _0804BED4
|
|
add r1, sp
|
|
str r5, [r1]
|
|
movs r0, 0xB
|
|
str r0, [r1, 0x4]
|
|
movs r0, 0x16
|
|
str r0, [r1, 0x8]
|
|
movs r0, 0x21
|
|
str r0, [r1, 0xC]
|
|
movs r0, 0x2C
|
|
str r0, [r1, 0x10]
|
|
movs r0, 0x38
|
|
str r0, [r1, 0x14]
|
|
ldr r1, _0804BED8
|
|
add r1, sp
|
|
str r4, [r1]
|
|
movs r0, 0x9
|
|
str r0, [r1, 0x4]
|
|
movs r0, 0x10
|
|
str r0, [r1, 0x8]
|
|
movs r0, 0x17
|
|
str r0, [r1, 0xC]
|
|
movs r0, 0x1F
|
|
str r0, [r1, 0x10]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x4
|
|
bl sub_804D084
|
|
add r6, sp, 0x70
|
|
add r1, sp, 0x68
|
|
add r0, sp, 0x8
|
|
movs r3, 0xF0
|
|
lsls r3, 1
|
|
movs r2, 0x5
|
|
_0804BCE0:
|
|
strb r4, [r0, 0xA]
|
|
strb r4, [r1, 0xA]
|
|
adds r1, r3
|
|
adds r0, r3
|
|
subs r2, 0x1
|
|
cmp r2, 0
|
|
bne _0804BCE0
|
|
movs r3, 0x5
|
|
subs r3, 0x1
|
|
movs r2, 0x4
|
|
cmp r2, 0
|
|
beq _0804BD1A
|
|
lsls r0, r3, 4
|
|
subs r0, r3
|
|
lsls r0, 5
|
|
add r0, sp
|
|
adds r0, 0x8
|
|
add r1, sp, 0x8
|
|
mov r10, r2
|
|
_0804BD06:
|
|
strb r4, [r1, 0xA]
|
|
strb r4, [r0, 0xA]
|
|
adds r0, 0x20
|
|
adds r1, 0x20
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
add r10, r2
|
|
mov r2, r10
|
|
cmp r2, 0
|
|
bne _0804BD06
|
|
_0804BD1A:
|
|
movs r2, 0x1
|
|
cmp r2, r3
|
|
bge _0804BD58
|
|
movs r1, 0x3
|
|
_0804BD22:
|
|
adds r4, r2, 0x1
|
|
ldr r0, _0804BEDC
|
|
add r0, sp
|
|
str r4, [r0]
|
|
cmp r1, 0x1
|
|
ble _0804BD4E
|
|
lsls r0, r2, 4
|
|
subs r0, r2
|
|
lsls r0, 5
|
|
add r0, sp
|
|
adds r0, 0x8
|
|
adds r0, 0x20
|
|
subs r2, r1, 0x1
|
|
mov r10, r2
|
|
_0804BD3E:
|
|
strb r5, [r0, 0xA]
|
|
adds r0, 0x20
|
|
movs r4, 0x1
|
|
negs r4, r4
|
|
add r10, r4
|
|
mov r2, r10
|
|
cmp r2, 0
|
|
bne _0804BD3E
|
|
_0804BD4E:
|
|
ldr r4, _0804BEDC
|
|
add r4, sp
|
|
ldr r2, [r4]
|
|
cmp r2, r3
|
|
blt _0804BD22
|
|
_0804BD58:
|
|
add r0, sp, 0x8
|
|
movs r1, 0x1
|
|
strb r1, [r0, 0x8]
|
|
movs r0, 0xF2
|
|
lsls r0, 3
|
|
add r0, sp
|
|
strb r1, [r0]
|
|
strb r1, [r6]
|
|
movs r0, 0xFE
|
|
lsls r0, 3
|
|
add r0, sp
|
|
strb r1, [r0]
|
|
movs r5, 0
|
|
ldr r6, _0804BEE0
|
|
add r6, sp
|
|
str r5, [r6]
|
|
mov r10, r5
|
|
cmp r5, 0x4
|
|
blt _0804BD80
|
|
b _0804BFAC
|
|
_0804BD80:
|
|
movs r0, 0x4
|
|
movs r1, 0xE6
|
|
lsls r1, 5
|
|
add r1, sp
|
|
str r0, [r1]
|
|
_0804BD8A:
|
|
movs r2, 0
|
|
cmp r2, 0x5
|
|
blt _0804BD92
|
|
b _0804BF94
|
|
_0804BD92:
|
|
ldr r3, _0804BED4
|
|
add r3, sp
|
|
ldr r4, _0804BEE4
|
|
add r4, sp
|
|
str r3, [r4]
|
|
ldr r5, _0804BED8
|
|
add r5, sp
|
|
ldr r6, _0804BEE8
|
|
add r6, sp
|
|
str r5, [r6]
|
|
mov r1, r10
|
|
lsls r0, r1, 2
|
|
adds r0, r5, r0
|
|
ldr r3, _0804BEEC
|
|
add r3, sp
|
|
str r0, [r3]
|
|
_0804BDB2:
|
|
lsls r0, r2, 4
|
|
subs r0, r2
|
|
add r0, r10
|
|
lsls r0, 5
|
|
mov r7, sp
|
|
adds r7, r0
|
|
adds r7, 0x8
|
|
ldrb r0, [r7, 0x8]
|
|
adds r4, r2, 0x1
|
|
ldr r5, _0804BEDC
|
|
add r5, sp
|
|
str r4, [r5]
|
|
cmp r0, 0
|
|
beq _0804BDD0
|
|
b _0804BF88
|
|
_0804BDD0:
|
|
ldrb r0, [r7, 0xA]
|
|
cmp r0, 0
|
|
bne _0804BDD8
|
|
b _0804BF00
|
|
_0804BDD8:
|
|
lsls r0, r2, 2
|
|
ldr r6, _0804BEE4
|
|
add r6, sp
|
|
ldr r6, [r6]
|
|
adds r0, r6, r0
|
|
ldr r1, [r0]
|
|
adds r0, r1, 0x2
|
|
mov r9, r0
|
|
ldr r3, _0804BEEC
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
ldr r2, [r3]
|
|
adds r4, r2, 0x2
|
|
ldr r5, _0804BEF0
|
|
add r5, sp
|
|
str r4, [r5]
|
|
ldr r6, _0804BEDC
|
|
add r6, sp
|
|
ldr r6, [r6]
|
|
lsls r0, r6, 2
|
|
ldr r3, _0804BEE4
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
adds r0, r3, r0
|
|
ldr r4, [r0]
|
|
subs r4, r1
|
|
subs r4, 0x3
|
|
ldr r5, _0804BEE8
|
|
add r5, sp
|
|
ldr r5, [r5]
|
|
movs r6, 0xE6
|
|
lsls r6, 5
|
|
add r6, sp
|
|
ldr r6, [r6]
|
|
adds r0, r5, r6
|
|
ldr r5, [r0]
|
|
subs r5, r2
|
|
subs r5, 0x3
|
|
movs r0, 0x5
|
|
adds r1, r4, 0
|
|
bl sub_808411C
|
|
mov r8, r0
|
|
movs r0, 0x4
|
|
adds r1, r5, 0
|
|
bl sub_808411C
|
|
adds r6, r0, 0
|
|
mov r0, r8
|
|
subs r4, r0
|
|
adds r0, r4, 0
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0
|
|
add r4, r9
|
|
subs r5, r6
|
|
adds r0, r5, 0
|
|
bl DungeonRandomCapped
|
|
ldr r2, _0804BEF0
|
|
add r2, sp
|
|
ldr r1, [r2]
|
|
adds r1, r0
|
|
mov r9, r1
|
|
mov r5, r8
|
|
adds r3, r4, r5
|
|
add r6, r9
|
|
strh r4, [r7]
|
|
strh r3, [r7, 0x4]
|
|
strh r1, [r7, 0x2]
|
|
strh r6, [r7, 0x6]
|
|
ldr r1, _0804BEE0
|
|
add r1, sp
|
|
ldr r0, [r1]
|
|
adds r0, 0x1
|
|
ldr r1, _0804BEF4
|
|
add r1, sp
|
|
str r0, [r1]
|
|
cmp r4, r3
|
|
bge _0804BEC0
|
|
_0804BE78:
|
|
mov r5, r9
|
|
adds r7, r4, 0x1
|
|
cmp r5, r6
|
|
bge _0804BEBA
|
|
ldr r2, _0804BEF8
|
|
mov r8, r2
|
|
_0804BE84:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
ldr r2, _0804BEFC
|
|
add r2, sp
|
|
str r3, [r2]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
mov r2, r8
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetMapEntity
|
|
ldr r1, _0804BEE0
|
|
add r1, sp
|
|
ldrb r1, [r1]
|
|
strb r1, [r0, 0x9]
|
|
adds r5, 0x1
|
|
ldr r2, _0804BEFC
|
|
add r2, sp
|
|
ldr r3, [r2]
|
|
cmp r5, r6
|
|
blt _0804BE84
|
|
_0804BEBA:
|
|
adds r4, r7, 0
|
|
cmp r4, r3
|
|
blt _0804BE78
|
|
_0804BEC0:
|
|
ldr r3, _0804BEF4
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
ldr r4, _0804BEE0
|
|
add r4, sp
|
|
str r3, [r4]
|
|
b _0804BF88
|
|
.align 2, 0
|
|
_0804BED0: .4byte 0xffffe338
|
|
_0804BED4: .4byte 0x00001c28
|
|
_0804BED8: .4byte 0x00001c64
|
|
_0804BEDC: .4byte 0x00001cb8
|
|
_0804BEE0: .4byte 0x00001ca4
|
|
_0804BEE4: .4byte 0x00001ca8
|
|
_0804BEE8: .4byte 0x00001cb0
|
|
_0804BEEC: .4byte 0x00001cb4
|
|
_0804BEF0: .4byte 0x00001cac
|
|
_0804BEF4: .4byte 0x00001cbc
|
|
_0804BEF8: .4byte 0x0000fffc
|
|
_0804BEFC: .4byte 0x00001cc4
|
|
_0804BF00:
|
|
lsls r0, r2, 2
|
|
ldr r4, _0804C080
|
|
add r4, sp
|
|
ldr r4, [r4]
|
|
adds r0, r4, r0
|
|
ldr r2, [r0]
|
|
adds r0, r2, 0x1
|
|
ldr r5, _0804C084
|
|
add r5, sp
|
|
ldr r5, [r5]
|
|
ldr r3, [r5]
|
|
adds r6, r3, 0x1
|
|
mov r8, r6
|
|
ldr r4, _0804C088
|
|
add r4, sp
|
|
ldr r4, [r4]
|
|
lsls r1, r4, 2
|
|
ldr r5, _0804C080
|
|
add r5, sp
|
|
ldr r5, [r5]
|
|
adds r1, r5, r1
|
|
ldr r1, [r1]
|
|
subs r1, r2
|
|
subs r1, 0x3
|
|
ldr r6, _0804C08C
|
|
add r6, sp
|
|
ldr r6, [r6]
|
|
movs r4, 0xE6
|
|
lsls r4, 5
|
|
add r4, sp
|
|
ldr r4, [r4]
|
|
adds r2, r6, r4
|
|
ldr r4, [r2]
|
|
subs r4, r3
|
|
subs r4, 0x3
|
|
adds r1, r0, r1
|
|
bl sub_808411C
|
|
adds r5, r0, 0
|
|
add r4, r8
|
|
mov r0, r8
|
|
adds r1, r4, 0
|
|
bl sub_808411C
|
|
adds r4, r0, 0
|
|
strh r5, [r7]
|
|
adds r0, r5, 0x1
|
|
strh r0, [r7, 0x4]
|
|
strh r4, [r7, 0x2]
|
|
adds r0, r4, 0x1
|
|
strh r0, [r7, 0x6]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ldr r6, _0804C090
|
|
adds r2, r6, 0
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0xFF
|
|
strb r1, [r0, 0x9]
|
|
_0804BF88:
|
|
ldr r0, _0804C088
|
|
add r0, sp
|
|
ldr r2, [r0]
|
|
cmp r2, 0x5
|
|
bge _0804BF94
|
|
b _0804BDB2
|
|
_0804BF94:
|
|
movs r2, 0xE6
|
|
lsls r2, 5
|
|
add r2, sp
|
|
ldr r1, [r2]
|
|
adds r1, 0x4
|
|
str r1, [r2]
|
|
movs r3, 0x1
|
|
add r10, r3
|
|
mov r4, r10
|
|
cmp r4, 0x4
|
|
bge _0804BFAC
|
|
b _0804BD8A
|
|
_0804BFAC:
|
|
movs r2, 0x1
|
|
movs r1, 0x1
|
|
movs r3, 0xF
|
|
add r4, sp, 0x1C
|
|
_0804BFB4:
|
|
movs r5, 0
|
|
mov r10, r5
|
|
lsls r0, r3, 5
|
|
adds r0, r4
|
|
_0804BFBC:
|
|
strb r1, [r0]
|
|
strb r1, [r0, 0x1F]
|
|
adds r0, 0x20
|
|
movs r6, 0x1
|
|
add r10, r6
|
|
mov r5, r10
|
|
cmp r5, 0x2
|
|
ble _0804BFBC
|
|
movs r0, 0xF0
|
|
lsls r0, 1
|
|
adds r3, 0xF
|
|
adds r2, 0x1
|
|
cmp r2, 0x3
|
|
ble _0804BFB4
|
|
mov r10, r6
|
|
movs r5, 0x1
|
|
adds r4, r0, 0
|
|
mov r6, sp
|
|
adds r6, r4
|
|
adds r6, 0x8
|
|
_0804BFE4:
|
|
movs r2, 0
|
|
mov r1, r10
|
|
lsls r0, r1, 5
|
|
mov r3, r10
|
|
adds r3, 0x1
|
|
adds r1, r0, r6
|
|
add r0, sp
|
|
adds r0, 0x8
|
|
_0804BFF4:
|
|
strb r5, [r0, 0x16]
|
|
strb r5, [r1, 0x15]
|
|
adds r1, r4
|
|
adds r0, r4
|
|
adds r2, 0x1
|
|
cmp r2, 0x3
|
|
ble _0804BFF4
|
|
mov r10, r3
|
|
cmp r3, 0x2
|
|
ble _0804BFE4
|
|
ldr r5, _0804C094
|
|
add r5, sp
|
|
ldr r4, _0804C098
|
|
add r4, sp
|
|
str r4, [sp]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x4]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x4
|
|
adds r3, r5, 0
|
|
bl sub_804D8C8
|
|
str r4, [sp]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x4
|
|
adds r3, r5, 0
|
|
bl sub_804E590
|
|
ldr r0, _0804C09C
|
|
movs r2, 0
|
|
ldrsh r3, [r0, r2]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x4
|
|
bl sub_804EBC8
|
|
ldr r0, _0804C0A0
|
|
movs r4, 0
|
|
ldrsh r3, [r0, r4]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x4
|
|
bl sub_804EEE4
|
|
movs r5, 0xE5
|
|
lsls r5, 5
|
|
add r5, sp
|
|
ldr r5, [r5]
|
|
ldrb r3, [r5, 0x13]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x4
|
|
bl sub_804CBEC
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x4
|
|
bl sub_804E03C
|
|
ldr r3, _0804C0A4
|
|
add sp, r3
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804C080: .4byte 0x00001ca8
|
|
_0804C084: .4byte 0x00001cb4
|
|
_0804C088: .4byte 0x00001cb8
|
|
_0804C08C: .4byte 0x00001cb0
|
|
_0804C090: .4byte 0x0000fffc
|
|
_0804C094: .4byte 0x00001c28
|
|
_0804C098: .4byte 0x00001c64
|
|
_0804C09C: .4byte gUnknown_202F1B0
|
|
_0804C0A0: .4byte gUnknown_202F1B2
|
|
_0804C0A4: .4byte 0x00001cc8
|
|
thumb_func_end sub_804BC80
|
|
|
|
thumb_func_start sub_804C0A8
|
|
sub_804C0A8:
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
ldr r4, _0804C17C
|
|
add sp, r4
|
|
adds r6, r0, 0
|
|
ldr r4, _0804C180
|
|
add r4, sp
|
|
movs r0, 0
|
|
str r0, [r4]
|
|
movs r0, 0xB
|
|
str r0, [r4, 0x4]
|
|
movs r0, 0x16
|
|
str r0, [r4, 0x8]
|
|
movs r0, 0x21
|
|
str r0, [r4, 0xC]
|
|
movs r0, 0x2C
|
|
str r0, [r4, 0x10]
|
|
movs r0, 0x38
|
|
str r0, [r4, 0x14]
|
|
ldr r5, _0804C184
|
|
add r5, sp
|
|
movs r0, 0x4
|
|
str r0, [r5]
|
|
movs r0, 0xF
|
|
str r0, [r5, 0x4]
|
|
movs r0, 0x1
|
|
mov r8, r0
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x1
|
|
bl sub_804D084
|
|
movs r3, 0x1
|
|
ldrsb r3, [r6, r3]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x1
|
|
bl sub_804D154
|
|
str r5, [sp]
|
|
ldrb r0, [r6, 0xD]
|
|
str r0, [sp, 0x4]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x1
|
|
adds r3, r4, 0
|
|
bl sub_804D2D0
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x1
|
|
adds r3, r6, 0
|
|
bl sub_804D5B0
|
|
str r5, [sp]
|
|
mov r1, r8
|
|
str r1, [sp, 0x4]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x1
|
|
adds r3, r4, 0
|
|
bl sub_804D8C8
|
|
str r5, [sp]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x1
|
|
adds r3, r4, 0
|
|
bl sub_804E590
|
|
ldr r0, _0804C188
|
|
movs r1, 0
|
|
ldrsh r3, [r0, r1]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x1
|
|
bl sub_804EBC8
|
|
ldr r0, _0804C18C
|
|
movs r1, 0
|
|
ldrsh r3, [r0, r1]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x1
|
|
bl sub_804EEE4
|
|
ldrb r3, [r6, 0x13]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x1
|
|
bl sub_804CBEC
|
|
add r0, sp, 0x8
|
|
movs r1, 0x5
|
|
movs r2, 0x1
|
|
bl sub_804E03C
|
|
movs r3, 0xE5
|
|
lsls r3, 5
|
|
add sp, r3
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804C17C: .4byte 0xffffe360
|
|
_0804C180: .4byte 0x00001c28
|
|
_0804C184: .4byte 0x00001c64
|
|
_0804C188: .4byte gUnknown_202F1B0
|
|
_0804C18C: .4byte gUnknown_202F1B2
|
|
thumb_func_end sub_804C0A8
|
|
|
|
thumb_func_start sub_804C190
|
|
sub_804C190:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r4, _0804C2CC
|
|
add sp, r4
|
|
mov r10, r0
|
|
ldr r1, _0804C2D0
|
|
add r1, sp
|
|
movs r2, 0xB
|
|
str r2, [r1]
|
|
movs r0, 0x16
|
|
str r0, [r1, 0x4]
|
|
movs r0, 0x21
|
|
str r0, [r1, 0x8]
|
|
movs r0, 0x2C
|
|
str r0, [r1, 0xC]
|
|
ldr r1, _0804C2D4
|
|
add r1, sp
|
|
movs r0, 0x2
|
|
str r0, [r1]
|
|
str r2, [r1, 0x4]
|
|
movs r0, 0x14
|
|
str r0, [r1, 0x8]
|
|
movs r0, 0x1E
|
|
str r0, [r1, 0xC]
|
|
movs r0, 0x3
|
|
mov r8, r0
|
|
movs r7, 0x3
|
|
add r0, sp, 0x8
|
|
movs r1, 0x3
|
|
movs r2, 0x3
|
|
bl sub_804D084
|
|
movs r1, 0
|
|
add r5, sp, 0x50
|
|
movs r0, 0x3E
|
|
add r0, sp
|
|
mov r9, r0
|
|
mov r0, r10
|
|
ldrb r0, [r0, 0xD]
|
|
mov r12, r0
|
|
_0804C1E6:
|
|
adds r3, r1, 0x1
|
|
cmp r7, 0
|
|
beq _0804C204
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
movs r2, 0x1
|
|
lsls r0, 5
|
|
add r0, sp
|
|
adds r0, 0x8
|
|
adds r1, r7, 0
|
|
_0804C1FA:
|
|
strb r2, [r0, 0xA]
|
|
adds r0, 0x20
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bne _0804C1FA
|
|
_0804C204:
|
|
adds r1, r3, 0
|
|
cmp r1, r8
|
|
blt _0804C1E6
|
|
add r0, sp, 0x8
|
|
movs r4, 0x1
|
|
strb r4, [r0, 0x8]
|
|
add r0, sp, 0x3D0
|
|
strb r4, [r0]
|
|
strb r4, [r5]
|
|
movs r0, 0x82
|
|
lsls r0, 3
|
|
add r0, sp
|
|
strb r4, [r0]
|
|
ldr r6, _0804C2D0
|
|
add r6, sp
|
|
ldr r5, _0804C2D4
|
|
add r5, sp
|
|
str r5, [sp]
|
|
mov r1, r12
|
|
str r1, [sp, 0x4]
|
|
add r0, sp, 0x8
|
|
mov r1, r8
|
|
adds r2, r7, 0
|
|
adds r3, r6, 0
|
|
bl sub_804D2D0
|
|
mov r0, r9
|
|
strb r4, [r0]
|
|
ldr r0, _0804C2D8
|
|
add r0, sp
|
|
strb r4, [r0]
|
|
ldr r0, _0804C2DC
|
|
add r0, sp
|
|
strb r4, [r0]
|
|
ldr r0, _0804C2E0
|
|
add r0, sp
|
|
strb r4, [r0]
|
|
add r0, sp, 0x1FC
|
|
strb r4, [r0]
|
|
ldr r0, _0804C2E4
|
|
add r0, sp
|
|
strb r4, [r0]
|
|
add r0, sp, 0x21C
|
|
strb r4, [r0]
|
|
ldr r0, _0804C2E8
|
|
add r0, sp
|
|
strb r4, [r0]
|
|
str r5, [sp]
|
|
str r4, [sp, 0x4]
|
|
add r0, sp, 0x8
|
|
mov r1, r8
|
|
adds r2, r7, 0
|
|
adds r3, r6, 0
|
|
bl sub_804D8C8
|
|
str r5, [sp]
|
|
add r0, sp, 0x8
|
|
mov r1, r8
|
|
adds r2, r7, 0
|
|
adds r3, r6, 0
|
|
bl sub_804E590
|
|
ldr r0, _0804C2EC
|
|
movs r1, 0
|
|
ldrsh r3, [r0, r1]
|
|
add r0, sp, 0x8
|
|
mov r1, r8
|
|
adds r2, r7, 0
|
|
bl sub_804EBC8
|
|
ldr r0, _0804C2F0
|
|
movs r1, 0
|
|
ldrsh r3, [r0, r1]
|
|
add r0, sp, 0x8
|
|
mov r1, r8
|
|
adds r2, r7, 0
|
|
bl sub_804EEE4
|
|
mov r0, r10
|
|
ldrb r3, [r0, 0x13]
|
|
add r0, sp, 0x8
|
|
mov r1, r8
|
|
adds r2, r7, 0
|
|
bl sub_804CBEC
|
|
add r0, sp, 0x8
|
|
mov r1, r8
|
|
adds r2, r7, 0
|
|
bl sub_804E03C
|
|
movs r3, 0xE5
|
|
lsls r3, 5
|
|
add sp, r3
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804C2CC: .4byte 0xffffe360
|
|
_0804C2D0: .4byte 0x00001c28
|
|
_0804C2D4: .4byte 0x00001c64
|
|
_0804C2D8: .4byte 0x0000021d
|
|
_0804C2DC: .4byte 0x0000021e
|
|
_0804C2E0: .4byte 0x000003fd
|
|
_0804C2E4: .4byte 0x0000021b
|
|
_0804C2E8: .4byte 0x0000023b
|
|
_0804C2EC: .4byte gUnknown_202F1B0
|
|
_0804C2F0: .4byte gUnknown_202F1B2
|
|
thumb_func_end sub_804C190
|
|
|
|
thumb_func_start sub_804C2F4
|
|
sub_804C2F4:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
ldr r4, _0804C420
|
|
add sp, r4
|
|
mov r8, r0
|
|
ldr r1, _0804C424
|
|
add r1, sp
|
|
movs r0, 0x5
|
|
str r0, [r1]
|
|
movs r0, 0xF
|
|
str r0, [r1, 0x4]
|
|
movs r0, 0x23
|
|
str r0, [r1, 0x8]
|
|
movs r0, 0x32
|
|
str r0, [r1, 0xC]
|
|
ldr r1, _0804C428
|
|
add r1, sp
|
|
movs r0, 0x2
|
|
str r0, [r1]
|
|
movs r0, 0xB
|
|
str r0, [r1, 0x4]
|
|
movs r0, 0x14
|
|
str r0, [r1, 0x8]
|
|
movs r0, 0x1E
|
|
str r0, [r1, 0xC]
|
|
movs r7, 0x3
|
|
movs r6, 0x3
|
|
add r0, sp, 0x8
|
|
movs r1, 0x3
|
|
movs r2, 0x3
|
|
bl sub_804D084
|
|
movs r1, 0
|
|
mov r0, r8
|
|
ldrb r4, [r0, 0xD]
|
|
_0804C33C:
|
|
adds r3, r1, 0x1
|
|
cmp r6, 0
|
|
beq _0804C35A
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
movs r2, 0x1
|
|
lsls r0, 5
|
|
add r0, sp
|
|
adds r0, 0x8
|
|
adds r1, r6, 0
|
|
_0804C350:
|
|
strb r2, [r0, 0xA]
|
|
adds r0, 0x20
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bne _0804C350
|
|
_0804C35A:
|
|
adds r1, r3, 0
|
|
cmp r1, r7
|
|
blt _0804C33C
|
|
ldr r3, _0804C424
|
|
add r3, sp
|
|
ldr r0, _0804C428
|
|
add r0, sp
|
|
str r0, [sp]
|
|
str r4, [sp, 0x4]
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl sub_804D2D0
|
|
movs r4, 0x1
|
|
ldr r3, _0804C42C
|
|
add r3, sp
|
|
ldr r0, _0804C430
|
|
add r0, sp
|
|
add r2, sp, 0x8
|
|
movs r1, 0x2
|
|
_0804C384:
|
|
strb r4, [r2, 0x16]
|
|
strb r4, [r0]
|
|
strb r4, [r0, 0x1]
|
|
strb r4, [r3]
|
|
adds r3, 0x20
|
|
adds r0, 0x20
|
|
adds r2, 0x20
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bge _0804C384
|
|
ldr r5, _0804C424
|
|
add r5, sp
|
|
ldr r4, _0804C428
|
|
add r4, sp
|
|
str r4, [sp]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x4]
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
adds r3, r5, 0
|
|
bl sub_804D8C8
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0x1
|
|
add r3, sp, 0x8
|
|
bl sub_804C43C
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
movs r2, 0x2
|
|
add r3, sp, 0x8
|
|
bl sub_804C43C
|
|
str r4, [sp]
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
adds r3, r5, 0
|
|
bl sub_804E590
|
|
ldr r0, _0804C434
|
|
movs r1, 0
|
|
ldrsh r3, [r0, r1]
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl sub_804EBC8
|
|
ldr r0, _0804C438
|
|
movs r1, 0
|
|
ldrsh r3, [r0, r1]
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl sub_804EEE4
|
|
mov r0, r8
|
|
ldrb r3, [r0, 0x13]
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl sub_804CBEC
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl sub_804E03C
|
|
movs r3, 0xE5
|
|
lsls r3, 5
|
|
add sp, r3
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804C420: .4byte 0xffffe360
|
|
_0804C424: .4byte 0x00001c28
|
|
_0804C428: .4byte 0x00001c64
|
|
_0804C42C: .4byte 0x000003dd
|
|
_0804C430: .4byte 0x000001fd
|
|
_0804C434: .4byte gUnknown_202F1B0
|
|
_0804C438: .4byte gUnknown_202F1B2
|
|
thumb_func_end sub_804C2F4
|
|
|
|
thumb_func_start sub_804C43C
|
|
sub_804C43C:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x20
|
|
str r0, [sp]
|
|
str r3, [sp, 0x4]
|
|
lsls r7, r1, 5
|
|
lsls r0, 4
|
|
str r0, [sp, 0xC]
|
|
ldr r3, [sp]
|
|
subs r0, r3
|
|
lsls r0, 5
|
|
ldr r4, [sp, 0x4]
|
|
adds r0, r4
|
|
adds r3, r7, r0
|
|
adds r6, r1, r2
|
|
lsls r1, r6, 5
|
|
adds r2, r1, r0
|
|
movs r5, 0
|
|
ldrsh r1, [r2, r5]
|
|
adds r4, r1, 0
|
|
ldrh r0, [r3]
|
|
mov r8, r0
|
|
movs r5, 0
|
|
ldrsh r0, [r3, r5]
|
|
cmp r1, r0
|
|
ble _0804C478
|
|
mov r4, r8
|
|
_0804C478:
|
|
lsls r0, r4, 16
|
|
asrs r0, 16
|
|
str r0, [sp, 0x8]
|
|
movs r1, 0x2
|
|
ldrsh r0, [r3, r1]
|
|
mov r10, r0
|
|
movs r4, 0x4
|
|
ldrsh r1, [r2, r4]
|
|
adds r4, r1, 0
|
|
ldrh r5, [r3, 0x4]
|
|
mov r8, r5
|
|
movs r5, 0x4
|
|
ldrsh r0, [r3, r5]
|
|
cmp r1, r0
|
|
bge _0804C498
|
|
mov r4, r8
|
|
_0804C498:
|
|
lsls r0, r4, 16
|
|
asrs r0, 16
|
|
str r0, [sp, 0x10]
|
|
movs r1, 0x6
|
|
ldrsh r0, [r2, r1]
|
|
mov r8, r0
|
|
movs r2, 0
|
|
ldrsh r0, [r3, r2]
|
|
mov r1, r10
|
|
bl GetMapTileAtPosition
|
|
ldrb r0, [r0, 0x9]
|
|
mov r9, r0
|
|
ldr r5, [sp, 0x8]
|
|
str r7, [sp, 0x1C]
|
|
ldr r3, [sp, 0xC]
|
|
str r3, [sp, 0x18]
|
|
str r6, [sp, 0x14]
|
|
ldr r4, [sp, 0x10]
|
|
cmp r5, r4
|
|
bge _0804C4F2
|
|
_0804C4C2:
|
|
mov r4, r10
|
|
adds r6, r5, 0x1
|
|
cmp r10, r8
|
|
bge _0804C4EA
|
|
ldr r0, _0804C538
|
|
adds r7, r0, 0
|
|
_0804C4CE:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ands r1, r7
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
mov r1, r9
|
|
strb r1, [r0, 0x9]
|
|
adds r4, 0x1
|
|
cmp r4, r8
|
|
blt _0804C4CE
|
|
_0804C4EA:
|
|
adds r5, r6, 0
|
|
ldr r2, [sp, 0x10]
|
|
cmp r5, r2
|
|
blt _0804C4C2
|
|
_0804C4F2:
|
|
ldr r3, [sp, 0x18]
|
|
ldr r4, [sp]
|
|
subs r1, r3, r4
|
|
lsls r1, 5
|
|
ldr r5, [sp, 0x4]
|
|
adds r1, r5
|
|
ldr r0, [sp, 0x1C]
|
|
adds r2, r0, r1
|
|
movs r3, 0
|
|
mov r4, sp
|
|
ldrh r4, [r4, 0x8]
|
|
strh r4, [r2]
|
|
mov r5, sp
|
|
ldrh r5, [r5, 0x10]
|
|
strh r5, [r2, 0x4]
|
|
mov r0, r10
|
|
strh r0, [r2, 0x2]
|
|
mov r4, r8
|
|
strh r4, [r2, 0x6]
|
|
ldr r5, [sp, 0x14]
|
|
lsls r0, r5, 5
|
|
adds r0, r1
|
|
movs r1, 0x1
|
|
strb r1, [r0, 0x12]
|
|
strb r1, [r2, 0x12]
|
|
strb r3, [r0, 0xB]
|
|
strb r1, [r0, 0x11]
|
|
add sp, 0x20
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804C538: .4byte 0x0000fffc
|
|
thumb_func_end sub_804C43C
|
|
|
|
thumb_func_start sub_804C53C
|
|
sub_804C53C:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r4, _0804C6F8
|
|
add sp, r4
|
|
mov r10, r2
|
|
adds r7, r0, 0
|
|
adds r6, r1, 0
|
|
ldr r0, _0804C6FC
|
|
add r0, sp
|
|
ldr r1, _0804C700
|
|
add r1, sp
|
|
adds r2, r7, 0
|
|
adds r3, r6, 0
|
|
bl sub_804D024
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl sub_804D084
|
|
movs r2, 0
|
|
cmp r2, r7
|
|
bge _0804C594
|
|
_0804C570:
|
|
adds r3, r2, 0x1
|
|
cmp r6, 0
|
|
ble _0804C58E
|
|
lsls r0, r2, 4
|
|
subs r0, r2
|
|
movs r2, 0x1
|
|
lsls r0, 5
|
|
add r0, sp
|
|
adds r0, 0x8
|
|
adds r1, r6, 0
|
|
_0804C584:
|
|
strb r2, [r0, 0xA]
|
|
adds r0, 0x20
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bne _0804C584
|
|
_0804C58E:
|
|
adds r2, r3, 0
|
|
cmp r2, r7
|
|
blt _0804C570
|
|
_0804C594:
|
|
movs r2, 0x1
|
|
subs r0, r7, 0x1
|
|
mov r8, r0
|
|
subs r1, r6, 0x1
|
|
mov r9, r1
|
|
mov r0, r10
|
|
ldrb r0, [r0, 0xD]
|
|
mov r12, r0
|
|
cmp r2, r8
|
|
bge _0804C5D2
|
|
mov r4, r9
|
|
mov r5, r8
|
|
_0804C5AC:
|
|
adds r3, r2, 0x1
|
|
cmp r4, 0x1
|
|
ble _0804C5CC
|
|
lsls r0, r2, 4
|
|
subs r0, r2
|
|
movs r2, 0x1
|
|
lsls r0, 5
|
|
add r0, sp
|
|
adds r0, 0x8
|
|
adds r0, 0x20
|
|
subs r1, r4, 0x1
|
|
_0804C5C2:
|
|
strb r2, [r0, 0x8]
|
|
adds r0, 0x20
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bne _0804C5C2
|
|
_0804C5CC:
|
|
adds r2, r3, 0
|
|
cmp r2, r5
|
|
blt _0804C5AC
|
|
_0804C5D2:
|
|
ldr r3, _0804C6FC
|
|
add r3, sp
|
|
ldr r0, _0804C700
|
|
add r0, sp
|
|
str r0, [sp]
|
|
mov r1, r12
|
|
str r1, [sp, 0x4]
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl sub_804D2D0
|
|
movs r2, 0
|
|
cmp r2, r8
|
|
bge _0804C636
|
|
movs r4, 0x1
|
|
mov r0, r9
|
|
lsls r5, r0, 5
|
|
subs r1, r7, 0x2
|
|
mov r12, r1
|
|
_0804C5FA:
|
|
cmp r2, 0
|
|
beq _0804C614
|
|
lsls r0, r2, 4
|
|
subs r0, r2
|
|
lsls r0, 5
|
|
mov r1, sp
|
|
adds r1, r0
|
|
adds r1, 0x8
|
|
strb r4, [r1, 0x16]
|
|
adds r0, r5, r0
|
|
add r0, sp
|
|
adds r0, 0x8
|
|
strb r4, [r0, 0x16]
|
|
_0804C614:
|
|
adds r3, r2, 0x1
|
|
cmp r2, r12
|
|
bge _0804C630
|
|
lsls r0, r3, 4
|
|
subs r0, r3
|
|
lsls r0, 5
|
|
mov r1, sp
|
|
adds r1, r0
|
|
adds r1, 0x8
|
|
strb r4, [r1, 0x15]
|
|
adds r0, r5, r0
|
|
add r0, sp
|
|
adds r0, 0x8
|
|
strb r4, [r0, 0x15]
|
|
_0804C630:
|
|
adds r2, r3, 0
|
|
cmp r2, r8
|
|
blt _0804C5FA
|
|
_0804C636:
|
|
movs r1, 0
|
|
cmp r1, r9
|
|
bge _0804C66A
|
|
movs r3, 0x1
|
|
mov r2, r8
|
|
lsls r0, r2, 4
|
|
subs r0, r2
|
|
lsls r0, 5
|
|
add r0, sp
|
|
adds r0, 0x8
|
|
add r2, sp, 0x8
|
|
subs r5, r6, 0x2
|
|
mov r4, r9
|
|
_0804C650:
|
|
cmp r1, 0
|
|
beq _0804C658
|
|
strb r3, [r2, 0x13]
|
|
strb r3, [r0, 0x13]
|
|
_0804C658:
|
|
cmp r1, r5
|
|
bge _0804C660
|
|
strb r3, [r2, 0x14]
|
|
strb r3, [r0, 0x14]
|
|
_0804C660:
|
|
adds r0, 0x20
|
|
adds r2, 0x20
|
|
adds r1, 0x1
|
|
cmp r1, r4
|
|
blt _0804C650
|
|
_0804C66A:
|
|
ldr r5, _0804C6FC
|
|
add r5, sp
|
|
ldr r4, _0804C700
|
|
add r4, sp
|
|
str r4, [sp]
|
|
movs r0, 0
|
|
str r0, [sp, 0x4]
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
adds r3, r5, 0
|
|
bl sub_804D8C8
|
|
str r4, [sp]
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
adds r3, r5, 0
|
|
bl sub_804E590
|
|
mov r0, r10
|
|
ldrb r3, [r0, 0x9]
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl sub_804F0D0
|
|
ldr r0, _0804C704
|
|
movs r1, 0
|
|
ldrsh r3, [r0, r1]
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl sub_804EBC8
|
|
ldr r0, _0804C708
|
|
movs r2, 0
|
|
ldrsh r3, [r0, r2]
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl sub_804EEE4
|
|
mov r0, r10
|
|
ldrb r3, [r0, 0x13]
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl sub_804CBEC
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl sub_804E03C
|
|
add r0, sp, 0x8
|
|
adds r1, r7, 0
|
|
adds r2, r6, 0
|
|
bl sub_804D534
|
|
movs r3, 0xE5
|
|
lsls r3, 5
|
|
add sp, r3
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804C6F8: .4byte 0xffffe360
|
|
_0804C6FC: .4byte 0x00001c28
|
|
_0804C700: .4byte 0x00001c64
|
|
_0804C704: .4byte gUnknown_202F1B0
|
|
_0804C708: .4byte gUnknown_202F1B2
|
|
thumb_func_end sub_804C53C
|
|
|
|
thumb_func_start sub_804C70C
|
|
sub_804C70C:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x8
|
|
adds r7, r0, 0
|
|
mov r8, r1
|
|
ldr r0, _0804C73C
|
|
ldr r0, [r0]
|
|
ldr r1, _0804C740
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, 0x4]
|
|
lsls r0, r7, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
ldrb r5, [r0]
|
|
ldrb r6, [r0, 0x1]
|
|
cmp r5, 0
|
|
beq _0804C736
|
|
cmp r6, 0
|
|
bne _0804C744
|
|
_0804C736:
|
|
bl sub_804C918
|
|
b _0804C782
|
|
.align 2, 0
|
|
_0804C73C: .4byte gDungeonGlobalData
|
|
_0804C740: .4byte 0x00013568
|
|
_0804C744:
|
|
cmp r7, 0x31
|
|
bgt _0804C752
|
|
adds r0, r7, 0
|
|
bl sub_8051288
|
|
movs r0, 0x1
|
|
b _0804C784
|
|
_0804C752:
|
|
adds r1, r5, 0x4
|
|
movs r0, 0x38
|
|
bl __divsi3
|
|
adds r4, r0, 0
|
|
cmp r4, 0x1
|
|
bgt _0804C762
|
|
movs r4, 0x1
|
|
_0804C762:
|
|
adds r1, r6, 0x4
|
|
movs r0, 0x20
|
|
bl __divsi3
|
|
adds r1, r0, 0
|
|
cmp r1, 0x1
|
|
bgt _0804C772
|
|
movs r1, 0x1
|
|
_0804C772:
|
|
str r7, [sp]
|
|
mov r0, r8
|
|
str r0, [sp, 0x4]
|
|
adds r0, r4, 0
|
|
adds r2, r5, 0
|
|
adds r3, r6, 0
|
|
bl sub_804C790
|
|
_0804C782:
|
|
movs r0, 0
|
|
_0804C784:
|
|
add sp, 0x8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_804C70C
|
|
|
|
thumb_func_start sub_804C790
|
|
sub_804C790:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r4, _0804C81C
|
|
add sp, r4
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
ldr r0, _0804C820
|
|
add r0, sp
|
|
str r2, [r0]
|
|
ldr r1, _0804C824
|
|
add r1, sp
|
|
str r3, [r1]
|
|
movs r2, 0
|
|
mov r10, r2
|
|
mov r8, r2
|
|
ldr r0, _0804C828
|
|
add r0, sp
|
|
ldr r1, _0804C82C
|
|
add r1, sp
|
|
adds r2, r5, 0
|
|
adds r3, r4, 0
|
|
bl sub_804D024
|
|
add r0, sp, 0x10
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
bl sub_804D084
|
|
ldr r0, _0804C830
|
|
add r0, sp
|
|
ldr r0, [r0]
|
|
movs r3, 0x1
|
|
ldrsb r3, [r0, r3]
|
|
add r0, sp, 0x10
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
bl sub_804D154
|
|
mov r6, r8
|
|
cmp r8, r5
|
|
bge _0804C818
|
|
_0804C7E8:
|
|
movs r1, 0
|
|
mov r8, r1
|
|
adds r2, r6, 0x1
|
|
cmp r8, r4
|
|
bge _0804C812
|
|
lsls r0, r6, 4
|
|
subs r0, r6
|
|
movs r1, 0x1
|
|
lsls r0, 5
|
|
add r0, sp
|
|
adds r0, 0x10
|
|
mov r8, r4
|
|
_0804C800:
|
|
strb r1, [r0, 0x1B]
|
|
adds r0, 0x20
|
|
movs r3, 0x1
|
|
negs r3, r3
|
|
add r8, r3
|
|
mov r3, r8
|
|
cmp r3, 0
|
|
bne _0804C800
|
|
mov r8, r4
|
|
_0804C812:
|
|
adds r6, r2, 0
|
|
cmp r6, r5
|
|
blt _0804C7E8
|
|
_0804C818:
|
|
movs r7, 0
|
|
b _0804C836
|
|
.align 2, 0
|
|
_0804C81C: .4byte 0xffffe350
|
|
_0804C820: .4byte 0x00001ca8
|
|
_0804C824: .4byte 0x00001cac
|
|
_0804C828: .4byte 0x00001c30
|
|
_0804C82C: .4byte 0x00001c6c
|
|
_0804C830: .4byte 0x00001cd4
|
|
_0804C834:
|
|
adds r7, 0x1
|
|
_0804C836:
|
|
cmp r7, 0x3F
|
|
bgt _0804C864
|
|
adds r0, r5, 0
|
|
bl DungeonRandomCapped
|
|
adds r6, r0, 0
|
|
adds r0, r4, 0
|
|
bl DungeonRandomCapped
|
|
mov r8, r0
|
|
mov r0, r8
|
|
muls r0, r5
|
|
adds r0, r6
|
|
mov r10, r0
|
|
lsls r0, r6, 4
|
|
subs r0, r6
|
|
add r0, r8
|
|
lsls r0, 5
|
|
add r0, sp
|
|
adds r0, 0x10
|
|
ldrb r0, [r0, 0xA]
|
|
cmp r0, 0
|
|
beq _0804C834
|
|
_0804C864:
|
|
ldr r0, _0804C8FC
|
|
add r0, sp
|
|
mov r9, r0
|
|
ldr r7, _0804C900
|
|
add r7, sp
|
|
str r7, [sp]
|
|
mov r1, r10
|
|
str r1, [sp, 0x4]
|
|
ldr r2, _0804C904
|
|
add r2, sp
|
|
ldr r2, [r2]
|
|
str r2, [sp, 0x8]
|
|
ldr r3, _0804C908
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
str r3, [sp, 0xC]
|
|
add r0, sp, 0x10
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
mov r3, r9
|
|
bl sub_8050F90
|
|
cmp r5, 0x1
|
|
bne _0804C898
|
|
cmp r4, 0x1
|
|
beq _0804C8D0
|
|
_0804C898:
|
|
mov r0, r8
|
|
str r0, [sp]
|
|
ldr r1, _0804C90C
|
|
add r1, sp
|
|
ldr r1, [r1]
|
|
str r1, [sp, 0x4]
|
|
add r0, sp, 0x10
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
adds r3, r6, 0
|
|
bl sub_804D5F0
|
|
str r7, [sp]
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x4]
|
|
add r0, sp, 0x10
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
mov r3, r9
|
|
bl sub_804D8C8
|
|
str r7, [sp]
|
|
add r0, sp, 0x10
|
|
adds r1, r5, 0
|
|
adds r2, r4, 0
|
|
mov r3, r9
|
|
bl sub_804E590
|
|
_0804C8D0:
|
|
lsls r0, r6, 4
|
|
subs r0, r6
|
|
lsls r0, 5
|
|
add r0, sp
|
|
adds r0, 0x10
|
|
mov r2, r8
|
|
lsls r1, r2, 5
|
|
adds r0, r1
|
|
ldr r3, _0804C910
|
|
add r3, sp
|
|
ldr r1, [r3]
|
|
bl sub_8051438
|
|
ldr r3, _0804C914
|
|
add sp, r3
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804C8FC: .4byte 0x00001c30
|
|
_0804C900: .4byte 0x00001c6c
|
|
_0804C904: .4byte 0x00001ca8
|
|
_0804C908: .4byte 0x00001cac
|
|
_0804C90C: .4byte 0x00001cd4
|
|
_0804C910: .4byte 0x00001cd0
|
|
_0804C914: .4byte 0x00001cb0
|
|
thumb_func_end sub_804C790
|
|
|
|
thumb_func_start sub_804C918
|
|
sub_804C918:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
ldr r4, _0804C9C4
|
|
add sp, r4
|
|
mov r0, sp
|
|
movs r1, 0x1
|
|
movs r2, 0x1
|
|
bl sub_804D084
|
|
mov r0, sp
|
|
movs r3, 0
|
|
movs r2, 0x2
|
|
strh r2, [r0]
|
|
mov r1, sp
|
|
movs r0, 0x36
|
|
strh r0, [r1, 0x4]
|
|
mov r0, sp
|
|
strh r2, [r0, 0x2]
|
|
movs r0, 0x1E
|
|
strh r0, [r1, 0x6]
|
|
mov r0, sp
|
|
movs r1, 0x1
|
|
strb r1, [r0, 0xA]
|
|
strb r1, [r0, 0xB]
|
|
strb r3, [r0, 0x8]
|
|
movs r1, 0
|
|
ldrsh r5, [r0, r1]
|
|
movs r2, 0x4
|
|
ldrsh r0, [r0, r2]
|
|
cmp r5, r0
|
|
bge _0804C9A6
|
|
mov r6, sp
|
|
_0804C95C:
|
|
movs r0, 0x2
|
|
ldrsh r4, [r6, r0]
|
|
movs r1, 0x6
|
|
ldrsh r0, [r6, r1]
|
|
adds r7, r5, 0x1
|
|
cmp r4, r0
|
|
bge _0804C99C
|
|
movs r2, 0
|
|
mov r9, r2
|
|
ldr r0, _0804C9C8
|
|
mov r8, r0
|
|
_0804C972:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
mov r2, r8
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
mov r1, r9
|
|
strb r1, [r0, 0x9]
|
|
adds r4, 0x1
|
|
movs r2, 0x6
|
|
ldrsh r0, [r6, r2]
|
|
cmp r4, r0
|
|
blt _0804C972
|
|
_0804C99C:
|
|
adds r5, r7, 0
|
|
movs r1, 0x4
|
|
ldrsh r0, [r6, r1]
|
|
cmp r5, r0
|
|
blt _0804C95C
|
|
_0804C9A6:
|
|
ldr r3, _0804C9CC
|
|
mov r0, sp
|
|
movs r1, 0x1
|
|
movs r2, 0x1
|
|
bl sub_804EEE4
|
|
movs r3, 0xE1
|
|
lsls r3, 5
|
|
add sp, r3
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804C9C4: .4byte 0xffffe3e0
|
|
_0804C9C8: .4byte 0x0000fffc
|
|
_0804C9CC: .4byte 0x000003e7
|
|
thumb_func_end sub_804C918
|
|
|
|
thumb_func_start sub_804C9D0
|
|
sub_804C9D0:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r4, _0804CBB4
|
|
add sp, r4
|
|
movs r0, 0
|
|
movs r1, 0xE5
|
|
lsls r1, 5
|
|
add r1, sp
|
|
str r0, [r1]
|
|
ldr r1, _0804CBB8
|
|
add r1, sp
|
|
movs r2, 0x2
|
|
str r2, [r1]
|
|
movs r0, 0x1C
|
|
str r0, [r1, 0x4]
|
|
movs r0, 0x36
|
|
str r0, [r1, 0x8]
|
|
ldr r1, _0804CBBC
|
|
add r1, sp
|
|
str r2, [r1]
|
|
movs r0, 0x1E
|
|
str r0, [r1, 0x4]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x2
|
|
movs r2, 0x1
|
|
bl sub_804D084
|
|
movs r0, 0
|
|
ldr r2, _0804CBB8
|
|
add r2, sp
|
|
ldr r3, _0804CBC0
|
|
add r3, sp
|
|
str r2, [r3]
|
|
ldr r4, _0804CBBC
|
|
add r4, sp
|
|
ldr r1, _0804CBC4
|
|
add r1, sp
|
|
str r4, [r1]
|
|
_0804CA22:
|
|
movs r7, 0
|
|
lsls r2, r0, 2
|
|
ldr r3, _0804CBC8
|
|
add r3, sp
|
|
str r2, [r3]
|
|
adds r4, r0, 0x1
|
|
ldr r1, _0804CBCC
|
|
add r1, sp
|
|
str r4, [r1]
|
|
lsls r0, 5
|
|
ldr r2, _0804CBD0
|
|
add r2, sp
|
|
str r0, [r2]
|
|
_0804CA3C:
|
|
lsls r0, r7, 2
|
|
ldr r3, _0804CBC0
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
adds r0, r3, r0
|
|
ldr r1, [r0]
|
|
adds r4, r1, 0x1
|
|
mov r10, r4
|
|
ldr r2, _0804CBC4
|
|
add r2, sp
|
|
ldr r2, [r2]
|
|
ldr r3, _0804CBC8
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
adds r0, r2, r3
|
|
ldr r2, [r0]
|
|
adds r4, r2, 0x1
|
|
ldr r0, _0804CBD4
|
|
add r0, sp
|
|
str r4, [r0]
|
|
adds r3, r7, 0x1
|
|
mov r9, r3
|
|
lsls r0, r3, 2
|
|
ldr r4, _0804CBC0
|
|
add r4, sp
|
|
ldr r4, [r4]
|
|
adds r0, r4, r0
|
|
ldr r4, [r0]
|
|
subs r4, r1
|
|
subs r4, 0x3
|
|
ldr r1, _0804CBCC
|
|
add r1, sp
|
|
ldr r1, [r1]
|
|
lsls r0, r1, 2
|
|
ldr r3, _0804CBC4
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
adds r0, r3, r0
|
|
ldr r5, [r0]
|
|
subs r5, r2
|
|
subs r5, 0x3
|
|
movs r0, 0xA
|
|
adds r1, r4, 0
|
|
bl sub_808411C
|
|
mov r8, r0
|
|
movs r0, 0x10
|
|
adds r1, r5, 0
|
|
bl sub_808411C
|
|
adds r6, r0, 0
|
|
mov r0, r8
|
|
subs r4, r0
|
|
adds r0, r4, 0
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0
|
|
add r4, r10
|
|
subs r5, r6
|
|
adds r0, r5, 0
|
|
bl DungeonRandomCapped
|
|
ldr r2, _0804CBD4
|
|
add r2, sp
|
|
ldr r1, [r2]
|
|
adds r1, r0
|
|
mov r10, r1
|
|
mov r0, r8
|
|
adds r3, r4, r0
|
|
add r6, r10
|
|
lsls r0, r7, 4
|
|
subs r0, r7
|
|
lsls r0, 5
|
|
ldr r1, _0804CBD0
|
|
add r1, sp
|
|
ldr r1, [r1]
|
|
adds r0, r1, r0
|
|
add r0, sp
|
|
adds r0, 0x8
|
|
movs r1, 0x1
|
|
strb r1, [r0, 0xA]
|
|
strh r4, [r0]
|
|
strh r3, [r0, 0x4]
|
|
mov r2, r10
|
|
strh r2, [r0, 0x2]
|
|
strh r6, [r0, 0x6]
|
|
mov r0, r9
|
|
ldr r1, _0804CBD8
|
|
add r1, sp
|
|
str r0, [r1]
|
|
movs r0, 0xE5
|
|
lsls r0, 5
|
|
add r0, sp
|
|
ldr r2, [r0]
|
|
adds r2, 0x1
|
|
mov r9, r2
|
|
cmp r4, r3
|
|
bge _0804CB4E
|
|
_0804CB00:
|
|
mov r5, r10
|
|
adds r7, r4, 0x1
|
|
cmp r5, r6
|
|
bge _0804CB48
|
|
ldr r1, _0804CBDC
|
|
mov r8, r1
|
|
_0804CB0C:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0xE6
|
|
lsls r2, 5
|
|
add r2, sp
|
|
str r3, [r2]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
mov r2, r8
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetMapEntity
|
|
movs r1, 0xE5
|
|
lsls r1, 5
|
|
add r1, sp
|
|
ldrb r1, [r1]
|
|
strb r1, [r0, 0x9]
|
|
adds r5, 0x1
|
|
movs r2, 0xE6
|
|
lsls r2, 5
|
|
add r2, sp
|
|
ldr r3, [r2]
|
|
cmp r5, r6
|
|
blt _0804CB0C
|
|
_0804CB48:
|
|
adds r4, r7, 0
|
|
cmp r4, r3
|
|
blt _0804CB00
|
|
_0804CB4E:
|
|
mov r3, r9
|
|
movs r4, 0xE5
|
|
lsls r4, 5
|
|
add r4, sp
|
|
str r3, [r4]
|
|
ldr r0, _0804CBD8
|
|
add r0, sp
|
|
ldr r7, [r0]
|
|
cmp r7, 0x1
|
|
bgt _0804CB64
|
|
b _0804CA3C
|
|
_0804CB64:
|
|
ldr r1, _0804CBCC
|
|
add r1, sp
|
|
ldr r0, [r1]
|
|
cmp r0, 0
|
|
bgt _0804CB70
|
|
b _0804CA22
|
|
_0804CB70:
|
|
add r0, sp, 0x8
|
|
movs r2, 0
|
|
movs r1, 0x1
|
|
strb r1, [r0, 0x16]
|
|
ldr r0, _0804CBE0
|
|
add r0, sp
|
|
strb r1, [r0]
|
|
ldr r3, _0804CBB8
|
|
add r3, sp
|
|
ldr r0, _0804CBBC
|
|
add r0, sp
|
|
str r0, [sp]
|
|
str r2, [sp, 0x4]
|
|
add r0, sp, 0x8
|
|
movs r1, 0x2
|
|
movs r2, 0x1
|
|
bl sub_804D8C8
|
|
ldr r3, _0804CBE4
|
|
add r0, sp, 0x8
|
|
movs r1, 0x2
|
|
movs r2, 0x1
|
|
bl sub_804EEE4
|
|
ldr r3, _0804CBE8
|
|
add sp, r3
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804CBB4: .4byte 0xffffe33c
|
|
_0804CBB8: .4byte 0x00001c28
|
|
_0804CBBC: .4byte 0x00001c64
|
|
_0804CBC0: .4byte 0x00001ca4
|
|
_0804CBC4: .4byte 0x00001cac
|
|
_0804CBC8: .4byte 0x00001cb0
|
|
_0804CBCC: .4byte 0x00001cbc
|
|
_0804CBD0: .4byte 0x00001cb4
|
|
_0804CBD4: .4byte 0x00001ca8
|
|
_0804CBD8: .4byte 0x00001cb8
|
|
_0804CBDC: .4byte 0x0000fffc
|
|
_0804CBE0: .4byte 0x000001fd
|
|
_0804CBE4: .4byte 0x000003e7
|
|
_0804CBE8: .4byte 0x00001cc4
|
|
thumb_func_end sub_804C9D0
|
|
|
|
thumb_func_start sub_804CBEC
|
|
sub_804CBEC:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x20
|
|
str r0, [sp]
|
|
str r1, [sp, 0x4]
|
|
str r2, [sp, 0x8]
|
|
str r3, [sp, 0xC]
|
|
cmp r3, 0
|
|
bne _0804CC06
|
|
b _0804D006
|
|
_0804CC06:
|
|
movs r5, 0
|
|
cmp r5, r3
|
|
blt _0804CC0E
|
|
b _0804D006
|
|
_0804CC0E:
|
|
ldr r0, [sp, 0x4]
|
|
bl DungeonRandomCapped
|
|
mov r9, r0
|
|
ldr r0, [sp, 0x8]
|
|
bl DungeonRandomCapped
|
|
mov r10, r0
|
|
lsls r0, 5
|
|
mov r2, r9
|
|
lsls r1, r2, 4
|
|
subs r1, r2
|
|
lsls r1, 5
|
|
ldr r3, [sp]
|
|
adds r1, r3
|
|
adds r4, r0, r1
|
|
ldrb r0, [r4, 0xA]
|
|
adds r5, 0x1
|
|
str r5, [sp, 0x18]
|
|
cmp r0, 0
|
|
bne _0804CC3A
|
|
b _0804CFFC
|
|
_0804CC3A:
|
|
ldrb r0, [r4, 0xB]
|
|
cmp r0, 0
|
|
bne _0804CC42
|
|
b _0804CFFC
|
|
_0804CC42:
|
|
ldrb r0, [r4, 0x8]
|
|
cmp r0, 0
|
|
beq _0804CC4A
|
|
b _0804CFFC
|
|
_0804CC4A:
|
|
ldrb r0, [r4, 0x10]
|
|
cmp r0, 0
|
|
beq _0804CC52
|
|
b _0804CFFC
|
|
_0804CC52:
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x4
|
|
ldrsh r1, [r4, r2]
|
|
bl sub_808411C
|
|
adds r7, r0, 0
|
|
movs r3, 0x2
|
|
ldrsh r0, [r4, r3]
|
|
movs r2, 0x6
|
|
ldrsh r1, [r4, r2]
|
|
bl sub_808411C
|
|
adds r6, r0, 0
|
|
movs r0, 0x4
|
|
bl DungeonRandomCapped
|
|
lsls r0, 1
|
|
mov r8, r0
|
|
ldr r1, [sp, 0x8]
|
|
subs r1, 0x1
|
|
movs r3, 0x2
|
|
str r3, [sp, 0x10]
|
|
ldr r0, [sp, 0x4]
|
|
subs r0, 0x1
|
|
_0804CC84:
|
|
mov r2, r8
|
|
cmp r2, 0
|
|
bne _0804CC92
|
|
cmp r10, r1
|
|
blt _0804CC92
|
|
movs r3, 0x2
|
|
mov r8, r3
|
|
_0804CC92:
|
|
mov r2, r8
|
|
cmp r2, 0x2
|
|
bne _0804CCA0
|
|
cmp r9, r0
|
|
blt _0804CCA0
|
|
movs r3, 0x4
|
|
mov r8, r3
|
|
_0804CCA0:
|
|
mov r2, r8
|
|
cmp r2, 0x4
|
|
bne _0804CCB0
|
|
mov r3, r10
|
|
cmp r3, 0
|
|
bgt _0804CCB0
|
|
movs r2, 0x6
|
|
mov r8, r2
|
|
_0804CCB0:
|
|
mov r3, r8
|
|
cmp r3, 0x6
|
|
bne _0804CCC0
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
bgt _0804CCC0
|
|
movs r3, 0
|
|
mov r8, r3
|
|
_0804CCC0:
|
|
ldr r2, [sp, 0x10]
|
|
subs r2, 0x1
|
|
str r2, [sp, 0x10]
|
|
cmp r2, 0
|
|
bge _0804CC84
|
|
adds r0, r7, 0
|
|
adds r1, r6, 0
|
|
bl GetMapTileAtPosition
|
|
ldrb r5, [r0, 0x9]
|
|
ldr r1, _0804CCE0
|
|
mov r3, r8
|
|
lsls r0, r3, 2
|
|
adds r4, r0, r1
|
|
b _0804CCF0
|
|
.align 2, 0
|
|
_0804CCE0: .4byte gAdjacentTileOffsets
|
|
_0804CCE4:
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
adds r7, r0
|
|
movs r2, 0x2
|
|
ldrsh r0, [r4, r2]
|
|
adds r6, r0
|
|
_0804CCF0:
|
|
adds r0, r7, 0
|
|
adds r1, r6, 0
|
|
bl GetMapTileAtPosition
|
|
ldrb r0, [r0, 0x9]
|
|
cmp r5, r0
|
|
beq _0804CCE4
|
|
ldr r1, _0804CD08
|
|
mov r3, r8
|
|
lsls r0, r3, 2
|
|
adds r4, r0, r1
|
|
b _0804CD18
|
|
.align 2, 0
|
|
_0804CD08: .4byte gAdjacentTileOffsets
|
|
_0804CD0C:
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
adds r7, r0
|
|
movs r2, 0x2
|
|
ldrsh r0, [r4, r2]
|
|
adds r6, r0
|
|
_0804CD18:
|
|
adds r0, r7, 0
|
|
adds r1, r6, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r5, 0x3
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804CD0C
|
|
adds r0, r7, 0
|
|
adds r1, r6, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
bne _0804CD40
|
|
b _0804CFFC
|
|
_0804CD40:
|
|
movs r3, 0
|
|
subs r2, r7, 0x2
|
|
adds r4, r7, 0x2
|
|
b _0804CD4A
|
|
_0804CD48:
|
|
adds r2, 0x1
|
|
_0804CD4A:
|
|
cmp r2, r4
|
|
bgt _0804CD6C
|
|
subs r0, r6, 0x2
|
|
adds r1, r6, 0x2
|
|
b _0804CD56
|
|
_0804CD54:
|
|
adds r0, 0x1
|
|
_0804CD56:
|
|
cmp r0, r1
|
|
bgt _0804CD68
|
|
cmp r2, 0x37
|
|
bhi _0804CD66
|
|
cmp r0, 0
|
|
blt _0804CD66
|
|
cmp r0, 0x1F
|
|
ble _0804CD54
|
|
_0804CD66:
|
|
movs r3, 0x1
|
|
_0804CD68:
|
|
cmp r3, 0
|
|
beq _0804CD48
|
|
_0804CD6C:
|
|
cmp r3, 0
|
|
beq _0804CD72
|
|
b _0804CFFC
|
|
_0804CD72:
|
|
ldr r2, _0804CDD4
|
|
mov r1, r8
|
|
adds r1, 0x2
|
|
movs r4, 0x6
|
|
ands r1, r4
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r3, 0
|
|
ldrsh r0, [r1, r3]
|
|
movs r3, 0x2
|
|
ldrsh r1, [r1, r3]
|
|
adds r0, r7, r0
|
|
adds r1, r6, r1
|
|
str r2, [sp, 0x1C]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r5, 0x3
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
ldr r2, [sp, 0x1C]
|
|
cmp r0, 0x1
|
|
bne _0804CDA2
|
|
b _0804CFFC
|
|
_0804CDA2:
|
|
mov r1, r8
|
|
subs r1, 0x2
|
|
ands r1, r4
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
movs r3, 0x2
|
|
ldrsh r1, [r1, r3]
|
|
adds r0, r7, r0
|
|
adds r1, r6, r1
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0804CDC8
|
|
b _0804CFFC
|
|
_0804CDC8:
|
|
movs r0, 0x3
|
|
bl DungeonRandomCapped
|
|
adds r0, 0x3
|
|
str r0, [sp, 0x10]
|
|
b _0804CFD4
|
|
.align 2, 0
|
|
_0804CDD4: .4byte gAdjacentTileOffsets
|
|
_0804CDD8:
|
|
adds r0, r7, 0
|
|
adds r1, r6, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804CDEC
|
|
b _0804CFFC
|
|
_0804CDEC:
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x14]
|
|
adds r4, r7, 0x1
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r10
|
|
ands r0, r1
|
|
mov r9, r4
|
|
cmp r0, 0x1
|
|
bne _0804CE32
|
|
adds r5, r6, 0x1
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r0, [r0]
|
|
mov r4, r10
|
|
ands r4, r0
|
|
cmp r4, 0x1
|
|
bne _0804CE32
|
|
adds r0, r7, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r0, [r0]
|
|
mov r1, r10
|
|
ands r0, r1
|
|
eors r0, r4
|
|
negs r1, r0
|
|
orrs r1, r0
|
|
lsrs r1, 31
|
|
str r1, [sp, 0x14]
|
|
_0804CE32:
|
|
mov r0, r9
|
|
adds r1, r6, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r5, 0x3
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0804CE70
|
|
subs r4, r6, 0x1
|
|
mov r0, r9
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0804CE70
|
|
adds r0, r7, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0804CE70
|
|
movs r2, 0
|
|
str r2, [sp, 0x14]
|
|
_0804CE70:
|
|
subs r4, r7, 0x1
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r2, 0x3
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0804CEB6
|
|
adds r5, r6, 0x1
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
str r2, [sp, 0x1C]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0x1C]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0804CEB6
|
|
adds r0, r7, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0x1C]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0804CEB6
|
|
movs r3, 0
|
|
str r3, [sp, 0x14]
|
|
_0804CEB6:
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r2, 0x3
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0804CEFA
|
|
subs r5, r6, 0x1
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
str r2, [sp, 0x1C]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0x1C]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0804CEFA
|
|
adds r0, r7, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0x1C]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0804CEFA
|
|
movs r0, 0
|
|
str r0, [sp, 0x14]
|
|
_0804CEFA:
|
|
ldr r1, [sp, 0x14]
|
|
cmp r1, 0
|
|
beq _0804CF16
|
|
adds r0, r7, 0
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ldr r3, _0804D018
|
|
adds r2, r3, 0
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
_0804CF16:
|
|
ldr r2, _0804D01C
|
|
movs r0, 0x2
|
|
add r0, r8
|
|
mov r9, r0
|
|
movs r1, 0x6
|
|
mov r10, r1
|
|
mov r1, r9
|
|
mov r3, r10
|
|
ands r1, r3
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r3, 0
|
|
ldrsh r0, [r1, r3]
|
|
movs r3, 0x2
|
|
ldrsh r1, [r1, r3]
|
|
adds r0, r7, r0
|
|
adds r1, r6, r1
|
|
str r2, [sp, 0x1C]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r5, 0x3
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
ldr r2, [sp, 0x1C]
|
|
cmp r0, 0x1
|
|
beq _0804CFFC
|
|
mov r4, r8
|
|
subs r4, 0x2
|
|
adds r1, r4, 0
|
|
mov r0, r10
|
|
ands r1, r0
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
movs r3, 0x2
|
|
ldrsh r1, [r1, r3]
|
|
adds r0, r7, r0
|
|
adds r1, r6, r1
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
adds r0, r5, 0
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804CFFC
|
|
ldr r0, [sp, 0x10]
|
|
subs r0, 0x1
|
|
str r0, [sp, 0x10]
|
|
cmp r0, 0
|
|
bne _0804CFC0
|
|
movs r0, 0x3
|
|
bl DungeonRandomCapped
|
|
adds r0, 0x3
|
|
str r0, [sp, 0x10]
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
mov r8, r4
|
|
cmp r0, 0x31
|
|
bgt _0804CF96
|
|
mov r8, r9
|
|
_0804CF96:
|
|
mov r1, r8
|
|
mov r2, r10
|
|
ands r1, r2
|
|
mov r8, r1
|
|
cmp r7, 0x1F
|
|
ble _0804CFAE
|
|
ldr r0, _0804D020
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x1
|
|
bne _0804CFAE
|
|
cmp r1, 0x2
|
|
beq _0804CFFC
|
|
_0804CFAE:
|
|
cmp r7, 0x2F
|
|
ble _0804CFC0
|
|
ldr r0, _0804D020
|
|
ldrb r0, [r0]
|
|
cmp r0, 0x2
|
|
bne _0804CFC0
|
|
mov r3, r8
|
|
cmp r3, 0x2
|
|
beq _0804CFFC
|
|
_0804CFC0:
|
|
ldr r0, _0804D01C
|
|
mov r2, r8
|
|
lsls r1, r2, 2
|
|
adds r1, r0
|
|
movs r3, 0
|
|
ldrsh r0, [r1, r3]
|
|
adds r7, r0
|
|
movs r2, 0x2
|
|
ldrsh r0, [r1, r2]
|
|
adds r6, r0
|
|
_0804CFD4:
|
|
cmp r7, 0x1
|
|
ble _0804CFFC
|
|
cmp r6, 0x1
|
|
ble _0804CFFC
|
|
cmp r7, 0x36
|
|
bgt _0804CFFC
|
|
cmp r6, 0x1E
|
|
bgt _0804CFFC
|
|
adds r0, r7, 0
|
|
adds r1, r6, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r3, 0x3
|
|
mov r10, r3
|
|
mov r0, r10
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804CFFC
|
|
b _0804CDD8
|
|
_0804CFFC:
|
|
ldr r5, [sp, 0x18]
|
|
ldr r0, [sp, 0xC]
|
|
cmp r5, r0
|
|
bge _0804D006
|
|
b _0804CC0E
|
|
_0804D006:
|
|
add sp, 0x20
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804D018: .4byte 0x0000fffc
|
|
_0804D01C: .4byte gAdjacentTileOffsets
|
|
_0804D020: .4byte gUnknown_202F1AE
|
|
thumb_func_end sub_804CBEC
|
|
|
|
thumb_func_start sub_804D024
|
|
sub_804D024:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r7, r0, 0
|
|
mov r8, r1
|
|
adds r5, r2, 0
|
|
adds r6, r3, 0
|
|
movs r4, 0
|
|
cmp r4, r5
|
|
bge _0804D04E
|
|
movs r0, 0x38
|
|
adds r1, r5, 0
|
|
bl __divsi3
|
|
adds r2, r7, 0
|
|
adds r1, r5, 0
|
|
_0804D044:
|
|
stm r2!, {r4}
|
|
adds r4, r0
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bne _0804D044
|
|
_0804D04E:
|
|
lsls r0, r5, 2
|
|
adds r0, r7
|
|
str r4, [r0]
|
|
movs r4, 0
|
|
lsls r5, r6, 2
|
|
cmp r4, r6
|
|
bge _0804D072
|
|
movs r0, 0x20
|
|
adds r1, r6, 0
|
|
bl __divsi3
|
|
mov r2, r8
|
|
adds r1, r6, 0
|
|
_0804D068:
|
|
stm r2!, {r4}
|
|
adds r4, r0
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bne _0804D068
|
|
_0804D072:
|
|
mov r1, r8
|
|
adds r0, r5, r1
|
|
str r4, [r0]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804D024
|
|
|
|
thumb_func_start sub_804D084
|
|
sub_804D084:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
mov r8, r0
|
|
adds r5, r1, 0
|
|
mov r9, r2
|
|
movs r2, 0
|
|
cmp r2, r5
|
|
bge _0804D144
|
|
lsrs r0, r5, 31
|
|
adds r0, r5, r0
|
|
asrs r0, 1
|
|
str r0, [sp]
|
|
movs r3, 0
|
|
_0804D0A6:
|
|
adds r0, r2, 0x1
|
|
mov r10, r0
|
|
mov r4, r9
|
|
cmp r4, 0
|
|
ble _0804D13E
|
|
ldr r6, _0804D0D8
|
|
ldrb r6, [r6]
|
|
str r6, [sp, 0x4]
|
|
lsls r0, r2, 4
|
|
subs r0, r2
|
|
lsls r0, 5
|
|
mov r4, r8
|
|
adds r1, r0, r4
|
|
movs r7, 0
|
|
movs r6, 0x1
|
|
mov r12, r6
|
|
mov r4, r9
|
|
_0804D0C8:
|
|
ldr r0, [sp, 0x4]
|
|
cmp r0, 0x1
|
|
bne _0804D0DC
|
|
ldr r6, [sp]
|
|
cmp r2, r6
|
|
blt _0804D0DC
|
|
strb r0, [r1, 0x8]
|
|
b _0804D102
|
|
.align 2, 0
|
|
_0804D0D8: .4byte gUnknown_202F1AE
|
|
_0804D0DC:
|
|
ldr r6, _0804D0FC
|
|
ldrb r0, [r6]
|
|
cmp r0, 0x2
|
|
bne _0804D100
|
|
lsls r0, r5, 1
|
|
adds r0, r5
|
|
cmp r0, 0
|
|
bge _0804D0EE
|
|
adds r0, 0x3
|
|
_0804D0EE:
|
|
asrs r0, 2
|
|
cmp r2, r0
|
|
blt _0804D100
|
|
mov r0, r12
|
|
strb r0, [r1, 0x8]
|
|
b _0804D102
|
|
.align 2, 0
|
|
_0804D0FC: .4byte gUnknown_202F1AE
|
|
_0804D100:
|
|
strb r3, [r1, 0x8]
|
|
_0804D102:
|
|
lsls r0, r2, 4
|
|
subs r0, r2
|
|
lsls r0, 5
|
|
add r0, r8
|
|
adds r0, r7, r0
|
|
mov r6, r12
|
|
strb r6, [r0, 0xA]
|
|
strb r3, [r0, 0xB]
|
|
strb r3, [r0, 0xF]
|
|
strb r3, [r0, 0xE]
|
|
strb r3, [r0, 0xC]
|
|
strb r3, [r0, 0x16]
|
|
strb r3, [r0, 0x15]
|
|
strb r3, [r0, 0x14]
|
|
strb r3, [r0, 0x13]
|
|
strb r3, [r0, 0x1A]
|
|
strb r3, [r0, 0x19]
|
|
strb r3, [r0, 0x18]
|
|
strb r3, [r0, 0x17]
|
|
strb r3, [r0, 0x9]
|
|
strb r3, [r0, 0x11]
|
|
strb r3, [r0, 0x10]
|
|
strb r3, [r0, 0x12]
|
|
strb r3, [r0, 0x1C]
|
|
strb r3, [r0, 0x1D]
|
|
adds r1, 0x20
|
|
adds r7, 0x20
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _0804D0C8
|
|
_0804D13E:
|
|
mov r2, r10
|
|
cmp r2, r5
|
|
blt _0804D0A6
|
|
_0804D144:
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804D084
|
|
|
|
thumb_func_start sub_804D154
|
|
sub_804D154:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x114
|
|
str r0, [sp, 0x100]
|
|
mov r9, r1
|
|
mov r8, r2
|
|
adds r4, r3, 0
|
|
movs r0, 0x3
|
|
bl DungeonRandomCapped
|
|
adds r3, r0, 0
|
|
cmp r4, 0
|
|
bge _0804D17E
|
|
negs r4, r4
|
|
b _0804D180
|
|
_0804D178:
|
|
movs r0, 0x1
|
|
strb r0, [r4, 0xA]
|
|
b _0804D2B6
|
|
_0804D17E:
|
|
adds r4, r3
|
|
_0804D180:
|
|
movs r3, 0
|
|
mov r0, r8
|
|
mov r2, r9
|
|
muls r2, r0
|
|
cmp r3, r4
|
|
bge _0804D19A
|
|
movs r1, 0x1
|
|
_0804D18E:
|
|
mov r5, sp
|
|
adds r0, r5, r3
|
|
strb r1, [r0]
|
|
adds r3, 0x1
|
|
cmp r3, r4
|
|
blt _0804D18E
|
|
_0804D19A:
|
|
cmp r3, 0xFF
|
|
bgt _0804D1AC
|
|
movs r1, 0
|
|
_0804D1A0:
|
|
mov r6, sp
|
|
adds r0, r6, r3
|
|
strb r1, [r0]
|
|
adds r3, 0x1
|
|
cmp r3, 0xFF
|
|
ble _0804D1A0
|
|
_0804D1AC:
|
|
adds r5, r2, 0
|
|
movs r6, 0x3F
|
|
_0804D1B0:
|
|
adds r0, r5, 0
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0
|
|
adds r0, r5, 0
|
|
bl DungeonRandomCapped
|
|
mov r1, sp
|
|
adds r2, r1, r4
|
|
ldrb r3, [r2]
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
strb r0, [r2]
|
|
strb r3, [r1]
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bge _0804D1B0
|
|
movs r3, 0
|
|
ldr r0, _0804D24C
|
|
str r3, [r0]
|
|
movs r7, 0
|
|
mov r12, r0
|
|
cmp r7, r9
|
|
bge _0804D262
|
|
_0804D1E0:
|
|
movs r5, 0
|
|
adds r4, r7, 0x1
|
|
str r4, [sp, 0x104]
|
|
cmp r5, r8
|
|
bge _0804D25C
|
|
lsls r2, r7, 4
|
|
subs r2, r7
|
|
lsls r2, 5
|
|
ldr r6, [sp, 0x100]
|
|
adds r0, r2, r6
|
|
mov r1, r9
|
|
movs r4, 0x1
|
|
ands r1, r4
|
|
str r1, [sp, 0x110]
|
|
mov r1, r9
|
|
subs r1, 0x1
|
|
adds r0, 0x20
|
|
mov r10, r0
|
|
adds r0, r6, 0
|
|
adds r0, 0x8
|
|
adds r2, r0
|
|
lsrs r0, r1, 31
|
|
adds r1, r0
|
|
asrs r1, 1
|
|
_0804D210:
|
|
ldrb r4, [r2]
|
|
cmp r4, 0
|
|
bne _0804D254
|
|
mov r6, r12
|
|
ldr r0, [r6]
|
|
cmp r0, 0x1F
|
|
ble _0804D220
|
|
strb r4, [r2, 0x2]
|
|
_0804D220:
|
|
mov r6, sp
|
|
adds r0, r6, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0804D250
|
|
movs r0, 0x1
|
|
strb r0, [r2, 0x2]
|
|
mov r6, r12
|
|
ldr r0, [r6]
|
|
adds r0, 0x1
|
|
str r0, [r6]
|
|
ldr r0, [sp, 0x110]
|
|
cmp r0, 0
|
|
beq _0804D252
|
|
cmp r7, r1
|
|
bne _0804D252
|
|
cmp r5, 0x1
|
|
bne _0804D252
|
|
mov r6, r10
|
|
strb r4, [r6, 0xA]
|
|
b _0804D252
|
|
.align 2, 0
|
|
_0804D24C: .4byte gUnknown_202F1CC
|
|
_0804D250:
|
|
strb r0, [r2, 0x2]
|
|
_0804D252:
|
|
adds r3, 0x1
|
|
_0804D254:
|
|
adds r2, 0x20
|
|
adds r5, 0x1
|
|
cmp r5, r8
|
|
blt _0804D210
|
|
_0804D25C:
|
|
ldr r7, [sp, 0x104]
|
|
cmp r7, r9
|
|
blt _0804D1E0
|
|
_0804D262:
|
|
mov r1, r12
|
|
ldr r0, [r1]
|
|
cmp r0, 0x1
|
|
bgt _0804D2BC
|
|
movs r1, 0
|
|
movs r2, 0
|
|
_0804D26E:
|
|
movs r7, 0
|
|
cmp r2, r9
|
|
bge _0804D2AC
|
|
movs r6, 0
|
|
_0804D276:
|
|
movs r5, 0
|
|
cmp r5, r8
|
|
bge _0804D2A4
|
|
lsls r0, r6, 5
|
|
ldr r3, [sp, 0x100]
|
|
adds r4, r0, r3
|
|
_0804D282:
|
|
ldrb r0, [r4, 0x8]
|
|
cmp r0, 0
|
|
bne _0804D29C
|
|
movs r0, 0x64
|
|
str r1, [sp, 0x108]
|
|
str r2, [sp, 0x10C]
|
|
bl DungeonRandomCapped
|
|
ldr r1, [sp, 0x108]
|
|
ldr r2, [sp, 0x10C]
|
|
cmp r0, 0x3B
|
|
bgt _0804D29C
|
|
b _0804D178
|
|
_0804D29C:
|
|
adds r4, 0x20
|
|
adds r5, 0x1
|
|
cmp r5, r8
|
|
blt _0804D282
|
|
_0804D2A4:
|
|
adds r6, 0xF
|
|
adds r7, 0x1
|
|
cmp r7, r9
|
|
blt _0804D276
|
|
_0804D2AC:
|
|
cmp r2, 0
|
|
bne _0804D2B6
|
|
adds r1, 0x1
|
|
cmp r1, 0xC7
|
|
ble _0804D26E
|
|
_0804D2B6:
|
|
ldr r1, _0804D2CC
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
_0804D2BC:
|
|
add sp, 0x114
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804D2CC: .4byte gUnknown_202F1AD
|
|
thumb_func_end sub_804D154
|
|
|
|
thumb_func_start sub_804D2D0
|
|
sub_804D2D0:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x38
|
|
str r0, [sp]
|
|
str r1, [sp, 0x4]
|
|
str r2, [sp, 0x8]
|
|
str r3, [sp, 0xC]
|
|
movs r0, 0
|
|
str r0, [sp, 0x10]
|
|
movs r1, 0
|
|
str r1, [sp, 0x14]
|
|
cmp r1, r2
|
|
blt _0804D2F2
|
|
b _0804D520
|
|
_0804D2F2:
|
|
movs r2, 0
|
|
mov r10, r2
|
|
ldr r3, [sp, 0x14]
|
|
adds r3, 0x1
|
|
str r3, [sp, 0x28]
|
|
ldr r4, [sp, 0x4]
|
|
cmp r10, r4
|
|
blt _0804D304
|
|
b _0804D514
|
|
_0804D304:
|
|
ldr r5, [sp, 0x14]
|
|
lsls r5, 5
|
|
str r5, [sp, 0x1C]
|
|
_0804D30A:
|
|
mov r1, r10
|
|
lsls r0, r1, 2
|
|
ldr r2, [sp, 0xC]
|
|
adds r0, r2
|
|
ldr r3, [r0]
|
|
adds r4, r3, 0x2
|
|
mov r9, r4
|
|
ldr r5, [sp, 0x14]
|
|
lsls r1, r5, 2
|
|
ldr r2, [sp, 0x58]
|
|
adds r1, r2
|
|
ldr r2, [r1]
|
|
adds r4, r2, 0x2
|
|
str r4, [sp, 0x18]
|
|
ldr r0, [r0, 0x4]
|
|
subs r0, r3
|
|
subs r4, r0, 0x4
|
|
ldr r0, [r1, 0x4]
|
|
subs r0, r2
|
|
subs r0, 0x3
|
|
mov r8, r0
|
|
mov r5, r10
|
|
lsls r1, r5, 4
|
|
subs r0, r1, r5
|
|
lsls r0, 5
|
|
ldr r2, [sp]
|
|
adds r0, r2
|
|
ldr r3, [sp, 0x1C]
|
|
adds r7, r3, r0
|
|
ldrb r0, [r7, 0x8]
|
|
str r1, [sp, 0x2C]
|
|
adds r5, 0x1
|
|
str r5, [sp, 0x24]
|
|
cmp r0, 0
|
|
beq _0804D352
|
|
b _0804D508
|
|
_0804D352:
|
|
ldrb r0, [r7, 0xA]
|
|
cmp r0, 0
|
|
bne _0804D35A
|
|
b _0804D48C
|
|
_0804D35A:
|
|
movs r0, 0x5
|
|
adds r1, r4, 0
|
|
bl sub_808411C
|
|
adds r6, r0, 0
|
|
movs r0, 0x4
|
|
mov r1, r8
|
|
bl sub_808411C
|
|
adds r5, r0, 0
|
|
movs r1, 0x1
|
|
adds r0, r6, 0
|
|
orrs r0, r1
|
|
cmp r0, r4
|
|
bge _0804D37A
|
|
adds r6, r0, 0
|
|
_0804D37A:
|
|
adds r0, r5, 0
|
|
orrs r0, r1
|
|
cmp r0, r8
|
|
bge _0804D384
|
|
adds r5, r0, 0
|
|
_0804D384:
|
|
lsls r0, r5, 1
|
|
adds r0, r5
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
cmp r6, r0
|
|
ble _0804D394
|
|
adds r6, r0, 0
|
|
_0804D394:
|
|
lsls r0, r6, 1
|
|
adds r0, r6
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
cmp r5, r0
|
|
ble _0804D3A4
|
|
adds r5, r0, 0
|
|
_0804D3A4:
|
|
subs r0, r4, r6
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0
|
|
add r4, r9
|
|
mov r1, r8
|
|
subs r0, r1, r5
|
|
bl DungeonRandomCapped
|
|
ldr r2, [sp, 0x18]
|
|
adds r0, r2
|
|
mov r8, r0
|
|
adds r3, r4, r6
|
|
adds r6, r0, r5
|
|
strh r4, [r7]
|
|
strh r3, [r7, 0x4]
|
|
mov r5, r8
|
|
strh r5, [r7, 0x2]
|
|
strh r6, [r7, 0x6]
|
|
ldr r0, [sp, 0x10]
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x20]
|
|
cmp r4, r3
|
|
bge _0804D412
|
|
_0804D3D4:
|
|
mov r5, r8
|
|
adds r7, r4, 0x1
|
|
cmp r5, r6
|
|
bge _0804D40C
|
|
ldr r1, _0804D484
|
|
mov r9, r1
|
|
_0804D3E0:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
str r3, [sp, 0x34]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
mov r2, r9
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetMapEntity
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x10]
|
|
strb r1, [r0, 0x9]
|
|
adds r5, 0x1
|
|
ldr r3, [sp, 0x34]
|
|
cmp r5, r6
|
|
blt _0804D3E0
|
|
_0804D40C:
|
|
adds r4, r7, 0
|
|
cmp r4, r3
|
|
blt _0804D3D4
|
|
_0804D412:
|
|
movs r5, 0x1
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
movs r1, 0
|
|
cmp r0, 0x4F
|
|
bgt _0804D422
|
|
movs r1, 0x1
|
|
_0804D422:
|
|
adds r4, r1, 0
|
|
ldr r0, _0804D488
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _0804D42E
|
|
movs r4, 0
|
|
_0804D42E:
|
|
movs r0, 0x4
|
|
ldr r2, [sp, 0x5C]
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0804D43A
|
|
movs r5, 0
|
|
_0804D43A:
|
|
cmp r5, 0
|
|
beq _0804D466
|
|
cmp r4, 0
|
|
beq _0804D44E
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
cmp r0, 0x31
|
|
ble _0804D466
|
|
movs r4, 0
|
|
_0804D44E:
|
|
cmp r5, 0
|
|
beq _0804D466
|
|
ldr r3, [sp, 0x2C]
|
|
mov r5, r10
|
|
subs r0, r3, r5
|
|
lsls r0, 5
|
|
ldr r1, [sp]
|
|
adds r0, r1
|
|
ldr r2, [sp, 0x1C]
|
|
adds r0, r2, r0
|
|
movs r1, 0x1
|
|
strb r1, [r0, 0x1C]
|
|
_0804D466:
|
|
cmp r4, 0
|
|
beq _0804D47E
|
|
ldr r3, [sp, 0x2C]
|
|
mov r4, r10
|
|
subs r0, r3, r4
|
|
lsls r0, 5
|
|
ldr r5, [sp]
|
|
adds r0, r5
|
|
ldr r1, [sp, 0x1C]
|
|
adds r0, r1, r0
|
|
movs r1, 0x1
|
|
strb r1, [r0, 0x1D]
|
|
_0804D47E:
|
|
ldr r2, [sp, 0x20]
|
|
str r2, [sp, 0x10]
|
|
b _0804D508
|
|
.align 2, 0
|
|
_0804D484: .4byte 0x0000fffc
|
|
_0804D488: .4byte gUnknown_202F1C8
|
|
_0804D48C:
|
|
movs r1, 0x2
|
|
movs r3, 0x4
|
|
movs r6, 0x2
|
|
movs r2, 0x4
|
|
mov r5, r10
|
|
cmp r5, 0
|
|
bne _0804D49C
|
|
movs r1, 0x1
|
|
_0804D49C:
|
|
ldr r0, [sp, 0x14]
|
|
cmp r0, 0
|
|
bne _0804D4A4
|
|
movs r6, 0x1
|
|
_0804D4A4:
|
|
ldr r0, [sp, 0x4]
|
|
subs r0, 0x1
|
|
cmp r10, r0
|
|
bne _0804D4AE
|
|
movs r3, 0x2
|
|
_0804D4AE:
|
|
ldr r0, [sp, 0x8]
|
|
subs r0, 0x1
|
|
ldr r5, [sp, 0x14]
|
|
cmp r5, r0
|
|
bne _0804D4BA
|
|
movs r2, 0x2
|
|
_0804D4BA:
|
|
mov r5, r9
|
|
adds r0, r5, r1
|
|
adds r1, r5, r4
|
|
subs r1, r3
|
|
str r2, [sp, 0x30]
|
|
bl sub_808411C
|
|
adds r5, r0, 0
|
|
ldr r1, [sp, 0x18]
|
|
adds r0, r1, r6
|
|
add r1, r8
|
|
ldr r2, [sp, 0x30]
|
|
subs r1, r2
|
|
bl sub_808411C
|
|
adds r4, r0, 0
|
|
strh r5, [r7]
|
|
adds r0, r5, 0x1
|
|
strh r0, [r7, 0x4]
|
|
strh r4, [r7, 0x2]
|
|
adds r0, r4, 0x1
|
|
strh r0, [r7, 0x6]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ldr r3, _0804D530
|
|
adds r2, r3, 0
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0xFE
|
|
strb r1, [r0, 0x9]
|
|
_0804D508:
|
|
ldr r4, [sp, 0x24]
|
|
mov r10, r4
|
|
ldr r5, [sp, 0x4]
|
|
cmp r10, r5
|
|
bge _0804D514
|
|
b _0804D30A
|
|
_0804D514:
|
|
ldr r0, [sp, 0x28]
|
|
str r0, [sp, 0x14]
|
|
ldr r1, [sp, 0x8]
|
|
cmp r0, r1
|
|
bge _0804D520
|
|
b _0804D2F2
|
|
_0804D520:
|
|
add sp, 0x38
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804D530: .4byte 0x0000fffc
|
|
thumb_func_end sub_804D2D0
|
|
|
|
thumb_func_start sub_804D534
|
|
sub_804D534:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x4
|
|
adds r3, r0, 0
|
|
adds r7, r1, 0
|
|
mov r9, r2
|
|
movs r1, 0
|
|
cmp r1, r9
|
|
bge _0804D5A0
|
|
_0804D54A:
|
|
adds r0, r1, 0x1
|
|
mov r8, r0
|
|
cmp r7, 0
|
|
ble _0804D59A
|
|
lsls r1, 5
|
|
adds r0, r1, 0
|
|
adds r0, 0x8
|
|
adds r4, r3, r0
|
|
adds r5, r3, r1
|
|
adds r6, r7, 0
|
|
_0804D55E:
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
bne _0804D58C
|
|
ldrb r0, [r4, 0x6]
|
|
cmp r0, 0
|
|
bne _0804D58C
|
|
ldrb r0, [r4, 0xA]
|
|
cmp r0, 0
|
|
bne _0804D58C
|
|
ldrb r0, [r4, 0x2]
|
|
cmp r0, 0
|
|
beq _0804D58C
|
|
ldrb r0, [r4, 0x14]
|
|
cmp r0, 0
|
|
bne _0804D58C
|
|
ldrb r0, [r4, 0x15]
|
|
cmp r0, 0
|
|
beq _0804D58C
|
|
adds r0, r5, 0
|
|
str r3, [sp]
|
|
bl sub_804F694
|
|
ldr r3, [sp]
|
|
_0804D58C:
|
|
movs r0, 0xF0
|
|
lsls r0, 1
|
|
adds r4, r0
|
|
adds r5, r0
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bne _0804D55E
|
|
_0804D59A:
|
|
mov r1, r8
|
|
cmp r1, r9
|
|
blt _0804D54A
|
|
_0804D5A0:
|
|
add sp, 0x4
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804D534
|
|
|
|
thumb_func_start sub_804D5B0
|
|
sub_804D5B0:
|
|
push {r4-r6,lr}
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5,r6}
|
|
sub sp, 0x8
|
|
mov r9, r0
|
|
adds r4, r1, 0
|
|
adds r5, r2, 0
|
|
adds r6, r3, 0
|
|
adds r0, r4, 0
|
|
bl DungeonRandomCapped
|
|
mov r8, r0
|
|
adds r0, r5, 0
|
|
bl DungeonRandomCapped
|
|
str r0, [sp]
|
|
str r6, [sp, 0x4]
|
|
mov r0, r9
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
mov r3, r8
|
|
bl sub_804D5F0
|
|
add sp, 0x8
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804D5B0
|
|
|
|
thumb_func_start sub_804D5F0
|
|
sub_804D5F0:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x20
|
|
str r0, [sp]
|
|
str r1, [sp, 0x4]
|
|
str r2, [sp, 0x8]
|
|
adds r7, r3, 0
|
|
ldr r6, [sp, 0x40]
|
|
ldr r0, [sp, 0x44]
|
|
ldrb r0, [r0, 0x5]
|
|
str r0, [sp, 0xC]
|
|
movs r0, 0x4
|
|
bl DungeonRandomCapped
|
|
adds r5, r0, 0
|
|
movs r1, 0
|
|
mov r10, r1
|
|
ldr r2, [sp, 0xC]
|
|
cmp r10, r2
|
|
blt _0804D620
|
|
b _0804D726
|
|
_0804D620:
|
|
lsls r4, r6, 5
|
|
mov r9, r4
|
|
lsls r0, r7, 4
|
|
subs r0, r7
|
|
lsls r0, 5
|
|
ldr r1, [sp]
|
|
adds r0, r1
|
|
mov r8, r0
|
|
_0804D630:
|
|
movs r0, 0x8
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0
|
|
movs r0, 0x4
|
|
bl DungeonRandomCapped
|
|
cmp r4, 0x3
|
|
bgt _0804D644
|
|
adds r5, r0, 0
|
|
_0804D644:
|
|
mov r4, r10
|
|
adds r4, 0x1
|
|
_0804D648:
|
|
movs r1, 0
|
|
movs r0, 0x3
|
|
ands r0, r5
|
|
cmp r0, 0x1
|
|
beq _0804D670
|
|
cmp r0, 0x1
|
|
bgt _0804D65C
|
|
cmp r0, 0
|
|
beq _0804D666
|
|
b _0804D686
|
|
_0804D65C:
|
|
cmp r0, 0x2
|
|
beq _0804D676
|
|
cmp r0, 0x3
|
|
beq _0804D67C
|
|
b _0804D686
|
|
_0804D666:
|
|
ldr r0, [sp, 0x4]
|
|
subs r0, 0x1
|
|
cmp r7, r0
|
|
blt _0804D68A
|
|
b _0804D684
|
|
_0804D670:
|
|
cmp r6, 0
|
|
bgt _0804D68A
|
|
b _0804D684
|
|
_0804D676:
|
|
cmp r7, 0
|
|
bgt _0804D68A
|
|
b _0804D684
|
|
_0804D67C:
|
|
ldr r0, [sp, 0x8]
|
|
subs r0, 0x1
|
|
cmp r6, r0
|
|
blt _0804D68A
|
|
_0804D684:
|
|
adds r5, 0x1
|
|
_0804D686:
|
|
cmp r1, 0
|
|
beq _0804D648
|
|
_0804D68A:
|
|
movs r1, 0x3
|
|
ands r1, r5
|
|
cmp r1, 0x1
|
|
beq _0804D6C6
|
|
cmp r1, 0x1
|
|
bgt _0804D69C
|
|
cmp r1, 0
|
|
beq _0804D6A6
|
|
b _0804D71E
|
|
_0804D69C:
|
|
cmp r1, 0x2
|
|
beq _0804D6E2
|
|
cmp r1, 0x3
|
|
beq _0804D704
|
|
b _0804D71E
|
|
_0804D6A6:
|
|
mov r1, r9
|
|
add r1, r8
|
|
movs r0, 0xF0
|
|
lsls r0, 1
|
|
adds r2, r1, r0
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
bne _0804D71E
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x16]
|
|
strb r0, [r2, 0x15]
|
|
movs r1, 0xF0
|
|
lsls r1, 1
|
|
add r8, r1
|
|
adds r7, 0x1
|
|
b _0804D71E
|
|
_0804D6C6:
|
|
mov r2, r9
|
|
add r2, r8
|
|
adds r3, r2, 0
|
|
subs r3, 0x20
|
|
ldrb r0, [r3, 0x8]
|
|
cmp r0, 0
|
|
bne _0804D71E
|
|
strb r1, [r2, 0x13]
|
|
strb r1, [r3, 0x14]
|
|
movs r2, 0x20
|
|
negs r2, r2
|
|
add r9, r2
|
|
subs r6, 0x1
|
|
b _0804D71E
|
|
_0804D6E2:
|
|
mov r1, r9
|
|
add r1, r8
|
|
ldr r0, _0804D700
|
|
adds r2, r1, r0
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
bne _0804D71E
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x15]
|
|
strb r0, [r2, 0x16]
|
|
ldr r1, _0804D700
|
|
add r8, r1
|
|
subs r7, 0x1
|
|
b _0804D71E
|
|
.align 2, 0
|
|
_0804D700: .4byte 0xfffffe20
|
|
_0804D704:
|
|
mov r1, r9
|
|
add r1, r8
|
|
adds r2, r1, 0
|
|
adds r2, 0x20
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
bne _0804D71E
|
|
movs r0, 0x1
|
|
strb r0, [r1, 0x14]
|
|
strb r0, [r2, 0x13]
|
|
movs r1, 0x20
|
|
add r9, r1
|
|
adds r6, 0x1
|
|
_0804D71E:
|
|
mov r10, r4
|
|
ldr r2, [sp, 0xC]
|
|
cmp r10, r2
|
|
blt _0804D630
|
|
_0804D726:
|
|
ldr r4, [sp, 0x44]
|
|
ldrb r0, [r4, 0xB]
|
|
cmp r0, 0
|
|
beq _0804D730
|
|
b _0804D8B8
|
|
_0804D730:
|
|
movs r0, 0
|
|
mov r9, r0
|
|
movs r7, 0
|
|
ldr r1, [sp, 0x4]
|
|
cmp r9, r1
|
|
blt _0804D73E
|
|
b _0804D8B0
|
|
_0804D73E:
|
|
movs r2, 0x1
|
|
mov r8, r2
|
|
_0804D742:
|
|
movs r6, 0
|
|
adds r4, r7, 0x1
|
|
str r4, [sp, 0x14]
|
|
ldr r0, [sp, 0x8]
|
|
cmp r6, r0
|
|
blt _0804D750
|
|
b _0804D8A6
|
|
_0804D750:
|
|
lsls r1, r7, 4
|
|
str r1, [sp, 0x10]
|
|
subs r0, r1, r7
|
|
lsls r0, 5
|
|
ldr r2, [sp]
|
|
adds r3, r0, r2
|
|
_0804D75C:
|
|
lsls r0, r6, 5
|
|
adds r2, r0, r3
|
|
ldrb r1, [r2, 0x8]
|
|
adds r4, r0, 0
|
|
adds r0, r6, 0x1
|
|
str r0, [sp, 0x18]
|
|
cmp r1, 0
|
|
beq _0804D76E
|
|
b _0804D89C
|
|
_0804D76E:
|
|
ldrb r0, [r2, 0xA]
|
|
cmp r0, 0
|
|
beq _0804D776
|
|
b _0804D89C
|
|
_0804D776:
|
|
ldrb r0, [r2, 0x13]
|
|
negs r1, r0
|
|
orrs r1, r0
|
|
lsrs r1, 31
|
|
ldrb r0, [r2, 0x14]
|
|
cmp r0, 0
|
|
beq _0804D786
|
|
adds r1, 0x1
|
|
_0804D786:
|
|
ldrb r0, [r2, 0x15]
|
|
cmp r0, 0
|
|
beq _0804D78E
|
|
adds r1, 0x1
|
|
_0804D78E:
|
|
ldrb r0, [r2, 0x16]
|
|
cmp r0, 0
|
|
beq _0804D796
|
|
adds r1, 0x1
|
|
_0804D796:
|
|
cmp r1, 0x1
|
|
beq _0804D79C
|
|
b _0804D89C
|
|
_0804D79C:
|
|
movs r0, 0x4
|
|
str r3, [sp, 0x1C]
|
|
bl DungeonRandomCapped
|
|
adds r5, r0, 0
|
|
movs r2, 0
|
|
mov r10, r2
|
|
ldr r1, [sp, 0x10]
|
|
subs r0, r1, r7
|
|
lsls r0, 5
|
|
ldr r1, [sp]
|
|
adds r0, r1
|
|
adds r1, r4, r0
|
|
ldr r3, [sp, 0x1C]
|
|
_0804D7B8:
|
|
movs r0, 0x3
|
|
ands r0, r5
|
|
cmp r0, 0x1
|
|
beq _0804D7E0
|
|
cmp r0, 0x1
|
|
bgt _0804D7CA
|
|
cmp r0, 0
|
|
beq _0804D7D4
|
|
b _0804D800
|
|
_0804D7CA:
|
|
cmp r0, 0x2
|
|
beq _0804D7E8
|
|
cmp r0, 0x3
|
|
beq _0804D7F0
|
|
b _0804D800
|
|
_0804D7D4:
|
|
ldr r0, [sp, 0x4]
|
|
subs r0, 0x1
|
|
cmp r7, r0
|
|
bge _0804D7FE
|
|
ldrb r0, [r1, 0x16]
|
|
b _0804D7FA
|
|
_0804D7E0:
|
|
cmp r6, 0
|
|
ble _0804D7FE
|
|
ldrb r0, [r1, 0x13]
|
|
b _0804D7FA
|
|
_0804D7E8:
|
|
cmp r7, 0
|
|
ble _0804D7FE
|
|
ldrb r0, [r1, 0x15]
|
|
b _0804D7FA
|
|
_0804D7F0:
|
|
ldr r0, [sp, 0x8]
|
|
subs r0, 0x1
|
|
cmp r6, r0
|
|
bge _0804D7FE
|
|
ldrb r0, [r1, 0x14]
|
|
_0804D7FA:
|
|
cmp r0, 0
|
|
beq _0804D80E
|
|
_0804D7FE:
|
|
adds r5, 0x1
|
|
_0804D800:
|
|
mov r0, r10
|
|
cmp r0, 0
|
|
bne _0804D80E
|
|
adds r2, 0x1
|
|
cmp r2, 0x7
|
|
ble _0804D7B8
|
|
b _0804D89C
|
|
_0804D80E:
|
|
movs r2, 0x3
|
|
ands r2, r5
|
|
cmp r2, 0x1
|
|
beq _0804D844
|
|
cmp r2, 0x1
|
|
bgt _0804D820
|
|
cmp r2, 0
|
|
beq _0804D82A
|
|
b _0804D89C
|
|
_0804D820:
|
|
cmp r2, 0x2
|
|
beq _0804D85C
|
|
cmp r2, 0x3
|
|
beq _0804D880
|
|
b _0804D89C
|
|
_0804D82A:
|
|
adds r1, r4, r3
|
|
movs r4, 0xF0
|
|
lsls r4, 1
|
|
adds r2, r1, r4
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
bne _0804D89C
|
|
mov r0, r8
|
|
strb r0, [r1, 0x16]
|
|
strb r0, [r2, 0x15]
|
|
movs r1, 0x1
|
|
mov r9, r1
|
|
b _0804D89C
|
|
_0804D844:
|
|
adds r1, r4, r3
|
|
movs r4, 0xF0
|
|
lsls r4, 1
|
|
adds r0, r1, r4
|
|
ldrb r0, [r0, 0x8]
|
|
cmp r0, 0
|
|
bne _0804D89C
|
|
strb r2, [r1, 0x13]
|
|
adds r0, r1, 0
|
|
subs r0, 0x20
|
|
strb r2, [r0, 0x14]
|
|
b _0804D898
|
|
_0804D85C:
|
|
adds r1, r4, r3
|
|
movs r2, 0xF0
|
|
lsls r2, 1
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0, 0x8]
|
|
cmp r0, 0
|
|
bne _0804D89C
|
|
mov r4, r8
|
|
strb r4, [r1, 0x15]
|
|
ldr r2, _0804D87C
|
|
adds r0, r1, r2
|
|
strb r4, [r0, 0x16]
|
|
movs r4, 0x1
|
|
mov r9, r4
|
|
b _0804D89C
|
|
.align 2, 0
|
|
_0804D87C: .4byte 0xfffffe20
|
|
_0804D880:
|
|
adds r1, r4, r3
|
|
movs r2, 0xF0
|
|
lsls r2, 1
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0, 0x8]
|
|
cmp r0, 0
|
|
bne _0804D89C
|
|
mov r4, r8
|
|
strb r4, [r1, 0x14]
|
|
adds r0, r1, 0
|
|
adds r0, 0x20
|
|
strb r4, [r0, 0x13]
|
|
_0804D898:
|
|
movs r0, 0x1
|
|
mov r9, r0
|
|
_0804D89C:
|
|
ldr r6, [sp, 0x18]
|
|
ldr r1, [sp, 0x8]
|
|
cmp r6, r1
|
|
bge _0804D8A6
|
|
b _0804D75C
|
|
_0804D8A6:
|
|
ldr r7, [sp, 0x14]
|
|
ldr r2, [sp, 0x4]
|
|
cmp r7, r2
|
|
bge _0804D8B0
|
|
b _0804D742
|
|
_0804D8B0:
|
|
mov r4, r9
|
|
cmp r4, 0
|
|
beq _0804D8B8
|
|
b _0804D730
|
|
_0804D8B8:
|
|
add sp, 0x20
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804D5F0
|
|
|
|
thumb_func_start sub_804D8C8
|
|
sub_804D8C8:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x58
|
|
str r0, [sp, 0xC]
|
|
str r1, [sp, 0x10]
|
|
str r2, [sp, 0x14]
|
|
str r3, [sp, 0x18]
|
|
ldr r0, [sp, 0x7C]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0x1C]
|
|
movs r0, 0
|
|
str r0, [sp, 0x20]
|
|
cmp r0, r1
|
|
bge _0804D968
|
|
_0804D8EC:
|
|
movs r1, 0
|
|
mov r10, r1
|
|
ldr r2, [sp, 0x20]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x38]
|
|
ldr r3, [sp, 0x14]
|
|
cmp r10, r3
|
|
bge _0804D95E
|
|
ldr r4, [sp, 0x20]
|
|
lsls r1, r4, 4
|
|
subs r1, r4
|
|
movs r3, 0
|
|
lsls r1, 5
|
|
ldr r0, [sp, 0xC]
|
|
adds r0, 0x8
|
|
adds r1, r0
|
|
_0804D90C:
|
|
ldrb r2, [r1]
|
|
cmp r2, 0
|
|
beq _0804D91C
|
|
strb r3, [r1, 0xF]
|
|
strb r3, [r1, 0x10]
|
|
strb r3, [r1, 0x11]
|
|
strb r3, [r1, 0x12]
|
|
b _0804D952
|
|
_0804D91C:
|
|
ldr r5, [sp, 0x20]
|
|
cmp r5, 0
|
|
bgt _0804D924
|
|
strb r2, [r1, 0xD]
|
|
_0804D924:
|
|
mov r6, r10
|
|
cmp r6, 0
|
|
bgt _0804D92C
|
|
strb r2, [r1, 0xB]
|
|
_0804D92C:
|
|
ldr r0, [sp, 0x10]
|
|
subs r0, 0x1
|
|
ldr r7, [sp, 0x20]
|
|
cmp r7, r0
|
|
blt _0804D938
|
|
strb r2, [r1, 0xE]
|
|
_0804D938:
|
|
ldr r0, [sp, 0x14]
|
|
subs r0, 0x1
|
|
cmp r10, r0
|
|
blt _0804D942
|
|
strb r2, [r1, 0xC]
|
|
_0804D942:
|
|
ldrb r0, [r1, 0xB]
|
|
strb r0, [r1, 0xF]
|
|
ldrb r0, [r1, 0xC]
|
|
strb r0, [r1, 0x10]
|
|
ldrb r0, [r1, 0xD]
|
|
strb r0, [r1, 0x11]
|
|
ldrb r0, [r1, 0xE]
|
|
strb r0, [r1, 0x12]
|
|
_0804D952:
|
|
adds r1, 0x20
|
|
movs r0, 0x1
|
|
add r10, r0
|
|
ldr r2, [sp, 0x14]
|
|
cmp r10, r2
|
|
blt _0804D90C
|
|
_0804D95E:
|
|
ldr r3, [sp, 0x38]
|
|
str r3, [sp, 0x20]
|
|
ldr r4, [sp, 0x10]
|
|
cmp r3, r4
|
|
blt _0804D8EC
|
|
_0804D968:
|
|
movs r5, 0
|
|
str r5, [sp, 0x20]
|
|
ldr r6, [sp, 0x10]
|
|
cmp r5, r6
|
|
blt _0804D974
|
|
b _0804DBC6
|
|
_0804D974:
|
|
movs r7, 0
|
|
mov r10, r7
|
|
ldr r0, [sp, 0x20]
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x38]
|
|
ldr r1, [sp, 0x14]
|
|
cmp r10, r1
|
|
blt _0804D986
|
|
b _0804DBBA
|
|
_0804D986:
|
|
ldr r2, [sp, 0x20]
|
|
lsls r2, 4
|
|
str r2, [sp, 0x40]
|
|
ldr r3, [sp, 0x20]
|
|
subs r1, r2, r3
|
|
lsls r1, 5
|
|
movs r4, 0
|
|
str r4, [sp, 0x48]
|
|
ldr r5, [sp, 0xC]
|
|
movs r6, 0xF0
|
|
lsls r6, 1
|
|
adds r0, r5, r6
|
|
adds r0, r1
|
|
mov r8, r0
|
|
adds r5, r1, r5
|
|
ldr r7, [sp, 0xC]
|
|
ldr r2, _0804DA0C
|
|
adds r0, r7, r2
|
|
adds r7, r1, r0
|
|
ldr r3, [sp, 0x78]
|
|
str r3, [sp, 0x4C]
|
|
ldr r0, [sp, 0xC]
|
|
adds r0, 0x20
|
|
adds r0, r1, r0
|
|
str r0, [sp, 0x50]
|
|
ldr r0, [sp, 0xC]
|
|
subs r0, 0x20
|
|
adds r6, r1, r0
|
|
ldr r4, [sp, 0x20]
|
|
lsls r0, r4, 2
|
|
ldr r1, [sp, 0x18]
|
|
adds r0, r1
|
|
str r0, [sp, 0x24]
|
|
_0804D9C8:
|
|
ldr r2, [sp, 0x20]
|
|
lsls r0, r2, 4
|
|
subs r0, r2
|
|
lsls r0, 5
|
|
ldr r3, [sp, 0xC]
|
|
adds r0, r3
|
|
ldr r1, [sp, 0x48]
|
|
adds r4, r1, r0
|
|
ldrb r0, [r4, 0x8]
|
|
cmp r0, 0
|
|
beq _0804D9E0
|
|
b _0804DB92
|
|
_0804D9E0:
|
|
ldrb r0, [r4, 0xA]
|
|
cmp r0, 0
|
|
beq _0804DA10
|
|
movs r2, 0
|
|
ldrsh r0, [r4, r2]
|
|
adds r0, 0x1
|
|
movs r3, 0x4
|
|
ldrsh r1, [r4, r3]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
mov r9, r0
|
|
movs r1, 0x2
|
|
ldrsh r0, [r4, r1]
|
|
adds r0, 0x1
|
|
movs r2, 0x6
|
|
ldrsh r1, [r4, r2]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
adds r4, r0, 0
|
|
b _0804DA1A
|
|
.align 2, 0
|
|
_0804DA0C: .4byte 0xfffffe20
|
|
_0804DA10:
|
|
movs r0, 0
|
|
ldrsh r3, [r4, r0]
|
|
mov r9, r3
|
|
movs r1, 0x2
|
|
ldrsh r4, [r4, r1]
|
|
_0804DA1A:
|
|
ldrb r0, [r5, 0x17]
|
|
cmp r0, 0
|
|
beq _0804DA74
|
|
ldrb r0, [r6, 0x8]
|
|
cmp r0, 0
|
|
bne _0804DA68
|
|
ldrb r0, [r6, 0xA]
|
|
cmp r0, 0
|
|
beq _0804DA40
|
|
movs r2, 0
|
|
ldrsh r0, [r6, r2]
|
|
adds r0, 0x1
|
|
movs r3, 0x4
|
|
ldrsh r1, [r6, r3]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
adds r2, r0, 0
|
|
b _0804DA44
|
|
_0804DA40:
|
|
movs r0, 0
|
|
ldrsh r2, [r6, r0]
|
|
_0804DA44:
|
|
movs r3, 0x2
|
|
ldrsh r1, [r5, r3]
|
|
movs r0, 0x6
|
|
ldrsh r3, [r6, r0]
|
|
subs r3, 0x1
|
|
mov r12, r3
|
|
movs r3, 0x1
|
|
str r3, [sp]
|
|
ldr r3, [sp, 0x24]
|
|
ldr r0, [r3]
|
|
str r0, [sp, 0x4]
|
|
ldr r3, [sp, 0x4C]
|
|
ldr r0, [r3]
|
|
str r0, [sp, 0x8]
|
|
mov r0, r9
|
|
mov r3, r12
|
|
bl sub_804E328
|
|
_0804DA68:
|
|
movs r0, 0
|
|
strb r0, [r5, 0x17]
|
|
strb r0, [r6, 0x18]
|
|
movs r1, 0x1
|
|
strb r1, [r5, 0xB]
|
|
strb r1, [r6, 0xB]
|
|
_0804DA74:
|
|
ldrb r0, [r5, 0x18]
|
|
cmp r0, 0
|
|
beq _0804DAD4
|
|
ldr r2, [sp, 0x50]
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
bne _0804DAC6
|
|
ldrb r0, [r2, 0xA]
|
|
cmp r0, 0
|
|
beq _0804DA9C
|
|
movs r3, 0x20
|
|
ldrsh r0, [r5, r3]
|
|
adds r0, 0x1
|
|
movs r2, 0x24
|
|
ldrsh r1, [r5, r2]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
adds r2, r0, 0
|
|
b _0804DAA0
|
|
_0804DA9C:
|
|
movs r3, 0x20
|
|
ldrsh r2, [r5, r3]
|
|
_0804DAA0:
|
|
movs r0, 0x6
|
|
ldrsh r1, [r5, r0]
|
|
subs r1, 0x1
|
|
movs r0, 0x22
|
|
ldrsh r3, [r5, r0]
|
|
mov r12, r3
|
|
movs r3, 0x1
|
|
str r3, [sp]
|
|
ldr r3, [sp, 0x24]
|
|
ldr r0, [r3]
|
|
str r0, [sp, 0x4]
|
|
ldr r3, [sp, 0x4C]
|
|
ldr r0, [r3, 0x4]
|
|
subs r0, 0x1
|
|
str r0, [sp, 0x8]
|
|
mov r0, r9
|
|
mov r3, r12
|
|
bl sub_804E328
|
|
_0804DAC6:
|
|
movs r0, 0
|
|
strb r0, [r5, 0x18]
|
|
ldr r1, [sp, 0x50]
|
|
strb r0, [r1, 0x17]
|
|
movs r2, 0x1
|
|
strb r2, [r5, 0xB]
|
|
strb r2, [r1, 0xB]
|
|
_0804DAD4:
|
|
ldrb r0, [r5, 0x19]
|
|
cmp r0, 0
|
|
beq _0804DB2E
|
|
ldrb r0, [r7, 0x8]
|
|
cmp r0, 0
|
|
bne _0804DB22
|
|
ldrb r0, [r7, 0xA]
|
|
cmp r0, 0
|
|
beq _0804DAFA
|
|
movs r3, 0x2
|
|
ldrsh r0, [r7, r3]
|
|
adds r0, 0x1
|
|
movs r2, 0x6
|
|
ldrsh r1, [r7, r2]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
adds r3, r0, 0
|
|
b _0804DAFE
|
|
_0804DAFA:
|
|
movs r0, 0x2
|
|
ldrsh r3, [r7, r0]
|
|
_0804DAFE:
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
movs r1, 0
|
|
ldrsh r2, [r7, r1]
|
|
subs r2, 0x1
|
|
mov r9, r2
|
|
movs r2, 0
|
|
str r2, [sp]
|
|
ldr r2, [sp, 0x24]
|
|
ldr r1, [r2]
|
|
str r1, [sp, 0x4]
|
|
ldr r2, [sp, 0x4C]
|
|
ldr r1, [r2]
|
|
str r1, [sp, 0x8]
|
|
adds r1, r4, 0
|
|
mov r2, r9
|
|
bl sub_804E328
|
|
_0804DB22:
|
|
movs r3, 0
|
|
strb r3, [r5, 0x19]
|
|
strb r3, [r7, 0x1A]
|
|
movs r0, 0x1
|
|
strb r0, [r5, 0xB]
|
|
strb r0, [r7, 0xB]
|
|
_0804DB2E:
|
|
ldrb r0, [r5, 0x1A]
|
|
cmp r0, 0
|
|
beq _0804DB92
|
|
mov r1, r8
|
|
ldrb r0, [r1, 0x8]
|
|
cmp r0, 0
|
|
bne _0804DB84
|
|
ldrb r0, [r1, 0xA]
|
|
cmp r0, 0
|
|
beq _0804DB56
|
|
movs r2, 0x2
|
|
ldrsh r0, [r1, r2]
|
|
adds r0, 0x1
|
|
movs r3, 0x6
|
|
ldrsh r1, [r1, r3]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
adds r3, r0, 0
|
|
b _0804DB5C
|
|
_0804DB56:
|
|
mov r0, r8
|
|
movs r1, 0x2
|
|
ldrsh r3, [r0, r1]
|
|
_0804DB5C:
|
|
movs r2, 0x4
|
|
ldrsh r0, [r5, r2]
|
|
subs r0, 0x1
|
|
mov r1, r8
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
mov r9, r1
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
ldr r2, [sp, 0x24]
|
|
ldr r1, [r2, 0x4]
|
|
subs r1, 0x1
|
|
str r1, [sp, 0x4]
|
|
ldr r2, [sp, 0x4C]
|
|
ldr r1, [r2]
|
|
str r1, [sp, 0x8]
|
|
adds r1, r4, 0
|
|
mov r2, r9
|
|
bl sub_804E328
|
|
_0804DB84:
|
|
movs r3, 0
|
|
strb r3, [r5, 0x1A]
|
|
mov r4, r8
|
|
strb r3, [r4, 0x19]
|
|
movs r0, 0x1
|
|
strb r0, [r5, 0xB]
|
|
strb r0, [r4, 0xB]
|
|
_0804DB92:
|
|
ldr r1, [sp, 0x48]
|
|
adds r1, 0x20
|
|
str r1, [sp, 0x48]
|
|
movs r2, 0x20
|
|
add r8, r2
|
|
adds r5, 0x20
|
|
adds r7, 0x20
|
|
ldr r3, [sp, 0x4C]
|
|
adds r3, 0x4
|
|
str r3, [sp, 0x4C]
|
|
ldr r4, [sp, 0x50]
|
|
adds r4, 0x20
|
|
str r4, [sp, 0x50]
|
|
adds r6, 0x20
|
|
movs r0, 0x1
|
|
add r10, r0
|
|
ldr r1, [sp, 0x14]
|
|
cmp r10, r1
|
|
bge _0804DBBA
|
|
b _0804D9C8
|
|
_0804DBBA:
|
|
ldr r2, [sp, 0x38]
|
|
str r2, [sp, 0x20]
|
|
ldr r3, [sp, 0x10]
|
|
cmp r2, r3
|
|
bge _0804DBC6
|
|
b _0804D974
|
|
_0804DBC6:
|
|
ldr r4, [sp, 0x1C]
|
|
cmp r4, 0
|
|
beq _0804DBCE
|
|
b _0804E026
|
|
_0804DBCE:
|
|
movs r5, 0
|
|
str r5, [sp, 0x20]
|
|
ldr r6, [sp, 0x10]
|
|
cmp r5, r6
|
|
blt _0804DBDA
|
|
b _0804E026
|
|
_0804DBDA:
|
|
movs r7, 0
|
|
mov r10, r7
|
|
ldr r0, [sp, 0x20]
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x38]
|
|
ldr r1, [sp, 0x14]
|
|
cmp r10, r1
|
|
blt _0804DBEC
|
|
b _0804E018
|
|
_0804DBEC:
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
mov r2, r10
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x3C]
|
|
cmp r0, 0x4
|
|
ble _0804DBFE
|
|
b _0804E00C
|
|
_0804DBFE:
|
|
mov r3, r10
|
|
lsls r1, r3, 5
|
|
ldr r4, [sp, 0x20]
|
|
lsls r2, r4, 4
|
|
subs r0, r2, r4
|
|
lsls r0, 5
|
|
ldr r5, [sp, 0xC]
|
|
adds r0, r5
|
|
adds r4, r1, r0
|
|
ldrb r0, [r4, 0x8]
|
|
str r1, [sp, 0x44]
|
|
str r2, [sp, 0x40]
|
|
cmp r0, 0
|
|
beq _0804DC1C
|
|
b _0804E00C
|
|
_0804DC1C:
|
|
ldrb r0, [r4, 0xB]
|
|
cmp r0, 0
|
|
bne _0804DC24
|
|
b _0804E00C
|
|
_0804DC24:
|
|
ldrb r0, [r4, 0x12]
|
|
cmp r0, 0
|
|
beq _0804DC2C
|
|
b _0804E00C
|
|
_0804DC2C:
|
|
ldrb r0, [r4, 0x9]
|
|
cmp r0, 0
|
|
beq _0804DC34
|
|
b _0804E00C
|
|
_0804DC34:
|
|
ldrb r0, [r4, 0xA]
|
|
cmp r0, 0
|
|
bne _0804DC3C
|
|
b _0804E00C
|
|
_0804DC3C:
|
|
movs r0, 0x4
|
|
bl DungeonRandomCapped
|
|
cmp r0, 0x1
|
|
bne _0804DC48
|
|
b _0804DD50
|
|
_0804DC48:
|
|
cmp r0, 0x1
|
|
bgt _0804DC52
|
|
cmp r0, 0
|
|
beq _0804DC60
|
|
b _0804E00C
|
|
_0804DC52:
|
|
cmp r0, 0x2
|
|
bne _0804DC58
|
|
b _0804DE3C
|
|
_0804DC58:
|
|
cmp r0, 0x3
|
|
bne _0804DC5E
|
|
b _0804DF30
|
|
_0804DC5E:
|
|
b _0804E00C
|
|
_0804DC60:
|
|
ldr r6, [sp, 0x20]
|
|
cmp r6, 0
|
|
bgt _0804DC68
|
|
b _0804E00C
|
|
_0804DC68:
|
|
ldr r7, _0804DD48
|
|
adds r2, r4, r7
|
|
ldrb r0, [r2, 0xB]
|
|
cmp r0, 0
|
|
bne _0804DC74
|
|
b _0804E00C
|
|
_0804DC74:
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
beq _0804DC7C
|
|
b _0804E00C
|
|
_0804DC7C:
|
|
ldrb r0, [r2, 0xA]
|
|
cmp r0, 0
|
|
bne _0804DC84
|
|
b _0804E00C
|
|
_0804DC84:
|
|
ldrb r0, [r2, 0x9]
|
|
cmp r0, 0
|
|
beq _0804DC8C
|
|
b _0804E00C
|
|
_0804DC8C:
|
|
ldrb r0, [r2, 0x12]
|
|
cmp r0, 0
|
|
beq _0804DC94
|
|
b _0804E00C
|
|
_0804DC94:
|
|
movs r1, 0
|
|
ldrsh r0, [r2, r1]
|
|
str r0, [sp, 0x28]
|
|
ldrh r3, [r4, 0x2]
|
|
movs r5, 0x2
|
|
ldrsh r1, [r4, r5]
|
|
ldrh r5, [r2, 0x2]
|
|
movs r6, 0x2
|
|
ldrsh r0, [r2, r6]
|
|
cmp r1, r0
|
|
ble _0804DCAC
|
|
adds r3, r5, 0
|
|
_0804DCAC:
|
|
lsls r0, r3, 16
|
|
asrs r0, 16
|
|
mov r9, r0
|
|
movs r0, 0x4
|
|
ldrsh r7, [r4, r0]
|
|
mov r10, r7
|
|
ldrh r3, [r4, 0x6]
|
|
movs r5, 0x6
|
|
ldrsh r1, [r4, r5]
|
|
ldrh r5, [r2, 0x6]
|
|
movs r6, 0x6
|
|
ldrsh r0, [r2, r6]
|
|
cmp r1, r0
|
|
bge _0804DCCA
|
|
adds r3, r5, 0
|
|
_0804DCCA:
|
|
lsls r0, r3, 16
|
|
asrs r7, r0, 16
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r4, r2]
|
|
bl GetMapTileAtPosition
|
|
ldrb r0, [r0, 0x9]
|
|
mov r8, r0
|
|
ldr r5, [sp, 0x28]
|
|
cmp r5, r10
|
|
bge _0804DD16
|
|
_0804DCE4:
|
|
mov r4, r9
|
|
adds r6, r5, 0x1
|
|
cmp r9, r7
|
|
bge _0804DD10
|
|
ldr r0, _0804DD4C
|
|
adds r3, r0, 0
|
|
_0804DCF0:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
str r3, [sp, 0x54]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ldr r3, [sp, 0x54]
|
|
ands r1, r3
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
mov r1, r8
|
|
strb r1, [r0, 0x9]
|
|
adds r4, 0x1
|
|
cmp r4, r7
|
|
blt _0804DCF0
|
|
_0804DD10:
|
|
adds r5, r6, 0
|
|
cmp r5, r10
|
|
blt _0804DCE4
|
|
_0804DD16:
|
|
ldr r2, [sp, 0x40]
|
|
ldr r3, [sp, 0x20]
|
|
subs r0, r2, r3
|
|
lsls r0, 5
|
|
ldr r4, [sp, 0xC]
|
|
adds r0, r4
|
|
ldr r5, [sp, 0x44]
|
|
adds r0, r5, r0
|
|
ldr r6, _0804DD48
|
|
adds r3, r0, r6
|
|
mov r1, sp
|
|
ldrh r1, [r1, 0x28]
|
|
strh r1, [r3]
|
|
mov r2, r10
|
|
strh r2, [r3, 0x4]
|
|
mov r4, r9
|
|
strh r4, [r3, 0x2]
|
|
strh r7, [r3, 0x6]
|
|
movs r5, 0x1
|
|
strb r5, [r0, 0x12]
|
|
strb r5, [r3, 0x12]
|
|
movs r6, 0
|
|
strb r6, [r0, 0xB]
|
|
strb r5, [r0, 0x11]
|
|
b _0804E00C
|
|
.align 2, 0
|
|
_0804DD48: .4byte 0xfffffe20
|
|
_0804DD4C: .4byte 0x0000fffc
|
|
_0804DD50:
|
|
mov r7, r10
|
|
cmp r7, 0
|
|
bgt _0804DD58
|
|
b _0804E00C
|
|
_0804DD58:
|
|
adds r2, r4, 0
|
|
subs r2, 0x20
|
|
ldrb r0, [r2, 0xB]
|
|
cmp r0, 0
|
|
bne _0804DD64
|
|
b _0804E00C
|
|
_0804DD64:
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
beq _0804DD6C
|
|
b _0804E00C
|
|
_0804DD6C:
|
|
ldrb r0, [r2, 0xA]
|
|
cmp r0, 0
|
|
bne _0804DD74
|
|
b _0804E00C
|
|
_0804DD74:
|
|
ldrb r0, [r2, 0x9]
|
|
cmp r0, 0
|
|
beq _0804DD7C
|
|
b _0804E00C
|
|
_0804DD7C:
|
|
ldrb r0, [r2, 0x12]
|
|
cmp r0, 0
|
|
beq _0804DD84
|
|
b _0804E00C
|
|
_0804DD84:
|
|
ldrh r3, [r4]
|
|
movs r0, 0
|
|
ldrsh r1, [r4, r0]
|
|
ldrh r5, [r2]
|
|
movs r6, 0
|
|
ldrsh r0, [r2, r6]
|
|
cmp r1, r0
|
|
ble _0804DD96
|
|
adds r3, r5, 0
|
|
_0804DD96:
|
|
lsls r0, r3, 16
|
|
asrs r0, 16
|
|
str r0, [sp, 0x2C]
|
|
movs r0, 0x2
|
|
ldrsh r7, [r2, r0]
|
|
mov r10, r7
|
|
ldrh r3, [r4, 0x4]
|
|
movs r5, 0x4
|
|
ldrsh r1, [r4, r5]
|
|
ldrh r5, [r2, 0x4]
|
|
movs r6, 0x4
|
|
ldrsh r0, [r2, r6]
|
|
cmp r1, r0
|
|
bge _0804DDB4
|
|
adds r3, r5, 0
|
|
_0804DDB4:
|
|
lsls r0, r3, 16
|
|
asrs r0, 16
|
|
mov r8, r0
|
|
movs r0, 0x6
|
|
ldrsh r7, [r4, r0]
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r4, r2]
|
|
bl GetMapTileAtPosition
|
|
ldrb r0, [r0, 0x9]
|
|
mov r9, r0
|
|
ldr r5, [sp, 0x2C]
|
|
cmp r5, r8
|
|
bge _0804DE06
|
|
_0804DDD4:
|
|
mov r4, r10
|
|
adds r6, r5, 0x1
|
|
cmp r10, r7
|
|
bge _0804DE00
|
|
ldr r0, _0804DE38
|
|
adds r3, r0, 0
|
|
_0804DDE0:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
str r3, [sp, 0x54]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ldr r3, [sp, 0x54]
|
|
ands r1, r3
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
mov r1, r9
|
|
strb r1, [r0, 0x9]
|
|
adds r4, 0x1
|
|
cmp r4, r7
|
|
blt _0804DDE0
|
|
_0804DE00:
|
|
adds r5, r6, 0
|
|
cmp r5, r8
|
|
blt _0804DDD4
|
|
_0804DE06:
|
|
ldr r2, [sp, 0x40]
|
|
ldr r3, [sp, 0x20]
|
|
subs r0, r2, r3
|
|
lsls r0, 5
|
|
ldr r4, [sp, 0xC]
|
|
adds r0, r4
|
|
ldr r5, [sp, 0x44]
|
|
adds r0, r5, r0
|
|
adds r3, r0, 0
|
|
subs r3, 0x20
|
|
mov r6, sp
|
|
ldrh r6, [r6, 0x2C]
|
|
strh r6, [r3]
|
|
mov r1, r8
|
|
strh r1, [r3, 0x4]
|
|
mov r2, r10
|
|
strh r2, [r3, 0x2]
|
|
strh r7, [r3, 0x6]
|
|
movs r4, 0x1
|
|
strb r4, [r0, 0x12]
|
|
strb r4, [r3, 0x12]
|
|
movs r5, 0
|
|
strb r5, [r0, 0xB]
|
|
strb r4, [r0, 0x11]
|
|
b _0804E00C
|
|
.align 2, 0
|
|
_0804DE38: .4byte 0x0000fffc
|
|
_0804DE3C:
|
|
ldr r0, [sp, 0x10]
|
|
subs r0, 0x2
|
|
ldr r6, [sp, 0x20]
|
|
cmp r6, r0
|
|
ble _0804DE48
|
|
b _0804E00C
|
|
_0804DE48:
|
|
movs r7, 0xF0
|
|
lsls r7, 1
|
|
adds r2, r4, r7
|
|
ldrb r0, [r2, 0xB]
|
|
cmp r0, 0
|
|
bne _0804DE56
|
|
b _0804E00C
|
|
_0804DE56:
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
beq _0804DE5E
|
|
b _0804E00C
|
|
_0804DE5E:
|
|
ldrb r0, [r2, 0xA]
|
|
cmp r0, 0
|
|
bne _0804DE66
|
|
b _0804E00C
|
|
_0804DE66:
|
|
ldrb r0, [r2, 0x9]
|
|
cmp r0, 0
|
|
beq _0804DE6E
|
|
b _0804E00C
|
|
_0804DE6E:
|
|
ldrb r0, [r2, 0x12]
|
|
cmp r0, 0
|
|
beq _0804DE76
|
|
b _0804E00C
|
|
_0804DE76:
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
str r0, [sp, 0x30]
|
|
ldrh r3, [r2, 0x2]
|
|
movs r5, 0x2
|
|
ldrsh r1, [r2, r5]
|
|
ldrh r5, [r4, 0x2]
|
|
movs r6, 0x2
|
|
ldrsh r0, [r4, r6]
|
|
cmp r1, r0
|
|
ble _0804DE8E
|
|
adds r3, r5, 0
|
|
_0804DE8E:
|
|
lsls r0, r3, 16
|
|
asrs r0, 16
|
|
mov r9, r0
|
|
movs r0, 0x4
|
|
ldrsh r7, [r2, r0]
|
|
mov r10, r7
|
|
ldrh r3, [r2, 0x6]
|
|
movs r5, 0x6
|
|
ldrsh r1, [r2, r5]
|
|
ldrh r2, [r4, 0x6]
|
|
movs r6, 0x6
|
|
ldrsh r0, [r4, r6]
|
|
cmp r1, r0
|
|
bge _0804DEAC
|
|
adds r3, r2, 0
|
|
_0804DEAC:
|
|
lsls r0, r3, 16
|
|
asrs r7, r0, 16
|
|
movs r0, 0x2
|
|
ldrsh r1, [r4, r0]
|
|
ldr r0, [sp, 0x30]
|
|
bl GetMapTileAtPosition
|
|
ldrb r0, [r0, 0x9]
|
|
mov r8, r0
|
|
ldr r5, [sp, 0x30]
|
|
cmp r5, r10
|
|
bge _0804DEF6
|
|
_0804DEC4:
|
|
mov r4, r9
|
|
adds r6, r5, 0x1
|
|
cmp r9, r7
|
|
bge _0804DEF0
|
|
ldr r1, _0804DF2C
|
|
adds r3, r1, 0
|
|
_0804DED0:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
str r3, [sp, 0x54]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ldr r3, [sp, 0x54]
|
|
ands r1, r3
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
mov r2, r8
|
|
strb r2, [r0, 0x9]
|
|
adds r4, 0x1
|
|
cmp r4, r7
|
|
blt _0804DED0
|
|
_0804DEF0:
|
|
adds r5, r6, 0
|
|
cmp r5, r10
|
|
blt _0804DEC4
|
|
_0804DEF6:
|
|
ldr r3, [sp, 0x40]
|
|
ldr r4, [sp, 0x20]
|
|
subs r0, r3, r4
|
|
lsls r0, 5
|
|
ldr r5, [sp, 0xC]
|
|
adds r0, r5
|
|
ldr r6, [sp, 0x44]
|
|
adds r0, r6, r0
|
|
mov r1, sp
|
|
ldrh r1, [r1, 0x30]
|
|
strh r1, [r0]
|
|
mov r2, r10
|
|
strh r2, [r0, 0x4]
|
|
mov r3, r9
|
|
strh r3, [r0, 0x2]
|
|
strh r7, [r0, 0x6]
|
|
movs r4, 0xF0
|
|
lsls r4, 1
|
|
adds r1, r0, r4
|
|
movs r5, 0x1
|
|
strb r5, [r1, 0x12]
|
|
strb r5, [r0, 0x12]
|
|
movs r6, 0
|
|
strb r6, [r1, 0xB]
|
|
strb r5, [r1, 0x11]
|
|
b _0804E00C
|
|
.align 2, 0
|
|
_0804DF2C: .4byte 0x0000fffc
|
|
_0804DF30:
|
|
ldr r0, [sp, 0x14]
|
|
subs r0, 0x2
|
|
cmp r10, r0
|
|
bgt _0804E00C
|
|
adds r3, r4, 0
|
|
adds r3, 0x20
|
|
ldrb r0, [r3, 0xB]
|
|
cmp r0, 0
|
|
beq _0804E00C
|
|
ldrb r0, [r3, 0x8]
|
|
cmp r0, 0
|
|
bne _0804E00C
|
|
ldrb r0, [r3, 0xA]
|
|
cmp r0, 0
|
|
beq _0804E00C
|
|
ldrb r0, [r3, 0x9]
|
|
cmp r0, 0
|
|
bne _0804E00C
|
|
ldrb r0, [r3, 0x12]
|
|
cmp r0, 0
|
|
bne _0804E00C
|
|
ldrh r2, [r4, 0x20]
|
|
movs r7, 0x20
|
|
ldrsh r1, [r4, r7]
|
|
ldrh r5, [r4]
|
|
movs r6, 0
|
|
ldrsh r0, [r4, r6]
|
|
cmp r1, r0
|
|
ble _0804DF6C
|
|
adds r2, r5, 0
|
|
_0804DF6C:
|
|
lsls r0, r2, 16
|
|
asrs r0, 16
|
|
str r0, [sp, 0x34]
|
|
movs r7, 0x2
|
|
ldrsh r6, [r4, r7]
|
|
ldrh r2, [r3, 0x4]
|
|
movs r0, 0x4
|
|
ldrsh r1, [r3, r0]
|
|
ldrh r5, [r4, 0x4]
|
|
movs r7, 0x4
|
|
ldrsh r0, [r4, r7]
|
|
cmp r1, r0
|
|
bge _0804DF88
|
|
adds r2, r5, 0
|
|
_0804DF88:
|
|
lsls r0, r2, 16
|
|
asrs r0, 16
|
|
mov r8, r0
|
|
movs r0, 0x6
|
|
ldrsh r3, [r3, r0]
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
adds r1, r6, 0
|
|
str r3, [sp, 0x54]
|
|
bl GetMapTileAtPosition
|
|
ldrb r0, [r0, 0x9]
|
|
mov r10, r0
|
|
ldr r5, [sp, 0x34]
|
|
ldr r3, [sp, 0x54]
|
|
cmp r5, r8
|
|
bge _0804DFDE
|
|
_0804DFAA:
|
|
adds r4, r6, 0
|
|
adds r7, r5, 0x1
|
|
cmp r6, r3
|
|
bge _0804DFD8
|
|
ldr r2, _0804E038
|
|
mov r9, r2
|
|
_0804DFB6:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
str r3, [sp, 0x54]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
mov r2, r9
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
mov r1, r10
|
|
strb r1, [r0, 0x9]
|
|
adds r4, 0x1
|
|
ldr r3, [sp, 0x54]
|
|
cmp r4, r3
|
|
blt _0804DFB6
|
|
_0804DFD8:
|
|
adds r5, r7, 0
|
|
cmp r5, r8
|
|
blt _0804DFAA
|
|
_0804DFDE:
|
|
ldr r2, [sp, 0x40]
|
|
ldr r4, [sp, 0x20]
|
|
subs r0, r2, r4
|
|
lsls r0, 5
|
|
ldr r5, [sp, 0xC]
|
|
adds r0, r5
|
|
ldr r7, [sp, 0x44]
|
|
adds r0, r7, r0
|
|
mov r1, sp
|
|
ldrh r1, [r1, 0x34]
|
|
strh r1, [r0]
|
|
mov r2, r8
|
|
strh r2, [r0, 0x4]
|
|
strh r6, [r0, 0x2]
|
|
strh r3, [r0, 0x6]
|
|
adds r1, r0, 0
|
|
adds r1, 0x20
|
|
movs r3, 0x1
|
|
strb r3, [r1, 0x12]
|
|
strb r3, [r0, 0x12]
|
|
movs r4, 0
|
|
strb r4, [r1, 0xB]
|
|
strb r3, [r1, 0x11]
|
|
_0804E00C:
|
|
ldr r5, [sp, 0x3C]
|
|
mov r10, r5
|
|
ldr r6, [sp, 0x14]
|
|
cmp r10, r6
|
|
bge _0804E018
|
|
b _0804DBEC
|
|
_0804E018:
|
|
ldr r7, [sp, 0x38]
|
|
str r7, [sp, 0x20]
|
|
adds r0, r7, 0
|
|
ldr r1, [sp, 0x10]
|
|
cmp r0, r1
|
|
bge _0804E026
|
|
b _0804DBDA
|
|
_0804E026:
|
|
add sp, 0x58
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804E038: .4byte 0x0000fffc
|
|
thumb_func_end sub_804D8C8
|
|
|
|
thumb_func_start sub_804E03C
|
|
sub_804E03C:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x44
|
|
str r0, [sp]
|
|
str r1, [sp, 0x4]
|
|
str r2, [sp, 0x8]
|
|
movs r0, 0
|
|
str r0, [sp, 0xC]
|
|
cmp r0, r1
|
|
blt _0804E058
|
|
b _0804E318
|
|
_0804E058:
|
|
movs r2, 0
|
|
ldr r1, [sp, 0xC]
|
|
adds r1, 0x1
|
|
str r1, [sp, 0x28]
|
|
ldr r3, [sp, 0x8]
|
|
cmp r2, r3
|
|
blt _0804E068
|
|
b _0804E30C
|
|
_0804E068:
|
|
ldr r4, [sp, 0xC]
|
|
lsls r4, 4
|
|
str r4, [sp, 0x14]
|
|
ldr r6, [sp, 0xC]
|
|
subs r0, r4, r6
|
|
lsls r0, 5
|
|
ldr r1, [sp]
|
|
adds r0, r1
|
|
str r0, [sp, 0x18]
|
|
_0804E07A:
|
|
lsls r0, r2, 5
|
|
ldr r3, [sp, 0x18]
|
|
adds r4, r0, r3
|
|
ldrb r1, [r4, 0x8]
|
|
str r0, [sp, 0x34]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x2C]
|
|
cmp r1, 0
|
|
beq _0804E08E
|
|
b _0804E302
|
|
_0804E08E:
|
|
ldrb r0, [r4, 0x11]
|
|
cmp r0, 0
|
|
beq _0804E096
|
|
b _0804E302
|
|
_0804E096:
|
|
ldrb r0, [r4, 0x12]
|
|
cmp r0, 0
|
|
beq _0804E09E
|
|
b _0804E302
|
|
_0804E09E:
|
|
ldrb r0, [r4, 0xB]
|
|
cmp r0, 0
|
|
bne _0804E0A6
|
|
b _0804E302
|
|
_0804E0A6:
|
|
ldrb r0, [r4, 0xA]
|
|
cmp r0, 0
|
|
bne _0804E0AE
|
|
b _0804E302
|
|
_0804E0AE:
|
|
ldrb r0, [r4, 0x9]
|
|
cmp r0, 0
|
|
beq _0804E0B6
|
|
b _0804E302
|
|
_0804E0B6:
|
|
ldrb r0, [r4, 0x10]
|
|
cmp r0, 0
|
|
beq _0804E0BE
|
|
b _0804E302
|
|
_0804E0BE:
|
|
ldrb r0, [r4, 0x1C]
|
|
cmp r0, 0
|
|
bne _0804E0C6
|
|
b _0804E302
|
|
_0804E0C6:
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
cmp r0, 0x3B
|
|
bgt _0804E0D2
|
|
b _0804E302
|
|
_0804E0D2:
|
|
movs r6, 0x4
|
|
ldrsh r2, [r4, r6]
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
subs r2, r0
|
|
movs r3, 0x6
|
|
ldrsh r0, [r4, r3]
|
|
movs r6, 0x2
|
|
ldrsh r1, [r4, r6]
|
|
subs r0, r1
|
|
adds r2, r0
|
|
str r2, [sp, 0x10]
|
|
adds r0, r2, 0
|
|
cmp r2, 0
|
|
bge _0804E0F2
|
|
adds r0, 0x3
|
|
_0804E0F2:
|
|
asrs r0, 2
|
|
str r0, [sp, 0x10]
|
|
cmp r0, 0
|
|
bne _0804E0FE
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x10]
|
|
_0804E0FE:
|
|
movs r1, 0
|
|
ldr r2, [sp, 0x10]
|
|
cmp r1, r2
|
|
blt _0804E108
|
|
b _0804E302
|
|
_0804E108:
|
|
ldr r3, [sp, 0x14]
|
|
ldr r4, [sp, 0xC]
|
|
subs r0, r3, r4
|
|
lsls r0, 5
|
|
ldr r6, [sp]
|
|
adds r0, r6
|
|
ldr r2, [sp, 0x34]
|
|
adds r0, r2, r0
|
|
str r0, [sp, 0x20]
|
|
_0804E11A:
|
|
movs r4, 0
|
|
adds r1, 0x1
|
|
str r1, [sp, 0x30]
|
|
_0804E120:
|
|
movs r0, 0x4
|
|
bl DungeonRandomCapped
|
|
str r0, [sp, 0x1C]
|
|
cmp r0, 0x1
|
|
beq _0804E14A
|
|
cmp r0, 0x1
|
|
ble _0804E138
|
|
cmp r0, 0x2
|
|
beq _0804E168
|
|
cmp r0, 0x3
|
|
beq _0804E182
|
|
_0804E138:
|
|
ldr r3, [sp, 0x20]
|
|
movs r6, 0
|
|
ldrsh r7, [r3, r6]
|
|
movs r1, 0x2
|
|
ldrsh r0, [r3, r1]
|
|
mov r8, r0
|
|
cmp r4, 0
|
|
bne _0804E19C
|
|
b _0804E15C
|
|
_0804E14A:
|
|
ldr r2, [sp, 0x20]
|
|
movs r3, 0x4
|
|
ldrsh r0, [r2, r3]
|
|
subs r7, r0, 0x1
|
|
movs r0, 0x2
|
|
ldrsh r6, [r2, r0]
|
|
mov r8, r6
|
|
cmp r4, 0
|
|
beq _0804E162
|
|
_0804E15C:
|
|
movs r3, 0
|
|
movs r2, 0x1
|
|
b _0804E1A0
|
|
_0804E162:
|
|
movs r3, 0x1
|
|
negs r3, r3
|
|
b _0804E19E
|
|
_0804E168:
|
|
ldr r1, [sp, 0x20]
|
|
movs r2, 0x4
|
|
ldrsh r0, [r1, r2]
|
|
subs r7, r0, 0x1
|
|
movs r3, 0x6
|
|
ldrsh r0, [r1, r3]
|
|
subs r0, 0x1
|
|
mov r8, r0
|
|
cmp r4, 0
|
|
beq _0804E194
|
|
movs r3, 0x1
|
|
negs r3, r3
|
|
b _0804E19E
|
|
_0804E182:
|
|
ldr r6, [sp, 0x20]
|
|
movs r0, 0
|
|
ldrsh r7, [r6, r0]
|
|
movs r1, 0x6
|
|
ldrsh r0, [r6, r1]
|
|
subs r0, 0x1
|
|
mov r8, r0
|
|
cmp r4, 0
|
|
beq _0804E19C
|
|
_0804E194:
|
|
movs r3, 0
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
b _0804E1A0
|
|
_0804E19C:
|
|
movs r3, 0x1
|
|
_0804E19E:
|
|
movs r2, 0
|
|
_0804E1A0:
|
|
movs r6, 0
|
|
mov r9, r6
|
|
ldr r5, [sp, 0x34]
|
|
ldr r0, [sp, 0x14]
|
|
str r0, [sp, 0x40]
|
|
ldr r6, [sp, 0x18]
|
|
adds r1, r5, r6
|
|
movs r6, 0
|
|
ldrsh r0, [r1, r6]
|
|
mov r10, r0
|
|
adds r4, 0x1
|
|
str r4, [sp, 0x24]
|
|
cmp r7, r10
|
|
bge _0804E1BE
|
|
b _0804E2F0
|
|
_0804E1BE:
|
|
movs r4, 0x4
|
|
ldrsh r0, [r1, r4]
|
|
cmp r7, r0
|
|
blt _0804E1C8
|
|
b _0804E2F0
|
|
_0804E1C8:
|
|
ldr r6, [sp, 0x40]
|
|
ldr r1, [sp, 0xC]
|
|
subs r0, r6, r1
|
|
lsls r0, 5
|
|
ldr r4, [sp]
|
|
adds r0, r4
|
|
adds r4, r5, r0
|
|
movs r6, 0x2
|
|
ldrsh r0, [r4, r6]
|
|
cmp r8, r0
|
|
bge _0804E1E0
|
|
b _0804E2F0
|
|
_0804E1E0:
|
|
movs r1, 0x6
|
|
ldrsh r0, [r4, r1]
|
|
cmp r8, r0
|
|
blt _0804E1EA
|
|
b _0804E2F0
|
|
_0804E1EA:
|
|
adds r0, r7, 0
|
|
mov r1, r8
|
|
str r2, [sp, 0x38]
|
|
str r3, [sp, 0x3C]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
ldr r2, [sp, 0x38]
|
|
ldr r3, [sp, 0x3C]
|
|
cmp r0, 0x1
|
|
bne _0804E2D0
|
|
movs r6, 0
|
|
_0804E206:
|
|
ldr r1, _0804E228
|
|
lsls r0, r6, 2
|
|
adds r0, r1
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
adds r1, r7
|
|
mov r10, r1
|
|
movs r3, 0x2
|
|
ldrsh r0, [r0, r3]
|
|
add r0, r8
|
|
mov r9, r0
|
|
movs r3, 0
|
|
movs r5, 0x1
|
|
negs r5, r5
|
|
_0804E222:
|
|
movs r4, 0x1
|
|
negs r4, r4
|
|
b _0804E22E
|
|
.align 2, 0
|
|
_0804E228: .4byte gAdjacentTileOffsets
|
|
_0804E22C:
|
|
adds r4, 0x1
|
|
_0804E22E:
|
|
cmp r4, 0x1
|
|
bgt _0804E25A
|
|
mov r1, r10
|
|
adds r0, r1, r4
|
|
mov r2, r9
|
|
adds r1, r2, r5
|
|
str r3, [sp, 0x3C]
|
|
bl GetMapTileAtPosition
|
|
adds r2, r0, 0
|
|
ldrh r1, [r2]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
ldr r3, [sp, 0x3C]
|
|
cmp r0, 0x1
|
|
bne _0804E22C
|
|
ldrb r0, [r2, 0x9]
|
|
cmp r0, 0xFF
|
|
bne _0804E256
|
|
movs r3, 0x1
|
|
_0804E256:
|
|
cmp r3, 0
|
|
beq _0804E22C
|
|
_0804E25A:
|
|
cmp r3, 0
|
|
bne _0804E26A
|
|
adds r5, 0x1
|
|
cmp r5, 0x1
|
|
ble _0804E222
|
|
adds r6, 0x1
|
|
cmp r6, 0x7
|
|
ble _0804E206
|
|
_0804E26A:
|
|
cmp r6, 0x8
|
|
bne _0804E2F0
|
|
movs r6, 0
|
|
ldr r3, [sp, 0x1C]
|
|
lsls r1, r3, 3
|
|
ldr r0, _0804E2C4
|
|
adds r4, r1, r0
|
|
_0804E278:
|
|
ldr r0, _0804E2C8
|
|
lsls r1, r6, 2
|
|
adds r1, r0
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
movs r3, 0x2
|
|
ldrsh r1, [r1, r3]
|
|
adds r0, r7, r0
|
|
add r1, r8
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
movs r1, 0
|
|
cmp r0, 0x1
|
|
bne _0804E29C
|
|
movs r1, 0x1
|
|
_0804E29C:
|
|
ldrb r0, [r4]
|
|
cmp r0, r1
|
|
bne _0804E2AA
|
|
adds r4, 0x2
|
|
adds r6, 0x2
|
|
cmp r6, 0x7
|
|
ble _0804E278
|
|
_0804E2AA:
|
|
cmp r6, 0x8
|
|
bne _0804E2F0
|
|
adds r0, r7, 0
|
|
mov r1, r8
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
ldr r4, _0804E2CC
|
|
adds r1, r4, 0
|
|
ands r2, r1
|
|
strh r2, [r0]
|
|
b _0804E2F0
|
|
.align 2, 0
|
|
_0804E2C4: .4byte gUnknown_80F6DD5
|
|
_0804E2C8: .4byte gAdjacentTileOffsets
|
|
_0804E2CC: .4byte 0x0000fffc
|
|
_0804E2D0:
|
|
adds r7, r3
|
|
add r8, r2
|
|
movs r6, 0x1
|
|
add r9, r6
|
|
mov r0, r9
|
|
cmp r0, 0x9
|
|
bgt _0804E2F0
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
cmp r7, r0
|
|
blt _0804E2F0
|
|
movs r6, 0x4
|
|
ldrsh r0, [r4, r6]
|
|
cmp r7, r0
|
|
bge _0804E2F0
|
|
b _0804E1C8
|
|
_0804E2F0:
|
|
ldr r4, [sp, 0x24]
|
|
cmp r4, 0x1
|
|
bgt _0804E2F8
|
|
b _0804E120
|
|
_0804E2F8:
|
|
ldr r1, [sp, 0x30]
|
|
ldr r0, [sp, 0x10]
|
|
cmp r1, r0
|
|
bge _0804E302
|
|
b _0804E11A
|
|
_0804E302:
|
|
ldr r2, [sp, 0x2C]
|
|
ldr r1, [sp, 0x8]
|
|
cmp r2, r1
|
|
bge _0804E30C
|
|
b _0804E07A
|
|
_0804E30C:
|
|
ldr r2, [sp, 0x28]
|
|
str r2, [sp, 0xC]
|
|
ldr r3, [sp, 0x4]
|
|
cmp r2, r3
|
|
bge _0804E318
|
|
b _0804E058
|
|
_0804E318:
|
|
add sp, 0x44
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804E03C
|
|
|
|
thumb_func_start sub_804E328
|
|
sub_804E328:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
str r2, [sp]
|
|
str r3, [sp, 0x4]
|
|
ldr r0, [sp, 0x28]
|
|
lsls r0, 24
|
|
mov r10, r5
|
|
mov r9, r4
|
|
ldr r1, [sp, 0x2C]
|
|
mov r8, r1
|
|
ldr r7, [sp, 0x30]
|
|
cmp r0, 0
|
|
bne _0804E350
|
|
b _0804E470
|
|
_0804E350:
|
|
movs r6, 0
|
|
_0804E352:
|
|
cmp r4, r7
|
|
beq _0804E3A8
|
|
adds r0, r6, 0
|
|
adds r6, 0x1
|
|
cmp r0, 0x37
|
|
ble _0804E360
|
|
b _0804E57E
|
|
_0804E360:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804E390
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
ldr r3, _0804E38C
|
|
adds r1, r3, 0
|
|
ands r2, r1
|
|
movs r1, 0x1
|
|
orrs r2, r1
|
|
strh r2, [r0]
|
|
b _0804E39C
|
|
.align 2, 0
|
|
_0804E38C: .4byte 0x0000fffc
|
|
_0804E390:
|
|
cmp r5, r10
|
|
beq _0804E396
|
|
b _0804E57E
|
|
_0804E396:
|
|
cmp r4, r9
|
|
beq _0804E39C
|
|
b _0804E57E
|
|
_0804E39C:
|
|
cmp r4, r7
|
|
bge _0804E3A4
|
|
adds r4, 0x1
|
|
b _0804E352
|
|
_0804E3A4:
|
|
subs r4, 0x1
|
|
b _0804E352
|
|
_0804E3A8:
|
|
movs r6, 0
|
|
ldr r0, [sp]
|
|
cmp r5, r0
|
|
beq _0804E40A
|
|
movs r7, 0
|
|
_0804E3B2:
|
|
adds r0, r6, 0
|
|
adds r6, 0x1
|
|
cmp r0, 0x37
|
|
ble _0804E3BC
|
|
b _0804E57E
|
|
_0804E3BC:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804E3EC
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
ldr r3, _0804E3E8
|
|
adds r1, r3, 0
|
|
ands r2, r1
|
|
movs r1, 0x1
|
|
orrs r2, r1
|
|
strh r2, [r0]
|
|
b _0804E3F8
|
|
.align 2, 0
|
|
_0804E3E8: .4byte 0x0000fffc
|
|
_0804E3EC:
|
|
cmp r5, r10
|
|
beq _0804E3F2
|
|
b _0804E57E
|
|
_0804E3F2:
|
|
cmp r4, r9
|
|
beq _0804E3F8
|
|
b _0804E57E
|
|
_0804E3F8:
|
|
ldr r0, [sp]
|
|
cmp r5, r0
|
|
bge _0804E402
|
|
adds r5, 0x1
|
|
b _0804E404
|
|
_0804E402:
|
|
subs r5, 0x1
|
|
_0804E404:
|
|
ldr r1, [sp]
|
|
cmp r5, r1
|
|
bne _0804E3B2
|
|
_0804E40A:
|
|
movs r6, 0
|
|
ldr r3, [sp, 0x4]
|
|
cmp r4, r3
|
|
bne _0804E414
|
|
b _0804E57E
|
|
_0804E414:
|
|
movs r7, 0
|
|
_0804E416:
|
|
adds r0, r6, 0
|
|
adds r6, 0x1
|
|
cmp r0, 0x37
|
|
ble _0804E420
|
|
b _0804E57E
|
|
_0804E420:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804E450
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
ldr r3, _0804E44C
|
|
adds r1, r3, 0
|
|
ands r2, r1
|
|
movs r1, 0x1
|
|
orrs r2, r1
|
|
strh r2, [r0]
|
|
b _0804E45C
|
|
.align 2, 0
|
|
_0804E44C: .4byte 0x0000fffc
|
|
_0804E450:
|
|
cmp r5, r10
|
|
beq _0804E456
|
|
b _0804E57E
|
|
_0804E456:
|
|
cmp r4, r9
|
|
beq _0804E45C
|
|
b _0804E57E
|
|
_0804E45C:
|
|
ldr r0, [sp, 0x4]
|
|
cmp r4, r0
|
|
bge _0804E466
|
|
adds r4, 0x1
|
|
b _0804E468
|
|
_0804E466:
|
|
subs r4, 0x1
|
|
_0804E468:
|
|
ldr r1, [sp, 0x4]
|
|
cmp r4, r1
|
|
bne _0804E416
|
|
b _0804E57E
|
|
_0804E470:
|
|
movs r6, 0
|
|
cmp r5, r8
|
|
beq _0804E4C6
|
|
movs r7, 0
|
|
_0804E478:
|
|
adds r0, r6, 0
|
|
adds r6, 0x1
|
|
cmp r0, 0x37
|
|
ble _0804E482
|
|
b _0804E57E
|
|
_0804E482:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804E4B0
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
ldr r3, _0804E4AC
|
|
adds r1, r3, 0
|
|
ands r2, r1
|
|
movs r1, 0x1
|
|
orrs r2, r1
|
|
strh r2, [r0]
|
|
b _0804E4B8
|
|
.align 2, 0
|
|
_0804E4AC: .4byte 0x0000fffc
|
|
_0804E4B0:
|
|
cmp r5, r10
|
|
bne _0804E57E
|
|
cmp r4, r9
|
|
bne _0804E57E
|
|
_0804E4B8:
|
|
cmp r5, r8
|
|
bge _0804E4C0
|
|
adds r5, 0x1
|
|
b _0804E4C2
|
|
_0804E4C0:
|
|
subs r5, 0x1
|
|
_0804E4C2:
|
|
cmp r5, r8
|
|
bne _0804E478
|
|
_0804E4C6:
|
|
movs r6, 0
|
|
ldr r0, [sp, 0x4]
|
|
cmp r4, r0
|
|
beq _0804E522
|
|
movs r7, 0
|
|
_0804E4D0:
|
|
adds r0, r6, 0
|
|
adds r6, 0x1
|
|
cmp r0, 0x37
|
|
bgt _0804E57E
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804E508
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
ldr r3, _0804E504
|
|
adds r1, r3, 0
|
|
ands r2, r1
|
|
movs r1, 0x1
|
|
orrs r2, r1
|
|
strh r2, [r0]
|
|
b _0804E510
|
|
.align 2, 0
|
|
_0804E504: .4byte 0x0000fffc
|
|
_0804E508:
|
|
cmp r5, r10
|
|
bne _0804E57E
|
|
cmp r4, r9
|
|
bne _0804E57E
|
|
_0804E510:
|
|
ldr r0, [sp, 0x4]
|
|
cmp r4, r0
|
|
bge _0804E51A
|
|
adds r4, 0x1
|
|
b _0804E51C
|
|
_0804E51A:
|
|
subs r4, 0x1
|
|
_0804E51C:
|
|
ldr r1, [sp, 0x4]
|
|
cmp r4, r1
|
|
bne _0804E4D0
|
|
_0804E522:
|
|
movs r6, 0
|
|
ldr r3, [sp]
|
|
cmp r5, r3
|
|
beq _0804E57E
|
|
movs r7, 0
|
|
_0804E52C:
|
|
adds r0, r6, 0
|
|
adds r6, 0x1
|
|
cmp r0, 0x37
|
|
bgt _0804E57E
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804E564
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
ldr r3, _0804E560
|
|
adds r1, r3, 0
|
|
ands r2, r1
|
|
movs r1, 0x1
|
|
orrs r2, r1
|
|
strh r2, [r0]
|
|
b _0804E56C
|
|
.align 2, 0
|
|
_0804E560: .4byte 0x0000fffc
|
|
_0804E564:
|
|
cmp r5, r10
|
|
bne _0804E57E
|
|
cmp r4, r9
|
|
bne _0804E57E
|
|
_0804E56C:
|
|
ldr r0, [sp]
|
|
cmp r5, r0
|
|
bge _0804E576
|
|
adds r5, 0x1
|
|
b _0804E578
|
|
_0804E576:
|
|
subs r5, 0x1
|
|
_0804E578:
|
|
ldr r1, [sp]
|
|
cmp r5, r1
|
|
bne _0804E52C
|
|
_0804E57E:
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804E328
|
|
|
|
thumb_func_start sub_804E590
|
|
sub_804E590:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x40
|
|
str r0, [sp, 0xC]
|
|
str r1, [sp, 0x10]
|
|
str r2, [sp, 0x14]
|
|
str r3, [sp, 0x18]
|
|
movs r0, 0
|
|
str r0, [sp, 0x1C]
|
|
cmp r0, r1
|
|
blt _0804E5AE
|
|
b _0804E8AA
|
|
_0804E5AE:
|
|
movs r1, 0x1
|
|
mov r10, r1
|
|
_0804E5B2:
|
|
movs r2, 0
|
|
str r2, [sp, 0x20]
|
|
ldr r3, [sp, 0x1C]
|
|
adds r3, 0x1
|
|
str r3, [sp, 0x2C]
|
|
ldr r4, [sp, 0x14]
|
|
cmp r2, r4
|
|
blt _0804E5C4
|
|
b _0804E89E
|
|
_0804E5C4:
|
|
ldr r5, [sp, 0x1C]
|
|
lsls r5, 4
|
|
ldr r6, [sp, 0x1C]
|
|
subs r1, r5, r6
|
|
lsls r1, 5
|
|
ldr r2, [sp, 0xC]
|
|
movs r3, 0xF0
|
|
lsls r3, 1
|
|
adds r0, r2, r3
|
|
adds r0, r1
|
|
mov r8, r0
|
|
adds r6, r1, r2
|
|
ldr r4, _0804E6A4
|
|
adds r0, r2, r4
|
|
adds r7, r1, r0
|
|
adds r0, r2, 0
|
|
adds r0, 0x20
|
|
adds r0, r1
|
|
mov r9, r0
|
|
ldr r5, [sp, 0x60]
|
|
str r5, [sp, 0x34]
|
|
adds r0, r2, 0
|
|
subs r0, 0x20
|
|
adds r1, r0
|
|
str r1, [sp, 0x38]
|
|
movs r0, 0
|
|
str r0, [sp, 0x3C]
|
|
ldr r1, [sp, 0x1C]
|
|
lsls r0, r1, 2
|
|
ldr r2, [sp, 0x18]
|
|
adds r0, r2
|
|
str r0, [sp, 0x28]
|
|
_0804E604:
|
|
ldr r3, [sp, 0x1C]
|
|
lsls r0, r3, 4
|
|
subs r0, r3
|
|
lsls r0, 5
|
|
ldr r4, [sp, 0xC]
|
|
adds r0, r4
|
|
ldr r5, [sp, 0x3C]
|
|
adds r4, r5, r0
|
|
ldrb r0, [r4, 0x8]
|
|
cmp r0, 0
|
|
beq _0804E61C
|
|
b _0804E874
|
|
_0804E61C:
|
|
ldrb r0, [r4, 0x11]
|
|
cmp r0, 0
|
|
beq _0804E624
|
|
b _0804E874
|
|
_0804E624:
|
|
ldrb r0, [r4, 0xB]
|
|
cmp r0, 0
|
|
beq _0804E62C
|
|
b _0804E874
|
|
_0804E62C:
|
|
ldrb r0, [r4, 0xA]
|
|
cmp r0, 0
|
|
bne _0804E634
|
|
b _0804E848
|
|
_0804E634:
|
|
ldrb r0, [r4, 0x9]
|
|
cmp r0, 0
|
|
beq _0804E63C
|
|
b _0804E848
|
|
_0804E63C:
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
adds r0, 0x1
|
|
movs r2, 0x4
|
|
ldrsh r1, [r4, r2]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
str r0, [sp, 0x24]
|
|
movs r3, 0x2
|
|
ldrsh r0, [r4, r3]
|
|
adds r0, 0x1
|
|
movs r5, 0x6
|
|
ldrsh r1, [r4, r5]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
adds r5, r0, 0
|
|
ldr r0, [sp, 0x20]
|
|
cmp r0, 0
|
|
ble _0804E6DC
|
|
subs r4, 0x20
|
|
ldrb r0, [r4, 0x8]
|
|
cmp r0, 0
|
|
bne _0804E6DC
|
|
ldrb r0, [r4, 0x12]
|
|
cmp r0, 0
|
|
bne _0804E6DC
|
|
ldrb r0, [r4, 0xB]
|
|
cmp r0, 0
|
|
beq _0804E6DC
|
|
ldrb r0, [r4, 0xA]
|
|
cmp r0, 0
|
|
beq _0804E6A8
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
adds r0, 0x1
|
|
movs r2, 0x4
|
|
ldrsh r1, [r4, r2]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
adds r5, r0, 0
|
|
movs r3, 0x2
|
|
ldrsh r0, [r4, r3]
|
|
adds r0, 0x1
|
|
movs r2, 0x6
|
|
ldrsh r1, [r4, r2]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
b _0804E6AC
|
|
.align 2, 0
|
|
_0804E6A4: .4byte 0xfffffe20
|
|
_0804E6A8:
|
|
movs r3, 0
|
|
ldrsh r5, [r4, r3]
|
|
_0804E6AC:
|
|
movs r4, 0x2
|
|
ldrsh r1, [r6, r4]
|
|
ldr r0, [sp, 0x38]
|
|
movs r2, 0x6
|
|
ldrsh r3, [r0, r2]
|
|
subs r3, 0x1
|
|
mov r4, r10
|
|
str r4, [sp]
|
|
ldr r2, [sp, 0x28]
|
|
ldr r0, [r2]
|
|
str r0, [sp, 0x4]
|
|
ldr r4, [sp, 0x34]
|
|
ldr r0, [r4]
|
|
str r0, [sp, 0x8]
|
|
ldr r0, [sp, 0x24]
|
|
adds r2, r5, 0
|
|
bl sub_804E328
|
|
mov r5, r10
|
|
strb r5, [r6, 0xB]
|
|
strb r5, [r6, 0x13]
|
|
ldr r0, [sp, 0x38]
|
|
strb r5, [r0, 0x14]
|
|
b _0804E874
|
|
_0804E6DC:
|
|
ldr r0, [sp, 0x14]
|
|
subs r0, 0x1
|
|
ldr r1, [sp, 0x20]
|
|
cmp r1, r0
|
|
bge _0804E758
|
|
mov r2, r9
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
bne _0804E758
|
|
ldrb r0, [r2, 0x12]
|
|
cmp r0, 0
|
|
bne _0804E758
|
|
ldrb r0, [r2, 0xB]
|
|
cmp r0, 0
|
|
beq _0804E758
|
|
ldrb r0, [r2, 0xA]
|
|
cmp r0, 0
|
|
beq _0804E724
|
|
movs r3, 0x20
|
|
ldrsh r0, [r6, r3]
|
|
adds r0, 0x1
|
|
movs r4, 0x24
|
|
ldrsh r1, [r6, r4]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
adds r5, r0, 0
|
|
movs r1, 0x22
|
|
ldrsh r0, [r6, r1]
|
|
adds r0, 0x1
|
|
movs r2, 0x26
|
|
ldrsh r1, [r6, r2]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
b _0804E728
|
|
_0804E724:
|
|
movs r3, 0x20
|
|
ldrsh r5, [r6, r3]
|
|
_0804E728:
|
|
movs r4, 0x6
|
|
ldrsh r1, [r6, r4]
|
|
subs r1, 0x1
|
|
movs r0, 0x22
|
|
ldrsh r3, [r6, r0]
|
|
mov r2, r10
|
|
str r2, [sp]
|
|
ldr r4, [sp, 0x28]
|
|
ldr r0, [r4]
|
|
str r0, [sp, 0x4]
|
|
ldr r2, [sp, 0x34]
|
|
ldr r0, [r2, 0x4]
|
|
subs r0, 0x1
|
|
str r0, [sp, 0x8]
|
|
ldr r0, [sp, 0x24]
|
|
adds r2, r5, 0
|
|
bl sub_804E328
|
|
mov r3, r10
|
|
strb r3, [r6, 0xB]
|
|
strb r3, [r6, 0x14]
|
|
mov r4, r9
|
|
strb r3, [r4, 0x13]
|
|
b _0804E874
|
|
_0804E758:
|
|
ldr r0, [sp, 0x1C]
|
|
cmp r0, 0
|
|
ble _0804E7C8
|
|
ldrb r0, [r7, 0x8]
|
|
cmp r0, 0
|
|
bne _0804E7C8
|
|
ldrb r0, [r7, 0x12]
|
|
cmp r0, 0
|
|
bne _0804E7C8
|
|
ldrb r0, [r7, 0xB]
|
|
cmp r0, 0
|
|
beq _0804E7C8
|
|
ldrb r0, [r7, 0xA]
|
|
cmp r0, 0
|
|
beq _0804E79A
|
|
movs r1, 0
|
|
ldrsh r0, [r7, r1]
|
|
adds r0, 0x1
|
|
movs r2, 0x4
|
|
ldrsh r1, [r7, r2]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
movs r3, 0x2
|
|
ldrsh r0, [r7, r3]
|
|
adds r0, 0x1
|
|
movs r4, 0x6
|
|
ldrsh r1, [r7, r4]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
adds r3, r0, 0
|
|
b _0804E79E
|
|
_0804E79A:
|
|
movs r0, 0x2
|
|
ldrsh r3, [r7, r0]
|
|
_0804E79E:
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
movs r4, 0
|
|
ldrsh r2, [r7, r4]
|
|
subs r2, 0x1
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
ldr r4, [sp, 0x28]
|
|
ldr r1, [r4]
|
|
str r1, [sp, 0x4]
|
|
ldr r4, [sp, 0x34]
|
|
ldr r1, [r4]
|
|
str r1, [sp, 0x8]
|
|
adds r1, r5, 0
|
|
bl sub_804E328
|
|
mov r5, r10
|
|
strb r5, [r6, 0xB]
|
|
strb r5, [r6, 0x15]
|
|
strb r5, [r7, 0x16]
|
|
b _0804E874
|
|
_0804E7C8:
|
|
ldr r0, [sp, 0x10]
|
|
subs r0, 0x1
|
|
ldr r1, [sp, 0x1C]
|
|
cmp r1, r0
|
|
bge _0804E874
|
|
mov r2, r8
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
bne _0804E874
|
|
ldrb r0, [r2, 0x12]
|
|
cmp r0, 0
|
|
bne _0804E874
|
|
ldrb r0, [r2, 0xB]
|
|
cmp r0, 0
|
|
beq _0804E874
|
|
ldrb r0, [r2, 0xA]
|
|
cmp r0, 0
|
|
beq _0804E812
|
|
movs r3, 0
|
|
ldrsh r0, [r2, r3]
|
|
adds r0, 0x1
|
|
movs r4, 0x4
|
|
ldrsh r1, [r2, r4]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
mov r1, r8
|
|
movs r2, 0x2
|
|
ldrsh r0, [r1, r2]
|
|
adds r0, 0x1
|
|
movs r3, 0x6
|
|
ldrsh r1, [r1, r3]
|
|
subs r1, 0x1
|
|
bl sub_808411C
|
|
adds r3, r0, 0
|
|
b _0804E818
|
|
_0804E812:
|
|
mov r4, r8
|
|
movs r0, 0x2
|
|
ldrsh r3, [r4, r0]
|
|
_0804E818:
|
|
movs r1, 0x4
|
|
ldrsh r0, [r6, r1]
|
|
subs r0, 0x1
|
|
mov r4, r8
|
|
movs r1, 0
|
|
ldrsh r2, [r4, r1]
|
|
movs r1, 0
|
|
str r1, [sp]
|
|
ldr r4, [sp, 0x28]
|
|
ldr r1, [r4, 0x4]
|
|
subs r1, 0x1
|
|
str r1, [sp, 0x4]
|
|
ldr r4, [sp, 0x34]
|
|
ldr r1, [r4]
|
|
str r1, [sp, 0x8]
|
|
adds r1, r5, 0
|
|
bl sub_804E328
|
|
mov r5, r10
|
|
strb r5, [r6, 0xB]
|
|
strb r5, [r6, 0x16]
|
|
mov r0, r8
|
|
strb r5, [r0, 0x15]
|
|
b _0804E874
|
|
_0804E848:
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r6, r2]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ldr r3, _0804E99C
|
|
adds r2, r3, 0
|
|
ands r1, r2
|
|
strh r1, [r0]
|
|
ldrh r1, [r0, 0x4]
|
|
ldr r4, _0804E9A0
|
|
adds r2, r4, 0
|
|
ands r1, r2
|
|
ldr r5, _0804E9A4
|
|
adds r2, r5, 0
|
|
ands r1, r2
|
|
subs r3, 0x1
|
|
adds r2, r3, 0
|
|
ands r1, r2
|
|
strh r1, [r0, 0x4]
|
|
_0804E874:
|
|
movs r4, 0x20
|
|
add r8, r4
|
|
adds r6, 0x20
|
|
adds r7, 0x20
|
|
add r9, r4
|
|
ldr r5, [sp, 0x34]
|
|
adds r5, 0x4
|
|
str r5, [sp, 0x34]
|
|
ldr r0, [sp, 0x38]
|
|
adds r0, 0x20
|
|
str r0, [sp, 0x38]
|
|
ldr r1, [sp, 0x3C]
|
|
adds r1, 0x20
|
|
str r1, [sp, 0x3C]
|
|
ldr r2, [sp, 0x20]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x20]
|
|
ldr r3, [sp, 0x14]
|
|
cmp r2, r3
|
|
bge _0804E89E
|
|
b _0804E604
|
|
_0804E89E:
|
|
ldr r4, [sp, 0x2C]
|
|
str r4, [sp, 0x1C]
|
|
ldr r5, [sp, 0x10]
|
|
cmp r4, r5
|
|
bge _0804E8AA
|
|
b _0804E5B2
|
|
_0804E8AA:
|
|
movs r6, 0
|
|
str r6, [sp, 0x1C]
|
|
ldr r0, [sp, 0x10]
|
|
cmp r6, r0
|
|
bge _0804E98A
|
|
_0804E8B4:
|
|
movs r1, 0
|
|
str r1, [sp, 0x20]
|
|
ldr r2, [sp, 0x1C]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x2C]
|
|
ldr r3, [sp, 0x14]
|
|
cmp r1, r3
|
|
bge _0804E980
|
|
ldr r4, [sp, 0x1C]
|
|
lsls r4, 4
|
|
mov r9, r4
|
|
_0804E8CA:
|
|
ldr r5, [sp, 0x20]
|
|
lsls r2, r5, 5
|
|
ldr r6, [sp, 0x1C]
|
|
lsls r3, r6, 4
|
|
subs r0, r3, r6
|
|
lsls r0, 5
|
|
ldr r1, [sp, 0xC]
|
|
adds r4, r0, r1
|
|
adds r1, r2, r4
|
|
ldrb r0, [r1, 0x8]
|
|
mov r8, r2
|
|
adds r5, 0x1
|
|
str r5, [sp, 0x30]
|
|
cmp r0, 0
|
|
bne _0804E976
|
|
ldrb r0, [r1, 0x11]
|
|
cmp r0, 0
|
|
bne _0804E976
|
|
ldrb r0, [r1, 0xB]
|
|
cmp r0, 0
|
|
bne _0804E976
|
|
ldrb r0, [r1, 0xF]
|
|
cmp r0, 0
|
|
bne _0804E976
|
|
movs r6, 0
|
|
ldrsh r5, [r1, r6]
|
|
movs r6, 0x4
|
|
ldrsh r0, [r1, r6]
|
|
cmp r5, r0
|
|
bge _0804E976
|
|
mov r10, r4
|
|
_0804E908:
|
|
ldr r1, [sp, 0x1C]
|
|
subs r0, r3, r1
|
|
lsls r0, 5
|
|
ldr r3, [sp, 0xC]
|
|
adds r0, r3
|
|
adds r0, r2, r0
|
|
movs r6, 0x2
|
|
ldrsh r4, [r0, r6]
|
|
movs r1, 0x6
|
|
ldrsh r0, [r0, r1]
|
|
adds r7, r5, 0x1
|
|
cmp r4, r0
|
|
bge _0804E95C
|
|
mov r6, r8
|
|
add r6, r10
|
|
_0804E926:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
ldr r3, _0804E99C
|
|
adds r1, r3, 0
|
|
ands r2, r1
|
|
strh r2, [r0]
|
|
ldrh r2, [r0, 0x4]
|
|
adds r3, 0x1
|
|
adds r1, r3, 0
|
|
ands r2, r1
|
|
adds r3, 0x1
|
|
adds r1, r3, 0
|
|
ands r2, r1
|
|
subs r3, 0x3
|
|
adds r1, r3, 0
|
|
ands r2, r1
|
|
strh r2, [r0, 0x4]
|
|
movs r1, 0xFF
|
|
strb r1, [r0, 0x9]
|
|
adds r4, 0x1
|
|
movs r1, 0x6
|
|
ldrsh r0, [r6, r1]
|
|
cmp r4, r0
|
|
blt _0804E926
|
|
_0804E95C:
|
|
adds r5, r7, 0
|
|
mov r2, r8
|
|
mov r3, r9
|
|
ldr r4, [sp, 0x1C]
|
|
subs r0, r3, r4
|
|
lsls r0, 5
|
|
ldr r6, [sp, 0xC]
|
|
adds r0, r6
|
|
adds r0, r2, r0
|
|
movs r1, 0x4
|
|
ldrsh r0, [r0, r1]
|
|
cmp r5, r0
|
|
blt _0804E908
|
|
_0804E976:
|
|
ldr r2, [sp, 0x30]
|
|
str r2, [sp, 0x20]
|
|
ldr r3, [sp, 0x14]
|
|
cmp r2, r3
|
|
blt _0804E8CA
|
|
_0804E980:
|
|
ldr r4, [sp, 0x2C]
|
|
str r4, [sp, 0x1C]
|
|
ldr r5, [sp, 0x10]
|
|
cmp r4, r5
|
|
blt _0804E8B4
|
|
_0804E98A:
|
|
add sp, 0x40
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804E99C: .4byte 0x0000fffc
|
|
_0804E9A0: .4byte 0x0000fffe
|
|
_0804E9A4: .4byte 0x0000fffd
|
|
thumb_func_end sub_804E590
|
|
|
|
thumb_func_start sub_804E9A8
|
|
sub_804E9A8:
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
lsls r1, 24
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
ldrh r0, [r4]
|
|
ldr r5, _0804E9D8
|
|
adds r3, r5, 0
|
|
ands r3, r0
|
|
strh r3, [r4]
|
|
cmp r1, 0
|
|
beq _0804E9D0
|
|
ldrb r0, [r4, 0x9]
|
|
cmp r0, r2
|
|
bne _0804E9D0
|
|
adds r0, r3, 0
|
|
ands r0, r5
|
|
movs r1, 0x2
|
|
orrs r0, r1
|
|
strh r0, [r4]
|
|
_0804E9D0:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804E9D8: .4byte 0x0000fffc
|
|
thumb_func_end sub_804E9A8
|
|
|
|
thumb_func_start sub_804E9DC
|
|
sub_804E9DC:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
movs r5, 0
|
|
movs r0, 0x3
|
|
mov r8, r0
|
|
movs r7, 0x8
|
|
ldr r3, _0804EAF0
|
|
mov r9, r3
|
|
_0804E9F2:
|
|
movs r4, 0
|
|
adds r6, r5, 0x1
|
|
mov r10, r6
|
|
_0804E9F8:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
adds r6, r4, 0x1
|
|
cmp r0, 0x1
|
|
beq _0804EA0E
|
|
b _0804EB0E
|
|
_0804EA0E:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrb r0, [r0, 0x9]
|
|
cmp r0, 0xFF
|
|
bne _0804EAF4
|
|
cmp r5, 0
|
|
ble _0804EA4E
|
|
subs r0, r5, 0x1
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrb r0, [r2, 0x9]
|
|
cmp r0, 0xFF
|
|
beq _0804EA4E
|
|
ldrh r0, [r2]
|
|
adds r1, r0, 0
|
|
orrs r1, r7
|
|
movs r3, 0
|
|
strh r1, [r2]
|
|
adds r0, r1, 0
|
|
mov r6, r8
|
|
ands r0, r6
|
|
cmp r0, 0x2
|
|
bne _0804EA4E
|
|
mov r0, r9
|
|
ands r1, r0
|
|
movs r0, 0x1
|
|
orrs r1, r0
|
|
strh r1, [r2]
|
|
_0804EA4E:
|
|
cmp r4, 0
|
|
ble _0804EA82
|
|
subs r1, r4, 0x1
|
|
adds r0, r5, 0
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrb r0, [r2, 0x9]
|
|
cmp r0, 0xFF
|
|
beq _0804EA82
|
|
ldrh r0, [r2]
|
|
adds r1, r0, 0
|
|
orrs r1, r7
|
|
movs r3, 0
|
|
orrs r1, r7
|
|
strh r1, [r2]
|
|
adds r0, r1, 0
|
|
mov r6, r8
|
|
ands r0, r6
|
|
cmp r0, 0x2
|
|
bne _0804EA82
|
|
mov r0, r9
|
|
ands r1, r0
|
|
movs r0, 0x1
|
|
orrs r1, r0
|
|
strh r1, [r2]
|
|
_0804EA82:
|
|
adds r6, r4, 0x1
|
|
cmp r4, 0x1E
|
|
bgt _0804EABA
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrb r0, [r2, 0x9]
|
|
cmp r0, 0xFF
|
|
beq _0804EABA
|
|
ldrh r0, [r2]
|
|
adds r1, r0, 0
|
|
orrs r1, r7
|
|
movs r3, 0
|
|
mov r12, r3
|
|
orrs r1, r7
|
|
strh r1, [r2]
|
|
adds r0, r1, 0
|
|
mov r3, r8
|
|
ands r0, r3
|
|
cmp r0, 0x2
|
|
bne _0804EABA
|
|
mov r0, r9
|
|
ands r1, r0
|
|
movs r0, 0x1
|
|
orrs r1, r0
|
|
strh r1, [r2]
|
|
_0804EABA:
|
|
cmp r5, 0x36
|
|
bgt _0804EB0E
|
|
mov r0, r10
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrb r0, [r2, 0x9]
|
|
cmp r0, 0xFF
|
|
beq _0804EB0E
|
|
ldrh r0, [r2]
|
|
adds r1, r0, 0
|
|
orrs r1, r7
|
|
movs r3, 0
|
|
orrs r1, r7
|
|
strh r1, [r2]
|
|
adds r0, r1, 0
|
|
mov r4, r8
|
|
ands r0, r4
|
|
cmp r0, 0x2
|
|
bne _0804EB0E
|
|
mov r0, r9
|
|
ands r1, r0
|
|
movs r0, 0x1
|
|
orrs r1, r0
|
|
strh r1, [r2]
|
|
b _0804EB0E
|
|
.align 2, 0
|
|
_0804EAF0: .4byte 0x0000fffc
|
|
_0804EAF4:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrb r0, [r0, 0x9]
|
|
cmp r0, 0xFE
|
|
bne _0804EB0E
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0xFF
|
|
strb r1, [r0, 0x9]
|
|
_0804EB0E:
|
|
adds r4, r6, 0
|
|
cmp r4, 0x1F
|
|
bgt _0804EB16
|
|
b _0804E9F8
|
|
_0804EB16:
|
|
mov r5, r10
|
|
cmp r5, 0x37
|
|
bgt _0804EB1E
|
|
b _0804E9F2
|
|
_0804EB1E:
|
|
bl sub_804EB30
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804E9DC
|
|
|
|
thumb_func_start sub_804EB30
|
|
sub_804EB30:
|
|
push {r4-r7,lr}
|
|
ldr r0, _0804EBB4
|
|
ldr r6, [r0]
|
|
movs r2, 0
|
|
movs r1, 0x1F
|
|
ldr r3, _0804EBB8
|
|
adds r0, r6, r3
|
|
_0804EB3E:
|
|
strh r2, [r0]
|
|
subs r0, 0x2
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bge _0804EB3E
|
|
movs r5, 0
|
|
_0804EB4A:
|
|
movs r4, 0
|
|
adds r7, r5, 0x1
|
|
_0804EB4E:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804EBA2
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrb r3, [r0, 0x9]
|
|
cmp r3, 0x1F
|
|
bhi _0804EBA2
|
|
lsls r0, r3, 1
|
|
ldr r2, _0804EBBC
|
|
adds r1, r6, r2
|
|
adds r2, r1, r0
|
|
movs r1, 0
|
|
ldrsh r0, [r2, r1]
|
|
cmp r0, 0x1F
|
|
bgt _0804EBA2
|
|
lsls r0, 2
|
|
lsls r1, r3, 7
|
|
adds r0, r1
|
|
adds r0, r6, r0
|
|
ldr r3, _0804EBC0
|
|
adds r0, r3
|
|
strh r5, [r0]
|
|
movs r3, 0
|
|
ldrsh r0, [r2, r3]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
adds r0, r6, r0
|
|
ldr r1, _0804EBC4
|
|
adds r0, r1
|
|
strh r4, [r0]
|
|
ldrh r0, [r2]
|
|
adds r0, 0x1
|
|
strh r0, [r2]
|
|
_0804EBA2:
|
|
adds r4, 0x1
|
|
cmp r4, 0x1F
|
|
ble _0804EB4E
|
|
adds r5, r7, 0
|
|
cmp r5, 0x37
|
|
ble _0804EB4A
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804EBB4: .4byte gDungeonGlobalData
|
|
_0804EBB8: .4byte 0x00010882
|
|
_0804EBBC: .4byte 0x00010844
|
|
_0804EBC0: .4byte 0x00010884
|
|
_0804EBC4: .4byte 0x00010886
|
|
thumb_func_end sub_804EB30
|
|
|
|
thumb_func_start sub_804EBC8
|
|
sub_804EBC8:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x58
|
|
str r0, [sp, 0x40]
|
|
str r1, [sp, 0x44]
|
|
mov r10, r2
|
|
adds r4, r3, 0
|
|
ldr r0, _0804EE90
|
|
ldr r0, [r0]
|
|
mov r8, r0
|
|
ldr r1, _0804EE94
|
|
ldr r0, _0804EE98
|
|
strh r0, [r1]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
strh r0, [r1, 0x2]
|
|
ldr r0, _0804EE9C
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0804EBF8
|
|
b _0804EED4
|
|
_0804EBF8:
|
|
bl sub_8043D10
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _0804EC06
|
|
b _0804EED4
|
|
_0804EC06:
|
|
cmp r4, 0
|
|
bne _0804EC0C
|
|
b _0804EED4
|
|
_0804EC0C:
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
cmp r4, r0
|
|
bgt _0804EC18
|
|
b _0804EED4
|
|
_0804EC18:
|
|
movs r5, 0
|
|
add r7, sp, 0x20
|
|
adds r1, r7, 0
|
|
mov r0, sp
|
|
_0804EC20:
|
|
strh r5, [r0]
|
|
strh r5, [r1]
|
|
adds r1, 0x2
|
|
adds r0, 0x2
|
|
adds r5, 0x1
|
|
cmp r5, 0xE
|
|
ble _0804EC20
|
|
movs r5, 0xC7
|
|
_0804EC30:
|
|
movs r0, 0xF
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0
|
|
movs r0, 0xF
|
|
bl DungeonRandomCapped
|
|
lsls r4, 1
|
|
mov r1, sp
|
|
adds r2, r1, r4
|
|
movs r4, 0
|
|
ldrsh r3, [r2, r4]
|
|
lsls r0, 1
|
|
adds r1, r0
|
|
ldrh r0, [r1]
|
|
strh r0, [r2]
|
|
strh r3, [r1]
|
|
subs r5, 0x1
|
|
cmp r5, 0
|
|
bge _0804EC30
|
|
adds r6, r7, 0
|
|
movs r5, 0xC7
|
|
_0804EC5C:
|
|
movs r0, 0xF
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0
|
|
movs r0, 0xF
|
|
bl DungeonRandomCapped
|
|
lsls r4, 1
|
|
adds r4, r6, r4
|
|
movs r1, 0
|
|
ldrsh r2, [r4, r1]
|
|
lsls r0, 1
|
|
adds r0, r6, r0
|
|
ldrh r1, [r0]
|
|
strh r1, [r4]
|
|
strh r2, [r0]
|
|
subs r5, 0x1
|
|
cmp r5, 0
|
|
bge _0804EC5C
|
|
movs r5, 0
|
|
_0804EC84:
|
|
lsls r0, r5, 1
|
|
add r0, sp
|
|
movs r3, 0
|
|
ldrsh r2, [r0, r3]
|
|
mov r9, r2
|
|
ldr r4, [sp, 0x44]
|
|
cmp r9, r4
|
|
blt _0804EC96
|
|
b _0804EECC
|
|
_0804EC96:
|
|
movs r4, 0
|
|
_0804EC98:
|
|
lsls r0, r4, 1
|
|
adds r0, r7, r0
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
cmp r1, r10
|
|
blt _0804ECA6
|
|
b _0804EEC4
|
|
_0804ECA6:
|
|
lsls r1, 5
|
|
mov r3, r9
|
|
lsls r2, r3, 4
|
|
subs r0, r2, r3
|
|
lsls r0, 5
|
|
ldr r3, [sp, 0x40]
|
|
adds r0, r3
|
|
adds r3, r1, r0
|
|
ldrb r0, [r3, 0x8]
|
|
str r1, [sp, 0x4C]
|
|
str r2, [sp, 0x48]
|
|
cmp r0, 0
|
|
beq _0804ECC2
|
|
b _0804EEC4
|
|
_0804ECC2:
|
|
ldrb r0, [r3, 0x11]
|
|
cmp r0, 0
|
|
beq _0804ECCA
|
|
b _0804EEC4
|
|
_0804ECCA:
|
|
ldrb r0, [r3, 0x12]
|
|
cmp r0, 0
|
|
beq _0804ECD2
|
|
b _0804EEC4
|
|
_0804ECD2:
|
|
ldrb r0, [r3, 0xB]
|
|
cmp r0, 0
|
|
bne _0804ECDA
|
|
b _0804EEC4
|
|
_0804ECDA:
|
|
ldrb r0, [r3, 0xA]
|
|
cmp r0, 0
|
|
bne _0804ECE2
|
|
b _0804EEC4
|
|
_0804ECE2:
|
|
ldrb r0, [r3, 0x9]
|
|
cmp r0, 0
|
|
beq _0804ECEA
|
|
b _0804EEC4
|
|
_0804ECEA:
|
|
ldrb r0, [r3, 0x10]
|
|
cmp r0, 0
|
|
beq _0804ECF2
|
|
b _0804EEC4
|
|
_0804ECF2:
|
|
ldrb r0, [r3, 0x1D]
|
|
cmp r0, 0
|
|
beq _0804ECFA
|
|
b _0804EEC4
|
|
_0804ECFA:
|
|
movs r0, 0x4
|
|
ldrsh r1, [r3, r0]
|
|
movs r2, 0
|
|
ldrsh r0, [r3, r2]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0804ED0A
|
|
negs r1, r1
|
|
_0804ED0A:
|
|
cmp r1, 0x4
|
|
bgt _0804ED10
|
|
b _0804EEC4
|
|
_0804ED10:
|
|
movs r0, 0x6
|
|
ldrsh r1, [r3, r0]
|
|
movs r2, 0x2
|
|
ldrsh r0, [r3, r2]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0804ED20
|
|
negs r1, r1
|
|
_0804ED20:
|
|
cmp r1, 0x3
|
|
bgt _0804ED26
|
|
b _0804EEC4
|
|
_0804ED26:
|
|
ldr r1, _0804EEA0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
movs r0, 0x1
|
|
strb r0, [r3, 0xC]
|
|
ldr r2, _0804EEA4
|
|
movs r4, 0
|
|
ldrsh r0, [r3, r4]
|
|
adds r0, 0x1
|
|
str r0, [r2]
|
|
movs r7, 0x4
|
|
ldrsh r0, [r3, r7]
|
|
subs r0, 0x1
|
|
str r0, [r2, 0x8]
|
|
movs r0, 0x2
|
|
ldrsh r1, [r3, r0]
|
|
adds r1, 0x1
|
|
str r1, [r2, 0x4]
|
|
movs r4, 0x6
|
|
ldrsh r3, [r3, r4]
|
|
subs r0, r3, 0x1
|
|
str r0, [r2, 0xC]
|
|
subs r0, r1
|
|
mov r10, r2
|
|
cmp r0, 0x2
|
|
bgt _0804ED5C
|
|
str r3, [r2, 0xC]
|
|
_0804ED5C:
|
|
ldr r0, _0804EEA8
|
|
add r0, r8
|
|
ldr r1, _0804EEAC
|
|
str r1, [r0]
|
|
ldr r0, _0804EEB0
|
|
add r0, r8
|
|
str r1, [r0]
|
|
ldr r0, _0804EEB4
|
|
add r0, r8
|
|
ldr r1, _0804EEB8
|
|
str r1, [r0]
|
|
ldr r0, _0804EEBC
|
|
add r0, r8
|
|
str r1, [r0]
|
|
mov r7, r10
|
|
ldr r5, [r7]
|
|
ldr r0, [r7, 0x8]
|
|
cmp r5, r0
|
|
bge _0804EDFA
|
|
mov r3, r10
|
|
_0804ED84:
|
|
ldr r4, [r3, 0x4]
|
|
ldr r0, [r3, 0xC]
|
|
adds r1, r5, 0x1
|
|
str r1, [sp, 0x54]
|
|
cmp r4, r0
|
|
bge _0804EDF0
|
|
ldr r6, _0804EEA8
|
|
add r6, r8
|
|
ldr r2, _0804EEA4
|
|
mov r10, r2
|
|
_0804ED98:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
str r3, [sp, 0x50]
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
movs r1, 0x20
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
ldrh r2, [r0, 0x4]
|
|
ldr r7, _0804EEC0
|
|
adds r1, r7, 0
|
|
ands r2, r1
|
|
adds r7, 0x7
|
|
adds r1, r7, 0
|
|
ands r2, r1
|
|
strh r2, [r0, 0x4]
|
|
ldr r0, [r6]
|
|
ldr r3, [sp, 0x50]
|
|
cmp r0, r5
|
|
ble _0804EDC4
|
|
str r5, [r6]
|
|
_0804EDC4:
|
|
ldr r1, _0804EEB0
|
|
add r1, r8
|
|
ldr r0, [r1]
|
|
cmp r0, r4
|
|
ble _0804EDD0
|
|
str r4, [r1]
|
|
_0804EDD0:
|
|
ldr r1, _0804EEB4
|
|
add r1, r8
|
|
ldr r0, [r1]
|
|
cmp r0, r5
|
|
bge _0804EDDC
|
|
str r5, [r1]
|
|
_0804EDDC:
|
|
ldr r1, _0804EEBC
|
|
add r1, r8
|
|
ldr r0, [r1]
|
|
cmp r0, r4
|
|
bge _0804EDE8
|
|
str r4, [r1]
|
|
_0804EDE8:
|
|
adds r4, 0x1
|
|
ldr r0, [r3, 0xC]
|
|
cmp r4, r0
|
|
blt _0804ED98
|
|
_0804EDF0:
|
|
ldr r5, [sp, 0x54]
|
|
mov r1, r10
|
|
ldr r0, [r1, 0x8]
|
|
cmp r5, r0
|
|
blt _0804ED84
|
|
_0804EDFA:
|
|
ldr r3, [sp, 0x4C]
|
|
ldr r2, [sp, 0x48]
|
|
mov r4, r9
|
|
subs r0, r2, r4
|
|
lsls r0, 5
|
|
ldr r7, [sp, 0x40]
|
|
adds r1, r0, r7
|
|
adds r0, r3, r1
|
|
movs r4, 0
|
|
ldrsh r5, [r0, r4]
|
|
movs r7, 0x4
|
|
ldrsh r0, [r0, r7]
|
|
cmp r5, r0
|
|
bge _0804EE6C
|
|
mov r8, r1
|
|
_0804EE18:
|
|
mov r1, r9
|
|
subs r0, r2, r1
|
|
lsls r0, 5
|
|
ldr r2, [sp, 0x40]
|
|
adds r0, r2
|
|
adds r0, r3, r0
|
|
movs r3, 0x2
|
|
ldrsh r4, [r0, r3]
|
|
movs r7, 0x6
|
|
ldrsh r0, [r0, r7]
|
|
adds r1, r5, 0x1
|
|
str r1, [sp, 0x54]
|
|
cmp r4, r0
|
|
bge _0804EE52
|
|
ldr r6, [sp, 0x4C]
|
|
add r6, r8
|
|
_0804EE38:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0, 0x4]
|
|
movs r1, 0x10
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
adds r4, 0x1
|
|
movs r2, 0x6
|
|
ldrsh r0, [r6, r2]
|
|
cmp r4, r0
|
|
blt _0804EE38
|
|
_0804EE52:
|
|
ldr r5, [sp, 0x54]
|
|
ldr r3, [sp, 0x4C]
|
|
ldr r2, [sp, 0x48]
|
|
mov r4, r9
|
|
subs r0, r2, r4
|
|
lsls r0, 5
|
|
ldr r7, [sp, 0x40]
|
|
adds r0, r7
|
|
adds r0, r3, r0
|
|
movs r1, 0x4
|
|
ldrsh r0, [r0, r1]
|
|
cmp r5, r0
|
|
blt _0804EE18
|
|
_0804EE6C:
|
|
ldr r2, _0804EEA4
|
|
ldr r0, [r2]
|
|
ldr r1, [r2, 0x8]
|
|
adds r0, r1
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r5, r0, 1
|
|
ldr r0, [r2, 0x4]
|
|
ldr r1, [r2, 0xC]
|
|
adds r0, r1
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r4, r0, 1
|
|
ldr r0, _0804EE94
|
|
strh r5, [r0]
|
|
strh r4, [r0, 0x2]
|
|
b _0804EED4
|
|
.align 2, 0
|
|
_0804EE90: .4byte gDungeonGlobalData
|
|
_0804EE94: .4byte gUnknown_202F1D8
|
|
_0804EE98: .4byte 0x0000ffff
|
|
_0804EE9C: .4byte gUnknown_202F1AB
|
|
_0804EEA0: .4byte gUnknown_202F1AA
|
|
_0804EEA4: .4byte gUnknown_202F1B8
|
|
_0804EEA8: .4byte 0x0000e240
|
|
_0804EEAC: .4byte 0x0000270f
|
|
_0804EEB0: .4byte 0x0000e244
|
|
_0804EEB4: .4byte 0x0000e248
|
|
_0804EEB8: .4byte 0xffffd8f1
|
|
_0804EEBC: .4byte 0x0000e24c
|
|
_0804EEC0: .4byte 0x0000fff7
|
|
_0804EEC4:
|
|
adds r4, 0x1
|
|
cmp r4, 0xE
|
|
bgt _0804EECC
|
|
b _0804EC98
|
|
_0804EECC:
|
|
adds r5, 0x1
|
|
cmp r5, 0xE
|
|
bgt _0804EED4
|
|
b _0804EC84
|
|
_0804EED4:
|
|
add sp, 0x58
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804EBC8
|
|
|
|
thumb_func_start sub_804EEE4
|
|
sub_804EEE4:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x108
|
|
str r0, [sp, 0x100]
|
|
mov r8, r1
|
|
adds r7, r2, 0
|
|
adds r4, r3, 0
|
|
ldr r5, _0804F094
|
|
ldr r0, [r5]
|
|
str r0, [sp, 0x104]
|
|
cmp r4, 0
|
|
bne _0804EF04
|
|
b _0804F0C0
|
|
_0804EF04:
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
cmp r4, r0
|
|
bgt _0804EF10
|
|
b _0804F0C0
|
|
_0804EF10:
|
|
ldr r0, _0804F098
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0804EF1A
|
|
b _0804F0C0
|
|
_0804EF1A:
|
|
ldr r0, [r5]
|
|
movs r1, 0xD1
|
|
lsls r1, 3
|
|
adds r0, r1
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, 0
|
|
beq _0804EF2C
|
|
b _0804F0C0
|
|
_0804EF2C:
|
|
bl sub_8043D10
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0804EF38
|
|
b _0804F0C0
|
|
_0804EF38:
|
|
movs r6, 0
|
|
movs r1, 0
|
|
cmp r1, r8
|
|
bge _0804EF94
|
|
_0804EF40:
|
|
adds r2, r1, 0x1
|
|
cmp r7, 0
|
|
ble _0804EF8E
|
|
lsls r0, r1, 4
|
|
subs r0, r1
|
|
lsls r0, 5
|
|
ldr r1, [sp, 0x100]
|
|
adds r1, 0x8
|
|
adds r1, r0, r1
|
|
adds r3, r7, 0
|
|
_0804EF54:
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
bne _0804EF86
|
|
ldrb r0, [r1, 0x9]
|
|
cmp r0, 0
|
|
bne _0804EF86
|
|
ldrb r0, [r1, 0x3]
|
|
cmp r0, 0
|
|
beq _0804EF86
|
|
ldrb r0, [r1, 0x2]
|
|
cmp r0, 0
|
|
beq _0804EF86
|
|
ldrb r0, [r1, 0x4]
|
|
cmp r0, 0
|
|
bne _0804EF86
|
|
ldrb r0, [r1, 0x7]
|
|
cmp r0, 0
|
|
bne _0804EF86
|
|
ldrb r0, [r1, 0x8]
|
|
cmp r0, 0
|
|
bne _0804EF86
|
|
ldrb r0, [r1, 0x1]
|
|
cmp r0, 0
|
|
bne _0804EF86
|
|
adds r6, 0x1
|
|
_0804EF86:
|
|
adds r1, 0x20
|
|
subs r3, 0x1
|
|
cmp r3, 0
|
|
bne _0804EF54
|
|
_0804EF8E:
|
|
adds r1, r2, 0
|
|
cmp r1, r8
|
|
blt _0804EF40
|
|
_0804EF94:
|
|
cmp r6, 0
|
|
bne _0804EF9A
|
|
b _0804F0C0
|
|
_0804EF9A:
|
|
movs r1, 0
|
|
mov r0, sp
|
|
adds r0, 0xFF
|
|
_0804EFA0:
|
|
strb r1, [r0]
|
|
subs r0, 0x1
|
|
cmp r0, sp
|
|
bge _0804EFA0
|
|
mov r1, sp
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
movs r5, 0x3F
|
|
_0804EFB0:
|
|
adds r0, r6, 0
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0
|
|
adds r0, r6, 0
|
|
bl DungeonRandomCapped
|
|
mov r3, sp
|
|
adds r2, r3, r4
|
|
ldrb r3, [r2]
|
|
mov r4, sp
|
|
adds r1, r4, r0
|
|
ldrb r0, [r1]
|
|
strb r0, [r2]
|
|
strb r3, [r1]
|
|
subs r5, 0x1
|
|
cmp r5, 0
|
|
bge _0804EFB0
|
|
movs r5, 0
|
|
movs r1, 0
|
|
cmp r1, r8
|
|
bge _0804F0C0
|
|
ldr r6, [sp, 0x100]
|
|
mov r9, r6
|
|
movs r4, 0
|
|
_0804EFE2:
|
|
movs r3, 0
|
|
cmp r3, r7
|
|
bge _0804F0B2
|
|
mov r10, r3
|
|
lsls r0, r4, 5
|
|
ldr r6, [sp, 0x100]
|
|
adds r2, r0, r6
|
|
_0804EFF0:
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
bne _0804F0A6
|
|
ldrb r0, [r2, 0x11]
|
|
cmp r0, 0
|
|
bne _0804F0A6
|
|
ldrb r0, [r2, 0xB]
|
|
cmp r0, 0
|
|
beq _0804F0A6
|
|
ldrb r0, [r2, 0xA]
|
|
cmp r0, 0
|
|
beq _0804F0A6
|
|
ldrb r0, [r2, 0xC]
|
|
cmp r0, 0
|
|
bne _0804F0A6
|
|
ldrb r0, [r2, 0xF]
|
|
cmp r0, 0
|
|
bne _0804F0A6
|
|
ldrb r0, [r2, 0x10]
|
|
cmp r0, 0
|
|
bne _0804F0A6
|
|
ldrb r0, [r2, 0x9]
|
|
cmp r0, 0
|
|
bne _0804F0A6
|
|
mov r6, sp
|
|
adds r0, r6, r5
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0804F0A4
|
|
ldr r1, _0804F09C
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
movs r0, 0x1
|
|
strb r0, [r2, 0xE]
|
|
movs r0, 0
|
|
ldrsh r5, [r2, r0]
|
|
movs r1, 0x4
|
|
ldrsh r0, [r2, r1]
|
|
cmp r5, r0
|
|
bge _0804F0C0
|
|
mov r2, r10
|
|
add r2, r9
|
|
mov r8, r2
|
|
_0804F046:
|
|
mov r1, r10
|
|
add r1, r9
|
|
movs r3, 0x2
|
|
ldrsh r4, [r1, r3]
|
|
movs r6, 0x6
|
|
ldrsh r0, [r1, r6]
|
|
adds r7, r5, 0x1
|
|
cmp r4, r0
|
|
bge _0804F086
|
|
adds r6, r1, 0
|
|
_0804F05A:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
movs r1, 0x40
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrb r1, [r0, 0x9]
|
|
ldr r2, [sp, 0x104]
|
|
ldr r3, _0804F0A0
|
|
adds r0, r2, r3
|
|
strb r1, [r0]
|
|
adds r4, 0x1
|
|
movs r1, 0x6
|
|
ldrsh r0, [r6, r1]
|
|
cmp r4, r0
|
|
blt _0804F05A
|
|
_0804F086:
|
|
adds r5, r7, 0
|
|
mov r2, r8
|
|
movs r3, 0x4
|
|
ldrsh r0, [r2, r3]
|
|
cmp r5, r0
|
|
blt _0804F046
|
|
b _0804F0C0
|
|
.align 2, 0
|
|
_0804F094: .4byte gDungeonGlobalData
|
|
_0804F098: .4byte gUnknown_202F1AA
|
|
_0804F09C: .4byte gUnknown_202F1AB
|
|
_0804F0A0: .4byte 0x00003a0c
|
|
_0804F0A4:
|
|
adds r5, 0x1
|
|
_0804F0A6:
|
|
movs r6, 0x20
|
|
add r10, r6
|
|
adds r2, 0x20
|
|
adds r3, 0x1
|
|
cmp r3, r7
|
|
blt _0804EFF0
|
|
_0804F0B2:
|
|
movs r0, 0xF0
|
|
lsls r0, 1
|
|
add r9, r0
|
|
adds r4, 0xF
|
|
adds r1, 0x1
|
|
cmp r1, r8
|
|
blt _0804EFE2
|
|
_0804F0C0:
|
|
add sp, 0x108
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804EEE4
|
|
|
|
thumb_func_start sub_804F0D0
|
|
sub_804F0D0:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x104
|
|
str r0, [sp, 0x100]
|
|
mov r10, r1
|
|
mov r9, r2
|
|
adds r4, r3, 0
|
|
ldr r0, _0804F244
|
|
ldr r5, [r0]
|
|
cmp r4, 0
|
|
bne _0804F0EE
|
|
b _0804F266
|
|
_0804F0EE:
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
cmp r4, r0
|
|
bgt _0804F0FA
|
|
b _0804F266
|
|
_0804F0FA:
|
|
ldr r1, _0804F248
|
|
adds r0, r5, r1
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
cmp r0, 0
|
|
blt _0804F108
|
|
b _0804F266
|
|
_0804F108:
|
|
movs r5, 0
|
|
movs r6, 0
|
|
cmp r6, r10
|
|
bge _0804F184
|
|
_0804F110:
|
|
adds r7, r6, 0x1
|
|
mov r4, r9
|
|
cmp r4, 0
|
|
ble _0804F17E
|
|
lsls r0, r6, 4
|
|
subs r0, r6
|
|
lsls r0, 5
|
|
ldr r6, [sp, 0x100]
|
|
adds r2, r0, r6
|
|
_0804F122:
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
bne _0804F176
|
|
ldrb r0, [r2, 0x11]
|
|
cmp r0, 0
|
|
bne _0804F176
|
|
ldrb r0, [r2, 0xB]
|
|
cmp r0, 0
|
|
beq _0804F176
|
|
ldrb r0, [r2, 0xA]
|
|
cmp r0, 0
|
|
beq _0804F176
|
|
ldrb r0, [r2, 0xC]
|
|
cmp r0, 0
|
|
bne _0804F176
|
|
ldrb r0, [r2, 0xF]
|
|
cmp r0, 0
|
|
bne _0804F176
|
|
ldrb r0, [r2, 0xE]
|
|
cmp r0, 0
|
|
bne _0804F176
|
|
ldrb r0, [r2, 0x9]
|
|
cmp r0, 0
|
|
bne _0804F176
|
|
movs r1, 0x4
|
|
ldrsh r0, [r2, r1]
|
|
movs r3, 0
|
|
ldrsh r1, [r2, r3]
|
|
subs r0, r1
|
|
movs r3, 0x1
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _0804F176
|
|
movs r6, 0x6
|
|
ldrsh r0, [r2, r6]
|
|
movs r6, 0x2
|
|
ldrsh r1, [r2, r6]
|
|
subs r0, r1
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _0804F176
|
|
adds r5, 0x1
|
|
_0804F176:
|
|
adds r2, 0x20
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _0804F122
|
|
_0804F17E:
|
|
adds r6, r7, 0
|
|
cmp r6, r10
|
|
blt _0804F110
|
|
_0804F184:
|
|
cmp r5, 0
|
|
beq _0804F266
|
|
movs r1, 0
|
|
mov r0, sp
|
|
adds r0, 0xFF
|
|
_0804F18E:
|
|
strb r1, [r0]
|
|
subs r0, 0x1
|
|
cmp r0, sp
|
|
bge _0804F18E
|
|
mov r1, sp
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
movs r7, 0x3F
|
|
mov r8, r7
|
|
_0804F1A0:
|
|
adds r0, r5, 0
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0
|
|
adds r0, r5, 0
|
|
bl DungeonRandomCapped
|
|
mov r1, sp
|
|
adds r2, r1, r4
|
|
ldrb r3, [r2]
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
strb r0, [r2]
|
|
strb r3, [r1]
|
|
movs r3, 0x1
|
|
negs r3, r3
|
|
add r8, r3
|
|
mov r4, r8
|
|
cmp r4, 0
|
|
bge _0804F1A0
|
|
movs r6, 0
|
|
mov r8, r6
|
|
cmp r6, r10
|
|
bge _0804F266
|
|
ldr r7, [sp, 0x100]
|
|
mov r12, r7
|
|
_0804F1D4:
|
|
movs r4, 0
|
|
cmp r4, r9
|
|
bge _0804F25A
|
|
mov r2, r12
|
|
mov r5, r12
|
|
_0804F1DE:
|
|
ldrb r0, [r2, 0x8]
|
|
cmp r0, 0
|
|
bne _0804F250
|
|
ldrb r0, [r2, 0x11]
|
|
cmp r0, 0
|
|
bne _0804F250
|
|
ldrb r0, [r2, 0xB]
|
|
cmp r0, 0
|
|
beq _0804F250
|
|
ldrb r0, [r2, 0xA]
|
|
cmp r0, 0
|
|
beq _0804F250
|
|
ldrb r0, [r2, 0xC]
|
|
cmp r0, 0
|
|
bne _0804F250
|
|
ldrb r0, [r2, 0xF]
|
|
cmp r0, 0
|
|
bne _0804F250
|
|
ldrb r0, [r2, 0xE]
|
|
cmp r0, 0
|
|
bne _0804F250
|
|
ldrb r0, [r2, 0x9]
|
|
cmp r0, 0
|
|
bne _0804F250
|
|
movs r1, 0x4
|
|
ldrsh r0, [r2, r1]
|
|
movs r3, 0
|
|
ldrsh r1, [r2, r3]
|
|
subs r0, r1
|
|
movs r3, 0x1
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _0804F250
|
|
movs r7, 0x6
|
|
ldrsh r0, [r2, r7]
|
|
movs r7, 0x2
|
|
ldrsh r1, [r2, r7]
|
|
subs r0, r1
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _0804F250
|
|
mov r0, sp
|
|
add r0, r8
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0804F24C
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl sub_804F278
|
|
b _0804F266
|
|
.align 2, 0
|
|
_0804F244: .4byte gDungeonGlobalData
|
|
_0804F248: .4byte 0x00003a16
|
|
_0804F24C:
|
|
movs r0, 0x1
|
|
add r8, r0
|
|
_0804F250:
|
|
adds r2, 0x20
|
|
adds r5, 0x20
|
|
adds r4, 0x1
|
|
cmp r4, r9
|
|
blt _0804F1DE
|
|
_0804F25A:
|
|
movs r1, 0xF0
|
|
lsls r1, 1
|
|
add r12, r1
|
|
adds r6, 0x1
|
|
cmp r6, r10
|
|
blt _0804F1D4
|
|
_0804F266:
|
|
add sp, 0x104
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804F0D0
|
|
|
|
thumb_func_start sub_804F278
|
|
sub_804F278:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x10
|
|
adds r4, r0, 0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r8, r1
|
|
ldr r1, _0804F2B0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
movs r0, 0x1
|
|
strb r0, [r4, 0x10]
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r4, r2]
|
|
bl GetMapTileAtPosition
|
|
ldrb r0, [r0, 0x9]
|
|
mov r9, r0
|
|
movs r5, 0
|
|
ldrsh r0, [r4, r5]
|
|
adds r6, r0, 0x1
|
|
b _0804F2F0
|
|
.align 2, 0
|
|
_0804F2B0: .4byte gUnknown_202F1AC
|
|
_0804F2B4:
|
|
movs r2, 0x2
|
|
ldrsh r1, [r4, r2]
|
|
subs r1, 0x1
|
|
adds r0, r6, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804F2EE
|
|
movs r5, 0x2
|
|
ldrsh r3, [r4, r5]
|
|
subs r1, r3, 0x1
|
|
movs r0, 0
|
|
ldrsh r2, [r4, r0]
|
|
movs r5, 0x4
|
|
ldrsh r0, [r4, r5]
|
|
str r0, [sp]
|
|
movs r5, 0x6
|
|
ldrsh r0, [r4, r5]
|
|
str r0, [sp, 0x4]
|
|
mov r0, r8
|
|
str r0, [sp, 0x8]
|
|
mov r5, r9
|
|
str r5, [sp, 0xC]
|
|
adds r0, r6, 0
|
|
bl sub_804F494
|
|
_0804F2EE:
|
|
adds r6, 0x2
|
|
_0804F2F0:
|
|
movs r1, 0x4
|
|
ldrsh r0, [r4, r1]
|
|
subs r0, 0x1
|
|
cmp r6, r0
|
|
blt _0804F2B4
|
|
movs r2, 0x2
|
|
ldrsh r0, [r4, r2]
|
|
adds r5, r0, 0x1
|
|
movs r6, 0x6
|
|
ldrsh r0, [r4, r6]
|
|
b _0804F342
|
|
_0804F306:
|
|
movs r1, 0x4
|
|
ldrsh r0, [r4, r1]
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804F33C
|
|
movs r2, 0x4
|
|
ldrsh r0, [r4, r2]
|
|
movs r6, 0
|
|
ldrsh r2, [r4, r6]
|
|
movs r1, 0x2
|
|
ldrsh r3, [r4, r1]
|
|
str r0, [sp]
|
|
movs r6, 0x6
|
|
ldrsh r1, [r4, r6]
|
|
str r1, [sp, 0x4]
|
|
mov r1, r8
|
|
str r1, [sp, 0x8]
|
|
mov r6, r9
|
|
str r6, [sp, 0xC]
|
|
adds r1, r5, 0
|
|
bl sub_804F494
|
|
_0804F33C:
|
|
adds r5, 0x2
|
|
movs r1, 0x6
|
|
ldrsh r0, [r4, r1]
|
|
_0804F342:
|
|
subs r0, 0x1
|
|
cmp r5, r0
|
|
blt _0804F306
|
|
movs r2, 0
|
|
ldrsh r0, [r4, r2]
|
|
adds r6, r0, 0x1
|
|
movs r5, 0x4
|
|
ldrsh r0, [r4, r5]
|
|
b _0804F392
|
|
_0804F354:
|
|
movs r0, 0x6
|
|
ldrsh r1, [r4, r0]
|
|
adds r0, r6, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804F38C
|
|
movs r2, 0x6
|
|
ldrsh r1, [r4, r2]
|
|
movs r5, 0
|
|
ldrsh r2, [r4, r5]
|
|
movs r0, 0x2
|
|
ldrsh r3, [r4, r0]
|
|
movs r5, 0x4
|
|
ldrsh r0, [r4, r5]
|
|
str r0, [sp]
|
|
adds r0, r1, 0
|
|
str r0, [sp, 0x4]
|
|
mov r0, r8
|
|
str r0, [sp, 0x8]
|
|
mov r5, r9
|
|
str r5, [sp, 0xC]
|
|
adds r0, r6, 0
|
|
bl sub_804F494
|
|
_0804F38C:
|
|
adds r6, 0x2
|
|
movs r1, 0x4
|
|
ldrsh r0, [r4, r1]
|
|
_0804F392:
|
|
subs r0, 0x1
|
|
cmp r6, r0
|
|
blt _0804F354
|
|
movs r2, 0x2
|
|
ldrsh r0, [r4, r2]
|
|
adds r5, r0, 0x1
|
|
movs r6, 0x6
|
|
ldrsh r0, [r4, r6]
|
|
b _0804F3E4
|
|
_0804F3A4:
|
|
movs r1, 0
|
|
ldrsh r0, [r4, r1]
|
|
subs r0, 0x1
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804F3DE
|
|
movs r6, 0
|
|
ldrsh r2, [r4, r6]
|
|
subs r0, r2, 0x1
|
|
movs r1, 0x2
|
|
ldrsh r3, [r4, r1]
|
|
movs r6, 0x4
|
|
ldrsh r1, [r4, r6]
|
|
str r1, [sp]
|
|
movs r6, 0x6
|
|
ldrsh r1, [r4, r6]
|
|
str r1, [sp, 0x4]
|
|
mov r1, r8
|
|
str r1, [sp, 0x8]
|
|
mov r6, r9
|
|
str r6, [sp, 0xC]
|
|
adds r1, r5, 0
|
|
bl sub_804F494
|
|
_0804F3DE:
|
|
adds r5, 0x2
|
|
movs r1, 0x6
|
|
ldrsh r0, [r4, r1]
|
|
_0804F3E4:
|
|
subs r0, 0x1
|
|
cmp r5, r0
|
|
blt _0804F3A4
|
|
movs r2, 0
|
|
ldrsh r0, [r4, r2]
|
|
adds r6, r0, 0x3
|
|
b _0804F478
|
|
_0804F3F2:
|
|
movs r1, 0x2
|
|
ldrsh r0, [r4, r1]
|
|
adds r5, r0, 0x3
|
|
movs r2, 0x6
|
|
ldrsh r0, [r4, r2]
|
|
subs r0, 0x3
|
|
adds r1, r6, 0x2
|
|
mov r10, r1
|
|
cmp r5, r0
|
|
bge _0804F476
|
|
ldr r2, _0804F434
|
|
adds r7, r2, 0
|
|
_0804F40A:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0804F46A
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _0804F438
|
|
subs r0, r6, 0x1
|
|
adds r1, r5, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ands r1, r7
|
|
movs r2, 0x2
|
|
orrs r1, r2
|
|
b _0804F444
|
|
.align 2, 0
|
|
_0804F434: .4byte 0x0000fffc
|
|
_0804F438:
|
|
subs r0, r6, 0x1
|
|
adds r1, r5, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ands r1, r7
|
|
_0804F444:
|
|
strh r1, [r0]
|
|
movs r1, 0
|
|
ldrsh r2, [r4, r1]
|
|
movs r0, 0x2
|
|
ldrsh r3, [r4, r0]
|
|
movs r1, 0x4
|
|
ldrsh r0, [r4, r1]
|
|
str r0, [sp]
|
|
movs r1, 0x6
|
|
ldrsh r0, [r4, r1]
|
|
str r0, [sp, 0x4]
|
|
mov r0, r8
|
|
str r0, [sp, 0x8]
|
|
mov r1, r9
|
|
str r1, [sp, 0xC]
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl sub_804F494
|
|
_0804F46A:
|
|
adds r5, 0x2
|
|
movs r2, 0x6
|
|
ldrsh r0, [r4, r2]
|
|
subs r0, 0x3
|
|
cmp r5, r0
|
|
blt _0804F40A
|
|
_0804F476:
|
|
mov r6, r10
|
|
_0804F478:
|
|
movs r5, 0x4
|
|
ldrsh r0, [r4, r5]
|
|
subs r0, 0x3
|
|
cmp r6, r0
|
|
blt _0804F3F2
|
|
add sp, 0x10
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804F278
|
|
|
|
thumb_func_start sub_804F494
|
|
sub_804F494:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
str r2, [sp]
|
|
str r3, [sp, 0x4]
|
|
ldr r0, [sp, 0x30]
|
|
ldr r1, [sp, 0x34]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
lsls r1, 24
|
|
mov r8, r1
|
|
movs r0, 0x3
|
|
mov r10, r0
|
|
_0804F4BA:
|
|
movs r0, 0x4
|
|
bl DungeonRandomCapped
|
|
adds r6, r0, 0
|
|
movs r7, 0
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
mov r1, r9
|
|
mov r3, r8
|
|
lsrs r2, r3, 24
|
|
bl sub_804E9A8
|
|
_0804F4D6:
|
|
adds r0, r6, 0
|
|
mov r1, r10
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804F4F6
|
|
cmp r0, 0x1
|
|
bgt _0804F4EA
|
|
cmp r0, 0
|
|
beq _0804F4F0
|
|
b _0804F506
|
|
_0804F4EA:
|
|
cmp r0, 0x2
|
|
beq _0804F4FE
|
|
b _0804F506
|
|
_0804F4F0:
|
|
movs r0, 0x2
|
|
movs r1, 0
|
|
b _0804F50A
|
|
_0804F4F6:
|
|
movs r0, 0
|
|
movs r1, 0x2
|
|
negs r1, r1
|
|
b _0804F50A
|
|
_0804F4FE:
|
|
movs r0, 0x2
|
|
negs r0, r0
|
|
movs r1, 0
|
|
b _0804F50A
|
|
_0804F506:
|
|
movs r0, 0
|
|
movs r1, 0x2
|
|
_0804F50A:
|
|
adds r0, r5, r0
|
|
ldr r2, [sp]
|
|
cmp r2, r0
|
|
bgt _0804F534
|
|
ldr r3, [sp, 0x28]
|
|
cmp r3, r0
|
|
ble _0804F534
|
|
adds r1, r4, r1
|
|
ldr r2, [sp, 0x4]
|
|
cmp r2, r1
|
|
bgt _0804F534
|
|
ldr r3, [sp, 0x2C]
|
|
cmp r3, r1
|
|
ble _0804F534
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r10
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804F53E
|
|
_0804F534:
|
|
adds r6, 0x1
|
|
adds r7, 0x1
|
|
cmp r7, 0x3
|
|
bgt _0804F5B2
|
|
b _0804F4D6
|
|
_0804F53E:
|
|
mov r0, r10
|
|
ands r0, r6
|
|
cmp r0, 0x1
|
|
beq _0804F570
|
|
cmp r0, 0x1
|
|
bgt _0804F550
|
|
cmp r0, 0
|
|
beq _0804F55A
|
|
b _0804F4BA
|
|
_0804F550:
|
|
cmp r0, 0x2
|
|
beq _0804F586
|
|
cmp r0, 0x3
|
|
beq _0804F59C
|
|
b _0804F4BA
|
|
_0804F55A:
|
|
adds r0, r5, 0x1
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
mov r1, r9
|
|
mov r3, r8
|
|
lsrs r2, r3, 24
|
|
bl sub_804E9A8
|
|
adds r5, 0x2
|
|
b _0804F4BA
|
|
_0804F570:
|
|
subs r1, r4, 0x1
|
|
adds r0, r5, 0
|
|
bl GetMapEntity
|
|
mov r1, r9
|
|
mov r3, r8
|
|
lsrs r2, r3, 24
|
|
bl sub_804E9A8
|
|
subs r4, 0x2
|
|
b _0804F4BA
|
|
_0804F586:
|
|
subs r0, r5, 0x1
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
mov r1, r9
|
|
mov r3, r8
|
|
lsrs r2, r3, 24
|
|
bl sub_804E9A8
|
|
subs r5, 0x2
|
|
b _0804F4BA
|
|
_0804F59C:
|
|
adds r1, r4, 0x1
|
|
adds r0, r5, 0
|
|
bl GetMapEntity
|
|
mov r1, r9
|
|
mov r3, r8
|
|
lsrs r2, r3, 24
|
|
bl sub_804E9A8
|
|
adds r4, 0x2
|
|
b _0804F4BA
|
|
_0804F5B2:
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804F494
|
|
|
|
thumb_func_start sub_804F5C4
|
|
sub_804F5C4:
|
|
ldrh r3, [r0]
|
|
ldr r2, _0804F5D4
|
|
ands r2, r3
|
|
movs r3, 0x2
|
|
orrs r2, r3
|
|
orrs r2, r1
|
|
strh r2, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_0804F5D4: .4byte 0x0000fffc
|
|
thumb_func_end sub_804F5C4
|
|
|
|
thumb_func_start sub_804F5D8
|
|
sub_804F5D8:
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
movs r0, 0
|
|
ldrsh r6, [r5, r0]
|
|
b _0804F60C
|
|
_0804F5E2:
|
|
movs r0, 0x2
|
|
ldrsh r4, [r5, r0]
|
|
movs r1, 0x6
|
|
ldrsh r0, [r5, r1]
|
|
adds r7, r6, 0x1
|
|
cmp r4, r0
|
|
bge _0804F60A
|
|
_0804F5F0:
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0, 0x4]
|
|
movs r1, 0x20
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
adds r4, 0x1
|
|
movs r1, 0x6
|
|
ldrsh r0, [r5, r1]
|
|
cmp r4, r0
|
|
blt _0804F5F0
|
|
_0804F60A:
|
|
adds r6, r7, 0
|
|
_0804F60C:
|
|
movs r1, 0x4
|
|
ldrsh r0, [r5, r1]
|
|
cmp r6, r0
|
|
blt _0804F5E2
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804F5D8
|
|
|
|
thumb_func_start sub_804F61C
|
|
sub_804F61C:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
mov r9, r0
|
|
mov r8, r1
|
|
movs r7, 0x1
|
|
negs r7, r7
|
|
b _0804F67A
|
|
_0804F62E:
|
|
movs r5, 0x1
|
|
negs r5, r5
|
|
b _0804F666
|
|
_0804F634:
|
|
cmp r7, 0
|
|
beq _0804F63C
|
|
cmp r5, 0
|
|
bne _0804F660
|
|
_0804F63C:
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _0804F660
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrb r0, [r0, 0x9]
|
|
cmp r0, 0xFF
|
|
bne _0804F660
|
|
movs r0, 0x1
|
|
b _0804F686
|
|
_0804F660:
|
|
adds r5, 0x1
|
|
cmp r5, 0x1
|
|
bgt _0804F672
|
|
_0804F666:
|
|
mov r0, r8
|
|
adds r4, r0, r5
|
|
cmp r4, 0
|
|
blt _0804F660
|
|
cmp r4, 0x1F
|
|
ble _0804F634
|
|
_0804F672:
|
|
adds r7, 0x1
|
|
cmp r7, 0x1
|
|
bgt _0804F684
|
|
mov r0, r9
|
|
_0804F67A:
|
|
adds r6, r0, r7
|
|
cmp r6, 0
|
|
blt _0804F672
|
|
cmp r6, 0x37
|
|
ble _0804F62E
|
|
_0804F684:
|
|
movs r0, 0
|
|
_0804F686:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_804F61C
|
|
|
|
thumb_func_start sub_804F694
|
|
sub_804F694:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
adds r7, r0, 0
|
|
movs r0, 0x6
|
|
bl DungeonRandomCapped
|
|
subs r0, 0x1
|
|
cmp r0, 0x4
|
|
bls _0804F6B0
|
|
b _0804FBD6
|
|
_0804F6B0:
|
|
lsls r0, 2
|
|
ldr r1, _0804F6BC
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0804F6BC: .4byte _0804F6C0
|
|
.align 2, 0
|
|
_0804F6C0:
|
|
.4byte _0804FB24
|
|
.4byte _0804FA98
|
|
.4byte _0804F9DC
|
|
.4byte _0804F826
|
|
.4byte _0804F6D4
|
|
_0804F6D4:
|
|
ldr r1, _0804F70C
|
|
ldr r0, [r1]
|
|
cmp r0, 0
|
|
bne _0804F6DE
|
|
b _0804FBD6
|
|
_0804F6DE:
|
|
subs r0, 0x1
|
|
str r0, [r1]
|
|
adds r0, r7, 0
|
|
bl sub_804F5D8
|
|
movs r0, 0x2
|
|
bl DungeonRandomCapped
|
|
cmp r0, 0
|
|
beq _0804F78E
|
|
movs r5, 0
|
|
movs r1, 0
|
|
ldrsh r0, [r7, r1]
|
|
movs r2, 0x4
|
|
ldrsh r1, [r7, r2]
|
|
adds r0, r1
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
mov r8, r0
|
|
movs r3, 0x2
|
|
ldrsh r4, [r7, r3]
|
|
b _0804F712
|
|
.align 2, 0
|
|
_0804F70C: .4byte gUnknown_202F1C8
|
|
_0804F710:
|
|
adds r4, 0x1
|
|
_0804F712:
|
|
movs r1, 0x6
|
|
ldrsh r0, [r7, r1]
|
|
cmp r4, r0
|
|
bge _0804F72A
|
|
mov r0, r8
|
|
adds r1, r4, 0
|
|
bl sub_804F61C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0804F710
|
|
movs r5, 0x1
|
|
_0804F72A:
|
|
cmp r5, 0
|
|
beq _0804F730
|
|
b _0804FBD6
|
|
_0804F730:
|
|
movs r2, 0x2
|
|
ldrsh r4, [r7, r2]
|
|
movs r3, 0x6
|
|
ldrsh r0, [r7, r3]
|
|
cmp r4, r0
|
|
bge _0804F754
|
|
_0804F73C:
|
|
mov r0, r8
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0
|
|
bl sub_804F5C4
|
|
adds r4, 0x1
|
|
movs r5, 0x6
|
|
ldrsh r0, [r7, r5]
|
|
cmp r4, r0
|
|
blt _0804F73C
|
|
_0804F754:
|
|
movs r0, 0
|
|
ldrsh r5, [r7, r0]
|
|
cmp r5, r8
|
|
blt _0804F75E
|
|
b _0804FBD2
|
|
_0804F75E:
|
|
movs r1, 0x2
|
|
ldrsh r4, [r7, r1]
|
|
movs r2, 0x6
|
|
ldrsh r0, [r7, r2]
|
|
adds r6, r5, 0x1
|
|
cmp r4, r0
|
|
bge _0804F786
|
|
_0804F76C:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
movs r1, 0x80
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
adds r4, 0x1
|
|
movs r3, 0x6
|
|
ldrsh r0, [r7, r3]
|
|
cmp r4, r0
|
|
blt _0804F76C
|
|
_0804F786:
|
|
adds r5, r6, 0
|
|
cmp r5, r8
|
|
blt _0804F75E
|
|
b _0804FBD2
|
|
_0804F78E:
|
|
movs r5, 0
|
|
movs r4, 0x2
|
|
ldrsh r0, [r7, r4]
|
|
movs r2, 0x6
|
|
ldrsh r1, [r7, r2]
|
|
adds r0, r1
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
mov r8, r0
|
|
movs r3, 0
|
|
ldrsh r4, [r7, r3]
|
|
b _0804F7AA
|
|
_0804F7A8:
|
|
adds r4, 0x1
|
|
_0804F7AA:
|
|
movs r1, 0x4
|
|
ldrsh r0, [r7, r1]
|
|
cmp r4, r0
|
|
bge _0804F7C2
|
|
adds r0, r4, 0
|
|
mov r1, r8
|
|
bl sub_804F61C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0804F7A8
|
|
movs r5, 0x1
|
|
_0804F7C2:
|
|
cmp r5, 0
|
|
beq _0804F7C8
|
|
b _0804FBD6
|
|
_0804F7C8:
|
|
movs r2, 0
|
|
ldrsh r4, [r7, r2]
|
|
movs r3, 0x4
|
|
ldrsh r0, [r7, r3]
|
|
cmp r4, r0
|
|
bge _0804F7EC
|
|
_0804F7D4:
|
|
adds r0, r4, 0
|
|
mov r1, r8
|
|
bl GetMapEntity
|
|
movs r1, 0
|
|
bl sub_804F5C4
|
|
adds r4, 0x1
|
|
movs r5, 0x4
|
|
ldrsh r0, [r7, r5]
|
|
cmp r4, r0
|
|
blt _0804F7D4
|
|
_0804F7EC:
|
|
movs r0, 0x2
|
|
ldrsh r5, [r7, r0]
|
|
cmp r5, r8
|
|
blt _0804F7F6
|
|
b _0804FBD2
|
|
_0804F7F6:
|
|
movs r1, 0
|
|
ldrsh r4, [r7, r1]
|
|
movs r2, 0x4
|
|
ldrsh r0, [r7, r2]
|
|
adds r6, r5, 0x1
|
|
cmp r4, r0
|
|
bge _0804F81E
|
|
_0804F804:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
movs r1, 0x80
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
adds r4, 0x1
|
|
movs r3, 0x4
|
|
ldrsh r0, [r7, r3]
|
|
cmp r4, r0
|
|
blt _0804F804
|
|
_0804F81E:
|
|
adds r5, r6, 0
|
|
cmp r5, r8
|
|
blt _0804F7F6
|
|
b _0804FBD2
|
|
_0804F826:
|
|
movs r4, 0x4
|
|
ldrsh r3, [r7, r4]
|
|
movs r5, 0
|
|
ldrsh r1, [r7, r5]
|
|
subs r0, r3, r1
|
|
cmp r0, 0x5
|
|
bgt _0804F836
|
|
b _0804FBD6
|
|
_0804F836:
|
|
movs r0, 0x6
|
|
ldrsh r4, [r7, r0]
|
|
movs r5, 0x2
|
|
ldrsh r2, [r7, r5]
|
|
subs r0, r4, r2
|
|
cmp r0, 0x5
|
|
bgt _0804F846
|
|
b _0804FBD6
|
|
_0804F846:
|
|
adds r0, r1, r3
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
str r0, [sp]
|
|
adds r0, r2, r4
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
str r0, [sp, 0x4]
|
|
ldr r1, _0804F9D8
|
|
ldr r0, [r1]
|
|
cmp r0, 0
|
|
bne _0804F864
|
|
b _0804FBD6
|
|
_0804F864:
|
|
subs r0, 0x1
|
|
str r0, [r1]
|
|
adds r0, r7, 0
|
|
bl sub_804F5D8
|
|
ldr r5, [sp]
|
|
subs r5, 0x2
|
|
ldr r0, [sp, 0x4]
|
|
subs r0, 0x2
|
|
mov r10, r0
|
|
adds r0, r5, 0
|
|
mov r1, r10
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
ldr r1, [sp]
|
|
subs r1, 0x1
|
|
mov r9, r1
|
|
mov r0, r9
|
|
mov r1, r10
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
ldr r0, [sp]
|
|
mov r1, r10
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
ldr r2, [sp]
|
|
adds r2, 0x1
|
|
mov r8, r2
|
|
mov r0, r8
|
|
mov r1, r10
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
ldr r6, [sp, 0x4]
|
|
subs r6, 0x1
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
adds r0, r5, 0
|
|
ldr r1, [sp, 0x4]
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
ldr r4, [sp, 0x4]
|
|
adds r4, 0x1
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
mov r0, r9
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
ldr r0, [sp]
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
mov r0, r8
|
|
mov r1, r10
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
mov r0, r8
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
mov r0, r8
|
|
ldr r1, [sp, 0x4]
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
mov r0, r8
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0x4
|
|
bl sub_804F5C4
|
|
mov r0, r9
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0, 0x4]
|
|
movs r1, 0x4
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
mov r0, r9
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0, 0x4]
|
|
movs r2, 0x40
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
ldr r0, [sp]
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0, 0x4]
|
|
movs r4, 0x2
|
|
orrs r1, r4
|
|
strh r1, [r0, 0x4]
|
|
mov r0, r9
|
|
ldr r1, [sp, 0x4]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0, 0x4]
|
|
orrs r1, r4
|
|
strh r1, [r0, 0x4]
|
|
ldr r0, [sp]
|
|
ldr r1, [sp, 0x4]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0, 0x4]
|
|
orrs r1, r4
|
|
strh r1, [r0, 0x4]
|
|
mov r0, r9
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0, 0x4]
|
|
movs r4, 0x10
|
|
orrs r1, r4
|
|
strh r1, [r0, 0x4]
|
|
ldr r0, [sp]
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0, 0x4]
|
|
orrs r1, r4
|
|
strh r1, [r0, 0x4]
|
|
mov r0, r9
|
|
ldr r1, [sp, 0x4]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0, 0x4]
|
|
orrs r1, r4
|
|
strh r1, [r0, 0x4]
|
|
ldr r0, [sp]
|
|
ldr r1, [sp, 0x4]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0, 0x4]
|
|
orrs r4, r1
|
|
strh r4, [r0, 0x4]
|
|
b _0804FBD2
|
|
.align 2, 0
|
|
_0804F9D8: .4byte gUnknown_202F1C8
|
|
_0804F9DC:
|
|
movs r4, 0x4
|
|
ldrsh r3, [r7, r4]
|
|
movs r5, 0
|
|
ldrsh r2, [r7, r5]
|
|
subs r0, r3, r2
|
|
cmp r0, 0x4
|
|
bgt _0804F9EC
|
|
b _0804FBD6
|
|
_0804F9EC:
|
|
movs r1, 0x6
|
|
ldrsh r0, [r7, r1]
|
|
movs r4, 0x2
|
|
ldrsh r1, [r7, r4]
|
|
subs r0, r1
|
|
cmp r0, 0x4
|
|
bgt _0804F9FC
|
|
b _0804FBD6
|
|
_0804F9FC:
|
|
adds r0, r2, 0x2
|
|
subs r1, r3, 0x3
|
|
bl sub_808411C
|
|
adds r4, r0, 0
|
|
movs r5, 0x2
|
|
ldrsh r0, [r7, r5]
|
|
adds r0, 0x2
|
|
movs r2, 0x6
|
|
ldrsh r1, [r7, r2]
|
|
subs r1, 0x3
|
|
bl sub_808411C
|
|
mov r10, r0
|
|
movs r3, 0
|
|
ldrsh r0, [r7, r3]
|
|
adds r0, 0x2
|
|
movs r5, 0x4
|
|
ldrsh r1, [r7, r5]
|
|
subs r1, 0x3
|
|
bl sub_808411C
|
|
mov r9, r0
|
|
movs r1, 0x2
|
|
ldrsh r0, [r7, r1]
|
|
adds r0, 0x2
|
|
movs r2, 0x6
|
|
ldrsh r1, [r7, r2]
|
|
subs r1, 0x3
|
|
bl sub_808411C
|
|
adds r6, r0, 0
|
|
ldr r1, _0804FA94
|
|
ldr r0, [r1]
|
|
cmp r0, 0
|
|
bne _0804FA46
|
|
b _0804FBD6
|
|
_0804FA46:
|
|
subs r0, 0x1
|
|
str r0, [r1]
|
|
adds r0, r7, 0
|
|
bl sub_804F5D8
|
|
cmp r4, r9
|
|
ble _0804FA5A
|
|
adds r0, r4, 0
|
|
mov r4, r9
|
|
mov r9, r0
|
|
_0804FA5A:
|
|
cmp r10, r6
|
|
ble _0804FA64
|
|
mov r0, r10
|
|
mov r10, r6
|
|
adds r6, r0, 0
|
|
_0804FA64:
|
|
adds r5, r4, 0
|
|
cmp r5, r9
|
|
ble _0804FA6C
|
|
b _0804FBD2
|
|
_0804FA6C:
|
|
mov r4, r10
|
|
adds r3, r5, 0x1
|
|
mov r8, r3
|
|
cmp r4, r6
|
|
bgt _0804FA8A
|
|
_0804FA76:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0
|
|
bl sub_804F5C4
|
|
adds r4, 0x1
|
|
cmp r4, r6
|
|
ble _0804FA76
|
|
_0804FA8A:
|
|
mov r5, r8
|
|
cmp r5, r9
|
|
ble _0804FA6C
|
|
b _0804FBD2
|
|
.align 2, 0
|
|
_0804FA94: .4byte gUnknown_202F1C8
|
|
_0804FA98:
|
|
movs r4, 0x4
|
|
ldrsh r0, [r7, r4]
|
|
movs r5, 0
|
|
ldrsh r1, [r7, r5]
|
|
subs r0, r1
|
|
movs r2, 0x1
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0804FAAC
|
|
b _0804FBD6
|
|
_0804FAAC:
|
|
movs r1, 0x6
|
|
ldrsh r0, [r7, r1]
|
|
movs r3, 0x2
|
|
ldrsh r1, [r7, r3]
|
|
subs r0, r1
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0804FABE
|
|
b _0804FBD6
|
|
_0804FABE:
|
|
ldr r1, _0804FB20
|
|
ldr r0, [r1]
|
|
cmp r0, 0
|
|
bne _0804FAC8
|
|
b _0804FBD6
|
|
_0804FAC8:
|
|
subs r0, 0x1
|
|
str r0, [r1]
|
|
adds r0, r7, 0
|
|
bl sub_804F5D8
|
|
movs r6, 0x3F
|
|
_0804FAD4:
|
|
movs r4, 0x4
|
|
ldrsh r0, [r7, r4]
|
|
movs r5, 0
|
|
ldrsh r1, [r7, r5]
|
|
subs r0, r1
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0
|
|
movs r1, 0x6
|
|
ldrsh r0, [r7, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r7, r2]
|
|
subs r0, r1
|
|
bl DungeonRandomCapped
|
|
adds r2, r0, 0
|
|
adds r0, r4, r2
|
|
movs r5, 0x1
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
beq _0804FB14
|
|
movs r3, 0
|
|
ldrsh r0, [r7, r3]
|
|
adds r0, r4
|
|
movs r4, 0x2
|
|
ldrsh r1, [r7, r4]
|
|
adds r1, r2
|
|
bl GetMapEntity
|
|
movs r1, 0
|
|
bl sub_804F5C4
|
|
_0804FB14:
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bge _0804FAD4
|
|
strb r5, [r7, 0x9]
|
|
b _0804FBD6
|
|
.align 2, 0
|
|
_0804FB20: .4byte gUnknown_202F1C8
|
|
_0804FB24:
|
|
ldr r1, _0804FBC0
|
|
ldr r0, [r1]
|
|
cmp r0, 0
|
|
beq _0804FBD6
|
|
subs r0, 0x1
|
|
str r0, [r1]
|
|
movs r5, 0x4
|
|
ldrsh r3, [r7, r5]
|
|
movs r0, 0
|
|
ldrsh r2, [r7, r0]
|
|
subs r6, r3, r2
|
|
movs r4, 0x1
|
|
adds r0, r6, 0
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
beq _0804FB54
|
|
movs r1, 0x6
|
|
ldrsh r0, [r7, r1]
|
|
movs r5, 0x2
|
|
ldrsh r1, [r7, r5]
|
|
subs r0, r1
|
|
ands r0, r4
|
|
cmp r0, 0
|
|
bne _0804FBC4
|
|
_0804FB54:
|
|
adds r0, r2, r3
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r5, r0, 1
|
|
movs r0, 0x2
|
|
ldrsh r3, [r7, r0]
|
|
movs r1, 0x6
|
|
ldrsh r2, [r7, r1]
|
|
adds r0, r3, r2
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r4, r0, 1
|
|
cmp r6, 0x4
|
|
ble _0804FBAE
|
|
subs r0, r2, r3
|
|
cmp r0, 0x4
|
|
ble _0804FBAE
|
|
adds r0, r5, 0x1
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0
|
|
bl sub_804F5C4
|
|
adds r1, r4, 0x1
|
|
adds r0, r5, 0
|
|
bl GetMapEntity
|
|
movs r1, 0
|
|
bl sub_804F5C4
|
|
subs r0, r5, 0x1
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0
|
|
bl sub_804F5C4
|
|
subs r1, r4, 0x1
|
|
adds r0, r5, 0
|
|
bl GetMapEntity
|
|
movs r1, 0
|
|
bl sub_804F5C4
|
|
_0804FBAE:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0
|
|
bl sub_804F5C4
|
|
b _0804FBD2
|
|
.align 2, 0
|
|
_0804FBC0: .4byte gUnknown_202F1C8
|
|
_0804FBC4:
|
|
adds r0, r7, 0
|
|
bl sub_804F5D8
|
|
adds r0, r7, 0
|
|
movs r1, 0x1
|
|
bl sub_804F278
|
|
_0804FBD2:
|
|
movs r0, 0x1
|
|
strb r0, [r7, 0x9]
|
|
_0804FBD6:
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804F694
|
|
|
|
thumb_func_start sub_804FBE8
|
|
sub_804FBE8:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
movs r6, 0
|
|
ldr r0, _0804FC6C
|
|
adds r5, r0, 0
|
|
_0804FBF4:
|
|
movs r4, 0
|
|
adds r3, r6, 0x1
|
|
mov r8, r3
|
|
_0804FBFA:
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrh r1, [r2]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
beq _0804FC2A
|
|
movs r7, 0x88
|
|
lsls r7, 1
|
|
adds r0, r7, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804FC24
|
|
ldrh r0, [r2, 0x4]
|
|
ldr r3, _0804FC70
|
|
adds r1, r3, 0
|
|
ands r0, r1
|
|
strh r0, [r2, 0x4]
|
|
_0804FC24:
|
|
ldrh r0, [r2, 0x4]
|
|
ands r0, r5
|
|
strh r0, [r2, 0x4]
|
|
_0804FC2A:
|
|
ldrh r3, [r2, 0x4]
|
|
movs r0, 0x1
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
beq _0804FC46
|
|
ldrh r0, [r2]
|
|
movs r7, 0x80
|
|
lsls r7, 2
|
|
adds r1, r7, 0
|
|
orrs r1, r0
|
|
strh r1, [r2]
|
|
adds r0, r3, 0
|
|
ands r0, r5
|
|
strh r0, [r2, 0x4]
|
|
_0804FC46:
|
|
ldrh r1, [r2, 0x4]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804FC56
|
|
adds r0, r1, 0
|
|
ands r0, r5
|
|
strh r0, [r2, 0x4]
|
|
_0804FC56:
|
|
adds r4, 0x1
|
|
cmp r4, 0x1F
|
|
ble _0804FBFA
|
|
mov r6, r8
|
|
cmp r6, 0x37
|
|
ble _0804FBF4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804FC6C: .4byte 0x0000fffb
|
|
_0804FC70: .4byte 0x0000fffd
|
|
thumb_func_end sub_804FBE8
|
|
|
|
thumb_func_start sub_804FC74
|
|
sub_804FC74:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
movs r5, 0
|
|
movs r0, 0x3
|
|
mov r8, r0
|
|
ldr r0, _0804FCC8
|
|
adds r7, r0, 0
|
|
_0804FC86:
|
|
movs r4, 0
|
|
adds r6, r5, 0x1
|
|
_0804FC8A:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
bne _0804FCAE
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ands r1, r7
|
|
mov r2, r8
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
_0804FCAE:
|
|
adds r4, 0x1
|
|
cmp r4, 0x1F
|
|
ble _0804FC8A
|
|
adds r5, r6, 0
|
|
cmp r5, 0x37
|
|
ble _0804FC86
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804FCC8: .4byte 0x0000fffc
|
|
thumb_func_end sub_804FC74
|
|
|
|
thumb_func_start sub_804FCCC
|
|
sub_804FCCC:
|
|
push {r4-r7,lr}
|
|
movs r5, 0
|
|
ldr r0, _0804FD0C
|
|
adds r7, r0, 0
|
|
_0804FCD4:
|
|
movs r4, 0
|
|
adds r6, r5, 0x1
|
|
_0804FCD8:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0804FCF8
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ands r1, r7
|
|
strh r1, [r0]
|
|
_0804FCF8:
|
|
adds r4, 0x1
|
|
cmp r4, 0x1F
|
|
ble _0804FCD8
|
|
adds r5, r6, 0
|
|
cmp r5, 0x37
|
|
ble _0804FCD4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804FD0C: .4byte 0x0000fffc
|
|
thumb_func_end sub_804FCCC
|
|
|
|
thumb_func_start sub_804FD10
|
|
sub_804FD10:
|
|
movs r2, 0
|
|
movs r3, 0
|
|
strh r3, [r0]
|
|
strh r3, [r0, 0x4]
|
|
movs r1, 0xFF
|
|
strb r1, [r0, 0x9]
|
|
strb r2, [r0, 0x8]
|
|
strb r2, [r0, 0xA]
|
|
strb r2, [r0, 0xB]
|
|
strb r2, [r0, 0xC]
|
|
strb r2, [r0, 0xD]
|
|
strb r2, [r0, 0xE]
|
|
str r3, [r0, 0x10]
|
|
str r3, [r0, 0x14]
|
|
bx lr
|
|
thumb_func_end sub_804FD10
|
|
|
|
thumb_func_start sub_804FD30
|
|
sub_804FD30:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
movs r6, 0
|
|
_0804FD3A:
|
|
movs r7, 0
|
|
adds r4, r6, 0x1
|
|
_0804FD3E:
|
|
adds r0, r6, 0
|
|
adds r1, r7, 0
|
|
bl GetMapEntity
|
|
bl sub_804FD10
|
|
subs r3, r7, 0x1
|
|
cmp r6, 0
|
|
blt _0804FD5C
|
|
cmp r3, 0
|
|
blt _0804FD5C
|
|
cmp r6, 0x37
|
|
bgt _0804FD5C
|
|
cmp r3, 0x1F
|
|
ble _0804FD60
|
|
_0804FD5C:
|
|
movs r0, 0x1
|
|
b _0804FD62
|
|
_0804FD60:
|
|
movs r0, 0
|
|
_0804FD62:
|
|
cmp r0, 0
|
|
bne _0804FE24
|
|
cmp r4, 0
|
|
blt _0804FD76
|
|
cmp r3, 0
|
|
blt _0804FD76
|
|
cmp r4, 0x37
|
|
bgt _0804FD76
|
|
cmp r3, 0x1F
|
|
ble _0804FD7A
|
|
_0804FD76:
|
|
movs r0, 0x1
|
|
b _0804FD7C
|
|
_0804FD7A:
|
|
movs r0, 0
|
|
_0804FD7C:
|
|
cmp r0, 0
|
|
bne _0804FE24
|
|
cmp r4, 0
|
|
blt _0804FD90
|
|
cmp r3, 0
|
|
blt _0804FD90
|
|
cmp r4, 0x37
|
|
bgt _0804FD90
|
|
cmp r3, 0x1F
|
|
ble _0804FD94
|
|
_0804FD90:
|
|
movs r0, 0x1
|
|
b _0804FD96
|
|
_0804FD94:
|
|
movs r0, 0
|
|
_0804FD96:
|
|
cmp r0, 0
|
|
bne _0804FE24
|
|
adds r2, r7, 0x1
|
|
cmp r4, 0
|
|
blt _0804FDAC
|
|
cmp r2, 0
|
|
blt _0804FDAC
|
|
cmp r4, 0x37
|
|
bgt _0804FDAC
|
|
cmp r2, 0x1F
|
|
ble _0804FDB0
|
|
_0804FDAC:
|
|
movs r0, 0x1
|
|
b _0804FDB2
|
|
_0804FDB0:
|
|
movs r0, 0
|
|
_0804FDB2:
|
|
cmp r0, 0
|
|
bne _0804FE24
|
|
cmp r6, 0
|
|
blt _0804FDC6
|
|
cmp r2, 0
|
|
blt _0804FDC6
|
|
cmp r6, 0x37
|
|
bgt _0804FDC6
|
|
cmp r2, 0x1F
|
|
ble _0804FDCA
|
|
_0804FDC6:
|
|
movs r0, 0x1
|
|
b _0804FDCC
|
|
_0804FDCA:
|
|
movs r0, 0
|
|
_0804FDCC:
|
|
cmp r0, 0
|
|
bne _0804FE24
|
|
adds r0, r2, 0
|
|
subs r1, r6, 0x1
|
|
cmp r1, 0
|
|
blt _0804FDE4
|
|
cmp r0, 0
|
|
blt _0804FDE4
|
|
cmp r1, 0x37
|
|
bgt _0804FDE4
|
|
cmp r2, 0x1F
|
|
ble _0804FDE8
|
|
_0804FDE4:
|
|
movs r0, 0x1
|
|
b _0804FDEA
|
|
_0804FDE8:
|
|
movs r0, 0
|
|
_0804FDEA:
|
|
cmp r0, 0
|
|
bne _0804FE24
|
|
cmp r1, 0
|
|
blt _0804FDFE
|
|
cmp r7, 0
|
|
blt _0804FDFE
|
|
cmp r1, 0x37
|
|
bgt _0804FDFE
|
|
cmp r7, 0x1F
|
|
ble _0804FE02
|
|
_0804FDFE:
|
|
movs r0, 0x1
|
|
b _0804FE04
|
|
_0804FE02:
|
|
movs r0, 0
|
|
_0804FE04:
|
|
cmp r0, 0
|
|
bne _0804FE24
|
|
adds r0, r3, 0
|
|
cmp r1, 0
|
|
blt _0804FE1A
|
|
cmp r0, 0
|
|
blt _0804FE1A
|
|
cmp r1, 0x37
|
|
bgt _0804FE1A
|
|
cmp r3, 0x1F
|
|
ble _0804FE1E
|
|
_0804FE1A:
|
|
movs r0, 0x1
|
|
b _0804FE20
|
|
_0804FE1E:
|
|
movs r0, 0
|
|
_0804FE20:
|
|
cmp r0, 0
|
|
beq _0804FE34
|
|
_0804FE24:
|
|
adds r0, r6, 0
|
|
adds r1, r7, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
movs r1, 0x10
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
_0804FE34:
|
|
adds r7, 0x1
|
|
cmp r7, 0x1F
|
|
ble _0804FD3E
|
|
adds r6, 0x1
|
|
cmp r6, 0x37
|
|
bgt _0804FE42
|
|
b _0804FD3A
|
|
_0804FE42:
|
|
ldr r3, _0804FEB4
|
|
ldr r1, [r3]
|
|
ldr r0, _0804FEB8
|
|
adds r2, r1, r0
|
|
ldr r0, _0804FEBC
|
|
strh r0, [r2]
|
|
ldr r2, _0804FEC0
|
|
adds r1, r2
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
strh r0, [r1]
|
|
movs r6, 0
|
|
mov r8, r3
|
|
ldr r1, _0804FEC4
|
|
_0804FE5E:
|
|
adds r5, r1, 0
|
|
movs r4, 0
|
|
movs r7, 0x7
|
|
_0804FE64:
|
|
mov r2, r8
|
|
ldr r0, [r2]
|
|
adds r0, r5
|
|
adds r0, r4
|
|
str r1, [sp]
|
|
bl sub_804FD10
|
|
adds r4, 0x18
|
|
subs r7, 0x1
|
|
ldr r1, [sp]
|
|
cmp r7, 0
|
|
bge _0804FE64
|
|
adds r1, 0xC0
|
|
adds r6, 0x1
|
|
cmp r6, 0x7
|
|
ble _0804FE5E
|
|
ldr r0, _0804FEB4
|
|
ldr r1, [r0]
|
|
ldr r2, _0804FEC8
|
|
adds r1, r2
|
|
movs r2, 0
|
|
strh r2, [r1]
|
|
movs r6, 0
|
|
adds r4, r0, 0
|
|
ldr r3, _0804FECC
|
|
_0804FE96:
|
|
ldr r0, [r4]
|
|
lsls r1, r6, 2
|
|
adds r0, r3
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
str r2, [r0]
|
|
adds r6, 0x1
|
|
cmp r6, 0x3F
|
|
ble _0804FE96
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0804FEB4: .4byte gDungeonGlobalData
|
|
_0804FEB8: .4byte 0x0000e21c
|
|
_0804FEBC: .4byte 0x0000ffff
|
|
_0804FEC0: .4byte 0x0000e21e
|
|
_0804FEC4: .4byte 0x0000e27c
|
|
_0804FEC8: .4byte 0x00003904
|
|
_0804FECC: .4byte 0x0001371c
|
|
thumb_func_end sub_804FD30
|
|
|
|
thumb_func_start sub_804FED0
|
|
sub_804FED0:
|
|
push {r4-r7,lr}
|
|
adds r7, r0, 0
|
|
adds r5, r1, 0
|
|
movs r6, 0
|
|
b _0804FEFA
|
|
_0804FEDA:
|
|
adds r0, r5, 0
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0
|
|
adds r0, r5, 0
|
|
bl DungeonRandomCapped
|
|
lsls r4, 2
|
|
adds r4, r7
|
|
ldr r2, [r4]
|
|
lsls r0, 2
|
|
adds r0, r7
|
|
ldr r1, [r0]
|
|
str r1, [r4]
|
|
str r2, [r0]
|
|
adds r6, 0x1
|
|
_0804FEFA:
|
|
lsls r0, r5, 1
|
|
cmp r6, r0
|
|
blt _0804FEDA
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_804FED0
|
|
|
|
thumb_func_start sub_804FF08
|
|
sub_804FF08:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r4, _08050234
|
|
add sp, r4
|
|
mov r10, r0
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r0, 0xE0
|
|
lsls r0, 5
|
|
add r0, sp
|
|
str r1, [r0]
|
|
ldr r0, _08050238
|
|
ldr r0, [r0]
|
|
mov r9, r0
|
|
ldr r0, _0805023C
|
|
add r0, r9
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
beq _0804FF46
|
|
ldr r0, _08050240
|
|
add r0, r9
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, r1
|
|
bne _08050038
|
|
_0804FF46:
|
|
movs r0, 0
|
|
mov r8, r0
|
|
movs r6, 0
|
|
_0804FF4C:
|
|
movs r5, 0
|
|
mov r1, r8
|
|
lsls r0, r1, 2
|
|
mov r2, sp
|
|
adds r4, r0, r2
|
|
_0804FF56:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1]
|
|
movs r0, 0x3
|
|
ands r0, r2
|
|
cmp r0, 0x1
|
|
bne _0804FFAA
|
|
ldrb r0, [r1, 0x9]
|
|
cmp r0, 0xFF
|
|
beq _0804FFAA
|
|
movs r0, 0x20
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0804FFAA
|
|
ldrh r1, [r1, 0x4]
|
|
movs r3, 0x8
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0804FFAA
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0804FFAA
|
|
adds r0, r3, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0804FFAA
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _0804FFAA
|
|
strb r6, [r4]
|
|
strb r5, [r4, 0x1]
|
|
adds r4, 0x4
|
|
movs r2, 0x1
|
|
add r8, r2
|
|
_0804FFAA:
|
|
adds r5, 0x1
|
|
cmp r5, 0x1F
|
|
ble _0804FF56
|
|
adds r6, 0x1
|
|
cmp r6, 0x37
|
|
ble _0804FF4C
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _08050038
|
|
bl DungeonRandomCapped
|
|
lsls r0, 2
|
|
mov r1, sp
|
|
adds r4, r1, r0
|
|
ldrb r0, [r4]
|
|
ldrb r1, [r4, 0x1]
|
|
bl GetMapEntity
|
|
adds r5, r0, 0
|
|
ldrh r1, [r5, 0x4]
|
|
movs r0, 0x1
|
|
orrs r0, r1
|
|
ldr r1, _08050244
|
|
ands r0, r1
|
|
strh r0, [r5, 0x4]
|
|
ldr r1, _08050248
|
|
ldrb r0, [r5, 0x9]
|
|
strb r0, [r1]
|
|
ldrb r1, [r4]
|
|
ldr r0, _0805023C
|
|
add r0, r9
|
|
strh r1, [r0]
|
|
ldrb r1, [r4, 0x1]
|
|
ldr r0, _08050240
|
|
add r0, r9
|
|
strh r1, [r0]
|
|
bl sub_8043D10
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x2
|
|
bne _08050038
|
|
ldrb r4, [r5, 0x9]
|
|
movs r6, 0
|
|
_08050002:
|
|
movs r5, 0
|
|
_08050004:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl GetMapEntity
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1]
|
|
movs r0, 0x3
|
|
ands r0, r2
|
|
cmp r0, 0x1
|
|
bne _0805002C
|
|
ldrb r0, [r1, 0x9]
|
|
cmp r0, r4
|
|
bne _0805002C
|
|
movs r0, 0x40
|
|
orrs r0, r2
|
|
strh r0, [r1]
|
|
ldrb r1, [r1, 0x9]
|
|
ldr r0, _0805024C
|
|
add r0, r9
|
|
strb r1, [r0]
|
|
_0805002C:
|
|
adds r5, 0x1
|
|
cmp r5, 0x1F
|
|
ble _08050004
|
|
adds r6, 0x1
|
|
cmp r6, 0x37
|
|
ble _08050002
|
|
_08050038:
|
|
movs r2, 0
|
|
mov r8, r2
|
|
movs r6, 0
|
|
_0805003E:
|
|
movs r5, 0
|
|
adds r7, r6, 0x1
|
|
mov r1, r8
|
|
lsls r0, r1, 2
|
|
mov r2, sp
|
|
adds r4, r0, r2
|
|
_0805004A:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1]
|
|
movs r0, 0x3
|
|
ands r0, r2
|
|
cmp r0, 0x1
|
|
bne _08050092
|
|
ldrb r0, [r1, 0x9]
|
|
cmp r0, 0xFF
|
|
beq _08050092
|
|
movs r0, 0x20
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _08050092
|
|
movs r0, 0x40
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _08050092
|
|
movs r0, 0x8
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _08050092
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _08050092
|
|
strb r6, [r4]
|
|
strb r5, [r4, 0x1]
|
|
adds r4, 0x4
|
|
movs r2, 0x1
|
|
add r8, r2
|
|
_08050092:
|
|
adds r5, 0x1
|
|
cmp r5, 0x1F
|
|
ble _0805004A
|
|
adds r6, r7, 0
|
|
cmp r6, 0x37
|
|
ble _0805003E
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _080500FA
|
|
mov r1, r10
|
|
ldrb r4, [r1, 0xF]
|
|
cmp r4, 0
|
|
beq _080500FA
|
|
subs r0, r4, 0x2
|
|
adds r1, r4, 0x2
|
|
bl sub_808411C
|
|
adds r4, r0, 0
|
|
cmp r4, 0
|
|
bgt _080500BC
|
|
movs r4, 0x1
|
|
_080500BC:
|
|
mov r0, sp
|
|
mov r1, r8
|
|
bl sub_804FED0
|
|
mov r0, r8
|
|
bl DungeonRandomCapped
|
|
adds r5, r0, 0
|
|
cmp r4, 0
|
|
ble _080500FA
|
|
adds r6, r4, 0
|
|
lsls r0, r5, 2
|
|
mov r2, sp
|
|
adds r4, r0, r2
|
|
_080500D8:
|
|
ldrb r0, [r4]
|
|
ldrb r1, [r4, 0x1]
|
|
bl GetMapEntity
|
|
ldrh r2, [r0, 0x4]
|
|
movs r1, 0x2
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
adds r4, 0x4
|
|
adds r5, 0x1
|
|
cmp r5, r8
|
|
bne _080500F4
|
|
mov r4, sp
|
|
movs r5, 0
|
|
_080500F4:
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bne _080500D8
|
|
_080500FA:
|
|
movs r0, 0
|
|
mov r8, r0
|
|
movs r6, 0
|
|
_08050100:
|
|
movs r5, 0
|
|
adds r7, r6, 0x1
|
|
mov r1, r8
|
|
lsls r0, r1, 2
|
|
mov r2, sp
|
|
adds r4, r0, r2
|
|
_0805010C:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050128
|
|
strb r6, [r4]
|
|
strb r5, [r4, 0x1]
|
|
adds r4, 0x4
|
|
movs r0, 0x1
|
|
add r8, r0
|
|
_08050128:
|
|
adds r5, 0x1
|
|
cmp r5, 0x1F
|
|
ble _0805010C
|
|
adds r6, r7, 0
|
|
cmp r6, 0x37
|
|
ble _08050100
|
|
mov r1, r8
|
|
cmp r1, 0
|
|
beq _0805018E
|
|
mov r2, r10
|
|
ldrb r4, [r2, 0x14]
|
|
cmp r4, 0
|
|
beq _0805018E
|
|
subs r0, r4, 0x2
|
|
adds r1, r4, 0x2
|
|
bl sub_808411C
|
|
adds r4, r0, 0
|
|
cmp r4, 0
|
|
ble _0805018E
|
|
mov r0, sp
|
|
mov r1, r8
|
|
bl sub_804FED0
|
|
mov r0, r8
|
|
bl DungeonRandomCapped
|
|
adds r5, r0, 0
|
|
cmp r4, 0
|
|
ble _0805018E
|
|
adds r6, r4, 0
|
|
lsls r0, r5, 2
|
|
mov r1, sp
|
|
adds r4, r0, r1
|
|
_0805016C:
|
|
ldrb r0, [r4]
|
|
ldrb r1, [r4, 0x1]
|
|
bl GetMapEntity
|
|
ldrh r2, [r0, 0x4]
|
|
movs r1, 0x2
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
adds r4, 0x4
|
|
adds r5, 0x1
|
|
cmp r5, r8
|
|
bne _08050188
|
|
mov r4, sp
|
|
movs r5, 0
|
|
_08050188:
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bne _0805016C
|
|
_0805018E:
|
|
movs r2, 0
|
|
mov r8, r2
|
|
movs r0, 0xE0
|
|
lsls r0, 5
|
|
add r0, sp
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
bne _080501E4
|
|
movs r6, 0
|
|
_080501A0:
|
|
movs r5, 0
|
|
adds r7, r6, 0x1
|
|
mov r1, r8
|
|
lsls r0, r1, 2
|
|
mov r2, sp
|
|
adds r4, r0, r2
|
|
_080501AC:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080501D8
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080501D8
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080501D8
|
|
strb r6, [r4]
|
|
strb r5, [r4, 0x1]
|
|
adds r4, 0x4
|
|
movs r0, 0x1
|
|
add r8, r0
|
|
_080501D8:
|
|
adds r5, 0x1
|
|
cmp r5, 0x1F
|
|
ble _080501AC
|
|
adds r6, r7, 0
|
|
cmp r6, 0x37
|
|
ble _080501A0
|
|
_080501E4:
|
|
mov r1, r8
|
|
cmp r1, 0
|
|
beq _08050294
|
|
lsrs r4, r1, 31
|
|
add r4, r8
|
|
asrs r4, 1
|
|
lsls r0, r1, 3
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
adds r1, r0, 0
|
|
adds r0, r4, 0
|
|
bl sub_808411C
|
|
adds r4, r0, 0
|
|
cmp r4, 0x5
|
|
bgt _08050208
|
|
movs r4, 0x6
|
|
_08050208:
|
|
ldr r0, _08050250
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r4, r0
|
|
blt _08050214
|
|
adds r4, r0, 0
|
|
_08050214:
|
|
mov r0, sp
|
|
mov r1, r8
|
|
bl sub_804FED0
|
|
mov r0, r8
|
|
bl DungeonRandomCapped
|
|
adds r5, r0, 0
|
|
cmp r4, 0
|
|
ble _08050294
|
|
adds r6, r4, 0
|
|
lsls r0, r5, 2
|
|
mov r1, sp
|
|
adds r7, r0, r1
|
|
_08050230:
|
|
ldrb r0, [r7]
|
|
b _08050254
|
|
.align 2, 0
|
|
_08050234: .4byte 0xffffe3fc
|
|
_08050238: .4byte gDungeonGlobalData
|
|
_0805023C: .4byte 0x0000e21c
|
|
_08050240: .4byte 0x0000e21e
|
|
_08050244: .4byte 0x0000fffd
|
|
_08050248: .4byte gUnknown_202F1B4
|
|
_0805024C: .4byte 0x00003a0c
|
|
_08050250: .4byte gUnknown_80F4DA0
|
|
_08050254:
|
|
ldrb r1, [r7, 0x1]
|
|
bl GetMapEntity
|
|
adds r4, r0, 0
|
|
movs r0, 0x2
|
|
bl DungeonRandomCapped
|
|
cmp r0, 0
|
|
beq _0805026C
|
|
ldrh r0, [r4, 0x4]
|
|
movs r1, 0x2
|
|
b _0805027E
|
|
_0805026C:
|
|
ldr r0, _08050424
|
|
ldr r0, [r0]
|
|
ldr r2, _08050428
|
|
adds r0, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08050282
|
|
ldrh r0, [r4, 0x4]
|
|
movs r1, 0x4
|
|
_0805027E:
|
|
orrs r0, r1
|
|
strh r0, [r4, 0x4]
|
|
_08050282:
|
|
adds r7, 0x4
|
|
adds r5, 0x1
|
|
cmp r5, r8
|
|
bne _0805028E
|
|
mov r7, sp
|
|
movs r5, 0
|
|
_0805028E:
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bne _08050230
|
|
_08050294:
|
|
movs r0, 0
|
|
mov r8, r0
|
|
movs r6, 0
|
|
_0805029A:
|
|
movs r5, 0
|
|
adds r7, r6, 0x1
|
|
mov r1, r8
|
|
lsls r0, r1, 2
|
|
mov r2, sp
|
|
adds r4, r0, r2
|
|
_080502A6:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1]
|
|
movs r0, 0x3
|
|
ands r0, r2
|
|
cmp r0, 0x1
|
|
bne _080502F0
|
|
ldrb r0, [r1, 0x9]
|
|
cmp r0, 0xFF
|
|
beq _080502F0
|
|
movs r0, 0x20
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _080502F0
|
|
ldrh r1, [r1, 0x4]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080502F0
|
|
movs r0, 0x8
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _080502F0
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _080502F0
|
|
strb r6, [r4]
|
|
strb r5, [r4, 0x1]
|
|
adds r4, 0x4
|
|
movs r2, 0x1
|
|
add r8, r2
|
|
_080502F0:
|
|
adds r5, 0x1
|
|
cmp r5, 0x1F
|
|
ble _080502A6
|
|
adds r6, r7, 0
|
|
cmp r6, 0x37
|
|
ble _0805029A
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _08050356
|
|
mov r2, r10
|
|
ldrb r1, [r2, 0x10]
|
|
lsrs r0, r1, 1
|
|
bl sub_808411C
|
|
adds r4, r0, 0
|
|
cmp r4, 0
|
|
ble _08050356
|
|
cmp r4, 0x37
|
|
ble _08050318
|
|
movs r4, 0x38
|
|
_08050318:
|
|
mov r0, sp
|
|
mov r1, r8
|
|
bl sub_804FED0
|
|
mov r0, r8
|
|
bl DungeonRandomCapped
|
|
adds r5, r0, 0
|
|
cmp r4, 0
|
|
ble _08050356
|
|
adds r6, r4, 0
|
|
lsls r0, r5, 2
|
|
mov r1, sp
|
|
adds r4, r0, r1
|
|
_08050334:
|
|
ldrb r0, [r4]
|
|
ldrb r1, [r4, 0x1]
|
|
bl GetMapEntity
|
|
ldrh r2, [r0, 0x4]
|
|
movs r1, 0x4
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
adds r4, 0x4
|
|
adds r5, 0x1
|
|
cmp r5, r8
|
|
bne _08050350
|
|
mov r4, sp
|
|
movs r5, 0
|
|
_08050350:
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bne _08050334
|
|
_08050356:
|
|
ldr r0, _0805042C
|
|
add r0, r9
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
cmp r0, r1
|
|
beq _08050372
|
|
ldr r0, _08050430
|
|
add r0, r9
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, r1
|
|
bne _08050410
|
|
_08050372:
|
|
movs r0, 0
|
|
mov r8, r0
|
|
movs r6, 0
|
|
_08050378:
|
|
movs r5, 0
|
|
adds r7, r6, 0x1
|
|
mov r1, r8
|
|
lsls r0, r1, 2
|
|
mov r2, sp
|
|
adds r4, r0, r2
|
|
_08050384:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
adds r2, r0, 0
|
|
ldrh r1, [r2]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x1
|
|
bne _080503E2
|
|
ldrb r0, [r2, 0x9]
|
|
cmp r0, 0xFF
|
|
beq _080503E2
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080503E2
|
|
movs r3, 0x8
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080503E2
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
mov r10, r0
|
|
mov r0, r10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080503E2
|
|
ldrh r1, [r2, 0x4]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080503E2
|
|
adds r0, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080503E2
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080503E2
|
|
strb r6, [r4]
|
|
strb r5, [r4, 0x1]
|
|
adds r4, 0x4
|
|
movs r1, 0x1
|
|
add r8, r1
|
|
_080503E2:
|
|
adds r5, 0x1
|
|
cmp r5, 0x1F
|
|
ble _08050384
|
|
adds r6, r7, 0
|
|
cmp r6, 0x37
|
|
ble _08050378
|
|
mov r2, r8
|
|
cmp r2, 0
|
|
beq _08050410
|
|
mov r0, r8
|
|
bl DungeonRandomCapped
|
|
lsls r0, 2
|
|
mov r1, sp
|
|
adds r2, r1, r0
|
|
ldrb r1, [r2]
|
|
ldr r0, _0805042C
|
|
add r0, r9
|
|
strh r1, [r0]
|
|
ldrb r1, [r2, 0x1]
|
|
ldr r0, _08050430
|
|
add r0, r9
|
|
strh r1, [r0]
|
|
_08050410:
|
|
ldr r3, _08050434
|
|
add sp, r3
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08050424: .4byte gDungeonGlobalData
|
|
_08050428: .4byte 0x0000065c
|
|
_0805042C: .4byte 0x0000e218
|
|
_08050430: .4byte 0x0000e21a
|
|
_08050434: .4byte 0x00001c04
|
|
thumb_func_end sub_804FF08
|
|
|
|
thumb_func_start sub_8050438
|
|
sub_8050438:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r4, _08050470
|
|
add sp, r4
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
movs r2, 0xE0
|
|
lsls r2, 5
|
|
add r2, sp
|
|
str r1, [r2]
|
|
ldr r1, _08050474
|
|
ldr r1, [r1]
|
|
mov r10, r1
|
|
ldrb r1, [r0, 0x6]
|
|
cmp r1, 0
|
|
ble _08050478
|
|
lsrs r0, r1, 1
|
|
bl sub_808411C
|
|
adds r7, r0, 0
|
|
cmp r7, 0
|
|
bgt _0805047A
|
|
movs r7, 0x1
|
|
b _0805047A
|
|
.align 2, 0
|
|
_08050470: .4byte 0xffffe3f8
|
|
_08050474: .4byte gDungeonGlobalData
|
|
_08050478:
|
|
adds r7, r1, 0
|
|
_0805047A:
|
|
movs r0, 0
|
|
mov r8, r0
|
|
movs r6, 0
|
|
_08050480:
|
|
movs r5, 0
|
|
adds r1, r6, 0x1
|
|
mov r9, r1
|
|
mov r2, r8
|
|
lsls r0, r2, 2
|
|
mov r1, sp
|
|
adds r4, r0, r1
|
|
_0805048E:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
adds r1, r0, 0
|
|
ldrh r3, [r1]
|
|
movs r2, 0x3
|
|
ands r2, r3
|
|
cmp r2, 0x1
|
|
bne _080504F6
|
|
ldrb r0, [r1, 0x9]
|
|
cmp r0, 0xFF
|
|
beq _080504F6
|
|
movs r0, 0x20
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
bne _080504F6
|
|
ldrh r1, [r1, 0x4]
|
|
movs r0, 0x2
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080504F6
|
|
ands r2, r1
|
|
cmp r2, 0
|
|
bne _080504F6
|
|
movs r0, 0x8
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
bne _080504F6
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r0, r2, 0
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
bne _080504F6
|
|
ldr r0, _080506A0
|
|
add r0, r10
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r6, r0
|
|
bne _080504EC
|
|
ldr r0, _080506A4
|
|
add r0, r10
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r5, r0
|
|
beq _080504F6
|
|
_080504EC:
|
|
strb r6, [r4]
|
|
strb r5, [r4, 0x1]
|
|
adds r4, 0x4
|
|
movs r0, 0x1
|
|
add r8, r0
|
|
_080504F6:
|
|
adds r5, 0x1
|
|
cmp r5, 0x1F
|
|
ble _0805048E
|
|
mov r6, r9
|
|
cmp r6, 0x37
|
|
ble _08050480
|
|
mov r1, r8
|
|
cmp r1, 0
|
|
beq _0805055E
|
|
ldr r0, _080506A8
|
|
ldr r0, [r0]
|
|
movs r2, 0xD1
|
|
lsls r2, 3
|
|
adds r0, r2
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r0, 0
|
|
beq _0805051C
|
|
adds r7, 0x1
|
|
_0805051C:
|
|
cmp r7, 0
|
|
beq _0805055E
|
|
mov r0, sp
|
|
mov r1, r8
|
|
bl sub_804FED0
|
|
mov r0, r8
|
|
bl DungeonRandomCapped
|
|
adds r5, r0, 0
|
|
cmp r7, 0
|
|
ble _0805055E
|
|
adds r6, r7, 0
|
|
lsls r0, r5, 2
|
|
mov r2, sp
|
|
adds r4, r0, r2
|
|
_0805053C:
|
|
ldrb r0, [r4]
|
|
ldrb r1, [r4, 0x1]
|
|
bl GetMapEntity
|
|
ldrh r2, [r0, 0x4]
|
|
movs r1, 0x8
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
adds r4, 0x4
|
|
adds r5, 0x1
|
|
cmp r5, r8
|
|
bne _08050558
|
|
mov r4, sp
|
|
movs r5, 0
|
|
_08050558:
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bne _0805053C
|
|
_0805055E:
|
|
ldr r0, _080506AC
|
|
add r0, r10
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0805056A
|
|
b _0805068C
|
|
_0805056A:
|
|
ldr r0, _080506B0
|
|
movs r2, 0
|
|
ldrsh r1, [r0, r2]
|
|
ldr r2, _080506B4
|
|
add r2, sp
|
|
str r1, [r2]
|
|
movs r0, 0
|
|
mov r8, r0
|
|
movs r1, 0xE0
|
|
lsls r1, 5
|
|
add r1, sp
|
|
ldr r1, [r1]
|
|
cmp r1, 0
|
|
beq _0805058A
|
|
movs r0, 0x3
|
|
str r0, [r2]
|
|
_0805058A:
|
|
ldr r1, _080506B4
|
|
add r1, sp
|
|
ldr r1, [r1]
|
|
lsls r0, r1, 1
|
|
adds r0, r1
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
ldr r1, _080506B4
|
|
add r1, sp
|
|
str r0, [r1]
|
|
movs r6, 0
|
|
_080505A2:
|
|
movs r5, 0
|
|
adds r2, r6, 0x1
|
|
mov r9, r2
|
|
mov r1, r8
|
|
lsls r0, r1, 2
|
|
mov r2, sp
|
|
adds r4, r0, r2
|
|
_080505B0:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
adds r1, r0, 0
|
|
ldrh r2, [r1]
|
|
movs r0, 0x3
|
|
ands r0, r2
|
|
cmp r0, 0x1
|
|
bne _08050608
|
|
ldrb r0, [r1, 0x9]
|
|
cmp r0, 0xFF
|
|
beq _08050608
|
|
movs r0, 0x20
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _08050608
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
adds r0, r1, 0
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
bne _08050608
|
|
movs r0, 0x40
|
|
ands r0, r2
|
|
cmp r0, 0
|
|
beq _08050608
|
|
ldr r0, _080506A0
|
|
add r0, r10
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r6, r0
|
|
bne _080505FE
|
|
ldr r0, _080506A4
|
|
add r0, r10
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r5, r0
|
|
beq _08050608
|
|
_080505FE:
|
|
strb r6, [r4]
|
|
strb r5, [r4, 0x1]
|
|
adds r4, 0x4
|
|
movs r2, 0x1
|
|
add r8, r2
|
|
_08050608:
|
|
adds r5, 0x1
|
|
cmp r5, 0x1F
|
|
ble _080505B0
|
|
mov r6, r9
|
|
cmp r6, 0x37
|
|
ble _080505A2
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
beq _0805068C
|
|
lsls r4, r0, 3
|
|
subs r0, r4, r0
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
adds r5, r0, 0
|
|
adds r0, r4, 0
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
adds r1, r0, 0
|
|
adds r0, r5, 0
|
|
bl sub_808411C
|
|
adds r7, r0, 0
|
|
cmp r7, 0
|
|
bne _0805063E
|
|
movs r7, 0x1
|
|
_0805063E:
|
|
ldr r1, _080506B4
|
|
add r1, sp
|
|
ldr r1, [r1]
|
|
cmp r7, r1
|
|
blt _0805064E
|
|
ldr r2, _080506B4
|
|
add r2, sp
|
|
ldr r7, [r2]
|
|
_0805064E:
|
|
mov r0, sp
|
|
mov r1, r8
|
|
bl sub_804FED0
|
|
mov r0, r8
|
|
bl DungeonRandomCapped
|
|
adds r5, r0, 0
|
|
cmp r7, 0
|
|
ble _0805068C
|
|
adds r6, r7, 0
|
|
lsls r0, r5, 2
|
|
mov r1, sp
|
|
adds r4, r0, r1
|
|
_0805066A:
|
|
ldrb r0, [r4]
|
|
ldrb r1, [r4, 0x1]
|
|
bl GetMapEntity
|
|
ldrh r2, [r0, 0x4]
|
|
movs r1, 0x8
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
adds r4, 0x4
|
|
adds r5, 0x1
|
|
cmp r5, r8
|
|
bne _08050686
|
|
mov r4, sp
|
|
movs r5, 0
|
|
_08050686:
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bne _0805066A
|
|
_0805068C:
|
|
ldr r3, _080506B8
|
|
add sp, r3
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080506A0: .4byte 0x0000e218
|
|
_080506A4: .4byte 0x0000e21a
|
|
_080506A8: .4byte gDungeonGlobalData
|
|
_080506AC: .4byte 0x00003a08
|
|
_080506B0: .4byte gUnknown_80F4DA4
|
|
_080506B4: .4byte 0x00001c04
|
|
_080506B8: .4byte 0x00001c08
|
|
thumb_func_end sub_8050438
|
|
|
|
thumb_func_start sub_80506BC
|
|
sub_80506BC:
|
|
push {lr}
|
|
adds r3, r0, 0
|
|
movs r2, 0x1
|
|
ldrh r1, [r3]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080506CE
|
|
movs r2, 0
|
|
_080506CE:
|
|
movs r0, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _080506D8
|
|
movs r2, 0
|
|
_080506D8:
|
|
cmp r2, 0
|
|
beq _080506E6
|
|
ldr r0, _080506EC
|
|
ands r0, r1
|
|
movs r1, 0x2
|
|
orrs r0, r1
|
|
strh r0, [r3]
|
|
_080506E6:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080506EC: .4byte 0x0000fffc
|
|
thumb_func_end sub_80506BC
|
|
|
|
thumb_func_start sub_80506F0
|
|
sub_80506F0:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0xA4
|
|
str r1, [sp, 0x64]
|
|
ldrb r1, [r1, 0xD]
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
bne _08050708
|
|
b _08050C20
|
|
_08050708:
|
|
ldr r4, _08050738
|
|
movs r0, 0x8
|
|
bl DungeonRandomCapped
|
|
lsls r0, 2
|
|
adds r0, r4
|
|
ldr r4, [r0]
|
|
cmp r4, 0
|
|
bne _0805071C
|
|
b _08050A7C
|
|
_0805071C:
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
cmp r0, 0x31
|
|
bgt _0805073C
|
|
movs r0, 0x1
|
|
str r0, [sp, 0x74]
|
|
movs r1, 0x1F
|
|
mov r10, r1
|
|
movs r2, 0x1
|
|
negs r2, r2
|
|
str r2, [sp, 0x70]
|
|
b _08050746
|
|
.align 2, 0
|
|
_08050738: .4byte gUnknown_80F6DF8
|
|
_0805073C:
|
|
movs r0, 0
|
|
str r0, [sp, 0x74]
|
|
mov r10, r0
|
|
movs r1, 0x1
|
|
str r1, [sp, 0x70]
|
|
_08050746:
|
|
movs r0, 0x32
|
|
bl DungeonRandomCapped
|
|
adds r0, 0xA
|
|
str r0, [sp, 0x78]
|
|
movs r0, 0x2
|
|
movs r1, 0x36
|
|
bl sub_808411C
|
|
mov r9, r0
|
|
movs r2, 0
|
|
str r2, [sp, 0x6C]
|
|
subs r4, 0x1
|
|
str r4, [sp, 0x98]
|
|
_08050762:
|
|
movs r0, 0x6
|
|
bl DungeonRandomCapped
|
|
adds r0, 0x2
|
|
str r0, [sp, 0x68]
|
|
cmp r0, 0
|
|
bne _08050772
|
|
b _08050A38
|
|
_08050772:
|
|
mov r0, r9
|
|
cmp r0, 0x37
|
|
bhi _080507B8
|
|
mov r1, r10
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
bne _0805078A
|
|
b _08050A74
|
|
_0805078A:
|
|
mov r1, r9
|
|
cmp r1, 0
|
|
blt _080507A2
|
|
mov r2, r10
|
|
cmp r2, 0
|
|
blt _080507A2
|
|
mov r0, r9
|
|
cmp r0, 0x37
|
|
bgt _080507A2
|
|
mov r1, r10
|
|
cmp r1, 0x1F
|
|
ble _080507A6
|
|
_080507A2:
|
|
movs r0, 0x1
|
|
b _080507A8
|
|
_080507A6:
|
|
movs r0, 0
|
|
_080507A8:
|
|
cmp r0, 0
|
|
bne _080507B8
|
|
mov r0, r9
|
|
mov r1, r10
|
|
bl GetMapEntity
|
|
bl sub_80506BC
|
|
_080507B8:
|
|
ldr r2, [sp, 0x68]
|
|
subs r2, 0x1
|
|
str r2, [sp, 0x68]
|
|
ldr r0, [sp, 0x6C]
|
|
add r9, r0
|
|
ldr r1, [sp, 0x70]
|
|
add r10, r1
|
|
mov r2, r10
|
|
cmp r2, 0x1F
|
|
bls _080507CE
|
|
b _08050A38
|
|
_080507CE:
|
|
ldr r0, [sp, 0x78]
|
|
subs r0, 0x1
|
|
str r0, [sp, 0x78]
|
|
cmp r0, 0
|
|
beq _080507DA
|
|
b _08050A30
|
|
_080507DA:
|
|
movs r1, 0x3F
|
|
str r1, [sp, 0x7C]
|
|
_080507DE:
|
|
movs r0, 0x7
|
|
bl DungeonRandomCapped
|
|
subs r0, 0x3
|
|
str r0, [sp, 0x84]
|
|
movs r0, 0x7
|
|
bl DungeonRandomCapped
|
|
subs r1, r0, 0x3
|
|
ldr r6, [sp, 0x84]
|
|
add r6, r9
|
|
subs r0, r6, 0x2
|
|
cmp r0, 0x33
|
|
bhi _080508DA
|
|
mov r2, r10
|
|
adds r5, r1, r2
|
|
cmp r5, 0x1
|
|
ble _080508DA
|
|
cmp r5, 0x1D
|
|
bgt _080508DA
|
|
adds r4, r6, 0x1
|
|
adds r0, r5, 0x1
|
|
mov r8, r0
|
|
adds r0, r4, 0
|
|
mov r1, r8
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r2, 0x3
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
beq _080508B2
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
str r2, [sp, 0x9C]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0x9C]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
beq _080508B2
|
|
subs r7, r5, 0x1
|
|
adds r0, r4, 0
|
|
adds r1, r7, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0x9C]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
beq _080508B2
|
|
adds r0, r6, 0
|
|
mov r1, r8
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0x9C]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
beq _080508B2
|
|
adds r0, r6, 0
|
|
adds r1, r7, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0x9C]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
beq _080508B2
|
|
subs r4, r6, 0x1
|
|
adds r0, r4, 0
|
|
mov r1, r8
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0x9C]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
beq _080508B2
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0x9C]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
beq _080508B2
|
|
adds r0, r4, 0
|
|
adds r1, r7, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0x9C]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
bne _080508DA
|
|
_080508B2:
|
|
ldr r0, [sp, 0x84]
|
|
add r0, r9
|
|
cmp r0, 0
|
|
blt _080508C6
|
|
cmp r5, 0
|
|
blt _080508C6
|
|
cmp r0, 0x37
|
|
bgt _080508C6
|
|
cmp r5, 0x1F
|
|
ble _080508CA
|
|
_080508C6:
|
|
movs r1, 0x1
|
|
b _080508CC
|
|
_080508CA:
|
|
movs r1, 0
|
|
_080508CC:
|
|
cmp r1, 0
|
|
bne _080508DA
|
|
adds r1, r5, 0
|
|
bl GetMapEntity
|
|
bl sub_80506BC
|
|
_080508DA:
|
|
ldr r1, [sp, 0x7C]
|
|
subs r1, 0x1
|
|
str r1, [sp, 0x7C]
|
|
cmp r1, 0
|
|
blt _080508E6
|
|
b _080507DE
|
|
_080508E6:
|
|
movs r0, 0x3
|
|
negs r0, r0
|
|
_080508EA:
|
|
movs r2, 0x3
|
|
negs r2, r2
|
|
str r2, [sp, 0x80]
|
|
mov r1, r9
|
|
adds r1, r0, r1
|
|
str r1, [sp, 0x90]
|
|
adds r0, 0x1
|
|
str r0, [sp, 0x8C]
|
|
adds r7, r1, 0
|
|
mov r5, r10
|
|
subs r5, 0x3
|
|
_08050900:
|
|
movs r6, 0
|
|
subs r0, r7, 0x2
|
|
cmp r0, 0x33
|
|
bls _0805090A
|
|
b _08050A1A
|
|
_0805090A:
|
|
str r5, [sp, 0x88]
|
|
str r5, [sp, 0x94]
|
|
cmp r5, 0x1
|
|
bgt _08050914
|
|
b _08050A1A
|
|
_08050914:
|
|
cmp r5, 0x1D
|
|
ble _0805091A
|
|
b _08050A1A
|
|
_0805091A:
|
|
adds r4, r7, 0x1
|
|
adds r3, r5, 0x1
|
|
adds r0, r4, 0
|
|
adds r1, r3, 0
|
|
str r3, [sp, 0xA0]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
movs r2, 0x3
|
|
mov r8, r2
|
|
mov r0, r8
|
|
ands r0, r1
|
|
ldr r3, [sp, 0xA0]
|
|
cmp r0, 0x2
|
|
bne _0805093A
|
|
movs r6, 0x1
|
|
_0805093A:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
str r3, [sp, 0xA0]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
ldr r3, [sp, 0xA0]
|
|
cmp r0, 0x2
|
|
bne _08050952
|
|
adds r6, 0x1
|
|
_08050952:
|
|
subs r2, r5, 0x1
|
|
adds r0, r4, 0
|
|
adds r1, r2, 0
|
|
str r2, [sp, 0x9C]
|
|
str r3, [sp, 0xA0]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
ldr r2, [sp, 0x9C]
|
|
ldr r3, [sp, 0xA0]
|
|
cmp r0, 0x2
|
|
bne _08050970
|
|
adds r6, 0x1
|
|
_08050970:
|
|
adds r0, r7, 0
|
|
adds r1, r3, 0
|
|
str r2, [sp, 0x9C]
|
|
str r3, [sp, 0xA0]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
ldr r2, [sp, 0x9C]
|
|
ldr r3, [sp, 0xA0]
|
|
cmp r0, 0x2
|
|
bne _0805098C
|
|
adds r6, 0x1
|
|
_0805098C:
|
|
adds r0, r7, 0
|
|
adds r1, r2, 0
|
|
str r2, [sp, 0x9C]
|
|
str r3, [sp, 0xA0]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
ldr r2, [sp, 0x9C]
|
|
ldr r3, [sp, 0xA0]
|
|
cmp r0, 0x2
|
|
bne _080509A8
|
|
adds r6, 0x1
|
|
_080509A8:
|
|
subs r4, r7, 0x1
|
|
adds r0, r4, 0
|
|
adds r1, r3, 0
|
|
str r2, [sp, 0x9C]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
ldr r2, [sp, 0x9C]
|
|
cmp r0, 0x2
|
|
bne _080509C2
|
|
adds r6, 0x1
|
|
_080509C2:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
str r2, [sp, 0x9C]
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
ldr r2, [sp, 0x9C]
|
|
cmp r0, 0x2
|
|
bne _080509DA
|
|
adds r6, 0x1
|
|
_080509DA:
|
|
adds r0, r4, 0
|
|
adds r1, r2, 0
|
|
bl GetMapTileAtPosition
|
|
ldrh r1, [r0]
|
|
mov r0, r8
|
|
ands r0, r1
|
|
cmp r0, 0x2
|
|
bne _080509EE
|
|
adds r6, 0x1
|
|
_080509EE:
|
|
cmp r6, 0x3
|
|
ble _08050A1A
|
|
cmp r7, 0
|
|
blt _08050A04
|
|
cmp r5, 0
|
|
blt _08050A04
|
|
cmp r7, 0x37
|
|
bgt _08050A04
|
|
ldr r0, [sp, 0x88]
|
|
cmp r0, 0x1F
|
|
ble _08050A08
|
|
_08050A04:
|
|
movs r0, 0x1
|
|
b _08050A0A
|
|
_08050A08:
|
|
movs r0, 0
|
|
_08050A0A:
|
|
cmp r0, 0
|
|
bne _08050A1A
|
|
ldr r0, [sp, 0x90]
|
|
ldr r1, [sp, 0x94]
|
|
bl GetMapEntity
|
|
bl sub_80506BC
|
|
_08050A1A:
|
|
adds r5, 0x1
|
|
ldr r1, [sp, 0x80]
|
|
adds r1, 0x1
|
|
str r1, [sp, 0x80]
|
|
cmp r1, 0x3
|
|
bgt _08050A28
|
|
b _08050900
|
|
_08050A28:
|
|
ldr r0, [sp, 0x8C]
|
|
cmp r0, 0x3
|
|
bgt _08050A30
|
|
b _080508EA
|
|
_08050A30:
|
|
ldr r2, [sp, 0x68]
|
|
cmp r2, 0
|
|
beq _08050A38
|
|
b _08050772
|
|
_08050A38:
|
|
ldr r0, [sp, 0x6C]
|
|
cmp r0, 0
|
|
beq _08050A54
|
|
movs r1, 0x1
|
|
str r1, [sp, 0x70]
|
|
ldr r2, [sp, 0x74]
|
|
cmp r2, 0
|
|
beq _08050A4E
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r0, [sp, 0x70]
|
|
_08050A4E:
|
|
movs r1, 0
|
|
str r1, [sp, 0x6C]
|
|
b _08050A6C
|
|
_08050A54:
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
movs r2, 0x1
|
|
str r2, [sp, 0x6C]
|
|
cmp r0, 0x31
|
|
bgt _08050A68
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
str r0, [sp, 0x6C]
|
|
_08050A68:
|
|
movs r1, 0
|
|
str r1, [sp, 0x70]
|
|
_08050A6C:
|
|
mov r2, r10
|
|
cmp r2, 0x1F
|
|
bhi _08050A74
|
|
b _08050762
|
|
_08050A74:
|
|
ldr r4, [sp, 0x98]
|
|
cmp r4, 0
|
|
beq _08050A7C
|
|
b _0805071C
|
|
_08050A7C:
|
|
movs r0, 0
|
|
ldr r1, [sp, 0x64]
|
|
ldrb r1, [r1, 0x15]
|
|
cmp r0, r1
|
|
blt _08050A88
|
|
b _08050BAE
|
|
_08050A88:
|
|
movs r2, 0
|
|
mov r8, r2
|
|
mov r9, r2
|
|
movs r5, 0
|
|
adds r0, 0x1
|
|
mov r10, r0
|
|
b _08050A98
|
|
_08050A96:
|
|
adds r5, 0x1
|
|
_08050A98:
|
|
cmp r5, 0xC7
|
|
bgt _08050AC2
|
|
movs r0, 0
|
|
movs r1, 0x38
|
|
bl sub_808411C
|
|
mov r9, r0
|
|
movs r0, 0
|
|
movs r1, 0x20
|
|
bl sub_808411C
|
|
mov r8, r0
|
|
mov r0, r9
|
|
subs r0, 0x1
|
|
cmp r0, 0x35
|
|
bhi _08050A96
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
ble _08050A96
|
|
cmp r0, 0x1E
|
|
bgt _08050A96
|
|
_08050AC2:
|
|
cmp r5, 0xC8
|
|
beq _08050BA2
|
|
movs r7, 0
|
|
movs r3, 0x1
|
|
movs r1, 0
|
|
_08050ACC:
|
|
movs r2, 0
|
|
lsls r0, r7, 2
|
|
adds r4, r7, 0x1
|
|
adds r0, r7
|
|
lsls r0, 1
|
|
add r0, sp
|
|
_08050AD8:
|
|
cmp r7, 0
|
|
beq _08050AE8
|
|
cmp r7, 0x9
|
|
beq _08050AE8
|
|
cmp r2, 0
|
|
beq _08050AE8
|
|
cmp r2, 0x9
|
|
bne _08050AEC
|
|
_08050AE8:
|
|
strb r3, [r0]
|
|
b _08050AEE
|
|
_08050AEC:
|
|
strb r1, [r0]
|
|
_08050AEE:
|
|
adds r0, 0x1
|
|
adds r2, 0x1
|
|
cmp r2, 0x9
|
|
ble _08050AD8
|
|
adds r7, r4, 0
|
|
cmp r7, 0x9
|
|
ble _08050ACC
|
|
movs r5, 0x4F
|
|
_08050AFE:
|
|
movs r0, 0x8
|
|
bl DungeonRandomCapped
|
|
adds r4, r0, 0
|
|
adds r7, r4, 0x1
|
|
movs r0, 0x8
|
|
bl DungeonRandomCapped
|
|
adds r2, r0, 0x1
|
|
lsls r0, r4, 2
|
|
adds r0, r4
|
|
lsls r0, 1
|
|
adds r0, r2, r0
|
|
add r0, sp
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08050B50
|
|
adds r1, r7, 0x1
|
|
lsls r0, r1, 2
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
adds r0, r2, r0
|
|
add r0, sp
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08050B50
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r1, r0, 1
|
|
subs r0, r1, 0x1
|
|
adds r0, r2, r0
|
|
add r0, sp
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _08050B50
|
|
adds r0, r1, 0x1
|
|
adds r0, r2, r0
|
|
add r0, sp
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08050B60
|
|
_08050B50:
|
|
lsls r0, r7, 2
|
|
adds r0, r7
|
|
lsls r0, 1
|
|
adds r0, r2, r0
|
|
mov r2, sp
|
|
adds r1, r2, r0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_08050B60:
|
|
subs r5, 0x1
|
|
cmp r5, 0
|
|
bge _08050AFE
|
|
movs r7, 0
|
|
_08050B68:
|
|
lsls r0, r7, 2
|
|
adds r4, r7, 0x1
|
|
adds r0, r7
|
|
lsls r0, 1
|
|
mov r6, r8
|
|
subs r6, 0x5
|
|
mov r1, sp
|
|
adds r5, r0, r1
|
|
add r7, r9
|
|
movs r2, 0x9
|
|
_08050B7C:
|
|
ldrb r0, [r5]
|
|
cmp r0, 0
|
|
bne _08050B92
|
|
subs r0, r7, 0x5
|
|
adds r1, r6, 0
|
|
str r2, [sp, 0x9C]
|
|
bl GetMapEntity
|
|
bl sub_80506BC
|
|
ldr r2, [sp, 0x9C]
|
|
_08050B92:
|
|
adds r6, 0x1
|
|
adds r5, 0x1
|
|
subs r2, 0x1
|
|
cmp r2, 0
|
|
bge _08050B7C
|
|
adds r7, r4, 0
|
|
cmp r7, 0x9
|
|
ble _08050B68
|
|
_08050BA2:
|
|
mov r0, r10
|
|
ldr r2, [sp, 0x64]
|
|
ldrb r2, [r2, 0x15]
|
|
cmp r0, r2
|
|
bge _08050BAE
|
|
b _08050A88
|
|
_08050BAE:
|
|
movs r0, 0
|
|
mov r9, r0
|
|
movs r6, 0x1
|
|
ldr r1, _08050BF4
|
|
adds r5, r1, 0
|
|
_08050BB8:
|
|
movs r2, 0
|
|
mov r10, r2
|
|
mov r4, r9
|
|
adds r4, 0x1
|
|
_08050BC0:
|
|
mov r0, r9
|
|
mov r1, r10
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrh r3, [r2]
|
|
movs r0, 0x3
|
|
ands r0, r3
|
|
cmp r0, 0x2
|
|
bne _08050C10
|
|
movs r1, 0xB0
|
|
lsls r1, 1
|
|
adds r0, r1, 0
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
bne _08050BEA
|
|
ldrh r1, [r2, 0x4]
|
|
adds r0, r6, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08050BF8
|
|
_08050BEA:
|
|
adds r0, r3, 0
|
|
ands r0, r5
|
|
orrs r0, r6
|
|
b _08050C0E
|
|
.align 2, 0
|
|
_08050BF4: .4byte 0x0000fffc
|
|
_08050BF8:
|
|
mov r0, r9
|
|
subs r0, 0x2
|
|
cmp r0, 0x34
|
|
bhi _08050C0A
|
|
mov r0, r10
|
|
cmp r0, 0x1
|
|
ble _08050C0A
|
|
cmp r0, 0x1E
|
|
ble _08050C10
|
|
_08050C0A:
|
|
ldrh r0, [r2]
|
|
ands r0, r5
|
|
_08050C0E:
|
|
strh r0, [r2]
|
|
_08050C10:
|
|
movs r1, 0x1
|
|
add r10, r1
|
|
mov r2, r10
|
|
cmp r2, 0x1F
|
|
ble _08050BC0
|
|
mov r9, r4
|
|
cmp r4, 0x37
|
|
ble _08050BB8
|
|
_08050C20:
|
|
add sp, 0xA4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80506F0
|
|
|
|
thumb_func_start sub_8050C30
|
|
sub_8050C30:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r4, _08050F3C
|
|
add sp, r4
|
|
mov r8, r0
|
|
mov r9, r1
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
movs r0, 0xE0
|
|
lsls r0, 3
|
|
add r0, sp
|
|
str r2, [r0]
|
|
movs r7, 0
|
|
mov r1, r8
|
|
lsls r1, 5
|
|
movs r2, 0xE2
|
|
lsls r2, 3
|
|
add r2, sp
|
|
str r1, [r2]
|
|
_08050C5C:
|
|
movs r6, 0
|
|
lsls r2, r7, 5
|
|
adds r3, r7, 0x1
|
|
mov r10, r3
|
|
mov r5, sp
|
|
adds r4, r2, r5
|
|
_08050C68:
|
|
adds r0, r7, 0
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrh r0, [r2]
|
|
movs r3, 0x3
|
|
ands r3, r0
|
|
movs r0, 0
|
|
strb r0, [r4]
|
|
movs r0, 0xE0
|
|
lsls r0, 3
|
|
add r0, sp
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
beq _08050C92
|
|
ldrh r0, [r2]
|
|
ldr r5, _08050F40
|
|
adds r1, r5, 0
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
_08050C92:
|
|
cmp r3, 0x1
|
|
beq _08050CA8
|
|
ldrh r1, [r2]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050CA8
|
|
ldrb r0, [r4]
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strb r0, [r4]
|
|
_08050CA8:
|
|
cmp r3, 0x2
|
|
bne _08050CBE
|
|
ldrh r1, [r2]
|
|
movs r0, 0x4
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050CBE
|
|
ldrb r0, [r4]
|
|
movs r1, 0x2
|
|
orrs r0, r1
|
|
strb r0, [r4]
|
|
_08050CBE:
|
|
adds r4, 0x1
|
|
adds r6, 0x1
|
|
cmp r6, 0x1F
|
|
ble _08050C68
|
|
mov r7, r10
|
|
cmp r7, 0x37
|
|
ble _08050C5C
|
|
movs r1, 0xE2
|
|
lsls r1, 3
|
|
add r1, sp
|
|
ldr r0, [r1]
|
|
add r0, r9
|
|
mov r3, sp
|
|
adds r2, r3, r0
|
|
ldrb r1, [r2]
|
|
movs r0, 0x50
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
ldr r0, _08050F44
|
|
ldr r1, [r0]
|
|
ldr r5, _08050F48
|
|
adds r0, r1, r5
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, r8
|
|
beq _08050CF4
|
|
b _08050F36
|
|
_08050CF4:
|
|
ldr r3, _08050F4C
|
|
adds r0, r1, r3
|
|
movs r5, 0
|
|
ldrsh r0, [r0, r5]
|
|
cmp r0, r9
|
|
beq _08050D02
|
|
b _08050F36
|
|
_08050D02:
|
|
ldr r1, _08050F50
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
movs r0, 0x40
|
|
mov r9, r0
|
|
_08050D0C:
|
|
movs r1, 0
|
|
ldr r2, _08050F54
|
|
add r2, sp
|
|
str r1, [r2]
|
|
ldr r3, _08050F50
|
|
ldr r0, [r3]
|
|
adds r0, 0x1
|
|
str r0, [r3]
|
|
movs r7, 0
|
|
_08050D1E:
|
|
movs r6, 0
|
|
lsls r2, r7, 5
|
|
adds r5, r7, 0x1
|
|
mov r10, r5
|
|
subs r0, r7, 0x1
|
|
movs r1, 0xE1
|
|
lsls r1, 3
|
|
add r1, sp
|
|
str r0, [r1]
|
|
lsls r0, 5
|
|
mov r1, sp
|
|
subs r1, 0x1
|
|
adds r5, r2, r1
|
|
add r0, sp
|
|
mov r8, r0
|
|
mov r2, r10
|
|
ldr r3, _08050F58
|
|
add r3, sp
|
|
str r2, [r3]
|
|
lsls r0, r2, 5
|
|
add r0, sp
|
|
mov r12, r0
|
|
_08050D4A:
|
|
ldrb r1, [r5, 0x1]
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08050D56
|
|
b _08050EDA
|
|
_08050D56:
|
|
movs r3, 0x40
|
|
mov r0, r9
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050D62
|
|
b _08050EDA
|
|
_08050D62:
|
|
ldr r2, _08050F54
|
|
add r2, sp
|
|
ldr r0, [r2]
|
|
adds r0, 0x1
|
|
str r0, [r2]
|
|
movs r0, 0xBF
|
|
ands r0, r1
|
|
movs r2, 0
|
|
movs r1, 0x80
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x1]
|
|
cmp r7, 0
|
|
ble _08050D90
|
|
mov r0, r8
|
|
ldrb r1, [r0]
|
|
movs r0, 0x83
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050D90
|
|
adds r0, r1, 0
|
|
orrs r0, r3
|
|
mov r1, r8
|
|
strb r0, [r1]
|
|
_08050D90:
|
|
cmp r6, 0
|
|
ble _08050DA4
|
|
ldrb r1, [r5]
|
|
movs r0, 0x83
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050DA4
|
|
mov r0, r9
|
|
orrs r0, r1
|
|
strb r0, [r5]
|
|
_08050DA4:
|
|
cmp r7, 0x36
|
|
bgt _08050DBA
|
|
mov r2, r12
|
|
ldrb r1, [r2]
|
|
movs r0, 0x83
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050DBA
|
|
mov r0, r9
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_08050DBA:
|
|
cmp r6, 0x1E
|
|
bgt _08050DCE
|
|
ldrb r1, [r5, 0x2]
|
|
movs r0, 0x83
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050DCE
|
|
mov r0, r9
|
|
orrs r0, r1
|
|
strb r0, [r5, 0x2]
|
|
_08050DCE:
|
|
cmp r7, 0
|
|
ble _08050E12
|
|
cmp r6, 0
|
|
ble _08050E12
|
|
movs r3, 0xE1
|
|
lsls r3, 3
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
lsls r1, r3, 5
|
|
subs r0, r1, 0x1
|
|
adds r0, r6, r0
|
|
mov r2, sp
|
|
adds r4, r2, r0
|
|
ldrb r3, [r4]
|
|
movs r0, 0x87
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
bne _08050E12
|
|
adds r0, r6, r1
|
|
add r0, sp
|
|
ldrb r1, [r0]
|
|
movs r2, 0x1
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050E12
|
|
ldrb r1, [r5]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050E12
|
|
mov r0, r9
|
|
orrs r0, r3
|
|
strb r0, [r4]
|
|
_08050E12:
|
|
cmp r7, 0x36
|
|
bgt _08050E54
|
|
cmp r6, 0
|
|
ble _08050E54
|
|
ldr r3, _08050F58
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
lsls r1, r3, 5
|
|
subs r0, r1, 0x1
|
|
adds r0, r6, r0
|
|
mov r2, sp
|
|
adds r4, r2, r0
|
|
ldrb r3, [r4]
|
|
movs r0, 0x87
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
bne _08050E54
|
|
adds r0, r6, r1
|
|
add r0, sp
|
|
ldrb r1, [r0]
|
|
movs r2, 0x1
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050E54
|
|
ldrb r1, [r5]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050E54
|
|
mov r0, r9
|
|
orrs r0, r3
|
|
strb r0, [r4]
|
|
_08050E54:
|
|
cmp r7, 0
|
|
ble _08050E98
|
|
cmp r6, 0x1E
|
|
bgt _08050E98
|
|
movs r3, 0xE1
|
|
lsls r3, 3
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
lsls r1, r3, 5
|
|
adds r0, r1, 0x1
|
|
adds r0, r6, r0
|
|
mov r2, sp
|
|
adds r4, r2, r0
|
|
ldrb r3, [r4]
|
|
movs r0, 0x87
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
bne _08050E98
|
|
adds r0, r6, r1
|
|
add r0, sp
|
|
ldrb r1, [r0]
|
|
movs r2, 0x1
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050E98
|
|
ldrb r1, [r5, 0x2]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050E98
|
|
mov r0, r9
|
|
orrs r0, r3
|
|
strb r0, [r4]
|
|
_08050E98:
|
|
cmp r7, 0x36
|
|
bgt _08050EDA
|
|
cmp r6, 0x1E
|
|
bgt _08050EDA
|
|
ldr r3, _08050F58
|
|
add r3, sp
|
|
ldr r3, [r3]
|
|
lsls r1, r3, 5
|
|
adds r0, r1, 0x1
|
|
adds r0, r6, r0
|
|
mov r2, sp
|
|
adds r4, r2, r0
|
|
ldrb r3, [r4]
|
|
movs r0, 0x87
|
|
ands r0, r3
|
|
cmp r0, 0
|
|
bne _08050EDA
|
|
adds r0, r6, r1
|
|
add r0, sp
|
|
ldrb r1, [r0]
|
|
movs r2, 0x1
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050EDA
|
|
ldrb r1, [r5, 0x2]
|
|
adds r0, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050EDA
|
|
mov r0, r9
|
|
orrs r0, r3
|
|
strb r0, [r4]
|
|
_08050EDA:
|
|
adds r5, 0x1
|
|
movs r3, 0x1
|
|
add r8, r3
|
|
add r12, r3
|
|
adds r6, 0x1
|
|
cmp r6, 0x1F
|
|
bgt _08050EEA
|
|
b _08050D4A
|
|
_08050EEA:
|
|
mov r7, r10
|
|
cmp r7, 0x37
|
|
bgt _08050EF2
|
|
b _08050D1E
|
|
_08050EF2:
|
|
ldr r5, _08050F54
|
|
add r5, sp
|
|
ldr r5, [r5]
|
|
cmp r5, 0
|
|
beq _08050EFE
|
|
b _08050D0C
|
|
_08050EFE:
|
|
movs r7, 0
|
|
_08050F00:
|
|
movs r6, 0
|
|
lsls r2, r7, 5
|
|
mov r0, sp
|
|
adds r4, r2, r0
|
|
_08050F08:
|
|
adds r0, r7, 0
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrb r1, [r4]
|
|
movs r0, 0x87
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050F68
|
|
movs r1, 0xE0
|
|
lsls r1, 3
|
|
add r1, sp
|
|
ldr r1, [r1]
|
|
cmp r1, 0
|
|
bne _08050F5C
|
|
ldrh r0, [r2]
|
|
movs r2, 0x80
|
|
lsls r2, 1
|
|
adds r1, r2, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08050F68
|
|
_08050F36:
|
|
movs r0, 0
|
|
b _08050F78
|
|
.align 2, 0
|
|
_08050F3C: .4byte 0xfffff8ec
|
|
_08050F40: .4byte 0x00007fff
|
|
_08050F44: .4byte gDungeonGlobalData
|
|
_08050F48: .4byte 0x0000e21c
|
|
_08050F4C: .4byte 0x0000e21e
|
|
_08050F50: .4byte gUnknown_202F1D4
|
|
_08050F54: .4byte 0x00000704
|
|
_08050F58: .4byte 0x0000070c
|
|
_08050F5C:
|
|
ldrh r1, [r2]
|
|
movs r3, 0x80
|
|
lsls r3, 8
|
|
adds r0, r3, 0
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
_08050F68:
|
|
adds r4, 0x1
|
|
adds r6, 0x1
|
|
cmp r6, 0x1F
|
|
ble _08050F08
|
|
adds r7, 0x1
|
|
cmp r7, 0x37
|
|
ble _08050F00
|
|
movs r0, 0x1
|
|
_08050F78:
|
|
ldr r3, _08050F8C
|
|
add sp, r3
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08050F8C: .4byte 0x00000714
|
|
thumb_func_end sub_8050C30
|
|
|
|
thumb_func_start sub_8050F90
|
|
sub_8050F90:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x3C
|
|
str r0, [sp]
|
|
str r1, [sp, 0x4]
|
|
str r2, [sp, 0x8]
|
|
str r3, [sp, 0xC]
|
|
movs r0, 0
|
|
str r0, [sp, 0x10]
|
|
movs r1, 0
|
|
str r1, [sp, 0x14]
|
|
movs r2, 0
|
|
b _080511D0
|
|
_08050FB0:
|
|
movs r4, 0
|
|
str r4, [sp, 0x18]
|
|
ldr r5, [sp, 0x1C]
|
|
adds r5, 0x1
|
|
str r5, [sp, 0x28]
|
|
ldr r6, [sp, 0x4]
|
|
cmp r4, r6
|
|
blt _08050FC2
|
|
b _080511CE
|
|
_08050FC2:
|
|
ldr r1, [sp, 0x18]
|
|
lsls r0, r1, 2
|
|
ldr r2, [sp, 0xC]
|
|
adds r0, r2
|
|
ldr r3, [r0]
|
|
adds r4, r3, 0x2
|
|
mov r9, r4
|
|
ldr r5, [sp, 0x1C]
|
|
lsls r1, r5, 2
|
|
ldr r6, [sp, 0x5C]
|
|
adds r1, r6
|
|
ldr r2, [r1]
|
|
adds r4, r2, 0x2
|
|
mov r10, r4
|
|
ldr r0, [r0, 0x4]
|
|
subs r0, r3
|
|
subs r4, r0, 0x4
|
|
ldr r0, [r1, 0x4]
|
|
subs r0, r2
|
|
subs r7, r0, 0x4
|
|
movs r3, 0x5
|
|
movs r5, 0x5
|
|
ldr r6, [sp, 0x4]
|
|
cmp r6, 0x2
|
|
bgt _08050FF8
|
|
movs r3, 0xA
|
|
movs r4, 0xE
|
|
_08050FF8:
|
|
ldr r0, [sp, 0x8]
|
|
cmp r0, 0x1
|
|
bne _08051002
|
|
movs r5, 0x10
|
|
movs r7, 0x18
|
|
_08051002:
|
|
ldr r2, [sp, 0x1C]
|
|
lsls r1, r2, 5
|
|
ldr r6, [sp, 0x18]
|
|
lsls r2, r6, 4
|
|
subs r0, r2, r6
|
|
lsls r0, 5
|
|
ldr r6, [sp]
|
|
adds r0, r6
|
|
adds r6, r1, r0
|
|
ldrb r0, [r6, 0xA]
|
|
str r1, [sp, 0x30]
|
|
str r2, [sp, 0x2C]
|
|
cmp r0, 0
|
|
bne _08051020
|
|
b _08051130
|
|
_08051020:
|
|
ldr r0, [sp, 0x14]
|
|
ldr r1, [sp, 0x60]
|
|
cmp r0, r1
|
|
beq _0805108C
|
|
adds r0, r3, 0
|
|
adds r1, r4, 0
|
|
bl sub_808411C
|
|
adds r6, r0, 0
|
|
adds r0, r5, 0
|
|
adds r1, r7, 0
|
|
bl sub_808411C
|
|
adds r5, r0, 0
|
|
movs r1, 0x1
|
|
adds r0, r6, 0
|
|
orrs r0, r1
|
|
cmp r0, r4
|
|
bge _08051048
|
|
adds r6, r0, 0
|
|
_08051048:
|
|
adds r0, r5, 0
|
|
orrs r0, r1
|
|
cmp r0, r7
|
|
bge _08051052
|
|
adds r5, r0, 0
|
|
_08051052:
|
|
lsls r0, r5, 1
|
|
adds r0, r5
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
cmp r6, r0
|
|
ble _08051062
|
|
adds r6, r0, 0
|
|
_08051062:
|
|
lsls r0, r6, 1
|
|
adds r0, r6
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
cmp r5, r0
|
|
ble _08051072
|
|
adds r5, r0, 0
|
|
_08051072:
|
|
subs r0, r4, r6
|
|
bl DungeonRandomCapped
|
|
mov r2, r9
|
|
adds r4, r0, r2
|
|
subs r0, r7, r5
|
|
bl DungeonRandomCapped
|
|
mov r3, r10
|
|
adds r7, r0, r3
|
|
adds r3, r4, r6
|
|
adds r6, r7, r5
|
|
b _08051098
|
|
_0805108C:
|
|
mov r4, r9
|
|
mov r7, r10
|
|
ldr r5, [sp, 0x64]
|
|
adds r3, r4, r5
|
|
ldr r0, [sp, 0x68]
|
|
adds r6, r7, r0
|
|
_08051098:
|
|
ldr r1, [sp, 0x2C]
|
|
ldr r2, [sp, 0x18]
|
|
subs r0, r1, r2
|
|
lsls r0, 5
|
|
ldr r5, [sp]
|
|
adds r0, r5
|
|
ldr r1, [sp, 0x30]
|
|
adds r0, r1, r0
|
|
strh r4, [r0]
|
|
strh r3, [r0, 0x4]
|
|
strh r7, [r0, 0x2]
|
|
strh r6, [r0, 0x6]
|
|
adds r5, r4, 0
|
|
ldr r2, [sp, 0x10]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x20]
|
|
ldr r4, [sp, 0x14]
|
|
adds r4, 0x1
|
|
str r4, [sp, 0x24]
|
|
ldr r0, [sp, 0x18]
|
|
adds r0, 0x1
|
|
mov r10, r0
|
|
cmp r5, r3
|
|
bge _08051108
|
|
_080510C8:
|
|
adds r4, r7, 0
|
|
adds r1, r5, 0x1
|
|
mov r8, r1
|
|
cmp r4, r6
|
|
bge _08051102
|
|
ldr r2, _0805112C
|
|
mov r9, r2
|
|
_080510D6:
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
str r3, [sp, 0x38]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
mov r2, r9
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
mov r1, sp
|
|
ldrb r1, [r1, 0x10]
|
|
strb r1, [r0, 0x9]
|
|
adds r4, 0x1
|
|
ldr r3, [sp, 0x38]
|
|
cmp r4, r6
|
|
blt _080510D6
|
|
_08051102:
|
|
mov r5, r8
|
|
cmp r5, r3
|
|
blt _080510C8
|
|
_08051108:
|
|
ldr r2, [sp, 0x14]
|
|
ldr r3, [sp, 0x60]
|
|
cmp r2, r3
|
|
beq _08051124
|
|
ldr r4, [sp, 0x2C]
|
|
ldr r5, [sp, 0x18]
|
|
subs r0, r4, r5
|
|
lsls r0, 5
|
|
ldr r6, [sp]
|
|
adds r0, r6
|
|
ldr r1, [sp, 0x30]
|
|
adds r0, r1, r0
|
|
movs r1, 0x1
|
|
strb r1, [r0, 0x1D]
|
|
_08051124:
|
|
ldr r2, [sp, 0x20]
|
|
str r2, [sp, 0x10]
|
|
b _080511BE
|
|
.align 2, 0
|
|
_0805112C: .4byte 0x0000fffc
|
|
_08051130:
|
|
movs r1, 0x2
|
|
movs r3, 0x4
|
|
movs r2, 0x2
|
|
mov r8, r3
|
|
ldr r5, [sp, 0x18]
|
|
cmp r5, 0
|
|
bne _08051140
|
|
movs r1, 0x1
|
|
_08051140:
|
|
ldr r0, [sp, 0x1C]
|
|
cmp r0, 0
|
|
bne _08051148
|
|
movs r2, 0x1
|
|
_08051148:
|
|
ldr r0, [sp, 0x4]
|
|
subs r0, 0x1
|
|
ldr r5, [sp, 0x18]
|
|
cmp r5, r0
|
|
bne _08051154
|
|
movs r3, 0x2
|
|
_08051154:
|
|
ldr r0, [sp, 0x8]
|
|
subs r0, 0x1
|
|
ldr r5, [sp, 0x1C]
|
|
cmp r5, r0
|
|
bne _08051162
|
|
movs r0, 0x2
|
|
mov r8, r0
|
|
_08051162:
|
|
mov r5, r9
|
|
adds r0, r5, r1
|
|
adds r1, r5, r4
|
|
subs r1, r3
|
|
str r2, [sp, 0x34]
|
|
bl sub_808411C
|
|
adds r5, r0, 0
|
|
ldr r2, [sp, 0x34]
|
|
mov r1, r10
|
|
adds r0, r1, r2
|
|
adds r1, r7
|
|
mov r2, r8
|
|
subs r1, r2
|
|
bl sub_808411C
|
|
adds r4, r0, 0
|
|
strh r5, [r6]
|
|
adds r0, r5, 0x1
|
|
strh r0, [r6, 0x4]
|
|
strh r4, [r6, 0x2]
|
|
adds r0, r4, 0x1
|
|
strh r0, [r6, 0x6]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ldr r3, _080511EC
|
|
adds r2, r3, 0
|
|
ands r1, r2
|
|
movs r2, 0x1
|
|
orrs r1, r2
|
|
strh r1, [r0]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
bl GetMapEntity
|
|
movs r1, 0xFF
|
|
strb r1, [r0, 0x9]
|
|
ldr r4, [sp, 0x14]
|
|
adds r4, 0x1
|
|
str r4, [sp, 0x24]
|
|
ldr r5, [sp, 0x18]
|
|
adds r5, 0x1
|
|
mov r10, r5
|
|
_080511BE:
|
|
ldr r6, [sp, 0x24]
|
|
str r6, [sp, 0x14]
|
|
mov r0, r10
|
|
str r0, [sp, 0x18]
|
|
ldr r1, [sp, 0x4]
|
|
cmp r0, r1
|
|
bge _080511CE
|
|
b _08050FC2
|
|
_080511CE:
|
|
ldr r2, [sp, 0x28]
|
|
_080511D0:
|
|
str r2, [sp, 0x1C]
|
|
ldr r3, [sp, 0x8]
|
|
cmp r2, r3
|
|
bge _080511DA
|
|
b _08050FB0
|
|
_080511DA:
|
|
add sp, 0x3C
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080511EC: .4byte 0x0000fffc
|
|
thumb_func_end sub_8050F90
|
|
|
|
thumb_func_start sub_80511F0
|
|
sub_80511F0:
|
|
push {r4-r6,lr}
|
|
ldr r6, _08051204
|
|
ldrb r0, [r6]
|
|
cmp r0, 0
|
|
beq _0805120C
|
|
subs r0, 0x1
|
|
strb r0, [r6]
|
|
ldr r0, _08051208
|
|
ldrb r0, [r0]
|
|
b _08051244
|
|
.align 2, 0
|
|
_08051204: .4byte gUnknown_202F1E1
|
|
_08051208: .4byte gUnknown_202F1E0
|
|
_0805120C:
|
|
ldr r1, _0805122C
|
|
ldr r5, _08051230
|
|
ldr r2, [r5]
|
|
ldrb r3, [r2]
|
|
strb r3, [r1]
|
|
adds r4, r2, 0x1
|
|
str r4, [r5]
|
|
lsls r0, r3, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xE
|
|
bne _08051234
|
|
ldrb r0, [r2, 0x1]
|
|
strb r0, [r1]
|
|
adds r0, r4, 0x1
|
|
str r0, [r5]
|
|
b _08051242
|
|
.align 2, 0
|
|
_0805122C: .4byte gUnknown_202F1E0
|
|
_08051230: .4byte gUnknown_202F1DC
|
|
_08051234:
|
|
movs r0, 0xF
|
|
ands r0, r3
|
|
strb r0, [r6]
|
|
movs r0, 0xF0
|
|
ands r0, r3
|
|
lsrs r0, 4
|
|
strb r0, [r1]
|
|
_08051242:
|
|
ldrb r0, [r1]
|
|
_08051244:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_80511F0
|
|
|
|
thumb_func_start sub_805124C
|
|
sub_805124C:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
ldr r5, [sp, 0x1C]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
ldrh r6, [r0]
|
|
movs r7, 0x80
|
|
lsls r7, 1
|
|
adds r4, r7, 0
|
|
movs r7, 0
|
|
mov r8, r7
|
|
orrs r4, r6
|
|
strh r4, [r0]
|
|
mov r4, r8
|
|
strb r4, [r0, 0xE]
|
|
str r5, [sp]
|
|
bl sub_8051A74
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_805124C
|
|
|
|
thumb_func_start sub_8051288
|
|
sub_8051288:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0xC
|
|
str r0, [sp, 0x4]
|
|
ldr r0, _08051374
|
|
ldr r7, [r0]
|
|
ldr r0, _08051378
|
|
adds r3, r7, r0
|
|
ldr r0, [r3]
|
|
ldr r0, [r0, 0x4]
|
|
ldr r2, [sp, 0x4]
|
|
lsls r1, r2, 2
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
ldrb r2, [r0]
|
|
mov r10, r2
|
|
ldrb r0, [r0, 0x1]
|
|
mov r9, r0
|
|
ldr r2, _0805137C
|
|
adds r0, r7, r2
|
|
movs r4, 0
|
|
mov r2, r10
|
|
strh r2, [r0]
|
|
ldr r2, _08051380
|
|
adds r0, r7, r2
|
|
mov r2, r9
|
|
strh r2, [r0]
|
|
ldr r2, _08051384
|
|
ldr r0, [r3]
|
|
ldr r0, [r0, 0x4]
|
|
adds r1, r0
|
|
ldr r0, [r1]
|
|
adds r0, 0x3
|
|
str r0, [r2]
|
|
ldr r0, _08051388
|
|
strb r4, [r0]
|
|
movs r6, 0x5
|
|
mov r0, r9
|
|
adds r0, 0x5
|
|
cmp r6, r0
|
|
bge _0805132E
|
|
movs r1, 0x5
|
|
add r1, r10
|
|
mov r8, r1
|
|
str r0, [sp, 0x8]
|
|
_080512E8:
|
|
movs r5, 0x5
|
|
cmp r5, r8
|
|
bge _08051326
|
|
_080512EE:
|
|
bl sub_80511F0
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
movs r1, 0x1
|
|
str r1, [sp]
|
|
adds r1, r4, 0
|
|
adds r2, r5, 0
|
|
adds r3, r6, 0
|
|
bl sub_805124C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _08051320
|
|
ldr r2, _0805138C
|
|
adds r0, r7, r2
|
|
strh r5, [r0]
|
|
ldr r1, _08051390
|
|
adds r0, r7, r1
|
|
strh r6, [r0]
|
|
_08051320:
|
|
adds r5, 0x1
|
|
cmp r5, r8
|
|
blt _080512EE
|
|
_08051326:
|
|
adds r6, 0x1
|
|
ldr r2, [sp, 0x8]
|
|
cmp r6, r2
|
|
blt _080512E8
|
|
_0805132E:
|
|
movs r6, 0
|
|
ldr r0, _08051394
|
|
adds r7, r0, 0
|
|
_08051334:
|
|
movs r5, 0
|
|
adds r4, r6, 0x1
|
|
_08051338:
|
|
cmp r5, 0x4
|
|
ble _08051350
|
|
mov r0, r10
|
|
adds r0, 0x5
|
|
cmp r5, r0
|
|
bge _08051350
|
|
cmp r6, 0x4
|
|
ble _08051350
|
|
mov r0, r9
|
|
adds r0, 0x5
|
|
cmp r6, r0
|
|
blt _080513A0
|
|
_08051350:
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrh r1, [r2]
|
|
movs r0, 0x10
|
|
movs r3, 0
|
|
orrs r1, r0
|
|
strh r1, [r2]
|
|
ldr r0, _08051398
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0805139C
|
|
ands r1, r7
|
|
movs r0, 0x3
|
|
orrs r1, r0
|
|
b _0805139E
|
|
.align 2, 0
|
|
_08051374: .4byte gDungeonGlobalData
|
|
_08051378: .4byte 0x00013568
|
|
_0805137C: .4byte 0x0000e260
|
|
_08051380: .4byte 0x0000e262
|
|
_08051384: .4byte gUnknown_202F1DC
|
|
_08051388: .4byte gUnknown_202F1E1
|
|
_0805138C: .4byte 0x0000e21c
|
|
_08051390: .4byte 0x0000e21e
|
|
_08051394: .4byte 0x0000fffc
|
|
_08051398: .4byte gUnknown_202F1A8
|
|
_0805139C:
|
|
ands r1, r7
|
|
_0805139E:
|
|
strh r1, [r2]
|
|
_080513A0:
|
|
adds r5, 0x1
|
|
cmp r5, 0x37
|
|
ble _08051338
|
|
adds r6, r4, 0
|
|
cmp r6, 0x1F
|
|
ble _08051334
|
|
ldr r1, [sp, 0x4]
|
|
cmp r1, 0x4
|
|
bne _080513DA
|
|
movs r6, 0x5
|
|
ldr r2, _0805142C
|
|
adds r7, r2, 0
|
|
_080513B8:
|
|
movs r5, 0x2
|
|
adds r4, r6, 0x1
|
|
_080513BC:
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
ldrh r2, [r0]
|
|
movs r1, 0x10
|
|
orrs r1, r2
|
|
ands r1, r7
|
|
strh r1, [r0]
|
|
adds r5, 0x1
|
|
cmp r5, 0x4
|
|
ble _080513BC
|
|
adds r6, r4, 0
|
|
cmp r6, 0x10
|
|
ble _080513B8
|
|
_080513DA:
|
|
ldr r0, _08051430
|
|
ldr r0, [r0]
|
|
ldr r1, _08051434
|
|
adds r0, r1
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, 0x3F
|
|
ble _08051416
|
|
movs r6, 0
|
|
_080513EC:
|
|
movs r5, 0
|
|
adds r4, r6, 0x1
|
|
_080513F0:
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrh r1, [r2]
|
|
movs r0, 0x3
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805140A
|
|
movs r0, 0x10
|
|
orrs r0, r1
|
|
strh r0, [r2]
|
|
_0805140A:
|
|
adds r5, 0x1
|
|
cmp r5, 0x37
|
|
ble _080513F0
|
|
adds r6, r4, 0
|
|
cmp r6, 0x1F
|
|
ble _080513EC
|
|
_08051416:
|
|
bl sub_804E9DC
|
|
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
|
|
_0805142C: .4byte 0x0000fffc
|
|
_08051430: .4byte gDungeonGlobalData
|
|
_08051434: .4byte 0x00003a0e
|
|
thumb_func_end sub_8051288
|
|
|
|
thumb_func_start sub_8051438
|
|
sub_8051438:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x1C
|
|
mov r9, r0
|
|
ldr r0, _080515AC
|
|
ldr r0, [r0]
|
|
str r0, [sp, 0x4]
|
|
ldr r2, _080515B0
|
|
ldr r4, _080515B4
|
|
adds r3, r0, r4
|
|
ldr r0, [r3]
|
|
ldr r0, [r0, 0x4]
|
|
lsls r1, 2
|
|
adds r0, r1, r0
|
|
ldr r0, [r0]
|
|
adds r0, 0x3
|
|
str r0, [r2]
|
|
ldr r2, _080515B8
|
|
movs r0, 0
|
|
strb r0, [r2]
|
|
ldr r0, [r3]
|
|
ldr r0, [r0, 0x4]
|
|
adds r1, r0
|
|
ldr r0, [r1]
|
|
ldrb r1, [r0, 0x2]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0805147A
|
|
b _080515D8
|
|
_0805147A:
|
|
ldr r5, [sp, 0x4]
|
|
ldr r0, _080515BC
|
|
adds r1, r5, r0
|
|
mov r2, r9
|
|
movs r3, 0
|
|
ldrsh r0, [r2, r3]
|
|
str r0, [r1]
|
|
ldr r4, _080515C0
|
|
adds r1, r5, r4
|
|
movs r5, 0x2
|
|
ldrsh r0, [r2, r5]
|
|
str r0, [r1]
|
|
ldr r0, [sp, 0x4]
|
|
ldr r2, _080515C4
|
|
adds r1, r0, r2
|
|
mov r3, r9
|
|
movs r4, 0x4
|
|
ldrsh r0, [r3, r4]
|
|
str r0, [r1]
|
|
ldr r5, [sp, 0x4]
|
|
ldr r0, _080515C8
|
|
adds r1, r5, r0
|
|
movs r2, 0x6
|
|
ldrsh r0, [r3, r2]
|
|
str r0, [r1]
|
|
movs r3, 0
|
|
str r3, [sp, 0x8]
|
|
mov r4, r9
|
|
movs r5, 0x2
|
|
ldrsh r4, [r4, r5]
|
|
mov r8, r4
|
|
mov r1, r9
|
|
movs r2, 0x6
|
|
ldrsh r0, [r1, r2]
|
|
cmp r8, r0
|
|
blt _080514C4
|
|
b _08051640
|
|
_080514C4:
|
|
mov r3, r9
|
|
movs r4, 0
|
|
ldrsh r7, [r3, r4]
|
|
movs r5, 0x4
|
|
ldrsh r0, [r3, r5]
|
|
ldr r1, [sp, 0x8]
|
|
adds r1, 0x1
|
|
str r1, [sp, 0x10]
|
|
mov r2, r8
|
|
adds r2, 0x1
|
|
str r2, [sp, 0xC]
|
|
cmp r7, r0
|
|
bge _08051598
|
|
ldr r4, _080515CC
|
|
ldr r3, [sp, 0x4]
|
|
adds r4, r3, r4
|
|
str r4, [sp, 0x14]
|
|
movs r5, 0
|
|
str r5, [sp, 0x18]
|
|
ldr r0, [sp, 0x8]
|
|
mov r10, r0
|
|
_080514EE:
|
|
bl sub_80511F0
|
|
adds r5, r0, 0
|
|
lsls r5, 24
|
|
lsrs r5, 24
|
|
adds r0, r7, 0
|
|
mov r1, r8
|
|
bl GetMapEntity
|
|
adds r6, r0, 0
|
|
ldr r1, [sp, 0x4]
|
|
ldr r2, _080515D0
|
|
adds r0, r1, r2
|
|
add r0, r10
|
|
strb r5, [r0]
|
|
ldr r3, [sp, 0x8]
|
|
lsls r4, r3, 1
|
|
adds r4, r3
|
|
lsls r4, 3
|
|
ldr r1, [sp, 0x14]
|
|
adds r0, r1, r4
|
|
movs r2, 0
|
|
str r2, [sp]
|
|
adds r1, r5, 0
|
|
adds r2, r7, 0
|
|
mov r3, r8
|
|
bl sub_805124C
|
|
ldrb r1, [r6, 0x9]
|
|
ldr r3, [sp, 0x18]
|
|
adds r4, r3
|
|
ldr r5, [sp, 0x4]
|
|
adds r4, r5, r4
|
|
adds r0, r6, 0
|
|
ldr r2, _080515CC
|
|
adds r4, r2
|
|
ldm r4!, {r2,r3,r5}
|
|
stm r0!, {r2,r3,r5}
|
|
ldm r4!, {r2,r3,r5}
|
|
stm r0!, {r2,r3,r5}
|
|
mov r3, r9
|
|
movs r4, 0
|
|
ldrsh r0, [r3, r4]
|
|
adds r0, 0x2
|
|
cmp r7, r0
|
|
blt _08051572
|
|
movs r5, 0x4
|
|
ldrsh r0, [r3, r5]
|
|
subs r0, 0x2
|
|
cmp r7, r0
|
|
bge _08051572
|
|
movs r2, 0x2
|
|
ldrsh r0, [r3, r2]
|
|
adds r0, 0x2
|
|
cmp r8, r0
|
|
blt _08051572
|
|
movs r4, 0x6
|
|
ldrsh r0, [r3, r4]
|
|
subs r0, 0x2
|
|
cmp r8, r0
|
|
bge _08051572
|
|
movs r0, 0x88
|
|
lsls r0, 1
|
|
strh r0, [r6]
|
|
movs r0, 0xE
|
|
strb r0, [r6, 0xE]
|
|
_08051572:
|
|
strb r1, [r6, 0x9]
|
|
ldr r5, [sp, 0x4]
|
|
ldr r2, _080515D4
|
|
adds r0, r5, r2
|
|
strb r1, [r0]
|
|
ldr r3, [sp, 0x14]
|
|
adds r3, 0xC0
|
|
str r3, [sp, 0x14]
|
|
ldr r4, [sp, 0x18]
|
|
adds r4, 0xC0
|
|
str r4, [sp, 0x18]
|
|
movs r5, 0x8
|
|
add r10, r5
|
|
adds r7, 0x1
|
|
mov r1, r9
|
|
movs r2, 0x4
|
|
ldrsh r0, [r1, r2]
|
|
cmp r7, r0
|
|
blt _080514EE
|
|
_08051598:
|
|
ldr r3, [sp, 0x10]
|
|
str r3, [sp, 0x8]
|
|
ldr r4, [sp, 0xC]
|
|
mov r8, r4
|
|
mov r5, r9
|
|
movs r1, 0x6
|
|
ldrsh r0, [r5, r1]
|
|
cmp r8, r0
|
|
blt _080514C4
|
|
b _08051640
|
|
.align 2, 0
|
|
_080515AC: .4byte gDungeonGlobalData
|
|
_080515B0: .4byte gUnknown_202F1DC
|
|
_080515B4: .4byte 0x00013568
|
|
_080515B8: .4byte gUnknown_202F1E1
|
|
_080515BC: .4byte 0x0000e250
|
|
_080515C0: .4byte 0x0000e254
|
|
_080515C4: .4byte 0x0000e258
|
|
_080515C8: .4byte 0x0000e25c
|
|
_080515CC: .4byte 0x0000e27c
|
|
_080515D0: .4byte 0x0000e87c
|
|
_080515D4: .4byte 0x0000e8bc
|
|
_080515D8:
|
|
mov r2, r9
|
|
movs r3, 0x2
|
|
ldrsh r2, [r2, r3]
|
|
mov r8, r2
|
|
b _08051636
|
|
_080515E2:
|
|
mov r0, r9
|
|
movs r1, 0
|
|
ldrsh r7, [r0, r1]
|
|
movs r2, 0x4
|
|
ldrsh r0, [r0, r2]
|
|
mov r3, r8
|
|
adds r3, 0x1
|
|
str r3, [sp, 0xC]
|
|
cmp r7, r0
|
|
bge _08051632
|
|
_080515F6:
|
|
bl sub_80511F0
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
adds r0, r7, 0
|
|
mov r1, r8
|
|
bl GetMapEntity
|
|
adds r5, r0, 0
|
|
ldrb r6, [r5, 0x9]
|
|
movs r0, 0x1
|
|
str r0, [sp]
|
|
adds r0, r5, 0
|
|
adds r1, r4, 0
|
|
adds r2, r7, 0
|
|
mov r3, r8
|
|
bl sub_805124C
|
|
strb r6, [r5, 0x9]
|
|
ldr r4, [sp, 0x4]
|
|
ldr r5, _08051650
|
|
adds r0, r4, r5
|
|
strb r6, [r0]
|
|
adds r7, 0x1
|
|
mov r1, r9
|
|
movs r2, 0x4
|
|
ldrsh r0, [r1, r2]
|
|
cmp r7, r0
|
|
blt _080515F6
|
|
_08051632:
|
|
ldr r3, [sp, 0xC]
|
|
mov r8, r3
|
|
_08051636:
|
|
mov r4, r9
|
|
movs r5, 0x6
|
|
ldrsh r0, [r4, r5]
|
|
cmp r8, r0
|
|
blt _080515E2
|
|
_08051640:
|
|
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
|
|
_08051650: .4byte 0x0000e8bc
|
|
thumb_func_end sub_8051438
|
|
|
|
thumb_func_start sub_8051654
|
|
sub_8051654:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x14
|
|
str r0, [sp]
|
|
ldr r4, _080516EC
|
|
ldr r1, [r4, 0x8]
|
|
ldr r0, [r4]
|
|
subs r1, r0
|
|
subs r1, 0x2
|
|
movs r0, 0x3
|
|
bl sub_808411C
|
|
mov r8, r0
|
|
cmp r0, 0x2
|
|
bgt _0805167C
|
|
movs r0, 0x3
|
|
mov r8, r0
|
|
_0805167C:
|
|
ldr r1, [r4, 0xC]
|
|
ldr r0, [r4, 0x4]
|
|
subs r1, r0
|
|
subs r1, 0x2
|
|
movs r0, 0x3
|
|
bl sub_808411C
|
|
mov r9, r0
|
|
cmp r0, 0x2
|
|
bgt _08051694
|
|
movs r1, 0x3
|
|
mov r9, r1
|
|
_08051694:
|
|
movs r0, 0x2
|
|
movs r1, 0x4
|
|
bl sub_808411C
|
|
mov r10, r0
|
|
movs r5, 0
|
|
cmp r5, r10
|
|
bge _08051734
|
|
ldr r0, [r4, 0x8]
|
|
ldr r1, [r4]
|
|
subs r0, r1
|
|
cmp r0, r8
|
|
ble _08051734
|
|
adds r6, r4, 0
|
|
_080516B0:
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
cmp r0, 0x31
|
|
bgt _080516F4
|
|
ldr r4, [r6, 0x4]
|
|
ldr r0, [r6, 0xC]
|
|
adds r7, r5, 0x1
|
|
cmp r4, r0
|
|
bge _080516E4
|
|
ldr r5, _080516EC
|
|
ldr r0, _080516F0
|
|
adds r2, r0, 0
|
|
_080516CA:
|
|
ldr r0, [r5]
|
|
adds r1, r4, 0
|
|
str r2, [sp, 0xC]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0xC]
|
|
ands r1, r2
|
|
strh r1, [r0]
|
|
adds r4, 0x1
|
|
ldr r0, [r5, 0xC]
|
|
cmp r4, r0
|
|
blt _080516CA
|
|
_080516E4:
|
|
ldr r0, [r6]
|
|
adds r0, 0x1
|
|
str r0, [r6]
|
|
b _08051724
|
|
.align 2, 0
|
|
_080516EC: .4byte gUnknown_202F1B8
|
|
_080516F0: .4byte 0x0000ffdf
|
|
_080516F4:
|
|
ldr r0, [r6, 0x8]
|
|
subs r0, 0x1
|
|
str r0, [r6, 0x8]
|
|
ldr r4, [r6, 0x4]
|
|
ldr r0, [r6, 0xC]
|
|
adds r7, r5, 0x1
|
|
cmp r4, r0
|
|
bge _08051724
|
|
ldr r5, _08051784
|
|
ldr r1, _08051788
|
|
adds r2, r1, 0
|
|
_0805170A:
|
|
ldr r0, [r5, 0x8]
|
|
adds r1, r4, 0
|
|
str r2, [sp, 0xC]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0xC]
|
|
ands r1, r2
|
|
strh r1, [r0]
|
|
adds r4, 0x1
|
|
ldr r0, [r5, 0xC]
|
|
cmp r4, r0
|
|
blt _0805170A
|
|
_08051724:
|
|
adds r5, r7, 0
|
|
cmp r5, r10
|
|
bge _08051734
|
|
ldr r0, [r6, 0x8]
|
|
ldr r1, [r6]
|
|
subs r0, r1
|
|
cmp r0, r8
|
|
bgt _080516B0
|
|
_08051734:
|
|
movs r5, 0
|
|
ldr r3, _08051784
|
|
cmp r5, r10
|
|
bge _080517CE
|
|
ldr r0, [r3, 0xC]
|
|
ldr r1, [r3, 0x4]
|
|
subs r0, r1
|
|
cmp r0, r9
|
|
ble _080517CE
|
|
adds r6, r3, 0
|
|
_08051748:
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
cmp r0, 0x31
|
|
bgt _0805178C
|
|
ldr r4, [r6]
|
|
ldr r0, [r6, 0x8]
|
|
adds r7, r5, 0x1
|
|
cmp r4, r0
|
|
bge _0805177C
|
|
ldr r5, _08051784
|
|
ldr r0, _08051788
|
|
adds r2, r0, 0
|
|
_08051762:
|
|
ldr r1, [r5, 0x4]
|
|
adds r0, r4, 0
|
|
str r2, [sp, 0xC]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0xC]
|
|
ands r1, r2
|
|
strh r1, [r0]
|
|
adds r4, 0x1
|
|
ldr r0, [r5, 0x8]
|
|
cmp r4, r0
|
|
blt _08051762
|
|
_0805177C:
|
|
ldr r0, [r6, 0x4]
|
|
adds r0, 0x1
|
|
str r0, [r6, 0x4]
|
|
b _080517BC
|
|
.align 2, 0
|
|
_08051784: .4byte gUnknown_202F1B8
|
|
_08051788: .4byte 0x0000ffdf
|
|
_0805178C:
|
|
ldr r0, [r6, 0xC]
|
|
subs r0, 0x1
|
|
str r0, [r6, 0xC]
|
|
ldr r4, [r6]
|
|
ldr r0, [r6, 0x8]
|
|
adds r7, r5, 0x1
|
|
cmp r4, r0
|
|
bge _080517BC
|
|
ldr r5, _080518E4
|
|
ldr r1, _080518E8
|
|
adds r2, r1, 0
|
|
_080517A2:
|
|
ldr r1, [r5, 0xC]
|
|
adds r0, r4, 0
|
|
str r2, [sp, 0xC]
|
|
bl GetMapEntity
|
|
ldrh r1, [r0]
|
|
ldr r2, [sp, 0xC]
|
|
ands r1, r2
|
|
strh r1, [r0]
|
|
adds r4, 0x1
|
|
ldr r0, [r5, 0x8]
|
|
cmp r4, r0
|
|
blt _080517A2
|
|
_080517BC:
|
|
adds r5, r7, 0
|
|
ldr r3, _080518E4
|
|
cmp r5, r10
|
|
bge _080517CE
|
|
ldr r1, [r6, 0xC]
|
|
ldr r0, [r6, 0x4]
|
|
subs r1, r0
|
|
cmp r1, r9
|
|
bgt _08051748
|
|
_080517CE:
|
|
ldr r7, [r3]
|
|
ldr r0, [r3, 0x8]
|
|
cmp r7, r0
|
|
bge _08051824
|
|
adds r4, r3, 0
|
|
mov r9, r3
|
|
_080517DA:
|
|
ldr r5, [r4, 0x4]
|
|
ldr r0, [r4, 0xC]
|
|
adds r1, r7, 0x1
|
|
mov r8, r1
|
|
cmp r5, r0
|
|
bge _0805181A
|
|
ldr r3, _080518E4
|
|
ldr r0, _080518E8
|
|
adds r6, r0, 0
|
|
_080517EC:
|
|
adds r0, r7, 0
|
|
adds r1, r5, 0
|
|
str r3, [sp, 0x10]
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrh r1, [r2]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
ldr r3, [sp, 0x10]
|
|
cmp r0, 0
|
|
beq _08051812
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08051812
|
|
adds r0, r1, 0
|
|
ands r0, r6
|
|
strh r0, [r2]
|
|
_08051812:
|
|
adds r5, 0x1
|
|
ldr r0, [r4, 0xC]
|
|
cmp r5, r0
|
|
blt _080517EC
|
|
_0805181A:
|
|
mov r7, r8
|
|
mov r1, r9
|
|
ldr r0, [r1, 0x8]
|
|
cmp r7, r0
|
|
blt _080517DA
|
|
_08051824:
|
|
ldr r0, [r3]
|
|
ldr r1, [r3, 0x8]
|
|
adds r0, r1
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r2, r0, 1
|
|
ldr r0, [r3, 0x4]
|
|
ldr r1, [r3, 0xC]
|
|
adds r0, r1
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
asrs r0, 1
|
|
subs r0, 0x1
|
|
mov r10, r0
|
|
movs r0, 0
|
|
mov r9, r0
|
|
subs r7, r2, 0x1
|
|
adds r0, r2, 0x2
|
|
cmp r7, r0
|
|
bge _080518D2
|
|
adds r2, r0, 0
|
|
str r2, [sp, 0x4]
|
|
_08051850:
|
|
mov r5, r10
|
|
adds r0, r5, 0x3
|
|
adds r1, r7, 0x1
|
|
mov r8, r1
|
|
mov r1, r9
|
|
adds r1, 0x1
|
|
str r1, [sp, 0x8]
|
|
cmp r5, r0
|
|
bge _080518C6
|
|
movs r3, 0
|
|
_08051864:
|
|
adds r0, r7, 0
|
|
adds r1, r5, 0
|
|
str r3, [sp, 0x10]
|
|
bl GetMapEntity
|
|
adds r6, r0, 0
|
|
ldrh r1, [r6]
|
|
movs r0, 0x20
|
|
ands r0, r1
|
|
ldr r3, [sp, 0x10]
|
|
cmp r0, 0
|
|
beq _080518BA
|
|
movs r0, 0x40
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080518BA
|
|
movs r0, 0x8
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _080518BA
|
|
mov r0, r9
|
|
lsls r2, r0, 1
|
|
adds r2, r3
|
|
ldr r0, [sp]
|
|
ldrb r1, [r0, 0x18]
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 1
|
|
adds r2, r0
|
|
ldr r1, _080518EC
|
|
adds r2, r1
|
|
movs r0, 0
|
|
ldrsh r4, [r2, r0]
|
|
movs r0, 0x64
|
|
bl DungeonRandomCapped
|
|
ldr r3, [sp, 0x10]
|
|
cmp r4, r0
|
|
ble _080518BA
|
|
ldrh r1, [r6, 0x4]
|
|
movs r0, 0x2
|
|
orrs r0, r1
|
|
strh r0, [r6, 0x4]
|
|
_080518BA:
|
|
adds r5, 0x1
|
|
adds r3, 0x6
|
|
mov r0, r10
|
|
adds r0, 0x3
|
|
cmp r5, r0
|
|
blt _08051864
|
|
_080518C6:
|
|
mov r7, r8
|
|
ldr r1, [sp, 0x8]
|
|
mov r9, r1
|
|
ldr r0, [sp, 0x4]
|
|
cmp r7, r0
|
|
blt _08051850
|
|
_080518D2:
|
|
add sp, 0x14
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_080518E4: .4byte gUnknown_202F1B8
|
|
_080518E8: .4byte 0x0000ffdf
|
|
_080518EC: .4byte gUnknown_80F57D4
|
|
thumb_func_end sub_8051654
|
|
|
|
thumb_func_start sub_80518F0
|
|
sub_80518F0:
|
|
push {r4-r7,lr}
|
|
movs r5, 0
|
|
movs r6, 0x10
|
|
movs r7, 0
|
|
_080518F8:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
bl GetMapEntity
|
|
adds r4, r0, 0
|
|
bl sub_804FD10
|
|
cmp r5, 0
|
|
beq _0805190E
|
|
cmp r5, 0x37
|
|
bne _08051914
|
|
_0805190E:
|
|
ldrh r0, [r4]
|
|
orrs r0, r6
|
|
strh r0, [r4]
|
|
_08051914:
|
|
adds r0, r5, 0
|
|
movs r1, 0x1E
|
|
bl GetMapEntity
|
|
adds r4, r0, 0
|
|
bl sub_804FD10
|
|
cmp r5, 0
|
|
beq _0805192A
|
|
cmp r5, 0x37
|
|
bne _08051930
|
|
_0805192A:
|
|
ldrh r0, [r4]
|
|
orrs r0, r6
|
|
strh r0, [r4]
|
|
_08051930:
|
|
adds r5, 0x1
|
|
cmp r5, 0x37
|
|
ble _080518F8
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_80518F0
|
|
|
|
thumb_func_start sub_805193C
|
|
sub_805193C:
|
|
push {r4-r6,lr}
|
|
sub sp, 0x8
|
|
adds r6, r3, 0
|
|
ldr r4, [sp, 0x18]
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
lsls r1, 16
|
|
lsls r2, 16
|
|
lsrs r1, 16
|
|
orrs r1, r2
|
|
str r1, [sp, 0x4]
|
|
adds r0, r5, 0
|
|
bl sub_805210C
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0805196A
|
|
mov r0, sp
|
|
movs r1, 0x76
|
|
movs r2, 0
|
|
bl xxx_init_itemslot_8090A8C
|
|
b _08051974
|
|
_0805196A:
|
|
mov r0, sp
|
|
adds r1, r5, 0
|
|
movs r2, 0
|
|
bl xxx_init_itemslot_8090A8C
|
|
_08051974:
|
|
mov r0, sp
|
|
ldrb r0, [r0]
|
|
orrs r4, r0
|
|
mov r0, sp
|
|
strb r4, [r0]
|
|
cmp r6, 0
|
|
beq _08051984
|
|
strb r6, [r0, 0x1]
|
|
_08051984:
|
|
add r0, sp, 0x4
|
|
mov r1, sp
|
|
movs r2, 0x1
|
|
bl sub_80460F8
|
|
add sp, 0x8
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_805193C
|
|
|
|
thumb_func_start sub_8051998
|
|
sub_8051998:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x14
|
|
mov r8, r1
|
|
mov r9, r2
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
adds r1, r0, 0
|
|
lsls r3, 24
|
|
lsrs r6, r3, 24
|
|
adds r7, r6, 0
|
|
ldr r0, _080519E4
|
|
cmp r1, r0
|
|
bne _080519E8
|
|
mov r1, sp
|
|
movs r5, 0
|
|
movs r4, 0
|
|
movs r0, 0x3C
|
|
strh r0, [r1]
|
|
bl sub_803DA20
|
|
mov r1, sp
|
|
strh r0, [r1, 0x8]
|
|
mov r0, sp
|
|
strb r6, [r0, 0x2]
|
|
str r4, [sp, 0x4]
|
|
strb r5, [r0, 0x10]
|
|
mov r1, r8
|
|
strh r1, [r0, 0xC]
|
|
mov r1, r9
|
|
strh r1, [r0, 0xE]
|
|
movs r1, 0x1
|
|
bl sub_806B7F8
|
|
b _08051A14
|
|
.align 2, 0
|
|
_080519E4: .4byte 0x000001a5
|
|
_080519E8:
|
|
cmp r1, 0
|
|
beq _08051A14
|
|
mov r0, sp
|
|
movs r5, 0
|
|
movs r4, 0
|
|
strh r1, [r0]
|
|
adds r0, r1, 0
|
|
bl sub_803DA20
|
|
mov r1, sp
|
|
strh r0, [r1, 0x8]
|
|
mov r0, sp
|
|
strb r7, [r0, 0x2]
|
|
str r4, [sp, 0x4]
|
|
strb r5, [r0, 0x10]
|
|
mov r1, r8
|
|
strh r1, [r0, 0xC]
|
|
mov r1, r9
|
|
strh r1, [r0, 0xE]
|
|
movs r1, 0x1
|
|
bl sub_806B7F8
|
|
_08051A14:
|
|
add sp, 0x14
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8051998
|
|
|
|
thumb_func_start sub_8051A24
|
|
sub_8051A24:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
adds r6, r0, 0
|
|
adds r4, r1, 0
|
|
adds r5, r2, 0
|
|
lsls r6, 24
|
|
lsrs r6, 24
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
mov r8, r3
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetMapEntity
|
|
adds r7, r0, 0
|
|
lsls r4, 16
|
|
lsls r5, 16
|
|
lsrs r4, 16
|
|
orrs r4, r5
|
|
str r4, [sp]
|
|
adds r0, r6, 0
|
|
mov r1, sp
|
|
movs r2, 0
|
|
bl sub_8045684
|
|
cmp r0, 0
|
|
beq _08051A66
|
|
str r0, [r7, 0x14]
|
|
adds r0, 0x20
|
|
mov r1, r8
|
|
strb r1, [r0]
|
|
_08051A66:
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8051A24
|
|
|
|
thumb_func_start sub_8051A74
|
|
sub_8051A74:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x4
|
|
adds r4, r0, 0
|
|
adds r6, r2, 0
|
|
adds r7, r3, 0
|
|
ldr r0, [sp, 0x20]
|
|
lsls r1, 24
|
|
lsrs r1, 24
|
|
mov r8, r1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
cmp r1, 0xF
|
|
bls _08051AA2
|
|
ldrh r0, [r4]
|
|
ldr r1, _08051AB4
|
|
ands r1, r0
|
|
movs r0, 0x1
|
|
orrs r1, r0
|
|
strh r1, [r4]
|
|
_08051AA2:
|
|
mov r0, r8
|
|
cmp r0, 0x45
|
|
bls _08051AAA
|
|
b _08051D68
|
|
_08051AAA:
|
|
lsls r0, 2
|
|
ldr r1, _08051AB8
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_08051AB4: .4byte 0x0000fffc
|
|
_08051AB8: .4byte _08051ABC
|
|
.align 2, 0
|
|
_08051ABC:
|
|
.4byte _08051BF0
|
|
.4byte _08051C0C
|
|
.4byte _08051D50
|
|
.4byte _08051E1A
|
|
.4byte _08051C20
|
|
.4byte _08051C54
|
|
.4byte _08051C64
|
|
.4byte _08051C74
|
|
.4byte _08051C94
|
|
.4byte _08051D00
|
|
.4byte _08051C7E
|
|
.4byte _08051D10
|
|
.4byte _08051D24
|
|
.4byte _08051D50
|
|
.4byte _08051D50
|
|
.4byte _08051E1A
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051D68
|
|
.4byte _08051C94
|
|
.4byte _08051CD4
|
|
.4byte _08051BD4
|
|
_08051BD4:
|
|
ldr r0, _08051BFC
|
|
ldr r0, [r0]
|
|
ldr r2, _08051C00
|
|
adds r1, r0, r2
|
|
strh r6, [r1]
|
|
ldr r3, _08051C04
|
|
adds r0, r3
|
|
strh r7, [r0]
|
|
movs r0, 0xB
|
|
adds r1, r6, 0
|
|
adds r2, r7, 0
|
|
movs r3, 0
|
|
bl sub_8051A24
|
|
_08051BF0:
|
|
ldrh r1, [r4]
|
|
ldr r0, _08051C08
|
|
ands r0, r1
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
b _08051D42
|
|
.align 2, 0
|
|
_08051BFC: .4byte gDungeonGlobalData
|
|
_08051C00: .4byte 0x00000684
|
|
_08051C04: .4byte 0x00000686
|
|
_08051C08: .4byte 0x0000fffc
|
|
_08051C0C:
|
|
ldrh r1, [r4]
|
|
ldr r0, _08051C18
|
|
ands r0, r1
|
|
ldr r1, _08051C1C
|
|
ands r0, r1
|
|
b _08051D5A
|
|
.align 2, 0
|
|
_08051C18: .4byte 0x0000fffc
|
|
_08051C1C: .4byte 0x0000feff
|
|
_08051C20:
|
|
ldrh r1, [r4]
|
|
ldr r0, _08051C44
|
|
ands r0, r1
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
orrs r0, r1
|
|
strh r0, [r4]
|
|
ldr r0, _08051C48
|
|
ldr r0, [r0]
|
|
ldr r3, _08051C4C
|
|
adds r1, r0, r3
|
|
strh r6, [r1]
|
|
ldr r1, _08051C50
|
|
adds r0, r1
|
|
strh r7, [r0]
|
|
strb r2, [r4, 0x9]
|
|
b _08051E1A
|
|
.align 2, 0
|
|
_08051C44: .4byte 0x0000fffc
|
|
_08051C48: .4byte gDungeonGlobalData
|
|
_08051C4C: .4byte 0x0000e218
|
|
_08051C50: .4byte 0x0000e21a
|
|
_08051C54:
|
|
ldrh r1, [r4]
|
|
ldr r0, _08051C60
|
|
ands r0, r1
|
|
movs r2, 0
|
|
movs r1, 0x2
|
|
b _08051D42
|
|
.align 2, 0
|
|
_08051C60: .4byte 0x0000fffc
|
|
_08051C64:
|
|
ldrh r1, [r4]
|
|
ldr r0, _08051C70
|
|
ands r0, r1
|
|
movs r1, 0x3
|
|
b _08051D58
|
|
.align 2, 0
|
|
_08051C70: .4byte 0x0000fffc
|
|
_08051C74:
|
|
ldr r1, _08051C8C
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
bl sub_8049840
|
|
_08051C7E:
|
|
ldrh r1, [r4]
|
|
ldr r0, _08051C90
|
|
ands r0, r1
|
|
movs r1, 0x3
|
|
orrs r0, r1
|
|
b _08051D56
|
|
.align 2, 0
|
|
_08051C8C: .4byte gUnknown_202F1A8
|
|
_08051C90: .4byte 0x0000fffc
|
|
_08051C94:
|
|
ldrh r1, [r4]
|
|
ldr r0, _08051CC0
|
|
ands r0, r1
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
strh r0, [r4]
|
|
ldrh r0, [r4, 0x4]
|
|
movs r2, 0
|
|
orrs r0, r1
|
|
ldr r1, _08051CC4
|
|
ands r0, r1
|
|
strh r0, [r4, 0x4]
|
|
strb r2, [r4, 0x9]
|
|
ldr r0, _08051CC8
|
|
ldr r0, [r0]
|
|
ldr r2, _08051CCC
|
|
adds r1, r0, r2
|
|
strh r6, [r1]
|
|
ldr r3, _08051CD0
|
|
adds r0, r3
|
|
strh r7, [r0]
|
|
b _08051E1A
|
|
.align 2, 0
|
|
_08051CC0: .4byte 0x0000fffc
|
|
_08051CC4: .4byte 0x0000fffd
|
|
_08051CC8: .4byte gDungeonGlobalData
|
|
_08051CCC: .4byte 0x0000e21c
|
|
_08051CD0: .4byte 0x0000e21e
|
|
_08051CD4:
|
|
ldrh r1, [r4]
|
|
movs r2, 0x80
|
|
lsls r2, 4
|
|
adds r0, r2, 0
|
|
orrs r0, r1
|
|
ldr r1, _08051CF8
|
|
ands r0, r1
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
orrs r0, r1
|
|
strh r0, [r4]
|
|
ldrh r1, [r4, 0x4]
|
|
ldr r0, _08051CFC
|
|
ands r0, r1
|
|
strh r0, [r4, 0x4]
|
|
strb r2, [r4, 0x9]
|
|
b _08051E1A
|
|
.align 2, 0
|
|
_08051CF8: .4byte 0x0000fffc
|
|
_08051CFC: .4byte 0x0000fffd
|
|
_08051D00:
|
|
ldrh r1, [r4]
|
|
ldr r0, _08051D0C
|
|
ands r0, r1
|
|
movs r1, 0x1
|
|
b _08051D58
|
|
.align 2, 0
|
|
_08051D0C: .4byte 0x0000fffc
|
|
_08051D10:
|
|
ldrh r1, [r4]
|
|
ldr r0, _08051D20
|
|
ands r0, r1
|
|
movs r1, 0x1
|
|
movs r2, 0
|
|
orrs r0, r1
|
|
b _08051D3C
|
|
.align 2, 0
|
|
_08051D20: .4byte 0x0000fffc
|
|
_08051D24:
|
|
ldrh r1, [r4]
|
|
ldr r0, _08051D4C
|
|
ands r0, r1
|
|
movs r1, 0x1
|
|
orrs r0, r1
|
|
movs r2, 0x80
|
|
lsls r2, 5
|
|
adds r1, r2, 0
|
|
orrs r0, r1
|
|
movs r1, 0x10
|
|
orrs r0, r1
|
|
movs r2, 0
|
|
_08051D3C:
|
|
movs r3, 0x80
|
|
lsls r3, 4
|
|
adds r1, r3, 0
|
|
_08051D42:
|
|
orrs r0, r1
|
|
strh r0, [r4]
|
|
strb r2, [r4, 0x9]
|
|
b _08051E1A
|
|
.align 2, 0
|
|
_08051D4C: .4byte 0x0000fffc
|
|
_08051D50:
|
|
ldrh r1, [r4]
|
|
ldr r0, _08051D64
|
|
ands r0, r1
|
|
_08051D56:
|
|
movs r1, 0x10
|
|
_08051D58:
|
|
orrs r0, r1
|
|
_08051D5A:
|
|
strh r0, [r4]
|
|
movs r0, 0xFF
|
|
strb r0, [r4, 0x9]
|
|
b _08051E1A
|
|
.align 2, 0
|
|
_08051D64: .4byte 0x0000fffc
|
|
_08051D68:
|
|
mov r0, r8
|
|
subs r0, 0x10
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xCB
|
|
bhi _08051E1A
|
|
mov r1, r8
|
|
lsls r0, r1, 4
|
|
ldr r1, _08051DA0
|
|
adds r5, r0, r1
|
|
ldrb r0, [r5, 0xC]
|
|
strb r0, [r4, 0x9]
|
|
ldrb r1, [r5]
|
|
cmp r1, 0
|
|
beq _08051DB8
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
beq _08051DA4
|
|
ldrb r0, [r5]
|
|
movs r1, 0x2
|
|
ldrsh r3, [r5, r1]
|
|
ldr r1, [r5, 0x4]
|
|
str r1, [sp]
|
|
adds r1, r6, 0
|
|
adds r2, r7, 0
|
|
bl sub_805193C
|
|
b _08051DDC
|
|
.align 2, 0
|
|
_08051DA0: .4byte gUnknown_80F6D20
|
|
_08051DA4:
|
|
ldr r0, _08051DB0
|
|
ldr r0, [r0]
|
|
ldr r2, _08051DB4
|
|
adds r0, r2
|
|
strb r1, [r0]
|
|
b _08051DDC
|
|
.align 2, 0
|
|
_08051DB0: .4byte gDungeonGlobalData
|
|
_08051DB4: .4byte 0x0000068b
|
|
_08051DB8:
|
|
ldr r2, [r5, 0x4]
|
|
cmp r2, 0
|
|
beq _08051DDC
|
|
ldr r0, _08051E2C
|
|
ldr r1, [r0]
|
|
subs r0, r2, 0x1
|
|
lsls r0, 2
|
|
adds r0, r1, r0
|
|
ldr r3, _08051E30
|
|
adds r0, r3
|
|
strh r6, [r0]
|
|
ldr r0, [r5, 0x4]
|
|
subs r0, 0x1
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
ldr r0, _08051E34
|
|
adds r1, r0
|
|
strh r7, [r1]
|
|
_08051DDC:
|
|
movs r1, 0x8
|
|
ldrsh r0, [r5, r1]
|
|
cmp r0, 0
|
|
beq _08051DF2
|
|
ldrb r3, [r5, 0xA]
|
|
mov r1, r8
|
|
str r1, [sp]
|
|
adds r1, r6, 0
|
|
adds r2, r7, 0
|
|
bl sub_8051998
|
|
_08051DF2:
|
|
ldrb r0, [r5, 0xB]
|
|
cmp r0, 0x14
|
|
beq _08051E08
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
beq _08051E08
|
|
ldrb r3, [r5, 0xD]
|
|
adds r1, r6, 0
|
|
adds r2, r7, 0
|
|
bl sub_8051A24
|
|
_08051E08:
|
|
ldrb r0, [r5, 0xE]
|
|
cmp r0, 0
|
|
beq _08051E1A
|
|
ldrh r0, [r4]
|
|
ldr r1, _08051E38
|
|
ands r1, r0
|
|
movs r0, 0x2
|
|
orrs r1, r0
|
|
strh r1, [r4]
|
|
_08051E1A:
|
|
movs r0, 0
|
|
add sp, 0x4
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_08051E2C: .4byte gDungeonGlobalData
|
|
_08051E30: .4byte 0x0000e220
|
|
_08051E34: .4byte 0x0000e222
|
|
_08051E38: .4byte 0x0000fffc
|
|
thumb_func_end sub_8051A74
|
|
|
|
thumb_func_start sub_8051E3C
|
|
sub_8051E3C:
|
|
push {r4-r6,lr}
|
|
sub sp, 0x4
|
|
movs r5, 0
|
|
_08051E42:
|
|
movs r4, 0
|
|
adds r6, r5, 0x1
|
|
_08051E46:
|
|
adds r0, r4, 0
|
|
adds r1, r5, 0
|
|
bl GetMapEntity
|
|
adds r2, r0, 0
|
|
ldrb r0, [r2, 0xE]
|
|
cmp r0, 0xF
|
|
bls _08051E66
|
|
adds r1, r0, 0
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
adds r0, r2, 0
|
|
adds r2, r4, 0
|
|
adds r3, r5, 0
|
|
bl sub_8051A74
|
|
_08051E66:
|
|
adds r4, 0x1
|
|
cmp r4, 0x37
|
|
ble _08051E46
|
|
adds r5, r6, 0
|
|
cmp r5, 0x1F
|
|
ble _08051E42
|
|
add sp, 0x4
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_8051E3C
|
|
|
|
thumb_func_start sub_8051E7C
|
|
sub_8051E7C:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x14
|
|
mov r9, r0
|
|
movs r1, 0x4
|
|
ldrsh r0, [r0, r1]
|
|
mov r2, r9
|
|
movs r3, 0x6
|
|
ldrsh r1, [r2, r3]
|
|
subs r1, 0x1
|
|
bl GetMapEntity
|
|
str r0, [sp, 0x8]
|
|
ldrh r1, [r0]
|
|
movs r0, 0x80
|
|
lsls r0, 5
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _08051EB8
|
|
ldr r0, _08051EB4
|
|
ldr r1, [r0]
|
|
mov r0, r9
|
|
bl SendMessage
|
|
b _080520F6
|
|
.align 2, 0
|
|
_08051EB4: .4byte gUnknown_80FDDF0
|
|
_08051EB8:
|
|
ldr r0, _08051EF0
|
|
ldr r0, [r0]
|
|
ldr r1, _08051EF4
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08051EC8
|
|
b _080520EC
|
|
_08051EC8:
|
|
mov r2, r9
|
|
ldrh r1, [r2, 0x6]
|
|
subs r1, 0x1
|
|
lsls r1, 16
|
|
ldrh r0, [r2, 0x4]
|
|
orrs r0, r1
|
|
str r0, [sp, 0x4]
|
|
mov r0, r9
|
|
bl GetEntityRoomIndex
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
str r0, [sp, 0xC]
|
|
mov r3, r9
|
|
movs r1, 0x6
|
|
ldrsh r0, [r3, r1]
|
|
adds r6, r0, 0
|
|
subs r6, 0x15
|
|
b _08051FE0
|
|
.align 2, 0
|
|
_08051EF0: .4byte gDungeonGlobalData
|
|
_08051EF4: .4byte 0x00003a09
|
|
_08051EF8:
|
|
mov r2, r9
|
|
movs r3, 0x4
|
|
ldrsh r0, [r2, r3]
|
|
adds r5, r0, 0
|
|
subs r5, 0x14
|
|
adds r0, 0x14
|
|
adds r1, r6, 0x1
|
|
str r1, [sp, 0x10]
|
|
cmp r5, r0
|
|
bgt _08051FD8
|
|
ldr r2, _080520C0
|
|
mov r10, r2
|
|
_08051F10:
|
|
mov r0, r10
|
|
ldr r3, [r0]
|
|
ldr r1, _080520C4
|
|
adds r0, r3, r1
|
|
ldr r1, [r0]
|
|
subs r2, r5, r1
|
|
mov r8, r2
|
|
ldr r2, _080520C8
|
|
adds r0, r3, r2
|
|
ldr r2, [r0]
|
|
subs r7, r6, r2
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
blt _08051FCA
|
|
cmp r7, 0
|
|
blt _08051FCA
|
|
cmp r0, 0x7
|
|
bgt _08051FCA
|
|
cmp r7, 0x7
|
|
bgt _08051FCA
|
|
adds r0, r1, 0x1
|
|
cmp r5, r0
|
|
blt _08051FCA
|
|
adds r0, r2, 0x1
|
|
cmp r6, r0
|
|
blt _08051FCA
|
|
ldr r1, _080520CC
|
|
adds r0, r3, r1
|
|
ldr r0, [r0]
|
|
subs r0, 0x1
|
|
cmp r5, r0
|
|
bge _08051FCA
|
|
ldr r2, _080520D0
|
|
adds r0, r3, r2
|
|
ldr r0, [r0]
|
|
subs r0, 0x1
|
|
cmp r6, r0
|
|
bge _08051FCA
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl GetMapEntity
|
|
adds r4, r0, 0
|
|
ldrh r0, [r4]
|
|
movs r3, 0x80
|
|
lsls r3, 1
|
|
adds r1, r3, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08051F9A
|
|
mov r0, r10
|
|
ldr r2, [r0]
|
|
lsls r1, r7, 1
|
|
adds r1, r7
|
|
lsls r1, 3
|
|
mov r3, r8
|
|
lsls r0, r3, 1
|
|
add r0, r8
|
|
lsls r0, 6
|
|
adds r1, r0
|
|
adds r2, r1
|
|
ldr r1, _080520D4
|
|
adds r0, r2, r1
|
|
ldrh r0, [r0]
|
|
strh r0, [r4]
|
|
ldr r3, _080520D8
|
|
adds r2, r3
|
|
ldrh r0, [r2]
|
|
strh r0, [r4, 0x4]
|
|
_08051F9A:
|
|
mov r1, r10
|
|
ldr r0, [r1]
|
|
mov r2, r8
|
|
lsls r1, r2, 3
|
|
adds r1, r7, r1
|
|
ldr r3, _080520DC
|
|
adds r0, r3
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
movs r0, 0x1
|
|
str r0, [sp]
|
|
adds r0, r4, 0
|
|
adds r2, r5, 0
|
|
adds r3, r6, 0
|
|
bl sub_8051A74
|
|
ldrh r1, [r4, 0x4]
|
|
movs r0, 0x3
|
|
orrs r0, r1
|
|
strh r0, [r4, 0x4]
|
|
ldr r0, [sp, 0xC]
|
|
cmp r0, 0xFF
|
|
beq _08051FCA
|
|
strb r0, [r4, 0x9]
|
|
_08051FCA:
|
|
adds r5, 0x1
|
|
mov r2, r9
|
|
movs r3, 0x4
|
|
ldrsh r0, [r2, r3]
|
|
adds r0, 0x14
|
|
cmp r5, r0
|
|
ble _08051F10
|
|
_08051FD8:
|
|
ldr r6, [sp, 0x10]
|
|
mov r1, r9
|
|
movs r2, 0x6
|
|
ldrsh r0, [r1, r2]
|
|
_08051FE0:
|
|
adds r0, 0x13
|
|
cmp r6, r0
|
|
ble _08051EF8
|
|
mov r3, r9
|
|
movs r1, 0x6
|
|
ldrsh r0, [r3, r1]
|
|
adds r6, r0, 0
|
|
subs r6, 0x15
|
|
adds r0, 0x13
|
|
ldr r7, _080520C0
|
|
cmp r6, r0
|
|
bgt _0805207A
|
|
_08051FF8:
|
|
mov r2, r9
|
|
movs r3, 0x4
|
|
ldrsh r0, [r2, r3]
|
|
adds r5, r0, 0
|
|
subs r5, 0x14
|
|
adds r0, 0x14
|
|
adds r1, r6, 0x1
|
|
str r1, [sp, 0x10]
|
|
cmp r5, r0
|
|
bgt _0805206C
|
|
ldr r7, _080520C0
|
|
_0805200E:
|
|
ldr r0, _080520C0
|
|
ldr r4, [r0]
|
|
ldr r2, _080520C4
|
|
adds r0, r4, r2
|
|
ldr r2, [r0]
|
|
subs r1, r5, r2
|
|
ldr r3, _080520C8
|
|
adds r0, r4, r3
|
|
ldr r3, [r0]
|
|
subs r0, r6, r3
|
|
cmp r1, 0
|
|
blt _0805205E
|
|
cmp r0, 0
|
|
blt _0805205E
|
|
cmp r1, 0x7
|
|
bgt _0805205E
|
|
cmp r0, 0x7
|
|
bgt _0805205E
|
|
adds r0, r2, 0x1
|
|
cmp r5, r0
|
|
blt _0805205E
|
|
adds r0, r3, 0x1
|
|
cmp r6, r0
|
|
blt _0805205E
|
|
ldr r1, _080520CC
|
|
adds r0, r4, r1
|
|
ldr r0, [r0]
|
|
subs r0, 0x1
|
|
cmp r5, r0
|
|
bge _0805205E
|
|
ldr r2, _080520D0
|
|
adds r0, r4, r2
|
|
ldr r0, [r0]
|
|
subs r0, 0x1
|
|
cmp r6, r0
|
|
bge _0805205E
|
|
adds r0, r5, 0
|
|
adds r1, r6, 0
|
|
bl sub_80498A8
|
|
_0805205E:
|
|
adds r5, 0x1
|
|
mov r3, r9
|
|
movs r1, 0x4
|
|
ldrsh r0, [r3, r1]
|
|
adds r0, 0x14
|
|
cmp r5, r0
|
|
ble _0805200E
|
|
_0805206C:
|
|
ldr r6, [sp, 0x10]
|
|
mov r2, r9
|
|
movs r3, 0x6
|
|
ldrsh r0, [r2, r3]
|
|
adds r0, 0x13
|
|
cmp r6, r0
|
|
ble _08051FF8
|
|
_0805207A:
|
|
ldr r0, [r7]
|
|
ldr r1, _080520E0
|
|
adds r0, r1
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
ldr r2, [sp, 0x8]
|
|
ldrh r1, [r2]
|
|
ldr r0, _080520E4
|
|
ands r0, r1
|
|
strh r0, [r2]
|
|
mov r3, r9
|
|
movs r1, 0x4
|
|
ldrsh r0, [r3, r1]
|
|
movs r2, 0x6
|
|
ldrsh r1, [r3, r2]
|
|
subs r1, 0x1
|
|
bl sub_80498A8
|
|
bl sub_8049B8C
|
|
bl sub_8049ED4
|
|
add r0, sp, 0x4
|
|
bl sub_80429FC
|
|
ldr r0, _080520E8
|
|
ldr r1, [r0]
|
|
mov r0, r9
|
|
bl SendMessage
|
|
movs r0, 0x14
|
|
movs r1, 0x3C
|
|
bl sub_803E708
|
|
b _080520F6
|
|
.align 2, 0
|
|
_080520C0: .4byte gDungeonGlobalData
|
|
_080520C4: .4byte 0x0000e250
|
|
_080520C8: .4byte 0x0000e254
|
|
_080520CC: .4byte 0x0000e258
|
|
_080520D0: .4byte 0x0000e25c
|
|
_080520D4: .4byte 0x0000e27c
|
|
_080520D8: .4byte 0x0000e280
|
|
_080520DC: .4byte 0x0000e87c
|
|
_080520E0: .4byte 0x00003a09
|
|
_080520E4: .4byte 0x0000efef
|
|
_080520E8: .4byte gUnknown_80FDDD0
|
|
_080520EC:
|
|
ldr r0, _08052108
|
|
ldr r1, [r0]
|
|
mov r0, r9
|
|
bl SendMessage
|
|
_080520F6:
|
|
add sp, 0x14
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08052108: .4byte gUnknown_80FDDF0
|
|
thumb_func_end sub_8051E7C
|
|
|
|
thumb_func_start sub_805210C
|
|
sub_805210C:
|
|
push {r4-r7,lr}
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
movs r3, 0
|
|
ldr r7, _080521B4
|
|
movs r4, 0x1
|
|
ldr r2, [r7]
|
|
_0805211A:
|
|
ldrb r1, [r2]
|
|
adds r0, r4, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0805212A
|
|
ldrb r0, [r2, 0x2]
|
|
cmp r0, r5
|
|
beq _080521C8
|
|
_0805212A:
|
|
adds r2, 0x4
|
|
adds r3, 0x1
|
|
cmp r3, 0x13
|
|
ble _0805211A
|
|
movs r3, 0
|
|
ldr r0, _080521B8
|
|
ldr r4, [r0]
|
|
movs r6, 0x1
|
|
_0805213A:
|
|
movs r0, 0x64
|
|
adds r2, r3, 0
|
|
muls r2, r0
|
|
adds r0, r2, r4
|
|
ldr r1, _080521BC
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
adds r0, r6, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0805216C
|
|
adds r0, r2, r4
|
|
ldr r1, _080521C0
|
|
adds r0, r1
|
|
ldrb r1, [r0]
|
|
adds r0, r6, 0
|
|
ands r0, r1
|
|
adds r1, r2, r4
|
|
cmp r0, 0
|
|
beq _0805216C
|
|
ldr r2, _080521C4
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, r5
|
|
beq _080521C8
|
|
_0805216C:
|
|
adds r3, 0x1
|
|
cmp r3, 0x3
|
|
ble _0805213A
|
|
movs r3, 0
|
|
ldr r0, _080521B8
|
|
ldr r4, [r0]
|
|
_08052178:
|
|
movs r0, 0x58
|
|
muls r0, r3
|
|
adds r2, r0, r4
|
|
ldrb r1, [r2]
|
|
movs r0, 0x1
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _08052196
|
|
adds r0, r2, 0
|
|
adds r0, 0x28
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _08052196
|
|
cmp r0, r5
|
|
beq _080521C8
|
|
_08052196:
|
|
adds r3, 0x1
|
|
movs r0, 0xCE
|
|
lsls r0, 1
|
|
cmp r3, r0
|
|
ble _08052178
|
|
ldr r0, [r7]
|
|
lsls r1, r5, 1
|
|
adds r0, 0x50
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
cmp r0, 0
|
|
bne _080521C8
|
|
movs r0, 0
|
|
b _080521CA
|
|
.align 2, 0
|
|
_080521B4: .4byte gTeamInventory_203B460
|
|
_080521B8: .4byte gRecruitedPokemonRef
|
|
_080521BC: .4byte 0x00008df8
|
|
_080521C0: .4byte 0x00008e38
|
|
_080521C4: .4byte 0x00008e3a
|
|
_080521C8:
|
|
movs r0, 0x1
|
|
_080521CA:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_805210C
|
|
|
|
thumb_func_start sub_80521D0
|
|
sub_80521D0:
|
|
push {r4-r6,lr}
|
|
movs r1, 0
|
|
ldr r5, _08052200
|
|
ldr r6, _08052204
|
|
ldr r4, _08052208
|
|
ldr r3, _0805220C
|
|
movs r2, 0
|
|
_080521DE:
|
|
ldr r0, [r4]
|
|
adds r0, r3
|
|
adds r0, r1
|
|
strb r2, [r0]
|
|
adds r1, 0x1
|
|
cmp r1, 0x9
|
|
ble _080521DE
|
|
movs r0, 0
|
|
str r0, [r5]
|
|
movs r0, 0x1
|
|
strb r0, [r6]
|
|
movs r0, 0
|
|
bl sub_8052210
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08052200: .4byte gUnknown_202F1E8
|
|
_08052204: .4byte gUnknown_203B434
|
|
_08052208: .4byte gDungeonGlobalData
|
|
_0805220C: .4byte 0x0001c054
|
|
thumb_func_end sub_80521D0
|
|
|
|
thumb_func_start sub_8052210
|
|
sub_8052210:
|
|
push {r4-r6,lr}
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
movs r4, 0
|
|
ldr r5, _08052280
|
|
_0805221A:
|
|
lsls r0, r4, 6
|
|
ldr r1, [r5]
|
|
adds r0, r1
|
|
ldr r1, _08052284
|
|
adds r0, r1
|
|
ldr r1, _08052288
|
|
bl strcpy
|
|
adds r4, 0x1
|
|
cmp r4, 0x9
|
|
ble _0805221A
|
|
ldr r1, _08052280
|
|
ldr r0, [r1]
|
|
ldr r2, _0805228C
|
|
adds r0, r2
|
|
movs r3, 0
|
|
strb r3, [r0]
|
|
ldr r0, [r1]
|
|
adds r2, 0x1
|
|
adds r1, r0, r2
|
|
strh r3, [r1]
|
|
adds r2, 0x2
|
|
adds r1, r0, r2
|
|
strh r3, [r1]
|
|
adds r2, 0x2
|
|
adds r1, r0, r2
|
|
strh r3, [r1]
|
|
ldr r1, _08052290
|
|
adds r2, r0, r1
|
|
movs r1, 0x4
|
|
strh r1, [r2]
|
|
ldr r2, _08052294
|
|
adds r0, r2
|
|
str r3, [r0]
|
|
cmp r6, 0
|
|
beq _08052278
|
|
ldr r0, _08052298
|
|
ldr r0, [r0]
|
|
cmp r0, 0x3
|
|
bne _08052278
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_803EAF0
|
|
movs r0, 0xB
|
|
bl sub_803E46C
|
|
_08052278:
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08052280: .4byte gDungeonGlobalData
|
|
_08052284: .4byte 0x0001bdd4
|
|
_08052288: .4byte gUnknown_80F7AE8
|
|
_0805228C: .4byte 0x0001c05f
|
|
_08052290: .4byte 0x0001c066
|
|
_08052294: .4byte 0x0001c06c
|
|
_08052298: .4byte gUnknown_202EDD0
|
|
thumb_func_end sub_8052210
|
|
|
|
.align 2,0
|