tmc/asm/castorWildsStatue.s

566 lines
9.6 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start CastorWildsStatue
CastorWildsStatue: @ 0x08067380
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0x10]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _080673A4
ldr r0, _080673A0 @ =gUnk_08110E5C
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
b _080673BA
.align 2, 0
_080673A0: .4byte gUnk_08110E5C
_080673A4:
ldr r0, _080673BC @ =gUnk_08110E4C
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_0806ED78
_080673BA:
pop {r4, pc}
.align 2, 0
_080673BC: .4byte gUnk_08110E4C
thumb_func_start sub_080673C0
sub_080673C0: @ 0x080673C0
push {lr}
adds r2, r0, #0
ldr r0, _080673D4 @ =gUnk_030010A0
adds r0, #0x2c
ldrb r0, [r0]
cmp r0, #0
beq _080673D8
movs r0, #3
b _080673DA
.align 2, 0
_080673D4: .4byte gUnk_030010A0
_080673D8:
movs r0, #1
_080673DA:
strb r0, [r2, #0xc]
ldrb r1, [r2, #0xa]
movs r0, #1
ands r0, r1
strb r0, [r2, #0x1e]
cmp r0, #0
bne _080673EC
ldr r0, _080673F0 @ =gUnk_08110E94
str r0, [r2, #0x48]
_080673EC:
pop {pc}
.align 2, 0
_080673F0: .4byte gUnk_08110E94
thumb_func_start sub_080673F4
sub_080673F4: @ 0x080673F4
push {lr}
adds r2, r0, #0
adds r3, r2, #0
adds r3, #0x39
movs r0, #0
ldrsb r0, [r3, r0]
cmp r0, #0
beq _0806740C
movs r1, #0
movs r0, #2
strb r0, [r2, #0xc]
strb r1, [r3]
_0806740C:
pop {pc}
.align 2, 0
thumb_func_start sub_08067410
sub_08067410: @ 0x08067410
movs r1, #1
strb r1, [r0, #0xc]
bx lr
.align 2, 0
thumb_func_start sub_08067418
sub_08067418: @ 0x08067418
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
movs r0, #1
strb r0, [r6, #0xc]
movs r0, #0x2e
ldrsh r1, [r6, r0]
ldr r2, _08067488 @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r4, #0x32
ldrsh r0, [r6, r4]
ldrh r2, [r2, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r1, r0
adds r7, r6, #0
adds r7, #0x74
strh r1, [r7]
ldrb r0, [r6, #0xa]
cmp r0, #0
bne _08067494
ldr r0, _0806748C @ =gUnk_08110E94
str r0, [r6, #0x48]
ldr r5, _08067490 @ =0x00004022
ldrh r1, [r7]
subs r1, #1
adds r4, r6, #0
adds r4, #0x38
ldrb r2, [r4]
adds r0, r5, #0
bl SetTile
ldrh r1, [r7]
ldrb r2, [r4]
adds r0, r5, #0
bl SetTile
ldrh r1, [r7]
adds r1, #0x3f
ldrb r2, [r4]
adds r0, r5, #0
bl SetTile
ldrh r1, [r7]
adds r1, #0x40
ldrb r2, [r4]
adds r0, r5, #0
bl SetTile
b _080674F8
.align 2, 0
_08067488: .4byte gRoomControls
_0806748C: .4byte gUnk_08110E94
_08067490: .4byte 0x00004022
_08067494:
adds r1, r6, #0
adds r1, #0x38
movs r0, #3
strb r0, [r1]
ldrb r2, [r6, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x40
orrs r0, r2
strb r0, [r6, #0x1b]
ldrb r0, [r6, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r6, #0x19]
adds r2, r6, #0
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]
movs r0, #0x1d
bl CheckLocalFlag
cmp r0, #0
bne _080674F8
ldr r4, _08067500 @ =0x00004022
ldr r1, _08067504 @ =0x00000E81
adds r0, r4, #0
movs r2, #1
bl SetTile
ldr r1, _08067508 @ =0x00000E82
adds r0, r4, #0
movs r2, #1
bl SetTile
ldr r1, _0806750C @ =0x00000E83
adds r0, r4, #0
movs r2, #1
bl SetTile
ldr r1, _08067510 @ =0x00000EC3
adds r0, r4, #0
movs r2, #1
bl SetTile
_080674F8:
adds r0, r6, #0
bl sub_0807DD50
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08067500: .4byte 0x00004022
_08067504: .4byte 0x00000E81
_08067508: .4byte 0x00000E82
_0806750C: .4byte 0x00000E83
_08067510: .4byte 0x00000EC3
thumb_func_start sub_08067514
sub_08067514: @ 0x08067514
push {r4, lr}
adds r4, r0, #0
movs r1, #0
bl sub_0807DD94
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _0806752A
adds r0, r4, #0
bl sub_0806ED78
_0806752A:
pop {r4, pc}
thumb_func_start sub_0806752C
sub_0806752C: @ 0x0806752C
push {lr}
bl sub_0806FD3C
pop {pc}
thumb_func_start sub_08067534
sub_08067534: @ 0x08067534
push {r4, r5, lr}
adds r5, r0, #0
movs r4, #0
_0806753A:
adds r0, r5, #0
movs r1, #2
movs r2, #0
bl CreateFx
adds r1, r0, #0
cmp r1, #0
beq _08067560
ldr r0, _08067578 @ =gUnk_08110E64
adds r0, r4, r0
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r2, [r1, #0x2e]
adds r0, r0, r2
strh r0, [r1, #0x2e]
ldrh r0, [r1, #0x32]
adds r0, #0x1c
strh r0, [r1, #0x32]
_08067560:
adds r4, #1
cmp r4, #1
ble _0806753A
movs r0, #0xa6
lsls r0, r0, #1
bl sub_08004488
movs r0, #0x28
movs r1, #4
bl sub_08080964
pop {r4, r5, pc}
.align 2, 0
_08067578: .4byte gUnk_08110E64
thumb_func_start sub_0806757C
sub_0806757C: @ 0x0806757C
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xd]
cmp r0, #0
beq _080675CC
cmp r0, #2
bls _080675BC
ldr r0, _080675AC @ =0x00000E81
movs r1, #1
bl sub_0807BA8C
ldr r0, _080675B0 @ =0x00000E82
movs r1, #1
bl sub_0807BA8C
ldr r0, _080675B4 @ =0x00000E83
movs r1, #1
bl sub_0807BA8C
ldr r0, _080675B8 @ =0x00000EC3
movs r1, #1
bl sub_0807BA8C
b _080675CC
.align 2, 0
_080675AC: .4byte 0x00000E81
_080675B0: .4byte 0x00000E82
_080675B4: .4byte 0x00000E83
_080675B8: .4byte 0x00000EC3
_080675BC:
ldr r0, _080675D0 @ =gUnk_08110E68
ldrb r1, [r2, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl sub_080ADF80
_080675CC:
pop {pc}
.align 2, 0
_080675D0: .4byte gUnk_08110E68
thumb_func_start sub_080675D4
sub_080675D4: @ 0x080675D4
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r4, r0, #0
ldr r5, _080676D0 @ =gUnk_08110E78
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r7, r0, #0
subs r7, #0xc
movs r0, #0x3f
mov r8, r0
movs r6, #8
_080675EC:
adds r0, r4, #0
movs r1, #2
movs r2, #0
bl CreateFx
adds r3, r0, #0
cmp r3, #0
beq _08067646
movs r0, #0
ldrsb r0, [r5, r0]
ldrh r1, [r3, #0x2e]
adds r0, r0, r1
strh r0, [r3, #0x2e]
movs r0, #1
ldrsb r0, [r5, r0]
ldrh r1, [r3, #0x32]
adds r0, r0, r1
strh r0, [r3, #0x32]
strh r7, [r3, #0x36]
adds r0, r4, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r3, #0
adds r0, #0x38
strb r1, [r0]
ldrb r1, [r4, #0x1b]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r3, #0x1b]
mov r0, r8
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x1b]
ldrb r1, [r4, #0x19]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r3, #0x19]
mov r0, r8
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x19]
adds r0, r4, #0
adds r1, r3, #0
bl ResolveEntityOnTop
_08067646:
subs r6, #1
adds r5, #2
cmp r6, #0
bge _080675EC
ldr r5, _080676D4 @ =gUnk_08110E8A
movs r0, #0x3f
mov r8, r0
movs r6, #3
_08067656:
adds r0, r4, #0
movs r1, #4
movs r2, #0
bl CreateFx
adds r3, r0, #0
cmp r3, #0
beq _080676B0
movs r0, #0
ldrsb r0, [r5, r0]
ldrh r1, [r3, #0x2e]
adds r0, r0, r1
strh r0, [r3, #0x2e]
movs r0, #1
ldrsb r0, [r5, r0]
ldrh r1, [r3, #0x32]
adds r0, r0, r1
strh r0, [r3, #0x32]
strh r7, [r3, #0x36]
adds r0, r4, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r3, #0
adds r0, #0x38
strb r1, [r0]
ldrb r1, [r4, #0x1b]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r3, #0x1b]
mov r0, r8
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x1b]
ldrb r1, [r4, #0x19]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r3, #0x19]
mov r0, r8
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x19]
adds r0, r4, #0
adds r1, r3, #0
bl ResolveEntityOnTop
_080676B0:
subs r6, #1
adds r5, #2
cmp r6, #0
bge _08067656
ldrb r0, [r4, #0xd]
cmp r0, #2
bls _080676C8
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
_080676C8:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080676D0: .4byte gUnk_08110E78
_080676D4: .4byte gUnk_08110E8A
thumb_func_start sub_080676D8
sub_080676D8: @ 0x080676D8
ldrb r1, [r0, #0xd]
adds r1, #1
strb r1, [r0, #0xd]
bx lr
thumb_func_start sub_080676E0
sub_080676E0: @ 0x080676E0
push {lr}
adds r3, r0, #0
adds r2, r1, #0
ldrb r0, [r2, #0x18]
cmp r0, #1
beq _08067706
cmp r0, #1
bgt _080676F6
cmp r0, #0
beq _080676FC
b _08067734
_080676F6:
cmp r0, #2
beq _08067722
b _08067734
_080676FC:
movs r0, #1
strb r0, [r2, #0x18]
movs r0, #0x20
strb r0, [r2, #0x19]
b _08067742
_08067706:
ldrb r1, [r2, #0x19]
lsrs r0, r1, #1
subs r0, #0x10
strh r0, [r3, #0x36]
subs r1, #1
strb r1, [r2, #0x19]
lsls r1, r1, #0x18
cmp r1, #0
bne _08067742
movs r0, #2
strb r0, [r2, #0x18]
movs r0, #0x24
strb r0, [r2, #0x19]
b _08067742
_08067722:
ldrb r0, [r2, #0x19]
subs r0, #1
strb r0, [r2, #0x19]
lsls r0, r0, #0x18
cmp r0, #0
bne _08067742
movs r0, #3
strb r0, [r2, #0x18]
b _08067742
_08067734:
movs r1, #0xc0
lsls r1, r1, #5
adds r0, r3, #0
bl sub_08003FC4
cmp r0, #0
beq _08067748
_08067742:
ldr r1, _0806774C @ =gUnk_02033280
movs r0, #0
strb r0, [r1, #6]
_08067748:
pop {pc}
.align 2, 0
_0806774C: .4byte gUnk_02033280
thumb_func_start CastorWildsStatue_Fusion
CastorWildsStatue_Fusion: @ 0x08067750
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _08067788
adds r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
ldrh r0, [r4, #0x32]
subs r0, #0x18
strh r0, [r4, #0x32]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
ldr r1, _08067784 @ =0x0000017B
adds r0, r4, #0
bl sub_0801D2B4
b _0806778E
.align 2, 0
_08067784: .4byte 0x0000017B
_08067788:
adds r0, r4, #0
bl GetNextFrame
_0806778E:
pop {r4, pc}
thumb_func_start sub_08067790
sub_08067790: @ 0x08067790
push {lr}
ldrb r2, [r0, #0xa]
lsls r1, r2, #2
adds r1, r1, r2
lsls r1, r1, #4
ldr r2, _080677AC @ =gUnk_02002A40
ldrb r2, [r2, #8]
lsls r2, r2, #3
ldr r3, _080677B0 @ =gUnk_08110EF8
adds r2, r2, r3
adds r1, r1, r2
bl ShowNPCDialogue
pop {pc}
.align 2, 0
_080677AC: .4byte gUnk_02002A40
_080677B0: .4byte gUnk_08110EF8