InterpretColorChar

This commit is contained in:
DizzyEggg
2024-10-01 12:34:45 +02:00
parent c579df2588
commit ebf922c39a
2 changed files with 103 additions and 332 deletions

View File

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

View File

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