mirror of https://github.com/zeldaret/tmc.git
Merge branch 'master' of https://github.com/zeldaret/tmc
This commit is contained in:
commit
cc298f0fd2
|
@ -1,60 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
|
|
||||||
thumb_func_start sub_08032358
|
|
||||||
sub_08032358: @ 0x08032358
|
|
||||||
push {r4, r5, r6, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0803237C
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
ldrb r0, [r4, #0xa]
|
|
||||||
bl sub_0804B128
|
|
||||||
str r0, [r4, #0x54]
|
|
||||||
adds r1, r4, #0
|
|
||||||
adds r1, #0x54
|
|
||||||
adds r2, r4, #0
|
|
||||||
adds r2, #0x74
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080A2CC0
|
|
||||||
_0803237C:
|
|
||||||
ldrb r1, [r4, #0x15]
|
|
||||||
movs r6, #0x80
|
|
||||||
adds r0, r6, #0
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0803238E
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806F69C
|
|
||||||
_0803238E:
|
|
||||||
adds r5, r4, #0
|
|
||||||
adds r5, #0x74
|
|
||||||
ldrh r0, [r5]
|
|
||||||
subs r0, #1
|
|
||||||
strh r0, [r5]
|
|
||||||
lsls r0, r0, #0x10
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080323BA
|
|
||||||
ldrb r1, [r4, #0x15]
|
|
||||||
adds r0, r6, #0
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080323AE
|
|
||||||
movs r0, #0x74
|
|
||||||
bl sub_08004488
|
|
||||||
_080323AE:
|
|
||||||
adds r1, r4, #0
|
|
||||||
adds r1, #0x54
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r2, r5, #0
|
|
||||||
bl sub_080A2CC0
|
|
||||||
_080323BA:
|
|
||||||
pop {r4, r5, r6, pc}
|
|
448
asm/cow.s
448
asm/cow.s
|
@ -1,448 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
|
|
||||||
thumb_func_start sub_08068F98
|
|
||||||
sub_08068F98: @ 0x08068F98
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldr r1, _08068FBC @ =gUnk_08111914
|
|
||||||
ldrb r0, [r4, #0xc]
|
|
||||||
lsls r0, r0, #2
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r1, [r0]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl _call_via_r1
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806ED78
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806920C
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_08068FBC: .4byte gUnk_08111914
|
|
||||||
|
|
||||||
thumb_func_start sub_08068FC0
|
|
||||||
sub_08068FC0: @ 0x08068FC0
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
ldrb r0, [r4, #0xb]
|
|
||||||
strb r0, [r4, #0x14]
|
|
||||||
movs r0, #0x40
|
|
||||||
strh r0, [r4, #0x24]
|
|
||||||
adds r1, r4, #0
|
|
||||||
adds r1, #0x6d
|
|
||||||
movs r0, #0xff
|
|
||||||
strb r0, [r1]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0805ACC0
|
|
||||||
adds r2, r0, #0
|
|
||||||
cmp r2, #0
|
|
||||||
bne _08068FF4
|
|
||||||
ldrh r0, [r4, #0x2e]
|
|
||||||
adds r1, r4, #0
|
|
||||||
adds r1, #0x68
|
|
||||||
strh r0, [r1]
|
|
||||||
ldrh r0, [r4, #0x32]
|
|
||||||
adds r1, #2
|
|
||||||
strh r0, [r1]
|
|
||||||
b _08069000
|
|
||||||
_08068FF4:
|
|
||||||
lsrs r1, r2, #0x10
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x68
|
|
||||||
strh r1, [r0]
|
|
||||||
adds r0, #2
|
|
||||||
strh r2, [r0]
|
|
||||||
_08069000:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0801E99C
|
|
||||||
adds r1, r4, #0
|
|
||||||
adds r1, #0x6c
|
|
||||||
strb r0, [r1]
|
|
||||||
ldrb r1, [r4, #0x14]
|
|
||||||
adds r1, #4
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl LoadAnimation
|
|
||||||
pop {r4, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08069018
|
|
||||||
sub_08069018: @ 0x08069018
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldrb r0, [r4, #0xd]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _0806903A
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r4, #0xd]
|
|
||||||
bl Random
|
|
||||||
movs r1, #0x3f
|
|
||||||
ands r0, r1
|
|
||||||
adds r0, #0x3c
|
|
||||||
strb r0, [r4, #0xf]
|
|
||||||
ldrb r1, [r4, #0x14]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl LoadAnimation
|
|
||||||
_0806903A:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080042B8
|
|
||||||
ldrb r0, [r4, #0xf]
|
|
||||||
subs r0, #1
|
|
||||||
strb r0, [r4, #0xf]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
lsrs r1, r0, #0x18
|
|
||||||
cmp r1, #0
|
|
||||||
bne _0806905E
|
|
||||||
ldrb r0, [r4, #0xe]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _08069058
|
|
||||||
movs r0, #2
|
|
||||||
b _0806905A
|
|
||||||
_08069058:
|
|
||||||
movs r0, #3
|
|
||||||
_0806905A:
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
strb r1, [r4, #0xd]
|
|
||||||
_0806905E:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806924C
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_08069068
|
|
||||||
sub_08069068: @ 0x08069068
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldrb r0, [r4, #0xd]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080690A4
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r4, #0xd]
|
|
||||||
bl Random
|
|
||||||
movs r1, #2
|
|
||||||
ands r1, r0
|
|
||||||
subs r1, #1
|
|
||||||
ldrb r0, [r4, #0x14]
|
|
||||||
adds r1, r1, r0
|
|
||||||
movs r0, #3
|
|
||||||
ands r1, r0
|
|
||||||
strb r1, [r4, #0x14]
|
|
||||||
lsls r1, r1, #3
|
|
||||||
strb r1, [r4, #0x15]
|
|
||||||
bl Random
|
|
||||||
movs r1, #0x3f
|
|
||||||
ands r0, r1
|
|
||||||
adds r0, #0x3c
|
|
||||||
strb r0, [r4, #0xf]
|
|
||||||
ldrb r1, [r4, #0x14]
|
|
||||||
adds r1, #4
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl LoadAnimation
|
|
||||||
_080690A4:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080AEF88
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080042B8
|
|
||||||
movs r0, #0x2e
|
|
||||||
ldrsh r1, [r4, r0]
|
|
||||||
adds r2, r4, #0
|
|
||||||
adds r2, #0x68
|
|
||||||
movs r3, #0
|
|
||||||
ldrsh r0, [r2, r3]
|
|
||||||
subs r1, r1, r0
|
|
||||||
cmp r1, #0x10
|
|
||||||
ble _080690CC
|
|
||||||
ldrh r0, [r2]
|
|
||||||
adds r0, #0x10
|
|
||||||
strh r0, [r4, #0x2e]
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r4, #0xf]
|
|
||||||
_080690CC:
|
|
||||||
movs r3, #0x10
|
|
||||||
rsbs r3, r3, #0
|
|
||||||
cmp r1, r3
|
|
||||||
bge _080690DE
|
|
||||||
ldrh r0, [r2]
|
|
||||||
subs r0, #0x10
|
|
||||||
strh r0, [r4, #0x2e]
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r4, #0xf]
|
|
||||||
_080690DE:
|
|
||||||
movs r5, #0x32
|
|
||||||
ldrsh r1, [r4, r5]
|
|
||||||
adds r2, r4, #0
|
|
||||||
adds r2, #0x6a
|
|
||||||
movs r5, #0
|
|
||||||
ldrsh r0, [r2, r5]
|
|
||||||
subs r1, r1, r0
|
|
||||||
cmp r1, #0x10
|
|
||||||
ble _080690FA
|
|
||||||
ldrh r0, [r2]
|
|
||||||
adds r0, #0x10
|
|
||||||
strh r0, [r4, #0x32]
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r4, #0xf]
|
|
||||||
_080690FA:
|
|
||||||
cmp r1, r3
|
|
||||||
bge _08069108
|
|
||||||
ldrh r0, [r2]
|
|
||||||
subs r0, #0x10
|
|
||||||
strh r0, [r4, #0x32]
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r4, #0xf]
|
|
||||||
_08069108:
|
|
||||||
ldrb r0, [r4, #0xf]
|
|
||||||
subs r0, #1
|
|
||||||
strb r0, [r4, #0xf]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
lsrs r1, r0, #0x18
|
|
||||||
cmp r1, #0
|
|
||||||
bne _0806911C
|
|
||||||
movs r0, #3
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
strb r1, [r4, #0xd]
|
|
||||||
_0806911C:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806924C
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08069124
|
|
||||||
sub_08069124: @ 0x08069124
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
bl sub_080042B8
|
|
||||||
ldr r1, _08069144 @ =gUnk_08111928
|
|
||||||
ldrb r0, [r4, #0xd]
|
|
||||||
lsls r0, r0, #2
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r1, [r0]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl _call_via_r1
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806924C
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_08069144: .4byte gUnk_08111928
|
|
||||||
|
|
||||||
thumb_func_start sub_08069148
|
|
||||||
sub_08069148: @ 0x08069148
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
bl Random
|
|
||||||
movs r1, #3
|
|
||||||
ands r0, r1
|
|
||||||
adds r0, #3
|
|
||||||
strb r0, [r4, #0xf]
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r4, #0xd]
|
|
||||||
ldrb r1, [r4, #0x14]
|
|
||||||
adds r1, #8
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl LoadAnimation
|
|
||||||
pop {r4, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08069168
|
|
||||||
sub_08069168: @ 0x08069168
|
|
||||||
push {lr}
|
|
||||||
adds r2, r0, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r0, [r0]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
asrs r0, r0, #0x18
|
|
||||||
cmp r0, #0
|
|
||||||
bge _08069186
|
|
||||||
movs r0, #2
|
|
||||||
strb r0, [r2, #0xd]
|
|
||||||
ldrb r1, [r2, #0x14]
|
|
||||||
adds r1, #0xc
|
|
||||||
adds r0, r2, #0
|
|
||||||
bl LoadAnimation
|
|
||||||
_08069186:
|
|
||||||
pop {pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08069188
|
|
||||||
sub_08069188: @ 0x08069188
|
|
||||||
push {lr}
|
|
||||||
adds r2, r0, #0
|
|
||||||
adds r3, r2, #0
|
|
||||||
adds r3, #0x5a
|
|
||||||
ldrb r1, [r3]
|
|
||||||
movs r0, #1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080691B8
|
|
||||||
movs r0, #0
|
|
||||||
strb r0, [r3]
|
|
||||||
ldrb r0, [r2, #0xf]
|
|
||||||
subs r0, #1
|
|
||||||
strb r0, [r2, #0xf]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080691B8
|
|
||||||
movs r0, #3
|
|
||||||
strb r0, [r2, #0xd]
|
|
||||||
ldrb r1, [r2, #0x14]
|
|
||||||
adds r1, #0x10
|
|
||||||
adds r0, r2, #0
|
|
||||||
bl LoadAnimation
|
|
||||||
_080691B8:
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_080691BC
|
|
||||||
sub_080691BC: @ 0x080691BC
|
|
||||||
push {lr}
|
|
||||||
adds r2, r0, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r0, [r0]
|
|
||||||
lsls r0, r0, #0x18
|
|
||||||
asrs r0, r0, #0x18
|
|
||||||
cmp r0, #0
|
|
||||||
bge _080691DE
|
|
||||||
movs r1, #0
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r2, #0xc]
|
|
||||||
strb r1, [r2, #0xd]
|
|
||||||
ldrb r1, [r2, #0x14]
|
|
||||||
adds r1, #4
|
|
||||||
adds r0, r2, #0
|
|
||||||
bl LoadAnimation
|
|
||||||
_080691DE:
|
|
||||||
pop {pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_080691E0
|
|
||||||
sub_080691E0: @ 0x080691E0
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
bl UpdateFuseInteraction
|
|
||||||
cmp r0, #0
|
|
||||||
beq _080691F4
|
|
||||||
movs r1, #0
|
|
||||||
movs r0, #1
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
strb r1, [r4, #0xd]
|
|
||||||
_080691F4:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_080691F8
|
|
||||||
sub_080691F8: @ 0x080691F8
|
|
||||||
push {lr}
|
|
||||||
ldrb r1, [r0, #0xa]
|
|
||||||
lsls r1, r1, #3
|
|
||||||
ldr r2, _08069208 @ =gUnk_08111938
|
|
||||||
adds r1, r1, r2
|
|
||||||
bl sub_0806F1AC
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_08069208: .4byte gUnk_08111938
|
|
||||||
|
|
||||||
thumb_func_start sub_0806920C
|
|
||||||
sub_0806920C: @ 0x0806920C
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
ldr r0, _08069234 @ =gLinkState
|
|
||||||
ldr r0, [r0, #0x30]
|
|
||||||
movs r1, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
rsbs r0, r0, #0
|
|
||||||
lsrs r5, r0, #0x1f
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x6d
|
|
||||||
ldrb r0, [r0]
|
|
||||||
cmp r5, r0
|
|
||||||
beq _08069244
|
|
||||||
cmp r5, #0
|
|
||||||
bne _08069238
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_08078778
|
|
||||||
b _08069244
|
|
||||||
.align 2, 0
|
|
||||||
_08069234: .4byte gLinkState
|
|
||||||
_08069238:
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x6c
|
|
||||||
ldrb r1, [r0]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080787A8
|
|
||||||
_08069244:
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x6d
|
|
||||||
strb r5, [r0]
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_0806924C
|
|
||||||
sub_0806924C: @ 0x0806924C
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
adds r0, #0x39
|
|
||||||
movs r2, #0
|
|
||||||
ldrsb r2, [r0, r2]
|
|
||||||
cmp r2, #0
|
|
||||||
beq _0806929C
|
|
||||||
ldr r0, _08069278 @ =gLinkState
|
|
||||||
ldr r0, [r0, #0x30]
|
|
||||||
movs r1, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08069284
|
|
||||||
cmp r2, #2
|
|
||||||
bne _0806927C
|
|
||||||
movs r0, #4
|
|
||||||
strb r0, [r4, #0xc]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0806F118
|
|
||||||
b _0806928E
|
|
||||||
.align 2, 0
|
|
||||||
_08069278: .4byte gLinkState
|
|
||||||
_0806927C:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080691F8
|
|
||||||
b _0806928E
|
|
||||||
_08069284:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080691F8
|
|
||||||
bl sub_080791D0
|
|
||||||
_0806928E:
|
|
||||||
movs r0, #0xd4
|
|
||||||
bl PlaySFX
|
|
||||||
adds r1, r4, #0
|
|
||||||
adds r1, #0x39
|
|
||||||
movs r0, #0
|
|
||||||
strb r0, [r1]
|
|
||||||
_0806929C:
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_080692A0
|
|
||||||
sub_080692A0: @ 0x080692A0
|
|
||||||
push {lr}
|
|
||||||
adds r2, r0, #0
|
|
||||||
ldrb r0, [r2, #0xc]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _080692C6
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r2, #0xc]
|
|
||||||
ldrb r1, [r2, #0x18]
|
|
||||||
movs r0, #4
|
|
||||||
rsbs r0, r0, #0
|
|
||||||
ands r0, r1
|
|
||||||
movs r1, #1
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r2, #0x18]
|
|
||||||
adds r0, r2, #0
|
|
||||||
movs r1, #0xf
|
|
||||||
bl LoadAnimation
|
|
||||||
b _080692CC
|
|
||||||
_080692C6:
|
|
||||||
adds r0, r2, #0
|
|
||||||
bl sub_080042B8
|
|
||||||
_080692CC:
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
430
asm/zelda.s
430
asm/zelda.s
|
@ -1,430 +0,0 @@
|
||||||
.include "asm/macros.inc"
|
|
||||||
|
|
||||||
.include "constants/constants.inc"
|
|
||||||
|
|
||||||
.syntax unified
|
|
||||||
|
|
||||||
.text
|
|
||||||
|
|
||||||
|
|
||||||
thumb_func_start sub_08066CB4
|
|
||||||
sub_08066CB4: @ 0x08066CB4
|
|
||||||
push {lr}
|
|
||||||
ldr r2, _08066CC8 @ =gUnk_08110BD8
|
|
||||||
ldrb r1, [r0, #0xc]
|
|
||||||
lsls r1, r1, #2
|
|
||||||
adds r1, r1, r2
|
|
||||||
ldr r1, [r1]
|
|
||||||
bl _call_via_r1
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_08066CC8: .4byte gUnk_08110BD8
|
|
||||||
|
|
||||||
thumb_func_start sub_08066CCC
|
|
||||||
sub_08066CCC: @ 0x08066CCC
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
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]
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #7
|
|
||||||
bl sub_0805EA78
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #2
|
|
||||||
bl sub_0805E3A0
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_0807DD50
|
|
||||||
pop {r4, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08066CF8
|
|
||||||
sub_08066CF8: @ 0x08066CF8
|
|
||||||
push {lr}
|
|
||||||
movs r1, #0
|
|
||||||
bl sub_0807DD94
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_08066D04
|
|
||||||
sub_08066D04: @ 0x08066D04
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
movs r0, #7
|
|
||||||
movs r1, #0x2e
|
|
||||||
bl sub_0805EB9C
|
|
||||||
str r0, [r4, #0x50]
|
|
||||||
pop {r4, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08066D14
|
|
||||||
sub_08066D14: @ 0x08066D14
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
adds r5, r1, #0
|
|
||||||
ldr r2, [r4, #0x50]
|
|
||||||
cmp r2, #0
|
|
||||||
beq _08066D48
|
|
||||||
ldrb r0, [r2, #0x14]
|
|
||||||
strb r0, [r4, #0x14]
|
|
||||||
ldrb r1, [r4, #0x18]
|
|
||||||
movs r0, #4
|
|
||||||
rsbs r0, r0, #0
|
|
||||||
ands r0, r1
|
|
||||||
movs r1, #1
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r4, #0x18]
|
|
||||||
adds r0, r2, #0
|
|
||||||
adds r1, r4, #0
|
|
||||||
bl CopyPosition
|
|
||||||
ldr r1, [r4, #0x50]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_08068680
|
|
||||||
movs r0, #1
|
|
||||||
str r0, [r5, #0x14]
|
|
||||||
b _08066D4A
|
|
||||||
_08066D48:
|
|
||||||
str r2, [r5, #0x14]
|
|
||||||
_08066D4A:
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08066D4C
|
|
||||||
sub_08066D4C: @ 0x08066D4C
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
adds r5, r1, #0
|
|
||||||
ldr r1, [r4, #0x50]
|
|
||||||
cmp r1, #0
|
|
||||||
beq _08066D90
|
|
||||||
bl CopyPosition
|
|
||||||
ldr r3, [r4, #0x50]
|
|
||||||
ldrb r1, [r3, #0x18]
|
|
||||||
movs r2, #4
|
|
||||||
rsbs r2, r2, #0
|
|
||||||
adds r0, r2, #0
|
|
||||||
ands r0, r1
|
|
||||||
movs r1, #1
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r3, #0x18]
|
|
||||||
ldr r1, [r4, #0x50]
|
|
||||||
ldrb r0, [r4, #0x14]
|
|
||||||
strb r0, [r1, #0x14]
|
|
||||||
ldrb r0, [r4, #0x18]
|
|
||||||
ands r2, r0
|
|
||||||
strb r2, [r4, #0x18]
|
|
||||||
ldrb r1, [r4, #0x17]
|
|
||||||
movs r0, #0xfe
|
|
||||||
ands r0, r1
|
|
||||||
strb r0, [r4, #0x17]
|
|
||||||
ldr r1, [r4, #0x50]
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_08068694
|
|
||||||
movs r0, #1
|
|
||||||
str r0, [r5, #0x14]
|
|
||||||
b _08066D92
|
|
||||||
_08066D90:
|
|
||||||
str r1, [r5, #0x14]
|
|
||||||
_08066D92:
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08066D94
|
|
||||||
sub_08066D94: @ 0x08066D94
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r5, r0, #0
|
|
||||||
movs r0, #0x1c
|
|
||||||
bl SetGlobalFlag
|
|
||||||
movs r0, #0x2e
|
|
||||||
movs r1, #0
|
|
||||||
movs r2, #0
|
|
||||||
bl CreateNPC
|
|
||||||
adds r4, r0, #0
|
|
||||||
cmp r4, #0
|
|
||||||
beq _08066DD6
|
|
||||||
ldr r0, _08066DDC @ =gLinkEntity
|
|
||||||
ldrb r0, [r0, #0x14]
|
|
||||||
strb r0, [r4, #0x14]
|
|
||||||
ldrb r1, [r4, #0x10]
|
|
||||||
movs r0, #0x20
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r4, #0x10]
|
|
||||||
adds r0, r5, #0
|
|
||||||
bl sub_0806EDC4
|
|
||||||
strb r0, [r4, #0x14]
|
|
||||||
ldr r0, _08066DE0 @ =gRoomControls
|
|
||||||
ldrb r1, [r0, #5]
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x74
|
|
||||||
strh r1, [r0]
|
|
||||||
adds r0, r5, #0
|
|
||||||
adds r1, r4, #0
|
|
||||||
bl CopyPosition
|
|
||||||
_08066DD6:
|
|
||||||
bl DeleteThisEntity
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_08066DDC: .4byte gLinkEntity
|
|
||||||
_08066DE0: .4byte gRoomControls
|
|
||||||
|
|
||||||
thumb_func_start sub_08066DE4
|
|
||||||
sub_08066DE4: @ 0x08066DE4
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r5, r0, #0
|
|
||||||
movs r0, #7
|
|
||||||
movs r1, #0x2e
|
|
||||||
bl sub_0805EB9C
|
|
||||||
adds r4, r0, #0
|
|
||||||
cmp r4, #0
|
|
||||||
beq _08066E06
|
|
||||||
adds r0, r5, #0
|
|
||||||
adds r1, r4, #0
|
|
||||||
bl CopyPosition
|
|
||||||
adds r0, r5, #0
|
|
||||||
adds r1, r4, #0
|
|
||||||
bl sub_080686C4
|
|
||||||
_08066E06:
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_08066E08
|
|
||||||
sub_08066E08: @ 0x08066E08
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
movs r1, #0x50
|
|
||||||
bl LoadAnimation
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x58
|
|
||||||
ldrb r0, [r0]
|
|
||||||
adds r4, #0x80
|
|
||||||
strh r0, [r4]
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_08066E20
|
|
||||||
sub_08066E20: @ 0x08066E20
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
movs r1, #0x44
|
|
||||||
bl LoadAnimation
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x58
|
|
||||||
ldrb r0, [r0]
|
|
||||||
adds r4, #0x80
|
|
||||||
strh r0, [r4]
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_08066E38
|
|
||||||
sub_08066E38: @ 0x08066E38
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
movs r1, #0x48
|
|
||||||
bl LoadAnimation
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x58
|
|
||||||
ldrb r0, [r0]
|
|
||||||
adds r4, #0x80
|
|
||||||
strh r0, [r4]
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_08066E50
|
|
||||||
sub_08066E50: @ 0x08066E50
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
movs r1, #0x4c
|
|
||||||
bl LoadAnimation
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x58
|
|
||||||
ldrb r0, [r0]
|
|
||||||
adds r4, #0x80
|
|
||||||
strh r0, [r4]
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_08066E68
|
|
||||||
sub_08066E68: @ 0x08066E68
|
|
||||||
push {r4, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
movs r1, #0x54
|
|
||||||
bl LoadAnimation
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x58
|
|
||||||
ldrb r0, [r0]
|
|
||||||
adds r4, #0x80
|
|
||||||
strh r0, [r4]
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_08066E80
|
|
||||||
sub_08066E80: @ 0x08066E80
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
adds r5, r1, #0
|
|
||||||
ldrb r0, [r5, #0x18]
|
|
||||||
cmp r0, #4
|
|
||||||
bhi _08066F7C
|
|
||||||
lsls r0, r0, #2
|
|
||||||
ldr r1, _08066E98 @ =_08066E9C
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r0, [r0]
|
|
||||||
mov pc, r0
|
|
||||||
.align 2, 0
|
|
||||||
_08066E98: .4byte _08066E9C
|
|
||||||
_08066E9C: @ jump table
|
|
||||||
.4byte _08066EB0 @ case 0
|
|
||||||
.4byte _08066EC0 @ case 1
|
|
||||||
.4byte _08066EF0 @ case 2
|
|
||||||
.4byte _08066F28 @ case 3
|
|
||||||
.4byte _08066F58 @ case 4
|
|
||||||
_08066EB0:
|
|
||||||
ldrb r0, [r5, #0x18]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r5, #0x18]
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0x16
|
|
||||||
bl LoadAnimation
|
|
||||||
b _08066F7C
|
|
||||||
_08066EC0:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080042B8
|
|
||||||
adds r2, r4, #0
|
|
||||||
adds r2, #0x5a
|
|
||||||
ldrb r1, [r2]
|
|
||||||
movs r0, #1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08066F7C
|
|
||||||
ldrb r0, [r5, #0x18]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r5, #0x18]
|
|
||||||
movs r0, #0x80
|
|
||||||
lsls r0, r0, #0xa
|
|
||||||
str r0, [r4, #0x20]
|
|
||||||
ldrb r1, [r2]
|
|
||||||
movs r0, #0xfe
|
|
||||||
ands r0, r1
|
|
||||||
strb r0, [r2]
|
|
||||||
movs r0, #0x7c
|
|
||||||
bl PlaySFX
|
|
||||||
b _08066F7C
|
|
||||||
_08066EF0:
|
|
||||||
movs r1, #0x80
|
|
||||||
lsls r1, r1, #1
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r2, #0x80
|
|
||||||
bl sub_0806F62C
|
|
||||||
movs r1, #0x80
|
|
||||||
lsls r1, r1, #6
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_08003FC4
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #1
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
bne _08066F1A
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080042B8
|
|
||||||
_08066F1A:
|
|
||||||
ldr r0, [r4, #0x20]
|
|
||||||
cmp r0, #0
|
|
||||||
bge _08066F7C
|
|
||||||
ldrb r0, [r5, #0x18]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r5, #0x18]
|
|
||||||
b _08066F7C
|
|
||||||
_08066F28:
|
|
||||||
movs r1, #0x80
|
|
||||||
lsls r1, r1, #1
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r2, #0x80
|
|
||||||
bl sub_0806F62C
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080042B8
|
|
||||||
movs r1, #0x80
|
|
||||||
lsls r1, r1, #6
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_08003FC4
|
|
||||||
cmp r0, #0
|
|
||||||
bne _08066F7C
|
|
||||||
ldrb r0, [r5, #0x18]
|
|
||||||
adds r0, #1
|
|
||||||
strb r0, [r5, #0x18]
|
|
||||||
adds r0, r4, #0
|
|
||||||
movs r1, #0x1e
|
|
||||||
bl LoadAnimation
|
|
||||||
b _08066F7C
|
|
||||||
_08066F58:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl sub_080042B8
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x5a
|
|
||||||
ldrb r1, [r0]
|
|
||||||
movs r0, #0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #0
|
|
||||||
beq _08066F7C
|
|
||||||
ldr r2, _08066F78 @ =gUnk_02033280
|
|
||||||
ldrb r1, [r2, #7]
|
|
||||||
movs r0, #1
|
|
||||||
orrs r0, r1
|
|
||||||
strb r0, [r2, #7]
|
|
||||||
b _08066F8C
|
|
||||||
.align 2, 0
|
|
||||||
_08066F78: .4byte gUnk_02033280
|
|
||||||
_08066F7C:
|
|
||||||
adds r0, r4, #0
|
|
||||||
adds r0, #0x58
|
|
||||||
ldrb r1, [r0]
|
|
||||||
adds r0, #0x28
|
|
||||||
movs r2, #0
|
|
||||||
strh r1, [r0]
|
|
||||||
ldr r0, _08066F90 @ =gUnk_02033280
|
|
||||||
strb r2, [r0, #6]
|
|
||||||
_08066F8C:
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_08066F90: .4byte gUnk_02033280
|
|
||||||
|
|
||||||
thumb_func_start sub_08066F94
|
|
||||||
sub_08066F94: @ 0x08066F94
|
|
||||||
push {r4, lr}
|
|
||||||
ldr r4, _08066F9C @ =gUnk_08110BE0
|
|
||||||
b _08066FAC
|
|
||||||
.align 2, 0
|
|
||||||
_08066F9C: .4byte gUnk_08110BE0
|
|
||||||
_08066FA0:
|
|
||||||
ldrh r1, [r4]
|
|
||||||
adds r4, #2
|
|
||||||
ldr r0, _08066FB4 @ =0x00004072
|
|
||||||
movs r2, #1
|
|
||||||
bl SetTileType
|
|
||||||
_08066FAC:
|
|
||||||
ldrh r0, [r4]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _08066FA0
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_08066FB4: .4byte 0x00004072
|
|
||||||
|
|
||||||
thumb_func_start sub_08066FB8
|
|
||||||
sub_08066FB8: @ 0x08066FB8
|
|
||||||
push {r4, lr}
|
|
||||||
ldr r4, _08066FC0 @ =gUnk_08110BE0
|
|
||||||
b _08066FCE
|
|
||||||
.align 2, 0
|
|
||||||
_08066FC0: .4byte gUnk_08110BE0
|
|
||||||
_08066FC4:
|
|
||||||
ldrh r0, [r4]
|
|
||||||
adds r4, #2
|
|
||||||
movs r1, #1
|
|
||||||
bl sub_0807BA8C
|
|
||||||
_08066FCE:
|
|
||||||
ldrh r0, [r4]
|
|
||||||
cmp r0, #0
|
|
||||||
bne _08066FC4
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
|
@ -77,7 +77,7 @@ typedef struct Entity
|
||||||
u8 filler[2];
|
u8 filler[2];
|
||||||
u8 animationList;
|
u8 animationList;
|
||||||
u8 field_1f;
|
u8 field_1f;
|
||||||
u32 field_0x20;
|
s32 field_0x20;
|
||||||
s16 nonPlanarMovement;
|
s16 nonPlanarMovement;
|
||||||
u8 spriteAnimation[3];
|
u8 spriteAnimation[3];
|
||||||
struct {
|
struct {
|
||||||
|
@ -114,9 +114,12 @@ typedef struct Entity
|
||||||
u8 field_0x59;
|
u8 field_0x59;
|
||||||
union {
|
union {
|
||||||
u8 all;
|
u8 all;
|
||||||
u8 f0:6;
|
struct {
|
||||||
u8 f1:1;
|
u8 f0:1;
|
||||||
u8 f2:1;
|
u8 f1:5;
|
||||||
|
u8 f2:1;
|
||||||
|
u8 f3:1;
|
||||||
|
} PACKED b;
|
||||||
} PACKED frames;
|
} PACKED frames;
|
||||||
u8 gfx;
|
u8 gfx;
|
||||||
u8 field_0x5c;
|
u8 field_0x5c;
|
||||||
|
@ -130,7 +133,9 @@ typedef struct Entity
|
||||||
u8 field_0x68;
|
u8 field_0x68;
|
||||||
u8 field_0x69;
|
u8 field_0x69;
|
||||||
u16 field_0x6a;
|
u16 field_0x6a;
|
||||||
u8 filler4[8];
|
u8 field_0x6c;
|
||||||
|
u8 field_0x6d;
|
||||||
|
u8 filler4[6];
|
||||||
u32 * heldObjectPtr;
|
u32 * heldObjectPtr;
|
||||||
u8 filler3[2];
|
u8 filler3[2];
|
||||||
u16 itemCooldown;
|
u16 itemCooldown;
|
||||||
|
@ -142,4 +147,4 @@ typedef struct Entity
|
||||||
|
|
||||||
} Entity;
|
} Entity;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -366,7 +366,7 @@ SECTIONS {
|
||||||
asm/rope.o(.text);
|
asm/rope.o(.text);
|
||||||
asm/smallPesto.o(.text);
|
asm/smallPesto.o(.text);
|
||||||
asm/acroBandits.o(.text);
|
asm/acroBandits.o(.text);
|
||||||
asm/bladeTrap.o(.text);
|
src/bladeTrap.o(.text);
|
||||||
asm/keaton.o(.text);
|
asm/keaton.o(.text);
|
||||||
asm/crow.o(.text);
|
asm/crow.o(.text);
|
||||||
asm/mulldozer.o(.text);
|
asm/mulldozer.o(.text);
|
||||||
|
@ -499,7 +499,7 @@ SECTIONS {
|
||||||
asm/ministerPotho.o(.text);
|
asm/ministerPotho.o(.text);
|
||||||
asm/npc26.o(.text);
|
asm/npc26.o(.text);
|
||||||
asm/vaati.o(.text);
|
asm/vaati.o(.text);
|
||||||
asm/zelda.o(.text);
|
src/zelda.o(.text);
|
||||||
asm/mutoh.o(.text);
|
asm/mutoh.o(.text);
|
||||||
asm/carpenter.o(.text);
|
asm/carpenter.o(.text);
|
||||||
asm/castorWildsStatue.o(.text);
|
asm/castorWildsStatue.o(.text);
|
||||||
|
@ -509,7 +509,7 @@ SECTIONS {
|
||||||
asm/zeldaFollower.o(.text);
|
asm/zeldaFollower.o(.text);
|
||||||
asm/melari.o(.text);
|
asm/melari.o(.text);
|
||||||
asm/bladeBrothers.o(.text);
|
asm/bladeBrothers.o(.text);
|
||||||
asm/cow.o(.text);
|
src/cow.o(.text);
|
||||||
asm/goron.o(.text);
|
asm/goron.o(.text);
|
||||||
asm/goronMerchant.o(.text);
|
asm/goronMerchant.o(.text);
|
||||||
asm/gorman.o(.text);
|
asm/gorman.o(.text);
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
#include "global.h"
|
||||||
|
#include "entity.h"
|
||||||
|
#include "entityData.h"
|
||||||
|
|
||||||
|
extern void sub_080A2CC0();
|
||||||
|
extern void sub_0806F69C();
|
||||||
|
extern void sub_08004488();
|
||||||
|
extern Entity * sub_0804B128();
|
||||||
|
|
||||||
|
void sub_08032358(Entity *ent)
|
||||||
|
{
|
||||||
|
u16 uVar1;
|
||||||
|
Entity *pEVar2;
|
||||||
|
u16 *puVar3;
|
||||||
|
if (ent->action == 0) {
|
||||||
|
ent->action = 1;
|
||||||
|
pEVar2 = sub_0804B128((u8)(ent->entityType).parameter1);
|
||||||
|
ent->attachedEntity = pEVar2;
|
||||||
|
sub_080A2CC0((EntityData *)ent,&ent->attachedEntity,&ent->heldObjectPtr);
|
||||||
|
}
|
||||||
|
if ((ent->direction & 0x80) == 0) {
|
||||||
|
sub_0806F69C(ent);
|
||||||
|
}
|
||||||
|
(u32)puVar3 = &(ent->heldObjectPtr);
|
||||||
|
uVar1 = *puVar3;
|
||||||
|
*puVar3 = uVar1 - 1;
|
||||||
|
if ((u16)(*puVar3) == 0) {
|
||||||
|
if ((ent->direction & 0x80) == 0) {
|
||||||
|
sub_08004488(0x74);
|
||||||
|
}
|
||||||
|
sub_080A2CC0((EntityData *)ent,&ent->attachedEntity,puVar3);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,235 @@
|
||||||
|
#include "global.h"
|
||||||
|
#include "entity.h"
|
||||||
|
#include "link.h"
|
||||||
|
|
||||||
|
extern void sub_0806ED78(Entity*);
|
||||||
|
extern void sub_0806920C(Entity*);
|
||||||
|
extern void sub_080042B8(Entity*);
|
||||||
|
extern u32 sub_0805ACC0(Entity*);
|
||||||
|
extern u32 sub_0801E99C(Entity*);
|
||||||
|
extern void sub_0806924C(Entity*);
|
||||||
|
extern void sub_080AEF88(Entity*);
|
||||||
|
extern void sub_0806F1AC(Entity*, u32*);
|
||||||
|
extern void sub_08078778(Entity*);
|
||||||
|
extern void sub_080787A8(Entity*, u32);
|
||||||
|
extern void sub_0806F118(Entity*);
|
||||||
|
extern void sub_080791D0();
|
||||||
|
extern void (*gUnk_08111914[])(Entity*);
|
||||||
|
extern void (*gUnk_08111928[])(Entity*);
|
||||||
|
extern u32 gUnk_08111938[];
|
||||||
|
extern void LoadAnimation();
|
||||||
|
extern void PlaySFX(u32);
|
||||||
|
extern u32 Random();
|
||||||
|
extern u32 UpdateFuseInteraction(Entity*);
|
||||||
|
extern LinkState gLinkState;
|
||||||
|
|
||||||
|
void sub_08068F98(Entity* ent) {
|
||||||
|
gUnk_08111914[ent->action](ent);
|
||||||
|
sub_0806ED78(ent);
|
||||||
|
sub_0806920C(ent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08068FC0(Entity* ent) {
|
||||||
|
u32 r2;
|
||||||
|
|
||||||
|
ent->action = 1;
|
||||||
|
ent->animationState = ent->entityType.parameter2;
|
||||||
|
ent->nonPlanarMovement = 0x40;
|
||||||
|
|
||||||
|
ent->field_0x6d = 0xFF;
|
||||||
|
|
||||||
|
r2 = sub_0805ACC0(ent);
|
||||||
|
if (r2 == 0) {
|
||||||
|
u16 x, y;
|
||||||
|
|
||||||
|
x = ent->x.HALF.HI;
|
||||||
|
*(u16*)&ent->field_0x68 = x;
|
||||||
|
|
||||||
|
y = ent->y.HALF.HI;
|
||||||
|
ent->field_0x6a = y;
|
||||||
|
} else {
|
||||||
|
u32 var1 = r2 >> 16;
|
||||||
|
//0x68+0x69 probably a SplitWord
|
||||||
|
*(u16*)&ent->field_0x68 = var1;
|
||||||
|
ent->field_0x6a = r2;
|
||||||
|
}
|
||||||
|
ent->field_0x6c = sub_0801E99C(ent);
|
||||||
|
|
||||||
|
LoadAnimation(ent, ent->animationState + 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08069018(Entity* ent) {
|
||||||
|
s32 var0;
|
||||||
|
|
||||||
|
if (ent->previousActionFlag == 0) {
|
||||||
|
ent->previousActionFlag++;
|
||||||
|
ent->field_0xf = (Random() & 0x3F) + 0x3C;
|
||||||
|
LoadAnimation(ent, ent->animationState);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub_080042B8(ent);
|
||||||
|
var0 = --ent->field_0xf;
|
||||||
|
if (var0 == 0) {
|
||||||
|
if (ent->parameter3 == 0) {
|
||||||
|
ent->action = 2;
|
||||||
|
} else {
|
||||||
|
ent->action = 3;
|
||||||
|
}
|
||||||
|
ent->previousActionFlag = var0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub_0806924C(ent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08069068(Entity *ent) {
|
||||||
|
s32 var0;
|
||||||
|
|
||||||
|
if (ent->previousActionFlag == 0) {
|
||||||
|
u32 anim;
|
||||||
|
|
||||||
|
ent->previousActionFlag++;
|
||||||
|
|
||||||
|
anim = (Random() & 2) - 1;
|
||||||
|
anim = (anim + ent->animationState) & 3;
|
||||||
|
ent->animationState = anim;
|
||||||
|
ent->direction = anim <<= 3;
|
||||||
|
|
||||||
|
ent->field_0xf = (Random() & 0x3F) + 0x3C;
|
||||||
|
LoadAnimation(ent, ent->animationState + 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub_080AEF88(ent);
|
||||||
|
sub_080042B8(ent);
|
||||||
|
|
||||||
|
{
|
||||||
|
s32 x = ent->x.HALF.HI;
|
||||||
|
s16 *x2 = (s16 *)&ent->field_0x68;
|
||||||
|
x -= *x2;
|
||||||
|
if (x > 16) {
|
||||||
|
ent->x.HALF.HI = *x2 + 16;
|
||||||
|
ent->field_0xf = 1;
|
||||||
|
}
|
||||||
|
if (x < -16) {
|
||||||
|
ent->x.HALF.HI = *x2 - 16;
|
||||||
|
ent->field_0xf = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
s32 y = ent->y.HALF.HI;
|
||||||
|
s16 *y2 = &ent->field_0x6a;
|
||||||
|
y -= *y2;
|
||||||
|
if (y > 16) {
|
||||||
|
ent->y.HALF.HI = *y2 + 16;
|
||||||
|
ent->field_0xf = 1;
|
||||||
|
}
|
||||||
|
if (y < -16) {
|
||||||
|
ent->y.HALF.HI = *y2 - 16;
|
||||||
|
ent->field_0xf = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var0 = --ent->field_0xf;
|
||||||
|
if (var0 == 0) {
|
||||||
|
ent->action = 3;
|
||||||
|
ent->previousActionFlag = var0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub_0806924C(ent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08069124(Entity* ent) {
|
||||||
|
sub_080042B8(ent);
|
||||||
|
gUnk_08111928[ent->previousActionFlag](ent);
|
||||||
|
sub_0806924C(ent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08069148(Entity* ent) {
|
||||||
|
u32 var0 = Random() & 3;
|
||||||
|
var0 += 3;
|
||||||
|
ent->field_0xf = var0;
|
||||||
|
ent->previousActionFlag = 1;
|
||||||
|
LoadAnimation(ent, ent->animationState + 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08069168(Entity* ent) {
|
||||||
|
if ((s8)ent->frames.all < 0) {
|
||||||
|
ent->previousActionFlag = 2;
|
||||||
|
LoadAnimation(ent, ent->animationState + 12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08069188(Entity* ent) {
|
||||||
|
if (ent->frames.f2 == 0) return;
|
||||||
|
ent->frames.all = 0;
|
||||||
|
|
||||||
|
if (((s8) --ent->field_0xf) != 0) return;
|
||||||
|
ent->previousActionFlag = 3;
|
||||||
|
LoadAnimation(ent, ent->animationState + 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_080691BC(Entity* ent) {
|
||||||
|
if ((s8)ent->frames.all < 0) {
|
||||||
|
ent->action = 1;
|
||||||
|
ent->previousActionFlag = 0;
|
||||||
|
LoadAnimation(ent, ent->animationState + 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_080691E0(Entity* ent) {
|
||||||
|
if (UpdateFuseInteraction(ent) != 0) {
|
||||||
|
ent->action = 1;
|
||||||
|
ent->previousActionFlag = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_080691F8(Entity* ent) {
|
||||||
|
u32 var0 = ent->entityType.parameter1;
|
||||||
|
u32* var1 = gUnk_08111938 + (var0 * 2);
|
||||||
|
sub_0806F1AC(ent, var1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0806920C(Entity* ent) {
|
||||||
|
//TODO: figure out what bitfield flag this is
|
||||||
|
u32 var0 = gLinkState.flags.all & 0x80;
|
||||||
|
u32 var1 = -var0 >> 0x1F;
|
||||||
|
|
||||||
|
if (var1 != ent->field_0x6d) {
|
||||||
|
if (var1 == 0) {
|
||||||
|
sub_08078778(ent);
|
||||||
|
} else {
|
||||||
|
sub_080787A8(ent, ent->field_0x6c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ent->field_0x6d = var1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0806924C(Entity* ent) {
|
||||||
|
s8 itype = ent->interactType;
|
||||||
|
if (itype != 0) {
|
||||||
|
//TODO: figure out what bitfield flag this is
|
||||||
|
if ((gLinkState.flags.all & 0x80) != 0) {
|
||||||
|
if (itype == 2) {
|
||||||
|
ent->action = 4;
|
||||||
|
sub_0806F118(ent);
|
||||||
|
} else {
|
||||||
|
sub_080691F8(ent);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sub_080691F8(ent);
|
||||||
|
sub_080791D0();
|
||||||
|
}
|
||||||
|
PlaySFX(212);
|
||||||
|
ent->interactType = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_080692A0(Entity* ent) {
|
||||||
|
if (ent->action == 0) {
|
||||||
|
ent->action++;
|
||||||
|
ent->spriteSettings.b.ss0 = 1;
|
||||||
|
LoadAnimation(ent, 15);
|
||||||
|
} else {
|
||||||
|
sub_080042B8(ent);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,237 @@
|
||||||
|
#include "global.h"
|
||||||
|
#include "entity.h"
|
||||||
|
#include "room.h"
|
||||||
|
|
||||||
|
extern void sub_0805EA78(Entity*, u32);
|
||||||
|
extern void sub_0805E3A0(Entity*, u32);
|
||||||
|
extern void sub_0807DD50(Entity*);
|
||||||
|
extern void sub_0807DD94(Entity*, u32);
|
||||||
|
extern Entity* sub_0805EB9C(u32, u32);
|
||||||
|
void CopyPosition(Entity*, Entity*);
|
||||||
|
void sub_08068680(Entity*, Entity*);
|
||||||
|
void sub_08068694(Entity*, Entity*);
|
||||||
|
extern void SetGlobalFlag(u32);
|
||||||
|
extern Entity* CreateNPC(u32 subtype,u32 parameter1,u32 parameter2);
|
||||||
|
u32 sub_0806EDC4(Entity* ent);
|
||||||
|
void DeleteThisEntity(void);
|
||||||
|
extern Entity* GetEntityByType(u32, u32);
|
||||||
|
extern void sub_080686C4(Entity*, Entity*);
|
||||||
|
extern void LoadAnimation(Entity*, u32);
|
||||||
|
extern void sub_080042B8(Entity*);
|
||||||
|
extern void sub_0806F62C(Entity*, u32, u32);
|
||||||
|
extern u32 sub_08003FC4(Entity*, u32);
|
||||||
|
extern void PlaySFX(u32);
|
||||||
|
extern void SetTileType(u32, u32, u32);
|
||||||
|
extern void sub_0807BA8C(u16, u32);
|
||||||
|
|
||||||
|
extern Entity gLinkEntity;
|
||||||
|
extern RoomControls gRoomControls;
|
||||||
|
|
||||||
|
extern void (*gUnk_08110BD8[])(Entity* ent);
|
||||||
|
extern u8 gUnk_02033280[];
|
||||||
|
extern u16 gUnk_08110BE0[];
|
||||||
|
|
||||||
|
|
||||||
|
void sub_08066CB4(Entity* ent)
|
||||||
|
{
|
||||||
|
gUnk_08110BD8[ent->action](ent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066CCC(Entity *ent)
|
||||||
|
{
|
||||||
|
ent->action = 1;
|
||||||
|
ent->spriteSettings.b.ss0 = 1;
|
||||||
|
sub_0805EA78(ent, 7);
|
||||||
|
sub_0805E3A0(ent, 2);
|
||||||
|
sub_0807DD50(ent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066CF8(Entity* ent)
|
||||||
|
{
|
||||||
|
sub_0807DD94(ent, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066D04(Entity* ent)
|
||||||
|
{
|
||||||
|
ent->parent = sub_0805EB9C(7, 0x2E);
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066D14(Entity* ent, u32* param_2)
|
||||||
|
{
|
||||||
|
Entity* parent;
|
||||||
|
|
||||||
|
parent = ent->parent;
|
||||||
|
if (parent != NULL)
|
||||||
|
{
|
||||||
|
ent->animationState = parent->animationState;
|
||||||
|
ent->spriteSettings.b.ss0 = 1;
|
||||||
|
CopyPosition(parent, ent);
|
||||||
|
sub_08068680(ent, ent->parent);
|
||||||
|
param_2[5] = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
param_2[5] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066D4C(Entity* ent, u32* param_2)
|
||||||
|
{
|
||||||
|
Entity* parent;
|
||||||
|
|
||||||
|
parent = ent->parent;
|
||||||
|
if (ent->parent != NULL)
|
||||||
|
{
|
||||||
|
CopyPosition(ent, parent);
|
||||||
|
ent->parent->spriteSettings.b.ss0 = 1;
|
||||||
|
ent->parent->animationState = ent->animationState;
|
||||||
|
ent->spriteSettings.b.ss0 = 0;
|
||||||
|
ent->field_0x17 &= 0xFE;
|
||||||
|
sub_08068694(ent, ent->parent);
|
||||||
|
param_2[5] = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
param_2[5] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066D94(Entity* ent)
|
||||||
|
{
|
||||||
|
u32 roomID;
|
||||||
|
Entity* npc;
|
||||||
|
|
||||||
|
SetGlobalFlag(0x1C);
|
||||||
|
npc = CreateNPC(0x2E, 0, 0);
|
||||||
|
if (npc != NULL)
|
||||||
|
{
|
||||||
|
npc->animationState = gLinkEntity.animationState;
|
||||||
|
npc->flags |= 0x20;
|
||||||
|
npc->animationState = sub_0806EDC4(ent);
|
||||||
|
roomID = gRoomControls.roomID;
|
||||||
|
*(u16*)&npc->heldObjectPtr = roomID;
|
||||||
|
CopyPosition(ent, npc);
|
||||||
|
}
|
||||||
|
DeleteThisEntity();
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066DE4(Entity* ent)
|
||||||
|
{
|
||||||
|
Entity* pEVar1;
|
||||||
|
|
||||||
|
pEVar1 = sub_0805EB9C(7, 0x2E);
|
||||||
|
if (pEVar1 != NULL)
|
||||||
|
{
|
||||||
|
CopyPosition(ent, pEVar1);
|
||||||
|
sub_080686C4(ent, pEVar1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066E08(Entity* ent)
|
||||||
|
{
|
||||||
|
LoadAnimation(ent, 0x50);
|
||||||
|
ent->field_0x80 = ent->field_0x58;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066E20(Entity* ent)
|
||||||
|
{
|
||||||
|
LoadAnimation(ent, 0x44);
|
||||||
|
ent->field_0x80 = ent->field_0x58;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066E38(Entity* ent)
|
||||||
|
{
|
||||||
|
LoadAnimation(ent, 0x48);
|
||||||
|
ent->field_0x80 = ent->field_0x58;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066E50(Entity* ent)
|
||||||
|
{
|
||||||
|
LoadAnimation(ent, 0x4C);
|
||||||
|
ent->field_0x80 = ent->field_0x58;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066E68(Entity* ent)
|
||||||
|
{
|
||||||
|
LoadAnimation(ent, 0x54);
|
||||||
|
ent->field_0x80 = ent->field_0x58;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066E80(Entity* ent, u8* param_2)
|
||||||
|
{
|
||||||
|
switch(param_2[0x18])
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
param_2[0x18]++;
|
||||||
|
LoadAnimation(ent, 0x16);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
sub_080042B8(ent);
|
||||||
|
if (ent->frames.all & 1)
|
||||||
|
{
|
||||||
|
param_2[0x18]++;
|
||||||
|
ent->field_0x20 = 0x20000;
|
||||||
|
ent->frames.all &= 0xFE;
|
||||||
|
PlaySFX(0x7C);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
sub_0806F62C(ent, 0x100, 0x80);
|
||||||
|
sub_08003FC4(ent, 0x2000);
|
||||||
|
if (!(ent->frames.all & 1))
|
||||||
|
{
|
||||||
|
sub_080042B8(ent);
|
||||||
|
}
|
||||||
|
if (ent->field_0x20 < 0)
|
||||||
|
{
|
||||||
|
param_2[0x18]++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
sub_0806F62C(ent, 0x100, 0x80);
|
||||||
|
sub_080042B8(ent);
|
||||||
|
if (sub_08003FC4(ent, 0x2000) == 0)
|
||||||
|
{
|
||||||
|
param_2[0x18]++;
|
||||||
|
LoadAnimation(ent, 0x1E);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
sub_080042B8(ent);
|
||||||
|
if (ent->frames.b.f3)
|
||||||
|
{
|
||||||
|
gUnk_02033280[7] |= 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ent->field_0x80 = ent->field_0x58;
|
||||||
|
gUnk_02033280[6] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066F94(void)
|
||||||
|
{
|
||||||
|
u16 uVar1;
|
||||||
|
u16* puVar2;
|
||||||
|
|
||||||
|
puVar2 = gUnk_08110BE0;
|
||||||
|
while (*puVar2 != 0)
|
||||||
|
{
|
||||||
|
uVar1 = *puVar2;
|
||||||
|
puVar2++;
|
||||||
|
SetTileType(16498, uVar1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_08066FB8(void)
|
||||||
|
{
|
||||||
|
u16 uVar1;
|
||||||
|
u16* puVar2;
|
||||||
|
|
||||||
|
puVar2 = gUnk_08110BE0;
|
||||||
|
while (*puVar2 != 0)
|
||||||
|
{
|
||||||
|
uVar1 = *puVar2;
|
||||||
|
puVar2++;
|
||||||
|
sub_0807BA8C(uVar1, 1);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue