diff --git a/asm/text.s b/asm/text.s index 01b5c04b0..ad1e0bc05 100644 --- a/asm/text.s +++ b/asm/text.s @@ -5,122 +5,6 @@ .text - thumb_func_start sub_8007AA4 -sub_8007AA4: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x20 - mov r9, r2 - adds r5, r3, 0 - ldr r7, [sp, 0x3C] - ldr r3, [sp, 0x40] - lsls r2, r1, 3 - adds r2, r1 - lsls r2, 3 - adds r4, r0, r2 - ldr r1, _08007B28 - movs r0, 0xF - ands r3, r0 - lsls r3, 2 - adds r3, r1 - ldr r0, [r3] - ldr r1, _08007B2C - adds r1, r0 - mov r12, r1 - mov r1, sp - ldr r0, _08007B30 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3} - stm r1!, {r2,r3} - adds r0, r5, 0 - cmp r5, 0 - bge _08007AE8 - adds r0, r5, 0x7 -_08007AE8: - asrs r3, r0, 3 - movs r0, 0x4 - ldrsh r6, [r4, r0] - mov r8, r6 - mov r0, r8 - muls r0, r3 - mov r2, r9 - cmp r2, 0 - bge _08007AFC - adds r2, 0x7 -_08007AFC: - asrs r2, 3 - adds r0, r2 - lsls r0, 5 - ldr r1, [r4, 0x18] - adds r1, r0 - lsls r0, r3, 3 - subs r0, r5, r0 - lsls r0, 2 - adds r1, r0 - movs r0, 0x7 - mov r6, r9 - ands r0, r6 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - mov r6, r12 - ands r6, r0 - mov r12, r6 - cmp r2, r8 - bge _08007B6E - b _08007B48 - .align 2, 0 -_08007B28: .4byte gUnknown_80B853C -_08007B2C: .4byte 0x11111111 -_08007B30: .4byte gUnknown_80B8848 -_08007B34: - adds r5, 0x1 - adds r1, 0x4 - movs r0, 0x7 - ands r0, r5 - cmp r0, 0 - bne _08007B46 - ldr r0, [r4, 0x20] - lsls r0, 2 - adds r1, r0 -_08007B46: - subs r7, 0x1 -_08007B48: - cmp r7, 0 - ble _08007B6E - movs r2, 0x8 - ldrsh r0, [r4, r2] - cmp r3, r0 - bge _08007B6E - ldr r0, [r1] - mov r6, r12 - orrs r0, r6 - str r0, [r1] - ldr r0, [r4, 0x3C] - cmp r0, r1 - bls _08007B64 - str r1, [r4, 0x3C] -_08007B64: - ldr r0, [r4, 0x40] - cmp r0, r1 - bcs _08007B34 - str r1, [r4, 0x40] - b _08007B34 -_08007B6E: - add sp, 0x20 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8007AA4 - thumb_func_start sub_8007B7C sub_8007B7C: push {r4-r6,lr} diff --git a/data/data.s b/data/data.s index a55a2a408..363c7662d 100644 --- a/data/data.s +++ b/data/data.s @@ -1927,6 +1927,7 @@ gUnknown_80B8824: @ 80B8824 .global gUnknown_80B8848 gUnknown_80B8848: @ 80B8848 + @ Type: unkStruct_80B8848 .byte 0x0F, 0x00, 0x00, 0x00 .byte 0xF0, 0x00, 0x00, 0x00 .byte 0x00, 0x0F, 0x00, 0x00 diff --git a/include/text2.h b/include/text2.h index fd9b30601..02c200c28 100644 --- a/include/text2.h +++ b/include/text2.h @@ -24,6 +24,10 @@ struct unkStruct_80B8824 { u32 arr[9]; }; +struct unkStruct_80B8848 +{ + u32 arr[8]; +}; u32 xxx_call_draw_char(s32, s32, u32, u32, u32); diff --git a/src/text2.c b/src/text2.c index ce3b4b03d..572c3c50e 100644 --- a/src/text2.c +++ b/src/text2.c @@ -7,9 +7,9 @@ extern const u32 gUnknown_80B853C[16]; extern const struct unkShiftData gUnknown_80B85DC[8]; extern const u32 gUnknown_80B8814[]; extern const struct unkStruct_80B8824 gUnknown_80B8824; +extern const struct unkStruct_80B8848 gUnknown_80B8848; // text.s -extern void sub_8007AA4(struct UnkTextStruct1 *, u32, u32, u32, u32, u32); extern void sub_8008C6C(struct UnkTextStruct1 *, u32); void nullsub_129(u32, s32, s32, u32, u32); @@ -22,6 +22,7 @@ void sub_8006B70(struct UnkTextStruct1 *, s32, s32, s32, u16 *); void sub_8006C44(struct UnkTextStruct1 *, s32, u16 *, u8); void sub_8006E94(struct UnkTextStruct1 *, s32, u32, const u8 *, u16 *); void sub_8007958(struct UnkTextStruct1 *, u32, s32, s32, s32, u32); +void sub_8007AA4(struct UnkTextStruct1 *, u32, s32, s32, s32, u32); void nullsub_152(void) { @@ -1938,7 +1939,7 @@ void sub_8007958(struct UnkTextStruct1 *a0, u32 a1, s32 x, s32 y, s32 a4, u32 co struct UnkTextStruct1 *r5; s32 r6; u32 r9; - + const struct unkShiftData *shiftData; struct unkStruct_80B8824 dataLOL; s32 lol; @@ -2171,4 +2172,122 @@ void sub_8007A78(u32 a0, u32 a1, u32 a2, u32 a3, u32 a4) // Unused void nullsub_157() { +} + +NAKED // https://decomp.me/scratch/xE2Tn +void sub_8007AA4(struct UnkTextStruct1 *a0, u32 a1, s32 x, s32 y, s32 a4, u32 color) +{ + asm_unified( + "push {r4-r7,lr}\n" + "\tmov r7, r9\n" + "\tmov r6, r8\n" + "\tpush {r6,r7}\n" + "\tsub sp, 0x20\n" + "\tmov r9, r2\n" + "\tadds r5, r3, 0\n" + "\tldr r7, [sp, 0x3C]\n" + "\tldr r3, [sp, 0x40]\n" + "\tlsls r2, r1, 3\n" + "\tadds r2, r1\n" + "\tlsls r2, 3\n" + "\tadds r4, r0, r2\n" + "\tldr r1, _08007B28\n" + "\tmovs r0, 0xF\n" + "\tands r3, r0\n" + "\tlsls r3, 2\n" + "\tadds r3, r1\n" + "\tldr r0, [r3]\n" + "\tldr r1, _08007B2C\n" + "\tadds r1, r0\n" + "\tmov r12, r1\n" + "\tmov r1, sp\n" + "\tldr r0, _08007B30\n" + "\tldm r0!, {r2,r3,r6}\n" + "\tstm r1!, {r2,r3,r6}\n" + "\tldm r0!, {r2,r3,r6}\n" + "\tstm r1!, {r2,r3,r6}\n" + "\tldm r0!, {r2,r3}\n" + "\tstm r1!, {r2,r3}\n" + "\tadds r0, r5, 0\n" + "\tcmp r5, 0\n" + "\tbge _08007AE8\n" + "\tadds r0, r5, 0x7\n" +"_08007AE8:\n" + "\tasrs r3, r0, 3\n" + "\tmovs r0, 0x4\n" + "\tldrsh r6, [r4, r0]\n" + "\tmov r8, r6\n" + "\tmov r0, r8\n" + "\tmuls r0, r3\n" + "\tmov r2, r9\n" + "\tcmp r2, 0\n" + "\tbge _08007AFC\n" + "\tadds r2, 0x7\n" +"_08007AFC:\n" + "\tasrs r2, 3\n" + "\tadds r0, r2\n" + "\tlsls r0, 5\n" + "\tldr r1, [r4, 0x18]\n" + "\tadds r1, r0\n" + "\tlsls r0, r3, 3\n" + "\tsubs r0, r5, r0\n" + "\tlsls r0, 2\n" + "\tadds r1, r0\n" + "\tmovs r0, 0x7\n" + "\tmov r6, r9\n" + "\tands r0, r6\n" + "\tlsls r0, 2\n" + "\tadd r0, sp\n" + "\tldr r0, [r0]\n" + "\tmov r6, r12\n" + "\tands r6, r0\n" + "\tmov r12, r6\n" + "\tcmp r2, r8\n" + "\tbge _08007B6E\n" + "\tb _08007B48\n" + "\t.align 2, 0\n" +"_08007B28: .4byte gUnknown_80B853C\n" +"_08007B2C: .4byte 0x11111111\n" +"_08007B30: .4byte gUnknown_80B8848\n" +"_08007B34:\n" + "\tadds r5, 0x1\n" + "\tadds r1, 0x4\n" + "\tmovs r0, 0x7\n" + "\tands r0, r5\n" + "\tcmp r0, 0\n" + "\tbne _08007B46\n" + "\tldr r0, [r4, 0x20]\n" + "\tlsls r0, 2\n" + "\tadds r1, r0\n" +"_08007B46:\n" + "\tsubs r7, 0x1\n" +"_08007B48:\n" + "\tcmp r7, 0\n" + "\tble _08007B6E\n" + "\tmovs r2, 0x8\n" + "\tldrsh r0, [r4, r2]\n" + "\tcmp r3, r0\n" + "\tbge _08007B6E\n" + "\tldr r0, [r1]\n" + "\tmov r6, r12\n" + "\torrs r0, r6\n" + "\tstr r0, [r1]\n" + "\tldr r0, [r4, 0x3C]\n" + "\tcmp r0, r1\n" + "\tbls _08007B64\n" + "\tstr r1, [r4, 0x3C]\n" +"_08007B64:\n" + "\tldr r0, [r4, 0x40]\n" + "\tcmp r0, r1\n" + "\tbcs _08007B34\n" + "\tstr r1, [r4, 0x40]\n" + "\tb _08007B34\n" +"_08007B6E:\n" + "\tadd sp, 0x20\n" + "\tpop {r3,r4}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); } \ No newline at end of file