From 2fd31d25bc2abd3a9a98a40cf8d6a2f7dd15ff2a Mon Sep 17 00:00:00 2001 From: octorock <79596758+octorock@users.noreply.github.com> Date: Sun, 6 Nov 2022 10:19:43 +0000 Subject: [PATCH] Match sub_0803933C --- asm/non_matching/stalfos/sub_0803933C.inc | 111 ---------------------- src/enemy/stalfos.c | 23 +++-- 2 files changed, 14 insertions(+), 120 deletions(-) delete mode 100644 asm/non_matching/stalfos/sub_0803933C.inc diff --git a/asm/non_matching/stalfos/sub_0803933C.inc b/asm/non_matching/stalfos/sub_0803933C.inc deleted file mode 100644 index b92cc3bb..00000000 --- a/asm/non_matching/stalfos/sub_0803933C.inc +++ /dev/null @@ -1,111 +0,0 @@ - .syntax unified - push {r4, r5, lr} - adds r5, r0, #0 - adds r0, #0x3f - ldrb r0, [r0] - cmp r0, #0x44 - bne _08039390 - adds r0, r5, #0 - adds r0, #0x41 - ldrb r0, [r0] - movs r1, #0x7f - ands r1, r0 - cmp r1, #6 - bgt _08039390 - cmp r1, #4 - blt _08039390 - adds r0, r5, #0 - adds r0, #0x3d - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bgt _08039390 - movs r0, #4 - strb r0, [r5, #0xc] - adds r0, r5, #0 - adds r0, #0x3e - ldrb r0, [r0] - strb r0, [r5, #0x15] - ldrb r0, [r5, #0x15] - adds r0, #4 - movs r1, #0x18 - ands r0, r1 - movs r1, #0x10 - eors r0, r1 - asrs r0, r0, #3 - strb r0, [r5, #0x14] - movs r0, #0x90 - lsls r0, r0, #1 - strh r0, [r5, #0x24] - adds r0, r5, #0 - bl sub_0803981C -_08039390: - adds r0, r5, #0 - adds r0, #0x41 - ldrb r2, [r0] - cmp r2, #0x9d - bne _080393F8 - ldr r1, [r5, #0x54] - cmp r1, #0 - bne _080393CA - ldrb r0, [r5, #0xc] - cmp r0, #8 - bhi _080393EC - adds r0, r5, #0 - movs r1, #0x10 - movs r2, #1 - bl CreateProjectileWithParent - adds r1, r0, #0 - cmp r1, #0 - beq _080393DC - ldrb r0, [r5, #0x14] - lsls r0, r0, #1 - strb r0, [r1, #0x1e] - movs r0, #2 - strb r0, [r1, #0xb] - movs r0, #0xc3 - lsls r0, r0, #1 - bl EnqueueSFX - b _080393DC -_080393CA: - adds r0, r1, #0 - adds r0, #0x41 - movs r4, #0 - strb r2, [r0] - movs r0, #0xc3 - lsls r0, r0, #1 - bl EnqueueSFX - str r4, [r5, #0x54] -_080393DC: - adds r0, r5, #0 - bl sub_08039A48 - adds r1, r5, #0 - adds r1, #0x78 - ldrh r0, [r1] - adds r0, #0x5a - strh r0, [r1] -_080393EC: - adds r2, r5, #0 - adds r2, #0x3b - ldrb r1, [r2] - movs r0, #0xfb - ands r0, r1 - strb r0, [r2] -_080393F8: - adds r0, r5, #0 - adds r0, #0x43 - ldrb r0, [r0] - cmp r0, #0 - beq _0803940A - adds r0, r5, #0 - movs r1, #0x1c - bl Create0x68FX -_0803940A: - ldr r1, _08039414 @ =Stalfos_Functions - adds r0, r5, #0 - bl EnemyFunctionHandlerAfterCollision - pop {r4, r5, pc} - .align 2, 0 -_08039414: .4byte Stalfos_Functions - .syntax divided diff --git a/src/enemy/stalfos.c b/src/enemy/stalfos.c index c966d468..91ca9530 100644 --- a/src/enemy/stalfos.c +++ b/src/enemy/stalfos.c @@ -73,7 +73,10 @@ void Stalfos_OnTick(StalfosEntity* this) { } } -NONMATCH("asm/non_matching/stalfos/sub_0803933C.inc", void sub_0803933C(StalfosEntity* this)) { +void sub_0803933C(StalfosEntity* this) { + Entity* r0; + Entity* r1; + u32 r2; if (super->hitType == 0x44) { switch (super->contactFlags & 0x7f) { case 4 ... 6: @@ -87,20 +90,23 @@ NONMATCH("asm/non_matching/stalfos/sub_0803933C.inc", void sub_0803933C(StalfosE break; } } - if (super->contactFlags == 0x9d) { - if (super->child == NULL) { + r2 = super->contactFlags; + if (r2 == 0x9d) { + r1 = super->child; + if (r1 == NULL) { if (super->action < 9) { - Entity* projectile = CreateProjectileWithParent(super, STALFOS_PROJECTILE, 1); - if (projectile != NULL) { - projectile->frameIndex = super->animationState << 1; - projectile->type2 = 2; + r1 = CreateProjectileWithParent(super, STALFOS_PROJECTILE, 1); + if (r1 != NULL) { + r1->frameIndex = super->animationState << 1; + r1->type2 = 2; EnqueueSFX(SFX_186); } sub_08039A48(this); this->unk_78 += 0x5a; } } else { - super->child->contactFlags = 0x9d; + r0 = r1; + r0->contactFlags = r2; EnqueueSFX(SFX_186); super->child = NULL; sub_08039A48(this); @@ -113,7 +119,6 @@ NONMATCH("asm/non_matching/stalfos/sub_0803933C.inc", void sub_0803933C(StalfosE } EnemyFunctionHandlerAfterCollision(super, Stalfos_Functions); } -END_NONMATCH void sub_08039418(StalfosEntity* this) { if (super->type == 0) {