Merge pull request #3 from zeldaret/master

none
This commit is contained in:
Macrepeh
2020-07-16 10:43:52 -04:00
committed by GitHub
47 changed files with 8085 additions and 9358 deletions
-345
View File
@@ -1,345 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Beedle
Beedle: @ 0x080632A8
push {lr}
adds r2, r0, #0
ldrb r1, [r2, #0x10]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _080632BE
adds r0, r2, #0
bl sub_08063410
b _080632C4
_080632BE:
adds r0, r2, #0
bl sub_080632C8
_080632C4:
pop {pc}
.align 2, 0
thumb_func_start sub_080632C8
sub_080632C8: @ 0x080632C8
push {lr}
ldr r2, _080632DC @ =gUnk_0810C8E0
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080632DC: .4byte gUnk_0810C8E0
thumb_func_start sub_080632E0
sub_080632E0: @ 0x080632E0
push {r4, lr}
adds r4, r0, #0
ldr r1, _08063310 @ =gUnk_0810C8D4
bl LoadExtraSpriteData
cmp r0, #0
beq _0806330E
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
adds r0, r4, #0
bl sub_08078778
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
movs r0, #1
strb r0, [r4, #0xc]
_0806330E:
pop {r4, pc}
.align 2, 0
_08063310: .4byte gUnk_0810C8D4
thumb_func_start sub_08063314
sub_08063314: @ 0x08063314
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
adds r0, #1
strb r0, [r4, #0xf]
movs r1, #0xff
ands r0, r1
movs r1, #0xf
ands r0, r1
cmp r0, #0
bne _08063342
adds r0, r4, #0
bl sub_080633C8
adds r1, r0, #0
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, r1
beq _08063342
adds r0, r4, #0
bl InitializeAnimation
_08063342:
adds r0, r4, #0
adds r0, #0x39
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
beq _08063360
ldrb r0, [r4, #0xe]
ldr r1, _08063368 @ =0x00000A01
adds r0, r0, r1
bl TextboxNoOverlapFollow
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
_08063360:
adds r0, r4, #0
bl sub_0806ED78
pop {r4, pc}
.align 2, 0
_08063368: .4byte 0x00000A01
thumb_func_start sub_0806336C
sub_0806336C: @ 0x0806336C
push {lr}
adds r2, r0, #0
ldr r0, _0806338C @ =gTextBox
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
bne _0806338A
ldrb r0, [r2, #0xc]
adds r0, #1
strb r0, [r2, #0xc]
adds r0, r2, #0
movs r1, #8
bl InitializeAnimation
_0806338A:
pop {pc}
.align 2, 0
_0806338C: .4byte gTextBox
thumb_func_start sub_08063390
sub_08063390: @ 0x08063390
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 _080633BE
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
bl GetAnimationState
adds r1, r0, #0
adds r0, r4, #0
bl InitializeAnimation
adds r0, r4, #0
bl sub_08078778
_080633BE:
adds r0, r4, #0
bl sub_0806ED78
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080633C8
sub_080633C8: @ 0x080633C8
push {r4, lr}
adds r4, r0, #0
movs r1, #0x20
movs r2, #0x20
bl sub_0806ED9C
cmp r0, #0
bge _080633DE
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
_080633DE:
pop {r4, pc}
thumb_func_start Beedle_Head
Beedle_Head: @ 0x080633E0
push {r4, lr}
adds r4, r0, #0
adds r0, #0x5a
ldrb r0, [r0]
movs r2, #0x3f
ands r2, r0
adds r0, r4, #0
movs r1, #0
bl SetExtraSpriteFrame
ldrb r2, [r4, #0x1e]
adds r0, r4, #0
movs r1, #1
bl SetExtraSpriteFrame
adds r0, r4, #0
movs r1, #1
movs r2, #0
bl SetSpriteSubEntryOffsetData1
adds r0, r4, #0
bl sub_0807000C
pop {r4, pc}
thumb_func_start sub_08063410
sub_08063410: @ 0x08063410
push {r4, r5, lr}
adds r4, r0, #0
ldrb r5, [r4, #0xc]
cmp r5, #0
bne _08063442
ldr r1, _08063464 @ =gUnk_0810C8D4
bl LoadExtraSpriteData
cmp r0, #0
beq _08063462
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _08063436
ldr r0, _08063468 @ =gUnk_0810C894
str r0, [r4, #0x48]
strb r5, [r4, #0xb]
_08063436:
adds r0, r4, #0
bl sub_0807DD64
adds r0, r4, #0
bl sub_08078778
_08063442:
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _0806344E
adds r0, r4, #0
bl sub_0806346C
_0806344E:
adds r0, r4, #0
movs r1, #0
bl sub_0807DDAC
adds r0, r4, #0
bl sub_0807DDE4
adds r0, r4, #0
bl GetNextFrame
_08063462:
pop {r4, r5, pc}
.align 2, 0
_08063464: .4byte gUnk_0810C8D4
_08063468: .4byte gUnk_0810C894
thumb_func_start sub_0806346C
sub_0806346C: @ 0x0806346C
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r6, _080634D8 @ =gLinkEntity
movs r0, #0x2e
ldrsh r1, [r6, r0]
movs r2, #0x2e
ldrsh r0, [r5, r2]
subs r4, r1, r0
movs r0, #0x32
ldrsh r1, [r6, r0]
movs r2, #0x32
ldrsh r0, [r5, r2]
subs r3, r1, r0
adds r4, #0x30
adds r3, #0x18
cmp r4, #0
bge _08063490
movs r4, #0
_08063490:
cmp r4, #0x50
ble _08063496
movs r4, #0x50
_08063496:
cmp r3, #0
bge _0806349C
movs r3, #0
_0806349C:
cmp r3, #0x40
ble _080634A2
movs r3, #0x40
_080634A2:
asrs r4, r4, #4
asrs r3, r3, #4
ldr r2, _080634DC @ =gUnk_0810C8F0
ldrb r1, [r6, #0x14]
lsrs r1, r1, #1
lsls r0, r4, #2
adds r1, r1, r0
lsls r0, r3, #1
adds r0, r0, r3
lsls r0, r0, #3
adds r1, r1, r0
adds r1, r1, r2
ldrb r4, [r1]
ldrb r0, [r5, #0xb]
cmp r4, r0
beq _080634D6
lsls r3, r4, #3
ldr r0, _080634E0 @ =gUnk_0810C89C
adds r3, r3, r0
movs r2, #4
ldrsb r2, [r3, r2]
adds r0, r5, #0
movs r1, #1
bl sub_08078850
strb r4, [r5, #0xb]
_080634D6:
pop {r4, r5, r6, pc}
.align 2, 0
_080634D8: .4byte gLinkEntity
_080634DC: .4byte gUnk_0810C8F0
_080634E0: .4byte gUnk_0810C89C
thumb_func_start sub_080634E4
sub_080634E4: @ 0x080634E4
ldrb r0, [r0, #0xb]
str r0, [r1, #4]
bx lr
.align 2, 0
thumb_func_start sub_080634EC
sub_080634EC: @ 0x080634EC
ldr r2, _080634FC @ =gRoomVars
ldr r1, _08063500 @ =gUnk_0810C88C
ldrb r0, [r0, #0xb]
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r2, #6]
bx lr
.align 2, 0
_080634FC: .4byte gRoomVars
_08063500: .4byte gUnk_0810C88C
thumb_func_start sub_08063504
sub_08063504: @ 0x08063504
push {r4, lr}
adds r4, r1, #0
ldr r1, _08063520 @ =gUnk_0810C88C
ldrb r0, [r0, #0xb]
adds r0, r0, r1
ldrb r0, [r0]
bl sub_080544DC
rsbs r1, r0, #0
orrs r1, r0
lsrs r1, r1, #0x1f
str r1, [r4, #0x14]
pop {r4, pc}
.align 2, 0
_08063520: .4byte gUnk_0810C88C
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
+6282
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
-581
View File
@@ -1,581 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start Keaton
Keaton: @ 0x080323BC
push {r4, lr}
adds r4, r0, #0
ldr r1, _080323D8 @ =gUnk_080CE7B0
bl EnemyFunctionHandler
movs r3, #0x12
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl SetChildOffset
pop {r4, pc}
.align 2, 0
_080323D8: .4byte gUnk_080CE7B0
thumb_func_start sub_080323DC
sub_080323DC: @ 0x080323DC
push {lr}
ldr r2, _080323F0 @ =gUnk_080CE7C8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080323F0: .4byte gUnk_080CE7C8
thumb_func_start sub_080323F4
sub_080323F4: @ 0x080323F4
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
subs r0, #3
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bls _0803242C
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0xc
strb r0, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x3e
ldrb r1, [r0]
adds r1, #4
movs r0, #0x18
ands r1, r0
movs r0, #0x10
eors r1, r0
strb r1, [r4, #0x15]
lsrs r1, r1, #3
adds r0, r4, #0
bl InitAnimationForceUpdate
adds r5, r4, #0
adds r5, #0x43
b _08032446
_0803242C:
adds r0, r4, #0
adds r0, #0x41
ldrb r0, [r0]
adds r5, r4, #0
adds r5, #0x43
cmp r0, #0xcc
bne _08032446
ldrb r0, [r5]
cmp r0, #0
bne _0803244C
adds r0, r4, #0
bl sub_0803275C
_08032446:
ldrb r0, [r5]
cmp r0, #0
beq _08032454
_0803244C:
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_08032454:
ldr r1, _08032460 @ =gUnk_080CE7B0
adds r0, r4, #0
bl sub_0804AA30
pop {r4, r5, pc}
.align 2, 0
_08032460: .4byte gUnk_080CE7B0
thumb_func_start nullsub_155
nullsub_155: @ 0x08032464
bx lr
.align 2, 0
thumb_func_start sub_08032468
sub_08032468: @ 0x08032468
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
movs r0, #0
strb r0, [r4, #0x14]
adds r0, r4, #0
movs r1, #0
bl InitAnimationForceUpdate
adds r0, r4, #0
bl sub_080326FC
adds r0, r4, #0
bl sub_08032740
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803248C
sub_0803248C: @ 0x0803248C
push {r4, lr}
adds r4, r0, #0
bl sub_080325E8
cmp r0, #0
bne _080324C8
adds r0, r4, #0
bl sub_0803271C
cmp r0, #0
bne _080324C8
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080324B4
adds r0, r4, #0
bl sub_08032650
_080324B4:
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
bne _080324C2
movs r0, #1
strb r0, [r4, #0xe]
_080324C2:
adds r0, r4, #0
bl UpdateAnimationSingleFrame
_080324C8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080324CC
sub_080324CC: @ 0x080324CC
push {r4, lr}
adds r4, r0, #0
bl sub_080325E8
cmp r0, #0
bne _080324F8
adds r0, r4, #0
bl UpdateAnimationSingleFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080324F8
adds r0, r4, #0
bl sub_080326FC
adds r0, r4, #0
bl sub_08032740
_080324F8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080324FC
sub_080324FC: @ 0x080324FC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08032524
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08032572
movs r0, #0x1e
strb r0, [r4, #0xf]
ldrb r0, [r4, #0x15]
lsrs r0, r0, #3
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x14]
adds r1, #4
adds r0, r4, #0
bl InitAnimationForceUpdate
_08032524:
adds r0, r4, #0
bl UpdateAnimationSingleFrame
adds r0, r4, #0
bl UpdateAnimationSingleFrame
ldrb r0, [r4, #0xf]
subs r1, r0, #1
strb r1, [r4, #0xf]
lsls r0, r1, #0x18
lsrs r3, r0, #0x18
cmp r3, #0
bne _08032564
movs r0, #4
strb r0, [r4, #0xc]
movs r1, #0
movs r0, #0xf0
lsls r0, r0, #1
strh r0, [r4, #0x24]
adds r2, r4, #0
adds r2, #0x76
movs r0, #0x46
strh r0, [r2]
adds r0, r4, #0
adds r0, #0x78
strh r3, [r0]
adds r0, #3
strb r1, [r0]
adds r0, r4, #0
bl sub_080327C8
b _08032572
_08032564:
movs r0, #3
ands r1, r0
cmp r1, #0
bne _08032572
adds r0, r4, #0
bl sub_08032794
_08032572:
pop {r4, pc}
thumb_func_start sub_08032574
sub_08032574: @ 0x08032574
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, [r4, #0x54]
cmp r0, #0
beq _0803258A
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _080325A4
_0803258A:
adds r5, r4, #0
adds r5, #0x76
ldrh r0, [r5]
subs r0, #1
strh r0, [r5]
lsls r0, r0, #0x10
cmp r0, #0
beq _080325A4
adds r0, r4, #0
bl sub_080AEFE0
cmp r0, #0
bne _080325AC
_080325A4:
adds r0, r4, #0
bl sub_0803275C
b _080325C2
_080325AC:
adds r0, r4, #0
bl UpdateAnimationSingleFrame
ldrh r1, [r5]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _080325C2
adds r0, r4, #0
bl sub_08032794
_080325C2:
pop {r4, r5, pc}
thumb_func_start sub_080325C4
sub_080325C4: @ 0x080325C4
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080325E4
adds r0, r4, #0
bl sub_080325E8
cmp r0, #0
bne _080325E4
adds r0, r4, #0
bl sub_08032784
_080325E4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080325E8
sub_080325E8: @ 0x080325E8
push {r4, r5, lr}
adds r4, r0, #0
bl sub_08049FA0
cmp r0, #0
beq _0803264C
adds r0, r4, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _0803264C
ldr r5, _08032648 @ =gUnk_020000B0
ldr r1, [r5]
adds r0, r4, #0
movs r2, #0x68
movs r3, #0x40
bl sub_080041A0
cmp r0, #0
beq _0803264C
ldr r1, [r5]
adds r0, r4, #0
bl GetFacingDirection
adds r3, r4, #0
adds r3, #0x5a
ldrb r2, [r3]
movs r5, #0x18
adds r1, r5, #0
ands r1, r2
subs r0, r0, r1
adds r0, #2
movs r1, #0x1f
ands r0, r1
cmp r0, #4
bhi _0803264C
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0xc
strb r0, [r4, #0xe]
ldrb r1, [r3]
adds r0, r5, #0
ands r0, r1
strb r0, [r4, #0x15]
movs r0, #1
b _0803264E
.align 2, 0
_08032648: .4byte gUnk_020000B0
_0803264C:
movs r0, #0
_0803264E:
pop {r4, r5, pc}
thumb_func_start sub_08032650
sub_08032650: @ 0x08032650
push {r4, r5, lr}
adds r4, r0, #0
bl Random
adds r5, r0, #0
ldr r1, _08032680 @ =gUnk_080CE7E0
movs r0, #0xf
ands r0, r5
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r4, #0xe]
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
bne _0803267A
lsrs r0, r5, #8
movs r1, #1
ands r0, r1
cmp r0, #0
beq _08032684
_0803267A:
lsrs r0, r5, #0x10
b _0803268C
.align 2, 0
_08032680: .4byte gUnk_080CE7E0
_08032684:
adds r0, r4, #0
bl sub_08049EE4
adds r0, #4
_0803268C:
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
ldrb r1, [r4, #0x15]
adds r0, r4, #0
bl sub_0803269C
pop {r4, r5, pc}
thumb_func_start sub_0803269C
sub_0803269C: @ 0x0803269C
push {lr}
adds r3, r0, #0
adds r2, r1, #0
subs r0, r2, #3
movs r1, #7
ands r0, r1
cmp r0, #2
bhi _080326D6
adds r0, r2, #4
movs r1, #0x18
ands r0, r1
lsrs r2, r0, #3
ldrb r0, [r3, #0x14]
subs r0, r0, r2
movs r1, #3
ands r0, r1
cmp r0, #1
bls _080326F8
strb r2, [r3, #0x14]
adds r0, r3, #0
adds r0, #0x58
ldrb r0, [r0]
movs r1, #0xfc
ands r1, r0
adds r1, r1, r2
adds r0, r3, #0
bl InitAnimationForceUpdate
b _080326F8
_080326D6:
adds r0, r2, #4
movs r1, #0x18
ands r0, r1
lsrs r2, r0, #3
ldrb r0, [r3, #0x14]
cmp r2, r0
beq _080326F8
strb r2, [r3, #0x14]
adds r0, r3, #0
adds r0, #0x58
ldrb r0, [r0]
movs r1, #0xfc
ands r1, r0
adds r1, r1, r2
adds r0, r3, #0
bl InitAnimationForceUpdate
_080326F8:
pop {pc}
.align 2, 0
thumb_func_start sub_080326FC
sub_080326FC: @ 0x080326FC
push {r4, lr}
adds r4, r0, #0
bl Random
ldr r2, _08032718 @ =gUnk_080CE7F0
movs r1, #0xf
ands r1, r0
lsls r1, r1, #1
adds r1, r1, r2
ldrh r0, [r1]
adds r4, #0x74
strh r0, [r4]
pop {r4, pc}
.align 2, 0
_08032718: .4byte gUnk_080CE7F0
thumb_func_start sub_0803271C
sub_0803271C: @ 0x0803271C
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x74
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
beq _08032734
movs r0, #0
b _0803273C
_08032734:
adds r0, r2, #0
bl sub_08032784
movs r0, #1
_0803273C:
pop {pc}
.align 2, 0
thumb_func_start sub_08032740
sub_08032740: @ 0x08032740
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #0x80
strh r0, [r4, #0x24]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl InitializeAnimation
adds r0, r4, #0
bl sub_08032650
pop {r4, pc}
thumb_func_start sub_0803275C
sub_0803275C: @ 0x0803275C
push {r4, lr}
adds r4, r0, #0
movs r0, #5
strb r0, [r4, #0xc]
movs r0, #0x2d
strb r0, [r4, #0xe]
movs r0, #0x80
strh r0, [r4, #0x24]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl InitAnimationForceUpdate
ldrb r1, [r4, #0x15]
adds r0, r4, #0
bl sub_0803269C
adds r0, r4, #0
bl sub_080327E0
pop {r4, pc}
thumb_func_start sub_08032784
sub_08032784: @ 0x08032784
push {lr}
movs r1, #2
strb r1, [r0, #0xc]
ldrb r1, [r0, #0x14]
adds r1, #8
bl InitAnimationForceUpdate
pop {pc}
thumb_func_start sub_08032794
sub_08032794: @ 0x08032794
push {r4, r5, lr}
adds r4, r0, #0
movs r1, #0x11
movs r2, #0x40
bl CreateFx
adds r5, r0, #0
cmp r5, #0
beq _080327C2
ldrb r0, [r4, #0x14]
lsls r0, r0, #1
ldr r1, _080327C4 @ =gUnk_080CE810
adds r0, r0, r1
movs r2, #0
ldrsb r2, [r0, r2]
lsls r2, r2, #0x10
movs r3, #1
ldrsb r3, [r0, r3]
lsls r3, r3, #0x10
adds r0, r4, #0
adds r1, r5, #0
bl PositionRelative
_080327C2:
pop {r4, r5, pc}
.align 2, 0
_080327C4: .4byte gUnk_080CE810
thumb_func_start sub_080327C8
sub_080327C8: @ 0x080327C8
push {r4, lr}
adds r4, r0, #0
movs r1, #0xb
movs r2, #0
bl sub_0804A98C
cmp r0, #0
beq _080327DC
str r4, [r0, #0x50]
str r0, [r4, #0x54]
_080327DC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080327E0
sub_080327E0: @ 0x080327E0
push {lr}
adds r2, r0, #0
ldr r1, [r2, #0x54]
cmp r1, #0
beq _080327F0
movs r0, #0
str r0, [r1, #0x50]
str r0, [r2, #0x54]
_080327F0:
pop {pc}
.align 2, 0
-74
View File
@@ -1,74 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_08021F24
sub_08021F24: @ 0x08021F24
push {r4, lr}
adds r4, r0, #0
adds r0, #0x78
ldrh r0, [r0]
cmp r0, #0
bne _08021F48
movs r0, #2
strb r0, [r4, #0xc]
bl Random
ldr r2, _08021F44 @ =gUnk_080CB6F6
movs r1, #0xf
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
b _08021F6E
.align 2, 0
_08021F44: .4byte gUnk_080CB6F6
_08021F48:
adds r0, r4, #0
adds r0, #0x7a
ldrh r0, [r0]
cmp r0, #0
bne _08021F80
ldr r0, _08021F7C @ =gLinkEntity
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r3, #0x32
ldrsh r2, [r0, r3]
adds r0, r4, #0
movs r3, #0x70
bl sub_0806FCB8
cmp r0, #0
bne _08021F80
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0x1e
_08021F6E:
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #1
bl InitializeAnimation
b _08021FA4
.align 2, 0
_08021F7C: .4byte gLinkEntity
_08021F80:
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
beq _08021F94
bl Random
movs r1, #0x1f
ands r0, r1
b _08021F9A
_08021F94:
adds r0, r4, #0
bl sub_08049EE4
_08021F9A:
strb r0, [r4, #0x15]
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_08021FA4:
pop {r4, pc}
.align 2, 0
-453
View File
@@ -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
View File
@@ -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
+50
View File
@@ -0,0 +1,50 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, [r4, #0x54]
cmp r0, #0
beq _0803258A
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _080325A4
_0803258A:
adds r5, r4, #0
adds r5, #0x76
ldrh r0, [r5]
subs r0, #1
strh r0, [r5]
lsls r0, r0, #0x10
cmp r0, #0
beq _080325A4
adds r0, r4, #0
bl sub_080AEFE0
cmp r0, #0
bne _080325AC
_080325A4:
adds r0, r4, #0
bl sub_0803275C
b _080325C2
_080325AC:
adds r0, r4, #0
bl UpdateAnimationSingleFrame
ldrh r1, [r5]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _080325C2
adds r0, r4, #0
bl sub_08032794
_080325C2:
pop {r4, r5, pc}
.align 2, 0
.syntax divided
+72
View File
@@ -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
+104
View File
@@ -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
+34
View File
@@ -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
View File
@@ -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}
-54
View File
@@ -1,54 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start ReadKeyInput
ReadKeyInput: @ 0x0801D6C0
push {lr}
ldr r0, _0801D6D4 @ =0x04000130
ldrh r0, [r0]
ldr r1, _0801D6D8 @ =0x000003FF
bics r1, r0
ldr r0, _0801D6DC @ =gUnk_03000FF0
bl sub_0801D6E0
pop {pc}
.align 2, 0
_0801D6D4: .4byte 0x04000130
_0801D6D8: .4byte 0x000003FF
_0801D6DC: .4byte gUnk_03000FF0
thumb_func_start sub_0801D6E0
sub_0801D6E0: @ 0x0801D6E0
push {lr}
adds r2, r0, #0
ldrh r0, [r2]
adds r3, r1, #0
bics r3, r0
strh r3, [r2, #2]
cmp r1, r0
bne _0801D70A
ldrb r0, [r2, #7]
subs r0, #1
strb r0, [r2, #7]
lsls r0, r0, #0x18
cmp r0, #0
bne _0801D704
movs r0, #4
strb r0, [r2, #7]
strh r1, [r2, #4]
b _0801D710
_0801D704:
movs r0, #0
strh r0, [r2, #4]
b _0801D710
_0801D70A:
movs r0, #0x14
strb r0, [r2, #7]
strh r3, [r2, #4]
_0801D710:
strh r1, [r2]
pop {pc}
-79
View File
@@ -6,85 +6,6 @@
.text
thumb_func_start TingleSiblings
TingleSiblings: @ 0x08064D58
push {lr}
adds r2, r0, #0
ldrb r1, [r2, #0x10]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08064D6E
adds r0, r2, #0
bl sub_08064DE4
b _08064D74
_08064D6E:
adds r0, r2, #0
bl sub_08064D78
_08064D74:
pop {pc}
.align 2, 0
thumb_func_start sub_08064D78
sub_08064D78: @ 0x08064D78
push {lr}
ldr r2, _08064D8C @ =gUnk_0810FBFC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08064D8C: .4byte gUnk_0810FBFC
thumb_func_start sub_08064D90
sub_08064D90: @ 0x08064D90
push {r4, lr}
adds r4, r0, #0
movs r1, #2
bl InitAnimationForceUpdate
movs r0, #1
strb r0, [r4, #0xf]
pop {r4, pc}
thumb_func_start sub_08064DA0
sub_08064DA0: @ 0x08064DA0
push {r4, lr}
adds r4, r0, #0
bl sub_08064EE8
adds r0, r4, #0
adds r0, #0x39
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
beq _08064DC8
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #6
bl InitAnimationForceUpdate
movs r0, #0
bl TextboxNoOverlapFollow
_08064DC8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08064DCC
sub_08064DCC: @ 0x08064DCC
push {r4, lr}
adds r4, r0, #0
bl sub_08064EE8
adds r0, r4, #0
movs r1, #2
bl InitAnimationForceUpdate
movs r0, #1
strb r0, [r4, #0xc]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08064DE4
sub_08064DE4: @ 0x08064DE4
push {r4, r5, lr}
+3 -2
View File
@@ -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
+1 -1
View File
@@ -50,7 +50,7 @@ typedef struct Entity {
/*0x10*/ u8 flags;
/*0x11*/ u8 scriptedScene : 4;
/* */ u8 scriptedScene2 : 4;
/*0x12*/ s16 spriteTileSize;
/*0x12*/ s16 spriteIndex;
/*0x14*/ u8 animationState;
/*0x15*/ u8 direction;
/*0x16*/ u8 possibleBool;
+29 -4
View File
@@ -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);
@@ -21,7 +22,13 @@ extern void LoadRoomEntityList();
void CopyPosition(Entity*, Entity*);
extern u32* StartCutscene(Entity*, u8*);
extern void ResolveEntityOnTop(Entity*, Entity*);
extern void EnemyFunctionHandler(Entity*, void (*const funcs[])(Entity*));
extern u32 GetAnimationState(Entity*);
extern void SetChildOffset(Entity*, s32, s32, s32);
extern u32 GetFacingDirection(Entity*, Entity*);
extern 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*);
@@ -29,7 +36,8 @@ extern void sub_0806920C(Entity*);
extern u32 sub_0805ACC0(Entity*);
extern u32 sub_0801E99C(Entity*);
extern void sub_0806924C(Entity*);
extern void sub_080AEF88(Entity*);
extern u32 sub_080AEF88(Entity*);
extern Entity* sub_080873AC(Entity*, u32, u32);
extern void sub_08078778(Entity*);
extern void sub_080787A8(Entity*, u32);
extern void sub_0806F118(Entity*);
@@ -46,7 +54,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);
@@ -65,10 +72,28 @@ 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*);
extern void sub_080A7C18(u32, u32, u32);
extern void sub_08068BEC(Entity*, u32);
extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*));
extern void sub_0804A9FC(Entity*, u32);
extern void sub_0804A720(Entity*);
extern u32 sub_080AEFE0(Entity*);
extern u32 sub_08049FA0(Entity*);
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);
extern u32 sub_080544DC(u8);
extern 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();
extern 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
View File
@@ -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
View File
@@ -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;
+13 -8
View File
@@ -319,21 +319,20 @@ SECTIONS {
src/_dmaFill32.o(.text);
asm/sub_0801D630.o(.text);
asm/sub_0801D66C.o(.text);
asm/readKeyInput.o(.text);
src/input.o(.text);
asm/code_0801D714.o(.text);
asm/code_0801D79C.o(.text);
/* enemies */
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);
src/enemy/hangingSeed.o(.text);
asm/beetle.o(.text);
src/enemy/keese.o(.text);
asm/keese.o(.text);
asm/doorMimic.o(.text);
asm/rockChuchu.o(.text);
asm/spinyChuchu.o(.text);
@@ -375,7 +374,7 @@ SECTIONS {
asm/smallPesto.o(.text);
asm/acroBandits.o(.text);
src/enemy/bladeTrap.o(.text);
asm/keaton.o(.text);
src/enemy/keaton.o(.text);
asm/crow.o(.text);
asm/mulldozer.o(.text);
asm/bombarossa.o(.text);
@@ -549,7 +548,7 @@ SECTIONS {
asm/pita.o(.text);
asm/minishEzlo.o(.text);
src/npc/mailbox.o(.text);
asm/beedle.o(.text);
src/npc/beedle.o(.text);
asm/brocco.o(.text);
asm/sittingPerson.o(.text);
asm/pina.o(.text);
@@ -560,6 +559,7 @@ SECTIONS {
asm/nayru.o(.text);
asm/farore.o(.text);
asm/sturgeon.o(.text);
src/npc/tingleSiblings.o(.text);
asm/tingleSiblings.o(.text);
asm/stockwell.o(.text);
src/npc/talon.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);
+140
View File
@@ -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\"");
}
+133
View File
@@ -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.spriteIndex = (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->spriteIndex = 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;
}
}
}
+88
View File
@@ -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;
}
}
+250
View File
@@ -0,0 +1,250 @@
#include "global.h"
#include "entity.h"
#include "functions.h"
extern Entity* gUnk_020000B0;
extern void (*const gUnk_080CE7B0[])(Entity*);
extern void (*const gUnk_080CE7C8[])(Entity*);
extern u8 gUnk_080CE7E0[];
extern u16 gUnk_080CE7F0[];
extern s8 gUnk_080CE810[];
u32 sub_080325E8(Entity* this);
void sub_08032650(Entity* this);
void sub_0803269C(Entity* this, u32 direction);
void sub_080326FC(Entity* this);
u32 sub_0803271C(Entity* this);
void sub_08032740(Entity* this);
void sub_0803275C(Entity* this);
void sub_08032784(Entity* this);
void sub_08032794(Entity* this);
void sub_080327C8(Entity* this);
void sub_080327E0(Entity* this);
void Keaton(Entity* this) {
EnemyFunctionHandler(this, gUnk_080CE7B0);
SetChildOffset(this, 0, 1, -18);
}
void sub_080323DC(Entity* this) {
gUnk_080CE7C8[this->action](this);
}
void sub_080323F4(Entity* this) {
u32 var;
if ((u8)(this->action - 3) >= 2) {
this->action = 3;
this->actionDelay = 0xC;
var = ((this->field_0x3e + 4) & 0x18) ^ 0x10;
this->direction = var;
InitAnimationForceUpdate(this, var >> 3);
} else if (this->bitfield == 0xCC) {
if (this->field_0x43 == 0) {
sub_0803275C(this);
}
}
if (this->field_0x43 != 0) {
sub_0804A9FC(this, 0x1C);
}
sub_0804AA30(this, gUnk_080CE7B0);
}
void nullsub_155(Entity* this) {
}
void sub_08032468(Entity* this) {
sub_0804A720(this);
this->animationState = 0;
InitAnimationForceUpdate(this, 0);
sub_080326FC(this);
sub_08032740(this);
}
void sub_0803248C(Entity* this) {
if (sub_080325E8(this) == 0) {
if (sub_0803271C(this) == 0) {
this->actionDelay--;
if (this->actionDelay == 0) {
sub_08032650(this);
}
if (sub_080AEF88(this) == 0) {
this->actionDelay = 1;
}
UpdateAnimationSingleFrame(this);
}
}
}
void sub_080324CC(Entity* this) {
if (sub_080325E8(this) == 0) {
UpdateAnimationSingleFrame(this);
if (this->frames.all & 0x80) {
sub_080326FC(this);
sub_08032740(this);
}
}
}
void sub_080324FC(Entity* this) {
if (this->actionDelay != 0) {
this->actionDelay--;
if (this->actionDelay == 0) {
this->field_0xf = 0x1E;
this->animationState = this->direction / 8;
InitAnimationForceUpdate(this, this->animationState + 4);
} else {
return;
}
}
UpdateAnimationSingleFrame(this);
UpdateAnimationSingleFrame(this);
this->field_0xf--;
if (this->field_0xf == 0) {
this->action = 4;
this->nonPlanarMovement = 0x1E0;
this->field_0x76 = 0x46;
this->field_0x78.HWORD = 0;
*(((u8*)&this->field_0x7a) + 1) = 0;
sub_080327C8(this);
} else {
if ((this->field_0xf & 0x3) == 0) {
sub_08032794(this);
}
}
}
#if NON_MATCHING // r4-r5 register swap
void sub_08032574(Entity* this) {
if (this->attachedEntity == NULL || !(this->attachedEntity->bitfield & 0x80)) {
(this->field_0x76)--;
if ((this->field_0x76 == 0) || (sub_080AEFE0(this) == 0)) {
sub_0803275C(this);
} else {
UpdateAnimationSingleFrame(this);
if (!(this->field_0x76 & 0x7)) {
sub_08032794(this);
}
}
}
}
#else
NAKED
void sub_08032574(Entity* this) {
asm(".include \"asm/non_matching/keaton/sub_08032574.inc\"");
}
#endif
void sub_080325C4(Entity* this) {
this->actionDelay--;
if ((this->actionDelay == 0) && (sub_080325E8(this) == 0)) {
sub_08032784(this);
}
}
u32 sub_080325E8(Entity* this) {
if (((sub_08049FA0(this) != 0) && (sub_08049FDC(this, 1) != 0)) &&
(sub_080041A0(this, gUnk_020000B0, 0x68, 0x40) != 0)) {
if (((GetFacingDirection(this, gUnk_020000B0) - ((this->frames.all & 0x18)) + 2) & 0x1F) < 5) {
this->action = 3;
this->actionDelay = 0xC;
this->direction = this->frames.all & 0x18;
return 1;
}
}
return 0;
}
void sub_08032650(Entity* this) {
u32 uVar3;
uVar3 = Random();
this->actionDelay = gUnk_080CE7E0[uVar3 & 0xf];
if (!((sub_08049FA0(this) == 0) && ((uVar3 >> 8 & 1) == 0))) {
this->direction = (uVar3 >> 0x10) & 0x18;
} else {
this->direction = (sub_08049EE4(this) + 4) & 0x18;
}
sub_0803269C(this, this->direction);
}
void sub_0803269C(Entity* this, u32 param_2) {
u32 uVar1;
if (((param_2 - 3) & 7) < 3) {
uVar1 = ((param_2 + 4) & 0x18) >> 3;
if (((this->animationState - uVar1) & 3) > 1) {
this->animationState = uVar1;
InitAnimationForceUpdate(this, (this->animIndex & 0xFC) + uVar1);
}
} else {
uVar1 = ((param_2 + 4) & 0x18) >> 3;
if (uVar1 != this->animationState) {
this->animationState = uVar1;
InitAnimationForceUpdate(this, (this->animIndex & 0xFC) + uVar1);
}
}
}
void sub_080326FC(Entity* this) {
this->field_0x74 = gUnk_080CE7F0[Random() & 0xF];
}
u32 sub_0803271C(Entity* this) {
this->field_0x74--;
if (this->field_0x74 == 0) {
sub_08032784(this);
return 1;
}
return 0;
}
void sub_08032740(Entity* this) {
this->action = 1;
this->nonPlanarMovement = 0x80;
InitializeAnimation(this, this->animationState);
sub_08032650(this);
}
void sub_0803275C(Entity* this) {
this->action = 5;
this->actionDelay = 0x2D;
this->nonPlanarMovement = 0x80;
InitAnimationForceUpdate(this, this->animationState);
sub_0803269C(this, this->direction);
sub_080327E0(this);
}
void sub_08032784(Entity* this) {
this->action = 2;
InitAnimationForceUpdate(this, this->animationState + 8);
}
void sub_08032794(Entity* this) {
Entity* target;
s8* temp;
target = CreateFx(this, 0x11, 0x40);
if (target != NULL) {
temp = &gUnk_080CE810[this->animationState * 2];
PositionRelative(this, target, temp[0] << 0x10, temp[1] << 0x10);
}
}
void sub_080327C8(Entity* this) {
Entity* child;
child = sub_0804A98C(this, 11, 0);
if (child != NULL) {
child->parent = this;
this->attachedEntity = child;
}
}
void sub_080327E0(Entity* this) {
if (this->attachedEntity != NULL) {
this->attachedEntity->parent = NULL;
this->attachedEntity = NULL;
}
}
+28 -3
View File
@@ -14,6 +14,8 @@ extern void sub_08021EF0(Entity*);
extern void sub_080AEFB4(Entity*);
extern void sub_08021F24(Entity*);
extern u32 sub_0806FCB8(Entity*, s32, s32, u32);
extern u32 sub_08049FA0(Entity*);
extern u32 sub_08049EE4(Entity*);
extern void (*gUnk_080CB69C[])(Entity*);
extern void (*gUnk_080CB6B4[])(Entity*);
@@ -21,9 +23,7 @@ extern void (*gUnk_080CB6C4[])(Entity*);
extern u8 gUnk_080CB6D0[];
extern u16 gUnk_080CB6D6[];
extern u8 gUnk_080CB6D0[];
extern u8 gUnk_080CB6F6[];
void Keese(Entity *this)
{
@@ -129,3 +129,28 @@ void sub_08021EF0(Entity *this)
this->field_0x7a = 0x3c;
InitializeAnimation(this, 0);
}
void sub_08021F24(Entity *this)
{
u32 bVar1;
if (this->field_0x78.HWORD == 0) {
this->action = 2;
this->actionDelay = gUnk_080CB6F6[Random() & 0xf];
InitializeAnimation(this, 1);
}
else if (!this->field_0x7a && !(sub_0806FCB8(this, gLinkEntity.x.HALF.HI, gLinkEntity.y.HALF.HI, 0x70))) {
this->action = 3;
this->actionDelay = 0x1e;
InitializeAnimation(this, 1);
}
else {
if (sub_08049FA0(this) != 0) {
this->direction = Random() & 0x1f;
}
else {
this->direction = sub_08049EE4(this);
}
InitializeAnimation(this, 0);
}
}
+206
View File
@@ -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
+44
View File
@@ -0,0 +1,44 @@
#include "global.h"
#include "entity.h"
typedef struct {
u16 field_0x0;
u16 field_0x2;
u16 field_0x4;
u8 field_0x6;
u8 field_0x7;
} Input;
void StoreKeyInput(Input *pkeyInput, u32 ioKeyInput);
extern Input gUnk_03000FF0;
void ReadKeyInput(void)
{
u32 reg = ~*(u16*)0x04000130 & 0x3FF;
Input* input = &gUnk_03000FF0;
StoreKeyInput(input, reg);
}
void StoreKeyInput(Input *input, u32 ioKeyInput)
{
u32 difference;
u32 temp = input->field_0x0;
difference = ioKeyInput & ~temp;
input->field_0x2 = difference;
if (ioKeyInput == temp) {
if (--input->field_0x7 == 0) {
input->field_0x7 = 4;
input->field_0x4 = ioKeyInput;
}
else {
input->field_0x4 = 0;
}
}
else {
input->field_0x7 = 0x14;
input->field_0x4 = difference;
}
input->field_0x0 = ioKeyInput;
}
+2 -2
View File
@@ -56,10 +56,10 @@ void sub_08018CBC(Entity *this)
}
this->action = 2;
this->spriteSettings.b.draw = 1;
this->spriteTileSize = 0xa6;
this->spriteIndex = 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;
+163
View File
@@ -0,0 +1,163 @@
#include "global.h"
#include "entity.h"
#include "functions.h"
#include "textbox.h"
#include "link.h"
#include "room.h"
typedef struct {
u32 unk_00;
s8 unk_04;
} gUnk_0810C89C_struct;
extern void sub_08078850(Entity*, u32, s8, gUnk_0810C89C_struct*);
extern u8 gUnk_0810C88C[];
extern BoundingBox gUnk_0810C894;
extern gUnk_0810C89C_struct gUnk_0810C89C[];
extern SpriteLoadData gUnk_0810C8D4;
extern void (*gUnk_0810C8E0[])(Entity*);
extern u8 gUnk_0810C8F0[];
void sub_080632C8(Entity* this);
void sub_08063410(Entity* this);
s32 sub_080633C8(Entity* this);
void sub_0806346C(Entity* this);
void Beedle(Entity* this) {
if (this->flags & 0x2) {
sub_08063410(this);
} else {
sub_080632C8(this);
}
}
void sub_080632C8(Entity* this) {
gUnk_0810C8E0[this->action](this);
}
void sub_080632E0(Entity* this) {
if (LoadExtraSpriteData(this, &gUnk_0810C8D4) != 0) {
InitializeAnimation(this, 0);
sub_08078778(this);
this->spriteSettings.b.draw = 1;
this->action = 1;
}
}
void sub_08063314(Entity* this) {
u32 offset;
if (((++this->field_0xf & 0xF) == 0) && (offset = sub_080633C8(this), this->animIndex != offset)) {
InitializeAnimation(this, offset);
}
if (this->interactType != '\0') {
TextboxNoOverlapFollow(this->actionDelay + 0xA01);
this->action++;
}
sub_0806ED78(this);
}
void sub_0806336C(Entity* this) {
if ((gTextBox.doTextBox & 0x7F) == 0) {
this->action++;
InitializeAnimation(this, 8);
}
}
void sub_08063390(Entity* this) {
GetNextFrame(this);
if (this->frames.b.f3 != 0) {
this->action = 1;
InitializeAnimation(this, GetAnimationState(this));
sub_08078778(this);
}
sub_0806ED78(this);
}
s32 sub_080633C8(Entity* this) {
s32 uVar1;
uVar1 = sub_0806ED9C(this, 0x20, 0x20);
if (uVar1 < 0) {
uVar1 = this->animIndex;
}
return uVar1;
}
void Beedle_Head(Entity* this) {
SetExtraSpriteFrame(this, 0, this->frames.all & 0x3F);
SetExtraSpriteFrame(this, 1, this->frameIndex);
SetSpriteSubEntryOffsetData1(this, 1, 0);
sub_0807000C(this);
}
void sub_08063410(Entity* this) {
if (this->action == 0) {
if (LoadExtraSpriteData(this, &gUnk_0810C8D4) == 0) {
return;
}
this->action++;
if (this->entityType.form != 0) {
this->boundingBox = &gUnk_0810C894;
this->entityType.parameter = 0;
}
sub_0807DD64(this);
sub_08078778(this);
}
if (this->entityType.form != 0) {
sub_0806346C(this);
}
sub_0807DDAC(this, 0);
sub_0807DDE4(this);
GetNextFrame(this);
}
void sub_0806346C(Entity* this) {
u8 bVar1;
s32 iVar2;
s32 iVar3;
iVar3 = (gLinkEntity.x.HALF.HI - this->x.HALF.HI);
iVar2 = (gLinkEntity.y.HALF.HI - this->y.HALF.HI);
iVar3 += 0x30;
iVar2 += 0x18;
if (iVar3 < 0) {
iVar3 = 0;
}
if (iVar3 > 0x50) {
iVar3 = 0x50;
}
if (iVar2 < 0) {
iVar2 = 0;
}
if (iVar2 > 0x40) {
iVar2 = 0x40;
}
iVar3 >>= 4;
iVar2 >>= 4;
bVar1 = gUnk_0810C8F0[(gLinkEntity.animationState >> 1) + iVar3 * 4 + iVar2 * 0x18];
if (bVar1 != this->entityType.parameter) {
gUnk_0810C89C_struct* temp = &gUnk_0810C89C[bVar1];
sub_08078850(this, 1, temp->unk_04, temp);
this->entityType.parameter = bVar1;
}
}
void sub_080634E4(Entity* this, u32* param_1) {
param_1[1] = this->entityType.parameter;
}
void sub_080634EC(Entity* this) {
gRoomVars.itemForSaleIndex = gUnk_0810C88C[this->entityType.parameter];
}
void sub_08063504(Entity* this, u32* param_2) {
u32 uVar1;
uVar1 = sub_080544DC(gUnk_0810C88C[this->entityType.parameter]);
param_2[5] = (-uVar1 | uVar1) >> 0x1F;
}
+3 -3
View File
@@ -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*)&param_2->flags = gUnk_0811172A[param_1->actionDelay];
*(u32*)&param_2->animationState = 1;
} else {
+173
View File
@@ -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) {
}
+43
View File
@@ -0,0 +1,43 @@
#include "global.h"
#include "entity.h"
#include "npc.h"
#include "textbox.h"
extern void sub_08064DE4(Entity*);
extern void sub_08064D78(Entity*);
extern void sub_08064EE8(Entity*);
extern void (*const gUnk_0810FBFC[])(Entity*);
void TingleSiblings(Entity* this) {
if ((this->flags & 2) != 0) {
sub_08064DE4(this);
}
else {
sub_08064D78(this);
}
}
void sub_08064D78(Entity* this) {
gUnk_0810FBFC[this->action](this);
}
void sub_08064D90(Entity* this) {
InitAnimationForceUpdate(this, 2);
this->field_0xf = 1;
}
void sub_08064DA0(Entity* this) {
sub_08064EE8(this);
if (this->interactType != 0) {
this->action = 2;
InitAnimationForceUpdate(this, 6);
TextboxNoOverlapFollow(0);
}
}
void sub_08064DCC(Entity* this) {
sub_08064EE8(this);
InitAnimationForceUpdate(this, 2);
this->action = 1;
}
+6 -6
View File
@@ -192,7 +192,7 @@ void sub_08061E90(Entity* this, Entity* arg1) {
if (arg1->spriteSettings.raw == 0) {
arg1->spriteSettings.raw++;
arg1->spriteTileSize = (Random() & 0x3f) + 0x20;
arg1->spriteIndex = (Random() & 0x3f) + 0x20;
animIndex = Random() & 0x18;
switch (this->direction) {
case 0x0:
@@ -227,23 +227,23 @@ void sub_08061E90(Entity* this, Entity* arg1) {
iVar4 = this->x.HALF.HI - *(s16*)&this->field_0x6a.HWORD;
if (0x10 < iVar4) {
this->x.HALF.HI = this->field_0x6a.HWORD + 0x10;
arg1->spriteTileSize = 1;
arg1->spriteIndex = 1;
}
if (iVar4 < -0x10) {
this->x.HALF.HI = *(s16*)&this->field_0x6a.HWORD - 0x10;
arg1->spriteTileSize = 1;
arg1->spriteIndex = 1;
}
iVar4 = this->y.HALF.HI - *(s16*)&this->field_0x6c;
if (0x10 < iVar4) {
this->y.HALF.HI = *(s16*)&this->field_0x6c + 0x10;
arg1->spriteTileSize = 1;
arg1->spriteIndex = 1;
}
if (iVar4 < -0x10) {
this->y.HALF.HI = *(s16*)&this->field_0x6c - 0x10;
arg1->spriteTileSize = 1;
arg1->spriteIndex = 1;
}
if (--arg1->spriteTileSize != 0) {
if (--arg1->spriteIndex != 0) {
gUnk_02033280[6] = 0;
}
}
+1 -1
View File
@@ -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();
}
}
+64
View File
@@ -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);
}
+1 -1
View File
@@ -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;
}
+56
View File
@@ -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;
}
+44
View File
@@ -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
View File
@@ -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);