diff --git a/asm/text.s b/asm/text.s index f7a105b12..b3368660d 100644 --- a/asm/text.s +++ b/asm/text.s @@ -5,134 +5,6 @@ .text - thumb_func_start sub_80069CC -sub_80069CC: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r3, 0 - ldr r3, [sp, 0x10] - cmp r2, 0x1C - bgt _08006ABA - cmp r2, 0 - blt _08006ABA - ldr r0, [r6, 0xC] - cmp r0, 0x7 - bhi _08006ABA - lsls r0, 2 - ldr r1, _080069F0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080069F0: .4byte _080069F4 - .align 2, 0 -_080069F4: - .4byte _08006A14 - .4byte _08006ABA - .4byte _08006ABA - .4byte _08006A60 - .4byte _08006A7C - .4byte _08006A9C - .4byte _08006A60 - .4byte _08006AAC -_08006A14: - cmp r5, 0 - bne _08006A34 - lsls r1, r4, 1 - lsls r0, r2, 6 - adds r0, r3 - adds r1, r0 - ldr r2, _08006A30 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0x80 - lsls r0, 4 - adds r1, r0 - adds r2, 0x44 - b _08006A92 - .align 2, 0 -_08006A30: .4byte 0x0000f297 -_08006A34: - movs r1, 0x6 - ldrsh r0, [r6, r1] - subs r0, 0x1 - cmp r5, r0 - bne _08006A60 - lsls r1, r4, 1 - lsls r0, r2, 6 - adds r0, r3 - adds r1, r0 - ldr r2, _08006A58 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0x80 - lsls r0, 4 - adds r1, r0 - ldr r2, _08006A5C - b _08006A92 - .align 2, 0 -_08006A58: .4byte 0x0000fa97 -_08006A5C: .4byte 0x0000f2db -_08006A60: - lsls r1, r4, 1 - lsls r0, r2, 6 - adds r0, r3 - adds r1, r0 - ldr r2, _08006A78 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0x80 - lsls r0, 4 - adds r1, r0 - adds r2, 0x1 - b _08006A92 - .align 2, 0 -_08006A78: .4byte 0x0000f2da -_08006A7C: - lsls r1, r4, 1 - lsls r0, r2, 6 - adds r0, r3 - adds r1, r0 - ldr r2, _08006A98 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0x80 - lsls r0, 4 - adds r1, r0 - subs r2, 0xF -_08006A92: - adds r0, r2, 0 - strh r0, [r1] - b _08006ABA - .align 2, 0 -_08006A98: .4byte 0x0000f2ea -_08006A9C: - lsls r0, r4, 1 - lsls r1, r2, 6 - adds r1, r3 - adds r0, r1 - ldr r2, _08006AA8 - b _08006AB6 - .align 2, 0 -_08006AA8: .4byte 0x0000f2de -_08006AAC: - lsls r0, r4, 1 - lsls r1, r2, 6 - adds r1, r3 - adds r0, r1 - ldr r2, _08006AC0 -_08006AB6: - adds r1, r2, 0 - strh r1, [r0] -_08006ABA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08006AC0: .4byte 0x0000f2b6 - thumb_func_end sub_80069CC - thumb_func_start sub_8006AC4 sub_8006AC4: push {r4,r5,lr} diff --git a/src/text2.c b/src/text2.c index c608142ee..d59fb9e31 100644 --- a/src/text2.c +++ b/src/text2.c @@ -6,14 +6,15 @@ extern const u32 gUnknown_80B8814[]; // text.s -extern void sub_800677C(struct UnkTextStruct1 *, s32, u16 *, u8); -extern void sub_80069CC(struct UnkTextStruct1 *, s32, s32, s32, u16 *); extern void sub_8006AC4(struct UnkTextStruct1 *, s32, s32, u32, u16 *); extern void sub_8006B70(struct UnkTextStruct1 *, s32, s32, s32, u16 *); extern void sub_8006C44(struct UnkTextStruct1 *, s32, u16 *, u8); extern void sub_8006E94(struct UnkTextStruct1 *, s32, u32, const u8 *, u16 *); extern void sub_8008C6C(struct UnkTextStruct1 *, u32); +void sub_800677C(struct UnkTextStruct1 *, s32, u16 *, u8); +void sub_80069CC(struct UnkTextStruct1 *, s32, s32, s32, u16 *); + void nullsub_152(void) { } @@ -200,4 +201,46 @@ void sub_800677C(struct UnkTextStruct1 *a0, s32 a1, u16 *a2, u8 a3) (a2 + a1 * 0x20)[iVar5] = 0xF693; break; } +} + +void sub_80069CC(struct UnkTextStruct1 *a0, s32 a1, s32 a2, s32 a3, u16 *a4) +{ + if (a2 > 28) + return; + // Cannot combine these ifs for matching + if (a2 < 0) + return; + + switch (a0->unkC) { + case 1: + case 2: + break; + case 0: + if (a3 == 0) { + (a4 + a2 * 0x20)[a1] = 0xF297; + (a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB; + break; + } + if (a3 == a0->unk6 - 1) { + (a4 + a2 * 0x20)[a1] = 0xFA97; + (a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB; + break; + } + // Fallthrough + case 3: + case 6: + (a4 + a2 * 0x20)[a1] = 0xF2DA; + (a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB; + break; + case 4: + (a4 + a2 * 0x20)[a1] = 0xF2EA; + (a4 + a2 * 0x20)[a1 + 0x400] = 0xF2DB; + break; + case 5: + (a4 + a2 * 0x20)[a1] = 0xF2DE; + break; + case 7: + (a4 + a2 * 0x20)[a1] = 0xF2B6; + break; + } } \ No newline at end of file