From 68fceeb3c430f648205d5ba221ae827af2a5383f Mon Sep 17 00:00:00 2001 From: hatal175 Date: Tue, 11 Jan 2022 17:06:08 +0100 Subject: [PATCH] Match sub_0802594C --- asm/non_matching/puffstool/sub_0802594C.inc | 136 -------------------- src/enemy/puffstool.c | 35 ++--- 2 files changed, 20 insertions(+), 151 deletions(-) delete mode 100644 asm/non_matching/puffstool/sub_0802594C.inc diff --git a/asm/non_matching/puffstool/sub_0802594C.inc b/asm/non_matching/puffstool/sub_0802594C.inc deleted file mode 100644 index 837bf19f..00000000 --- a/asm/non_matching/puffstool/sub_0802594C.inc +++ /dev/null @@ -1,136 +0,0 @@ - - .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/src/enemy/puffstool.c b/src/enemy/puffstool.c index 6c08d954..b42e5b2f 100644 --- a/src/enemy/puffstool.c +++ b/src/enemy/puffstool.c @@ -473,24 +473,30 @@ bool32 sub_080258C4(Entity* this) { } // regalloc -NONMATCH("asm/non_matching/puffstool/sub_0802594C.inc", bool32 sub_0802594C(Entity* this, u32 param_2)) { +bool32 sub_0802594C(Entity* this, u32 param_2) { s16 xDiff; s16 yDiff; + s16 iVar9; + u32 uVar1; const s8* unk = gUnk_080CC090[param_2]; - u32 uVar1 = this->collisionLayer; - RoomControls* ctrl = &gRoomControls; - xDiff = (this->x.HALF.HI - ctrl->origin_x + 8) & -0x10; - yDiff = (this->y.HALF.HI - ctrl->origin_y + 8) & -0x10; + uVar1 = this->collisionLayer; + xDiff = (this->x.HALF.HI - gRoomControls.origin_x + 8) & -0x10; + yDiff = (this->y.HALF.HI - gRoomControls.origin_y + 8) & -0x10; do { - s16 iVar9 = xDiff + unk[0]; - s16 iVar11 = yDiff + unk[1]; - u8 bVar4 = sub_080002D4(iVar9 - 0x00, iVar11 - 0x00, uVar1); - u8 bVar5 = sub_080002D4(iVar9 - 0x10, iVar11 - 0x00, uVar1); - u8 bVar6 = sub_080002D4(iVar9 - 0x00, iVar11 - 0x10, uVar1); - u8 bVar7 = sub_080002D4(iVar9 - 0x10, iVar11 - 0x10, uVar1); - if ((bVar6 | bVar4 | bVar5 | bVar7) == 0) { - this->field_0x7c.HALF.LO = ctrl->origin_x + iVar9; - this->field_0x7c.HALF.HI = ctrl->origin_y + iVar11; + u8 bVar7; + u8 bVar4; + s16 iVar11; + u8 bVar5; + u8 bVar6; + iVar9 = xDiff + unk[0]; + iVar11 = yDiff + unk[1]; + bVar4 = sub_080002D4(iVar9 - 0x00, iVar11 - 0x00, uVar1); + bVar5 = sub_080002D4(iVar9 - 0x10, iVar11 - 0x00, uVar1); + bVar6 = sub_080002D4(iVar9 - 0x00, iVar11 - 0x10, uVar1); + bVar7 = sub_080002D4(iVar9 - 0x10, iVar11 - 0x10, uVar1); + if ((bVar4 | bVar5 | bVar6 | bVar7) == 0) { + this->field_0x7c.HALF.LO = gRoomControls.origin_x + iVar9; + this->field_0x7c.HALF.HI = gRoomControls.origin_y + iVar11; return TRUE; } unk += 2; @@ -498,7 +504,6 @@ NONMATCH("asm/non_matching/puffstool/sub_0802594C.inc", bool32 sub_0802594C(Enti return 0; } -END_NONMATCH void sub_08025A54(Entity* this) { u32 layer = this->collisionLayer;