mirror of
https://github.com/pret/pmd-red.git
synced 2026-03-30 05:54:35 -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.
6041 lines
94 KiB
ArmAsm
6041 lines
94 KiB
ArmAsm
#include "asm/constants/gba_constants.inc"
|
|
#include "asm/macros.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_803D110
|
|
sub_803D110:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x6C
|
|
adds r6, r0, 0
|
|
mov r9, r1
|
|
adds r5, r2, 0
|
|
add r7, sp, 0x48
|
|
adds r2, r7, 0
|
|
movs r1, 0
|
|
mov r0, sp
|
|
adds r0, 0x69
|
|
_0803D12A:
|
|
strb r1, [r0]
|
|
subs r0, 0x1
|
|
cmp r0, r2
|
|
bge _0803D12A
|
|
movs r4, 0
|
|
cmp r4, r5
|
|
bge _0803D158
|
|
_0803D138:
|
|
ldrb r0, [r6]
|
|
bl sub_803D0F0
|
|
add r1, sp, 0x10
|
|
adds r1, r4
|
|
strb r0, [r1]
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0xFF
|
|
bne _0803D150
|
|
movs r0, 0
|
|
b _0803D19A
|
|
_0803D150:
|
|
adds r6, 0x1
|
|
adds r4, 0x1
|
|
cmp r4, r5
|
|
blt _0803D138
|
|
_0803D158:
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
adds r2, r0, 0x5
|
|
cmp r2, 0
|
|
bge _0803D164
|
|
adds r2, 0x7
|
|
_0803D164:
|
|
asrs r2, 3
|
|
mov r8, r2
|
|
mov r0, sp
|
|
adds r1, r7, 0
|
|
bl xxx_init_struct_8094924_save_809486C
|
|
movs r4, 0
|
|
cmp r4, r5
|
|
bge _0803D188
|
|
add r6, sp, 0x10
|
|
_0803D178:
|
|
adds r1, r6, r4
|
|
mov r0, sp
|
|
movs r2, 0x5
|
|
bl SaveIntegerBits
|
|
adds r4, 0x1
|
|
cmp r4, r5
|
|
blt _0803D178
|
|
_0803D188:
|
|
mov r0, sp
|
|
bl nullsub_102
|
|
mov r0, r9
|
|
adds r1, r7, 0
|
|
mov r2, r8
|
|
bl MemoryCopy8
|
|
movs r0, 0x1
|
|
_0803D19A:
|
|
add sp, 0x6C
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_803D110
|
|
|
|
thumb_func_start sub_803D1A8
|
|
sub_803D1A8:
|
|
push {r4-r7,lr}
|
|
sub sp, 0x48
|
|
adds r7, r0, 0
|
|
adds r5, r2, 0
|
|
lsls r0, r5, 2
|
|
adds r0, r5
|
|
adds r2, r0, 0x5
|
|
cmp r2, 0
|
|
bge _0803D1BC
|
|
adds r2, 0x7
|
|
_0803D1BC:
|
|
asrs r2, 3
|
|
mov r0, sp
|
|
bl xxx_init_struct_8094924_restore_809485C
|
|
movs r4, 0
|
|
cmp r4, r5
|
|
bge _0803D1DC
|
|
add r6, sp, 0x10
|
|
_0803D1CC:
|
|
adds r1, r6, r4
|
|
mov r0, sp
|
|
movs r2, 0x5
|
|
bl RestoreIntegerBits
|
|
adds r4, 0x1
|
|
cmp r4, r5
|
|
blt _0803D1CC
|
|
_0803D1DC:
|
|
mov r0, sp
|
|
bl nullsub_102
|
|
movs r4, 0
|
|
cmp r4, r5
|
|
bge _0803D1FC
|
|
add r6, sp, 0x10
|
|
_0803D1EA:
|
|
adds r0, r6, r4
|
|
ldrb r0, [r0]
|
|
bl sub_803D100
|
|
strb r0, [r7]
|
|
adds r7, 0x1
|
|
adds r4, 0x1
|
|
cmp r4, r5
|
|
blt _0803D1EA
|
|
_0803D1FC:
|
|
add sp, 0x48
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_803D1A8
|
|
|
|
thumb_func_start sub_803D204
|
|
sub_803D204:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0xA4
|
|
adds r2, r0, 0
|
|
mov r9, r1
|
|
movs r6, 0
|
|
add r4, sp, 0x5C
|
|
adds r0, r4, 0
|
|
adds r1, r2, 0
|
|
movs r2, 0x36
|
|
bl MemoryCopy8
|
|
movs r2, 0
|
|
mov r8, r4
|
|
add r5, sp, 0x24
|
|
ldr r4, _0803D2A8
|
|
mov r12, r4
|
|
mov r10, r5
|
|
_0803D22E:
|
|
movs r1, 0
|
|
mov r3, r12
|
|
adds r0, r2, r3
|
|
adds r3, r2, 0x1
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
beq _0803D24A
|
|
adds r0, r2, r4
|
|
_0803D23E:
|
|
adds r1, 0x1
|
|
cmp r1, 0x35
|
|
bgt _0803D24A
|
|
ldrb r7, [r0]
|
|
cmp r1, r7
|
|
bne _0803D23E
|
|
_0803D24A:
|
|
mov r7, r10
|
|
adds r0, r7, r2
|
|
add r1, r8
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, r3, 0
|
|
cmp r2, 0x35
|
|
ble _0803D22E
|
|
adds r0, r5, 0
|
|
mov r1, sp
|
|
movs r2, 0x36
|
|
bl sub_803D110
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803D2AC
|
|
movs r2, 0x1
|
|
_0803D26C:
|
|
mov r1, sp
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
adds r0, r2
|
|
adds r0, r6, r0
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
adds r2, 0x1
|
|
cmp r2, 0x21
|
|
ble _0803D26C
|
|
mov r0, sp
|
|
ldrb r0, [r0]
|
|
cmp r0, r6
|
|
bne _0803D2AC
|
|
add r4, sp, 0x94
|
|
adds r1, 0x1
|
|
adds r0, r4, 0
|
|
movs r2, 0x21
|
|
bl xxx_init_struct_8094924_restore_809485C
|
|
adds r0, r4, 0
|
|
mov r1, r9
|
|
bl sub_8095774
|
|
adds r0, r4, 0
|
|
bl nullsub_102
|
|
movs r0, 0x1
|
|
b _0803D2AE
|
|
.align 2, 0
|
|
_0803D2A8: .4byte gUnknown_80F43F0
|
|
_0803D2AC:
|
|
movs r0, 0
|
|
_0803D2AE:
|
|
add sp, 0xA4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_803D204
|
|
|
|
thumb_func_start sub_803D2C0
|
|
sub_803D2C0:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0xA4
|
|
mov r9, r0
|
|
adds r6, r1, 0
|
|
movs r5, 0
|
|
add r4, sp, 0x94
|
|
mov r1, sp
|
|
adds r1, 0x1
|
|
add r7, sp, 0x24
|
|
add r0, sp, 0x5C
|
|
mov r8, r0
|
|
movs r2, 0
|
|
mov r0, sp
|
|
adds r0, 0x21
|
|
_0803D2E2:
|
|
strb r2, [r0]
|
|
subs r0, 0x1
|
|
cmp r0, sp
|
|
bge _0803D2E2
|
|
adds r0, r4, 0
|
|
movs r2, 0x21
|
|
bl xxx_init_struct_8094924_save_809486C
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl sub_8095824
|
|
adds r0, r4, 0
|
|
bl nullsub_102
|
|
movs r2, 0x1
|
|
_0803D302:
|
|
mov r1, sp
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
adds r0, r2
|
|
adds r0, r5, r0
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r2, 0x1
|
|
cmp r2, 0x21
|
|
ble _0803D302
|
|
mov r0, sp
|
|
strb r5, [r0]
|
|
adds r0, r7, 0
|
|
movs r2, 0x36
|
|
bl sub_803D1A8
|
|
movs r2, 0
|
|
mov r4, r8
|
|
ldr r5, _0803D354
|
|
adds r3, r7, 0
|
|
_0803D32A:
|
|
adds r0, r2, r5
|
|
ldrb r1, [r0]
|
|
adds r1, r4, r1
|
|
adds r0, r3, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r2, 0x1
|
|
cmp r2, 0x35
|
|
ble _0803D32A
|
|
mov r0, r9
|
|
mov r1, r8
|
|
movs r2, 0x36
|
|
bl MemoryCopy8
|
|
add sp, 0xA4
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803D354: .4byte gUnknown_80F43F0
|
|
thumb_func_end sub_803D2C0
|
|
|
|
thumb_func_start DecodeWonderMailPassword
|
|
DecodeWonderMailPassword:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x50
|
|
adds r2, r0, 0
|
|
mov r9, r1
|
|
movs r6, 0
|
|
add r4, sp, 0x28
|
|
adds r0, r4, 0
|
|
adds r1, r2, 0
|
|
movs r2, 0x18
|
|
bl MemoryCopy8
|
|
movs r2, 0
|
|
mov r8, r4
|
|
add r5, sp, 0x10
|
|
ldr r4, _0803D3FC
|
|
mov r12, r4
|
|
mov r10, r5
|
|
_0803D382:
|
|
movs r1, 0
|
|
mov r3, r12
|
|
adds r0, r2, r3
|
|
adds r3, r2, 0x1
|
|
ldrb r0, [r0]
|
|
cmp r1, r0
|
|
beq _0803D39E
|
|
adds r0, r2, r4
|
|
_0803D392:
|
|
adds r1, 0x1
|
|
cmp r1, 0x17
|
|
bgt _0803D39E
|
|
ldrb r7, [r0]
|
|
cmp r1, r7
|
|
bne _0803D392
|
|
_0803D39E:
|
|
mov r7, r10
|
|
adds r0, r7, r2
|
|
add r1, r8
|
|
ldrb r1, [r1]
|
|
strb r1, [r0]
|
|
adds r2, r3, 0
|
|
cmp r2, 0x17
|
|
ble _0803D382
|
|
adds r0, r5, 0
|
|
mov r1, sp
|
|
movs r2, 0x18
|
|
bl sub_803D110
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803D400
|
|
movs r2, 0x1
|
|
_0803D3C0:
|
|
mov r1, sp
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
adds r0, r2
|
|
adds r0, r6, r0
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
adds r2, 0x1
|
|
cmp r2, 0xE
|
|
ble _0803D3C0
|
|
mov r0, sp
|
|
ldrb r0, [r0]
|
|
cmp r0, r6
|
|
bne _0803D400
|
|
add r4, sp, 0x40
|
|
adds r1, 0x1
|
|
adds r0, r4, 0
|
|
movs r2, 0xC
|
|
bl xxx_init_struct_8094924_restore_809485C
|
|
adds r0, r4, 0
|
|
mov r1, r9
|
|
bl sub_80971EC
|
|
adds r0, r4, 0
|
|
bl nullsub_102
|
|
movs r0, 0x1
|
|
b _0803D402
|
|
.align 2, 0
|
|
_0803D3FC: .4byte gUnknown_80F4426
|
|
_0803D400:
|
|
movs r0, 0
|
|
_0803D402:
|
|
add sp, 0x50
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end DecodeWonderMailPassword
|
|
|
|
thumb_func_start sub_803D414
|
|
sub_803D414:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x50
|
|
mov r9, r0
|
|
adds r6, r1, 0
|
|
movs r5, 0
|
|
add r4, sp, 0x40
|
|
mov r1, sp
|
|
adds r1, 0x1
|
|
add r7, sp, 0x10
|
|
add r0, sp, 0x28
|
|
mov r8, r0
|
|
movs r2, 0
|
|
mov r0, sp
|
|
adds r0, 0xE
|
|
_0803D436:
|
|
strb r2, [r0]
|
|
subs r0, 0x1
|
|
cmp r0, sp
|
|
bge _0803D436
|
|
adds r0, r4, 0
|
|
movs r2, 0xC
|
|
bl xxx_init_struct_8094924_save_809486C
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
bl sub_8097270
|
|
adds r0, r4, 0
|
|
bl nullsub_102
|
|
movs r2, 0x1
|
|
_0803D456:
|
|
mov r1, sp
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
adds r0, r2
|
|
adds r0, r5, r0
|
|
lsls r0, 24
|
|
lsrs r5, r0, 24
|
|
adds r2, 0x1
|
|
cmp r2, 0xE
|
|
ble _0803D456
|
|
mov r0, sp
|
|
strb r5, [r0]
|
|
adds r0, r7, 0
|
|
movs r2, 0x18
|
|
bl sub_803D1A8
|
|
movs r2, 0
|
|
mov r4, r8
|
|
ldr r5, _0803D4A8
|
|
adds r3, r7, 0
|
|
_0803D47E:
|
|
adds r0, r2, r5
|
|
ldrb r1, [r0]
|
|
adds r1, r4, r1
|
|
adds r0, r3, r2
|
|
ldrb r0, [r0]
|
|
strb r0, [r1]
|
|
adds r2, 0x1
|
|
cmp r2, 0x17
|
|
ble _0803D47E
|
|
mov r0, r9
|
|
mov r1, r8
|
|
movs r2, 0x18
|
|
bl MemoryCopy8
|
|
add sp, 0x50
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803D4A8: .4byte gUnknown_80F4426
|
|
thumb_func_end sub_803D414
|
|
|
|
thumb_func_start sub_803D4AC
|
|
sub_803D4AC:
|
|
ldr r2, _0803D4C4
|
|
ldr r0, [r2]
|
|
ldr r1, _0803D4C8
|
|
adds r0, r1
|
|
movs r1, 0x63
|
|
strb r1, [r0]
|
|
ldr r0, [r2]
|
|
ldr r1, _0803D4CC
|
|
adds r0, r1
|
|
movs r1, 0xFF
|
|
strb r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_0803D4C4: .4byte gDungeonGlobalData
|
|
_0803D4C8: .4byte 0x0001c570
|
|
_0803D4CC: .4byte 0x0001c571
|
|
thumb_func_end sub_803D4AC
|
|
|
|
thumb_func_start sub_803D4D0
|
|
sub_803D4D0:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x1FC
|
|
ldr r6, _0803D654
|
|
ldr r1, [r6]
|
|
movs r4, 0xC9
|
|
lsls r4, 3
|
|
adds r0, r1, r4
|
|
ldr r2, _0803D658
|
|
adds r1, r2
|
|
bl sub_80901D8
|
|
ldr r0, [r6]
|
|
ldr r3, _0803D65C
|
|
adds r2, r0, r3
|
|
adds r1, r0, r4
|
|
ldrh r0, [r2]
|
|
ldrh r4, [r1]
|
|
cmp r0, r4
|
|
bne _0803D500
|
|
b _0803D6E0
|
|
_0803D500:
|
|
ldr r0, [r1]
|
|
str r0, [r2]
|
|
ldr r0, _0803D660
|
|
ldr r1, _0803D664
|
|
bl OpenFileAndGetFileDataPtr
|
|
mov r9, r0
|
|
ldr r3, [r0, 0x4]
|
|
ldr r2, [r6]
|
|
ldr r7, _0803D65C
|
|
adds r0, r2, r7
|
|
ldrb r1, [r0]
|
|
ldr r0, [r3]
|
|
lsls r1, 2
|
|
adds r1, r0
|
|
ldr r3, _0803D668
|
|
adds r0, r2, r3
|
|
ldrb r0, [r0]
|
|
lsls r0, 4
|
|
ldr r1, [r1]
|
|
adds r1, r0
|
|
mov r8, r1
|
|
ldr r4, _0803D658
|
|
adds r2, r4
|
|
ldrb r0, [r2]
|
|
bl sub_8090298
|
|
ldr r1, [r6]
|
|
ldr r7, _0803D66C
|
|
adds r1, r7
|
|
strb r0, [r1]
|
|
ldr r0, [r6]
|
|
adds r0, r4
|
|
ldrb r0, [r0]
|
|
bl sub_80902C8
|
|
ldr r1, [r6]
|
|
strh r0, [r1, 0x14]
|
|
mov r2, r9
|
|
ldr r0, [r2, 0x4]
|
|
mov r3, r8
|
|
movs r4, 0
|
|
ldrsh r2, [r3, r4]
|
|
ldr r3, [r0, 0x4]
|
|
lsls r0, r2, 3
|
|
subs r0, r2
|
|
lsls r0, 2
|
|
ldr r7, _0803D670
|
|
adds r1, r7
|
|
adds r0, r3
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldm r0!, {r2,r3,r7}
|
|
stm r1!, {r2,r3,r7}
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
movs r5, 0
|
|
mov r10, r6
|
|
ldr r4, _0803D674
|
|
_0803D576:
|
|
mov r6, r10
|
|
ldr r2, [r6]
|
|
lsls r3, r5, 1
|
|
adds r2, r4
|
|
adds r2, r3
|
|
mov r7, r9
|
|
ldr r1, [r7, 0x4]
|
|
mov r6, r8
|
|
movs r7, 0x4
|
|
ldrsh r0, [r6, r7]
|
|
ldr r1, [r1, 0x10]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
adds r3, r0
|
|
ldrh r0, [r3]
|
|
strh r0, [r2]
|
|
adds r5, 0x1
|
|
cmp r5, 0x13
|
|
ble _0803D576
|
|
movs r5, 0
|
|
adds r6, 0x6
|
|
str r6, [sp, 0x1F8]
|
|
ldr r6, _0803D678
|
|
mov r10, r6
|
|
_0803D5A8:
|
|
ldr r1, _0803D654
|
|
ldr r0, [r1]
|
|
lsls r3, r5, 3
|
|
mov r2, r10
|
|
adds r4, r0, r2
|
|
adds r4, r3
|
|
mov r12, r4
|
|
mov r4, r9
|
|
ldr r2, [r4, 0x4]
|
|
mov r7, r8
|
|
movs r4, 0x2
|
|
ldrsh r1, [r7, r4]
|
|
ldr r2, [r2, 0xC]
|
|
lsls r1, 2
|
|
adds r1, r2
|
|
ldr r1, [r1]
|
|
adds r3, r1
|
|
ldr r1, [r3]
|
|
ldr r2, [r3, 0x4]
|
|
mov r7, r12
|
|
str r1, [r7]
|
|
str r2, [r7, 0x4]
|
|
adds r0, r6
|
|
bl ExtractSpeciesIndex
|
|
lsls r0, 16
|
|
cmp r0, 0
|
|
beq _0803D5E8
|
|
adds r6, 0x8
|
|
adds r5, 0x1
|
|
cmp r5, 0x1E
|
|
ble _0803D5A8
|
|
_0803D5E8:
|
|
cmp r5, 0x1F
|
|
bgt _0803D606
|
|
ldr r6, _0803D654
|
|
lsls r0, r5, 3
|
|
ldr r1, _0803D678
|
|
adds r4, r0, r1
|
|
_0803D5F4:
|
|
ldr r0, [r6]
|
|
adds r0, r4
|
|
movs r1, 0
|
|
bl sub_808E9C4
|
|
adds r4, 0x8
|
|
adds r5, 0x1
|
|
cmp r5, 0x1F
|
|
ble _0803D5F4
|
|
_0803D606:
|
|
movs r5, 0
|
|
ldr r2, _0803D67C
|
|
mov r10, r2
|
|
_0803D60C:
|
|
mov r3, r9
|
|
ldr r1, [r3, 0x4]
|
|
lsls r0, r5, 1
|
|
ldr r4, [sp, 0x1F8]
|
|
adds r0, r4, r0
|
|
movs r6, 0
|
|
ldrsh r0, [r0, r6]
|
|
ldr r1, [r1, 0x8]
|
|
lsls r0, 2
|
|
adds r0, r1
|
|
movs r4, 0
|
|
adds r7, r5, 0x1
|
|
mov r8, r7
|
|
lsls r1, r5, 6
|
|
mov r12, r1
|
|
ldr r3, [r0]
|
|
mov r2, sp
|
|
_0803D62E:
|
|
ldrh r0, [r3]
|
|
cmp r0, r10
|
|
bls _0803D684
|
|
ldrh r0, [r3]
|
|
ldr r6, _0803D680
|
|
adds r1, r0, r6
|
|
cmp r1, 0
|
|
beq _0803D68A
|
|
movs r6, 0
|
|
lsls r0, r4, 1
|
|
add r0, sp
|
|
_0803D644:
|
|
strh r6, [r0]
|
|
adds r0, 0x2
|
|
adds r2, 0x2
|
|
adds r4, 0x1
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bne _0803D644
|
|
b _0803D68A
|
|
.align 2, 0
|
|
_0803D654: .4byte gDungeonGlobalData
|
|
_0803D658: .4byte 0x00000644
|
|
_0803D65C: .4byte 0x0001c570
|
|
_0803D660: .4byte gUnknown_80F4D8C
|
|
_0803D664: .4byte gDungeonFileArchive
|
|
_0803D668: .4byte 0x0001c571
|
|
_0803D66C: .4byte 0x0001cec8
|
|
_0803D670: .4byte 0x0001c574
|
|
_0803D674: .4byte 0x0001cd70
|
|
_0803D678: .4byte 0x0001cd98
|
|
_0803D67C: .4byte 0x0000752f
|
|
_0803D680: .4byte 0xffff8ad0
|
|
_0803D684:
|
|
strh r0, [r2]
|
|
adds r2, 0x2
|
|
adds r4, 0x1
|
|
_0803D68A:
|
|
adds r3, 0x2
|
|
cmp r4, 0xFB
|
|
ble _0803D62E
|
|
ldr r7, _0803D6F0
|
|
mov r1, r12
|
|
subs r0, r1, r5
|
|
movs r4, 0xB
|
|
mov r3, sp
|
|
lsls r2, r0, 3
|
|
ldr r6, _0803D6F4
|
|
_0803D69E:
|
|
ldr r0, [r7]
|
|
adds r0, r6
|
|
adds r0, r2
|
|
ldrh r1, [r3]
|
|
strh r1, [r0]
|
|
adds r3, 0x2
|
|
adds r2, 0x2
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bge _0803D69E
|
|
ldr r6, _0803D6F0
|
|
mov r2, r12
|
|
subs r0, r2, r5
|
|
lsls r3, r0, 3
|
|
add r2, sp, 0x18
|
|
ldr r5, _0803D6F8
|
|
movs r4, 0xEF
|
|
_0803D6C0:
|
|
ldr r0, [r6]
|
|
adds r0, r5
|
|
adds r0, r3
|
|
ldrh r1, [r2]
|
|
strh r1, [r0]
|
|
adds r2, 0x2
|
|
adds r3, 0x2
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bge _0803D6C0
|
|
mov r5, r8
|
|
cmp r5, 0x3
|
|
ble _0803D60C
|
|
mov r0, r9
|
|
bl CloseFile
|
|
_0803D6E0:
|
|
add sp, 0x1FC
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803D6F0: .4byte gDungeonGlobalData
|
|
_0803D6F4: .4byte 0x0001c590
|
|
_0803D6F8: .4byte 0x0001c5a8
|
|
thumb_func_end sub_803D4D0
|
|
|
|
thumb_func_start sub_803D6FC
|
|
sub_803D6FC:
|
|
push {r4,lr}
|
|
ldr r0, _0803D720
|
|
bl DungeonRandomCapped
|
|
adds r3, r0, 0
|
|
movs r2, 0
|
|
ldr r0, _0803D724
|
|
ldr r0, [r0]
|
|
ldr r4, _0803D728
|
|
adds r1, r0, r4
|
|
_0803D710:
|
|
ldrh r0, [r1]
|
|
cmp r0, 0
|
|
beq _0803D72C
|
|
cmp r0, r3
|
|
blt _0803D72C
|
|
lsls r0, r2, 24
|
|
lsrs r0, 24
|
|
b _0803D736
|
|
.align 2, 0
|
|
_0803D720: .4byte 0x00002710
|
|
_0803D724: .4byte gDungeonGlobalData
|
|
_0803D728: .4byte 0x0001cd70
|
|
_0803D72C:
|
|
adds r1, 0x2
|
|
adds r2, 0x1
|
|
cmp r2, 0x13
|
|
ble _0803D710
|
|
movs r0, 0x10
|
|
_0803D736:
|
|
pop {r4}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_803D6FC
|
|
|
|
thumb_func_start sub_803D73C
|
|
sub_803D73C:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x8
|
|
adds r4, r0, 0
|
|
ldr r0, _0803D784
|
|
bl DungeonRandomCapped
|
|
adds r7, r0, 0
|
|
movs r0, 0xC
|
|
mov r8, r0
|
|
movs r6, 0
|
|
ldr r0, _0803D788
|
|
ldr r2, [r0]
|
|
lsls r1, r4, 6
|
|
subs r0, r1, r4
|
|
adds r5, r1, 0
|
|
lsls r0, 3
|
|
ldr r1, _0803D78C
|
|
adds r2, r1
|
|
adds r1, r0, r2
|
|
_0803D766:
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
beq _0803D772
|
|
cmp r0, r7
|
|
bge _0803D790
|
|
_0803D772:
|
|
adds r1, 0x2
|
|
adds r6, 0x1
|
|
cmp r6, 0xB
|
|
ble _0803D766
|
|
_0803D77A:
|
|
mov r0, r8
|
|
cmp r0, 0xC
|
|
bne _0803D79C
|
|
b _0803D7EC
|
|
.align 2, 0
|
|
_0803D784: .4byte 0x00002710
|
|
_0803D788: .4byte gDungeonGlobalData
|
|
_0803D78C: .4byte 0x0001c590
|
|
_0803D790:
|
|
lsls r0, r6, 24
|
|
lsrs r0, 24
|
|
mov r8, r0
|
|
b _0803D77A
|
|
_0803D798:
|
|
adds r0, r5, 0
|
|
b _0803D7EE
|
|
_0803D79C:
|
|
ldr r0, _0803D7FC
|
|
bl DungeonRandomCapped
|
|
adds r7, r0, 0
|
|
movs r6, 0
|
|
ldr r2, _0803D800
|
|
subs r0, r5, r4
|
|
ldr r1, _0803D804
|
|
lsls r4, r0, 3
|
|
_0803D7AE:
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
adds r0, r4
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
cmp r0, 0
|
|
beq _0803D7E4
|
|
lsls r0, r6, 24
|
|
lsrs r5, r0, 24
|
|
adds r0, r5, 0
|
|
str r1, [sp]
|
|
str r2, [sp, 0x4]
|
|
bl GetItemType
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
ldr r1, [sp]
|
|
ldr r2, [sp, 0x4]
|
|
cmp r0, r8
|
|
bne _0803D7E4
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
adds r0, r4
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
cmp r0, r7
|
|
bge _0803D798
|
|
_0803D7E4:
|
|
adds r4, 0x2
|
|
adds r6, 0x1
|
|
cmp r6, 0xEF
|
|
ble _0803D7AE
|
|
_0803D7EC:
|
|
movs r0, 0x69
|
|
_0803D7EE:
|
|
add sp, 0x8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0803D7FC: .4byte 0x00002710
|
|
_0803D800: .4byte gDungeonGlobalData
|
|
_0803D804: .4byte 0x0001c5a8
|
|
thumb_func_end sub_803D73C
|
|
|
|
thumb_func_start sub_803D808
|
|
sub_803D808:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x4
|
|
adds r7, r1, 0
|
|
movs r6, 0
|
|
ldr r2, _0803D820
|
|
lsls r1, r7, 3
|
|
adds r1, r0
|
|
mov r8, r1
|
|
b _0803D840
|
|
.align 2, 0
|
|
_0803D820: .4byte 0x0001cd98
|
|
_0803D824:
|
|
ldr r0, [r5]
|
|
ldr r1, _0803D868
|
|
adds r0, r1
|
|
adds r0, r4
|
|
ldr r1, [r0, 0x4]
|
|
ldr r0, [r0]
|
|
mov r3, r8
|
|
adds r3, 0x8
|
|
mov r8, r3
|
|
subs r3, 0x8
|
|
stm r3!, {r0,r1}
|
|
adds r7, 0x1
|
|
adds r2, 0x8
|
|
adds r6, 0x1
|
|
_0803D840:
|
|
cmp r6, 0x1F
|
|
bgt _0803D85A
|
|
ldr r5, _0803D86C
|
|
lsls r4, r6, 3
|
|
ldr r0, [r5]
|
|
adds r0, r2
|
|
str r2, [sp]
|
|
bl ExtractSpeciesIndex
|
|
lsls r0, 16
|
|
ldr r2, [sp]
|
|
cmp r0, 0
|
|
bne _0803D824
|
|
_0803D85A:
|
|
adds r0, r7, 0
|
|
add sp, 0x4
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0803D868: .4byte 0x0001cd98
|
|
_0803D86C: .4byte gDungeonGlobalData
|
|
thumb_func_end sub_803D808
|
|
|
|
thumb_func_start sub_803D870
|
|
sub_803D870:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
adds r6, r1, 0
|
|
movs r5, 0
|
|
lsls r1, r6, 3
|
|
adds r1, r0
|
|
mov r9, r1
|
|
b _0803D8B8
|
|
_0803D884:
|
|
bl GetPokemonSize
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0x1
|
|
bhi _0803D8B6
|
|
ldr r1, [r7]
|
|
adds r0, r1, r4
|
|
ldr r2, _0803D8E4
|
|
adds r0, r2
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
cmp r0, 0
|
|
beq _0803D8B6
|
|
mov r2, r8
|
|
adds r0, r1, r2
|
|
adds r0, r4
|
|
ldr r1, [r0, 0x4]
|
|
ldr r0, [r0]
|
|
mov r2, r9
|
|
adds r2, 0x8
|
|
mov r9, r2
|
|
subs r2, 0x8
|
|
stm r2!, {r0,r1}
|
|
adds r6, 0x1
|
|
_0803D8B6:
|
|
adds r5, 0x1
|
|
_0803D8B8:
|
|
cmp r5, 0x1F
|
|
bgt _0803D8D6
|
|
ldr r7, _0803D8E8
|
|
lsls r4, r5, 3
|
|
ldr r0, _0803D8EC
|
|
mov r8, r0
|
|
adds r1, r4, r0
|
|
ldr r0, [r7]
|
|
adds r0, r1
|
|
bl ExtractSpeciesIndex
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
bne _0803D884
|
|
_0803D8D6:
|
|
adds r0, r6, 0
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0803D8E4: .4byte 0x0001cd9a
|
|
_0803D8E8: .4byte gDungeonGlobalData
|
|
_0803D8EC: .4byte 0x0001cd98
|
|
thumb_func_end sub_803D870
|
|
|
|
thumb_func_start sub_803D8F0
|
|
sub_803D8F0:
|
|
push {r4,lr}
|
|
ldr r4, _0803D920
|
|
ldr r0, [r4]
|
|
ldr r2, _0803D924
|
|
adds r1, r0, r2
|
|
ldrb r0, [r1]
|
|
cmp r0, 0
|
|
bne _0803D918
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r0, [r4]
|
|
ldr r1, _0803D928
|
|
adds r0, r1
|
|
movs r1, 0
|
|
bl sub_803D808
|
|
ldr r1, [r4]
|
|
ldr r2, _0803D92C
|
|
adds r1, r2
|
|
str r0, [r1]
|
|
_0803D918:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803D920: .4byte gDungeonGlobalData
|
|
_0803D924: .4byte 0x000037ec
|
|
_0803D928: .4byte 0x0000343c
|
|
_0803D92C: .4byte 0x000037e4
|
|
thumb_func_end sub_803D8F0
|
|
|
|
thumb_func_start sub_803D930
|
|
sub_803D930:
|
|
push {r4-r7,lr}
|
|
lsls r0, 16
|
|
asrs r6, r0, 16
|
|
movs r5, 0
|
|
ldr r7, _0803D940
|
|
ldr r4, _0803D944
|
|
b _0803D954
|
|
.align 2, 0
|
|
_0803D940: .4byte gDungeonGlobalData
|
|
_0803D944: .4byte 0x0001cd98
|
|
_0803D948:
|
|
cmp r0, r6
|
|
bne _0803D950
|
|
movs r0, 0x1
|
|
b _0803D96A
|
|
_0803D950:
|
|
adds r4, 0x8
|
|
adds r5, 0x1
|
|
_0803D954:
|
|
cmp r5, 0x1F
|
|
bgt _0803D968
|
|
ldr r0, [r7]
|
|
adds r0, r4
|
|
bl ExtractSpeciesIndex
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, 0
|
|
bne _0803D948
|
|
_0803D968:
|
|
movs r0, 0
|
|
_0803D96A:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_803D930
|
|
|
|
thumb_func_start sub_803D970
|
|
sub_803D970:
|
|
push {r4-r7,lr}
|
|
adds r5, r0, 0
|
|
ldr r0, _0803D9EC
|
|
bl DungeonRandomCapped
|
|
adds r6, r0, 0
|
|
movs r3, 0
|
|
ldr r1, _0803D9F0
|
|
ldr r0, [r1]
|
|
ldr r2, _0803D9F4
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
cmp r3, r0
|
|
bge _0803D9BA
|
|
ldr r4, _0803D9F8
|
|
_0803D98E:
|
|
ldr r2, [r1]
|
|
lsls r1, r5, 1
|
|
lsls r0, r3, 3
|
|
adds r1, r0
|
|
ldr r7, _0803D9FC
|
|
adds r0, r2, r7
|
|
adds r1, r0, r1
|
|
movs r7, 0
|
|
ldrsh r0, [r1, r7]
|
|
cmp r0, 0
|
|
beq _0803D9A8
|
|
cmp r0, r6
|
|
bge _0803D9E0
|
|
_0803D9A8:
|
|
adds r4, 0x8
|
|
adds r3, 0x1
|
|
ldr r1, _0803D9F0
|
|
ldr r0, [r1]
|
|
ldr r2, _0803D9F4
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
cmp r3, r0
|
|
blt _0803D98E
|
|
_0803D9BA:
|
|
movs r3, 0
|
|
ldr r0, _0803D9F0
|
|
ldr r1, [r0]
|
|
ldr r7, _0803D9F4
|
|
adds r1, r7
|
|
ldr r1, [r1]
|
|
adds r6, r0, 0
|
|
cmp r3, r1
|
|
bge _0803DA10
|
|
ldr r4, _0803D9F8
|
|
lsls r1, r5, 1
|
|
_0803D9D0:
|
|
ldr r2, [r6]
|
|
ldr r5, _0803D9FC
|
|
adds r0, r2, r5
|
|
adds r0, r1
|
|
movs r7, 0
|
|
ldrsh r0, [r0, r7]
|
|
cmp r0, 0
|
|
beq _0803DA00
|
|
_0803D9E0:
|
|
adds r0, r2, r4
|
|
bl ExtractSpeciesIndex
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
b _0803DA14
|
|
.align 2, 0
|
|
_0803D9EC: .4byte 0x00002710
|
|
_0803D9F0: .4byte gDungeonGlobalData
|
|
_0803D9F4: .4byte 0x000037e4
|
|
_0803D9F8: .4byte 0x0000343c
|
|
_0803D9FC: .4byte 0x0000343e
|
|
_0803DA00:
|
|
adds r4, 0x8
|
|
adds r1, 0x8
|
|
adds r3, 0x1
|
|
ldr r5, _0803DA1C
|
|
adds r0, r2, r5
|
|
ldr r0, [r0]
|
|
cmp r3, r0
|
|
blt _0803D9D0
|
|
_0803DA10:
|
|
movs r0, 0xBE
|
|
lsls r0, 1
|
|
_0803DA14:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0803DA1C: .4byte 0x000037e4
|
|
thumb_func_end sub_803D970
|
|
|
|
thumb_func_start sub_803DA20
|
|
sub_803DA20:
|
|
push {r4-r7,lr}
|
|
lsls r0, 16
|
|
asrs r7, r0, 16
|
|
movs r5, 0
|
|
ldr r1, _0803DA54
|
|
ldr r0, [r1]
|
|
ldr r2, _0803DA58
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
cmp r5, r0
|
|
bge _0803DA70
|
|
adds r6, r1, 0
|
|
ldr r4, _0803DA5C
|
|
_0803DA3A:
|
|
ldr r0, [r6]
|
|
adds r0, r4
|
|
bl ExtractSpeciesIndex
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
cmp r0, r7
|
|
bne _0803DA60
|
|
ldr r0, [r6]
|
|
adds r0, r4
|
|
bl ExtractLevel
|
|
b _0803DA72
|
|
.align 2, 0
|
|
_0803DA54: .4byte gDungeonGlobalData
|
|
_0803DA58: .4byte 0x000037e4
|
|
_0803DA5C: .4byte 0x0000343c
|
|
_0803DA60:
|
|
adds r4, 0x8
|
|
adds r5, 0x1
|
|
ldr r0, [r6]
|
|
ldr r1, _0803DA78
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
cmp r5, r0
|
|
blt _0803DA3A
|
|
_0803DA70:
|
|
movs r0, 0x1
|
|
_0803DA72:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0803DA78: .4byte 0x000037e4
|
|
thumb_func_end sub_803DA20
|
|
|
|
thumb_func_start ShowDungeonNameBanner
|
|
ShowDungeonNameBanner:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x68
|
|
ldr r0, _0803DB84
|
|
ldr r4, _0803DB88
|
|
adds r1, r4, 0
|
|
bl OpenFileAndGetFileDataPtr
|
|
ldr r5, _0803DB8C
|
|
str r0, [r5]
|
|
ldr r0, _0803DB90
|
|
adds r1, r4, 0
|
|
bl OpenFileAndGetFileDataPtr
|
|
ldr r1, _0803DB94
|
|
str r0, [r1]
|
|
ldr r1, _0803DB98
|
|
ldr r0, [r0, 0x4]
|
|
ldr r0, [r0, 0x4]
|
|
str r0, [r1]
|
|
movs r4, 0
|
|
_0803DAAA:
|
|
adds r0, r4, 0
|
|
adds r0, 0xE0
|
|
ldr r1, [r5]
|
|
lsls r2, r4, 2
|
|
ldr r1, [r1, 0x4]
|
|
adds r1, r2
|
|
bl SetBGPaletteBufferColorArray
|
|
adds r4, 0x1
|
|
cmp r4, 0xF
|
|
ble _0803DAAA
|
|
ldr r0, _0803DB9C
|
|
movs r1, 0xE0
|
|
lsls r1, 5
|
|
bl CpuClear
|
|
bl sub_80848EC
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803DAD6
|
|
b _0803DBEA
|
|
_0803DAD6:
|
|
ldr r0, _0803DBA0
|
|
ldr r0, [r0]
|
|
ldr r1, _0803DBA4
|
|
adds r2, r0, r1
|
|
movs r3, 0x14
|
|
ldrsh r1, [r0, r3]
|
|
ldrb r2, [r2]
|
|
adds r2, r1
|
|
mov r8, r2
|
|
ldr r1, _0803DBA8
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bl GetDungeonName2
|
|
mov r9, r0
|
|
movs r5, 0xA
|
|
movs r0, 0
|
|
_0803DAF8:
|
|
movs r4, 0
|
|
adds r6, r0, 0x4
|
|
adds r7, r0, 0x1
|
|
_0803DAFE:
|
|
adds r4, 0x1
|
|
ldr r3, _0803DBAC
|
|
adds r0, r3, 0
|
|
adds r2, r5, 0
|
|
orrs r2, r0
|
|
lsls r2, 16
|
|
lsrs r2, 16
|
|
adds r0, r4, 0
|
|
adds r1, r6, 0
|
|
movs r3, 0
|
|
bl sub_8008DC8
|
|
adds r5, 0x1
|
|
cmp r4, 0x1B
|
|
ble _0803DAFE
|
|
adds r0, r7, 0
|
|
cmp r0, 0x7
|
|
ble _0803DAF8
|
|
mov r0, r9
|
|
bl CalcStringWidth
|
|
movs r1, 0xE0
|
|
subs r1, r0
|
|
lsrs r0, r1, 31
|
|
adds r1, r0
|
|
asrs r1, 1
|
|
mov r0, r9
|
|
movs r2, 0
|
|
bl sub_803DC14
|
|
adds r7, r0, 0
|
|
ldr r0, _0803DBA0
|
|
ldr r0, [r0]
|
|
ldr r1, _0803DBA8
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
bl GetStairDirection
|
|
lsls r0, 24
|
|
ldr r6, _0803DBB0
|
|
cmp r0, 0
|
|
beq _0803DB54
|
|
ldr r6, _0803DBB4
|
|
_0803DB54:
|
|
mov r3, r8
|
|
cmp r3, 0x9
|
|
ble _0803DBBC
|
|
ldr r5, _0803DBB8
|
|
mov r0, r8
|
|
movs r1, 0xA
|
|
bl __divsi3
|
|
adds r4, r0, 0
|
|
adds r4, 0x30
|
|
mov r0, r8
|
|
movs r1, 0xA
|
|
bl __modsi3
|
|
adds r0, 0x30
|
|
str r0, [sp]
|
|
add r0, sp, 0x4
|
|
adds r1, r5, 0
|
|
adds r2, r6, 0
|
|
adds r3, r4, 0
|
|
bl ExpandPlaceholdersBuffer
|
|
b _0803DBCA
|
|
.align 2, 0
|
|
_0803DB84: .4byte gUnknown_80F60F8
|
|
_0803DB88: .4byte gDungeonFileArchive
|
|
_0803DB8C: .4byte gDungeonNameBannerPalette
|
|
_0803DB90: .4byte gUnknown_80F6100
|
|
_0803DB94: .4byte gDungeonNameBannerFontFile
|
|
_0803DB98: .4byte gDungeonNameBannerFont
|
|
_0803DB9C: .4byte 0x06000140
|
|
_0803DBA0: .4byte gDungeonGlobalData
|
|
_0803DBA4: .4byte 0x00000645
|
|
_0803DBA8: .4byte 0x00000644
|
|
_0803DBAC: .4byte 0xffffe000
|
|
_0803DBB0: .4byte gUnknown_80F610C
|
|
_0803DBB4: .4byte gUnknown_80F6108
|
|
_0803DBB8: .4byte gUnknown_80F6110
|
|
_0803DBBC:
|
|
ldr r1, _0803DC08
|
|
mov r3, r8
|
|
adds r3, 0x30
|
|
add r0, sp, 0x4
|
|
adds r2, r6, 0
|
|
bl ExpandPlaceholdersBuffer
|
|
_0803DBCA:
|
|
add r0, sp, 0x4
|
|
bl CalcStringWidth
|
|
movs r1, 0xE0
|
|
subs r1, r0
|
|
lsrs r0, r1, 31
|
|
adds r1, r0
|
|
asrs r1, 1
|
|
adds r2, r7, 0
|
|
adds r2, 0x20
|
|
add r0, sp, 0x4
|
|
bl sub_803DC14
|
|
ldr r1, _0803DC0C
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_0803DBEA:
|
|
ldr r0, _0803DC10
|
|
ldr r0, [r0]
|
|
bl CloseFile
|
|
movs r0, 0x2
|
|
bl sub_803E46C
|
|
add sp, 0x68
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803DC08: .4byte gUnknown_80F6118
|
|
_0803DC0C: .4byte gUnknown_20274A5
|
|
_0803DC10: .4byte gDungeonNameBannerFontFile
|
|
thumb_func_end ShowDungeonNameBanner
|
|
|
|
thumb_func_start sub_803DC14
|
|
sub_803DC14:
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
adds r6, r2, 0
|
|
b _0803DC5C
|
|
_0803DC1E:
|
|
ldrb r1, [r4]
|
|
adds r4, 0x1
|
|
cmp r1, 0x2F
|
|
bne _0803DC2C
|
|
movs r5, 0
|
|
adds r6, 0x18
|
|
b _0803DC5C
|
|
_0803DC2C:
|
|
cmp r1, 0x23
|
|
bne _0803DC34
|
|
adds r5, 0x8
|
|
b _0803DC5C
|
|
_0803DC34:
|
|
cmp r1, 0x20
|
|
bne _0803DC3C
|
|
adds r5, 0xC
|
|
b _0803DC5C
|
|
_0803DC3C:
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803DC50
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
beq _0803DC50
|
|
lsls r1, 8
|
|
orrs r1, r0
|
|
adds r4, 0x1
|
|
_0803DC50:
|
|
adds r0, r1, 0
|
|
adds r1, r5, 0
|
|
adds r2, r6, 0
|
|
bl sub_803DC6C
|
|
adds r5, r0
|
|
_0803DC5C:
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
bne _0803DC1E
|
|
adds r0, r6, 0
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_803DC14
|
|
|
|
thumb_func_start sub_803DC6C
|
|
sub_803DC6C:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0x120
|
|
adds r7, r1, 0
|
|
adds r5, r2, 0
|
|
bl sub_803DEC8
|
|
adds r4, r0, 0
|
|
ldr r0, [r4]
|
|
mov r1, sp
|
|
bl sub_803DD30
|
|
ldrb r4, [r4, 0x6]
|
|
mov r9, r4
|
|
mov r6, sp
|
|
adds r0, r5, 0
|
|
cmp r5, 0
|
|
bge _0803DC96
|
|
adds r0, r5, 0x7
|
|
_0803DC96:
|
|
asrs r0, 3
|
|
lsls r3, r0, 3
|
|
subs r0, r3, r0
|
|
lsls r0, 2
|
|
adds r1, r7, 0
|
|
cmp r7, 0
|
|
bge _0803DCA6
|
|
adds r1, r7, 0x7
|
|
_0803DCA6:
|
|
asrs r1, 3
|
|
adds r0, r1
|
|
lsls r0, 5
|
|
ldr r4, _0803DD28
|
|
adds r2, r0, r4
|
|
subs r0, r5, r3
|
|
lsls r0, 2
|
|
adds r2, r0
|
|
lsls r1, 3
|
|
subs r1, r7, r1
|
|
lsls r1, 4
|
|
ldr r0, _0803DD2C
|
|
adds r4, r1, r0
|
|
movs r0, 0
|
|
_0803DCC2:
|
|
adds r3, r2, 0
|
|
adds r7, r3, 0x4
|
|
adds r5, 0x1
|
|
mov r12, r5
|
|
adds r0, 0x1
|
|
mov r8, r0
|
|
movs r5, 0x2
|
|
_0803DCD0:
|
|
ldr r2, [r6]
|
|
cmp r2, 0
|
|
beq _0803DCF6
|
|
ldr r1, [r4]
|
|
ands r1, r2
|
|
ldr r0, [r4, 0x8]
|
|
lsls r1, r0
|
|
ldr r0, [r3]
|
|
orrs r0, r1
|
|
str r0, [r3]
|
|
adds r3, 0x20
|
|
ldr r0, [r4, 0x4]
|
|
ands r2, r0
|
|
ldr r0, [r4, 0xC]
|
|
lsrs r2, r0
|
|
ldr r0, [r3]
|
|
orrs r0, r2
|
|
str r0, [r3]
|
|
subs r3, 0x20
|
|
_0803DCF6:
|
|
adds r6, 0x4
|
|
adds r3, 0x20
|
|
subs r5, 0x1
|
|
cmp r5, 0
|
|
bge _0803DCD0
|
|
adds r2, r7, 0
|
|
mov r5, r12
|
|
movs r0, 0x7
|
|
ands r0, r5
|
|
cmp r0, 0
|
|
bne _0803DD12
|
|
movs r0, 0xD8
|
|
lsls r0, 2
|
|
adds r2, r7, r0
|
|
_0803DD12:
|
|
mov r0, r8
|
|
cmp r0, 0x17
|
|
ble _0803DCC2
|
|
mov r0, r9
|
|
add sp, 0x120
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0803DD28: .4byte 0x06000140
|
|
_0803DD2C: .4byte gUnknown_80F6120
|
|
thumb_func_end sub_803DC6C
|
|
|
|
thumb_func_start sub_803DD30
|
|
sub_803DD30:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r4, _0803DDBC
|
|
add sp, r4
|
|
adds r4, r0, 0
|
|
mov r10, r1
|
|
movs r3, 0
|
|
movs r5, 0
|
|
ldr r0, _0803DDC0
|
|
mov r8, r0
|
|
movs r6, 0xF
|
|
movs r7, 0xF
|
|
mov r2, sp
|
|
_0803DD50:
|
|
ldrb r0, [r4]
|
|
lsrs r1, r0, 4
|
|
ands r1, r6
|
|
strb r1, [r2]
|
|
adds r1, r7, 0
|
|
ands r1, r0
|
|
strb r1, [r2, 0x1]
|
|
adds r4, 0x1
|
|
adds r2, 0x2
|
|
adds r5, 0x2
|
|
cmp r5, r8
|
|
ble _0803DD50
|
|
ldr r1, _0803DDC0
|
|
cmp r3, r1
|
|
bgt _0803DDF8
|
|
movs r0, 0x90
|
|
lsls r0, 2
|
|
mov r2, sp
|
|
adds r2, r0
|
|
mov r12, r2
|
|
mov r8, r1
|
|
mov r2, sp
|
|
mov r9, r0
|
|
_0803DD7E:
|
|
ldrb r1, [r2]
|
|
adds r2, 0x1
|
|
movs r6, 0x7
|
|
ands r6, r1
|
|
movs r0, 0x8
|
|
ands r1, r0
|
|
cmp r1, 0
|
|
beq _0803DDC4
|
|
ldrb r1, [r2]
|
|
adds r2, 0x1
|
|
movs r4, 0
|
|
cmp r4, r6
|
|
bge _0803DDF4
|
|
mov r5, r12
|
|
adds r0, r5, r3
|
|
strb r1, [r0]
|
|
adds r3, 0x1
|
|
cmp r3, r8
|
|
bgt _0803DDF8
|
|
mov r5, sp
|
|
add r5, r9
|
|
ldr r7, _0803DDC0
|
|
_0803DDAA:
|
|
adds r4, 0x1
|
|
cmp r4, r6
|
|
bge _0803DDF4
|
|
adds r0, r5, r3
|
|
strb r1, [r0]
|
|
adds r3, 0x1
|
|
cmp r3, r7
|
|
ble _0803DDAA
|
|
b _0803DDF4
|
|
.align 2, 0
|
|
_0803DDBC: .4byte 0xfffffb80
|
|
_0803DDC0: .4byte 0x0000023f
|
|
_0803DDC4:
|
|
movs r4, 0
|
|
cmp r4, r6
|
|
bge _0803DDF4
|
|
ldrb r1, [r2]
|
|
adds r2, 0x1
|
|
mov r5, r12
|
|
adds r0, r5, r3
|
|
strb r1, [r0]
|
|
adds r3, 0x1
|
|
cmp r3, r8
|
|
bgt _0803DDF8
|
|
mov r5, sp
|
|
add r5, r9
|
|
ldr r7, _0803DE78
|
|
_0803DDE0:
|
|
adds r4, 0x1
|
|
cmp r4, r6
|
|
bge _0803DDF4
|
|
ldrb r1, [r2]
|
|
adds r2, 0x1
|
|
adds r0, r5, r3
|
|
strb r1, [r0]
|
|
adds r3, 0x1
|
|
cmp r3, r7
|
|
ble _0803DDE0
|
|
_0803DDF4:
|
|
cmp r3, r8
|
|
ble _0803DD7E
|
|
_0803DDF8:
|
|
movs r5, 0
|
|
ldr r4, _0803DE78
|
|
add r3, sp, 0x240
|
|
_0803DDFE:
|
|
ldrb r2, [r3, 0x7]
|
|
lsls r2, 28
|
|
ldrb r0, [r3, 0x6]
|
|
lsls r0, 24
|
|
movs r1, 0xF0
|
|
lsls r1, 20
|
|
ands r0, r1
|
|
orrs r2, r0
|
|
ldrb r0, [r3, 0x5]
|
|
lsls r0, 20
|
|
movs r1, 0xF0
|
|
lsls r1, 16
|
|
ands r0, r1
|
|
orrs r2, r0
|
|
ldrb r0, [r3, 0x4]
|
|
lsls r0, 16
|
|
movs r1, 0xF0
|
|
lsls r1, 12
|
|
ands r0, r1
|
|
orrs r2, r0
|
|
ldrb r0, [r3, 0x3]
|
|
lsls r0, 12
|
|
movs r1, 0xF0
|
|
lsls r1, 8
|
|
ands r0, r1
|
|
orrs r2, r0
|
|
ldrb r0, [r3, 0x2]
|
|
lsls r0, 8
|
|
movs r1, 0xF0
|
|
lsls r1, 4
|
|
ands r0, r1
|
|
orrs r2, r0
|
|
ldrb r0, [r3, 0x1]
|
|
lsls r0, 4
|
|
movs r1, 0xF0
|
|
ands r0, r1
|
|
orrs r2, r0
|
|
ldrb r1, [r3]
|
|
movs r0, 0xF
|
|
ands r0, r1
|
|
orrs r2, r0
|
|
mov r0, r10
|
|
adds r0, 0x4
|
|
mov r10, r0
|
|
subs r0, 0x4
|
|
stm r0!, {r2}
|
|
adds r3, 0x8
|
|
adds r5, 0x8
|
|
cmp r5, r4
|
|
ble _0803DDFE
|
|
movs r3, 0x90
|
|
lsls r3, 3
|
|
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
|
|
_0803DE78: .4byte 0x0000023f
|
|
thumb_func_end sub_803DD30
|
|
|
|
thumb_func_start CalcStringWidth
|
|
CalcStringWidth:
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
movs r5, 0
|
|
b _0803DEBA
|
|
_0803DE84:
|
|
ldrb r1, [r4]
|
|
adds r4, 0x1
|
|
cmp r1, 0x23
|
|
bne _0803DE90
|
|
adds r5, 0x8
|
|
b _0803DEBA
|
|
_0803DE90:
|
|
cmp r1, 0x20
|
|
bne _0803DE98
|
|
adds r5, 0xC
|
|
b _0803DEBA
|
|
_0803DE98:
|
|
movs r0, 0x80
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803DEAC
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
beq _0803DEAC
|
|
lsls r1, 8
|
|
orrs r1, r0
|
|
adds r4, 0x1
|
|
_0803DEAC:
|
|
adds r0, r1, 0
|
|
bl sub_803DEC8
|
|
cmp r0, 0
|
|
beq _0803DEBA
|
|
ldrb r0, [r0, 0x6]
|
|
adds r5, r0
|
|
_0803DEBA:
|
|
ldrb r0, [r4]
|
|
cmp r0, 0
|
|
bne _0803DE84
|
|
adds r0, r5, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end CalcStringWidth
|
|
|
|
thumb_func_start sub_803DEC8
|
|
sub_803DEC8:
|
|
push {r4,r5,lr}
|
|
adds r3, r0, 0
|
|
ldr r0, _0803DEFC
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, 0x4]
|
|
ldr r5, [r0]
|
|
ldr r0, _0803DF00
|
|
adds r1, r3, r0
|
|
ldr r0, _0803DF04
|
|
cmp r1, r0
|
|
bhi _0803DF08
|
|
movs r2, 0xFF
|
|
ands r2, r3
|
|
movs r1, 0xFF
|
|
lsls r1, 8
|
|
ands r1, r3
|
|
asrs r1, 8
|
|
subs r2, 0x20
|
|
subs r1, 0xF8
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 5
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
adds r1, r5, r0
|
|
b _0803DF56
|
|
.align 2, 0
|
|
_0803DEFC: .4byte gDungeonNameBannerFontFile
|
|
_0803DF00: .4byte 0xffff0800
|
|
_0803DF04: .4byte 0x000007fe
|
|
_0803DF08:
|
|
movs r4, 0
|
|
ldr r0, _0803DF1C
|
|
ldr r0, [r0]
|
|
subs r2, r0, 0x1
|
|
cmp r4, r2
|
|
bge _0803DF48
|
|
lsrs r0, r2, 31
|
|
adds r0, r2, r0
|
|
b _0803DF3A
|
|
.align 2, 0
|
|
_0803DF1C: .4byte gDungeonNameBannerFont
|
|
_0803DF20:
|
|
lsls r0, r1, 3
|
|
adds r0, r5
|
|
ldrh r0, [r0, 0x4]
|
|
cmp r0, r3
|
|
bge _0803DF2E
|
|
adds r4, r1, 0x1
|
|
b _0803DF30
|
|
_0803DF2E:
|
|
adds r2, r1, 0
|
|
_0803DF30:
|
|
cmp r4, r2
|
|
bge _0803DF48
|
|
adds r0, r4, r2
|
|
lsrs r1, r0, 31
|
|
adds r0, r1
|
|
_0803DF3A:
|
|
asrs r1, r0, 1
|
|
lsls r0, r1, 3
|
|
adds r0, r5
|
|
ldrh r0, [r0, 0x4]
|
|
cmp r0, r3
|
|
bne _0803DF20
|
|
adds r4, r1, 0
|
|
_0803DF48:
|
|
lsls r0, r4, 3
|
|
adds r1, r5, r0
|
|
ldrh r0, [r1, 0x4]
|
|
cmp r0, r3
|
|
beq _0803DF56
|
|
adds r1, r5, 0
|
|
adds r1, 0x8
|
|
_0803DF56:
|
|
adds r0, r1, 0
|
|
pop {r4,r5}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_803DEC8
|
|
|
|
thumb_func_start sub_803DF60
|
|
sub_803DF60:
|
|
push {r4-r7,lr}
|
|
ldr r0, _0803DFF8
|
|
ldr r1, _0803DFFC
|
|
bl OpenFileAndGetFileDataPtr
|
|
adds r7, r0, 0
|
|
ldr r0, [r7, 0x4]
|
|
ldr r5, [r0]
|
|
ldm r5!, {r4}
|
|
ldr r6, _0803E000
|
|
cmp r4, 0
|
|
beq _0803DF8C
|
|
_0803DF78:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0x20
|
|
bl CpuCopy
|
|
adds r6, 0x20
|
|
adds r5, 0x20
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _0803DF78
|
|
_0803DF8C:
|
|
adds r0, r7, 0
|
|
bl CloseFile
|
|
ldr r0, _0803E004
|
|
ldr r1, _0803DFFC
|
|
bl OpenFileAndGetFileDataPtr
|
|
adds r7, r0, 0
|
|
ldr r5, [r7, 0x4]
|
|
ldm r5!, {r4}
|
|
ldr r6, _0803E008
|
|
cmp r4, 0
|
|
beq _0803DFBA
|
|
_0803DFA6:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0x20
|
|
bl CpuCopy
|
|
adds r6, 0x20
|
|
adds r5, 0x20
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _0803DFA6
|
|
_0803DFBA:
|
|
adds r0, r7, 0
|
|
bl CloseFile
|
|
ldr r0, _0803E00C
|
|
ldr r4, _0803DFFC
|
|
adds r1, r4, 0
|
|
bl OpenFileAndGetFileDataPtr
|
|
ldr r1, _0803E010
|
|
str r0, [r1]
|
|
ldr r0, _0803E014
|
|
adds r1, r4, 0
|
|
bl OpenFileAndGetFileDataPtr
|
|
ldr r1, _0803E018
|
|
str r0, [r1]
|
|
ldr r0, _0803E01C
|
|
adds r1, r4, 0
|
|
bl OpenFileAndGetFileDataPtr
|
|
ldr r1, _0803E020
|
|
str r0, [r1]
|
|
ldr r0, _0803E024
|
|
adds r1, r4, 0
|
|
bl OpenFileAndGetFileDataPtr
|
|
ldr r1, _0803E028
|
|
str r0, [r1]
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803DFF8: .4byte gUnknown_80F61A8
|
|
_0803DFFC: .4byte gDungeonFileArchive
|
|
_0803E000: .4byte 0x06013400
|
|
_0803E004: .4byte gUnknown_80F61B0
|
|
_0803E008: .4byte 0x06014000
|
|
_0803E00C: .4byte gUnknown_80F61B8
|
|
_0803E010: .4byte gUnknown_202EC94
|
|
_0803E014: .4byte gUnknown_80F61C4
|
|
_0803E018: .4byte gUnknown_202EC98
|
|
_0803E01C: .4byte gUnknown_80F61CC
|
|
_0803E020: .4byte gUnknown_202EC9C
|
|
_0803E024: .4byte gUnknown_80F61D4
|
|
_0803E028: .4byte gUnknown_202ECA0
|
|
thumb_func_end sub_803DF60
|
|
|
|
thumb_func_start sub_803E02C
|
|
sub_803E02C:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
sub sp, 0xC
|
|
bl sub_803E13C
|
|
mov r1, sp
|
|
ldr r0, _0803E118
|
|
ldm r0!, {r2,r3}
|
|
stm r1!, {r2,r3}
|
|
ldr r1, _0803E11C
|
|
mov r0, sp
|
|
bl OpenFileAndGetFileDataPtr
|
|
adds r7, r0, 0
|
|
ldr r0, [r7, 0x4]
|
|
ldr r5, [r0]
|
|
ldm r5!, {r4}
|
|
ldr r6, _0803E120
|
|
cmp r4, 0
|
|
beq _0803E06C
|
|
_0803E058:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
movs r2, 0x20
|
|
bl CpuCopy
|
|
adds r6, 0x20
|
|
adds r5, 0x20
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _0803E058
|
|
_0803E06C:
|
|
ldr r0, _0803E124
|
|
ldr r1, [r7, 0x4]
|
|
ldr r1, [r1, 0x4]
|
|
movs r2, 0x80
|
|
bl CpuCopy
|
|
adds r0, r7, 0
|
|
bl CloseFile
|
|
movs r6, 0x80
|
|
lsls r6, 2
|
|
movs r4, 0
|
|
ldr r0, _0803E128
|
|
mov r9, r0
|
|
ldr r1, _0803E12C
|
|
mov r12, r1
|
|
movs r7, 0
|
|
ldr r2, _0803E130
|
|
mov r8, r2
|
|
_0803E092:
|
|
mov r3, r12
|
|
ldrh r0, [r3]
|
|
lsls r5, r0, 12
|
|
adds r2, r7, 0
|
|
movs r3, 0x8
|
|
_0803E09C:
|
|
mov r0, r9
|
|
ldr r1, [r0]
|
|
add r1, r8
|
|
adds r1, r2
|
|
adds r0, r5, 0
|
|
orrs r0, r6
|
|
strh r0, [r1]
|
|
adds r6, 0x1
|
|
adds r2, 0x2
|
|
subs r3, 0x1
|
|
cmp r3, 0
|
|
bge _0803E09C
|
|
movs r1, 0x2
|
|
add r12, r1
|
|
adds r7, 0x12
|
|
adds r4, 0x1
|
|
cmp r4, 0x1C
|
|
ble _0803E092
|
|
movs r4, 0
|
|
ldr r5, _0803E128
|
|
ldr r3, _0803E134
|
|
movs r2, 0xC0
|
|
lsls r2, 8
|
|
_0803E0CA:
|
|
ldr r0, [r5]
|
|
lsls r1, r4, 1
|
|
adds r0, r3
|
|
adds r0, r1
|
|
strh r2, [r0]
|
|
adds r4, 0x1
|
|
cmp r4, 0x8
|
|
ble _0803E0CA
|
|
movs r4, 0
|
|
ldr r2, _0803E128
|
|
movs r6, 0xBE
|
|
lsls r6, 1
|
|
ldr r5, _0803E138
|
|
movs r3, 0xBF
|
|
lsls r3, 1
|
|
_0803E0E8:
|
|
ldr r0, [r2]
|
|
lsls r1, r4, 2
|
|
adds r0, r1
|
|
adds r0, r6
|
|
strb r4, [r0]
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
adds r0, r5
|
|
strb r4, [r0]
|
|
ldr r0, [r2]
|
|
adds r0, r1
|
|
adds r0, r3
|
|
strb r4, [r0]
|
|
adds r4, 0x1
|
|
cmp r4, 0xFF
|
|
ble _0803E0E8
|
|
add sp, 0xC
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E118: .4byte gUnknown_80F61DC
|
|
_0803E11C: .4byte gDungeonFileArchive
|
|
_0803E120: .4byte 0x0600c000
|
|
_0803E124: .4byte gUnknown_202ECA4
|
|
_0803E128: .4byte gDungeonGlobalData
|
|
_0803E12C: .4byte gUnknown_80F5F70
|
|
_0803E130: .4byte 0x00012a18
|
|
_0803E134: .4byte 0x00013554
|
|
_0803E138: .4byte 0x0000017d
|
|
thumb_func_end sub_803E02C
|
|
|
|
thumb_func_start sub_803E13C
|
|
sub_803E13C:
|
|
push {r4,r5,lr}
|
|
bl sub_8094C14
|
|
ldr r0, _0803E170
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0xB]
|
|
ldr r5, _0803E174
|
|
cmp r0, 0
|
|
beq _0803E154
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
adds r5, r0
|
|
_0803E154:
|
|
movs r4, 0
|
|
_0803E156:
|
|
adds r0, r4, 0
|
|
adds r0, 0xF0
|
|
adds r1, r5, 0
|
|
bl SetBGPaletteBufferColorArray
|
|
adds r5, 0x4
|
|
adds r4, 0x1
|
|
cmp r4, 0xF
|
|
ble _0803E156
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E170: .4byte gUnknown_203B46C
|
|
_0803E174: .4byte gUnknown_202D038
|
|
thumb_func_end sub_803E13C
|
|
|
|
thumb_func_start sub_803E178
|
|
sub_803E178:
|
|
push {r4,lr}
|
|
bl sub_8043D10
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _0803E1E0
|
|
ldr r0, _0803E1AC
|
|
ldr r2, [r0]
|
|
ldr r3, _0803E1B0
|
|
adds r1, r2, r3
|
|
ldrb r1, [r1]
|
|
adds r3, r0, 0
|
|
cmp r1, 0x15
|
|
bne _0803E1BC
|
|
ldr r1, _0803E1B4
|
|
adds r0, r2, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803E1BC
|
|
ldr r3, _0803E1B8
|
|
adds r1, r2, r3
|
|
movs r0, 0x1C
|
|
strh r0, [r1]
|
|
b _0803E204
|
|
.align 2, 0
|
|
_0803E1AC: .4byte gDungeonGlobalData
|
|
_0803E1B0: .4byte 0x00000644
|
|
_0803E1B4: .4byte 0x000037fe
|
|
_0803E1B8: .4byte 0x00003a12
|
|
_0803E1BC:
|
|
ldr r4, [r3]
|
|
ldr r1, _0803E1D8
|
|
adds r0, r4, r1
|
|
ldrb r0, [r0]
|
|
bl GetStairDirection
|
|
lsls r0, 24
|
|
movs r1, 0x16
|
|
cmp r0, 0
|
|
beq _0803E1D2
|
|
movs r1, 0x17
|
|
_0803E1D2:
|
|
ldr r2, _0803E1DC
|
|
adds r0, r4, r2
|
|
b _0803E202
|
|
.align 2, 0
|
|
_0803E1D8: .4byte 0x00000644
|
|
_0803E1DC: .4byte 0x00003a12
|
|
_0803E1E0:
|
|
cmp r0, 0x1
|
|
bne _0803E1F8
|
|
ldr r0, _0803E1F0
|
|
ldr r0, [r0]
|
|
ldr r3, _0803E1F4
|
|
adds r0, r3
|
|
movs r1, 0x6
|
|
b _0803E202
|
|
.align 2, 0
|
|
_0803E1F0: .4byte gDungeonGlobalData
|
|
_0803E1F4: .4byte 0x00003a12
|
|
_0803E1F8:
|
|
ldr r0, _0803E20C
|
|
ldr r0, [r0]
|
|
ldr r1, _0803E210
|
|
adds r0, r1
|
|
movs r1, 0x18
|
|
_0803E202:
|
|
strh r1, [r0]
|
|
_0803E204:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E20C: .4byte gDungeonGlobalData
|
|
_0803E210: .4byte 0x00003a12
|
|
thumb_func_end sub_803E178
|
|
|
|
thumb_func_start sub_803E214
|
|
sub_803E214:
|
|
push {lr}
|
|
ldr r0, _0803E23C
|
|
ldr r0, [r0]
|
|
bl CloseFile
|
|
ldr r0, _0803E240
|
|
ldr r0, [r0]
|
|
bl CloseFile
|
|
ldr r0, _0803E244
|
|
ldr r0, [r0]
|
|
bl CloseFile
|
|
ldr r0, _0803E248
|
|
ldr r0, [r0]
|
|
bl CloseFile
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E23C: .4byte gUnknown_202EC94
|
|
_0803E240: .4byte gUnknown_202EC98
|
|
_0803E244: .4byte gUnknown_202EC9C
|
|
_0803E248: .4byte gUnknown_202ECA0
|
|
thumb_func_end sub_803E214
|
|
|
|
thumb_func_start nullsub_56
|
|
nullsub_56:
|
|
bx lr
|
|
thumb_func_end nullsub_56
|
|
|
|
thumb_func_start sub_803E250
|
|
sub_803E250:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
ldr r1, _0803E3FC
|
|
ldr r0, _0803E400
|
|
str r0, [r1]
|
|
ldr r0, _0803E404
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
ldr r0, _0803E408
|
|
strb r1, [r0]
|
|
ldr r0, _0803E40C
|
|
strh r1, [r0]
|
|
ldr r5, _0803E410
|
|
ldrh r0, [r5, 0x6]
|
|
movs r3, 0xF
|
|
adds r2, r3, 0
|
|
ands r2, r0
|
|
ldrh r4, [r5]
|
|
ldr r1, _0803E414
|
|
adds r0, r1, 0
|
|
ands r0, r4
|
|
ldr r4, _0803E418
|
|
ands r0, r4
|
|
ldr r6, _0803E41C
|
|
ands r0, r6
|
|
ldr r7, _0803E420
|
|
ands r0, r7
|
|
ldr r4, _0803E424
|
|
mov r12, r4
|
|
ands r0, r4
|
|
ldr r4, _0803E428
|
|
ands r0, r4
|
|
strh r0, [r5]
|
|
movs r0, 0x80
|
|
lsls r0, 7
|
|
strh r0, [r5, 0x2]
|
|
movs r0, 0
|
|
strh r0, [r5, 0x4]
|
|
ldr r0, _0803E42C
|
|
mov r10, r0
|
|
ands r2, r0
|
|
subs r0, 0x1
|
|
mov r9, r0
|
|
ands r2, r0
|
|
subs r0, 0x2
|
|
mov r8, r0
|
|
ands r2, r0
|
|
strh r2, [r5, 0x6]
|
|
ldr r2, _0803E430
|
|
ldrh r0, [r2, 0x6]
|
|
ands r3, r0
|
|
ldrh r0, [r2]
|
|
ands r1, r0
|
|
ldr r0, _0803E418
|
|
ands r1, r0
|
|
ands r1, r6
|
|
ands r1, r7
|
|
mov r7, r12
|
|
ands r1, r7
|
|
ands r1, r4
|
|
strh r1, [r2]
|
|
movs r0, 0
|
|
strh r0, [r2, 0x2]
|
|
movs r0, 0xB8
|
|
lsls r0, 7
|
|
strh r0, [r2, 0x4]
|
|
mov r0, r10
|
|
ands r3, r0
|
|
mov r1, r9
|
|
ands r3, r1
|
|
mov r7, r8
|
|
ands r3, r7
|
|
strh r3, [r2, 0x6]
|
|
movs r0, 0
|
|
mov r8, r0
|
|
_0803E2EE:
|
|
movs r1, 0
|
|
mov r9, r1
|
|
mov r2, r8
|
|
lsls r0, r2, 3
|
|
lsls r2, 1
|
|
mov r12, r2
|
|
mov r3, r8
|
|
adds r3, 0x1
|
|
str r3, [sp]
|
|
mov r10, r1
|
|
add r0, r8
|
|
lsls r5, r0, 3
|
|
ldr r4, _0803E434
|
|
adds r4, r5, r4
|
|
str r4, [sp, 0x4]
|
|
ldr r7, _0803E438
|
|
adds r6, r5, r7
|
|
ldr r0, _0803E43C
|
|
adds r3, r5, r0
|
|
ldr r1, _0803E440
|
|
adds r4, r5, r1
|
|
_0803E318:
|
|
mov r7, r10
|
|
adds r2, r5, r7
|
|
ldrh r1, [r3]
|
|
ldr r0, _0803E414
|
|
ands r0, r1
|
|
ldr r1, _0803E418
|
|
ands r0, r1
|
|
ldr r1, _0803E41C
|
|
ands r0, r1
|
|
ldr r1, _0803E420
|
|
ands r0, r1
|
|
ldr r1, _0803E424
|
|
ands r0, r1
|
|
strh r0, [r3]
|
|
ldr r1, [r4]
|
|
movs r7, 0x3
|
|
ands r1, r7
|
|
lsls r1, 14
|
|
ldr r7, _0803E428
|
|
ands r0, r7
|
|
orrs r0, r1
|
|
strh r0, [r3]
|
|
ldrh r1, [r3, 0x2]
|
|
ldr r0, _0803E444
|
|
ands r0, r1
|
|
strh r0, [r3, 0x2]
|
|
ldr r1, _0803E440
|
|
adds r1, 0x4
|
|
adds r2, r1
|
|
ldr r1, [r2]
|
|
movs r2, 0x3
|
|
ands r1, r2
|
|
lsls r1, 14
|
|
ands r0, r7
|
|
orrs r0, r1
|
|
strh r0, [r3, 0x2]
|
|
ldr r1, [r6]
|
|
ldr r0, _0803E448
|
|
ands r1, r0
|
|
ldrh r2, [r3, 0x4]
|
|
movs r0, 0xFC
|
|
lsls r0, 8
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
ldr r7, _0803E41C
|
|
ands r0, r7
|
|
movs r1, 0xC0
|
|
lsls r1, 4
|
|
orrs r0, r1
|
|
movs r2, 0
|
|
orrs r0, r2
|
|
ldr r1, _0803E44C
|
|
ands r0, r1
|
|
strh r0, [r3, 0x4]
|
|
ldrh r1, [r3, 0x6]
|
|
ldr r0, _0803E42C
|
|
ands r0, r1
|
|
ldr r1, _0803E450
|
|
ands r0, r1
|
|
strh r0, [r3, 0x6]
|
|
mov r7, r9
|
|
lsls r1, r7, 2
|
|
mov r0, r12
|
|
add r0, r8
|
|
lsls r0, 3
|
|
adds r1, r0
|
|
ldr r0, _0803E454
|
|
adds r1, r0, r1
|
|
ldr r0, [r1]
|
|
ldr r1, [sp, 0x4]
|
|
str r0, [r1]
|
|
adds r1, 0xC
|
|
str r1, [sp, 0x4]
|
|
adds r6, 0xC
|
|
adds r3, 0xC
|
|
adds r4, 0xC
|
|
movs r2, 0xC
|
|
add r10, r2
|
|
movs r7, 0x1
|
|
add r9, r7
|
|
mov r0, r9
|
|
cmp r0, 0x5
|
|
ble _0803E318
|
|
ldr r1, [sp]
|
|
mov r8, r1
|
|
cmp r1, 0x1
|
|
ble _0803E2EE
|
|
movs r2, 0
|
|
ldr r3, _0803E458
|
|
ldr r0, [r3]
|
|
ldr r4, _0803E45C
|
|
adds r0, r4
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
ldr r0, [r3]
|
|
ldr r7, _0803E460
|
|
adds r0, r7
|
|
strb r1, [r0]
|
|
ldr r0, _0803E464
|
|
str r2, [r0]
|
|
movs r0, 0xF8
|
|
ldr r1, _0803E468
|
|
movs r3, 0
|
|
bl SetBGPaletteBufferColorRGB
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E3FC: .4byte gUnknown_202EDD0
|
|
_0803E400: .4byte 0x000003e7
|
|
_0803E404: .4byte gUnknown_202EDD4
|
|
_0803E408: .4byte gUnknown_203B40D
|
|
_0803E40C: .4byte gUnknown_202EDE8
|
|
_0803E410: .4byte gUnknown_202EDC0
|
|
_0803E414: .4byte 0x0000feff
|
|
_0803E418: .4byte 0x0000fdff
|
|
_0803E41C: .4byte 0x0000f3ff
|
|
_0803E420: .4byte 0x0000efff
|
|
_0803E424: .4byte 0x0000dfff
|
|
_0803E428: .4byte 0x00003fff
|
|
_0803E42C: .4byte 0x0000fffe
|
|
_0803E430: .4byte gUnknown_202EDB8
|
|
_0803E434: .4byte gUnknown_202ED30
|
|
_0803E438: .4byte gUnknown_80F6224
|
|
_0803E43C: .4byte gUnknown_202ED28
|
|
_0803E440: .4byte gUnknown_80F621C
|
|
_0803E444: .4byte 0x0000c1ff
|
|
_0803E448: .4byte 0x000003ff
|
|
_0803E44C: .4byte 0x00000fff
|
|
_0803E450: .4byte 0x0000fffd
|
|
_0803E454: .4byte gUnknown_80F61EC
|
|
_0803E458: .4byte gDungeonGlobalData
|
|
_0803E45C: .4byte 0x00018217
|
|
_0803E460: .4byte 0x00018218
|
|
_0803E464: .4byte gUnknown_202EDC8
|
|
_0803E468: .4byte gUnknown_202D058
|
|
thumb_func_end sub_803E250
|
|
|
|
thumb_func_start sub_803E46C
|
|
sub_803E46C:
|
|
push {lr}
|
|
adds r1, r0, 0
|
|
ldr r0, _0803E480
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803E484
|
|
adds r0, r1, 0
|
|
bl sub_803E490
|
|
b _0803E48A
|
|
.align 2, 0
|
|
_0803E480: .4byte gUnknown_203B40C
|
|
_0803E484:
|
|
adds r0, r1, 0
|
|
bl sub_803E668
|
|
_0803E48A:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_803E46C
|
|
|
|
thumb_func_start sub_803E490
|
|
sub_803E490:
|
|
push {r4,r5,lr}
|
|
sub sp, 0x8
|
|
ldr r1, _0803E4D8
|
|
ldr r0, [r1]
|
|
adds r0, 0x1
|
|
str r0, [r1]
|
|
bl xxx_draw_string_80524F0
|
|
bl sub_8085F78
|
|
movs r0, 0x1
|
|
bl sub_803F580
|
|
ldr r2, _0803E4DC
|
|
ldr r1, [r2]
|
|
ldr r3, _0803E4E0
|
|
adds r0, r1, r3
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803E4EC
|
|
ldr r4, _0803E4E4
|
|
adds r1, r4
|
|
movs r0, 0x2
|
|
strb r0, [r1]
|
|
ldr r1, [r2]
|
|
ldr r2, _0803E4E8
|
|
adds r0, r1, r2
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
subs r4, 0x16
|
|
adds r1, r4
|
|
movs r2, 0
|
|
ldrsh r1, [r1, r2]
|
|
bl SetBG2RegOffsets
|
|
b _0803E4FC
|
|
.align 2, 0
|
|
_0803E4D8: .4byte gUnknown_202EDD4
|
|
_0803E4DC: .4byte gDungeonGlobalData
|
|
_0803E4E0: .4byte 0x0001821a
|
|
_0803E4E4: .4byte 0x00018208
|
|
_0803E4E8: .4byte 0x000181f0
|
|
_0803E4EC:
|
|
ldr r3, _0803E628
|
|
adds r1, r3
|
|
movs r0, 0x3
|
|
strb r0, [r1]
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl SetBG2RegOffsets
|
|
_0803E4FC:
|
|
ldr r4, _0803E62C
|
|
ldr r2, [r4]
|
|
ldr r5, _0803E630
|
|
adds r0, r2, r5
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
ldr r3, _0803E634
|
|
adds r1, r2, r3
|
|
movs r3, 0
|
|
ldrsh r1, [r1, r3]
|
|
ldr r3, _0803E638
|
|
adds r2, r3
|
|
ldr r2, [r2]
|
|
subs r1, r2
|
|
bl SetBG3RegOffsets
|
|
bl sub_806CC10
|
|
bl sub_804522C
|
|
bl sub_803F9CC
|
|
ldr r0, [r4]
|
|
adds r0, r5
|
|
bl sub_800F7D0
|
|
ldr r1, [r4]
|
|
ldrh r2, [r1, 0x12]
|
|
movs r3, 0x12
|
|
ldrsh r0, [r1, r3]
|
|
cmp r0, 0x63
|
|
bgt _0803E540
|
|
adds r0, r2, 0x1
|
|
strh r0, [r1, 0x12]
|
|
_0803E540:
|
|
ldr r0, [r4]
|
|
adds r0, r5
|
|
bl sub_800E90C
|
|
bl sub_8042E5C
|
|
ldr r0, _0803E63C
|
|
ldr r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803E562
|
|
cmp r0, 0x3
|
|
beq _0803E562
|
|
ldr r0, _0803E640
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0x4]
|
|
cmp r0, 0x6
|
|
bne _0803E566
|
|
_0803E562:
|
|
bl sub_8040894
|
|
_0803E566:
|
|
bl sub_803ECE0
|
|
bl sub_803EDF0
|
|
ldr r0, _0803E62C
|
|
ldr r3, [r0]
|
|
ldr r4, _0803E644
|
|
adds r0, r3, r4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803E5A2
|
|
ldr r1, _0803E648
|
|
adds r0, r3, r1
|
|
ldr r0, [r0]
|
|
cmp r0, 0x3
|
|
beq _0803E5A2
|
|
ldr r0, _0803E64C
|
|
ldrb r0, [r0]
|
|
ldr r1, _0803E650
|
|
ldr r2, _0803E654
|
|
ldr r2, [r2]
|
|
str r2, [sp]
|
|
movs r4, 0xBE
|
|
lsls r4, 1
|
|
adds r2, r3, r4
|
|
str r2, [sp, 0x4]
|
|
movs r2, 0xA0
|
|
movs r3, 0x20
|
|
bl sub_8004AF0
|
|
_0803E5A2:
|
|
ldr r0, _0803E640
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0xA]
|
|
bl nullsub_8
|
|
bl sub_8005180
|
|
bl nullsub_12
|
|
bl sub_80060EC
|
|
ldr r1, _0803E658
|
|
ldr r0, [r1]
|
|
adds r0, 0x1
|
|
str r0, [r1]
|
|
ldr r0, _0803E65C
|
|
ldr r0, [r0]
|
|
bl IncrementPlayTime
|
|
bl sub_800CB20
|
|
bl LoadBufferedInputs
|
|
bl CopySpritesToOam
|
|
bl nullsub_13
|
|
bl sub_8005304
|
|
bl nullsub_14
|
|
bl TransferBGPaletteBuffer
|
|
bl sub_8009908
|
|
bl xxx_call_update_bg_vram
|
|
bl sub_8040788
|
|
bl xxx_call_update_bg_sound_input
|
|
ldr r0, _0803E62C
|
|
ldr r0, [r0]
|
|
ldr r1, _0803E660
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
bl sub_8083F58
|
|
bl sub_8011860
|
|
bl sub_8040B60
|
|
movs r0, 0
|
|
bl ResetSprites
|
|
movs r0, 0
|
|
bl nullsub_10
|
|
ldr r1, _0803E664
|
|
ldr r0, [r1]
|
|
subs r0, 0x1
|
|
str r0, [r1]
|
|
add sp, 0x8
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E628: .4byte 0x00018208
|
|
_0803E62C: .4byte gDungeonGlobalData
|
|
_0803E630: .4byte 0x000181f0
|
|
_0803E634: .4byte 0x000181f2
|
|
_0803E638: .4byte 0x000181fc
|
|
_0803E63C: .4byte gUnknown_202EDD0
|
|
_0803E640: .4byte gUnknown_203B46C
|
|
_0803E644: .4byte 0x00018215
|
|
_0803E648: .4byte 0x0001c06c
|
|
_0803E64C: .4byte gUnknown_203B40D
|
|
_0803E650: .4byte gUnknown_202EE8C
|
|
_0803E654: .4byte gUnknown_202EDC8
|
|
_0803E658: .4byte gUnknown_202EDCC
|
|
_0803E65C: .4byte gPlayTimeRef
|
|
_0803E660: .4byte 0x00018213
|
|
_0803E664: .4byte gUnknown_202EDD4
|
|
thumb_func_end sub_803E490
|
|
|
|
thumb_func_start sub_803E668
|
|
sub_803E668:
|
|
push {r4,lr}
|
|
ldr r4, _0803E6F0
|
|
ldr r0, [r4]
|
|
adds r0, 0x1
|
|
str r0, [r4]
|
|
ldr r0, _0803E6F4
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0xA]
|
|
bl nullsub_8
|
|
bl sub_8005180
|
|
bl nullsub_12
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_8005838
|
|
bl sub_80060EC
|
|
ldr r1, _0803E6F8
|
|
ldr r0, [r1]
|
|
adds r0, 0x1
|
|
str r0, [r1]
|
|
ldr r0, _0803E6FC
|
|
ldr r0, [r0]
|
|
bl IncrementPlayTime
|
|
bl sub_800CB20
|
|
bl LoadBufferedInputs
|
|
bl CopySpritesToOam
|
|
bl nullsub_13
|
|
bl sub_8005304
|
|
bl nullsub_14
|
|
bl TransferBGPaletteBuffer
|
|
bl sub_8009908
|
|
bl xxx_call_update_bg_vram
|
|
bl xxx_call_update_bg_sound_input
|
|
ldr r0, _0803E700
|
|
ldr r0, [r0]
|
|
ldr r1, _0803E704
|
|
adds r0, r1
|
|
movs r1, 0
|
|
strb r1, [r0]
|
|
bl sub_8011860
|
|
movs r0, 0
|
|
bl ResetSprites
|
|
movs r0, 0
|
|
bl nullsub_10
|
|
ldr r0, [r4]
|
|
subs r0, 0x1
|
|
str r0, [r4]
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E6F0: .4byte gUnknown_202EDD4
|
|
_0803E6F4: .4byte gUnknown_203B46C
|
|
_0803E6F8: .4byte gUnknown_202EDCC
|
|
_0803E6FC: .4byte gPlayTimeRef
|
|
_0803E700: .4byte gDungeonGlobalData
|
|
_0803E704: .4byte 0x00018213
|
|
thumb_func_end sub_803E668
|
|
|
|
thumb_func_start sub_803E708
|
|
sub_803E708:
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
cmp r4, 0
|
|
beq _0803E71E
|
|
_0803E712:
|
|
adds r0, r5, 0
|
|
bl sub_803E46C
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _0803E712
|
|
_0803E71E:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_803E708
|
|
|
|
thumb_func_start sub_803E724
|
|
sub_803E724:
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
ldr r5, _0803E744
|
|
movs r6, 0xF0
|
|
_0803E72C:
|
|
adds r0, r4, 0
|
|
bl sub_803E46C
|
|
ldrh r1, [r5]
|
|
adds r0, r6, 0
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
bne _0803E72C
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E744: .4byte gRealInputs
|
|
thumb_func_end sub_803E724
|
|
|
|
thumb_func_start sub_803E748
|
|
sub_803E748:
|
|
push {r4,r5,lr}
|
|
movs r5, 0x1F
|
|
ldr r1, _0803E7B8
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r1, _0803E7BC
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
movs r0, 0x1
|
|
movs r1, 0x1F
|
|
bl sub_803E874
|
|
movs r4, 0
|
|
_0803E762:
|
|
cmp r4, 0x1F
|
|
bgt _0803E780
|
|
subs r5, 0x2
|
|
cmp r5, 0
|
|
bgt _0803E780
|
|
movs r5, 0
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
bl sub_803EAF0
|
|
ldr r0, _0803E7C0
|
|
ldr r0, [r0]
|
|
ldr r1, _0803E7C4
|
|
adds r0, r1
|
|
strb r5, [r0]
|
|
_0803E780:
|
|
cmp r4, 0xB
|
|
ble _0803E790
|
|
ldr r1, _0803E7BC
|
|
ldr r0, [r1]
|
|
cmp r0, 0x1E
|
|
bgt _0803E790
|
|
adds r0, 0x1
|
|
str r0, [r1]
|
|
_0803E790:
|
|
movs r0, 0x1
|
|
adds r1, r5, 0
|
|
bl sub_803E874
|
|
movs r0, 0x5
|
|
bl sub_803E46C
|
|
adds r4, 0x1
|
|
cmp r4, 0x2B
|
|
ble _0803E762
|
|
ldr r1, _0803E7B8
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
ldr r1, _0803E7BC
|
|
movs r0, 0x1F
|
|
str r0, [r1]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E7B8: .4byte gUnknown_203B40D
|
|
_0803E7BC: .4byte gUnknown_202EDC8
|
|
_0803E7C0: .4byte gDungeonGlobalData
|
|
_0803E7C4: .4byte 0x00018217
|
|
thumb_func_end sub_803E748
|
|
|
|
thumb_func_start sub_803E7C8
|
|
sub_803E7C8:
|
|
push {r4,r5,lr}
|
|
movs r4, 0x1F
|
|
ldr r1, _0803E820
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r1, _0803E824
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
movs r0, 0x5
|
|
bl sub_803E46C
|
|
movs r5, 0
|
|
_0803E7E0:
|
|
movs r0, 0x1
|
|
adds r1, r4, 0
|
|
bl sub_803E874
|
|
cmp r5, 0x1F
|
|
bgt _0803E806
|
|
subs r4, 0x2
|
|
cmp r4, 0
|
|
bgt _0803E806
|
|
movs r4, 0
|
|
movs r0, 0x1
|
|
movs r1, 0
|
|
bl sub_803EAF0
|
|
ldr r0, _0803E828
|
|
ldr r0, [r0]
|
|
ldr r1, _0803E82C
|
|
adds r0, r1
|
|
strb r4, [r0]
|
|
_0803E806:
|
|
movs r0, 0x5
|
|
bl sub_803E46C
|
|
adds r5, 0x1
|
|
cmp r5, 0x2B
|
|
ble _0803E7E0
|
|
ldr r1, _0803E820
|
|
movs r0, 0
|
|
strb r0, [r1]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E820: .4byte gUnknown_203B40D
|
|
_0803E824: .4byte gUnknown_202EDC8
|
|
_0803E828: .4byte gDungeonGlobalData
|
|
_0803E82C: .4byte 0x00018217
|
|
thumb_func_end sub_803E7C8
|
|
|
|
thumb_func_start sub_803E830
|
|
sub_803E830:
|
|
push {r4,r5,lr}
|
|
ldr r1, _0803E86C
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
ldr r5, _0803E870
|
|
movs r4, 0x1F
|
|
_0803E83C:
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_803E874
|
|
movs r0, 0x5
|
|
bl sub_803E46C
|
|
ldr r0, [r5]
|
|
cmp r0, 0
|
|
ble _0803E854
|
|
subs r0, 0x1
|
|
str r0, [r5]
|
|
_0803E854:
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bge _0803E83C
|
|
ldr r0, _0803E870
|
|
movs r1, 0
|
|
str r1, [r0]
|
|
ldr r0, _0803E86C
|
|
strb r1, [r0]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E86C: .4byte gUnknown_203B40D
|
|
_0803E870: .4byte gUnknown_202EDC8
|
|
thumb_func_end sub_803E830
|
|
|
|
thumb_func_start sub_803E874
|
|
sub_803E874:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x8
|
|
mov r9, r1
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r10, r0
|
|
ldr r0, _0803E9A4
|
|
ldr r0, [r0]
|
|
ldr r5, [r0, 0x4]
|
|
ldr r1, _0803E9A8
|
|
ldr r0, _0803E9AC
|
|
ldr r2, [r0]
|
|
ldr r0, _0803E9B0
|
|
ldr r3, [r0]
|
|
movs r0, 0xBE
|
|
lsls r0, 1
|
|
adds r3, r0
|
|
movs r0, 0
|
|
bl SetBGPaletteBufferColorRGB
|
|
adds r5, 0x4
|
|
movs r6, 0x1
|
|
movs r4, 0x9F
|
|
_0803E8AA:
|
|
ldr r1, _0803E9AC
|
|
mov r8, r1
|
|
ldr r2, [r1]
|
|
ldr r7, _0803E9B0
|
|
ldr r3, [r7]
|
|
movs r0, 0xBE
|
|
lsls r0, 1
|
|
adds r3, r0
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl SetBGPaletteBufferColorRGB
|
|
adds r5, 0x4
|
|
adds r6, 0x1
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _0803E8AA
|
|
ldr r3, [r7]
|
|
ldr r1, _0803E9B4
|
|
adds r0, r3, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803E8E2
|
|
ldr r2, _0803E9B8
|
|
adds r0, r3, r2
|
|
ldr r0, [r0]
|
|
cmp r0, 0x3
|
|
bne _0803E8FC
|
|
_0803E8E2:
|
|
ldr r1, _0803E9BC
|
|
mov r2, r8
|
|
ldr r0, [r2]
|
|
str r0, [sp]
|
|
movs r2, 0xBE
|
|
lsls r2, 1
|
|
adds r0, r3, r2
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x1
|
|
movs r2, 0xA0
|
|
movs r3, 0x20
|
|
bl sub_8004AF0
|
|
_0803E8FC:
|
|
adds r6, 0x20
|
|
ldr r5, _0803E9C0
|
|
movs r4, 0x20
|
|
_0803E902:
|
|
ldr r0, _0803E9AC
|
|
ldr r2, [r0]
|
|
ldr r0, _0803E9B0
|
|
ldr r3, [r0]
|
|
movs r0, 0xBE
|
|
lsls r0, 1
|
|
adds r3, r0
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl SetBGPaletteBufferColorRGB
|
|
adds r5, 0x4
|
|
adds r6, 0x1
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _0803E902
|
|
mov r1, r10
|
|
cmp r1, 0
|
|
beq _0803E948
|
|
movs r6, 0xE0
|
|
ldr r0, _0803E9C4
|
|
ldr r0, [r0]
|
|
ldr r5, [r0, 0x4]
|
|
movs r4, 0x10
|
|
_0803E932:
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
mov r2, r9
|
|
movs r3, 0
|
|
bl SetBGPaletteBufferColorRGB
|
|
adds r5, 0x4
|
|
adds r6, 0x1
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _0803E932
|
|
_0803E948:
|
|
ldr r1, _0803E9C8
|
|
ldr r4, _0803E9AC
|
|
ldr r2, [r4]
|
|
movs r0, 0xF8
|
|
movs r3, 0
|
|
bl SetBGPaletteBufferColorRGB
|
|
ldr r0, _0803E9B0
|
|
ldr r0, [r0]
|
|
ldr r2, _0803E9CC
|
|
adds r0, r2
|
|
ldr r0, [r0]
|
|
ldr r5, [r0, 0x4]
|
|
movs r6, 0x80
|
|
lsls r6, 1
|
|
adds r7, r4, 0
|
|
movs r4, 0xD0
|
|
_0803E96A:
|
|
ldr r2, [r7]
|
|
ldr r0, _0803E9B0
|
|
ldr r3, [r0]
|
|
movs r0, 0xBE
|
|
lsls r0, 1
|
|
adds r3, r0
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
bl SetBGPaletteBufferColorRGB
|
|
ldr r2, [r7]
|
|
adds r0, r6, 0
|
|
adds r1, r5, 0
|
|
movs r3, 0
|
|
bl nullsub_4
|
|
adds r5, 0x4
|
|
adds r6, 0x1
|
|
subs r4, 0x1
|
|
cmp r4, 0
|
|
bne _0803E96A
|
|
add sp, 0x8
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803E9A4: .4byte gUnknown_202EE88
|
|
_0803E9A8: .4byte gUnknown_80F62AC
|
|
_0803E9AC: .4byte gUnknown_202EDC8
|
|
_0803E9B0: .4byte gDungeonGlobalData
|
|
_0803E9B4: .4byte 0x00018215
|
|
_0803E9B8: .4byte 0x0001c06c
|
|
_0803E9BC: .4byte gUnknown_202EE8C
|
|
_0803E9C0: .4byte gUnknown_202ECA4
|
|
_0803E9C4: .4byte gDungeonNameBannerPalette
|
|
_0803E9C8: .4byte gUnknown_202D058
|
|
_0803E9CC: .4byte 0x000181e4
|
|
thumb_func_end sub_803E874
|
|
|
|
thumb_func_start sub_803E9D0
|
|
sub_803E9D0:
|
|
push {r4-r7,lr}
|
|
ldr r0, _0803EA04
|
|
ldr r0, [r0]
|
|
ldr r1, _0803EA08
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
ldr r4, [r0, 0x4]
|
|
movs r6, 0x80
|
|
lsls r6, 1
|
|
ldr r7, _0803EA0C
|
|
movs r5, 0xD0
|
|
_0803E9E6:
|
|
ldr r2, [r7]
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
movs r3, 0
|
|
bl nullsub_4
|
|
adds r4, 0x4
|
|
adds r6, 0x1
|
|
subs r5, 0x1
|
|
cmp r5, 0
|
|
bne _0803E9E6
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803EA04: .4byte gDungeonGlobalData
|
|
_0803EA08: .4byte 0x000181e4
|
|
_0803EA0C: .4byte gUnknown_202EDC8
|
|
thumb_func_end sub_803E9D0
|
|
|
|
thumb_func_start sub_803EA10
|
|
sub_803EA10:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x8
|
|
ldr r0, _0803EACC
|
|
ldr r0, [r0]
|
|
ldr r4, [r0, 0x4]
|
|
ldr r1, _0803EAD0
|
|
ldr r0, _0803EAD4
|
|
ldr r2, [r0]
|
|
ldr r0, _0803EAD8
|
|
ldr r3, [r0]
|
|
movs r0, 0xBE
|
|
lsls r0, 1
|
|
adds r3, r0
|
|
movs r0, 0
|
|
bl SetBGPaletteBufferColorRGB
|
|
adds r4, 0x4
|
|
movs r6, 0x1
|
|
movs r5, 0x9F
|
|
_0803EA3A:
|
|
ldr r1, _0803EAD4
|
|
mov r8, r1
|
|
ldr r2, [r1]
|
|
ldr r7, _0803EAD8
|
|
ldr r3, [r7]
|
|
movs r0, 0xBE
|
|
lsls r0, 1
|
|
adds r3, r0
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl SetBGPaletteBufferColorRGB
|
|
adds r4, 0x4
|
|
adds r6, 0x1
|
|
subs r5, 0x1
|
|
cmp r5, 0
|
|
bne _0803EA3A
|
|
ldr r3, [r7]
|
|
ldr r1, _0803EADC
|
|
adds r0, r3, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803EA72
|
|
ldr r2, _0803EAE0
|
|
adds r0, r3, r2
|
|
ldr r0, [r0]
|
|
cmp r0, 0x3
|
|
bne _0803EA8C
|
|
_0803EA72:
|
|
ldr r1, _0803EAE4
|
|
mov r2, r8
|
|
ldr r0, [r2]
|
|
str r0, [sp]
|
|
movs r2, 0xBE
|
|
lsls r2, 1
|
|
adds r0, r3, r2
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x1
|
|
movs r2, 0xA0
|
|
movs r3, 0x20
|
|
bl sub_8004AF0
|
|
_0803EA8C:
|
|
adds r6, 0x20
|
|
ldr r4, _0803EAE8
|
|
movs r5, 0x20
|
|
_0803EA92:
|
|
ldr r7, _0803EAD4
|
|
ldr r2, [r7]
|
|
ldr r0, _0803EAD8
|
|
ldr r3, [r0]
|
|
movs r0, 0xBE
|
|
lsls r0, 1
|
|
adds r3, r0
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl SetBGPaletteBufferColorRGB
|
|
adds r4, 0x4
|
|
adds r6, 0x1
|
|
subs r5, 0x1
|
|
cmp r5, 0
|
|
bne _0803EA92
|
|
ldr r1, _0803EAEC
|
|
ldr r2, [r7]
|
|
movs r0, 0xF8
|
|
movs r3, 0
|
|
bl SetBGPaletteBufferColorRGB
|
|
add sp, 0x8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803EACC: .4byte gUnknown_202EE88
|
|
_0803EAD0: .4byte gUnknown_80F62AC
|
|
_0803EAD4: .4byte gUnknown_202EDC8
|
|
_0803EAD8: .4byte gDungeonGlobalData
|
|
_0803EADC: .4byte 0x00018215
|
|
_0803EAE0: .4byte 0x0001c06c
|
|
_0803EAE4: .4byte gUnknown_202EE8C
|
|
_0803EAE8: .4byte gUnknown_202ECA4
|
|
_0803EAEC: .4byte gUnknown_202D058
|
|
thumb_func_end sub_803EA10
|
|
|
|
thumb_func_start sub_803EAF0
|
|
sub_803EAF0:
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
adds r5, r1, 0
|
|
ldr r0, _0803EB20
|
|
ldr r0, [r0]
|
|
cmp r4, r0
|
|
bne _0803EB00
|
|
b _0803EC88
|
|
_0803EB00:
|
|
cmp r4, 0x5
|
|
bne _0803EB06
|
|
b _0803EC1C
|
|
_0803EB06:
|
|
cmp r4, 0x5
|
|
bhi _0803EB2E
|
|
cmp r4, 0x2
|
|
bne _0803EB10
|
|
b _0803EBFC
|
|
_0803EB10:
|
|
cmp r4, 0x2
|
|
bhi _0803EB24
|
|
cmp r4, 0
|
|
beq _0803EB70
|
|
cmp r4, 0x1
|
|
beq _0803EB50
|
|
b _0803EC84
|
|
.align 2, 0
|
|
_0803EB20: .4byte gUnknown_202EDD0
|
|
_0803EB24:
|
|
cmp r4, 0x3
|
|
beq _0803EB98
|
|
cmp r4, 0x4
|
|
beq _0803EBFC
|
|
b _0803EC84
|
|
_0803EB2E:
|
|
cmp r4, 0x8
|
|
bne _0803EB34
|
|
b _0803EC34
|
|
_0803EB34:
|
|
cmp r4, 0x8
|
|
bhi _0803EB42
|
|
cmp r4, 0x6
|
|
beq _0803EBBC
|
|
cmp r4, 0x7
|
|
beq _0803EBDC
|
|
b _0803EC84
|
|
_0803EB42:
|
|
cmp r4, 0xA
|
|
bne _0803EB48
|
|
b _0803EC80
|
|
_0803EB48:
|
|
cmp r4, 0xA
|
|
bcs _0803EB4E
|
|
b _0803EC54
|
|
_0803EB4E:
|
|
b _0803EC84
|
|
_0803EB50:
|
|
ldr r0, _0803EB6C
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803EB5E
|
|
movs r0, 0
|
|
bl sub_8052210
|
|
_0803EB5E:
|
|
bl ResetUnusedInputStruct
|
|
bl sub_803EC94
|
|
movs r0, 0
|
|
movs r1, 0x1
|
|
b _0803EC6E
|
|
.align 2, 0
|
|
_0803EB6C: .4byte gUnknown_203B40C
|
|
_0803EB70:
|
|
bl sub_803EC94
|
|
movs r0, 0
|
|
movs r1, 0x1
|
|
movs r2, 0x1
|
|
bl sub_800641C
|
|
ldr r0, _0803EB94
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803EB88
|
|
b _0803EC84
|
|
_0803EB88:
|
|
bl sub_8040A84
|
|
movs r0, 0
|
|
bl sub_8040ABC
|
|
b _0803EC84
|
|
.align 2, 0
|
|
_0803EB94: .4byte gUnknown_203B40C
|
|
_0803EB98:
|
|
ldr r0, _0803EBB4
|
|
movs r1, 0x1
|
|
movs r2, 0x1
|
|
bl sub_800641C
|
|
ldr r0, _0803EBB8
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803EC84
|
|
movs r0, 0x1
|
|
bl sub_8040ABC
|
|
b _0803EC84
|
|
.align 2, 0
|
|
_0803EBB4: .4byte gUnknown_80F62B0
|
|
_0803EBB8: .4byte gUnknown_203B40C
|
|
_0803EBBC:
|
|
ldr r0, _0803EBD4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803EBCA
|
|
movs r0, 0
|
|
bl sub_8052210
|
|
_0803EBCA:
|
|
bl ResetUnusedInputStruct
|
|
ldr r0, _0803EBD8
|
|
movs r1, 0x1
|
|
b _0803EC6E
|
|
.align 2, 0
|
|
_0803EBD4: .4byte gUnknown_203B40C
|
|
_0803EBD8: .4byte gUnknown_80F6310
|
|
_0803EBDC:
|
|
ldr r0, _0803EBF4
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803EBEA
|
|
movs r0, 0
|
|
bl sub_8052210
|
|
_0803EBEA:
|
|
bl ResetUnusedInputStruct
|
|
ldr r0, _0803EBF8
|
|
movs r1, 0x1
|
|
b _0803EC6E
|
|
.align 2, 0
|
|
_0803EBF4: .4byte gUnknown_203B40C
|
|
_0803EBF8: .4byte gUnknown_80F6370
|
|
_0803EBFC:
|
|
ldr r0, _0803EC18
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803EC0A
|
|
movs r0, 0
|
|
bl sub_8052210
|
|
_0803EC0A:
|
|
bl ResetUnusedInputStruct
|
|
bl sub_803EC94
|
|
movs r0, 0
|
|
movs r1, 0x1
|
|
b _0803EC6E
|
|
.align 2, 0
|
|
_0803EC18: .4byte gUnknown_203B40C
|
|
_0803EC1C:
|
|
ldr r0, _0803EC30
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803EC2A
|
|
movs r0, 0
|
|
bl sub_8052210
|
|
_0803EC2A:
|
|
movs r0, 0
|
|
movs r1, 0x1
|
|
b _0803EC6E
|
|
.align 2, 0
|
|
_0803EC30: .4byte gUnknown_203B40C
|
|
_0803EC34:
|
|
ldr r0, _0803EC50
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803EC46
|
|
bl sub_8083D44
|
|
movs r0, 0
|
|
bl sub_8052210
|
|
_0803EC46:
|
|
movs r0, 0x2
|
|
adds r1, r5, 0
|
|
bl sub_801602C
|
|
b _0803EC84
|
|
.align 2, 0
|
|
_0803EC50: .4byte gUnknown_203B40C
|
|
_0803EC54:
|
|
ldr r0, _0803EC78
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803EC66
|
|
movs r0, 0
|
|
bl sub_8052210
|
|
bl sub_8083D44
|
|
_0803EC66:
|
|
bl ResetUnusedInputStruct
|
|
ldr r0, _0803EC7C
|
|
movs r1, 0
|
|
_0803EC6E:
|
|
movs r2, 0x1
|
|
bl sub_800641C
|
|
b _0803EC84
|
|
.align 2, 0
|
|
_0803EC78: .4byte gUnknown_203B40C
|
|
_0803EC7C: .4byte gUnknown_80F63D0
|
|
_0803EC80:
|
|
bl sub_8083D44
|
|
_0803EC84:
|
|
ldr r0, _0803EC90
|
|
str r4, [r0]
|
|
_0803EC88:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803EC90: .4byte gUnknown_202EDD0
|
|
thumb_func_end sub_803EAF0
|
|
|
|
thumb_func_start sub_803EC94
|
|
sub_803EC94:
|
|
push {lr}
|
|
ldr r0, _0803ECB0
|
|
movs r1, 0
|
|
strh r1, [r0, 0x1E]
|
|
strh r1, [r0, 0x20]
|
|
strh r1, [r0, 0xC]
|
|
strh r1, [r0, 0xE]
|
|
strh r1, [r0, 0x14]
|
|
adds r0, 0x28
|
|
bl sub_801317C
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803ECB0: .4byte gUnknown_202EE10
|
|
thumb_func_end sub_803EC94
|
|
|
|
thumb_func_start sub_803ECB4
|
|
sub_803ECB4:
|
|
push {r4,r5,lr}
|
|
adds r5, r0, 0
|
|
lsls r4, r1, 24
|
|
lsrs r4, 24
|
|
ldr r1, _0803ECDC
|
|
movs r0, 0xA
|
|
str r0, [r1]
|
|
movs r0, 0
|
|
bl sub_8052210
|
|
bl ResetUnusedInputStruct
|
|
adds r0, r5, 0
|
|
movs r1, 0x1
|
|
adds r2, r4, 0
|
|
bl sub_800641C
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803ECDC: .4byte gUnknown_202EDD0
|
|
thumb_func_end sub_803ECB4
|
|
|
|
thumb_func_start sub_803ECE0
|
|
sub_803ECE0:
|
|
push {lr}
|
|
ldr r1, _0803ED24
|
|
ldr r0, [r1]
|
|
adds r0, 0x1
|
|
str r0, [r1]
|
|
cmp r0, 0
|
|
bge _0803ECF2
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
_0803ECF2:
|
|
ldr r0, [r1]
|
|
cmp r0, 0xB
|
|
ble _0803ECFC
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
_0803ECFC:
|
|
ldr r0, _0803ED28
|
|
ldr r2, [r0]
|
|
ldr r0, [r1]
|
|
cmp r0, 0
|
|
bge _0803ED08
|
|
adds r0, 0x3
|
|
_0803ED08:
|
|
asrs r1, r0, 2
|
|
lsls r0, r1, 3
|
|
adds r0, r1
|
|
lsls r0, 6
|
|
ldr r1, [r2, 0x4]
|
|
adds r1, r0
|
|
movs r2, 0x90
|
|
lsls r2, 2
|
|
ldr r0, _0803ED2C
|
|
bl sub_80098BC
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803ED24: .4byte gUnknown_202EDD8
|
|
_0803ED28: .4byte gUnknown_202EC94
|
|
_0803ED2C: .4byte 0x06014400
|
|
thumb_func_end sub_803ECE0
|
|
|
|
thumb_func_start sub_803ED30
|
|
sub_803ED30:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
adds r5, r0, 0
|
|
adds r7, r1, 0
|
|
mov r9, r3
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r8, r2
|
|
cmp r5, 0
|
|
beq _0803EDDA
|
|
ldr r0, _0803EDAC
|
|
ldr r0, [r0]
|
|
ldr r1, _0803EDB0
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803EDDA
|
|
movs r4, 0
|
|
ldr r1, _0803EDB4
|
|
movs r2, 0
|
|
ldrsh r0, [r1, r2]
|
|
cmp r0, 0
|
|
beq _0803ED78
|
|
adds r6, r1, 0
|
|
_0803ED64:
|
|
movs r0, 0x29
|
|
bl sub_803E46C
|
|
adds r4, 0x1
|
|
cmp r4, 0x13
|
|
bgt _0803ED78
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _0803ED64
|
|
_0803ED78:
|
|
adds r0, r5, 0
|
|
mov r1, r8
|
|
bl sub_803EF90
|
|
ldr r3, _0803EDB4
|
|
movs r2, 0
|
|
movs r1, 0x3C
|
|
strh r1, [r3]
|
|
str r7, [r3, 0x4]
|
|
ldrh r1, [r7, 0x26]
|
|
str r1, [r3, 0x8]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
lsls r1, 8
|
|
negs r1, r1
|
|
str r1, [r3, 0xC]
|
|
str r2, [r3, 0x10]
|
|
mov r2, r9
|
|
cmp r2, 0
|
|
bge _0803EDC8
|
|
ldr r0, _0803EDB8
|
|
cmp r5, r0
|
|
bge _0803EDBC
|
|
movs r0, 0x6
|
|
b _0803EDCA
|
|
.align 2, 0
|
|
_0803EDAC: .4byte gDungeonGlobalData
|
|
_0803EDB0: .4byte 0x0001820a
|
|
_0803EDB4: .4byte gUnknown_202EDE8
|
|
_0803EDB8: .4byte 0xfffffc19
|
|
_0803EDBC:
|
|
cmp r5, 0
|
|
blt _0803EDC4
|
|
movs r0, 0xA
|
|
b _0803EDCA
|
|
_0803EDC4:
|
|
movs r0, 0x3
|
|
b _0803EDCA
|
|
_0803EDC8:
|
|
mov r0, r9
|
|
_0803EDCA:
|
|
strh r0, [r3, 0x2]
|
|
ldr r0, _0803EDE8
|
|
ldr r1, _0803EDEC
|
|
ldr r1, [r1]
|
|
adds r1, 0x18
|
|
movs r2, 0x80
|
|
bl sub_80098BC
|
|
_0803EDDA:
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803EDE8: .4byte 0x060142c0
|
|
_0803EDEC: .4byte gDungeonGlobalData
|
|
thumb_func_end sub_803ED30
|
|
|
|
thumb_func_start sub_803EDF0
|
|
sub_803EDF0:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
ldr r6, _0803EE18
|
|
movs r1, 0
|
|
ldrsh r0, [r6, r1]
|
|
cmp r0, 0
|
|
bne _0803EE06
|
|
b _0803EF42
|
|
_0803EE06:
|
|
ldr r0, [r6, 0x4]
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
bne _0803EE1C
|
|
strh r0, [r6]
|
|
b _0803EF42
|
|
.align 2, 0
|
|
_0803EE18: .4byte gUnknown_202EDE8
|
|
_0803EE1C:
|
|
ldr r1, [r6, 0x4]
|
|
ldr r0, [r6, 0x8]
|
|
ldrh r2, [r1, 0x26]
|
|
cmp r0, r2
|
|
beq _0803EE2C
|
|
movs r0, 0
|
|
strh r0, [r6]
|
|
b _0803EF42
|
|
_0803EE2C:
|
|
ldrh r0, [r6]
|
|
subs r0, 0x1
|
|
strh r0, [r6]
|
|
ldr r4, [r6, 0x10]
|
|
adds r3, r4, 0
|
|
subs r3, 0x2E
|
|
str r3, [r6, 0x10]
|
|
ldr r2, [r1, 0x70]
|
|
movs r5, 0xB8
|
|
lsls r5, 1
|
|
adds r0, r2, r5
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
ldr r1, [r6, 0xC]
|
|
cmp r1, 0
|
|
bge _0803EE4E
|
|
adds r1, 0xFF
|
|
_0803EE4E:
|
|
asrs r1, 8
|
|
adds r1, r0, r1
|
|
ldr r0, _0803EF50
|
|
ldr r0, [r0]
|
|
mov r12, r0
|
|
ldr r0, _0803EF54
|
|
add r0, r12
|
|
movs r5, 0
|
|
ldrsh r0, [r0, r5]
|
|
subs r7, r1, r0
|
|
movs r1, 0xB9
|
|
lsls r1, 1
|
|
adds r0, r2, r1
|
|
movs r2, 0
|
|
ldrsh r0, [r0, r2]
|
|
adds r1, r3, 0
|
|
cmp r1, 0
|
|
bge _0803EE76
|
|
adds r1, r4, 0
|
|
adds r1, 0xD1
|
|
_0803EE76:
|
|
asrs r1, 8
|
|
adds r1, r0, r1
|
|
ldr r0, _0803EF58
|
|
add r0, r12
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
adds r0, 0x18
|
|
subs r2, r1, r0
|
|
movs r0, 0x20
|
|
negs r0, r0
|
|
cmp r7, r0
|
|
blt _0803EF42
|
|
adds r0, 0x18
|
|
cmp r2, r0
|
|
blt _0803EF42
|
|
cmp r7, 0xEF
|
|
bgt _0803EF42
|
|
cmp r2, 0x9F
|
|
bgt _0803EF42
|
|
ldr r1, _0803EF5C
|
|
ands r1, r2
|
|
lsls r1, 4
|
|
ldr r0, _0803EF60
|
|
ldrh r2, [r0, 0x6]
|
|
movs r4, 0xF
|
|
mov r8, r4
|
|
mov r3, r8
|
|
ands r3, r2
|
|
orrs r3, r1
|
|
strh r3, [r0, 0x6]
|
|
ldrh r2, [r0]
|
|
ldr r1, _0803EF64
|
|
ands r1, r2
|
|
ldr r2, _0803EF68
|
|
ands r1, r2
|
|
movs r5, 0x3
|
|
mov r9, r5
|
|
ldr r2, _0803EF6C
|
|
mov r10, r2
|
|
ands r1, r2
|
|
ldr r2, _0803EF70
|
|
ands r1, r2
|
|
ldr r2, _0803EF74
|
|
ands r1, r2
|
|
movs r5, 0x80
|
|
lsls r5, 7
|
|
ldr r4, _0803EF78
|
|
ands r1, r4
|
|
orrs r1, r5
|
|
strh r1, [r0]
|
|
ldr r1, _0803EF7C
|
|
ands r7, r1
|
|
ldrh r2, [r0, 0x2]
|
|
movs r1, 0xFE
|
|
lsls r1, 8
|
|
ands r1, r2
|
|
orrs r1, r7
|
|
ldr r2, _0803EF80
|
|
ands r1, r2
|
|
ands r1, r4
|
|
orrs r1, r5
|
|
strh r1, [r0, 0x2]
|
|
ldr r4, _0803EF84
|
|
ldrh r2, [r0, 0x4]
|
|
movs r1, 0xFC
|
|
lsls r1, 8
|
|
ands r1, r2
|
|
orrs r1, r4
|
|
movs r2, 0
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
ldr r2, _0803EF88
|
|
add r2, r12
|
|
ldrb r2, [r2]
|
|
mov r4, r9
|
|
ands r2, r4
|
|
lsls r2, 10
|
|
mov r5, r10
|
|
ands r1, r5
|
|
orrs r1, r2
|
|
movs r4, 0x2
|
|
ldrsh r2, [r6, r4]
|
|
mov r5, r8
|
|
ands r2, r5
|
|
lsls r2, 12
|
|
ldr r4, _0803EF5C
|
|
ands r1, r4
|
|
orrs r1, r2
|
|
strh r1, [r0, 0x4]
|
|
ldr r1, _0803EF8C
|
|
ands r3, r1
|
|
subs r1, 0x1
|
|
ands r3, r1
|
|
subs r1, 0x2
|
|
ands r3, r1
|
|
strh r3, [r0, 0x6]
|
|
movs r1, 0x80
|
|
lsls r1, 1
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl AddSprite
|
|
_0803EF42:
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803EF50: .4byte gDungeonGlobalData
|
|
_0803EF54: .4byte 0x000181f0
|
|
_0803EF58: .4byte 0x000181f2
|
|
_0803EF5C: .4byte 0x00000fff
|
|
_0803EF60: .4byte gUnknown_202EDDC
|
|
_0803EF64: .4byte 0x0000feff
|
|
_0803EF68: .4byte 0x0000fdff
|
|
_0803EF6C: .4byte 0x0000f3ff
|
|
_0803EF70: .4byte 0x0000efff
|
|
_0803EF74: .4byte 0x0000dfff
|
|
_0803EF78: .4byte 0x00003fff
|
|
_0803EF7C: .4byte 0x000001ff
|
|
_0803EF80: .4byte 0x0000c1ff
|
|
_0803EF84: .4byte 0x00000216
|
|
_0803EF88: .4byte 0x00018208
|
|
_0803EF8C: .4byte 0x0000fffe
|
|
thumb_func_end sub_803EDF0
|
|
|
|
thumb_func_start sub_803EF90
|
|
sub_803EF90:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x58
|
|
str r0, [sp, 0x48]
|
|
lsls r1, 24
|
|
lsrs r5, r1, 24
|
|
ldr r0, _0803F060
|
|
ldr r0, [r0]
|
|
adds r0, 0x18
|
|
mov r8, r0
|
|
ldr r0, _0803F064
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, 0x4]
|
|
movs r2, 0x92
|
|
lsls r2, 1
|
|
adds r0, r2
|
|
str r0, [sp, 0x24]
|
|
ldr r0, [r1, 0x4]
|
|
movs r3, 0x82
|
|
lsls r3, 1
|
|
adds r0, r3
|
|
str r0, [sp, 0x28]
|
|
ldr r0, [r1, 0x4]
|
|
adds r0, 0xE4
|
|
str r0, [sp, 0x2C]
|
|
ldr r0, [r1, 0x4]
|
|
adds r0, 0xC4
|
|
str r0, [sp, 0x30]
|
|
ldr r0, [r1, 0x4]
|
|
adds r0, 0xA4
|
|
str r0, [sp, 0x34]
|
|
ldr r0, [r1, 0x4]
|
|
adds r0, 0x84
|
|
str r0, [sp, 0x38]
|
|
ldr r0, [r1, 0x4]
|
|
adds r0, 0x64
|
|
str r0, [sp, 0x3C]
|
|
ldr r0, [r1, 0x4]
|
|
adds r0, 0x44
|
|
str r0, [sp, 0x40]
|
|
ldr r0, [r1, 0x4]
|
|
adds r0, 0x24
|
|
str r0, [sp, 0x44]
|
|
add r4, sp, 0x24
|
|
mov r0, sp
|
|
adds r1, r4, 0
|
|
movs r2, 0x24
|
|
bl memcpy
|
|
movs r1, 0
|
|
movs r6, 0x3
|
|
mov r0, r8
|
|
_0803EFFE:
|
|
stm r0!, {r1}
|
|
stm r0!, {r1}
|
|
stm r0!, {r1}
|
|
stm r0!, {r1}
|
|
stm r0!, {r1}
|
|
stm r0!, {r1}
|
|
stm r0!, {r1}
|
|
stm r0!, {r1}
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bge _0803EFFE
|
|
ldr r0, _0803F068
|
|
ldr r1, [sp, 0x48]
|
|
cmp r1, r0
|
|
bne _0803F0A6
|
|
adds r0, r4, 0
|
|
ldr r1, _0803F06C
|
|
ldm r1!, {r2,r3,r5}
|
|
stm r0!, {r2,r3,r5}
|
|
ldr r1, [r1]
|
|
str r1, [r0]
|
|
movs r5, 0
|
|
movs r2, 0
|
|
mov r12, r4
|
|
movs r0, 0x20
|
|
mov r10, r0
|
|
_0803F032:
|
|
mov r3, r8
|
|
ldr r0, _0803F064
|
|
ldr r1, [r0]
|
|
lsls r0, r2, 2
|
|
add r0, r12
|
|
ldr r0, [r0]
|
|
lsls r0, 5
|
|
adds r0, 0x4
|
|
ldr r1, [r1, 0x4]
|
|
adds r4, r1, r0
|
|
movs r1, 0x18
|
|
adds r1, r5
|
|
mov r9, r1
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x54]
|
|
mov r2, r10
|
|
subs r7, r2, r5
|
|
movs r6, 0x7
|
|
_0803F056:
|
|
cmp r5, 0
|
|
bne _0803F070
|
|
movs r1, 0
|
|
ldr r2, [r4]
|
|
b _0803F07A
|
|
.align 2, 0
|
|
_0803F060: .4byte gDungeonGlobalData
|
|
_0803F064: .4byte gUnknown_202EC9C
|
|
_0803F068: .4byte 0x0000270f
|
|
_0803F06C: .4byte gUnknown_80F6478
|
|
_0803F070:
|
|
ldr r0, [r4]
|
|
adds r1, r0, 0
|
|
lsrs r1, r7
|
|
adds r2, r0, 0
|
|
lsls r2, r5
|
|
_0803F07A:
|
|
adds r4, 0x4
|
|
ldr r0, [r3]
|
|
orrs r0, r2
|
|
str r0, [r3]
|
|
ldr r0, [r3, 0x20]
|
|
orrs r0, r1
|
|
str r0, [r3, 0x20]
|
|
adds r3, 0x4
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bge _0803F056
|
|
mov r5, r9
|
|
cmp r5, 0x1F
|
|
ble _0803F09C
|
|
subs r5, 0x20
|
|
movs r3, 0x20
|
|
add r8, r3
|
|
_0803F09C:
|
|
ldr r2, [sp, 0x54]
|
|
cmp r2, 0x3
|
|
ble _0803F032
|
|
movs r0, 0x4
|
|
b _0803F26A
|
|
_0803F0A6:
|
|
ldr r0, _0803F0D8
|
|
ldr r1, [sp, 0x48]
|
|
cmp r1, r0
|
|
ble _0803F0B0
|
|
str r0, [sp, 0x48]
|
|
_0803F0B0:
|
|
ldr r0, _0803F0DC
|
|
ldr r2, [sp, 0x48]
|
|
cmp r2, r0
|
|
bge _0803F0BA
|
|
str r0, [sp, 0x48]
|
|
_0803F0BA:
|
|
ldr r1, _0803F0E0
|
|
ldr r0, [r1]
|
|
ldr r0, [r0, 0x4]
|
|
movs r3, 0xC2
|
|
lsls r3, 1
|
|
adds r2, r0, r3
|
|
cmp r5, 0
|
|
beq _0803F0F4
|
|
ldr r5, [sp, 0x48]
|
|
cmp r5, 0
|
|
ble _0803F0E4
|
|
movs r1, 0xA2
|
|
lsls r1, 1
|
|
adds r2, r0, r1
|
|
b _0803F0F4
|
|
.align 2, 0
|
|
_0803F0D8: .4byte 0x000003e7
|
|
_0803F0DC: .4byte 0xfffffc19
|
|
_0803F0E0: .4byte gUnknown_202EC9C
|
|
_0803F0E4:
|
|
ldr r3, [sp, 0x48]
|
|
cmp r3, 0
|
|
bge _0803F0F4
|
|
movs r5, 0xB2
|
|
lsls r5, 1
|
|
adds r2, r0, r5
|
|
negs r3, r3
|
|
str r3, [sp, 0x48]
|
|
_0803F0F4:
|
|
ldm r2!, {r0}
|
|
mov r1, r8
|
|
str r0, [r1]
|
|
ldm r2!, {r0}
|
|
str r0, [r1, 0x4]
|
|
ldm r2!, {r0}
|
|
str r0, [r1, 0x8]
|
|
ldm r2!, {r0}
|
|
str r0, [r1, 0xC]
|
|
ldm r2!, {r0}
|
|
str r0, [r1, 0x10]
|
|
ldm r2!, {r0}
|
|
str r0, [r1, 0x14]
|
|
ldm r2!, {r0}
|
|
str r0, [r1, 0x18]
|
|
ldr r0, [r2]
|
|
str r0, [r1, 0x1C]
|
|
movs r5, 0x18
|
|
movs r2, 0x1
|
|
str r2, [sp, 0x4C]
|
|
movs r3, 0
|
|
str r3, [sp, 0x50]
|
|
movs r2, 0
|
|
_0803F122:
|
|
movs r0, 0
|
|
mov r10, r0
|
|
adds r1, r2, 0x1
|
|
str r1, [sp, 0x54]
|
|
lsls r0, r2, 3
|
|
adds r0, r2
|
|
lsls r0, 2
|
|
mov r1, sp
|
|
ldr r2, _0803F15C
|
|
adds r7, r0, r2
|
|
_0803F136:
|
|
ldr r0, [r7]
|
|
ldr r3, [sp, 0x48]
|
|
cmp r0, r3
|
|
bgt _0803F1A2
|
|
ldr r4, [r1]
|
|
mov r2, r8
|
|
movs r0, 0x18
|
|
adds r0, r5
|
|
mov r9, r0
|
|
movs r1, 0x20
|
|
subs r1, r5
|
|
mov r12, r1
|
|
movs r6, 0x7
|
|
_0803F150:
|
|
cmp r5, 0
|
|
bne _0803F160
|
|
movs r3, 0
|
|
ldr r1, [r4]
|
|
b _0803F16C
|
|
.align 2, 0
|
|
_0803F15C: .4byte gUnknown_80F6430
|
|
_0803F160:
|
|
ldr r0, [r4]
|
|
adds r3, r0, 0
|
|
mov r1, r12
|
|
lsrs r3, r1
|
|
adds r1, r0, 0
|
|
lsls r1, r5
|
|
_0803F16C:
|
|
adds r4, 0x4
|
|
ldr r0, [r2]
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
ldr r0, [r2, 0x20]
|
|
orrs r0, r3
|
|
str r0, [r2, 0x20]
|
|
adds r2, 0x4
|
|
movs r3, 0x1
|
|
str r3, [sp, 0x50]
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bge _0803F150
|
|
mov r5, r9
|
|
cmp r5, 0x1F
|
|
ble _0803F192
|
|
subs r5, 0x20
|
|
movs r0, 0x20
|
|
add r8, r0
|
|
_0803F192:
|
|
ldr r0, [r7]
|
|
ldr r1, [sp, 0x48]
|
|
subs r1, r0
|
|
str r1, [sp, 0x48]
|
|
ldr r2, [sp, 0x4C]
|
|
adds r2, 0x1
|
|
str r2, [sp, 0x4C]
|
|
b _0803F1B0
|
|
_0803F1A2:
|
|
adds r1, 0x4
|
|
adds r7, 0x4
|
|
movs r3, 0x1
|
|
add r10, r3
|
|
mov r0, r10
|
|
cmp r0, 0x8
|
|
ble _0803F136
|
|
_0803F1B0:
|
|
mov r1, r10
|
|
cmp r1, 0x9
|
|
bne _0803F212
|
|
ldr r2, [sp, 0x50]
|
|
cmp r2, 0
|
|
beq _0803F212
|
|
ldr r3, _0803F1DC
|
|
ldr r0, [r3]
|
|
ldr r0, [r0, 0x4]
|
|
adds r4, r0, 0x4
|
|
mov r2, r8
|
|
movs r0, 0x18
|
|
adds r0, r5
|
|
mov r9, r0
|
|
movs r1, 0x20
|
|
subs r7, r1, r5
|
|
movs r6, 0x7
|
|
_0803F1D2:
|
|
cmp r5, 0
|
|
bne _0803F1E0
|
|
movs r3, 0
|
|
ldr r1, [r4]
|
|
b _0803F1EA
|
|
.align 2, 0
|
|
_0803F1DC: .4byte gUnknown_202EC9C
|
|
_0803F1E0:
|
|
ldr r0, [r4]
|
|
adds r3, r0, 0
|
|
lsrs r3, r7
|
|
adds r1, r0, 0
|
|
lsls r1, r5
|
|
_0803F1EA:
|
|
adds r4, 0x4
|
|
ldr r0, [r2]
|
|
orrs r0, r1
|
|
str r0, [r2]
|
|
ldr r0, [r2, 0x20]
|
|
orrs r0, r3
|
|
str r0, [r2, 0x20]
|
|
adds r2, 0x4
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bge _0803F1D2
|
|
mov r5, r9
|
|
cmp r5, 0x1F
|
|
ble _0803F20C
|
|
subs r5, 0x20
|
|
movs r2, 0x20
|
|
add r8, r2
|
|
_0803F20C:
|
|
ldr r3, [sp, 0x4C]
|
|
adds r3, 0x1
|
|
str r3, [sp, 0x4C]
|
|
_0803F212:
|
|
ldr r2, [sp, 0x54]
|
|
cmp r2, 0x1
|
|
ble _0803F122
|
|
ldr r0, _0803F240
|
|
ldr r1, [r0]
|
|
ldr r2, [sp, 0x48]
|
|
lsls r0, r2, 5
|
|
adds r0, 0x4
|
|
ldr r1, [r1, 0x4]
|
|
adds r1, r0
|
|
mov r3, r8
|
|
ldr r0, [sp, 0x4C]
|
|
adds r0, 0x1
|
|
mov r8, r0
|
|
movs r0, 0x20
|
|
subs r7, r0, r5
|
|
movs r6, 0x7
|
|
_0803F234:
|
|
cmp r5, 0
|
|
bne _0803F244
|
|
movs r4, 0
|
|
ldr r2, [r1]
|
|
b _0803F24E
|
|
.align 2, 0
|
|
_0803F240: .4byte gUnknown_202EC9C
|
|
_0803F244:
|
|
ldr r0, [r1]
|
|
adds r4, r0, 0
|
|
lsrs r4, r7
|
|
adds r2, r0, 0
|
|
lsls r2, r5
|
|
_0803F24E:
|
|
adds r1, 0x4
|
|
ldr r0, [r3]
|
|
orrs r0, r2
|
|
str r0, [r3]
|
|
ldr r0, [r3, 0x20]
|
|
orrs r0, r4
|
|
str r0, [r3, 0x20]
|
|
adds r3, 0x4
|
|
subs r6, 0x1
|
|
cmp r6, 0
|
|
bge _0803F234
|
|
mov r1, r8
|
|
str r1, [sp, 0x4C]
|
|
adds r0, r1, 0
|
|
_0803F26A:
|
|
add sp, 0x58
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_803EF90
|
|
|
|
thumb_func_start sub_803F27C
|
|
sub_803F27C:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
adds r7, r0, 0
|
|
ldr r0, _0803F360
|
|
mov r8, r0
|
|
ldr r4, [r0]
|
|
ldr r2, _0803F364
|
|
adds r1, r4, r2
|
|
movs r2, 0
|
|
movs r3, 0
|
|
strh r3, [r1, 0x8]
|
|
strh r3, [r1, 0xA]
|
|
strh r3, [r1]
|
|
strh r3, [r1, 0x2]
|
|
strh r3, [r1, 0xC]
|
|
strh r3, [r1, 0xE]
|
|
strh r3, [r1, 0x4]
|
|
strh r3, [r1, 0x6]
|
|
str r3, [r1, 0x14]
|
|
ldr r5, _0803F368
|
|
adds r0, r4, r5
|
|
strb r2, [r0]
|
|
ldr r6, _0803F36C
|
|
adds r0, r4, r6
|
|
movs r5, 0x1
|
|
strb r5, [r0]
|
|
adds r6, 0x1
|
|
adds r0, r4, r6
|
|
strb r5, [r0]
|
|
adds r6, 0x1
|
|
adds r0, r4, r6
|
|
strb r2, [r0]
|
|
str r3, [r1, 0x18]
|
|
str r3, [r1, 0x1C]
|
|
cmp r7, 0
|
|
bne _0803F2FA
|
|
subs r6, 0xF
|
|
adds r0, r4, r6
|
|
strb r2, [r0]
|
|
adds r6, 0x6
|
|
adds r0, r4, r6
|
|
strb r2, [r0]
|
|
subs r6, 0x1
|
|
adds r0, r4, r6
|
|
strb r2, [r0]
|
|
subs r6, 0x2
|
|
adds r0, r4, r6
|
|
strb r2, [r0]
|
|
adds r6, 0x4
|
|
adds r0, r4, r6
|
|
strb r2, [r0]
|
|
subs r6, 0x3
|
|
adds r0, r4, r6
|
|
strb r2, [r0]
|
|
subs r6, 0x3
|
|
adds r0, r4, r6
|
|
strb r2, [r0]
|
|
adds r6, 0x1
|
|
adds r0, r4, r6
|
|
strb r2, [r0]
|
|
_0803F2FA:
|
|
str r3, [r1, 0x10]
|
|
ldr r1, _0803F370
|
|
adds r0, r4, r1
|
|
movs r6, 0x3
|
|
strb r6, [r0]
|
|
adds r1, 0x12
|
|
adds r0, r4, r1
|
|
strb r2, [r0]
|
|
subs r1, 0x8
|
|
adds r0, r4, r1
|
|
strb r2, [r0]
|
|
adds r1, 0x9
|
|
adds r0, r4, r1
|
|
strb r2, [r0]
|
|
adds r1, 0x1
|
|
adds r0, r4, r1
|
|
strb r2, [r0]
|
|
subs r1, 0x8
|
|
adds r0, r4, r1
|
|
strb r2, [r0]
|
|
ldr r2, _0803F374
|
|
adds r0, r4, r2
|
|
strb r5, [r0]
|
|
bl sub_803F38C
|
|
ldr r1, _0803F378
|
|
ldr r0, _0803F37C
|
|
str r0, [r1]
|
|
cmp r7, 0
|
|
bne _0803F354
|
|
mov r1, r8
|
|
ldr r0, [r1]
|
|
ldr r2, _0803F380
|
|
adds r0, r2
|
|
ldrb r1, [r0]
|
|
adds r0, r6, 0
|
|
ands r0, r1
|
|
ldr r6, _0803F384
|
|
adds r1, r4, r6
|
|
strb r0, [r1]
|
|
cmp r0, 0
|
|
bne _0803F354
|
|
ldr r1, _0803F388
|
|
adds r0, r4, r1
|
|
strb r5, [r0]
|
|
_0803F354:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803F360: .4byte gDungeonGlobalData
|
|
_0803F364: .4byte 0x000181e8
|
|
_0803F368: .4byte 0x00018216
|
|
_0803F36C: .4byte 0x00018217
|
|
_0803F370: .4byte 0x00018208
|
|
_0803F374: .4byte 0x00018215
|
|
_0803F378: .4byte gUnknown_202EDFC
|
|
_0803F37C: .4byte 0x0000ffff
|
|
_0803F380: .4byte 0x0001c58a
|
|
_0803F384: .4byte 0x00018209
|
|
_0803F388: .4byte 0x0001820c
|
|
thumb_func_end sub_803F27C
|
|
|
|
thumb_func_start sub_803F38C
|
|
sub_803F38C:
|
|
push {r4-r6,lr}
|
|
mov r6, r8
|
|
push {r6}
|
|
ldr r0, _0803F410
|
|
ldr r1, [r0]
|
|
ldr r0, _0803F414
|
|
adds r2, r1, r0
|
|
ldr r0, _0803F418
|
|
strh r0, [r2, 0x3A]
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
strh r0, [r2, 0x3C]
|
|
strh r0, [r2, 0x3E]
|
|
ldr r0, _0803F41C
|
|
adds r1, r0
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
strh r0, [r1]
|
|
strh r0, [r2, 0x36]
|
|
strh r0, [r2, 0x38]
|
|
ldr r0, _0803F420
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0xB]
|
|
negs r4, r0
|
|
orrs r4, r0
|
|
asrs r4, 31
|
|
movs r0, 0x80
|
|
lsls r0, 1
|
|
ands r4, r0
|
|
ldr r5, _0803F424
|
|
adds r0, r4, r5
|
|
mov r8, r0
|
|
movs r0, 0xFD
|
|
mov r1, r8
|
|
bl SetBGPaletteBufferColorArray
|
|
adds r6, r5, 0x4
|
|
adds r6, r4, r6
|
|
movs r0, 0xFE
|
|
adds r1, r6, 0
|
|
bl SetBGPaletteBufferColorArray
|
|
adds r5, 0x8
|
|
adds r4, r5
|
|
movs r0, 0xFF
|
|
adds r1, r4, 0
|
|
bl SetBGPaletteBufferColorArray
|
|
movs r0, 0xFD
|
|
mov r1, r8
|
|
bl nullsub_5
|
|
movs r0, 0xFE
|
|
adds r1, r6, 0
|
|
bl nullsub_5
|
|
movs r0, 0xFF
|
|
adds r1, r4, 0
|
|
bl nullsub_5
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803F410: .4byte gDungeonGlobalData
|
|
_0803F414: .4byte 0x000181e8
|
|
_0803F418: .4byte 0x0000ffff
|
|
_0803F41C: .4byte 0x00018228
|
|
_0803F420: .4byte gUnknown_203B46C
|
|
_0803F424: .4byte gUnknown_202D06C
|
|
thumb_func_end sub_803F38C
|
|
|
|
thumb_func_start sub_803F428
|
|
sub_803F428:
|
|
push {r4-r6,lr}
|
|
adds r4, r0, 0
|
|
ldr r0, _0803F484
|
|
ldr r3, [r0]
|
|
ldr r0, _0803F488
|
|
adds r2, r3, r0
|
|
ldr r5, [r2, 0x10]
|
|
movs r6, 0
|
|
ldrsh r1, [r2, r6]
|
|
movs r6, 0
|
|
ldrsh r0, [r4, r6]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0803F446
|
|
negs r1, r1
|
|
_0803F446:
|
|
cmp r1, 0x6
|
|
bgt _0803F498
|
|
movs r0, 0x2
|
|
ldrsh r1, [r2, r0]
|
|
movs r6, 0x2
|
|
ldrsh r0, [r4, r6]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0803F45A
|
|
negs r1, r1
|
|
_0803F45A:
|
|
cmp r1, 0x5
|
|
bgt _0803F498
|
|
ldr r1, _0803F48C
|
|
adds r0, r3, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803F494
|
|
ldr r6, _0803F490
|
|
adds r0, r3, r6
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803F494
|
|
cmp r5, 0
|
|
beq _0803F494
|
|
adds r0, r2, 0
|
|
adds r1, r4, 0
|
|
bl InSameRoom_2
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
b _0803F49A
|
|
.align 2, 0
|
|
_0803F484: .4byte gDungeonGlobalData
|
|
_0803F488: .4byte 0x000181e8
|
|
_0803F48C: .4byte 0x0001820b
|
|
_0803F490: .4byte 0x0001820c
|
|
_0803F494:
|
|
movs r0, 0x1
|
|
b _0803F49A
|
|
_0803F498:
|
|
movs r0, 0
|
|
_0803F49A:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_803F428
|
|
|
|
thumb_func_start sub_803F4A0
|
|
sub_803F4A0:
|
|
push {lr}
|
|
adds r2, r0, 0
|
|
ldr r0, _0803F4B8
|
|
ldr r1, [r0]
|
|
ldr r3, _0803F4BC
|
|
adds r0, r1, r3
|
|
str r2, [r0, 0x10]
|
|
cmp r2, 0
|
|
bne _0803F4C0
|
|
adds r3, 0x2E
|
|
b _0803F4CA
|
|
.align 2, 0
|
|
_0803F4B8: .4byte gDungeonGlobalData
|
|
_0803F4BC: .4byte 0x000181e8
|
|
_0803F4C0:
|
|
ldr r0, [r2, 0x70]
|
|
ldrb r2, [r0, 0x7]
|
|
cmp r2, 0
|
|
bne _0803F4D4
|
|
ldr r3, _0803F4D0
|
|
_0803F4CA:
|
|
adds r0, r1, r3
|
|
strb r2, [r0]
|
|
b _0803F4DC
|
|
.align 2, 0
|
|
_0803F4D0: .4byte 0x00018216
|
|
_0803F4D4:
|
|
ldr r0, _0803F4FC
|
|
adds r1, r0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_0803F4DC:
|
|
movs r0, 0
|
|
bl sub_803F580
|
|
bl sub_803F38C
|
|
ldr r0, _0803F500
|
|
ldr r0, [r0]
|
|
ldr r1, _0803F504
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803F4F8
|
|
bl sub_806CD90
|
|
_0803F4F8:
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803F4FC: .4byte 0x00018216
|
|
_0803F500: .4byte gDungeonGlobalData
|
|
_0803F504: .4byte 0x0001356c
|
|
thumb_func_end sub_803F4A0
|
|
|
|
thumb_func_start sub_803F508
|
|
sub_803F508:
|
|
push {r4,r5,lr}
|
|
adds r3, r0, 0
|
|
ldr r0, _0803F520
|
|
ldr r1, [r0]
|
|
ldr r0, _0803F524
|
|
adds r4, r1, r0
|
|
cmp r3, 0
|
|
bne _0803F52C
|
|
ldr r2, _0803F528
|
|
adds r0, r1, r2
|
|
strb r3, [r0]
|
|
b _0803F548
|
|
.align 2, 0
|
|
_0803F520: .4byte gDungeonGlobalData
|
|
_0803F524: .4byte 0x000181e8
|
|
_0803F528: .4byte 0x00018216
|
|
_0803F52C:
|
|
ldr r0, [r3, 0x70]
|
|
ldrb r2, [r0, 0x7]
|
|
cmp r2, 0
|
|
bne _0803F540
|
|
ldr r5, _0803F53C
|
|
adds r0, r1, r5
|
|
strb r2, [r0]
|
|
b _0803F548
|
|
.align 2, 0
|
|
_0803F53C: .4byte 0x00018216
|
|
_0803F540:
|
|
ldr r0, _0803F574
|
|
adds r1, r0
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
_0803F548:
|
|
str r3, [r4, 0x10]
|
|
movs r0, 0
|
|
bl sub_803F580
|
|
bl sub_803F38C
|
|
ldr r0, _0803F578
|
|
ldr r0, [r0]
|
|
ldr r1, _0803F57C
|
|
adds r0, r1
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803F566
|
|
bl sub_806CD90
|
|
_0803F566:
|
|
bl sub_8049ED4
|
|
bl sub_8040A84
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803F574: .4byte 0x00018216
|
|
_0803F578: .4byte gDungeonGlobalData
|
|
_0803F57C: .4byte 0x0001356c
|
|
thumb_func_end sub_803F508
|
|
|
|
thumb_func_start sub_803F580
|
|
sub_803F580:
|
|
push {r4-r7,lr}
|
|
mov r7, r9
|
|
mov r6, r8
|
|
push {r6,r7}
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
mov r9, r0
|
|
ldr r0, _0803F600
|
|
ldr r4, [r0]
|
|
ldr r0, _0803F604
|
|
adds r5, r4, r0
|
|
ldr r6, [r5, 0x10]
|
|
cmp r6, 0
|
|
bne _0803F59E
|
|
b _0803F7A0
|
|
_0803F59E:
|
|
adds r0, r6, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803F5AC
|
|
b _0803F7A0
|
|
_0803F5AC:
|
|
ldr r7, [r6, 0x70]
|
|
ldr r0, [r5, 0x8]
|
|
str r0, [r5, 0xC]
|
|
ldr r0, [r5]
|
|
str r0, [r5, 0x4]
|
|
ldrh r0, [r6, 0x4]
|
|
strh r0, [r5]
|
|
ldrh r0, [r6, 0x6]
|
|
strh r0, [r5, 0x2]
|
|
ldr r0, [r6, 0xC]
|
|
cmp r0, 0
|
|
bge _0803F5C6
|
|
adds r0, 0xFF
|
|
_0803F5C6:
|
|
asrs r0, 8
|
|
subs r0, 0x78
|
|
strh r0, [r5, 0x8]
|
|
ldr r0, [r6, 0x10]
|
|
cmp r0, 0
|
|
bge _0803F5D4
|
|
adds r0, 0xFF
|
|
_0803F5D4:
|
|
asrs r0, 8
|
|
subs r0, 0x60
|
|
strh r0, [r5, 0xA]
|
|
adds r0, r6, 0
|
|
movs r1, 0x11
|
|
bl HasItem
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803F610
|
|
ldrb r0, [r7, 0x7]
|
|
cmp r0, 0
|
|
beq _0803F610
|
|
ldr r1, _0803F608
|
|
adds r0, r4, r1
|
|
movs r1, 0x1
|
|
strb r1, [r0]
|
|
ldr r2, _0803F60C
|
|
adds r0, r4, r2
|
|
strb r1, [r0]
|
|
b _0803F626
|
|
.align 2, 0
|
|
_0803F600: .4byte gDungeonGlobalData
|
|
_0803F604: .4byte 0x000181e8
|
|
_0803F608: .4byte 0x0001820d
|
|
_0803F60C: .4byte 0x0001820e
|
|
_0803F610:
|
|
adds r0, r7, 0
|
|
adds r0, 0xF0
|
|
ldrb r0, [r0]
|
|
adds r1, r5, 0
|
|
adds r1, 0x25
|
|
strb r0, [r1]
|
|
adds r0, r7, 0
|
|
adds r0, 0xF1
|
|
ldrb r0, [r0]
|
|
adds r1, 0x1
|
|
strb r0, [r1]
|
|
_0803F626:
|
|
adds r0, r7, 0
|
|
adds r0, 0xF2
|
|
ldrb r0, [r0]
|
|
adds r1, r5, 0
|
|
adds r1, 0x29
|
|
strb r0, [r1]
|
|
subs r1, 0x7
|
|
ldrb r0, [r1]
|
|
mov r8, r0
|
|
adds r0, r5, 0
|
|
adds r0, 0x2C
|
|
ldrb r2, [r0]
|
|
adds r4, r1, 0
|
|
cmp r2, 0
|
|
bne _0803F670
|
|
adds r0, r7, 0
|
|
adds r0, 0xE8
|
|
ldrb r1, [r0]
|
|
adds r7, r0, 0
|
|
cmp r1, 0x1
|
|
bne _0803F656
|
|
strb r1, [r4]
|
|
movs r1, 0xE
|
|
b _0803F65A
|
|
_0803F656:
|
|
strb r2, [r4]
|
|
movs r1, 0
|
|
_0803F65A:
|
|
ldr r2, _0803F66C
|
|
ldr r0, [r2]
|
|
cmp r0, r1
|
|
beq _0803F678
|
|
str r1, [r2]
|
|
adds r0, r1, 0
|
|
bl SetBGOBJEnableFlags
|
|
b _0803F678
|
|
.align 2, 0
|
|
_0803F66C: .4byte gUnknown_202EDFC
|
|
_0803F670:
|
|
ldr r1, _0803F698
|
|
ldr r0, _0803F69C
|
|
str r0, [r1]
|
|
adds r7, 0xE8
|
|
_0803F678:
|
|
ldrb r4, [r4]
|
|
cmp r8, r4
|
|
beq _0803F684
|
|
movs r0, 0
|
|
bl sub_8041888
|
|
_0803F684:
|
|
adds r0, r5, 0
|
|
adds r0, 0x28
|
|
ldrb r1, [r0]
|
|
mov r8, r1
|
|
ldrb r1, [r7]
|
|
adds r2, r0, 0
|
|
cmp r1, 0x2
|
|
bne _0803F6A0
|
|
movs r0, 0x1
|
|
b _0803F6A2
|
|
.align 2, 0
|
|
_0803F698: .4byte gUnknown_202EDFC
|
|
_0803F69C: .4byte 0x0000ffff
|
|
_0803F6A0:
|
|
movs r0, 0
|
|
_0803F6A2:
|
|
strb r0, [r2]
|
|
ldrb r2, [r2]
|
|
cmp r8, r2
|
|
beq _0803F6B4
|
|
bl sub_806CC70
|
|
movs r0, 0
|
|
bl sub_8041888
|
|
_0803F6B4:
|
|
adds r4, r5, 0
|
|
adds r4, 0x27
|
|
ldrb r2, [r4]
|
|
mov r8, r2
|
|
adds r0, r6, 0
|
|
bl CanSeeInvisible
|
|
lsls r0, 24
|
|
lsrs r0, 24
|
|
cmp r0, 0
|
|
beq _0803F6CC
|
|
movs r0, 0x1
|
|
_0803F6CC:
|
|
strb r0, [r4]
|
|
ldrb r4, [r4]
|
|
cmp r8, r4
|
|
beq _0803F6E2
|
|
bl sub_8049ED4
|
|
bl sub_8040A84
|
|
movs r0, 0
|
|
bl sub_8041888
|
|
_0803F6E2:
|
|
mov r0, r9
|
|
cmp r0, 0
|
|
beq _0803F76A
|
|
adds r0, r5, 0
|
|
adds r0, 0x2B
|
|
ldrb r1, [r0]
|
|
adds r4, r0, 0
|
|
cmp r1, 0
|
|
bne _0803F76A
|
|
movs r2, 0xC
|
|
ldrsh r1, [r5, r2]
|
|
movs r2, 0x8
|
|
ldrsh r0, [r5, r2]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0803F704
|
|
negs r1, r1
|
|
_0803F704:
|
|
cmp r1, 0x7
|
|
bgt _0803F71C
|
|
movs r0, 0xE
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, 0xA
|
|
ldrsh r0, [r5, r2]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0803F718
|
|
negs r1, r1
|
|
_0803F718:
|
|
cmp r1, 0x7
|
|
ble _0803F726
|
|
_0803F71C:
|
|
bl sub_8049ED4
|
|
movs r0, 0x1
|
|
strb r0, [r4]
|
|
b _0803F76A
|
|
_0803F726:
|
|
movs r0, 0xC
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, 0x8
|
|
ldrsh r0, [r5, r2]
|
|
cmp r1, r0
|
|
bge _0803F73C
|
|
movs r0, 0xF0
|
|
movs r1, 0
|
|
bl sub_804A1F0
|
|
b _0803F748
|
|
_0803F73C:
|
|
cmp r1, r0
|
|
ble _0803F748
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_804A1F0
|
|
_0803F748:
|
|
movs r0, 0xE
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, 0xA
|
|
ldrsh r0, [r5, r2]
|
|
cmp r1, r0
|
|
bge _0803F75E
|
|
movs r0, 0
|
|
movs r1, 0xA0
|
|
bl sub_804A49C
|
|
b _0803F76A
|
|
_0803F75E:
|
|
cmp r1, r0
|
|
ble _0803F76A
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_804A49C
|
|
_0803F76A:
|
|
ldr r1, [r5]
|
|
ldr r0, [r5, 0x4]
|
|
cmp r1, r0
|
|
beq _0803F7A0
|
|
movs r5, 0
|
|
_0803F774:
|
|
ldr r0, _0803F7B4
|
|
ldr r0, [r0]
|
|
lsls r1, r5, 2
|
|
ldr r2, _0803F7B8
|
|
adds r0, r2
|
|
adds r0, r1
|
|
ldr r4, [r0]
|
|
adds r0, r4, 0
|
|
bl EntityExists
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803F79A
|
|
movs r1, 0x4
|
|
ldrsh r0, [r4, r1]
|
|
movs r2, 0x6
|
|
ldrsh r1, [r4, r2]
|
|
bl sub_80402AC
|
|
_0803F79A:
|
|
adds r5, 0x1
|
|
cmp r5, 0x13
|
|
ble _0803F774
|
|
_0803F7A0:
|
|
bl sub_80400D4
|
|
bl sub_803F7BC
|
|
pop {r3,r4}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803F7B4: .4byte gDungeonGlobalData
|
|
_0803F7B8: .4byte 0x000135cc
|
|
thumb_func_end sub_803F580
|
|
|
|
thumb_func_start sub_803F7BC
|
|
sub_803F7BC:
|
|
push {r4-r6,lr}
|
|
sub sp, 0x10
|
|
ldr r6, _0803F800
|
|
ldr r4, [r6]
|
|
ldr r0, _0803F804
|
|
adds r5, r4, r0
|
|
movs r1, 0
|
|
ldrsh r0, [r5, r1]
|
|
movs r2, 0x2
|
|
ldrsh r1, [r5, r2]
|
|
bl GetMapTileAtPosition
|
|
ldrb r1, [r0, 0x9]
|
|
ldr r2, _0803F808
|
|
adds r0, r4, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803F7F4
|
|
adds r2, 0x1
|
|
adds r0, r4, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803F7F4
|
|
adds r2, 0xB
|
|
adds r0, r4, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803F80C
|
|
_0803F7F4:
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_8005838
|
|
b _0803F86A
|
|
.align 2, 0
|
|
_0803F800: .4byte gDungeonGlobalData
|
|
_0803F804: .4byte 0x000181e8
|
|
_0803F808: .4byte 0x0001820b
|
|
_0803F80C:
|
|
cmp r1, 0xFF
|
|
bne _0803F82C
|
|
ldr r1, _0803F828
|
|
adds r0, r4, r1
|
|
ldrb r0, [r0]
|
|
movs r1, 0x2
|
|
cmp r0, 0x2
|
|
bne _0803F81E
|
|
movs r1, 0x1
|
|
_0803F81E:
|
|
movs r0, 0
|
|
bl sub_8005838
|
|
b _0803F86A
|
|
.align 2, 0
|
|
_0803F828: .4byte 0x00018209
|
|
_0803F82C:
|
|
lsls r0, r1, 3
|
|
subs r0, r1
|
|
lsls r0, 2
|
|
ldr r2, _0803F874
|
|
adds r0, r2
|
|
ldr r2, [r6]
|
|
adds r2, r0
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
ldr r0, [r2, 0xC]
|
|
subs r0, r1
|
|
str r0, [sp]
|
|
movs r0, 0xA
|
|
ldrsh r1, [r5, r0]
|
|
ldr r0, [r2, 0x10]
|
|
subs r0, r1
|
|
str r0, [sp, 0x4]
|
|
movs r0, 0x8
|
|
ldrsh r1, [r5, r0]
|
|
ldr r0, [r2, 0x14]
|
|
subs r0, r1
|
|
str r0, [sp, 0x8]
|
|
movs r0, 0xA
|
|
ldrsh r1, [r5, r0]
|
|
ldr r0, [r2, 0x18]
|
|
subs r0, r1
|
|
str r0, [sp, 0xC]
|
|
mov r0, sp
|
|
movs r1, 0x3
|
|
bl sub_8005838
|
|
_0803F86A:
|
|
add sp, 0x10
|
|
pop {r4-r6}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803F874: .4byte 0x000104c4
|
|
thumb_func_end sub_803F7BC
|
|
|
|
thumb_func_start sub_803F878
|
|
sub_803F878:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r2, r0, 0
|
|
adds r6, r1, 0
|
|
ldr r0, _0803F92C
|
|
ldr r7, [r0]
|
|
ldr r0, _0803F930
|
|
adds r5, r7, r0
|
|
ldr r0, [r5, 0x8]
|
|
str r0, [r5, 0xC]
|
|
ldr r0, [r5]
|
|
str r0, [r5, 0x4]
|
|
adds r0, r2, 0
|
|
cmp r2, 0
|
|
bge _0803F89A
|
|
adds r0, 0xFF
|
|
_0803F89A:
|
|
asrs r0, 8
|
|
subs r0, 0x78
|
|
movs r1, 0
|
|
mov r8, r1
|
|
strh r0, [r5, 0x8]
|
|
adds r0, r6, 0
|
|
cmp r6, 0
|
|
bge _0803F8AC
|
|
adds r0, 0xFF
|
|
_0803F8AC:
|
|
asrs r0, 8
|
|
subs r0, 0x60
|
|
strh r0, [r5, 0xA]
|
|
movs r4, 0xC0
|
|
lsls r4, 5
|
|
adds r0, r2, 0
|
|
adds r1, r4, 0
|
|
bl __divsi3
|
|
strh r0, [r5]
|
|
adds r0, r6, 0
|
|
adds r1, r4, 0
|
|
bl __divsi3
|
|
strh r0, [r5, 0x2]
|
|
ldr r2, _0803F934
|
|
adds r0, r7, r2
|
|
mov r1, r8
|
|
strb r1, [r0]
|
|
adds r2, 0x1
|
|
adds r0, r7, r2
|
|
strb r1, [r0]
|
|
ldr r1, _0803F938
|
|
adds r0, r7, r1
|
|
mov r2, r8
|
|
strb r2, [r0]
|
|
adds r1, 0x5
|
|
adds r0, r7, r1
|
|
strb r2, [r0]
|
|
ldr r1, _0803F93C
|
|
ldr r0, [r1]
|
|
cmp r0, 0
|
|
beq _0803F8F6
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
bl SetBGOBJEnableFlags
|
|
_0803F8F6:
|
|
movs r2, 0xC
|
|
ldrsh r1, [r5, r2]
|
|
movs r2, 0x8
|
|
ldrsh r0, [r5, r2]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0803F906
|
|
negs r1, r1
|
|
_0803F906:
|
|
cmp r1, 0x7
|
|
bgt _0803F91E
|
|
movs r0, 0xE
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, 0xA
|
|
ldrsh r0, [r5, r2]
|
|
subs r1, r0
|
|
cmp r1, 0
|
|
bge _0803F91A
|
|
negs r1, r1
|
|
_0803F91A:
|
|
cmp r1, 0x7
|
|
ble _0803F940
|
|
_0803F91E:
|
|
bl sub_8049ED4
|
|
adds r1, r5, 0
|
|
adds r1, 0x2B
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
b _0803F984
|
|
.align 2, 0
|
|
_0803F92C: .4byte gDungeonGlobalData
|
|
_0803F930: .4byte 0x000181e8
|
|
_0803F934: .4byte 0x0001820d
|
|
_0803F938: .4byte 0x00018211
|
|
_0803F93C: .4byte gUnknown_202EDFC
|
|
_0803F940:
|
|
movs r0, 0xC
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, 0x8
|
|
ldrsh r0, [r5, r2]
|
|
cmp r1, r0
|
|
bge _0803F956
|
|
movs r0, 0xF0
|
|
movs r1, 0
|
|
bl sub_804A1F0
|
|
b _0803F962
|
|
_0803F956:
|
|
cmp r1, r0
|
|
ble _0803F962
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_804A1F0
|
|
_0803F962:
|
|
movs r0, 0xE
|
|
ldrsh r1, [r5, r0]
|
|
movs r2, 0xA
|
|
ldrsh r0, [r5, r2]
|
|
cmp r1, r0
|
|
bge _0803F978
|
|
movs r0, 0
|
|
movs r1, 0xA0
|
|
bl sub_804A49C
|
|
b _0803F984
|
|
_0803F978:
|
|
cmp r1, r0
|
|
ble _0803F984
|
|
movs r0, 0
|
|
movs r1, 0
|
|
bl sub_804A49C
|
|
_0803F984:
|
|
bl sub_803F7BC
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_803F878
|
|
|
|
thumb_func_start sub_803F994
|
|
sub_803F994:
|
|
ldr r0, _0803F9A8
|
|
ldr r0, [r0]
|
|
ldr r1, _0803F9AC
|
|
adds r0, r1
|
|
movs r1, 0x8
|
|
ldrsh r0, [r0, r1]
|
|
adds r0, 0x78
|
|
lsls r0, 8
|
|
bx lr
|
|
.align 2, 0
|
|
_0803F9A8: .4byte gDungeonGlobalData
|
|
_0803F9AC: .4byte 0x000181e8
|
|
thumb_func_end sub_803F994
|
|
|
|
thumb_func_start sub_803F9B0
|
|
sub_803F9B0:
|
|
ldr r0, _0803F9C4
|
|
ldr r0, [r0]
|
|
ldr r1, _0803F9C8
|
|
adds r0, r1
|
|
movs r1, 0xA
|
|
ldrsh r0, [r0, r1]
|
|
adds r0, 0x60
|
|
lsls r0, 8
|
|
bx lr
|
|
.align 2, 0
|
|
_0803F9C4: .4byte gDungeonGlobalData
|
|
_0803F9C8: .4byte 0x000181e8
|
|
thumb_func_end sub_803F9B0
|
|
|
|
thumb_func_start sub_803F9CC
|
|
sub_803F9CC:
|
|
push {r4,r5,lr}
|
|
ldr r0, _0803FA24
|
|
ldr r1, [r0]
|
|
ldr r2, _0803FA28
|
|
adds r0, r1, r2
|
|
ldr r4, [r0]
|
|
movs r5, 0
|
|
ldr r2, _0803FA2C
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803FA0C
|
|
ldr r2, _0803FA30
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
bne _0803FA0C
|
|
bl sub_800EC74
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0803FA0C
|
|
cmp r4, 0
|
|
beq _0803FA08
|
|
adds r0, r4, 0
|
|
bl GetEntityType
|
|
cmp r0, 0x1
|
|
bne _0803FA08
|
|
movs r5, 0x1
|
|
_0803FA08:
|
|
cmp r5, 0
|
|
bne _0803FA38
|
|
_0803FA0C:
|
|
ldr r0, _0803FA34
|
|
movs r2, 0
|
|
adds r0, 0x2
|
|
movs r1, 0x1C
|
|
_0803FA14:
|
|
strh r2, [r0]
|
|
adds r0, 0x2
|
|
subs r1, 0x1
|
|
cmp r1, 0
|
|
bge _0803FA14
|
|
bl sub_803F38C
|
|
b _0803FA3C
|
|
.align 2, 0
|
|
_0803FA24: .4byte gDungeonGlobalData
|
|
_0803FA28: .4byte 0x000181f8
|
|
_0803FA2C: .4byte 0x0001356c
|
|
_0803FA30: .4byte 0x00018218
|
|
_0803FA34: .4byte gUnknown_202B038
|
|
_0803FA38:
|
|
bl sub_803FB74
|
|
_0803FA3C:
|
|
ldr r1, _0803FA48
|
|
movs r0, 0x1
|
|
strb r0, [r1]
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803FA48: .4byte gUnknown_20274A5
|
|
thumb_func_end sub_803F9CC
|
|
|
|
thumb_func_start sub_803FA4C
|
|
sub_803FA4C:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x28
|
|
adds r4, r0, 0
|
|
mov r8, r1
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
mov r12, r2
|
|
ldr r0, _0803FB4C
|
|
ldr r3, [r0]
|
|
ldr r0, _0803FB50
|
|
adds r0, r3, r0
|
|
str r0, [sp, 0x24]
|
|
ldr r7, _0803FB54
|
|
mov r1, sp
|
|
ldr r0, _0803FB58
|
|
ldm r0!, {r2,r5,r6}
|
|
stm r1!, {r2,r5,r6}
|
|
ldm r0!, {r2,r5,r6}
|
|
stm r1!, {r2,r5,r6}
|
|
ldm r0!, {r2,r5,r6}
|
|
stm r1!, {r2,r5,r6}
|
|
ldr r0, _0803FB5C
|
|
mov r10, r0
|
|
ldr r1, _0803FB60
|
|
mov r9, r1
|
|
ldr r2, [sp, 0x24]
|
|
movs r5, 0x3E
|
|
ldrsh r0, [r2, r5]
|
|
cmp r4, r0
|
|
bne _0803FA9C
|
|
ldr r6, _0803FB64
|
|
adds r0, r3, r6
|
|
movs r1, 0
|
|
ldrsh r0, [r0, r1]
|
|
cmp r8, r0
|
|
beq _0803FB3A
|
|
_0803FA9C:
|
|
mov r2, r12
|
|
cmp r2, 0
|
|
bne _0803FAA6
|
|
ldr r5, _0803FB68
|
|
mov r9, r5
|
|
_0803FAA6:
|
|
ldr r6, [sp, 0x24]
|
|
strh r4, [r6, 0x3E]
|
|
ldr r1, _0803FB64
|
|
adds r0, r3, r1
|
|
mov r2, r8
|
|
strh r2, [r0]
|
|
mov r5, r8
|
|
cmp r5, 0x5F
|
|
ble _0803FAC8
|
|
movs r5, 0x60
|
|
lsls r0, r4, 1
|
|
adds r0, r4
|
|
lsls r0, 5
|
|
mov r1, r8
|
|
bl __divsi3
|
|
adds r4, r0, 0
|
|
_0803FAC8:
|
|
movs r3, 0
|
|
mov r8, r3
|
|
movs r6, 0x58
|
|
mov r12, r6
|
|
_0803FAD0:
|
|
ldr r6, _0803FB6C
|
|
adds r2, r4, 0
|
|
adds r0, r5, 0
|
|
cmp r4, 0x7
|
|
ble _0803FADC
|
|
movs r2, 0x8
|
|
_0803FADC:
|
|
cmp r5, 0x7
|
|
ble _0803FAE2
|
|
movs r0, 0x8
|
|
_0803FAE2:
|
|
lsls r0, 2
|
|
mov r3, sp
|
|
adds r1, r3, r0
|
|
lsls r0, r2, 2
|
|
add r0, sp
|
|
ldr r2, [r0]
|
|
ldr r3, [r1]
|
|
adds r1, r3, 0
|
|
bics r1, r2
|
|
mov r0, r10
|
|
ands r1, r0
|
|
mov r0, r9
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
ands r6, r3
|
|
mov r1, r8
|
|
stm r7!, {r1}
|
|
stm r7!, {r6}
|
|
stm r7!, {r0}
|
|
stm r7!, {r0}
|
|
stm r7!, {r0}
|
|
stm r7!, {r0}
|
|
stm r7!, {r6}
|
|
stm r7!, {r1}
|
|
subs r4, 0x8
|
|
subs r5, 0x8
|
|
cmp r4, 0
|
|
bge _0803FB1C
|
|
movs r4, 0
|
|
_0803FB1C:
|
|
cmp r5, 0
|
|
bge _0803FB22
|
|
movs r5, 0
|
|
_0803FB22:
|
|
movs r2, 0x8
|
|
negs r2, r2
|
|
add r12, r2
|
|
mov r3, r12
|
|
cmp r3, 0
|
|
bge _0803FAD0
|
|
ldr r0, _0803FB70
|
|
movs r2, 0xC0
|
|
lsls r2, 1
|
|
ldr r1, _0803FB54
|
|
bl sub_80098BC
|
|
_0803FB3A:
|
|
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
|
|
_0803FB4C: .4byte gDungeonGlobalData
|
|
_0803FB50: .4byte 0x000181e8
|
|
_0803FB54: .4byte gUnknown_3001018
|
|
_0803FB58: .4byte gUnknown_80F6490
|
|
_0803FB5C: .4byte 0x22222222
|
|
_0803FB60: .4byte 0x44444444
|
|
_0803FB64: .4byte 0x00018228
|
|
_0803FB68: .4byte 0x55555555
|
|
_0803FB6C: .4byte 0x77777777
|
|
_0803FB70: .4byte 0x06005980
|
|
thumb_func_end sub_803FA4C
|
|
|
|
thumb_func_start sub_803FB74
|
|
sub_803FB74:
|
|
push {r4-r7,lr}
|
|
mov r7, r10
|
|
mov r6, r9
|
|
mov r5, r8
|
|
push {r5-r7}
|
|
sub sp, 0x4
|
|
ldr r0, _0803FBE8
|
|
ldr r0, [r0]
|
|
ldr r1, _0803FBEC
|
|
adds r7, r0, r1
|
|
movs r4, 0
|
|
movs r2, 0
|
|
str r2, [sp]
|
|
ldr r0, [r7, 0x10]
|
|
ldr r0, [r0, 0x70]
|
|
movs r1, 0xE
|
|
ldrsh r3, [r0, r1]
|
|
mov r9, r3
|
|
movs r3, 0x10
|
|
ldrsh r2, [r0, r3]
|
|
mov r8, r2
|
|
ldrb r1, [r0, 0x9]
|
|
mov r10, r1
|
|
movs r2, 0xE
|
|
ldrsh r1, [r0, r2]
|
|
cmp r1, 0
|
|
ble _0803FBBA
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
bge _0803FBB2
|
|
adds r0, 0x3
|
|
_0803FBB2:
|
|
asrs r0, 2
|
|
cmp r1, r0
|
|
bgt _0803FBBA
|
|
movs r4, 0x1
|
|
_0803FBBA:
|
|
ldr r0, [r7, 0x10]
|
|
ldr r0, [r0, 0x70]
|
|
movs r3, 0x9E
|
|
lsls r3, 1
|
|
adds r0, r3
|
|
ldr r0, [r0]
|
|
bl GetBellyRoundedUp
|
|
cmp r0, 0
|
|
bne _0803FBD2
|
|
movs r0, 0x1
|
|
str r0, [sp]
|
|
_0803FBD2:
|
|
cmp r4, 0
|
|
beq _0803FBF4
|
|
ldr r0, _0803FBF0
|
|
ldr r0, [r0]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803FBF4
|
|
movs r5, 0x20
|
|
movs r6, 0x20
|
|
b _0803FBF8
|
|
.align 2, 0
|
|
_0803FBE8: .4byte gDungeonGlobalData
|
|
_0803FBEC: .4byte 0x000181e8
|
|
_0803FBF0: .4byte gUnknown_202EDCC
|
|
_0803FBF4:
|
|
movs r5, 0
|
|
movs r6, 0
|
|
_0803FBF8:
|
|
ldr r1, [sp]
|
|
cmp r1, 0
|
|
beq _0803FC0E
|
|
ldr r0, _0803FC20
|
|
ldr r0, [r0]
|
|
movs r1, 0x10
|
|
ands r0, r1
|
|
cmp r0, 0
|
|
beq _0803FC0E
|
|
movs r5, 0x30
|
|
movs r6, 0x30
|
|
_0803FC0E:
|
|
cmp r5, 0
|
|
bne _0803FC30
|
|
adds r0, r7, 0
|
|
adds r0, 0x2A
|
|
ldrb r0, [r0]
|
|
cmp r0, 0
|
|
beq _0803FC24
|
|
movs r5, 0x60
|
|
b _0803FC30
|
|
.align 2, 0
|
|
_0803FC20: .4byte gUnknown_202EDCC
|
|
_0803FC24:
|
|
ldr r0, _0803FCE4
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0xB]
|
|
cmp r0, 0
|
|
beq _0803FC30
|
|
movs r5, 0x40
|
|
_0803FC30:
|
|
cmp r6, 0
|
|
bne _0803FC40
|
|
ldr r0, _0803FCE4
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, 0xB]
|
|
cmp r0, 0
|
|
beq _0803FC40
|
|
movs r6, 0x40
|
|
_0803FC40:
|
|
movs r2, 0x36
|
|
ldrsh r0, [r7, r2]
|
|
cmp r0, r5
|
|
beq _0803FC78
|
|
strh r5, [r7, 0x36]
|
|
lsls r5, 2
|
|
ldr r4, _0803FCE8
|
|
adds r1, r5, r4
|
|
movs r0, 0xFC
|
|
bl SetBGPaletteBufferColorArray
|
|
adds r1, r4, 0x4
|
|
adds r1, r5, r1
|
|
movs r0, 0xFD
|
|
bl SetBGPaletteBufferColorArray
|
|
adds r1, r4, 0
|
|
adds r1, 0x8
|
|
adds r1, r5, r1
|
|
movs r0, 0xFE
|
|
bl SetBGPaletteBufferColorArray
|
|
adds r4, 0xC
|
|
adds r5, r4
|
|
movs r0, 0xFF
|
|
adds r1, r5, 0
|
|
bl SetBGPaletteBufferColorArray
|
|
_0803FC78:
|
|
movs r3, 0x38
|
|
ldrsh r0, [r7, r3]
|
|
cmp r0, r6
|
|
beq _0803FCB0
|
|
strh r6, [r7, 0x38]
|
|
lsls r5, r6, 2
|
|
ldr r4, _0803FCE8
|
|
adds r1, r5, r4
|
|
movs r0, 0xFC
|
|
bl nullsub_5
|
|
adds r1, r4, 0x4
|
|
adds r1, r5, r1
|
|
movs r0, 0xFD
|
|
bl nullsub_5
|
|
adds r1, r4, 0
|
|
adds r1, 0x8
|
|
adds r1, r5, r1
|
|
movs r0, 0xFE
|
|
bl nullsub_5
|
|
adds r4, 0xC
|
|
adds r5, r4
|
|
movs r0, 0xFF
|
|
adds r1, r5, 0
|
|
bl nullsub_5
|
|
_0803FCB0:
|
|
ldr r5, _0803FCEC
|
|
ldr r0, _0803FCF0
|
|
ldr r2, [r0]
|
|
ldr r0, _0803FCF4
|
|
adds r1, r2, r0
|
|
movs r3, 0x14
|
|
ldrsh r0, [r2, r3]
|
|
ldrb r1, [r1]
|
|
adds r6, r0, r1
|
|
movs r1, 0x3A
|
|
ldrsh r0, [r7, r1]
|
|
adds r4, r7, 0
|
|
adds r4, 0x2E
|
|
cmp r0, r6
|
|
beq _0803FD3E
|
|
strh r6, [r7, 0x3A]
|
|
ldr r3, _0803FCF8
|
|
adds r0, r2, r3
|
|
ldrb r0, [r0]
|
|
bl GetStairDirection
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0803FCFC
|
|
movs r0, 0
|
|
b _0803FD00
|
|
.align 2, 0
|
|
_0803FCE4: .4byte gUnknown_203B46C
|
|
_0803FCE8: .4byte gUnknown_202D068
|
|
_0803FCEC: .4byte gUnknown_202B038
|
|
_0803FCF0: .4byte gDungeonGlobalData
|
|
_0803FCF4: .4byte 0x00000645
|
|
_0803FCF8: .4byte 0x00000644
|
|
_0803FCFC:
|
|
ldr r1, _0803FD20
|
|
adds r0, r1, 0
|
|
_0803FD00:
|
|
strh r0, [r5, 0x2]
|
|
cmp r6, 0x9
|
|
bgt _0803FD28
|
|
adds r1, r5, 0x4
|
|
adds r4, r7, 0
|
|
adds r4, 0x2E
|
|
ldrb r2, [r4]
|
|
adds r0, r6, 0
|
|
movs r3, 0x1
|
|
bl sub_803FE30
|
|
ldr r2, _0803FD24
|
|
adds r0, r2, 0
|
|
strh r0, [r5, 0x6]
|
|
b _0803FD3E
|
|
.align 2, 0
|
|
_0803FD20: .4byte 0x0000f2be
|
|
_0803FD24: .4byte 0x0000f2b8
|
|
_0803FD28:
|
|
adds r1, r5, 0x4
|
|
adds r4, r7, 0
|
|
adds r4, 0x2E
|
|
ldrb r2, [r4]
|
|
adds r0, r6, 0
|
|
movs r3, 0
|
|
bl sub_803FE30
|
|
ldr r3, _0803FE10
|
|
adds r0, r3, 0
|
|
strh r0, [r5, 0x8]
|
|
_0803FD3E:
|
|
movs r1, 0x3C
|
|
ldrsh r0, [r7, r1]
|
|
cmp r0, r10
|
|
beq _0803FD64
|
|
mov r2, r10
|
|
strh r2, [r7, 0x3C]
|
|
ldr r3, _0803FE14
|
|
adds r0, r3, 0
|
|
strh r0, [r5, 0xA]
|
|
ldr r1, _0803FE18
|
|
adds r0, r1, 0
|
|
strh r0, [r5, 0xC]
|
|
adds r1, r5, 0
|
|
adds r1, 0xE
|
|
ldrb r2, [r4]
|
|
mov r0, r10
|
|
movs r3, 0
|
|
bl sub_803FE30
|
|
_0803FD64:
|
|
movs r2, 0x3E
|
|
ldrsh r0, [r7, r2]
|
|
cmp r0, r9
|
|
beq _0803FD84
|
|
ldr r3, _0803FE1C
|
|
adds r0, r3, 0
|
|
strh r0, [r5, 0x12]
|
|
ldr r1, _0803FE20
|
|
adds r0, r1, 0
|
|
strh r0, [r5, 0x14]
|
|
adds r1, r5, 0
|
|
adds r1, 0x16
|
|
ldrb r2, [r4]
|
|
mov r0, r9
|
|
bl sub_803FF18
|
|
_0803FD84:
|
|
adds r6, r7, 0
|
|
adds r6, 0x40
|
|
movs r2, 0
|
|
ldrsh r0, [r6, r2]
|
|
cmp r0, r8
|
|
beq _0803FDA2
|
|
ldr r3, _0803FE24
|
|
adds r0, r3, 0
|
|
strh r0, [r5, 0x1C]
|
|
adds r1, r5, 0
|
|
adds r1, 0x1E
|
|
ldrb r2, [r4]
|
|
mov r0, r8
|
|
bl sub_803FF18
|
|
_0803FDA2:
|
|
ldrb r2, [r4]
|
|
mov r0, r9
|
|
mov r1, r8
|
|
bl sub_803FA4C
|
|
mov r0, r8
|
|
strh r0, [r6]
|
|
mov r1, r9
|
|
strh r1, [r7, 0x3E]
|
|
mov r0, r8
|
|
cmp r0, 0
|
|
bge _0803FDBC
|
|
adds r0, 0x7
|
|
_0803FDBC:
|
|
asrs r1, r0, 3
|
|
adds r4, r7, 0
|
|
adds r4, 0x42
|
|
strh r1, [r4]
|
|
movs r0, 0x7
|
|
mov r2, r8
|
|
ands r2, r0
|
|
cmp r2, 0
|
|
beq _0803FDD2
|
|
adds r0, r1, 0x1
|
|
strh r0, [r4]
|
|
_0803FDD2:
|
|
movs r3, 0
|
|
ldrsh r0, [r4, r3]
|
|
cmp r0, 0xB
|
|
ble _0803FDDE
|
|
movs r0, 0xC
|
|
strh r0, [r4]
|
|
_0803FDDE:
|
|
movs r1, 0
|
|
ldr r0, _0803FE28
|
|
movs r2, 0xB3
|
|
lsls r2, 2
|
|
adds r4, r2, 0
|
|
ldr r2, _0803FE2C
|
|
adds r3, r2, 0
|
|
adds r2, r0, 0
|
|
adds r2, 0x24
|
|
_0803FDF0:
|
|
adds r0, r1, r4
|
|
orrs r0, r3
|
|
strh r0, [r2]
|
|
adds r2, 0x2
|
|
adds r1, 0x1
|
|
cmp r1, 0xB
|
|
ble _0803FDF0
|
|
add sp, 0x4
|
|
pop {r3-r5}
|
|
mov r8, r3
|
|
mov r9, r4
|
|
mov r10, r5
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803FE10: .4byte 0x0000f2b8
|
|
_0803FE14: .4byte 0x0000f2b9
|
|
_0803FE18: .4byte 0x0000f2ba
|
|
_0803FE1C: .4byte 0x0000f2bb
|
|
_0803FE20: .4byte 0x0000f2bc
|
|
_0803FE24: .4byte 0x0000f2bd
|
|
_0803FE28: .4byte gUnknown_202B038
|
|
_0803FE2C: .4byte 0xfffff000
|
|
thumb_func_end sub_803FB74
|
|
|
|
thumb_func_start sub_803FE30
|
|
sub_803FE30:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r5, r0, 0
|
|
adds r4, r1, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
adds r1, r2, 0
|
|
lsls r3, 24
|
|
lsrs r3, 24
|
|
mov r12, r3
|
|
movs r0, 0
|
|
cmp r2, 0
|
|
bne _0803FE4E
|
|
movs r0, 0x37
|
|
_0803FE4E:
|
|
cmp r5, 0x64
|
|
ble _0803FE70
|
|
cmp r2, 0
|
|
beq _0803FE60
|
|
ldr r1, _0803FE5C
|
|
adds r0, r1, 0
|
|
b _0803FE64
|
|
.align 2, 0
|
|
_0803FE5C: .4byte 0x0000f291
|
|
_0803FE60:
|
|
ldr r2, _0803FE6C
|
|
adds r0, r2, 0
|
|
_0803FE64:
|
|
strh r0, [r4]
|
|
strh r0, [r4, 0x2]
|
|
b _0803FF00
|
|
.align 2, 0
|
|
_0803FE6C: .4byte 0x0000f2c8
|
|
_0803FE70:
|
|
cmp r5, 0x64
|
|
bne _0803FEBC
|
|
ldr r1, _0803FE84
|
|
adds r0, r1, 0
|
|
strh r0, [r4]
|
|
ldr r2, _0803FE88
|
|
adds r0, r2, 0
|
|
strh r0, [r4, 0x2]
|
|
b _0803FF00
|
|
.align 2, 0
|
|
_0803FE84: .4byte 0x0000f294
|
|
_0803FE88: .4byte 0x0000f295
|
|
_0803FE8C:
|
|
ldr r1, _0803FEB4
|
|
lsls r0, r6, 3
|
|
adds r0, r6
|
|
adds r0, r2
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
strh r0, [r4]
|
|
subs r0, r5, r3
|
|
adds r0, r7
|
|
movs r1, 0x96
|
|
lsls r1, 2
|
|
adds r0, r1
|
|
ldr r2, _0803FEB8
|
|
adds r1, r2, 0
|
|
orrs r0, r1
|
|
mov r1, r8
|
|
strh r0, [r1]
|
|
b _0803FF00
|
|
.align 2, 0
|
|
_0803FEB4: .4byte gUnknown_80F64D8
|
|
_0803FEB8: .4byte 0xfffff000
|
|
_0803FEBC:
|
|
adds r2, r4, 0x2
|
|
mov r8, r2
|
|
adds r7, r0, 0
|
|
adds r7, 0x30
|
|
cmp r5, 0x9
|
|
ble _0803FEE2
|
|
movs r6, 0
|
|
cmp r1, 0
|
|
bne _0803FED0
|
|
movs r6, 0x1
|
|
_0803FED0:
|
|
movs r2, 0
|
|
ldr r0, _0803FF0C
|
|
_0803FED4:
|
|
ldr r3, [r0]
|
|
cmp r3, r5
|
|
ble _0803FE8C
|
|
adds r0, 0x4
|
|
adds r2, 0x1
|
|
cmp r2, 0x8
|
|
ble _0803FED4
|
|
_0803FEE2:
|
|
mov r0, r12
|
|
cmp r0, 0
|
|
bne _0803FEF0
|
|
ldr r1, _0803FF10
|
|
adds r0, r1, 0
|
|
strh r0, [r4]
|
|
adds r4, 0x2
|
|
_0803FEF0:
|
|
adds r0, r5, r7
|
|
movs r2, 0x96
|
|
lsls r2, 2
|
|
adds r0, r2
|
|
ldr r2, _0803FF14
|
|
adds r1, r2, 0
|
|
orrs r0, r1
|
|
strh r0, [r4]
|
|
_0803FF00:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0803FF0C: .4byte gUnknown_80F64B4
|
|
_0803FF10: .4byte 0x0000f278
|
|
_0803FF14: .4byte 0xfffff000
|
|
thumb_func_end sub_803FE30
|
|
|
|
thumb_func_start sub_803FF18
|
|
sub_803FF18:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
adds r5, r0, 0
|
|
adds r3, r1, 0
|
|
lsls r2, 24
|
|
lsrs r2, 24
|
|
movs r6, 0
|
|
cmp r2, 0
|
|
bne _0803FF2E
|
|
movs r6, 0x1
|
|
_0803FF2E:
|
|
movs r1, 0
|
|
cmp r2, 0
|
|
bne _0803FF36
|
|
movs r1, 0x37
|
|
_0803FF36:
|
|
ldr r0, _0803FF54
|
|
cmp r5, r0
|
|
ble _0803FF7C
|
|
ldr r0, _0803FF58
|
|
lsls r1, r6, 3
|
|
adds r1, r6
|
|
lsls r1, 1
|
|
adds r1, r0
|
|
ldrh r0, [r1]
|
|
strh r0, [r3]
|
|
adds r3, 0x2
|
|
strh r0, [r3]
|
|
strh r0, [r3, 0x2]
|
|
b _0804001A
|
|
.align 2, 0
|
|
_0803FF54: .4byte 0x000003e7
|
|
_0803FF58: .4byte gUnknown_80F6544
|
|
_0803FF5C:
|
|
ldr r1, _0803FF78
|
|
lsls r0, r6, 3
|
|
adds r0, r6
|
|
adds r0, r4
|
|
lsls r0, 1
|
|
adds r0, r1
|
|
ldrh r0, [r0]
|
|
strh r0, [r3]
|
|
adds r3, 0x2
|
|
subs r5, r2
|
|
mov r1, r8
|
|
lsls r0, r1, 24
|
|
lsrs r7, r0, 24
|
|
b _0803FF98
|
|
.align 2, 0
|
|
_0803FF78: .4byte gUnknown_80F6544
|
|
_0803FF7C:
|
|
movs r7, 0x20
|
|
movs r4, 0
|
|
adds r1, 0x30
|
|
mov r8, r1
|
|
ldr r2, _0803FFC0
|
|
mov r12, r2
|
|
ldr r0, _0803FFC4
|
|
_0803FF8A:
|
|
ldr r2, [r0]
|
|
cmp r2, r5
|
|
ble _0803FF5C
|
|
adds r0, 0x4
|
|
adds r4, 0x1
|
|
cmp r4, 0x8
|
|
ble _0803FF8A
|
|
_0803FF98:
|
|
cmp r4, 0x9
|
|
bne _0803FFAC
|
|
movs r1, 0x96
|
|
lsls r1, 2
|
|
adds r0, r7, r1
|
|
ldr r2, _0803FFC8
|
|
adds r1, r2, 0
|
|
orrs r0, r1
|
|
strh r0, [r3]
|
|
adds r3, 0x2
|
|
_0803FFAC:
|
|
movs r4, 0
|
|
mov r0, r12
|
|
ldr r2, [r0]
|
|
cmp r2, r5
|
|
bgt _0803FFD0
|
|
ldr r0, _0803FFCC
|
|
lsls r1, r6, 3
|
|
adds r1, r6
|
|
b _0803FFE8
|
|
.align 2, 0
|
|
_0803FFC0: .4byte gUnknown_80F6520
|
|
_0803FFC4: .4byte gUnknown_80F64FC
|
|
_0803FFC8: .4byte 0xfffff000
|
|
_0803FFCC: .4byte gUnknown_80F6544
|
|
_0803FFD0:
|
|
adds r4, 0x1
|
|
cmp r4, 0x8
|
|
bgt _0803FFF4
|
|
lsls r0, r4, 2
|
|
add r0, r12
|
|
ldr r2, [r0]
|
|
cmp r2, r5
|
|
bgt _0803FFD0
|
|
ldr r0, _08040024
|
|
lsls r1, r6, 3
|
|
adds r1, r6
|
|
adds r1, r4
|
|
_0803FFE8:
|
|
lsls r1, 1
|
|
adds r1, r0
|
|
ldrh r0, [r1]
|
|
strh r0, [r3]
|
|
adds r3, 0x2
|
|
subs r5, r2
|
|
_0803FFF4:
|
|
cmp r4, 0x9
|
|
bne _08040008
|
|
movs r1, 0x96
|
|
lsls r1, 2
|
|
adds r0, r7, r1
|
|
ldr r2, _08040028
|
|
adds r1, r2, 0
|
|
orrs r0, r1
|
|
strh r0, [r3]
|
|
adds r3, 0x2
|
|
_08040008:
|
|
mov r1, r8
|
|
adds r0, r5, r1
|
|
movs r2, 0x96
|
|
lsls r2, 2
|
|
adds r0, r2
|
|
ldr r2, _08040028
|
|
adds r1, r2, 0
|
|
orrs r0, r1
|
|
strh r0, [r3]
|
|
_0804001A:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_08040024: .4byte gUnknown_80F6544
|
|
_08040028: .4byte 0xfffff000
|
|
thumb_func_end sub_803FF18
|
|
|
|
.align 2,0 @ Don't pad with nop
|