From 662e221f89aaaed63e80c167822d5d51bf5e172e Mon Sep 17 00:00:00 2001 From: Behemoth Date: Tue, 1 Sep 2020 00:57:40 +0200 Subject: [PATCH 01/14] label a bunch of stuff --- asm/armos.s | 14 +-- asm/ballChainSoldier.s | 4 +- asm/bigIceBlock.s | 2 +- asm/bigPushableLever.s | 4 +- asm/blockPushed.s | 2 +- asm/bobomb.s | 8 +- asm/bollard.s | 4 +- asm/book.s | 2 +- asm/bossDoor.s | 2 +- asm/bowMoblin.s | 2 +- asm/businessScrub.s | 2 +- asm/businessScrubPrologue.s | 8 +- asm/castleMaid.s | 2 +- asm/castorWildsStatue.s | 2 +- asm/chuchuBoss.s | 8 +- asm/cloudPiranha.s | 6 +- asm/code_080043E8.s | 4 +- asm/code_0800857C.s | 2 +- asm/code_08016DF8.s | 2 +- asm/code_08019444.s | 2 +- asm/code_08049CD4.s | 4 +- asm/code_080A5574.s | 34 +++--- asm/code_080AD90C.s | 4 +- asm/cucco.s | 2 +- asm/cuccoAggr.s | 12 +-- asm/cuccoChick.s | 2 +- asm/deathFx.s | 2 +- asm/dog.s | 6 +- asm/enemy4D.s | 4 +- asm/eyeSwitch.s | 2 +- asm/eyegore.s | 12 +-- asm/fairy.s | 2 +- asm/fallingBoulder.s | 2 +- asm/fan.s | 2 +- asm/figurineDevice.s | 2 +- asm/flyingPot.s | 2 +- asm/frozenWaterElement.s | 4 +- asm/gibdo.s | 6 +- asm/guardWithSpear.s | 6 +- asm/helmasaur.s | 2 +- asm/kid.s | 2 +- asm/lavaPlatform.s | 8 +- asm/likeLike.s | 4 +- asm/lockedDoor.s | 4 +- asm/madderpillar.s | 18 ++-- asm/managerF.s | 2 +- asm/minecartDoor.s | 4 +- asm/minishEzlo.s | 4 +- asm/moldworm.s | 2 +- asm/mountainMinish.s | 2 +- asm/mulldozer.s | 8 +- asm/npc23.s | 2 +- asm/object20.s | 2 +- asm/object24.s | 4 +- asm/object2A.s | 2 +- asm/object35.s | 4 +- asm/object43.s | 2 +- asm/object44.s | 2 +- asm/object64.s | 2 +- asm/object6A.s | 4 +- asm/object87.s | 2 +- asm/object8B.s | 2 +- asm/objectA0.s | 2 +- asm/objectA8.s | 2 +- asm/objectBlockingStairs.s | 6 +- asm/objectD.s | 4 +- asm/objectOnPillar.s | 4 +- asm/octorokBoss.s | 10 +- asm/octorokGolden.s | 4 +- asm/pesto.s | 2 +- asm/picoBloom.s | 2 +- asm/puffstool.s | 4 +- asm/pullableLever.s | 6 +- asm/pushableFurniture.s | 6 +- asm/pushableGrave.s | 2 +- asm/pushableLever.s | 4 +- asm/pushableRock.s | 2 +- asm/pushableStatue.s | 2 +- asm/rope.s | 4 +- asm/ropeGolden.s | 4 +- asm/scissorsBeetle.s | 6 +- asm/sensorBladeTrap.s | 2 +- asm/sluggula.s | 8 +- asm/smallIceBlock.s | 6 +- asm/spark.s | 2 +- asm/spearMoblin.s | 8 +- asm/specialFx.s | 2 +- asm/spikedBeetle.s | 6 +- asm/spinyBeetle.s | 2 +- asm/stalfos.s | 14 +-- asm/vaati.s | 6 +- asm/vaatiArm.s | 4 +- asm/vaatiEyesMacro.s | 6 +- asm/vaatiProjectile.s | 2 +- asm/vaatiReborn.s | 2 +- asm/vaatiTransfigured.s | 2 +- asm/vaatiWrath.s | 2 +- asm/wallMaster.s | 2 +- asm/warpPoint.s | 4 +- asm/waterDrop.s | 2 +- asm/windTribespeople.s | 2 +- asm/wizzrobeFire.s | 4 +- asm/wizzrobeIce.s | 4 +- asm/wizzrobeWind.s | 6 +- include/entity.h | 7 ++ include/functions.h | 4 +- src/enemy/acroBandits.c | 5 +- src/enemy/beetle.c | 23 ++-- src/enemy/bladeTrap.c | 4 +- src/enemy/chuchu.c | 42 ++++---- src/enemy/cuccoChickAggr.c | 10 +- src/enemy/darkNut.c | 32 +++--- src/enemy/doorMimic.c | 2 +- src/enemy/hangingSeed.c | 20 ++-- src/enemy/keaton.c | 4 +- src/enemy/keese.c | 94 ++++++++--------- src/enemy/lakitu.c | 4 +- src/enemy/leever.c | 108 ++++++++++--------- src/enemy/miniSlime.c | 2 +- src/enemy/moldorm.c | 2 +- src/enemy/octorok.c | 128 ++++++++++------------ src/enemy/peahat.c | 198 +++++++++++++++++++---------------- src/enemy/rockChuchu.c | 2 +- src/enemy/rollobite.c | 105 +++++++++---------- src/enemy/rupeeLike.c | 4 +- src/enemy/slime.c | 2 +- src/enemy/spinyChuchu.c | 16 +-- src/enemy/tektite.c | 2 +- src/enemy/tektiteGolden.c | 2 +- src/enemy/wisp.c | 2 +- src/npc/carlov.c | 6 +- src/npc/cow.c | 2 +- src/npc/melari.c | 4 +- src/npc/postman.c | 4 +- src/npc/townsperson.c | 2 +- src/object/lightableSwitch.c | 8 +- src/object/mask.c | 4 +- src/object/metalDoor.c | 4 +- src/object/object1A.c | 4 +- src/object/object2A.c | 2 +- src/object/pot.c | 2 +- src/object/railtrack.c | 8 +- 142 files changed, 670 insertions(+), 658 deletions(-) diff --git a/asm/armos.s b/asm/armos.s index 0f55d73d..e8c495cd 100644 --- a/asm/armos.s +++ b/asm/armos.s @@ -299,7 +299,7 @@ _080303C0: bl sub_08030834 movs r0, #0x95 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX b _0803042C .align 2, 0 _080303D0: .4byte gUnk_080FD2F0 @@ -450,7 +450,7 @@ _080304DE: strb r2, [r3] movs r0, #0x95 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _080304F0: pop {r4, pc} .align 2, 0 @@ -502,7 +502,7 @@ _0803053E: strb r0, [r3] movs r0, #0x95 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _08030552: pop {pc} @@ -597,7 +597,7 @@ _080305E4: cmp r0, #0 bne _08030608 adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement cmp r0, #0 bne _0803064A ldrb r0, [r4, #0x15] @@ -624,7 +624,7 @@ _0803061E: cmp r3, #0 bne _08030638 adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement cmp r0, #0 bne _0803064A ldrb r0, [r4, #0x15] @@ -1146,7 +1146,7 @@ _08030A02: sub_08030A04: @ 0x08030A04 push {r4, lr} adds r4, r0, #0 - bl sub_080AEF88 + bl ProcessMovement adds r4, #0x5a ldrb r1, [r4] movs r0, #1 @@ -1157,7 +1157,7 @@ sub_08030A04: @ 0x08030A04 ands r0, r1 strb r0, [r4] ldr r0, _08030A28 @ =0x00000101 - bl sub_08004488 + bl EnqueSFX _08030A24: pop {r4, pc} .align 2, 0 diff --git a/asm/ballChainSoldier.s b/asm/ballChainSoldier.s index 210d6ad8..817a4c7b 100644 --- a/asm/ballChainSoldier.s +++ b/asm/ballChainSoldier.s @@ -161,7 +161,7 @@ sub_0803E61C: @ 0x0803E61C cmp r0, #0 bne _0803E654 adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement cmp r0, #0 bne _0803E654 adds r0, r4, #0 @@ -306,7 +306,7 @@ sub_0803E71C: @ 0x0803E71C movs r0, #0xf6 strb r0, [r1] adds r0, #0x65 - bl sub_08004488 + bl EnqueSFX _0803E756: pop {pc} .align 2, 0 diff --git a/asm/bigIceBlock.s b/asm/bigIceBlock.s index 4283a43b..d7ff4818 100644 --- a/asm/bigIceBlock.s +++ b/asm/bigIceBlock.s @@ -98,7 +98,7 @@ sub_080997CC: @ 0x080997CC strb r1, [r4, #0xc] strb r0, [r4, #0xe] ldr r0, _080997F0 @ =0x000001B3 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl sub_080997F4 _080997EC: diff --git a/asm/bigPushableLever.s b/asm/bigPushableLever.s index 3edb8811..20cb7569 100644 --- a/asm/bigPushableLever.s +++ b/asm/bigPushableLever.s @@ -66,7 +66,7 @@ sub_08098F14: @ 0x08098F14 bl SetTile movs r0, #0x99 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX adds r0, r5, #0 movs r1, #0x1e bl sub_0805E4E0 @@ -348,7 +348,7 @@ _08099166: cmp r0, #0 bne _08099194 ldr r0, _080991A0 @ =0x00000131 - bl sub_08004488 + bl EnqueSFX _08099194: pop {r4, pc} .align 2, 0 diff --git a/asm/blockPushed.s b/asm/blockPushed.s index 35455994..551d6dd9 100644 --- a/asm/blockPushed.s +++ b/asm/blockPushed.s @@ -233,7 +233,7 @@ _08082FF0: bl sub_080832D8 _08083088: ldr r0, _08083090 @ =0x0000010F - bl sub_08004488 + bl EnqueSFX _0808308E: pop {r4, r5, r6, pc} .align 2, 0 diff --git a/asm/bobomb.s b/asm/bobomb.s index 7dc63497..e36df5cd 100644 --- a/asm/bobomb.s +++ b/asm/bobomb.s @@ -123,7 +123,7 @@ _0802C75E: adds r0, r4, #0 bl sub_0802CB68 ldr r0, _0802C76C @ =0x0000014D - bl sub_08004488 + bl EnqueSFX b _0802C79E .align 2, 0 _0802C76C: .4byte 0x0000014D @@ -375,7 +375,7 @@ sub_0802C91C: @ 0x0802C91C adds r4, r0, #0 bl GetNextFrame adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement adds r0, r4, #0 adds r0, #0x82 ldrb r0, [r0] @@ -638,7 +638,7 @@ _0802CB10: bne _0802CB30 movs r0, #0x82 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _0802CB30: adds r0, r4, #0 bl sub_0802CC18 @@ -777,7 +777,7 @@ sub_0802CC18: @ 0x0802CC18 movs r0, #0x1c strb r0, [r1] ldr r0, _0802CC38 @ =0x0000014D - bl sub_08004488 + bl EnqueSFX _0802CC34: pop {pc} .align 2, 0 diff --git a/asm/bollard.s b/asm/bollard.s index e6c5457e..4fdf8b39 100644 --- a/asm/bollard.s +++ b/asm/bollard.s @@ -76,7 +76,7 @@ _0808B2F4: ldrb r2, [r2] bl SetTile ldr r0, _0808B320 @ =0x000001A5 - bl sub_08004488 + bl EnqueSFX _0808B31C: pop {r4, pc} .align 2, 0 @@ -130,7 +130,7 @@ _0808B36C: adds r0, r4, #0 bl sub_0808B3AC ldr r0, _0808B388 @ =0x000001A5 - bl sub_08004488 + bl EnqueSFX _0808B384: pop {r4, pc} .align 2, 0 diff --git a/asm/book.s b/asm/book.s index a0496c64..f5f6c852 100644 --- a/asm/book.s +++ b/asm/book.s @@ -190,7 +190,7 @@ _0809B4C0: lsls r0, r0, #2 strb r0, [r1, #0x15] ldr r0, _0809B518 @ =0x0000010F - bl sub_08004488 + bl EnqueSFX b _0809B520 .align 2, 0 _0809B510: .4byte gPlayerState diff --git a/asm/bossDoor.s b/asm/bossDoor.s index 50bdfbad..577953ae 100644 --- a/asm/bossDoor.s +++ b/asm/bossDoor.s @@ -358,7 +358,7 @@ _0808C470: strh r0, [r1, #0x32] _0808C494: ldr r0, _0808C4A0 @ =0x0000010B - bl sub_08004488 + bl EnqueSFX _0808C49A: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/bowMoblin.s b/asm/bowMoblin.s index faaa78d4..4ac302e7 100644 --- a/asm/bowMoblin.s +++ b/asm/bowMoblin.s @@ -675,7 +675,7 @@ sub_0803C6DC: @ 0x0803C6DC strh r0, [r4, #0x24] _0803C6EA: adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement adds r0, r4, #0 bl GetNextFrame pop {r4, pc} diff --git a/asm/businessScrub.s b/asm/businessScrub.s index ae2dd002..c0c6f131 100644 --- a/asm/businessScrub.s +++ b/asm/businessScrub.s @@ -70,7 +70,7 @@ sub_08028934: @ 0x08028934 strh r0, [r1, #0x36] _08028982: ldr r0, _0802898C @ =0x000001BB - bl sub_08004488 + bl EnqueSFX _08028988: pop {r4, pc} .align 2, 0 diff --git a/asm/businessScrubPrologue.s b/asm/businessScrubPrologue.s index b307d3c5..deb2307f 100644 --- a/asm/businessScrubPrologue.s +++ b/asm/businessScrubPrologue.s @@ -85,7 +85,7 @@ _08045C16: movs r1, #0xff strb r1, [r0] ldr r0, _08045C34 @ =0x000001BB - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 movs r1, #2 bl sub_0805E3A0 @@ -480,7 +480,7 @@ _08045F00: adds r0, r4, #0 bl sub_080954AC ldr r0, _08045F34 @ =0x0000018D - bl sub_08004488 + bl EnqueSFX b _08045F4E .align 2, 0 _08045F34: .4byte 0x0000018D @@ -698,7 +698,7 @@ _080460AE: bge _0804608A movs r0, #0xb7 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX ldr r0, _08046120 @ =0x000007A2 movs r1, #1 bl sub_0807BA8C @@ -725,7 +725,7 @@ _080460AE: bl CopyPosition movs r0, #0xc2 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _08046102: ldr r1, [r7, #0x54] cmp r1, #0 diff --git a/asm/castleMaid.s b/asm/castleMaid.s index 4eaebcec..1c5ca1fc 100644 --- a/asm/castleMaid.s +++ b/asm/castleMaid.s @@ -288,7 +288,7 @@ _08064710: orrs r0, r1 str r0, [r5, #8] adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement movs r0, #0x2e ldrsh r1, [r4, r0] adds r2, r4, #0 diff --git a/asm/castorWildsStatue.s b/asm/castorWildsStatue.s index cb22f84d..90bd9782 100644 --- a/asm/castorWildsStatue.s +++ b/asm/castorWildsStatue.s @@ -260,7 +260,7 @@ _08067560: ble _0806753A movs r0, #0xa6 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX movs r0, #0x28 movs r1, #4 bl sub_08080964 diff --git a/asm/chuchuBoss.s b/asm/chuchuBoss.s index 0ad8aaca..a4ababb3 100644 --- a/asm/chuchuBoss.s +++ b/asm/chuchuBoss.s @@ -1407,7 +1407,7 @@ _0802670A: bl PlaySFX _08026726: adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement _0802672C: adds r0, r4, #0 adds r0, #0x76 @@ -1589,7 +1589,7 @@ sub_0802686C: @ 0x0802686C cmp r5, #0 beq _08026888 adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement b _080268BE _08026888: movs r0, #0x10 @@ -2687,7 +2687,7 @@ _080270D4: ldrb r0, [r0, #0xc] strb r0, [r5, #0x15] adds r0, r5, #0 - bl sub_080AEF88 + bl ProcessMovement _080270E0: adds r0, r6, #0 adds r0, #0x85 @@ -2747,7 +2747,7 @@ _08027110: b _080271FE _0802714A: adds r0, r5, #0 - bl sub_080AEF88 + bl ProcessMovement b _080271FE _08027152: adds r0, r6, #0 diff --git a/asm/cloudPiranha.s b/asm/cloudPiranha.s index 4ed97086..b30f3fb4 100644 --- a/asm/cloudPiranha.s +++ b/asm/cloudPiranha.s @@ -376,7 +376,7 @@ sub_080386B8: @ 0x080386B8 strb r0, [r2] movs r0, #0x92 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 movs r1, #0x70 bl sub_0801D2B4 @@ -459,7 +459,7 @@ sub_08038754: @ 0x08038754 orrs r0, r1 strb r0, [r2] ldr r0, _080387C0 @ =0x0000012B - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 movs r1, #0x71 bl sub_0801D2B4 @@ -593,7 +593,7 @@ _08038890: cmp r0, #0 bne _080388A8 adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement b _080388B2 _080388A8: subs r0, #1 diff --git a/asm/code_080043E8.s b/asm/code_080043E8.s index 0a6fd073..85ecffd6 100644 --- a/asm/code_080043E8.s +++ b/asm/code_080043E8.s @@ -85,8 +85,8 @@ sub_08004484: @ 0x08004484 ldr r2, _080044DC @ =gUnk_03005FF0 bx r2 - thumb_func_start sub_08004488 -sub_08004488: @ 0x08004488 + thumb_func_start EnqueSFX +EnqueSFX: @ 0x08004488 ldr r1, _080044E0 @ =gUnk_02024048 ldrb r2, [r1] cmp r2, #8 diff --git a/asm/code_0800857C.s b/asm/code_0800857C.s index 2cd3657b..5dbf7120 100644 --- a/asm/code_0800857C.s +++ b/asm/code_0800857C.s @@ -769,7 +769,7 @@ sub_08008B22: @ 0x08008B22 sub_08008B2E: @ 0x08008B2E push {r0, lr} adds r0, r2, #0 - bl sub_08004488 + bl EnqueSFX pop {r0, pc} .align 2, 0 _08008B38: .4byte 0x00000180 diff --git a/asm/code_08016DF8.s b/asm/code_08016DF8.s index b30e6ecb..ef099089 100644 --- a/asm/code_08016DF8.s +++ b/asm/code_08016DF8.s @@ -398,7 +398,7 @@ _080170E8: cmp r0, #0 bne _08017112 ldr r0, _08017138 @ =0x0000011F - bl sub_08004488 + bl EnqueSFX _08017112: ldr r0, _0801712C @ =gUnk_02002A40 adds r2, r0, #0 diff --git a/asm/code_08019444.s b/asm/code_08019444.s index a9a303c8..ebd87ab7 100644 --- a/asm/code_08019444.s +++ b/asm/code_08019444.s @@ -4328,7 +4328,7 @@ _0801B4AC: cmp r0, #0 bne _0801B4C0 movs r0, #0xfb - bl sub_08004488 + bl EnqueSFX _0801B4C0: pop {r4, pc} .align 2, 0 diff --git a/asm/code_08049CD4.s b/asm/code_08049CD4.s index a7103c1e..3ad1023e 100644 --- a/asm/code_08049CD4.s +++ b/asm/code_08049CD4.s @@ -364,8 +364,8 @@ _08049F60: pop {r4, r5, pc} .align 2, 0 - thumb_func_start sub_08049F64 -sub_08049F64: @ 0x08049F64 + thumb_func_start PlayerInRange +PlayerInRange: @ 0x08049F64 push {r4, r5, lr} adds r4, r0, #0 adds r0, r1, #0 diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index 9619ff0d..d9d6fa0c 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -6061,7 +6061,7 @@ sub_080A8470: @ 0x080A8470 cmp r0, #0x68 bne _080A848E movs r0, #0x86 - bl sub_08004488 + bl EnqueSFX _080A848E: adds r0, r4, #0 bl DeleteEntity @@ -6115,7 +6115,7 @@ sub_080A84C8: @ 0x080A84C8 strb r0, [r1] _080A84F0: ldr r0, _080A8500 @ =0x0000018D - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 movs r1, #0x18 bl InitializeAnimation @@ -6328,7 +6328,7 @@ sub_080A8680: @ 0x080A8680 strb r1, [r0, #0xf] movs r0, #0x8c lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX pop {pc} thumb_func_start sub_080A86A0 @@ -6344,7 +6344,7 @@ sub_080A86A0: @ 0x080A86A0 strh r3, [r0, #0x24] movs r0, #0xc7 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX pop {pc} thumb_func_start sub_080A86BC @@ -6810,7 +6810,7 @@ _080A8A16: movs r1, #1 bl InitializeAnimation movs r0, #0x84 - bl sub_08004488 + bl EnqueSFX movs r0, #3 strb r0, [r5, #0xc] b _080A8A44 @@ -6893,7 +6893,7 @@ _080A8AAA: adds r0, r2, #0 bl InitializeAnimation ldr r0, _080A8AC4 @ =0x0000015F - bl sub_08004488 + bl EnqueSFX _080A8AC2: pop {pc} .align 2, 0 @@ -7053,7 +7053,7 @@ _080A8BDA: bl InitializeAnimation movs r0, #0xaf lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _080A8BF4: pop {pc} .align 2, 0 @@ -7198,7 +7198,7 @@ _080A8CEE: bl InitializeAnimation movs r0, #0xb0 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _080A8D08: pop {pc} .align 2, 0 @@ -8110,7 +8110,7 @@ sub_080A93DC: @ 0x080A93DC bl InitializeAnimation movs r0, #0xc5 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl sub_0806F69C b _080A9424 @@ -8199,7 +8199,7 @@ sub_080A9488: @ 0x080A9488 lsrs r0, r0, #3 strb r0, [r4, #0x14] movs r0, #0x74 - bl sub_08004488 + bl EnqueSFX ldrb r1, [r4, #0x14] adds r0, r4, #0 bl sub_080A94C0 @@ -9728,7 +9728,7 @@ sub_080A9FD0: @ 0x080A9FD0 ands r0, r1 strb r0, [r2] ldr r0, _080AA038 @ =0x0000015D - bl sub_08004488 + bl EnqueSFX _080A9FF2: movs r0, #0x2e ldrsh r1, [r5, r0] @@ -9906,7 +9906,7 @@ _080AA136: bl DeleteThisEntity _080AA14E: movs r0, #0xf2 - bl sub_08004488 + bl EnqueSFX movs r4, #1 strb r4, [r6, #0xc] movs r0, #0xff @@ -10715,7 +10715,7 @@ _080AA774: adds r0, r4, #0 bl InitAnimationForceUpdate ldr r0, _080AA788 @ =0x00000101 - bl sub_08004488 + bl EnqueSFX _080AA784: pop {r4, r5, r6, pc} .align 2, 0 @@ -10780,7 +10780,7 @@ _080AA7DA: strb r0, [r5] movs r0, #0x80 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _080AA806: ldrb r1, [r5] movs r0, #0x80 @@ -10989,7 +10989,7 @@ _080AA920: strh r0, [r7, #0x32] movs r0, #0x80 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _080AA99A: pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -13118,7 +13118,7 @@ sub_080AB950: @ 0x080AB950 cmp r0, #0 bne _080AB99C adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement ldrb r0, [r4, #0x15] lsrs r0, r0, #3 ldr r1, _080AB994 @ =gUnk_0812A6C4 @@ -15575,7 +15575,7 @@ sub_080ACB90: @ 0x080ACB90 movs r2, #0x40 bl CreateFx ldr r0, _080ACBC8 @ =0x00000119 - bl sub_08004488 + bl EnqueSFX bl DeleteThisEntity _080ACBC6: pop {r4, pc} diff --git a/asm/code_080AD90C.s b/asm/code_080AD90C.s index 560b933d..b8d21b9b 100644 --- a/asm/code_080AD90C.s +++ b/asm/code_080AD90C.s @@ -3036,8 +3036,8 @@ _080AEF7E: pop {r4, r5, r6, r7, pc} .align 2, 0 - thumb_func_start sub_080AEF88 -sub_080AEF88: @ 0x080AEF88 + thumb_func_start ProcessMovement +ProcessMovement: @ 0x080AEF88 push {r4, lr} adds r4, r0, #0 ldrb r1, [r4, #0x15] diff --git a/asm/cucco.s b/asm/cucco.s index bd176a46..13120cfc 100644 --- a/asm/cucco.s +++ b/asm/cucco.s @@ -93,7 +93,7 @@ _0806E52C: lsls r1, r1, #1 adds r1, r1, r4 ldrh r0, [r1] - bl sub_08004488 + bl EnqueSFX _0806E552: adds r0, r5, #0 bl sub_0806E65C diff --git a/asm/cuccoAggr.s b/asm/cuccoAggr.s index acf5bcf4..a339f4cc 100644 --- a/asm/cuccoAggr.s +++ b/asm/cuccoAggr.s @@ -194,7 +194,7 @@ sub_08038DD8: @ 0x08038DD8 movs r1, #4 bl InitializeAnimation ldr r0, _08038E14 @ =0x000001D9 - bl sub_08004488 + bl EnqueSFX pop {pc} .align 2, 0 _08038E10: .4byte gUnk_080CF7BC @@ -238,7 +238,7 @@ sub_08038E18: @ 0x08038E18 ands r0, r1 strb r0, [r4, #0x15] adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement adds r0, r4, #0 bl UpdateSpriteForCollisionLayer _08038E70: @@ -304,7 +304,7 @@ sub_08038ED0: @ 0x08038ED0 sub_08038EE0: @ 0x08038EE0 push {r4, lr} adds r4, r0, #0 - bl sub_080AEF88 + bl ProcessMovement adds r0, r4, #0 bl GetNextFrame adds r0, r4, #0 @@ -362,7 +362,7 @@ sub_08038F44: @ 0x08038F44 adds r0, r4, #0 bl sub_080390F8 adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement movs r1, #0xc0 lsls r1, r1, #5 adds r0, r4, #0 @@ -519,7 +519,7 @@ _0803906C: movs r1, #0xeb lsls r1, r1, #1 adds r0, r5, r1 - bl sub_08004488 + bl EnqueSFX b _080390BC _080390AA: movs r0, #4 @@ -743,7 +743,7 @@ sub_08039218: @ 0x08039218 bl InitializeAnimation _0803924C: ldr r0, _0803925C @ =0x000001D9 - bl sub_08004488 + bl EnqueSFX pop {pc} .align 2, 0 _08039254: .4byte gUnk_080CF824 diff --git a/asm/cuccoChick.s b/asm/cuccoChick.s index 23386b60..d325fcc8 100644 --- a/asm/cuccoChick.s +++ b/asm/cuccoChick.s @@ -81,7 +81,7 @@ _0806E782: cmp r1, #0 beq _0806E7A8 movs r0, #0xd6 - bl sub_08004488 + bl EnqueSFX _0806E7A8: adds r0, r4, #0 bl sub_0806E838 diff --git a/asm/deathFx.s b/asm/deathFx.s index 43281d5a..ca601373 100644 --- a/asm/deathFx.s +++ b/asm/deathFx.s @@ -125,7 +125,7 @@ _08081702: movs r0, #1 strb r0, [r4, #0xc] movs r0, #0xff - bl sub_08004488 + bl EnqueSFX _0808170C: adds r0, r4, #0 movs r1, #3 diff --git a/asm/dog.s b/asm/dog.s index c62ec6df..c7170024 100644 --- a/asm/dog.s +++ b/asm/dog.s @@ -303,7 +303,7 @@ sub_08069D54: @ 0x08069D54 adds r0, r4, #0 bl UpdateAnimationSingleFrame adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement ldrh r1, [r4, #0x2a] movs r0, #0x2e ldrsh r2, [r4, r0] @@ -473,9 +473,9 @@ _08069EA0: adds r0, r4, #0 bl sub_080788E0 movs r0, #0xd1 - bl sub_08004488 + bl EnqueSFX movs r0, #0xcd - bl sub_08004488 + bl EnqueSFX _08069EC8: pop {r4, r5, r6, r7, pc} .align 2, 0 diff --git a/asm/enemy4D.s b/asm/enemy4D.s index c2a2bfee..c7216a38 100644 --- a/asm/enemy4D.s +++ b/asm/enemy4D.s @@ -172,7 +172,7 @@ _0803ECD8: movs r1, #0x10 bl sub_0803E94C adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement _0803ED02: pop {r4, r5, r6, pc} @@ -234,7 +234,7 @@ sub_0803ED40: @ 0x0803ED40 movs r0, #0xf6 strb r0, [r1] adds r0, #0x65 - bl sub_08004488 + bl EnqueSFX _0803ED74: pop {pc} .align 2, 0 diff --git a/asm/eyeSwitch.s b/asm/eyeSwitch.s index 94bd7a1c..5fa1d8e5 100644 --- a/asm/eyeSwitch.s +++ b/asm/eyeSwitch.s @@ -109,7 +109,7 @@ _08088728: ands r0, r1 strb r0, [r4, #0x10] ldr r0, _0808875C @ =0x00000111 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] diff --git a/asm/eyegore.s b/asm/eyegore.s index ca67cae2..43ca7f0d 100644 --- a/asm/eyegore.s +++ b/asm/eyegore.s @@ -105,7 +105,7 @@ _08030AC0: movs r0, #0x86 lsls r0, r0, #1 _08030AE0: - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl sub_08031344 b _08030B0E @@ -124,7 +124,7 @@ _08030AFA: movs r0, #0xf strb r0, [r1] movs r0, #0xfe - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl sub_08031344 _08030B0E: @@ -563,7 +563,7 @@ sub_08030E3C: @ 0x08030E3C lsls r1, r1, #9 str r1, [r0, #0x20] ldr r0, _08030E54 @ =0x00000157 - bl sub_08004488 + bl EnqueSFX pop {pc} .align 2, 0 _08030E54: .4byte 0x00000157 @@ -589,7 +589,7 @@ sub_08030E70: @ 0x08030E70 bl sub_08030E80 movs r0, #0xac lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX pop {pc} thumb_func_start sub_08030E80 @@ -1171,7 +1171,7 @@ _080312E2: cmp r0, #0 bne _0803131C adds r0, r6, #0 - bl sub_080AEF88 + bl ProcessMovement cmp r0, #0 bne _0803131C adds r2, r6, #0 @@ -1192,7 +1192,7 @@ _08031310: b _0803131C _08031316: adds r0, r6, #0 - bl sub_080AEF88 + bl ProcessMovement _0803131C: pop {r4, r5, r6, pc} .align 2, 0 diff --git a/asm/fairy.s b/asm/fairy.s index a6841668..b17899db 100644 --- a/asm/fairy.s +++ b/asm/fairy.s @@ -188,7 +188,7 @@ sub_0808D7B4: @ 0x0808D7B4 bl sub_0805E3A0 movs r0, #0x9b lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX ldrb r0, [r4, #0xb] cmp r0, #2 beq _0808D834 diff --git a/asm/fallingBoulder.s b/asm/fallingBoulder.s index 801c45c0..9431e511 100644 --- a/asm/fallingBoulder.s +++ b/asm/fallingBoulder.s @@ -216,7 +216,7 @@ _0802C36A: bne _0802C3CC movs r0, #0xa6 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 diff --git a/asm/fan.s b/asm/fan.s index 2442e630..51822d10 100644 --- a/asm/fan.s +++ b/asm/fan.s @@ -347,7 +347,7 @@ sub_0809F0E4: @ 0x0809F0E4 push {r4, r5, lr} adds r5, r0, #0 ldr r0, _0809F124 @ =0x00000183 - bl sub_08004488 + bl EnqueSFX ldrb r0, [r5, #0xa] movs r1, #2 eors r1, r0 diff --git a/asm/figurineDevice.s b/asm/figurineDevice.s index 31bf1057..ed64416f 100644 --- a/asm/figurineDevice.s +++ b/asm/figurineDevice.s @@ -266,7 +266,7 @@ _08087D60: bl PositionRelative _08087DAA: ldr r0, _08087DB8 @ =0x00000111 - bl sub_08004488 + bl EnqueSFX _08087DB0: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/flyingPot.s b/asm/flyingPot.s index 7c45e106..75e3a8b5 100644 --- a/asm/flyingPot.s +++ b/asm/flyingPot.s @@ -342,7 +342,7 @@ _080372CC: adds r0, r5, #0 movs r1, #1 movs r2, #0x40 - bl sub_08049F64 + bl PlayerInRange cmp r0, #0 beq _080372E2 movs r0, #2 diff --git a/asm/frozenWaterElement.s b/asm/frozenWaterElement.s index 574be4d0..d2e0ac77 100644 --- a/asm/frozenWaterElement.s +++ b/asm/frozenWaterElement.s @@ -96,7 +96,7 @@ sub_0809BF1C: @ 0x0809BF1C lsls r0, r0, #1 strh r0, [r1] adds r0, #0x73 - bl sub_08004488 + bl EnqueSFX _0809BF6C: pop {r4, pc} .align 2, 0 @@ -129,7 +129,7 @@ _0809BFA0: cmp r1, #0 bne _0809BFAE ldr r0, _0809C09C @ =0x000001B3 - bl sub_08004488 + bl EnqueSFX _0809BFAE: ldrh r0, [r5] cmp r0, #0x77 diff --git a/asm/gibdo.s b/asm/gibdo.s index 555d040c..4518b9d6 100644 --- a/asm/gibdo.s +++ b/asm/gibdo.s @@ -196,7 +196,7 @@ _080375D2: adds r0, r4, #0 bl UpdateAnimationSingleFrame adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement cmp r0, #0 bne _080375F4 ldrb r0, [r4, #0xf] @@ -263,7 +263,7 @@ _08037652: adds r0, r4, #0 bl UpdateAnimationSingleFrame adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement cmp r0, #0 bne _0803767C ldrb r0, [r4, #0xf] @@ -316,7 +316,7 @@ _080376B6: movs r0, #0x27 strb r0, [r1] adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement _080376CC: pop {r4, pc} .align 2, 0 diff --git a/asm/guardWithSpear.s b/asm/guardWithSpear.s index 621a1d62..4fda3f06 100644 --- a/asm/guardWithSpear.s +++ b/asm/guardWithSpear.s @@ -84,7 +84,7 @@ _080640E8: bl InitializeAnimation _0806410A: adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement movs r0, #0x2e ldrsh r1, [r4, r0] adds r2, r4, #0 @@ -213,7 +213,7 @@ _080641E6: movs r0, #0x32 ldrsh r4, [r5, r0] adds r0, r5, #0 - bl sub_080AEF88 + bl ProcessMovement movs r1, #0x32 ldrsh r0, [r5, r1] adds r6, r5, #0 @@ -358,7 +358,7 @@ _08064306: movs r0, #0x2e ldrsh r4, [r5, r0] adds r0, r5, #0 - bl sub_080AEF88 + bl ProcessMovement movs r1, #0x2e ldrsh r0, [r5, r1] adds r6, r5, #0 diff --git a/asm/helmasaur.s b/asm/helmasaur.s index 6b17b172..e8a891ea 100644 --- a/asm/helmasaur.s +++ b/asm/helmasaur.s @@ -533,7 +533,7 @@ _0802BF3A: sub_0802BF3C: @ 0x0802BF3C push {r4, lr} adds r4, r0, #0 - bl sub_080AEF88 + bl ProcessMovement adds r0, r4, #0 bl GetNextFrame ldrb r0, [r4, #0xe] diff --git a/asm/kid.s b/asm/kid.s index 337736d6..8d61dd09 100644 --- a/asm/kid.s +++ b/asm/kid.s @@ -1173,7 +1173,7 @@ _080629B4: strh r1, [r0] _080629D2: adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement movs r3, #0x2e ldrsh r1, [r4, r3] adds r2, r4, #0 diff --git a/asm/lavaPlatform.s b/asm/lavaPlatform.s index 32d6da37..c2dc7c10 100644 --- a/asm/lavaPlatform.s +++ b/asm/lavaPlatform.s @@ -73,7 +73,7 @@ sub_0809229C: @ 0x0809229C bl InitAnimationForceUpdate movs r0, #0xbf lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX ldr r0, [r4, #0x54] movs r1, #3 bl InitializeAnimation @@ -281,7 +281,7 @@ _08092434: movs r1, #2 bl InitializeAnimation ldr r0, _08092468 @ =0x0000017B - bl sub_08004488 + bl EnqueSFX _08092462: pop {r4, pc} .align 2, 0 @@ -335,7 +335,7 @@ _080924B8: strb r0, [r3] movs r0, #0xbe lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX b _080924DC _080924CC: movs r0, #2 @@ -344,7 +344,7 @@ _080924CC: beq _080924DC strb r2, [r3] ldr r0, _080924E0 @ =0x0000017D - bl sub_08004488 + bl EnqueSFX _080924DC: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/likeLike.s b/asm/likeLike.s index fa3c4f96..e0b8c086 100644 --- a/asm/likeLike.s +++ b/asm/likeLike.s @@ -269,7 +269,7 @@ _08027F38: strb r0, [r4, #0xe] _08027F5A: adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement adds r0, r4, #0 bl GetNextFrame b _08027F7C @@ -485,7 +485,7 @@ _080280F0: bne _08028102 movs r0, #0x82 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _08028102: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/lockedDoor.s b/asm/lockedDoor.s index c73a92cd..22acc1b0 100644 --- a/asm/lockedDoor.s +++ b/asm/lockedDoor.s @@ -232,7 +232,7 @@ sub_080834B4: @ 0x080834B4 ldrb r2, [r2] bl SetTile ldr r0, _080834E8 @ =0x0000010B - bl sub_08004488 + bl EnqueSFX _080834E6: pop {pc} .align 2, 0 @@ -323,7 +323,7 @@ _0808357A: adds r0, r4, #0 bl sub_08083814 ldr r0, _08083590 @ =0x0000010B - bl sub_08004488 + bl EnqueSFX _0808358C: pop {r4, pc} .align 2, 0 diff --git a/asm/madderpillar.s b/asm/madderpillar.s index 22924791..d569af3e 100644 --- a/asm/madderpillar.s +++ b/asm/madderpillar.s @@ -117,7 +117,7 @@ _08029948: movs r1, #0x7f bl sub_0801D2B4 movs r0, #0xfe - bl sub_08004488 + bl EnqueSFX ldr r0, [r5, #0x54] strb r4, [r0, #0xc] _08029970: @@ -298,7 +298,7 @@ sub_08029AA4: @ 0x08029AA4 adds r0, r1, #0 bl sub_08029EEC ldr r0, _08029ADC @ =0x0000019D - bl sub_08004488 + bl EnqueSFX _08029ADA: pop {pc} .align 2, 0 @@ -335,7 +335,7 @@ sub_08029AE0: @ 0x08029AE0 bl sub_0801D2B4 movs r0, #0xc1 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _08029B28: pop {r4, pc} .align 2, 0 @@ -491,7 +491,7 @@ sub_08029C2C: @ 0x08029C2C movs r1, #0x7f bl sub_0801D2B4 movs r0, #0x6c - bl sub_08004488 + bl EnqueSFX _08029C4E: pop {pc} @@ -625,7 +625,7 @@ sub_08029D14: @ 0x08029D14 movs r1, #0x7f bl sub_0801D2B4 movs r0, #0x6c - bl sub_08004488 + bl EnqueSFX b _08029D70 _08029D42: adds r0, r4, #0 @@ -648,7 +648,7 @@ _08029D42: ldr r0, _08029D74 @ =gUnk_080FD298 str r0, [r4, #0x48] movs r0, #0x6b - bl sub_08004488 + bl EnqueSFX _08029D70: pop {r4, pc} .align 2, 0 @@ -1121,7 +1121,7 @@ _0802A0B8: movs r0, #0x32 ldrsh r6, [r4, r0] adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement adds r0, r4, #0 bl sub_08029F48 cmp r0, #0 @@ -1132,7 +1132,7 @@ _0802A0B8: bl sub_08029EEC movs r0, #0x82 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _0802A0E4: movs r0, #0x2e ldrsh r1, [r4, r0] @@ -1286,7 +1286,7 @@ _0802A1B0: @ jump table _0802A22C: movs r0, #0x97 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _0802A234: pop {pc} .align 2, 0 diff --git a/asm/managerF.s b/asm/managerF.s index 60d32fc0..f2181c89 100644 --- a/asm/managerF.s +++ b/asm/managerF.s @@ -747,7 +747,7 @@ _08059436: strh r0, [r2, #0x32] movs r0, #0xd8 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX bl DeleteThisEntity _08059476: pop {r4, pc} diff --git a/asm/minecartDoor.s b/asm/minecartDoor.s index 308edf13..a2988960 100644 --- a/asm/minecartDoor.s +++ b/asm/minecartDoor.s @@ -150,7 +150,7 @@ sub_08096BBC: @ 0x08096BBC ldrb r2, [r2] bl SetTile ldr r0, _08096BF4 @ =0x0000010B - bl sub_08004488 + bl EnqueSFX _08096BF2: pop {r4, pc} .align 2, 0 @@ -277,7 +277,7 @@ sub_08096CB0: @ 0x08096CB0 adds r0, r4, #0 bl sub_08083814 ldr r0, _08096CE8 @ =0x0000010B - bl sub_08004488 + bl EnqueSFX _08096CE6: pop {r4, pc} .align 2, 0 diff --git a/asm/minishEzlo.s b/asm/minishEzlo.s index d83ab550..c470a603 100644 --- a/asm/minishEzlo.s +++ b/asm/minishEzlo.s @@ -48,7 +48,7 @@ _08062FA0: ands r0, r1 strb r0, [r4] ldr r0, _08062FEC @ =0x000001CF - bl sub_08004488 + bl EnqueSFX _08062FCC: ldrb r1, [r4] movs r0, #0x20 @@ -60,7 +60,7 @@ _08062FCC: strb r0, [r4] movs r0, #0x88 lsls r0, r0, #2 - bl sub_08004488 + bl EnqueSFX _08062FE4: pop {r4, pc} .align 2, 0 diff --git a/asm/moldworm.s b/asm/moldworm.s index 943cf3e1..18884dc8 100644 --- a/asm/moldworm.s +++ b/asm/moldworm.s @@ -536,7 +536,7 @@ _08023440: ldr r4, [r5, #0x2c] ldr r6, [r5, #0x30] adds r0, r5, #0 - bl sub_080AEF88 + bl ProcessMovement ldr r0, [r5, #0x2c] cmp r0, r4 bne _08023460 diff --git a/asm/mountainMinish.s b/asm/mountainMinish.s index d55b8c9a..c9571ff4 100644 --- a/asm/mountainMinish.s +++ b/asm/mountainMinish.s @@ -299,7 +299,7 @@ _08068068: lsls r0, r0, #1 adds r0, r0, r4 ldrh r0, [r0] - bl sub_08004488 + bl EnqueSFX _0806807E: ldrb r1, [r6] movs r0, #2 diff --git a/asm/mulldozer.s b/asm/mulldozer.s index a9f8f0f0..4c449faa 100644 --- a/asm/mulldozer.s +++ b/asm/mulldozer.s @@ -325,7 +325,7 @@ _08032EC0: adds r0, r4, #0 bl sub_080331E8 adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement pop {r4, pc} .align 2, 0 @@ -333,7 +333,7 @@ _08032EC0: sub_08032ED0: @ 0x08032ED0 push {r4, r5, lr} adds r4, r0, #0 - bl sub_080AEF88 + bl ProcessMovement adds r0, r4, #0 bl sub_08032F48 ldrb r0, [r4, #0xf] @@ -428,7 +428,7 @@ _08032F82: adds r0, r4, #0 bl sub_08032F48 adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement pop {r4, pc} thumb_func_start sub_08032F90 @@ -826,7 +826,7 @@ _08033238: strh r0, [r4, #0x32] movs r0, #0x86 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _08033278: pop {r4, r5, r6, pc} .align 2, 0 diff --git a/asm/npc23.s b/asm/npc23.s index d3828237..bed87076 100644 --- a/asm/npc23.s +++ b/asm/npc23.s @@ -183,7 +183,7 @@ _08066410: strb r0, [r4, #0xd] _08066428: adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement _0806642E: bl sub_08078B48 adds r0, r4, #0 diff --git a/asm/object20.s b/asm/object20.s index fc8420ae..7fe7e16d 100644 --- a/asm/object20.s +++ b/asm/object20.s @@ -64,7 +64,7 @@ _08087836: adds r0, r4, #0 bl sub_0801766C movs r0, #0xfd - bl sub_08004488 + bl EnqueSFX pop {r4, pc} .align 2, 0 _08087884: .4byte gUnk_08120A54 diff --git a/asm/object24.s b/asm/object24.s index a3d057e1..16ac6466 100644 --- a/asm/object24.s +++ b/asm/object24.s @@ -93,7 +93,7 @@ sub_0808886C: @ 0x0808886C ldrh r0, [r0] bl SetFlag ldr r0, _080888B4 @ =0x0000016B - bl sub_08004488 + bl EnqueSFX b _080888F2 .align 2, 0 _080888B4: .4byte 0x0000016B @@ -117,7 +117,7 @@ _080888D2: _080888DA: movs r0, #0x86 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX b _080888F0 _080888E4: cmp r4, r0 diff --git a/asm/object2A.s b/asm/object2A.s index d9d563b0..da9945a6 100644 --- a/asm/object2A.s +++ b/asm/object2A.s @@ -140,6 +140,6 @@ _08089C96: bl InitializeAnimation movs r0, #0x92 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _08089CBA: pop {r4, r5, r6, pc} diff --git a/asm/object35.s b/asm/object35.s index 586fc402..532c75c4 100644 --- a/asm/object35.s +++ b/asm/object35.s @@ -220,7 +220,7 @@ sub_0808B9D4: @ 0x0808B9D4 ldrb r2, [r2] bl SetTile ldr r0, _0808BA0C @ =0x0000010B - bl sub_08004488 + bl EnqueSFX _0808BA0A: pop {r4, pc} .align 2, 0 @@ -294,7 +294,7 @@ sub_0808BA6C: @ 0x0808BA6C movs r1, #2 bl sub_08083814 ldr r0, _0808BAA8 @ =0x0000010B - bl sub_08004488 + bl EnqueSFX ldr r0, _0808BAAC @ =0x00004022 adds r1, r4, #0 adds r1, #0x76 diff --git a/asm/object43.s b/asm/object43.s index a8cfb2a0..48912c1e 100644 --- a/asm/object43.s +++ b/asm/object43.s @@ -263,7 +263,7 @@ _0808E084: _0808E0B8: .4byte gScreenTransition _0808E0BC: ldr r0, _0808E140 @ =0x00000115 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 movs r1, #0x12 movs r2, #0 diff --git a/asm/object44.s b/asm/object44.s index a22a71ad..98dc9e54 100644 --- a/asm/object44.s +++ b/asm/object44.s @@ -113,7 +113,7 @@ _0808E340: cmp r0, #0 beq _0808E34E ldr r0, _0808E350 @ =0x0000018B - bl sub_08004488 + bl EnqueSFX _0808E34E: pop {r4, pc} .align 2, 0 diff --git a/asm/object64.s b/asm/object64.s index d6abbcb9..03c201f9 100644 --- a/asm/object64.s +++ b/asm/object64.s @@ -61,7 +61,7 @@ _08093E6A: cmp r0, #0 bne _08093E90 ldrh r0, [r2] - bl sub_08004488 + bl EnqueSFX _08093E90: ldrb r1, [r4, #0xb] movs r0, #0x20 diff --git a/asm/object6A.s b/asm/object6A.s index d8eb941e..8eb8d64d 100644 --- a/asm/object6A.s +++ b/asm/object6A.s @@ -637,7 +637,7 @@ _08094ED4: bl InitializeAnimation movs r0, #0xbf lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX b _08094F94 .align 2, 0 _08094F04: .4byte 0xFFFFE000 @@ -1992,7 +1992,7 @@ sub_08095954: @ 0x08095954 str r0, [r1] movs r0, #0x92 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX adds r2, r5, #0 adds r2, #0x5a ldrb r1, [r2] diff --git a/asm/object87.s b/asm/object87.s index d90353d1..9ee385e3 100644 --- a/asm/object87.s +++ b/asm/object87.s @@ -67,7 +67,7 @@ _08099F70: bl InitializeAnimation movs r0, #0x92 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX b _0809A1B6 _08099F82: ldr r0, [r5, #0x50] diff --git a/asm/object8B.s b/asm/object8B.s index 5f7a52d7..ddaa9483 100644 --- a/asm/object8B.s +++ b/asm/object8B.s @@ -170,7 +170,7 @@ sub_0809B050: @ 0x0809B050 bl sub_0809B0B0 movs r0, #0x86 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _0809B0A2: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/objectA0.s b/asm/objectA0.s index a831967c..4e8acfd6 100644 --- a/asm/objectA0.s +++ b/asm/objectA0.s @@ -114,7 +114,7 @@ sub_0809F1B0: @ 0x0809F1B0 adds r1, r5, #0 bl PositionRelative movs r0, #0xec - bl sub_08004488 + bl EnqueSFX b _0809F21E .align 2, 0 _0809F208: .4byte gUnk_08124684 diff --git a/asm/objectA8.s b/asm/objectA8.s index c4c396a8..5414d233 100644 --- a/asm/objectA8.s +++ b/asm/objectA8.s @@ -65,7 +65,7 @@ _0809FAE6: bl sub_0805E3A0 movs r0, #0x9b lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _0809FB30: pop {pc} .align 2, 0 diff --git a/asm/objectBlockingStairs.s b/asm/objectBlockingStairs.s index ee7430eb..38850853 100644 --- a/asm/objectBlockingStairs.s +++ b/asm/objectBlockingStairs.s @@ -184,7 +184,7 @@ _08092FF2: movs r1, #0x50 bl sub_0805E4E0 ldr r0, _0809303C @ =0x0000010F - bl sub_08004488 + bl EnqueSFX adds r0, r6, #0 bl sub_08093248 b _080930E6 @@ -326,7 +326,7 @@ _08093104: strb r0, [r4, #0x15] strb r2, [r4, #0xe] ldr r0, _08093164 @ =0x0000010F - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl sub_08093248 b _08093174 @@ -620,7 +620,7 @@ _0809334A: adds r1, r5, #0 bl sub_08093308 movs r0, #0x72 - bl sub_08004488 + bl EnqueSFX pop {r4, r5, pc} .align 2, 0 diff --git a/asm/objectD.s b/asm/objectD.s index 6ffdd754..f6f6cf5c 100644 --- a/asm/objectD.s +++ b/asm/objectD.s @@ -124,7 +124,7 @@ sub_080843F8: @ 0x080843F8 movs r2, #0 bl CreateFx ldr r0, _08084424 @ =0x0000010D - bl sub_08004488 + bl EnqueSFX _08084420: pop {pc} .align 2, 0 @@ -150,7 +150,7 @@ sub_08084428: @ 0x08084428 bl SetFlag movs r0, #0x86 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _08084454: pop {r4, pc} .align 2, 0 diff --git a/asm/objectOnPillar.s b/asm/objectOnPillar.s index 6829d195..344e6854 100644 --- a/asm/objectOnPillar.s +++ b/asm/objectOnPillar.s @@ -360,7 +360,7 @@ sub_08097098: @ 0x08097098 movs r0, #0x20 strh r0, [r1] adds r0, #0xef - bl sub_08004488 + bl EnqueSFX adds r0, r6, #0 adds r0, #0x70 ldrh r0, [r0] @@ -504,7 +504,7 @@ _080971B8: ldrh r0, [r0] bl SetFlag ldr r0, _080971D8 @ =0x0000010B - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl sub_080971E0 movs r0, #1 diff --git a/asm/octorokBoss.s b/asm/octorokBoss.s index a6043de6..6bc4b9a0 100644 --- a/asm/octorokBoss.s +++ b/asm/octorokBoss.s @@ -244,7 +244,7 @@ _08035356: lsls r0, r0, #1 strh r0, [r5, #0x24] adds r0, r5, #0 - bl sub_080AEF88 + bl ProcessMovement adds r7, r5, #0 adds r7, #0x79 b _08035456 @@ -1952,7 +1952,7 @@ _080360A0: b _080360BE _080360B2: adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement cmp r0, #0 bne _080360BE strb r0, [r5] @@ -1991,7 +1991,7 @@ sub_080360E8: @ 0x080360E8 cmp r0, #0 bne _08036178 adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement movs r2, #0 ldrb r0, [r4, #0x15] cmp r0, #0 @@ -2884,7 +2884,7 @@ sub_08036764: @ 0x08036764 sub_080367B0: @ 0x080367B0 push {r4, r5, lr} adds r4, r0, #0 - bl sub_080AEF88 + bl ProcessMovement ldrh r0, [r4, #0x2a] cmp r0, #0 beq _0803683A @@ -3005,7 +3005,7 @@ sub_08036870: @ 0x08036870 strb r0, [r3, #0x15] strh r2, [r3, #0x2a] adds r0, r3, #0 - bl sub_080AEF88 + bl ProcessMovement b _080368D4 _080368AA: lsls r0, r1, #0x18 diff --git a/asm/octorokGolden.s b/asm/octorokGolden.s index d0af53ef..7366c687 100644 --- a/asm/octorokGolden.s +++ b/asm/octorokGolden.s @@ -135,7 +135,7 @@ _08037D26: movs r1, #2 bl UpdateAnimationVariableFrames adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement cmp r0, #0 bne _08037D40 adds r0, r4, #0 @@ -201,7 +201,7 @@ sub_08037D54: @ 0x08037D54 strh r0, [r2, #0x36] movs r0, #0x92 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX b _08037E0C .align 2, 0 _08037DBC: .4byte gUnk_080CF490 diff --git a/asm/pesto.s b/asm/pesto.s index 444b0ceb..63c9018b 100644 --- a/asm/pesto.s +++ b/asm/pesto.s @@ -394,7 +394,7 @@ _080241D8: _080241E4: adds r0, r4, #0 movs r1, #3 - bl sub_08049F64 + bl PlayerInRange cmp r0, #0 beq _08024220 adds r0, r4, #0 diff --git a/asm/picoBloom.s b/asm/picoBloom.s index 9447336e..6ce20de9 100644 --- a/asm/picoBloom.s +++ b/asm/picoBloom.s @@ -84,7 +84,7 @@ sub_08098AE8: @ 0x08098AE8 ands r0, r1 strb r0, [r4] ldr r0, _08098B0C @ =0x0000021B - bl sub_08004488 + bl EnqueSFX _08098B08: pop {r4, pc} .align 2, 0 diff --git a/asm/puffstool.s b/asm/puffstool.s index 1e5a87d6..cf03222f 100644 --- a/asm/puffstool.s +++ b/asm/puffstool.s @@ -154,7 +154,7 @@ _080250C2: _08025104: movs r0, #0xc3 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _0802510C: ldr r1, _08025118 @ =gUnk_080CBF9C adds r0, r4, #0 @@ -1644,7 +1644,7 @@ sub_08025C44: @ 0x08025C44 b _08025C5E _08025C58: adds r0, r2, #0 - bl sub_080AEF88 + bl ProcessMovement _08025C5E: pop {pc} diff --git a/asm/pullableLever.s b/asm/pullableLever.s index 93c1257d..f9dc53c4 100644 --- a/asm/pullableLever.s +++ b/asm/pullableLever.s @@ -296,7 +296,7 @@ _080913E0: strb r5, [r1] movs r0, #0xcf lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _0809142A: pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -575,7 +575,7 @@ _080915E0: bhi _08091640 movs r0, #0x86 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX adds r0, r5, #0 adds r0, #0x86 ldrh r0, [r0] @@ -593,7 +593,7 @@ _08091640: movs r0, #0x10 strb r0, [r5, #0xf] adds r0, #0xff - bl sub_08004488 + bl EnqueSFX _08091656: add sp, #4 pop {r3, r4} diff --git a/asm/pushableFurniture.s b/asm/pushableFurniture.s index 13c9d1d7..fd04b86c 100644 --- a/asm/pushableFurniture.s +++ b/asm/pushableFurniture.s @@ -230,7 +230,7 @@ _0808FAF2: bne _0808FB0A movs r0, #0x86 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _0808FB0A: ldrb r0, [r4, #0xa] cmp r0, #2 @@ -271,7 +271,7 @@ _0808FB3E: movs r0, #2 strb r0, [r4, #0xd] movs r0, #0x80 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl sub_0808FF20 b _0808FB64 @@ -598,7 +598,7 @@ _0808FDB4: strb r0, [r4, #0xe] _0808FDB6: ldr r0, _0808FDE0 @ =0x0000010F - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl sub_08090254 ldr r1, _0808FDE4 @ =gUnk_080B4488 diff --git a/asm/pushableGrave.s b/asm/pushableGrave.s index 89e6e5fb..00dcfd34 100644 --- a/asm/pushableGrave.s +++ b/asm/pushableGrave.s @@ -293,7 +293,7 @@ _080977BC: b _080977E4 _080977C8: movs r0, #0x72 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl sub_080977F4 ldrb r0, [r4, #0xa] diff --git a/asm/pushableLever.s b/asm/pushableLever.s index 1109088d..e20940d6 100644 --- a/asm/pushableLever.s +++ b/asm/pushableLever.s @@ -62,7 +62,7 @@ sub_08098294: @ 0x08098294 bl SetTile movs r0, #0xb5 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 movs r1, #0x1e bl sub_0805E4E0 @@ -315,7 +315,7 @@ _08098492: bne _080984C2 movs r0, #0x82 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _080984C2: pop {r4, pc} .align 2, 0 diff --git a/asm/pushableRock.s b/asm/pushableRock.s index 299ab5e7..16ba39cb 100644 --- a/asm/pushableRock.s +++ b/asm/pushableRock.s @@ -114,7 +114,7 @@ _0808A598: adds r0, r4, #0 bl InitializeAnimation ldr r0, _0808A5C8 @ =0x0000010F - bl sub_08004488 + bl EnqueSFX b _0808A5DE .align 2, 0 _0808A5C8: .4byte 0x0000010F diff --git a/asm/pushableStatue.s b/asm/pushableStatue.s index 2e013531..4cc9ad88 100644 --- a/asm/pushableStatue.s +++ b/asm/pushableStatue.s @@ -463,7 +463,7 @@ sub_08089538: @ 0x08089538 movs r0, #0x20 strh r0, [r1] adds r0, #0xef - bl sub_08004488 + bl EnqueSFX adds r0, r5, #0 adds r0, #0x80 ldrh r0, [r0] diff --git a/asm/rope.s b/asm/rope.s index 49a1a076..c65ccb53 100644 --- a/asm/rope.s +++ b/asm/rope.s @@ -214,7 +214,7 @@ _080314CC: adds r0, r4, #0 bl UpdateSpriteForCollisionLayer movs r0, #0x84 - bl sub_08004488 + bl EnqueSFX _080314FA: pop {r4, pc} @@ -398,6 +398,6 @@ _08031652: _08031658: strh r0, [r4, #0x24] adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement pop {r4, pc} .align 2, 0 diff --git a/asm/ropeGolden.s b/asm/ropeGolden.s index 52f63737..00dced8a 100644 --- a/asm/ropeGolden.s +++ b/asm/ropeGolden.s @@ -152,7 +152,7 @@ _080382BC: movs r1, #2 bl UpdateAnimationVariableFrames adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement cmp r0, #0 bne _080382D6 adds r0, r4, #0 @@ -194,7 +194,7 @@ sub_08038304: @ 0x08038304 movs r1, #2 bl UpdateAnimationVariableFrames adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement cmp r0, #0 bne _08038334 adds r0, r4, #0 diff --git a/asm/scissorsBeetle.s b/asm/scissorsBeetle.s index 4c056268..04e7d56d 100644 --- a/asm/scissorsBeetle.s +++ b/asm/scissorsBeetle.s @@ -356,7 +356,7 @@ _08038B18: movs r1, #0 bl sub_08038C84 ldr r0, _08038B60 @ =0x0000015B - bl sub_08004488 + bl EnqueSFX _08038B5E: pop {r4, pc} .align 2, 0 @@ -366,7 +366,7 @@ _08038B60: .4byte 0x0000015B sub_08038B64: @ 0x08038B64 push {r4, lr} adds r4, r0, #0 - bl sub_080AEF88 + bl ProcessMovement adds r0, r4, #0 bl UpdateAnimationSingleFrame ldrb r0, [r4, #0xf] @@ -392,7 +392,7 @@ sub_08038B90: @ 0x08038B90 adds r4, r0, #0 bl UpdateAnimationSingleFrame adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement adds r0, r4, #0 bl sub_0800445C pop {r4, pc} diff --git a/asm/sensorBladeTrap.s b/asm/sensorBladeTrap.s index 76fbeec6..f95f02b4 100644 --- a/asm/sensorBladeTrap.s +++ b/asm/sensorBladeTrap.s @@ -200,7 +200,7 @@ sub_0802BB10: @ 0x0802BB10 eors r1, r2 strb r1, [r0, #0x15] movs r0, #0x74 - bl sub_08004488 + bl EnqueSFX pop {pc} .align 2, 0 diff --git a/asm/sluggula.s b/asm/sluggula.s index 0b860cca..8ae3f9a9 100644 --- a/asm/sluggula.s +++ b/asm/sluggula.s @@ -141,7 +141,7 @@ sub_08023C5C: @ 0x08023C5C sub_08023C8C: @ 0x08023C8C push {r4, lr} adds r4, r0, #0 - bl sub_080AEF88 + bl ProcessMovement adds r0, r4, #0 bl GetNextFrame adds r0, r4, #0 @@ -240,7 +240,7 @@ _08023D48: adds r0, r4, #0 movs r1, #1 movs r2, #0x20 - bl sub_08049F64 + bl PlayerInRange cmp r0, #0 beq _08023E0A movs r0, #2 @@ -266,7 +266,7 @@ _08023D6E: cmp r0, #0 bne _08023E0A ldr r0, _08023D90 @ =0x0000012D - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 movs r1, #4 bl InitializeAnimation @@ -289,7 +289,7 @@ _08023D94: orrs r0, r1 strb r0, [r4, #0x18] movs r0, #0x84 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl UpdateSpriteForCollisionLayer b _08023E0A diff --git a/asm/smallIceBlock.s b/asm/smallIceBlock.s index 057ae10b..e851c0e6 100644 --- a/asm/smallIceBlock.s +++ b/asm/smallIceBlock.s @@ -104,7 +104,7 @@ sub_08099248: @ 0x08099248 strb r0, [r4, #0xc] strb r1, [r4, #0xe] ldr r0, _0809927C @ =0x000001B3 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl sub_08099330 ldrb r0, [r4, #0xa] @@ -200,7 +200,7 @@ sub_08099310: @ 0x08099310 bl sub_08099468 movs r0, #0xd9 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _0809932E: pop {r4, pc} @@ -406,7 +406,7 @@ sub_080994B8: @ 0x080994B8 push {r4, r5, r6, lr} adds r5, r0, #0 ldr r0, _08099530 @ =0x000001B1 - bl sub_08004488 + bl EnqueSFX adds r0, r5, #0 adds r0, #0x6c ldrh r0, [r0] diff --git a/asm/spark.s b/asm/spark.s index 8e296dbf..83bd9414 100644 --- a/asm/spark.s +++ b/asm/spark.s @@ -109,7 +109,7 @@ sub_0802B35C: @ 0x0802B35C adds r4, r0, #0 bl GetNextFrame adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement movs r3, #0 ldrb r0, [r4, #0xa] cmp r0, #0 diff --git a/asm/spearMoblin.s b/asm/spearMoblin.s index 78c68b1b..123692be 100644 --- a/asm/spearMoblin.s +++ b/asm/spearMoblin.s @@ -350,7 +350,7 @@ _080284B4: strb r0, [r4, #0x15] movs r0, #0x8f lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX b _0802850A _080284D2: strb r1, [r4, #0xc] @@ -477,7 +477,7 @@ _080285BC: cmp r0, #0 bne _080285D6 movs r0, #0xf0 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 movs r1, #2 movs r2, #0x40 @@ -500,7 +500,7 @@ _080285EE: cmp r0, #0x20 bls _080285FA adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement _080285FA: adds r0, r4, #0 bl GetNextFrame @@ -854,7 +854,7 @@ sub_08028858: @ 0x08028858 strh r0, [r4, #0x24] _08028890: adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement adds r0, r4, #0 bl GetNextFrame pop {r4, pc} diff --git a/asm/specialFx.s b/asm/specialFx.s index 132bd8f9..27ece1b6 100644 --- a/asm/specialFx.s +++ b/asm/specialFx.s @@ -101,7 +101,7 @@ _0808456C: cmp r0, #0 bne _08084582 ldrh r0, [r4, #2] - bl sub_08004488 + bl EnqueSFX _08084582: ldrb r1, [r5, #0xb] movs r0, #0x80 diff --git a/asm/spikedBeetle.s b/asm/spikedBeetle.s index 1140c3d4..bcaf117b 100644 --- a/asm/spikedBeetle.s +++ b/asm/spikedBeetle.s @@ -196,7 +196,7 @@ _0802B780: b _0802B7A0 _0802B794: adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement cmp r0, #0 bne _0802B7A2 movs r0, #1 @@ -366,7 +366,7 @@ _0802B8CC: strb r0, [r4, #0xe] _0802B8D4: ldr r0, _0802B8DC @ =0x0000012B - bl sub_08004488 + bl EnqueSFX _0802B8DA: pop {r4, pc} .align 2, 0 @@ -419,7 +419,7 @@ _0802B91C: adds r0, r3, #0 bl InitializeAnimation ldr r0, _0802B944 @ =0x0000012B - bl sub_08004488 + bl EnqueSFX _0802B940: pop {r4, pc} .align 2, 0 diff --git a/asm/spinyBeetle.s b/asm/spinyBeetle.s index b65ad269..eab4f1c8 100644 --- a/asm/spinyBeetle.s +++ b/asm/spinyBeetle.s @@ -831,7 +831,7 @@ _08033DCE: cmp r0, #0x3e bls _08033DE2 adds r0, r6, #0 - bl sub_080AEF88 + bl ProcessMovement _08033DE2: pop {r4, r5, r6, pc} .align 2, 0 diff --git a/asm/stalfos.s b/asm/stalfos.s index a8bb51a1..309afcfa 100644 --- a/asm/stalfos.s +++ b/asm/stalfos.s @@ -153,7 +153,7 @@ _08039390: strb r0, [r1, #0xb] movs r0, #0xc3 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX b _080393DC _080393CA: adds r0, r1, #0 @@ -162,7 +162,7 @@ _080393CA: strb r2, [r0] movs r0, #0xc3 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX str r4, [r5, #0x54] _080393DC: adds r0, r5, #0 @@ -404,7 +404,7 @@ sub_0803958C: @ 0x0803958C cmp r0, #0 bne _080395D4 adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement cmp r0, #0 beq _080395C0 adds r0, r4, #0 @@ -452,7 +452,7 @@ sub_080395D8: @ 0x080395D8 movs r0, #0x5a strb r0, [r1] movs r0, #0x7d - bl sub_08004488 + bl EnqueSFX _08039602: pop {r4, pc} @@ -509,7 +509,7 @@ _0803963A: adds r0, r2, #0 bl sub_080399C4 ldr r0, _0803966C @ =0x0000014B - bl sub_08004488 + bl EnqueSFX _0803966A: pop {pc} .align 2, 0 @@ -764,7 +764,7 @@ _08039836: adds r0, r2, #0 bl InitAnimationForceUpdate ldr r0, _08039854 @ =0x0000012B - bl sub_08004488 + bl EnqueSFX pop {pc} .align 2, 0 _08039854: .4byte 0x0000012B @@ -1018,7 +1018,7 @@ sub_08039A20: @ 0x08039A20 movs r0, #0x3c strb r0, [r1] movs r0, #0xfb - bl sub_08004488 + bl EnqueSFX _08039A44: pop {r4, pc} .align 2, 0 diff --git a/asm/vaati.s b/asm/vaati.s index 172ccc8b..11f143cd 100644 --- a/asm/vaati.s +++ b/asm/vaati.s @@ -115,11 +115,11 @@ _08066B20: _08066B2A: movs r0, #0x87 lsls r0, r0, #2 - bl sub_08004488 + bl EnqueSFX b _08066B66 _08066B34: ldr r0, _08066B3C @ =0x0000021E - bl sub_08004488 + bl EnqueSFX b _08066B66 .align 2, 0 _08066B3C: .4byte 0x0000021E @@ -140,7 +140,7 @@ _08066B52: adds r0, r4, #0 bl sub_0805DE18 ldr r0, _08066B70 @ =0x0000021D - bl sub_08004488 + bl EnqueSFX _08066B66: ldrb r1, [r5] movs r0, #0x7f diff --git a/asm/vaatiArm.s b/asm/vaatiArm.s index 3324c7ec..33ac5c87 100644 --- a/asm/vaatiArm.s +++ b/asm/vaatiArm.s @@ -1418,7 +1418,7 @@ _08042FC2: ldr r0, [r0, #0xc] ldrb r1, [r4, #0x15] strb r1, [r0, #0x15] - bl sub_080AEF88 + bl ProcessMovement _08042FCE: pop {r3} mov r8, r3 @@ -3298,7 +3298,7 @@ _08043D92: cmp r2, #4 bls _08043D92 movs r0, #0xfe - bl sub_08004488 + bl EnqueSFX pop {r4, r5, pc} .align 2, 0 _08043DAC: .4byte gUnk_080D13E9 diff --git a/asm/vaatiEyesMacro.s b/asm/vaatiEyesMacro.s index 650c360c..cd272756 100644 --- a/asm/vaatiEyesMacro.s +++ b/asm/vaatiEyesMacro.s @@ -100,7 +100,7 @@ _0802ED0E: beq _0802ED24 movs r0, #0xbd lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX _0802ED24: ldrb r0, [r5] strb r0, [r6] @@ -123,7 +123,7 @@ _0802ED3E: cmp r0, #0xff beq _0802ED4E movs r0, #0xe5 - bl sub_08004488 + bl EnqueSFX _0802ED4E: movs r0, #0xff strb r0, [r5] @@ -528,7 +528,7 @@ sub_0802F04C: @ 0x0802F04C movs r1, #0x32 ldrsh r6, [r4, r1] adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement cmp r0, #0 bne _0802F06A adds r0, r4, #0 diff --git a/asm/vaatiProjectile.s b/asm/vaatiProjectile.s index 9e312e19..1be37b71 100644 --- a/asm/vaatiProjectile.s +++ b/asm/vaatiProjectile.s @@ -251,7 +251,7 @@ sub_0803E258: @ 0x0803E258 adds r0, r4, #0 movs r1, #0 movs r2, #8 - bl sub_08049F64 + bl PlayerInRange cmp r0, #0 beq _0803E280 movs r0, #2 diff --git a/asm/vaatiReborn.s b/asm/vaatiReborn.s index a3c8baf4..74b23e66 100644 --- a/asm/vaatiReborn.s +++ b/asm/vaatiReborn.s @@ -336,7 +336,7 @@ _0806B8C4: adds r0, #1 strb r0, [r5, #0xd] movs r0, #0xf4 - bl sub_08004488 + bl EnqueSFX movs r0, #0 strb r0, [r5, #0xe] _0806B8FA: diff --git a/asm/vaatiTransfigured.s b/asm/vaatiTransfigured.s index be7920c3..81a0d5b7 100644 --- a/asm/vaatiTransfigured.s +++ b/asm/vaatiTransfigured.s @@ -439,7 +439,7 @@ _0803FAAC: cmp r0, #0xff beq _0803FAB8 adds r0, r7, #0 - bl sub_080AEF88 + bl ProcessMovement _0803FAB8: adds r0, r7, #0 bl UpdateAnimationSingleFrame diff --git a/asm/vaatiWrath.s b/asm/vaatiWrath.s index 46a98812..e76f2e24 100644 --- a/asm/vaatiWrath.s +++ b/asm/vaatiWrath.s @@ -384,7 +384,7 @@ sub_08041618: @ 0x08041618 adds r0, r4, #0 bl UpdateAnimationSingleFrame adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement ldr r0, _0804165C @ =gRoomControls ldrh r2, [r0, #8] adds r0, r2, #0 diff --git a/asm/wallMaster.s b/asm/wallMaster.s index bf09db0b..da7410a1 100644 --- a/asm/wallMaster.s +++ b/asm/wallMaster.s @@ -243,7 +243,7 @@ sub_0802A5B8: @ 0x0802A5B8 cmp r0, #0 bne _0802A60E ldr r0, _0802A5E4 @ =0x0000012D - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 movs r1, #0 bl InitializeAnimation diff --git a/asm/warpPoint.s b/asm/warpPoint.s index 7f3eba57..46bf961b 100644 --- a/asm/warpPoint.s +++ b/asm/warpPoint.s @@ -110,7 +110,7 @@ _0808B4F8: strb r2, [r1, #0x14] movs r0, #0x89 lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX ldrb r1, [r4, #0xf] adds r1, #0x10 adds r0, r4, #0 @@ -142,7 +142,7 @@ _0808B554: movs r0, #0x3c strb r0, [r4, #0xf] adds r0, #0xd6 - bl sub_08004488 + bl EnqueSFX _0808B562: pop {r4, pc} diff --git a/asm/waterDrop.s b/asm/waterDrop.s index ab7e2153..664c8b9d 100644 --- a/asm/waterDrop.s +++ b/asm/waterDrop.s @@ -85,7 +85,7 @@ sub_0802A2B4: @ 0x0802A2B4 orrs r0, r1 strb r0, [r2] movs r0, #0x84 - bl sub_08004488 + bl EnqueSFX b _0802A2E2 _0802A2DC: adds r0, r4, #0 diff --git a/asm/windTribespeople.s b/asm/windTribespeople.s index dee2af5f..dd4e7087 100644 --- a/asm/windTribespeople.s +++ b/asm/windTribespeople.s @@ -147,7 +147,7 @@ sub_0806CA5C: @ 0x0806CA5C cmp r0, #0xa bne _0806CA7E movs r0, #0xe8 - bl sub_08004488 + bl EnqueSFX _0806CA7E: ldrh r0, [r4, #0x10] cmp r0, #0 diff --git a/asm/wizzrobeFire.s b/asm/wizzrobeFire.s index 944a21cb..da743284 100644 --- a/asm/wizzrobeFire.s +++ b/asm/wizzrobeFire.s @@ -292,7 +292,7 @@ _0802FD18: bl SetTile movs r0, #0xab lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX ldrb r1, [r4, #0x15] lsrs r1, r1, #3 adds r0, r4, #0 @@ -337,7 +337,7 @@ _0802FD94: strb r0, [r4, #0xe] movs r0, #0xab lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl sub_0802F8E4 ldrb r1, [r4, #0x15] diff --git a/asm/wizzrobeIce.s b/asm/wizzrobeIce.s index c8cd1228..c0634a4c 100644 --- a/asm/wizzrobeIce.s +++ b/asm/wizzrobeIce.s @@ -319,7 +319,7 @@ _0802FFF0: bl SetTile movs r0, #0xab lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX ldrb r1, [r4, #0x15] lsrs r1, r1, #3 adds r0, r4, #0 @@ -364,7 +364,7 @@ _0803006C: strb r0, [r4, #0xe] movs r0, #0xab lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl sub_0802F8E4 ldrb r1, [r4, #0x15] diff --git a/asm/wizzrobeWind.s b/asm/wizzrobeWind.s index 01d74385..4025a460 100644 --- a/asm/wizzrobeWind.s +++ b/asm/wizzrobeWind.s @@ -334,7 +334,7 @@ _0802F6F0: strb r0, [r4, #0x10] movs r0, #0xab lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] @@ -389,7 +389,7 @@ _0802F76C: strb r0, [r4, #0xe] movs r0, #0xab lsls r0, r0, #1 - bl sub_08004488 + bl EnqueSFX adds r0, r4, #0 bl sub_0802F8E4 ldrb r1, [r4, #0x15] @@ -725,7 +725,7 @@ _0802FA20: cmp r0, #0 beq _0802FA3E adds r0, r4, #0 - bl sub_080AEF88 + bl ProcessMovement ldrh r0, [r4, #0x2a] cmp r0, #0 beq _0802FA3E diff --git a/include/entity.h b/include/entity.h index fc09651d..7440c198 100644 --- a/include/entity.h +++ b/include/entity.h @@ -169,6 +169,13 @@ extern void CopyPosition(Entity*, Entity*); extern void DeleteEntity(Entity*); extern void PositionRelative(Entity*, Entity*, s32, s32); +#define DirectionRound(expr) ((expr) & 0x18) +#define DirectionRoundUp(expr) DirectionRound((expr) + 4) +#define DirectionIsHorizontal(expr) ((expr) & 0x08) +#define DirectionIsVertical(expr) ((expr) & 0x10) +#define DirectionTurnHorizontal(expr) (DirectionRoundUp(expr) ^ 0x08) +#define DirectionTurnVertical(expr) (DirectionRoundUp(expr) ^ 0x10) + extern Entity gUnk_03003DA0; #endif diff --git a/include/functions.h b/include/functions.h index 8725e18e..adef870f 100644 --- a/include/functions.h +++ b/include/functions.h @@ -52,7 +52,7 @@ extern void sub_0806920C(Entity*); extern u32 sub_0805ACC0(Entity*); extern u32 sub_0801E99C(Entity*); extern void sub_0806924C(Entity*); -extern u32 sub_080AEF88(Entity*); +extern u32 ProcessMovement(Entity*); extern Entity* sub_080873AC(Entity*, u32, u32); extern void sub_08078778(Entity*); extern void sub_080787A8(Entity*, u32); @@ -192,7 +192,7 @@ extern void sub_08001242(Entity*); extern u32 sub_08003FC4(Entity*, u32); extern u32 sub_080043E8(Entity*); extern void sub_08001290(Entity*, u32); -extern void sub_08004488(u32); +extern void EnqueSFX(u32); extern void sub_08004596(Entity*, u32); extern u32 sub_0807953C(void); extern void ResetPlayer(void); diff --git a/src/enemy/acroBandits.c b/src/enemy/acroBandits.c index 98e6f254..03e02143 100644 --- a/src/enemy/acroBandits.c +++ b/src/enemy/acroBandits.c @@ -4,7 +4,6 @@ extern u32 sub_080002D4(s32, s32, u32); extern s32 sub_080012DC(Entity*); -extern void sub_08001324(Entity*); extern u32 sub_080044EC(Entity*, u32); extern u32 sub_08031E04(Entity*); extern void sub_08031E48(Entity*, Entity*); @@ -344,7 +343,7 @@ void sub_08031EE8(Entity* this) { if (this->height.HALF.HI < 1) { draw = this->spriteSettings.b.draw; if (!draw) - sub_08004488(299); + EnqueSFX(299); this->spriteSettings.b.draw = 1; } @@ -415,7 +414,7 @@ void sub_08032008(Entity* this) { this->spriteSettings.b.flipX = (this->direction >> 4 ^ 1); - sub_080AEF88(this); + ProcessMovement(this); } else { if (this->field_0x76.HALF.HI == 0) { if (sub_0806FCB8(this, parent->x.HALF.HI, parent->y.HALF.HI, 1) == 0) { diff --git a/src/enemy/beetle.c b/src/enemy/beetle.c index 3bdbfdad..a454402a 100644 --- a/src/enemy/beetle.c +++ b/src/enemy/beetle.c @@ -2,7 +2,7 @@ #include "functions.h" #include "player.h" -extern u32 sub_08049F64(Entity*, u32, u32); +extern u32 PlayerInRange(Entity*, u32, u32); u32 sub_08021D00(); void sub_08021D44(Entity* this, u32 param_2); @@ -86,7 +86,7 @@ void sub_08021888(Entity* this) { sub_08021818(this); } -void sub_0802189C(Entity* this) { +void Beetle_Initialize(Entity* this) { sub_0804A720(this); this->action = 1; this->field_0x1c = 1; @@ -131,7 +131,7 @@ void sub_08021984(Entity* this) { this->height.HALF.HI = -0x80; this->spriteRendering.b3 = 1; this->spriteOrientation.flipY = 1; - sub_08004488(0x12d); + EnqueSFX(0x12d); } if (sub_08003FC4(this, 0x1800) == 0) { @@ -178,7 +178,7 @@ void sub_08021A64(Entity* this) { } sub_08021D44(this, tmp); } - sub_080AEF88(this); + ProcessMovement(this); GetNextFrame(this); } } @@ -198,7 +198,7 @@ void sub_08021AD8(Entity* this) { return; } this->direction = (u8)tmp; - sub_08004488(0x7c); + EnqueSFX(0x7c); } sub_080AEFE0(this); if (!sub_08003FC4(this, 0x1800)) @@ -292,7 +292,7 @@ u32 sub_08021D00(Entity* this) { if (((u8*)&this->field_0x86)[0]) { ((u8*)&this->field_0x86)[0]--; ret = 0; - } else if (sub_08049F64(this, 1, 0x10) == 0) { + } else if (PlayerInRange(this, 1, 0x10) == 0) { ret = 0; } else { this->action = 4; @@ -305,11 +305,10 @@ u32 sub_08021D00(Entity* this) { return ret; } -void sub_08021D44(Entity* this, u32 param_2) { - param_2 += 4; - param_2 &= 0x18; - this->direction = param_2; - if (param_2 & 8) { +void sub_08021D44(Entity* this, u32 direction) { + direction = DirectionRoundUp(direction); + this->direction = direction; + if (DirectionIsHorizontal(direction)) { this->nonPlanarMovement = 0x180; } else { this->nonPlanarMovement = 0xc0; @@ -328,7 +327,7 @@ void (*const gUnk_080CB590[])(Entity*) = { }; void (*const gUnk_080CB5A8[])(Entity*) = { - sub_0802189C, + Beetle_Initialize, sub_080218B4, sub_08021A10, sub_08021A64, diff --git a/src/enemy/bladeTrap.c b/src/enemy/bladeTrap.c index 7f77861c..2229aec2 100644 --- a/src/enemy/bladeTrap.c +++ b/src/enemy/bladeTrap.c @@ -3,7 +3,7 @@ #include "room.h" extern void sub_080A2CC0(); extern void sub_0806F69C(); -extern void sub_08004488(); +extern void EnqueSFX(); extern Entity* GetCurrentRoomProperty(); void BladeTrap(Entity* ent) { @@ -27,7 +27,7 @@ void BladeTrap(Entity* ent) { *puVar3 = uVar1 - 1; if ((*puVar3) == 0) { if ((u16)(ent->direction & 0x80) == 0) { - sub_08004488(0x74); + EnqueSFX(0x74); } sub_080A2CC0((EntityData*)ent, &ent->attachedEntity, puVar3); } diff --git a/src/enemy/chuchu.c b/src/enemy/chuchu.c index 8dc5948c..738d2c13 100644 --- a/src/enemy/chuchu.c +++ b/src/enemy/chuchu.c @@ -6,7 +6,7 @@ extern s32 sub_080012DC(Entity*); extern void sub_08001318(Entity*); extern void sub_080043A8(Entity*); extern u32 sub_08049F1C(Entity*, Entity*, u32); -extern u32 sub_08049F64(Entity*, u32, u32); +extern u32 PlayerInRange(Entity*, u32, u32); extern void sub_0804AA1C(Entity*); extern void sub_080AF160(Entity*); @@ -25,7 +25,7 @@ void sub_0801FB14(Entity*); void sub_0801FB34(Entity*); void sub_0801FB68(Entity*); u32 sub_0801FBD0(Entity*); -void sub_0801FBE4(Entity*); +void Chuchu_JumpAtPlayer(Entity*); extern void (*const gUnk_080012C8[])(Entity*); extern void (*const gUnk_080CA21C[])(Entity*); @@ -78,7 +78,7 @@ void Chuchu(Entity* this) { } } -void sub_0801EEE4(Entity* this) { +void Chuchu_OnTick(Entity* this) { switch (this->entityType.form) { case 0: sub_0801F3AC(this); @@ -193,13 +193,13 @@ void sub_0801F12C(Entity* this) { if ((this->field_0xf++ & 7) == 0) { this->direction = sub_08049F84(this, 1); } - sub_080AEF88(this); + ProcessMovement(this); GetNextFrame(this); if (--this->actionDelay == 0) { - if (sub_08049F64(this, 1, 0x38)) { + if (PlayerInRange(this, 1, 0x38)) { this->action = 4; - sub_0801FBE4(this); - } else if (sub_08049F64(this, 1, 0x48)) { + Chuchu_JumpAtPlayer(this); + } else if (PlayerInRange(this, 1, 0x48)) { this->actionDelay = (Random() & 3) + 0xc; } else { sub_0801F328(this); @@ -213,7 +213,7 @@ void sub_0801F1B0(Entity* this) { if (this->frames.all & 1) { this->frames.all ^= 1; this->damageType = 90; - sub_08004488(299); + EnqueSFX(299); } sub_080AEFE0(this); if (sub_08003FC4(this, 0x4000) == 0) @@ -313,7 +313,7 @@ void sub_0801F3AC(Entity* this) { return; if (sub_08049FDC(this, 1)) { - if (this->field_0x82.HALF.LO || sub_08049F64(this, 1, 0x48)) { + if (this->field_0x82.HALF.LO || PlayerInRange(this, 1, 0x48)) { if (this->action == 1) { this->action = 2; this->spriteSettings.b.draw = 1; @@ -377,10 +377,10 @@ void sub_0801F508(Entity* this) { sub_0801F730(this); } else { u8 tmp = ++this->actionDelay & 7; - if (tmp == 0 && sub_08049F64(this, 1, 0x38)) { + if (tmp == 0 && PlayerInRange(this, 1, 0x38)) { if (Random() & 1) { this->action = 5; - sub_0801FBE4(this); + Chuchu_JumpAtPlayer(this); } else { this->field_0x82.HALF.HI = 120; sub_0801F730(this); @@ -389,7 +389,7 @@ void sub_0801F508(Entity* this) { if (tmp == 4) { this->direction = sub_08049F84(this, 1); } - sub_080AEF88(this); + ProcessMovement(this); GetNextFrame(this); } } @@ -400,7 +400,7 @@ void sub_0801F584(Entity* this) { if (this->frames.all & 0x1) { this->frames.all ^= 1; this->damageType = 91; - sub_08004488(299); + EnqueSFX(299); } sub_080AEFE0(this); if (sub_08003FC4(this, 0x4000) == 0) @@ -493,7 +493,7 @@ void sub_0801F764(Entity* this) { if (sub_08049FDC(this, 1)) { if (this->action == 1) { - if (this->field_0x82.HALF.LO || sub_08049F64(this, 1, 0x48)) { + if (this->field_0x82.HALF.LO || PlayerInRange(this, 1, 0x48)) { this->action = 2; this->spriteSettings.b.draw = 1; this->field_0x82.HALF.LO = 1; @@ -520,7 +520,7 @@ void sub_0801F7FC(Entity* this) { if (sub_08049FDC(this, 1) == 0) return; - if (this->field_0x82.HALF.LO || sub_08049F64(this, 1, 0x48)) { + if (this->field_0x82.HALF.LO || PlayerInRange(this, 1, 0x48)) { this->action = 2; this->spriteSettings.b.draw = 1; this->field_0x82.HALF.LO = 1; @@ -548,7 +548,7 @@ void sub_0801F884(Entity* this) { ent->entityType.parameter = 64; this->action = 4; this->damageType = 165; - sub_08004488(0x193); + EnqueSFX(0x193); } } } @@ -562,12 +562,12 @@ void sub_0801F8C0(Entity* this) { u8 tmp = ++this->actionDelay & 7; if (tmp == 0 && sub_08049F1C(this, gUnk_020000B0, 0x38)) { this->action = 5; - sub_0801FBE4(this); + Chuchu_JumpAtPlayer(this); } else { if (tmp == 4) { this->direction = GetFacingDirection(this, gUnk_020000B0); } - sub_080AEF88(this); + ProcessMovement(this); GetNextFrame(this); } } @@ -577,7 +577,7 @@ void sub_0801F940(Entity* this) { if (this->frames.all & 0x10) { if (this->frames.all & 1) { this->frames.all ^= 1; - sub_08004488(299); + EnqueSFX(299); } sub_080AEFE0(this); if (sub_08003FC4(this, 0x4000) == 0) @@ -704,7 +704,7 @@ u32 sub_0801FBD0(Entity* this) { } } -void sub_0801FBE4(Entity* this) { +void Chuchu_JumpAtPlayer(Entity* this) { this->nonPlanarMovement = 0x180; this->field_0x20 = 0x20000; this->direction = sub_08049F84(this, 1); @@ -713,7 +713,7 @@ void sub_0801FBE4(Entity* this) { // clang-format off void (*const gUnk_080CA21C[])(Entity*) = { - sub_0801EEE4, + Chuchu_OnTick, sub_0801EF40, sub_0801F02C, sub_0801F048, diff --git a/src/enemy/cuccoChickAggr.c b/src/enemy/cuccoChickAggr.c index 2fcfcc89..f1169ae7 100644 --- a/src/enemy/cuccoChickAggr.c +++ b/src/enemy/cuccoChickAggr.c @@ -49,10 +49,10 @@ void sub_08022988(Entity* this) { this->frameIndex = 1; this->field_0x20 = 0x10000; - sub_08004488(0xd6); + EnqueSFX(0xd6); } - sub_080AEF88(this); + ProcessMovement(this); if (sub_08003FC4(this, 0x2000) == 0) { if (--this->actionDelay == 0) { sub_08022A88(this); @@ -75,7 +75,7 @@ void sub_080229F8(Entity* this) { sub_08022B44(this); } else { this->field_0x20 = 0x10000; - sub_08004488(0xd6); + EnqueSFX(0xd6); } } } @@ -88,7 +88,7 @@ void sub_08022A40(Entity* this) { this->frameIndex = 1; } - sub_080AEF88(this); + ProcessMovement(this); if (sub_08003FC4(this, 0x2000) == 0) { if (--this->actionDelay == 0) { sub_08022A88(this); @@ -143,7 +143,7 @@ void sub_08022B44(Entity *this){ if (this->direction & 0xf) this->spriteSettings.b.flipX = (this->direction >> 4)^1; - sub_08004488(0xd6); + EnqueSFX(0xd6); } diff --git a/src/enemy/darkNut.c b/src/enemy/darkNut.c index f226026f..03c9c91e 100644 --- a/src/enemy/darkNut.c +++ b/src/enemy/darkNut.c @@ -17,7 +17,7 @@ u32 sub_080214FC(); void sub_08021540(); void sub_08021600(); void sub_080213B0(); -u32 sub_08049F64(); +u32 PlayerInRange(); u32 sub_0802169C(); void sub_0802124C(); void sub_08021644(); @@ -90,7 +90,7 @@ void sub_08020BB8(Entity* this) { } this->action = 10; sub_08021218(this, 0xb, this->animationState); - sub_08004488(0x15d); + EnqueSFX(0x15d); sub_08021588(this); break; case 0x4c: @@ -150,7 +150,7 @@ void sub_08020DD4(Entity* this) { } else { if (--this->actionDelay == 0) sub_08021540(this); - sub_080AEF88(this); + ProcessMovement(this); UpdateAnimationSingleFrame(this); } } @@ -178,13 +178,13 @@ void sub_08020E78(Entity* this) { } void sub_08020E98(Entity* this) { - if (sub_08049F64(this, 1, 0x38)) { + if (PlayerInRange(this, 1, 0x38)) { if (sub_0802169C(this, gUnk_020000B0)) { this->action = 8; sub_08021218(this, 7, this->animationState); } else { this->direction = GetFacingDirection(gUnk_020000B0, this); - if (sub_080AEF88(this) == 0) { + if (ProcessMovement(this) == 0) { this->action = 8; sub_08021218(this, 7, this->animationState); } else { @@ -198,7 +198,7 @@ void sub_08020E98(Entity* this) { sub_08021414(this); } else { this->direction = GetFacingDirection(this, gUnk_020000B0); - sub_080AEF88(this); + ProcessMovement(this); sub_0802124C(this); sub_08021644(this); } @@ -212,7 +212,7 @@ void sub_08020F28(Entity* this) { } void sub_08020F48(Entity* this) { - if (sub_08049F64(this, 1, 0x48)) { + if (PlayerInRange(this, 1, 0x48)) { if (sub_08021664(this, gUnk_020000B0)) { u32 uVar2 = sub_0804A044(this, gUnk_020000B0, 9); if (uVar2 == 0xff) { @@ -273,7 +273,7 @@ void sub_08021038(Entity* this) { pEVar2->parent = this; this->attachedEntity = pEVar2; } - sub_08004488(270); + EnqueSFX(270); } if (this->frames.all & 0x80) { @@ -295,7 +295,7 @@ void sub_080210A8(Entity* this) { if (this->frames.all & 1) { this->frames.all = 0; sub_08021588(this); - sub_08004488(349); + EnqueSFX(349); } else if (this->frames.all & 0x80) { sub_08021390(this); } @@ -313,12 +313,12 @@ void sub_080210E4(Entity* this) { this->attachedEntity = ent; } - sub_08004488(270); + EnqueSFX(270); } sub_08021644(this); if ((this->frames.all & 0x10) && - (!sub_080AEF88(this) || (this->attachedEntity && (this->attachedEntity->bitfield & 0x80)))) { + (!ProcessMovement(this) || (this->attachedEntity && (this->attachedEntity->bitfield & 0x80)))) { sub_080213D0(this, 0); } else { if (--this->field_0x76.HWORD == 0) @@ -516,7 +516,7 @@ void sub_08021424(Entity* this) { sub_080212B0(this); } else { this->direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, x, y); - if (!sub_080AEF88(this)) { + if (!ProcessMovement(this)) { sub_080212B0(this); } else { UpdateAnimationSingleFrame(this); @@ -575,13 +575,13 @@ void sub_0802159C(Entity* this) { ent->parent = this; this->attachedEntity = ent; } - sub_08004488(0x116); + EnqueSFX(0x116); } else if (this->frames.all == 2) { this->frames.all = 0; sub_08021588(this); } else if (this->frames.all & 0x20) { this->frames.all &= ~0x20; - sub_08004488(0x115); + EnqueSFX(0x115); } } @@ -596,7 +596,7 @@ void sub_08021600(Entity* this) { ent->parent = this; this->attachedEntity = ent; } - sub_08004488(0x10e); + EnqueSFX(0x10e); } else if (this->frames.all == 2) { this->frames.all = 0; sub_08021588(this); @@ -606,7 +606,7 @@ void sub_08021600(Entity* this) { void sub_08021644(Entity* this) { if (this->frames.all & 0x20) { this->frames.all &= ~0x20; - sub_08004488(0x7d); + EnqueSFX(0x7d); } } diff --git a/src/enemy/doorMimic.c b/src/enemy/doorMimic.c index 587ce521..5d5ca031 100644 --- a/src/enemy/doorMimic.c +++ b/src/enemy/doorMimic.c @@ -102,7 +102,7 @@ void sub_080220F0(Entity* this) { fx->y.HALF.HI += off->v; } } - sub_08004488(260); + EnqueSFX(260); } else if (this->frames.all & 1) { this->field_0x44 = 4; } diff --git a/src/enemy/hangingSeed.c b/src/enemy/hangingSeed.c index cd204a6e..f819287f 100644 --- a/src/enemy/hangingSeed.c +++ b/src/enemy/hangingSeed.c @@ -1,14 +1,14 @@ #include "entity.h" #include "functions.h" -extern void (*const gUnk_080CB570[])(Entity*); +extern void (*const gHangingSeedFunctions[])(Entity*); extern void (*const gUnk_080CB588[])(Entity*); void HangingSeed(Entity* this) { - EnemyFunctionHandler(this, gUnk_080CB570); + EnemyFunctionHandler(this, gHangingSeedFunctions); } -void sub_080216E4(Entity* this) { +void HangingSeed_OnTick(Entity* this) { gUnk_080CB588[this->action](this); } @@ -20,9 +20,10 @@ void sub_080216FC(Entity* this) { } void nullsub_7(Entity* this) { + /* ... */ } -void sub_08021720(Entity* this) { +void HangingSeed_Initialize(Entity* this) { this->action = 1; this->spriteSettings.b.draw = 1; this->frameIndex = this->entityType.form; @@ -30,12 +31,13 @@ void sub_08021720(Entity* this) { this->spritePriority.b0 = 3; } -void nullsub_08(Entity* this) { +void HangingSeed_Hang(Entity* this) { + /* ... */ } // clang-format off -void (*const gUnk_080CB570[])(Entity*) = { - sub_080216E4, +void (*const gHangingSeedFunctions[])(Entity*) = { + HangingSeed_OnTick, sub_080216FC, sub_08001324, sub_0804A7D4, @@ -44,8 +46,8 @@ void (*const gUnk_080CB570[])(Entity*) = { }; void (*const gUnk_080CB588[])(Entity*) = { - sub_08021720, - nullsub_08, + HangingSeed_Initialize, + HangingSeed_Hang, }; // clang-format on diff --git a/src/enemy/keaton.c b/src/enemy/keaton.c index 94c2ab33..afc0e4b6 100644 --- a/src/enemy/keaton.c +++ b/src/enemy/keaton.c @@ -34,7 +34,7 @@ void sub_080323DC(Entity* this) { void sub_080323F4(Entity* this) { u32 var; - if ((u8)(this->action - 3) >= 2) { + if (this->action != 3 && this->action != 4) { this->action = 3; this->actionDelay = 0xC; var = ((this->field_0x3e + 4) & 0x18) ^ 0x10; @@ -69,7 +69,7 @@ void sub_0803248C(Entity* this) { if (this->actionDelay == 0) { sub_08032650(this); } - if (sub_080AEF88(this) == 0) { + if (ProcessMovement(this) == 0) { this->actionDelay = 1; } UpdateAnimationSingleFrame(this); diff --git a/src/enemy/keese.c b/src/enemy/keese.c index 14f5c520..d73475f3 100644 --- a/src/enemy/keese.c +++ b/src/enemy/keese.c @@ -10,31 +10,36 @@ extern void sub_0806F4E8(Entity*); extern u32 sub_0806F3E4(Entity*); extern void sub_0804A7D4(Entity*); extern void sub_0804A720(Entity*); -extern void sub_08021EF0(Entity*); +extern void Keese_StartFly(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 (*const gUnk_080CB69C[])(Entity*); -extern void (*const gUnk_080CB6B4[])(Entity*); +extern void (*const gKeeseFunctions[])(Entity*); +extern void (*const gKeeseActions[])(Entity*); extern void (*const gUnk_080CB6C4[])(Entity*); -extern const s8 gUnk_080CB6D0[]; -extern const u16 gUnk_080CB6D6[]; -extern const u8 gUnk_080CB6F6[]; +extern const s8 gKeeseSpriteOffsets[]; +extern const u16 gKeeseFlyDurations[]; +extern const u8 gKeeseRestDurations[]; + +enum { + KeeseAnimation_Fly, + KeeseAnimation_Rest, +}; void Keese(Entity* this) { - gUnk_080CB69C[GetNextFunction(this)](this); + gKeeseFunctions[GetNextFunction(this)](this); } -void sub_08021D80(Entity* this) { - gUnk_080CB6B4[this->action](this); +void Keese_OnTick(Entity* this) { + gKeeseActions[this->action](this); } void sub_08021d98(Entity* this) { - sub_0804AA30(this, gUnk_080CB69C); + sub_0804AA30(this, gKeeseFunctions); } void sub_08021DA8(Entity* this) { @@ -57,10 +62,9 @@ void sub_08021DDC(Entity* this) { } } -void sub_08021DF0(Entity* this) { - +void Keese_Initialize(Entity* this) { sub_0804A720(this); - if ((this->entityType).form != 0) { + if (this->entityType.form != 0) { this->spritePriority.b1 = 1; this->height.HALF.HI = -0x10; } @@ -69,15 +73,15 @@ void sub_08021DF0(Entity* this) { this->spritePriority.b0 = 3; this->collisionLayer = 3; UpdateSpriteForCollisionLayer(this); - sub_08021EF0(this); + Keese_StartFly(this); } -void sub_08021E4C(Entity* this) { +void Keese_Fly(Entity* this) { if (this->field_0x78.HWORD != 0) { this->field_0x78.HWORD--; } if (this->field_0x7a.HWORD != 0) { - (this->field_0x7a.HWORD)--; + this->field_0x7a.HWORD--; } GetNextFrame(this); if ((this->frames.b.f3) != 0) { @@ -85,62 +89,54 @@ void sub_08021E4C(Entity* this) { } else { sub_080AEFB4(this); } - this->spriteOffsetY = gUnk_080CB6D0[this->frames.all]; + this->spriteOffsetY = gKeeseSpriteOffsets[this->frames.all]; } -void sub_08021EA4(Entity* this) { +void Keese_Rest(Entity* this) { if (--this->actionDelay == 0) { - sub_08021EF0(this); + Keese_StartFly(this); } } -void sub_08021EBC(Entity* this) { - s32 iVar1; - +void Keese_Sleep(Entity* this) { if (this->actionDelay != 0) { this->actionDelay--; } else { - iVar1 = sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x70); - if (iVar1 != 0) { - sub_08021EF0(this); - } + if (sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x70)) + Keese_StartFly(this); } } -void sub_08021EF0(Entity* this) { - u32 uVar1; - +void Keese_StartFly(Entity* this) { this->action = 1; - this->field_0x78.HWORD = gUnk_080CB6D6[Random() & 0xf]; - this->field_0x7a.HWORD = 0x3c; - InitializeAnimation(this, 0); + this->field_0x78.HWORD = gKeeseFlyDurations[Random() & 0xf]; + this->field_0x7a.HWORD = 60; + InitializeAnimation(this, KeeseAnimation_Fly); } 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); + this->actionDelay = gKeeseRestDurations[Random() & 0xf]; + InitializeAnimation(this, KeeseAnimation_Rest); } else if (!this->field_0x7a.HWORD && !(sub_0806FCB8(this, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x70))) { this->action = 3; - this->actionDelay = 0x1e; - InitializeAnimation(this, 1); + this->actionDelay = 30; + InitializeAnimation(this, KeeseAnimation_Rest); } else { if (sub_08049FA0(this) != 0) { this->direction = Random() & 0x1f; } else { this->direction = sub_08049EE4(this); } - InitializeAnimation(this, 0); + InitializeAnimation(this, KeeseAnimation_Fly); } } // clang-format off -void (*const gUnk_080CB69C[])(Entity*) = { - sub_08021D80, +void (*const gKeeseFunctions[])(Entity*) = { + Keese_OnTick, sub_08021d98, sub_08001328, sub_0804A7D4, @@ -148,11 +144,11 @@ void (*const gUnk_080CB69C[])(Entity*) = { sub_08021DA8, }; -void (*const gUnk_080CB6B4[])(Entity*) = { - sub_08021DF0, - sub_08021E4C, - sub_08021EA4, - sub_08021EBC, +void (*const gKeeseActions[])(Entity*) = { + Keese_Initialize, + Keese_Fly, + Keese_Rest, + Keese_Sleep, }; void (*const gUnk_080CB6C4[])(Entity*) = { @@ -161,16 +157,16 @@ void (*const gUnk_080CB6C4[])(Entity*) = { sub_08021DDC, }; -const s8 gUnk_080CB6D0[] = { +const s8 gKeeseSpriteOffsets[] = { 1, -2, -5, -2, 1, 0, }; -const u16 gUnk_080CB6D6[] = { +const u16 gKeeseFlyDurations[] = { 180, 180, 300, 300, 300, 300, 300, 300, 480, 480, 480, 480, 480, 480, 720, 720, }; -const u8 gUnk_080CB6F6[] = { +const u8 gKeeseRestDurations[] = { 30, 30, 45, 45, 45, 45, 45, 45, 60, 60, 60, 60, 60, 60, 75, 75, }; diff --git a/src/enemy/lakitu.c b/src/enemy/lakitu.c index 585ec102..b4bbc198 100644 --- a/src/enemy/lakitu.c +++ b/src/enemy/lakitu.c @@ -50,7 +50,7 @@ extern u32 sub_080041A0(Entity *, Entity *, u32, u32); extern u32 GetFacingDirection(Entity *, Entity *); // sub_0803CB64 -extern void sub_08004488(u32); +extern void EnqueSFX(u32); typedef struct { s8 x; @@ -344,7 +344,7 @@ void sub_0803CB64(Entity *this) { PositionRelative(this, cloud, offset->x << 16, offset->y << 16); - sub_08004488(0x193); + EnqueSFX(0x193); } void sub_0803CBAC(Entity *this) { diff --git a/src/enemy/leever.c b/src/enemy/leever.c index 2a3b621f..959d8617 100644 --- a/src/enemy/leever.c +++ b/src/enemy/leever.c @@ -8,27 +8,39 @@ 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 const u8 gUnk_080CA4C8[]; -extern const u16 gUnk_080CA4CA[]; extern s16 gSineTable[]; +bool32 Leever_PlayerInRange(Entity*, s32); +void Leever_Move(Entity*); + +extern void (*const gLeeverFunctions[])(Entity*); +extern void (*const gLeeverActions[])(Entity*); +extern const s8 gLeeverDrift[]; +extern const u16 gUnk_080CA4CA[]; + +enum { + LeeverAnimation_DigUp, + LeeverAnimation_DigDown, + LeeverAnimation_Attack, +}; + +enum { + LeeverForm_Red, + LeeverForm_Blue, +}; + void Leever(Entity* this) { - EnemyFunctionHandler(this, gUnk_080CA49C); + EnemyFunctionHandler(this, gLeeverFunctions); SetChildOffset(this, 0, 1, -0x10); } -void sub_0801FC28(Entity* this) { - gUnk_080CA4B4[this->action](this); +void Leever_OnTick(Entity* this) { + gLeeverActions[this->action](this); } void sub_0801FC40(Entity* this) { @@ -41,30 +53,30 @@ void sub_0801FC40(Entity* this) { sub_0804A9FC(this, 0x1c); } } - sub_0804AA30(this, gUnk_080CA49C); + sub_0804AA30(this, gLeeverFunctions); } void sub_0801FC7C(Entity* this) { - if ((this->entityType).form == 0) { + if (this->entityType.form == LeeverForm_Red) { sub_0804A7D4(this); } else { CreateDeathFx(this, 0xf1, 0); } } -void sub_0801FC9C(Entity* this) { +void Leever_Initialize(Entity* this) { sub_0804A720(this); this->action = 1; this->actionDelay = Random(); } -void sub_0801FCB0(Entity* this) { +void Leever_Idle(Entity* this) { if (--this->actionDelay == 0) { - if (sub_0801FE68(this, Random() & 0x1f) != 0) { + if (Leever_PlayerInRange(this, Random() & 0x1f)) { this->action = 2; this->spriteSettings.b.draw = TRUE; - this->direction = (GetFacingDirection(this, gUnk_020000B0) + gUnk_080CA4C8[Random() & 1]) & 0x1f; - InitializeAnimation(this, 0); + this->direction = (GetFacingDirection(this, gUnk_020000B0) + gLeeverDrift[Random() & 1]) & 0x1f; + InitializeAnimation(this, LeeverAnimation_DigUp); UpdateSpriteForCollisionLayer(this); } else { this->actionDelay = (Random() & 0x18) + 8; @@ -72,38 +84,36 @@ void sub_0801FCB0(Entity* this) { } } -void sub_0801FD2C(Entity* this) { - +void Leever_DigUp(Entity* this) { GetNextFrame(this); if (this->frames.b.f3 != 0) { this->action = 3; - if (this->entityType.form == 0) { - this->field_0x74.HWORD = 0xb4; + if (this->entityType.form == LeeverForm_Red) { + this->field_0x74.HWORD = 180; } else { - this->field_0x74.HWORD = 0x6e; + this->field_0x74.HWORD = 110; } - InitializeAnimation(this, 2); + InitializeAnimation(this, LeeverAnimation_Attack); } else if (this->frames.b.f0 != 0) { this->frames.all &= 0xfe; this->flags |= 0x80; } } -void sub_0801FD80(Entity* this) { - - sub_0801FED4(this); +void Leever_Attack(Entity* this) { + Leever_Move(this); GetNextFrame(this); if (--this->field_0x74.HWORD == 0) { this->action = 4; this->flags &= 0x7f; - InitializeAnimation(this, 1); + InitializeAnimation(this, LeeverAnimation_DigDown); } } -void sub_0801FDB4(Entity* this) { - sub_0801FED4(this); +void Leever_DigDown(Entity* this) { + Leever_Move(this); GetNextFrame(this); if ((this->frames.b.f3) != 0) { this->action = 1; @@ -132,7 +142,7 @@ u32 sub_0801FDE4(Entity* ent, s32 x, s32 y) { } } -bool32 sub_0801FE68(Entity* ent, s32 arg2) { +bool32 Leever_PlayerInRange(Entity* ent, s32 arg2) { s32 sin, cos; s32 x, y; u32 i; @@ -157,48 +167,46 @@ bool32 sub_0801FE68(Entity* ent, s32 arg2) { extern u32 sub_0800132C(Entity*, Entity*); -void sub_0801FED4(Entity* this) { - s16 sVar2; - +void Leever_Move(Entity* this) { if (sub_08049FDC(this, 1) == 0) { this->field_0x74.HWORD = 1; } - sVar2 = (this->frames.all & 0xf) * 0x20; - this->nonPlanarMovement = sVar2; - if (this->entityType.form == 0) { + + this->nonPlanarMovement = (this->frames.all & 0xf) * 0x20; + if (this->entityType.form == LeeverForm_Red) { if ((this->field_0xf++ & 0xf) == 0) { sub_08004596(this, sub_0800132C(this, gUnk_020000B0)); } } else { - this->nonPlanarMovement = sVar2 + 0x40; + this->nonPlanarMovement += 0x40; if ((this->field_0xf++ & 0x7) == 0) { sub_08004596(this, sub_0800132C(this, gUnk_020000B0)); } } - sub_080AEF88(this); + + ProcessMovement(this); } // clang-format off -void (*const gUnk_080CA49C[])(Entity*) = { - sub_0801FC28, +void (*const gLeeverFunctions[])(Entity*) = { + Leever_OnTick, sub_0801FC40, sub_08001324, sub_0801FC7C, sub_08001242, - sub_0801FC28, + Leever_OnTick, }; -void (*const gUnk_080CA4B4[])(Entity*) = { - sub_0801FC9C, - sub_0801FCB0, - sub_0801FD2C, - sub_0801FD80, - sub_0801FDB4, +void (*const gLeeverActions[])(Entity*) = { + Leever_Initialize, + Leever_Idle, + Leever_DigUp, + Leever_Attack, + Leever_DigDown, }; -const u8 gUnk_080CA4C8[] = { - 0x06, - 0xFA, +const s8 gLeeverDrift[] = { + 6, -6, }; const u16 gUnk_080CA4CA[] = { diff --git a/src/enemy/miniSlime.c b/src/enemy/miniSlime.c index 64c9c089..70b1a029 100644 --- a/src/enemy/miniSlime.c +++ b/src/enemy/miniSlime.c @@ -87,7 +87,7 @@ void sub_080452FC(Entity *this) { } void sub_08045374(Entity* this) { - sub_080AEF88(this); + ProcessMovement(this); GetNextFrame(this); if (--this->actionDelay == 0) this->action = 1; diff --git a/src/enemy/moldorm.c b/src/enemy/moldorm.c index 530eeae1..3338a15a 100644 --- a/src/enemy/moldorm.c +++ b/src/enemy/moldorm.c @@ -96,7 +96,7 @@ void sub_08022D40(Entity* this) { } } else { sub_08022F14(this); - sub_080AEF88(this); + ProcessMovement(this); if (this->collisions) { sub_0800417E(this, this->collisions); diff --git a/src/enemy/octorok.c b/src/enemy/octorok.c index 90e53a23..3b9fe027 100644 --- a/src/enemy/octorok.c +++ b/src/enemy/octorok.c @@ -6,24 +6,25 @@ extern void EnemyFunctionHandler(); extern void SetChildOffset(); extern void sub_0804AA30(); extern void sub_0804A7D4(); -extern void sub_0801ECFC(); extern u32 sub_0806F520(); extern void sub_0806F4E8(); extern void UpdateAnimationVariableFrames(); extern void sub_0804A720(); extern u32 Random(); -extern void sub_0801ED14(); -extern u32 sub_0801EDEC(); extern Entity* sub_08049DF4(u32); +void Octorok_Pause(); +bool32 Octorok_FacesPlayer(); +void Octorok_Turn(); + extern void (*const gOctorok[6])(Entity*); -extern void (*const gOctorokIdle[4])(Entity*); +extern void (*const gOctorokActions[4])(Entity*); extern void (*const gUnk_080CA158[6])(Entity*); extern Entity* gUnk_020000B0; -extern const u8 gUnk_080CA170[4]; -extern const u8 gUnk_080CA174[2]; -extern const u8 gUnk_080CA176[8]; +extern const u8 gOctorokWalkDuration[4]; +extern const u8 gOctorokSpitChanceModifier[2]; +extern const u8 gOctorokNutOffset[8]; extern const s8 gUnk_080CA17E[2]; // Main @@ -33,8 +34,8 @@ void Octorok(Entity* this) { } // Idle -void sub_0801EAD0(Entity* this) { - gOctorokIdle[this->action](this); +void Octorok_OnTick(Entity* this) { + gOctorokActions[this->action](this); } // Touch player @@ -47,7 +48,7 @@ void sub_0801EAE8(Entity* this) { // Death void sub_0801EB0C(Entity* this) { - if ((this->entityType).form == 0) { + if (this->entityType.form == 0) { sub_0804A7D4(this); } else { CreateDeathFx(this, 241, 0); @@ -55,10 +56,8 @@ void sub_0801EB0C(Entity* this) { } void sub_0801EB2C(Entity* this) { - s32 iVar1; - - if ((this->previousActionFlag < 3) && (iVar1 = sub_0806F520(this), iVar1 == 0)) { - sub_0801ECFC(this); + if (this->previousActionFlag < 3 && !sub_0806F520(this)) { + Octorok_Pause(this); InitializeAnimation(this, this->animationState); } else { gUnk_080CA158[this->previousActionFlag](this); @@ -84,6 +83,7 @@ void sub_0801EB84(Entity* this) { } void nullsub_3(Entity* this) { + /* ... */ } void sub_0801EB9C(Entity* this) { @@ -96,7 +96,7 @@ void sub_0801EB9C(Entity* this) { } // Init -void sub_0801EBC8(Entity* this) { +void Octorok_Initialize(Entity* this) { sub_0804A720(this); if (this->entityType.form == 2) { this->animationState = this->entityType.form; @@ -104,105 +104,103 @@ void sub_0801EBC8(Entity* this) { this->animationState = Random() & 3; } this->field_0x1c = 18; - sub_0801ECFC(this); + Octorok_Pause(this); InitializeAnimation(this, this->animationState); } -void sub_0801EBF4(Entity* this) { - u32 uVar2; - +void Octorok_Idle(Entity* this) { if (--this->actionDelay == 0) { this->action = 2; - uVar2 = Random(); - this->actionDelay = gUnk_080CA170[uVar2 & 3]; - sub_0801ED14(this); + this->actionDelay = gOctorokWalkDuration[Random() & 3]; + Octorok_Turn(this); } GetNextFrame(this); } -void sub_0801EC2C(Entity* this) { - sub_080AEF88(this); +void Octorok_Move(Entity* this) { + ProcessMovement(this); GetNextFrame(this); if (--this->actionDelay == 0) { - if (sub_0801EDEC(this) && gUnk_080CA174[this->entityType.form] <= (Random() & 3)) { + if (Octorok_FacesPlayer(this) && gOctorokSpitChanceModifier[this->entityType.form] <= (Random() & 3)) { this->action = 3; InitializeAnimation(this, this->animationState + 4); } else { - sub_0801ECFC(this); + Octorok_Pause(this); } } } -void sub_0801EC80(Entity* this) { +void Octorok_ShootNut(Entity* this) { GetNextFrame(this); if (this->frames.all & 1) { Entity* ent = sub_0804A98C(this, 1, 0); if (ent) { const s8* off; ent->direction = this->direction; - off = &gUnk_080CA176[this->direction / 4]; + off = &gOctorokNutOffset[this->direction / 4]; ent->x.HALF.HI += off[0]; ent->y.HALF.HI += off[1]; ent->height.HALF.HI = -3; this->frames.all &= 0xfe; - sub_08004488(0x18d); + EnqueSFX(0x18d); } } if (this->frames.all & 0x80) - sub_0801ECFC(this); + Octorok_Pause(this); } -void sub_0801ECFC(Entity* this) { +void Octorok_Pause(Entity* this) { this->action = 1; this->actionDelay = (Random() & 0x38) + 0x18; } -void sub_0801ED14(Entity* this) { +void Octorok_Turn(Entity* this) { if (this->entityType.form != 2) { if (sub_08049FA0(this)) { if (this->entityType.form == 1 && (Random() & 3) == 0 && sub_08049FDC(this, 1)) { - this->direction = (GetFacingDirection(this, gUnk_020000B0) + 4) & 0x18; + this->direction = DirectionRoundUp(GetFacingDirection(this, gUnk_020000B0)); } else { - this->direction = Random() & 0x18; + this->direction = DirectionRound(Random()); } - } else if ((Random() & 3)) { - this->direction = (sub_08049EE4(this) + gUnk_080CA17E[Random() & 1]) & 0x18; + } else if (Random() & 3) { + this->direction = DirectionRound(sub_08049EE4(this) + gUnk_080CA17E[Random() & 1]); } else { - this->direction = Random() & 0x18; + this->direction = DirectionRound(Random()); } } else { if (sub_08049FDC(this, 1) == 0) { if (sub_08049FA0(this)) { - this->direction = Random() & 0x18; + this->direction = DirectionRound(Random()); } else if (Random() & 3) { - this->direction = (sub_08049EE4(this) + gUnk_080CA17E[Random() & 1]) & 0x18; + this->direction = DirectionRound(sub_08049EE4(this) + gUnk_080CA17E[Random() & 1]); } else { - this->direction = (GetFacingDirection(this, gUnk_020000B0) + 4) & 0x18; + this->direction = DirectionRoundUp(GetFacingDirection(this, gUnk_020000B0)); } } else { - this->direction = (GetFacingDirection(this, gUnk_020000B0) + 4) & 0x18; + this->direction = DirectionRoundUp(GetFacingDirection(this, gUnk_020000B0)); } } + this->animationState = this->direction >> 3; InitializeAnimation(this, this->animationState); } -u32 sub_0801EDEC(Entity* this) { +bool32 Octorok_FacesPlayer(Entity* this) { Entity* ent = sub_08049DF4(1); if (ent == NULL) - return 0; + return FALSE; - if (((GetFacingDirection(this, ent) + 4) & 0x18) != this->direction) - return 0; + if (DirectionRoundUp(GetFacingDirection(this, ent)) != this->direction) + return FALSE; - return 1; + return TRUE; } // clang-format off void (*const gOctorok[])(Entity*) = { - sub_0801EAD0, + Octorok_OnTick, sub_0801EAE8, sub_08001324, sub_0801EB0C, @@ -210,11 +208,11 @@ void (*const gOctorok[])(Entity*) = { sub_0801EB2C, }; -void (*const gOctorokIdle[])(Entity*) = { - sub_0801EBC8, - sub_0801EBF4, - sub_0801EC2C, - sub_0801EC80, +void (*const gOctorokActions[])(Entity*) = { + Octorok_Initialize, + Octorok_Idle, + Octorok_Move, + Octorok_ShootNut, }; void (*const gUnk_080CA158[])(Entity*) = { @@ -226,31 +224,19 @@ void (*const gUnk_080CA158[])(Entity*) = { sub_0801EB9C, }; -const u8 gUnk_080CA170[] = { - 30, - 60, - 60, - 90, +const u8 gOctorokWalkDuration[] = { + 30, 60, 60, 90, }; -const u8 gUnk_080CA174[] = { - 1, - 0, +const u8 gOctorokSpitChanceModifier[] = { + 1, 0, }; -const u8 gUnk_080CA176[] = { - 0x00, - 0xFD, - 0x04, - 0x00, - 0x00, - 0x02, - 0xFC, - 0x00, +const u8 gOctorokNutOffset[] = { + 0, -3, 4, 0, 0, 2, -4, 0, }; const s8 gUnk_080CA17E[] = { - 0x04, - 0xFC, + 4, -4, }; // clang-format on diff --git a/src/enemy/peahat.c b/src/enemy/peahat.c index 728a7837..66ff3199 100644 --- a/src/enemy/peahat.c +++ b/src/enemy/peahat.c @@ -1,12 +1,12 @@ #include "entity.h" #include "functions.h" -extern void (*const gUnk_080CA570[])(Entity*); -extern void (*const gUnk_080CA588[])(Entity*); -extern void (*const gUnk_080CA590[])(Entity*); +extern void (*const gPeahatFunctions[])(Entity*); +extern void (*const gPeahatPropellerFunctions[])(Entity*); +extern void (*const gPeahatActions[])(Entity*); extern void (*const gUnk_080CA5BC[])(Entity*); -extern const s8 gUnk_080CA5B8[]; +extern const s8 gPeahatFlightHeights[]; extern const s8 gUnk_080CA5D4[]; void sub_080205F8(Entity*); @@ -18,45 +18,59 @@ extern void sub_0804AA1C(Entity*); extern Entity* gUnk_020000B0; +enum { + PeahatForm_Torso, + PeahatForm_Propeller, +}; + +enum { + PeahatAnimation_Flying, + PeahatAnimation_BrokenPropeller, + PeahatAnimation_SlicedPropeller, + PeahatAnimation_Propeller, + PeahatAnimation_NewPropeller, + PeahatAnimation_RepairPropeller, +}; + void Peahat(Entity* this) { - if (this->entityType.form == 0) { - EnemyFunctionHandler(this, gUnk_080CA570); + if (this->entityType.form == PeahatForm_Torso) { + EnemyFunctionHandler(this, gPeahatFunctions); SetChildOffset(this, 0, 1, -0x10); } else { - gUnk_080CA588[this->action](this); + gPeahatPropellerFunctions[this->action](this); } } -void sub_0801FF9C(Entity* this) { - gUnk_080CA590[this->action](this); +void Peahat_OnTick(Entity* this) { + gPeahatActions[this->action](this); if (this->field_0x80.HALF.HI) - this->height.HALF.HI = gUnk_080CA5B8[(this->field_0xf++ & 0x30) >> 4]; + this->height.HALF.HI = gPeahatFlightHeights[(this->field_0xf++ & 0x30) >> 4]; } void sub_0801FFDC(Entity* this) { if (this->field_0x82.HALF.LO) { if (this->bitfield == 0x94) { - Entity* ent = CreateEnemy(3, 1); + Entity* ent = CreateEnemy(3, PeahatForm_Propeller); if (ent) { CopyPosition(this, ent); ent->height.HALF.HI -= 8; } this->field_0x82.HALF.LO = 0; - this->animationState = 2; + this->animationState = PeahatAnimation_SlicedPropeller; this->action = 5; this->nonPlanarMovement = 0x80; this->hurtBlinkTime = -30; this->field_0x80.HALF.HI = 0; InitializeAnimation(this, this->animationState); } else if (this->bitfield == 0x9b) { - this->animationState = 1; + this->animationState = PeahatAnimation_BrokenPropeller; this->action = 5; this->nonPlanarMovement = 0x80; this->hurtBlinkTime = -30; this->field_0x80.HALF.HI = 0; InitializeAnimation(this, this->animationState); } else if (this->bitfield == 0x80) { - if (this->animationState == 0) { + if (this->animationState == PeahatAnimation_Flying) { this->action = 1; this->actionDelay = 30; this->nonPlanarMovement = 0x80; @@ -70,7 +84,7 @@ void sub_0801FFDC(Entity* this) { if (this->field_0x43) sub_0804A9FC(this, 0x1c); - sub_0804AA30(this, gUnk_080CA570); + sub_0804AA30(this, gPeahatFunctions); } void sub_08020088(Entity* this) { @@ -83,8 +97,8 @@ void sub_08020088(Entity* this) { void sub_080200B4(Entity* this) { this->previousActionFlag = 1; this->field_0x1d = 60; - if (this->animationState == 0) { - this->animationState = 1; + if (this->animationState == PeahatAnimation_Flying) { + this->animationState = PeahatAnimation_BrokenPropeller; this->action = 5; this->damageType = 0x71; this->field_0x80.HALF.HI = 0; @@ -116,7 +130,7 @@ void sub_08020104(Entity* this) { } } -void sub_08020130(Entity* this) { +void Peahat_Initialize(Entity* this) { sub_0804A720(this); this->action = 1; this->actionDelay = 16; @@ -126,11 +140,11 @@ void sub_08020130(Entity* this) { this->field_0x80.HALF.LO = (Random() & 1) ? 2 : -2; this->field_0x80.HALF.HI = 1; this->field_0x82.HALF.LO = 1; - this->animationState = 0; - InitializeAnimation(this, 0); + this->animationState = PeahatAnimation_Flying; + InitializeAnimation(this, this->animationState); } -void sub_08020180(Entity* this) { +void Peahat_Fly(Entity* this) { if (this->field_0x82.HALF.HI) this->field_0x82.HALF.HI--; @@ -155,7 +169,7 @@ void sub_08020180(Entity* this) { GetNextFrame(this); } -void sub_08020220(Entity* this) { +void Peahat_ChargeStart(Entity* this) { if (sub_08049FDC(this, 1)) { if (--this->actionDelay) { UpdateAnimationVariableFrames(this, 4 - ((this->actionDelay >> 4) & 0x3)); @@ -173,7 +187,7 @@ void sub_08020220(Entity* this) { UpdateAnimationVariableFrames(this, 4); } -void sub_08020294(Entity* this) { +void Peahat_ChargeTarget(Entity* this) { if (sub_08049FDC(this, 1)) { if (--this->actionDelay == 0) { sub_080205F8(this); @@ -192,7 +206,7 @@ void sub_08020294(Entity* this) { UpdateAnimationVariableFrames(this, 4); } -void sub_08020308(Entity* this) { +void Peahat_ChargeEnd(Entity* this) { if (--this->actionDelay == 0) { this->action = 1; this->actionDelay = 1; @@ -208,32 +222,35 @@ void sub_08020308(Entity* this) { } } -void sub_08020350(Entity* this) { - if (this->animationState != 2) { - if (sub_080044EC(this, 0x1800) == 0) { - this->action = 6; - this->actionDelay = -0x10; - this->field_0xf = 10; - this->damageType = 113; - } +void Peahat_Stunned(Entity* this) { + switch (this->animationState) { + default: + if (sub_080044EC(this, 0x1800) == 0) { + this->action = 6; + this->actionDelay = 240; + this->field_0xf = 10; + this->damageType = 0x71; + } - if (this->direction == 0xff) - this->direction = this->field_0x3e; + if (this->direction == 0xff) + this->direction = this->field_0x3e; - sub_080AEF88(this); - GetNextFrame(this); - } else { - sub_08003FC4(this, 0x1c00); - if (this->height.HALF.HI == 0) { - this->action = 7; - this->actionDelay = -106; - this->field_0xf = 10; - this->damageType = 113; - } - } + ProcessMovement(this); + GetNextFrame(this); + break; + case PeahatAnimation_SlicedPropeller: + sub_08003FC4(this, 0x1c00); + if (this->height.HALF.HI == 0) { + this->action = 7; + this->actionDelay = 150; + this->field_0xf = 10; + this->damageType = 0x71; + } + break; + }; } -void sub_080203C0(Entity* this) { +void Peahat_RepairPropeller(Entity* this) { if (this->field_0xf) if (--this->field_0xf == 0) sub_0804A9FC(this, 0x1c); @@ -245,11 +262,11 @@ void sub_080203C0(Entity* this) { this->field_0x20 = 0x18000; this->direction = Random() & 0x1f; sub_0804AA1C(this); - this->animationState = 5; - InitializeAnimation(this, 5); + this->animationState = PeahatAnimation_RepairPropeller; + InitializeAnimation(this, this->animationState); } -void sub_0802041C(Entity* this) { +void Peahat_Recover(Entity* this) { if (this->field_0xf) if (--this->field_0xf == 0) sub_0804A9FC(this, 0x1c); @@ -258,58 +275,56 @@ void sub_0802041C(Entity* this) { return; this->action = 8; - this->actionDelay = -16; + this->actionDelay = 240; this->direction = Random() & 0x1f; sub_0804AA1C(this); } -void sub_08020468(Entity* this) { +void Peahat_Hop(Entity* this) { GetNextFrame(this); if (--this->actionDelay == 0) { if (this->frames.all & 0x80) { this->action = 9; this->field_0x20 = 0x18000; - this->animationState = 4; - InitializeAnimation(this, 4); + this->animationState = PeahatAnimation_NewPropeller; + InitializeAnimation(this, this->animationState); } else { this->actionDelay = 1; } } if (this->frames.all & 2) { - this->frames.all &= 0xfd; + this->frames.all &= ~2; this->direction = Random() & 0x1f; } if (this->frames.all & 1) { sub_0800442E(this); } else { - sub_080AEF88(this); + ProcessMovement(this); } } -void sub_080204E0(Entity* this) { +void Peahat_Takeoff(Entity* this) { GetNextFrame(this); if (this->frames.all & 0x80) { this->action = 1; this->damageType = 0x70; this->field_0x82.HALF.LO = 1; this->field_0x80.HALF.HI = 1; - this->animationState = 0; - InitializeAnimation(this, 0); + this->animationState = PeahatAnimation_Flying; + InitializeAnimation(this, this->animationState); + } else if (this->frames.all & 1) { + sub_0800442E(this); } else { - if (this->frames.all & 1) { - sub_0800442E(this); - } else { - sub_08003FC4(this, 0x1c00); - sub_080AEF88(this); - } + sub_08003FC4(this, 0x1c00); + ProcessMovement(this); } } -void sub_0802053C(Entity* this) { +void PeahatPropeller_Initialize(Entity* this) { this->action = 1; - this->actionDelay = -16; + this->actionDelay = 240; this->field_0xf = 40; this->spriteSettings.b.draw = 1; this->spriteRendering.b3 = 1; @@ -317,12 +332,12 @@ void sub_0802053C(Entity* this) { this->spriteSettings.b.shadow = 0; this->nonPlanarMovement = 0x20; this->direction = (Random() & 0x10) + 8; - InitializeAnimation(this, 3); + InitializeAnimation(this, PeahatAnimation_Propeller); } -void sub_08020590(Entity* this) { +void PeahatPropeller_Fly(Entity* this) { GetNextFrame(this); - if (--this->actionDelay == '\0') { + if (--this->actionDelay == 0) { DeleteEntity(this); } else { if (this->actionDelay < 60) @@ -354,8 +369,8 @@ void sub_08020604(Entity *this){ // clang-format off -void (*const gUnk_080CA570[])(Entity*) = { - sub_0801FF9C, +void (*const gPeahatFunctions[])(Entity*) = { + Peahat_OnTick, sub_0801FFDC, sub_08001324, sub_0804A7D4, @@ -363,29 +378,26 @@ void (*const gUnk_080CA570[])(Entity*) = { sub_08020088, }; -void (*const gUnk_080CA588[])(Entity*) = { - sub_0802053C, - sub_08020590, +void (*const gPeahatPropellerFunctions[])(Entity*) = { + PeahatPropeller_Initialize, + PeahatPropeller_Fly, }; -void (*const gUnk_080CA590[])(Entity*) = { - sub_08020130, - sub_08020180, - sub_08020220, - sub_08020294, - sub_08020308, - sub_08020350, - sub_080203C0, - sub_0802041C, - sub_08020468, - sub_080204E0, +void (*const gPeahatActions[])(Entity*) = { + Peahat_Initialize, + Peahat_Fly, + Peahat_ChargeStart, + Peahat_ChargeTarget, + Peahat_ChargeEnd, + Peahat_Stunned, + Peahat_RepairPropeller, + Peahat_Recover, + Peahat_Hop, + Peahat_Takeoff, }; -const s8 gUnk_080CA5B8[] = { - -5, - -6, - -7, - -6, +const s8 gPeahatFlightHeights[] = { + -5, -6, -7, -6, }; void (*const gUnk_080CA5BC[])(Entity*) = { @@ -396,5 +408,11 @@ void (*const gUnk_080CA5BC[])(Entity*) = { nullsub_5, sub_08020104, }; + +/* Alignment issue +const s8 gUnk_080CA5D4[] = { + 4, -4, +}; +*/ // clang-format on diff --git a/src/enemy/rockChuchu.c b/src/enemy/rockChuchu.c index 337e21dc..8c4a82f3 100644 --- a/src/enemy/rockChuchu.c +++ b/src/enemy/rockChuchu.c @@ -79,7 +79,7 @@ void sub_08022390(Entity* this) { } if (this->field_0xf == 0) { - sub_080AEF88(this); + ProcessMovement(this); } else { this->field_0xf = this->field_0xf - 1; } diff --git a/src/enemy/rollobite.c b/src/enemy/rollobite.c index 1a9fc159..45d6f118 100644 --- a/src/enemy/rollobite.c +++ b/src/enemy/rollobite.c @@ -1,8 +1,8 @@ #include "entity.h" #include "functions.h" -extern void (*const gUnk_080CA66C[])(Entity*); -extern void (*const gUnk_080CA684[])(Entity*); +extern void (*const gRollobiteFunctions[])(Entity*); +extern void (*const gRollobiteActions[])(Entity*); extern void (*const gUnk_080CA6A4[])(Entity*); extern void (*const gUnk_080CA6BC[])(Entity*); @@ -11,57 +11,54 @@ extern const s8 gUnk_080CA6D4[]; void sub_08020A30(Entity*); void sub_08020A7C(Entity*); -u32 sub_08020AD0(Entity*); -u32 sub_08020B6C(Entity*); +bool32 Rollobite_TryToHoleUp(Entity*); +bool32 Rollobite_IsRolledUp(Entity*); extern void sub_080AE58C(); extern void sub_080AE7E8(); extern void sub_08078930(); void Rollobite(Entity* this) { - EnemyFunctionHandler(this, gUnk_080CA66C); + EnemyFunctionHandler(this, gRollobiteFunctions); } -void sub_08020648(Entity* this) { - sub_08020AD0(this); - gUnk_080CA684[this->action](this); +void Rollobite_OnTick(Entity* this) { + Rollobite_TryToHoleUp(this); + gRollobiteActions[this->action](this); } void sub_08020668(Entity* this) { if (this->damageType == 34 && this->currentHealth != 0xff) { this->action = 4; this->field_0x20 = 0x20000; - this->direction = -1; - this->currentHealth = -1; + this->direction = 0xff; + this->currentHealth = 0xff; this->damageType = 35; InitializeAnimation(this, this->animationState + 8); } if (this->bitfield != 0x80) { - u8 tmp = this->action - 4; - if (tmp < 2) { + if (this->action == 4 || this->action == 5) { this->action = 4; - this->actionDelay = -76; - this->direction = -1; + this->actionDelay = 180; + this->direction = 0xff; InitializeAnimation(this, this->animationState + 0x10); } } if (this->bitfield == 0x93) - sub_08020648(this); + Rollobite_OnTick(this); } void sub_080206E0(Entity* this) { - if (sub_08020AD0(this)) { + if (Rollobite_TryToHoleUp(this)) { this->field_0x42 = 0; + } else if (Rollobite_IsRolledUp(this)) { + this->field_0x42--; + sub_080AE58C(this, this->field_0x3e, 10); + sub_080AE7E8(this, this->field_0x46, this->field_0x3e, 10); } else { - if (sub_08020B6C(this)) { - this->field_0x42--; - sub_080AE58C(this, this->field_0x3e, 10); - sub_080AE7E8(this, this->field_0x46, this->field_0x3e, 10); - } else { - sub_08001324(this); - } + sub_08001324(this); } } @@ -69,7 +66,7 @@ void sub_08020734(Entity* this) { if (this->previousActionFlag < 3 && !sub_0806F520(this)) { this->action = 4; this->flags |= 0x80; - this->direction = -1; + this->direction = 0xff; InitializeAnimation(this, this->animationState + 0x10); } else { gUnk_080CA6A4[this->previousActionFlag](this); @@ -94,6 +91,7 @@ void sub_08020798(Entity* this) { } void nullsub_6(Entity* this) { + /* ... */ } void sub_080207A8(Entity* this) { @@ -107,7 +105,7 @@ void sub_080207A8(Entity* this) { InitializeAnimation(this, this->animationState + 0x10); } -void sub_080207F4(Entity* this) { +void Rollobite_Initialize(Entity* this) { sub_0804A720(this); this->field_0x16 = 0x30; this->field_0x1c = 18; @@ -116,11 +114,11 @@ void sub_080207F4(Entity* this) { sub_08020A30(this); } -void sub_08020820(Entity* this) { +void Rollobite_Walk(Entity* this) { GetNextFrame(this); if (this->frames.all & 0x1) { this->frames.all &= ~0x1; - if (!sub_080AEF88(this)) + if (!ProcessMovement(this)) this->actionDelay = 1; } @@ -164,12 +162,12 @@ void sub_08020904(Entity* this) { InitializeAnimation(this, this->animationState + 0x10); } -void sub_08020920(Entity* this) { +void Rollobite_Turn(Entity* this) { if (--this->actionDelay == 0) sub_08020A30(this); } -void sub_08020938(Entity* this) { +void Rollobite_RolledUp(Entity* this) { u32 unk; if ((this->frames.all & 0x80) == 0) @@ -185,14 +183,14 @@ void sub_08020938(Entity* this) { sub_08078930(this); } else { if (unk == 1) - sub_08004488(260); + EnqueSFX(260); if ((this->direction & 0x80) == 0) sub_080AEFE0(this); } } -void sub_080209A0(Entity* this) { +void Rollobite_Unroll(Entity* this) { GetNextFrame(this); if (this->frames.all & 0x80) { this->flags |= 0x80; @@ -207,7 +205,7 @@ void sub_080209A0(Entity* this) { } } -void sub_080209F4(Entity* this) { +void Rollobite_LinedUp(Entity* this) { if (sub_08003FC4(this, 0x1c00) == 0) { this->action = 7; this->spritePriority.b0 = 7; @@ -217,7 +215,7 @@ void sub_080209F4(Entity* this) { GetNextFrame(this); } -void sub_08020A28(Entity* this) { +void Rollobite_Holed(Entity* this) { GetNextFrame(this); } @@ -251,8 +249,8 @@ void sub_08020A7C(Entity* this) { InitializeAnimation(this, this->animationState); } -u32 sub_08020AD0(Entity* this) { - if (sub_08020B6C(this) && this->height.HALF.HI == 0) { +bool32 Rollobite_TryToHoleUp(Entity* this) { + if (Rollobite_IsRolledUp(this) && this->height.HALF.HI == 0) { int tile = COORD_TO_TILE(this); int iVar1 = GetTileType(tile, this->collisionLayer); if ((iVar1 * 0x10000 - 0x710000U) >> 0x10 < 2) { @@ -265,24 +263,24 @@ u32 sub_08020AD0(Entity* this) { this->field_0x20 = 0x20000; InitializeAnimation(this, this->animationState + 0x14); SetTile(0x4034, tile, this->collisionLayer); - return 1; + return TRUE; } } - return 0; + return FALSE; } -u32 sub_08020B6C(Entity* this) { - u32 tmp = this->animIndex - 0x10; - if (tmp < 4) { - return 1; +bool32 Rollobite_IsRolledUp(Entity* this) { + u32 tmp = this->animIndex; + if (16 <= tmp && tmp <= 19) { + return TRUE; } else { - return 0; + return FALSE; } } // clang-format off -void (*const gUnk_080CA66C[])(Entity*) = { - sub_08020648, +void (*const gRollobiteFunctions[])(Entity*) = { + Rollobite_OnTick, sub_08020668, sub_080206E0, sub_0804A7D4, @@ -290,15 +288,15 @@ void (*const gUnk_080CA66C[])(Entity*) = { sub_08020734, }; -void (*const gUnk_080CA684[])(Entity*) = { - sub_080207F4, - sub_08020820, +void (*const gRollobiteActions[])(Entity*) = { + Rollobite_Initialize, + Rollobite_Walk, sub_08020874, - sub_08020920, - sub_08020938, - sub_080209A0, - sub_080209F4, - sub_08020A28, + Rollobite_Turn, + Rollobite_RolledUp, + Rollobite_Unroll, + Rollobite_LinedUp, + Rollobite_Holed, }; void (*const gUnk_080CA6A4[])(Entity*) = { @@ -318,7 +316,6 @@ void (*const gUnk_080CA6BC[])(Entity*) = { }; const u8 gUnk_080CA6CC[] = { - 0,6,9,0,6,6,0,7 + 0, 6, 9, 0, 6, 6, 0, 7, }; // clang-format on - diff --git a/src/enemy/rupeeLike.c b/src/enemy/rupeeLike.c index 8a011dad..9468d7a2 100644 --- a/src/enemy/rupeeLike.c +++ b/src/enemy/rupeeLike.c @@ -62,7 +62,7 @@ void sub_08029318(Entity* this) { this->field_0x82.HALF.HI = 0x41; this->flags2 &= 0xfc; this->field_0x80.HALF.LO = gPlayerEntity.spritePriority.b1; - sub_08004488(0x104); + EnqueSFX(0x104); } else { if (this->field_0x43 != 0) { sub_0804A9FC(this, 0x1c); @@ -136,7 +136,7 @@ void sub_080294D4(Entity* this) { sub_08004596(this, GetFacingDirection(this, &gPlayerEntity)); sub_0802969C(this); } - sub_080AEF88(this); + ProcessMovement(this); sub_080296C8(this); } else { this->action = 6; diff --git a/src/enemy/slime.c b/src/enemy/slime.c index 91238ab9..29ec7207 100644 --- a/src/enemy/slime.c +++ b/src/enemy/slime.c @@ -87,7 +87,7 @@ void sub_08045018(Entity* this) { } void sub_08045088(Entity* this) { - sub_080AEF88(this); + ProcessMovement(this); GetNextFrame(this); if (--this->actionDelay == 0) { this->action = 1; diff --git a/src/enemy/spinyChuchu.c b/src/enemy/spinyChuchu.c index a3d41a1b..6a6d19e8 100644 --- a/src/enemy/spinyChuchu.c +++ b/src/enemy/spinyChuchu.c @@ -3,7 +3,7 @@ #include "functions.h" extern void sub_08001318(Entity*); -extern u32 sub_08049F64(Entity*, u32, u32); +extern u32 PlayerInRange(Entity*, u32, u32); extern void sub_0804A4E4(Entity*, Entity*); extern void sub_0804AA1C(Entity*); @@ -69,7 +69,7 @@ void sub_0802244C(Entity* this) { if (this->action == 3) { this->action = 4; InitializeAnimation(this, 3); - sub_08004488(0x194); + EnqueSFX(0x194); } } } else { @@ -132,7 +132,7 @@ void sub_08022654(Entity* this) { this->previousActionFlag = 2; this->spriteSettings.b.draw = 1; InitializeAnimation(this, 5); - sub_08004488(0x7d); + EnqueSFX(0x7d); UpdateSpriteForCollisionLayer(this); /* fallthrough */ case 2: @@ -169,7 +169,7 @@ void sub_080226EC(Entity* this) { this->direction = sub_08049F84(this, 1); } - sub_080AEF88(this); + ProcessMovement(this); } GetNextFrame(this); @@ -180,7 +180,7 @@ void sub_08022780(Entity* this) { if (this->frames.all & 0x80) { this->action = 4; InitializeAnimation(this, 3); - sub_08004488(0x194); + EnqueSFX(0x194); } } @@ -223,7 +223,7 @@ void sub_08022854(Entity* this) { this->action = 7; this->damageType = 0x5c; InitializeAnimation(this, 5); - sub_08004488(0x7d); + EnqueSFX(0x7d); } } } @@ -240,7 +240,7 @@ void sub_0802289C(Entity* this) { u32 sub_080228CC(Entity* this) { if (this->field_0xf == 0) { - if (sub_08049F64(this, 1, 0x28)) + if (PlayerInRange(this, 1, 0x28)) return 1; } else { this->field_0xf--; @@ -250,7 +250,7 @@ u32 sub_080228CC(Entity* this) { u32 sub_080228F0(Entity* this) { if (this->field_0x80.HALF.HI == 0) { - if (sub_08049F64(this, 1, 0x40)) + if (PlayerInRange(this, 1, 0x40)) return 1; } else { this->field_0x80.HALF.HI--; diff --git a/src/enemy/tektite.c b/src/enemy/tektite.c index 4aec209c..c34a9dd8 100644 --- a/src/enemy/tektite.c +++ b/src/enemy/tektite.c @@ -113,7 +113,7 @@ void sub_0802F300(Entity* this) { u32 rand; GetNextFrame(this); - sub_080AEF88(this); + ProcessMovement(this); temp = this->height.HALF.HI; rand = Random() & 0xf; diff --git a/src/enemy/tektiteGolden.c b/src/enemy/tektiteGolden.c index f46a65e3..50012c83 100644 --- a/src/enemy/tektiteGolden.c +++ b/src/enemy/tektiteGolden.c @@ -100,7 +100,7 @@ void sub_08038048(Entity* this) { u32 rand; UpdateAnimationVariableFrames(this, 2); - sub_080AEF88(this); + ProcessMovement(this); temp = this->height.HALF.HI; rand = Random() & 0xf; diff --git a/src/enemy/wisp.c b/src/enemy/wisp.c index 2c7431d6..021a8b44 100644 --- a/src/enemy/wisp.c +++ b/src/enemy/wisp.c @@ -98,7 +98,7 @@ void sub_080336A8(Entity* this) { } else if (this->collisions != 0) { sub_0800417E(this, this->collisions); } - sub_080AEF88(this); + ProcessMovement(this); GetNextFrame(this); } diff --git a/src/npc/carlov.c b/src/npc/carlov.c index aaa447d0..25c983ae 100644 --- a/src/npc/carlov.c +++ b/src/npc/carlov.c @@ -10,7 +10,7 @@ extern void sub_0807DD50(Entity *); extern void sub_0807DD94(Entity *,u32); -extern void sub_08004488(u32); +extern void EnqueSFX(u32); extern void sub_08080964(u32,u32); @@ -25,11 +25,11 @@ void Carlov(Entity *this) } if ((this->frames.all & 0x10) != 0) { this->frames.all = this->frames.all & 0xef; - sub_08004488(0x104); + EnqueSFX(0x104); sub_08080964(0x10,0); } if ((this->frames.all & 0x20) != 0) { this->frames.all = this->frames.all & 0xdf; - sub_08004488(0x7c); + EnqueSFX(0x7c); } } \ No newline at end of file diff --git a/src/npc/cow.c b/src/npc/cow.c index 54500e02..24fc90d8 100644 --- a/src/npc/cow.c +++ b/src/npc/cow.c @@ -94,7 +94,7 @@ void sub_08069068(Entity* ent) { InitAnimationForceUpdate(ent, ent->animationState + 4); } - sub_080AEF88(ent); + ProcessMovement(ent); UpdateAnimationSingleFrame(ent); { diff --git a/src/npc/melari.c b/src/npc/melari.c index 87afe16c..0aceb1e1 100644 --- a/src/npc/melari.c +++ b/src/npc/melari.c @@ -12,7 +12,7 @@ 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 void EnqueSFX(u32); extern u32 sub_0801E99C(Entity*); extern void sub_08078784(Entity*, u32); extern void sub_0807000C(Entity*); @@ -99,7 +99,7 @@ void sub_08068780(Entity* this) { if (sub_080040A8(this) == 0) { PlaySFX(gUnk_0811153E[(s32)Random() % 3]); } else { - sub_08004488(gUnk_08111538[(s32)Random() % 3]); + EnqueSFX(gUnk_08111538[(s32)Random() % 3]); } ent = CreateFx(this, 0x3d, 0x20); if (ent != NULL) { diff --git a/src/npc/postman.c b/src/npc/postman.c index f7b6395d..8ffc696c 100644 --- a/src/npc/postman.c +++ b/src/npc/postman.c @@ -27,7 +27,7 @@ extern u32 GetFacingDirection(Entity*, Entity*); extern void sub_080606D8(Entity*); extern void sub_0807DD94(Entity*, u32); extern void sub_080788E0(Entity*); -extern void sub_08004488(u32); +extern void EnqueSFX(u32); extern void sub_080606C0(Entity*); extern void sub_0800451C(Entity*); extern void sub_08078784(Entity*, u32); @@ -178,7 +178,7 @@ void sub_08060528(Entity *this) this->field_0x20 = 0x20000; this->field_0x6c.HALF.HI = 1; sub_080788E0(this); - sub_08004488(0x7c); + EnqueSFX(0x7c); } else { this->field_0x6a.HWORD -= 1; diff --git a/src/npc/townsperson.c b/src/npc/townsperson.c index 436dc186..242d85a1 100644 --- a/src/npc/townsperson.c +++ b/src/npc/townsperson.c @@ -222,7 +222,7 @@ void sub_08061E90(Entity* this, Entity* arg1) { if (animIndex != this->animIndex) { InitializeAnimation(this, animIndex); } - sub_080AEF88(this); + ProcessMovement(this); iVar4 = this->x.HALF.HI - *(s16*)&this->field_0x6a.HWORD; if (0x10 < iVar4) { this->x.HALF.HI = this->field_0x6a.HWORD + 0x10; diff --git a/src/object/lightableSwitch.c b/src/object/lightableSwitch.c index e9a1e8e0..efa72fb2 100644 --- a/src/object/lightableSwitch.c +++ b/src/object/lightableSwitch.c @@ -7,7 +7,7 @@ extern void sub_0809EB30(Entity*); extern void sub_0809EAD8(Entity*); extern void sub_0809EABC(Entity*); -extern void sub_08004488(u32); +extern void EnqueSFX(u32); extern void sub_080A2CC0(Entity*, Entity**, u16*); extern Entity* GetCurrentRoomProperty(u32); extern void SetTile(u32, u32, u32); @@ -50,7 +50,7 @@ void sub_0809EA80(Entity* this) { } else { SetFlag(this->field_0x86); } - sub_08004488(0x110); + EnqueSFX(0x110); } sub_0809EABC(this); } @@ -123,7 +123,7 @@ void sub_0809EBD8(Entity* this) { this->actionDelay = 0x10; this->frameIndex = 2; SetFlag(this->field_0x86); - sub_08004488(0x110); + EnqueSFX(0x110); } } @@ -137,7 +137,7 @@ void sub_0809EC08(Entity* this) { this->action = 1; this->frameIndex = 3; ClearFlag(this->field_0x86); - sub_08004488(0x110); + EnqueSFX(0x110); } } } diff --git a/src/object/mask.c b/src/object/mask.c index 675805b8..cd5d13f4 100644 --- a/src/object/mask.c +++ b/src/object/mask.c @@ -20,7 +20,7 @@ extern void sub_08000148(u16, u16, u32); extern s16 sub_080001DA(u16, u32); extern u16 sub_080002E0(u16, u32); -extern void sub_08004488(u32); +extern void EnqueSFX(u32); extern void sub_080044EC(Entity *, u16); extern void sub_0805457C(Entity *, s32); @@ -115,7 +115,7 @@ void sub_08092B0C(Entity *this) { switch (this->entityType.parameter & 0xC0) { case 0x80: - sub_08004488(0x72); + EnqueSFX(0x72); case 0x40: SetFlag(this->field_0x86); break; diff --git a/src/object/metalDoor.c b/src/object/metalDoor.c index 381bf0d8..b0df5777 100644 --- a/src/object/metalDoor.c +++ b/src/object/metalDoor.c @@ -6,7 +6,7 @@ extern u32 sub_08083734(Entity*, u32); extern void sub_080A080C(Entity*); extern void sub_0806F69C(Entity*); -extern void sub_08004488(u32); +extern void EnqueSFX(u32); extern void sub_080A0870(Entity*); extern void PlaySFX(u32); extern u32 sub_080001DA(u32, u32); @@ -71,7 +71,7 @@ void sub_080A074C(Entity *this) ent->x.HALF.HI -= 0xc; ent->y.HALF.HI -= 0xc; } - sub_08004488(0x10b); + EnqueSFX(0x10b); } } diff --git a/src/object/object1A.c b/src/object/object1A.c index e903d21b..5f43ec2f 100644 --- a/src/object/object1A.c +++ b/src/object/object1A.c @@ -3,7 +3,7 @@ extern void sub_08086A6C(); extern s32 sub_080044EC(); -extern void sub_080AEF88(); +extern void ProcessMovement(); extern u32 Random(void); extern void (*gUnk_081206C4[99])(Entity*); @@ -42,7 +42,7 @@ void sub_08086A28(Entity* ent) { if (iVar1 == 0) { ent->action = 2; } - sub_080AEF88(ent); + ProcessMovement(ent); CopyPosition(ent, ent->attachedEntity); } } diff --git a/src/object/object2A.c b/src/object/object2A.c index d8f30b54..8db435e5 100644 --- a/src/object/object2A.c +++ b/src/object/object2A.c @@ -36,5 +36,5 @@ void sub_08089B18(Entity *this) return; } } - sub_08004488(0x124); + EnqueSFX(0x124); } \ No newline at end of file diff --git a/src/object/pot.c b/src/object/pot.c index 5ea63ab5..8931598f 100755 --- a/src/object/pot.c +++ b/src/object/pot.c @@ -92,7 +92,7 @@ void sub_08082310(Entity* this) { this->actionDelay = 64; } SetTile((u16)this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer); - sub_08004488(0x10F); + EnqueSFX(0x10F); break; case 0x4067: SetTile((u16)this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer); diff --git a/src/object/railtrack.c b/src/object/railtrack.c index 3cf693d2..d8227bef 100644 --- a/src/object/railtrack.c +++ b/src/object/railtrack.c @@ -6,7 +6,7 @@ extern u32* GetLayerByIndex(u32); extern void sub_08085394(Entity*); extern void sub_0808543C(Entity*); -extern void sub_08004488(u32); +extern void EnqueSFX(u32); extern u32 sub_080854A8(Entity*); extern void SetTile(u32, u32, u32); @@ -54,7 +54,7 @@ void sub_08085264(Entity* this) { this->animationState = (this->animationState + *(u8*)&this->field_0x7c) & 3; InitializeAnimation(this, this->animationState); sub_0808543C(this); - sub_08004488(0x151); + EnqueSFX(0x151); } } @@ -66,7 +66,7 @@ void sub_080852B4(Entity* this) { this->animationState = (this->animationState + *(u8*)&this->field_0x7c) & 3; InitializeAnimation(this, this->animationState); sub_08085394(this); - sub_08004488(0x151); + EnqueSFX(0x151); } } @@ -96,7 +96,7 @@ void sub_08085308(Entity* this) { this->animationState = (this->animationState + *(u8*)&this->field_0x7c) & 3; InitializeAnimation(this, this->animationState); sub_0808543C(this); - sub_08004488(0x151); + EnqueSFX(0x151); } } } From 0a2c0ad4564c6bf4edc6fcc5762cb87b5b41a33b Mon Sep 17 00:00:00 2001 From: Behemoth Date: Tue, 1 Sep 2020 01:21:50 +0200 Subject: [PATCH 02/14] embrace direction macros --- include/entity.h | 2 + src/enemy/darkNut.c | 12 ++--- src/enemy/fireballGuy.c | 6 +-- src/enemy/keaton.c | 17 ++++---- src/enemy/lakitu.c | 3 +- src/enemy/leever.c | 2 +- src/enemy/miniFireballGuy.c | 87 +++++++++++++++++-------------------- src/enemy/miniSlime.c | 4 +- src/enemy/rollobite.c | 8 ++-- src/npc/townsperson.c | 2 +- src/object/minecart.c | 2 +- 11 files changed, 69 insertions(+), 76 deletions(-) diff --git a/include/entity.h b/include/entity.h index 7440c198..c4537dce 100644 --- a/include/entity.h +++ b/include/entity.h @@ -175,6 +175,8 @@ extern void PositionRelative(Entity*, Entity*, s32, s32); #define DirectionIsVertical(expr) ((expr) & 0x10) #define DirectionTurnHorizontal(expr) (DirectionRoundUp(expr) ^ 0x08) #define DirectionTurnVertical(expr) (DirectionRoundUp(expr) ^ 0x10) +#define DirectionToAnimationState(expr) (DirectionRoundUp(expr) >> 3) +#define DirectionFromAnimationState(expr) (expr << 3) extern Entity gUnk_03003DA0; diff --git a/src/enemy/darkNut.c b/src/enemy/darkNut.c index 03c9c91e..b7e5bf0f 100644 --- a/src/enemy/darkNut.c +++ b/src/enemy/darkNut.c @@ -62,7 +62,7 @@ void sub_08020BB8(Entity* this) { this->action = 11; this->actionDelay = gUnk_080CAB0C[this->entityType.form]; this->damageType = 81; - sub_08021218(this, 8, (((this->field_0x3e ^ 0x10) + 4) & 0x18) >> 3); + sub_08021218(this, 8, DirectionToAnimationState(this->field_0x3e ^ 0x10)); sub_08021588(this); sub_0804A9FC(this, 0x1c); break; @@ -70,7 +70,7 @@ void sub_08020BB8(Entity* this) { this->action = 11; this->actionDelay = gUnk_080CAB10[this->entityType.form]; this->damageType = 81; - sub_08021218(this, 8, (((this->field_0x3e ^ 0x10) + 4) & 0x18) >> 3); + sub_08021218(this, 8, DirectionToAnimationState(this->field_0x3e ^ 0x10)); sub_08021588(this); sub_0804A9FC(this, 0x1c); break; @@ -427,7 +427,7 @@ void sub_08021328(Entity* this) { void sub_0802134C(Entity* this) { this->action = 15; - this->direction = this->animationState << 3; + this->direction = DirectionFromAnimationState(this->animationState); this->nonPlanarMovement = 0x200; this->field_0x76.HWORD = 0x78; sub_08021218(this, 0xe, this->animationState); @@ -534,7 +534,7 @@ u32 sub_080214FC(Entity* this) { if (4 < (direction - (this->frames.all & 0x1f)) - 2) return 0; - this->animationState = ((direction + 4) & 0x18) >> 3; + this->animationState = DirectionToAnimationState(direction); return 1; } @@ -544,9 +544,9 @@ void sub_08021540(Entity* this) { rand = Random(); if (!sub_08049FA0(this) && (rand & 1)) { - tmp2 = (sub_08049EE4(this) + 4) & 0x18; + tmp2 = DirectionRoundUp(sub_08049EE4(this)); } else { - tmp2 = (rand >> 0x10) & 0x18; + tmp2 = DirectionRound(rand >> 0x10); } this->direction = tmp2; diff --git a/src/enemy/fireballGuy.c b/src/enemy/fireballGuy.c index b194ed07..bd033058 100644 --- a/src/enemy/fireballGuy.c +++ b/src/enemy/fireballGuy.c @@ -102,7 +102,7 @@ void sub_08045524(Entity *this) { tmp = sub_0804A024(this,1,8); if (tmp != 0xff && (Random() & 3) == 0) { this->actionDelay = Random() & 3; - this->direction = tmp & 0x18; + this->direction = DirectionRound(tmp); } else { if (this->actionDelay) { this->actionDelay--; @@ -113,9 +113,9 @@ void sub_08045524(Entity *this) { tmp1 = sub_08049EE4(this); tmp2 = Random() & 8; tmp2 += 0xfc; - this->direction = (tmp1 + tmp2) & 0x18; + this->direction = DirectionRound(tmp1 + tmp2); } else { - this->direction = Random() & 0x18; + this->direction = DirectionRound(Random()); } } } diff --git a/src/enemy/keaton.c b/src/enemy/keaton.c index afc0e4b6..b900cfea 100644 --- a/src/enemy/keaton.c +++ b/src/enemy/keaton.c @@ -37,9 +37,8 @@ void sub_080323F4(Entity* this) { if (this->action != 3 && this->action != 4) { this->action = 3; this->actionDelay = 0xC; - var = ((this->field_0x3e + 4) & 0x18) ^ 0x10; - this->direction = var; - InitAnimationForceUpdate(this, var >> 3); + this->direction = DirectionTurnVertical(this->field_0x3e); + InitAnimationForceUpdate(this, this->direction >> 3); } else if (this->bitfield == 0xCC) { if (this->field_0x43 == 0) { sub_0803275C(this); @@ -142,10 +141,10 @@ void sub_080325C4(Entity* 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) { + if (((GetFacingDirection(this, gUnk_020000B0) - (DirectionRound(this->frames.all)) + 2) & 0x1F) < 5) { this->action = 3; this->actionDelay = 0xC; - this->direction = this->frames.all & 0x18; + this->direction = DirectionRound(this->frames.all); return 1; } } @@ -158,9 +157,9 @@ void sub_08032650(Entity* this) { uVar3 = Random(); this->actionDelay = gUnk_080CE7E0[uVar3 & 0xf]; if (!((sub_08049FA0(this) == 0) && ((uVar3 >> 8 & 1) == 0))) { - this->direction = (uVar3 >> 0x10) & 0x18; + this->direction = DirectionRound(uVar3 >> 0x10); } else { - this->direction = (sub_08049EE4(this) + 4) & 0x18; + this->direction = DirectionRoundUp(sub_08049EE4(this)); } sub_0803269C(this, this->direction); } @@ -169,13 +168,13 @@ void sub_0803269C(Entity* this, u32 param_2) { u32 uVar1; if (((param_2 - 3) & 7) < 3) { - uVar1 = ((param_2 + 4) & 0x18) >> 3; + uVar1 = DirectionToAnimationState(param_2); if (((this->animationState - uVar1) & 3) > 1) { this->animationState = uVar1; InitAnimationForceUpdate(this, (this->animIndex & 0xFC) + uVar1); } } else { - uVar1 = ((param_2 + 4) & 0x18) >> 3; + uVar1 = DirectionToAnimationState(param_2); if (uVar1 != this->animationState) { this->animationState = uVar1; InitAnimationForceUpdate(this, (this->animIndex & 0xFC) + uVar1); diff --git a/src/enemy/lakitu.c b/src/enemy/lakitu.c index b4bbc198..cf41451e 100644 --- a/src/enemy/lakitu.c +++ b/src/enemy/lakitu.c @@ -280,8 +280,7 @@ void sub_0803CA84(Entity *this, u32 unkParameter) { u32 altAnimState = GetFacingDirection(this, &gPlayerEntity); if (((altAnimState - 3) & 7) > 2 || ((this->animationState - (altAnimState >> 3)) & 3) > 1) { - u32 intermediate = (altAnimState + 4) & 0x18; - altAnimState = intermediate >> 3; + altAnimState = DirectionRoundUp(altAnimState) >> 3; if (altAnimState != this->animationState) { this->animationState = altAnimState; diff --git a/src/enemy/leever.c b/src/enemy/leever.c index 959d8617..a71c28c0 100644 --- a/src/enemy/leever.c +++ b/src/enemy/leever.c @@ -79,7 +79,7 @@ void Leever_Idle(Entity* this) { InitializeAnimation(this, LeeverAnimation_DigUp); UpdateSpriteForCollisionLayer(this); } else { - this->actionDelay = (Random() & 0x18) + 8; + this->actionDelay = DirectionRound(Random()) + 8; } } } diff --git a/src/enemy/miniFireballGuy.c b/src/enemy/miniFireballGuy.c index 9ca6ad24..e9cc6eee 100644 --- a/src/enemy/miniFireballGuy.c +++ b/src/enemy/miniFireballGuy.c @@ -11,66 +11,59 @@ extern void sub_08045678(Entity*); extern void (*const gUnk_080D1868[])(Entity*); extern void (*const gUnk_080D1880[])(Entity*); -void MiniFireballGuy(Entity *this) -{ - EnemyFunctionHandler(this, gUnk_080D1868); +void MiniFireballGuy(Entity* this) { + EnemyFunctionHandler(this, gUnk_080D1868); } -void sub_080455BC(Entity *this) -{ - gUnk_080D1880[this->action](this); +void sub_080455BC(Entity* this) { + gUnk_080D1880[this->action](this); } -void sub_080455D4(Entity *this) -{ - sub_0804AA30(this, gUnk_080D1868); +void sub_080455D4(Entity* this) { + sub_0804AA30(this, gUnk_080D1868); } -void sub_080455E4(Entity *this) -{ - if ((this != this->parent) && (this->parent != NULL)) { - this->field_0x6c.HALF.LO &= 0x7f; - this->parent->attachedEntity = this->attachedEntity; - this->attachedEntity->parent = this->parent; - } - sub_0804A7D4(this); +void sub_080455E4(Entity* this) { + if ((this != this->parent) && (this->parent != NULL)) { + this->field_0x6c.HALF.LO &= 0x7f; + this->parent->attachedEntity = this->attachedEntity; + this->attachedEntity->parent = this->parent; + } + sub_0804A7D4(this); } -void nullsub_23(Entity* this) {} - -void sub_08045618(Entity *this) -{ - this->action = 1; - this->spriteSettings.b.draw = 1; - this->nonPlanarMovement = 0x80; - this->field_0x3c = this->field_0x3c | 0x10; - sub_0804A720(this); - InitializeAnimation(this, 1); - sub_08045678(this); +void nullsub_23(Entity* this) { } -void sub_08045654(Entity *this) -{ - sub_080AEFE0(this); - GetNextFrame(this); - if (sub_08003FC4(this, 0x1800) == 0) { +void sub_08045618(Entity* this) { + this->action = 1; + this->spriteSettings.b.draw = 1; + this->nonPlanarMovement = 0x80; + this->field_0x3c = this->field_0x3c | 0x10; + sub_0804A720(this); + InitializeAnimation(this, 1); sub_08045678(this); - } } -void sub_08045678(Entity *this) -{ - - this->field_0x20 = 0x1c000; - if (this->actionDelay != 0) { - this->actionDelay--; - } else { - this->actionDelay = Random() & 3; - if ((sub_08049FA0(this) == 0) && (Random() & 3)) { - this->direction = (sub_08049EE4(this) - 4 + (Random() & 8)) & 0x18; +void sub_08045654(Entity* this) { + sub_080AEFE0(this); + GetNextFrame(this); + if (sub_08003FC4(this, 0x1800) == 0) { + sub_08045678(this); } - else { - this->direction = Random() & 0x18; +} + +void sub_08045678(Entity* this) { + + this->field_0x20 = 0x1c000; + if (this->actionDelay != 0) { + this->actionDelay--; + } else { + this->actionDelay = Random() & 3; + if ((sub_08049FA0(this) == 0) && (Random() & 3)) { + this->direction = DirectionRound(sub_08049EE4(this) - 4 + (Random() & 8)); + } else { + this->direction = DirectionRound(Random()); + } } - } } \ No newline at end of file diff --git a/src/enemy/miniSlime.c b/src/enemy/miniSlime.c index 70b1a029..973f8839 100644 --- a/src/enemy/miniSlime.c +++ b/src/enemy/miniSlime.c @@ -78,9 +78,9 @@ void sub_080452FC(Entity *this) { cVar2 = sub_08049EE4(this); bVar3 = Random() & 8; bVar3 += 0xfc; - this->direction = (cVar2 + bVar3) & 0x18; + this->direction = DirectionRound(cVar2 + bVar3); } else { - this->direction = Random() & 0x18; + this->direction = DirectionRound(Random()); sub_08045374(this); } } diff --git a/src/enemy/rollobite.c b/src/enemy/rollobite.c index 45d6f118..74e80188 100644 --- a/src/enemy/rollobite.c +++ b/src/enemy/rollobite.c @@ -110,7 +110,7 @@ void Rollobite_Initialize(Entity* this) { this->field_0x16 = 0x30; this->field_0x1c = 18; this->cutsceneBeh.HALF.LO = 0; - this->direction = Random() & 0x18; + this->direction = DirectionRound(Random()); sub_08020A30(this); } @@ -197,7 +197,7 @@ void Rollobite_Unroll(Entity* this) { this->nonPlanarMovement = 0x100; this->damageType = 34; sub_08020A30(this); - this->direction = this->animationState << 3; + this->direction = DirectionFromAnimationState(this->animationState); InitializeAnimation(this, this->animationState); } else { if ((this->frames.all & 1) == 0) @@ -236,10 +236,10 @@ void sub_08020A30(Entity* this) { void sub_08020A7C(Entity* this) { int tmp = Random(); - u32 state = (this->direction + gUnk_080CA6D4[tmp % 3]) & 0x18; + u32 state = DirectionRound(this->direction + gUnk_080CA6D4[tmp % 3]); if (sub_08049FA0(this) == 0) { - int tmp = (sub_08049EE4(this) + 4) & 0x18; + int tmp = DirectionRoundUp(sub_08049EE4(this)); if ((state ^ 0x10) == tmp) state ^= 0x10; } diff --git a/src/npc/townsperson.c b/src/npc/townsperson.c index 242d85a1..d1951553 100644 --- a/src/npc/townsperson.c +++ b/src/npc/townsperson.c @@ -192,7 +192,7 @@ void sub_08061E90(Entity* this, Entity* arg1) { if (arg1->spriteSettings.raw == 0) { arg1->spriteSettings.raw++; arg1->spriteIndex = (Random() & 0x3f) + 0x20; - animIndex = Random() & 0x18; + animIndex = DirectionRound(Random()); switch (this->direction) { case 0x0: if (animIndex == 0x10) { diff --git a/src/object/minecart.c b/src/object/minecart.c index 783e9696..9207c8c0 100644 --- a/src/object/minecart.c +++ b/src/object/minecart.c @@ -50,7 +50,7 @@ void sub_080916EC(Entity* this) { this->field_0x3c = 0x47; this->field_0x40 = 0x44; this->flags2 = 0x80; - this->direction = this->animationState << 3; + this->direction = DirectionFromAnimationState(this->animationState); this->nonPlanarMovement = 0x700; this->spritePriority.b1 = 3; InitAnimationForceUpdate(this, this->entityType.parameter + 4 + this->animationState); From 723d23396721cc5a7bfc16b76d682ed6a3f22882 Mon Sep 17 00:00:00 2001 From: Behemoth Date: Tue, 1 Sep 2020 01:47:04 +0200 Subject: [PATCH 03/14] Enque -> Enqueue --- asm/armos.s | 8 ++++---- asm/ballChainSoldier.s | 2 +- asm/bigIceBlock.s | 2 +- asm/bigPushableLever.s | 4 ++-- asm/blockPushed.s | 2 +- asm/bobomb.s | 6 +++--- asm/bollard.s | 4 ++-- asm/book.s | 2 +- asm/bossDoor.s | 2 +- asm/businessScrub.s | 2 +- asm/businessScrubPrologue.s | 8 ++++---- asm/castorWildsStatue.s | 2 +- asm/cloudPiranha.s | 4 ++-- asm/code_080043E8.s | 4 ++-- asm/code_0800857C.s | 2 +- asm/code_08016DF8.s | 2 +- asm/code_08019444.s | 2 +- asm/code_080A5574.s | 32 ++++++++++++++++---------------- asm/cucco.s | 2 +- asm/cuccoAggr.s | 6 +++--- asm/cuccoChick.s | 2 +- asm/deathFx.s | 2 +- asm/dog.s | 4 ++-- asm/enemy4D.s | 2 +- asm/eyeSwitch.s | 2 +- asm/eyegore.s | 8 ++++---- asm/fairy.s | 2 +- asm/fallingBoulder.s | 2 +- asm/fan.s | 2 +- asm/figurineDevice.s | 2 +- asm/frozenWaterElement.s | 4 ++-- asm/lavaPlatform.s | 8 ++++---- asm/likeLike.s | 2 +- asm/lockedDoor.s | 4 ++-- asm/madderpillar.s | 16 ++++++++-------- asm/managerF.s | 2 +- asm/minecartDoor.s | 4 ++-- asm/minishEzlo.s | 4 ++-- asm/mountainMinish.s | 2 +- asm/mulldozer.s | 2 +- asm/object20.s | 2 +- asm/object24.s | 4 ++-- asm/object2A.s | 2 +- asm/object35.s | 4 ++-- asm/object43.s | 2 +- asm/object44.s | 2 +- asm/object64.s | 2 +- asm/object6A.s | 4 ++-- asm/object87.s | 2 +- asm/object8B.s | 2 +- asm/objectA0.s | 2 +- asm/objectA8.s | 2 +- asm/objectBlockingStairs.s | 6 +++--- asm/objectD.s | 4 ++-- asm/objectOnPillar.s | 4 ++-- asm/octorokGolden.s | 2 +- asm/picoBloom.s | 2 +- asm/puffstool.s | 2 +- asm/pullableLever.s | 6 +++--- asm/pushableFurniture.s | 6 +++--- asm/pushableGrave.s | 2 +- asm/pushableLever.s | 4 ++-- asm/pushableRock.s | 2 +- asm/pushableStatue.s | 2 +- asm/rope.s | 2 +- asm/scissorsBeetle.s | 2 +- asm/sensorBladeTrap.s | 2 +- asm/sluggula.s | 4 ++-- asm/smallIceBlock.s | 6 +++--- asm/spearMoblin.s | 4 ++-- asm/specialFx.s | 2 +- asm/spikedBeetle.s | 4 ++-- asm/stalfos.s | 12 ++++++------ asm/vaati.s | 6 +++--- asm/vaatiArm.s | 2 +- asm/vaatiEyesMacro.s | 4 ++-- asm/vaatiReborn.s | 2 +- asm/wallMaster.s | 2 +- asm/warpPoint.s | 4 ++-- asm/waterDrop.s | 2 +- asm/windTribespeople.s | 2 +- asm/wizzrobeFire.s | 4 ++-- asm/wizzrobeIce.s | 4 ++-- asm/wizzrobeWind.s | 4 ++-- include/functions.h | 2 +- src/enemy/acroBandits.c | 2 +- src/enemy/beetle.c | 4 ++-- src/enemy/bladeTrap.c | 4 ++-- src/enemy/chuchu.c | 8 ++++---- src/enemy/cuccoChickAggr.c | 6 +++--- src/enemy/darkNut.c | 16 ++++++++-------- src/enemy/doorMimic.c | 2 +- src/enemy/lakitu.c | 4 ++-- src/enemy/octorok.c | 2 +- src/enemy/rollobite.c | 2 +- src/enemy/rupeeLike.c | 2 +- src/enemy/spinyChuchu.c | 8 ++++---- src/npc/carlov.c | 6 +++--- src/npc/melari.c | 4 ++-- src/npc/postman.c | 4 ++-- src/object/lightableSwitch.c | 8 ++++---- src/object/mask.c | 4 ++-- src/object/metalDoor.c | 4 ++-- src/object/object2A.c | 2 +- src/object/pot.c | 2 +- src/object/railtrack.c | 8 ++++---- 106 files changed, 212 insertions(+), 212 deletions(-) diff --git a/asm/armos.s b/asm/armos.s index e8c495cd..bd76cf19 100644 --- a/asm/armos.s +++ b/asm/armos.s @@ -299,7 +299,7 @@ _080303C0: bl sub_08030834 movs r0, #0x95 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX b _0803042C .align 2, 0 _080303D0: .4byte gUnk_080FD2F0 @@ -450,7 +450,7 @@ _080304DE: strb r2, [r3] movs r0, #0x95 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _080304F0: pop {r4, pc} .align 2, 0 @@ -502,7 +502,7 @@ _0803053E: strb r0, [r3] movs r0, #0x95 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _08030552: pop {pc} @@ -1157,7 +1157,7 @@ sub_08030A04: @ 0x08030A04 ands r0, r1 strb r0, [r4] ldr r0, _08030A28 @ =0x00000101 - bl EnqueSFX + bl EnqueueSFX _08030A24: pop {r4, pc} .align 2, 0 diff --git a/asm/ballChainSoldier.s b/asm/ballChainSoldier.s index 817a4c7b..515d4854 100644 --- a/asm/ballChainSoldier.s +++ b/asm/ballChainSoldier.s @@ -306,7 +306,7 @@ sub_0803E71C: @ 0x0803E71C movs r0, #0xf6 strb r0, [r1] adds r0, #0x65 - bl EnqueSFX + bl EnqueueSFX _0803E756: pop {pc} .align 2, 0 diff --git a/asm/bigIceBlock.s b/asm/bigIceBlock.s index d7ff4818..6194398b 100644 --- a/asm/bigIceBlock.s +++ b/asm/bigIceBlock.s @@ -98,7 +98,7 @@ sub_080997CC: @ 0x080997CC strb r1, [r4, #0xc] strb r0, [r4, #0xe] ldr r0, _080997F0 @ =0x000001B3 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl sub_080997F4 _080997EC: diff --git a/asm/bigPushableLever.s b/asm/bigPushableLever.s index 20cb7569..6c1b7753 100644 --- a/asm/bigPushableLever.s +++ b/asm/bigPushableLever.s @@ -66,7 +66,7 @@ sub_08098F14: @ 0x08098F14 bl SetTile movs r0, #0x99 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX adds r0, r5, #0 movs r1, #0x1e bl sub_0805E4E0 @@ -348,7 +348,7 @@ _08099166: cmp r0, #0 bne _08099194 ldr r0, _080991A0 @ =0x00000131 - bl EnqueSFX + bl EnqueueSFX _08099194: pop {r4, pc} .align 2, 0 diff --git a/asm/blockPushed.s b/asm/blockPushed.s index 551d6dd9..86af1cfc 100644 --- a/asm/blockPushed.s +++ b/asm/blockPushed.s @@ -233,7 +233,7 @@ _08082FF0: bl sub_080832D8 _08083088: ldr r0, _08083090 @ =0x0000010F - bl EnqueSFX + bl EnqueueSFX _0808308E: pop {r4, r5, r6, pc} .align 2, 0 diff --git a/asm/bobomb.s b/asm/bobomb.s index e36df5cd..c0cf57ce 100644 --- a/asm/bobomb.s +++ b/asm/bobomb.s @@ -123,7 +123,7 @@ _0802C75E: adds r0, r4, #0 bl sub_0802CB68 ldr r0, _0802C76C @ =0x0000014D - bl EnqueSFX + bl EnqueueSFX b _0802C79E .align 2, 0 _0802C76C: .4byte 0x0000014D @@ -638,7 +638,7 @@ _0802CB10: bne _0802CB30 movs r0, #0x82 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _0802CB30: adds r0, r4, #0 bl sub_0802CC18 @@ -777,7 +777,7 @@ sub_0802CC18: @ 0x0802CC18 movs r0, #0x1c strb r0, [r1] ldr r0, _0802CC38 @ =0x0000014D - bl EnqueSFX + bl EnqueueSFX _0802CC34: pop {pc} .align 2, 0 diff --git a/asm/bollard.s b/asm/bollard.s index 4fdf8b39..811c7f67 100644 --- a/asm/bollard.s +++ b/asm/bollard.s @@ -76,7 +76,7 @@ _0808B2F4: ldrb r2, [r2] bl SetTile ldr r0, _0808B320 @ =0x000001A5 - bl EnqueSFX + bl EnqueueSFX _0808B31C: pop {r4, pc} .align 2, 0 @@ -130,7 +130,7 @@ _0808B36C: adds r0, r4, #0 bl sub_0808B3AC ldr r0, _0808B388 @ =0x000001A5 - bl EnqueSFX + bl EnqueueSFX _0808B384: pop {r4, pc} .align 2, 0 diff --git a/asm/book.s b/asm/book.s index f5f6c852..325205d1 100644 --- a/asm/book.s +++ b/asm/book.s @@ -190,7 +190,7 @@ _0809B4C0: lsls r0, r0, #2 strb r0, [r1, #0x15] ldr r0, _0809B518 @ =0x0000010F - bl EnqueSFX + bl EnqueueSFX b _0809B520 .align 2, 0 _0809B510: .4byte gPlayerState diff --git a/asm/bossDoor.s b/asm/bossDoor.s index 577953ae..d48324aa 100644 --- a/asm/bossDoor.s +++ b/asm/bossDoor.s @@ -358,7 +358,7 @@ _0808C470: strh r0, [r1, #0x32] _0808C494: ldr r0, _0808C4A0 @ =0x0000010B - bl EnqueSFX + bl EnqueueSFX _0808C49A: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/businessScrub.s b/asm/businessScrub.s index c0c6f131..ea2a740e 100644 --- a/asm/businessScrub.s +++ b/asm/businessScrub.s @@ -70,7 +70,7 @@ sub_08028934: @ 0x08028934 strh r0, [r1, #0x36] _08028982: ldr r0, _0802898C @ =0x000001BB - bl EnqueSFX + bl EnqueueSFX _08028988: pop {r4, pc} .align 2, 0 diff --git a/asm/businessScrubPrologue.s b/asm/businessScrubPrologue.s index deb2307f..deb98135 100644 --- a/asm/businessScrubPrologue.s +++ b/asm/businessScrubPrologue.s @@ -85,7 +85,7 @@ _08045C16: movs r1, #0xff strb r1, [r0] ldr r0, _08045C34 @ =0x000001BB - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 movs r1, #2 bl sub_0805E3A0 @@ -480,7 +480,7 @@ _08045F00: adds r0, r4, #0 bl sub_080954AC ldr r0, _08045F34 @ =0x0000018D - bl EnqueSFX + bl EnqueueSFX b _08045F4E .align 2, 0 _08045F34: .4byte 0x0000018D @@ -698,7 +698,7 @@ _080460AE: bge _0804608A movs r0, #0xb7 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX ldr r0, _08046120 @ =0x000007A2 movs r1, #1 bl sub_0807BA8C @@ -725,7 +725,7 @@ _080460AE: bl CopyPosition movs r0, #0xc2 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _08046102: ldr r1, [r7, #0x54] cmp r1, #0 diff --git a/asm/castorWildsStatue.s b/asm/castorWildsStatue.s index 90bd9782..1ff5b938 100644 --- a/asm/castorWildsStatue.s +++ b/asm/castorWildsStatue.s @@ -260,7 +260,7 @@ _08067560: ble _0806753A movs r0, #0xa6 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX movs r0, #0x28 movs r1, #4 bl sub_08080964 diff --git a/asm/cloudPiranha.s b/asm/cloudPiranha.s index b30f3fb4..bda5efbc 100644 --- a/asm/cloudPiranha.s +++ b/asm/cloudPiranha.s @@ -376,7 +376,7 @@ sub_080386B8: @ 0x080386B8 strb r0, [r2] movs r0, #0x92 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 movs r1, #0x70 bl sub_0801D2B4 @@ -459,7 +459,7 @@ sub_08038754: @ 0x08038754 orrs r0, r1 strb r0, [r2] ldr r0, _080387C0 @ =0x0000012B - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 movs r1, #0x71 bl sub_0801D2B4 diff --git a/asm/code_080043E8.s b/asm/code_080043E8.s index 85ecffd6..bbd2883b 100644 --- a/asm/code_080043E8.s +++ b/asm/code_080043E8.s @@ -85,8 +85,8 @@ sub_08004484: @ 0x08004484 ldr r2, _080044DC @ =gUnk_03005FF0 bx r2 - thumb_func_start EnqueSFX -EnqueSFX: @ 0x08004488 + thumb_func_start EnqueueSFX +EnqueueSFX: @ 0x08004488 ldr r1, _080044E0 @ =gUnk_02024048 ldrb r2, [r1] cmp r2, #8 diff --git a/asm/code_0800857C.s b/asm/code_0800857C.s index 5dbf7120..cb5c54a0 100644 --- a/asm/code_0800857C.s +++ b/asm/code_0800857C.s @@ -769,7 +769,7 @@ sub_08008B22: @ 0x08008B22 sub_08008B2E: @ 0x08008B2E push {r0, lr} adds r0, r2, #0 - bl EnqueSFX + bl EnqueueSFX pop {r0, pc} .align 2, 0 _08008B38: .4byte 0x00000180 diff --git a/asm/code_08016DF8.s b/asm/code_08016DF8.s index ef099089..c8bfb456 100644 --- a/asm/code_08016DF8.s +++ b/asm/code_08016DF8.s @@ -398,7 +398,7 @@ _080170E8: cmp r0, #0 bne _08017112 ldr r0, _08017138 @ =0x0000011F - bl EnqueSFX + bl EnqueueSFX _08017112: ldr r0, _0801712C @ =gUnk_02002A40 adds r2, r0, #0 diff --git a/asm/code_08019444.s b/asm/code_08019444.s index ebd87ab7..8a28ea67 100644 --- a/asm/code_08019444.s +++ b/asm/code_08019444.s @@ -4328,7 +4328,7 @@ _0801B4AC: cmp r0, #0 bne _0801B4C0 movs r0, #0xfb - bl EnqueSFX + bl EnqueueSFX _0801B4C0: pop {r4, pc} .align 2, 0 diff --git a/asm/code_080A5574.s b/asm/code_080A5574.s index d9d6fa0c..63bf2f0a 100644 --- a/asm/code_080A5574.s +++ b/asm/code_080A5574.s @@ -6061,7 +6061,7 @@ sub_080A8470: @ 0x080A8470 cmp r0, #0x68 bne _080A848E movs r0, #0x86 - bl EnqueSFX + bl EnqueueSFX _080A848E: adds r0, r4, #0 bl DeleteEntity @@ -6115,7 +6115,7 @@ sub_080A84C8: @ 0x080A84C8 strb r0, [r1] _080A84F0: ldr r0, _080A8500 @ =0x0000018D - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 movs r1, #0x18 bl InitializeAnimation @@ -6328,7 +6328,7 @@ sub_080A8680: @ 0x080A8680 strb r1, [r0, #0xf] movs r0, #0x8c lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX pop {pc} thumb_func_start sub_080A86A0 @@ -6344,7 +6344,7 @@ sub_080A86A0: @ 0x080A86A0 strh r3, [r0, #0x24] movs r0, #0xc7 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX pop {pc} thumb_func_start sub_080A86BC @@ -6810,7 +6810,7 @@ _080A8A16: movs r1, #1 bl InitializeAnimation movs r0, #0x84 - bl EnqueSFX + bl EnqueueSFX movs r0, #3 strb r0, [r5, #0xc] b _080A8A44 @@ -6893,7 +6893,7 @@ _080A8AAA: adds r0, r2, #0 bl InitializeAnimation ldr r0, _080A8AC4 @ =0x0000015F - bl EnqueSFX + bl EnqueueSFX _080A8AC2: pop {pc} .align 2, 0 @@ -7053,7 +7053,7 @@ _080A8BDA: bl InitializeAnimation movs r0, #0xaf lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _080A8BF4: pop {pc} .align 2, 0 @@ -7198,7 +7198,7 @@ _080A8CEE: bl InitializeAnimation movs r0, #0xb0 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _080A8D08: pop {pc} .align 2, 0 @@ -8110,7 +8110,7 @@ sub_080A93DC: @ 0x080A93DC bl InitializeAnimation movs r0, #0xc5 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl sub_0806F69C b _080A9424 @@ -8199,7 +8199,7 @@ sub_080A9488: @ 0x080A9488 lsrs r0, r0, #3 strb r0, [r4, #0x14] movs r0, #0x74 - bl EnqueSFX + bl EnqueueSFX ldrb r1, [r4, #0x14] adds r0, r4, #0 bl sub_080A94C0 @@ -9728,7 +9728,7 @@ sub_080A9FD0: @ 0x080A9FD0 ands r0, r1 strb r0, [r2] ldr r0, _080AA038 @ =0x0000015D - bl EnqueSFX + bl EnqueueSFX _080A9FF2: movs r0, #0x2e ldrsh r1, [r5, r0] @@ -9906,7 +9906,7 @@ _080AA136: bl DeleteThisEntity _080AA14E: movs r0, #0xf2 - bl EnqueSFX + bl EnqueueSFX movs r4, #1 strb r4, [r6, #0xc] movs r0, #0xff @@ -10715,7 +10715,7 @@ _080AA774: adds r0, r4, #0 bl InitAnimationForceUpdate ldr r0, _080AA788 @ =0x00000101 - bl EnqueSFX + bl EnqueueSFX _080AA784: pop {r4, r5, r6, pc} .align 2, 0 @@ -10780,7 +10780,7 @@ _080AA7DA: strb r0, [r5] movs r0, #0x80 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _080AA806: ldrb r1, [r5] movs r0, #0x80 @@ -10989,7 +10989,7 @@ _080AA920: strh r0, [r7, #0x32] movs r0, #0x80 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _080AA99A: pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -15575,7 +15575,7 @@ sub_080ACB90: @ 0x080ACB90 movs r2, #0x40 bl CreateFx ldr r0, _080ACBC8 @ =0x00000119 - bl EnqueSFX + bl EnqueueSFX bl DeleteThisEntity _080ACBC6: pop {r4, pc} diff --git a/asm/cucco.s b/asm/cucco.s index 13120cfc..2013d64c 100644 --- a/asm/cucco.s +++ b/asm/cucco.s @@ -93,7 +93,7 @@ _0806E52C: lsls r1, r1, #1 adds r1, r1, r4 ldrh r0, [r1] - bl EnqueSFX + bl EnqueueSFX _0806E552: adds r0, r5, #0 bl sub_0806E65C diff --git a/asm/cuccoAggr.s b/asm/cuccoAggr.s index a339f4cc..c8046759 100644 --- a/asm/cuccoAggr.s +++ b/asm/cuccoAggr.s @@ -194,7 +194,7 @@ sub_08038DD8: @ 0x08038DD8 movs r1, #4 bl InitializeAnimation ldr r0, _08038E14 @ =0x000001D9 - bl EnqueSFX + bl EnqueueSFX pop {pc} .align 2, 0 _08038E10: .4byte gUnk_080CF7BC @@ -519,7 +519,7 @@ _0803906C: movs r1, #0xeb lsls r1, r1, #1 adds r0, r5, r1 - bl EnqueSFX + bl EnqueueSFX b _080390BC _080390AA: movs r0, #4 @@ -743,7 +743,7 @@ sub_08039218: @ 0x08039218 bl InitializeAnimation _0803924C: ldr r0, _0803925C @ =0x000001D9 - bl EnqueSFX + bl EnqueueSFX pop {pc} .align 2, 0 _08039254: .4byte gUnk_080CF824 diff --git a/asm/cuccoChick.s b/asm/cuccoChick.s index d325fcc8..a1e8a869 100644 --- a/asm/cuccoChick.s +++ b/asm/cuccoChick.s @@ -81,7 +81,7 @@ _0806E782: cmp r1, #0 beq _0806E7A8 movs r0, #0xd6 - bl EnqueSFX + bl EnqueueSFX _0806E7A8: adds r0, r4, #0 bl sub_0806E838 diff --git a/asm/deathFx.s b/asm/deathFx.s index ca601373..63eafe4a 100644 --- a/asm/deathFx.s +++ b/asm/deathFx.s @@ -125,7 +125,7 @@ _08081702: movs r0, #1 strb r0, [r4, #0xc] movs r0, #0xff - bl EnqueSFX + bl EnqueueSFX _0808170C: adds r0, r4, #0 movs r1, #3 diff --git a/asm/dog.s b/asm/dog.s index c7170024..c0a02ab3 100644 --- a/asm/dog.s +++ b/asm/dog.s @@ -473,9 +473,9 @@ _08069EA0: adds r0, r4, #0 bl sub_080788E0 movs r0, #0xd1 - bl EnqueSFX + bl EnqueueSFX movs r0, #0xcd - bl EnqueSFX + bl EnqueueSFX _08069EC8: pop {r4, r5, r6, r7, pc} .align 2, 0 diff --git a/asm/enemy4D.s b/asm/enemy4D.s index c7216a38..03a8a479 100644 --- a/asm/enemy4D.s +++ b/asm/enemy4D.s @@ -234,7 +234,7 @@ sub_0803ED40: @ 0x0803ED40 movs r0, #0xf6 strb r0, [r1] adds r0, #0x65 - bl EnqueSFX + bl EnqueueSFX _0803ED74: pop {pc} .align 2, 0 diff --git a/asm/eyeSwitch.s b/asm/eyeSwitch.s index 5fa1d8e5..a91ff6eb 100644 --- a/asm/eyeSwitch.s +++ b/asm/eyeSwitch.s @@ -109,7 +109,7 @@ _08088728: ands r0, r1 strb r0, [r4, #0x10] ldr r0, _0808875C @ =0x00000111 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] diff --git a/asm/eyegore.s b/asm/eyegore.s index 43ca7f0d..a49491c7 100644 --- a/asm/eyegore.s +++ b/asm/eyegore.s @@ -105,7 +105,7 @@ _08030AC0: movs r0, #0x86 lsls r0, r0, #1 _08030AE0: - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl sub_08031344 b _08030B0E @@ -124,7 +124,7 @@ _08030AFA: movs r0, #0xf strb r0, [r1] movs r0, #0xfe - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl sub_08031344 _08030B0E: @@ -563,7 +563,7 @@ sub_08030E3C: @ 0x08030E3C lsls r1, r1, #9 str r1, [r0, #0x20] ldr r0, _08030E54 @ =0x00000157 - bl EnqueSFX + bl EnqueueSFX pop {pc} .align 2, 0 _08030E54: .4byte 0x00000157 @@ -589,7 +589,7 @@ sub_08030E70: @ 0x08030E70 bl sub_08030E80 movs r0, #0xac lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX pop {pc} thumb_func_start sub_08030E80 diff --git a/asm/fairy.s b/asm/fairy.s index b17899db..236beb3f 100644 --- a/asm/fairy.s +++ b/asm/fairy.s @@ -188,7 +188,7 @@ sub_0808D7B4: @ 0x0808D7B4 bl sub_0805E3A0 movs r0, #0x9b lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX ldrb r0, [r4, #0xb] cmp r0, #2 beq _0808D834 diff --git a/asm/fallingBoulder.s b/asm/fallingBoulder.s index 9431e511..9fbcfe62 100644 --- a/asm/fallingBoulder.s +++ b/asm/fallingBoulder.s @@ -216,7 +216,7 @@ _0802C36A: bne _0802C3CC movs r0, #0xa6 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX ldrb r1, [r4, #0x10] movs r0, #0x80 orrs r0, r1 diff --git a/asm/fan.s b/asm/fan.s index 51822d10..86fedf65 100644 --- a/asm/fan.s +++ b/asm/fan.s @@ -347,7 +347,7 @@ sub_0809F0E4: @ 0x0809F0E4 push {r4, r5, lr} adds r5, r0, #0 ldr r0, _0809F124 @ =0x00000183 - bl EnqueSFX + bl EnqueueSFX ldrb r0, [r5, #0xa] movs r1, #2 eors r1, r0 diff --git a/asm/figurineDevice.s b/asm/figurineDevice.s index ed64416f..7e099233 100644 --- a/asm/figurineDevice.s +++ b/asm/figurineDevice.s @@ -266,7 +266,7 @@ _08087D60: bl PositionRelative _08087DAA: ldr r0, _08087DB8 @ =0x00000111 - bl EnqueSFX + bl EnqueueSFX _08087DB0: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/frozenWaterElement.s b/asm/frozenWaterElement.s index d2e0ac77..97699a4d 100644 --- a/asm/frozenWaterElement.s +++ b/asm/frozenWaterElement.s @@ -96,7 +96,7 @@ sub_0809BF1C: @ 0x0809BF1C lsls r0, r0, #1 strh r0, [r1] adds r0, #0x73 - bl EnqueSFX + bl EnqueueSFX _0809BF6C: pop {r4, pc} .align 2, 0 @@ -129,7 +129,7 @@ _0809BFA0: cmp r1, #0 bne _0809BFAE ldr r0, _0809C09C @ =0x000001B3 - bl EnqueSFX + bl EnqueueSFX _0809BFAE: ldrh r0, [r5] cmp r0, #0x77 diff --git a/asm/lavaPlatform.s b/asm/lavaPlatform.s index c2dc7c10..3024b6b9 100644 --- a/asm/lavaPlatform.s +++ b/asm/lavaPlatform.s @@ -73,7 +73,7 @@ sub_0809229C: @ 0x0809229C bl InitAnimationForceUpdate movs r0, #0xbf lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX ldr r0, [r4, #0x54] movs r1, #3 bl InitializeAnimation @@ -281,7 +281,7 @@ _08092434: movs r1, #2 bl InitializeAnimation ldr r0, _08092468 @ =0x0000017B - bl EnqueSFX + bl EnqueueSFX _08092462: pop {r4, pc} .align 2, 0 @@ -335,7 +335,7 @@ _080924B8: strb r0, [r3] movs r0, #0xbe lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX b _080924DC _080924CC: movs r0, #2 @@ -344,7 +344,7 @@ _080924CC: beq _080924DC strb r2, [r3] ldr r0, _080924E0 @ =0x0000017D - bl EnqueSFX + bl EnqueueSFX _080924DC: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/likeLike.s b/asm/likeLike.s index e0b8c086..438361dd 100644 --- a/asm/likeLike.s +++ b/asm/likeLike.s @@ -485,7 +485,7 @@ _080280F0: bne _08028102 movs r0, #0x82 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _08028102: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/lockedDoor.s b/asm/lockedDoor.s index 22acc1b0..a41b0bfb 100644 --- a/asm/lockedDoor.s +++ b/asm/lockedDoor.s @@ -232,7 +232,7 @@ sub_080834B4: @ 0x080834B4 ldrb r2, [r2] bl SetTile ldr r0, _080834E8 @ =0x0000010B - bl EnqueSFX + bl EnqueueSFX _080834E6: pop {pc} .align 2, 0 @@ -323,7 +323,7 @@ _0808357A: adds r0, r4, #0 bl sub_08083814 ldr r0, _08083590 @ =0x0000010B - bl EnqueSFX + bl EnqueueSFX _0808358C: pop {r4, pc} .align 2, 0 diff --git a/asm/madderpillar.s b/asm/madderpillar.s index d569af3e..c98eafb5 100644 --- a/asm/madderpillar.s +++ b/asm/madderpillar.s @@ -117,7 +117,7 @@ _08029948: movs r1, #0x7f bl sub_0801D2B4 movs r0, #0xfe - bl EnqueSFX + bl EnqueueSFX ldr r0, [r5, #0x54] strb r4, [r0, #0xc] _08029970: @@ -298,7 +298,7 @@ sub_08029AA4: @ 0x08029AA4 adds r0, r1, #0 bl sub_08029EEC ldr r0, _08029ADC @ =0x0000019D - bl EnqueSFX + bl EnqueueSFX _08029ADA: pop {pc} .align 2, 0 @@ -335,7 +335,7 @@ sub_08029AE0: @ 0x08029AE0 bl sub_0801D2B4 movs r0, #0xc1 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _08029B28: pop {r4, pc} .align 2, 0 @@ -491,7 +491,7 @@ sub_08029C2C: @ 0x08029C2C movs r1, #0x7f bl sub_0801D2B4 movs r0, #0x6c - bl EnqueSFX + bl EnqueueSFX _08029C4E: pop {pc} @@ -625,7 +625,7 @@ sub_08029D14: @ 0x08029D14 movs r1, #0x7f bl sub_0801D2B4 movs r0, #0x6c - bl EnqueSFX + bl EnqueueSFX b _08029D70 _08029D42: adds r0, r4, #0 @@ -648,7 +648,7 @@ _08029D42: ldr r0, _08029D74 @ =gUnk_080FD298 str r0, [r4, #0x48] movs r0, #0x6b - bl EnqueSFX + bl EnqueueSFX _08029D70: pop {r4, pc} .align 2, 0 @@ -1132,7 +1132,7 @@ _0802A0B8: bl sub_08029EEC movs r0, #0x82 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _0802A0E4: movs r0, #0x2e ldrsh r1, [r4, r0] @@ -1286,7 +1286,7 @@ _0802A1B0: @ jump table _0802A22C: movs r0, #0x97 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _0802A234: pop {pc} .align 2, 0 diff --git a/asm/managerF.s b/asm/managerF.s index f2181c89..04cc1c91 100644 --- a/asm/managerF.s +++ b/asm/managerF.s @@ -747,7 +747,7 @@ _08059436: strh r0, [r2, #0x32] movs r0, #0xd8 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX bl DeleteThisEntity _08059476: pop {r4, pc} diff --git a/asm/minecartDoor.s b/asm/minecartDoor.s index a2988960..d75eec45 100644 --- a/asm/minecartDoor.s +++ b/asm/minecartDoor.s @@ -150,7 +150,7 @@ sub_08096BBC: @ 0x08096BBC ldrb r2, [r2] bl SetTile ldr r0, _08096BF4 @ =0x0000010B - bl EnqueSFX + bl EnqueueSFX _08096BF2: pop {r4, pc} .align 2, 0 @@ -277,7 +277,7 @@ sub_08096CB0: @ 0x08096CB0 adds r0, r4, #0 bl sub_08083814 ldr r0, _08096CE8 @ =0x0000010B - bl EnqueSFX + bl EnqueueSFX _08096CE6: pop {r4, pc} .align 2, 0 diff --git a/asm/minishEzlo.s b/asm/minishEzlo.s index c470a603..057a51b8 100644 --- a/asm/minishEzlo.s +++ b/asm/minishEzlo.s @@ -48,7 +48,7 @@ _08062FA0: ands r0, r1 strb r0, [r4] ldr r0, _08062FEC @ =0x000001CF - bl EnqueSFX + bl EnqueueSFX _08062FCC: ldrb r1, [r4] movs r0, #0x20 @@ -60,7 +60,7 @@ _08062FCC: strb r0, [r4] movs r0, #0x88 lsls r0, r0, #2 - bl EnqueSFX + bl EnqueueSFX _08062FE4: pop {r4, pc} .align 2, 0 diff --git a/asm/mountainMinish.s b/asm/mountainMinish.s index c9571ff4..60dde3ec 100644 --- a/asm/mountainMinish.s +++ b/asm/mountainMinish.s @@ -299,7 +299,7 @@ _08068068: lsls r0, r0, #1 adds r0, r0, r4 ldrh r0, [r0] - bl EnqueSFX + bl EnqueueSFX _0806807E: ldrb r1, [r6] movs r0, #2 diff --git a/asm/mulldozer.s b/asm/mulldozer.s index 4c449faa..8244ecb8 100644 --- a/asm/mulldozer.s +++ b/asm/mulldozer.s @@ -826,7 +826,7 @@ _08033238: strh r0, [r4, #0x32] movs r0, #0x86 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _08033278: pop {r4, r5, r6, pc} .align 2, 0 diff --git a/asm/object20.s b/asm/object20.s index 7fe7e16d..526b9cd8 100644 --- a/asm/object20.s +++ b/asm/object20.s @@ -64,7 +64,7 @@ _08087836: adds r0, r4, #0 bl sub_0801766C movs r0, #0xfd - bl EnqueSFX + bl EnqueueSFX pop {r4, pc} .align 2, 0 _08087884: .4byte gUnk_08120A54 diff --git a/asm/object24.s b/asm/object24.s index 16ac6466..00ed5c8b 100644 --- a/asm/object24.s +++ b/asm/object24.s @@ -93,7 +93,7 @@ sub_0808886C: @ 0x0808886C ldrh r0, [r0] bl SetFlag ldr r0, _080888B4 @ =0x0000016B - bl EnqueSFX + bl EnqueueSFX b _080888F2 .align 2, 0 _080888B4: .4byte 0x0000016B @@ -117,7 +117,7 @@ _080888D2: _080888DA: movs r0, #0x86 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX b _080888F0 _080888E4: cmp r4, r0 diff --git a/asm/object2A.s b/asm/object2A.s index da9945a6..d43ecb9c 100644 --- a/asm/object2A.s +++ b/asm/object2A.s @@ -140,6 +140,6 @@ _08089C96: bl InitializeAnimation movs r0, #0x92 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _08089CBA: pop {r4, r5, r6, pc} diff --git a/asm/object35.s b/asm/object35.s index 532c75c4..746cf2e4 100644 --- a/asm/object35.s +++ b/asm/object35.s @@ -220,7 +220,7 @@ sub_0808B9D4: @ 0x0808B9D4 ldrb r2, [r2] bl SetTile ldr r0, _0808BA0C @ =0x0000010B - bl EnqueSFX + bl EnqueueSFX _0808BA0A: pop {r4, pc} .align 2, 0 @@ -294,7 +294,7 @@ sub_0808BA6C: @ 0x0808BA6C movs r1, #2 bl sub_08083814 ldr r0, _0808BAA8 @ =0x0000010B - bl EnqueSFX + bl EnqueueSFX ldr r0, _0808BAAC @ =0x00004022 adds r1, r4, #0 adds r1, #0x76 diff --git a/asm/object43.s b/asm/object43.s index 48912c1e..55392ea6 100644 --- a/asm/object43.s +++ b/asm/object43.s @@ -263,7 +263,7 @@ _0808E084: _0808E0B8: .4byte gScreenTransition _0808E0BC: ldr r0, _0808E140 @ =0x00000115 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 movs r1, #0x12 movs r2, #0 diff --git a/asm/object44.s b/asm/object44.s index 98dc9e54..f97e9383 100644 --- a/asm/object44.s +++ b/asm/object44.s @@ -113,7 +113,7 @@ _0808E340: cmp r0, #0 beq _0808E34E ldr r0, _0808E350 @ =0x0000018B - bl EnqueSFX + bl EnqueueSFX _0808E34E: pop {r4, pc} .align 2, 0 diff --git a/asm/object64.s b/asm/object64.s index 03c201f9..dc28fa20 100644 --- a/asm/object64.s +++ b/asm/object64.s @@ -61,7 +61,7 @@ _08093E6A: cmp r0, #0 bne _08093E90 ldrh r0, [r2] - bl EnqueSFX + bl EnqueueSFX _08093E90: ldrb r1, [r4, #0xb] movs r0, #0x20 diff --git a/asm/object6A.s b/asm/object6A.s index 8eb8d64d..dd1859cc 100644 --- a/asm/object6A.s +++ b/asm/object6A.s @@ -637,7 +637,7 @@ _08094ED4: bl InitializeAnimation movs r0, #0xbf lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX b _08094F94 .align 2, 0 _08094F04: .4byte 0xFFFFE000 @@ -1992,7 +1992,7 @@ sub_08095954: @ 0x08095954 str r0, [r1] movs r0, #0x92 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX adds r2, r5, #0 adds r2, #0x5a ldrb r1, [r2] diff --git a/asm/object87.s b/asm/object87.s index 9ee385e3..c6c724ce 100644 --- a/asm/object87.s +++ b/asm/object87.s @@ -67,7 +67,7 @@ _08099F70: bl InitializeAnimation movs r0, #0x92 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX b _0809A1B6 _08099F82: ldr r0, [r5, #0x50] diff --git a/asm/object8B.s b/asm/object8B.s index ddaa9483..a02afe6b 100644 --- a/asm/object8B.s +++ b/asm/object8B.s @@ -170,7 +170,7 @@ sub_0809B050: @ 0x0809B050 bl sub_0809B0B0 movs r0, #0x86 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _0809B0A2: pop {r4, r5, pc} .align 2, 0 diff --git a/asm/objectA0.s b/asm/objectA0.s index 4e8acfd6..fee7ebba 100644 --- a/asm/objectA0.s +++ b/asm/objectA0.s @@ -114,7 +114,7 @@ sub_0809F1B0: @ 0x0809F1B0 adds r1, r5, #0 bl PositionRelative movs r0, #0xec - bl EnqueSFX + bl EnqueueSFX b _0809F21E .align 2, 0 _0809F208: .4byte gUnk_08124684 diff --git a/asm/objectA8.s b/asm/objectA8.s index 5414d233..47032256 100644 --- a/asm/objectA8.s +++ b/asm/objectA8.s @@ -65,7 +65,7 @@ _0809FAE6: bl sub_0805E3A0 movs r0, #0x9b lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _0809FB30: pop {pc} .align 2, 0 diff --git a/asm/objectBlockingStairs.s b/asm/objectBlockingStairs.s index 38850853..99edc949 100644 --- a/asm/objectBlockingStairs.s +++ b/asm/objectBlockingStairs.s @@ -184,7 +184,7 @@ _08092FF2: movs r1, #0x50 bl sub_0805E4E0 ldr r0, _0809303C @ =0x0000010F - bl EnqueSFX + bl EnqueueSFX adds r0, r6, #0 bl sub_08093248 b _080930E6 @@ -326,7 +326,7 @@ _08093104: strb r0, [r4, #0x15] strb r2, [r4, #0xe] ldr r0, _08093164 @ =0x0000010F - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl sub_08093248 b _08093174 @@ -620,7 +620,7 @@ _0809334A: adds r1, r5, #0 bl sub_08093308 movs r0, #0x72 - bl EnqueSFX + bl EnqueueSFX pop {r4, r5, pc} .align 2, 0 diff --git a/asm/objectD.s b/asm/objectD.s index f6f6cf5c..d2296bfa 100644 --- a/asm/objectD.s +++ b/asm/objectD.s @@ -124,7 +124,7 @@ sub_080843F8: @ 0x080843F8 movs r2, #0 bl CreateFx ldr r0, _08084424 @ =0x0000010D - bl EnqueSFX + bl EnqueueSFX _08084420: pop {pc} .align 2, 0 @@ -150,7 +150,7 @@ sub_08084428: @ 0x08084428 bl SetFlag movs r0, #0x86 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _08084454: pop {r4, pc} .align 2, 0 diff --git a/asm/objectOnPillar.s b/asm/objectOnPillar.s index 344e6854..a6f43db9 100644 --- a/asm/objectOnPillar.s +++ b/asm/objectOnPillar.s @@ -360,7 +360,7 @@ sub_08097098: @ 0x08097098 movs r0, #0x20 strh r0, [r1] adds r0, #0xef - bl EnqueSFX + bl EnqueueSFX adds r0, r6, #0 adds r0, #0x70 ldrh r0, [r0] @@ -504,7 +504,7 @@ _080971B8: ldrh r0, [r0] bl SetFlag ldr r0, _080971D8 @ =0x0000010B - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl sub_080971E0 movs r0, #1 diff --git a/asm/octorokGolden.s b/asm/octorokGolden.s index 7366c687..3256ab32 100644 --- a/asm/octorokGolden.s +++ b/asm/octorokGolden.s @@ -201,7 +201,7 @@ sub_08037D54: @ 0x08037D54 strh r0, [r2, #0x36] movs r0, #0x92 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX b _08037E0C .align 2, 0 _08037DBC: .4byte gUnk_080CF490 diff --git a/asm/picoBloom.s b/asm/picoBloom.s index 6ce20de9..0fa701a6 100644 --- a/asm/picoBloom.s +++ b/asm/picoBloom.s @@ -84,7 +84,7 @@ sub_08098AE8: @ 0x08098AE8 ands r0, r1 strb r0, [r4] ldr r0, _08098B0C @ =0x0000021B - bl EnqueSFX + bl EnqueueSFX _08098B08: pop {r4, pc} .align 2, 0 diff --git a/asm/puffstool.s b/asm/puffstool.s index cf03222f..70b4dca2 100644 --- a/asm/puffstool.s +++ b/asm/puffstool.s @@ -154,7 +154,7 @@ _080250C2: _08025104: movs r0, #0xc3 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _0802510C: ldr r1, _08025118 @ =gUnk_080CBF9C adds r0, r4, #0 diff --git a/asm/pullableLever.s b/asm/pullableLever.s index f9dc53c4..ff888fe0 100644 --- a/asm/pullableLever.s +++ b/asm/pullableLever.s @@ -296,7 +296,7 @@ _080913E0: strb r5, [r1] movs r0, #0xcf lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _0809142A: pop {r4, r5, r6, r7, pc} .align 2, 0 @@ -575,7 +575,7 @@ _080915E0: bhi _08091640 movs r0, #0x86 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX adds r0, r5, #0 adds r0, #0x86 ldrh r0, [r0] @@ -593,7 +593,7 @@ _08091640: movs r0, #0x10 strb r0, [r5, #0xf] adds r0, #0xff - bl EnqueSFX + bl EnqueueSFX _08091656: add sp, #4 pop {r3, r4} diff --git a/asm/pushableFurniture.s b/asm/pushableFurniture.s index fd04b86c..2e0e74d0 100644 --- a/asm/pushableFurniture.s +++ b/asm/pushableFurniture.s @@ -230,7 +230,7 @@ _0808FAF2: bne _0808FB0A movs r0, #0x86 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _0808FB0A: ldrb r0, [r4, #0xa] cmp r0, #2 @@ -271,7 +271,7 @@ _0808FB3E: movs r0, #2 strb r0, [r4, #0xd] movs r0, #0x80 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl sub_0808FF20 b _0808FB64 @@ -598,7 +598,7 @@ _0808FDB4: strb r0, [r4, #0xe] _0808FDB6: ldr r0, _0808FDE0 @ =0x0000010F - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl sub_08090254 ldr r1, _0808FDE4 @ =gUnk_080B4488 diff --git a/asm/pushableGrave.s b/asm/pushableGrave.s index 00dcfd34..d65652f4 100644 --- a/asm/pushableGrave.s +++ b/asm/pushableGrave.s @@ -293,7 +293,7 @@ _080977BC: b _080977E4 _080977C8: movs r0, #0x72 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl sub_080977F4 ldrb r0, [r4, #0xa] diff --git a/asm/pushableLever.s b/asm/pushableLever.s index e20940d6..cb21b55c 100644 --- a/asm/pushableLever.s +++ b/asm/pushableLever.s @@ -62,7 +62,7 @@ sub_08098294: @ 0x08098294 bl SetTile movs r0, #0xb5 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 movs r1, #0x1e bl sub_0805E4E0 @@ -315,7 +315,7 @@ _08098492: bne _080984C2 movs r0, #0x82 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _080984C2: pop {r4, pc} .align 2, 0 diff --git a/asm/pushableRock.s b/asm/pushableRock.s index 16ba39cb..c9d147b7 100644 --- a/asm/pushableRock.s +++ b/asm/pushableRock.s @@ -114,7 +114,7 @@ _0808A598: adds r0, r4, #0 bl InitializeAnimation ldr r0, _0808A5C8 @ =0x0000010F - bl EnqueSFX + bl EnqueueSFX b _0808A5DE .align 2, 0 _0808A5C8: .4byte 0x0000010F diff --git a/asm/pushableStatue.s b/asm/pushableStatue.s index 4cc9ad88..efd6cdfa 100644 --- a/asm/pushableStatue.s +++ b/asm/pushableStatue.s @@ -463,7 +463,7 @@ sub_08089538: @ 0x08089538 movs r0, #0x20 strh r0, [r1] adds r0, #0xef - bl EnqueSFX + bl EnqueueSFX adds r0, r5, #0 adds r0, #0x80 ldrh r0, [r0] diff --git a/asm/rope.s b/asm/rope.s index c65ccb53..d16b913c 100644 --- a/asm/rope.s +++ b/asm/rope.s @@ -214,7 +214,7 @@ _080314CC: adds r0, r4, #0 bl UpdateSpriteForCollisionLayer movs r0, #0x84 - bl EnqueSFX + bl EnqueueSFX _080314FA: pop {r4, pc} diff --git a/asm/scissorsBeetle.s b/asm/scissorsBeetle.s index 04e7d56d..956643ba 100644 --- a/asm/scissorsBeetle.s +++ b/asm/scissorsBeetle.s @@ -356,7 +356,7 @@ _08038B18: movs r1, #0 bl sub_08038C84 ldr r0, _08038B60 @ =0x0000015B - bl EnqueSFX + bl EnqueueSFX _08038B5E: pop {r4, pc} .align 2, 0 diff --git a/asm/sensorBladeTrap.s b/asm/sensorBladeTrap.s index f95f02b4..1351ee98 100644 --- a/asm/sensorBladeTrap.s +++ b/asm/sensorBladeTrap.s @@ -200,7 +200,7 @@ sub_0802BB10: @ 0x0802BB10 eors r1, r2 strb r1, [r0, #0x15] movs r0, #0x74 - bl EnqueSFX + bl EnqueueSFX pop {pc} .align 2, 0 diff --git a/asm/sluggula.s b/asm/sluggula.s index 8ae3f9a9..d75ab61a 100644 --- a/asm/sluggula.s +++ b/asm/sluggula.s @@ -266,7 +266,7 @@ _08023D6E: cmp r0, #0 bne _08023E0A ldr r0, _08023D90 @ =0x0000012D - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 movs r1, #4 bl InitializeAnimation @@ -289,7 +289,7 @@ _08023D94: orrs r0, r1 strb r0, [r4, #0x18] movs r0, #0x84 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl UpdateSpriteForCollisionLayer b _08023E0A diff --git a/asm/smallIceBlock.s b/asm/smallIceBlock.s index e851c0e6..ab6f9052 100644 --- a/asm/smallIceBlock.s +++ b/asm/smallIceBlock.s @@ -104,7 +104,7 @@ sub_08099248: @ 0x08099248 strb r0, [r4, #0xc] strb r1, [r4, #0xe] ldr r0, _0809927C @ =0x000001B3 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl sub_08099330 ldrb r0, [r4, #0xa] @@ -200,7 +200,7 @@ sub_08099310: @ 0x08099310 bl sub_08099468 movs r0, #0xd9 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _0809932E: pop {r4, pc} @@ -406,7 +406,7 @@ sub_080994B8: @ 0x080994B8 push {r4, r5, r6, lr} adds r5, r0, #0 ldr r0, _08099530 @ =0x000001B1 - bl EnqueSFX + bl EnqueueSFX adds r0, r5, #0 adds r0, #0x6c ldrh r0, [r0] diff --git a/asm/spearMoblin.s b/asm/spearMoblin.s index 123692be..6d6ba820 100644 --- a/asm/spearMoblin.s +++ b/asm/spearMoblin.s @@ -350,7 +350,7 @@ _080284B4: strb r0, [r4, #0x15] movs r0, #0x8f lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX b _0802850A _080284D2: strb r1, [r4, #0xc] @@ -477,7 +477,7 @@ _080285BC: cmp r0, #0 bne _080285D6 movs r0, #0xf0 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 movs r1, #2 movs r2, #0x40 diff --git a/asm/specialFx.s b/asm/specialFx.s index 27ece1b6..383cd385 100644 --- a/asm/specialFx.s +++ b/asm/specialFx.s @@ -101,7 +101,7 @@ _0808456C: cmp r0, #0 bne _08084582 ldrh r0, [r4, #2] - bl EnqueSFX + bl EnqueueSFX _08084582: ldrb r1, [r5, #0xb] movs r0, #0x80 diff --git a/asm/spikedBeetle.s b/asm/spikedBeetle.s index bcaf117b..a5035592 100644 --- a/asm/spikedBeetle.s +++ b/asm/spikedBeetle.s @@ -366,7 +366,7 @@ _0802B8CC: strb r0, [r4, #0xe] _0802B8D4: ldr r0, _0802B8DC @ =0x0000012B - bl EnqueSFX + bl EnqueueSFX _0802B8DA: pop {r4, pc} .align 2, 0 @@ -419,7 +419,7 @@ _0802B91C: adds r0, r3, #0 bl InitializeAnimation ldr r0, _0802B944 @ =0x0000012B - bl EnqueSFX + bl EnqueueSFX _0802B940: pop {r4, pc} .align 2, 0 diff --git a/asm/stalfos.s b/asm/stalfos.s index 309afcfa..1476b093 100644 --- a/asm/stalfos.s +++ b/asm/stalfos.s @@ -153,7 +153,7 @@ _08039390: strb r0, [r1, #0xb] movs r0, #0xc3 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX b _080393DC _080393CA: adds r0, r1, #0 @@ -162,7 +162,7 @@ _080393CA: strb r2, [r0] movs r0, #0xc3 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX str r4, [r5, #0x54] _080393DC: adds r0, r5, #0 @@ -452,7 +452,7 @@ sub_080395D8: @ 0x080395D8 movs r0, #0x5a strb r0, [r1] movs r0, #0x7d - bl EnqueSFX + bl EnqueueSFX _08039602: pop {r4, pc} @@ -509,7 +509,7 @@ _0803963A: adds r0, r2, #0 bl sub_080399C4 ldr r0, _0803966C @ =0x0000014B - bl EnqueSFX + bl EnqueueSFX _0803966A: pop {pc} .align 2, 0 @@ -764,7 +764,7 @@ _08039836: adds r0, r2, #0 bl InitAnimationForceUpdate ldr r0, _08039854 @ =0x0000012B - bl EnqueSFX + bl EnqueueSFX pop {pc} .align 2, 0 _08039854: .4byte 0x0000012B @@ -1018,7 +1018,7 @@ sub_08039A20: @ 0x08039A20 movs r0, #0x3c strb r0, [r1] movs r0, #0xfb - bl EnqueSFX + bl EnqueueSFX _08039A44: pop {r4, pc} .align 2, 0 diff --git a/asm/vaati.s b/asm/vaati.s index 11f143cd..49e70e22 100644 --- a/asm/vaati.s +++ b/asm/vaati.s @@ -115,11 +115,11 @@ _08066B20: _08066B2A: movs r0, #0x87 lsls r0, r0, #2 - bl EnqueSFX + bl EnqueueSFX b _08066B66 _08066B34: ldr r0, _08066B3C @ =0x0000021E - bl EnqueSFX + bl EnqueueSFX b _08066B66 .align 2, 0 _08066B3C: .4byte 0x0000021E @@ -140,7 +140,7 @@ _08066B52: adds r0, r4, #0 bl sub_0805DE18 ldr r0, _08066B70 @ =0x0000021D - bl EnqueSFX + bl EnqueueSFX _08066B66: ldrb r1, [r5] movs r0, #0x7f diff --git a/asm/vaatiArm.s b/asm/vaatiArm.s index 33ac5c87..c3ec0207 100644 --- a/asm/vaatiArm.s +++ b/asm/vaatiArm.s @@ -3298,7 +3298,7 @@ _08043D92: cmp r2, #4 bls _08043D92 movs r0, #0xfe - bl EnqueSFX + bl EnqueueSFX pop {r4, r5, pc} .align 2, 0 _08043DAC: .4byte gUnk_080D13E9 diff --git a/asm/vaatiEyesMacro.s b/asm/vaatiEyesMacro.s index cd272756..8a768333 100644 --- a/asm/vaatiEyesMacro.s +++ b/asm/vaatiEyesMacro.s @@ -100,7 +100,7 @@ _0802ED0E: beq _0802ED24 movs r0, #0xbd lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX _0802ED24: ldrb r0, [r5] strb r0, [r6] @@ -123,7 +123,7 @@ _0802ED3E: cmp r0, #0xff beq _0802ED4E movs r0, #0xe5 - bl EnqueSFX + bl EnqueueSFX _0802ED4E: movs r0, #0xff strb r0, [r5] diff --git a/asm/vaatiReborn.s b/asm/vaatiReborn.s index 74b23e66..0b4450b3 100644 --- a/asm/vaatiReborn.s +++ b/asm/vaatiReborn.s @@ -336,7 +336,7 @@ _0806B8C4: adds r0, #1 strb r0, [r5, #0xd] movs r0, #0xf4 - bl EnqueSFX + bl EnqueueSFX movs r0, #0 strb r0, [r5, #0xe] _0806B8FA: diff --git a/asm/wallMaster.s b/asm/wallMaster.s index da7410a1..c2a51fea 100644 --- a/asm/wallMaster.s +++ b/asm/wallMaster.s @@ -243,7 +243,7 @@ sub_0802A5B8: @ 0x0802A5B8 cmp r0, #0 bne _0802A60E ldr r0, _0802A5E4 @ =0x0000012D - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 movs r1, #0 bl InitializeAnimation diff --git a/asm/warpPoint.s b/asm/warpPoint.s index 46bf961b..f2f0d1fa 100644 --- a/asm/warpPoint.s +++ b/asm/warpPoint.s @@ -110,7 +110,7 @@ _0808B4F8: strb r2, [r1, #0x14] movs r0, #0x89 lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX ldrb r1, [r4, #0xf] adds r1, #0x10 adds r0, r4, #0 @@ -142,7 +142,7 @@ _0808B554: movs r0, #0x3c strb r0, [r4, #0xf] adds r0, #0xd6 - bl EnqueSFX + bl EnqueueSFX _0808B562: pop {r4, pc} diff --git a/asm/waterDrop.s b/asm/waterDrop.s index 664c8b9d..12be5881 100644 --- a/asm/waterDrop.s +++ b/asm/waterDrop.s @@ -85,7 +85,7 @@ sub_0802A2B4: @ 0x0802A2B4 orrs r0, r1 strb r0, [r2] movs r0, #0x84 - bl EnqueSFX + bl EnqueueSFX b _0802A2E2 _0802A2DC: adds r0, r4, #0 diff --git a/asm/windTribespeople.s b/asm/windTribespeople.s index dd4e7087..97aab657 100644 --- a/asm/windTribespeople.s +++ b/asm/windTribespeople.s @@ -147,7 +147,7 @@ sub_0806CA5C: @ 0x0806CA5C cmp r0, #0xa bne _0806CA7E movs r0, #0xe8 - bl EnqueSFX + bl EnqueueSFX _0806CA7E: ldrh r0, [r4, #0x10] cmp r0, #0 diff --git a/asm/wizzrobeFire.s b/asm/wizzrobeFire.s index da743284..43f398ff 100644 --- a/asm/wizzrobeFire.s +++ b/asm/wizzrobeFire.s @@ -292,7 +292,7 @@ _0802FD18: bl SetTile movs r0, #0xab lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX ldrb r1, [r4, #0x15] lsrs r1, r1, #3 adds r0, r4, #0 @@ -337,7 +337,7 @@ _0802FD94: strb r0, [r4, #0xe] movs r0, #0xab lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl sub_0802F8E4 ldrb r1, [r4, #0x15] diff --git a/asm/wizzrobeIce.s b/asm/wizzrobeIce.s index c0634a4c..f261759f 100644 --- a/asm/wizzrobeIce.s +++ b/asm/wizzrobeIce.s @@ -319,7 +319,7 @@ _0802FFF0: bl SetTile movs r0, #0xab lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX ldrb r1, [r4, #0x15] lsrs r1, r1, #3 adds r0, r4, #0 @@ -364,7 +364,7 @@ _0803006C: strb r0, [r4, #0xe] movs r0, #0xab lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl sub_0802F8E4 ldrb r1, [r4, #0x15] diff --git a/asm/wizzrobeWind.s b/asm/wizzrobeWind.s index 4025a460..b411d030 100644 --- a/asm/wizzrobeWind.s +++ b/asm/wizzrobeWind.s @@ -334,7 +334,7 @@ _0802F6F0: strb r0, [r4, #0x10] movs r0, #0xab lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 adds r0, #0x86 ldrh r0, [r0] @@ -389,7 +389,7 @@ _0802F76C: strb r0, [r4, #0xe] movs r0, #0xab lsls r0, r0, #1 - bl EnqueSFX + bl EnqueueSFX adds r0, r4, #0 bl sub_0802F8E4 ldrb r1, [r4, #0x15] diff --git a/include/functions.h b/include/functions.h index adef870f..914be456 100644 --- a/include/functions.h +++ b/include/functions.h @@ -192,7 +192,7 @@ extern void sub_08001242(Entity*); extern u32 sub_08003FC4(Entity*, u32); extern u32 sub_080043E8(Entity*); extern void sub_08001290(Entity*, u32); -extern void EnqueSFX(u32); +extern void EnqueueSFX(u32); extern void sub_08004596(Entity*, u32); extern u32 sub_0807953C(void); extern void ResetPlayer(void); diff --git a/src/enemy/acroBandits.c b/src/enemy/acroBandits.c index 03e02143..d25b4d9a 100644 --- a/src/enemy/acroBandits.c +++ b/src/enemy/acroBandits.c @@ -343,7 +343,7 @@ void sub_08031EE8(Entity* this) { if (this->height.HALF.HI < 1) { draw = this->spriteSettings.b.draw; if (!draw) - EnqueSFX(299); + EnqueueSFX(299); this->spriteSettings.b.draw = 1; } diff --git a/src/enemy/beetle.c b/src/enemy/beetle.c index a454402a..aa51a736 100644 --- a/src/enemy/beetle.c +++ b/src/enemy/beetle.c @@ -131,7 +131,7 @@ void sub_08021984(Entity* this) { this->height.HALF.HI = -0x80; this->spriteRendering.b3 = 1; this->spriteOrientation.flipY = 1; - EnqueSFX(0x12d); + EnqueueSFX(0x12d); } if (sub_08003FC4(this, 0x1800) == 0) { @@ -198,7 +198,7 @@ void sub_08021AD8(Entity* this) { return; } this->direction = (u8)tmp; - EnqueSFX(0x7c); + EnqueueSFX(0x7c); } sub_080AEFE0(this); if (!sub_08003FC4(this, 0x1800)) diff --git a/src/enemy/bladeTrap.c b/src/enemy/bladeTrap.c index 2229aec2..b58ef0d6 100644 --- a/src/enemy/bladeTrap.c +++ b/src/enemy/bladeTrap.c @@ -3,7 +3,7 @@ #include "room.h" extern void sub_080A2CC0(); extern void sub_0806F69C(); -extern void EnqueSFX(); +extern void EnqueueSFX(); extern Entity* GetCurrentRoomProperty(); void BladeTrap(Entity* ent) { @@ -27,7 +27,7 @@ void BladeTrap(Entity* ent) { *puVar3 = uVar1 - 1; if ((*puVar3) == 0) { if ((u16)(ent->direction & 0x80) == 0) { - EnqueSFX(0x74); + EnqueueSFX(0x74); } sub_080A2CC0((EntityData*)ent, &ent->attachedEntity, puVar3); } diff --git a/src/enemy/chuchu.c b/src/enemy/chuchu.c index 738d2c13..9b816805 100644 --- a/src/enemy/chuchu.c +++ b/src/enemy/chuchu.c @@ -213,7 +213,7 @@ void sub_0801F1B0(Entity* this) { if (this->frames.all & 1) { this->frames.all ^= 1; this->damageType = 90; - EnqueSFX(299); + EnqueueSFX(299); } sub_080AEFE0(this); if (sub_08003FC4(this, 0x4000) == 0) @@ -400,7 +400,7 @@ void sub_0801F584(Entity* this) { if (this->frames.all & 0x1) { this->frames.all ^= 1; this->damageType = 91; - EnqueSFX(299); + EnqueueSFX(299); } sub_080AEFE0(this); if (sub_08003FC4(this, 0x4000) == 0) @@ -548,7 +548,7 @@ void sub_0801F884(Entity* this) { ent->entityType.parameter = 64; this->action = 4; this->damageType = 165; - EnqueSFX(0x193); + EnqueueSFX(0x193); } } } @@ -577,7 +577,7 @@ void sub_0801F940(Entity* this) { if (this->frames.all & 0x10) { if (this->frames.all & 1) { this->frames.all ^= 1; - EnqueSFX(299); + EnqueueSFX(299); } sub_080AEFE0(this); if (sub_08003FC4(this, 0x4000) == 0) diff --git a/src/enemy/cuccoChickAggr.c b/src/enemy/cuccoChickAggr.c index f1169ae7..686e5100 100644 --- a/src/enemy/cuccoChickAggr.c +++ b/src/enemy/cuccoChickAggr.c @@ -49,7 +49,7 @@ void sub_08022988(Entity* this) { this->frameIndex = 1; this->field_0x20 = 0x10000; - EnqueSFX(0xd6); + EnqueueSFX(0xd6); } ProcessMovement(this); @@ -75,7 +75,7 @@ void sub_080229F8(Entity* this) { sub_08022B44(this); } else { this->field_0x20 = 0x10000; - EnqueSFX(0xd6); + EnqueueSFX(0xd6); } } } @@ -143,7 +143,7 @@ void sub_08022B44(Entity *this){ if (this->direction & 0xf) this->spriteSettings.b.flipX = (this->direction >> 4)^1; - EnqueSFX(0xd6); + EnqueueSFX(0xd6); } diff --git a/src/enemy/darkNut.c b/src/enemy/darkNut.c index b7e5bf0f..b0c63e8a 100644 --- a/src/enemy/darkNut.c +++ b/src/enemy/darkNut.c @@ -90,7 +90,7 @@ void sub_08020BB8(Entity* this) { } this->action = 10; sub_08021218(this, 0xb, this->animationState); - EnqueSFX(0x15d); + EnqueueSFX(0x15d); sub_08021588(this); break; case 0x4c: @@ -273,7 +273,7 @@ void sub_08021038(Entity* this) { pEVar2->parent = this; this->attachedEntity = pEVar2; } - EnqueSFX(270); + EnqueueSFX(270); } if (this->frames.all & 0x80) { @@ -295,7 +295,7 @@ void sub_080210A8(Entity* this) { if (this->frames.all & 1) { this->frames.all = 0; sub_08021588(this); - EnqueSFX(349); + EnqueueSFX(349); } else if (this->frames.all & 0x80) { sub_08021390(this); } @@ -313,7 +313,7 @@ void sub_080210E4(Entity* this) { this->attachedEntity = ent; } - EnqueSFX(270); + EnqueueSFX(270); } sub_08021644(this); @@ -575,13 +575,13 @@ void sub_0802159C(Entity* this) { ent->parent = this; this->attachedEntity = ent; } - EnqueSFX(0x116); + EnqueueSFX(0x116); } else if (this->frames.all == 2) { this->frames.all = 0; sub_08021588(this); } else if (this->frames.all & 0x20) { this->frames.all &= ~0x20; - EnqueSFX(0x115); + EnqueueSFX(0x115); } } @@ -596,7 +596,7 @@ void sub_08021600(Entity* this) { ent->parent = this; this->attachedEntity = ent; } - EnqueSFX(0x10e); + EnqueueSFX(0x10e); } else if (this->frames.all == 2) { this->frames.all = 0; sub_08021588(this); @@ -606,7 +606,7 @@ void sub_08021600(Entity* this) { void sub_08021644(Entity* this) { if (this->frames.all & 0x20) { this->frames.all &= ~0x20; - EnqueSFX(0x7d); + EnqueueSFX(0x7d); } } diff --git a/src/enemy/doorMimic.c b/src/enemy/doorMimic.c index 5d5ca031..e30dfa28 100644 --- a/src/enemy/doorMimic.c +++ b/src/enemy/doorMimic.c @@ -102,7 +102,7 @@ void sub_080220F0(Entity* this) { fx->y.HALF.HI += off->v; } } - EnqueSFX(260); + EnqueueSFX(260); } else if (this->frames.all & 1) { this->field_0x44 = 4; } diff --git a/src/enemy/lakitu.c b/src/enemy/lakitu.c index cf41451e..86f6ce0d 100644 --- a/src/enemy/lakitu.c +++ b/src/enemy/lakitu.c @@ -50,7 +50,7 @@ extern u32 sub_080041A0(Entity *, Entity *, u32, u32); extern u32 GetFacingDirection(Entity *, Entity *); // sub_0803CB64 -extern void EnqueSFX(u32); +extern void EnqueueSFX(u32); typedef struct { s8 x; @@ -343,7 +343,7 @@ void sub_0803CB64(Entity *this) { PositionRelative(this, cloud, offset->x << 16, offset->y << 16); - EnqueSFX(0x193); + EnqueueSFX(0x193); } void sub_0803CBAC(Entity *this) { diff --git a/src/enemy/octorok.c b/src/enemy/octorok.c index 3b9fe027..e4b25fa9 100644 --- a/src/enemy/octorok.c +++ b/src/enemy/octorok.c @@ -142,7 +142,7 @@ void Octorok_ShootNut(Entity* this) { ent->y.HALF.HI += off[1]; ent->height.HALF.HI = -3; this->frames.all &= 0xfe; - EnqueSFX(0x18d); + EnqueueSFX(0x18d); } } diff --git a/src/enemy/rollobite.c b/src/enemy/rollobite.c index 74e80188..7ef108b4 100644 --- a/src/enemy/rollobite.c +++ b/src/enemy/rollobite.c @@ -183,7 +183,7 @@ void Rollobite_RolledUp(Entity* this) { sub_08078930(this); } else { if (unk == 1) - EnqueSFX(260); + EnqueueSFX(260); if ((this->direction & 0x80) == 0) sub_080AEFE0(this); diff --git a/src/enemy/rupeeLike.c b/src/enemy/rupeeLike.c index 9468d7a2..05117e73 100644 --- a/src/enemy/rupeeLike.c +++ b/src/enemy/rupeeLike.c @@ -62,7 +62,7 @@ void sub_08029318(Entity* this) { this->field_0x82.HALF.HI = 0x41; this->flags2 &= 0xfc; this->field_0x80.HALF.LO = gPlayerEntity.spritePriority.b1; - EnqueSFX(0x104); + EnqueueSFX(0x104); } else { if (this->field_0x43 != 0) { sub_0804A9FC(this, 0x1c); diff --git a/src/enemy/spinyChuchu.c b/src/enemy/spinyChuchu.c index 6a6d19e8..273ed695 100644 --- a/src/enemy/spinyChuchu.c +++ b/src/enemy/spinyChuchu.c @@ -69,7 +69,7 @@ void sub_0802244C(Entity* this) { if (this->action == 3) { this->action = 4; InitializeAnimation(this, 3); - EnqueSFX(0x194); + EnqueueSFX(0x194); } } } else { @@ -132,7 +132,7 @@ void sub_08022654(Entity* this) { this->previousActionFlag = 2; this->spriteSettings.b.draw = 1; InitializeAnimation(this, 5); - EnqueSFX(0x7d); + EnqueueSFX(0x7d); UpdateSpriteForCollisionLayer(this); /* fallthrough */ case 2: @@ -180,7 +180,7 @@ void sub_08022780(Entity* this) { if (this->frames.all & 0x80) { this->action = 4; InitializeAnimation(this, 3); - EnqueSFX(0x194); + EnqueueSFX(0x194); } } @@ -223,7 +223,7 @@ void sub_08022854(Entity* this) { this->action = 7; this->damageType = 0x5c; InitializeAnimation(this, 5); - EnqueSFX(0x7d); + EnqueueSFX(0x7d); } } } diff --git a/src/npc/carlov.c b/src/npc/carlov.c index 25c983ae..6cffc865 100644 --- a/src/npc/carlov.c +++ b/src/npc/carlov.c @@ -10,7 +10,7 @@ extern void sub_0807DD50(Entity *); extern void sub_0807DD94(Entity *,u32); -extern void EnqueSFX(u32); +extern void EnqueueSFX(u32); extern void sub_08080964(u32,u32); @@ -25,11 +25,11 @@ void Carlov(Entity *this) } if ((this->frames.all & 0x10) != 0) { this->frames.all = this->frames.all & 0xef; - EnqueSFX(0x104); + EnqueueSFX(0x104); sub_08080964(0x10,0); } if ((this->frames.all & 0x20) != 0) { this->frames.all = this->frames.all & 0xdf; - EnqueSFX(0x7c); + EnqueueSFX(0x7c); } } \ No newline at end of file diff --git a/src/npc/melari.c b/src/npc/melari.c index 0aceb1e1..2262d14e 100644 --- a/src/npc/melari.c +++ b/src/npc/melari.c @@ -12,7 +12,7 @@ extern void sub_0806F118(Entity*); extern void sub_0807DDAC(Entity*, u32); extern void sub_0807DDE4(Entity*); extern u32 sub_080040A8(Entity*); -extern void EnqueSFX(u32); +extern void EnqueueSFX(u32); extern u32 sub_0801E99C(Entity*); extern void sub_08078784(Entity*, u32); extern void sub_0807000C(Entity*); @@ -99,7 +99,7 @@ void sub_08068780(Entity* this) { if (sub_080040A8(this) == 0) { PlaySFX(gUnk_0811153E[(s32)Random() % 3]); } else { - EnqueSFX(gUnk_08111538[(s32)Random() % 3]); + EnqueueSFX(gUnk_08111538[(s32)Random() % 3]); } ent = CreateFx(this, 0x3d, 0x20); if (ent != NULL) { diff --git a/src/npc/postman.c b/src/npc/postman.c index 8ffc696c..0624935b 100644 --- a/src/npc/postman.c +++ b/src/npc/postman.c @@ -27,7 +27,7 @@ extern u32 GetFacingDirection(Entity*, Entity*); extern void sub_080606D8(Entity*); extern void sub_0807DD94(Entity*, u32); extern void sub_080788E0(Entity*); -extern void EnqueSFX(u32); +extern void EnqueueSFX(u32); extern void sub_080606C0(Entity*); extern void sub_0800451C(Entity*); extern void sub_08078784(Entity*, u32); @@ -178,7 +178,7 @@ void sub_08060528(Entity *this) this->field_0x20 = 0x20000; this->field_0x6c.HALF.HI = 1; sub_080788E0(this); - EnqueSFX(0x7c); + EnqueueSFX(0x7c); } else { this->field_0x6a.HWORD -= 1; diff --git a/src/object/lightableSwitch.c b/src/object/lightableSwitch.c index efa72fb2..047f5282 100644 --- a/src/object/lightableSwitch.c +++ b/src/object/lightableSwitch.c @@ -7,7 +7,7 @@ extern void sub_0809EB30(Entity*); extern void sub_0809EAD8(Entity*); extern void sub_0809EABC(Entity*); -extern void EnqueSFX(u32); +extern void EnqueueSFX(u32); extern void sub_080A2CC0(Entity*, Entity**, u16*); extern Entity* GetCurrentRoomProperty(u32); extern void SetTile(u32, u32, u32); @@ -50,7 +50,7 @@ void sub_0809EA80(Entity* this) { } else { SetFlag(this->field_0x86); } - EnqueSFX(0x110); + EnqueueSFX(0x110); } sub_0809EABC(this); } @@ -123,7 +123,7 @@ void sub_0809EBD8(Entity* this) { this->actionDelay = 0x10; this->frameIndex = 2; SetFlag(this->field_0x86); - EnqueSFX(0x110); + EnqueueSFX(0x110); } } @@ -137,7 +137,7 @@ void sub_0809EC08(Entity* this) { this->action = 1; this->frameIndex = 3; ClearFlag(this->field_0x86); - EnqueSFX(0x110); + EnqueueSFX(0x110); } } } diff --git a/src/object/mask.c b/src/object/mask.c index cd5d13f4..a936e7e1 100644 --- a/src/object/mask.c +++ b/src/object/mask.c @@ -20,7 +20,7 @@ extern void sub_08000148(u16, u16, u32); extern s16 sub_080001DA(u16, u32); extern u16 sub_080002E0(u16, u32); -extern void EnqueSFX(u32); +extern void EnqueueSFX(u32); extern void sub_080044EC(Entity *, u16); extern void sub_0805457C(Entity *, s32); @@ -115,7 +115,7 @@ void sub_08092B0C(Entity *this) { switch (this->entityType.parameter & 0xC0) { case 0x80: - EnqueSFX(0x72); + EnqueueSFX(0x72); case 0x40: SetFlag(this->field_0x86); break; diff --git a/src/object/metalDoor.c b/src/object/metalDoor.c index b0df5777..7aa6ec5d 100644 --- a/src/object/metalDoor.c +++ b/src/object/metalDoor.c @@ -6,7 +6,7 @@ extern u32 sub_08083734(Entity*, u32); extern void sub_080A080C(Entity*); extern void sub_0806F69C(Entity*); -extern void EnqueSFX(u32); +extern void EnqueueSFX(u32); extern void sub_080A0870(Entity*); extern void PlaySFX(u32); extern u32 sub_080001DA(u32, u32); @@ -71,7 +71,7 @@ void sub_080A074C(Entity *this) ent->x.HALF.HI -= 0xc; ent->y.HALF.HI -= 0xc; } - EnqueSFX(0x10b); + EnqueueSFX(0x10b); } } diff --git a/src/object/object2A.c b/src/object/object2A.c index 8db435e5..032db162 100644 --- a/src/object/object2A.c +++ b/src/object/object2A.c @@ -36,5 +36,5 @@ void sub_08089B18(Entity *this) return; } } - EnqueSFX(0x124); + EnqueueSFX(0x124); } \ No newline at end of file diff --git a/src/object/pot.c b/src/object/pot.c index 8931598f..b7cfc8d6 100755 --- a/src/object/pot.c +++ b/src/object/pot.c @@ -92,7 +92,7 @@ void sub_08082310(Entity* this) { this->actionDelay = 64; } SetTile((u16)this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer); - EnqueSFX(0x10F); + EnqueueSFX(0x10F); break; case 0x4067: SetTile((u16)this->field_0x70.HALF.LO, COORD_TO_TILE(this), this->collisionLayer); diff --git a/src/object/railtrack.c b/src/object/railtrack.c index d8227bef..ef45e554 100644 --- a/src/object/railtrack.c +++ b/src/object/railtrack.c @@ -6,7 +6,7 @@ extern u32* GetLayerByIndex(u32); extern void sub_08085394(Entity*); extern void sub_0808543C(Entity*); -extern void EnqueSFX(u32); +extern void EnqueueSFX(u32); extern u32 sub_080854A8(Entity*); extern void SetTile(u32, u32, u32); @@ -54,7 +54,7 @@ void sub_08085264(Entity* this) { this->animationState = (this->animationState + *(u8*)&this->field_0x7c) & 3; InitializeAnimation(this, this->animationState); sub_0808543C(this); - EnqueSFX(0x151); + EnqueueSFX(0x151); } } @@ -66,7 +66,7 @@ void sub_080852B4(Entity* this) { this->animationState = (this->animationState + *(u8*)&this->field_0x7c) & 3; InitializeAnimation(this, this->animationState); sub_08085394(this); - EnqueSFX(0x151); + EnqueueSFX(0x151); } } @@ -96,7 +96,7 @@ void sub_08085308(Entity* this) { this->animationState = (this->animationState + *(u8*)&this->field_0x7c) & 3; InitializeAnimation(this, this->animationState); sub_0808543C(this); - EnqueSFX(0x151); + EnqueueSFX(0x151); } } } From 269d8970f3f835824de34f7564f8df0c9a6d227f Mon Sep 17 00:00:00 2001 From: Behemoth Date: Tue, 1 Sep 2020 23:02:48 +0200 Subject: [PATCH 04/14] remove nonsense direction modifier macro --- include/entity.h | 3 +-- src/enemy/keaton.c | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/include/entity.h b/include/entity.h index c4537dce..dc269c33 100644 --- a/include/entity.h +++ b/include/entity.h @@ -173,8 +173,7 @@ extern void PositionRelative(Entity*, Entity*, s32, s32); #define DirectionRoundUp(expr) DirectionRound((expr) + 4) #define DirectionIsHorizontal(expr) ((expr) & 0x08) #define DirectionIsVertical(expr) ((expr) & 0x10) -#define DirectionTurnHorizontal(expr) (DirectionRoundUp(expr) ^ 0x08) -#define DirectionTurnVertical(expr) (DirectionRoundUp(expr) ^ 0x10) +#define DirectionTurnAround(expr) (DirectionRoundUp(expr) ^ 0x10) #define DirectionToAnimationState(expr) (DirectionRoundUp(expr) >> 3) #define DirectionFromAnimationState(expr) (expr << 3) diff --git a/src/enemy/keaton.c b/src/enemy/keaton.c index b900cfea..4d7e003d 100644 --- a/src/enemy/keaton.c +++ b/src/enemy/keaton.c @@ -37,7 +37,7 @@ void sub_080323F4(Entity* this) { if (this->action != 3 && this->action != 4) { this->action = 3; this->actionDelay = 0xC; - this->direction = DirectionTurnVertical(this->field_0x3e); + this->direction = DirectionTurnAround(this->field_0x3e); InitAnimationForceUpdate(this, this->direction >> 3); } else if (this->bitfield == 0xCC) { if (this->field_0x43 == 0) { From a56b6a2041177a9031347858a5d69e285371b147 Mon Sep 17 00:00:00 2001 From: Behemoth Date: Thu, 3 Sep 2020 18:35:53 +0200 Subject: [PATCH 05/14] decompile moldworm --- asm/moldworm.s | 1523 -------------------- asm/non_matching/moldworm/moldworm.inc | 83 ++ asm/non_matching/moldworm/sub_080239F0.inc | 43 + asm/non_matching/moldworm/sub_08023B38.inc | 55 + data/animations/moldworm.s | 79 + data/data_080CBC38.s | 96 -- include/entity.h | 6 + linker.ld | 4 +- src/enemy/moldworm.c | 586 ++++++++ 9 files changed, 855 insertions(+), 1620 deletions(-) delete mode 100644 asm/moldworm.s create mode 100644 asm/non_matching/moldworm/moldworm.inc create mode 100644 asm/non_matching/moldworm/sub_080239F0.inc create mode 100644 asm/non_matching/moldworm/sub_08023B38.inc create mode 100644 data/animations/moldworm.s create mode 100644 src/enemy/moldworm.c diff --git a/asm/moldworm.s b/asm/moldworm.s deleted file mode 100644 index 18884dc8..00000000 --- a/asm/moldworm.s +++ /dev/null @@ -1,1523 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Moldworm -Moldworm: @ 0x08023038 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldrh r5, [r4, #0x2e] - ldrh r6, [r4, #0x32] - ldrb r1, [r4, #0xa] - cmp r1, #0 - bne _0802306C - ldrb r0, [r4, #0xc] - cmp r0, #0 - beq _08023052 - adds r0, r4, #0 - bl sub_0802390C -_08023052: - adds r0, r4, #0 - adds r0, #0x7c - ldrb r0, [r0] - adds r1, r4, #0 - adds r1, #0x7d - strb r0, [r1] - ldr r1, _08023068 @ =gUnk_080CBC38 - adds r0, r4, #0 - bl EnemyFunctionHandler - b _08023090 - .align 2, 0 -_08023068: .4byte gUnk_080CBC38 -_0802306C: - ldr r0, [r4, #0x50] - ldr r0, [r0, #4] - cmp r0, #0 - beq _08023088 - cmp r1, #8 - beq _08023080 - adds r0, r4, #0 - bl sub_080235BC - b _08023090 -_08023080: - adds r0, r4, #0 - bl sub_08023730 - b _08023090 -_08023088: - adds r0, r4, #0 - bl DeleteEntity - b _080230CA -_08023090: - ldr r0, [r4, #0x50] - adds r2, r0, #0 - adds r2, #0x7c - adds r0, #0x7d - ldrb r1, [r2] - ldrb r0, [r0] - cmp r1, r0 - beq _080230CA - ldr r1, [r4, #0x54] - cmp r1, #0 - beq _080230CA - ldrb r2, [r2] - subs r2, #1 - movs r0, #0xf - ands r2, r0 - adds r2, #0x78 - adds r2, r1, r2 - ldrh r1, [r4, #0x2e] - subs r1, r1, r5 - adds r1, #8 - movs r3, #0xf - ands r1, r3 - lsls r1, r1, #4 - ldrh r0, [r4, #0x32] - subs r0, r0, r6 - adds r0, #8 - ands r0, r3 - orrs r1, r0 - strb r1, [r2] -_080230CA: - pop {r4, r5, r6, pc} - - thumb_func_start sub_080230CC -sub_080230CC: @ 0x080230CC - push {lr} - ldr r2, _080230E0 @ =gUnk_080CBC50 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080230E0: .4byte gUnk_080CBC50 - - thumb_func_start sub_080230E4 -sub_080230E4: @ 0x080230E4 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xd] - cmp r0, #0xff - bne _08023132 - movs r2, #0 - movs r0, #7 - strb r0, [r5, #0xc] - movs r3, #1 - strb r3, [r5, #0xe] - strb r2, [r5, #0xd] - adds r1, r5, #0 - adds r1, #0x3f - movs r0, #0x85 - strb r0, [r1] - subs r1, #2 - movs r0, #0xf8 - strb r0, [r1] - adds r0, r5, #0 - adds r0, #0x7f - strb r2, [r0] - subs r0, #4 - strb r2, [r0] - subs r0, #0x3a - ldrb r0, [r0] - cmp r0, #0x80 - beq _0802311E - cmp r0, #0x9e - bne _08023128 -_0802311E: - strb r2, [r5, #0xb] - adds r1, r5, #0 - adds r1, #0x80 - movs r0, #0x14 - b _08023130 -_08023128: - strb r3, [r5, #0xb] - adds r1, r5, #0 - adds r1, #0x80 - movs r0, #8 -_08023130: - strb r0, [r1] -_08023132: - adds r0, r5, #0 - adds r0, #0x45 - ldrb r0, [r0] - cmp r0, #0 - bne _0802318A - adds r0, r5, #0 - adds r0, #0x7f - ldrb r0, [r0] - cmp r0, #0 - bne _0802318A - ldrb r0, [r5, #0xc] - cmp r0, #7 - bne _0802318A - ldr r4, _08023194 @ =gPlayerEntity - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - 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, #0xc0 - lsls r0, r0, #9 - str r0, [r4, #0x20] - movs r0, #0xff - strb r0, [r4, #0x15] - adds r4, #0x3d - movs r0, #0xec - strb r0, [r4] - ldr r2, _08023198 @ =gPlayerState - movs r0, #0x41 - strb r0, [r2, #2] - ldr r0, [r2, #0x30] - ldr r1, _0802319C @ =0xFFF7FFFF - ands r0, r1 - str r0, [r2, #0x30] -_0802318A: - ldr r1, _080231A0 @ =gUnk_080CBC38 - adds r0, r5, #0 - bl sub_0804AA30 - pop {r4, r5, pc} - .align 2, 0 -_08023194: .4byte gPlayerEntity -_08023198: .4byte gPlayerState -_0802319C: .4byte 0xFFF7FFFF -_080231A0: .4byte gUnk_080CBC38 - - thumb_func_start sub_080231A4 -sub_080231A4: @ 0x080231A4 - push {lr} - adds r2, r0, #0 - adds r2, #0x7c - ldrb r1, [r2] - adds r1, #1 - strb r1, [r2] - bl sub_08001324 - - thumb_func_start nullsub_134 -nullsub_134: @ 0x080231B4 - pop {pc} - .align 2, 0 - - thumb_func_start nullsub_135 -nullsub_135: @ 0x080231B8 - bx lr - .align 2, 0 - - thumb_func_start sub_080231BC -sub_080231BC: @ 0x080231BC - push {r4, r5, r6, lr} - adds r6, r0, #0 - ldr r0, _08023280 @ =gEntCount - ldrb r0, [r0] - cmp r0, #0x3f - bhi _0802327E - movs r0, #0xf - movs r1, #1 - bl CreateEnemy - adds r4, r0, #0 - str r4, [r6, #0x54] - str r6, [r4, #0x50] - movs r0, #0xf - movs r1, #2 - bl CreateEnemy - adds r5, r0, #0 - str r5, [r4, #0x54] - str r6, [r5, #0x50] - movs r0, #0xf - movs r1, #3 - bl CreateEnemy - adds r4, r0, #0 - str r4, [r5, #0x54] - str r6, [r4, #0x50] - movs r0, #0xf - movs r1, #4 - bl CreateEnemy - adds r5, r0, #0 - str r5, [r4, #0x54] - str r6, [r5, #0x50] - movs r0, #0xf - movs r1, #5 - bl CreateEnemy - adds r4, r0, #0 - str r4, [r5, #0x54] - str r6, [r4, #0x50] - movs r0, #0xf - movs r1, #6 - bl CreateEnemy - adds r5, r0, #0 - str r5, [r4, #0x54] - str r6, [r5, #0x50] - movs r0, #0xf - movs r1, #7 - bl CreateEnemy - adds r4, r0, #0 - str r4, [r5, #0x54] - str r6, [r4, #0x50] - movs r0, #0xf - movs r1, #8 - bl CreateEnemy - str r0, [r4, #0x54] - str r4, [r0, #0x74] - str r6, [r0, #0x50] - movs r1, #0 - str r1, [r0, #0x54] - adds r0, r6, #0 - bl sub_0804A720 - movs r0, #6 - strb r0, [r6, #0xc] - movs r1, #0x1e - strb r1, [r6, #0xe] - str r6, [r6, #0x50] - adds r0, r6, #0 - adds r0, #0x78 - strh r1, [r0] - ldrb r1, [r6, #0x1a] - movs r0, #0x10 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #5 - orrs r0, r1 - strb r0, [r6, #0x1a] - bl Random - movs r1, #0x1f - ands r0, r1 - strb r0, [r6, #0x15] - ldrb r0, [r6, #0x15] - adds r0, #2 - movs r1, #0x1c - ands r0, r1 - asrs r0, r0, #2 - strb r0, [r6, #0x14] - ldrb r1, [r6, #0x14] - adds r0, r6, #0 - bl InitializeAnimation -_0802327E: - pop {r4, r5, r6, pc} - .align 2, 0 -_08023280: .4byte gEntCount - - thumb_func_start nullsub_136 -nullsub_136: @ 0x08023284 - bx lr - .align 2, 0 - - thumb_func_start sub_08023288 -sub_08023288: @ 0x08023288 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - adds r7, r0, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - beq _08023324 - ldrb r1, [r7, #0xe] - adds r0, r1, #1 - strb r0, [r7, #0xe] - movs r0, #0xf - ands r0, r1 - cmp r0, #0 - bne _08023324 - bl Random - adds r4, r0, #0 - movs r0, #0x1e - ands r4, r0 - movs r0, #0 - mov r8, r0 - ldr r2, _08023308 @ =gPlayerEntity - mov sb, r2 - ldr r0, _0802330C @ =gUnk_080CBC70 - mov sl, r0 -_080232C2: - mov r2, sb - movs r0, #0x2e - ldrsh r1, [r2, r0] - mov r2, sl - adds r0, r4, r2 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r6, r1, r0 - mov r0, sb - movs r2, #0x32 - ldrsh r1, [r0, r2] - adds r0, r4, #1 - add r0, sl - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r5, r1, r0 - ldr r0, _08023310 @ =gUnk_03001198 - ldrb r2, [r0] - adds r0, r6, #0 - adds r1, r5, #0 - bl GetTileTypeByPos - bl sub_08023A38 - cmp r0, #0 - beq _08023314 - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r5, #0 - bl sub_08023990 - b _08023324 - .align 2, 0 -_08023308: .4byte gPlayerEntity -_0802330C: .4byte gUnk_080CBC70 -_08023310: .4byte gUnk_03001198 -_08023314: - adds r4, #2 - movs r0, #0x1e - ands r4, r0 - movs r2, #1 - add r8, r2 - mov r0, r8 - cmp r0, #0xf - bls _080232C2 -_08023324: - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_08023330 -sub_08023330: @ 0x08023330 - push {r4, r5, lr} - adds r5, r0, #0 - bl GetNextFrame - adds r0, r5, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08023394 - movs r0, #4 - strb r0, [r5, #0xc] - movs r0, #0x19 - strb r0, [r5, #0xe] - ldrb r1, [r5, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r5, #0x10] - adds r1, r5, #0 - adds r1, #0x78 - movs r4, #0 - movs r0, #0x96 - lsls r0, r0, #2 - strh r0, [r1] - bl Random - movs r1, #0x1c - ands r0, r1 - strb r0, [r5, #0x15] - lsrs r0, r0, #2 - strb r0, [r5, #0x14] - adds r0, r5, #0 - adds r0, #0x7b - strb r4, [r0] - adds r0, #4 - strb r4, [r0] - ldrb r1, [r5, #0x14] - adds r0, r5, #0 - bl sub_08023A88 - ldr r1, [r5, #0x54] - adds r0, r5, #0 - bl CopyPosition - adds r0, r5, #0 - movs r1, #4 - movs r2, #0 - bl CreateFx -_08023394: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08023398 -sub_08023398: @ 0x08023398 - push {r4, r5, r6, lr} - adds r5, r0, #0 - adds r0, #0x7c - ldrb r1, [r0] - adds r1, #1 - strb r1, [r0] - adds r0, #3 - ldrb r0, [r0] - cmp r0, #0 - beq _080233C0 - adds r0, r5, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - bne _080233C0 - adds r1, r5, #0 - adds r1, #0x78 - movs r0, #1 - strh r0, [r1] -_080233C0: - adds r4, r5, #0 - adds r4, #0x78 - ldrh r0, [r4] - subs r0, #1 - strh r0, [r4] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _08023416 - adds r0, r5, #0 - bl GetTileTypeByEntity - bl sub_08023A38 - cmp r0, #0 - beq _08023412 - movs r0, #5 - strb r0, [r5, #0xc] - adds r1, r5, #0 - adds r1, #0x7f - movs r0, #0 - strb r0, [r1] - ldrb r1, [r5, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r5, #0x10] - adds r1, r5, #0 - adds r1, #0x3f - movs r0, #0x85 - strb r0, [r1] - ldr r1, [r5, #0x54] - movs r0, #1 - strb r0, [r1, #0xe] - adds r0, r5, #0 - bl sub_08023A68 - adds r0, r5, #0 - movs r1, #4 - movs r2, #0 - bl CreateFx - b _0802349C -_08023412: - movs r0, #0x28 - strh r0, [r4] -_08023416: - adds r0, r5, #0 - adds r0, #0x7f - ldrb r0, [r0] - cmp r0, #0 - beq _08023426 - adds r0, r5, #0 - bl sub_08023AB0 -_08023426: - ldrb r0, [r5, #0xe] - subs r1, r0, #1 - strb r1, [r5, #0xe] - lsls r0, r1, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #2 - bhi _08023440 - lsls r0, r1, #0x18 - cmp r0, #0 - bne _0802349C - movs r0, #0x19 - strb r0, [r5, #0xe] - b _0802349C -_08023440: - ldr r4, [r5, #0x2c] - ldr r6, [r5, #0x30] - adds r0, r5, #0 - bl ProcessMovement - ldr r0, [r5, #0x2c] - cmp r0, r4 - bne _08023460 - ldr r0, [r5, #0x30] - cmp r0, r6 - bne _08023460 - adds r1, r5, #0 - adds r1, #0x7c - ldrb r0, [r1] - subs r0, #1 - strb r0, [r1] -_08023460: - ldr r0, _080234A0 @ =gScreenTransition - ldr r0, [r0] - movs r1, #7 - ands r0, r1 - cmp r0, #0 - bne _0802349C - adds r0, r5, #0 - movs r1, #1 - bl sub_08049F84 - adds r1, r0, #0 - adds r0, r5, #0 - bl sub_08004596 - ldrb r0, [r5, #0x15] - adds r0, #2 - movs r1, #0x1c - ands r0, r1 - asrs r0, r0, #2 - ldrb r1, [r5, #0x14] - cmp r0, r1 - beq _0802349C - strb r0, [r5, #0x14] - adds r1, r5, #0 - adds r1, #0x7b - ldrb r1, [r1] - adds r1, r0, r1 - adds r0, r5, #0 - bl InitializeAnimation -_0802349C: - pop {r4, r5, r6, pc} - .align 2, 0 -_080234A0: .4byte gScreenTransition - - thumb_func_start sub_080234A4 -sub_080234A4: @ 0x080234A4 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x7c - ldrb r1, [r0] - adds r1, #1 - strb r1, [r0] - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - adds r0, #0x7f - ldrb r0, [r0] - cmp r0, #0 - beq _080234D6 - movs r0, #6 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #0xa - ands r0, r1 - strb r0, [r4, #0x18] - adds r1, r4, #0 - adds r1, #0x78 - movs r0, #0x96 - lsls r0, r0, #1 - strh r0, [r1] -_080234D6: - pop {r4, pc} - - thumb_func_start sub_080234D8 -sub_080234D8: @ 0x080234D8 - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x78 - ldrh r0, [r1] - subs r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - cmp r0, #0 - bne _0802351A - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x1a] - subs r0, #0x12 - ands r0, r1 - movs r1, #5 - orrs r0, r1 - strb r0, [r4, #0x1a] - bl Random - movs r1, #0x1f - ands r0, r1 - strb r0, [r4, #0x15] - ldrb r0, [r4, #0x15] - adds r0, #2 - movs r1, #0x1c - ands r0, r1 - asrs r0, r0, #2 - strb r0, [r4, #0x14] - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl sub_08023A88 -_0802351A: - pop {r4, pc} - - thumb_func_start sub_0802351C -sub_0802351C: @ 0x0802351C - push {r4, r5, r6, r7, lr} - adds r7, r0, #0 - ldrb r0, [r7, #0xe] - cmp r0, #0 - beq _0802355A - ldrb r0, [r7, #0xb] - cmp r0, #1 - beq _08023534 - ldr r0, _080235A8 @ =gPlayerEntity - ldrb r0, [r0, #0x1e] - cmp r0, #0xff - bne _0802355A -_08023534: - movs r0, #0 - strb r0, [r7, #0xe] - ldr r1, [r7, #0x54] - movs r0, #3 - strb r0, [r1, #0xc] - ldr r1, [r7, #0x54] - adds r0, r7, #0 - adds r0, #0x80 - ldrb r0, [r0] - strb r0, [r1, #0xf] - ldr r0, [r7, #0x54] - ldrb r1, [r0, #0x14] - adds r1, #1 - bl InitializeAnimation - ldrb r1, [r7, #0x14] - adds r0, r7, #0 - bl InitializeAnimation -_0802355A: - adds r0, r7, #0 - adds r0, #0x7f - ldrb r0, [r0] - cmp r0, #0 - bne _080235B4 - ldrb r0, [r7, #0xb] - cmp r0, #0 - bne _080235B8 - ldr r5, _080235A8 @ =gPlayerEntity - ldrb r0, [r7, #0x14] - movs r4, #7 - adds r2, r4, #0 - ands r2, r0 - strb r2, [r5, #0x14] - ldr r3, _080235AC @ =gPlayerState - ldr r0, [r3, #0x30] - movs r1, #0x80 - lsls r1, r1, #0xc - orrs r0, r1 - str r0, [r3, #0x30] - ldr r6, _080235B0 @ =gUnk_080CBC90 - adds r2, r2, r6 - movs r3, #0 - ldrsb r3, [r2, r3] - lsls r3, r3, #0x10 - adds r0, r7, #0 - adds r1, r5, #0 - movs r2, #0 - bl PositionRelative - ldrb r0, [r7, #0x14] - ands r4, r0 - adds r4, r4, r6 - ldrb r0, [r4] - rsbs r0, r0, #0 - adds r5, #0x63 - strb r0, [r5] - b _080235B8 - .align 2, 0 -_080235A8: .4byte gPlayerEntity -_080235AC: .4byte gPlayerState -_080235B0: .4byte gUnk_080CBC90 -_080235B4: - movs r0, #4 - strb r0, [r7, #0xc] -_080235B8: - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_080235BC -sub_080235BC: @ 0x080235BC - push {lr} - ldr r2, _080235D0 @ =gUnk_080CBC98 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_080235D0: .4byte gUnk_080CBC98 - - thumb_func_start sub_080235D4 -sub_080235D4: @ 0x080235D4 - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xc] - ldr r1, [r4, #0x50] - ldrh r0, [r1, #0x2e] - strh r0, [r4, #0x2e] - ldrh r0, [r1, #0x32] - strh r0, [r4, #0x32] - adds r0, r4, #0 - bl sub_080239F0 - ldrb r0, [r4, #0xa] - cmp r0, #1 - bne _080235F6 - movs r0, #0x10 - b _080235F8 -_080235F6: - movs r0, #0x12 -_080235F8: - strb r0, [r4, #0x14] - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl InitializeAnimation - pop {r4, pc} - - thumb_func_start sub_08023604 -sub_08023604: @ 0x08023604 - push {lr} - adds r2, r0, #0 - ldr r0, [r2, #0x50] - adds r0, #0x7c - ldrb r1, [r0] - movs r0, #0xf - ands r0, r1 - adds r0, r0, r2 - adds r0, #0x78 - ldrb r0, [r0] - cmp r0, #0x88 - beq _08023640 - movs r1, #0 - movs r0, #2 - strb r0, [r2, #0xc] - strb r1, [r2, #0xe] - ldrb r1, [r2, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r2, #0x10] - ldrb r1, [r2, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r2, #0x18] - adds r0, r2, #0 - bl sub_08023644 -_08023640: - pop {pc} - .align 2, 0 - - thumb_func_start sub_08023644 -sub_08023644: @ 0x08023644 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x50] - adds r0, r5, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #0x17 - bne _08023692 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _08023692 - movs r0, #0x2e - ldrsh r1, [r4, r0] - movs r2, #0x2e - ldrsh r0, [r5, r2] - cmp r1, r0 - bne _08023692 - movs r6, #0x32 - ldrsh r1, [r4, r6] - movs r2, #0x32 - ldrsh r0, [r5, r2] - cmp r1, r0 - bne _08023692 - movs r2, #1 - strb r2, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - ldr r0, [r4, #0x54] - strb r2, [r0, #0xe] - adds r0, r4, #0 - bl sub_080239F0 -_08023692: - adds r0, r5, #0 - adds r0, #0x7c - adds r1, r5, #0 - adds r1, #0x7d - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - beq _080236F2 - movs r2, #0xf - adds r1, r2, #0 - ands r1, r0 - adds r1, #0x78 - adds r1, r4, r1 - ldrb r0, [r1] - lsrs r0, r0, #4 - ldr r3, _080236F4 @ =0x0000FFF8 - adds r0, r0, r3 - ldrh r6, [r4, #0x2e] - adds r0, r0, r6 - strh r0, [r4, #0x2e] - ldrb r0, [r1] - ands r2, r0 - adds r2, r2, r3 - ldrh r0, [r4, #0x32] - adds r2, r2, r0 - strh r2, [r4, #0x32] - ldrb r2, [r5, #0x1b] - lsrs r2, r2, #6 - lsls r2, r2, #6 - ldrb r3, [r4, #0x1b] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r3 - orrs r0, r2 - strb r0, [r4, #0x1b] - ldrb r0, [r5, #0x19] - lsrs r0, r0, #6 - lsls r0, r0, #6 - ldrb r2, [r4, #0x19] - ands r1, r2 - orrs r1, r0 - strb r1, [r4, #0x19] - adds r0, r5, #0 - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r4, #0 - adds r0, #0x38 - strb r1, [r0] -_080236F2: - pop {r4, r5, r6, pc} - .align 2, 0 -_080236F4: .4byte 0x0000FFF8 - - thumb_func_start sub_080236F8 -sub_080236F8: @ 0x080236F8 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802372E - movs r0, #2 - strb r0, [r4, #0xc] - ldr r1, [r4, #0x54] - movs r0, #3 - strb r0, [r1, #0xc] - ldr r1, [r4, #0x54] - ldr r0, [r4, #0x50] - adds r0, #0x80 - ldrb r0, [r0] - strb r0, [r1, #0xf] - ldr r0, [r4, #0x54] - ldrb r1, [r0, #0x14] - adds r1, #1 - bl InitializeAnimation - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl InitializeAnimation -_0802372E: - pop {r4, pc} - - thumb_func_start sub_08023730 -sub_08023730: @ 0x08023730 - push {lr} - ldr r2, _08023744 @ =gUnk_080CBCA8 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08023744: .4byte gUnk_080CBCA8 - - thumb_func_start sub_08023748 -sub_08023748: @ 0x08023748 - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xc] - movs r0, #0x14 - strb r0, [r4, #0x14] - ldr r1, [r4, #0x50] - ldrh r0, [r1, #0x2e] - strh r0, [r4, #0x2e] - ldrh r0, [r1, #0x32] - strh r0, [r4, #0x32] - adds r0, r4, #0 - bl sub_080239F0 - adds r0, r4, #0 - bl sub_08023A68 - pop {r4, pc} - - thumb_func_start sub_0802376C -sub_0802376C: @ 0x0802376C - push {r4, r5, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x50] - ldrb r0, [r5, #0x18] - lsls r0, r0, #0x1e - lsrs r0, r0, #0x1e - cmp r0, #1 - bne _0802379A - adds r0, r5, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #0xf - bhi _0802379A - ldrb r0, [r4, #0x18] - movs r1, #4 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #1 - orrs r1, r0 - strb r1, [r4, #0x18] - adds r0, r4, #0 - bl GetNextFrame -_0802379A: - adds r0, r5, #0 - adds r0, #0x7c - ldrb r1, [r0] - movs r0, #0xf - ands r0, r1 - adds r0, r0, r4 - adds r0, #0x78 - ldrb r0, [r0] - cmp r0, #0x88 - beq _080237D4 - movs r1, #0 - movs r0, #2 - strb r0, [r4, #0xc] - strb r1, [r4, #0xe] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - ldr r0, [r4, #0x50] - adds r0, #0x7f - movs r1, #1 - strb r1, [r0] - adds r0, r4, #0 - movs r1, #0x14 - bl sub_08023A88 - adds r0, r4, #0 - bl sub_080237D8 -_080237D4: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080237D8 -sub_080237D8: @ 0x080237D8 - push {r4, r5, r6, lr} - adds r4, r0, #0 - ldr r5, [r4, #0x50] - adds r0, r5, #0 - adds r0, #0x58 - ldrb r0, [r0] - cmp r0, #0x17 - bne _0802382E - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0802382E - movs r0, #0x2e - ldrsh r1, [r4, r0] - movs r2, #0x2e - ldrsh r0, [r5, r2] - cmp r1, r0 - bne _0802382E - movs r6, #0x32 - ldrsh r1, [r4, r6] - movs r2, #0x32 - ldrsh r0, [r5, r2] - cmp r1, r0 - bne _0802382E - movs r2, #1 - strb r2, [r4, #0xc] - ldrb r1, [r4, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4, #0x10] - ldrb r1, [r4, #0x18] - movs r0, #4 - rsbs r0, r0, #0 - ands r0, r1 - strb r0, [r4, #0x18] - adds r0, r5, #0 - adds r0, #0x7f - strb r2, [r0] - adds r0, r4, #0 - bl sub_080239F0 - adds r0, r4, #0 - bl sub_08023A68 -_0802382E: - adds r0, r5, #0 - adds r0, #0x7c - adds r1, r5, #0 - adds r1, #0x7d - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - beq _0802388E - movs r2, #0xf - adds r1, r2, #0 - ands r1, r0 - adds r1, #0x78 - adds r1, r4, r1 - ldrb r0, [r1] - lsrs r0, r0, #4 - ldr r3, _08023890 @ =0x0000FFF8 - adds r0, r0, r3 - ldrh r6, [r4, #0x2e] - adds r0, r0, r6 - strh r0, [r4, #0x2e] - ldrb r0, [r1] - ands r2, r0 - adds r2, r2, r3 - ldrh r0, [r4, #0x32] - adds r2, r2, r0 - strh r2, [r4, #0x32] - ldrb r2, [r5, #0x1b] - lsrs r2, r2, #6 - lsls r2, r2, #6 - ldrb r3, [r4, #0x1b] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r3 - orrs r0, r2 - strb r0, [r4, #0x1b] - ldrb r0, [r5, #0x19] - lsrs r0, r0, #6 - lsls r0, r0, #6 - ldrb r2, [r4, #0x19] - ands r1, r2 - orrs r1, r0 - strb r1, [r4, #0x19] - adds r0, r5, #0 - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r4, #0 - adds r0, #0x38 - strb r1, [r0] -_0802388E: - pop {r4, r5, r6, pc} - .align 2, 0 -_08023890: .4byte 0x0000FFF8 - - thumb_func_start sub_08023894 -sub_08023894: @ 0x08023894 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xf] - subs r0, #1 - strb r0, [r5, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08023900 - movs r0, #2 - strb r0, [r5, #0xc] - ldr r0, [r5, #0x50] - adds r0, #0x7f - movs r1, #1 - strb r1, [r0] - ldrb r1, [r5, #0x14] - adds r0, r5, #0 - bl InitializeAnimation - ldr r0, [r5, #0x50] - ldrb r0, [r0, #0xb] - cmp r0, #0 - bne _08023900 - ldr r2, _08023904 @ =gPlayerState - ldr r0, [r2, #0x30] - movs r1, #0x80 - lsls r1, r1, #0xe - orrs r0, r1 - str r0, [r2, #0x30] - ldr r4, _08023908 @ =gPlayerEntity - ldrh r0, [r5, #0x2e] - strh r0, [r4, #0x2e] - ldrh r0, [r5, #0x32] - strh r0, [r4, #0x32] - ldr r0, [r5, #0x74] - adds r1, r5, #0 - bl GetFacingDirection - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] - lsrs r0, r0, #2 - strb r0, [r4, #0x14] - adds r1, r4, #0 - adds r1, #0x3d - movs r0, #0xc - strb r0, [r1] - subs r0, #0x1c - bl ModHealth - adds r0, r4, #0 - movs r1, #0x7a - bl sub_0800449C -_08023900: - pop {r4, r5, pc} - .align 2, 0 -_08023904: .4byte gPlayerState -_08023908: .4byte gPlayerEntity - - thumb_func_start sub_0802390C -sub_0802390C: @ 0x0802390C - push {r4, r5, lr} - adds r5, r0, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08023932 - ldr r2, [r5, #0x54] - adds r3, r5, #0 - adds r3, #0x3d -_08023922: - ldrb r0, [r3] - adds r1, r2, #0 - adds r1, #0x3d - strb r0, [r1] - ldr r2, [r2, #0x54] - cmp r2, #0 - bne _08023922 - b _0802398C -_08023932: - ldr r2, [r5, #0x54] - b _0802393C -_08023936: - ldr r2, [r2, #0x54] - cmp r2, #0 - beq _0802398C -_0802393C: - adds r0, r2, #0 - adds r0, #0x41 - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08023936 - movs r0, #0x45 - adds r0, r0, r2 - mov ip, r0 - ldrb r1, [r0] - movs r4, #0xff - subs r0, r4, r1 - lsls r0, r0, #0x18 - lsrs r3, r0, #0x18 - cmp r3, #0 - beq _08023936 - adds r0, r1, #0 - orrs r0, r4 - mov r1, ip - strb r0, [r1] - adds r0, r2, #0 - adds r0, #0x3d - ldrb r4, [r0] - adds r1, r5, #0 - adds r1, #0x45 - ldrb r0, [r1] - cmp r0, r3 - blo _0802397A - subs r0, r0, r3 - b _0802397C -_0802397A: - movs r0, #0 -_0802397C: - strb r0, [r1] - adds r2, r5, #0 -_08023980: - adds r0, r2, #0 - adds r0, #0x3d - strb r4, [r0] - ldr r2, [r2, #0x54] - cmp r2, #0 - bne _08023980 -_0802398C: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08023990 -sub_08023990: @ 0x08023990 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #3 - strb r0, [r5, #0xc] - ldrb r3, [r5, #0x18] - subs r0, #7 - ands r0, r3 - movs r3, #1 - orrs r0, r3 - strb r0, [r5, #0x18] - movs r0, #0x55 - strb r0, [r5, #0x1a] - adds r4, r5, #0 - adds r4, #0x29 - ldrb r0, [r4] - movs r3, #7 - orrs r0, r3 - strb r0, [r4] - strh r1, [r5, #0x2e] - strh r2, [r5, #0x32] - ldr r0, _080239EC @ =gPlayerEntity - adds r0, #0x38 - ldrb r1, [r0] - adds r0, r5, #0 - adds r0, #0x38 - strb r1, [r0] - adds r0, r5, #0 - bl UpdateSpriteForCollisionLayer - adds r0, r5, #0 - movs r1, #0x16 - bl InitializeAnimation - ldr r4, [r5, #0x54] -_080239D4: - adds r0, r4, #0 - bl sub_080239F0 - adds r0, r5, #0 - adds r1, r4, #0 - bl CopyPosition - ldr r4, [r4, #0x54] - cmp r4, #0 - bne _080239D4 - pop {r4, r5, pc} - .align 2, 0 -_080239EC: .4byte gPlayerEntity - - thumb_func_start sub_080239F0 -sub_080239F0: @ 0x080239F0 - adds r2, r0, #0 - adds r1, r2, #0 - adds r1, #0x78 - movs r0, #0x88 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - bx lr - - thumb_func_start sub_08023A38 -sub_08023A38: @ 0x08023A38 - push {lr} - adds r1, r0, #0 - cmp r1, #0x1a - beq _08023A5A - cmp r1, #0x29 - beq _08023A5A - ldr r0, _08023A60 @ =gUnk_080B37A0 - adds r0, r1, r0 - ldrb r1, [r0] - cmp r1, #9 - beq _08023A5A - cmp r1, #0xb - beq _08023A5A - cmp r1, #0xa - beq _08023A5A - cmp r1, #0xc - bne _08023A64 -_08023A5A: - movs r0, #1 - b _08023A66 - .align 2, 0 -_08023A60: .4byte gUnk_080B37A0 -_08023A64: - movs r0, #0 -_08023A66: - pop {pc} - - thumb_func_start sub_08023A68 -sub_08023A68: @ 0x08023A68 - push {r4, lr} - adds r4, r0, #0 - movs r1, #5 - bl sub_0801D2B4 - adds r2, r4, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #7 - orrs r0, r1 - strb r0, [r2] - adds r0, r4, #0 - movs r1, #0x17 - bl InitializeAnimation - pop {r4, pc} - - thumb_func_start sub_08023A88 -sub_08023A88: @ 0x08023A88 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - movs r1, #0x22 - bl sub_0801D2B4 - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - movs r0, #8 - rsbs r0, r0, #0 - ands r0, r1 - movs r1, #4 - orrs r0, r1 - strb r0, [r2] - adds r0, r4, #0 - adds r1, r5, #0 - bl InitializeAnimation - pop {r4, r5, pc} - - thumb_func_start sub_08023AB0 -sub_08023AB0: @ 0x08023AB0 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r7, r4, #0 - adds r7, #0x7b - ldrb r0, [r7] - cmp r0, #8 - bne _08023AF6 - adds r5, r4, #0 - adds r5, #0x7e - ldrb r0, [r5] - adds r6, r0, #0 - cmp r6, #0 - bne _08023B00 - adds r0, r4, #0 - bl sub_08023B38 - cmp r0, #0 - beq _08023ADE - adds r0, r4, #0 - adds r0, #0x78 - ldrh r0, [r0] - cmp r0, #0x1d - bhi _08023B34 -_08023ADE: - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x85 - strb r0, [r1] - strb r6, [r7] - movs r0, #0x1e - strb r0, [r5] - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl InitializeAnimation - b _08023B34 -_08023AF6: - adds r5, r4, #0 - adds r5, #0x7e - ldrb r0, [r5] - cmp r0, #0 - beq _08023B06 -_08023B00: - subs r0, #1 - strb r0, [r5] - b _08023B34 -_08023B06: - adds r0, r4, #0 - adds r0, #0x78 - ldrh r0, [r0] - cmp r0, #0x59 - bls _08023B34 - adds r0, r4, #0 - bl sub_08023B38 - cmp r0, #0 - beq _08023B34 - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x87 - strb r0, [r1] - movs r0, #8 - strb r0, [r7] - movs r0, #0xa - strb r0, [r5] - ldrb r1, [r4, #0x14] - adds r1, #8 - adds r0, r4, #0 - bl InitializeAnimation -_08023B34: - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_08023B38 -sub_08023B38: @ 0x08023B38 - push {r4, r5, r6, lr} - adds r4, r0, #0 - movs r0, #1 - bl sub_08049DF4 - adds r5, r0, #0 - cmp r5, #0 - bne _08023B4C - movs r0, #0 - b _08023B8E -_08023B4C: - movs r0, #0x2e - ldrsh r2, [r4, r0] - ldr r3, _08023B90 @ =gUnk_080CBCB8 - ldrb r0, [r4, #0x14] - lsls r0, r0, #1 - adds r1, r0, r3 - ldrb r1, [r1] - lsls r1, r1, #0x18 - asrs r1, r1, #0x18 - adds r2, r2, r1 - movs r6, #0x32 - ldrsh r1, [r4, r6] - adds r0, #1 - adds r0, r0, r3 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r1, r1, r0 - movs r3, #0 - movs r4, #0x2e - ldrsh r0, [r5, r4] - subs r0, r0, r2 - adds r0, #0x14 - cmp r0, #0x28 - bhi _08023B8C - movs r6, #0x32 - ldrsh r0, [r5, r6] - subs r0, r0, r1 - adds r0, #0x14 - cmp r0, #0x28 - bhi _08023B8C - movs r3, #1 -_08023B8C: - adds r0, r3, #0 -_08023B8E: - pop {r4, r5, r6, pc} - .align 2, 0 -_08023B90: .4byte gUnk_080CBCB8 diff --git a/asm/non_matching/moldworm/moldworm.inc b/asm/non_matching/moldworm/moldworm.inc new file mode 100644 index 00000000..8f9c5c64 --- /dev/null +++ b/asm/non_matching/moldworm/moldworm.inc @@ -0,0 +1,83 @@ + + .syntax unified + + .text + + + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrh r5, [r4, #0x2e] + ldrh r6, [r4, #0x32] + ldrb r1, [r4, #0xa] + cmp r1, #0 + bne _0802306C + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _08023052 + adds r0, r4, #0 + bl sub_0802390C +_08023052: + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x7d + strb r0, [r1] + ldr r1, _08023068 @ =gUnk_080CBC38 + adds r0, r4, #0 + bl EnemyFunctionHandler + b _08023090 + .align 2, 0 +_08023068: .4byte gUnk_080CBC38 +_0802306C: + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + beq _08023088 + cmp r1, #8 + beq _08023080 + adds r0, r4, #0 + bl sub_080235BC + b _08023090 +_08023080: + adds r0, r4, #0 + bl sub_08023730 + b _08023090 +_08023088: + adds r0, r4, #0 + bl DeleteEntity + b _080230CA +_08023090: + ldr r0, [r4, #0x50] + adds r2, r0, #0 + adds r2, #0x7c + adds r0, #0x7d + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + beq _080230CA + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _080230CA + ldrb r2, [r2] + subs r2, #1 + movs r0, #0xf + ands r2, r0 + adds r2, #0x78 + adds r2, r1, r2 + ldrh r1, [r4, #0x2e] + subs r1, r1, r5 + adds r1, #8 + movs r3, #0xf + ands r1, r3 + lsls r1, r1, #4 + ldrh r0, [r4, #0x32] + subs r0, r0, r6 + adds r0, #8 + ands r0, r3 + orrs r1, r0 + strb r1, [r2] +_080230CA: + pop {r4, r5, r6, pc} + + .syntax divided diff --git a/asm/non_matching/moldworm/sub_080239F0.inc b/asm/non_matching/moldworm/sub_080239F0.inc new file mode 100644 index 00000000..93034e9e --- /dev/null +++ b/asm/non_matching/moldworm/sub_080239F0.inc @@ -0,0 +1,43 @@ + + .syntax unified + + .text + + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x78 + movs r0, #0x88 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + bx lr + + .syntax divided diff --git a/asm/non_matching/moldworm/sub_08023B38.inc b/asm/non_matching/moldworm/sub_08023B38.inc new file mode 100644 index 00000000..98faa12a --- /dev/null +++ b/asm/non_matching/moldworm/sub_08023B38.inc @@ -0,0 +1,55 @@ + + .syntax unified + + .text + + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_08049DF4 + adds r5, r0, #0 + cmp r5, #0 + bne _08023B4C + movs r0, #0 + b _08023B8E +_08023B4C: + movs r0, #0x2e + ldrsh r2, [r4, r0] + ldr r3, _08023B90 @ =gUnk_080CBCB8 + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + adds r1, r0, r3 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r2, r2, r1 + movs r6, #0x32 + ldrsh r1, [r4, r6] + adds r0, #1 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r1, r1, r0 + movs r3, #0 + movs r4, #0x2e + ldrsh r0, [r5, r4] + subs r0, r0, r2 + adds r0, #0x14 + cmp r0, #0x28 + bhi _08023B8C + movs r6, #0x32 + ldrsh r0, [r5, r6] + subs r0, r0, r1 + adds r0, #0x14 + cmp r0, #0x28 + bhi _08023B8C + movs r3, #1 +_08023B8C: + adds r0, r3, #0 +_08023B8E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08023B90: .4byte gUnk_080CBCB8 + + .syntax divided diff --git a/data/animations/moldworm.s b/data/animations/moldworm.s new file mode 100644 index 00000000..717039d5 --- /dev/null +++ b/data/animations/moldworm.s @@ -0,0 +1,79 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CBCC8:: @ 080CBCC8 + .incbin "baserom.gba", 0x0CBCC8, 0x0000004 + +gUnk_080CBCCC:: @ 080CBCCC + .incbin "baserom.gba", 0x0CBCCC, 0x0000004 + +gUnk_080CBCD0:: @ 080CBCD0 + .incbin "baserom.gba", 0x0CBCD0, 0x0000004 + +gUnk_080CBCD4:: @ 080CBCD4 + .incbin "baserom.gba", 0x0CBCD4, 0x0000004 + +gUnk_080CBCD8:: @ 080CBCD8 + .incbin "baserom.gba", 0x0CBCD8, 0x0000004 + +gUnk_080CBCDC:: @ 080CBCDC + .incbin "baserom.gba", 0x0CBCDC, 0x0000004 + +gUnk_080CBCE0:: @ 080CBCE0 + .incbin "baserom.gba", 0x0CBCE0, 0x0000004 + +gUnk_080CBCE4:: @ 080CBCE4 + .incbin "baserom.gba", 0x0CBCE4, 0x0000004 + +gUnk_080CBCE8:: @ 080CBCE8 + .incbin "baserom.gba", 0x0CBCE8, 0x0000004 + +gUnk_080CBCEC:: @ 080CBCEC + .incbin "baserom.gba", 0x0CBCEC, 0x0000004 + +gUnk_080CBCF0:: @ 080CBCF0 + .incbin "baserom.gba", 0x0CBCF0, 0x0000004 + +gUnk_080CBCF4:: @ 080CBCF4 + .incbin "baserom.gba", 0x0CBCF4, 0x0000004 + +gUnk_080CBCF8:: @ 080CBCF8 + .incbin "baserom.gba", 0x0CBCF8, 0x0000004 + +gUnk_080CBCFC:: @ 080CBCFC + .incbin "baserom.gba", 0x0CBCFC, 0x0000004 + +gUnk_080CBD00:: @ 080CBD00 + .incbin "baserom.gba", 0x0CBD00, 0x0000004 + +gUnk_080CBD04:: @ 080CBD04 + .incbin "baserom.gba", 0x0CBD04, 0x0000004 + +gUnk_080CBD08:: @ 080CBD08 + .incbin "baserom.gba", 0x0CBD08, 0x0000004 + +gUnk_080CBD0C:: @ 080CBD0C + .incbin "baserom.gba", 0x0CBD0C, 0x0000004 + +gUnk_080CBD10:: @ 080CBD10 + .incbin "baserom.gba", 0x0CBD10, 0x0000004 + +gUnk_080CBD14:: @ 080CBD14 + .incbin "baserom.gba", 0x0CBD14, 0x0000004 + +gUnk_080CBD18:: @ 080CBD18 + .incbin "baserom.gba", 0x0CBD18, 0x0000004 + +gUnk_080CBD1C:: @ 080CBD1C + .incbin "baserom.gba", 0x0CBD1C, 0x0000004 + +gUnk_080CBD20:: @ 080CBD20 + .incbin "baserom.gba", 0x0CBD20, 0x000002C + +gUnk_080CBD4C:: @ 080CBD4C + .incbin "baserom.gba", 0x0CBD4C, 0x000000C + +gUnk_080CBD58:: @ 080CBD58 + .incbin "baserom.gba", 0x0CBD58, 0x0000064 diff --git a/data/data_080CBC38.s b/data/data_080CBC38.s index 6c805bb0..d32b4131 100644 --- a/data/data_080CBC38.s +++ b/data/data_080CBC38.s @@ -3,102 +3,6 @@ .section .rodata -gUnk_080CBC38:: @ 080CBC38 - .incbin "baserom.gba", 0x0CBC38, 0x0000018 - -gUnk_080CBC50:: @ 080CBC50 - .incbin "baserom.gba", 0x0CBC50, 0x0000020 - -gUnk_080CBC70:: @ 080CBC70 - .incbin "baserom.gba", 0x0CBC70, 0x0000020 - -gUnk_080CBC90:: @ 080CBC90 - .incbin "baserom.gba", 0x0CBC90, 0x0000008 - -gUnk_080CBC98:: @ 080CBC98 - .incbin "baserom.gba", 0x0CBC98, 0x0000010 - -gUnk_080CBCA8:: @ 080CBCA8 - .incbin "baserom.gba", 0x0CBCA8, 0x0000010 - -gUnk_080CBCB8:: @ 080CBCB8 - .incbin "baserom.gba", 0x0CBCB8, 0x0000010 - -gUnk_080CBCC8:: @ 080CBCC8 - .incbin "baserom.gba", 0x0CBCC8, 0x0000004 - -gUnk_080CBCCC:: @ 080CBCCC - .incbin "baserom.gba", 0x0CBCCC, 0x0000004 - -gUnk_080CBCD0:: @ 080CBCD0 - .incbin "baserom.gba", 0x0CBCD0, 0x0000004 - -gUnk_080CBCD4:: @ 080CBCD4 - .incbin "baserom.gba", 0x0CBCD4, 0x0000004 - -gUnk_080CBCD8:: @ 080CBCD8 - .incbin "baserom.gba", 0x0CBCD8, 0x0000004 - -gUnk_080CBCDC:: @ 080CBCDC - .incbin "baserom.gba", 0x0CBCDC, 0x0000004 - -gUnk_080CBCE0:: @ 080CBCE0 - .incbin "baserom.gba", 0x0CBCE0, 0x0000004 - -gUnk_080CBCE4:: @ 080CBCE4 - .incbin "baserom.gba", 0x0CBCE4, 0x0000004 - -gUnk_080CBCE8:: @ 080CBCE8 - .incbin "baserom.gba", 0x0CBCE8, 0x0000004 - -gUnk_080CBCEC:: @ 080CBCEC - .incbin "baserom.gba", 0x0CBCEC, 0x0000004 - -gUnk_080CBCF0:: @ 080CBCF0 - .incbin "baserom.gba", 0x0CBCF0, 0x0000004 - -gUnk_080CBCF4:: @ 080CBCF4 - .incbin "baserom.gba", 0x0CBCF4, 0x0000004 - -gUnk_080CBCF8:: @ 080CBCF8 - .incbin "baserom.gba", 0x0CBCF8, 0x0000004 - -gUnk_080CBCFC:: @ 080CBCFC - .incbin "baserom.gba", 0x0CBCFC, 0x0000004 - -gUnk_080CBD00:: @ 080CBD00 - .incbin "baserom.gba", 0x0CBD00, 0x0000004 - -gUnk_080CBD04:: @ 080CBD04 - .incbin "baserom.gba", 0x0CBD04, 0x0000004 - -gUnk_080CBD08:: @ 080CBD08 - .incbin "baserom.gba", 0x0CBD08, 0x0000004 - -gUnk_080CBD0C:: @ 080CBD0C - .incbin "baserom.gba", 0x0CBD0C, 0x0000004 - -gUnk_080CBD10:: @ 080CBD10 - .incbin "baserom.gba", 0x0CBD10, 0x0000004 - -gUnk_080CBD14:: @ 080CBD14 - .incbin "baserom.gba", 0x0CBD14, 0x0000004 - -gUnk_080CBD18:: @ 080CBD18 - .incbin "baserom.gba", 0x0CBD18, 0x0000004 - -gUnk_080CBD1C:: @ 080CBD1C - .incbin "baserom.gba", 0x0CBD1C, 0x0000004 - -gUnk_080CBD20:: @ 080CBD20 - .incbin "baserom.gba", 0x0CBD20, 0x000002C - -gUnk_080CBD4C:: @ 080CBD4C - .incbin "baserom.gba", 0x0CBD4C, 0x000000C - -gUnk_080CBD58:: @ 080CBD58 - .incbin "baserom.gba", 0x0CBD58, 0x0000064 - gUnk_080CBDBC:: @ 080CBDBC .incbin "baserom.gba", 0x0CBDBC, 0x0000018 diff --git a/include/entity.h b/include/entity.h index dc269c33..477889f4 100644 --- a/include/entity.h +++ b/include/entity.h @@ -177,6 +177,12 @@ extern void PositionRelative(Entity*, Entity*, s32, s32); #define DirectionToAnimationState(expr) (DirectionRoundUp(expr) >> 3) #define DirectionFromAnimationState(expr) (expr << 3) +#define Direction8Round(expr) ((expr) & 0x1c) +#define Direction8RoundUp(expr) Direction8Round((expr) + 2) +#define Direction8TurnAround(expr) (Direction8RoundUp(expr) ^ 0x10) +#define Direction8ToAnimationState(expr) (Direction8RoundUp(expr) >> 2) +#define Direction8FromAnimationState(expr) (expr << 2) + extern Entity gUnk_03003DA0; #endif diff --git a/linker.ld b/linker.ld index a0d37ce8..eaf61fe8 100644 --- a/linker.ld +++ b/linker.ld @@ -340,7 +340,7 @@ SECTIONS { src/enemy/cuccoChickAggr.o(.text); src/enemy/moldorm.o(.text); src/enemy/enemyE.o(.text); - asm/moldworm.o(.text); + src/enemy/moldworm.o(.text); asm/sluggula.o(.text); asm/pesto.o(.text); asm/puffstool.o(.text); @@ -932,6 +932,8 @@ SECTIONS { src/enemy/moldorm.o(.rodata); src/enemy/enemyE.o(.rodata); data/animations/enemyE.o(.rodata); + src/enemy/moldworm.o(.rodata); + data/animations/moldworm.o(.rodata); data/data_080CBC38.o(.rodata); src/enemy.o(.rodata); data/data_080D3D94.o(.rodata); diff --git a/src/enemy/moldworm.c b/src/enemy/moldworm.c new file mode 100644 index 00000000..fea8f7e7 --- /dev/null +++ b/src/enemy/moldworm.c @@ -0,0 +1,586 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" + +extern void sub_0800449C(Entity*, u32); +extern bool32 sub_08023A38(u32); +extern void sub_08023990(Entity*, u32, u32); +extern void sub_08023A88(Entity*, u32); + +void sub_080235BC(Entity*); +void sub_08023644(Entity*); +void sub_08023730(Entity*); +void sub_080237D8(Entity*); +void sub_0802390C(Entity*); +void sub_080239F0(Entity*); +bool32 sub_08023B38(Entity*); + +extern u8 gEntCount; +extern const u8 gUnk_080B37A0[]; + +extern void (*const gUnk_080CBC38[])(Entity*); +extern void (*const gUnk_080CBC50[])(Entity*); +extern const s8 gUnk_080CBC70[]; +extern const s8 gUnk_080CBC90[]; +extern void (*const gUnk_080CBC98[])(Entity*); +extern void (*const gUnk_080CBCA8[])(Entity*); +extern const s8 gUnk_080CBCB8[]; + +#if NON_MATCHING +void Moldworm(Entity* this) { + u16 prevX = this->x.HALF.HI; + u16 prevY = this->y.HALF.HI; + + if (this->entityType.form == 0) { + if (this->action != 0) { + sub_0802390C(this); + } + this->field_0x7c.BYTES.byte1 = this->field_0x7c.BYTES.byte0; + EnemyFunctionHandler(this, gUnk_080CBC38); + } else { + if (this->parent->next) { + if (this->entityType.form != 8) { + sub_080235BC(this); + } else { + sub_08023730(this); + } + } else { + DeleteEntity(this); + return; + } + } + + if (this->parent->field_0x7c.BYTES.byte0 != this->parent->field_0x7c.BYTES.byte1 && this->attachedEntity) { + ((u8*)&this->attachedEntity->field_0x78)[(this->parent->field_0x7c.BYTES.byte0 - 1) & 0xf] = + (((this->x.HALF.HI - prevX + 8) & 0xf) << 4) | ((this->y.HALF.HI - prevY + 8U) & 0xf); + } +} +#else +NAKED +void Moldworm(Entity* this) { + asm(".include \"asm/non_matching/moldworm/moldworm.inc\""); +} +#endif + +void sub_080230CC(Entity* this) { + gUnk_080CBC50[this->action](this); +} + +void sub_080230E4(Entity* this) { + if (this->previousActionFlag == 0xff) { + this->action = 7; + this->actionDelay = 1; + this->previousActionFlag = 0; + this->damageType = 0x85; + this->hurtBlinkTime = -8; + this->field_0x7c.BYTES.byte3 = 0; + this->field_0x7a.HALF.HI = 0; + if (this->bitfield == 0x80 || this->bitfield == 0x9e) { + this->entityType.parameter = 0; + this->field_0x80.HALF.LO = 0x14; + } else { + this->entityType.parameter = 1; + this->field_0x80.HALF.LO = 8; + } + } + + if (this->currentHealth == 0 && this->field_0x7c.BYTES.byte3 == 0 && this->action == 7) { + CopyPosition(this, &gPlayerEntity); + gPlayerEntity.flags = gPlayerEntity.flags | 0x80; + gPlayerEntity.spriteSettings.b.draw = 1; + gPlayerEntity.field_0x20 = 0x18000; + gPlayerEntity.direction = 0xff; + gPlayerEntity.hurtBlinkTime = -0x14; + gPlayerState.jumpStatus = 0x41; + gPlayerState.flags.all &= 0xfff7ffff; + } + + sub_0804AA30(this, gUnk_080CBC38); +} + +void sub_080231A4(Entity* this) { + this->field_0x7c.BYTES.byte0++; + sub_08001324(this); +} + +void nullsub_135(Entity* this) { +} + +void sub_080231BC(Entity* this) { + if (gEntCount < 0x40) { + Entity* ent; + + ent = this->attachedEntity = CreateEnemy(0xf, 1); + ent->parent = this; + + ent = ent->attachedEntity = CreateEnemy(0xf, 2); + ent->parent = this; + + ent = ent->attachedEntity = CreateEnemy(0xf, 3); + ent->parent = this; + + ent = ent->attachedEntity = CreateEnemy(0xf, 4); + ent->parent = this; + + ent = ent->attachedEntity = CreateEnemy(0xf, 5); + ent->parent = this; + + ent = ent->attachedEntity = CreateEnemy(0xf, 6); + ent->parent = this; + + ent = ent->attachedEntity = CreateEnemy(0xf, 7); + ent->parent = this; + + ent->attachedEntity = CreateEnemy(0xf, 8); + *(Entity**)&ent->attachedEntity->field_0x74 = ent; + ent = ent->attachedEntity; + ent->parent = this; + ent->attachedEntity = NULL; + sub_0804A720(this); + this->action = 6; + this->actionDelay = 0x1e; + this->parent = this; + this->field_0x78.HWORD = 0x1e; + this->palette.b.b0 = 5; + this->direction = Random() & 0x1f; + this->animationState = Direction8ToAnimationState(this->direction); + InitializeAnimation(this, this->animationState); + } +} + +void nullsub_136(Entity* this) { +} + +void sub_08023288(Entity* this) { + if (sub_08049FDC(this, 1) && (this->actionDelay++ & 0xf) == 0) { + u32 idx = Random() & 0x1e; + u32 i; + + for (i = 0; i < 0x10; i++) { + u32 x = gPlayerEntity.x.HALF.HI + gUnk_080CBC70[idx + 0]; + u32 y = gPlayerEntity.y.HALF.HI + gUnk_080CBC70[idx + 1]; + if (sub_08023A38(GetTileTypeByPos(x, y, gPlayerEntity.collisionLayer))) { + sub_08023990(this, x, y); + return; + } + idx += 2; + idx &= 0x1e; + } + } +} + +void sub_08023330(Entity* this) { + GetNextFrame(this); + if (this->frames.all & 0x80) { + this->action = 4; + this->actionDelay = 0x19; + this->flags |= 0x80; + this->field_0x78.HWORD = 600; + this->direction = Random() & 0x1c; + this->animationState = this->direction >> 2; + this->field_0x7a.HALF.HI = 0; + this->field_0x7c.BYTES.byte3 = 0; + sub_08023A88(this, this->animationState); + CopyPosition(this, this->attachedEntity); + CreateFx(this, 4, 0); + } +} + +extern u32 GetTileTypeByEntity(Entity*); +void sub_08023A68(Entity*); +void sub_08023AB0(Entity*); + +void sub_08023398(Entity* this) { + this->field_0x7c.BYTES.byte0++; + + if (this->field_0x7c.BYTES.byte3 && sub_08049FDC(this, 1) == 0) { + this->field_0x78.HWORD = 1; + } + + if (--this->field_0x78.HWORD == 0) { + if (sub_08023A38(GetTileTypeByEntity(this))) { + this->action = 5; + this->field_0x7c.BYTES.byte3 = 0; + this->flags = this->flags & 0x7f; + this->damageType = 0x85; + this->attachedEntity->actionDelay = 1; + sub_08023A68(this); + CreateFx(this, 4, 0); + return; + } + this->field_0x78.HWORD = 0x28; + } + + if (this->field_0x7c.BYTES.byte3) { + sub_08023AB0(this); + } + + if (--this->actionDelay < 3) { + if (this->actionDelay == 0) + this->actionDelay = 25; + } else { + int prevX = this->x.WORD; + int prevY = this->y.WORD; + ProcessMovement(this); + if (this->x.WORD == prevX && this->y.WORD == prevY) { + this->field_0x7c.BYTES.byte0--; + } + + if ((gScreenTransition.frameCount & 7) == 0) { + u32 uVar4; + + sub_08004596(this, sub_08049F84(this, 1)); + uVar4 = Direction8ToAnimationState(this->direction); + if (uVar4 != this->animationState) { + this->animationState = uVar4; + InitializeAnimation(this, uVar4 + this->field_0x7a.HALF.HI); + } + } + } +} + +void sub_080234A4(Entity* this) { + this->field_0x7c.BYTES.byte0++; + GetNextFrame(this); + if (this->field_0x7c.BYTES.byte3) { + this->action = 6; + this->spriteSettings.b.draw = 0; + this->field_0x78.HWORD = 300; + } +} + +void sub_080234D8(Entity* this) { + if (--this->field_0x78.HWORD == 0) { + this->action = 2; + this->palette.b.b0 = 5; + this->direction = Random() & 0x1f; + this->animationState = Direction8ToAnimationState(this->direction); + sub_08023A88(this, this->animationState); + } +} + +void sub_0802351C(Entity* this) { + if (this->actionDelay != 0 && (this->entityType.parameter == 1 || gPlayerEntity.frameIndex == 0xff)) { + this->actionDelay = 0; + this->attachedEntity->action = 3; + this->attachedEntity->field_0xf = this->field_0x80.HALF.LO; + InitializeAnimation(this->attachedEntity, this->attachedEntity->animationState + 1); + InitializeAnimation(this, this->animationState); + } + + if (this->field_0x7c.BYTES.byte3 == 0) { + if (this->entityType.parameter == 0) { + gPlayerEntity.animationState = this->animationState & 7; + gPlayerState.flags.all |= 0x80000; + PositionRelative(this, &gPlayerEntity, 0, gUnk_080CBC90[this->animationState & 7] << 0x10); + gPlayerEntity.spriteOffsetY = -gUnk_080CBC90[this->animationState & 7]; + } + } else { + this->action = 4; + } +} + +void sub_080235BC(Entity* this) { + gUnk_080CBC98[this->action](this); +} + +void sub_080235D4(Entity* this) { + Entity* parent; + + this->action = 1; + parent = this->parent; + this->x.HALF.HI = parent->x.HALF.HI; + this->y.HALF.HI = parent->y.HALF.HI; + sub_080239F0(this); + if (this->entityType.form == 1) { + this->animationState = 0x10; + } else { + this->animationState = 0x12; + } + InitializeAnimation(this, this->animationState); +} + +void sub_08023604(Entity* this) { + if (((u8*)&this->field_0x78)[this->parent->field_0x7c.BYTES.byte0 & 0xf] != 0x88) { + this->action = 2; + this->actionDelay = 0; + this->flags |= 0x80; + this->spriteSettings.b.draw = 1; + sub_08023644(this); + } +} + +void sub_08023644(Entity* this) { + Entity* parent = this->parent; + + if (parent->animIndex == 0x17 && this->actionDelay != 0 && this->x.HALF.HI == parent->x.HALF.HI && + this->y.HALF.HI == parent->y.HALF.HI) { + this->action = 1; + this->flags &= ~0x80; + this->spriteSettings.b.draw = 0; + this->attachedEntity->actionDelay = 1; + sub_080239F0(this); + } + + if (parent->field_0x7c.BYTES.byte0 != parent->field_0x7c.BYTES.byte1) { + u8* tmp = &((u8*)&this->field_0x78)[parent->field_0x7c.BYTES.byte0 & 0xf]; + this->x.HALF.HI += (*tmp >> 4) - 8; + this->y.HALF.HI += (*tmp & 0xf) - 8; + this->spriteOrientation.flipY = parent->spriteOrientation.flipY; + this->spriteRendering.b3 = parent->spriteRendering.b3; + this->collisionLayer = parent->collisionLayer; + } +} + +void sub_080236F8(Entity* parent) { + if (--parent->field_0xf == 0) { + parent->action = 2; + parent->attachedEntity->action = 3; + parent->attachedEntity->field_0xf = parent->parent->field_0x80.HALF.LO; + InitializeAnimation(parent->attachedEntity, parent->attachedEntity->animationState + 1); + InitializeAnimation(parent, parent->animationState); + } +} + +void sub_08023730(Entity* this) { + gUnk_080CBCA8[this->action](this); +} + +void sub_08023748(Entity* this) { + Entity* parent; + + this->action = 1; + this->animationState = 20; + parent = this->parent; + this->x.HALF.HI = parent->x.HALF.HI; + this->y.HALF.HI = parent->y.HALF.HI; + sub_080239F0(this); + sub_08023A68(this); +} + +void sub_0802376C(Entity* this) { + Entity* parent = this->parent; + + if (parent->spriteSettings.b.draw == 1 && parent->animIndex < 0x10) { + this->spriteSettings.b.draw = 1; + GetNextFrame(this); + } + + if (((u8*)&this->field_0x78)[parent->field_0x7c.BYTES.byte0 & 0xf] != 0x88) { + this->action = 2; + this->actionDelay = 0; + this->flags |= 0x80; + this->parent->field_0x7c.BYTES.byte3 = 1; + sub_08023A88(this, 20); + sub_080237D8(this); + } +} + +void sub_080237D8(Entity* this) { + Entity* parent = this->parent; + + if (parent->animIndex == 0x17 && this->actionDelay != 0 && this->x.HALF.HI == parent->x.HALF.HI && + this->y.HALF.HI == parent->y.HALF.HI) { + this->action = 1; + this->flags &= ~0x80; + this->spriteSettings.b.draw = 0; + parent->field_0x7c.BYTES.byte3 = 1; + sub_080239F0(this); + sub_08023A68(this); + } + + if (parent->field_0x7c.BYTES.byte0 != parent->field_0x7c.BYTES.byte1) { + u8* tmp = &((u8*)&this->field_0x78)[parent->field_0x7c.BYTES.byte0 & 0xf]; + this->x.HALF.HI += (*tmp >> 4) - 8; + this->y.HALF.HI += (*tmp & 0xf) - 8; + + this->spriteOrientation.flipY = parent->spriteOrientation.flipY; + this->spriteRendering.b3 = parent->spriteRendering.b3; + this->collisionLayer = parent->collisionLayer; + } +} + +void sub_08023894(Entity* this) { + if (--this->field_0xf == 0) { + this->action = 2; + this->parent->field_0x7c.BYTES.byte3 = 1; + InitializeAnimation(this, this->animationState); + if ((this->parent->entityType).parameter == 0) { + gPlayerState.flags.all |= 0x200000; + gPlayerEntity.x.HALF.HI = this->x.HALF.HI; + gPlayerEntity.y.HALF.HI = this->y.HALF.HI; + gPlayerEntity.direction = DirectionRoundUp(GetFacingDirection(*(Entity**)&this->field_0x74, this)); + gPlayerEntity.animationState = gPlayerEntity.direction >> 2; + gPlayerEntity.hurtBlinkTime = 12; + ModHealth(-0x10); + sub_0800449C(&gPlayerEntity, 0x7a); + } + } +} + +void sub_0802390C(Entity* this) { + if (this->bitfield & 0x80) { + Entity* ent = this->attachedEntity; + do { + ent->hurtBlinkTime = this->hurtBlinkTime; + } while (ent = ent->attachedEntity, ent != NULL); + } else { + Entity* ent = this->attachedEntity; + do { + if (ent->bitfield & 0x80) { + u8 bVar2 = 0xff - ent->currentHealth; + if (bVar2 != 0) { + u32 tmp; + ent->currentHealth = 0xff; + tmp = (u8)ent->hurtBlinkTime; + if (this->currentHealth >= bVar2) { + this->currentHealth -= bVar2; + } else { + this->currentHealth = 0; + } + + ent = this; + do { + ent->hurtBlinkTime = tmp; + } while (ent = ent->attachedEntity, ent != NULL); + break; + } + } + } while (ent = ent->attachedEntity, ent != NULL); + } +} + +void sub_08023990(Entity* this, u32 param_2, u32 param_3) { + Entity* ent; + + this->action = 3; + this->spriteSettings.b.draw = 1; + this->palette.b.b0 = 0x5; + this->palette.b.b4 = 0x5; + this->spritePriority.b0 = 7; + this->x.HALF.HI = param_2; + this->y.HALF.HI = param_3; + this->collisionLayer = gPlayerEntity.collisionLayer; + UpdateSpriteForCollisionLayer(this); + InitializeAnimation(this, 0x16); + + ent = this->attachedEntity; + do { + sub_080239F0(ent); + CopyPosition(this, ent); + } while (ent = ent->attachedEntity, ent != NULL); +} + +/* TODO: fix struct */ +NAKED +void sub_080239F0(Entity* this) { + asm(".include \"asm/non_matching/moldworm/sub_080239F0.inc\""); +} + +bool32 sub_08023A38(u32 unk) { + if (unk == 0x1a || unk == 0x29) { + return TRUE; + } else { + unk = gUnk_080B37A0[unk]; + if (unk == 9 || unk == 11 || unk == 10 || unk == 12) { + return TRUE; + } else { + return FALSE; + } + } +} + +void sub_08023A68(Entity* this) { + sub_0801D2B4(this, 5); + this->spritePriority.b0 = 7; + InitializeAnimation(this, 0x17); +} + +void sub_08023A88(Entity* this, u32 unk) { + sub_0801D2B4(this, 0x22); + this->spritePriority.b0 = 4; + InitializeAnimation(this, unk); +} + +void sub_08023AB0(Entity* this) { + if (this->field_0x7a.HALF.HI == 8) { + if (this->field_0x7c.BYTES.byte2) { + this->field_0x7c.BYTES.byte2--; + } else if (!sub_08023B38(this) || 0x1d >= this->field_0x78.HWORD) { + this->damageType = 0x85; + this->field_0x7a.HALF.HI = 0; + this->field_0x7c.BYTES.byte2 = 30; + InitializeAnimation(this, this->animationState); + } + } else if (this->field_0x7c.BYTES.byte2) { + this->field_0x7c.BYTES.byte2--; + } else if (this->field_0x78.HWORD >= 90 && sub_08023B38(this)) { + this->damageType = 0x87; + this->field_0x7a.HALF.HI = 8; + this->field_0x7c.BYTES.byte2 = 10; + InitializeAnimation(this, this->animationState + 8); + } +} + +NAKED +bool32 sub_08023B38(Entity* this) { + asm(".include \"asm/non_matching/moldworm/sub_08023B38.inc\""); +} + +// clang-format off +void (*const gUnk_080CBC38[])(Entity*) = { + sub_080230CC, + sub_080230E4, + sub_080231A4, + sub_0804A7D4, + sub_08001242, + nullsub_135, +}; + +void (*const gUnk_080CBC50[])(Entity*) = { + sub_080231BC, + nullsub_136, + sub_08023288, + sub_08023330, + sub_08023398, + sub_080234A4, + sub_080234D8, + sub_0802351C, +}; + +const s8 gUnk_080CBC70[] = { + 0x00, 0xd0, 0x00, 0x30, + 0xd0, 0x00, 0x30, 0x00, + 0xe0, 0xe0, 0xe0, 0x20, + 0x20, 0xe0, 0x20, 0x20, + 0xf0, 0xe0, 0x10, 0xe0, + 0xf0, 0x20, 0x10, 0x20, + 0xe0, 0xf0, 0x20, 0xf0, + 0xe0, 0x10, 0x20, 0x10, +}; + +const s8 gUnk_080CBC90[] = { + 0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, +}; + +void (*const gUnk_080CBC98[])(Entity*) = { + sub_080235D4, + sub_08023604, + sub_08023644, + sub_080236F8, +}; + +void (*const gUnk_080CBCA8[])(Entity*) = { + sub_08023748, + sub_0802376C, + sub_080237D8, + sub_08023894, +}; + +const s8 gUnk_080CBCB8[] = { + 0x00, 0xe4, 0x14, 0xec, + 0x1c, 0x00, 0x14, 0x14, + 0x00, 0x1c, 0xec, 0x14, + 0xe4, 0x00, 0xec, 0xec, +}; +// clang-format on From c19fc6d0fa578ad868088a3bf065f21879c810c5 Mon Sep 17 00:00:00 2001 From: Behemoth Date: Thu, 3 Sep 2020 18:58:13 +0200 Subject: [PATCH 06/14] rename rodata file --- data/{data_080CBC38.s => data_080CBDBC.s} | 0 linker.ld | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename data/{data_080CBC38.s => data_080CBDBC.s} (100%) diff --git a/data/data_080CBC38.s b/data/data_080CBDBC.s similarity index 100% rename from data/data_080CBC38.s rename to data/data_080CBDBC.s diff --git a/linker.ld b/linker.ld index eaf61fe8..61f5f01f 100644 --- a/linker.ld +++ b/linker.ld @@ -934,7 +934,7 @@ SECTIONS { data/animations/enemyE.o(.rodata); src/enemy/moldworm.o(.rodata); data/animations/moldworm.o(.rodata); - data/data_080CBC38.o(.rodata); + data/data_080CBDBC.o(.rodata); src/enemy.o(.rodata); data/data_080D3D94.o(.rodata); data/areaPropertyLists.o(.rodata); From 5b89355daa39efa2c9bb4c988a957e396197c724 Mon Sep 17 00:00:00 2001 From: Behemoth Date: Thu, 3 Sep 2020 23:19:53 +0200 Subject: [PATCH 07/14] decompile sluggula --- asm/sluggula.s | 478 ------------------------------------- data/animations/sluggula.s | 28 +++ data/data_080CBDBC.s | 42 ---- linker.ld | 3 + src/enemy/sluggula.c | 226 ++++++++++++++++++ 5 files changed, 257 insertions(+), 520 deletions(-) delete mode 100644 asm/sluggula.s create mode 100644 data/animations/sluggula.s create mode 100644 src/enemy/sluggula.c diff --git a/asm/sluggula.s b/asm/sluggula.s deleted file mode 100644 index d75ab61a..00000000 --- a/asm/sluggula.s +++ /dev/null @@ -1,478 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Sluggula -Sluggula: @ 0x08023B94 - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xa] - cmp r0, #1 - bne _08023BAC - ldr r1, _08023BA8 @ =gUnk_080CBDBC - adds r0, r5, #0 - bl EnemyFunctionHandler - b _08023BEC - .align 2, 0 -_08023BA8: .4byte gUnk_080CBDBC -_08023BAC: - cmp r0, #0 - bne _08023C00 - movs r1, #0x36 - ldrsh r0, [r5, r1] - cmp r0, #0 - bne _08023BD8 - adds r0, r5, #0 - bl sub_080012DC - adds r1, r0, #0 - cmp r1, #0 - beq _08023BD8 - ldr r0, _08023BD4 @ =gUnk_080012C8 - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r5, #0 - bl _call_via_r1 - b _08023C06 - .align 2, 0 -_08023BD4: .4byte gUnk_080012C8 -_08023BD8: - ldr r4, _08023BFC @ =gUnk_080CBDD4 - adds r0, r5, #0 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 -_08023BEC: - movs r3, #0x10 - rsbs r3, r3, #0 - adds r0, r5, #0 - movs r1, #0 - movs r2, #1 - bl SetChildOffset - b _08023C06 - .align 2, 0 -_08023BFC: .4byte gUnk_080CBDD4 -_08023C00: - adds r0, r5, #0 - bl sub_08023E10 -_08023C06: - pop {r4, r5, pc} - - thumb_func_start sub_08023C08 -sub_08023C08: @ 0x08023C08 - push {lr} - ldr r2, _08023C1C @ =gUnk_080CBDEC - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08023C1C: .4byte gUnk_080CBDEC - - thumb_func_start sub_08023C20 -sub_08023C20: @ 0x08023C20 - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - beq _08023C34 - adds r0, r4, #0 - movs r1, #0x1c - bl sub_0804A9FC -_08023C34: - ldrb r0, [r4, #0xa] - cmp r0, #1 - bne _08023C48 - ldr r1, _08023C44 @ =gUnk_080CBDBC - adds r0, r4, #0 - bl sub_0804AA30 - b _08023C50 - .align 2, 0 -_08023C44: .4byte gUnk_080CBDBC -_08023C48: - ldr r1, _08023C54 @ =gUnk_080CBDD4 - adds r0, r4, #0 - bl sub_0804AA30 -_08023C50: - pop {r4, pc} - .align 2, 0 -_08023C54: .4byte gUnk_080CBDD4 - - thumb_func_start nullsub_137 -nullsub_137: @ 0x08023C58 - bx lr - .align 2, 0 - - thumb_func_start sub_08023C5C -sub_08023C5C: @ 0x08023C5C - push {r4, lr} - adds r4, r0, #0 - bl sub_0804A720 - movs r0, #1 - strb r0, [r4, #0xc] - bl Random - movs r1, #0x30 - ands r0, r1 - adds r0, #0xb4 - strb r0, [r4, #0xe] - bl Random - movs r1, #0x18 - ands r0, r1 - strb r0, [r4, #0x15] - lsrs r0, r0, #3 - strb r0, [r4, #0x14] - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl InitializeAnimation - pop {r4, pc} - - thumb_func_start sub_08023C8C -sub_08023C8C: @ 0x08023C8C - push {r4, lr} - adds r4, r0, #0 - bl ProcessMovement - adds r0, r4, #0 - bl GetNextFrame - adds r0, r4, #0 - bl sub_08023E54 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08023CDC - adds r0, r4, #0 - adds r0, #0x5a - ldrb r0, [r0] - cmp r0, #1 - beq _08023CBC - movs r0, #8 - strb r0, [r4, #0xe] - b _08023CDC -_08023CBC: - bl Random - movs r1, #0x30 - ands r0, r1 - adds r0, #0xb4 - strb r0, [r4, #0xe] - adds r0, r4, #0 - bl sub_08023E9C - ldrb r0, [r4, #0x15] - lsrs r0, r0, #3 - strb r0, [r4, #0x14] - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl InitializeAnimation -_08023CDC: - pop {r4, pc} - .align 2, 0 - - - thumb_func_start sub_08023CE0 -sub_08023CE0: @ 0x08023CE0 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #1 - beq _08023D48 - cmp r0, #1 - bgt _08023CF4 - cmp r0, #0 - beq _08023CFA - b _08023DC0 -_08023CF4: - cmp r0, #2 - beq _08023D6E - b _08023DC0 -_08023CFA: - adds r0, r4, #0 - bl sub_0804A720 - ldrb r1, [r4, #0xb] - cmp r1, #1 - bne _08023D1C - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _08023D12 - strb r1, [r4, #0xe] -_08023D12: - ldrb r0, [r4, #0x18] - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x18] - b _08023D20 -_08023D1C: - movs r0, #1 - strb r0, [r4, #0xc] -_08023D20: - ldr r0, _08023D44 @ =0x0000FF80 - strh r0, [r4, #0x36] - ldrb r2, [r4, #0x19] - movs r1, #0x3f - adds r0, r1, #0 - ands r0, r2 - movs r2, #0x40 - orrs r0, r2 - strb r0, [r4, #0x19] - ldrb r0, [r4, #0x1b] - ands r1, r0 - orrs r1, r2 - strb r1, [r4, #0x1b] - adds r0, r4, #0 - movs r1, #6 - bl InitializeAnimation - b _08023E0A - .align 2, 0 -_08023D44: .4byte 0x0000FF80 -_08023D48: - adds r0, r4, #0 - movs r1, #1 - movs r2, #0x20 - bl PlayerInRange - cmp r0, #0 - beq _08023E0A - movs r0, #2 - strb r0, [r4, #0xc] - ldrb r0, [r4, #0xe] - cmp r0, #0 - bne _08023D64 - movs r0, #8 - strb r0, [r4, #0xe] -_08023D64: - ldrb r0, [r4, #0x18] - movs r1, #3 - orrs r0, r1 - strb r0, [r4, #0x18] - b _08023E0A -_08023D6E: - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _08023D94 - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08023E0A - ldr r0, _08023D90 @ =0x0000012D - bl EnqueueSFX - adds r0, r4, #0 - movs r1, #4 - bl InitializeAnimation - b _08023E0A - .align 2, 0 -_08023D90: .4byte 0x0000012D -_08023D94: - movs r1, #0xc0 - lsls r1, r1, #5 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _08023E0A - movs r0, #3 - strb r0, [r4, #0xc] - ldrb r1, [r4, #0x18] - subs r0, #7 - ands r0, r1 - movs r1, #1 - orrs r0, r1 - strb r0, [r4, #0x18] - movs r0, #0x84 - bl EnqueueSFX - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer - b _08023E0A -_08023DC0: - adds r0, r4, #0 - bl GetNextFrame - adds r2, r4, #0 - adds r2, #0x5a - ldrb r1, [r2] - cmp r1, #0 - beq _08023E0A - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08023DF2 - movs r0, #0x10 - movs r1, #1 - bl CreateEnemy - adds r1, r0, #0 - cmp r1, #0 - beq _08023E0A - adds r0, r4, #0 - bl sub_0804A4E4 - bl DeleteThisEntity - b _08023E0A -_08023DF2: - ldr r1, _08023E0C @ =gUnk_080CBDF4 - ldrb r0, [r2] - subs r0, #1 - adds r0, r0, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldrh r1, [r4, #0x32] - adds r0, r0, r1 - movs r1, #0 - strh r0, [r4, #0x32] - strb r1, [r2] -_08023E0A: - pop {r4, pc} - .align 2, 0 -_08023E0C: .4byte gUnk_080CBDF4 - - thumb_func_start sub_08023E10 -sub_08023E10: @ 0x08023E10 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xc] - cmp r0, #0 - bne _08023E36 - 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 - movs r1, #5 - bl InitializeAnimation -_08023E36: - 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 _08023E50 - adds r0, r4, #0 - bl DeleteEntity -_08023E50: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08023E54 -sub_08023E54: @ 0x08023E54 - push {r4, r5, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xf] - adds r1, r0, #1 - strb r1, [r4, #0xf] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0x1b - bls _08023E94 - movs r0, #0 - strb r0, [r4, #0xf] - movs r0, #0x10 - movs r1, #2 - bl CreateEnemy - adds r5, r0, #0 - cmp r5, #0 - beq _08023E94 - ldrb r0, [r4, #0x14] - lsls r0, r0, #1 - ldr r1, _08023E98 @ =gUnk_080CBDF7 - 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 -_08023E94: - pop {r4, r5, pc} - .align 2, 0 -_08023E98: .4byte gUnk_080CBDF7 - - thumb_func_start sub_08023E9C -sub_08023E9C: @ 0x08023E9C - push {r4, r5, r6, lr} - adds r5, r0, #0 - bl Random - adds r6, r0, #0 - adds r0, r5, #0 - bl sub_08049FA0 - cmp r0, #0 - bne _08023EC2 - movs r0, #1 - ands r0, r6 - cmp r0, #0 - beq _08023EC2 - adds r0, r5, #0 - bl sub_08049EE4 - adds r0, #4 - b _08023F1C -_08023EC2: - adds r0, r5, #0 - movs r1, #1 - bl sub_08049FDC - cmp r0, #0 - beq _08023F0A - movs r0, #6 - ands r0, r6 - cmp r0, #0 - beq _08023F0A - ldr r0, _08023F00 @ =gUnk_020000B0 - ldr r1, [r0] - adds r0, r5, #0 - bl GetFacingDirection - ldrb r2, [r5, #0x15] - subs r1, r0, r2 - cmp r1, #0 - beq _08023F22 - adds r0, r1, #4 - movs r3, #0x1f - ands r0, r3 - cmp r0, #8 - bls _08023F22 - ands r1, r3 - cmp r1, #0xf - bhi _08023F04 - adds r0, r2, #0 - adds r0, #8 - b _08023F1C - .align 2, 0 -_08023F00: .4byte gUnk_020000B0 -_08023F04: - adds r0, r2, #0 - subs r0, #8 - b _08023F1C -_08023F0A: - ldr r4, _08023F24 @ =gUnk_080CBDFF - lsrs r0, r6, #4 - movs r1, #3 - bl __modsi3 - adds r0, r0, r4 - ldrb r0, [r0] - ldrb r1, [r5, #0x15] - adds r0, r0, r1 -_08023F1C: - movs r1, #0x18 - ands r0, r1 - strb r0, [r5, #0x15] -_08023F22: - pop {r4, r5, r6, pc} - .align 2, 0 -_08023F24: .4byte gUnk_080CBDFF \ No newline at end of file diff --git a/data/animations/sluggula.s b/data/animations/sluggula.s new file mode 100644 index 00000000..b5ec9dc0 --- /dev/null +++ b/data/animations/sluggula.s @@ -0,0 +1,28 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CBE02:: @ 080CBE02 + .incbin "baserom.gba", 0x0CBE02, 0x0000019 + +gUnk_080CBE1B:: @ 080CBE1B + .incbin "baserom.gba", 0x0CBE1B, 0x0000019 + +gUnk_080CBE34:: @ 080CBE34 + .incbin "baserom.gba", 0x0CBE34, 0x0000019 + +gUnk_080CBE4D:: @ 080CBE4D + .incbin "baserom.gba", 0x0CBE4D, 0x0000019 + +gUnk_080CBE66:: @ 080CBE66 + .incbin "baserom.gba", 0x0CBE66, 0x0000024 + +gUnk_080CBE8A:: @ 080CBE8A + .incbin "baserom.gba", 0x0CBE8A, 0x0000014 + +gUnk_080CBE9E:: @ 080CBE9E + .incbin "baserom.gba", 0x0CBE9E, 0x0000006 + +gUnk_080CBEA4:: @ 080CBEA4 + .incbin "baserom.gba", 0x0CBEA4, 0x0000020 diff --git a/data/data_080CBDBC.s b/data/data_080CBDBC.s index d32b4131..3e581026 100644 --- a/data/data_080CBDBC.s +++ b/data/data_080CBDBC.s @@ -3,48 +3,6 @@ .section .rodata -gUnk_080CBDBC:: @ 080CBDBC - .incbin "baserom.gba", 0x0CBDBC, 0x0000018 - -gUnk_080CBDD4:: @ 080CBDD4 - .incbin "baserom.gba", 0x0CBDD4, 0x0000018 - -gUnk_080CBDEC:: @ 080CBDEC - .incbin "baserom.gba", 0x0CBDEC, 0x0000008 - -gUnk_080CBDF4:: @ 080CBDF4 - .incbin "baserom.gba", 0x0CBDF4, 0x0000003 - -gUnk_080CBDF7:: @ 080CBDF7 - .incbin "baserom.gba", 0x0CBDF7, 0x0000008 - -gUnk_080CBDFF:: @ 080CBDFF - .incbin "baserom.gba", 0x0CBDFF, 0x0000003 - -gUnk_080CBE02:: @ 080CBE02 - .incbin "baserom.gba", 0x0CBE02, 0x0000019 - -gUnk_080CBE1B:: @ 080CBE1B - .incbin "baserom.gba", 0x0CBE1B, 0x0000019 - -gUnk_080CBE34:: @ 080CBE34 - .incbin "baserom.gba", 0x0CBE34, 0x0000019 - -gUnk_080CBE4D:: @ 080CBE4D - .incbin "baserom.gba", 0x0CBE4D, 0x0000019 - -gUnk_080CBE66:: @ 080CBE66 - .incbin "baserom.gba", 0x0CBE66, 0x0000024 - -gUnk_080CBE8A:: @ 080CBE8A - .incbin "baserom.gba", 0x0CBE8A, 0x0000014 - -gUnk_080CBE9E:: @ 080CBE9E - .incbin "baserom.gba", 0x0CBE9E, 0x0000006 - -gUnk_080CBEA4:: @ 080CBEA4 - .incbin "baserom.gba", 0x0CBEA4, 0x0000020 - gUnk_080CBEC4:: @ 080CBEC4 .incbin "baserom.gba", 0x0CBEC4, 0x0000018 diff --git a/linker.ld b/linker.ld index 61f5f01f..f2fdffb5 100644 --- a/linker.ld +++ b/linker.ld @@ -341,6 +341,7 @@ SECTIONS { src/enemy/moldorm.o(.text); src/enemy/enemyE.o(.text); src/enemy/moldworm.o(.text); + src/enemy/sluggula.o(.text); asm/sluggula.o(.text); asm/pesto.o(.text); asm/puffstool.o(.text); @@ -934,6 +935,8 @@ SECTIONS { data/animations/enemyE.o(.rodata); src/enemy/moldworm.o(.rodata); data/animations/moldworm.o(.rodata); + src/enemy/sluggula.o(.rodata); + data/animations/sluggula.o(.rodata); data/data_080CBDBC.o(.rodata); src/enemy.o(.rodata); data/data_080D3D94.o(.rodata); diff --git a/src/enemy/sluggula.c b/src/enemy/sluggula.c new file mode 100644 index 00000000..e11170bb --- /dev/null +++ b/src/enemy/sluggula.c @@ -0,0 +1,226 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" + +extern s32 sub_080012DC(Entity*); +bool32 PlayerInRange(Entity*, u32, u32); + +void sub_08023E10(Entity*); +void sub_08023E54(Entity*); +void sub_08023E9C(Entity*); +void sub_0804A4E4(Entity*, Entity*); + +extern void (*const gUnk_080012C8[])(Entity*); + +extern void (*const gUnk_080CBDBC[])(Entity*); +extern void (*const gUnk_080CBDD4[])(Entity*); +extern void (*const gUnk_080CBDEC[])(Entity*); + +extern const s8 gUnk_080CBDF4[]; +extern const s8 gUnk_080CBDF7[]; +extern const s8 gUnk_080CBDFF[]; + +void Sluggula(Entity* this) { + if (this->entityType.form == 1) { + EnemyFunctionHandler(this, gUnk_080CBDBC); + + SetChildOffset(this, 0, 1, -0x10); + } else if (this->entityType.form == 0) { + if (this->height.HALF.HI == 0) { + u32 idx = sub_080012DC(this); + if (idx != 0) { + gUnk_080012C8[idx](this); + return; + } + } + gUnk_080CBDD4[GetNextFunction(this)](this); + + SetChildOffset(this, 0, 1, -0x10); + } else { + sub_08023E10(this); + } +} + +void sub_08023C08(Entity* this) { + gUnk_080CBDEC[this->action](this); +} + +void sub_08023C20(Entity* this) { + if (this->field_0x43) + sub_0804A9FC(this, 0x1c); + + if (this->entityType.form == 1) { + sub_0804AA30(this, gUnk_080CBDBC); + } else { + sub_0804AA30(this, gUnk_080CBDD4); + } +} + +void nullsub_137(Entity* this) { + /* ... */ +} + +void sub_08023C5C(Entity* this) { + sub_0804A720(this); + this->action = 1; + this->actionDelay = (Random() & 0x30) + 0xb4; + this->direction = DirectionRound(Random()); + this->animationState = this->direction >> 3; + InitializeAnimation(this, this->animationState); +} + +void sub_08023C8C(Entity* this) { + ProcessMovement(this); + GetNextFrame(this); + sub_08023E54(this); + if (--this->actionDelay == 0) { + if (this->frames.all != 1) { + this->actionDelay = 8; + } else { + this->actionDelay = (Random() & 0x30) + 0xb4; + sub_08023E9C(this); + this->animationState = this->direction >> 3; + InitializeAnimation(this, this->animationState); + } + } +} + +void sub_08023CE0(Entity* this) { + switch (this->action) { + case 0: + sub_0804A720(this); + if (this->entityType.parameter == 1) { + this->action = 2; + if (this->actionDelay == 0) { + this->actionDelay = 1; + } + this->spriteSettings.b.draw = 3; + } else { + this->action = 1; + } + this->height.HALF.HI = -0x80; + this->spriteRendering.b3 = 1; + this->spriteOrientation.flipY = 1; + InitializeAnimation(this, 6); + break; + case 1: + if (PlayerInRange(this, 1, 0x20)) { + this->action = 2; + if (this->actionDelay == 0) { + this->actionDelay = 8; + } + this->spriteSettings.b.draw = 3; + } + break; + case 2: + if (this->actionDelay != 0) { + if (--this->actionDelay == 0) { + EnqueueSFX(0x12d); + InitializeAnimation(this, 4); + } + } else if (!sub_08003FC4(this, 0x1800)) { + this->action = 3; + this->spriteSettings.b.draw = 1; + EnqueueSFX(0x84); + UpdateSpriteForCollisionLayer(this); + } + break; + default: + GetNextFrame(this); + if (this->frames.all) { + if (this->frames.all & 0x80) { + Entity* ent = CreateEnemy(0x10, 1); + if (ent) { + sub_0804A4E4(this, ent); + DeleteThisEntity(); + } + } else { + this->y.HALF.HI += gUnk_080CBDF4[this->frames.all - 1]; + this->frames.all = 0; + } + } + break; + } +} + +void sub_08023E10(Entity* this) { + if (this->action == 0) { + this->action = 1; + this->spritePriority.b0 = 6; + InitializeAnimation(this, 5); + } + + GetNextFrame(this); + if (this->frames.all & 0x80) + DeleteEntity(this); +} + +void sub_08023E54(Entity* this) { + Entity* ent; + + if (this->field_0xf++ > 27) { + this->field_0xf = 0; + ent = CreateEnemy(0x10, 2); + if (ent) { + const s8* ptr = &gUnk_080CBDF7[this->animationState * 2]; + PositionRelative(this, ent, ptr[0] << 0x10, ptr[1] << 0x10); + } + } +} + +extern Entity* gUnk_020000B0; + +void sub_08023E9C(Entity* this) { + u32 uVar3 = Random(); + if (sub_08049FA0(this) == 0 && (uVar3 & 1)) { + this->direction = DirectionRoundUp(sub_08049EE4(this)); + } else if (sub_08049FDC(this, 1) && (uVar3 & 6)) { + u32 uVar3 = GetFacingDirection(this, gUnk_020000B0) - this->direction; + if (uVar3 != 0 && ((uVar3 + 4) & 0x1f) > 8) { + if ((uVar3 & 0x1f) < 0x10) { + this->direction = DirectionRound(this->direction + 8); + } else { + this->direction = DirectionRound(this->direction - 8); + } + } + } else { + this->direction = DirectionRound(this->direction + gUnk_080CBDFF[(s32)(uVar3 >> 4) % 3]); + } +} + +// clang-format off +void (*const gUnk_080CBDBC[])(Entity*) = { + sub_08023C08, + sub_08023C20, + sub_08001324, + sub_0804A7D4, + sub_08001242, + nullsub_137, +}; + +void (*const gUnk_080CBDD4[])(Entity*) = { + sub_08023CE0, + sub_08023C20, + sub_08001324, + sub_0804A7D4, + sub_08001242, + nullsub_137, +}; + +void (*const gUnk_080CBDEC[])(Entity*) = { + sub_08023C5C, + sub_08023C8C, +}; + +const s8 gUnk_080CBDF4[] = { + 1, 2, 6, +}; + +const s8 gUnk_080CBDF7[] = { + 0, 2, -2, 2, 0, -2, 2, 2 +}; + +const s8 gUnk_080CBDFF[] = { + 0, -8, 8, +}; +// clang-format on From 18e12b74f2a5a42f2d26f9d72071a3abe2552edb Mon Sep 17 00:00:00 2001 From: Behemoth Date: Thu, 3 Sep 2020 23:21:01 +0200 Subject: [PATCH 08/14] rename rodata file --- data/{data_080CBDBC.s => data_080CBEC4.s} | 0 linker.ld | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) rename data/{data_080CBDBC.s => data_080CBEC4.s} (100%) diff --git a/data/data_080CBDBC.s b/data/data_080CBEC4.s similarity index 100% rename from data/data_080CBDBC.s rename to data/data_080CBEC4.s diff --git a/linker.ld b/linker.ld index f2fdffb5..91a3ce2a 100644 --- a/linker.ld +++ b/linker.ld @@ -342,7 +342,6 @@ SECTIONS { src/enemy/enemyE.o(.text); src/enemy/moldworm.o(.text); src/enemy/sluggula.o(.text); - asm/sluggula.o(.text); asm/pesto.o(.text); asm/puffstool.o(.text); asm/chuchuBoss.o(.text); @@ -937,7 +936,7 @@ SECTIONS { data/animations/moldworm.o(.rodata); src/enemy/sluggula.o(.rodata); data/animations/sluggula.o(.rodata); - data/data_080CBDBC.o(.rodata); + data/data_080CBEC4.o(.rodata); src/enemy.o(.rodata); data/data_080D3D94.o(.rodata); data/areaPropertyLists.o(.rodata); From 17a0f00ddfc552502607b1882c98fd1a4ba54bbe Mon Sep 17 00:00:00 2001 From: Behemoth Date: Fri, 4 Sep 2020 18:04:04 +0200 Subject: [PATCH 09/14] decompile pesto --- asm/non_matching/pesto/sub_080249F4.inc | 24 + asm/non_matching/pesto/sub_08024C48.inc | 36 + asm/non_matching/pesto/sub_08024E4C.inc | 133 ++ asm/pesto.s | 2234 ----------------------- data/animations/pesto.s | 31 + data/data_080CBEC4.s | 45 - include/entity.h | 2 +- linker.ld | 4 +- src/enemy/pesto.c | 906 +++++++++ 9 files changed, 1134 insertions(+), 2281 deletions(-) create mode 100644 asm/non_matching/pesto/sub_080249F4.inc create mode 100644 asm/non_matching/pesto/sub_08024C48.inc create mode 100644 asm/non_matching/pesto/sub_08024E4C.inc delete mode 100644 asm/pesto.s create mode 100644 data/animations/pesto.s create mode 100644 src/enemy/pesto.c diff --git a/asm/non_matching/pesto/sub_080249F4.inc b/asm/non_matching/pesto/sub_080249F4.inc new file mode 100644 index 00000000..eb1d8683 --- /dev/null +++ b/asm/non_matching/pesto/sub_080249F4.inc @@ -0,0 +1,24 @@ + + .syntax unified + + .text + + + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0x15] + adds r1, r0, #2 + movs r0, #0x1f + ands r1, r0 + lsrs r1, r1, #2 + ldrb r0, [r2, #0x14] + cmp r1, r0 + beq _08024A12 + strb r1, [r2, #0x14] + ldrb r1, [r2, #0x14] + adds r0, r2, #0 + bl InitializeAnimation +_08024A12: + pop {pc} + + .syntax divided diff --git a/asm/non_matching/pesto/sub_08024C48.inc b/asm/non_matching/pesto/sub_08024C48.inc new file mode 100644 index 00000000..858df9a6 --- /dev/null +++ b/asm/non_matching/pesto/sub_08024C48.inc @@ -0,0 +1,36 @@ + + .syntax unified + + .text + + + push {r4, r5, lr} + adds r3, r0, #0 + movs r4, #1 + cmp r1, #0 + beq _08024C60 + movs r0, #3 + bl sub_08049DF4 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f + b _08024C78 +_08024C60: + ldr r2, [r3, #0x54] + cmp r2, #0 + beq _08024C74 + ldr r0, [r2, #4] + cmp r0, #0 + beq _08024C74 + movs r5, #0x36 + ldrsh r0, [r2, r5] + cmp r0, #0 + bge _08024C78 +_08024C74: + str r1, [r3, #0x54] + movs r4, #0 +_08024C78: + adds r0, r4, #0 + pop {r4, r5, pc} + + .syntax divided diff --git a/asm/non_matching/pesto/sub_08024E4C.inc b/asm/non_matching/pesto/sub_08024E4C.inc new file mode 100644 index 00000000..f326b496 --- /dev/null +++ b/asm/non_matching/pesto/sub_08024E4C.inc @@ -0,0 +1,133 @@ + + .syntax unified + + .text + + + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #3 + bne _08024F46 + ldrb r0, [r4, #0xf] + adds r0, #1 + movs r7, #0 + movs r1, #0xff + ands r0, r1 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0xf] + bl sub_0807953C + cmp r0, #0 + beq _08024E84 + bl Random + adds r3, r4, #0 + adds r3, #0x84 + ldrb r2, [r3] + adds r2, #1 + movs r1, #1 + ands r1, r0 + adds r2, r2, r1 + strb r2, [r3] +_08024E84: + ldr r0, _08024EC8 @ =gUnk_02002A40 + adds r0, #0xaa + ldrb r0, [r0] + adds r2, r4, #0 + adds r2, #0x87 + cmp r0, #0 + beq _08024E9A + adds r5, r2, #0 + ldrb r0, [r5] + cmp r0, #4 + bne _08024ECC +_08024E9A: + adds r1, r4, #0 + adds r1, #0x84 + movs r0, #0x30 + strb r0, [r1] + strb r7, [r2] + adds r0, r4, #0 + bl sub_08024F50 + adds r0, r4, #0 + adds r0, #0x80 + strb r7, [r0] + movs r1, #0x40 + movs r0, #0x40 + strh r0, [r4, #0x24] + strb r1, [r4, #0xe] + movs r0, #8 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0 + movs r2, #8 + bl sub_08024A14 + b _08024F46 + .align 2, 0 +_08024EC8: .4byte gUnk_02002A40 +_08024ECC: + ldr r6, _08024F48 @ =gPlayerEntity + bl ResetPlayer + ldr r2, _08024F4C @ =gPlayerState + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #1 + orrs r0, r1 + str r0, [r2, #0x30] + ldrb r0, [r2, #0xa] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0xa] + movs r0, #0xe + strb r0, [r2, #0xc] + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #0x14 + strb r0, [r1] + adds r1, #1 + movs r0, #1 + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x3a + strb r7, [r0] + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0 + bl PositionRelative + adds r1, r6, #0 + adds r1, #0x63 + movs r0, #0x1a + strb r0, [r1] + movs r0, #4 + strb r0, [r6, #0x14] + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x3d + ands r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _08024F46 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + adds r1, r6, #0 + adds r1, #0x3d + movs r0, #8 + strb r0, [r1] + subs r0, #0xa + bl ModHealth + adds r0, r6, #0 + movs r1, #0x7a + bl sub_0800449C +_08024F46: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08024F48: .4byte gPlayerEntity +_08024F4C: .4byte gPlayerState + + .syntax divided diff --git a/asm/pesto.s b/asm/pesto.s deleted file mode 100644 index 63c9018b..00000000 --- a/asm/pesto.s +++ /dev/null @@ -1,2234 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Pesto -Pesto: @ 0x08023F28 - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _08023F40 @ =gUnk_080CBEC4 - bl GetNextFunction - lsls r0, r0, #2 - adds r0, r0, r4 - ldr r1, [r0] - adds r0, r5, #0 - bl _call_via_r1 - pop {r4, r5, pc} - .align 2, 0 -_08023F40: .4byte gUnk_080CBEC4 - - thumb_func_start sub_08023F44 -sub_08023F44: @ 0x08023F44 - push {lr} - ldr r2, _08023F58 @ =gUnk_080CBEDC - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_08023F58: .4byte gUnk_080CBEDC - - thumb_func_start sub_08023F5C -sub_08023F5C: @ 0x08023F5C - push {r4, lr} - mov ip, r0 - adds r0, #0x3f - ldrb r0, [r0] - cmp r0, #0x6e - beq _08023FC8 - mov r0, ip - adds r0, #0x41 - ldrb r0, [r0] - cmp r0, #0x80 - bne _08023FD0 - mov r1, ip - adds r1, #0x86 - movs r0, #0x30 - strb r0, [r1] - mov r2, ip - adds r2, #0x83 - ldrb r1, [r2] - movs r0, #0xf - ands r0, r1 - adds r4, r2, #0 - cmp r0, #3 - bne _08023FD0 - mov r1, ip - ldrb r0, [r1, #0xc] - cmp r0, #6 - bne _08023FD0 - subs r2, #3 - ldrb r0, [r2] - cmp r0, #1 - beq _08023FA0 - cmp r0, #2 - beq _08023FB8 - b _08023FD0 -_08023FA0: - movs r0, #0 - ldr r1, _08023FC4 @ =0x0000FFF0 - mov r3, ip - strh r1, [r3, #0x36] - adds r3, #0x82 - strb r0, [r3] - mov r0, ip - adds r0, #0x78 - strh r1, [r0] - ldrb r0, [r2] - adds r0, #1 - strb r0, [r2] -_08023FB8: - ldrb r1, [r4] - movs r0, #0x7f - ands r0, r1 - strb r0, [r4] - b _08023FD0 - .align 2, 0 -_08023FC4: .4byte 0x0000FFF0 -_08023FC8: - mov r1, ip - adds r1, #0x45 - movs r0, #0 - strb r0, [r1] -_08023FD0: - ldr r1, _08023FDC @ =gUnk_080CBEC4 - mov r0, ip - bl sub_0804AA30 - pop {r4, pc} - .align 2, 0 -_08023FDC: .4byte gUnk_080CBEC4 - - thumb_func_start sub_08023FE0 -sub_08023FE0: @ 0x08023FE0 - push {r4, lr} - adds r4, r0, #0 - bl sub_08001324 - - thumb_func_start sub_08023FE8 -sub_08023FE8: @ 0x08023FE8 - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - - thumb_func_start sub_08023FF0 -sub_08023FF0: @ 0x08023FF0 - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xd] - cmp r0, #2 - bhi _08024022 - adds r0, r4, #0 - bl sub_0806F520 - cmp r0, #0 - bne _08024022 - movs r2, #1 - strb r2, [r4, #0xc] - strb r0, [r4, #0xd] - ldrb r1, [r4, #0x10] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r4, #0x10] - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x77 - strb r0, [r1] - strb r2, [r4, #0xe] - movs r0, #0x40 - strh r0, [r4, #0x24] - b _08024032 -_08024022: - ldr r0, _08024034 @ =gUnk_080CBEF8 - ldrb r1, [r4, #0xd] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 -_08024032: - pop {r4, pc} - .align 2, 0 -_08024034: .4byte gUnk_080CBEF8 - - thumb_func_start sub_08024038 -sub_08024038: @ 0x08024038 - push {lr} - movs r1, #1 - strb r1, [r0, #0xd] - movs r1, #0x3c - strb r1, [r0, #0x1d] - bl GetNextFrame - pop {pc} - - thumb_func_start sub_08024048 -sub_08024048: @ 0x08024048 - push {r4, lr} - adds r4, r0, #0 - bl sub_0806F4E8 - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - - thumb_func_start sub_08024058 -sub_08024058: @ 0x08024058 - push {lr} - bl sub_0806F3E4 - pop {pc} - - thumb_func_start sub_08024060 -sub_08024060: @ 0x08024060 - push {lr} - adds r3, r0, #0 - adds r2, r3, #0 - adds r2, #0x3f - ldrb r0, [r2] - cmp r0, #0x6e - beq _0802408C - ldrb r1, [r3, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r3, #0x10] - movs r0, #0x6e - strb r0, [r2] - ldr r0, _08024094 @ =gPlayerEntity - ldrb r1, [r0, #0x19] - lsrs r1, r1, #6 - lsls r1, r1, #6 - ldrb r2, [r3, #0x19] - movs r0, #0x3f - ands r0, r2 - orrs r0, r1 - strb r0, [r3, #0x19] -_0802408C: - adds r0, r3, #0 - bl GetNextFrame - pop {pc} - .align 2, 0 -_08024094: .4byte gPlayerEntity - - thumb_func_start nullsub_138 -nullsub_138: @ 0x08024098 - bx lr - .align 2, 0 - - thumb_func_start sub_0802409C -sub_0802409C: @ 0x0802409C - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x45 - movs r0, #0 - strb r0, [r1] - ldrb r1, [r4, #0x14] - adds r0, r4, #0 - bl InitializeAnimation - adds r0, r4, #0 - bl CreateDust - pop {r4, pc} - - thumb_func_start sub_080240B8 -sub_080240B8: @ 0x080240B8 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - bl Random - movs r1, #0xc0 - ands r1, r0 - lsrs r7, r1, #3 - adds r0, r4, #0 - bl sub_0804A720 - movs r1, #0 - movs r0, #1 - strb r0, [r4, #0xc] - strb r1, [r4, #0xd] - adds r0, r4, #0 - adds r0, #0x80 - strb r1, [r0] - movs r0, #8 - ands r0, r7 - cmp r0, #0 - beq _080240FC - movs r0, #0x32 - ldrsh r1, [r4, r0] - movs r0, #0x10 - ands r0, r7 - cmp r0, #0 - beq _080240F4 - adds r0, r1, #0 - subs r0, #0x20 - b _080240F8 -_080240F4: - adds r0, r1, #0 - adds r0, #0x20 -_080240F8: - strh r0, [r4, #0x32] - b _08024114 -_080240FC: - movs r0, #0x2e - ldrsh r1, [r4, r0] - movs r0, #0x10 - ands r0, r7 - cmp r0, #0 - beq _0802410E - adds r0, r1, #0 - subs r0, #0x20 - b _08024112 -_0802410E: - adds r0, r1, #0 - adds r0, #0x20 -_08024112: - strh r0, [r4, #0x2e] -_08024114: - ldrb r0, [r4, #0xa] - cmp r0, #0 - beq _08024120 - cmp r0, #1 - beq _0802412C - b _08024136 -_08024120: - adds r1, r4, #0 - adds r1, #0x78 - ldr r0, _08024128 @ =0x0000FFF0 - b _08024132 - .align 2, 0 -_08024128: .4byte 0x0000FFF0 -_0802412C: - adds r1, r4, #0 - adds r1, #0x78 - ldr r0, _080241BC @ =0x0000FFD0 -_08024132: - strh r0, [r1] - strh r0, [r4, #0x36] -_08024136: - adds r0, r4, #0 - bl UpdateSpriteForCollisionLayer - bl CheckIsDungeon - cmp r0, #0 - beq _08024150 - ldrb r0, [r4, #0x1b] - movs r1, #0x3f - ands r1, r0 - movs r0, #0x40 - orrs r1, r0 - strb r1, [r4, #0x1b] -_08024150: - bl Random - movs r1, #0x40 - ands r0, r1 - adds r1, r4, #0 - adds r1, #0x81 - movs r6, #0 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x82 - strb r6, [r0] - adds r5, r4, #0 - adds r5, #0x83 - movs r0, #0x80 - strb r0, [r5] - adds r0, r4, #0 - adds r0, #0x86 - strb r6, [r0] - adds r0, #1 - strb r6, [r0] - strb r6, [r4, #0xe] - movs r0, #0x20 - strb r0, [r4, #0xf] - adds r2, r4, #0 - adds r2, #0x3c - ldrb r1, [r2] - movs r0, #0x10 - orrs r0, r1 - strb r0, [r2] - movs r0, #2 - strb r0, [r4, #0x1c] - strb r7, [r4, #0x15] - adds r0, r4, #0 - bl sub_080249DC - ldrb r0, [r4, #0xa] - cmp r0, #1 - bne _080241B8 - strb r6, [r5] - ldrb r2, [r5] - adds r0, r4, #0 - movs r1, #6 - bl sub_0804A98C - adds r1, r0, #0 - cmp r1, #0 - beq _080241B8 - str r1, [r4, #0x54] - str r4, [r1, #0x50] - ldrh r0, [r1, #0x32] - adds r0, #0x10 - strh r0, [r1, #0x32] -_080241B8: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_080241BC: .4byte 0x0000FFD0 - - thumb_func_start sub_080241C0 -sub_080241C0: @ 0x080241C0 - push {r4, r5, r6, lr} - adds r4, r0, #0 - bl sub_08024940 - adds r6, r4, #0 - adds r6, #0x80 - ldrb r5, [r6] - cmp r5, #0 - beq _080241D8 - cmp r5, #1 - beq _08024238 - b _08024296 -_080241D8: - ldr r0, _08024218 @ =gPlayerState - ldrb r0, [r0, #0xf] - movs r2, #0x40 - cmp r0, #0 - beq _080241E4 - movs r2, #0xa0 -_080241E4: - adds r0, r4, #0 - movs r1, #3 - bl PlayerInRange - cmp r0, #0 - beq _08024220 - adds r0, r4, #0 - movs r1, #3 - bl sub_08049FDC - cmp r0, #0 - beq _08024220 - ldr r0, _0802421C @ =gPlayerEntity - ldrb r0, [r0, #0xc] - cmp r0, #0x1e - beq _08024220 - ldrb r0, [r6] - adds r0, #1 - strb r0, [r6] - strh r5, [r4, #0x24] - adds r0, r4, #0 - movs r1, #3 - movs r2, #0xa - bl sub_08024A14 - b _08024296 - .align 2, 0 -_08024218: .4byte gPlayerState -_0802421C: .4byte gPlayerEntity -_08024220: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08024296 - adds r0, r4, #0 - movs r1, #0 - movs r2, #0x20 - bl sub_08024A14 - b _08024296 -_08024238: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08024296 - ldrb r0, [r4, #0xa] - cmp r0, #0 - beq _08024290 - adds r5, r4, #0 - adds r5, #0x83 - ldrb r1, [r5] - movs r0, #0x80 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - beq _0802426C - adds r0, r4, #0 - bl sub_08024C94 - ldrb r0, [r5] - movs r1, #0x40 - orrs r0, r1 - strb r0, [r5] - b _08024296 -_0802426C: - movs r0, #3 - strb r0, [r4, #0xc] - strb r1, [r6] - movs r0, #0xa - strb r0, [r4, #0xf] - adds r0, r4, #0 - movs r1, #0 - bl sub_08024E00 - adds r0, r4, #0 - bl sub_08024E1C - ldrb r2, [r4, #0xf] - adds r0, r4, #0 - movs r1, #3 - bl sub_08024A14 - b _08024296 -_08024290: - adds r0, r4, #0 - bl sub_08024C94 -_08024296: - pop {r4, r5, r6, pc} - - thumb_func_start sub_08024298 -sub_08024298: @ 0x08024298 - push {lr} - bl sub_08024D00 - pop {pc} - - thumb_func_start sub_080242A0 -sub_080242A0: @ 0x080242A0 - push {r4, r5, lr} - adds r4, r0, #0 - bl sub_08024940 - adds r0, r4, #0 - bl sub_08024CC0 - cmp r0, #0 - beq _08024334 - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - movs r1, #0xff - lsls r0, r0, #0x18 - lsrs r5, r0, #0x18 - cmp r5, #0 - bne _080242F0 - ldr r0, _080242E4 @ =gUnk_020000B0 - ldr r1, [r0] - adds r0, r4, #0 - bl GetFacingDirection - strb r0, [r4, #0x15] - adds r0, r4, #0 - movs r1, #1 - bl sub_08024E00 - movs r1, #0x24 - ldrsh r0, [r4, r1] - cmp r0, #0 - beq _080242E8 - strh r5, [r4, #0x24] - b _08024306 - .align 2, 0 -_080242E4: .4byte gUnk_020000B0 -_080242E8: - adds r0, r4, #0 - bl sub_08024E1C - b _08024306 -_080242F0: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - ands r0, r1 - cmp r0, #0 - bne _08024306 - adds r0, r4, #0 - movs r1, #3 - movs r2, #0xa - bl sub_08024A14 -_08024306: - ldr r0, _08024338 @ =gUnk_020000B0 - ldr r1, [r0] - adds r0, r4, #0 - movs r2, #0x20 - bl sub_08049F1C - cmp r0, #0 - beq _08024334 - adds r0, r4, #0 - movs r1, #3 - bl sub_08049FDC - cmp r0, #0 - beq _08024334 - movs r1, #0 - movs r0, #4 - strb r0, [r4, #0xc] - adds r0, r4, #0 - adds r0, #0x80 - strb r1, [r0] - movs r0, #0x10 - strb r0, [r4, #0xe] - strh r1, [r4, #0x24] -_08024334: - pop {r4, r5, pc} - .align 2, 0 -_08024338: .4byte gUnk_020000B0 - - thumb_func_start sub_0802433C -sub_0802433C: @ 0x0802433C - push {r4, lr} - adds r4, r0, #0 - bl sub_08024940 - adds r2, r4, #0 - adds r2, #0x80 - ldrb r0, [r2] - cmp r0, #0 - beq _08024354 - cmp r0, #1 - beq _0802437A - b _080243B6 -_08024354: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080243B6 - ldrb r0, [r2] - adds r0, #1 - strb r0, [r2] - movs r0, #0x80 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - movs r0, #8 - strb r0, [r4, #0xf] - adds r0, r4, #0 - movs r1, #1 - bl sub_08024E00 - b _080243B6 -_0802437A: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - movs r3, #0xff - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _080243A0 - movs r0, #5 - strb r0, [r4, #0xc] - strb r1, [r2] - movs r0, #0xa0 - lsls r0, r0, #1 - strh r0, [r4, #0x24] - movs r0, #0xc0 - strb r0, [r4, #0xe] - movs r0, #8 - strb r0, [r4, #0xf] - b _080243B6 -_080243A0: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - ands r0, r3 - cmp r0, #0 - bne _080243B6 - adds r0, r4, #0 - movs r1, #2 - movs r2, #4 - bl sub_08024A14 -_080243B6: - pop {r4, pc} - - thumb_func_start sub_080243B8 -sub_080243B8: @ 0x080243B8 - push {r4, r5, lr} - adds r4, r0, #0 - bl sub_08024940 - adds r5, r4, #0 - adds r5, #0x80 - ldrb r0, [r5] - cmp r0, #1 - beq _0802446A - cmp r0, #1 - bgt _080243D4 - cmp r0, #0 - beq _080243DA - b _080244E4 -_080243D4: - cmp r0, #2 - beq _08024486 - b _080244E4 -_080243DA: - adds r0, r4, #0 - movs r1, #1 - bl sub_08024C48 - cmp r0, #0 - beq _08024462 - ldr r0, [r4, #0x54] - cmp r0, #0 - beq _080243F2 - ldr r0, [r0, #4] - cmp r0, #0 - bne _08024406 -_080243F2: - movs r0, #2 - strb r0, [r5] - movs r0, #0x20 - strb r0, [r4, #0xe] - movs r1, #0x80 - strh r1, [r4, #0x24] - adds r0, r4, #0 - adds r0, #0x83 - strb r1, [r0] - b _080244E4 -_08024406: - ldr r0, _08024434 @ =gUnk_020000B0 - ldr r1, [r0] - adds r0, r4, #0 - movs r2, #0xe - bl sub_08049F1C - cmp r0, #0 - beq _08024438 - ldrb r0, [r5] - adds r0, #1 - strb r0, [r5] - movs r0, #0x1e - strb r0, [r4, #0xe] - adds r0, #0xe2 - strh r0, [r4, #0x24] - adds r1, r4, #0 - adds r1, #0x83 - movs r0, #0x80 - strb r0, [r1] - ldr r1, [r4, #0x54] - movs r0, #2 - strb r0, [r1, #0xc] - b _080244E4 - .align 2, 0 -_08024434: .4byte gUnk_020000B0 -_08024438: - ldrb r0, [r4, #0xe] - subs r2, r0, #1 - strb r2, [r4, #0xe] - movs r1, #0xff - lsls r0, r2, #0x18 - cmp r0, #0 - beq _08024462 - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - ands r0, r1 - cmp r0, #0 - bne _080244E4 - lsls r2, r2, #0x18 - lsrs r2, r2, #0x1e - adds r2, #1 - adds r0, r4, #0 - movs r1, #2 - bl sub_08024A14 - b _080244E4 -_08024462: - adds r0, r4, #0 - bl sub_08024C7C - b _080244E4 -_0802446A: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080244E4 - ldrb r0, [r5] - adds r0, #1 - strb r0, [r5] - movs r0, #0x20 - strb r0, [r4, #0xe] - movs r0, #0x80 - strh r0, [r4, #0x24] - b _080244E4 -_08024486: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _080244E4 - movs r0, #6 - strb r0, [r4, #0xc] - strb r1, [r5] - movs r0, #0x80 - strh r0, [r4, #0x24] - adds r0, r4, #0 - bl sub_08024B38 - adds r0, r4, #0 - adds r0, #0x83 - ldrb r1, [r0] - movs r2, #0x40 - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - bne _080244D8 - movs r0, #0x3f - ands r0, r1 - cmp r0, #1 - beq _080244C4 - cmp r0, #3 - bne _080244C8 - movs r0, #4 - b _080244CA -_080244C4: - movs r0, #0x14 - b _080244CA -_080244C8: - movs r0, #0x30 -_080244CA: - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #2 - movs r2, #8 - bl sub_08024A14 - b _080244E4 -_080244D8: - strb r2, [r4, #0xe] - adds r0, r4, #0 - movs r1, #0 - movs r2, #8 - bl sub_08024A14 -_080244E4: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080244E8 -sub_080244E8: @ 0x080244E8 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r5, r0, #0 - bl sub_08024940 - adds r0, r5, #0 - adds r0, #0x80 - ldrb r0, [r0] - cmp r0, #7 - bls _08024502 - b _08024924 -_08024502: - lsls r0, r0, #2 - ldr r1, _0802450C @ =_08024510 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802450C: .4byte _08024510 -_08024510: @ jump table - .4byte _08024530 @ case 0 - .4byte _080245A6 @ case 1 - .4byte _080245E4 @ case 2 - .4byte _080247F4 @ case 3 - .4byte _08024818 @ case 4 - .4byte _08024836 @ case 5 - .4byte _080248AE @ case 6 - .4byte _0802490A @ case 7 -_08024530: - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - movs r1, #0xff - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08024592 - movs r1, #0x2e - ldrsh r0, [r5, r1] - ldr r2, _08024584 @ =gRoomControls - ldrh r1, [r2, #6] - subs r0, r0, r1 - asrs r0, r0, #4 - movs r3, #0x3f - ands r0, r3 - movs r4, #0x32 - ldrsh r1, [r5, r4] - ldrh r2, [r2, #8] - subs r1, r1, r2 - asrs r1, r1, #4 - ands r1, r3 - lsls r1, r1, #6 - orrs r0, r1 - movs r1, #1 - bl sub_080002E0 - adds r2, r0, #0 - cmp r2, #0 - bne _08024588 - adds r0, r5, #0 - adds r0, #0x80 - ldrb r1, [r0] - adds r1, #1 - strb r1, [r0] - adds r1, r5, #0 - adds r1, #0x82 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - strb r2, [r5, #0xf] - strh r2, [r5, #0x24] - b _08024924 - .align 2, 0 -_08024584: .4byte gRoomControls -_08024588: - movs r0, #0x30 - strb r0, [r5, #0xe] - movs r0, #4 - strb r0, [r5, #0xf] - b _08024924 -_08024592: - ldrb r0, [r5, #0xf] - subs r0, #1 - strb r0, [r5, #0xf] - ands r0, r1 - cmp r0, #0 - beq _080245A0 - b _08024924 -_080245A0: - adds r0, r5, #0 - movs r1, #1 - b _08024902 -_080245A6: - ldrh r0, [r5, #0x36] - adds r0, #1 - strh r0, [r5, #0x36] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r2, #0x10 - rsbs r2, r2, #0 - cmp r0, r2 - bge _080245BA - b _08024924 -_080245BA: - adds r1, r5, #0 - adds r1, #0x82 - movs r0, #0 - strb r0, [r1] - adds r0, r5, #0 - adds r0, #0x78 - strh r2, [r0] - adds r0, r5, #0 - bl sub_08024AD8 - cmp r0, #0 - beq _080245D4 - b _0802482A -_080245D4: - adds r0, r5, #0 - bl sub_08024C94 - adds r2, r5, #0 - adds r2, #0x83 - ldrb r0, [r2] - movs r1, #0x40 - b _080247EE -_080245E4: - adds r0, r5, #0 - bl sub_08024AD8 - cmp r0, #0 - bne _080245F0 - b _080247E0 -_080245F0: - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - movs r2, #0xff - lsls r0, r0, #0x18 - lsrs r1, r0, #0x18 - cmp r1, #0 - bne _0802462C - movs r7, #0x24 - ldrsh r0, [r5, r7] - cmp r0, #0 - beq _0802460C - strh r1, [r5, #0x24] - b _08024612 -_0802460C: - adds r0, r5, #0 - bl sub_08024E1C -_08024612: - ldr r1, [r5, #0x54] - adds r0, r5, #0 - bl GetFacingDirection - strb r0, [r5, #0x15] - adds r0, r5, #0 - movs r1, #0 - bl sub_08024E00 - adds r0, r5, #0 - bl sub_080249DC - b _08024642 -_0802462C: - ldrb r0, [r5, #0xf] - subs r0, #1 - strb r0, [r5, #0xf] - ands r0, r2 - cmp r0, #0 - bne _08024642 - adds r0, r5, #0 - movs r1, #1 - movs r2, #8 - bl sub_08024A14 -_08024642: - adds r6, r5, #0 - adds r6, #0x83 - ldrb r1, [r6] - movs r0, #0x3f - mov sb, r0 - ands r0, r1 - cmp r0, #2 - beq _0802474C - cmp r0, #2 - bgt _0802465C - cmp r0, #1 - beq _080246E4 - b _08024924 -_0802465C: - cmp r0, #3 - beq _08024662 - b _08024924 -_08024662: - movs r0, #0x80 - ands r0, r1 - lsls r0, r0, #0x18 - lsrs r2, r0, #0x18 - cmp r2, #0 - beq _08024670 - b _08024924 -_08024670: - adds r1, r5, #0 - adds r1, #0x80 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - movs r0, #0xc - strb r0, [r5, #0xe] - movs r0, #0x10 - strb r0, [r5, #0x15] - movs r4, #0 - strh r2, [r5, #0x24] - adds r0, r5, #0 - adds r0, #0x84 - strb r4, [r0] - adds r2, r5, #0 - adds r2, #0x3b - ldrb r1, [r2] - movs r0, #0xfc - ands r0, r1 - strb r0, [r2] - adds r0, r5, #0 - bl sub_080249DC - ldr r2, _080246DC @ =gPlayerEntity - adds r0, r2, #0 - adds r0, #0x29 - ldrb r0, [r0] - lsls r0, r0, #0x1a - lsrs r0, r0, #0x1d - adds r1, r5, #0 - adds r1, #0x85 - strb r0, [r1] - ldrb r1, [r2, #0x10] - movs r0, #0x7f - ands r0, r1 - strb r0, [r2, #0x10] - ldr r2, _080246E0 @ =gPlayerState - ldr r0, [r2, #0x30] - movs r1, #0x80 - lsls r1, r1, #1 - orrs r0, r1 - str r0, [r2, #0x30] - ldrb r1, [r2, #0xa] - movs r0, #0x80 - orrs r0, r1 - strb r0, [r2, #0xa] - adds r2, #0x26 - ldrb r0, [r2] - cmp r0, #0 - bne _080246D6 - b _08024924 -_080246D6: - strb r4, [r2] - b _08024924 - .align 2, 0 -_080246DC: .4byte gPlayerEntity -_080246E0: .4byte gPlayerState -_080246E4: - ldr r1, [r5, #0x54] - adds r0, r5, #0 - movs r2, #6 - movs r3, #6 - bl sub_080041A0 - cmp r0, #0 - bne _080246F6 - b _08024924 -_080246F6: - adds r1, r5, #0 - adds r1, #0x80 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - movs r0, #0xc - strb r0, [r5, #0xe] - ldrb r1, [r6] - movs r0, #0x7f - ands r0, r1 - strb r0, [r6] - ldr r0, [r5, #0x54] - adds r1, r5, #0 - bl CopyPosition - ldrh r0, [r5, #0x36] - subs r0, #0xe - strh r0, [r5, #0x36] - adds r1, r5, #0 - adds r1, #0x78 - ldrh r0, [r1] - subs r0, #0xe - strh r0, [r1] - ldrb r2, [r6] - adds r0, r5, #0 - movs r1, #6 - bl sub_0804A98C - adds r4, r0, #0 - cmp r4, #0 - bne _08024736 - b _08024924 -_08024736: - str r5, [r4, #0x50] - ldrh r0, [r4, #0x36] - adds r0, #0xe - strh r0, [r4, #0x36] - ldr r1, [r5, #0x54] - str r1, [r4, #0x54] - adds r0, r4, #0 - bl CopyPosition - str r4, [r5, #0x54] - b _08024924 -_0802474C: - ldr r1, [r5, #0x54] - adds r0, r5, #0 - movs r2, #6 - movs r3, #6 - bl sub_080041A0 - cmp r0, #0 - bne _0802475E - b _08024924 -_0802475E: - adds r1, r5, #0 - adds r1, #0x80 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - movs r0, #0xc - strb r0, [r5, #0xe] - ldrb r1, [r6] - movs r0, #0x7f - ands r0, r1 - strb r0, [r6] - ldr r4, [r5, #0x54] - adds r0, r4, #0 - adds r0, #0x70 - ldrh r0, [r0] - movs r2, #0x2e - ldrsh r1, [r4, r2] - ldr r3, _080247DC @ =gRoomControls - ldrh r2, [r3, #6] - subs r1, r1, r2 - asrs r1, r1, #4 - mov r7, sb - ands r1, r7 - movs r7, #0x32 - ldrsh r2, [r4, r7] - ldrh r3, [r3, #8] - subs r2, r2, r3 - asrs r2, r2, #4 - mov r3, sb - ands r2, r3 - lsls r2, r2, #6 - orrs r1, r2 - adds r2, r4, #0 - adds r2, #0x38 - ldrb r2, [r2] - bl SetTile - adds r0, r4, #0 - bl DeleteEntity - ldrh r0, [r5, #0x36] - subs r0, #0xe - strh r0, [r5, #0x36] - adds r1, r5, #0 - adds r1, #0x78 - ldrh r0, [r1] - subs r0, #0xe - strh r0, [r1] - ldrb r2, [r6] - adds r0, r5, #0 - movs r1, #6 - bl sub_0804A98C - adds r4, r0, #0 - cmp r4, #0 - bne _080247D0 - b _08024924 -_080247D0: - str r5, [r4, #0x50] - ldrh r0, [r4, #0x36] - adds r0, #0xe - strh r0, [r4, #0x36] - str r4, [r5, #0x54] - b _08024924 - .align 2, 0 -_080247DC: .4byte gRoomControls -_080247E0: - adds r0, r5, #0 - bl sub_08024C94 - adds r2, r5, #0 - adds r2, #0x83 - ldrb r1, [r2] - movs r0, #0x40 -_080247EE: - orrs r0, r1 - strb r0, [r2] - b _08024924 -_080247F4: - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - lsls r0, r0, #0x18 - lsrs r2, r0, #0x18 - cmp r2, #0 - beq _08024804 - b _08024924 -_08024804: - adds r0, r5, #0 - adds r0, #0x80 - ldrb r1, [r0] - adds r1, #1 - strb r1, [r0] - strb r2, [r5, #0xf] - strh r2, [r5, #0x24] - adds r1, r5, #0 - adds r1, #0x82 - b _0802482E -_08024818: - ldrh r0, [r5, #0x36] - subs r0, #2 - strh r0, [r5, #0x36] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - movs r1, #0x3c - rsbs r1, r1, #0 - cmp r0, r1 - bge _08024924 -_0802482A: - adds r1, r5, #0 - adds r1, #0x80 -_0802482E: - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - b _08024924 -_08024836: - ldrh r2, [r5, #0x36] - movs r4, #0x36 - ldrsh r1, [r5, r4] - movs r0, #0x30 - rsbs r0, r0, #0 - cmp r1, r0 - bge _0802484A - adds r0, r2, #1 - strh r0, [r5, #0x36] - b _08024924 -_0802484A: - adds r1, r5, #0 - adds r1, #0x82 - ldrb r0, [r1] - cmp r0, #0 - beq _0802485E - movs r0, #0 - strb r0, [r1] - subs r1, #0xa - ldr r0, _08024884 @ =0x0000FFD0 - strh r0, [r1] -_0802485E: - adds r0, r5, #0 - adds r0, #0x83 - ldrb r0, [r0] - cmp r0, #1 - blt _080248A6 - cmp r0, #2 - ble _08024888 - cmp r0, #3 - bne _080248A6 - adds r0, r5, #0 - adds r0, #0x84 - ldrb r0, [r0] - cmp r0, #0x2f - bls _08024924 - adds r0, r5, #0 - bl sub_08024F50 - b _08024924 - .align 2, 0 -_08024884: .4byte 0x0000FFD0 -_08024888: - adds r1, r5, #0 - adds r1, #0x80 - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - movs r0, #0xc0 - strb r0, [r5, #0xe] - movs r0, #8 - strb r0, [r5, #0xf] - movs r0, #0x80 - strh r0, [r5, #0x24] - adds r0, r5, #0 - bl sub_080249DC - b _08024924 -_080248A6: - adds r0, r5, #0 - bl sub_08024C7C - b _08024924 -_080248AE: - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - movs r1, #0xff - lsls r0, r0, #0x18 - lsrs r3, r0, #0x18 - cmp r3, #0 - bne _080248F2 - adds r2, r5, #0 - adds r2, #0x83 - ldrb r1, [r2] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _080248E8 - movs r0, #0xc0 - strb r0, [r2] - adds r0, r5, #0 - adds r0, #0x80 - strb r3, [r0] - movs r1, #0x40 - movs r0, #0x40 - strh r0, [r5, #0x24] - strb r1, [r5, #0xe] - movs r0, #8 - strb r0, [r5, #0xf] - adds r0, r5, #0 - movs r1, #0 - b _08024902 -_080248E8: - movs r0, #0x40 - strb r0, [r5, #0xe] - movs r0, #8 - strb r0, [r5, #0xf] - b _08024924 -_080248F2: - ldrb r0, [r5, #0xf] - subs r0, #1 - strb r0, [r5, #0xf] - ands r0, r1 - cmp r0, #0 - bne _08024924 - adds r0, r5, #0 - movs r1, #2 -_08024902: - movs r2, #8 - bl sub_08024A14 - b _08024924 -_0802490A: - ldr r0, _0802493C @ =gPlayerEntity - movs r7, #0x36 - ldrsh r1, [r0, r7] - cmp r1, #0 - bne _08024924 - adds r0, r5, #0 - adds r0, #0x80 - strb r1, [r0] - movs r0, #0x80 - strh r0, [r5, #0x24] - adds r0, r5, #0 - bl sub_08024B38 -_08024924: - adds r0, r5, #0 - adds r0, #0x83 - ldrb r0, [r0] - cmp r0, #3 - bne _08024934 - adds r0, r5, #0 - bl sub_08024E4C -_08024934: - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_0802493C: .4byte gPlayerEntity - - thumb_func_start sub_08024940 -sub_08024940: @ 0x08024940 - push {r4, r5, lr} - adds r4, r0, #0 - bl Random - adds r5, r0, #0 - movs r0, #0x70 - ands r5, r0 - ldrh r0, [r4, #0x2a] - cmp r0, #0 - beq _08024962 - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_0800417E - adds r0, r4, #0 - bl sub_080249F4 -_08024962: - adds r0, r4, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #0 - bne _0802497C - adds r0, r4, #0 - adds r0, #0x78 - ldrh r0, [r0] - strh r0, [r4, #0x36] - cmp r5, #0 - beq _0802497C - adds r0, #2 - strh r0, [r4, #0x36] -_0802497C: - ldrb r0, [r4, #0xb] - cmp r0, #0 - bne _0802498A - bl CheckIsDungeon - cmp r0, #0 - beq _080249CE -_0802498A: - adds r0, r4, #0 - bl sub_08049FA0 - cmp r0, #0 - bne _080249A2 - adds r0, r4, #0 - bl sub_08049EE4 - strb r0, [r4, #0x15] - adds r0, r4, #0 - bl sub_080249F4 -_080249A2: - movs r0, #0x36 - ldrsh r1, [r4, r0] - movs r0, #0x20 - rsbs r0, r0, #0 - cmp r1, r0 - bge _080249BC - adds r2, r4, #0 - adds r2, #0x29 - ldrb r1, [r2] - adds r0, #0x18 - ands r0, r1 - strb r0, [r2] - b _080249CE -_080249BC: - adds r2, r4, #0 - adds r2, #0x29 - ldrb r0, [r2] - movs r1, #8 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #1 - orrs r1, r0 - strb r1, [r2] -_080249CE: - adds r0, r4, #0 - bl sub_080AEFB4 - adds r0, r4, #0 - bl GetNextFrame - pop {r4, r5, pc} - - thumb_func_start sub_080249DC -sub_080249DC: @ 0x080249DC - push {lr} - ldrb r1, [r0, #0x15] - adds r1, #2 - movs r2, #0x1c - ands r1, r2 - lsrs r1, r1, #2 - strb r1, [r0, #0x14] - ldrb r1, [r0, #0x14] - bl InitializeAnimation - pop {pc} - .align 2, 0 - - thumb_func_start sub_080249F4 -sub_080249F4: @ 0x080249F4 - push {lr} - adds r2, r0, #0 - ldrb r0, [r2, #0x15] - adds r1, r0, #2 - movs r0, #0x1f - ands r1, r0 - lsrs r1, r1, #2 - ldrb r0, [r2, #0x14] - cmp r1, r0 - beq _08024A12 - strb r1, [r2, #0x14] - ldrb r1, [r2, #0x14] - adds r0, r2, #0 - bl InitializeAnimation -_08024A12: - pop {pc} - - thumb_func_start sub_08024A14 -sub_08024A14: @ 0x08024A14 - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r5, r1, #0 - adds r7, r2, #0 - movs r6, #0 - cmp r5, #1 - beq _08024A40 - cmp r5, #1 - blo _08024A30 - cmp r5, #2 - beq _08024A5E - cmp r5, #3 - beq _08024A84 - b _08024A9E -_08024A30: - adds r0, r4, #0 - bl sub_08049EE4 - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08004596 - b _08024A9C -_08024A40: - adds r0, r4, #0 - movs r1, #0 - bl sub_08024C48 - cmp r0, #0 - beq _08024A9E - ldr r1, [r4, #0x54] - adds r0, r4, #0 - bl GetFacingDirection - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08004596 - b _08024A9C -_08024A5E: - adds r0, r4, #0 - movs r1, #1 - bl sub_08024C48 - cmp r0, #0 - beq _08024A9E - ldr r0, _08024A80 @ =gUnk_020000B0 - ldr r1, [r0] - adds r0, r4, #0 - bl GetFacingDirection - adds r1, r0, #0 - adds r0, r4, #0 - bl sub_08004596 - b _08024A9C - .align 2, 0 -_08024A80: .4byte gUnk_020000B0 -_08024A84: - adds r0, r4, #0 - movs r1, #1 - bl sub_08024C48 - cmp r0, #0 - beq _08024A9E - ldr r0, _08024AD4 @ =gUnk_020000B0 - ldr r1, [r0] - adds r0, r4, #0 - bl GetFacingDirection - strb r0, [r4, #0x15] -_08024A9C: - movs r6, #1 -_08024A9E: - cmp r5, #0 - beq _08024ABA - adds r0, r4, #0 - bl sub_08049FA0 - cmp r0, #0 - bne _08024ABA - bl Random - movs r1, #3 - ands r1, r0 - cmp r1, #0 - beq _08024ABA - movs r6, #0 -_08024ABA: - cmp r6, #0 - bne _08024AC8 - adds r0, r4, #0 - movs r1, #0 - adds r2, r7, #0 - bl sub_08024A14 -_08024AC8: - adds r0, r4, #0 - bl sub_080249DC - strb r7, [r4, #0xf] - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08024AD4: .4byte gUnk_020000B0 - - thumb_func_start sub_08024AD8 -sub_08024AD8: @ 0x08024AD8 - push {r4, lr} - adds r4, r0, #0 - adds r3, r4, #0 - adds r3, #0x83 - ldrb r2, [r3] - movs r0, #0x40 - ands r0, r2 - cmp r0, #0 - bne _08024B2A - movs r1, #0 - movs r0, #0x3f - ands r0, r2 - cmp r0, #3 - bne _08024B12 - ldr r0, _08024B0C @ =gPlayerState - ldrb r0, [r0, #0xf] - cmp r0, #0 - bne _08024B10 - ldr r0, [r4, #0x54] - str r1, [r0, #0x50] - str r1, [r4, #0x54] - movs r0, #0xc0 - strb r0, [r3] - movs r0, #0 - b _08024B34 - .align 2, 0 -_08024B0C: .4byte gPlayerState -_08024B10: - movs r1, #1 -_08024B12: - adds r0, r4, #0 - bl sub_08024C48 - cmp r0, #0 - bne _08024B32 - str r0, [r4, #0x54] - adds r1, r4, #0 - adds r1, #0x83 - movs r0, #0xc0 - strb r0, [r1] - movs r0, #0 - b _08024B34 -_08024B2A: - adds r0, r4, #0 - bl sub_08024B38 - b _08024B34 -_08024B32: - movs r0, #1 -_08024B34: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08024B38 -sub_08024B38: @ 0x08024B38 - push {r4, r5, r6, r7, lr} - adds r5, r0, #0 - movs r7, #0 - ldr r0, _08024B5C @ =gPlayerState - ldrb r3, [r0, #0xf] - adds r2, r3, #0 - adds r1, r0, #0 - cmp r2, #0 - beq _08024BA0 - adds r0, #0x26 - ldrb r0, [r0] - cmp r0, #1 - bne _08024B62 - cmp r2, #3 - bls _08024B60 - subs r0, r3, #3 - strb r0, [r1, #0xf] - b _08024B62 - .align 2, 0 -_08024B5C: .4byte gPlayerState -_08024B60: - strb r7, [r1, #0xf] -_08024B62: - ldrb r0, [r1, #0xf] - cmp r0, #0 - beq _08024BA0 - adds r0, r5, #0 - movs r1, #1 - bl sub_08024C48 - cmp r0, #0 - beq _08024C3C - ldr r4, _08024B9C @ =gUnk_020000B0 - ldr r1, [r4] - adds r0, r5, #0 - movs r2, #0xa0 - bl sub_08049F1C - cmp r0, #0 - beq _08024C3C - movs r7, #1 - ldr r0, [r4] - str r0, [r5, #0x54] - adds r2, r5, #0 - adds r2, #0x83 - ldrb r1, [r2] - movs r0, #3 - orrs r0, r1 - movs r1, #0xbf - ands r0, r1 - strb r0, [r2] - b _08024C3C - .align 2, 0 -_08024B9C: .4byte gUnk_020000B0 -_08024BA0: - movs r0, #8 - movs r1, #2 - movs r2, #2 - bl FindEntityInListBySubtype - adds r4, r0, #0 - cmp r4, #0 - beq _08024BF0 - adds r6, r5, #0 - adds r6, #0x83 - b _08024BC4 -_08024BB6: - adds r0, r4, #0 - movs r1, #2 - bl FindNextEntityOfSameSubtype - adds r4, r0, #0 - cmp r4, #0 - beq _08024BF0 -_08024BC4: - ldrb r0, [r4, #0xc] - cmp r0, #2 - beq _08024BB6 - movs r1, #0x36 - ldrsh r0, [r4, r1] - cmp r0, #0 - bne _08024BB6 - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0xa0 - bl sub_08049F1C - cmp r0, #0 - beq _08024BB6 - movs r7, #1 - str r4, [r5, #0x54] - ldrb r0, [r6] - movs r1, #1 - orrs r1, r0 - movs r0, #0xbf - ands r1, r0 - strb r1, [r6] -_08024BF0: - cmp r7, #0 - bne _08024C42 - movs r0, #6 - movs r1, #5 - movs r2, #6 - bl FindEntityInListBySubtype - adds r4, r0, #0 - cmp r4, #0 - beq _08024C3C - adds r6, r5, #0 - adds r6, #0x83 - b _08024C18 -_08024C0A: - adds r0, r4, #0 - movs r1, #6 - bl FindNextEntityOfSameSubtype - adds r4, r0, #0 - cmp r4, #0 - beq _08024C3C -_08024C18: - ldrb r0, [r4, #0xc] - cmp r0, #1 - bne _08024C0A - adds r0, r5, #0 - adds r1, r4, #0 - movs r2, #0xa0 - bl sub_08049F1C - cmp r0, #0 - beq _08024C0A - movs r7, #1 - str r4, [r5, #0x54] - ldrb r0, [r6] - movs r1, #2 - orrs r1, r0 - movs r0, #0xbf - ands r1, r0 - strb r1, [r6] -_08024C3C: - cmp r7, #0 - bne _08024C42 - str r7, [r5, #0x54] -_08024C42: - adds r0, r7, #0 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - - thumb_func_start sub_08024C48 -sub_08024C48: @ 0x08024C48 - push {r4, r5, lr} - adds r3, r0, #0 - movs r4, #1 - cmp r1, #0 - beq _08024C60 - movs r0, #3 - bl sub_08049DF4 - rsbs r1, r0, #0 - orrs r1, r0 - lsrs r4, r1, #0x1f - b _08024C78 -_08024C60: - ldr r2, [r3, #0x54] - cmp r2, #0 - beq _08024C74 - ldr r0, [r2, #4] - cmp r0, #0 - beq _08024C74 - movs r5, #0x36 - ldrsh r0, [r2, r5] - cmp r0, #0 - bge _08024C78 -_08024C74: - str r1, [r3, #0x54] - movs r4, #0 -_08024C78: - adds r0, r4, #0 - pop {r4, r5, pc} - - thumb_func_start sub_08024C7C -sub_08024C7C: @ 0x08024C7C - push {lr} - movs r1, #1 - strb r1, [r0, #0xc] - movs r2, #0 - movs r1, #0x40 - strh r1, [r0, #0x24] - strb r2, [r0, #0xe] - movs r1, #0 - movs r2, #0x20 - bl sub_08024A14 - pop {pc} - - thumb_func_start sub_08024C94 -sub_08024C94: @ 0x08024C94 - push {lr} - movs r2, #0 - movs r1, #2 - strb r1, [r0, #0xc] - adds r1, r0, #0 - adds r1, #0x80 - strb r2, [r1] - movs r1, #0x40 - strb r1, [r0, #0xe] - strb r2, [r0, #0xf] - movs r1, #0xc0 - strh r1, [r0, #0x24] - adds r2, r0, #0 - adds r2, #0x83 - movs r1, #0x80 - strb r1, [r2] - ldrb r2, [r0, #0xf] - movs r1, #3 - bl sub_08024A14 - pop {pc} - .align 2, 0 - - thumb_func_start sub_08024CC0 -sub_08024CC0: @ 0x08024CC0 - push {r4, r5, lr} - adds r4, r0, #0 - movs r5, #1 - movs r1, #1 - bl sub_08024C48 - cmp r0, #0 - bne _08024CD4 - movs r5, #0 - b _08024CF8 -_08024CD4: - ldr r0, _08024CFC @ =gUnk_020000B0 - ldr r1, [r0] - adds r0, r4, #0 - movs r2, #0x50 - bl sub_08049F1C - cmp r0, #0 - beq _08024CF0 - adds r0, r4, #0 - movs r1, #3 - bl sub_08049FDC - cmp r0, #0 - bne _08024CF8 -_08024CF0: - movs r5, #0 - adds r0, r4, #0 - bl sub_08024C7C -_08024CF8: - adds r0, r5, #0 - pop {r4, r5, pc} - .align 2, 0 -_08024CFC: .4byte gUnk_020000B0 - - thumb_func_start sub_08024D00 -sub_08024D00: @ 0x08024D00 - push {r4, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x86 - ldrb r0, [r1] - cmp r0, #0 - beq _08024D1A - subs r0, #1 - strb r0, [r1] - adds r0, r4, #0 - bl GetNextFrame - b _08024D20 -_08024D1A: - adds r0, r4, #0 - bl sub_08024940 -_08024D20: - adds r0, r4, #0 - adds r0, #0x83 - ldrb r1, [r0] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - beq _08024D46 - adds r0, r4, #0 - bl sub_08024B38 - cmp r0, #0 - beq _08024D46 - movs r0, #6 - strb r0, [r4, #0xc] - adds r1, r4, #0 - adds r1, #0x80 - movs r0, #2 - strb r0, [r1] - b _08024DFC -_08024D46: - adds r0, r4, #0 - bl sub_08024CC0 - cmp r0, #0 - beq _08024DFC - adds r1, r4, #0 - adds r1, #0x80 - ldrb r0, [r1] - cmp r0, #0 - beq _08024D60 - cmp r0, #1 - beq _08024DAE - b _08024DFC -_08024D60: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08024DFC - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - bl Random - movs r1, #0xf - ands r0, r1 - adds r0, #0x20 - strb r0, [r4, #0xe] - ldrb r2, [r4, #0x15] - adds r0, r4, #0 - adds r0, #0x81 - ldrb r1, [r0] - adds r3, r0, #0 - cmp r1, #0 - beq _08024D90 - adds r1, r2, #4 - b _08024D94 -_08024D90: - adds r1, r2, #0 - adds r1, #0x1c -_08024D94: - movs r0, #0x1f - ands r0, r1 - strb r0, [r4, #0x15] - ldrb r0, [r3] - movs r1, #0x40 - eors r0, r1 - strb r0, [r3] - adds r0, r4, #0 - movs r1, #3 - movs r2, #0x10 - bl sub_08024A14 - b _08024DFC -_08024DAE: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - movs r2, #0xff - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #0 - bne _08024DCE - strb r0, [r1] - bl Random - movs r1, #0x1f - ands r0, r1 - adds r0, #0x20 - strb r0, [r4, #0xe] - b _08024DFC -_08024DCE: - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - ands r0, r2 - cmp r0, #0 - bne _08024DFC - ldrb r1, [r4, #0x15] - adds r0, r4, #0 - adds r0, #0x81 - ldrb r0, [r0] - cmp r0, #0 - beq _08024DEA - adds r1, #1 - b _08024DEC -_08024DEA: - adds r1, #0x1f -_08024DEC: - movs r0, #0x1f - ands r0, r1 - strb r0, [r4, #0x15] - movs r0, #0x10 - strb r0, [r4, #0xf] - adds r0, r4, #0 - bl sub_080249DC -_08024DFC: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08024E00 -sub_08024E00: @ 0x08024E00 - push {r4, r5, lr} - adds r5, r0, #0 - adds r4, r1, #0 - bl sub_08024E34 - ldr r1, _08024E18 @ =gUnk_080CBF10 - lsls r0, r0, #1 - orrs r0, r4 - adds r0, r0, r1 - ldrb r0, [r0] - strb r0, [r5, #0xe] - pop {r4, r5, pc} - .align 2, 0 -_08024E18: .4byte gUnk_080CBF10 - - thumb_func_start sub_08024E1C -sub_08024E1C: @ 0x08024E1C - push {r4, lr} - adds r4, r0, #0 - bl sub_08024E34 - ldr r1, _08024E30 @ =gUnk_080CBF18 - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r0, [r0] - strh r0, [r4, #0x24] - pop {r4, pc} - .align 2, 0 -_08024E30: .4byte gUnk_080CBF18 - - thumb_func_start sub_08024E34 -sub_08024E34: @ 0x08024E34 - push {lr} - bl Random - movs r1, #0x3c - ands r1, r0 - lsrs r1, r1, #2 - ldr r0, _08024E48 @ =gUnk_080CBF20 - adds r1, r1, r0 - ldrb r0, [r1] - pop {pc} - .align 2, 0 -_08024E48: .4byte gUnk_080CBF20 - - thumb_func_start sub_08024E4C -sub_08024E4C: @ 0x08024E4C - push {r4, r5, r6, r7, lr} - adds r4, r0, #0 - adds r0, #0x83 - ldrb r0, [r0] - cmp r0, #3 - bne _08024F46 - ldrb r0, [r4, #0xf] - adds r0, #1 - movs r7, #0 - movs r1, #0xff - ands r0, r1 - movs r1, #0x1f - ands r0, r1 - strb r0, [r4, #0xf] - bl sub_0807953C - cmp r0, #0 - beq _08024E84 - bl Random - adds r3, r4, #0 - adds r3, #0x84 - ldrb r2, [r3] - adds r2, #1 - movs r1, #1 - ands r1, r0 - adds r2, r2, r1 - strb r2, [r3] -_08024E84: - ldr r0, _08024EC8 @ =gUnk_02002A40 - adds r0, #0xaa - ldrb r0, [r0] - adds r2, r4, #0 - adds r2, #0x87 - cmp r0, #0 - beq _08024E9A - adds r5, r2, #0 - ldrb r0, [r5] - cmp r0, #4 - bne _08024ECC -_08024E9A: - adds r1, r4, #0 - adds r1, #0x84 - movs r0, #0x30 - strb r0, [r1] - strb r7, [r2] - adds r0, r4, #0 - bl sub_08024F50 - adds r0, r4, #0 - adds r0, #0x80 - strb r7, [r0] - movs r1, #0x40 - movs r0, #0x40 - strh r0, [r4, #0x24] - strb r1, [r4, #0xe] - movs r0, #8 - strb r0, [r4, #0xf] - adds r0, r4, #0 - movs r1, #0 - movs r2, #8 - bl sub_08024A14 - b _08024F46 - .align 2, 0 -_08024EC8: .4byte gUnk_02002A40 -_08024ECC: - ldr r6, _08024F48 @ =gPlayerEntity - bl ResetPlayer - ldr r2, _08024F4C @ =gPlayerState - ldr r0, [r2, #0x30] - movs r1, #0x80 - lsls r1, r1, #1 - orrs r0, r1 - str r0, [r2, #0x30] - ldrb r0, [r2, #0xa] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r2, #0xa] - movs r0, #0xe - strb r0, [r2, #0xc] - adds r1, r2, #0 - adds r1, #0x38 - movs r0, #0x14 - strb r0, [r1] - adds r1, #1 - movs r0, #1 - strb r0, [r1] - adds r0, r2, #0 - adds r0, #0x3a - strb r7, [r0] - movs r3, #0x80 - lsls r3, r3, #9 - adds r0, r4, #0 - adds r1, r6, #0 - movs r2, #0 - bl PositionRelative - adds r1, r6, #0 - adds r1, #0x63 - movs r0, #0x1a - strb r0, [r1] - movs r0, #4 - strb r0, [r6, #0x14] - adds r2, r6, #0 - adds r2, #0x29 - ldrb r1, [r2] - subs r0, #0x3d - ands r0, r1 - strb r0, [r2] - ldrb r0, [r4, #0xf] - cmp r0, #0 - bne _08024F46 - ldrb r0, [r5] - adds r0, #1 - strb r0, [r5] - adds r1, r6, #0 - adds r1, #0x3d - movs r0, #8 - strb r0, [r1] - subs r0, #0xa - bl ModHealth - adds r0, r6, #0 - movs r1, #0x7a - bl sub_0800449C -_08024F46: - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08024F48: .4byte gPlayerEntity -_08024F4C: .4byte gPlayerState - - thumb_func_start sub_08024F50 -sub_08024F50: @ 0x08024F50 - push {r4, r5, r6, lr} - adds r6, r0, #0 - ldr r2, _08024FDC @ =gPlayerState - movs r4, #0 - strb r4, [r2, #0xa] - ldr r0, [r2, #0x30] - ldr r1, _08024FE0 @ =0xFFFFFEFF - ands r0, r1 - str r0, [r2, #0x30] - ldr r5, _08024FE4 @ =gPlayerEntity - adds r0, r6, #0 - adds r1, r5, #0 - bl CopyPosition - movs r0, #1 - strb r0, [r5, #0xc] - ldrb r0, [r5, #0x10] - movs r1, #0x80 - orrs r0, r1 - strb r0, [r5, #0x10] - adds r1, r5, #0 - adds r1, #0x3d - movs r0, #0xc4 - strb r0, [r1] - ldrb r0, [r5, #0x14] - lsls r0, r0, #2 - strb r0, [r5, #0x15] - movs r3, #0 - strh r4, [r5, #0x24] - adds r0, r6, #0 - adds r0, #0x85 - ldrb r0, [r0] - adds r4, r5, #0 - adds r4, #0x29 - movs r1, #7 - ands r1, r0 - lsls r1, r1, #3 - ldrb r2, [r4] - movs r0, #0x39 - rsbs r0, r0, #0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4] - adds r1, r5, #0 - adds r1, #0x63 - movs r0, #0 - ldrsb r0, [r1, r0] - strh r0, [r5, #0x36] - strb r3, [r1] - adds r2, r6, #0 - adds r2, #0x3b - ldrb r1, [r2] - movs r0, #3 - orrs r0, r1 - strb r0, [r2] - adds r1, r6, #0 - adds r1, #0x83 - movs r0, #0xc0 - strb r0, [r1] - subs r1, #3 - ldrb r0, [r1] - adds r0, #2 - strb r0, [r1] - adds r0, r6, #0 - adds r0, #0x84 - strb r3, [r0] - movs r0, #0x80 - strh r0, [r6, #0x24] - pop {r4, r5, r6, pc} - .align 2, 0 -_08024FDC: .4byte gPlayerState -_08024FE0: .4byte 0xFFFFFEFF -_08024FE4: .4byte gPlayerEntity diff --git a/data/animations/pesto.s b/data/animations/pesto.s new file mode 100644 index 00000000..78b3f6c2 --- /dev/null +++ b/data/animations/pesto.s @@ -0,0 +1,31 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CBF30:: @ 080CBF30 + .incbin "baserom.gba", 0x0CBF30, 0x0000009 + +gUnk_080CBF39:: @ 080CBF39 + .incbin "baserom.gba", 0x0CBF39, 0x0000009 + +gUnk_080CBF42:: @ 080CBF42 + .incbin "baserom.gba", 0x0CBF42, 0x0000009 + +gUnk_080CBF4B:: @ 080CBF4B + .incbin "baserom.gba", 0x0CBF4B, 0x0000009 + +gUnk_080CBF54:: @ 080CBF54 + .incbin "baserom.gba", 0x0CBF54, 0x0000009 + +gUnk_080CBF5D:: @ 080CBF5D + .incbin "baserom.gba", 0x0CBF5D, 0x0000009 + +gUnk_080CBF66:: @ 080CBF66 + .incbin "baserom.gba", 0x0CBF66, 0x0000009 + +gUnk_080CBF6F:: @ 080CBF6F + .incbin "baserom.gba", 0x0CBF6F, 0x0000009 + +gUnk_080CBF78:: @ 080CBF78 + .incbin "baserom.gba", 0x0CBF78, 0x0000024 diff --git a/data/data_080CBEC4.s b/data/data_080CBEC4.s index 3e581026..03b6380d 100644 --- a/data/data_080CBEC4.s +++ b/data/data_080CBEC4.s @@ -3,51 +3,6 @@ .section .rodata -gUnk_080CBEC4:: @ 080CBEC4 - .incbin "baserom.gba", 0x0CBEC4, 0x0000018 - -gUnk_080CBEDC:: @ 080CBEDC - .incbin "baserom.gba", 0x0CBEDC, 0x000001C - -gUnk_080CBEF8:: @ 080CBEF8 - .incbin "baserom.gba", 0x0CBEF8, 0x0000018 - -gUnk_080CBF10:: @ 080CBF10 - .incbin "baserom.gba", 0x0CBF10, 0x0000008 - -gUnk_080CBF18:: @ 080CBF18 - .incbin "baserom.gba", 0x0CBF18, 0x0000008 - -gUnk_080CBF20:: @ 080CBF20 - .incbin "baserom.gba", 0x0CBF20, 0x0000010 - -gUnk_080CBF30:: @ 080CBF30 - .incbin "baserom.gba", 0x0CBF30, 0x0000009 - -gUnk_080CBF39:: @ 080CBF39 - .incbin "baserom.gba", 0x0CBF39, 0x0000009 - -gUnk_080CBF42:: @ 080CBF42 - .incbin "baserom.gba", 0x0CBF42, 0x0000009 - -gUnk_080CBF4B:: @ 080CBF4B - .incbin "baserom.gba", 0x0CBF4B, 0x0000009 - -gUnk_080CBF54:: @ 080CBF54 - .incbin "baserom.gba", 0x0CBF54, 0x0000009 - -gUnk_080CBF5D:: @ 080CBF5D - .incbin "baserom.gba", 0x0CBF5D, 0x0000009 - -gUnk_080CBF66:: @ 080CBF66 - .incbin "baserom.gba", 0x0CBF66, 0x0000009 - -gUnk_080CBF6F:: @ 080CBF6F - .incbin "baserom.gba", 0x0CBF6F, 0x0000009 - -gUnk_080CBF78:: @ 080CBF78 - .incbin "baserom.gba", 0x0CBF78, 0x0000024 - gUnk_080CBF9C:: @ 080CBF9C .incbin "baserom.gba", 0x0CBF9C, 0x0000018 diff --git a/include/entity.h b/include/entity.h index 477889f4..420a3193 100644 --- a/include/entity.h +++ b/include/entity.h @@ -120,7 +120,7 @@ typedef struct Entity { /*0x5c*/ Frame* animPtr; /*0x60*/ u16 spriteVramOffset; /*0x62*/ u8 spriteOffsetX; - /*0x63*/ u8 spriteOffsetY; + /*0x63*/ s8 spriteOffsetY; /*0x64*/ u32* otherEntity; /*0x68*/ union SplitHWord field_0x68; /*0x6a*/ union SplitHWord field_0x6a; diff --git a/linker.ld b/linker.ld index 91a3ce2a..7ce22ded 100644 --- a/linker.ld +++ b/linker.ld @@ -342,7 +342,7 @@ SECTIONS { src/enemy/enemyE.o(.text); src/enemy/moldworm.o(.text); src/enemy/sluggula.o(.text); - asm/pesto.o(.text); + src/enemy/pesto.o(.text); asm/puffstool.o(.text); asm/chuchuBoss.o(.text); asm/likeLike.o(.text); @@ -936,6 +936,8 @@ SECTIONS { data/animations/moldworm.o(.rodata); src/enemy/sluggula.o(.rodata); data/animations/sluggula.o(.rodata); + src/enemy/pesto.o(.rodata); + data/animations/pesto.o(.rodata); data/data_080CBEC4.o(.rodata); src/enemy.o(.rodata); data/data_080D3D94.o(.rodata); diff --git a/src/enemy/pesto.c b/src/enemy/pesto.c new file mode 100644 index 00000000..5849d45a --- /dev/null +++ b/src/enemy/pesto.c @@ -0,0 +1,906 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" + +extern u32 sub_080002E0(u16, u32); +extern u32 CheckIsDungeon(void); +extern void sub_0800449C(Entity*, u32); +extern u32 sub_08049F1C(Entity*, Entity*, u32); +extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*)); +extern u32 PlayerInRange(Entity*, u32, u32); +extern void sub_080AEFB4(Entity*); +extern Entity* FindNextEntityOfSameSubtype(Entity* ent, int listIndex); + +void sub_080249F4(Entity*); +void sub_08024940(Entity*); +void sub_080249DC(Entity*); +void sub_08024A14(Entity*, u32, u32); +bool32 sub_08024AD8(Entity*); +bool32 sub_08024B38(Entity*); +bool32 sub_08024C48(Entity*, bool32); +void sub_08024C7C(Entity*); +void sub_08024C94(Entity*); +bool32 sub_08024CC0(Entity*); +void sub_08024D00(Entity*); +void sub_08024E00(Entity*, u32); +void sub_08024E1C(Entity*); +u32 sub_08024E34(void); +void sub_08024E4C(Entity*); +void sub_08024F50(Entity*); + +extern Entity* gUnk_020000B0; + +extern void (*const gUnk_080CBEC4[])(Entity*); +extern void (*const gUnk_080CBEDC[])(Entity*); +extern void (*const gUnk_080CBEF8[])(Entity*); + +extern const u8 gUnk_080CBF10[]; +extern const u16 gUnk_080CBF18[]; +extern const u8 gUnk_080CBF20[]; + +void Pesto(Entity* this) { + gUnk_080CBEC4[GetNextFunction(this)](this); +} + +void sub_08023F44(Entity* this) { + gUnk_080CBEDC[this->action](this); +} + +void sub_08023F5C(Entity* this) { + if (this->damageType != 0x6e) { + if (this->bitfield == 0x80) { + *(u8*)&this->field_0x86 = 0x30; + + if ((this->field_0x82.HALF.HI & 0xf) == 3 && this->action == 6) { + switch (this->field_0x80.HALF.LO) { + case 1: + this->height.HALF.HI = -0x10; + this->field_0x82.HALF.LO = 0; + this->field_0x78.HWORD = -0x10; + this->field_0x80.HALF.LO += 1; + /* fallthrough */ + case 2: + this->field_0x82.HALF.HI &= ~0x80; + break; + } + } + } + } else { + this->currentHealth = 0; + } + + sub_0804AA30(this, gUnk_080CBEC4); +} + +void sub_08023FE0(Entity* this) { + sub_08001324(this); + GetNextFrame(this); +} + +void sub_08023FF0(Entity* this) { + if (this->previousActionFlag < 3 && !sub_0806F520(this)) { + this->action = 1; + this->previousActionFlag = 0; + this->flags |= 0x80; + this->damageType = 0x77; + this->actionDelay = 1; + this->nonPlanarMovement = 0x40; + } else { + gUnk_080CBEF8[this->previousActionFlag](this); + } +} + +void sub_08024038(Entity* this) { + this->previousActionFlag = 1; + this->field_0x1d = 60; + GetNextFrame(this); +} + +void sub_08024048(Entity* this) { + sub_0806F4E8(this); + GetNextFrame(this); +} + +void sub_08024058(Entity* this) { + sub_0806F3E4(this); +} + +void sub_08024060(Entity* this) { + if (this->damageType != 0x6e) { + this->flags = this->flags & 0x7f; + this->damageType = 0x6e; + this->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3; + } + + GetNextFrame(this); +} + +void nullsub_138(Entity* this) { + /* ... */ +} + +void sub_0802409C(Entity* this) { + this->currentHealth = 0; + InitializeAnimation(this, this->animationState); + CreateDust(this); +} + +void sub_080240B8(Entity* this) { + u32 direction = (Random() & 0xc0) >> 3; + sub_0804A720(this); + this->action = 1; + this->previousActionFlag = 0; + this->field_0x80.HALF.LO = 0; + if (direction & 8) { + this->y.HALF.HI += (direction & 0x10) ? -0x20 : 0x20; + } else { + this->x.HALF.HI += (direction & 0x10) ? -0x20 : 0x20; + } + + switch (this->entityType.form) { + case 0: + this->field_0x78.HWORD = -0x10; + this->height.HALF.HI = -0x10; + break; + case 1: + this->field_0x78.HWORD = -0x30; + this->height.HALF.HI = -0x30; + break; + } + + UpdateSpriteForCollisionLayer(this); + if (CheckIsDungeon()) + this->spriteOrientation.flipY = 1; + + this->field_0x80.HALF.HI = Random() & 0x40; + this->field_0x82.HALF.LO = 0; + this->field_0x82.HALF.HI = 0x80; + *((u8*)&this->field_0x86 + 0) = 0; + *((u8*)&this->field_0x86 + 1) = 0; + this->actionDelay = 0; + this->field_0xf = 0x20; + this->field_0x3c |= 0x10; + this->field_0x1c = 2; + this->direction = direction; + sub_080249DC(this); + + if (this->entityType.form == 1) { + Entity* ent; + + this->field_0x82.HALF.HI = 0; + ent = sub_0804A98C(this, 6, this->field_0x82.HALF.HI); + if (ent) { + this->attachedEntity = ent; + ent->parent = this; + ent->y.HALF.HI += 0x10; + } + } +} + +void sub_080241C0(Entity* this) { + sub_08024940(this); + switch (this->field_0x80.HALF.LO) { + case 0: + if (PlayerInRange(this, 3, (gPlayerState.hurtBlinkSpeed != 0) ? 0xa0 : 0x40) && sub_08049FDC(this, 3) && + gPlayerEntity.action != 0x1e) { + this->field_0x80.HALF.LO++; + this->nonPlanarMovement = 0; + sub_08024A14(this, 3, 10); + } else if (--this->field_0xf == 0) { + sub_08024A14(this, 0, 0x20); + } + break; + case 1: + if (--this->field_0xf == 0) { + if (this->entityType.form != 0) { + u8 tmp = this->field_0x82.HALF.HI & 0x80; + if (tmp) { + sub_08024C94(this); + this->field_0x82.HALF.HI |= 0x40; + } else { + this->action = 3; + this->field_0x80.HALF.LO = tmp; + this->field_0xf = 10; + sub_08024E00(this, 0); + sub_08024E1C(this); + sub_08024A14(this, 3, this->field_0xf); + } + } else { + sub_08024C94(this); + } + } + break; + } +} + +void sub_08024298(Entity* this) { + sub_08024D00(this); +} + +void sub_080242A0(Entity* this) { + sub_08024940(this); + if (sub_08024CC0(this)) { + if (--this->actionDelay == 0) { + this->direction = GetFacingDirection(this, gUnk_020000B0); + sub_08024E00(this, 1); + if (this->nonPlanarMovement != 0) { + this->nonPlanarMovement = 0; + } else { + sub_08024E1C(this); + } + } else if (--this->field_0xf == 0) { + sub_08024A14(this, 3, 10); + } + + if (sub_08049F1C(this, gUnk_020000B0, 0x20) && sub_08049FDC(this, 3)) { + this->action = 4; + this->field_0x80.HALF.LO = 0; + this->actionDelay = 0x10; + this->nonPlanarMovement = 0; + } + } +} + +void sub_0802433C(Entity* this) { + sub_08024940(this); + switch (this->field_0x80.HALF.LO) { + case 0: + if (--this->actionDelay == 0) { + this->field_0x80.HALF.LO++; + this->nonPlanarMovement = 0x100; + this->field_0xf = 8; + sub_08024E00(this, 1); + } + break; + case 1: + if (--this->actionDelay == 0) { + this->action = 5; + this->field_0x80.HALF.LO = 0; + this->nonPlanarMovement = 0x140; + this->actionDelay = 0xc0; + this->field_0xf = 8; + } else { + if (--this->field_0xf == 0) + sub_08024A14(this, 2, 4); + } + break; + } +} + +void sub_080243B8(Entity* this) { + sub_08024940(this); + switch (this->field_0x80.HALF.LO) { + case 0: + if (sub_08024C48(this, TRUE)) { + if (this->attachedEntity == NULL || this->attachedEntity->next == NULL) { + this->field_0x80.HALF.LO = 2; + this->actionDelay = 0x20; + this->nonPlanarMovement = 0x80; + this->field_0x82.HALF.HI = 0x80; + } else if (sub_08049F1C(this, gUnk_020000B0, 0xe)) { + this->field_0x80.HALF.LO++; + this->actionDelay = 0x1e; + this->nonPlanarMovement = 0x100; + this->field_0x82.HALF.HI = 0x80; + this->attachedEntity->action = 2; + } else if (--this->actionDelay) { + if (--this->field_0xf == 0) { + sub_08024A14(this, 2, (this->actionDelay >> 6) + 1); + } + } else { + sub_08024C7C(this); + } + } else { + sub_08024C7C(this); + } + break; + case 1: + if (--this->actionDelay == 0) { + this->field_0x80.HALF.LO++; + this->actionDelay = 0x20; + this->nonPlanarMovement = 0x80; + } + break; + case 2: + if (--this->actionDelay == 0) { + this->action = 6; + this->field_0x80.HALF.LO = 0; + this->nonPlanarMovement = 0x80; + sub_08024B38(this); + + if ((this->field_0x82.HALF.HI & 0x40) == 0) { + switch (this->field_0x82.HALF.HI & 0x3f) { + case 3: + this->actionDelay = 4; + break; + case 1: + this->actionDelay = 0x14; + break; + default: + this->actionDelay = 0x30; + break; + } + sub_08024A14(this, 2, 8); + } else { + this->actionDelay = 0x40; + sub_08024A14(this, 0, 8); + } + } + break; + } +} + +void sub_080244E8(Entity* this) { + sub_08024940(this); + switch (this->field_0x80.HALF.LO) { + case 0: + if (--this->actionDelay == 0) { + if (sub_080002E0(COORD_TO_TILE(this), 1) == 0) { + this->field_0x80.HALF.LO += 1; + this->field_0x82.HALF.LO += 1; + this->field_0xf = 0; + this->nonPlanarMovement = 0; + } else { + this->actionDelay = 0x30; + this->field_0xf = 4; + } + break; + } else { + if (--this->field_0xf == 0) { + sub_08024A14(this, 1, 8); + } + } + break; + case 1: + if (++this->height.HALF.HI >= -0x10) { + this->field_0x82.HALF.LO = 0; + this->field_0x78.HWORD = 0xfff0; + if (sub_08024AD8(this)) { + this->field_0x80.HALF.LO++; + } else { + sub_08024C94(this); + this->field_0x82.HALF.HI |= 0x40; + } + } + break; + case 2: + if (sub_08024AD8(this)) { + u32 tmp; + + if (--this->actionDelay == 0) { + if (this->nonPlanarMovement) { + this->nonPlanarMovement = 0; + } else { + sub_08024E1C(this); + } + this->direction = GetFacingDirection(this, this->attachedEntity); + sub_08024E00(this, 0); + sub_080249DC(this); + } else if (--this->field_0xf == 0) { + sub_08024A14(this, 1, 8); + } + + switch (this->field_0x82.HALF.HI & 0x3f) { + case 3: + tmp = this->field_0x82.HALF.HI & 0x80; + if (tmp == 0) { + this->field_0x80.HALF.LO++; + this->actionDelay = 0xc; + this->direction = 0x10; + this->nonPlanarMovement = tmp; + this->cutsceneBeh.HALF.LO = 0; + this->flags2 &= 0xfc; + sub_080249DC(this); + this->cutsceneBeh.HALF.HI = gPlayerEntity.spritePriority.b1; + gPlayerEntity.flags &= 0x7f; + gPlayerState.flags.all |= 0x100; + gPlayerState.field_0xa |= 0x80; + if (gPlayerState.swimState != 0) { + gPlayerState.swimState = 0; + } + } + break; + case 1: + if (sub_080041A0(this, this->attachedEntity, 6, 6)) { + Entity* ent; + + this->field_0x80.HALF.LO += 1; + this->actionDelay = 0xc; + this->field_0x82.HALF.HI &= ~0x80; + CopyPosition(this->attachedEntity, this); + this->height.HALF.HI -= 0xe; + this->field_0x78.HWORD -= 0xe; + + ent = sub_0804A98C(this, 6, this->field_0x82.HALF.HI); + if (ent) { + ent->parent = this; + ent->height.HALF.HI += 0xe; + ent->attachedEntity = this->attachedEntity; + CopyPosition(ent, ent->attachedEntity); + this->attachedEntity = ent; + } + } + break; + case 2: + if (sub_080041A0(this, this->attachedEntity, 6, 6)) { + Entity* ent; + + this->field_0x80.HALF.LO += 1; + this->actionDelay = 0xc; + this->field_0x82.HALF.HI &= ~0x80; + ent = this->attachedEntity; + SetTile((u16)ent->field_0x70.HALF.LO, COORD_TO_TILE(ent), ent->collisionLayer); + DeleteEntity(ent); + this->height.HALF.HI -= 0xe; + this->field_0x78.HWORD -= 0xe; + + ent = sub_0804A98C(this, 6, this->field_0x82.HALF.HI); + if (ent) { + ent->parent = this; + ent->height.HALF.HI += 0xe; + this->attachedEntity = ent; + } + } + break; + } + break; + } else { + sub_08024C94(this); + this->field_0x82.HALF.HI |= 0x40; + } + break; + case 3: + if (--this->actionDelay == 0) { + this->field_0x80.HALF.LO++; + this->field_0xf = 0; + this->nonPlanarMovement = 0; + this->field_0x82.HALF.LO++; + } + break; + case 4: + this->height.HALF.HI -= 2; + if (-60 > this->height.HALF.HI) { + this->field_0x80.HALF.LO++; + } + break; + case 5: + if (this->height.HALF.HI < -0x30) { + this->height.HALF.HI++; + } else { + if (this->field_0x82.HALF.LO != 0) { + this->field_0x82.HALF.LO = 0; + this->field_0x78.HWORD = -0x30; + } + + switch (this->field_0x82.HALF.HI) { + case 3: + if (0x2f < this->cutsceneBeh.HALF.LO) { + sub_08024F50(this); + } + break; + case 1 ... 2: + this->field_0x80.HALF.LO += 1; + this->actionDelay = 0xc0; + this->field_0xf = 8; + this->nonPlanarMovement = 0x80; + sub_080249DC(this); + break; + default: + sub_08024C7C(this); + break; + } + } + break; + case 6: + if (--this->actionDelay == 0) { + if (this->field_0x82.HALF.HI & 0x80) { + this->field_0x82.HALF.HI = 0xc0; + this->field_0x80.HALF.LO = 0; + this->nonPlanarMovement = 0x40; + this->actionDelay = 0x40; + this->field_0xf = 8; + sub_08024A14(this, 0, 8); + } else { + this->actionDelay = 0x40; + this->field_0xf = 8; + } + } else if (--this->field_0xf == 0) { + sub_08024A14(this, 2, 8); + } + break; + case 7: + if (gPlayerEntity.height.HALF.HI == 0) { + this->field_0x80.HALF.LO = 0; + this->nonPlanarMovement = 0x80; + sub_08024B38(this); + } + } + + if (this->field_0x82.HALF.HI == 3) { + sub_08024E4C(this); + } +} + +void sub_08024940(Entity* this) { + u32 random = Random() & 0x70; + + if (this->collisions != 0) { + sub_0800417E(this, this->collisions); + sub_080249F4(this); + } + + if (this->field_0x82.HALF.LO == 0) { + this->height.HALF.HI = this->field_0x78.HWORD; + if (random) + this->height.HALF.HI += 2; + } + + if (this->entityType.parameter != 0 || CheckIsDungeon()) { + if (!sub_08049FA0(this)) { + this->direction = sub_08049EE4(this); + sub_080249F4(this); + } + + if (this->height.HALF.HI < -0x20) { + this->spritePriority.b0 = 0; + } else { + this->spritePriority.b0 = 1; + } + } + + sub_080AEFB4(this); + GetNextFrame(this); +} + +void sub_080249DC(Entity* this) { + u8 direction = ((this->direction + 2) & 0x1c) >> 2; + this->animationState = direction; + InitializeAnimation(this, this->animationState); +} + +#if NON_MATCHING +void sub_080249F4(Entity* this) { + u8 direction = ((this->direction + 2) & 0x1c) >> 2; + if (direction != this->animationState) { + this->animationState = direction; + InitializeAnimation(this, this->animationState); + } +} +#else +NAKED +void sub_080249F4(Entity* this) { + asm(".include \"asm/non_matching/pesto/sub_080249F4.inc\""); +} +#endif + +void sub_08024A14(Entity* this, u32 param_2, u32 param_3) { + u8 unk = FALSE; + + switch (param_2) { + case 0: + sub_08004596(this, sub_08049EE4(this)); + unk = TRUE; + break; + case 1: + if (sub_08024C48(this, FALSE)) { + sub_08004596(this, GetFacingDirection(this, this->attachedEntity)); + unk = TRUE; + } + break; + case 2: + if (sub_08024C48(this, TRUE)) { + sub_08004596(this, GetFacingDirection(this, gUnk_020000B0)); + unk = TRUE; + } + break; + case 3: + if (sub_08024C48(this, TRUE)) { + this->direction = GetFacingDirection(this, gUnk_020000B0); + unk = TRUE; + } + break; + } + + if (param_2 != 0 && !sub_08049FA0(this) && (Random() & 3)) { + unk = FALSE; + } + + if (!unk) { + sub_08024A14(this, 0, param_3); + } + + sub_080249DC(this); + this->field_0xf = param_3; +} + +bool32 sub_08024AD8(Entity* this) { + if ((this->field_0x82.HALF.HI & 0x40) == 0) { + u8 unk = FALSE; + if ((this->field_0x82.HALF.HI & 0x3f) == 3) { + if (gPlayerState.hurtBlinkSpeed == 0) { + this->attachedEntity->parent = NULL; + this->attachedEntity = NULL; + this->field_0x82.HALF.HI = 0xc0; + return FALSE; + } + unk = TRUE; + } + + if (sub_08024C48(this, unk) == 0) { + this->attachedEntity = NULL; + this->field_0x82.HALF.HI = 0xc0; + return FALSE; + } + } else { + return sub_08024B38(this); + } + + return TRUE; +} + +bool32 sub_08024B38(Entity* this) { + int iVar4 = 0; + Entity* ent; + + if (gPlayerState.hurtBlinkSpeed != 0) { + if (gPlayerState.swimState == 1) { + if (gPlayerState.hurtBlinkSpeed > 3) { + gPlayerState.hurtBlinkSpeed -= 3; + } else { + gPlayerState.hurtBlinkSpeed = 0; + } + } + if (gPlayerState.hurtBlinkSpeed != 0) { + if (sub_08024C48(this, 1) && sub_08049F1C(this, gUnk_020000B0, 0xa0)) { + iVar4 = 1; + this->attachedEntity = gUnk_020000B0; + this->field_0x82.HALF.HI |= 3; + this->field_0x82.HALF.HI &= ~0x40; + } + + if (iVar4 == 0) { + this->attachedEntity = NULL; + } + return iVar4; + } + } + + ent = FindEntityInListBySubtype(8, 2, 2); + if (ent) { + do { + if (ent->action != 2 && ent->height.HALF.HI == 0 && sub_08049F1C(this, ent, 0xa0)) { + iVar4 = 1; + this->attachedEntity = ent; + this->field_0x82.HALF.HI |= 1; + this->field_0x82.HALF.HI &= ~0x40; + break; + } + } while (ent = FindNextEntityOfSameSubtype(ent, 2), ent != NULL); + } + + if (iVar4 != 0) { + return iVar4; + } + + ent = FindEntityInListBySubtype(6, 5, 6); + if (ent) { + do { + if (ent->action == 1 && sub_08049F1C(this, ent, 0xa0)) { + iVar4 = 1; + this->attachedEntity = ent; + this->field_0x82.HALF.HI |= 2; + this->field_0x82.HALF.HI &= ~0x40; + break; + } + } while (ent = FindNextEntityOfSameSubtype(ent, 6), ent != NULL); + } + + if (iVar4 == 0) { + this->attachedEntity = NULL; + } + + return iVar4; +} + +NAKED +bool32 sub_08024C48(Entity* this, bool32 unk) { + asm(".include \"asm/non_matching/pesto/sub_08024C48.inc\""); +} + +void sub_08024C7C(Entity* this) { + this->action = 1; + this->nonPlanarMovement = 0x40; + this->actionDelay = 0; + sub_08024A14(this, 0, 0x20); +} + +void sub_08024C94(Entity* this) { + this->action = 2; + this->field_0x80.HALF.LO = 0; + this->actionDelay = 0x40; + this->field_0xf = 0; + this->nonPlanarMovement = 0xc0; + this->field_0x82.HALF.HI = 0x80; + sub_08024A14(this, 3, this->field_0xf); +} + +bool32 sub_08024CC0(Entity* this) { + bool32 uVar2; + + uVar2 = 1; + if (!sub_08024C48(this, 1)) { + uVar2 = 0; + } else if (!sub_08049F1C(this, gUnk_020000B0, 0x50) || !sub_08049FDC(this, 3)) { + uVar2 = 0; + sub_08024C7C(this); + } + return uVar2; +} + +void sub_08024D00(Entity* this) { + if (*(u8*)&this->field_0x86) { + (*(u8*)&this->field_0x86)--; + GetNextFrame(this); + } else { + sub_08024940(this); + } + + if ((this->field_0x82.HALF.HI & 0x40) && sub_08024B38(this)) { + this->action = 6; + this->field_0x80.HALF.LO = 2; + } else if (sub_08024CC0(this)) { + switch (this->field_0x80.HALF.LO) { + case 0: + if (--this->actionDelay == 0) { + this->field_0x80.HALF.LO++; + this->actionDelay = (Random() & 0xf) + 0x20; + + this->direction += this->field_0x80.HALF.HI ? 4 : 0x1c; + this->direction &= 0x1f; + + this->field_0x80.HALF.HI ^= 0x40; + sub_08024A14(this, 3, 0x10); + } + break; + case 1: + if (--this->actionDelay == 0) { + this->field_0x80.HALF.LO = 0; + this->actionDelay = (Random() & 0x1f) + 0x20; + } else { + if (--this->field_0xf == 0) { + this->direction += this->field_0x80.HALF.HI ? 1 : 0x1f; + this->direction &= 0x1f; + + this->field_0xf = 0x10; + sub_080249DC(this); + } + } + break; + } + } +} + +void sub_08024E00(Entity* this, u32 unk) { + this->actionDelay = gUnk_080CBF10[sub_08024E34() * 2 | unk]; +} + +void sub_08024E1C(Entity* this) { + this->nonPlanarMovement = gUnk_080CBF18[sub_08024E34()]; +} + +u32 sub_08024E34(void) { + u32 idx = (Random() & 0x3c) >> 2; + return gUnk_080CBF20[idx]; +} + +#if NON_MATCHING +void sub_08024E4C(Entity* this) { + if (this->field_0x82.HALF.HI == 3) { + this->field_0xf++; + this->field_0xf &= 0xff; + this->field_0xf &= 0x1f; + + if (sub_0807953C()) { + this->cutsceneBeh.HALF.LO += 1 + (Random() & 1); + } + + if (gUnk_02002A40.stats.health == 0 || *((u8*)&this->field_0x86 + 1) == 4) { + this->cutsceneBeh.HALF.LO = 0x30; + *((u8*)&this->field_0x86 + 1) = 0; + sub_08024F50(this); + this->field_0x80.HALF.LO = 0; + this->nonPlanarMovement = 0x40; + this->actionDelay = 0x40; + this->field_0xf = 8; + sub_08024A14(this, 0, 8); + } else { + Entity* player = &gPlayerEntity; + + ResetPlayer(); + gPlayerState.flags.all |= 0x100; + gPlayerState.field_0xa |= 0x80; + gPlayerState.playerAction = 0xe; + gPlayerState.field_0x38 = 0x14; + gPlayerState.field_0x39 = 1; + *(u8*)&gPlayerState.field_0x3a = 0; + PositionRelative(this, player, 0, 0x10000); + player->spriteOffsetY = 0x1a; + player->animationState = 4; + player->spritePriority.b1 = 0; + if (this->field_0xf == 0) { + (*((u8*)&this->field_0x86 + 1))++; + player->hurtBlinkTime = 8; + ModHealth(-2); + sub_0800449C(player, 0x7a); + } + } + } +} +#else +NAKED +void sub_08024E4C(Entity* this) { + asm(".include \"asm/non_matching/pesto/sub_08024E4C.inc\""); +} +#endif + +void sub_08024F50(Entity* this) { + gPlayerState.field_0xa = 0; + gPlayerState.flags.all &= 0xfffffeff; + CopyPosition(this, &gPlayerEntity); + gPlayerEntity.action = 1; + gPlayerEntity.flags |= 0x80; + gPlayerEntity.hurtBlinkTime = -0x3c; + gPlayerEntity.direction = gPlayerEntity.animationState << 2; + gPlayerEntity.nonPlanarMovement = 0; + gPlayerEntity.spritePriority.b1 = this->cutsceneBeh.HALF.HI; + gPlayerEntity.height.HALF.HI = gPlayerEntity.spriteOffsetY; + gPlayerEntity.spriteOffsetY = 0; + this->flags2 |= 3; + this->field_0x82.HALF.HI = 0xc0; + this->field_0x80.HALF.LO += 2; + this->cutsceneBeh.HALF.LO = 0; + this->nonPlanarMovement = 0x80; +} + +// clang-format off +void (*const gUnk_080CBEC4[])(Entity*) = { + sub_08023F44, + sub_08023F5C, + sub_08023FE0, + sub_0804A7D4, + sub_08001242, + sub_08023FF0, +}; + +void (*const gUnk_080CBEDC[])(Entity*) = { + sub_080240B8, + sub_080241C0, + sub_08024298, + sub_080242A0, + sub_0802433C, + sub_080243B8, + sub_080244E8, +}; + +void (*const gUnk_080CBEF8[])(Entity*) = { + sub_08024038, + sub_08024048, + sub_08024058, + sub_08024060, + nullsub_138, + sub_0802409C, +}; + +const u8 gUnk_080CBF10[] = { + 30, 60, 50, 90, 70, 100, 90, 120, +}; + +const u16 gUnk_080CBF18[] = { + 0x80, 0xC0, 0x100, 0x140, +}; + +const u8 gUnk_080CBF20[] = { + 0, 2, 1, 1, 3, 1, 2, 0, + 1, 1, 2, 3, 2, 2, 1, 2, +}; +// clang-format on From bf8349b4630d169d83e7b81c8b13df721e572ff1 Mon Sep 17 00:00:00 2001 From: Behemoth Date: Fri, 4 Sep 2020 18:04:41 +0200 Subject: [PATCH 10/14] rename rodata file --- data/{data_080CBEC4.s => data_080CBF9C.s} | 0 linker.ld | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename data/{data_080CBEC4.s => data_080CBF9C.s} (100%) diff --git a/data/data_080CBEC4.s b/data/data_080CBF9C.s similarity index 100% rename from data/data_080CBEC4.s rename to data/data_080CBF9C.s diff --git a/linker.ld b/linker.ld index 7ce22ded..48b0cd46 100644 --- a/linker.ld +++ b/linker.ld @@ -938,7 +938,7 @@ SECTIONS { data/animations/sluggula.o(.rodata); src/enemy/pesto.o(.rodata); data/animations/pesto.o(.rodata); - data/data_080CBEC4.o(.rodata); + data/data_080CBF9C.o(.rodata); src/enemy.o(.rodata); data/data_080D3D94.o(.rodata); data/areaPropertyLists.o(.rodata); From a7bd0cb57529860af5d82a514cacef21539addeb Mon Sep 17 00:00:00 2001 From: Behemoth Date: Sun, 6 Sep 2020 03:35:26 +0200 Subject: [PATCH 11/14] decompile puffstool --- asm/non_matching/puffstool/sub_080258C4.inc | 77 + asm/non_matching/puffstool/sub_0802594C.inc | 136 ++ asm/puffstool.s | 1681 ------------------- data/animations/puffstool.s | 34 + data/data_080CBF9C.s | 81 - linker.ld | 4 +- src/enemy/puffstool.c | 724 ++++++++ 7 files changed, 974 insertions(+), 1763 deletions(-) create mode 100644 asm/non_matching/puffstool/sub_080258C4.inc create mode 100644 asm/non_matching/puffstool/sub_0802594C.inc delete mode 100644 asm/puffstool.s create mode 100644 data/animations/puffstool.s create mode 100644 src/enemy/puffstool.c diff --git a/asm/non_matching/puffstool/sub_080258C4.inc b/asm/non_matching/puffstool/sub_080258C4.inc new file mode 100644 index 00000000..861958cc --- /dev/null +++ b/asm/non_matching/puffstool/sub_080258C4.inc @@ -0,0 +1,77 @@ + + .syntax unified + + .text + + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_08049DF4 + adds r2, r0, #0 + cmp r2, #0 + beq _08025922 + movs r0, #0x2e + ldrsh r1, [r2, r0] + movs r3, #0x2e + ldrsh r0, [r4, r3] + subs r3, r1, r0 + adds r0, r3, #0 + muls r0, r3, r0 + adds r3, r0, #0 + movs r1, #0x32 + ldrsh r0, [r2, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + subs r0, r0, r1 + adds r1, r0, #0 + muls r1, r0, r1 + adds r0, r1, #0 + adds r3, r3, r0 + adds r0, r4, #0 + adds r0, #0x84 + ldrh r0, [r0] + cmp r0, #0 + bne _0802591A + adds r0, r4, #0 + adds r0, #0x81 + ldrb r1, [r0] + cmp r1, #0 + bne _0802591A + movs r0, #0x80 + lsls r0, r0, #3 + cmp r3, r0 + bgt _0802591A + movs r0, #9 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + b _08025942 +_0802591A: + movs r0, #0x90 + lsls r0, r0, #4 + cmp r3, r0 + ble _08025926 +_08025922: + movs r0, #0 + b _08025944 +_08025926: + movs r0, #0xb + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xe] + bl Random + ldr r2, _08025948 @ =gUnk_080CC050 + movs r1, #0xf + ands r1, r0 + adds r1, r1, r2 + ldrb r1, [r1] + adds r0, r4, #0 + adds r0, #0x78 + strh r1, [r0] +_08025942: + movs r0, #1 +_08025944: + pop {r4, pc} + .align 2, 0 +_08025948: .4byte gUnk_080CC050 + + .syntax divided diff --git a/asm/non_matching/puffstool/sub_0802594C.inc b/asm/non_matching/puffstool/sub_0802594C.inc new file mode 100644 index 00000000..837bf19f --- /dev/null +++ b/asm/non_matching/puffstool/sub_0802594C.inc @@ -0,0 +1,136 @@ + + .syntax unified + + .text + + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + mov sl, r0 + ldr r0, _08025A20 @ =gUnk_080CC090 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r7, [r1] + mov r0, sl + adds r0, #0x38 + ldrb r0, [r0] + mov sb, r0 + ldr r3, _08025A24 @ =gRoomControls + mov r1, sl + ldrh r0, [r1, #0x2e] + ldrh r1, [r3, #6] + subs r0, r0, r1 + adds r0, #8 + movs r1, #0x10 + rsbs r1, r1, #0 + adds r2, r1, #0 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + mov r1, sl + ldrh r0, [r1, #0x32] + ldrh r1, [r3, #8] + subs r0, r0, r1 + adds r0, #8 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #4] +_08025996: + movs r0, #0 + ldrsb r0, [r7, r0] + ldr r1, [sp] + lsls r4, r1, #0x10 + asrs r4, r4, #0x10 + adds r4, r4, r0 + lsls r4, r4, #0x10 + movs r0, #1 + ldrsb r0, [r7, r0] + ldr r1, [sp, #4] + lsls r5, r1, #0x10 + asrs r5, r5, #0x10 + adds r5, r5, r0 + lsls r5, r5, #0x10 + lsrs r0, r4, #0x10 + str r0, [sp, #8] + asrs r4, r4, #0x10 + lsrs r1, r5, #0x10 + str r1, [sp, #0xc] + asrs r5, r5, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sb + bl sub_080002D4 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + movs r0, #0x10 + rsbs r0, r0, #0 + adds r0, r0, r4 + mov r8, r0 + adds r1, r5, #0 + mov r2, sb + bl sub_080002D4 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + subs r5, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sb + str r3, [sp, #0x10] + bl sub_080002D4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r0, r8 + adds r1, r5, #0 + mov r2, sb + bl sub_080002D4 + ldr r3, [sp, #0x10] + orrs r6, r3 + orrs r4, r6 + orrs r4, r0 + lsls r4, r4, #0x18 + cmp r4, #0 + beq _08025A28 + adds r7, #2 + movs r0, #0 + ldrsb r0, [r7, r0] + cmp r0, #0x7f + bne _08025996 + movs r0, #0 + b _08025A44 + .align 2, 0 +_08025A20: .4byte gUnk_080CC090 +_08025A24: .4byte gRoomControls +_08025A28: + ldr r2, _08025A50 @ =gRoomControls + ldrh r0, [r2, #6] + ldr r1, [sp, #8] + adds r0, r0, r1 + mov r1, sl + adds r1, #0x7c + strh r0, [r1] + ldrh r0, [r2, #8] + ldr r1, [sp, #0xc] + adds r0, r0, r1 + mov r1, sl + adds r1, #0x7e + strh r0, [r1] + movs r0, #1 +_08025A44: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08025A50: .4byte gRoomControls + + .syntax divided diff --git a/asm/puffstool.s b/asm/puffstool.s deleted file mode 100644 index 70b4dca2..00000000 --- a/asm/puffstool.s +++ /dev/null @@ -1,1681 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - - thumb_func_start Puffstool -Puffstool: @ 0x08024FE8 - push {r4, lr} - adds r4, r0, #0 - ldr r1, _08025004 @ =gUnk_080CBF9C - 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 -_08025004: .4byte gUnk_080CBF9C - - thumb_func_start sub_08025008 -sub_08025008: @ 0x08025008 - push {lr} - ldr r2, _0802501C @ =gUnk_080CBFB4 - ldrb r1, [r0, #0xc] - lsls r1, r1, #2 - adds r1, r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {pc} - .align 2, 0 -_0802501C: .4byte gUnk_080CBFB4 - - thumb_func_start sub_08025020 -sub_08025020: @ 0x08025020 - push {r4, r5, lr} - adds r4, r0, #0 - adds r0, #0x41 - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - cmp r1, #0 - blt _080250C2 - cmp r1, #3 - ble _0802510C - cmp r1, #0x1b - bne _080250C2 - adds r0, r4, #0 - bl sub_0804AA1C - ldr r1, _08025058 @ =gUnk_080CBFE8 - ldr r0, [r4, #0x4c] - ldrb r0, [r0, #0xa] - adds r0, r0, r1 - ldrb r1, [r0] - adds r3, r4, #0 - adds r3, #0x82 - ldrb r0, [r3] - cmp r1, r0 - bhs _0802505C - subs r0, r0, r1 - strb r0, [r3] - b _08025078 - .align 2, 0 -_08025058: .4byte gUnk_080CBFE8 -_0802505C: - adds r1, r4, #0 - adds r1, #0x84 - movs r2, #0 - movs r0, #0xa5 - lsls r0, r0, #2 - strh r0, [r1] - subs r1, #0x45 - movs r0, #0x83 - strb r0, [r1] - strb r2, [r3] - adds r0, r4, #0 - movs r1, #0x7c - bl sub_0801D2B4 -_08025078: - movs r2, #0 - movs r0, #7 - strb r0, [r4, #0xc] - movs r0, #0x3c - strb r0, [r4, #0xe] - ldr r0, [r4, #0x20] - cmp r0, #0 - ble _0802508A - str r2, [r4, #0x20] -_0802508A: - adds r1, r4, #0 - adds r1, #0x3d - movs r0, #0xf4 - strb r0, [r1] - adds r0, r4, #0 - adds r0, #0x42 - strb r2, [r0] - adds r5, r4, #0 - adds r5, #0x80 - ldrb r0, [r5] - cmp r0, #0 - bne _0802510C - ldr r0, [r4, #0x4c] - ldrb r0, [r0, #0x15] - lsrs r0, r0, #3 - strb r0, [r4, #0x14] - ldrb r1, [r4, #0x14] - adds r1, #4 - adds r0, r4, #0 - bl InitializeAnimation - adds r1, r4, #0 - adds r1, #0x59 - movs r0, #6 - strb r0, [r1] - movs r0, #1 - strb r0, [r5] - b _0802510C -_080250C2: - adds r0, r4, #0 - adds r0, #0x3f - ldrb r0, [r0] - cmp r0, #0x82 - bne _0802510C - adds r0, r4, #0 - adds r0, #0x3d - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bge _0802510C - movs r0, #0x21 - movs r1, #2 - movs r2, #0 - bl CreateObject - adds r2, r0, #0 - cmp r2, #0 - beq _08025104 - adds r3, r2, #0 - adds r3, #0x29 - ldrb r0, [r3] - movs r1, #8 - rsbs r1, r1, #0 - ands r1, r0 - movs r0, #3 - orrs r1, r0 - strb r1, [r3] - adds r0, r4, #0 - adds r1, r2, #0 - bl CopyPosition -_08025104: - movs r0, #0xc3 - lsls r0, r0, #1 - bl EnqueueSFX -_0802510C: - ldr r1, _08025118 @ =gUnk_080CBF9C - adds r0, r4, #0 - bl sub_0804AA30 - pop {r4, r5, pc} - .align 2, 0 -_08025118: .4byte gUnk_080CBF9C - - thumb_func_start sub_0802511C -sub_0802511C: @ 0x0802511C - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x3a - ldrb r1, [r0] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08025142 - ldrb r0, [r4, #0xe] - cmp r0, #1 - bne _08025142 - adds r0, r4, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #0 - beq _08025142 - adds r0, r4, #0 - bl sub_08025B18 -_08025142: - adds r0, r4, #0 - bl sub_0804A7D4 - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802514C -sub_0802514C: @ 0x0802514C - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x80 - lsls r1, r1, #6 - bl sub_08003FC4 - adds r0, r4, #0 - bl sub_0806F520 - cmp r0, #0 - beq _08025178 - ldr r0, _08025174 @ =gUnk_080CBFEC - ldrb r1, [r4, #0xd] - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r1, [r1] - adds r0, r4, #0 - bl _call_via_r1 - b _0802517E - .align 2, 0 -_08025174: .4byte gUnk_080CBFEC -_08025178: - adds r0, r4, #0 - bl sub_08025C2C -_0802517E: - pop {r4, pc} - - thumb_func_start sub_08025180 -sub_08025180: @ 0x08025180 - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - strb r0, [r4, #0xd] - bl Random - strb r0, [r4, #0xe] - ldr r0, [r4, #0x4c] - ldrb r0, [r0, #0x15] - movs r1, #0x10 - eors r0, r1 - lsrs r0, r0, #3 - strb r0, [r4, #0x14] - ldrb r1, [r4, #0x14] - adds r1, #4 - adds r0, r4, #0 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_0804AA1C - pop {r4, pc} - - thumb_func_start sub_080251AC -sub_080251AC: @ 0x080251AC - push {r4, lr} - adds r4, r0, #0 - adds r3, r4, #0 - adds r3, #0x82 - ldrb r0, [r3] - cmp r0, #3 - bls _080251D8 - subs r0, #3 - strb r0, [r3] - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - movs r1, #0xff - ands r0, r1 - movs r1, #3 - ands r0, r1 - cmp r0, #0 - bne _080251F4 - adds r0, r4, #0 - bl sub_08025BD4 - b _080251F4 -_080251D8: - adds r1, r4, #0 - adds r1, #0x84 - movs r2, #0 - movs r0, #0xa5 - lsls r0, r0, #2 - strh r0, [r1] - subs r1, #0x45 - movs r0, #0x83 - strb r0, [r1] - strb r2, [r3] - adds r0, r4, #0 - movs r1, #0x7c - bl sub_0801D2B4 -_080251F4: - adds r0, r4, #0 - bl GetNextFrame - pop {r4, pc} - - thumb_func_start sub_080251FC -sub_080251FC: @ 0x080251FC - push {r4, r5, lr} - adds r4, r0, #0 - bl sub_0804A720 - adds r1, r4, #0 - adds r1, #0x82 - movs r5, #0 - movs r0, #0xf0 - strb r0, [r1] - bl Random - movs r1, #0x1c - ands r0, r1 - strb r0, [r4, #0x15] - adds r0, r4, #0 - adds r0, #0x80 - strb r5, [r0] - adds r0, r4, #0 - bl sub_080256B4 - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_08025230 -sub_08025230: @ 0x08025230 - push {r4, r5, lr} - adds r4, r0, #0 - adds r1, r4, #0 - adds r1, #0x81 - ldrb r0, [r1] - cmp r0, #0 - beq _08025242 - subs r0, #1 - strb r0, [r1] -_08025242: - adds r0, r4, #0 - bl sub_08025C44 - adds r0, r4, #0 - bl GetNextFrame - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - movs r5, #0xff - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08025270 - bl Random - movs r1, #3 - ands r0, r1 - adds r0, #4 - strb r0, [r4, #0xe] - adds r0, r4, #0 - bl sub_08025C60 - strb r0, [r4, #0x15] -_08025270: - ldrh r0, [r4, #0x2a] - cmp r0, #0 - beq _0802528C - ldrb r0, [r4, #0xf] - subs r0, #1 - strb r0, [r4, #0xf] - ands r0, r5 - cmp r0, #0 - bne _08025290 - ldrh r1, [r4, #0x2a] - adds r0, r4, #0 - bl sub_0800417E - b _08025290 -_0802528C: - movs r0, #0x1e - strb r0, [r4, #0xf] -_08025290: - adds r1, r4, #0 - adds r1, #0x78 - ldrh r0, [r1] - cmp r0, #0 - bne _080252D8 - adds r0, r4, #0 - bl sub_0802571C - cmp r0, #0 - beq _080252DC - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #0xf0 - strb r0, [r4, #0xe] - movs r0, #0x2e - ldrsh r1, [r4, r0] - ldr r2, _080252D4 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - asrs r1, r1, #4 - movs r3, #0x3f - ands r1, r3 - movs r5, #0x32 - ldrsh r0, [r4, r5] - ldrh r2, [r2, #8] - subs r0, r0, r2 - asrs r0, r0, #4 - ands r0, r3 - lsls r0, r0, #6 - orrs r1, r0 - adds r0, r4, #0 - adds r0, #0x86 - strh r1, [r0] - b _080252DC - .align 2, 0 -_080252D4: .4byte gRoomControls -_080252D8: - subs r0, #1 - strh r0, [r1] -_080252DC: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_080252E0 -sub_080252E0: @ 0x080252E0 - push {r4, r5, lr} - adds r4, r0, #0 - movs r1, #0x2e - ldrsh r0, [r4, r1] - movs r2, #0x32 - ldrsh r1, [r4, r2] - adds r2, r4, #0 - adds r2, #0x7c - ldrh r2, [r2] - adds r3, r4, #0 - adds r3, #0x7e - ldrh r3, [r3] - bl sub_080045D4 - strb r0, [r4, #0x15] - adds r0, r4, #0 - bl sub_08025C44 - adds r0, r4, #0 - bl GetNextFrame - movs r1, #0x2e - ldrsh r0, [r4, r1] - ldr r3, _08025348 @ =gRoomControls - ldrh r1, [r3, #6] - subs r0, r0, r1 - asrs r5, r0, #4 - movs r2, #0x3f - ands r5, r2 - movs r1, #0x32 - ldrsh r0, [r4, r1] - ldrh r1, [r3, #8] - subs r0, r0, r1 - asrs r0, r0, #4 - ands r0, r2 - lsls r0, r0, #6 - orrs r5, r0 - adds r0, r4, #0 - adds r0, #0x86 - ldrh r2, [r0] - cmp r5, r2 - bne _0802534C - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _08025352 - adds r0, r4, #0 - bl sub_080256B4 - b _08025352 - .align 2, 0 -_08025348: .4byte gRoomControls -_0802534C: - strh r5, [r0] - movs r0, #0xf0 - strb r0, [r4, #0xe] -_08025352: - movs r0, #0x2e - ldrsh r1, [r4, r0] - adds r0, r4, #0 - adds r0, #0x7c - ldrh r0, [r0] - cmp r1, r0 - bne _08025388 - movs r1, #0x32 - ldrsh r0, [r4, r1] - adds r1, r4, #0 - adds r1, #0x7e - ldrh r1, [r1] - cmp r0, r1 - bne _08025388 - movs r1, #0 - movs r0, #3 - strb r0, [r4, #0xc] - movs r0, #0x1e - strb r0, [r4, #0xe] - strb r1, [r4, #0xf] - movs r0, #0xc0 - lsls r0, r0, #9 - str r0, [r4, #0x20] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation -_08025388: - pop {r4, r5, pc} - .align 2, 0 - - thumb_func_start sub_0802538C -sub_0802538C: @ 0x0802538C - push {r4, lr} - adds r4, r0, #0 - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _0802539C - subs r0, #1 - strb r0, [r4, #0xe] - b _080253CC -_0802539C: - adds r0, r4, #0 - adds r0, #0x5a - ldrb r0, [r0] - cmp r0, #0 - bne _080253AE - adds r0, r4, #0 - bl GetNextFrame - b _080253CC -_080253AE: - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - ldr r1, [r4, #0x20] - ldr r0, _080253D0 @ =0x00001FFF - cmp r1, r0 - bgt _080253CC - movs r0, #4 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #2 - bl InitializeAnimation -_080253CC: - pop {r4, pc} - .align 2, 0 -_080253D0: .4byte 0x00001FFF - - thumb_func_start sub_080253D4 -sub_080253D4: @ 0x080253D4 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - movs r1, #0x80 - lsls r1, r1, #6 - adds r0, r4, #0 - bl sub_08003FC4 - cmp r0, #0 - bne _0802541A - ldrb r0, [r4, #0xf] - cmp r0, #0 - bne _080253FE - movs r0, #5 - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #3 - bl InitializeAnimation - b _0802541A -_080253FE: - movs r0, #6 - strb r0, [r4, #0xc] - movs r0, #0x1e - strb r0, [r4, #0xe] - adds r0, r4, #0 - movs r1, #3 - bl InitializeAnimation - adds r0, r4, #0 - bl sub_08025A54 - adds r0, r4, #0 - bl sub_08025AE8 -_0802541A: - pop {r4, pc} - - thumb_func_start sub_0802541C -sub_0802541C: @ 0x0802541C - 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 _08025448 - movs r0, #3 - strb r0, [r4, #0xc] - movs r0, #1 - strb r0, [r4, #0xf] - movs r0, #0x80 - lsls r0, r0, #0xa - str r0, [r4, #0x20] - adds r0, r4, #0 - movs r1, #1 - bl InitializeAnimation -_08025448: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_0802544C -sub_0802544C: @ 0x0802544C - push {r4, lr} - adds r4, r0, #0 - adds r0, #0x5a - ldrb r0, [r0] - cmp r0, #0 - bne _08025460 - adds r0, r4, #0 - bl GetNextFrame - b _0802547A -_08025460: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802547A - adds r0, r4, #0 - bl sub_080256B4 - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation -_0802547A: - pop {r4, pc} - - thumb_func_start sub_0802547C -sub_0802547C: @ 0x0802547C - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x80 - lsls r1, r1, #6 - bl sub_08003FC4 - adds r0, r4, #0 - bl GetNextFrame - ldrb r1, [r4, #0xe] - movs r0, #7 - ands r0, r1 - cmp r0, #0 - bne _0802549E - adds r0, r4, #0 - bl sub_08025BD4 -_0802549E: - ldrb r0, [r4, #0xe] - subs r0, #1 - strb r0, [r4, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _080254B0 - adds r0, r4, #0 - bl sub_08025C2C -_080254B0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080254B4 -sub_080254B4: @ 0x080254B4 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x80 - lsls r1, r1, #6 - bl sub_08003FC4 - adds r0, r4, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0802550C - movs r1, #0x36 - ldrsh r0, [r4, r1] - cmp r0, #0 - bne _08025512 - adds r0, r4, #0 - adds r0, #0x84 - ldrh r0, [r0] - cmp r0, #0 - bne _080254F6 - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x82 - strb r0, [r1] - adds r1, #0x43 - movs r0, #0xf0 - strb r0, [r1] - adds r0, r4, #0 - bl sub_080256B4 - b _08025502 -_080254F6: - movs r0, #0xc - strb r0, [r4, #0xc] - adds r0, r4, #0 - movs r1, #0x1c - bl sub_0804A9FC -_08025502: - adds r0, r4, #0 - movs r1, #0 - bl InitializeAnimation - b _08025512 -_0802550C: - adds r0, r4, #0 - bl GetNextFrame -_08025512: - pop {r4, pc} - - thumb_func_start sub_08025514 -sub_08025514: @ 0x08025514 - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - ldrb r1, [r4, #0xe] - adds r0, r1, #1 - strb r0, [r4, #0xe] - lsls r1, r1, #0x18 - lsrs r1, r1, #0x18 - adds r0, r4, #0 - bl sub_0802594C - cmp r0, #0 - beq _08025542 - movs r0, #2 - strb r0, [r4, #0xc] - movs r0, #0xf0 - strb r0, [r4, #0xe] - adds r1, r4, #0 - adds r1, #0x81 - movs r0, #0x78 - strb r0, [r1] - b _08025550 -_08025542: - ldrb r0, [r4, #0xe] - cmp r0, #3 - bls _08025550 - movs r0, #0xa - strb r0, [r4, #0xc] - movs r0, #0x20 - strb r0, [r4, #0xe] -_08025550: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_08025554 -sub_08025554: @ 0x08025554 - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - bl sub_08049DF4 - adds r2, r0, #0 - cmp r2, #0 - bne _0802556C - adds r0, r4, #0 - bl sub_080256B4 - b _080255A8 -_0802556C: - ldrb r1, [r4, #0xe] - movs r0, #3 - ands r0, r1 - cmp r0, #0 - bne _08025580 - adds r0, r2, #0 - adds r1, r4, #0 - bl GetFacingDirection - strb r0, [r4, #0x15] -_08025580: - adds r0, r4, #0 - bl sub_08025C44 - adds r0, r4, #0 - bl GetNextFrame - ldrb r0, [r4, #0xe] - cmp r0, #0 - beq _08025598 - subs r0, #1 - strb r0, [r4, #0xe] - b _080255A8 -_08025598: - adds r0, r4, #0 - bl sub_080258C4 - cmp r0, #0 - bne _080255A8 - adds r0, r4, #0 - bl sub_080256B4 -_080255A8: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080255AC -sub_080255AC: @ 0x080255AC - push {r4, r5, r6, lr} - adds r5, r0, #0 - movs r0, #1 - bl sub_08049DF4 - adds r6, r0, #0 - cmp r6, #0 - bne _080255C4 - adds r0, r5, #0 - bl sub_080256B4 - b _08025638 -_080255C4: - adds r1, r5, #0 - adds r1, #0x81 - ldrb r0, [r1] - cmp r0, #0 - beq _080255D2 - subs r0, #1 - strb r0, [r1] -_080255D2: - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0802560C - bl Random - movs r1, #3 - ands r0, r1 - adds r0, #4 - strb r0, [r5, #0xe] - bl Random - adds r4, r0, #0 - movs r0, #0xf - ands r4, r0 - cmp r4, #7 - bgt _080255FA - subs r4, #1 -_080255FA: - subs r4, #7 - adds r0, r6, #0 - adds r1, r5, #0 - bl GetFacingDirection - adds r0, r0, r4 - movs r1, #0x1f - ands r0, r1 - strb r0, [r5, #0x15] -_0802560C: - adds r1, r5, #0 - adds r1, #0x78 - ldrh r0, [r1] - cmp r0, #0 - bne _08025628 - adds r0, r5, #0 - bl sub_080258C4 - cmp r0, #0 - bne _0802562C - adds r0, r5, #0 - bl sub_080256B4 - b _0802562C -_08025628: - subs r0, #1 - strh r0, [r1] -_0802562C: - adds r0, r5, #0 - bl sub_08025C44 - adds r0, r5, #0 - bl GetNextFrame -_08025638: - pop {r4, r5, r6, pc} - .align 2, 0 - - thumb_func_start sub_0802563C -sub_0802563C: @ 0x0802563C - push {r4, lr} - adds r4, r0, #0 - bl GetNextFrame - adds r2, r4, #0 - adds r2, #0x84 - ldrh r0, [r2] - subs r1, r0, #1 - strh r1, [r2] - lsls r0, r1, #0x10 - cmp r0, #0 - bne _08025678 - adds r0, r4, #0 - movs r1, #0x28 - bl sub_0801D2B4 - adds r1, r4, #0 - adds r1, #0x3f - movs r0, #0x82 - strb r0, [r1] - adds r1, #0x43 - movs r0, #0xf0 - strb r0, [r1] - adds r0, r4, #0 - bl sub_080256B4 - adds r0, r4, #0 - bl sub_0804AA1C - b _080256B0 -_08025678: - lsls r1, r1, #0x10 - lsrs r0, r1, #0x10 - cmp r0, #0x77 - bhi _080256B0 - ldr r0, _080256A4 @ =gUnk_080CBFF8 - lsrs r1, r1, #0x14 - adds r1, r1, r0 - ldrb r1, [r1] - ldrh r2, [r2] - adds r0, r2, #0 - ands r0, r1 - cmp r0, #0 - bne _080256B0 - adds r0, r1, #1 - ands r2, r0 - cmp r2, #0 - beq _080256A8 - adds r0, r4, #0 - movs r1, #0x7c - bl sub_0801D2B4 - b _080256B0 - .align 2, 0 -_080256A4: .4byte gUnk_080CBFF8 -_080256A8: - adds r0, r4, #0 - movs r1, #0x28 - bl sub_0801D2B4 -_080256B0: - pop {r4, pc} - .align 2, 0 - - thumb_func_start sub_080256B4 -sub_080256B4: @ 0x080256B4 - push {r4, r5, lr} - adds r5, r0, #0 - movs r0, #1 - strb r0, [r5, #0xc] - bl Random - movs r1, #3 - ands r0, r1 - adds r0, #4 - strb r0, [r5, #0xe] - movs r0, #0x1e - strb r0, [r5, #0xf] - bl Random - ldrb r4, [r5, #0x15] - adds r4, #7 - movs r1, #7 - bl __modsi3 - lsls r0, r0, #2 - adds r4, r4, r0 - movs r0, #0x1c - ands r4, r0 - strb r4, [r5, #0x15] - bl Random - ldr r2, _08025718 @ =gUnk_080CC000 - movs r1, #0xf - ands r1, r0 - lsls r1, r1, #1 - adds r1, r1, r2 - ldrh r1, [r1] - adds r0, r5, #0 - adds r0, #0x78 - movs r4, #0 - strh r1, [r0] - bl Random - movs r1, #0x18 - bl __modsi3 - lsls r0, r0, #1 - adds r1, r5, #0 - adds r1, #0x7a - strb r0, [r1] - adds r0, r5, #0 - adds r0, #0x7b - strb r4, [r0] - pop {r4, r5, pc} - .align 2, 0 -_08025718: .4byte gUnk_080CC000 - - thumb_func_start sub_0802571C -sub_0802571C: @ 0x0802571C - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - adds r7, r0, #0 - ldr r0, _080257B0 @ =gRoomControls - mov sb, r0 - ldrh r0, [r7, #0x2e] - mov r2, sb - ldrh r1, [r2, #6] - subs r0, r0, r1 - adds r0, #8 - movs r3, #0x10 - rsbs r3, r3, #0 - adds r2, r3, #0 - ands r0, r2 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - str r0, [sp] - ldrh r0, [r7, #0x32] - mov r3, sb - ldrh r1, [r3, #8] - subs r0, r0, r1 - adds r0, #8 - ands r0, r2 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - mov sl, r0 - adds r0, r7, #0 - adds r0, #0x7a - ldrb r4, [r0] - movs r3, #0 - ldr r0, _080257B4 @ =gUnk_080CC020 - mov r8, r0 -_08025764: - mov r1, r8 - adds r0, r4, r1 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - ldr r2, [sp] - adds r0, r2, r0 - lsls r0, r0, #0x10 - lsrs r6, r0, #0x10 - adds r0, r4, #1 - add r0, r8 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - add r0, sl - lsls r0, r0, #0x10 - lsrs r5, r0, #0x10 - adds r0, r7, #0 - adds r1, r6, #0 - adds r2, r5, #0 - str r3, [sp, #4] - bl sub_080257EC - ldr r3, [sp, #4] - cmp r0, #0 - beq _080257B8 - mov r3, sb - ldrh r0, [r3, #6] - adds r0, r6, r0 - adds r1, r7, #0 - adds r1, #0x7c - strh r0, [r1] - ldrh r0, [r3, #8] - adds r0, r5, r0 - adds r1, #2 - strh r0, [r1] - movs r0, #1 - b _080257E0 - .align 2, 0 -_080257B0: .4byte gRoomControls -_080257B4: .4byte gUnk_080CC020 -_080257B8: - adds r0, r4, #2 - lsls r0, r0, #0x10 - lsrs r4, r0, #0x10 - cmp r4, #0x2f - bls _080257C4 - movs r4, #0 -_080257C4: - adds r0, r3, #1 - lsls r0, r0, #0x10 - lsrs r3, r0, #0x10 - cmp r3, #3 - bls _08025764 - adds r0, r7, #0 - adds r0, #0x7a - strb r4, [r0] - adds r1, r7, #0 - adds r1, #0x7b - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - movs r0, #0 -_080257E0: - add sp, #8 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_080257EC -sub_080257EC: @ 0x080257EC - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r4, r0, #0 - adds r7, r1, #0 - adds r6, r2, #0 - adds r0, #0x38 - ldrb r2, [r0] - adds r0, r7, #0 - adds r1, r6, #0 - bl sub_080002A8 - lsls r0, r0, #0x10 - lsrs r2, r0, #0x10 - ldr r0, _080258B0 @ =0x00000312 - cmp r2, r0 - beq _08025822 - ldr r0, _080258B4 @ =gUnk_080B37A0 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, #0x16 - beq _08025822 - ldr r0, _080258B8 @ =gUnk_080B3E80 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, #0 - beq _080258AA -_08025822: - adds r5, r7, #0 - subs r5, #0x10 - adds r4, #0x38 - ldrb r2, [r4] - adds r0, r5, #0 - adds r1, r6, #0 - bl sub_080002A8 - lsls r0, r0, #0x10 - lsrs r2, r0, #0x10 - ldr r0, _080258B0 @ =0x00000312 - mov r8, r4 - cmp r2, r0 - beq _08025852 - ldr r0, _080258B4 @ =gUnk_080B37A0 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, #0x16 - beq _08025852 - ldr r0, _080258B8 @ =gUnk_080B3E80 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, #0 - beq _080258AA -_08025852: - adds r4, r6, #0 - subs r4, #0x10 - mov r0, r8 - ldrb r2, [r0] - adds r0, r7, #0 - adds r1, r4, #0 - bl sub_080002A8 - lsls r0, r0, #0x10 - lsrs r2, r0, #0x10 - ldr r0, _080258B0 @ =0x00000312 - adds r1, r4, #0 - cmp r2, r0 - beq _08025882 - ldr r0, _080258B4 @ =gUnk_080B37A0 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, #0x16 - beq _08025882 - ldr r0, _080258B8 @ =gUnk_080B3E80 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, #0 - beq _080258AA -_08025882: - mov r0, r8 - ldrb r2, [r0] - adds r0, r5, #0 - bl sub_080002A8 - lsls r0, r0, #0x10 - lsrs r2, r0, #0x10 - ldr r0, _080258B0 @ =0x00000312 - cmp r2, r0 - beq _080258BC - ldr r0, _080258B4 @ =gUnk_080B37A0 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, #0x16 - beq _080258BC - ldr r0, _080258B8 @ =gUnk_080B3E80 - adds r0, r2, r0 - ldrb r0, [r0] - cmp r0, #0 - bne _080258BC -_080258AA: - movs r0, #1 - b _080258BE - .align 2, 0 -_080258B0: .4byte 0x00000312 -_080258B4: .4byte gUnk_080B37A0 -_080258B8: .4byte gUnk_080B3E80 -_080258BC: - movs r0, #0 -_080258BE: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7, pc} - - thumb_func_start sub_080258C4 -sub_080258C4: @ 0x080258C4 - push {r4, lr} - adds r4, r0, #0 - movs r0, #1 - bl sub_08049DF4 - adds r2, r0, #0 - cmp r2, #0 - beq _08025922 - movs r0, #0x2e - ldrsh r1, [r2, r0] - movs r3, #0x2e - ldrsh r0, [r4, r3] - subs r3, r1, r0 - adds r0, r3, #0 - muls r0, r3, r0 - adds r3, r0, #0 - movs r1, #0x32 - ldrsh r0, [r2, r1] - movs r2, #0x32 - ldrsh r1, [r4, r2] - subs r0, r0, r1 - adds r1, r0, #0 - muls r1, r0, r1 - adds r0, r1, #0 - adds r3, r3, r0 - adds r0, r4, #0 - adds r0, #0x84 - ldrh r0, [r0] - cmp r0, #0 - bne _0802591A - adds r0, r4, #0 - adds r0, #0x81 - ldrb r1, [r0] - cmp r1, #0 - bne _0802591A - movs r0, #0x80 - lsls r0, r0, #3 - cmp r3, r0 - bgt _0802591A - movs r0, #9 - strb r0, [r4, #0xc] - strb r1, [r4, #0xe] - b _08025942 -_0802591A: - movs r0, #0x90 - lsls r0, r0, #4 - cmp r3, r0 - ble _08025926 -_08025922: - movs r0, #0 - b _08025944 -_08025926: - movs r0, #0xb - strb r0, [r4, #0xc] - movs r0, #1 - strb r0, [r4, #0xe] - bl Random - ldr r2, _08025948 @ =gUnk_080CC050 - movs r1, #0xf - ands r1, r0 - adds r1, r1, r2 - ldrb r1, [r1] - adds r0, r4, #0 - adds r0, #0x78 - strh r1, [r0] -_08025942: - movs r0, #1 -_08025944: - pop {r4, pc} - .align 2, 0 -_08025948: .4byte gUnk_080CC050 - - thumb_func_start sub_0802594C -sub_0802594C: @ 0x0802594C - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #0x14 - mov sl, r0 - ldr r0, _08025A20 @ =gUnk_080CC090 - lsls r1, r1, #2 - adds r1, r1, r0 - ldr r7, [r1] - mov r0, sl - adds r0, #0x38 - ldrb r0, [r0] - mov sb, r0 - ldr r3, _08025A24 @ =gRoomControls - mov r1, sl - ldrh r0, [r1, #0x2e] - ldrh r1, [r3, #6] - subs r0, r0, r1 - adds r0, #8 - movs r1, #0x10 - rsbs r1, r1, #0 - adds r2, r1, #0 - ands r0, r2 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - str r0, [sp] - mov r1, sl - ldrh r0, [r1, #0x32] - ldrh r1, [r3, #8] - subs r0, r0, r1 - adds r0, #8 - ands r0, r2 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - str r0, [sp, #4] -_08025996: - movs r0, #0 - ldrsb r0, [r7, r0] - ldr r1, [sp] - lsls r4, r1, #0x10 - asrs r4, r4, #0x10 - adds r4, r4, r0 - lsls r4, r4, #0x10 - movs r0, #1 - ldrsb r0, [r7, r0] - ldr r1, [sp, #4] - lsls r5, r1, #0x10 - asrs r5, r5, #0x10 - adds r5, r5, r0 - lsls r5, r5, #0x10 - lsrs r0, r4, #0x10 - str r0, [sp, #8] - asrs r4, r4, #0x10 - lsrs r1, r5, #0x10 - str r1, [sp, #0xc] - asrs r5, r5, #0x10 - adds r0, r4, #0 - adds r1, r5, #0 - mov r2, sb - bl sub_080002D4 - adds r6, r0, #0 - lsls r6, r6, #0x18 - lsrs r6, r6, #0x18 - movs r0, #0x10 - rsbs r0, r0, #0 - adds r0, r0, r4 - mov r8, r0 - adds r1, r5, #0 - mov r2, sb - bl sub_080002D4 - adds r3, r0, #0 - lsls r3, r3, #0x18 - lsrs r3, r3, #0x18 - subs r5, #0x10 - adds r0, r4, #0 - adds r1, r5, #0 - mov r2, sb - str r3, [sp, #0x10] - bl sub_080002D4 - adds r4, r0, #0 - lsls r4, r4, #0x18 - lsrs r4, r4, #0x18 - mov r0, r8 - adds r1, r5, #0 - mov r2, sb - bl sub_080002D4 - ldr r3, [sp, #0x10] - orrs r6, r3 - orrs r4, r6 - orrs r4, r0 - lsls r4, r4, #0x18 - cmp r4, #0 - beq _08025A28 - adds r7, #2 - movs r0, #0 - ldrsb r0, [r7, r0] - cmp r0, #0x7f - bne _08025996 - movs r0, #0 - b _08025A44 - .align 2, 0 -_08025A20: .4byte gUnk_080CC090 -_08025A24: .4byte gRoomControls -_08025A28: - ldr r2, _08025A50 @ =gRoomControls - ldrh r0, [r2, #6] - ldr r1, [sp, #8] - adds r0, r0, r1 - mov r1, sl - adds r1, #0x7c - strh r0, [r1] - ldrh r0, [r2, #8] - ldr r1, [sp, #0xc] - adds r0, r0, r1 - mov r1, sl - adds r1, #0x7e - strh r0, [r1] - movs r0, #1 -_08025A44: - add sp, #0x14 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08025A50: .4byte gRoomControls - - thumb_func_start sub_08025A54 -sub_08025A54: @ 0x08025A54 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - adds r1, r0, #0 - adds r1, #0x38 - ldrb r1, [r1] - mov sb, r1 - ldr r3, _08025AB0 @ =gRoomControls - ldrh r2, [r0, #0x2e] - ldrh r1, [r3, #6] - subs r2, r2, r1 - ldrh r1, [r0, #0x32] - ldrh r0, [r3, #8] - subs r1, r1, r0 - ldr r4, _08025AB4 @ =gUnk_080CC0A0 - movs r5, #0 - lsls r2, r2, #0x10 - asrs r2, r2, #0x10 - mov r8, r2 - movs r6, #0x3f - lsls r1, r1, #0x10 - asrs r7, r1, #0x10 -_08025A82: - movs r0, #0 - ldrsb r0, [r4, r0] - add r0, r8 - asrs r0, r0, #4 - ands r0, r6 - movs r1, #1 - ldrsb r1, [r4, r1] - adds r1, r7, r1 - asrs r1, r1, #4 - ands r1, r6 - lsls r1, r1, #6 - orrs r0, r1 - mov r1, sb - bl sub_08025AB8 - adds r5, #1 - adds r4, #2 - cmp r5, #3 - bls _08025A82 - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08025AB0: .4byte gRoomControls -_08025AB4: .4byte gUnk_080CC0A0 - - thumb_func_start sub_08025AB8 -sub_08025AB8: @ 0x08025AB8 - push {r4, r5, lr} - adds r4, r0, #0 - adds r5, r1, #0 - bl sub_080002E0 - cmp r0, #0 - bne _08025AD6 - lsls r0, r4, #0x10 - lsrs r0, r0, #0x10 - lsls r1, r5, #0x18 - lsrs r1, r1, #0x18 - bl sub_080002C8 - cmp r0, #0xa - beq _08025ADA -_08025AD6: - movs r0, #0 - b _08025AE6 -_08025ADA: - movs r0, #0x61 - adds r1, r4, #0 - adds r2, r5, #0 - bl sub_0807B7D8 - movs r0, #1 -_08025AE6: - pop {r4, r5, pc} - - thumb_func_start sub_08025AE8 -sub_08025AE8: @ 0x08025AE8 - push {r4, lr} - adds r4, r0, #0 - movs r1, #0x22 - movs r2, #0 - bl CreateFx - adds r1, r0, #0 - cmp r1, #0 - beq _08025B00 - ldr r0, [r1, #0x30] - subs r0, #1 - str r0, [r1, #0x30] -_08025B00: - adds r0, r4, #0 - movs r1, #0x23 - movs r2, #0 - bl CreateFx - adds r1, r0, #0 - cmp r1, #0 - beq _08025B16 - ldr r0, [r1, #0x30] - adds r0, #1 - str r0, [r1, #0x30] -_08025B16: - pop {r4, pc} - - thumb_func_start sub_08025B18 -sub_08025B18: @ 0x08025B18 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - adds r6, r0, #0 - movs r0, #0x2e - ldrsh r1, [r6, r0] - ldr r2, _08025BC8 @ =gRoomControls - ldrh r0, [r2, #6] - subs r1, r1, r0 - str r1, [sp] - movs r0, #0x32 - ldrsh r1, [r6, r0] - ldrh r0, [r2, #8] - subs r1, r1, r0 - str r1, [sp, #4] - adds r0, r6, #0 - adds r0, #0x38 - ldrb r0, [r0] - mov sl, r0 - ldr r5, _08025BCC @ =gUnk_080CC0A8 - movs r7, #0 - movs r1, #0x3f - mov r8, r1 - movs r2, #0x10 - rsbs r2, r2, #0 - mov sb, r2 -_08025B52: - movs r0, #0 - ldrsb r0, [r5, r0] - ldr r1, [sp] - adds r0, r1, r0 - asrs r0, r0, #4 - mov r2, r8 - ands r0, r2 - movs r1, #1 - ldrsb r1, [r5, r1] - ldr r2, [sp, #4] - adds r1, r2, r1 - asrs r1, r1, #4 - mov r2, r8 - ands r1, r2 - lsls r1, r1, #6 - orrs r0, r1 - mov r1, sl - bl sub_08025AB8 - movs r0, #0x21 - movs r1, #2 - movs r2, #0 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _08025BB4 - movs r2, #0 - ldrsb r2, [r5, r2] - lsls r2, r2, #0x10 - movs r3, #1 - ldrsb r3, [r5, r3] - lsls r3, r3, #0x10 - adds r0, r6, #0 - adds r1, r4, #0 - bl PositionRelative - ldrh r1, [r4, #0x2e] - mov r0, sb - ands r0, r1 - adds r0, #8 - strh r0, [r4, #0x2e] - ldrh r1, [r4, #0x32] - mov r0, sb - ands r0, r1 - adds r0, #8 - strh r0, [r4, #0x32] - ldr r0, _08025BD0 @ =0x0000FFFF - strh r0, [r4, #0x36] -_08025BB4: - adds r7, #1 - adds r5, #2 - cmp r7, #8 - bls _08025B52 - add sp, #8 - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_08025BC8: .4byte gRoomControls -_08025BCC: .4byte gUnk_080CC0A8 -_08025BD0: .4byte 0x0000FFFF - - thumb_func_start sub_08025BD4 -sub_08025BD4: @ 0x08025BD4 - push {r4, r5, lr} - adds r5, r0, #0 - adds r0, #0x82 - ldrb r0, [r0] - cmp r0, #0 - beq _08025C22 - adds r0, r5, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _08025C22 - movs r0, #0x21 - movs r1, #0 - movs r2, #0 - bl CreateObject - adds r4, r0, #0 - cmp r4, #0 - beq _08025C22 - ldr r3, _08025C24 @ =gUnk_080CC0BA - ldrb r0, [r5, #0x14] - lsls r0, r0, #1 - adds r1, r0, r3 - movs r2, #0 - ldrsb r2, [r1, r2] - lsls r2, r2, #0x10 - adds r0, #1 - adds r0, r0, r3 - movs r3, #0 - ldrsb r3, [r0, r3] - lsls r3, r3, #0x10 - adds r0, r5, #0 - adds r1, r4, #0 - bl PositionRelative - ldr r0, _08025C28 @ =0x0000FFF6 - strh r0, [r4, #0x36] -_08025C22: - pop {r4, r5, pc} - .align 2, 0 -_08025C24: .4byte gUnk_080CC0BA -_08025C28: .4byte 0x0000FFF6 - - thumb_func_start sub_08025C2C -sub_08025C2C: @ 0x08025C2C - push {lr} - movs r2, #0 - movs r1, #8 - strb r1, [r0, #0xc] - adds r1, r0, #0 - adds r1, #0x80 - strb r2, [r1] - movs r1, #8 - bl InitializeAnimation - pop {pc} - .align 2, 0 - - thumb_func_start sub_08025C44 -sub_08025C44: @ 0x08025C44 - push {lr} - adds r2, r0, #0 - adds r0, #0x5a - ldrb r1, [r0] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _08025C58 - movs r0, #0 - b _08025C5E -_08025C58: - adds r0, r2, #0 - bl ProcessMovement -_08025C5E: - pop {pc} - - thumb_func_start sub_08025C60 -sub_08025C60: @ 0x08025C60 - push {r4, lr} - adds r4, r0, #0 - bl sub_08049FA0 - cmp r0, #0 - bne _08025C80 - bl Random - movs r1, #1 - ands r1, r0 - cmp r1, #0 - beq _08025C80 - adds r0, r4, #0 - bl sub_08049EE4 - b _08025C98 -_08025C80: - bl Random - ldr r2, _08025C9C @ =gUnk_080CC0C2 - movs r1, #7 - ands r1, r0 - adds r1, r1, r2 - movs r0, #0 - ldrsb r0, [r1, r0] - ldrb r4, [r4, #0x15] - adds r0, r0, r4 - movs r1, #0x1f - ands r0, r1 -_08025C98: - pop {r4, pc} - .align 2, 0 -_08025C9C: .4byte gUnk_080CC0C2 diff --git a/data/animations/puffstool.s b/data/animations/puffstool.s new file mode 100644 index 00000000..f525cb04 --- /dev/null +++ b/data/animations/puffstool.s @@ -0,0 +1,34 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .section .rodata + +gUnk_080CC0CA:: @ 080CC0CA + .incbin "baserom.gba", 0x0CC0CA, 0x0000041 + +gUnk_080CC10B:: @ 080CC10B + .incbin "baserom.gba", 0x0CC10B, 0x000000D + +gUnk_080CC118:: @ 080CC118 + .incbin "baserom.gba", 0x0CC118, 0x0000009 + +gUnk_080CC121:: @ 080CC121 + .incbin "baserom.gba", 0x0CC121, 0x0000010 + +gUnk_080CC131:: @ 080CC131 + .incbin "baserom.gba", 0x0CC131, 0x000000D + +gUnk_080CC13E:: @ 080CC13E + .incbin "baserom.gba", 0x0CC13E, 0x000000D + +gUnk_080CC14B:: @ 080CC14B + .incbin "baserom.gba", 0x0CC14B, 0x000000D + +gUnk_080CC158:: @ 080CC158 + .incbin "baserom.gba", 0x0CC158, 0x000000D + +gUnk_080CC165:: @ 080CC165 + .incbin "baserom.gba", 0x0CC165, 0x000000F + +gUnk_080CC174:: @ 080CC174 + .incbin "baserom.gba", 0x0CC174, 0x0000028 diff --git a/data/data_080CBF9C.s b/data/data_080CBF9C.s index 03b6380d..d00c10c8 100644 --- a/data/data_080CBF9C.s +++ b/data/data_080CBF9C.s @@ -3,87 +3,6 @@ .section .rodata -gUnk_080CBF9C:: @ 080CBF9C - .incbin "baserom.gba", 0x0CBF9C, 0x0000018 - -gUnk_080CBFB4:: @ 080CBFB4 - .incbin "baserom.gba", 0x0CBFB4, 0x0000034 - -gUnk_080CBFE8:: @ 080CBFE8 - .incbin "baserom.gba", 0x0CBFE8, 0x0000004 - -gUnk_080CBFEC:: @ 080CBFEC - .incbin "baserom.gba", 0x0CBFEC, 0x000000C - -gUnk_080CBFF8:: @ 080CBFF8 - .incbin "baserom.gba", 0x0CBFF8, 0x0000008 - -gUnk_080CC000:: @ 080CC000 - .incbin "baserom.gba", 0x0CC000, 0x0000020 - -gUnk_080CC020:: @ 080CC020 - .incbin "baserom.gba", 0x0CC020, 0x0000030 - -gUnk_080CC050:: @ 080CC050 - .incbin "baserom.gba", 0x0CC050, 0x0000008 - -gUnk_080CC058:: @ 080CC058 - .incbin "baserom.gba", 0x0CC058, 0x000000B - -gUnk_080CC063:: @ 080CC063 - .incbin "baserom.gba", 0x0CC063, 0x0000011 - -gUnk_080CC074:: @ 080CC074 - .incbin "baserom.gba", 0x0CC074, 0x0000011 - -gUnk_080CC085:: @ 080CC085 - .incbin "baserom.gba", 0x0CC085, 0x000000B - -gUnk_080CC090:: @ 080CC090 - .incbin "baserom.gba", 0x0CC090, 0x0000010 - -gUnk_080CC0A0:: @ 080CC0A0 - .incbin "baserom.gba", 0x0CC0A0, 0x0000008 - -gUnk_080CC0A8:: @ 080CC0A8 - .incbin "baserom.gba", 0x0CC0A8, 0x0000012 - -gUnk_080CC0BA:: @ 080CC0BA - .incbin "baserom.gba", 0x0CC0BA, 0x0000008 - -gUnk_080CC0C2:: @ 080CC0C2 - .incbin "baserom.gba", 0x0CC0C2, 0x0000008 - -gUnk_080CC0CA:: @ 080CC0CA - .incbin "baserom.gba", 0x0CC0CA, 0x0000041 - -gUnk_080CC10B:: @ 080CC10B - .incbin "baserom.gba", 0x0CC10B, 0x000000D - -gUnk_080CC118:: @ 080CC118 - .incbin "baserom.gba", 0x0CC118, 0x0000009 - -gUnk_080CC121:: @ 080CC121 - .incbin "baserom.gba", 0x0CC121, 0x0000010 - -gUnk_080CC131:: @ 080CC131 - .incbin "baserom.gba", 0x0CC131, 0x000000D - -gUnk_080CC13E:: @ 080CC13E - .incbin "baserom.gba", 0x0CC13E, 0x000000D - -gUnk_080CC14B:: @ 080CC14B - .incbin "baserom.gba", 0x0CC14B, 0x000000D - -gUnk_080CC158:: @ 080CC158 - .incbin "baserom.gba", 0x0CC158, 0x000000D - -gUnk_080CC165:: @ 080CC165 - .incbin "baserom.gba", 0x0CC165, 0x000000F - -gUnk_080CC174:: @ 080CC174 - .incbin "baserom.gba", 0x0CC174, 0x0000028 - gUnk_080CC19C:: @ 080CC19C .incbin "baserom.gba", 0x0CC19C, 0x0000014 diff --git a/linker.ld b/linker.ld index 48b0cd46..9bf5dc10 100644 --- a/linker.ld +++ b/linker.ld @@ -343,7 +343,7 @@ SECTIONS { src/enemy/moldworm.o(.text); src/enemy/sluggula.o(.text); src/enemy/pesto.o(.text); - asm/puffstool.o(.text); + src/enemy/puffstool.o(.text); asm/chuchuBoss.o(.text); asm/likeLike.o(.text); asm/spearMoblin.o(.text); @@ -938,6 +938,8 @@ SECTIONS { data/animations/sluggula.o(.rodata); src/enemy/pesto.o(.rodata); data/animations/pesto.o(.rodata); + src/enemy/puffstool.o(.rodata); + data/animations/puffstool.o(.rodata); data/data_080CBF9C.o(.rodata); src/enemy.o(.rodata); data/data_080D3D94.o(.rodata); diff --git a/src/enemy/puffstool.c b/src/enemy/puffstool.c new file mode 100644 index 00000000..0c1d563a --- /dev/null +++ b/src/enemy/puffstool.c @@ -0,0 +1,724 @@ +#include "enemy.h" +#include "entity.h" +#include "functions.h" + +extern u32 sub_080002E0(u32, u32); +extern u32 sub_080002C8(u16, u8); +extern u16 sub_080002A8(u32, u32, u32); +extern u16 sub_080002D4(u32, u32, u32); +extern void sub_0804AA1C(Entity*); +extern Entity* sub_08049DF4(u32); +extern void sub_0807B7D8(u32, u32, u32); + +extern u8 gUnk_080B37A0[]; +extern u8 gUnk_080B3E80[]; + +bool32 sub_080258C4(Entity*); +void sub_08025B18(Entity*); +void sub_08025C2C(Entity*); +void sub_08025BD4(Entity*); +void sub_080256B4(Entity*); +bool32 sub_08025C44(Entity*); +u32 sub_08025C60(Entity*); +bool32 sub_0802571C(Entity*); +void sub_08025A54(Entity*); +void sub_08025AE8(Entity*); +bool32 sub_0802594C(Entity*, u32); +bool32 sub_080257EC(Entity*, u32, u32); +bool32 sub_08025AB8(u32, u32); + +extern void (*const gUnk_080CBF9C[])(Entity*); +extern void (*const gUnk_080CBFB4[])(Entity*); +extern const u8 gUnk_080CBFE8[]; +extern void (*const gUnk_080CBFEC[])(Entity*); +extern const u8 gUnk_080CBFF8[]; +extern const u16 gUnk_080CC000[]; +extern const s8 gUnk_080CC020[]; +extern const u8 gUnk_080CC050[]; +extern const s8* const gUnk_080CC090[]; +extern const s8 gUnk_080CC0A0[]; +extern const s8 gUnk_080CC0A8[]; +extern const s8 gUnk_080CC0BA[]; +extern const s8 gUnk_080CC0C2[]; + +void Puffstool(Entity* this) { + EnemyFunctionHandler(this, gUnk_080CBF9C); + SetChildOffset(this, 0, 1, -0x10); +} + +void sub_08025008(Entity* this) { + gUnk_080CBFB4[this->action](this); +} + +void sub_08025020(Entity* this) { + u8 tmp; + + switch (this->bitfield & 0x7f) { + case 0 ... 3: + /* ... */ + break; + case 0x1b: + sub_0804AA1C(this); + + tmp = gUnk_080CBFE8[(*(Entity**)&this->field_0x4c)->entityType.form]; + if (tmp < this->field_0x82.HALF.LO) { + this->field_0x82.HALF.LO -= gUnk_080CBFE8[(*(Entity**)&this->field_0x4c)->entityType.form]; + } else { + this->cutsceneBeh.HWORD = 0x294; + this->damageType = 0x83; + this->field_0x82.HALF.LO = 0; + sub_0801D2B4(this, 0x7c); + } + this->action = 7; + this->actionDelay = 0x3c; + if (0 < this->field_0x20) { + this->field_0x20 = 0; + } + this->hurtBlinkTime = -0xc; + this->field_0x42 = 0; + if (this->field_0x80.HALF.LO == 0) { + this->animationState = (*(Entity**)&this->field_0x4c)->direction >> 3; + InitializeAnimation(this, this->animationState + 4); + this->frameDuration = 6; + this->field_0x80.HALF.LO = 1; + } + break; + default: + if (this->damageType == 0x82 && this->hurtBlinkTime < 0) { + Entity* ent = CreateObject(0x21, 2, 0); + if (ent != NULL) { + ent->spritePriority.b0 = 3; + CopyPosition(this, ent); + } + EnqueueSFX(0x186); + } + break; + } + + sub_0804AA30(this, gUnk_080CBF9C); +} + +void sub_0802511C(Entity* this) { + if ((this->field_0x3a & 2) && this->actionDelay == 1 && this->field_0x82.HALF.LO) { + sub_08025B18(this); + } + sub_0804A7D4(this); +} + +void sub_0802514C(Entity* this) { + sub_08003FC4(this, 0x2000); + if (sub_0806F520(this)) { + gUnk_080CBFEC[this->previousActionFlag](this); + } else { + sub_08025C2C(this); + } +} + +void sub_08025180(Entity* this) { + this->previousActionFlag = 1; + this->actionDelay = Random(); + this->animationState = (((*(Entity**)&this->field_0x4c)->direction ^ 0x10) >> 3); + InitializeAnimation(this, this->animationState + 4); + sub_0804AA1C(this); +} + +void sub_080251AC(Entity* this) { + if (this->field_0x82.HALF.LO >= 4) { + this->field_0x82.HALF.LO -= 3; + if ((--this->actionDelay & 3) == 0) { + sub_08025BD4(this); + } + } else { + this->cutsceneBeh.HWORD = 0x294; + this->damageType = 0x83; + this->field_0x82.HALF.LO = 0; + sub_0801D2B4(this, 0x7c); + } + GetNextFrame(this); +} + +void sub_080251FC(Entity* this) { + sub_0804A720(this); + this->field_0x82.HALF.LO = 240; + this->direction = Random() & 0x1c; + this->field_0x80.HALF.LO = 0; + sub_080256B4(this); + InitializeAnimation(this, 0); +} + +void sub_08025230(Entity* this) { + if (this->field_0x80.HALF.HI) + this->field_0x80.HALF.HI--; + + sub_08025C44(this); + GetNextFrame(this); + if (--this->actionDelay == 0) { + this->actionDelay = (Random() & 3) + 4; + this->direction = sub_08025C60(this); + } + + if (this->collisions != 0) { + if (--this->field_0xf == 0) { + sub_0800417E(this, this->collisions); + } + } else { + this->field_0xf = 30; + } + + if (this->field_0x78.HWORD == 0) { + if (sub_0802571C(this)) { + this->action = 2; + this->actionDelay = 240; + this->field_0x86 = COORD_TO_TILE(this); + } + } else { + this->field_0x78.HWORD--; + } +} + +void sub_080252E0(Entity* this) { + u32 tile; + + this->direction = + sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, (u16)this->field_0x7c.HALF.LO, (u16)this->field_0x7c.HALF.HI); + + sub_08025C44(this); + GetNextFrame(this); + + tile = COORD_TO_TILE(this); + if (tile == this->field_0x86) { + if (--this->actionDelay == 0) { + sub_080256B4(this); + } + } else { + this->field_0x86 = tile; + this->actionDelay = 240; + } + + if (this->x.HALF.HI == (u16)this->field_0x7c.HALF.LO && this->y.HALF.HI == (u16)this->field_0x7c.HALF.HI) { + this->action = 3; + this->actionDelay = 0x1e; + this->field_0xf = 0; + this->field_0x20 = 0x18000; + InitializeAnimation(this, 1); + } +} + +void sub_0802538C(Entity* this) { + if (this->actionDelay) { + this->actionDelay--; + } else { + if (this->frames.all == 0) { + GetNextFrame(this); + } else { + sub_08003FC4(this, 0x2000); + if (this->field_0x20 < 0x2000) { + this->action = 4; + InitializeAnimation(this, 2); + } + } + } +} + +void sub_080253D4(Entity* this) { + GetNextFrame(this); + if (!sub_08003FC4(this, 0x2000)) { + if (this->field_0xf == 0) { + this->action = 5; + InitializeAnimation(this, 3); + } else { + this->action = 6; + this->actionDelay = 0x1e; + InitializeAnimation(this, 3); + sub_08025A54(this); + sub_08025AE8(this); + } + } +} + +void sub_0802541C(Entity* this) { + GetNextFrame(this); + if (this->frames.all & 0x80) { + this->action = 3; + this->field_0xf = 1; + this->field_0x20 = 0x20000; + InitializeAnimation(this, 1); + } +} + +void sub_0802544C(Entity* this) { + if (this->frames.all == 0) { + GetNextFrame(this); + } else { + if (--this->actionDelay == 0) { + sub_080256B4(this); + InitializeAnimation(this, 0); + } + } +} + +void sub_0802547C(Entity* this) { + sub_08003FC4(this, 0x2000); + GetNextFrame(this); + if ((this->actionDelay & 7) == 0) { + sub_08025BD4(this); + } + + if (--this->actionDelay == 0) { + sub_08025C2C(this); + } +} + +void sub_080254B4(Entity* this) { + sub_08003FC4(this, 0x2000); + if (this->frames.all & 0x80) { + if (this->height.HALF.HI == 0) { + if (this->cutsceneBeh.HWORD == 0) { + this->damageType = 0x82; + this->field_0x82.HALF.LO = -0x10; + sub_080256B4(this); + } else { + this->action = 0xc; + sub_0804A9FC(this, 0x1c); + } + InitializeAnimation(this, 0); + } + } else { + GetNextFrame(this); + } +} + +void sub_08025514(Entity* this) { + GetNextFrame(this); + if (sub_0802594C(this, this->actionDelay++)) { + this->action = 2; + this->actionDelay = 240; + this->field_0x80.HALF.HI = 120; + } else if (3 < this->actionDelay) { + this->action = 10; + this->actionDelay = 0x20; + } +} + +void sub_08025554(Entity* this) { + Entity* ent = sub_08049DF4(1); + if (ent == NULL) { + sub_080256B4(this); + } else { + if ((this->actionDelay & 3) == 0) { + this->direction = GetFacingDirection(ent, this); + } + sub_08025C44(this); + GetNextFrame(this); + if (this->actionDelay != 0) { + this->actionDelay--; + } else { + if (!sub_080258C4(this)) { + sub_080256B4(this); + } + } + } +} + +void sub_080255AC(Entity* this) { + Entity* ent = sub_08049DF4(1); + if (ent == NULL) { + sub_080256B4(this); + } else { + if (this->field_0x80.HALF.HI != 0) { + this->field_0x80.HALF.HI--; + } + + if (--this->actionDelay == 0) { + s32 tmp; + + this->actionDelay = (Random() & 3) + 4; + + tmp = Random() & 0xf; + if (tmp < 8) { + tmp -= 1; + } + tmp -= 7; + + this->direction = (GetFacingDirection(ent, this) + tmp) & 0x1f; + } + + if (this->field_0x78.HWORD == 0) { + if (sub_080258C4(this) == 0) { + sub_080256B4(this); + } + } else { + this->field_0x78.HWORD--; + } + sub_08025C44(this); + GetNextFrame(this); + } +} + +void sub_0802563C(Entity* this) { + GetNextFrame(this); + + if (--this->cutsceneBeh.HWORD == 0) { + sub_0801D2B4(this, 0x28); + this->damageType = 0x82; + this->field_0x82.HALF.LO = 240; + sub_080256B4(this); + sub_0804AA1C(this); + } else if (this->cutsceneBeh.HWORD < 120) { + u32 tmp3 = gUnk_080CBFF8[this->cutsceneBeh.HWORD >> 4]; + if ((this->cutsceneBeh.HWORD & tmp3) == 0) { + if (this->cutsceneBeh.HWORD & (tmp3 + 1)) { + sub_0801D2B4(this, 124); + } else { + sub_0801D2B4(this, 40); + } + } + } +} + +void sub_080256B4(Entity* this) { + this->action = 1; + this->actionDelay = (Random() & 3) + 4; + this->field_0xf = 0x1e; + this->direction = (this->direction + 7 + ((s32)Random() % 7) * 4) & 0x1c; + this->field_0x78.HWORD = gUnk_080CC000[Random() & 0xf]; + this->field_0x7a.HALF.LO = ((s32)Random() % 0x18) << 1; + this->field_0x7a.HALF.HI = 0; +} + +bool32 sub_0802571C(Entity* this) { + RoomControls* ctrl = &gRoomControls; + u16 xDiff = (this->x.HALF.HI - ctrl->roomOriginX + 8) & -0x10; + u16 yDiff = (this->y.HALF.HI - ctrl->roomOriginY + 8) & -0x10; + u16 unk = this->field_0x7a.HALF.LO; + u16 i; + + for (i = 0; i < 4; i++) { + u16 sVar3 = xDiff + gUnk_080CC020[unk + 0]; + u16 sVar4 = yDiff + gUnk_080CC020[unk + 1]; + + if (sub_080257EC(this, sVar3, sVar4)) { + this->field_0x7c.HALF.LO = sVar3 + ctrl->roomOriginX; + this->field_0x7c.HALF.HI = sVar4 + ctrl->roomOriginY; + return TRUE; + } + + unk += 2; + if (0x2f < unk) { + unk = 0; + } + } + + this->field_0x7a.HALF.LO = unk; + this->field_0x7a.HALF.HI++; + return FALSE; +} + +bool32 sub_080257EC(Entity* this, u32 x, u32 y) { + u16 tmp; + + tmp = sub_080002A8(x - 0x00, y - 0x00, this->collisionLayer); + if (tmp != 0x312 && gUnk_080B37A0[tmp] != 0x16 && gUnk_080B3E80[tmp] == 0) { + return TRUE; + } + + tmp = sub_080002A8(x - 0x10, y - 0x00, this->collisionLayer); + if (tmp != 0x312 && gUnk_080B37A0[tmp] != 0x16 && gUnk_080B3E80[tmp] == 0) { + return TRUE; + } + + tmp = sub_080002A8(x - 0x00, y - 0x10, this->collisionLayer); + if (tmp != 0x312 && gUnk_080B37A0[tmp] != 0x16 && gUnk_080B3E80[tmp] == 0) { + return TRUE; + } + + tmp = sub_080002A8(x - 0x10, y - 0x10, this->collisionLayer); + if (tmp != 0x312 && gUnk_080B37A0[tmp] != 0x16 && gUnk_080B3E80[tmp] == 0) { + return TRUE; + } + + return FALSE; +} + +#if NON_MATCHING +bool32 sub_080258C4(Entity* this) { + Entity* ent = sub_08049DF4(1); + if (ent == NULL) { + return FALSE; + } else { + s32 iVar4 = (ent->x.HALF.HI - this->x.HALF.HI) * (ent->x.HALF.HI - this->x.HALF.HI); + s32 iVar1 = (ent->y.HALF.HI - this->y.HALF.HI) * (ent->y.HALF.HI - this->y.HALF.HI); + iVar4 = iVar4 + iVar1; + if (this->cutsceneBeh.HWORD == 0 && this->field_0x80.HALF.HI == 0 && 0x400 >= iVar4) { + this->action = 9; + this->actionDelay = 0; + return TRUE; + } else if (0x900 >= iVar4) { + this->action = 11; + this->actionDelay = 1; + this->field_0x78.HWORD = gUnk_080CC050[Random() & 0xf]; + return TRUE; + } else { + return FALSE; + } + } +} +#else +NAKED +bool32 sub_080258C4(Entity* this) { + asm(".include \"asm/non_matching/puffstool/sub_080258C4.inc\""); +} +#endif + +#if NON_MATCHING +bool32 sub_0802594C(Entity* this, u32 param_2) { + const s8* unk = gUnk_080CC090[param_2]; + u32 uVar1 = this->collisionLayer; + RoomControls* ctrl = &gRoomControls; + u16 xDiff = (this->x.HALF.HI - ctrl->roomOriginX + 8) & -0x10; + u16 yDiff = (this->y.HALF.HI - ctrl->roomOriginY + 8) & -0x10; + do { + u16 iVar9 = xDiff + unk[0]; + u16 iVar11 = yDiff + unk[1]; + u32 bVar4 = sub_080002D4(iVar9 - 0x00, iVar11 - 0x00, uVar1); + u32 bVar5 = sub_080002D4(iVar9 - 0x10, iVar11 - 0x00, uVar1); + u32 bVar6 = sub_080002D4(iVar9 - 0x00, iVar11 - 0x10, uVar1); + u32 bVar7 = sub_080002D4(iVar9 - 0x10, iVar11 - 0x10, uVar1); + if ((bVar6 | bVar4 | bVar5 | bVar7) == 0) { + this->field_0x7c.HALF.LO = ctrl->roomOriginX + iVar9; + this->field_0x7c.HALF.HI = ctrl->roomOriginY + iVar11; + return TRUE; + } + unk += 2; + } while (unk[0] != 0x7f); + + return 0; +} +#else +NAKED +bool32 sub_0802594C(Entity* this, u32 param_2) { + asm(".include \"asm/non_matching/puffstool/sub_0802594C.inc\""); +} +#endif + +void sub_08025A54(Entity* this) { + u32 layer = this->collisionLayer; + s16 x = this->x.HALF.HI - gRoomControls.roomOriginX; + s16 y = this->y.HALF.HI - gRoomControls.roomOriginY; + + const s8* offset = gUnk_080CC0A0; + u32 i = 0; + + for (; i < 4; i++, offset += 2) { + sub_08025AB8((((x + offset[0]) >> 4) & 0x3fU) | ((((y + offset[1]) >> 4) & 0x3fU) << 6), layer); + } +} + +bool32 sub_08025AB8(u32 tile, u32 layer) { + if (sub_080002E0(tile, layer)) + return FALSE; + + if (sub_080002C8(tile, layer) == 10) { + sub_0807B7D8(0x61, tile, layer); + return TRUE; + } + + return FALSE; +} + +void sub_08025AE8(Entity* this) { + Entity* ent; + + ent = CreateFx(this, 0x22, 0); + if (ent) { + ent->y.WORD--; + } + + ent = CreateFx(this, 0x23, 0); + if (ent) { + ent->y.WORD++; + } +} + +void sub_08025B18(Entity* this) { + Entity* ent; + + s32 x = this->x.HALF.HI - gRoomControls.roomOriginX; + s32 y = this->y.HALF.HI - gRoomControls.roomOriginY; + u32 layer = this->collisionLayer; + + const s8* offset = gUnk_080CC0A8; + u32 i = 0; + + for (; i < 9; i++, offset += 2) { + sub_08025AB8((((x + offset[0]) >> 4) & 0x3fU) | ((((y + offset[1]) >> 4) & 0x3fU) << 6), layer); + + ent = CreateObject(0x21, 2, 0); + if (ent) { + PositionRelative(this, ent, offset[0] * 0x10000, offset[1] * 0x10000); + ent->x.HALF.HI &= -0x10; + ent->x.HALF.HI += 8; + ent->y.HALF.HI &= -0x10; + ent->y.HALF.HI += 8; + ent->height.HALF.HI = -1; + } + } +} + +void sub_08025BD4(Entity* this) { + if (this->field_0x82.HALF.LO && (this->frames.all & 1) == 0) { + Entity* ent = CreateObject(0x21, 0, 0); + if (ent) { + PositionRelative(this, ent, gUnk_080CC0BA[this->animationState * 2 + 0] * 0x10000, + gUnk_080CC0BA[this->animationState * 2 + 1] * 0x10000); + ent->height.HALF.HI = -10; + } + } +} + +void sub_08025C2C(Entity* this) { + this->action = 8; + this->field_0x80.HALF.LO = 0; + InitializeAnimation(this, 8); +} + +bool32 sub_08025C44(Entity* this) { + if ((this->frames.all & 1) == 0) { + return ProcessMovement(this); + } else { + return FALSE; + } +} + +u32 sub_08025C60(Entity* this) { + if (!sub_08049FA0(this) && (Random() & 1)) { + return sub_08049EE4(this); + } + + return (gUnk_080CC0C2[Random() & 7] + this->direction) & 0x1f; +} + +// clang-format off +void (*const gUnk_080CBF9C[])(Entity*) = { + sub_08025008, + sub_08025020, + sub_08001324, + sub_0802511C, + sub_08001242, + sub_0802514C, +}; + +void (*const gUnk_080CBFB4[])(Entity*) = { + sub_080251FC, + sub_08025230, + sub_080252E0, + sub_0802538C, + sub_080253D4, + sub_0802541C, + sub_0802544C, + sub_0802547C, + sub_080254B4, + sub_08025514, + sub_08025554, + sub_080255AC, + sub_0802563C, +}; + +const u8 gUnk_080CBFE8[] = { + 40, 120, 240, 0x0 +}; + +void (*const gUnk_080CBFEC[])(Entity*) = { + sub_08025180, + sub_080251AC, + sub_080251AC, +}; + +const u8 gUnk_080CBFF8[] = { + 1, 1, 1, 3, 3, 3, 7, 7, +}; + +const u16 gUnk_080CC000[] = { + 30, 30, 90, 90, + 180, 180, 180, 180, + 180, 240, 240, 240, + 240, 240, 300, 300, +}; + +const s8 gUnk_080CC020[] = { + -0x20, -0x20, -0x20, -0x10, + -0x20, 0x00, -0x20, 0x10, + -0x20, 0x20, -0x10, -0x20, + -0x10, -0x10, -0x10, 0x00, + -0x10, 0x10, -0x10, 0x20, + 0x00, -0x20, 0x00, -0x10, + 0x00, 0x10, 0x00, 0x20, + 0x10, -0x20, 0x10, -0x10, + 0x10, 0x00, 0x10, 0x10, + 0x10, 0x20, 0x20, -0x20, + 0x20, -0x10, 0x20, 0x00, + 0x20, 0x10, 0x20, 0x20, +}; + +const u8 gUnk_080CC050[] = { + 90, 120, 120, 90, + 180, 180, 180, 180, +}; + +const s8 gUnk_080CC058[] = { + 0x00, 0x00, 0x00, 0xF0, + 0xF0, 0x00, 0x10, 0x00, + 0x00, 0x10, 0x7F, +}; + +const s8 gUnk_080CC063[] = { + 0x00, 0x20, 0x10, 0x10, + 0x20, 0x00, 0x10, 0xF0, + 0x00, 0xE0, 0xF0, 0xF0, + 0xE0, 0x00, 0xF0, 0x10, + 0x7F, +}; + +const s8 gUnk_080CC074[] = { + 0xE0, 0xF0, 0xF0, 0xE0, + 0x10, 0xE0, 0x20, 0xF0, + 0x20, 0x10, 0x10, 0x20, + 0xF0, 0x20, 0xE0, 0x10, + 0x7F, +}; + +const s8 gUnk_080CC085[] = { + 0x20, 0x20, 0x20, 0xE0, + 0xE0, 0xFE, 0xE0, 0x20, + 0x7F, +}; + +const s8 *const gUnk_080CC090[] = { + gUnk_080CC058, + gUnk_080CC063, + gUnk_080CC074, + gUnk_080CC085, +}; + +const s8 gUnk_080CC0A0[] = { + -0x8, -0x8, -0x8, 0x8, + 0x8, -0x8, 0x8, 0x8, +}; + +const s8 gUnk_080CC0A8[] = { + 0xF0, 0xF0, 0x00, 0xF0, + 0x10, 0xF0, 0xF0, 0x00, + 0x00, 0x00, 0x10, 0x00, + 0xF0, 0x10, 0x00, 0x10, + 0x10, 0x10, +}; + +const s8 gUnk_080CC0BA[] = { + 0x00, 0xF0, 0x13, 0x00, + 0x00, 0x14, 0xED, 0x00, +}; + +const s8 gUnk_080CC0C2[] = { + 0xFF, 0x01, 0xFE, 0x02, 0xFD, 0x03, 0xFC, 0x04, +}; +// clang-format on From 553e6d0b104074cc412a14a962b628d4ec98833d Mon Sep 17 00:00:00 2001 From: Behemoth Date: Sun, 6 Sep 2020 03:36:33 +0200 Subject: [PATCH 12/14] rename rodata file --- data/{data_080CBF9C.s => data_080CC19C.s} | 0 linker.ld | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename data/{data_080CBF9C.s => data_080CC19C.s} (100%) diff --git a/data/data_080CBF9C.s b/data/data_080CC19C.s similarity index 100% rename from data/data_080CBF9C.s rename to data/data_080CC19C.s diff --git a/linker.ld b/linker.ld index 9bf5dc10..cf7d6d35 100644 --- a/linker.ld +++ b/linker.ld @@ -940,7 +940,7 @@ SECTIONS { data/animations/pesto.o(.rodata); src/enemy/puffstool.o(.rodata); data/animations/puffstool.o(.rodata); - data/data_080CBF9C.o(.rodata); + data/data_080CC19C.o(.rodata); src/enemy.o(.rodata); data/data_080D3D94.o(.rodata); data/areaPropertyLists.o(.rodata); From 0674660b0d3f55cfeb78aaf15759720ca6e1fc8f Mon Sep 17 00:00:00 2001 From: Behemoth Date: Sun, 6 Sep 2020 03:45:46 +0200 Subject: [PATCH 13/14] format position offsets --- src/enemy/puffstool.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/enemy/puffstool.c b/src/enemy/puffstool.c index 0c1d563a..00808757 100644 --- a/src/enemy/puffstool.c +++ b/src/enemy/puffstool.c @@ -701,24 +701,35 @@ const s8 *const gUnk_080CC090[] = { }; const s8 gUnk_080CC0A0[] = { - -0x8, -0x8, -0x8, 0x8, - 0x8, -0x8, 0x8, 0x8, + -0x8, -0x8, + -0x8, 0x8, + 0x8, -0x8, + 0x8, 0x8, }; const s8 gUnk_080CC0A8[] = { - 0xF0, 0xF0, 0x00, 0xF0, - 0x10, 0xF0, 0xF0, 0x00, - 0x00, 0x00, 0x10, 0x00, - 0xF0, 0x10, 0x00, 0x10, - 0x10, 0x10, + -0x10, -0x10, + 0x00, -0x10, + 0x10, -0x10, + -0x10, 0x00, + 0x00, 0x00, + 0x10, 0x00, + -0x10, 0x10, + 0x00, 0x10, + 0x10, 0x10, }; const s8 gUnk_080CC0BA[] = { - 0x00, 0xF0, 0x13, 0x00, - 0x00, 0x14, 0xED, 0x00, + 0x00, -0x10, + 0x13, 0x00, + 0x00, 0x14, + -0x13, 0x00, }; const s8 gUnk_080CC0C2[] = { - 0xFF, 0x01, 0xFE, 0x02, 0xFD, 0x03, 0xFC, 0x04, + -1, 1, + -2, 2, + -3, 3, + -4, 4, }; // clang-format on From 2bfb0f27afabdc2f0be6c84cb8765046bff87e1b Mon Sep 17 00:00:00 2001 From: Behemoth Date: Fri, 11 Sep 2020 01:41:56 +0200 Subject: [PATCH 14/14] match sub_080258C4 (thanks to Ibot02) --- src/enemy/puffstool.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/enemy/puffstool.c b/src/enemy/puffstool.c index 00808757..2a87dc68 100644 --- a/src/enemy/puffstool.c +++ b/src/enemy/puffstool.c @@ -440,14 +440,17 @@ bool32 sub_080257EC(Entity* this, u32 x, u32 y) { return FALSE; } -#if NON_MATCHING bool32 sub_080258C4(Entity* this) { Entity* ent = sub_08049DF4(1); if (ent == NULL) { return FALSE; } else { - s32 iVar4 = (ent->x.HALF.HI - this->x.HALF.HI) * (ent->x.HALF.HI - this->x.HALF.HI); - s32 iVar1 = (ent->y.HALF.HI - this->y.HALF.HI) * (ent->y.HALF.HI - this->y.HALF.HI); + s32 iVar4; + s32 iVar1; + iVar4 = ent->x.HALF.HI - this->x.HALF.HI; + iVar4 = iVar4 * iVar4; + iVar1 = ent->y.HALF.HI - this->y.HALF.HI; + iVar1 = iVar1 * iVar1; iVar4 = iVar4 + iVar1; if (this->cutsceneBeh.HWORD == 0 && this->field_0x80.HALF.HI == 0 && 0x400 >= iVar4) { this->action = 9; @@ -463,12 +466,6 @@ bool32 sub_080258C4(Entity* this) { } } } -#else -NAKED -bool32 sub_080258C4(Entity* this) { - asm(".include \"asm/non_matching/puffstool/sub_080258C4.inc\""); -} -#endif #if NON_MATCHING bool32 sub_0802594C(Entity* this, u32 param_2) {