From d421e24de366245815d3250bf45ecd6400d36004 Mon Sep 17 00:00:00 2001 From: hatal175 Date: Sun, 9 Jan 2022 15:37:23 +0100 Subject: [PATCH] Match sub_080611D4 --- asm/non_matching/npc5/sub_080611D4.inc | 53 -------------------------- src/npc/npc5.c | 41 +++++++++++--------- 2 files changed, 23 insertions(+), 71 deletions(-) delete mode 100644 asm/non_matching/npc5/sub_080611D4.inc diff --git a/asm/non_matching/npc5/sub_080611D4.inc b/asm/non_matching/npc5/sub_080611D4.inc deleted file mode 100644 index c30d3dda..00000000 --- a/asm/non_matching/npc5/sub_080611D4.inc +++ /dev/null @@ -1,53 +0,0 @@ - .syntax unified - .text - - push {r4, lr} - adds r4, r0, #0 - ldrb r1, [r4, #0x14] - movs r0, #6 - ands r0, r1 - ldr r1, _08061218 @ =gUnk_0810AC4C - adds r0, r0, r1 - movs r1, #0 - ldrsb r1, [r0, r1] - movs r2, #1 - ldrsb r2, [r0, r2] - adds r0, r4, #0 - bl sub_080002B4 - adds r3, r0, #0 - ldr r2, _0806121C @ =gUnk_0810AC54 -_080611F4: - ldrb r0, [r2] - cmp r0, r3 - bne _08061220 - ldrb r0, [r2, #1] - ldrb r1, [r4, #0x14] - lsrs r0, r0, #2 - cmp r1, r0 - bne _08061220 - ldrb r0, [r4, #0xf] - adds r0, #1 - strb r0, [r4, #0xf] - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - cmp r0, #7 - bls _0806122A - ldrb r0, [r2, #1] - b _0806122C - .align 2, 0 -_08061218: .4byte gUnk_0810AC4C -_0806121C: .4byte gUnk_0810AC54 -_08061220: - adds r2, #2 - ldrb r0, [r2] - cmp r0, #0 - bne _080611F4 - strb r0, [r4, #0xf] -_0806122A: - movs r0, #0xff -_0806122C: - pop {r4, pc} - .align 2, 0 - - - .syntax divided diff --git a/src/npc/npc5.c b/src/npc/npc5.c index 6ad456bb..9fee31ab 100644 --- a/src/npc/npc5.c +++ b/src/npc/npc5.c @@ -418,34 +418,39 @@ NONMATCH("asm/non_matching/npc5/sub_08061170.inc", bool32 sub_08061170(Entity* t } END_NONMATCH -NONMATCH("asm/non_matching/npc5/sub_080611D4.inc", u32 sub_080611D4(Entity* this)) { +u32 sub_080611D4(Entity* this) { u32 uVar2; u32 x; s32 a; s32 b; + s8* ptr; + u8* ptr2; x = this->animationState & 6; - // asm("a"); - a = gUnk_0810AC4C[x].unk_0; - // asm("c"); - b = gUnk_0810AC4C[x].unk_1; - // asm("d"); + ptr = (s8*)gUnk_0810AC4C; + a = ptr[x]; + b = ptr[x + 1]; uVar2 = sub_080002B4(this, a, b); - // asm("b"); - if ((gUnk_0810AC54[0] != uVar2 || (this->animationState != gUnk_0810AC54[1] >> 2))) { - // asm ("e"); - if (gUnk_0810AC54[2] == 0) { - this->field_0xf = 0; + ptr2 = gUnk_0810AC54; + + do { + if (*ptr2 != uVar2 || this->animationState != (ptr2[1] >> 2)) { + continue; + } + + ++this->field_0xf; + + if (this->field_0xf < 8) { return 0xff; } - } - this->field_0xf += 1; - if (this->field_0xf < 8) { - return 0xff; - } - return gUnk_0810AC54[3]; + + return ptr2[1]; + } while (ptr2 += 2, *ptr2 != 0); + + this->field_0xf = 0; + + return 0xff; } -END_NONMATCH u32 sub_08061230(Entity* this) { if ((((UnkHeap*)this->myHeap)->unk_0 & 1) == 0) {