Match sub_0801E24C

This commit is contained in:
Tal Hayon 2022-08-02 14:55:25 +03:00
parent 76634df376
commit 0e1bfbf44e
2 changed files with 20 additions and 42 deletions

View File

@ -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

View File

@ -24,6 +24,7 @@ extern u8 gUnk_03003DE0;
extern u8 gzHeap[0x1000]; extern u8 gzHeap[0x1000];
extern u32 gUnk_0201AEE0[0x800]; extern u32 gUnk_0201AEE0[0x800];
extern u8 gUnk_080CA11C[]; extern u8 gUnk_080CA11C[];
extern s16 gUnk_02018EE0[];
extern void (*gUnk_080C9CAC[])(void); extern void (*gUnk_080C9CAC[])(void);
@ -31,7 +32,7 @@ static void StoreKeyInput(Input* input, u32 keyInput);
void ClearOAM(void); void ClearOAM(void);
void ResetScreenRegs(void); void ResetScreenRegs(void);
void sub_0801E0E0(u32); void sub_0801E0E0(u32);
void sub_0801E24C(u32, u32); void sub_0801E24C(s32, s32);
void sub_0801E290(u32, u32, u32); void sub_0801E290(u32, u32, u32);
s32 sub_0801E8B0(u32); s32 sub_0801E8B0(u32);
@ -556,7 +557,24 @@ void sub_0801E1EC(u32 a1, u32 a2, u32 a3) {
0x1); 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)); ASM_FUNC("asm/non_matching/common/sub_0801E290.inc", void sub_0801E290(u32 a1, u32 a2, u32 a3));