diff --git a/asm/non_matching/common/sub_0801E24C.inc b/asm/non_matching/common/sub_0801E24C.inc deleted file mode 100644 index c82cd2ad..00000000 --- a/asm/non_matching/common/sub_0801E24C.inc +++ /dev/null @@ -1,40 +0,0 @@ - .syntax unified - push {r4, r5, lr} - lsls r1, r1, #1 - ldr r2, _0801E278 @ =gUnk_02018EE0 - adds r5, r1, r2 - movs r3, #0 - adds r2, r0, #0 - lsls r4, r2, #1 - movs r0, #3 - subs r1, r0, r4 - cmp r3, r2 - bgt _0801E28E - adds r4, r4, r5 -_0801E264: - lsls r0, r3, #1 - adds r0, r0, r5 - strh r2, [r0] - strh r3, [r4] - cmp r1, #0 - bge _0801E27C - adds r1, #6 - lsls r0, r3, #2 - adds r1, r1, r0 - b _0801E288 - .align 2, 0 -_0801E278: .4byte gUnk_02018EE0 -_0801E27C: - adds r1, #0xa - subs r0, r3, r2 - lsls r0, r0, #2 - adds r1, r1, r0 - subs r4, #2 - subs r2, #1 -_0801E288: - adds r3, #1 - cmp r3, r2 - ble _0801E264 -_0801E28E: - pop {r4, r5, pc} - .syntax divided diff --git a/src/common.c b/src/common.c index 3568b425..2c4bdc1a 100644 --- a/src/common.c +++ b/src/common.c @@ -24,6 +24,7 @@ extern u8 gUnk_03003DE0; extern u8 gzHeap[0x1000]; extern u32 gUnk_0201AEE0[0x800]; extern u8 gUnk_080CA11C[]; +extern s16 gUnk_02018EE0[]; extern void (*gUnk_080C9CAC[])(void); @@ -31,7 +32,7 @@ static void StoreKeyInput(Input* input, u32 keyInput); void ClearOAM(void); void ResetScreenRegs(void); void sub_0801E0E0(u32); -void sub_0801E24C(u32, u32); +void sub_0801E24C(s32, s32); void sub_0801E290(u32, u32, u32); s32 sub_0801E8B0(u32); @@ -556,7 +557,24 @@ void sub_0801E1EC(u32 a1, u32 a2, u32 a3) { 0x1); } -ASM_FUNC("asm/non_matching/common/sub_0801E24C.inc", void sub_0801E24C(u32 a1, u32 a2)); +void sub_0801E24C(s32 param_1, s32 param_2) { + s32 r1; + s32 r2, i; + u16* p5; + p5 = &gUnk_02018EE0[param_2]; + i = 0; + r2 = param_1; + r1 = 3 - (r2 * 2); + while (i <= r2) { + p5[i] = r2; + p5[r2] = i; + if (r1 < 0) { + r1 += 6 + i++ * 4; + } else { + r1 += 10 + (i++ - (r2--)) * 4; + } + } +} ASM_FUNC("asm/non_matching/common/sub_0801E290.inc", void sub_0801E290(u32 a1, u32 a2, u32 a3));