From 595a1574d39a3ab8968aca48ca16754b7428f1ae Mon Sep 17 00:00:00 2001 From: Lauri Koskela Date: Thu, 18 Aug 2022 07:51:04 +0300 Subject: [PATCH] Match sub_0801E290 in common.c --- asm/non_matching/common/sub_0801E290.inc | 75 ------------------------ src/common.c | 42 ++++++++++++- 2 files changed, 41 insertions(+), 76 deletions(-) delete mode 100644 asm/non_matching/common/sub_0801E290.inc diff --git a/asm/non_matching/common/sub_0801E290.inc b/asm/non_matching/common/sub_0801E290.inc deleted file mode 100644 index 29e1bcc4..00000000 --- a/asm/non_matching/common/sub_0801E290.inc +++ /dev/null @@ -1,75 +0,0 @@ - .syntax unified - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - mov ip, r0 - adds r6, r2, #0 - ldr r0, _0801E2BC @ =gUnk_03003DE4 - ldrb r0, [r0] - lsls r2, r0, #2 - adds r2, r2, r0 - lsls r2, r2, #9 - lsls r0, r1, #1 - ldr r3, _0801E2C0 @ =gUnk_02017AA0 - adds r0, r0, r3 - adds r2, r2, r0 - adds r4, r2, #0 - adds r5, r1, #0 - mov sb, r5 - ldr r0, _0801E2C4 @ =gUnk_02018EE0 - mov r8, r0 - b _0801E30A - .align 2, 0 -_0801E2BC: .4byte gUnk_03003DE4 -_0801E2C0: .4byte gUnk_02017AA0 -_0801E2C4: .4byte gUnk_02018EE0 -_0801E2C8: - mov r1, r8 - movs r3, #0 - ldrsh r0, [r1, r3] - movs r7, #2 - add r8, r7 - mov r3, ip - subs r1, r3, r0 - adds r3, r3, r0 - cmp r1, #0 - bge _0801E2DE - movs r1, #0 -_0801E2DE: - cmp r3, #0xef - ble _0801E2E4 - movs r3, #0xf0 -_0801E2E4: - mov r7, sb - lsls r0, r7, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x9f - bhi _0801E2F2 - strb r3, [r4] - strb r1, [r4, #1] -_0801E2F2: - lsls r0, r5, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #0x9f - bhi _0801E2FE - strb r3, [r2] - strb r1, [r2, #1] -_0801E2FE: - subs r4, #2 - adds r2, #2 - movs r0, #1 - rsbs r0, r0, #0 - add sb, r0 - adds r5, #1 -_0801E30A: - adds r0, r6, #0 - subs r6, #1 - cmp r0, #0 - bne _0801E2C8 - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7, pc} - .align 2, 0 - .syntax divided diff --git a/src/common.c b/src/common.c index d4349a6a..5d00fdc7 100644 --- a/src/common.c +++ b/src/common.c @@ -656,7 +656,47 @@ void sub_0801E24C(s32 param_1, s32 param_2) { } } -ASM_FUNC("asm/non_matching/common/sub_0801E290.inc", void sub_0801E290(u32 a1, u32 a2, u32 a3)); + +void sub_0801E290(u32 param_1, u32 param_2, u32 count) { + s32 uVar1; + s32 iVar2; + s32 iVar4; + u8* forwardAccess; + u8* backwardAccess; + s16* puVar6; + u32 uVar5; + u32 uVar7; + u32 index; + u32 x; + forwardAccess = &gUnk_02017AA0[gUnk_03003DE4[0]].filler[param_2 * 2]; + backwardAccess = forwardAccess; + uVar5 = uVar7 = param_2; + puVar6 = gUnk_02018EE0; + + while (count-- > 0) { + uVar1 = *puVar6++; + iVar2 = param_1 - uVar1; + iVar4 = param_1 + uVar1; + if (iVar2 < 0) { + iVar2 = 0; + } + if (iVar4 > 0xef) { + iVar4 = 0xf0; + } + if (((u16)uVar5 & 0xffff) < 0xa0) { + backwardAccess[0] = iVar4; + backwardAccess[1] = iVar2; + } + if (((u16)uVar7 & 0xffff) < 0xa0) { + forwardAccess[0] = iVar4; + forwardAccess[1] = iVar2; + } + backwardAccess -= 2; + forwardAccess += 2; + uVar5--; + uVar7++; + } +} ASM_FUNC("asm/non_matching/common/sub_0801E31C.inc", void sub_0801E31C(u32 a1, u32 a2, u32 a3, u32 a4));