tmc/asm/code_0807CAA0.s

205 lines
3.7 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0807CAA0
sub_0807CAA0: @ 0x0807CAA0
push {r4, lr}
adds r3, r0, #0
lsrs r4, r3, #2
ldr r0, _0807CAC4 @ =gUnk_02002B32
adds r4, r4, r0
movs r0, #3
ands r3, r0
lsls r3, r3, #1
lsls r1, r3
ldrb r2, [r4]
lsls r0, r3
ands r0, r2
eors r2, r0
orrs r2, r1
strb r2, [r4]
lsrs r0, r3
pop {r4, pc}
.align 2, 0
_0807CAC4: .4byte gUnk_02002B32
thumb_func_start sub_0807CAC8
sub_0807CAC8: @ 0x0807CAC8
ldr r2, _0807CAE0 @ =gUnk_02002A40
ldr r1, _0807CAE4 @ =gUnk_02033A90
ldr r3, _0807CAE8 @ =0x0000047C
adds r2, r2, r3
ldrb r1, [r1, #3]
adds r2, r2, r1
movs r1, #1
lsls r1, r0
ldrb r0, [r2]
orrs r1, r0
strb r1, [r2]
bx lr
.align 2, 0
_0807CAE0: .4byte gUnk_02002A40
_0807CAE4: .4byte gUnk_02033A90
_0807CAE8: .4byte 0x0000047C
thumb_func_start sub_0807CAEC
sub_0807CAEC: @ 0x0807CAEC
adds r2, r0, #0
ldr r0, _0807CB04 @ =gUnk_02002A40
ldr r1, _0807CB08 @ =gUnk_02033A90
ldr r3, _0807CB0C @ =0x0000047C
adds r0, r0, r3
ldrb r1, [r1, #3]
adds r0, r0, r1
ldrb r0, [r0]
asrs r0, r2
movs r1, #1
ands r0, r1
bx lr
.align 2, 0
_0807CB04: .4byte gUnk_02002A40
_0807CB08: .4byte gUnk_02033A90
_0807CB0C: .4byte 0x0000047C
thumb_func_start CheckLocalFlagByOffset
CheckLocalFlagByOffset: @ 0x0807CB10
push {lr}
adds r2, r0, #0
ldr r0, _0807CB20 @ =gUnk_02002C9C
adds r2, r2, r1
adds r1, r2, #0
bl sub_0801D5A8
pop {pc}
.align 2, 0
_0807CB20: .4byte gUnk_02002C9C
thumb_func_start sub_0807CB24
sub_0807CB24: @ 0x0807CB24
push {lr}
adds r2, r0, #0
adds r3, r1, #0
cmp r2, #0x11
bhi _0807CB84
lsls r0, r2, #2
ldr r1, _0807CB38 @ =_0807CB3C
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0807CB38: .4byte _0807CB3C
_0807CB3C: @ jump table
.4byte _0807CB84 @ case 0
.4byte _0807CB88 @ case 1
.4byte _0807CB88 @ case 2
.4byte _0807CB88 @ case 3
.4byte _0807CB88 @ case 4
.4byte _0807CB88 @ case 5
.4byte _0807CB88 @ case 6
.4byte _0807CB88 @ case 7
.4byte _0807CB88 @ case 8
.4byte _0807CB88 @ case 9
.4byte _0807CB88 @ case 10
.4byte _0807CB88 @ case 11
.4byte _0807CB88 @ case 12
.4byte _0807CB88 @ case 13
.4byte _0807CB84 @ case 14
.4byte _0807CBA0 @ case 15
.4byte _0807CBAE @ case 16
.4byte _0807CBBC @ case 17
_0807CB84:
movs r1, #0
b _0807CBCA
_0807CB88:
ldr r0, _0807CB9C @ =gUnk_0811E454
lsls r1, r2, #1
adds r1, r1, r0
ldrh r0, [r1]
adds r1, r3, #0
bl CheckLocalFlagByOffset
_0807CB96:
adds r1, r0, #0
b _0807CBCA
.align 2, 0
_0807CB9C: .4byte gUnk_0811E454
_0807CBA0:
adds r0, r3, #0
bl GetInventoryValue
cmp r0, #0
beq _0807CB96
movs r0, #1
b _0807CB96
_0807CBAE:
adds r0, r3, #0
bl GetInventoryValue
movs r1, #0
cmp r0, #1
bne _0807CBCA
b _0807CBC8
_0807CBBC:
adds r0, r3, #0
bl GetInventoryValue
movs r1, #0
cmp r0, #2
bne _0807CBCA
_0807CBC8:
movs r1, #1
_0807CBCA:
adds r0, r1, #0
pop {pc}
.align 2, 0
thumb_func_start CheckLocalFlag
CheckLocalFlag: @ 0x0807CBD0
push {lr}
adds r1, r0, #0
ldr r0, _0807CBE0 @ =gUnk_02033A90
ldrh r0, [r0, #4]
bl CheckLocalFlagByOffset
pop {pc}
.align 2, 0
_0807CBE0: .4byte gUnk_02033A90
thumb_func_start CheckFlags
CheckFlags: @ 0x0807CBE4
push {lr}
ldr r3, _0807CC14 @ =0x000003FF
ands r3, r0
movs r1, #0xf0
lsls r1, r1, #6
ands r1, r0
lsrs r1, r1, #0xa
adds r2, r1, #1
movs r1, #0xc0
lsls r1, r1, #8
ands r1, r0
lsrs r1, r1, #0xe
cmp r1, #1
beq _0807CC22
cmp r1, #1
blo _0807CC18
cmp r1, #2
bne _0807CC2C
adds r0, r3, #0
adds r1, r2, #0
bl CheckRoomFlags
b _0807CC2E
.align 2, 0
_0807CC14: .4byte 0x000003FF
_0807CC18:
adds r0, r3, #0
adds r1, r2, #0
bl CheckLocalFlags
b _0807CC2E
_0807CC22:
adds r0, r3, #0
adds r1, r2, #0
bl CheckGlobalFlags
b _0807CC2E
_0807CC2C:
movs r0, #0
_0807CC2E:
pop {pc}