summaryrefslogtreecommitdiff
path: root/src/common.c
diff options
context:
space:
mode:
authorTal Hayon <talhayon1@gmail.com>2022-08-02 14:55:25 +0300
committerTal Hayon <talhayon1@gmail.com>2022-08-02 14:55:25 +0300
commit0e1bfbf44e29e899d29b1df96f1533b718610029 (patch)
tree942255f01a2a726a63ecca1ba37f449ef5174934 /src/common.c
parent76634df376948b03825fbdcf770ce8351dbe3bd0 (diff)
Match sub_0801E24C
Diffstat (limited to 'src/common.c')
-rw-r--r--src/common.c22
1 files changed, 20 insertions, 2 deletions
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));