mzm/asm/disasm_0x0805e760.s
2023-04-09 12:19:27 +02:00

2278 lines
47 KiB
ArmAsm

.include "asm/macros.inc"
.syntax unified
thumb_func_start ConnectionUpdateHatches
ConnectionUpdateHatches: @ 0x0805e760
push {r4, r5, r6, r7, lr}
movs r7, #0
lbl_0805e764:
ldr r0, lbl_0805e7a0 @ =gHatchData
lsls r2, r7, #3
adds r3, r2, r0
ldrb r1, [r3]
lsls r1, r1, #0x1f
adds r4, r0, #0
adds r6, r2, #0
cmp r1, #0
bne lbl_0805e778
b lbl_0805e8e6
lbl_0805e778:
ldrb r2, [r3, #1]
lsls r1, r2, #0x1e
lsrs r0, r1, #0x1e
cmp r0, #1
beq lbl_0805e7a4
cmp r0, #3
beq lbl_0805e7a4
lsrs r0, r2, #4
cmp r0, #0
bne lbl_0805e78e
b lbl_0805e8e6
lbl_0805e78e:
ldrb r0, [r3, #3]
cmp r0, #3
beq lbl_0805e796
b lbl_0805e8e6
lbl_0805e796:
lsls r0, r7, #0x18
lsrs r0, r0, #0x18
bl sub_0805ea54
b lbl_0805e8e6
.align 2, 0
lbl_0805e7a0: .4byte gHatchData
lbl_0805e7a4:
adds r5, r6, r4
ldrb r1, [r5]
lsls r2, r1, #0x1c
lsrs r0, r2, #0x1d
cmp r0, #0
bne lbl_0805e834
ldrb r0, [r5, #1]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
cmp r0, #1
bne lbl_0805e7c4
movs r0, #0x86
lsls r0, r0, #1
bl SoundPlay
b lbl_0805e80a
lbl_0805e7c4:
ldrb r0, [r5, #3]
cmp r0, #7
bhi lbl_0805e804
lsls r0, r0, #2
ldr r1, lbl_0805e7d4 @ =lbl_0805e7d8
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
lbl_0805e7d4: .4byte lbl_0805e7d8
lbl_0805e7d8: @ jump table
.4byte lbl_0805e804 @ case 0
.4byte lbl_0805e804 @ case 1
.4byte lbl_0805e804 @ case 2
.4byte lbl_0805e804 @ case 3
.4byte lbl_0805e804 @ case 4
.4byte lbl_0805e804 @ case 5
.4byte lbl_0805e7f8 @ case 6
.4byte lbl_0805e7f8 @ case 7
lbl_0805e7f8:
ldr r0, lbl_0805e800 @ =0x00000117
bl SoundPlay
b lbl_0805e80a
.align 2, 0
lbl_0805e800: .4byte 0x00000117
lbl_0805e804:
ldr r0, lbl_0805e82c @ =0x0000010d
bl SoundPlay
lbl_0805e80a:
ldr r2, lbl_0805e830 @ =gHatchData
adds r2, r6, r2
movs r0, #0
strb r0, [r2, #4]
ldrb r3, [r2]
lsls r1, r3, #0x1c
lsrs r1, r1, #0x1d
adds r1, #1
movs r0, #7
ands r1, r0
lsls r1, r1, #1
movs r0, #0xf
rsbs r0, r0, #0
ands r0, r3
orrs r0, r1
strb r0, [r2]
b lbl_0805e8e6
.align 2, 0
lbl_0805e82c: .4byte 0x0000010d
lbl_0805e830: .4byte gHatchData
lbl_0805e834:
lsrs r0, r2, #0x1d
cmp r0, #7
bne lbl_0805e870
ldrb r0, [r5, #1]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
cmp r0, #1
bne lbl_0805e8e6
movs r4, #0xf
rsbs r4, r4, #0
adds r0, r4, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r5]
movs r0, #1
adds r1, r7, #0
bl update_hatch_anim
ldrb r1, [r5, #1]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #2
orrs r0, r1
strb r0, [r5, #1]
ldrb r0, [r5]
ands r4, r0
strb r4, [r5]
b lbl_0805e8e6
lbl_0805e870:
ldr r1, lbl_0805e884 @ =0x083602c2
lsrs r0, r2, #0x1d
adds r0, r0, r1
ldrb r1, [r5, #4]
ldrb r0, [r0]
cmp r1, r0
bhs lbl_0805e888
adds r0, r1, #1
strb r0, [r5, #4]
b lbl_0805e8e6
.align 2, 0
lbl_0805e884: .4byte 0x083602c2
lbl_0805e888:
movs r0, #0
strb r0, [r5, #4]
movs r0, #1
adds r1, r7, #0
bl update_hatch_anim
ldrb r2, [r5]
lsls r1, r2, #0x1c
lsrs r1, r1, #0x1d
adds r1, #1
movs r0, #7
ands r1, r0
lsls r1, r1, #1
movs r0, #0xf
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5]
lsls r0, r0, #0x1c
lsrs r0, r0, #0x1d
cmp r0, #5
bne lbl_0805e8e6
ldrb r2, [r5, #1]
lsls r1, r2, #0x1e
lsrs r0, r1, #0x1e
cmp r0, #1
bne lbl_0805e8ca
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
movs r1, #2
orrs r0, r1
b lbl_0805e8d6
lbl_0805e8ca:
lsrs r0, r1, #0x1e
cmp r0, #3
bne lbl_0805e8d8
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
lbl_0805e8d6:
strb r0, [r5, #1]
lbl_0805e8d8:
ldr r0, lbl_0805e8f4 @ =gHatchData
adds r0, r6, r0
ldrb r2, [r0]
movs r1, #0xf
rsbs r1, r1, #0
ands r1, r2
strb r1, [r0]
lbl_0805e8e6:
adds r7, #1
cmp r7, #0xf
bgt lbl_0805e8ee
b lbl_0805e764
lbl_0805e8ee:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
lbl_0805e8f4: .4byte gHatchData
thumb_func_start update_hatch_anim
update_hatch_anim: @ 0x0805e8f8
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
adds r5, r1, #0
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
ldr r0, lbl_0805e948 @ =gHatchData
lsls r4, r5, #3
adds r1, r4, r0
ldrb r2, [r1]
lsls r3, r2, #0x1b
ldr r7, lbl_0805e94c @ =0x00000411
mov r8, r0
cmp r3, #0
bge lbl_0805e91e
adds r7, #5
lbl_0805e91e:
lsls r0, r2, #0x1c
lsrs r0, r0, #0x1d
subs r2, r0, #1
ldrb r0, [r1, #1]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
cmp r0, #3
bne lbl_0805e95e
movs r0, #2
subs r2, r0, r2
cmp r2, #0
bge lbl_0805e954
movs r2, #0
ldr r0, lbl_0805e950 @ =0x083602c8
ldrb r1, [r1, #3]
lsls r1, r1, #1
adds r1, r1, r0
lsrs r0, r3, #0x1f
ldrh r1, [r1]
adds r7, r0, r1
b lbl_0805e95e
.align 2, 0
lbl_0805e948: .4byte gHatchData
lbl_0805e94c: .4byte 0x00000411
lbl_0805e950: .4byte 0x083602c8
lbl_0805e954:
ldrb r0, [r1, #3]
mov sl, r4
cmp r0, #0
beq lbl_0805e96c
adds r2, #0x40
lbl_0805e95e:
lsls r0, r5, #3
mov r3, r8
adds r1, r0, r3
ldrb r1, [r1, #3]
mov sl, r0
cmp r1, #0
bne lbl_0805e96e
lbl_0805e96c:
adds r2, #0x80
lbl_0805e96e:
adds r7, r7, r2
cmp r6, #0
beq lbl_0805e9c0
ldr r4, lbl_0805e9bc @ =gHatchData
add r4, sl
ldrb r1, [r4, #6]
ldrb r2, [r4, #5]
adds r0, r7, #0
bl set_bg1_block_value
movs r0, #0x10
adds r0, r0, r7
mov r8, r0
ldrb r1, [r4, #6]
adds r1, #1
ldrb r2, [r4, #5]
bl set_bg1_block_value
adds r1, r7, #0
adds r1, #0x20
str r1, [sp]
ldrb r1, [r4, #6]
adds r1, #2
ldrb r2, [r4, #5]
ldr r0, [sp]
bl set_bg1_block_value
adds r5, r7, #0
adds r5, #0x30
ldrb r1, [r4, #6]
adds r1, #3
ldrb r2, [r4, #5]
adds r0, r5, #0
bl set_bg1_block_value
mov r6, r8
ldr r3, [sp]
mov r8, r3
b lbl_0805ea04
.align 2, 0
lbl_0805e9bc: .4byte gHatchData
lbl_0805e9c0:
ldr r4, lbl_0805ea50 @ =gHatchData
add r4, sl
ldrb r1, [r4, #6]
ldrb r2, [r4, #5]
adds r0, r7, #0
bl set_raw_bg1_block_value
movs r0, #0x10
adds r0, r0, r7
mov r8, r0
ldrb r1, [r4, #6]
adds r1, #1
ldrb r2, [r4, #5]
bl set_raw_bg1_block_value
movs r1, #0x20
adds r1, r1, r7
mov sb, r1
ldrb r1, [r4, #6]
adds r1, #2
ldrb r2, [r4, #5]
mov r0, sb
bl set_raw_bg1_block_value
adds r5, r7, #0
adds r5, #0x30
ldrb r1, [r4, #6]
adds r1, #3
ldrb r2, [r4, #5]
adds r0, r5, #0
bl set_raw_bg1_block_value
mov r6, r8
mov r8, sb
lbl_0805ea04:
lsls r0, r7, #0x10
lsrs r0, r0, #0x10
ldr r4, lbl_0805ea50 @ =gHatchData
add r4, sl
ldrb r1, [r4, #6]
ldrb r2, [r4, #5]
bl set_clipdata_block_value
lsls r0, r6, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r4, #6]
adds r1, #1
ldrb r2, [r4, #5]
bl set_clipdata_block_value
mov r3, r8
lsls r0, r3, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r4, #6]
adds r1, #2
ldrb r2, [r4, #5]
bl set_clipdata_block_value
lsls r0, r5, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r4, #6]
adds r1, #3
ldrb r2, [r4, #5]
bl set_clipdata_block_value
add sp, #4
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
lbl_0805ea50: .4byte gHatchData
thumb_func_start sub_0805ea54
sub_0805ea54: @ 0x0805ea54
push {r4, r5, r6, lr}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
ldr r1, lbl_0805ea88 @ =gHatchData
lsls r0, r4, #3
adds r3, r0, r1
ldrb r2, [r3, #2]
lsls r0, r2, #0x1c
adds r6, r1, #0
cmp r0, #0
bne lbl_0805ea90
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
movs r1, #4
orrs r0, r1
strb r0, [r3, #2]
ldrb r1, [r3, #1]
lsrs r1, r1, #4
movs r0, #1
ands r0, r1
cmp r0, #0
beq lbl_0805eaa4
ldr r5, lbl_0805ea8c @ =0x0000049a
b lbl_0805eaae
.align 2, 0
lbl_0805ea88: .4byte gHatchData
lbl_0805ea8c: .4byte 0x0000049a
lbl_0805ea90:
lsrs r0, r0, #0x1c
subs r0, #1
movs r1, #0xf
ands r0, r1
movs r1, #0x10
rsbs r1, r1, #0
ands r1, r2
orrs r1, r0
strb r1, [r3, #2]
b lbl_0805eb12
lbl_0805eaa4:
ldr r1, lbl_0805eb00 @ =0x083602c8
ldrb r0, [r3, #3]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r5, [r0]
lbl_0805eaae:
lsls r0, r4, #3
adds r4, r0, r6
ldrb r0, [r4]
lsls r0, r0, #0x1b
cmp r0, #0
bge lbl_0805eabc
adds r5, #1
lbl_0805eabc:
ldrb r1, [r4, #6]
ldrb r2, [r4, #5]
adds r0, r5, #0
bl set_bg1_block_value
adds r0, r5, #0
adds r0, #0x10
ldrb r1, [r4, #6]
adds r1, #1
ldrb r2, [r4, #5]
bl set_bg1_block_value
adds r0, r5, #0
adds r0, #0x20
ldrb r1, [r4, #6]
adds r1, #2
ldrb r2, [r4, #5]
bl set_bg1_block_value
adds r0, r5, #0
adds r0, #0x30
ldrb r1, [r4, #6]
adds r1, #3
ldrb r2, [r4, #5]
bl set_bg1_block_value
ldrb r2, [r4, #1]
lsls r1, r2, #0x18
lsrs r0, r1, #0x1c
cmp r0, #3
bls lbl_0805eb04
movs r0, #0xf
ands r0, r2
b lbl_0805eb10
.align 2, 0
lbl_0805eb00: .4byte 0x083602c8
lbl_0805eb04:
lsrs r1, r1, #0x1c
adds r1, #1
lsls r1, r1, #4
movs r0, #0xf
ands r0, r2
orrs r0, r1
lbl_0805eb10:
strb r0, [r4, #1]
lbl_0805eb12:
pop {r4, r5, r6}
pop {r0}
bx r0
thumb_func_start sub_0805eb18
sub_0805eb18: @ 0x0805eb18
push {r4, r5, r6, lr}
mov r6, sl
mov r5, sb
mov r4, r8
push {r4, r5, r6}
adds r5, r0, #0
lsls r5, r5, #0x18
ldr r0, lbl_0805ebe8 @ =gHatchData
lsrs r5, r5, #0x15
adds r5, r5, r0
movs r0, #0
mov sl, r0
strb r1, [r5, #3]
ldr r1, lbl_0805ebec @ =0x083602c8
ldrb r0, [r5, #3]
lsls r0, r0, #1
adds r0, r0, r1
ldrb r4, [r5]
lsls r4, r4, #0x1b
lsrs r4, r4, #0x1f
ldrh r0, [r0]
adds r4, r4, r0
lsls r4, r4, #0x10
lsrs r4, r4, #0x10
ldrb r1, [r5, #6]
ldrb r2, [r5, #5]
adds r0, r4, #0
bl set_bg1_block_value
adds r6, r4, #0
adds r6, #0x10
ldrb r1, [r5, #6]
adds r1, #1
ldrb r2, [r5, #5]
adds r0, r6, #0
bl set_bg1_block_value
movs r0, #0x20
adds r0, r0, r4
mov r8, r0
ldrb r1, [r5, #6]
adds r1, #2
ldrb r2, [r5, #5]
bl set_bg1_block_value
movs r0, #0x30
adds r0, r0, r4
mov sb, r0
ldrb r1, [r5, #6]
adds r1, #3
ldrb r2, [r5, #5]
bl set_bg1_block_value
ldrb r1, [r5, #6]
ldrb r2, [r5, #5]
adds r0, r4, #0
bl set_clipdata_block_value
lsls r6, r6, #0x10
lsrs r6, r6, #0x10
ldrb r1, [r5, #6]
adds r1, #1
ldrb r2, [r5, #5]
adds r0, r6, #0
bl set_clipdata_block_value
mov r0, r8
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r8, r0
ldrb r1, [r5, #6]
adds r1, #2
ldrb r2, [r5, #5]
bl set_clipdata_block_value
mov r0, sb
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov sb, r0
ldrb r1, [r5, #6]
adds r1, #3
ldrb r2, [r5, #5]
bl set_clipdata_block_value
ldrb r1, [r5, #1]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r5, #1]
ldrb r1, [r5]
movs r0, #0xf
rsbs r0, r0, #0
ands r0, r1
strb r0, [r5]
mov r0, sl
strb r0, [r5, #4]
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
lbl_0805ebe8: .4byte gHatchData
lbl_0805ebec: .4byte 0x083602c8
thumb_func_start check_enter_door
check_enter_door: @ 0x0805ebf0
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
lsls r1, r1, #0x10
lsrs r6, r1, #0x10
ldr r0, lbl_0805ec10 @ =gGameModeSub1
movs r1, #0
ldrsh r0, [r0, r1]
cmp r0, #2
beq lbl_0805ec14
movs r0, #0
b lbl_0805ed84
.align 2, 0
lbl_0805ec10: .4byte gGameModeSub1
lbl_0805ec14:
movs r5, #0
mov ip, r5
ldr r0, lbl_0805ec9c @ =gHatchData
ldr r2, lbl_0805eca0 @ =gCurrentArea
mov sl, r2
adds r3, r0, #7
mov sb, r5
ldr r0, lbl_0805eca4 @ =gLastDoorUsed
mov r8, r0
lbl_0805ec26:
ldrb r0, [r3]
ldr r1, lbl_0805eca8 @ =0x08345868
ldrb r1, [r1, #7]
cmp r0, r1
bne lbl_0805ec32
b lbl_0805ed70
lbl_0805ec32:
mov r0, sl
ldrb r2, [r0]
lsls r2, r2, #2
ldr r1, lbl_0805ecac @ =0x0875faa8
adds r2, r2, r1
ldrb r1, [r3]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, [r2]
adds r4, r1, r0
ldrb r1, [r4]
movs r0, #0xf
ands r0, r1
cmp r0, #1
bhi lbl_0805ec54
b lbl_0805ed70
lbl_0805ec54:
ldrb r0, [r4, #2]
cmp r0, r6
bls lbl_0805ec5c
b lbl_0805ed70
lbl_0805ec5c:
ldrb r2, [r4, #3]
cmp r6, r2
bls lbl_0805ec64
b lbl_0805ed70
lbl_0805ec64:
ldrb r0, [r4, #4]
cmp r0, r7
bls lbl_0805ec6c
b lbl_0805ed70
lbl_0805ec6c:
ldrb r0, [r4, #5]
cmp r7, r0
bls lbl_0805ec74
b lbl_0805ed70
lbl_0805ec74:
ldr r1, lbl_0805ecb0 @ =gDoorPositionStart
movs r0, #0
strh r0, [r1]
strh r0, [r1, #2]
ldrb r1, [r4]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq lbl_0805ecbc
ldrb r0, [r3]
bl find_event_based_door_number
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0xff
beq lbl_0805ecb4
mov r1, r8
strb r5, [r1]
b lbl_0805ecc2
.align 2, 0
lbl_0805ec9c: .4byte gHatchData
lbl_0805eca0: .4byte gCurrentArea
lbl_0805eca4: .4byte gLastDoorUsed
lbl_0805eca8: .4byte 0x08345868
lbl_0805ecac: .4byte 0x0875faa8
lbl_0805ecb0: .4byte gDoorPositionStart
lbl_0805ecb4:
ldrb r0, [r4, #6]
mov r2, r8
strb r0, [r2]
b lbl_0805ecc2
lbl_0805ecbc:
ldrb r0, [r4, #6]
mov r1, r8
strb r0, [r1]
lbl_0805ecc2:
ldrb r1, [r4]
movs r0, #0xf
ands r0, r1
cmp r0, #2
bls lbl_0805ece4
ldrb r1, [r4, #2]
ldr r0, lbl_0805ed54 @ =gBG1XPosition
ldrh r0, [r0]
lsrs r0, r0, #6
adds r0, #8
ldr r2, lbl_0805ed58 @ =gDoorPositionStart
cmp r1, r0
ble lbl_0805ece0
movs r0, #1
strh r0, [r2]
lbl_0805ece0:
ldrb r0, [r4, #4]
strh r0, [r2, #2]
lbl_0805ece4:
ldr r2, lbl_0805ed5c @ =gSamusDoorPositionOffset
ldrb r0, [r4, #5]
adds r0, #1
lsls r0, r0, #6
ldr r1, lbl_0805ed60 @ =gSamusData
ldrh r1, [r1, #0x14]
subs r0, r0, r1
subs r0, #1
strh r0, [r2]
ldrb r0, [r4]
bl process_door_type
ldr r1, lbl_0805ed64 @ =gGameModeSub1
movs r0, #3
strh r0, [r1]
ldr r0, lbl_0805ed68 @ =gHatchData
mov r2, sb
adds r1, r2, r0
ldrb r2, [r1]
lsls r0, r2, #0x1f
cmp r0, #0
beq lbl_0805ed20
ldrb r0, [r1, #1]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
cmp r0, #1
bne lbl_0805ed20
movs r0, #0xe
orrs r0, r2
strb r0, [r1]
lbl_0805ed20:
mov r1, sl
ldrb r0, [r1]
lsls r3, r0, #2
ldr r2, lbl_0805ed6c @ =0x0875faa8
adds r3, r3, r2
mov r1, r8
ldrb r2, [r1]
lsls r1, r2, #1
adds r1, r1, r2
lsls r1, r1, #2
ldr r2, [r3]
adds r4, r2, r1
ldrb r1, [r4, #1]
adds r1, #1
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
bl check_play_cutscene_during_transition
mov r2, sl
ldrb r0, [r2]
ldrb r1, [r4, #1]
bl CheckPlayRoomMusicTrack
movs r5, #1
b lbl_0805ed82
.align 2, 0
lbl_0805ed54: .4byte gBG1XPosition
lbl_0805ed58: .4byte gDoorPositionStart
lbl_0805ed5c: .4byte gSamusDoorPositionOffset
lbl_0805ed60: .4byte gSamusData
lbl_0805ed64: .4byte gGameModeSub1
lbl_0805ed68: .4byte gHatchData
lbl_0805ed6c: .4byte 0x0875faa8
lbl_0805ed70:
adds r3, #8
movs r0, #8
add sb, r0
movs r1, #1
add ip, r1
mov r2, ip
cmp r2, #0xf
bgt lbl_0805ed82
b lbl_0805ec26
lbl_0805ed82:
adds r0, r5, #0
lbl_0805ed84:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
thumb_func_start check_area_connection
check_area_connection: @ 0x0805ed94
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
lsls r1, r1, #0x10
lsrs r6, r1, #0x10
ldr r0, lbl_0805ee20 @ =gGameModeSub1
movs r1, #0
ldrsh r0, [r0, r1]
cmp r0, #2
beq lbl_0805edb2
b lbl_0805eeb4
lbl_0805edb2:
movs r4, #0
mov r8, r4
ldr r1, lbl_0805ee24 @ =gHatchData
ldr r0, lbl_0805ee28 @ =0x08345868
ldrb r0, [r0, #7]
mov ip, r0
adds r3, r1, #7
ldr r2, lbl_0805ee2c @ =gLastDoorUsed
mov sb, r2
lbl_0805edc4:
ldrb r0, [r3]
cmp r0, ip
beq lbl_0805ee4a
ldr r2, lbl_0805ee30 @ =0x0875faa8
ldr r0, lbl_0805ee34 @ =gCurrentArea
ldrb r1, [r0]
lsls r1, r1, #2
adds r1, r1, r2
ldrb r2, [r3]
lsls r0, r2, #1
adds r0, r0, r2
lsls r0, r0, #2
ldr r1, [r1]
adds r5, r1, r0
ldrb r1, [r5]
movs r0, #0xf
ands r0, r1
cmp r0, #1
bne lbl_0805ee4a
ldrb r0, [r5, #2]
cmp r0, r6
bhi lbl_0805ee4a
ldrb r0, [r5, #3]
cmp r6, r0
bhi lbl_0805ee4a
ldrb r0, [r5, #4]
cmp r0, r7
bhi lbl_0805ee4a
ldrb r0, [r5, #5]
cmp r7, r0
bhi lbl_0805ee4a
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq lbl_0805ee40
adds r0, r2, #0
bl find_event_based_door_number
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0xff
beq lbl_0805ee38
mov r1, sb
strb r4, [r1]
b lbl_0805ee46
.align 2, 0
lbl_0805ee20: .4byte gGameModeSub1
lbl_0805ee24: .4byte gHatchData
lbl_0805ee28: .4byte 0x08345868
lbl_0805ee2c: .4byte gLastDoorUsed
lbl_0805ee30: .4byte 0x0875faa8
lbl_0805ee34: .4byte gCurrentArea
lbl_0805ee38:
ldrb r0, [r5, #6]
mov r2, sb
strb r0, [r2]
b lbl_0805ee46
lbl_0805ee40:
ldrb r0, [r5, #6]
mov r3, sb
strb r0, [r3]
lbl_0805ee46:
movs r4, #1
b lbl_0805ee6c
lbl_0805ee4a:
adds r3, #8
movs r0, #1
add r8, r0
mov r1, r8
cmp r1, #0xf
ble lbl_0805edc4
cmp r4, #0
bne lbl_0805ee6c
b lbl_0805eeb4
lbl_0805ee5c:
mov r0, sl
adds r0, #2
adds r0, r1, r0
ldrb r0, [r0]
mov r2, sb
strb r0, [r2]
movs r4, #2
b lbl_0805eeaa
lbl_0805ee6c:
ldr r2, lbl_0805eeb8 @ =0x08360274
ldrb r0, [r2]
mov ip, r2
cmp r0, #0xff
beq lbl_0805eeaa
mov sl, r2
ldr r3, lbl_0805eebc @ =gCurrentArea
mov sb, r3
ldrb r7, [r3]
ldr r1, lbl_0805eec0 @ =gHatchData
mov r3, r8
lsls r0, r3, #3
adds r6, r0, r1
movs r1, #0
adds r3, r2, #0
lbl_0805ee8a:
ldrb r0, [r3]
cmp r0, r7
bne lbl_0805ee9c
adds r0, r2, #1
adds r0, r1, r0
ldrb r0, [r0]
ldrb r2, [r6, #7]
cmp r0, r2
beq lbl_0805ee5c
lbl_0805ee9c:
adds r1, #3
adds r3, #3
mov r2, ip
adds r0, r1, r2
ldrb r0, [r0]
cmp r0, #0xff
bne lbl_0805ee8a
lbl_0805eeaa:
cmp r4, #2
beq lbl_0805eec8
ldr r1, lbl_0805eec4 @ =gLastDoorUsed
movs r0, #0
strb r0, [r1]
lbl_0805eeb4:
movs r0, #0
b lbl_0805ef22
.align 2, 0
lbl_0805eeb8: .4byte 0x08360274
lbl_0805eebc: .4byte gCurrentArea
lbl_0805eec0: .4byte gHatchData
lbl_0805eec4: .4byte gLastDoorUsed
lbl_0805eec8:
ldr r2, lbl_0805eed8 @ =gSamusData
ldrb r0, [r2]
cmp r0, #0x1d
bne lbl_0805eee0
ldr r1, lbl_0805eedc @ =gSamusDoorPositionOffset
movs r0, #0
strh r0, [r1]
b lbl_0805eef0
.align 2, 0
lbl_0805eed8: .4byte gSamusData
lbl_0805eedc: .4byte gSamusDoorPositionOffset
lbl_0805eee0:
ldr r0, lbl_0805ef30 @ =gSamusDoorPositionOffset
ldrb r1, [r5, #5]
adds r1, #1
lsls r1, r1, #6
ldrh r2, [r2, #0x14]
subs r1, r1, r2
subs r1, #1
strh r1, [r0]
lbl_0805eef0:
movs r0, #6
bl ColorFadingStart
ldr r1, lbl_0805ef34 @ =gGameModeSub1
movs r0, #3
strh r0, [r1]
ldr r0, lbl_0805ef38 @ =0x0875faa8
ldr r4, lbl_0805ef3c @ =gCurrentArea
ldrb r1, [r4]
lsls r1, r1, #2
adds r1, r1, r0
ldr r0, lbl_0805ef40 @ =gLastDoorUsed
ldrb r2, [r0]
lsls r0, r2, #1
adds r0, r0, r2
lsls r0, r0, #2
ldr r1, [r1]
adds r5, r1, r0
bl check_play_cutscene_during_elevator
ldrb r0, [r4]
ldrb r1, [r5, #1]
bl CheckPlayRoomMusicTrack
movs r0, #1
lbl_0805ef22:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
lbl_0805ef30: .4byte gSamusDoorPositionOffset
lbl_0805ef34: .4byte gGameModeSub1
lbl_0805ef38: .4byte 0x0875faa8
lbl_0805ef3c: .4byte gCurrentArea
lbl_0805ef40: .4byte gLastDoorUsed
thumb_func_start process_door_type
process_door_type: @ 0x0805ef44
push {lr}
lsls r0, r0, #0x18
movs r2, #6
movs r1, #0xf0
lsls r1, r1, #0x14
ands r1, r0
lsrs r1, r1, #0x18
cmp r1, #5
beq lbl_0805ef6a
cmp r1, #5
bgt lbl_0805ef64
cmp r1, #2
bgt lbl_0805ef84
cmp r1, #1
blt lbl_0805ef84
b lbl_0805ef94
lbl_0805ef64:
cmp r1, #6
beq lbl_0805ef78
b lbl_0805ef84
lbl_0805ef6a:
ldr r1, lbl_0805ef74 @ =gUseMotherShipDoors
movs r0, #0
strb r0, [r1]
b lbl_0805ef94
.align 2, 0
lbl_0805ef74: .4byte gUseMotherShipDoors
lbl_0805ef78:
ldr r1, lbl_0805ef80 @ =gUseMotherShipDoors
movs r0, #1
strb r0, [r1]
b lbl_0805ef94
.align 2, 0
lbl_0805ef80: .4byte gUseMotherShipDoors
lbl_0805ef84:
ldr r1, lbl_0805efa0 @ =gWhichBGPositionIsWrittenToBG3OFS
movs r0, #4
strb r0, [r1]
ldr r0, lbl_0805efa4 @ =gSkipDoorTransition
ldrb r0, [r0]
cmp r0, #0
bne lbl_0805ef94
movs r2, #4
lbl_0805ef94:
adds r0, r2, #0
bl ColorFadingStart
pop {r0}
bx r0
.align 2, 0
lbl_0805efa0: .4byte gWhichBGPositionIsWrittenToBG3OFS
lbl_0805efa4: .4byte gSkipDoorTransition
thumb_func_start find_event_based_door_number
find_event_based_door_number: @ 0x0805efa8
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
lsls r0, r0, #0x18
lsrs r7, r0, #0x18
movs r5, #0x28
ldr r0, lbl_0805efe8 @ =gCurrentArea
mov r8, r0
ldr r6, lbl_0805efec @ =0x083601d0
adds r4, r6, #0
adds r4, #0xa0
lbl_0805efbe:
lsls r1, r5, #2
mov r2, r8
ldrb r0, [r2]
ldrb r2, [r4]
cmp r0, r2
bne lbl_0805eff0
adds r0, r6, #1
adds r0, r1, r0
ldrb r0, [r0]
cmp r7, r0
bne lbl_0805eff0
adds r0, r6, #2
adds r0, r1, r0
ldrb r1, [r0]
movs r0, #3
bl EventFunction
cmp r0, #0
beq lbl_0805eff0
ldrb r0, [r4, #3]
b lbl_0805effa
.align 2, 0
lbl_0805efe8: .4byte gCurrentArea
lbl_0805efec: .4byte 0x083601d0
lbl_0805eff0:
subs r4, #4
subs r5, #1
cmp r5, #0
bge lbl_0805efbe
movs r0, #0xff
lbl_0805effa:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r1}
bx r1
thumb_func_start set_hatch_as_opened
set_hatch_as_opened: @ 0x0805f004
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #0xc
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
lsls r1, r1, #0x18
lsrs r4, r1, #0x18
ldr r0, lbl_0805f078 @ =gCurrentArea
mov ip, r0
ldrb r0, [r0]
lsls r0, r0, #5
ldr r2, lbl_0805f07c @ =0x02037c00
adds r5, r0, r2
movs r7, #0
lsrs r1, r1, #0x1d
movs r3, #0x1f
mov r8, r3
adds r3, r4, #0
mov r0, r8
ands r3, r0
cmp r6, #0
beq lbl_0805f084
lsls r2, r1, #2
adds r2, r2, r5
movs r1, #1
lsls r1, r3
ldr r0, [r2]
bics r0, r1
str r0, [r2]
cmp r6, #1
bne lbl_0805f096
ldr r1, lbl_0805f080 @ =0x0875faa8
mov r2, ip
ldrb r0, [r2]
lsls r0, r0, #2
adds r0, r0, r1
ldr r2, [r0]
lsls r0, r4, #1
adds r0, r0, r4
lsls r0, r0, #2
mov r1, sp
adds r0, r0, r2
ldm r0!, {r2, r3, r4}
stm r1!, {r2, r3, r4}
mov r0, sp
ldrb r0, [r0, #6]
lsrs r1, r0, #5
mov r3, r8
ands r0, r3
lsls r2, r1, #2
adds r2, r2, r5
adds r1, r6, #0
lsls r1, r0
ldr r0, [r2]
bics r0, r1
str r0, [r2]
b lbl_0805f096
.align 2, 0
lbl_0805f078: .4byte gCurrentArea
lbl_0805f07c: .4byte 0x02037c00
lbl_0805f080: .4byte 0x0875faa8
lbl_0805f084:
lsls r1, r1, #2
adds r1, r1, r5
movs r0, #1
lsls r0, r3
ldr r7, [r1]
ands r7, r0
cmp r7, #0
beq lbl_0805f096
movs r7, #1
lbl_0805f096:
adds r0, r7, #0
add sp, #0xc
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r1}
bx r1
thumb_func_start check_unlock_doors
check_unlock_doors: @ 0x0805f0a4
push {r4, lr}
ldr r1, lbl_0805f0dc @ =gDoorUnlockTimer
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bge lbl_0805f0d6
adds r0, r2, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne lbl_0805f0d6
ldr r4, lbl_0805f0e0 @ =gHatchesState
ldrh r0, [r4, #2]
cmp r0, #0
bne lbl_0805f0ca
ldrh r0, [r4, #6]
cmp r0, #0
beq lbl_0805f0d6
lbl_0805f0ca:
movs r0, #0x8b
lsls r0, r0, #1
bl SoundPlay
movs r0, #1
strb r0, [r4]
lbl_0805f0d6:
pop {r4}
pop {r0}
bx r0
.align 2, 0
lbl_0805f0dc: .4byte gDoorUnlockTimer
lbl_0805f0e0: .4byte gHatchesState
thumb_func_start sub_0805f0e4
sub_0805f0e4: @ 0x0805f0e4
push {r4, r5, lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
lsls r2, r2, #0x18
lsrs r2, r2, #0x18
ldr r3, lbl_0805f11c @ =gHatchData
lsls r4, r1, #3
adds r4, r4, r3
movs r3, #3
ands r2, r3
ldrb r5, [r4, #1]
subs r3, #7
ands r3, r5
orrs r3, r2
strb r3, [r4, #1]
ldrb r3, [r4]
movs r2, #0xf
rsbs r2, r2, #0
ands r2, r3
strb r2, [r4]
bl update_hatch_anim
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
lbl_0805f11c: .4byte gHatchData
thumb_func_start lock_hatches
lock_hatches: @ 0x0805f120
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
movs r5, #0
movs r7, #0
ldr r2, lbl_0805f160 @ =gHatchesState
movs r3, #1
ldr r1, lbl_0805f164 @ =gHatchData
lbl_0805f138:
ldrb r0, [r1]
lsls r0, r0, #0x1f
cmp r0, #0
beq lbl_0805f14a
adds r0, r3, #0
lsls r0, r5
orrs r0, r7
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
lbl_0805f14a:
adds r1, #8
adds r5, #1
cmp r5, #0xf
ble lbl_0805f138
cmp r4, #0
bne lbl_0805f168
ldrh r0, [r2, #2]
ands r0, r7
strh r0, [r2, #2]
b lbl_0805f174
.align 2, 0
lbl_0805f160: .4byte gHatchesState
lbl_0805f164: .4byte gHatchData
lbl_0805f168:
ldrh r0, [r2, #4]
ands r0, r7
strh r0, [r2, #4]
ldrh r0, [r2, #6]
ands r0, r7
strh r0, [r2, #6]
lbl_0805f174:
cmp r4, #0
bne lbl_0805f1e8
ldrh r0, [r2, #4]
ldrh r1, [r2, #6]
orrs r0, r1
ldrh r1, [r2, #2]
bics r1, r0
strh r1, [r2, #2]
adds r7, r1, #0
movs r5, #0
movs r4, #0
lbl_0805f18a:
adds r0, r7, #0
asrs r0, r5
movs r1, #1
ands r0, r1
cmp r0, #0
beq lbl_0805f1da
ldr r0, lbl_0805f1c8 @ =gHatchData
lsls r2, r5, #3
adds r2, r2, r0
ldrb r1, [r2, #1]
movs r3, #0xd
rsbs r3, r3, #0
adds r0, r3, #0
ands r1, r0
movs r0, #4
orrs r1, r0
strb r1, [r2, #1]
movs r0, #6
strb r0, [r2, #3]
ldr r1, lbl_0805f1cc @ =gLastDoorUsed
ldrb r0, [r2, #7]
ldrb r1, [r1]
cmp r0, r1
beq lbl_0805f1d0
lsrs r1, r4, #0x18
movs r0, #1
movs r2, #0
bl sub_0805f0e4
b lbl_0805f1da
.align 2, 0
lbl_0805f1c8: .4byte gHatchData
lbl_0805f1cc: .4byte gLastDoorUsed
lbl_0805f1d0:
lsrs r1, r4, #0x18
movs r0, #1
movs r2, #3
bl sub_0805f0e4
lbl_0805f1da:
movs r0, #0x80
lsls r0, r0, #0x11
adds r4, r4, r0
adds r5, #1
cmp r5, #0xf
ble lbl_0805f18a
b lbl_0805f284
lbl_0805f1e8:
ldrh r1, [r2, #4]
ldrh r0, [r2, #6]
adds r7, r0, #0
orrs r7, r1
movs r5, #0
movs r1, #1
mov sl, r1
mov r8, r5
ldr r4, lbl_0805f22c @ =gHatchData
movs r3, #0xd
rsbs r3, r3, #0
mov sb, r3
movs r6, #0
lbl_0805f202:
adds r0, r7, #0
asrs r0, r5
mov r1, sl
ands r0, r1
cmp r0, #0
beq lbl_0805f272
ldr r0, lbl_0805f230 @ =gHatchesState
ldrh r0, [r0, #6]
asrs r0, r5
ands r0, r1
cmp r0, #0
beq lbl_0805f234
ldrb r0, [r4, #1]
mov r3, sb
ands r0, r3
movs r1, #4
orrs r0, r1
strb r0, [r4, #1]
movs r0, #6
b lbl_0805f242
.align 2, 0
lbl_0805f22c: .4byte gHatchData
lbl_0805f230: .4byte gHatchesState
lbl_0805f234:
ldrb r0, [r4, #1]
mov r1, sb
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r4, #1]
movs r0, #7
lbl_0805f242:
strb r0, [r4, #3]
ldr r0, lbl_0805f260 @ =gHatchData
add r0, r8
ldr r1, lbl_0805f264 @ =gLastDoorUsed
ldrb r0, [r0, #7]
ldrb r1, [r1]
cmp r0, r1
beq lbl_0805f268
lsrs r1, r6, #0x18
movs r0, #1
movs r2, #0
bl sub_0805f0e4
b lbl_0805f272
.align 2, 0
lbl_0805f260: .4byte gHatchData
lbl_0805f264: .4byte gLastDoorUsed
lbl_0805f268:
lsrs r1, r6, #0x18
movs r0, #1
movs r2, #3
bl sub_0805f0e4
lbl_0805f272:
movs r3, #8
add r8, r3
adds r4, #8
movs r0, #0x80
lsls r0, r0, #0x11
adds r6, r6, r0
adds r5, #1
cmp r5, #0xf
ble lbl_0805f202
lbl_0805f284:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
thumb_func_start ConnectionLoadDoors
ConnectionLoadDoors: @ 0x0805f294
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
ldr r0, lbl_0805f3b8 @ =gPauseScreenFlag
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
beq lbl_0805f2ae
b lbl_0805f590
lbl_0805f2ae:
ldr r1, lbl_0805f3bc @ =gHatchData
ldr r6, lbl_0805f3c0 @ =0x0875faa8
ldr r5, lbl_0805f3c4 @ =gCurrentArea
ldr r0, lbl_0805f3c8 @ =0x08345868
ldr r3, [r0]
ldr r4, [r0, #4]
adds r2, r1, #0
adds r2, #0x78
lbl_0805f2be:
str r3, [r2]
str r4, [r2, #4]
subs r2, #8
cmp r2, r1
bge lbl_0805f2be
movs r0, #0xff
mov sl, r0
movs r0, #0
ldr r1, lbl_0805f3cc @ =gNumberOfValidHatchesInRoom
strb r0, [r1]
ldrb r0, [r5]
lsls r0, r0, #2
adds r0, r0, r6
ldr r6, [r0]
movs r2, #0
str r2, [sp]
mov r8, r2
ldrb r1, [r6]
cmp r1, #0
bne lbl_0805f2e8
b lbl_0805f4ae
lbl_0805f2e8:
ldr r4, lbl_0805f3d0 @ =gHatchesState
mov sb, r4
lbl_0805f2ec:
ldr r0, lbl_0805f3d4 @ =gCurrentRoom
ldrb r0, [r0]
ldrb r2, [r6, #1]
cmp r0, r2
beq lbl_0805f2f8
b lbl_0805f4a0
lbl_0805f2f8:
movs r0, #0xf
ands r0, r1
subs r0, #3
cmp r0, #1
bls lbl_0805f304
b lbl_0805f47e
lbl_0805f304:
ldr r2, lbl_0805f3d8 @ =gBGPointersAndDimensions
ldrh r1, [r2, #0x1c]
ldrb r0, [r6, #4]
muls r0, r1, r0
ldrb r4, [r6, #2]
adds r0, r0, r4
ldr r1, [r2, #0x18]
lsls r0, r0, #1
adds r2, r0, r1
ldrh r1, [r2, #2]
ldr r3, lbl_0805f3dc @ =gTilemapAndClipPointers
ldr r0, [r3, #4]
adds r0, r0, r1
ldrb r0, [r0]
movs r4, #1
mov ip, r4
cmp r0, #0xb
beq lbl_0805f330
movs r0, #0
mov ip, r0
subs r0, r2, #2
ldrh r1, [r0]
lbl_0805f330:
ldr r0, [r3, #8]
lsls r1, r1, #1
adds r1, r1, r0
ldrh r1, [r1]
adds r0, r1, #0
subs r0, #0x80
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r7, #0
cmp r0, #4
bhi lbl_0805f34a
adds r7, r1, #0
subs r7, #0x7f
lbl_0805f34a:
ldr r0, lbl_0805f3e0 @ =0x08360130
adds r0, r7, r0
ldrb r7, [r0]
ldr r1, lbl_0805f3cc @ =gNumberOfValidHatchesInRoom
ldrb r4, [r1]
cmp r4, #0xf
ble lbl_0805f35a
b lbl_0805f462
lbl_0805f35a:
lsls r0, r4, #3
ldr r2, lbl_0805f3bc @ =gHatchData
adds r1, r0, r2
ldrb r1, [r1]
lsls r1, r1, #0x1f
adds r5, r0, #0
cmp r1, #0
beq lbl_0805f384
adds r0, r2, #0
adds r1, r5, #0
adds r2, r1, r0
lbl_0805f370:
adds r1, #8
adds r2, #8
adds r4, #1
cmp r4, #0xf
bgt lbl_0805f462
ldrb r0, [r2]
lsls r0, r0, #0x1f
adds r5, r1, #0
cmp r0, #0
bne lbl_0805f370
lbl_0805f384:
cmp r4, #0xf
bgt lbl_0805f462
ldr r0, lbl_0805f3bc @ =gHatchData
adds r3, r5, r0
strb r7, [r3, #3]
cmp r7, #1
ble lbl_0805f42a
mov r1, ip
movs r2, #1
ands r1, r2
lsls r1, r1, #4
ldrb r2, [r3]
movs r0, #0x11
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
ldrb r0, [r6, #4]
strb r0, [r3, #6]
ldrb r0, [r6, #2]
strb r0, [r3, #5]
mov r1, ip
cmp r1, #0
beq lbl_0805f3e4
adds r0, #1
b lbl_0805f3e6
.align 2, 0
lbl_0805f3b8: .4byte gPauseScreenFlag
lbl_0805f3bc: .4byte gHatchData
lbl_0805f3c0: .4byte 0x0875faa8
lbl_0805f3c4: .4byte gCurrentArea
lbl_0805f3c8: .4byte 0x08345868
lbl_0805f3cc: .4byte gNumberOfValidHatchesInRoom
lbl_0805f3d0: .4byte gHatchesState
lbl_0805f3d4: .4byte gCurrentRoom
lbl_0805f3d8: .4byte gBGPointersAndDimensions
lbl_0805f3dc: .4byte gTilemapAndClipPointers
lbl_0805f3e0: .4byte 0x08360130
lbl_0805f3e4:
subs r0, #1
lbl_0805f3e6:
strb r0, [r3, #5]
ldr r2, lbl_0805f410 @ =gHatchData
adds r0, r5, r2
ldrb r1, [r0]
movs r2, #1
orrs r1, r2
strb r1, [r0]
mov r1, r8
strb r1, [r0, #7]
adds r0, r4, #1
ldr r2, lbl_0805f414 @ =gNumberOfValidHatchesInRoom
strb r0, [r2]
cmp r7, #6
bne lbl_0805f418
movs r0, #1
lsls r0, r4
mov r2, sb
ldrh r1, [r2, #2]
orrs r0, r1
strh r0, [r2, #2]
b lbl_0805f45c
.align 2, 0
lbl_0805f410: .4byte gHatchData
lbl_0805f414: .4byte gNumberOfValidHatchesInRoom
lbl_0805f418:
cmp r7, #7
bne lbl_0805f45c
movs r0, #1
lsls r0, r4
mov r2, sb
ldrh r1, [r2, #4]
orrs r0, r1
strh r0, [r2, #4]
b lbl_0805f45c
lbl_0805f42a:
ldrb r0, [r6, #4]
strb r0, [r3, #6]
ldrb r2, [r6, #2]
strb r2, [r3, #5]
ldrb r0, [r3]
movs r1, #1
orrs r1, r0
strb r1, [r3]
mov r0, r8
strb r0, [r3, #7]
movs r0, #7
ldrsb r0, [r6, r0]
cmp r0, #0
ble lbl_0805f450
adds r0, r2, #1
strb r0, [r3, #5]
movs r0, #0x10
orrs r1, r0
b lbl_0805f45a
lbl_0805f450:
subs r0, r2, #1
strb r0, [r3, #5]
movs r2, #0x11
rsbs r2, r2, #0
ands r1, r2
lbl_0805f45a:
strb r1, [r3]
lbl_0805f45c:
ldr r0, [sp]
adds r0, #1
str r0, [sp]
lbl_0805f462:
mov r1, sl
cmp r1, #0xff
bne lbl_0805f49a
ldr r0, lbl_0805f474 @ =gLastDoorUsed
ldrb r0, [r0]
cmp r8, r0
bne lbl_0805f49a
mov sl, r4
b lbl_0805f49a
.align 2, 0
lbl_0805f474: .4byte gLastDoorUsed
lbl_0805f478:
mov r2, r8
strb r2, [r1, #7]
b lbl_0805f49a
lbl_0805f47e:
movs r4, #0xf
ldr r1, lbl_0805f52c @ =gHatchData
ldr r0, lbl_0805f530 @ =0x08345868
ldrb r2, [r0, #7]
adds r1, #0x78
movs r3, #1
rsbs r3, r3, #0
lbl_0805f48c:
ldrb r0, [r1, #7]
cmp r0, r2
beq lbl_0805f478
subs r1, #8
subs r4, #1
cmp r4, r3
bgt lbl_0805f48c
lbl_0805f49a:
ldr r4, [sp]
cmp r4, #0xf
bgt lbl_0805f4ae
lbl_0805f4a0:
adds r6, #0xc
movs r0, #1
add r8, r0
ldrb r1, [r6]
cmp r1, #0
beq lbl_0805f4ae
b lbl_0805f2ec
lbl_0805f4ae:
movs r4, #0
lbl_0805f4b0:
ldr r1, lbl_0805f52c @ =gHatchData
lsls r0, r4, #3
adds r1, r0, r1
ldrb r0, [r1]
lsls r0, r0, #0x1f
cmp r0, #0
beq lbl_0805f4da
ldrb r0, [r1, #3]
cmp r0, #1
bls lbl_0805f4da
ldrb r1, [r1, #7]
movs r0, #0
bl set_hatch_as_opened
cmp r0, #0
bne lbl_0805f4da
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
movs r1, #2
bl sub_0805eb18
lbl_0805f4da:
adds r4, #1
cmp r4, #0xf
ble lbl_0805f4b0
mov r1, sl
cmp r1, #0xff
beq lbl_0805f590
ldr r0, lbl_0805f534 @ =gGameModeSub3
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
beq lbl_0805f590
ldr r0, lbl_0805f52c @ =gHatchData
lsls r1, r1, #3
adds r2, r1, r0
ldrb r0, [r2]
lsls r0, r0, #0x1f
adds r4, r1, #0
cmp r0, #0
beq lbl_0805f516
ldrb r0, [r2, #3]
cmp r0, #0
beq lbl_0805f516
mov r2, sl
lsls r1, r2, #0x18
lsrs r1, r1, #0x18
movs r0, #0
movs r2, #3
bl sub_0805f0e4
lbl_0805f516:
ldr r1, lbl_0805f52c @ =gHatchData
adds r0, r4, r1
ldrb r2, [r0, #5]
mov r8, r2
ldrb r0, [r0]
lsls r0, r0, #0x1b
cmp r0, #0
bge lbl_0805f538
movs r0, #1
add r8, r0
b lbl_0805f53e
.align 2, 0
lbl_0805f52c: .4byte gHatchData
lbl_0805f530: .4byte 0x08345868
lbl_0805f534: .4byte gGameModeSub3
lbl_0805f538:
movs r2, #1
rsbs r2, r2, #0
add r8, r2
lbl_0805f53e:
adds r0, r4, r1
ldrb r4, [r0, #6]
ldr r2, lbl_0805f5a0 @ =gTilemapAndClipPointers
ldr r1, lbl_0805f5a4 @ =gBGPointersAndDimensions
ldrh r0, [r1, #0x1c]
muls r0, r4, r0
add r0, r8
ldr r1, [r1, #0x18]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
ldr r1, [r2, #8]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
adds r0, r1, #0
bl check_clipdata_behavior_change_bldalpha
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
cmp r1, #0
beq lbl_0805f590
movs r0, #0xff
ands r0, r1
lsrs r1, r1, #8
movs r2, #1
movs r3, #1
bl TransparencyUpdateBLDALPHA
ldr r2, lbl_0805f5a8 @ =gIoRegistersBackup
ldr r1, lbl_0805f5ac @ =gBldalphaData1
ldrb r0, [r1, #3]
strb r0, [r2, #5]
ldrb r0, [r1, #4]
strb r0, [r2, #4]
ldr r3, lbl_0805f5b0 @ =0x04000052
ldrb r1, [r2, #5]
lsls r1, r1, #8
ldrb r0, [r2, #4]
orrs r0, r1
strh r0, [r3]
lbl_0805f590:
add sp, #4
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
lbl_0805f5a0: .4byte gTilemapAndClipPointers
lbl_0805f5a4: .4byte gBGPointersAndDimensions
lbl_0805f5a8: .4byte gIoRegistersBackup
lbl_0805f5ac: .4byte gBldalphaData1
lbl_0805f5b0: .4byte 0x04000052
thumb_func_start ConnectionLockHatchesWithTimer
ConnectionLockHatchesWithTimer: @ 0x0805f5b4
push {lr}
ldr r1, lbl_0805f5cc @ =gHatchesState
ldr r0, lbl_0805f5d0 @ =0x0000ffff
strh r0, [r1, #2]
movs r0, #0
bl lock_hatches
ldr r1, lbl_0805f5d4 @ =gDoorUnlockTimer
movs r0, #2
strb r0, [r1]
pop {r0}
bx r0
.align 2, 0
lbl_0805f5cc: .4byte gHatchesState
lbl_0805f5d0: .4byte 0x0000ffff
lbl_0805f5d4: .4byte gDoorUnlockTimer
thumb_func_start ConnectionCheckHatchLockEvents
ConnectionCheckHatchLockEvents: @ 0x0805f5d8
push {r4, r5, r6, r7, lr}
ldr r0, lbl_0805f6fc @ =gPauseScreenFlag
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
beq lbl_0805f5e8
b lbl_0805f73a
lbl_0805f5e8:
ldr r3, lbl_0805f700 @ =gHatchesState
strh r0, [r3, #4]
strh r0, [r3, #6]
ldr r1, lbl_0805f704 @ =gCurrentArea
ldrb r0, [r1]
cmp r0, #6
bls lbl_0805f5f8
b lbl_0805f73a
lbl_0805f5f8:
ldr r2, lbl_0805f708 @ =0x083602d8
adds r1, r0, #0
lsls r0, r1, #1
adds r0, r0, r2
ldrh r2, [r0]
ldr r0, lbl_0805f70c @ =0x0875fde0
lsls r1, r1, #2
adds r1, r1, r0
ldr r5, [r1]
cmp r2, #0
bne lbl_0805f610
b lbl_0805f72c
lbl_0805f610:
adds r6, r3, #0
adds r7, r2, #0
lbl_0805f614:
movs r4, #0
ldr r1, lbl_0805f710 @ =gCurrentRoom
ldrb r0, [r5]
ldrb r1, [r1]
cmp r0, r1
bne lbl_0805f6ea
ldrb r1, [r5, #1]
movs r0, #3
bl EventFunction
adds r1, r0, #0
ldrb r0, [r5, #2]
cmp r0, #1
beq lbl_0805f636
cmp r0, #3
bne lbl_0805f638
movs r0, #1
lbl_0805f636:
eors r1, r0
lbl_0805f638:
cmp r1, #0
beq lbl_0805f6ea
ldrb r1, [r5, #3]
lsls r0, r1, #0x1f
lsrs r0, r0, #0x1f
orrs r4, r0
movs r0, #2
ands r0, r1
orrs r4, r0
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
movs r0, #4
ands r0, r1
orrs r4, r0
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
movs r0, #8
ands r0, r1
orrs r4, r0
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
movs r0, #0x10
ands r0, r1
orrs r4, r0
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
movs r0, #0x20
ands r0, r1
orrs r4, r0
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
movs r0, #0x40
ands r0, r1
orrs r4, r0
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
lsrs r1, r1, #7
lsls r1, r1, #7
orrs r4, r1
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
ldrb r1, [r5, #4]
lsls r0, r1, #0x1f
lsrs r0, r0, #0x1f
lsls r0, r0, #8
orrs r4, r0
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
lsls r0, r1, #0x1e
lsrs r0, r0, #0x1f
lsls r0, r0, #9
orrs r4, r0
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
lsls r0, r1, #0x1d
lsrs r0, r0, #0x1f
lsls r0, r0, #0xa
orrs r4, r0
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
lsls r0, r1, #0x1c
lsrs r0, r0, #0x1f
lsls r0, r0, #0xb
orrs r4, r0
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
lsls r0, r1, #0x1b
lsrs r0, r0, #0x1f
lsls r0, r0, #0xc
orrs r4, r0
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
lsls r0, r1, #0x1a
lsrs r0, r0, #0x1f
lsls r0, r0, #0xd
orrs r4, r0
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
lsls r0, r1, #0x19
lsrs r0, r0, #0x1f
lsls r0, r0, #0xe
orrs r4, r0
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
lsrs r1, r1, #7
lsls r1, r1, #0xf
orrs r4, r1
lsls r0, r4, #0x10
lsrs r4, r0, #0x10
lbl_0805f6ea:
ldrb r0, [r5, #2]
cmp r0, #0
beq lbl_0805f6f4
cmp r0, #1
bne lbl_0805f714
lbl_0805f6f4:
ldrh r0, [r6, #4]
orrs r4, r0
strh r4, [r6, #4]
b lbl_0805f722
.align 2, 0
lbl_0805f6fc: .4byte gPauseScreenFlag
lbl_0805f700: .4byte gHatchesState
lbl_0805f704: .4byte gCurrentArea
lbl_0805f708: .4byte 0x083602d8
lbl_0805f70c: .4byte 0x0875fde0
lbl_0805f710: .4byte gCurrentRoom
lbl_0805f714:
cmp r0, #2
beq lbl_0805f71c
cmp r0, #3
bne lbl_0805f722
lbl_0805f71c:
ldrh r0, [r6, #6]
orrs r4, r0
strh r4, [r6, #6]
lbl_0805f722:
subs r7, #1
adds r5, #8
cmp r7, #0
beq lbl_0805f72c
b lbl_0805f614
lbl_0805f72c:
ldr r0, lbl_0805f740 @ =gHatchesState
ldr r0, [r0, #4]
cmp r0, #0
beq lbl_0805f73a
movs r0, #1
bl lock_hatches
lbl_0805f73a:
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
lbl_0805f740: .4byte gHatchesState
thumb_func_start check_play_cutscene_during_transition
check_play_cutscene_during_transition: @ 0x0805f744
push {lr}
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
lsls r1, r1, #0x18
lsrs r2, r1, #0x18
cmp r0, #6
bhi lbl_0805f7ea
lsls r0, r0, #2
ldr r1, lbl_0805f75c @ =lbl_0805f760
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
lbl_0805f75c: .4byte lbl_0805f760
lbl_0805f760: @ jump table
.4byte lbl_0805f7ea @ case 0
.4byte lbl_0805f77c @ case 1
.4byte lbl_0805f7ea @ case 2
.4byte lbl_0805f7ea @ case 3
.4byte lbl_0805f7ea @ case 4
.4byte lbl_0805f7ea @ case 5
.4byte lbl_0805f7a4 @ case 6
lbl_0805f77c:
cmp r2, #0x1f
bne lbl_0805f7ea
movs r0, #3
movs r1, #0x1e
bl EventFunction
cmp r0, #0
bne lbl_0805f7ea
movs r0, #0xa
bl FadeMusic
movs r0, #0xa
bl FadeAllSounds
ldr r1, lbl_0805f7a0 @ =gCurrentCutscene
movs r0, #5
b lbl_0805f7e8
.align 2, 0
lbl_0805f7a0: .4byte gCurrentCutscene
lbl_0805f7a4:
cmp r2, #0x2b
bne lbl_0805f7c0
movs r0, #3
movs r1, #0x43
bl EventFunction
cmp r0, #0
bne lbl_0805f7ea
ldr r1, lbl_0805f7bc @ =gCurrentCutscene
movs r0, #0xb
b lbl_0805f7e8
.align 2, 0
lbl_0805f7bc: .4byte gCurrentCutscene
lbl_0805f7c0:
cmp r2, #0xb
bne lbl_0805f7ea
movs r0, #3
movs r1, #6
bl EventFunction
cmp r0, #0
bne lbl_0805f7ea
ldr r0, lbl_0805f7f0 @ =gRainSoundEffect
ldrh r1, [r0]
movs r0, #2
ands r0, r1
cmp r0, #0
beq lbl_0805f7e4
ldr r0, lbl_0805f7f4 @ =0x00000121
movs r1, #0xa
bl SoundFade
lbl_0805f7e4:
ldr r1, lbl_0805f7f8 @ =gCurrentCutscene
movs r0, #0xd
lbl_0805f7e8:
strb r0, [r1]
lbl_0805f7ea:
pop {r0}
bx r0
.align 2, 0
lbl_0805f7f0: .4byte gRainSoundEffect
lbl_0805f7f4: .4byte 0x00000121
lbl_0805f7f8: .4byte gCurrentCutscene
thumb_func_start check_play_cutscene_during_elevator
check_play_cutscene_during_elevator: @ 0x0805f7fc
push {lr}
ldr r0, lbl_0805f814 @ =gLastElevatorUsed
ldrb r1, [r0, #2]
adds r2, r0, #0
cmp r1, #5
bhi lbl_0805f8ec
lsls r0, r1, #2
ldr r1, lbl_0805f818 @ =lbl_0805f81c
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
lbl_0805f814: .4byte gLastElevatorUsed
lbl_0805f818: .4byte lbl_0805f81c
lbl_0805f81c: @ jump table
.4byte lbl_0805f8ec @ case 0
.4byte lbl_0805f8ec @ case 1
.4byte lbl_0805f834 @ case 2
.4byte lbl_0805f854 @ case 3
.4byte lbl_0805f884 @ case 4
.4byte lbl_0805f8bc @ case 5
lbl_0805f834:
movs r0, #3
ldrsb r0, [r2, r0]
cmp r0, #1
bne lbl_0805f8ec
movs r0, #3
movs r1, #3
bl EventFunction
cmp r0, #0
bne lbl_0805f8ec
ldr r0, lbl_0805f850 @ =gCurrentCutscene
movs r1, #4
b lbl_0805f89c
.align 2, 0
lbl_0805f850: .4byte gCurrentCutscene
lbl_0805f854:
movs r1, #3
ldrsb r1, [r2, r1]
movs r0, #1
rsbs r0, r0, #0
cmp r1, r0
bne lbl_0805f8ec
movs r0, #3
movs r1, #0x1e
bl EventFunction
cmp r0, #0
beq lbl_0805f8ec
movs r0, #3
movs r1, #4
bl EventFunction
cmp r0, #0
bne lbl_0805f8ec
ldr r0, lbl_0805f880 @ =gCurrentCutscene
movs r1, #7
b lbl_0805f89c
.align 2, 0
lbl_0805f880: .4byte gCurrentCutscene
lbl_0805f884:
movs r0, #3
ldrsb r0, [r2, r0]
cmp r0, #1
bne lbl_0805f8ec
movs r0, #3
movs r1, #5
bl EventFunction
cmp r0, #0
bne lbl_0805f8ec
ldr r0, lbl_0805f8b8 @ =gCurrentCutscene
movs r1, #8
lbl_0805f89c:
strb r1, [r0]
movs r0, #2
bl ColorFadingStart
movs r0, #0x87
lsls r0, r0, #1
movs r1, #0xa
bl SoundFade
movs r0, #0xa
bl FadeMusic
b lbl_0805f8ec
.align 2, 0
lbl_0805f8b8: .4byte gCurrentCutscene
lbl_0805f8bc:
movs r0, #3
ldrsb r0, [r2, r0]
cmp r0, #1
bne lbl_0805f8ec
movs r0, #3
movs r1, #7
bl EventFunction
cmp r0, #0
bne lbl_0805f8ec
ldr r0, lbl_0805f8f0 @ =gCurrentCutscene
movs r1, #0xa
strb r1, [r0]
movs r0, #2
bl ColorFadingStart
movs r0, #0x87
lsls r0, r0, #1
movs r1, #0xa
bl SoundFade
movs r0, #0xa
bl FadeMusic
lbl_0805f8ec:
pop {r0}
bx r0
.align 2, 0
lbl_0805f8f0: .4byte gCurrentCutscene