From 57198666432a4ab60588f7aed33cdd5f2b84ae93 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Fri, 7 Aug 2020 17:33:23 -0500 Subject: [PATCH] Match bigGoron/sub_0806CF30 --- asm/non_matching/bigGoron/sub_0806CF30.inc | 115 --------------------- src/npc/bigGoron.c | 54 ++++------ 2 files changed, 21 insertions(+), 148 deletions(-) delete mode 100644 asm/non_matching/bigGoron/sub_0806CF30.inc diff --git a/asm/non_matching/bigGoron/sub_0806CF30.inc b/asm/non_matching/bigGoron/sub_0806CF30.inc deleted file mode 100644 index 49f33c3c..00000000 --- a/asm/non_matching/bigGoron/sub_0806CF30.inc +++ /dev/null @@ -1,115 +0,0 @@ - .include "asm/macros.inc" - - .include "constants/constants.inc" - - .syntax unified - - .text - - push {r4, r5, lr} - adds r5, r0, #0 - ldrb r0, [r5, #0xc] - cmp r0, #0 - bne _0806CF5E - movs r0, #1 - strb r0, [r5, #0xc] - strb r0, [r5, #0xd] - ldrh r1, [r5, #0x2e] - adds r0, r5, #0 - adds r0, #0x68 - strh r1, [r0] - adds r0, r5, #0 - movs r1, #2 - bl sub_0805E3A0 - adds r0, r5, #0 - bl sub_0806D0B0 - adds r0, r5, #0 - bl sub_0807DD64 - b _0806CF6C -_0806CF5E: - adds r0, r5, #0 - movs r1, #0 - bl sub_0807DDAC - adds r0, r5, #0 - bl sub_0807DDE4 -_0806CF6C: - ldrb r0, [r5, #0xd] - cmp r0, #2 - beq _0806CFD4 - cmp r0, #2 - bgt _0806D000 - cmp r0, #0 - blt _0806D000 - ldr r0, _0806CFCC @ =gScreenTransition - ldr r0, [r0] - movs r1, #3 - ands r0, r1 - cmp r0, #0 - bne _0806D000 - ldr r0, _0806CFD0 @ =gLinkEntity - movs r1, #0x2e - ldrsh r2, [r0, r1] - ldrh r3, [r5, #0x2e] - movs r4, #0x2e - ldrsh r1, [r5, r4] - adds r4, r0, #0 - cmp r2, r1 - bge _0806CFA8 - adds r0, r5, #0 - adds r0, #0x68 - ldrh r0, [r0] - subs r0, #0x20 - cmp r0, r1 - bge _0806CFA8 - subs r0, r3, #1 - strh r0, [r5, #0x2e] -_0806CFA8: - movs r3, #0x2e - ldrsh r1, [r4, r3] - ldrh r2, [r5, #0x2e] - movs r4, #0x2e - ldrsh r0, [r5, r4] - cmp r1, r0 - ble _0806D000 - adds r0, r5, #0 - adds r0, #0x68 - ldrh r0, [r0] - adds r0, #0x20 - movs r3, #0x2e - ldrsh r1, [r5, r3] - cmp r0, r1 - ble _0806D000 - adds r0, r2, #1 - strh r0, [r5, #0x2e] - b _0806D000 - .align 2, 0 -_0806CFCC: .4byte gScreenTransition -_0806CFD0: .4byte gLinkEntity -_0806CFD4: - ldrb r0, [r5, #0xe] - subs r0, #1 - strb r0, [r5, #0xe] - lsls r0, r0, #0x18 - cmp r0, #0 - bne _0806D000 - bl Random - adds r4, r0, #0 - ldr r1, _0806D008 @ =gUnk_081140CC - movs r0, #3 - ands r0, r4 - lsls r0, r0, #1 - adds r0, r0, r1 - ldrh r0, [r0] - bl PlaySFX - movs r0, #7 - ands r4, r0 - lsls r4, r4, #4 - adds r4, #0x80 - strb r4, [r5, #0xe] -_0806D000: - adds r0, r5, #0 - bl sub_0806D02C - pop {r4, r5, pc} - .align 2, 0 -_0806D008: .4byte gUnk_081140CC - .syntax divided \ No newline at end of file diff --git a/src/npc/bigGoron.c b/src/npc/bigGoron.c index 5096dfa0..3b3a5101 100644 --- a/src/npc/bigGoron.c +++ b/src/npc/bigGoron.c @@ -1,11 +1,11 @@ #include "global.h" #include "entity.h" #include "link.h" +#include "structures.h" extern void (*gUnk_081140D4[])(Entity*); extern u16 gUnk_081140CC[]; -extern u32 gScreenTransition; extern void sub_0805E3A0(Entity*, u32); extern void sub_0806D0B0(Entity*); extern void sub_0807DD64(Entity*); @@ -20,16 +20,11 @@ void BigGoron(Entity* this) { gUnk_081140D4[this->entityType.form](this); } -#ifdef NON_MATCHING void sub_0806CF30(Entity* this) { - u8 bVar1; - u32 uVar2; - int iVar3; - if (this->action == 0) { this->action = 1; this->previousActionFlag = 1; - this->field_0x68 = (this->x).HALF.HI; + this->field_0x68.HWORD = this->x.HALF.HI; sub_0805E3A0(this, 2); sub_0806D0B0(this); sub_0807DD64(this); @@ -37,39 +32,32 @@ void sub_0806CF30(Entity* this) { sub_0807DDAC(this, 0); sub_0807DDE4(this); } - if (this->previousActionFlag != 2) { - if (this->previousActionFlag < 3) { - if ((gScreenTransition & 3) == 0) { - iVar3 = this->x.HALF.HI; - if (gLinkEntity.x.HALF.HI < iVar3) { - if ((this->field_0x68 - 32) < iVar3) { - this->x.HALF.HI = -1; - } + switch (this->previousActionFlag) { + case 0: + case 1: + if (gScreenTransition.frameCount % 4 == 0) { + if (gLinkEntity.x.HALF.HI < this->x.HALF.HI && this->field_0x68.HWORD - 32 < this->x.HALF.HI) { + this->x.HALF.HI--; } - if (this->x.HALF.HI > gLinkEntity.x.HALF.HI) { - if (this->x.HALF.HI < (this->field_0x68 + 32)) { - this->x.HALF.HI += 1; - } + if (gLinkEntity.x.HALF.HI > this->x.HALF.HI && this->field_0x68.HWORD + 32 > this->x.HALF.HI) { + this->x.HALF.HI++; } } - } - } else { - bVar1 = this->actionDelay -= 1; - if (bVar1 == 0) { - uVar2 = Random(); - PlaySFX(gUnk_081140CC[uVar2 & 3]); - this->actionDelay = ((u8)uVar2 & 7) * 10 + 128; - } + break; + case 2: + if (--this->actionDelay == 0) { + u32 uVar2 = Random(); + PlaySFX(gUnk_081140CC[uVar2 % 4]); + this->actionDelay = ((u8)uVar2 & 7) * 16; + this->actionDelay += 128; + } + break; + case 3: + break; } sub_0806D02C(this); } -#else -NAKED -void sub_0806CF30(Entity* this) { - asm(".include \"asm/non_matching/bigGoron/sub_0806CF30.inc\""); -} -#endif void sub_0806D00C(Entity* this) { Entity* pEVar1;