From 03a8e052af277c60fae370df488a22c036263b7a Mon Sep 17 00:00:00 2001 From: theo3 Date: Thu, 9 Jul 2020 01:39:40 -0700 Subject: [PATCH] commented offsets in entity, linkState --- asm/acroBandits.s | 6 +- asm/anju.s | 2 +- asm/ballChainSoldier.s | 4 +- asm/bowMoblin.s | 2 +- asm/brocco.s | 2 +- asm/button.s | 2 +- asm/carpenter.s | 177 ------------- asm/castleMaid.s | 2 +- asm/chuchu.s | 2 +- asm/chuchuBoss.s | 6 +- asm/code_080011C4.s | 4 +- asm/code_080043E8.s | 4 +- asm/code_08018500.s | 498 ------------------------------------- asm/code_08019444.s | 2 +- asm/code_08049CD4.s | 2 +- asm/code_0806ED78.s | 8 +- asm/code_0806FA6C.s | 4 +- asm/code_0807CC3C.s | 8 +- asm/code_080A5574.s | 18 +- asm/createBowEntity.s | 13 + asm/cuccoAggr.s | 6 +- asm/cuccoChickAggr.s | 2 +- asm/darkNut.s | 8 +- asm/din.s | 2 +- asm/dog.s | 2 +- asm/enemy49.s | 2 +- asm/enemy4D.s | 4 +- asm/enemy50.s | 2 +- asm/farore.s | 2 +- asm/festari.s | 2 +- asm/flyingPot.s | 2 +- asm/flyingSkull.s | 2 +- asm/gentari.s | 2 +- asm/ghini.s | 4 +- asm/ghostBrothers.s | 2 +- asm/gibdo.s | 4 +- asm/gina.s | 2 +- asm/gleerok.s | 8 +- asm/gregal.s | 2 +- asm/guardWithSpear.s | 10 +- asm/hurdyGurdyMan.s | 2 +- asm/item11.s | 194 +++++++++++++++ asm/keaton.s | 2 +- asm/kid.s | 2 +- asm/kingDaltus.s | 2 +- asm/leever.s | 2 +- asm/lilypadLarge.s | 2 +- asm/mama.s | 2 +- asm/mayorHagen.s | 2 +- asm/mazaalBracelet.s | 4 +- asm/minecart.s | 2 +- asm/ministerPotho.s | 2 +- asm/moldworm.s | 2 +- asm/mountainMinish.s | 4 +- asm/mulldozer.s | 2 +- asm/mutoh.s | 2 +- asm/nayru.s | 2 +- asm/npc23.s | 2 +- asm/npc5.s | 6 +- asm/object21.s | 2 +- asm/object36.s | 2 +- asm/object97.s | 4 +- asm/octorok.s | 4 +- asm/octorokGolden.s | 4 +- asm/peahat.s | 4 +- asm/percy.s | 2 +- asm/pesto.s | 10 +- asm/pina.s | 2 +- asm/postman.s | 4 +- asm/puffstool.s | 4 +- asm/ropeGolden.s | 4 +- asm/rupeeLike.s | 4 +- asm/sittingPerson.s | 2 +- asm/sluggula.s | 2 +- asm/smith.s | 2 +- asm/spearMoblin.s | 4 +- asm/spikedBeetle.s | 2 +- asm/spinyChuchu.s | 2 +- asm/stalfos.s | 8 +- asm/sturgeon.s | 2 +- asm/teachers.s | 2 +- asm/tingleSiblings.s | 2 +- asm/townMinish.s | 4 +- asm/townsperson.s | 4 +- asm/vaatiEyesMacro.s | 4 +- asm/vaatiProjectile.s | 4 +- asm/vaatiRebornEnemy.s | 4 +- asm/vaatiTransfigured.s | 2 +- asm/vaatiWrath.s | 2 +- asm/wallMaster2.s | 4 +- data/playerItemFunctions.s | 4 +- include/entity.h | 3 +- include/functions.h | 4 +- include/link.h | 100 ++++---- linker.ld | 4 + src/bladeBrothers.c | 2 +- src/carpenter.c | 74 ++++++ src/code_08018C58.c | 29 +++ src/dampe.c | 4 +- src/epona.c | 2 +- src/item11.c | 99 ++++++++ src/lakitu.c | 6 +- src/malon.c | 2 +- src/talon.c | 2 +- src/townMinish.c | 2 +- 105 files changed, 630 insertions(+), 887 deletions(-) create mode 100644 asm/item11.s create mode 100644 src/carpenter.c create mode 100644 src/code_08018C58.c create mode 100644 src/item11.c diff --git a/asm/acroBandits.s b/asm/acroBandits.s index cf0ad0e7..1473c5cb 100644 --- a/asm/acroBandits.s +++ b/asm/acroBandits.s @@ -1061,7 +1061,7 @@ _08032018: ldr r0, _0803205C @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 @@ -1149,7 +1149,7 @@ _080320D4: strb r0, [r6] adds r0, r4, #0 adds r1, r5, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_080322E8 @@ -1159,7 +1159,7 @@ _080320D4: _0803210E: adds r0, r4, #0 adds r1, r5, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_080322E8 diff --git a/asm/anju.s b/asm/anju.s index 060d179d..e3412270 100644 --- a/asm/anju.s +++ b/asm/anju.s @@ -49,7 +49,7 @@ _0806C2FA: strb r0, [r2] ldr r1, _0806C334 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r4, #0 adds r1, #0x58 diff --git a/asm/ballChainSoldier.s b/asm/ballChainSoldier.s index 31cc525f..210d6ad8 100644 --- a/asm/ballChainSoldier.s +++ b/asm/ballChainSoldier.s @@ -479,7 +479,7 @@ sub_0803E86C: @ 0x0803E86C ldr r0, _0803E8C4 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 movs r1, #0x18 ands r0, r1 @@ -669,7 +669,7 @@ sub_0803E9D4: @ 0x0803E9D4 ldr r0, _0803EA0C @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 movs r1, #0x18 ands r0, r1 diff --git a/asm/bowMoblin.s b/asm/bowMoblin.s index 23c0f7a1..faaa78d4 100644 --- a/asm/bowMoblin.s +++ b/asm/bowMoblin.s @@ -498,7 +498,7 @@ _0803C598: beq _0803C5C0 adds r0, r5, #0 adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 movs r1, #0x18 ands r0, r1 diff --git a/asm/brocco.s b/asm/brocco.s index 788c4ef3..29a04a7c 100644 --- a/asm/brocco.s +++ b/asm/brocco.s @@ -194,7 +194,7 @@ _08063662: strb r0, [r1] ldr r1, _080636A0 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r1, #4 diff --git a/asm/button.s b/asm/button.s index 2f15c0ff..7271ac7c 100644 --- a/asm/button.s +++ b/asm/button.s @@ -716,7 +716,7 @@ sub_08081FF8: @ 0x08081FF8 bne _08082036 adds r0, r1, #0 adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r6, r0, #0 ldr r0, [r4, #0x54] movs r1, #0x80 diff --git a/asm/carpenter.s b/asm/carpenter.s index 837712f2..60e4a2c2 100644 --- a/asm/carpenter.s +++ b/asm/carpenter.s @@ -6,183 +6,6 @@ .text - - thumb_func_start Carpenter -Carpenter: @ 0x08067158 - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, #0x84 - ldr r0, [r0] - cmp r0, #0 - bne _08067168 - bl DeleteThisEntity -_08067168: - ldrb r5, [r4, #0xc] - cmp r5, #1 - beq _080671A8 - cmp r5, #1 - bgt _08067178 - cmp r5, #0 - beq _0806717E - b _08067224 -_08067178: - cmp r5, #2 - beq _0806720A - b _08067224 -_0806717E: - ldrb r1, [r4, #0xa] - lsls r1, r1, #4 - ldr r0, _080671EC @ =gUnk_08110CA8 - adds r1, r1, r0 - adds r0, r4, #0 - bl LoadExtraSpriteData - cmp r0, #0 - beq _08067224 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x69 - strb r5, [r0] - adds r0, r4, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r4, #0 - bl sub_0807DD64 -_080671A8: - adds r2, r4, #0 - adds r2, #0x39 - movs r1, #0 - ldrsb r1, [r2, r1] - cmp r1, #2 - bne _080671F4 - movs r0, #0 - strb r1, [r4, #0xc] - strb r0, [r2] - adds r0, r4, #0 - adds r0, #0x58 - ldrb r0, [r0] - adds r1, r4, #0 - adds r1, #0x69 - strb r0, [r1] - ldr r1, _080671F0 @ =gLinkEntity - adds r0, r4, #0 - bl sub_080045C4 - bl sub_0806F5A4 - adds r1, r0, #0 - ldrb r0, [r4, #0xa] - lsls r0, r0, #3 - adds r0, #4 - adds r1, r1, r0 - adds r0, r4, #0 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_0806F118 - b _08067224 - .align 2, 0 -_080671EC: .4byte gUnk_08110CA8 -_080671F0: .4byte gLinkEntity -_080671F4: - adds r0, r4, #0 - movs r1, #0 - bl sub_0807DDAC - adds r0, r4, #0 - bl sub_0807DDE4 - adds r0, r4, #0 - bl GetNextFrame - b _08067224 -_0806720A: - adds r0, r4, #0 - bl UpdateFuseInteraction - cmp r0, #0 - beq _08067224 - movs r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x69 - ldrb r1, [r0] - adds r0, r4, #0 - bl InitializeAnimation -_08067224: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start Carpenter_Head -Carpenter_Head: @ 0x08067228 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xa] - cmp r0, #1 - bhi _0806727E - adds r0, r4, #0 - adds r0, #0x5a - ldrb r2, [r0] - movs r0, #0x81 - rsbs r0, r0, #0 - 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 - adds r0, #0x5b - ldrb r0, [r0] - movs r2, #0x3f - ands r2, r0 - adds r0, r4, #0 - movs r1, #2 - bl SetExtraSpriteFrame - adds r0, r4, #0 - movs r1, #1 - movs r2, #0 - bl SetSpriteSubEntryOffsetData1 - adds r0, r4, #0 - movs r1, #1 - movs r2, #2 - bl SetSpriteSubEntryOffsetData2 - adds r0, r4, #0 - bl sub_0807000C - b _080672AC -_0806727E: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r2, [r0] - movs r0, #0x81 - rsbs r0, r0, #0 - 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 -_080672AC: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080672B0 -sub_080672B0: @ 0x080672B0 - push {lr} - ldrb r2, [r0, #0x14] - lsrs r2, r2, #1 - ldr r1, [r1, #4] - adds r1, r1, r2 - ldrb r2, [r0, #0xa] - lsls r2, r2, #3 - adds r1, r1, r2 - bl InitializeAnimation - pop {pc} - .align 2, 0 - thumb_func_start sub_080672C8 sub_080672C8: @ 0x080672C8 push {r4, r5, lr} diff --git a/asm/castleMaid.s b/asm/castleMaid.s index be02bb6b..20c03bd5 100644 --- a/asm/castleMaid.s +++ b/asm/castleMaid.s @@ -144,7 +144,7 @@ _080645EA: strb r1, [r2] ldr r1, _08064628 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/chuchu.s b/asm/chuchu.s index 61647307..c1a41f0a 100644 --- a/asm/chuchu.s +++ b/asm/chuchu.s @@ -1475,7 +1475,7 @@ _0801F91C: ldr r0, _0801F93C @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] _0801F92C: adds r0, r4, #0 diff --git a/asm/chuchuBoss.s b/asm/chuchuBoss.s index fca83811..f9542429 100644 --- a/asm/chuchuBoss.s +++ b/asm/chuchuBoss.s @@ -1223,7 +1223,7 @@ _0802659C: strb r0, [r4] ldr r1, _080265E4 @ =gLinkEntity adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r5, #0x15] ldr r0, [r7] ldrb r0, [r0, #4] @@ -1374,7 +1374,7 @@ _080266D6: bne _080266EC ldr r1, _08026704 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] _080266EC: adds r0, r4, #0 @@ -1551,7 +1551,7 @@ _08026820: _08026830: ldr r1, _08026868 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] movs r0, #4 strb r0, [r4, #0xd] diff --git a/asm/code_080011C4.s b/asm/code_080011C4.s index cbea3d2c..3e1c1675 100644 --- a/asm/code_080011C4.s +++ b/asm/code_080011C4.s @@ -231,7 +231,7 @@ sub_0800132C: @ 0x0800132C cmp r2, #0x11 blo _08001352 _0800134E: - ldr r3, _08001378 @ =sub_080045C4 + ldr r3, _08001378 @ =GetFacingDirection bx r3 _08001352: movs r0, #0xff @@ -245,7 +245,7 @@ _08001368: .4byte gUnk_080012C8 _0800136C: .4byte gUnk_080012C8 _08001370: .4byte sub_080AF18C _08001374: .4byte sub_080AF1BC -_08001378: .4byte sub_080045C4 +_08001378: .4byte GetFacingDirection gUnk_0800137C:: @ 0800137C .incbin "baserom.gba", 0x00137C, 0x0000004 diff --git a/asm/code_080043E8.s b/asm/code_080043E8.s index d88ac0a6..b6284815 100644 --- a/asm/code_080043E8.s +++ b/asm/code_080043E8.s @@ -269,8 +269,8 @@ sub_080045B4: @ 0x080045B4 ldr r3, _08004690 @ =gUnk_030060F0 bx r3 - thumb_func_start sub_080045C4 -sub_080045C4: @ 0x080045C4 + thumb_func_start GetFacingDirection +GetFacingDirection: @ 0x080045C4 push {r4, r5} movs r4, #0x32 movs r5, #0x2e diff --git a/asm/code_08018500.s b/asm/code_08018500.s index dd69e0da..4d58f260 100644 --- a/asm/code_08018500.s +++ b/asm/code_08018500.s @@ -924,501 +924,3 @@ _08018C10: .align 2, 0 _08018C14: .4byte gUnk_080FEAC8 _08018C18: .4byte gUnk_080FE320 - - thumb_func_start CreateMinishEntrance -CreateMinishEntrance: @ 0x08018C1C - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r5, r0, #0 - ldr r6, _08018C54 @ =0x00000185 - movs r0, #0 -_08018C28: - movs r4, #0 - movs r1, #0x40 - adds r1, r1, r5 - mov r8, r1 - adds r7, r0, #1 -_08018C32: - adds r0, r6, #0 - adds r6, #1 - adds r1, r5, r4 - movs r2, #1 - bl SetTileType - adds r4, #1 - cmp r4, #4 - bls _08018C32 - mov r5, r8 - adds r0, r7, #0 - cmp r0, #3 - bls _08018C28 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08018C54: .4byte 0x00000185 - - thumb_func_start sub_08018C58 -sub_08018C58: @ 0x08018C58 - push {r4, r5, lr} - adds r4, r0, #0 - movs r5, #0 -_08018C5E: - movs r1, #0x98 - lsls r1, r1, #2 - adds r0, r5, r1 - adds r1, r4, #0 - movs r2, #1 - bl SetTileType - ldr r1, _08018C84 @ =0x00000261 - adds r0, r5, r1 - adds r1, r4, #1 - movs r2, #1 - bl SetTileType - adds r5, #2 - adds r4, #0x40 - cmp r5, #5 - bls _08018C5E - pop {r4, r5, pc} - .align 2, 0 -_08018C84: .4byte 0x00000261 - - thumb_func_start sub_08018C88 -sub_08018C88: @ 0x08018C88 - push {lr} - adds r2, r0, #0 - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - beq _08018CB4 - adds r1, r2, #0 - adds r1, #0x3d - movs r0, #0 - strb r0, [r1] - ldr r1, _08018CB0 @ =gUnk_080B3DD0 - ldrb r0, [r2, #0xc] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r1, [r0] - adds r0, r2, #0 - bl _call_via_r1 - b _08018CB8 - .align 2, 0 -_08018CB0: .4byte gUnk_080B3DD0 -_08018CB4: - bl DeleteThisEntity -_08018CB8: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08018CBC -sub_08018CBC: @ 0x08018CBC - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x84 - ldr r5, _08018D50 @ =gLinkEntity - ldr r0, [r5, #0x2c] - str r0, [r4, #0x2c] - str r0, [r1] - subs r1, #4 - ldr r0, [r5, #0x30] - str r0, [r4, #0x30] - str r0, [r1] - ldrb r1, [r5, #0x14] - movs r0, #0xe - ands r0, r1 - strb r0, [r4, #0x14] - lsls r0, r0, #2 - strb r0, [r4, #0x15] - movs r0, #0x80 - lsls r0, r0, #3 - strh r0, [r4, #0x24] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x96 - strb r0, [r1] - adds r0, r5, #0 - adds r0, #0x3c - ldrb r0, [r0] - adds r0, #1 - movs r2, #0x80 - rsbs r2, r2, #0 - adds r1, r2, #0 - adds r2, r4, #0 - adds r2, #0x3c - orrs r0, r1 - strb r0, [r2] - adds r0, r5, #0 - adds r0, #0x3b - ldrb r0, [r0] - adds r1, r4, #0 - adds r1, #0x3b - strb r0, [r1] - ldr r6, [r4, #0x54] - cmp r6, #0 - beq _08018D58 - movs r0, #1 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - movs r0, #0x56 - strb r0, [r4, #0xe] - adds r1, r4, #0 - adds r1, #0x40 - movs r0, #0x1c - strb r0, [r1] - adds r1, #4 - movs r0, #6 - strb r0, [r1] - ldr r0, _08018D54 @ =gUnk_080B3E18 - str r0, [r4, #0x48] - ldr r0, [r4, #0x54] - adds r0, #0x62 - movs r1, #0 - strb r1, [r0] - ldr r2, [r4, #0x54] - ldrb r1, [r2, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r2, #0x18] - b _08018DD2 - .align 2, 0 -_08018D50: .4byte gLinkEntity -_08018D54: .4byte gUnk_080B3E18 -_08018D58: - ldr r7, _08018DDC @ =gLinkState - ldrb r0, [r7, #0x1c] - cmp r0, #0 - bne _08018D64 - bl DeleteThisEntity -_08018D64: - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #6 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - movs r0, #0xa6 - strh r0, [r4, #0x12] - movs r0, #0x33 - strb r0, [r4, #0x1a] - adds r0, r4, #0 - adds r0, #0x60 - strh r6, [r0] - ldrb r0, [r7, #0x1d] - subs r0, #1 - strb r0, [r4, #0xa] - ldr r1, _08018DE0 @ =gUnk_080B3DE0 - ldrb r0, [r4, #0xa] - lsls r0, r0, #1 - adds r0, r0, r1 - ldrb r0, [r0] - strb r0, [r4, #0xe] - ldrb r0, [r4, #0xa] - lsls r0, r0, #1 - adds r0, #1 - adds r0, r0, r1 - ldrb r1, [r0] - adds r0, r4, #0 - adds r0, #0x44 - strb r1, [r0] - adds r1, r4, #0 - adds r1, #0x40 - movs r0, #0x1b - strb r0, [r1] - ldr r1, _08018DE4 @ =gUnk_080B3DE8 - ldrb r0, [r4, #0xa] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - str r0, [r4, #0x48] - str r4, [r5, #0x70] - adds r0, r5, #0 - bl sub_08078CD0 - str r6, [r5, #0x70] - ldrb r1, [r4, #0xa] - adds r1, #0xa - adds r0, r4, #0 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_08018FA0 -_08018DD2: - adds r0, r4, #0 - bl sub_0801766C - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08018DDC: .4byte gLinkState -_08018DE0: .4byte gUnk_080B3DE0 -_08018DE4: .4byte gUnk_080B3DE8 - - thumb_func_start sub_08018DE8 -sub_08018DE8: @ 0x08018DE8 - push {r4, r5, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x54] - adds r0, #0x3a - ldrb r1, [r0] - movs r5, #4 - adds r0, r5, #0 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _08018E08 - ldr r0, _08018E18 @ =gLinkState - strb r1, [r0, #0x1c] - bl DeleteThisEntity -_08018E08: - ldr r0, _08018E18 @ =gLinkState - ldrb r0, [r0, #0x1c] - cmp r0, #0 - beq _08018E1C - cmp r0, #5 - beq _08018E24 - b _08018E5A - .align 2, 0 -_08018E18: .4byte gLinkState -_08018E1C: - adds r0, r4, #0 - bl sub_08018F6C - b _08018E5A -_08018E24: - ldr r0, [r4, #0x54] - strb r5, [r0, #0xd] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - movs r2, #2 - movs r0, #2 - strb r0, [r4, #0xc] - adds r3, r4, #0 - adds r3, #0x29 - ldrb r1, [r3] - subs r0, #0xa - ands r0, r1 - orrs r0, r2 - strb r0, [r3] - ldr r2, [r4, #0x54] - ldrb r1, [r2, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2, #0x18] - adds r0, r4, #0 - bl sub_08018FA0 -_08018E5A: - ldr r0, _08018E64 @ =gLinkEntity - bl sub_08078CD0 - pop {r4, r5, pc} - .align 2, 0 -_08018E64: .4byte gLinkEntity - - thumb_func_start sub_08018E68 -sub_08018E68: @ 0x08018E68 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldr r0, [r4, #0x54] - cmp r0, #0 - bne _08018E82 - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - movs r1, #5 - bl sub_08008790 - b _08018EA8 -_08018E82: - adds r0, #0x3a - ldrb r1, [r0] - movs r0, #4 - ands r0, r1 - cmp r0, #0 - bne _08018E92 - bl DeleteThisEntity -_08018E92: - adds r0, r4, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08018EA8 - adds r0, r4, #0 - bl sub_08018F6C - b _08018F62 -_08018EA8: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0xff - beq _08018F46 - adds r0, r4, #0 - bl sub_0806F69C - ldrb r0, [r4, #0x15] - cmp r0, #8 - beq _08018EEA - cmp r0, #8 - bgt _08018ECC - cmp r0, #0 - beq _08018ED6 - b _08018EEE -_08018ECC: - cmp r0, #0x10 - beq _08018EDE - cmp r0, #0x18 - beq _08018EE4 - b _08018EEE -_08018ED6: - movs r6, #0 - movs r5, #4 - rsbs r5, r5, #0 - b _08018EEE -_08018EDE: - movs r6, #0 - movs r5, #4 - b _08018EEE -_08018EE4: - movs r6, #4 - rsbs r6, r6, #0 - b _08018EEC -_08018EEA: - movs r6, #4 -_08018EEC: - movs r5, #0 -_08018EEE: - ldr r1, [r4, #0x54] - cmp r1, #0 - beq _08018F00 - ldrb r0, [r4, #0x15] - strb r0, [r1, #0x15] - ldr r1, [r4, #0x54] - adds r0, r4, #0 - bl CopyPosition -_08018F00: - ldrb r0, [r4, #0xb] - cmp r0, #0 - bne _08018F0C - adds r0, r4, #0 - bl sub_0800451C -_08018F0C: - adds r0, r4, #0 - adds r1, r6, #0 - adds r2, r5, #0 - bl sub_0800029C - ldr r1, _08018F64 @ =gUnk_080B3DF4 - bl sub_08007DD6 - cmp r0, #0 - bne _08018F62 - adds r0, r4, #0 - adds r1, r6, #0 - adds r2, r5, #0 - bl sub_080002B4 - cmp r0, #0x74 - beq _08018F62 - ldr r1, _08018F68 @ =gUnk_08003E44 - movs r0, #0x2e - ldrsh r2, [r4, r0] - adds r2, r2, r6 - movs r0, #0x32 - ldrsh r3, [r4, r0] - adds r3, r3, r5 - adds r0, r4, #0 - bl sub_080040D8 - cmp r0, #0 - beq _08018F62 -_08018F46: - ldr r0, [r4, #0x54] - cmp r0, #0 - bne _08018F56 - ldrb r1, [r4, #0xa] - adds r1, #0xd - adds r0, r4, #0 - bl InitializeAnimation -_08018F56: - ldrb r0, [r4, #0xc] - adds r0, #1 - strb r0, [r4, #0xc] - adds r0, r4, #0 - bl sub_08018F6C -_08018F62: - pop {r4, r5, r6, pc} - .align 2, 0 -_08018F64: .4byte gUnk_080B3DF4 -_08018F68: .4byte gUnk_08003E44 - - thumb_func_start sub_08018F6C -sub_08018F6C: @ 0x08018F6C - push {r4, lr} - adds r4, r0, #0 - ldr r1, [r4, #0x54] - cmp r1, #0 - beq _08018F8A - movs r0, #5 - strb r0, [r1, #0xd] - ldr r2, [r4, #0x54] - ldrb r1, [r2, #0x18] - subs r0, #9 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2, #0x18] - b _08018F9A -_08018F8A: - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x5a - ldrb r0, [r0] - cmp r0, #0 - beq _08018F9E -_08018F9A: - bl DeleteThisEntity -_08018F9E: - pop {r4, pc} - - thumb_func_start sub_08018FA0 -sub_08018FA0: @ 0x08018FA0 - push {lr} - adds r2, r0, #0 - ldr r0, _08018FC8 @ =gLinkEntity - adds r0, #0x38 - ldrb r0, [r0] - adds r1, r2, #0 - adds r1, #0x38 - strb r0, [r1] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #2 - bne _08018FBC - movs r0, #1 - strb r0, [r2, #0xb] -_08018FBC: - ldrb r0, [r2, #0xa] - adds r0, #0xea - bl PlaySFX - pop {pc} - .align 2, 0 -_08018FC8: .4byte gLinkEntity - - thumb_func_start sub_08018FCC -sub_08018FCC: @ 0x08018FCC - push {lr} - ldr r2, _08018FE0 @ =gUnk_080B3E30 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08018FE0: .4byte gUnk_080B3E30 diff --git a/asm/code_08019444.s b/asm/code_08019444.s index aeba402d..f544c3a3 100644 --- a/asm/code_08019444.s +++ b/asm/code_08019444.s @@ -4742,7 +4742,7 @@ _0801B7D4: ldr r4, _0801B800 @ =gLinkEntity adds r0, r5, #0 adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r5, #0x15] adds r0, r5, #0 bl sub_0806F69C diff --git a/asm/code_08049CD4.s b/asm/code_08049CD4.s index 7322d820..dcd0d0a1 100644 --- a/asm/code_08049CD4.s +++ b/asm/code_08049CD4.s @@ -393,7 +393,7 @@ sub_08049F84: @ 0x08049F84 cmp r1, #0 beq _08049F9C adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection b _08049F9E _08049F9C: movs r0, #0xff diff --git a/asm/code_0806ED78.s b/asm/code_0806ED78.s index 9adcfdc3..6b986255 100644 --- a/asm/code_0806ED78.s +++ b/asm/code_0806ED78.s @@ -52,7 +52,7 @@ _0806EDC0: .4byte gLinkEntity sub_0806EDC4: @ 0x0806EDC4 push {lr} ldr r1, _0806EDD4 @ =gLinkEntity - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 pop {pc} .align 2, 0 @@ -74,7 +74,7 @@ sub_0806EDD8: @ 0x0806EDD8 beq _0806EDFC adds r0, r5, #0 adds r1, r6, #0 - bl sub_080045C4 + bl GetFacingDirection adds r7, r0, #0 _0806EDFC: adds r0, r7, #0 @@ -129,7 +129,7 @@ _0806EE4C: strh r0, [r1] ldr r1, _0806EE6C @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r4, #0 adds r1, #0x3e @@ -979,7 +979,7 @@ _0806F444: ldrh r4, [r3] adds r0, r5, #0 mov r1, sp - bl sub_080045C4 + bl GetFacingDirection adds r2, r0, #0 adds r0, r5, #0 adds r1, r4, #0 diff --git a/asm/code_0806FA6C.s b/asm/code_0806FA6C.s index 20060c2b..09bac7ac 100644 --- a/asm/code_0806FA6C.s +++ b/asm/code_0806FA6C.s @@ -242,14 +242,14 @@ _0806FC9C: thumb_func_start sub_0806FCA0 sub_0806FCA0: @ 0x0806FCA0 push {lr} - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 pop {pc} thumb_func_start sub_0806FCAC sub_0806FCAC: @ 0x0806FCAC push {lr} - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5B0 pop {pc} diff --git a/asm/code_0807CC3C.s b/asm/code_0807CC3C.s index 4d8b35ca..c1bff554 100644 --- a/asm/code_0807CC3C.s +++ b/asm/code_0807CC3C.s @@ -3013,7 +3013,7 @@ sub_0807E30C: @ 0x0807E30C beq _0807E348 adds r0, r5, #0 adds r1, r6, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5B0 strb r0, [r5, #0x14] _0807E348: @@ -3032,7 +3032,7 @@ _0807E348: str r0, [r4, #0x14] ldr r1, _0807E378 @ =gLinkEntity adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5B0 strb r0, [r5, #0x14] b _0807E37E @@ -4213,7 +4213,7 @@ sub_0807EB74: @ 0x0807EB74 push {r4, lr} adds r4, r0, #0 ldr r1, _0807EB88 @ =gLinkEntity - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5B0 strb r0, [r4, #0x14] pop {r4, pc} @@ -4226,7 +4226,7 @@ sub_0807EB8C: @ 0x0807EB8C adds r1, r0, #0 ldr r4, _0807EBA4 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5B0 movs r1, #0xfe ands r0, r1 diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index 11d92150..bd86ceb8 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -7600,7 +7600,7 @@ _080A8FE8: strb r0, [r4, #0xf] ldr r1, _080A9048 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 @@ -10132,7 +10132,7 @@ sub_080AA2E0: @ 0x080AA2E0 beq _080AA31C adds r0, r5, #0 adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection ldrb r1, [r5, #0x14] lsls r1, r1, #2 adds r0, #4 @@ -11638,7 +11638,7 @@ _080AADE0: strb r0, [r2] ldr r1, _080AAE60 @ =gLinkEntity adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r5, #0x15] adds r0, r5, #0 adds r0, #0x86 @@ -11706,7 +11706,7 @@ _080AAEA2: strb r0, [r4, #0xf] ldr r1, _080AAECC @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 @@ -13924,7 +13924,7 @@ sub_080ABF40: @ 0x080ABF40 strb r0, [r4, #0xc] ldr r1, _080ABFA0 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] adds r0, r4, #0 movs r1, #0 @@ -14120,7 +14120,7 @@ _080AC0B2: strb r0, [r4, #0xc] ldr r1, _080AC0EC @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] movs r0, #0xc0 lsls r0, r0, #1 @@ -14185,7 +14185,7 @@ _080AC13A: bne _080AC160 ldr r1, _080AC164 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 @@ -14223,7 +14223,7 @@ sub_080AC168: @ 0x080AC168 strb r0, [r4, #0xf] ldr r1, _080AC1C8 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 ldr r0, [r4, #0x50] adds r0, #0x84 @@ -15313,7 +15313,7 @@ _080AC964: strb r0, [r5, #0x10] ldr r1, _080AC9C8 @ =gLinkEntity adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r5, #0x15] movs r0, #0x97 lsls r0, r0, #1 diff --git a/asm/createBowEntity.s b/asm/createBowEntity.s index 050ae83a..e8f41fb8 100644 --- a/asm/createBowEntity.s +++ b/asm/createBowEntity.s @@ -5,6 +5,19 @@ .syntax unified .text + + thumb_func_start sub_08018FCC +sub_08018FCC: @ 0x08018FCC + push {lr} + ldr r2, _08018FE0 @ =gUnk_080B3E30 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08018FE0: .4byte gUnk_080B3E30 thumb_func_start sub_08018FE4 sub_08018FE4: @ 0x08018FE4 diff --git a/asm/cuccoAggr.s b/asm/cuccoAggr.s index dd9d23d2..0329c554 100644 --- a/asm/cuccoAggr.s +++ b/asm/cuccoAggr.s @@ -357,7 +357,7 @@ sub_08038F44: @ 0x08038F44 adds r4, r0, #0 ldr r0, _08038F8C @ =gLinkEntity adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_080390F8 @@ -422,7 +422,7 @@ _08038FB8: bne _08038FE0 ldr r1, _08038FF8 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 @@ -614,7 +614,7 @@ sub_08039140: @ 0x08039140 strb r0, [r4, #0xe] ldr r1, _08039174 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] ldr r0, _08039178 @ =0x0000FFFC strh r0, [r4, #0x36] diff --git a/asm/cuccoChickAggr.s b/asm/cuccoChickAggr.s index 5755667c..a581af08 100644 --- a/asm/cuccoChickAggr.s +++ b/asm/cuccoChickAggr.s @@ -319,7 +319,7 @@ sub_08022B44: @ 0x08022B44 str r0, [r4, #0x20] ldr r1, _08022B84 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 strb r1, [r4, #0x15] movs r0, #0xf diff --git a/asm/darkNut.s b/asm/darkNut.s index 2fb91aae..fd3af0e8 100644 --- a/asm/darkNut.s +++ b/asm/darkNut.s @@ -433,7 +433,7 @@ sub_08020E98: @ 0x08020E98 bne _08020ECA ldr r0, [r5] adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_080AEF88 @@ -471,7 +471,7 @@ _08020EF6: _08020F08: .4byte gUnk_020000B0 _08020F0C: adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_080AEF88 @@ -1177,7 +1177,7 @@ sub_08021424: @ 0x08021424 ldr r0, _08021450 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 ldrb r0, [r5, #0x14] bl sub_08021274 @@ -1293,7 +1293,7 @@ sub_080214FC: @ 0x080214FC ldr r0, _08021538 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r2, r0, #0 adds r0, r4, #0 adds r0, #0x5a diff --git a/asm/din.s b/asm/din.s index 547800e5..533ab213 100644 --- a/asm/din.s +++ b/asm/din.s @@ -54,7 +54,7 @@ _080647C2: strb r1, [r0] ldr r1, _080647FC @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/dog.s b/asm/dog.s index ac332d83..17558ef6 100644 --- a/asm/dog.s +++ b/asm/dog.s @@ -212,7 +212,7 @@ sub_08069CB8: @ 0x08069CB8 push {r4, r5, lr} adds r4, r0, #0 ldr r1, _08069CF8 @ =gLinkEntity - bl sub_080045C4 + bl GetFacingDirection ldr r2, _08069CFC @ =gUnk_08111DB0 ldrb r1, [r4, #0x14] lsls r1, r1, #5 diff --git a/asm/enemy49.s b/asm/enemy49.s index 65e6d90b..771bfb54 100644 --- a/asm/enemy49.s +++ b/asm/enemy49.s @@ -291,7 +291,7 @@ _0803D08A: ldr r0, _0803D0A8 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r5, #0x15] b _0803D0AE .align 2, 0 diff --git a/asm/enemy4D.s b/asm/enemy4D.s index 478b8ee5..196b629a 100644 --- a/asm/enemy4D.s +++ b/asm/enemy4D.s @@ -134,7 +134,7 @@ sub_0803EBB4: @ 0x0803EBB4 ldr r0, _0803EC10 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 movs r1, #0x18 ands r0, r1 @@ -649,7 +649,7 @@ sub_0803EF74: @ 0x0803EF74 beq _0803EFA8 adds r0, r4, #0 adds r1, r5, #0 - bl sub_080045C4 + bl GetFacingDirection ldrb r1, [r4, #0x15] subs r1, r1, r0 adds r1, #2 diff --git a/asm/enemy50.s b/asm/enemy50.s index 74f04c95..93b54bc7 100644 --- a/asm/enemy50.s +++ b/asm/enemy50.s @@ -627,7 +627,7 @@ _08040FB2: ldr r0, _08041008 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 diff --git a/asm/farore.s b/asm/farore.s index 002a469e..b543e4ea 100644 --- a/asm/farore.s +++ b/asm/farore.s @@ -54,7 +54,7 @@ _080649C2: strb r1, [r0] ldr r1, _080649FC @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/festari.s b/asm/festari.s index f0f5e8ca..c4e935f9 100644 --- a/asm/festari.s +++ b/asm/festari.s @@ -48,7 +48,7 @@ sub_0805FE48: @ 0x0805FE48 strb r0, [r2] ldr r1, _0805FE7C @ =gLinkEntity adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r5, #0 diff --git a/asm/flyingPot.s b/asm/flyingPot.s index ebe75329..98601cbc 100644 --- a/asm/flyingPot.s +++ b/asm/flyingPot.s @@ -448,7 +448,7 @@ sub_0803737C: @ 0x0803737C strb r0, [r4, #0xe] ldr r1, _080373AC @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] _080373A6: pop {r4, pc} diff --git a/asm/flyingSkull.s b/asm/flyingSkull.s index 1cc19610..3f75b1ca 100644 --- a/asm/flyingSkull.s +++ b/asm/flyingSkull.s @@ -639,7 +639,7 @@ sub_0803A048: @ 0x0803A048 strb r0, [r4, #0xe] ldr r1, _0803A07C @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] _0803A076: pop {r4, pc} diff --git a/asm/gentari.s b/asm/gentari.s index dc9930bc..c18bbf27 100644 --- a/asm/gentari.s +++ b/asm/gentari.s @@ -58,7 +58,7 @@ _0805FD72: strb r0, [r2] ldr r1, _0805FDA0 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/ghini.s b/asm/ghini.s index 9a1d26a5..ee0c58bc 100644 --- a/asm/ghini.s +++ b/asm/ghini.s @@ -414,7 +414,7 @@ _0803F2D8: ldr r0, _0803F304 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection b _0803F310 .align 2, 0 _0803F304: .4byte gUnk_020000B0 @@ -536,7 +536,7 @@ _0803F3C4: ldr r0, _0803F410 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 diff --git a/asm/ghostBrothers.s b/asm/ghostBrothers.s index 0cf03f99..0e393338 100644 --- a/asm/ghostBrothers.s +++ b/asm/ghostBrothers.s @@ -104,7 +104,7 @@ _08065C42: strb r0, [r2] ldr r1, _08065C70 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/gibdo.s b/asm/gibdo.s index ecc95e2d..f74e786a 100644 --- a/asm/gibdo.s +++ b/asm/gibdo.s @@ -511,7 +511,7 @@ sub_08037810: @ 0x08037810 beq _080378AC ldr r1, [r6] adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection ldrb r1, [r5, #0x15] subs r0, r0, r1 adds r0, #6 @@ -530,7 +530,7 @@ sub_08037810: @ 0x08037810 strh r0, [r5, #0x24] ldr r1, [r6] adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 ands r0, r4 strb r0, [r5, #0x15] diff --git a/asm/gina.s b/asm/gina.s index 4d2c851f..16be23ce 100644 --- a/asm/gina.s +++ b/asm/gina.s @@ -55,7 +55,7 @@ _0806C182: strb r0, [r2] ldr r1, _0806C1B0 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/gleerok.s b/asm/gleerok.s index 3d164b61..82ff48dc 100644 --- a/asm/gleerok.s +++ b/asm/gleerok.s @@ -1478,7 +1478,7 @@ sub_0802DB84: @ 0x0802DB84 push {r4, r5, lr} adds r5, r0, #0 ldr r1, _0802DBB0 @ =gLinkEntity - bl sub_080045C4 + bl GetFacingDirection strb r0, [r5, #0x15] adds r1, r5, #0 adds r1, #0x84 @@ -1561,7 +1561,7 @@ sub_0802DC1C: @ 0x0802DC1C push {r4, r5, r6, lr} adds r5, r0, #0 ldr r1, _0802DC40 @ =gLinkEntity - bl sub_080045C4 + bl GetFacingDirection adds r3, r0, #0 adds r1, r5, #0 adds r1, #0x84 @@ -1672,7 +1672,7 @@ sub_0802DCE0: @ 0x0802DCE0 beq _0802DD44 ldr r1, _0802DD1C @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] ldr r2, [r5] ldrb r1, [r2, #0x15] @@ -2565,7 +2565,7 @@ _0802E3A4: ldr r5, [r0] ldr r1, _0802E408 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 lsls r0, r0, #3 movs r2, #0 diff --git a/asm/gregal.s b/asm/gregal.s index 52b97594..274d9323 100644 --- a/asm/gregal.s +++ b/asm/gregal.s @@ -205,7 +205,7 @@ _0806CC40: strb r0, [r1] ldr r1, _0806CC7C @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r1, #8 diff --git a/asm/guardWithSpear.s b/asm/guardWithSpear.s index 2b935187..e520a382 100644 --- a/asm/guardWithSpear.s +++ b/asm/guardWithSpear.s @@ -125,7 +125,7 @@ sub_08063DC8: @ 0x08063DC8 strb r0, [r4, #0xe] ldr r1, _08063DF4 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 strb r0, [r4, #0x14] ldrb r1, [r4, #0x14] @@ -166,7 +166,7 @@ _08063E1E: strb r1, [r2] ldr r1, _08063E50 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 @@ -311,7 +311,7 @@ sub_08063F20: @ 0x08063F20 strb r1, [r2] ldr r1, _08063F74 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 @@ -737,7 +737,7 @@ _08064256: bne _0806428C ldr r1, _080642B0 @ =gLinkEntity adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5B0 strb r0, [r5, #0x14] lsls r0, r0, #0x18 @@ -882,7 +882,7 @@ _08064376: bne _080643AC ldr r1, _080643D0 @ =gLinkEntity adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5B0 strb r0, [r5, #0x14] lsls r0, r0, #0x18 diff --git a/asm/hurdyGurdyMan.s b/asm/hurdyGurdyMan.s index a9bce038..76e75707 100644 --- a/asm/hurdyGurdyMan.s +++ b/asm/hurdyGurdyMan.s @@ -59,7 +59,7 @@ _0806E34C: strb r0, [r1] ldr r1, _0806E3B0 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/item11.s b/asm/item11.s new file mode 100644 index 00000000..8ea3fa78 --- /dev/null +++ b/asm/item11.s @@ -0,0 +1,194 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_08018E68 +sub_08018E68: @ 0x08018E68 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + cmp r0, #0 + bne _08018E82 + adds r0, r4, #0 + bl GetNextFrame + adds r0, r4, #0 + movs r1, #5 + bl sub_08008790 + b _08018EA8 +_08018E82: + adds r0, #0x3a + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _08018E92 + bl DeleteThisEntity +_08018E92: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08018EA8 + adds r0, r4, #0 + bl sub_08018F6C + b _08018F62 +_08018EA8: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08018F46 + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0x15] + cmp r0, #8 + beq _08018EEA + cmp r0, #8 + bgt _08018ECC + cmp r0, #0 + beq _08018ED6 + b _08018EEE +_08018ECC: + cmp r0, #0x10 + beq _08018EDE + cmp r0, #0x18 + beq _08018EE4 + b _08018EEE +_08018ED6: + movs r6, #0 + movs r5, #4 + rsbs r5, r5, #0 + b _08018EEE +_08018EDE: + movs r6, #0 + movs r5, #4 + b _08018EEE +_08018EE4: + movs r6, #4 + rsbs r6, r6, #0 + b _08018EEC +_08018EEA: + movs r6, #4 +_08018EEC: + movs r5, #0 +_08018EEE: + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _08018F00 + ldrb r0, [r4, #0x15] + strb r0, [r1, #0x15] + ldr r1, [r4, #0x54] + adds r0, r4, #0 + bl CopyPosition +_08018F00: + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _08018F0C + adds r0, r4, #0 + bl sub_0800451C +_08018F0C: + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_0800029C + ldr r1, _08018F64 @ =gUnk_080B3DF4 + bl sub_08007DD6 + cmp r0, #0 + bne _08018F62 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_080002B4 + cmp r0, #0x74 + beq _08018F62 + ldr r1, _08018F68 @ =gUnk_08003E44 + movs r0, #0x2e + ldrsh r2, [r4, r0] + adds r2, r2, r6 + movs r0, #0x32 + ldrsh r3, [r4, r0] + adds r3, r3, r5 + adds r0, r4, #0 + bl sub_080040D8 + cmp r0, #0 + beq _08018F62 +_08018F46: + ldr r0, [r4, #0x54] + cmp r0, #0 + bne _08018F56 + ldrb r1, [r4, #0xa] + adds r1, #0xd + adds r0, r4, #0 + bl InitializeAnimation +_08018F56: + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_08018F6C +_08018F62: + pop {r4, r5, r6, pc} + .align 2, 0 +_08018F64: .4byte gUnk_080B3DF4 +_08018F68: .4byte gUnk_08003E44 + + thumb_func_start sub_08018F6C +sub_08018F6C: @ 0x08018F6C + push {r4, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _08018F8A + movs r0, #5 + strb r0, [r1, #0xd] + ldr r2, [r4, #0x54] + ldrb r1, [r2, #0x18] + subs r0, #9 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + b _08018F9A +_08018F8A: + adds r0, r4, #0 + bl GetNextFrame + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0 + beq _08018F9E +_08018F9A: + bl DeleteThisEntity +_08018F9E: + pop {r4, pc} + + thumb_func_start sub_08018FA0 +sub_08018FA0: @ 0x08018FA0 + push {lr} + adds r2, r0, #0 + ldr r0, _08018FC8 @ =gLinkEntity + adds r0, #0x38 + ldrb r0, [r0] + adds r1, r2, #0 + adds r1, #0x38 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _08018FBC + movs r0, #1 + strb r0, [r2, #0xb] +_08018FBC: + ldrb r0, [r2, #0xa] + adds r0, #0xea + bl PlaySFX + pop {pc} + .align 2, 0 +_08018FC8: .4byte gLinkEntity \ No newline at end of file diff --git a/asm/keaton.s b/asm/keaton.s index 0f6090cf..9120cafa 100644 --- a/asm/keaton.s +++ b/asm/keaton.s @@ -319,7 +319,7 @@ sub_080325E8: @ 0x080325E8 beq _0803264C ldr r1, [r5] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r3, r4, #0 adds r3, #0x5a ldrb r2, [r3] diff --git a/asm/kid.s b/asm/kid.s index 8b504d15..8463cba2 100644 --- a/asm/kid.s +++ b/asm/kid.s @@ -265,7 +265,7 @@ _0806229A: bhi _080622F2 ldr r1, _080622C8 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 ldrb r1, [r5] movs r2, #4 diff --git a/asm/kingDaltus.s b/asm/kingDaltus.s index 313b64e9..9b6bb8c6 100644 --- a/asm/kingDaltus.s +++ b/asm/kingDaltus.s @@ -26,7 +26,7 @@ KingDaltus: @ 0x080665E4 strb r1, [r4, #0xc] ldr r1, _08066630 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/leever.s b/asm/leever.s index 3c36a26a..99c2e4da 100644 --- a/asm/leever.s +++ b/asm/leever.s @@ -127,7 +127,7 @@ sub_0801FCB0: @ 0x0801FCB0 ldr r0, _0801FD14 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection adds r4, r0, #0 bl Random ldr r2, _0801FD18 @ =gUnk_080CA4C8 diff --git a/asm/lilypadLarge.s b/asm/lilypadLarge.s index 886a732b..5bda9660 100644 --- a/asm/lilypadLarge.s +++ b/asm/lilypadLarge.s @@ -913,7 +913,7 @@ _08085BB4: bl sub_08085CDC adds r0, r4, #0 adds r1, r5, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r5, #0x15] movs r1, #0x80 lsls r1, r1, #1 diff --git a/asm/mama.s b/asm/mama.s index d9b4ffcd..c1db8a76 100644 --- a/asm/mama.s +++ b/asm/mama.s @@ -62,7 +62,7 @@ _0806C3E2: strb r0, [r1] ldr r1, _0806C41C @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/mayorHagen.s b/asm/mayorHagen.s index 8ad776f4..2deaf59a 100644 --- a/asm/mayorHagen.s +++ b/asm/mayorHagen.s @@ -58,7 +58,7 @@ _0806CDE8: strb r0, [r1] ldr r1, _0806CE24 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r1, #4 diff --git a/asm/mazaalBracelet.s b/asm/mazaalBracelet.s index f429ef30..26460b6b 100644 --- a/asm/mazaalBracelet.s +++ b/asm/mazaalBracelet.s @@ -682,7 +682,7 @@ _0803A688: strb r1, [r4, #0xe] ldr r1, _0803A6A4 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] movs r0, #0xa0 lsls r0, r0, #2 @@ -2719,7 +2719,7 @@ sub_0803B5C0: @ 0x0803B5C0 push {r4, lr} adds r4, r0, #0 ldr r1, _0803B5E8 @ =gLinkEntity - bl sub_080045C4 + bl GetFacingDirection adds r2, r0, #0 cmp r2, #9 bhi _0803B5D2 diff --git a/asm/minecart.s b/asm/minecart.s index 3b654127..1075a035 100644 --- a/asm/minecart.s +++ b/asm/minecart.s @@ -343,7 +343,7 @@ _08091970: .4byte 0x00000137 _08091974: adds r0, r5, #0 adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r5, #0x15] _0809197E: ldr r3, _080919A8 @ =gLinkEntity diff --git a/asm/ministerPotho.s b/asm/ministerPotho.s index 2c8a5fb7..cd793eb1 100644 --- a/asm/ministerPotho.s +++ b/asm/ministerPotho.s @@ -151,7 +151,7 @@ _080668A2: strb r0, [r2] ldr r1, _080668D0 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/moldworm.s b/asm/moldworm.s index eb90aad2..5f88a6c9 100644 --- a/asm/moldworm.s +++ b/asm/moldworm.s @@ -1147,7 +1147,7 @@ sub_08023894: @ 0x08023894 strh r0, [r4, #0x32] ldr r0, [r5, #0x74] adds r1, r5, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 movs r1, #0x18 ands r0, r1 diff --git a/asm/mountainMinish.s b/asm/mountainMinish.s index eb27eb01..ab2b9fc0 100644 --- a/asm/mountainMinish.s +++ b/asm/mountainMinish.s @@ -186,7 +186,7 @@ _08067F58: strb r0, [r1] ldr r1, _08067F94 @ =gLinkEntity adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r5, #0 @@ -215,7 +215,7 @@ _08067F98: strb r1, [r4] ldr r1, _08067FD8 @ =gLinkEntity adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r5, #0 diff --git a/asm/mulldozer.s b/asm/mulldozer.s index e3e32213..a9f8f0f0 100644 --- a/asm/mulldozer.s +++ b/asm/mulldozer.s @@ -987,7 +987,7 @@ _0803337E: ldr r0, _080333B0 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r1, #2 movs r0, #0x1c diff --git a/asm/mutoh.s b/asm/mutoh.s index 834b749f..75fe0c2c 100644 --- a/asm/mutoh.s +++ b/asm/mutoh.s @@ -63,7 +63,7 @@ _08067030: strb r0, [r2] ldr r1, _08067060 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r1, #4 diff --git a/asm/nayru.s b/asm/nayru.s index 5f89882b..dd6c6974 100644 --- a/asm/nayru.s +++ b/asm/nayru.s @@ -54,7 +54,7 @@ _080648C2: strb r1, [r0] ldr r1, _080648FC @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/npc23.s b/asm/npc23.s index 319ea754..af5a0ba7 100644 --- a/asm/npc23.s +++ b/asm/npc23.s @@ -381,7 +381,7 @@ sub_08066570: @ 0x08066570 beq _080665DE adds r0, r5, #0 adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r3, r0, #0 movs r6, #1 movs r1, #0x18 diff --git a/asm/npc5.s b/asm/npc5.s index 5b37e2ae..d0f70ed1 100644 --- a/asm/npc5.s +++ b/asm/npc5.s @@ -209,7 +209,7 @@ sub_08060B5C: @ 0x08060B5C bne _08060B98 ldr r1, _08060B94 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection ldrb r1, [r4, #0x14] lsls r1, r1, #2 subs r0, r0, r1 @@ -573,7 +573,7 @@ sub_08060E34: @ 0x08060E34 strb r0, [r4, #0xc] ldr r1, _08060E6C @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 movs r1, #0x18 ands r0, r1 @@ -666,7 +666,7 @@ sub_08060EDC: @ 0x08060EDC _08060F00: ldr r1, _08060F30 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection ldrb r2, [r4, #0x14] lsls r1, r2, #2 subs r1, r0, r1 diff --git a/asm/object21.s b/asm/object21.s index c71cb1e9..0425edd8 100644 --- a/asm/object21.s +++ b/asm/object21.s @@ -222,7 +222,7 @@ _08087B1E: _08087B3C: ldr r0, [r4, #0x4c] adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection _08087B44: strb r0, [r4, #0x15] movs r0, #0x80 diff --git a/asm/object36.s b/asm/object36.s index b6feec33..4b9680e4 100644 --- a/asm/object36.s +++ b/asm/object36.s @@ -286,7 +286,7 @@ _0808BD34: ldr r4, _0808BD70 @ =gLinkEntity adds r0, r5, #0 adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r5, #0x15] adds r0, r5, #0 bl sub_0806F69C diff --git a/asm/object97.s b/asm/object97.s index da008362..c7072469 100644 --- a/asm/object97.s +++ b/asm/object97.s @@ -112,7 +112,7 @@ sub_0809DA64: @ 0x0809DA64 adds r5, r0, #0 ldr r4, [r5, #0x54] adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r5, #0 bl sub_0809E1C8 @@ -1108,7 +1108,7 @@ sub_0809E210: @ 0x0809E210 adds r1, r0, #0 ldr r4, _0809E230 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5B0 movs r1, #0xfe ands r0, r1 diff --git a/asm/octorok.s b/asm/octorok.s index 01f55afe..2a2de200 100644 --- a/asm/octorok.s +++ b/asm/octorok.s @@ -204,7 +204,7 @@ _0801EDC4: ldr r0, _0801EDE8 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 _0801EDD0: movs r1, #0x18 @@ -230,7 +230,7 @@ sub_0801EDEC: @ 0x0801EDEC cmp r1, #0 beq _0801EE12 adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 movs r1, #0x18 ands r0, r1 diff --git a/asm/octorokGolden.s b/asm/octorokGolden.s index 4908da57..3c805d39 100644 --- a/asm/octorokGolden.s +++ b/asm/octorokGolden.s @@ -230,7 +230,7 @@ _08037DC4: _08037DEE: ldr r1, _08037E10 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 movs r1, #0x18 ands r0, r1 @@ -254,7 +254,7 @@ sub_08037E14: @ 0x08037E14 strb r0, [r5, #0xe] ldr r1, _08037E6C @ =gLinkEntity adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection adds r4, r0, #4 movs r0, #0x18 ands r4, r0 diff --git a/asm/peahat.s b/asm/peahat.s index ae6e6f2a..8e1cce5b 100644 --- a/asm/peahat.s +++ b/asm/peahat.s @@ -415,7 +415,7 @@ _0802024C: ldr r0, _0802027C @ =gUnk_020000B0 ldr r1, [r0] adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection adds r4, r0, #0 bl Random ldr r2, _08020280 @ =gUnk_080CA5D4 @@ -478,7 +478,7 @@ _080202C8: ldr r0, _080202F4 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 diff --git a/asm/percy.s b/asm/percy.s index d933c8c6..a48c9a2c 100644 --- a/asm/percy.s +++ b/asm/percy.s @@ -120,7 +120,7 @@ _0806B470: strb r0, [r2] ldr r1, _0806B4C8 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r1, #4 diff --git a/asm/pesto.s b/asm/pesto.s index d45826ba..d281d484 100644 --- a/asm/pesto.s +++ b/asm/pesto.s @@ -504,7 +504,7 @@ sub_080242A0: @ 0x080242A0 ldr r0, _080242E4 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] adds r0, r4, #0 movs r1, #1 @@ -937,7 +937,7 @@ _0802460C: _08024612: ldr r1, [r5, #0x54] adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r5, #0x15] adds r0, r5, #0 movs r1, #0 @@ -1493,7 +1493,7 @@ _08024A40: beq _08024A9E ldr r1, [r4, #0x54] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 @@ -1507,7 +1507,7 @@ _08024A5E: ldr r0, _08024A80 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 @@ -1523,7 +1523,7 @@ _08024A84: ldr r0, _08024AD4 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] _08024A9C: movs r6, #1 diff --git a/asm/pina.s b/asm/pina.s index 86e9f2cb..25fba55c 100644 --- a/asm/pina.s +++ b/asm/pina.s @@ -194,7 +194,7 @@ _08063B9E: strb r0, [r1] ldr r1, _08063BDC @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r1, #4 diff --git a/asm/postman.s b/asm/postman.s index 5393d0a9..a08597ba 100644 --- a/asm/postman.s +++ b/asm/postman.s @@ -226,7 +226,7 @@ _08060582: bl sub_0806F118 ldr r1, _080605B4 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 @@ -245,7 +245,7 @@ _080605B8: bl sub_080606D8 ldr r1, _080605E0 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/puffstool.s b/asm/puffstool.s index 83f2ba43..1e5a87d6 100644 --- a/asm/puffstool.s +++ b/asm/puffstool.s @@ -742,7 +742,7 @@ _0802556C: bne _08025580 adds r0, r2, #0 adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] _08025580: adds r0, r4, #0 @@ -809,7 +809,7 @@ _080255FA: subs r4, #7 adds r0, r6, #0 adds r1, r5, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, r0, r4 movs r1, #0x1f ands r0, r1 diff --git a/asm/ropeGolden.s b/asm/ropeGolden.s index 33e71afb..7b6e7b10 100644 --- a/asm/ropeGolden.s +++ b/asm/ropeGolden.s @@ -285,7 +285,7 @@ sub_080383AC: @ 0x080383AC strh r0, [r4, #0x24] ldr r1, _080383E0 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 movs r1, #0x18 ands r0, r1 @@ -315,7 +315,7 @@ sub_080383E4: @ 0x080383E4 strh r0, [r4, #0x24] ldr r1, _0803842C @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 movs r1, #0x18 ands r0, r1 diff --git a/asm/rupeeLike.s b/asm/rupeeLike.s index 4375db40..72b5a3c8 100644 --- a/asm/rupeeLike.s +++ b/asm/rupeeLike.s @@ -268,7 +268,7 @@ sub_08029474: @ 0x08029474 strb r0, [r4, #0xe] ldr r1, _080294BC @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] lsls r0, r0, #0x18 lsrs r0, r0, #0x1c @@ -314,7 +314,7 @@ sub_080294D4: @ 0x080294D4 strb r0, [r4, #0xe] ldr r1, _08029518 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 diff --git a/asm/sittingPerson.s b/asm/sittingPerson.s index ff2f6fc7..127bf469 100644 --- a/asm/sittingPerson.s +++ b/asm/sittingPerson.s @@ -91,7 +91,7 @@ sub_080637B8: @ 0x080637B8 strb r0, [r1] ldr r1, _08063800 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 ldrb r0, [r4, #0x18] diff --git a/asm/sluggula.s b/asm/sluggula.s index cd02e68c..b5914318 100644 --- a/asm/sluggula.s +++ b/asm/sluggula.s @@ -437,7 +437,7 @@ _08023EC2: ldr r0, _08023F00 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection ldrb r2, [r5, #0x15] subs r1, r0, r2 cmp r1, #0 diff --git a/asm/smith.s b/asm/smith.s index c859901c..79b10146 100644 --- a/asm/smith.s +++ b/asm/smith.s @@ -36,7 +36,7 @@ Smith: @ 0x08065FC0 _08065FF0: ldr r1, _08066020 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r5, r5, r0 adds r0, r4, #0 diff --git a/asm/spearMoblin.s b/asm/spearMoblin.s index 505c126e..78c68b1b 100644 --- a/asm/spearMoblin.s +++ b/asm/spearMoblin.s @@ -462,7 +462,7 @@ _08028594: strb r1, [r4, #0xe] adds r0, r4, #0 adds r1, r5, #0 - bl sub_080045C4 + bl GetFacingDirection adds r5, r0, #0 ldrb r0, [r4, #0x15] adds r1, r5, #0 @@ -641,7 +641,7 @@ _080286FC: beq _08028724 adds r0, r5, #0 adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 movs r1, #0x18 ands r0, r1 diff --git a/asm/spikedBeetle.s b/asm/spikedBeetle.s index 3e4e18a6..1140c3d4 100644 --- a/asm/spikedBeetle.s +++ b/asm/spikedBeetle.s @@ -305,7 +305,7 @@ _0802B84A: ldr r0, _0802B874 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 diff --git a/asm/spinyChuchu.s b/asm/spinyChuchu.s index 9a108f72..ecc587b9 100644 --- a/asm/spinyChuchu.s +++ b/asm/spinyChuchu.s @@ -393,7 +393,7 @@ _0802271A: ldr r0, _08022754 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] adds r1, r4, #0 adds r1, #0x3f diff --git a/asm/stalfos.s b/asm/stalfos.s index be8c30c7..0e0ed424 100644 --- a/asm/stalfos.s +++ b/asm/stalfos.s @@ -334,7 +334,7 @@ _0803950A: strb r0, [r4, #0x15] ldr r1, _0803952C @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #4 movs r1, #0x18 ands r0, r1 @@ -681,7 +681,7 @@ _0803976A: strh r0, [r4, #0x24] ldr r1, [r5] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] ldrb r0, [r4, #0x15] adds r0, #4 @@ -722,7 +722,7 @@ _080397DC: strb r0, [r4, #0xe] ldr r1, [r5] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] ldrb r1, [r4, #0x14] adds r1, #0xc @@ -849,7 +849,7 @@ sub_080398C0: @ 0x080398C0 beq _08039908 ldr r1, _08039904 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection b _08039928 .align 2, 0 _08039900: .4byte gUnk_020000B0 diff --git a/asm/sturgeon.s b/asm/sturgeon.s index 696393f6..6bb91643 100644 --- a/asm/sturgeon.s +++ b/asm/sturgeon.s @@ -73,7 +73,7 @@ _08064B00: strb r3, [r2] ldr r1, _08064B30 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/teachers.s b/asm/teachers.s index c91bac97..72c9381d 100644 --- a/asm/teachers.s +++ b/asm/teachers.s @@ -71,7 +71,7 @@ _0806C604: strb r0, [r1] ldr r1, _0806C648 @ =gLinkEntity adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 ldrb r1, [r4] movs r2, #4 diff --git a/asm/tingleSiblings.s b/asm/tingleSiblings.s index 08e3d38d..d4cb0bc2 100644 --- a/asm/tingleSiblings.s +++ b/asm/tingleSiblings.s @@ -127,7 +127,7 @@ _08064E1A: strb r0, [r2] ldr r1, _08064E48 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r0, r4, #0 diff --git a/asm/townMinish.s b/asm/townMinish.s index 60b238ad..c0c2d4ce 100644 --- a/asm/townMinish.s +++ b/asm/townMinish.s @@ -24,7 +24,7 @@ sub_0806AC3C: @ 0x0806AC3C beq _0806AC70 adds r0, r5, #0 adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r2, r0, #0 movs r0, #0x1e ands r2, r0 @@ -163,7 +163,7 @@ _0806AD44: strb r1, [r5] ldr r1, _0806ADAC @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 adds r1, r0, #0 adds r1, #8 diff --git a/asm/townsperson.s b/asm/townsperson.s index 819d3c54..1993b4c6 100644 --- a/asm/townsperson.s +++ b/asm/townsperson.s @@ -273,7 +273,7 @@ sub_08061D64: @ 0x08061D64 strb r0, [r1] ldr r1, _08061DAC @ =gLinkEntity adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 ldrb r1, [r4] movs r2, #4 @@ -323,7 +323,7 @@ _08061DD4: strb r0, [r1] ldr r1, _08061E20 @ =gLinkEntity adds r0, r5, #0 - bl sub_080045C4 + bl GetFacingDirection bl sub_0806F5A4 ldrb r1, [r4] movs r2, #4 diff --git a/asm/vaatiEyesMacro.s b/asm/vaatiEyesMacro.s index b012d39f..623ce8a9 100644 --- a/asm/vaatiEyesMacro.s +++ b/asm/vaatiEyesMacro.s @@ -331,7 +331,7 @@ _0802EED6: bl CopyPositionAndSpriteOffset ldr r1, _0802EF14 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #1 movs r1, #0x1e ands r0, r1 @@ -461,7 +461,7 @@ sub_0802EFB8: @ 0x0802EFB8 _0802EFD2: ldr r0, _0802F01C @ =gLinkEntity adds r1, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r5, r0, #4 movs r0, #0x18 ands r5, r0 diff --git a/asm/vaatiProjectile.s b/asm/vaatiProjectile.s index 701a9a76..7f6c4e80 100644 --- a/asm/vaatiProjectile.s +++ b/asm/vaatiProjectile.s @@ -268,7 +268,7 @@ _0803E280: cmp r1, #0 beq _0803E29C adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 @@ -355,7 +355,7 @@ sub_0803E314: @ 0x0803E314 strb r0, [r4, #0xc] ldr r1, _0803E33C @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] _0803E332: adds r0, r4, #0 diff --git a/asm/vaatiRebornEnemy.s b/asm/vaatiRebornEnemy.s index 3ee3acb0..4d9ee088 100644 --- a/asm/vaatiRebornEnemy.s +++ b/asm/vaatiRebornEnemy.s @@ -794,7 +794,7 @@ _0803D68E: bne _0803D6C8 ldr r1, _0803D6F8 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r0, #2 movs r1, #0x1c ands r0, r1 @@ -938,7 +938,7 @@ _0803D78E: strb r0, [r4, #0xf] ldr r1, _0803D7E0 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection movs r1, #0x10 ands r0, r1 movs r1, #8 diff --git a/asm/vaatiTransfigured.s b/asm/vaatiTransfigured.s index 8a7d4cab..66e1aec0 100644 --- a/asm/vaatiTransfigured.s +++ b/asm/vaatiTransfigured.s @@ -1488,7 +1488,7 @@ _0804029E: bne _08040382 ldr r1, _080402DC @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection lsls r0, r0, #1 ldr r1, _080402E0 @ =gUnk_080D0B18 adds r0, r0, r1 diff --git a/asm/vaatiWrath.s b/asm/vaatiWrath.s index ec525e45..f96d5d64 100644 --- a/asm/vaatiWrath.s +++ b/asm/vaatiWrath.s @@ -2297,7 +2297,7 @@ _080424C6: bne _08042502 ldr r1, _08042504 @ =gLinkEntity adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection ldr r1, _08042508 @ =gUnk_080D0EB0 adds r0, r0, r1 ldrb r0, [r0] diff --git a/asm/wallMaster2.s b/asm/wallMaster2.s index 485c035e..e426c3bd 100644 --- a/asm/wallMaster2.s +++ b/asm/wallMaster2.s @@ -248,7 +248,7 @@ sub_0802CDE8: @ 0x0802CDE8 ldr r0, _0802CE38 @ =gUnk_020000B0 ldr r1, [r0] adds r0, r4, #0 - bl sub_080045C4 + bl GetFacingDirection adds r1, r0, #0 adds r0, r4, #0 bl sub_08004596 @@ -311,7 +311,7 @@ sub_0802CE68: @ 0x0802CE68 bne _0802CEAC adds r0, r4, #0 adds r1, r5, #0 - bl sub_080045C4 + bl GetFacingDirection strb r0, [r4, #0x15] adds r0, r4, #0 bl sub_0806F69C diff --git a/data/playerItemFunctions.s b/data/playerItemFunctions.s index 82723b78..b0d09e36 100644 --- a/data/playerItemFunctions.s +++ b/data/playerItemFunctions.s @@ -23,7 +23,7 @@ /*0x0e*/ .4byte SwordSpin /*0x0f*/ .4byte SwordBeam /*0x10*/ .4byte sub_080ACBCC -/*0x11*/ .4byte sub_08018C88 +/*0x11*/ .4byte Item11 /*0x12*/ .4byte sub_080700E8 /*0x13*/ .4byte sub_080ACF14 /*0x14*/ .4byte sub_0805FBD0 @@ -50,7 +50,7 @@ .4byte SwordSpin .4byte SwordBeam .4byte sub_080ACBCC -.4byte sub_08018C88 +.4byte Item11 .4byte sub_080700E8 .4byte sub_080ACF14 .4byte sub_0805FBD0 diff --git a/include/entity.h b/include/entity.h index 677b7d6c..8de44506 100644 --- a/include/entity.h +++ b/include/entity.h @@ -139,7 +139,8 @@ typedef struct Entity { /*0x6a*/ union SplitHWord field_0x6a; /*0x6c*/ u8 field_0x6c; /*0x6d*/ u8 field_0x6d; - /*0x6e*/ u8 filler4[6]; + /*0x6e*/ u8 filler4[2]; + /*0x70*/ u32 field_0x70; /*0x74*/ u16 field_0x74; /*0x76*/ u16 field_0x76; /*0x78*/ union SplitHWord field_0x78; diff --git a/include/functions.h b/include/functions.h index c715694d..ffeeeb75 100644 --- a/include/functions.h +++ b/include/functions.h @@ -46,7 +46,7 @@ extern void sub_0807DDAC(Entity*, u32); extern void sub_0807DDE4(Entity*); extern void sub_0806D02C(Entity*); extern u32 sub_0806F5A4(u32); -extern u32 sub_080045C4(Entity*, Entity*); +extern u32 GetFacingDirection(Entity*, Entity*); extern void sub_08078784(Entity*, u32); extern void sub_0807DD50(Entity*); extern void sub_0807DD94(Entity*, u32); @@ -65,7 +65,7 @@ extern void sub_0801D2B4(Entity*, u32); extern void sub_0806FD3C(Entity*); extern u32 sub_0801E99C(Entity*); extern void sub_0807DD50(Entity*); -extern u32 sub_080045C4(Entity*, Entity*); +extern u32 GetFacingDirection(Entity*, Entity*); extern void sub_0806F118(Entity*); extern void sub_0807DD94(Entity*, u32); extern void sub_0805ED14(u32*); diff --git a/include/link.h b/include/link.h index f6ce96be..fa4cec13 100644 --- a/include/link.h +++ b/include/link.h @@ -1,3 +1,5 @@ +// clang-format off + #ifndef LINK_H #define LINK_H @@ -5,53 +7,53 @@ #include "entity.h" typedef struct { - u8 filler[2]; - u8 jumpStatus; - u8 filler2[2]; - u8 heldObject; - u8 pushedObject; - u8 unk; - u16 unk2; - u8 unk3; - u8 keepFacing; - u8 linkAction; - u8 filler3[2]; - u8 hurtBlinkSpeed; - u8 filler4[4]; - u16 filler5[3]; - u8 filler6[2]; - u8 field_0x1c; - u8 filler9[2]; - u16 filler7[2]; - u8 swimState; - u8 filler8[5]; - u8* unk4; - union { - u32 all; - struct { - u32 filler9 : 3; - u32 noMinishCap : 1; - u32 pullingState : 1; - u32 windyState : 1; - u32 filler10 : 4; - u32 slipperyState : 1; - u32 filler11 : 5; - u32 filler11b : 16; - } PACKED b; - } flags; - u8 filler12[6]; - u16 unk5; - u8 filler13[2]; - u8 swordGoldParticle : 1; - u8 swordBlueParticle : 1; - u8 filler14 : 6; - u8 unk6; - u8 filler15[75]; - u8 unk7; - u32 filler16[7]; - u8 filler17[3]; - u8 unk71; - u32 unk8; + /*0x00*/ u8 filler[2]; + /*0x02*/ u8 jumpStatus; + /*0x03*/ u8 filler2[2]; + /*0x05*/ u8 heldObject; + /*0x06*/ u8 pushedObject; + /*0x07*/ u8 unk; + /*0x08*/ u16 unk2; + /*0x0a*/ u8 unk3; + /*0x0b*/ u8 keepFacing; + /*0x0c*/ u8 linkAction; + /*0x0d*/ u8 filler3[2]; + /*0x0f*/ u8 hurtBlinkSpeed; + /*0x10*/ u8 filler4[4]; + /*0x14*/ u16 filler5[3]; + /*0x1a*/ u8 filler6[2]; + /*0x1c*/ u8 field_0x1c; + /*0x1d*/ u8 filler9[5]; + /*0x22*/ u16 filler7[2]; + /*0x26*/ u8 swimState; + /*0x27*/ u8 filler8[5]; + /*0x2c*/ u8* unk4; + /*0x30*/ union { + /* */ u32 all; + /* */ struct { + /* */ u32 filler9 : 3; + /* */ u32 noMinishCap : 1; + /* */ u32 pullingState : 1; + /* */ u32 windyState : 1; + /* */ u32 filler10 : 4; + /* */ u32 slipperyState : 1; + /* */ u32 filler11 : 5; + /* */ u32 filler11b : 16; + /* */ } PACKED b; + /* */ } flags; + /*0x34*/ u8 filler12[6]; + /*0x3a*/ u16 unk5; + /*0x3c*/ u8 filler13[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; } LinkState; @@ -80,4 +82,6 @@ extern Entity gLinkEntity; extern u32 GetInventoryValue(u32); extern s32 ModHealth(s32); -#endif \ No newline at end of file +#endif + +// clang-format on \ No newline at end of file diff --git a/linker.ld b/linker.ld index a74be327..db7c5346 100644 --- a/linker.ld +++ b/linker.ld @@ -299,6 +299,9 @@ SECTIONS { asm/code_08016DF8.o(.text); /* C source compiled without interworking */ asm/code_08018500.o(.text); + src/code_08018C58.o(.text); + src/item11.o(.text); + asm/item11.o(.text); asm/createBowEntity.o(.text); asm/bowUse.o(.text); asm/sub_08019410.o(.text); @@ -567,6 +570,7 @@ SECTIONS { asm/vaati.o(.text); src/zelda.o(.text); asm/mutoh.o(.text); + src/carpenter.o(.text); asm/carpenter.o(.text); asm/castorWildsStatue.o(.text); src/cat.o(.text); diff --git a/src/bladeBrothers.c b/src/bladeBrothers.c index 361eea9b..5f6e5d44 100644 --- a/src/bladeBrothers.c +++ b/src/bladeBrothers.c @@ -134,7 +134,7 @@ void FUN_08068b2c(Entity* this) { if (this->interactType == '\x02') { this->action = 2; this->interactType = '\0'; - uVar1 = sub_0806F5A4(sub_080045C4(this, &gLinkEntity)); + uVar1 = sub_0806F5A4(GetFacingDirection(this, &gLinkEntity)); InitAnimationForceUpdate(this, uVar1); sub_0806F118(this); } else { diff --git a/src/carpenter.c b/src/carpenter.c new file mode 100644 index 00000000..b0608f6d --- /dev/null +++ b/src/carpenter.c @@ -0,0 +1,74 @@ +#include "global.h" +#include "entity.h" +#include "sprite.h" +#include "link.h" + +extern void DeleteThisEntity(); +extern u32 LoadExtraSpriteData(Entity*, SpriteLoadData*); +extern SpriteLoadData gUnk_08110CA8[]; +extern void sub_0805E3A0(Entity*, u32); +extern void sub_0807DD64(Entity*); +extern u32 GetFacingDirection(Entity*, Entity*); +extern void sub_0806F118(Entity*); +extern void sub_0807DDAC(Entity*, u32); +extern void sub_0807DDE4(Entity*); +extern u32 UpdateFuseInteraction(Entity*); +extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32); +extern void sub_0807000C(Entity*); +extern u32 sub_0806F5A4(); + +void Carpenter(Entity* this) { + if (*(u32*)&this->cutsceneBeh == 0) { + DeleteThisEntity(); + } + switch (this->action) { + case 0: + if (!LoadExtraSpriteData(this, gUnk_08110CA8 + this->entityType.form * 4)) + break; + this->action = 1; + this->field_0x69 = 0; + sub_0805E3A0(this, 2); + sub_0807DD64(this); + + case 1: + if (this->interactType == 2) { + this->action = 2; + this->interactType = 0; + this->field_0x69 = this->animIndex; + InitializeAnimation(this, sub_0806F5A4(GetFacingDirection(this, &gLinkEntity)) + 4 + (this->entityType.form * 8)); + sub_0806F118(this); + } else { + sub_0807DDAC(this, 0); + sub_0807DDE4(this); + GetNextFrame(this); + } + break; + case 2: + if (!UpdateFuseInteraction(this)) + break; + this->action = 1; + InitializeAnimation(this, this->field_0x69); + break; + } +} + +void Carpenter_Head(Entity* this) { + if ((this->entityType).form < 2) { + SetExtraSpriteFrame(this, 0, this->frames.all & 0xffffff7f); + SetExtraSpriteFrame(this, 1, this->frameIndex); + SetExtraSpriteFrame(this, 2, this->frameSpriteSettings & 0x3f); + SetSpriteSubEntryOffsetData1(this, 1, 0); + SetSpriteSubEntryOffsetData2(this, 1, 2); + sub_0807000C(this); + } else { + SetExtraSpriteFrame(this, 0, this->frames.all & 0xffffff7f); + SetExtraSpriteFrame(this, 1, this->frameIndex); + SetSpriteSubEntryOffsetData1(this, 1, 0); + sub_0807000C(this); + } +} + +void sub_080672b0(Entity *this, u32 param_2) +{ + InitializeAnimation(this,*(u32 *)(param_2 + 4) + (this->animationState >> 1) + this->entityType.form * 8); +} \ No newline at end of file diff --git a/src/code_08018C58.c b/src/code_08018C58.c new file mode 100644 index 00000000..23dd9fc6 --- /dev/null +++ b/src/code_08018C58.c @@ -0,0 +1,29 @@ +#include "global.h" +#include "entity.h" + +extern u32 SetTileType(u32 tileID, u32 tilePos, u32 layerID); + +void CreateMinishEntrance(u32 tilePos) +{ + u32 x, y; + u32 tileID = 0x185; + + for (y = 0; y <= 3; y++) { + for (x = 0; x <= 4; x++) { + SetTileType(tileID++, tilePos + x, 1); + } + tilePos += 0x40; + } +} + +void sub_08018C58(u32 tilePos) +{ + u32 i = 0; + + for (;i < 6;) { + SetTileType(0x260 + i, tilePos, 1); + SetTileType(0x261 + i, tilePos + 1, 1); + i += 2; + tilePos += 0x40; + } +} \ No newline at end of file diff --git a/src/dampe.c b/src/dampe.c index 983b030a..f228f783 100644 --- a/src/dampe.c +++ b/src/dampe.c @@ -9,7 +9,7 @@ extern void sub_0805E3A0(Entity*, u32); extern void sub_0807DD50(Entity*); -extern void sub_080045C4(Entity*, Entity*); +extern void GetFacingDirection(Entity*, Entity*); extern u32 sub_0806F5A4(void); extern void sub_0806F118(Entity*); extern void sub_0807DD94(Entity*, u32); @@ -37,7 +37,7 @@ void Dampe(Entity* this) { if (this->interactType == 2) { this->action = 2; this->interactType = 0; - sub_080045C4(this, &gLinkEntity); + GetFacingDirection(this, &gLinkEntity); InitAnimationForceUpdate(this, sub_0806F5A4() + 4); sub_0806F118(this); } else { diff --git a/src/epona.c b/src/epona.c index 0d294408..c86ef2d7 100644 --- a/src/epona.c +++ b/src/epona.c @@ -78,7 +78,7 @@ void sub_08065AA4(Entity* this) { sub_0805E3A0(this, 2); sub_08065A50(this); } - InitAnimationForceUpdate(this, sub_0806F5A4(sub_080045C4(this, &gLinkEntity))); + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gLinkEntity))); } else { sub_08065A50(this); sub_080791D0(); diff --git a/src/item11.c b/src/item11.c new file mode 100644 index 00000000..cd515863 --- /dev/null +++ b/src/item11.c @@ -0,0 +1,99 @@ +#include "global.h" +#include "entity.h" +#include "link.h" + +extern void DeleteThisEntity(); +extern void sub_08078CD0(Entity*); +extern void sub_08018FA0(Entity*); +extern void sub_0801766C(Entity*); +extern void sub_08018F6C(Entity*); + +extern void (*const gUnk_080B3DD0[])(Entity*); + +extern BoundingBox gUnk_080B3E18; +extern u8 gUnk_080B3DE0[]; +extern BoundingBox* gUnk_080B3DE8[]; + +void Item11(Entity *this) +{ + if (this->currentHealth) { + this->hurtBlinkTime = 0; + gUnk_080B3DD0[this->action](this); + } + else { + DeleteThisEntity(); + } +} + +void sub_08018CBC(Entity *this) +{ + u32 PVar1; + u8 uVar2; + Entity *pEVar3; + + *(u32 *)&this->cutsceneBeh = this->x.WORD = gLinkEntity.x.WORD; + *(u32 *)&this->field_0x80 = this->y.WORD = gLinkEntity.y.WORD; + uVar2 = this->animationState = gLinkEntity.animationState & 0xe; + this->direction = (u8)(uVar2 << 2); + this->nonPlanarMovement = 0x400; + this->damageType = 0x96; + this->field_0x3c = (gLinkEntity.field_0x3c + 1) | 0x80; + this->flags2 = gLinkEntity.flags2; + pEVar3 = this->attachedEntity; + if (pEVar3 != NULL) { + this->action = 1; + this->flags = this->flags & 0x7f; + this->actionDelay = 0x56; + this->field_0x40 = 0x1c; + this->field_0x44 = 6; + this->boundingBox = &gUnk_080B3E18; + this->attachedEntity->spriteOffsetX = 0; + this->attachedEntity->spriteSettings.b.ss0 = 0; + } + else { + if (gLinkState.field_0x1c == 0) { + DeleteThisEntity(); + } + this->action = 2; + this->spriteSettings.b.ss0 = 1; + this->spriteTileSize = 0xa6; + this->palette = 0x33; + this->spriteVramOffset = 0; + (this->entityType).form = gLinkState.filler9[0] - 1; + this->actionDelay = gUnk_080B3DE0[(this->entityType).form * 2]; + this->field_0x44 = gUnk_080B3DE0[(this->entityType).form * 2 + 1]; + this->field_0x40 = 0x1b; + this->boundingBox = gUnk_080B3DE8[(this->entityType).form]; + (u32 *)gLinkEntity.field_0x70 = this; + sub_08078CD0(&gLinkEntity); + (u32 *)gLinkEntity.field_0x70 = pEVar3; + InitializeAnimation(this, (this->entityType).form + 10); + sub_08018FA0(this); + } + sub_0801766C(this); +} + +void sub_08018DE8(Entity *this) +{ + u8 bVar1; + + bVar1 = this->attachedEntity->field_0x3a & 4; + if (bVar1 == 0) { + gLinkState.field_0x1c = bVar1; + DeleteThisEntity(); + } + switch (gLinkState.field_0x1c) { + case 0: + sub_08018F6C(this); + break; + case 5: + this->attachedEntity->previousActionFlag = 4; + this->flags = this->flags | 0x80; + this->action = 2; + this->ticks.b0 = 2; + this->attachedEntity->spriteSettings.b.ss0 = 1; + sub_08018FA0(this); + break; + } + sub_08078CD0(&gLinkEntity); +} \ No newline at end of file diff --git a/src/lakitu.c b/src/lakitu.c index 9c7c41d6..bd63a84a 100644 --- a/src/lakitu.c +++ b/src/lakitu.c @@ -53,7 +53,7 @@ extern u32 sub_0806FCB8(Entity *, u32, u32, u32); extern u32 sub_080041A0(Entity *, Entity *, u32, u32); // sub_0803CA84 -extern u32 sub_080045C4(Entity *, Entity *); +extern u32 GetFacingDirection(Entity *, Entity *); // sub_0803CAD0 extern u8 sub_080045D4(s16, s16, u16, u16); @@ -288,7 +288,7 @@ bool32 sub_0803CA4C(Entity *this) { } void sub_0803CA84(Entity *this, u32 unkParameter) { - u32 altAnimState = sub_080045C4(this, &gLinkEntity); + u32 altAnimState = GetFacingDirection(this, &gLinkEntity); if (((altAnimState - 3) & 7) > 2 || ((this->animationState - (altAnimState >> 3)) & 3) > 1) { u32 intermediate = (altAnimState + 4) & 0x18; @@ -334,7 +334,7 @@ void sub_0803CB34(Entity *this) { this->action = 5; this->damageType = 0xa6; - this->field_0x78.HALF.LO = sub_080045C4(this, &gLinkEntity); + this->field_0x78.HALF.LO = GetFacingDirection(this, &gLinkEntity); InitAnimationForceUpdate(this, this->animationState + 8); } diff --git a/src/malon.c b/src/malon.c index 3f9c4517..25140974 100644 --- a/src/malon.c +++ b/src/malon.c @@ -41,7 +41,7 @@ void sub_080658BC(Entity* this) { if (this->interactType == 2) { this->action = 2; this->interactType = 0; - InitAnimationForceUpdate(this, sub_0806F5A4(sub_080045C4(this, &gLinkEntity))); + InitAnimationForceUpdate(this, sub_0806F5A4(GetFacingDirection(this, &gLinkEntity))); sub_0806F118(this); } else { sub_0807DD94(this, 0); diff --git a/src/talon.c b/src/talon.c index ab9d0b92..0b8d396b 100644 --- a/src/talon.c +++ b/src/talon.c @@ -126,7 +126,7 @@ void sub_080656D4(Entity* this) { void sub_0806574C(Entity* this) { u32 j; - j = (this->animIndex & ~3) + sub_0806F5A4(sub_080045C4(this, &gLinkEntity)); + j = (this->animIndex & ~3) + sub_0806F5A4(GetFacingDirection(this, &gLinkEntity)); if (this->animIndex != j) { InitAnimationForceUpdate(this, j); } diff --git a/src/townMinish.c b/src/townMinish.c index 73d19682..c47a2a3f 100644 --- a/src/townMinish.c +++ b/src/townMinish.c @@ -52,7 +52,7 @@ void sub_0806ABFC(Entity *this) Entity *link = &gLinkEntity; if (sub_080041A0(this, link, 0x18, 0x18)) { - unk = sub_080045C4(this, link) & (u8)0x1e; + unk = GetFacingDirection(this, link) & (u8)0x1e; } else { unk = this->animationState << 2;