From 74fc26d12ce4dd6ff70b110969e0b26b3ec076be Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Tue, 6 Sep 2022 21:42:28 +0300 Subject: [PATCH] Match sub_0801AC98 --- .../beanstalkSubtask/sub_0801AC98.inc | 111 ------------------ src/beanstalkSubtask.c | 24 ++-- 2 files changed, 11 insertions(+), 124 deletions(-) delete mode 100644 asm/non_matching/beanstalkSubtask/sub_0801AC98.inc diff --git a/asm/non_matching/beanstalkSubtask/sub_0801AC98.inc b/asm/non_matching/beanstalkSubtask/sub_0801AC98.inc deleted file mode 100644 index a41ce6cd..00000000 --- a/asm/non_matching/beanstalkSubtask/sub_0801AC98.inc +++ /dev/null @@ -1,111 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - ldr r0, _0801ACD0 @ =gRoomControls - ldrh r1, [r0, #0x1e] - lsrs r1, r1, #4 - mov r8, r1 - ldrh r0, [r0, #0x20] - lsrs r0, r0, #4 - str r0, [sp] - movs r6, #0 - movs r1, #0 - cmp r1, r0 - bhs _0801AD5C -_0801ACBA: - movs r0, #0 - adds r1, #1 - str r1, [sp, #4] - cmp r0, r8 - bhs _0801AD4C -_0801ACC4: - ldr r5, _0801ACD4 @ =gUnk_080B44C0 - adds r0, #1 - mov sl, r0 - adds r0, r6, #1 - mov sb, r0 - b _0801ACDA - .align 2, 0 -_0801ACD0: .4byte gRoomControls -_0801ACD4: .4byte gUnk_080B44C0 -_0801ACD8: - adds r5, #0xc -_0801ACDA: - ldrh r0, [r5] - ldr r1, _0801AD0C @ =0x0000FFFF - cmp r0, r1 - beq _0801AD06 - adds r4, r0, #0 - adds r0, r6, #0 - movs r1, #1 - bl GetTileType - cmp r4, r0 - bne _0801ACD8 - ldrh r0, [r5, #0xa] - lsls r0, r0, #2 - ldr r1, _0801AD10 @ =gUnk_080B44B8 - adds r0, r0, r1 - ldr r0, [r0] - cmp r0, #0 - beq _0801ACD8 - adds r0, r5, #0 - adds r1, r6, #0 - bl sub_0801AD6C -_0801AD06: - ldr r5, _0801AD14 @ =gUnk_080B44C2 - ldr r7, _0801AD0C @ =0x0000FFFF - b _0801AD1A - .align 2, 0 -_0801AD0C: .4byte 0x0000FFFF -_0801AD10: .4byte gUnk_080B44B8 -_0801AD14: .4byte gUnk_080B44C2 -_0801AD18: - adds r5, #0xc -_0801AD1A: - ldrh r0, [r5] - cmp r0, r7 - beq _0801AD44 - adds r4, r0, #0 - adds r0, r6, #0 - movs r1, #2 - bl GetTileType - cmp r4, r0 - bne _0801AD18 - ldrh r0, [r5, #0xa] - lsls r0, r0, #2 - ldr r1, _0801AD68 @ =gUnk_080B44B8 - adds r0, r0, r1 - ldr r0, [r0] - cmp r0, #0 - beq _0801AD18 - adds r0, r5, #0 - adds r1, r6, #0 - bl sub_0801AD6C -_0801AD44: - mov r0, sl - mov r6, sb - cmp r0, r8 - blo _0801ACC4 -_0801AD4C: - adds r0, r6, #0 - adds r0, #0x40 - mov r1, r8 - subs r6, r0, r1 - ldr r1, [sp, #4] - ldr r0, [sp] - cmp r1, r0 - blo _0801ACBA -_0801AD5C: - 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 -_0801AD68: .4byte gUnk_080B44B8 - .syntax divided diff --git a/src/beanstalkSubtask.c b/src/beanstalkSubtask.c index 13a556ce..19f530be 100644 --- a/src/beanstalkSubtask.c +++ b/src/beanstalkSubtask.c @@ -487,14 +487,13 @@ extern const Data gUnk_080B44C0[]; extern const Data gUnk_080B44C2[]; extern const u32 gUnk_080B44B8[]; -NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801AC98.inc", void sub_0801AC98()) { +void sub_0801AC98(void) { + u32 position; u32 width; u32 height; u32 indexX; u32 indexY; - const Data* ptr1; - const Data* ptr2; - u32 position; + const Data* ptr; width = gRoomControls.width >> 4; height = gRoomControls.height >> 4; @@ -502,19 +501,19 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801AC98.inc", void sub_0801AC98 for (indexY = 0; indexY < height; indexY++) { for (indexX = 0; indexX < width; indexX++, position++) { - for (ptr1 = gUnk_080B44C0; ptr1->tileType != 0xffff; ptr1++) { - if (ptr1->tileType == GetTileType(position, 1)) { - if (gUnk_080B44B8[ptr1->unk_a] != 0) { - sub_0801AD6C(ptr1, position); + for (ptr = gUnk_080B44C0; ptr->tileType != 0xffff; ptr++) { + if (ptr->tileType == GetTileType(position, 1)) { + if (gUnk_080B44B8[ptr->unk_a] != 0) { + sub_0801AD6C(ptr, position); break; } } } - for (ptr2 = gUnk_080B44C2; ptr2->tileType != 0xffff; ptr2++) { - if (ptr2->tileType == GetTileType(position, 2)) { - if (gUnk_080B44B8[ptr2->unk_a] != 0) { - sub_0801AD6C(ptr2, position); + for (ptr = gUnk_080B44C2; ptr->tileType != 0xffff; ptr++) { + if (ptr->tileType == GetTileType(position, 2)) { + if (gUnk_080B44B8[ptr->unk_a] != 0) { + sub_0801AD6C(ptr, position); break; } } @@ -523,7 +522,6 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801AC98.inc", void sub_0801AC98 position = position + (0x40 - width); } } -END_NONMATCH void sub_0801AD6C(const Data* param_1, u32 tilePosition) { Entity* entity;