mirror of https://github.com/zeldaret/tmc.git
908 lines
15 KiB
ArmAsm
908 lines
15 KiB
ArmAsm
.include "asm/macros.inc"
|
|
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
|
|
thumb_func_start BigBarrel
|
|
BigBarrel: @ 0x08088A50
|
|
push {lr}
|
|
ldr r2, _08088A64 @ =gUnk_08120C34
|
|
ldrb r1, [r0, #0xa]
|
|
lsls r1, r1, #2
|
|
adds r1, r1, r2
|
|
ldr r1, [r1]
|
|
bl _call_via_r1
|
|
pop {pc}
|
|
.align 2, 0
|
|
_08088A64: .4byte gUnk_08120C34
|
|
|
|
thumb_func_start sub_08088A68
|
|
sub_08088A68: @ 0x08088A68
|
|
push {r4, r5, r6, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _08088AE4
|
|
movs r0, #1
|
|
strb r0, [r4, #0xc]
|
|
ldrb r0, [r4, #0x18]
|
|
movs r2, #3
|
|
orrs r0, r2
|
|
strb r0, [r4, #0x18]
|
|
ldrb r1, [r4, #0x11]
|
|
movs r0, #0x10
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r4, #0x11]
|
|
movs r0, #0x17
|
|
bl CheckGlobalFlag
|
|
cmp r0, #0
|
|
beq _08088AA0
|
|
ldr r0, _08088A9C @ =gSave
|
|
ldrb r0, [r0, #7]
|
|
adds r0, #1
|
|
b _08088AA4
|
|
.align 2, 0
|
|
_08088A9C: .4byte gSave
|
|
_08088AA0:
|
|
ldr r0, _08088AD8 @ =gSave
|
|
ldrb r0, [r0, #7]
|
|
_08088AA4:
|
|
strb r0, [r4, #0x1e]
|
|
adds r0, r4, #0
|
|
bl sub_08088BE0
|
|
movs r1, #0x2e
|
|
ldrsh r0, [r4, r1]
|
|
ldr r2, _08088ADC @ =gRoomControls
|
|
ldrh r1, [r2, #6]
|
|
subs r0, r0, r1
|
|
movs r3, #0x32
|
|
ldrsh r1, [r4, r3]
|
|
ldrh r2, [r2, #8]
|
|
subs r1, r1, r2
|
|
movs r2, #0x80
|
|
movs r3, #0x60
|
|
bl CheckPlayerInRegion
|
|
cmp r0, #0
|
|
beq _08088B82
|
|
ldr r0, _08088AE0 @ =gRoomVars
|
|
ldr r1, [r0, #0x68]
|
|
movs r2, #4
|
|
orrs r1, r2
|
|
str r1, [r0, #0x68]
|
|
b _08088B82
|
|
.align 2, 0
|
|
_08088AD8: .4byte gSave
|
|
_08088ADC: .4byte gRoomControls
|
|
_08088AE0: .4byte gRoomVars
|
|
_08088AE4:
|
|
ldr r5, _08088B70 @ =gRoomVars
|
|
ldr r1, [r5, #0x68]
|
|
movs r6, #1
|
|
adds r0, r1, #0
|
|
ands r0, r6
|
|
cmp r0, #0
|
|
beq _08088B06
|
|
movs r0, #2
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
str r1, [r5, #0x68]
|
|
strb r6, [r4, #0xe]
|
|
ldr r0, _08088B74 @ =gUnk_08120C1C
|
|
str r0, [r4, #0x68]
|
|
movs r0, #0x8a
|
|
bl SoundReq
|
|
_08088B06:
|
|
ldr r1, [r5, #0x68]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08088B24
|
|
movs r0, #3
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
str r1, [r5, #0x68]
|
|
strb r6, [r4, #0xe]
|
|
ldr r0, _08088B78 @ =gUnk_08120C25
|
|
str r0, [r4, #0x68]
|
|
movs r0, #0x89
|
|
bl SoundReq
|
|
_08088B24:
|
|
ldr r1, [r5, #0x68]
|
|
movs r0, #4
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08088B42
|
|
movs r0, #5
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
str r1, [r5, #0x68]
|
|
strb r6, [r4, #0xe]
|
|
ldr r0, _08088B7C @ =gUnk_08120C2E
|
|
str r0, [r4, #0x68]
|
|
movs r0, #0x8a
|
|
bl SoundReq
|
|
_08088B42:
|
|
ldrb r0, [r4, #0xe]
|
|
cmp r0, #0
|
|
beq _08088B82
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
lsrs r3, r0, #0x18
|
|
cmp r3, #0
|
|
bne _08088B82
|
|
ldr r1, [r4, #0x68]
|
|
ldrb r0, [r1]
|
|
adds r2, r4, #0
|
|
adds r2, #0x63
|
|
strb r0, [r2]
|
|
adds r1, #1
|
|
ldrb r0, [r1]
|
|
cmp r0, #0xff
|
|
beq _08088B80
|
|
movs r0, #8
|
|
strb r0, [r4, #0xe]
|
|
str r1, [r4, #0x68]
|
|
b _08088B82
|
|
.align 2, 0
|
|
_08088B70: .4byte gRoomVars
|
|
_08088B74: .4byte gUnk_08120C1C
|
|
_08088B78: .4byte gUnk_08120C25
|
|
_08088B7C: .4byte gUnk_08120C2E
|
|
_08088B80:
|
|
strb r3, [r2]
|
|
_08088B82:
|
|
adds r5, r4, #0
|
|
adds r5, #0x29
|
|
ldrb r1, [r5]
|
|
movs r6, #8
|
|
rsbs r6, r6, #0
|
|
adds r0, r6, #0
|
|
ands r0, r1
|
|
movs r1, #1
|
|
orrs r0, r1
|
|
strb r0, [r5]
|
|
movs r1, #0x2e
|
|
ldrsh r0, [r4, r1]
|
|
subs r0, #0x50
|
|
movs r2, #0x32
|
|
ldrsh r1, [r4, r2]
|
|
subs r1, #0x50
|
|
movs r2, #0xa0
|
|
movs r3, #0x30
|
|
bl CheckPlayerProximity
|
|
cmp r0, #0
|
|
beq _08088BBA
|
|
ldrb r0, [r5]
|
|
adds r1, r6, #0
|
|
ands r1, r0
|
|
movs r0, #5
|
|
orrs r1, r0
|
|
strb r1, [r5]
|
|
_08088BBA:
|
|
movs r3, #0x2e
|
|
ldrsh r0, [r4, r3]
|
|
subs r0, #0x50
|
|
movs r2, #0x32
|
|
ldrsh r1, [r4, r2]
|
|
adds r1, #0x30
|
|
movs r2, #0xa0
|
|
movs r3, #0x30
|
|
bl CheckPlayerProximity
|
|
cmp r0, #0
|
|
beq _08088BDE
|
|
ldrb r0, [r5]
|
|
adds r1, r6, #0
|
|
ands r1, r0
|
|
movs r0, #5
|
|
orrs r1, r0
|
|
strb r1, [r5]
|
|
_08088BDE:
|
|
pop {r4, r5, r6, pc}
|
|
|
|
thumb_func_start sub_08088BE0
|
|
sub_08088BE0: @ 0x08088BE0
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
movs r0, #0x15
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
bne _08088C1C
|
|
movs r3, #0x78
|
|
rsbs r3, r3, #0
|
|
adds r0, r4, #0
|
|
movs r1, #2
|
|
movs r2, #0
|
|
bl sub_08088C78
|
|
adds r0, r4, #0
|
|
movs r1, #4
|
|
movs r2, #0x15
|
|
movs r3, #0
|
|
bl sub_08088C78
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
beq _08088C1C
|
|
ldr r0, _08088C74 @ =gRoomControls
|
|
ldrh r1, [r0, #6]
|
|
adds r1, #0x48
|
|
strh r1, [r2, #0x2e]
|
|
ldrh r0, [r0, #8]
|
|
adds r0, #0xc8
|
|
strh r0, [r2, #0x32]
|
|
_08088C1C:
|
|
movs r0, #0x16
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
bne _08088C58
|
|
adds r0, r4, #0
|
|
movs r1, #2
|
|
movs r2, #1
|
|
movs r3, #0x78
|
|
bl sub_08088C78
|
|
adds r0, r4, #0
|
|
movs r1, #4
|
|
movs r2, #0x16
|
|
movs r3, #0
|
|
bl sub_08088C78
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
beq _08088C58
|
|
ldr r0, _08088C74 @ =gRoomControls
|
|
movs r3, #0xc4
|
|
lsls r3, r3, #1
|
|
adds r1, r3, #0
|
|
ldrh r3, [r0, #6]
|
|
adds r1, r1, r3
|
|
strh r1, [r2, #0x2e]
|
|
ldrh r0, [r0, #8]
|
|
adds r0, #0xc8
|
|
strh r0, [r2, #0x32]
|
|
_08088C58:
|
|
movs r3, #0x78
|
|
rsbs r3, r3, #0
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
movs r2, #0
|
|
bl sub_08088C78
|
|
adds r0, r4, #0
|
|
movs r1, #1
|
|
movs r2, #1
|
|
movs r3, #0x78
|
|
bl sub_08088C78
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08088C74: .4byte gRoomControls
|
|
|
|
thumb_func_start sub_08088C78
|
|
sub_08088C78: @ 0x08088C78
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
adds r5, r3, #0
|
|
movs r0, #0x25
|
|
bl CreateObject
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
beq _08088C96
|
|
ldrh r0, [r4, #0x2e]
|
|
adds r0, r0, r5
|
|
strh r0, [r1, #0x2e]
|
|
ldrh r0, [r4, #0x32]
|
|
strh r0, [r1, #0x32]
|
|
str r4, [r1, #0x50]
|
|
_08088C96:
|
|
adds r0, r1, #0
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08088C9C
|
|
sub_08088C9C: @ 0x08088C9C
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldr r1, _08088CEC @ =gUnk_08120C48
|
|
ldr r0, [r4, #0x50]
|
|
adds r0, #0x29
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x1d
|
|
lsrs r0, r0, #0x1d
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
adds r3, r4, #0
|
|
adds r3, #0x29
|
|
movs r1, #7
|
|
ands r1, r0
|
|
ldrb r2, [r3]
|
|
movs r0, #8
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3]
|
|
ldr r0, [r4, #0x50]
|
|
adds r0, #0x63
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
lsrs r1, r0, #0x1f
|
|
adds r0, r0, r1
|
|
asrs r0, r0, #1
|
|
adds r1, r4, #0
|
|
adds r1, #0x63
|
|
strb r0, [r1]
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #1
|
|
beq _08088D4C
|
|
cmp r0, #1
|
|
bgt _08088CF0
|
|
cmp r0, #0
|
|
beq _08088CFA
|
|
b _08088DB0
|
|
.align 2, 0
|
|
_08088CEC: .4byte gUnk_08120C48
|
|
_08088CF0:
|
|
cmp r0, #2
|
|
beq _08088D5A
|
|
cmp r0, #3
|
|
beq _08088D7A
|
|
b _08088DB0
|
|
_08088CFA:
|
|
movs r2, #1
|
|
movs r0, #1
|
|
strb r0, [r4, #0xc]
|
|
ldrb r1, [r4, #0x18]
|
|
subs r0, #5
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r4, #0x18]
|
|
ldrb r2, [r4, #0xb]
|
|
adds r0, r2, #4
|
|
strb r0, [r4, #0x1e]
|
|
ldrb r1, [r4, #0x11]
|
|
movs r0, #0x10
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
movs r1, #3
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x11]
|
|
lsls r2, r2, #0x18
|
|
movs r0, #0x16
|
|
cmp r2, #0
|
|
bne _08088D28
|
|
movs r0, #0x15
|
|
_08088D28:
|
|
strb r0, [r4, #0xf]
|
|
ldrb r0, [r4, #0xf]
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
beq _08088DB0
|
|
ldr r1, _08088D48 @ =gUnk_08120C50
|
|
ldrb r0, [r4, #0xb]
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
lsls r0, r0, #0x18
|
|
asrs r0, r0, #0x18
|
|
ldrh r1, [r4, #0x2e]
|
|
adds r0, r0, r1
|
|
strh r0, [r4, #0x2e]
|
|
b _08088DAC
|
|
.align 2, 0
|
|
_08088D48: .4byte gUnk_08120C50
|
|
_08088D4C:
|
|
ldrb r0, [r4, #0xf]
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
beq _08088DB0
|
|
movs r0, #2
|
|
b _08088DAE
|
|
_08088D5A:
|
|
ldr r2, _08088D98 @ =gRoomVars
|
|
ldr r1, [r2, #0x68]
|
|
movs r0, #0x20
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08088DB0
|
|
movs r0, #0x21
|
|
rsbs r0, r0, #0
|
|
ands r1, r0
|
|
str r1, [r2, #0x68]
|
|
movs r0, #3
|
|
strb r0, [r4, #0xc]
|
|
movs r0, #4
|
|
strb r0, [r4, #0xd]
|
|
movs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
_08088D7A:
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08088DB0
|
|
movs r0, #8
|
|
strb r0, [r4, #0xe]
|
|
movs r0, #0x2e
|
|
ldrsh r1, [r4, r0]
|
|
ldrb r0, [r4, #0xb]
|
|
cmp r0, #0
|
|
beq _08088D9C
|
|
subs r0, r1, #2
|
|
b _08088D9E
|
|
.align 2, 0
|
|
_08088D98: .4byte gRoomVars
|
|
_08088D9C:
|
|
adds r0, r1, #2
|
|
_08088D9E:
|
|
strh r0, [r4, #0x2e]
|
|
ldrb r0, [r4, #0xd]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xd]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08088DB0
|
|
_08088DAC:
|
|
movs r0, #4
|
|
_08088DAE:
|
|
strb r0, [r4, #0xc]
|
|
_08088DB0:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_08088DB4
|
|
sub_08088DB4: @ 0x08088DB4
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #1
|
|
beq _08088E28
|
|
cmp r0, #1
|
|
bgt _08088DC8
|
|
cmp r0, #0
|
|
beq _08088DEC
|
|
b _08088E50
|
|
_08088DC8:
|
|
cmp r0, #4
|
|
bgt _08088E50
|
|
ldr r0, _08088DE8 @ =gRoomVars
|
|
ldr r0, [r0, #0x68]
|
|
movs r1, #8
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _08088E6E
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08088E6E
|
|
b _08088E3E
|
|
.align 2, 0
|
|
_08088DE8: .4byte gRoomVars
|
|
_08088DEC:
|
|
movs r2, #1
|
|
movs r0, #1
|
|
strb r0, [r4, #0xc]
|
|
ldrb r1, [r4, #0x18]
|
|
subs r0, #5
|
|
ands r0, r1
|
|
orrs r0, r2
|
|
strb r0, [r4, #0x18]
|
|
ldrb r0, [r4, #0xb]
|
|
lsls r0, r0, #2
|
|
adds r0, #6
|
|
strb r0, [r4, #0x1e]
|
|
adds r1, r4, #0
|
|
adds r1, #0x38
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
adds r0, r4, #0
|
|
movs r1, #3
|
|
bl sub_0805E3A0
|
|
ldrb r0, [r4, #0xb]
|
|
movs r1, #0x16
|
|
cmp r0, #0
|
|
bne _08088E1E
|
|
movs r1, #0x15
|
|
_08088E1E:
|
|
strb r1, [r4, #0xb]
|
|
adds r0, r4, #0
|
|
bl UpdateSpriteForCollisionLayer
|
|
b _08088E6E
|
|
_08088E28:
|
|
ldrb r0, [r4, #0xb]
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
beq _08088E6E
|
|
ldrb r0, [r4, #0xc]
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
movs r0, #0xa
|
|
strb r0, [r4, #0xe]
|
|
b _08088E6E
|
|
_08088E3E:
|
|
movs r0, #0x1e
|
|
strb r0, [r4, #0xe]
|
|
ldrb r0, [r4, #0x1e]
|
|
adds r0, #1
|
|
strb r0, [r4, #0x1e]
|
|
ldrb r0, [r4, #0xc]
|
|
adds r0, #1
|
|
strb r0, [r4, #0xc]
|
|
b _08088E6E
|
|
_08088E50:
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _08088E6E
|
|
ldr r0, _08088E70 @ =gRoomVars
|
|
ldr r1, [r0, #0x68]
|
|
movs r2, #9
|
|
rsbs r2, r2, #0
|
|
ands r1, r2
|
|
str r1, [r0, #0x68]
|
|
adds r0, r4, #0
|
|
bl DeleteEntity
|
|
_08088E6E:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08088E70: .4byte gRoomVars
|
|
|
|
thumb_func_start sub_08088E74
|
|
sub_08088E74: @ 0x08088E74
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #0
|
|
bne _08088E94
|
|
movs r0, #1
|
|
strb r0, [r4, #0xc]
|
|
adds r1, r4, #0
|
|
adds r1, #0x38
|
|
movs r0, #2
|
|
strb r0, [r1]
|
|
ldr r2, _08088EB0 @ =gRoomVars
|
|
ldr r0, [r2, #0x68]
|
|
movs r1, #8
|
|
orrs r0, r1
|
|
str r0, [r2, #0x68]
|
|
_08088E94:
|
|
adds r0, r4, #0
|
|
bl sub_0806FB38
|
|
cmp r0, #0
|
|
beq _08088EB4
|
|
ldr r0, _08088EB0 @ =gRoomVars
|
|
ldr r1, [r0, #0x68]
|
|
movs r2, #0x10
|
|
orrs r1, r2
|
|
str r1, [r0, #0x68]
|
|
adds r0, r4, #0
|
|
bl DeleteEntity
|
|
b _08088F14
|
|
.align 2, 0
|
|
_08088EB0: .4byte gRoomVars
|
|
_08088EB4:
|
|
ldr r0, _08088F18 @ =gScreenTransition
|
|
ldr r0, [r0]
|
|
movs r1, #7
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _08088F14
|
|
adds r0, r4, #0
|
|
movs r1, #0x2a
|
|
movs r2, #0
|
|
movs r3, #0x1e
|
|
bl CreateObjectWithParent
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08088F14
|
|
ldrb r1, [r4, #0x11]
|
|
movs r0, #0x10
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
movs r1, #3
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x11]
|
|
ldrb r2, [r4, #0x19]
|
|
movs r1, #0x3f
|
|
adds r0, r1, #0
|
|
ands r0, r2
|
|
strb r0, [r4, #0x19]
|
|
adds r3, r4, #0
|
|
adds r3, #0x29
|
|
ldrb r2, [r3]
|
|
movs r0, #8
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
strb r0, [r3]
|
|
ldrb r0, [r4, #0x1b]
|
|
ands r1, r0
|
|
strb r1, [r4, #0x1b]
|
|
bl Random
|
|
ldr r2, _08088F1C @ =gUnk_08120C52
|
|
movs r1, #3
|
|
ands r1, r0
|
|
adds r1, r1, r2
|
|
movs r0, #0
|
|
ldrsb r0, [r1, r0]
|
|
ldrh r1, [r4, #0x32]
|
|
adds r0, r0, r1
|
|
strh r0, [r4, #0x32]
|
|
_08088F14:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_08088F18: .4byte gScreenTransition
|
|
_08088F1C: .4byte gUnk_08120C52
|
|
|
|
thumb_func_start sub_08088F20
|
|
sub_08088F20: @ 0x08088F20
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
ldrb r0, [r4, #0xc]
|
|
cmp r0, #1
|
|
beq _08088F62
|
|
cmp r0, #1
|
|
bgt _08088F34
|
|
cmp r0, #0
|
|
beq _08088F3E
|
|
b _08089020
|
|
_08088F34:
|
|
cmp r0, #2
|
|
beq _08088FEC
|
|
cmp r0, #3
|
|
beq _08089004
|
|
b _08089020
|
|
_08088F3E:
|
|
movs r0, #1
|
|
strb r0, [r4, #0xc]
|
|
ldrb r1, [r4, #0x11]
|
|
subs r0, #0x11
|
|
ands r0, r1
|
|
movs r1, #3
|
|
orrs r0, r1
|
|
strb r0, [r4, #0x11]
|
|
ldrb r0, [r4, #0xb]
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
bne _08088F5A
|
|
b _0808908E
|
|
_08088F5A:
|
|
adds r0, r4, #0
|
|
bl DeleteEntity
|
|
b _0808908E
|
|
_08088F62:
|
|
ldrb r0, [r4, #0xb]
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
bne _08088F6E
|
|
b _0808908E
|
|
_08088F6E:
|
|
movs r5, #2
|
|
strb r5, [r4, #0xc]
|
|
movs r0, #0x1e
|
|
strb r0, [r4, #0xe]
|
|
movs r1, #0x87
|
|
lsls r1, r1, #1
|
|
adds r0, r4, #0
|
|
bl sub_0805E4E0
|
|
movs r0, #0x2a
|
|
movs r1, #1
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
beq _08088FBC
|
|
ldrb r1, [r2, #0x11]
|
|
movs r0, #0x10
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
movs r1, #3
|
|
orrs r0, r1
|
|
strb r0, [r2, #0x11]
|
|
ldrh r0, [r4, #0x2e]
|
|
strh r0, [r2, #0x2e]
|
|
ldrh r0, [r4, #0x32]
|
|
strh r0, [r2, #0x32]
|
|
adds r0, r2, #0
|
|
adds r0, #0x38
|
|
strb r5, [r0]
|
|
adds r2, #0x29
|
|
ldrb r1, [r2]
|
|
movs r0, #8
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
movs r1, #2
|
|
orrs r0, r1
|
|
strb r0, [r2]
|
|
_08088FBC:
|
|
movs r0, #0x2e
|
|
ldrsh r1, [r4, r0]
|
|
ldr r2, _08088FE8 @ =gRoomControls
|
|
ldrh r0, [r2, #6]
|
|
subs r1, r1, r0
|
|
asrs r1, r1, #4
|
|
movs r3, #0x3f
|
|
ands r1, r3
|
|
movs r5, #0x32
|
|
ldrsh r0, [r4, r5]
|
|
ldrh r2, [r2, #8]
|
|
subs r0, r0, r2
|
|
asrs r0, r0, #4
|
|
ands r0, r3
|
|
lsls r0, r0, #6
|
|
orrs r1, r0
|
|
movs r0, #0x76
|
|
movs r2, #2
|
|
bl SetTileType
|
|
b _0808908E
|
|
.align 2, 0
|
|
_08088FE8: .4byte gRoomControls
|
|
_08088FEC:
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
cmp r0, #0
|
|
bne _0808908E
|
|
adds r0, r4, #0
|
|
bl sub_08089094
|
|
movs r0, #3
|
|
strb r0, [r4, #0xc]
|
|
b _0808908E
|
|
_08089004:
|
|
ldr r0, _0808901C @ =gRoomVars
|
|
ldr r0, [r0, #0x68]
|
|
movs r1, #0x10
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0808908E
|
|
movs r0, #4
|
|
strb r0, [r4, #0xc]
|
|
movs r0, #0x78
|
|
strb r0, [r4, #0xe]
|
|
b _0808908E
|
|
.align 2, 0
|
|
_0808901C: .4byte gRoomVars
|
|
_08089020:
|
|
ldrb r0, [r4, #0xe]
|
|
subs r0, #1
|
|
strb r0, [r4, #0xe]
|
|
lsls r0, r0, #0x18
|
|
lsrs r0, r0, #0x18
|
|
cmp r0, #0x5a
|
|
bne _0808905C
|
|
movs r0, #0x15
|
|
movs r1, #2
|
|
bl CheckLocalFlags
|
|
cmp r0, #0
|
|
beq _08089048
|
|
ldr r0, _08089044 @ =gRoomVars
|
|
ldr r1, [r0, #0x68]
|
|
movs r2, #2
|
|
b _0808904E
|
|
.align 2, 0
|
|
_08089044: .4byte gRoomVars
|
|
_08089048:
|
|
ldr r0, _08089090 @ =gRoomVars
|
|
ldr r1, [r0, #0x68]
|
|
movs r2, #1
|
|
_0808904E:
|
|
orrs r1, r2
|
|
str r1, [r0, #0x68]
|
|
adds r2, r0, #0
|
|
ldr r0, [r2, #0x68]
|
|
movs r1, #0x20
|
|
orrs r0, r1
|
|
str r0, [r2, #0x68]
|
|
_0808905C:
|
|
ldrb r0, [r4, #0xe]
|
|
cmp r0, #0
|
|
bne _0808908E
|
|
ldr r2, _08089090 @ =gRoomVars
|
|
ldr r0, [r2, #0x68]
|
|
movs r1, #0x11
|
|
rsbs r1, r1, #0
|
|
ands r0, r1
|
|
str r0, [r2, #0x68]
|
|
movs r0, #0x15
|
|
movs r1, #2
|
|
bl CheckLocalFlags
|
|
cmp r0, #0
|
|
beq _08089088
|
|
adds r0, r4, #0
|
|
movs r1, #0x3c
|
|
bl sub_0805E4E0
|
|
movs r0, #0x72
|
|
bl SoundReq
|
|
_08089088:
|
|
adds r0, r4, #0
|
|
bl DeleteEntity
|
|
_0808908E:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_08089090: .4byte gRoomVars
|
|
|
|
thumb_func_start sub_08089094
|
|
sub_08089094: @ 0x08089094
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
movs r1, #0x2e
|
|
ldrsh r0, [r5, r1]
|
|
ldr r1, _080890C4 @ =gRoomControls
|
|
ldrh r1, [r1, #6]
|
|
subs r0, r0, r1
|
|
cmp r0, #0xff
|
|
bgt _080890CC
|
|
ldr r4, _080890C8 @ =gUnk_08120C56
|
|
movs r2, #8
|
|
rsbs r2, r2, #0
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl sub_080890EC
|
|
adds r4, #4
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
movs r2, #4
|
|
bl sub_080890EC
|
|
b _080890E6
|
|
.align 2, 0
|
|
_080890C4: .4byte gRoomControls
|
|
_080890C8: .4byte gUnk_08120C56
|
|
_080890CC:
|
|
ldr r4, _080890E8 @ =gUnk_08120C5E
|
|
movs r2, #8
|
|
rsbs r2, r2, #0
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
bl sub_080890EC
|
|
adds r4, #4
|
|
adds r0, r5, #0
|
|
adds r1, r4, #0
|
|
movs r2, #4
|
|
bl sub_080890EC
|
|
_080890E6:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_080890E8: .4byte gUnk_08120C5E
|
|
|
|
thumb_func_start sub_080890EC
|
|
sub_080890EC: @ 0x080890EC
|
|
push {r4, r5, r6, r7, lr}
|
|
adds r5, r0, #0
|
|
adds r7, r1, #0
|
|
adds r6, r2, #0
|
|
movs r0, #0x25
|
|
movs r1, #3
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _08089132
|
|
movs r1, #3
|
|
bl sub_0805E3A0
|
|
ldrh r0, [r5, #0x2e]
|
|
strh r0, [r4, #0x2e]
|
|
ldrh r0, [r5, #0x32]
|
|
adds r0, r0, r6
|
|
strh r0, [r4, #0x32]
|
|
str r5, [r4, #0x50]
|
|
movs r0, #0x2e
|
|
ldrsh r1, [r4, r0]
|
|
movs r2, #0
|
|
ldrsh r0, [r7, r2]
|
|
adds r1, r1, r0
|
|
movs r3, #0x32
|
|
ldrsh r2, [r4, r3]
|
|
movs r3, #2
|
|
ldrsh r0, [r7, r3]
|
|
adds r2, r2, r0
|
|
adds r0, r4, #0
|
|
movs r3, #0x5a
|
|
bl sub_0806FB00
|
|
_08089132:
|
|
pop {r4, r5, r6, r7, pc}
|