diff --git a/asm/text.s b/asm/text.s index bee84d649..3060acc4c 100644 --- a/asm/text.s +++ b/asm/text.s @@ -7,337 +7,6 @@ - thumb_func_start sub_8009488 -sub_8009488: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 3 - ldr r0, _08009514 - adds r4, r1, r0 - movs r0, 0x2 - ldrsh r1, [r4, r0] - movs r3, 0 - movs r2, 0x6 - ldrsh r0, [r4, r2] - cmp r3, r0 - bge _08009506 - ldr r6, _08009518 - mov r9, r6 - ldr r0, _0800951C - mov r8, r0 - movs r2, 0x80 - lsls r2, 4 - add r2, r8 - mov r10, r2 -_080094BA: - movs r6, 0 - ldrsh r2, [r4, r6] - movs r5, 0 - movs r6, 0x4 - ldrsh r0, [r4, r6] - adds r6, r1, 0x1 - adds r7, r3, 0x1 - cmp r5, r0 - bge _080094FA - movs r0, 0xFC - lsls r0, 8 - mov r12, r0 - lsls r2, 1 - lsls r1, 6 - mov r3, r10 - adds r0, r1, r3 - adds r3, r2, r0 - add r1, r8 - adds r2, r1 -_080094E0: - ldrh r0, [r2] - mov r1, r12 - ands r1, r0 - strh r1, [r2] - mov r0, r9 - strh r0, [r3] - adds r3, 0x2 - adds r2, 0x2 - adds r5, 0x1 - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r5, r0 - blt _080094E0 -_080094FA: - adds r1, r6, 0 - adds r3, r7, 0 - movs r2, 0x6 - ldrsh r0, [r4, r2] - cmp r3, r0 - blt _080094BA -_08009506: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08009514: .4byte gUnknown_2027370 -_08009518: .4byte 0x0000f27a -_0800951C: .4byte gUnknown_202B038 - thumb_func_end sub_8009488 - - thumb_func_start nullsub_172 -nullsub_172: - bx lr - thumb_func_end nullsub_172 - - thumb_func_start sub_8009524 -sub_8009524: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 3 - ldr r0, _080095BC - adds r4, r1, r0 - movs r1, 0x2 - ldrsh r0, [r4, r1] - subs r1, r0, 0x1 - movs r3, 0 - movs r2, 0x6 - ldrsh r0, [r4, r2] - adds r0, 0x2 - cmp r3, r0 - bge _080095AE - ldr r6, _080095C0 - mov r9, r6 - ldr r0, _080095C4 - mov r8, r0 - movs r2, 0x80 - lsls r2, 4 - add r2, r8 - mov r10, r2 -_0800955A: - movs r6, 0 - ldrsh r0, [r4, r6] - subs r2, r0, 0x1 - movs r5, 0 - movs r6, 0x4 - ldrsh r0, [r4, r6] - adds r0, 0x2 - adds r6, r1, 0x1 - adds r7, r3, 0x1 - cmp r5, r0 - bge _080095A0 - movs r0, 0xFC - lsls r0, 8 - mov r12, r0 - lsls r2, 1 - lsls r1, 6 - mov r3, r10 - adds r0, r1, r3 - adds r3, r2, r0 - add r1, r8 - adds r2, r1 -_08009584: - ldrh r0, [r2] - mov r1, r12 - ands r1, r0 - strh r1, [r2] - mov r0, r9 - strh r0, [r3] - adds r3, 0x2 - adds r2, 0x2 - adds r5, 0x1 - movs r1, 0x4 - ldrsh r0, [r4, r1] - adds r0, 0x2 - cmp r5, r0 - blt _08009584 -_080095A0: - adds r1, r6, 0 - adds r3, r7, 0 - movs r2, 0x6 - ldrsh r0, [r4, r2] - adds r0, 0x2 - cmp r3, r0 - blt _0800955A -_080095AE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080095BC: .4byte gUnknown_2027370 -_080095C0: .4byte 0x0000f27a -_080095C4: .4byte gUnknown_202B038 - thumb_func_end sub_8009524 - - thumb_func_start nullsub_173 -nullsub_173: - bx lr - thumb_func_end nullsub_173 - - thumb_func_start sub_80095CC -sub_80095CC: - ldr r2, _080095D8 - str r0, [r2] - ldr r0, _080095DC - str r1, [r0] - bx lr - .align 2, 0 -_080095D8: .4byte gUnknown_202B020 -_080095DC: .4byte gUnknown_202B024 - thumb_func_end sub_80095CC - - thumb_func_start nullsub_174 -nullsub_174: - bx lr - thumb_func_end nullsub_174 - -@ https://decomp.me/scratch/A63Io - thumb_func_start sub_80095E4 -sub_80095E4: - push {lr} - cmp r1, 0 - bne _080095EC - movs r1, 0xA -_080095EC: - muls r1, r0 - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _08009604 - adds r0, r1, 0 - cmp r1, 0 - bge _080095FE - adds r0, r1, 0x7 -_080095FE: - asrs r0, 3 - adds r0, 0x1 - b _0800960E -_08009604: - adds r0, r1, 0 - cmp r0, 0 - bge _0800960C - adds r0, 0x7 -_0800960C: - asrs r0, 3 -_0800960E: - pop {r1} - bx r1 - thumb_func_end sub_80095E4 - - thumb_func_start sub_8009614 -sub_8009614: - push {lr} - muls r1, r0 - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0800962E - adds r0, r1, 0 - cmp r1, 0 - bge _08009628 - adds r0, r1, 0x7 -_08009628: - asrs r0, 3 - adds r0, 0x1 - b _08009638 -_0800962E: - adds r0, r1, 0 - cmp r0, 0 - bge _08009636 - adds r0, 0x7 -_08009636: - asrs r0, 3 -_08009638: - pop {r1} - bx r1 - thumb_func_end sub_8009614 - - thumb_func_start InterpretColorChar -InterpretColorChar: - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - cmp r0, 0xF - bls _080096DA - adds r1, r0, 0 - subs r1, 0x30 - lsls r0, r1, 24 - lsrs r0, 24 - cmp r0, 0xF - bhi _08009658 - adds r0, r1, 0 - b _080096DA -_08009658: - adds r0, r2, 0 - subs r0, 0x43 - cmp r0, 0x14 - bhi _080096D8 - lsls r0, 2 - ldr r1, _0800966C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0800966C: .4byte _08009670 - .align 2, 0 -_08009670: - .4byte _080096D0 - .4byte _080096D0 - .4byte _080096C8 - .4byte _080096D8 - .4byte _080096CC - .4byte _080096C4 - .4byte _080096C4 - .4byte _080096D8 - .4byte _080096D8 - .4byte _080096D8 - .4byte _080096CC - .4byte _080096D0 - .4byte _080096D8 - .4byte _080096D8 - .4byte _080096D8 - .4byte _080096D8 - .4byte _080096C8 - .4byte _080096C8 - .4byte _080096D8 - .4byte _080096D8 - .4byte _080096D4 -_080096C4: - movs r0, 0x4 - b _080096DA -_080096C8: - movs r0, 0xF - b _080096DA -_080096CC: - movs r0, 0x5 - b _080096DA -_080096D0: - movs r0, 0x6 - b _080096DA -_080096D4: - movs r0, 0x2 - b _080096DA -_080096D8: - movs r0, 0x7 -_080096DA: - pop {r1} - bx r1 - thumb_func_end InterpretColorChar - thumb_func_start InitGraphics InitGraphics: push {r4-r6,lr} diff --git a/src/text2.c b/src/text2.c index 9a552381b..a3da69608 100644 --- a/src/text2.c +++ b/src/text2.c @@ -3531,7 +3531,7 @@ UNUSED s32 sub_80091A8(s32 a0) extern u8 gUnknown_202749A[]; extern u8 gUnknown_20274A6[]; -s32 InterpretColorChar(s32 a0); +s32 InterpretColorChar(u8 a0); #ifdef NONMATCHING // https://decomp.me/scratch/AJ2km @@ -3965,3 +3965,105 @@ void sub_8009408(s32 from, s32 to) gUnknown_20274A5 = 1; } +UNUSED void sub_8009488(s32 strArrId) +{ + s32 i, j; + s32 id0, id1; + UnkTextStruct1 *strPtr = &gUnknown_2027370[strArrId]; + + id0 = strPtr->unk2; + for (i = 0; i < strPtr->unk6; i++) { + id1 = strPtr->unk0; + for (j = 0; j < strPtr->unk4; j++) { + gUnknown_202B038[0][id0][id1] &= 0xFC00; + gUnknown_202B038[1][id0][id1] = 0xF27A; + id1++; + } + id0++; + } +} + +UNUSED void nullsub_172(void) {} + +void sub_8009524(s32 strArrId) +{ + s32 i, j; + UnkTextStruct1 *strPtr = &gUnknown_2027370[strArrId]; + s32 id0 = strPtr->unk2 - 1; + + for (i = 0; i < strPtr->unk6 + 2; i++) { + s32 id1 = strPtr->unk0 - 1; + for (j = 0; j < strPtr->unk4 + 2; j++) { + gUnknown_202B038[0][id0][id1] &= 0xFC00; + gUnknown_202B038[1][id0][id1] = 0xF27A; + id1++; + } + id0++; + } +} + +UNUSED void nullsub_173(void) {} + +void sub_80095CC(s32 a0, s32 a1) +{ + gUnknown_202B020 = a0; + gUnknown_202B024 = a1; +} + +UNUSED void nullsub_174(void) {} + +s32 sub_80095E4(s32 a0, s32 a1) +{ + s32 r1; + + if (a1 == 0) + a1 = 10; + r1 = a0 * a1; + + if ((r1 % 8) != 0) + return (r1 / 8) + 1; + else + return r1 / 8; +} + +// Same as sub_80095E4 except it doesn't check for a1 == 0 +s32 sub_8009614(s32 a0, s32 a1) +{ + s32 r1; + + r1 = a0 * a1; + + if ((r1 % 8) != 0) + return (r1 / 8) + 1; + else + return r1 / 8; +} + +s32 InterpretColorChar(u8 a0) +{ + if (a0 < 16) + return a0; + if (a0 >= 48 && a0 <= 63) + return a0 - 48; + + switch (a0) { + case 72: + case 73: + return 4; + case 69: + case 83: + case 84: + return 15; + case 71: + case 77: + return 5; + case 67: + case 68: + case 78: + return 6; + case 87: + return 2; + + } + return 7; +}