mirror of
https://github.com/zeldaret/tmc
synced 2026-05-29 08:43:06 -04:00
Merge branch 'master' into master
This commit is contained in:
+1
-1
@@ -316,7 +316,7 @@ _080193C2:
|
||||
movs r0, #4
|
||||
movs r1, #1
|
||||
movs r3, #9
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
cmp r0, #0
|
||||
beq _080193FA
|
||||
ldr r2, _0801940C @ =gLinkState
|
||||
|
||||
+1
-1
@@ -1006,7 +1006,7 @@ _0806F444:
|
||||
movs r1, #0
|
||||
movs r2, #0
|
||||
movs r3, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
cmp r0, #0
|
||||
beq _0806F4B4
|
||||
str r5, [r0, #0x54]
|
||||
|
||||
+1
-1
@@ -3130,7 +3130,7 @@ sub_08071EB0: @ 0x08071EB0
|
||||
bl sub_08077B2C
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xe
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
cmp r0, #0
|
||||
beq _08071F12
|
||||
ldr r3, _08071EE4 @ =gLinkState
|
||||
|
||||
+5
-5
@@ -4597,7 +4597,7 @@ _080754F2:
|
||||
bne _08075538
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xf
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
cmp r5, #0xf
|
||||
bne _08075530
|
||||
adds r1, r7, #0
|
||||
@@ -4976,7 +4976,7 @@ _080757D4:
|
||||
beq _08075816
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x14
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
adds r2, r0, #0
|
||||
cmp r2, #0
|
||||
beq _08075816
|
||||
@@ -6040,7 +6040,7 @@ _08076036:
|
||||
bls _08076076
|
||||
adds r0, r6, #0
|
||||
movs r1, #2
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08076076
|
||||
@@ -6174,7 +6174,7 @@ _08076138:
|
||||
_0807614A:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x13
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
adds r3, r0, #0
|
||||
cmp r3, #0
|
||||
bne _08076162
|
||||
@@ -7319,7 +7319,7 @@ _080769CC:
|
||||
bl sub_08077DF4
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xc
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
beq _08076A70
|
||||
|
||||
+4
-4
@@ -56,7 +56,7 @@ _08076CD2:
|
||||
beq _08076CE2
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x12
|
||||
bl sub_08077C3C
|
||||
bl CreatePlayerBomb
|
||||
_08076CE2:
|
||||
adds r0, r4, #0
|
||||
bl UpdateItemAnim
|
||||
@@ -281,7 +281,7 @@ _08076E7A:
|
||||
movs r1, #0
|
||||
movs r2, #0
|
||||
movs r3, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _08076EC6
|
||||
@@ -446,7 +446,7 @@ _08076FAC:
|
||||
movs r1, #0
|
||||
movs r2, #0
|
||||
movs r3, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
cmp r0, #0
|
||||
bne _08076FF6
|
||||
b _08077110
|
||||
@@ -521,7 +521,7 @@ _08077060:
|
||||
movs r0, #0x11
|
||||
movs r1, #0
|
||||
movs r3, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
_0807708C:
|
||||
ldr r0, _080770B0 @ =gLinkState
|
||||
ldr r0, [r0, #0x30]
|
||||
|
||||
-7033
File diff suppressed because it is too large
Load Diff
+6282
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -578,7 +578,7 @@ _080A2E9C:
|
||||
movs r0, #0x15
|
||||
movs r1, #0
|
||||
movs r2, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
adds r1, r0, #0
|
||||
str r1, [r4, #0x54]
|
||||
cmp r1, #0
|
||||
@@ -966,7 +966,7 @@ _080A31D6:
|
||||
movs r0, #0x15
|
||||
movs r1, #1
|
||||
movs r2, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
str r0, [r4, #0x54]
|
||||
cmp r0, #0
|
||||
beq _080A3200
|
||||
|
||||
+1
-1
@@ -16027,7 +16027,7 @@ sub_080ACECC: @ 0x080ACECC
|
||||
movs r0, #0x10
|
||||
movs r2, #0
|
||||
movs r3, #0
|
||||
bl sub_08077CB8
|
||||
bl CreatePlayerItem
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _080ACF0C
|
||||
|
||||
-139
@@ -1,139 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start JailBars
|
||||
JailBars: @ 0x080A08AC
|
||||
push {lr}
|
||||
ldr r2, _080A08C0 @ =gUnk_08124950
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_080A08C0: .4byte gUnk_08124950
|
||||
|
||||
thumb_func_start sub_080A08C4
|
||||
sub_080A08C4: @ 0x080A08C4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
bne _080A08E2
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_080A0960
|
||||
b _080A08F6
|
||||
_080A08E2:
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl InitializeAnimation
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_080A0960
|
||||
_080A08F6:
|
||||
ldrb r0, [r4, #0x18]
|
||||
movs r1, #3
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080A0910
|
||||
sub_080A0910: @ 0x080A0910
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x86
|
||||
ldrh r0, [r0]
|
||||
bl CheckFlags
|
||||
cmp r0, #0
|
||||
beq _080A0932
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_080A0960
|
||||
ldr r0, _080A0934 @ =0x0000010B
|
||||
bl PlaySFX
|
||||
_080A0932:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_080A0934: .4byte 0x0000010B
|
||||
|
||||
thumb_func_start sub_080A0938
|
||||
sub_080A0938: @ 0x080A0938
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl GetNextFrame
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080A095A
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl InitializeAnimation
|
||||
_080A095A:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start nullsub_127
|
||||
nullsub_127: @ 0x080A095C
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080A0960
|
||||
sub_080A0960: @ 0x080A0960
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r5, _080A0998 @ =gUnk_08124960
|
||||
cmp r1, #1
|
||||
bne _080A096C
|
||||
ldr r5, _080A099C @ =gUnk_0812497A
|
||||
_080A096C:
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r4, r0]
|
||||
ldr r2, _080A09A0 @ =gRoomControls
|
||||
ldrh r0, [r2, #6]
|
||||
subs r1, r1, r0
|
||||
asrs r1, r1, #4
|
||||
movs r3, #0x3f
|
||||
ands r1, r3
|
||||
movs r6, #0x32
|
||||
ldrsh r0, [r4, r6]
|
||||
ldrh r2, [r2, #8]
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r1, r0
|
||||
adds r0, r5, #0
|
||||
movs r2, #1
|
||||
bl sub_0801AF18
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_080A0998: .4byte gUnk_08124960
|
||||
_080A099C: .4byte gUnk_0812497A
|
||||
_080A09A0: .4byte gRoomControls
|
||||
-453
@@ -1,453 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start Leever
|
||||
Leever: @ 0x0801FC08
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r1, _0801FC24 @ =gUnk_080CA49C
|
||||
bl EnemyFunctionHandler
|
||||
movs r3, #0x10
|
||||
rsbs r3, r3, #0
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
movs r2, #1
|
||||
bl SetChildOffset
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0801FC24: .4byte gUnk_080CA49C
|
||||
|
||||
thumb_func_start sub_0801FC28
|
||||
sub_0801FC28: @ 0x0801FC28
|
||||
push {lr}
|
||||
ldr r2, _0801FC3C @ =gUnk_080CA4B4
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_0801FC3C: .4byte gUnk_080CA4B4
|
||||
|
||||
thumb_func_start sub_0801FC40
|
||||
sub_0801FC40: @ 0x0801FC40
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x41
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0x80
|
||||
bne _0801FC5C
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #3
|
||||
bne _0801FC6E
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x74
|
||||
movs r0, #1
|
||||
strh r0, [r1]
|
||||
b _0801FC6E
|
||||
_0801FC5C:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x43
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0801FC6E
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x1c
|
||||
bl sub_0804A9FC
|
||||
_0801FC6E:
|
||||
ldr r1, _0801FC78 @ =gUnk_080CA49C
|
||||
adds r0, r4, #0
|
||||
bl sub_0804AA30
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0801FC78: .4byte gUnk_080CA49C
|
||||
|
||||
thumb_func_start sub_0801FC7C
|
||||
sub_0801FC7C: @ 0x0801FC7C
|
||||
push {lr}
|
||||
adds r1, r0, #0
|
||||
ldrb r0, [r1, #0xa]
|
||||
cmp r0, #0
|
||||
bne _0801FC8E
|
||||
adds r0, r1, #0
|
||||
bl sub_0804A7D4
|
||||
b _0801FC98
|
||||
_0801FC8E:
|
||||
adds r0, r1, #0
|
||||
movs r1, #0xf1
|
||||
movs r2, #0
|
||||
bl CreateDeathFx
|
||||
_0801FC98:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0801FC9C
|
||||
sub_0801FC9C: @ 0x0801FC9C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0804A720
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
bl Random
|
||||
strb r0, [r4, #0xe]
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_0801FCB0
|
||||
sub_0801FCB0: @ 0x0801FCB0
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
ldrb r0, [r5, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r5, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0801FD28
|
||||
bl Random
|
||||
movs r1, #0x1f
|
||||
ands r1, r0
|
||||
adds r0, r5, #0
|
||||
bl sub_0801FE68
|
||||
cmp r0, #0
|
||||
beq _0801FD1C
|
||||
movs r0, #2
|
||||
strb r0, [r5, #0xc]
|
||||
ldrb r1, [r5, #0x18]
|
||||
subs r0, #6
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r5, #0x18]
|
||||
ldr r0, _0801FD14 @ =gUnk_020000B0
|
||||
ldr r1, [r0]
|
||||
adds r0, r5, #0
|
||||
bl GetFacingDirection
|
||||
adds r4, r0, #0
|
||||
bl Random
|
||||
ldr r2, _0801FD18 @ =gUnk_080CA4C8
|
||||
movs r1, #1
|
||||
ands r1, r0
|
||||
adds r1, r1, r2
|
||||
ldrb r0, [r1]
|
||||
adds r0, r0, r4
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
strb r0, [r5, #0x15]
|
||||
adds r0, r5, #0
|
||||
movs r1, #0
|
||||
bl InitializeAnimation
|
||||
adds r0, r5, #0
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
b _0801FD28
|
||||
.align 2, 0
|
||||
_0801FD14: .4byte gUnk_020000B0
|
||||
_0801FD18: .4byte gUnk_080CA4C8
|
||||
_0801FD1C:
|
||||
bl Random
|
||||
movs r1, #0x18
|
||||
ands r0, r1
|
||||
adds r0, #8
|
||||
strb r0, [r5, #0xe]
|
||||
_0801FD28:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0801FD2C
|
||||
sub_0801FD2C: @ 0x0801FD2C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl GetNextFrame
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x5a
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0801FD66
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
bne _0801FD54
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x74
|
||||
movs r0, #0xb4
|
||||
b _0801FD5A
|
||||
_0801FD54:
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x74
|
||||
movs r0, #0x6e
|
||||
_0801FD5A:
|
||||
strh r0, [r1]
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl InitializeAnimation
|
||||
b _0801FD7C
|
||||
_0801FD66:
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0801FD7C
|
||||
movs r0, #0xfe
|
||||
ands r0, r1
|
||||
strb r0, [r2]
|
||||
ldrb r0, [r4, #0x10]
|
||||
movs r1, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
_0801FD7C:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0801FD80
|
||||
sub_0801FD80: @ 0x0801FD80
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0801FED4
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x74
|
||||
ldrh r0, [r1]
|
||||
subs r0, #1
|
||||
strh r0, [r1]
|
||||
lsls r0, r0, #0x10
|
||||
cmp r0, #0
|
||||
bne _0801FDB2
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl InitializeAnimation
|
||||
_0801FDB2:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_0801FDB4
|
||||
sub_0801FDB4: @ 0x0801FDB4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0801FED4
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0801FDE0
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0xf0
|
||||
strb r0, [r4, #0xe]
|
||||
ldrb r1, [r4, #0x18]
|
||||
subs r0, #0xf4
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
_0801FDE0:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_0801FDE4
|
||||
sub_0801FDE4: @ 0x0801FDE4
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r6, r0, #0
|
||||
adds r4, r1, #0
|
||||
adds r5, r2, #0
|
||||
ldr r7, _0801FE04 @ =gUnk_020000B0
|
||||
ldr r0, [r7]
|
||||
adds r0, #0x38
|
||||
ldrb r2, [r0]
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
bl sub_080002D4
|
||||
cmp r0, #0
|
||||
beq _0801FE34
|
||||
b _0801FE5C
|
||||
.align 2, 0
|
||||
_0801FE04: .4byte gUnk_020000B0
|
||||
_0801FE08:
|
||||
movs r0, #0x10
|
||||
rsbs r0, r0, #0
|
||||
adds r1, r0, #0
|
||||
ands r4, r1
|
||||
adds r0, r4, #0
|
||||
adds r0, #8
|
||||
strh r0, [r6, #0x2e]
|
||||
ands r5, r1
|
||||
adds r0, r5, #0
|
||||
adds r0, #8
|
||||
strh r0, [r6, #0x32]
|
||||
ldr r0, _0801FE30 @ =gUnk_020000B0
|
||||
ldr r0, [r0]
|
||||
adds r0, #0x38
|
||||
ldrb r1, [r0]
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x38
|
||||
strb r1, [r0]
|
||||
movs r0, #1
|
||||
b _0801FE5E
|
||||
.align 2, 0
|
||||
_0801FE30: .4byte gUnk_020000B0
|
||||
_0801FE34:
|
||||
ldr r0, [r7]
|
||||
adds r0, #0x38
|
||||
ldrb r2, [r0]
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
bl sub_080002BC
|
||||
adds r3, r0, #0
|
||||
ldr r1, _0801FE60 @ =gUnk_080CA4CA
|
||||
ldrh r0, [r1]
|
||||
ldr r2, _0801FE64 @ =0x0000FFFF
|
||||
cmp r0, r2
|
||||
beq _0801FE5C
|
||||
_0801FE4E:
|
||||
ldrh r0, [r1]
|
||||
adds r1, #2
|
||||
cmp r0, r3
|
||||
beq _0801FE08
|
||||
ldrh r0, [r1]
|
||||
cmp r0, r2
|
||||
bne _0801FE4E
|
||||
_0801FE5C:
|
||||
movs r0, #0
|
||||
_0801FE5E:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0801FE60: .4byte gUnk_080CA4CA
|
||||
_0801FE64: .4byte 0x0000FFFF
|
||||
|
||||
thumb_func_start sub_0801FE68
|
||||
sub_0801FE68: @ 0x0801FE68
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r7, r0, #0
|
||||
adds r6, r1, #0
|
||||
movs r1, #1
|
||||
bl sub_08049FDC
|
||||
cmp r0, #0
|
||||
bne _0801FE82
|
||||
_0801FE7E:
|
||||
movs r0, #0
|
||||
b _0801FEC4
|
||||
_0801FE82:
|
||||
ldr r0, _0801FECC @ =gUnk_020000B0
|
||||
ldr r0, [r0]
|
||||
ldr r5, [r0, #0x2c]
|
||||
ldr r4, [r0, #0x30]
|
||||
ldr r1, _0801FED0 @ =gSineTable
|
||||
lsls r0, r6, #4
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
ldrsh r0, [r0, r2]
|
||||
lsls r0, r0, #0xb
|
||||
mov sb, r0
|
||||
lsls r0, r6, #4
|
||||
adds r0, #0x80
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
lsls r0, r0, #0xb
|
||||
mov r8, r0
|
||||
movs r6, #0
|
||||
_0801FEA8:
|
||||
add r5, sb
|
||||
mov r2, r8
|
||||
subs r4, r4, r2
|
||||
asrs r1, r5, #0x10
|
||||
asrs r2, r4, #0x10
|
||||
adds r0, r7, #0
|
||||
bl sub_0801FDE4
|
||||
cmp r0, #0
|
||||
beq _0801FE7E
|
||||
adds r6, #1
|
||||
cmp r6, #7
|
||||
bls _0801FEA8
|
||||
movs r0, #1
|
||||
_0801FEC4:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0801FECC: .4byte gUnk_020000B0
|
||||
_0801FED0: .4byte gSineTable
|
||||
|
||||
thumb_func_start sub_0801FED4
|
||||
sub_0801FED4: @ 0x0801FED4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r1, #1
|
||||
bl sub_08049FDC
|
||||
cmp r0, #0
|
||||
bne _0801FEEA
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x74
|
||||
movs r0, #1
|
||||
strh r0, [r1]
|
||||
_0801FEEA:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r0, [r0]
|
||||
movs r2, #0xf
|
||||
adds r1, r2, #0
|
||||
ands r1, r0
|
||||
lsls r1, r1, #5
|
||||
strh r1, [r4, #0x24]
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
bne _0801FF28
|
||||
ldrb r1, [r4, #0xf]
|
||||
adds r0, r1, #1
|
||||
strb r0, [r4, #0xf]
|
||||
adds r0, r2, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0801FF4E
|
||||
ldr r0, _0801FF24 @ =gUnk_020000B0
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl sub_0800132C
|
||||
adds r1, r0, #0
|
||||
adds r0, r4, #0
|
||||
bl sub_08004596
|
||||
b _0801FF4E
|
||||
.align 2, 0
|
||||
_0801FF24: .4byte gUnk_020000B0
|
||||
_0801FF28:
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x40
|
||||
strh r0, [r4, #0x24]
|
||||
ldrb r1, [r4, #0xf]
|
||||
adds r0, r1, #1
|
||||
strb r0, [r4, #0xf]
|
||||
movs r0, #7
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0801FF4E
|
||||
ldr r0, _0801FF58 @ =gUnk_020000B0
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl sub_0800132C
|
||||
adds r1, r0, #0
|
||||
adds r0, r4, #0
|
||||
bl sub_08004596
|
||||
_0801FF4E:
|
||||
adds r0, r4, #0
|
||||
bl sub_080AEF88
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0801FF58: .4byte gUnk_020000B0
|
||||
-386
@@ -1,386 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start Melari
|
||||
Melari: @ 0x080686D4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08068700
|
||||
ldr r0, _080686FC @ =gUnk_08111530
|
||||
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
|
||||
b _08068706
|
||||
.align 2, 0
|
||||
_080686FC: .4byte gUnk_08111530
|
||||
_08068700:
|
||||
adds r0, r4, #0
|
||||
bl sub_08068780
|
||||
_08068706:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08068708
|
||||
sub_08068708: @ 0x08068708
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r1, _0806872C @ =gUnk_08111520
|
||||
bl LoadExtraSpriteData
|
||||
cmp r0, #0
|
||||
beq _08068728
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl InitializeAnimation
|
||||
adds r0, r4, #0
|
||||
bl sub_08078778
|
||||
_08068728:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0806872C: .4byte gUnk_08111520
|
||||
|
||||
thumb_func_start sub_08068730
|
||||
sub_08068730: @ 0x08068730
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r1, #0x20
|
||||
movs r2, #0x20
|
||||
bl sub_0806ED9C
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
blt _08068762
|
||||
ldrb r0, [r4, #0xf]
|
||||
cmp r0, #0
|
||||
bne _0806875E
|
||||
movs r0, #0x10
|
||||
strb r0, [r4, #0xf]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x58
|
||||
ldrb r0, [r0]
|
||||
cmp r0, r1
|
||||
beq _08068762
|
||||
adds r0, r4, #0
|
||||
bl InitializeAnimation
|
||||
b _08068762
|
||||
_0806875E:
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xf]
|
||||
_08068762:
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x39
|
||||
movs r0, #0
|
||||
ldrsb r0, [r1, r0]
|
||||
cmp r0, #0
|
||||
beq _0806877E
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r4, #0xe]
|
||||
movs r1, #0x90
|
||||
lsls r1, r1, #5
|
||||
adds r0, r0, r1
|
||||
bl TextboxNoOverlapFollow
|
||||
_0806877E:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08068780
|
||||
sub_08068780: @ 0x08068780
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
ldrb r0, [r5, #0xc]
|
||||
cmp r0, #1
|
||||
beq _080687D0
|
||||
cmp r0, #1
|
||||
bgt _08068794
|
||||
cmp r0, #0
|
||||
beq _0806879A
|
||||
b _0806880E
|
||||
_08068794:
|
||||
cmp r0, #2
|
||||
beq _08068800
|
||||
b _0806880E
|
||||
_0806879A:
|
||||
ldr r1, _080687CC @ =gUnk_08111520
|
||||
adds r0, r5, #0
|
||||
bl LoadExtraSpriteData
|
||||
cmp r0, #0
|
||||
beq _0806887A
|
||||
movs r2, #1
|
||||
movs r0, #1
|
||||
strb r0, [r5, #0xc]
|
||||
ldrb r1, [r5, #0x18]
|
||||
subs r0, #5
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strb r0, [r5, #0x18]
|
||||
ldrb r0, [r5, #0xa]
|
||||
strb r0, [r5, #0x14]
|
||||
adds r0, r5, #0
|
||||
movs r1, #2
|
||||
bl sub_0805E3A0
|
||||
adds r0, r5, #0
|
||||
bl sub_0807DD50
|
||||
b _0806880E
|
||||
.align 2, 0
|
||||
_080687CC: .4byte gUnk_08111520
|
||||
_080687D0:
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x39
|
||||
movs r1, #0
|
||||
ldrsb r1, [r2, r1]
|
||||
cmp r1, #2
|
||||
bne _080687EA
|
||||
movs r0, #0
|
||||
strb r1, [r5, #0xc]
|
||||
strb r0, [r2]
|
||||
adds r0, r5, #0
|
||||
bl sub_0806F118
|
||||
b _0806880E
|
||||
_080687EA:
|
||||
adds r0, r5, #0
|
||||
movs r1, #0
|
||||
bl sub_0807DDAC
|
||||
adds r0, r5, #0
|
||||
bl sub_0807DDE4
|
||||
adds r0, r5, #0
|
||||
bl GetNextFrame
|
||||
b _0806880E
|
||||
_08068800:
|
||||
adds r0, r5, #0
|
||||
bl UpdateFuseInteraction
|
||||
cmp r0, #0
|
||||
beq _0806880E
|
||||
movs r0, #1
|
||||
strb r0, [r5, #0xc]
|
||||
_0806880E:
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x5a
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x40
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0806887A
|
||||
movs r0, #0xbf
|
||||
ands r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r5, #0
|
||||
bl sub_080040A8
|
||||
cmp r0, #0
|
||||
bne _08068848
|
||||
ldr r4, _08068844 @ =gUnk_0811153E
|
||||
bl Random
|
||||
movs r1, #3
|
||||
bl __modsi3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r4
|
||||
ldrh r0, [r0]
|
||||
bl PlaySFX
|
||||
b _0806885E
|
||||
.align 2, 0
|
||||
_08068844: .4byte gUnk_0811153E
|
||||
_08068848:
|
||||
ldr r4, _0806887C @ =gUnk_08111538
|
||||
bl Random
|
||||
movs r1, #3
|
||||
bl __modsi3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r4
|
||||
ldrh r0, [r0]
|
||||
bl sub_08004488
|
||||
_0806885E:
|
||||
adds r0, r5, #0
|
||||
movs r1, #0x3d
|
||||
movs r2, #0x20
|
||||
bl CreateFx
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _0806887A
|
||||
movs r2, #0xc0
|
||||
lsls r2, r2, #0xd
|
||||
ldr r3, _08068880 @ =0xFFF60000
|
||||
adds r0, r5, #0
|
||||
bl PositionRelative
|
||||
_0806887A:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0806887C: .4byte gUnk_08111538
|
||||
_08068880: .4byte 0xFFF60000
|
||||
|
||||
thumb_func_start sub_08068884
|
||||
sub_08068884: @ 0x08068884
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0801E99C
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x68
|
||||
strb r0, [r1]
|
||||
ldrb r1, [r1]
|
||||
adds r0, r4, #0
|
||||
bl sub_08078784
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start Melari_Head
|
||||
Melari_Head: @ 0x0806889C
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r4, [r0]
|
||||
movs r0, #0xc1
|
||||
rsbs r0, r0, #0
|
||||
ands r4, r0
|
||||
ldrb r2, [r5, #0x1e]
|
||||
adds r0, r5, #0
|
||||
movs r1, #1
|
||||
bl SetExtraSpriteFrame
|
||||
movs r0, #0x20
|
||||
ands r0, r4
|
||||
cmp r0, #0
|
||||
beq _080688E2
|
||||
movs r0, #0xe1
|
||||
rsbs r0, r0, #0
|
||||
ands r4, r0
|
||||
adds r0, r5, #0
|
||||
movs r1, #0
|
||||
adds r2, r4, #0
|
||||
bl SetExtraSpriteFrame
|
||||
adds r0, r5, #0
|
||||
movs r1, #2
|
||||
movs r2, #0xff
|
||||
bl SetExtraSpriteFrame
|
||||
adds r0, r5, #0
|
||||
movs r1, #1
|
||||
movs r2, #0
|
||||
bl SetSpriteSubEntryOffsetData1
|
||||
b _08068906
|
||||
_080688E2:
|
||||
adds r0, r5, #0
|
||||
movs r1, #0
|
||||
movs r2, #0xff
|
||||
bl SetExtraSpriteFrame
|
||||
movs r0, #0xe1
|
||||
rsbs r0, r0, #0
|
||||
ands r4, r0
|
||||
adds r0, r5, #0
|
||||
movs r1, #2
|
||||
adds r2, r4, #0
|
||||
bl SetExtraSpriteFrame
|
||||
adds r0, r5, #0
|
||||
movs r1, #1
|
||||
movs r2, #2
|
||||
bl SetSpriteSubEntryOffsetData2
|
||||
_08068906:
|
||||
adds r0, r5, #0
|
||||
bl sub_0807000C
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08068910
|
||||
sub_08068910: @ 0x08068910
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xe]
|
||||
cmp r0, #0
|
||||
beq _08068920
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
b _08068960
|
||||
_08068920:
|
||||
movs r0, #0x10
|
||||
strb r0, [r4, #0xe]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x20
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08068960
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x30
|
||||
movs r2, #0x30
|
||||
bl sub_0806EDD8
|
||||
adds r2, r0, #0
|
||||
cmp r2, #0
|
||||
bge _08068944
|
||||
movs r2, #0x10
|
||||
_08068944:
|
||||
adds r0, r2, #0
|
||||
bl sub_0806F5A4
|
||||
adds r2, r0, #0
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x58
|
||||
ldrb r1, [r0]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r1, r0
|
||||
adds r1, r1, r2
|
||||
adds r0, r4, #0
|
||||
bl InitializeAnimation
|
||||
_08068960:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08068964
|
||||
sub_08068964: @ 0x08068964
|
||||
push {lr}
|
||||
movs r0, #0x35
|
||||
movs r1, #0
|
||||
movs r2, #3
|
||||
bl sub_080A7C18
|
||||
movs r0, #0x35
|
||||
movs r1, #2
|
||||
bl sub_0807CAA0
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start Melari_Fusion
|
||||
Melari_Fusion: @ 0x0806897C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #0
|
||||
bne _080689B4
|
||||
ldr r1, _080689B0 @ =gUnk_08111520
|
||||
adds r0, r4, #0
|
||||
bl LoadExtraSpriteData
|
||||
cmp r0, #0
|
||||
beq _080689BA
|
||||
ldrb r0, [r4, #0xc]
|
||||
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]
|
||||
adds r0, r4, #0
|
||||
movs r1, #6
|
||||
bl InitializeAnimation
|
||||
b _080689BA
|
||||
.align 2, 0
|
||||
_080689B0: .4byte gUnk_08111520
|
||||
_080689B4:
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
_080689BA:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start nullsub_502
|
||||
nullsub_502: @ 0x080689BC
|
||||
bx lr
|
||||
.align 2, 0
|
||||
@@ -0,0 +1,72 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r1, #1
|
||||
bl sub_08049FDC
|
||||
cmp r0, #0
|
||||
bne _0801FEEA
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x74
|
||||
movs r0, #1
|
||||
strh r0, [r1]
|
||||
_0801FEEA:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r0, [r0]
|
||||
movs r2, #0xf
|
||||
adds r1, r2, #0
|
||||
ands r1, r0
|
||||
lsls r1, r1, #5
|
||||
strh r1, [r4, #0x24]
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
bne _0801FF28
|
||||
ldrb r1, [r4, #0xf]
|
||||
adds r0, r1, #1
|
||||
strb r0, [r4, #0xf]
|
||||
adds r0, r2, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0801FF4E
|
||||
ldr r0, _0801FF24 @ =gUnk_020000B0
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl sub_0800132C
|
||||
adds r1, r0, #0
|
||||
adds r0, r4, #0
|
||||
bl sub_08004596
|
||||
b _0801FF4E
|
||||
.align 2, 0
|
||||
_0801FF24: .4byte gUnk_020000B0
|
||||
_0801FF28:
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x40
|
||||
strh r0, [r4, #0x24]
|
||||
ldrb r1, [r4, #0xf]
|
||||
adds r0, r1, #1
|
||||
strb r0, [r4, #0xf]
|
||||
movs r0, #7
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0801FF4E
|
||||
ldr r0, _0801FF58 @ =gUnk_020000B0
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl sub_0800132C
|
||||
adds r1, r0, #0
|
||||
adds r0, r4, #0
|
||||
bl sub_08004596
|
||||
_0801FF4E:
|
||||
adds r0, r4, #0
|
||||
bl sub_080AEF88
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0801FF58: .4byte gUnk_020000B0
|
||||
.syntax divided
|
||||
@@ -0,0 +1,104 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r4, r0, #0
|
||||
mov r8, r1
|
||||
ldr r3, _08077D94 @ =gLinkState
|
||||
movs r7, #8
|
||||
adds r1, r7, #0
|
||||
mov r0, r8
|
||||
asrs r1, r0
|
||||
ldrb r2, [r3, #0xa]
|
||||
adds r0, r1, #0
|
||||
orrs r0, r2
|
||||
strb r0, [r3, #0xa]
|
||||
ldrb r0, [r3, #0xb]
|
||||
orrs r1, r0
|
||||
strb r1, [r3, #0xb]
|
||||
ldr r0, _08077D98 @ =gLinkEntity
|
||||
ldrb r0, [r0, #0x14]
|
||||
strb r0, [r4, #0xa]
|
||||
ldrb r0, [r4, #4]
|
||||
cmp r0, #0
|
||||
bne _08077D6A
|
||||
adds r0, #1
|
||||
strb r0, [r4, #4]
|
||||
_08077D6A:
|
||||
ldrb r2, [r4, #1]
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r2
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08077D9C @ =gUnk_0811BE48
|
||||
adds r5, r0, r1
|
||||
ldrh r0, [r5, #4]
|
||||
cmp r0, #0
|
||||
beq _08077DCC
|
||||
ldr r0, [r3, #0x30]
|
||||
ands r0, r7
|
||||
cmp r0, #0
|
||||
beq _08077DC4
|
||||
cmp r2, #0xd
|
||||
beq _08077DB2
|
||||
cmp r2, #0xd
|
||||
bgt _08077DA0
|
||||
cmp r2, #1
|
||||
beq _08077DAC
|
||||
b _08077DB4
|
||||
.align 2, 0
|
||||
_08077D94: .4byte gLinkState
|
||||
_08077D98: .4byte gLinkEntity
|
||||
_08077D9C: .4byte gUnk_0811BE48
|
||||
_08077DA0:
|
||||
cmp r2, #0x1b
|
||||
bne _08077DB4
|
||||
ldr r6, _08077DA8 @ =0x00000948
|
||||
b _08077DB4
|
||||
.align 2, 0
|
||||
_08077DA8: .4byte 0x00000948
|
||||
_08077DAC:
|
||||
movs r6, #0x81
|
||||
lsls r6, r6, #3
|
||||
b _08077DB4
|
||||
_08077DB2:
|
||||
ldr r6, _08077DC0 @ =0x0000040C
|
||||
_08077DB4:
|
||||
adds r0, r4, #0
|
||||
adds r1, r6, #0
|
||||
bl sub_08077DF4
|
||||
b _08077DCC
|
||||
.align 2, 0
|
||||
_08077DC0: .4byte 0x0000040C
|
||||
_08077DC4:
|
||||
ldrh r1, [r5, #4]
|
||||
adds r0, r4, #0
|
||||
bl sub_08077DF4
|
||||
_08077DCC:
|
||||
ldrb r0, [r5, #6]
|
||||
strb r0, [r4, #0xf]
|
||||
ldrb r0, [r5, #7]
|
||||
cmp r0, #0
|
||||
beq _08077DE8
|
||||
ldr r2, _08077DF0 @ =gLinkState
|
||||
movs r0, #8
|
||||
mov r1, r8
|
||||
asrs r0, r1
|
||||
lsls r1, r0, #4
|
||||
orrs r0, r1
|
||||
ldrb r1, [r2, #4]
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #4]
|
||||
_08077DE8:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08077DF0: .4byte gLinkState
|
||||
.syntax divided
|
||||
@@ -0,0 +1,34 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {lr}
|
||||
ldr r2, _08077F34 @ =gStats
|
||||
ldrb r3, [r0, #1]
|
||||
ldrb r0, [r2, #0xc]
|
||||
cmp r0, r3
|
||||
bne _08077F38
|
||||
movs r2, #1
|
||||
b _08077F42
|
||||
.align 2, 0
|
||||
_08077F34: .4byte gStats
|
||||
_08077F38:
|
||||
ldrb r0, [r2, #0xd]
|
||||
movs r2, #0
|
||||
cmp r0, r3
|
||||
bne _08077F42
|
||||
movs r2, #2
|
||||
_08077F42:
|
||||
adds r0, r2, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08077F4C
|
||||
movs r0, #1
|
||||
_08077F4C:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
-130
@@ -1,130 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start ObjectAF
|
||||
ObjectAF: @ 0x080A058C
|
||||
push {lr}
|
||||
ldr r2, _080A05A0 @ =gUnk_081248C4
|
||||
ldrb r1, [r0, #0xc]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_080A05A0: .4byte gUnk_081248C4
|
||||
|
||||
thumb_func_start sub_080A05A4
|
||||
sub_080A05A4: @ 0x080A05A4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r1, [r4, #0xa]
|
||||
cmp r1, #2
|
||||
beq _080A05D2
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
subs r0, #9
|
||||
ands r0, r1
|
||||
movs r1, #6
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r4, #0
|
||||
bl sub_080A0640
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl InitializeAnimation
|
||||
b _080A05F0
|
||||
_080A05D2:
|
||||
movs r0, #0
|
||||
strb r1, [r4, #0xc]
|
||||
ldrh r1, [r4, #0x32]
|
||||
adds r1, #1
|
||||
strh r1, [r4, #0x32]
|
||||
strh r0, [r4, #0x36]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x63
|
||||
ldrb r0, [r1]
|
||||
subs r0, #1
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
movs r1, #3
|
||||
bl InitializeAnimation
|
||||
_080A05F0:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080A05F4
|
||||
sub_080A05F4: @ 0x080A05F4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r0, [r4, #0x50]
|
||||
cmp r0, #0
|
||||
bne _080A060C
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0xc]
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl InitializeAnimation
|
||||
b _080A0622
|
||||
_080A060C:
|
||||
ldr r0, [r0, #4]
|
||||
cmp r0, #0
|
||||
bne _080A0616
|
||||
bl DeleteThisEntity
|
||||
_080A0616:
|
||||
adds r0, r4, #0
|
||||
bl sub_080A0640
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
_080A0622:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_080A0624
|
||||
sub_080A0624: @ 0x080A0624
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl GetNextFrame
|
||||
adds r4, #0x5a
|
||||
ldrb r1, [r4]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080A063C
|
||||
bl DeleteThisEntity
|
||||
_080A063C:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080A0640
|
||||
sub_080A0640: @ 0x080A0640
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #0
|
||||
bne _080A065E
|
||||
ldr r0, [r4, #0x50]
|
||||
ldr r0, [r0, #0x64]
|
||||
ldr r0, [r0, #0x10]
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #0xc
|
||||
adds r1, r4, #0
|
||||
movs r2, #0
|
||||
bl PositionRelative
|
||||
b _080A0666
|
||||
_080A065E:
|
||||
ldr r0, [r4, #0x50]
|
||||
adds r1, r4, #0
|
||||
bl CopyPosition
|
||||
_080A0666:
|
||||
movs r0, #0
|
||||
strh r0, [r4, #0x36]
|
||||
pop {r4, pc}
|
||||
+3
-2
@@ -4,8 +4,6 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
|
||||
extern u32 GetNextFunction(Entity*);
|
||||
|
||||
extern void Octorok(Entity*);
|
||||
extern void Chuchu(Entity*);
|
||||
extern void Leever(Entity*);
|
||||
@@ -109,4 +107,7 @@ extern void GyorgFemaleMouth(Entity*);
|
||||
extern void Enemy64(Entity*);
|
||||
extern void TreeItem(Entity*);
|
||||
extern void Enemy66(Entity*);
|
||||
|
||||
extern u32 GetNextFunction(Entity*);
|
||||
extern void EnemyFunctionHandler(Entity*, void (*const func[])(Entity*));
|
||||
#endif
|
||||
+14
-3
@@ -5,6 +5,7 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "position.h"
|
||||
#include "link.h"
|
||||
|
||||
// Identified - to be sorted into header files
|
||||
extern u32 Random(void);
|
||||
@@ -23,7 +24,10 @@ extern u32* StartCutscene(Entity*, u8*);
|
||||
extern void ResolveEntityOnTop(Entity*, Entity*);
|
||||
extern void EnemyFunctionHandler(Entity*, void (*const funcs[])(Entity*));
|
||||
extern void SetChildOffset(Entity*, u32, u32, u32);
|
||||
|
||||
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
Entity* CreatePlayerItem(u32, u32, u32, u32);
|
||||
extern Entity* GetEmptyEntity(void);
|
||||
extern u32 GetTileTypeByPos(s32 x, s32 y, u32 layer);
|
||||
|
||||
// Unidentified
|
||||
extern void sub_0806ED78(Entity*);
|
||||
@@ -49,7 +53,6 @@ extern void sub_0807DDAC(Entity*, u32);
|
||||
extern void sub_0807DDE4(Entity*);
|
||||
extern void sub_0806D02C(Entity*);
|
||||
extern u32 sub_0806F5A4(u32);
|
||||
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
@@ -68,7 +71,6 @@ extern void sub_0801D2B4(Entity*, u32);
|
||||
extern void sub_0806FD3C(Entity*);
|
||||
extern u32 sub_0801E99C(Entity*);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern u32 GetFacingDirection(Entity*, Entity*);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern void sub_0805ED14(u32*);
|
||||
@@ -83,4 +85,13 @@ extern u32 sub_08049FDC(Entity*, u32);
|
||||
extern u32 sub_080041A0(Entity *, Entity *, u32, u32);
|
||||
extern u32 sub_08049EE4(Entity*);
|
||||
extern Entity *sub_0804A98C(Entity *, u32, u32);
|
||||
void sub_08077E54(Entity*);
|
||||
extern void sub_080042BA(Entity*);
|
||||
extern void sub_0801D630(void*, u32);
|
||||
extern void sub_08077F24(ItemBehavior*, u32);
|
||||
extern void sub_08079184();
|
||||
void sub_08077F50(ItemBehavior *beh, u32 arg1);
|
||||
extern void sub_0807AA80(Entity*);
|
||||
extern s32 sub_0807887C(Entity*, u32, u32);
|
||||
extern s32 sub_08078904();
|
||||
#endif
|
||||
|
||||
+1
-12
@@ -3,18 +3,7 @@
|
||||
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
|
||||
typedef struct {
|
||||
u8 unk;
|
||||
u8 behaviorID;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
u8 stateID;
|
||||
u8 filler[4];
|
||||
u8 unk4;
|
||||
u8 filler2[4];
|
||||
u8 unk5;
|
||||
} ItemBehavior;
|
||||
#include "link.h"
|
||||
|
||||
void extern DebugItem(ItemBehavior*, u32);
|
||||
void extern Sword(ItemBehavior*, u32);
|
||||
|
||||
+33
-23
@@ -7,27 +7,27 @@
|
||||
#include "entity.h"
|
||||
|
||||
typedef struct {
|
||||
/*0x00*/ u8 filler[2];
|
||||
/*0x00*/ u8 field_0x0[2];
|
||||
/*0x02*/ u8 jumpStatus;
|
||||
/*0x03*/ u8 filler2[2];
|
||||
/*0x03*/ u8 field_0x3[2];
|
||||
/*0x05*/ u8 heldObject;
|
||||
/*0x06*/ u8 pushedObject;
|
||||
/*0x07*/ u8 unk;
|
||||
/*0x08*/ u16 unk2;
|
||||
/*0x0a*/ u8 unk3;
|
||||
/*0x07*/ u8 field_0x7;
|
||||
/*0x08*/ u16 field_0x8;
|
||||
/*0x0a*/ u8 field_0xa;
|
||||
/*0x0b*/ u8 keepFacing;
|
||||
/*0x0c*/ u8 linkAction;
|
||||
/*0x0d*/ u8 filler3[2];
|
||||
/*0x0d*/ u8 field_0xd[2];
|
||||
/*0x0f*/ u8 hurtBlinkSpeed;
|
||||
/*0x10*/ u8 filler4[4];
|
||||
/*0x14*/ u16 filler5[3];
|
||||
/*0x1a*/ u8 filler6[2];
|
||||
/*0x10*/ u8 field_0x10[4];
|
||||
/*0x14*/ u16 field_0x14[3];
|
||||
/*0x1a*/ u8 field_0x1a[2];
|
||||
/*0x1c*/ u8 field_0x1c;
|
||||
/*0x1d*/ u8 filler9[5];
|
||||
/*0x22*/ u16 filler7[2];
|
||||
/*0x1d*/ u8 field_0x1d[5];
|
||||
/*0x22*/ u16 field_0x22[2];
|
||||
/*0x26*/ u8 swimState;
|
||||
/*0x27*/ u8 filler8[5];
|
||||
/*0x2c*/ u8* unk4;
|
||||
/*0x27*/ u8 field_0x27[5];
|
||||
/*0x2c*/ u8* field_0x2c;
|
||||
/*0x30*/ union {
|
||||
/* */ u32 all;
|
||||
/* */ struct {
|
||||
@@ -41,19 +41,21 @@ typedef struct {
|
||||
/* */ u32 filler11b : 16;
|
||||
/* */ } PACKED b;
|
||||
/* */ } flags;
|
||||
/*0x34*/ u8 filler12[6];
|
||||
/*0x3a*/ u16 unk5;
|
||||
/*0x3c*/ u8 filler13[2];
|
||||
/*0x34*/ u8 field_0x34[6];
|
||||
/*0x3a*/ u16 field_0x3a;
|
||||
/*0x3c*/ u8 field_0x3c[2];
|
||||
/*0x3e*/ u8 swordGoldParticle : 1;
|
||||
/* */ u8 swordBlueParticle : 1;
|
||||
/* */ u8 filler14 : 6;
|
||||
/*0x3f*/ u8 unk6;
|
||||
/*0x40*/ u8 filler15[75];
|
||||
/*0x8b*/ u8 unk7;
|
||||
/*0x8c*/ u32 filler16[7];
|
||||
/*0xa8*/ u8 filler17[3];
|
||||
/*0xab*/ u8 unk71;
|
||||
/*0xac*/ u32 unk8;
|
||||
/*0x3f*/ u8 field_0x3f;
|
||||
/*0x40*/ u8 field_0x40[75];
|
||||
/*0x8b*/ u8 field_0x8b;
|
||||
/*0x8c*/ u32 field_0x8c;
|
||||
/*0x90*/ union SplitWord field_0x90;
|
||||
/*0x94*/ u32 field_0x94[5];
|
||||
/*0xa8*/ u8 field_0xa8[3];
|
||||
/*0xab*/ u8 field_0xab;
|
||||
/*0xac*/ u32 field_0xac;
|
||||
} LinkState;
|
||||
|
||||
|
||||
@@ -74,6 +76,14 @@ typedef struct {
|
||||
u8 filler3[12];
|
||||
} Stats;
|
||||
|
||||
typedef struct {
|
||||
/*0x0*/ u8 field_0x0;
|
||||
/*0x1*/ u8 behaviorID;
|
||||
/*0x2*/ u8 field_0x2[2];
|
||||
/*0x4*/ u8 stateID;
|
||||
/*0x5*/ u8 field_0x5[10];
|
||||
} ItemBehavior;
|
||||
|
||||
extern u8 gBombBagSizes[];
|
||||
|
||||
extern LinkState gLinkState;
|
||||
|
||||
@@ -326,7 +326,7 @@ SECTIONS {
|
||||
src/enemy/octorok.o(.text);
|
||||
asm/octorok.o(.text);
|
||||
asm/chuchu.o(.text);
|
||||
asm/leever.o(.text);
|
||||
src/enemy/leever.o(.text);
|
||||
asm/peahat.o(.text);
|
||||
asm/rollobite.o(.text);
|
||||
asm/darkNut.o(.text);
|
||||
@@ -582,7 +582,7 @@ SECTIONS {
|
||||
asm/cat.o(.text);
|
||||
asm/mountainMinish.o(.text);
|
||||
asm/zeldaFollower.o(.text);
|
||||
asm/melari.o(.text);
|
||||
src/npc/melari.o(.text);
|
||||
src/npc/bladeBrothers.o(.text);
|
||||
src/npc/cow.o(.text);
|
||||
src/npc/goron.o(.text);
|
||||
@@ -644,7 +644,11 @@ SECTIONS {
|
||||
asm/ocarina.o(.text);
|
||||
asm/code_08076C80.o(.text);
|
||||
asm/respawnLink.o(.text);
|
||||
src/code_08077B98.o(.text);
|
||||
src/code_08077DF4.o(.text);
|
||||
asm/code_08077B98.o(.text);
|
||||
src/code_08078778.o(.text);
|
||||
asm/code_08078778.o(.text);
|
||||
src/sub_0807B7D8.o(.text);
|
||||
src/sub_0807B820.o(.text);
|
||||
src/sub_0807B8A8.o(.text);
|
||||
@@ -843,9 +847,10 @@ SECTIONS {
|
||||
asm/fourElements.o(.text);
|
||||
asm/objectAD.o(.text);
|
||||
asm/floatingBlock.o(.text);
|
||||
asm/objectAF.o(.text);
|
||||
src/object/objectAF.o(.text);
|
||||
src/object/metalDoor.o(.text);
|
||||
asm/jailBars.o(.text);
|
||||
src/object/jailBars.o(.text);
|
||||
src/object/objectB2.o(.text);
|
||||
asm/objectB2.o(.text);
|
||||
asm/objectB3.o(.text);
|
||||
asm/objectB4.o(.text);
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "link.h"
|
||||
#include "functions.h"
|
||||
|
||||
|
||||
typedef struct {
|
||||
u8 unk[12];
|
||||
} struct_0811BE48;
|
||||
|
||||
typedef struct {
|
||||
u8 field_0x0;
|
||||
u8 field_0x1;
|
||||
} UnkItemStruct;
|
||||
|
||||
Entity* sub_08077C94(ItemBehavior*, u32);
|
||||
void* sub_08077C54(UnkItemStruct* unk);
|
||||
Entity* CreatePlayerBomb(ItemBehavior*, u32);
|
||||
extern Entity* sub_0805E744();
|
||||
extern void sub_0805EA2C(Entity*, u32);
|
||||
|
||||
extern struct_0811BE48 gUnk_0811BE48[];
|
||||
|
||||
void sub_08077B98(UnkItemStruct* unk)
|
||||
{
|
||||
if ((gLinkState.field_0x2c == NULL) || (gLinkState.field_0x2c[9] != 1)) {
|
||||
gLinkState.field_0x2c = sub_08077C54(unk);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08077BB8(UnkItemStruct* unk)
|
||||
{
|
||||
u8* temp = sub_08077C54(unk);
|
||||
if (temp != NULL) {
|
||||
temp[0x10] = 0x20;
|
||||
}
|
||||
gLinkState.field_0x2c = temp;
|
||||
}
|
||||
|
||||
Entity* sub_08077BD4(ItemBehavior *beh)
|
||||
{
|
||||
if (sub_08077C94(beh, gUnk_0811BE48[beh->behaviorID].unk[3]) != 0) {
|
||||
return NULL;
|
||||
}
|
||||
else {
|
||||
return CreatePlayerBomb(beh, gUnk_0811BE48[beh->behaviorID].unk[3]);
|
||||
}
|
||||
}
|
||||
|
||||
Entity * sub_08077C0C(ItemBehavior *beh, u32 arg1)
|
||||
{
|
||||
u8 bVar1;
|
||||
Entity *pEVar3;
|
||||
|
||||
bVar1 = gUnk_0811BE48[arg1].unk[3];
|
||||
|
||||
if (sub_08077C94(beh, bVar1) != 0) {
|
||||
return NULL;
|
||||
}
|
||||
else {
|
||||
return CreatePlayerBomb(beh, bVar1);
|
||||
}
|
||||
}
|
||||
|
||||
Entity * CreatePlayerBomb(ItemBehavior *beh, u32 subtype)
|
||||
{
|
||||
Entity *pEVar1;
|
||||
|
||||
pEVar1 = CreatePlayerItem(subtype, 0, 0, beh->behaviorID);
|
||||
if (pEVar1 != NULL) {
|
||||
*(ItemBehavior **)&pEVar1->parent = beh;
|
||||
}
|
||||
return pEVar1;
|
||||
}
|
||||
|
||||
void* sub_08077C54(UnkItemStruct* unk)
|
||||
{
|
||||
Entity *item;
|
||||
|
||||
item = sub_0805E744();
|
||||
if (item != NULL) {
|
||||
item->entityType.subtype = gUnk_0811BE48[unk->field_0x1].unk[3];
|
||||
item->entityType.type = 8;
|
||||
item->flags = 0xa0;
|
||||
item->parent = (Entity*)unk;
|
||||
item->field_0x68 = unk->field_0x1;
|
||||
sub_0805EA2C(item, 2);
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
Entity* sub_08077C94(ItemBehavior* arg0, u32 arg1)
|
||||
{
|
||||
Entity* iVar1;
|
||||
|
||||
iVar1 = sub_0805EB00(8, gUnk_0811BE48[arg1].unk[3], 2);
|
||||
if (iVar1 == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
Entity * CreatePlayerItem(u32 subtype, u32 form, u32 parameter, u32 unk)
|
||||
{
|
||||
Entity *ent;
|
||||
|
||||
ent = GetEmptyEntity();
|
||||
if (ent != NULL) {
|
||||
ent->flags = 0x80;
|
||||
(ent->entityType).type = 8;
|
||||
(ent->entityType).subtype = subtype;
|
||||
(ent->entityType).form = form;
|
||||
(ent->entityType).parameter = parameter;
|
||||
ent->field_0x68 = unk;
|
||||
sub_0805EA2C(ent, 2);
|
||||
}
|
||||
return ent;
|
||||
}
|
||||
|
||||
Entity * sub_08077CF8(u32 subtype, u32 form, u32 parameter, u32 unk)
|
||||
{
|
||||
Entity *ent;
|
||||
|
||||
ent = sub_0805E744();
|
||||
if (ent != NULL) {
|
||||
ent->flags = 0x80;
|
||||
(ent->entityType).type = 8;
|
||||
(ent->entityType).subtype = subtype;
|
||||
(ent->entityType).form = form;
|
||||
(ent->entityType).parameter = parameter;
|
||||
ent->field_0x68 = unk;
|
||||
sub_0805EA2C(ent, 2);
|
||||
}
|
||||
return ent;
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_08077D38(ItemBehavior *beh, u32 arg1) {
|
||||
asm(".include \"asm/non_matching/sub_08077D38.inc\"");
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "link.h"
|
||||
#include "functions.h"
|
||||
|
||||
typedef struct {
|
||||
u8 b0: 4;
|
||||
u8 b1: 4;
|
||||
} PACKED Unk_bitfield;
|
||||
|
||||
typedef struct {
|
||||
u8 unk[16];
|
||||
} Unk_struct;
|
||||
|
||||
void sub_08077DF4(Entity *ent, u32 arg1)
|
||||
{
|
||||
*(u16 *)&ent->flags = arg1;
|
||||
if ((arg1 & 0xff) > 0xb8) {
|
||||
arg1 += (ent->entityType).form >> 1;
|
||||
}
|
||||
gLinkEntity.spriteTileSize = (short)(arg1 >> 8);
|
||||
InitAnimationForceUpdate(&gLinkEntity, (u8)arg1);
|
||||
sub_08077E54(ent);
|
||||
}
|
||||
|
||||
void UpdateItemAnim(Entity *ent)
|
||||
{
|
||||
UpdateAnimationSingleFrame(&gLinkEntity);
|
||||
sub_08077E54(ent);
|
||||
}
|
||||
|
||||
void sub_08077E3C(Entity *ent)
|
||||
{
|
||||
sub_080042BA(&gLinkEntity);
|
||||
sub_08077E54(ent);
|
||||
}
|
||||
|
||||
void sub_08077E54(Entity *ent)
|
||||
{
|
||||
ent->action = gLinkEntity.animIndex;
|
||||
*(u8 *)&ent->spriteTileSize = gLinkEntity.frameIndex;
|
||||
ent->previousActionFlag = gLinkEntity.frameDuration;
|
||||
ent->actionDelay = gLinkEntity.frames.all;
|
||||
}
|
||||
|
||||
void sub_08077E78(void* arg0, u32 bits)
|
||||
{
|
||||
u8 *pbVar1;
|
||||
u32 not;
|
||||
|
||||
if (bits == 0) {
|
||||
if (gLinkState.field_0x2c != NULL) {
|
||||
((Unk_bitfield *)gLinkState.field_0x2c)[0x11].b0 = 6;
|
||||
gLinkState.field_0x2c = (u8 *)bits;
|
||||
}
|
||||
else {
|
||||
gLinkState.field_0x2c = (u8 *)bits;
|
||||
}
|
||||
}
|
||||
|
||||
not = (8 >> bits);
|
||||
gLinkState.field_0x3[1] &= ~((u8)((8 >> bits) << 4) | not);
|
||||
not = ~not;
|
||||
gLinkState.field_0xa &= not;
|
||||
gLinkState.keepFacing &= not;
|
||||
sub_0801D630(arg0, 0x1c);
|
||||
}
|
||||
|
||||
u32 sub_08077EC8(Unk_struct* arg0)
|
||||
{
|
||||
|
||||
if ((gLinkState.field_0x1a[1] & 8) != 0) {
|
||||
sub_08077DF4((Entity *)arg0,0x170);
|
||||
arg0->unk[7] = 0x28;
|
||||
arg0->unk[4] = 7;
|
||||
arg0->unk[15] = 6;
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08077EFC(ItemBehavior* arg0)
|
||||
{
|
||||
sub_08077F24(arg0, (u16)gLinkState.field_0x90.HALF.LO);
|
||||
}
|
||||
|
||||
void sub_08077F10(ItemBehavior* arg0)
|
||||
{
|
||||
sub_08077F24(arg0, (u16)gLinkState.field_0x90.HALF.HI);
|
||||
}
|
||||
|
||||
NAKED
|
||||
void sub_08077F24(ItemBehavior* beh, u32 arg1) {
|
||||
asm(".include \"asm/non_matching/sub_08077F24.inc\"");
|
||||
}
|
||||
|
||||
void sub_08077F50(ItemBehavior *beh, u32 arg1)
|
||||
{
|
||||
sub_08079184();
|
||||
sub_08077E78(beh, arg1);
|
||||
}
|
||||
|
||||
u32 sub_08077F64(ItemBehavior* arg0, u32 unk)
|
||||
{
|
||||
u32 temp;
|
||||
if (gLinkState.heldObject == 0) {
|
||||
sub_08077F50(arg0, unk);
|
||||
temp = 0;
|
||||
}
|
||||
else {
|
||||
temp = 1;
|
||||
}
|
||||
return temp;
|
||||
}
|
||||
|
||||
void sub_08077F84(void)
|
||||
{
|
||||
Entity *obj;
|
||||
|
||||
if (((gLinkEntity.collisionLayer & 2) == 0) &&
|
||||
GetTileTypeByPos(gLinkEntity.x.HALF.HI, gLinkEntity.y.HALF.HI - 0xc, 2) - 0x343U < 4) {
|
||||
sub_0807AA80(&gLinkEntity);
|
||||
gLinkState.jumpStatus |= 8;
|
||||
obj = CreateObject(0x44, 0, 0);
|
||||
if (obj != NULL) {
|
||||
obj->x = gLinkEntity.x;
|
||||
obj->y.HALF.HI = gLinkEntity.y.HALF.HI - 0xc;
|
||||
gLinkEntity.y.HALF.HI -= 0xc;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "functions.h"
|
||||
|
||||
typedef struct {
|
||||
u8 unk[4];
|
||||
u32 unk2;
|
||||
u32 unk4;
|
||||
} Unk_struct;
|
||||
|
||||
extern Unk_struct gUnk_03003DF0[];
|
||||
|
||||
void sub_08078778(Entity* ent) {
|
||||
sub_0807887C(ent, 1, 0);
|
||||
}
|
||||
|
||||
void sub_08078784(Entity* ent, u32 arg1) {
|
||||
sub_0807887C(ent, 1, arg1);
|
||||
}
|
||||
|
||||
void sub_08078790(Entity* ent, u32 arg1) {
|
||||
sub_0807887C(ent, 2, arg1);
|
||||
}
|
||||
|
||||
void sub_0807879C(Entity* ent) {
|
||||
sub_0807887C(ent, 7, 0);
|
||||
}
|
||||
|
||||
void sub_080787A8(Entity* ent, u32 arg1) {
|
||||
sub_0807887C(ent, 7, arg1);
|
||||
}
|
||||
|
||||
void sub_080787B4(Entity* ent) {
|
||||
sub_0807887C(ent, 9, 0);
|
||||
}
|
||||
|
||||
void sub_080787C0(Entity* ent) {
|
||||
sub_0807887C(ent, 10, 0);
|
||||
}
|
||||
|
||||
void sub_080787CC(Entity* ent) {
|
||||
sub_0807887C(ent, 5, 0);
|
||||
}
|
||||
|
||||
s32 sub_080787D8(Entity *ent)
|
||||
{
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = sub_0807887C(ent, 8, 0);
|
||||
if (iVar1 >= 0) {
|
||||
gUnk_03003DF0[iVar1].unk[10] = 0xbe;
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
s32 sub_08078800(Entity *ent)
|
||||
{
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = sub_0807887C(ent, 6, 0);
|
||||
if (iVar1 >= 0) {
|
||||
gUnk_03003DF0[iVar1].unk[10] = 0xbe;
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
s32 sub_08078828(Entity *ent)
|
||||
{
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = sub_0807887C(ent, 3, 0);
|
||||
if (iVar1 >= 0) {
|
||||
gUnk_03003DF0[iVar1].unk[10] = 0xbe;
|
||||
}
|
||||
return iVar1;
|
||||
}
|
||||
|
||||
void sub_08078850(u32 arg0, u32 arg1, u32 arg2, u32 arg3)
|
||||
{
|
||||
s32 iVar1;
|
||||
|
||||
iVar1 = sub_08078904();
|
||||
if (iVar1 >= 0) {
|
||||
gUnk_03003DF0[iVar1].unk[8] = arg1;
|
||||
gUnk_03003DF0[iVar1].unk[10] = arg2;
|
||||
*(&gUnk_03003DF0[iVar1].unk4 + 1) = arg3;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,206 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "enemy.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern void SetChildOffset(Entity*, s32, s32, s32);
|
||||
extern void sub_0804A9FC(Entity*, u32);
|
||||
extern void sub_0804AA30(Entity*, void (*const func[])(Entity*));
|
||||
extern void sub_0804A7D4(Entity*);
|
||||
extern Entity* CreateDeathFx(Entity*, u32, u32);
|
||||
extern void sub_0804A720(Entity*);
|
||||
bool32 sub_0801FE68(Entity*, s32);
|
||||
extern void sub_0801FED4(Entity*);
|
||||
extern u32 sub_080002D4(s32, s32, u32);
|
||||
extern u32 sub_080002BC(s32, s32, u32);
|
||||
extern u32 sub_08049FDC(Entity*, u32);
|
||||
bool32 sub_0801FDE4(Entity*, s32, s32);
|
||||
|
||||
extern void (*const gUnk_080CA49C[])(Entity*);
|
||||
extern void (*const gUnk_080CA4B4[])(Entity*);
|
||||
extern Entity* gUnk_020000B0;
|
||||
extern u8 gUnk_080CA4C8[];
|
||||
extern u16 gUnk_080CA4CA[];
|
||||
extern s16 gSineTable[];
|
||||
void Leever(Entity *this)
|
||||
{
|
||||
EnemyFunctionHandler(this, gUnk_080CA49C);
|
||||
SetChildOffset(this, 0, 1, -0x10);
|
||||
}
|
||||
|
||||
void sub_0801FC28(Entity *this)
|
||||
{
|
||||
gUnk_080CA4B4[this->action](this);
|
||||
}
|
||||
|
||||
void sub_0801FC40(Entity *this)
|
||||
{
|
||||
if (this->bitfield == 0x80) {
|
||||
if (this->action == 3) {
|
||||
this->field_0x74 = 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (this->field_0x43 != 0) {
|
||||
sub_0804A9FC(this, 0x1c);
|
||||
}
|
||||
}
|
||||
sub_0804AA30(this, gUnk_080CA49C);
|
||||
}
|
||||
|
||||
void sub_0801FC7C(Entity *this)
|
||||
{
|
||||
if ((this->entityType).form == 0) {
|
||||
sub_0804A7D4(this);
|
||||
}
|
||||
else {
|
||||
CreateDeathFx(this, 0xf1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801FC9C(Entity *this)
|
||||
{
|
||||
sub_0804A720(this);
|
||||
this->action = 1;
|
||||
this->actionDelay = Random();
|
||||
}
|
||||
|
||||
void sub_0801FCB0(Entity *this)
|
||||
{
|
||||
if (--this->actionDelay == 0) {
|
||||
if (sub_0801FE68(this, Random() & 0x1f) != 0) {
|
||||
this->action = 2;
|
||||
this->spriteSettings.b.draw = TRUE;
|
||||
this->direction = (GetFacingDirection(this, gUnk_020000B0) + gUnk_080CA4C8[Random() & 1]) & 0x1f;
|
||||
InitializeAnimation(this, 0);
|
||||
UpdateSpriteForCollisionLayer(this);
|
||||
}
|
||||
else {
|
||||
this->actionDelay = (Random() & 0x18) + 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801FD2C(Entity *this)
|
||||
{
|
||||
|
||||
GetNextFrame(this);
|
||||
|
||||
if (this->frames.b.f3 != 0) {
|
||||
this->action = 3;
|
||||
if (this->entityType.form == 0) {
|
||||
this->field_0x74 = 0xb4;
|
||||
}
|
||||
else {
|
||||
this->field_0x74 = 0x6e;
|
||||
}
|
||||
InitializeAnimation(this,2);
|
||||
}
|
||||
else if (this->frames.b.f0 != 0) {
|
||||
this->frames.all &= 0xfe;
|
||||
this->flags |= 0x80;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801FD80(Entity *this)
|
||||
{
|
||||
|
||||
sub_0801FED4(this);
|
||||
GetNextFrame(this);
|
||||
|
||||
if (--this->field_0x74 == 0) {
|
||||
this->action = 4;
|
||||
this->flags &= 0x7f;
|
||||
InitializeAnimation(this, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801FDB4(Entity *this)
|
||||
{
|
||||
sub_0801FED4(this);
|
||||
GetNextFrame(this);
|
||||
if ((this->frames.b.f3) != 0) {
|
||||
this->action = 1;
|
||||
this->actionDelay = 0xf0;
|
||||
this->spriteSettings.b.draw = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_0801FDE4(Entity *ent, s32 x, s32 y)
|
||||
{
|
||||
u32 uVar3;
|
||||
u16 *puVar4;
|
||||
|
||||
if (sub_080002D4(x, y, gUnk_020000B0->collisionLayer) != 0) {
|
||||
return 0;
|
||||
} else {
|
||||
uVar3 = sub_080002BC(x, y, gUnk_020000B0->collisionLayer);
|
||||
for (puVar4 = gUnk_080CA4CA; *puVar4 != (u16)-1;) {
|
||||
if (*puVar4++ == uVar3) {
|
||||
ent->x.HALF.HI = (x & 0xfff0) + 8;
|
||||
ent->y.HALF.HI = (y & 0xfff0) + 8;
|
||||
ent->collisionLayer = gUnk_020000B0->collisionLayer;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_0801FE68(Entity *ent, s32 arg2)
|
||||
{
|
||||
s32 sin, cos;
|
||||
s32 x, y;
|
||||
u32 i;
|
||||
|
||||
|
||||
if (sub_08049FDC(ent, 1) == 0) {
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
x = gUnk_020000B0->x.WORD;
|
||||
y = gUnk_020000B0->y.WORD;
|
||||
sin = gSineTable[arg2 * 8] << 11;
|
||||
cos = gSineTable[arg2 * 8 + 0x40] << 11;
|
||||
for (i = 0; i < 8; i++) {
|
||||
x += sin;
|
||||
y += -cos;
|
||||
if (sub_0801FDE4(ent, x >> 0x10, y >> 0x10) == 0) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
#if NON_MATCHING
|
||||
void sub_0801FED4(Entity *this)
|
||||
{
|
||||
s16 sVar2;
|
||||
|
||||
if (sub_08049FDC(this, 1) == 0) {
|
||||
this->field_0x74 = 1;
|
||||
}
|
||||
sVar2 = (this->frames.all & 0xf) * 0x20;
|
||||
this->nonPlanarMovement = sVar2;
|
||||
if (this->entityType.form == 0) {
|
||||
this->field_0xf++;
|
||||
if ((this->field_0xf & 0xf) == 0) {
|
||||
sub_08004596(this, sub_0800132C(this, gUnk_020000B0));
|
||||
}
|
||||
}
|
||||
else {
|
||||
this->nonPlanarMovement = sVar2 + 0x40;
|
||||
this->field_0xf++;
|
||||
if ((this->field_0xf & 0x7) == 0) {
|
||||
sub_08004596(this, sub_0800132C(this, gUnk_020000B0));
|
||||
}
|
||||
}
|
||||
sub_080AEF88(this);
|
||||
}
|
||||
#else
|
||||
NAKED
|
||||
void sub_0801FED4(Entity *this) {
|
||||
asm(".include \"asm/non_matching/leever/sub_0801FED4.inc\"");
|
||||
}
|
||||
#endif
|
||||
+1
-1
@@ -59,7 +59,7 @@ void sub_08018CBC(Entity *this)
|
||||
this->spriteTileSize = 0xa6;
|
||||
this->palette = 0x33;
|
||||
this->spriteVramOffset = 0;
|
||||
(this->entityType).form = gLinkState.filler9[0] - 1;
|
||||
(this->entityType).form = gLinkState.field_0x1d[0] - 1;
|
||||
this->actionDelay = gUnk_080B3DE0[(this->entityType).form * 2];
|
||||
this->field_0x44 = gUnk_080B3DE0[(this->entityType).form * 2 + 1];
|
||||
this->field_0x40 = 0x1b;
|
||||
|
||||
@@ -358,15 +358,15 @@ void sub_08068E78(Entity* this) {
|
||||
|
||||
void sub_08068E90(Entity* this) {
|
||||
LinkState* s = &gLinkState;
|
||||
*(u16*)&s->unk8 = (1 << (gUnk_08111740[this->actionDelay] - 1)) | *(u16*)&s->unk8;
|
||||
*(u16*)&s->field_0xac = (1 << (gUnk_08111740[this->actionDelay] - 1)) | *(u16*)&s->field_0xac;
|
||||
}
|
||||
|
||||
void sub_08068EB4(void) {
|
||||
gLinkState.unk71 = 0;
|
||||
gLinkState.field_0xab = 0;
|
||||
}
|
||||
|
||||
void sub_08068EC4(Entity* param_1, Entity* param_2) {
|
||||
if (gUnk_08111740[param_1->actionDelay] == gLinkState.unk71) {
|
||||
if (gUnk_08111740[param_1->actionDelay] == gLinkState.field_0xab) {
|
||||
*(u16*)¶m_2->flags = gUnk_0811172A[param_1->actionDelay];
|
||||
*(u32*)¶m_2->animationState = 1;
|
||||
} else {
|
||||
|
||||
@@ -0,0 +1,173 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "npc.h"
|
||||
#include "textbox.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern void sub_0806ED78(Entity*);
|
||||
extern void sub_08068780(Entity*);
|
||||
extern void sub_08078778(Entity*);
|
||||
extern u32 Random(void);
|
||||
extern void sub_0805E3A0(Entity*, u32);
|
||||
extern void sub_0807DD50(Entity*);
|
||||
extern void sub_0806F118(Entity*);
|
||||
extern void sub_0807DDAC(Entity*, u32);
|
||||
extern void sub_0807DDE4(Entity*);
|
||||
extern u32 sub_080040A8(Entity*);
|
||||
extern void sub_08004488(u32);
|
||||
extern u32 sub_0801E99C(Entity*);
|
||||
extern void sub_08078784(Entity*, u32);
|
||||
extern void sub_0807000C(Entity*);
|
||||
extern s32 sub_0806EDD8(Entity*, u32, u32);
|
||||
extern void sub_080A7C18(u32, u32, u32);
|
||||
extern void sub_0807CAA0(u32, u32);
|
||||
|
||||
extern void (*const gUnk_08111530[])(Entity*);
|
||||
|
||||
extern SpriteLoadData gUnk_08111520;
|
||||
extern u16 gUnk_0811153E[];
|
||||
extern u16 gUnk_08111538[];
|
||||
|
||||
void Melari(Entity* this) {
|
||||
if ((this->flags & 2) == 0) {
|
||||
gUnk_08111530[this->action](this);
|
||||
sub_0806ED78(this);
|
||||
} else {
|
||||
sub_08068780(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08068708(Entity* this) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_08111520) != 0) {
|
||||
this->action = 1;
|
||||
InitializeAnimation(this, 0);
|
||||
sub_08078778(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08068730(Entity* this) {
|
||||
s32 animIndex;
|
||||
|
||||
animIndex = sub_0806ED9C(this, 0x20, 0x20);
|
||||
if (-1 < animIndex) {
|
||||
if (this->field_0xf == 0) {
|
||||
this->field_0xf = 0x10;
|
||||
if (this->animIndex != animIndex) {
|
||||
InitializeAnimation(this, animIndex);
|
||||
}
|
||||
} else {
|
||||
this->field_0xf--;
|
||||
}
|
||||
}
|
||||
if (this->interactType != 0) {
|
||||
this->interactType = 0;
|
||||
TextboxNoOverlapFollow(this->actionDelay + 0x1200);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08068780(Entity* this) {
|
||||
Entity* ent;
|
||||
|
||||
switch (this->action) {
|
||||
case 0:
|
||||
if (LoadExtraSpriteData(this, &gUnk_08111520) == 0) {
|
||||
return;
|
||||
}
|
||||
this->action = 1;
|
||||
this->spriteSettings.b.draw = TRUE;
|
||||
this->animationState = this->entityType.form;
|
||||
sub_0805E3A0(this, 2);
|
||||
sub_0807DD50(this);
|
||||
break;
|
||||
case 1:
|
||||
if (this->interactType == 2) {
|
||||
this->action = 2;
|
||||
this->interactType = 0;
|
||||
sub_0806F118(this);
|
||||
} else {
|
||||
sub_0807DDAC(this, 0);
|
||||
sub_0807DDE4(this);
|
||||
GetNextFrame(this);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (UpdateFuseInteraction(this)) {
|
||||
this->action = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if ((this->frames.b.f2) != 0) {
|
||||
this->frames.all &= 0xbf;
|
||||
if (sub_080040A8(this) == 0) {
|
||||
PlaySFX(gUnk_0811153E[(s32)Random() % 3]);
|
||||
} else {
|
||||
sub_08004488(gUnk_08111538[(s32)Random() % 3]);
|
||||
}
|
||||
ent = CreateFx(this, 0x3d, 0x20);
|
||||
if (ent != NULL) {
|
||||
PositionRelative(this, ent, 0x180000, -0xa0000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08068884(Entity* this) {
|
||||
this->field_0x68 = sub_0801E99C(this);
|
||||
sub_08078784(this, this->field_0x68);
|
||||
}
|
||||
|
||||
void Melari_Head(Entity* this) {
|
||||
u32 bVar1;
|
||||
|
||||
bVar1 = this->frames.all;
|
||||
bVar1 &= -0xc1;
|
||||
SetExtraSpriteFrame(this, 1, this->frameIndex);
|
||||
if ((bVar1 & 0x20) != 0) {
|
||||
SetExtraSpriteFrame(this, 0, bVar1 & -0xe1);
|
||||
SetExtraSpriteFrame(this, 2, 0xff);
|
||||
SetSpriteSubEntryOffsetData1(this, 1, 0);
|
||||
} else {
|
||||
SetExtraSpriteFrame(this, 0, 0xff);
|
||||
SetExtraSpriteFrame(this, 2, bVar1 & -0xe1);
|
||||
SetSpriteSubEntryOffsetData2(this, 1, 2);
|
||||
}
|
||||
sub_0807000C(this);
|
||||
}
|
||||
|
||||
void sub_08068910(Entity* this) {
|
||||
s32 iVar1;
|
||||
|
||||
if (this->actionDelay != 0) {
|
||||
this->actionDelay--;
|
||||
} else {
|
||||
this->actionDelay = 0x10;
|
||||
if ((this->frames.all & 0x20) != 0) {
|
||||
iVar1 = sub_0806EDD8(this, 0x30, 0x30);
|
||||
if (iVar1 < 0) {
|
||||
iVar1 = 0x10;
|
||||
} else {
|
||||
}
|
||||
iVar1 = sub_0806F5A4(iVar1);
|
||||
InitializeAnimation(this, (this->animIndex & -0x4) + iVar1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08068964(Entity* this) {
|
||||
sub_080A7C18(53, 0, 3);
|
||||
sub_0807CAA0(53, 2);
|
||||
}
|
||||
|
||||
void Melari_Fusion(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_08111520)) {
|
||||
this->action++;
|
||||
this->spriteSettings.b.draw = TRUE;
|
||||
InitializeAnimation(this, 6);
|
||||
}
|
||||
} else {
|
||||
GetNextFrame(this);
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_502(Entity* this) {
|
||||
}
|
||||
+1
-1
@@ -131,7 +131,7 @@ void sub_0809F69C(Entity* this) {
|
||||
void sub_0809F6CC(Entity* this) {
|
||||
|
||||
if (((gRoomControls.unk6 & 4) == 0) && (--this->actionDelay == 0)) {
|
||||
gLinkState.unk7 = 1;
|
||||
gLinkState.field_0x8b = 1;
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "flags.h"
|
||||
#include "room.h"
|
||||
|
||||
extern void sub_080A0960(Entity*, u32);
|
||||
extern void PlaySFX(u32);
|
||||
extern void sub_0801AF18(u8*, u32, u32);
|
||||
|
||||
extern void (*const gUnk_08124950[])(Entity*);
|
||||
extern u8 gUnk_08124960;
|
||||
extern u8 gUnk_0812497A;
|
||||
|
||||
void JailBars(Entity *this)
|
||||
{
|
||||
gUnk_08124950[this->action](this);
|
||||
}
|
||||
|
||||
void sub_080A08C4(Entity *this)
|
||||
{
|
||||
if (CheckFlags(this->field_0x86) == 0) {
|
||||
this->action = 1;
|
||||
sub_080A0960(this, 0);
|
||||
}
|
||||
else {
|
||||
this->action = 3;
|
||||
InitializeAnimation(this,1);
|
||||
sub_080A0960(this, 1);
|
||||
}
|
||||
this->spriteSettings.b.draw = 3; // ???
|
||||
this->collisionLayer = 1;
|
||||
UpdateSpriteForCollisionLayer(this);
|
||||
}
|
||||
|
||||
void sub_080A0910(Entity *this)
|
||||
{
|
||||
if (CheckFlags(this->field_0x86) != 0) {
|
||||
this->action = 2;
|
||||
sub_080A0960(this, 1);
|
||||
PlaySFX(0x10b);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A0938(Entity *this)
|
||||
{
|
||||
GetNextFrame(this);
|
||||
if ((this->frames.b.f3) != 0) {
|
||||
this->action = 3;
|
||||
InitializeAnimation(this, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_127(Entity* this) {}
|
||||
|
||||
void sub_080A0960(Entity *this, u32 arg1)
|
||||
{
|
||||
u8 *puVar1;
|
||||
|
||||
puVar1 = &gUnk_08124960;
|
||||
if (arg1 == 1) {
|
||||
puVar1 = &gUnk_0812497A;
|
||||
}
|
||||
sub_0801AF18(puVar1, COORD_TO_TILE(this), 1);
|
||||
}
|
||||
@@ -76,6 +76,6 @@ void sub_08099ECC(Entity *this)
|
||||
this->previousActionFlag = 1;
|
||||
CopyPosition(this, &gLinkEntity);
|
||||
gLinkState.linkAction = 3;
|
||||
gLinkState.filler12[4] = 0;
|
||||
gLinkState.field_0x34[4] = 0;
|
||||
gLinkState.flags.all |= 0x8000;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
|
||||
extern void sub_080A0640(Entity*);
|
||||
extern void PositionRelative(Entity*, Entity*, s32, s32);
|
||||
extern void CopyPosition(Entity*, Entity*);
|
||||
|
||||
extern void (*const gUnk_081248C4[])(Entity*);
|
||||
|
||||
void ObjectAF(Entity* this) {
|
||||
gUnk_081248C4[this->action](this);
|
||||
}
|
||||
|
||||
void sub_080A05A4(Entity* this) {
|
||||
if ((this->entityType).form != 2) {
|
||||
this->action = 1;
|
||||
this->spritePriority.b0 = 6;
|
||||
sub_080A0640(this);
|
||||
InitializeAnimation(this, 1);
|
||||
} else {
|
||||
this->action = 2;
|
||||
this->y.HALF.HI++;
|
||||
this->height.HALF.HI = 0;
|
||||
this->spriteOffsetY--;
|
||||
InitializeAnimation(this, 3);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A05F4(Entity* this) {
|
||||
if (this->parent == NULL) {
|
||||
this->action = 2;
|
||||
InitializeAnimation(this, 2);
|
||||
} else {
|
||||
if (this->parent->field_0x4 == NULL) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
sub_080A0640(this);
|
||||
GetNextFrame(this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A0624(Entity* this) {
|
||||
GetNextFrame(this);
|
||||
if ((this->frames.b.f3) != 0) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080A0640(Entity* this) {
|
||||
if (this->entityType.form == 0) {
|
||||
PositionRelative(*(Entity**)(this->parent->otherEntity + 0x4), this, 0, 0x80000);
|
||||
} else {
|
||||
CopyPosition(this->parent, this);
|
||||
}
|
||||
this->height.HALF.HI = 0;
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
|
||||
extern void sub_0806F69C(Entity*);
|
||||
extern u32 sub_080AE4CC(Entity*, u32, u32, u32);
|
||||
|
||||
extern void* gUnk_02027EB4;
|
||||
extern void* gUnk_0200D654;
|
||||
|
||||
#if 0
|
||||
|
||||
void ObjectB2(Entity *this)
|
||||
{
|
||||
void* pEVar3;
|
||||
|
||||
if (this->action == 0) {
|
||||
this->action = 1;
|
||||
this->actionDelay = 0x10;
|
||||
this->direction = (this->entityType).form << 3;
|
||||
if (this->collisionLayer == 2) {
|
||||
pEVar3 = &gUnk_0200D654;
|
||||
}
|
||||
else {
|
||||
pEVar3 = &gUnk_02027EB4;
|
||||
}
|
||||
this->attachedEntity = pEVar3;
|
||||
InitializeAnimation(this, this->entityType.form);
|
||||
}
|
||||
this->nonPlanarMovement = this->parent->nonPlanarMovement;
|
||||
sub_0806F69C(this);
|
||||
if (sub_080AE4CC(this->attachedEntity, this->x.HALF.HI, this->y.HALF.HI, 9) != 0) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
if (this->nonPlanarMovement < 0x41) {
|
||||
this->spriteSettings.b.draw ^= 1;
|
||||
|
||||
if (--this->actionDelay == 0) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
GetNextFrame(this);
|
||||
}
|
||||
|
||||
#endif
|
||||
+3
-3
@@ -34,7 +34,7 @@ void OcarinaUse(ItemBehavior* itemBeh, s32 inputFlags) {
|
||||
if (gLinkState.linkAction == 24) {
|
||||
sub_08077E78(itemBeh, inputFlags);
|
||||
} else {
|
||||
itemBeh->unk4 |= 15;
|
||||
itemBeh->field_0x5[4] |= 15;
|
||||
gLinkEntity.animationState = 4;
|
||||
var = gLinkEntity.spriteSettings.raw & ~0x40;
|
||||
gLinkEntity.spriteSettings.raw &= var;
|
||||
@@ -42,10 +42,10 @@ void OcarinaUse(ItemBehavior* itemBeh, s32 inputFlags) {
|
||||
gLinkEntity.flags &= 127;
|
||||
gLinkEntity.field_0x7a = 2;
|
||||
gLinkState.flags.all |= 0x10000000;
|
||||
gLinkState.filler8[0] = 255;
|
||||
gLinkState.field_0x27[0] = 255;
|
||||
gUnk_02034490 = 1;
|
||||
bVar1 = (8 >> inputFlags);
|
||||
gLinkState.unk3 |= bVar1;
|
||||
gLinkState.field_0xa |= bVar1;
|
||||
gLinkState.keepFacing |= bVar1;
|
||||
sub_08078F60();
|
||||
sub_08077D38(itemBeh, inputFlags);
|
||||
|
||||
Reference in New Issue
Block a user