mirror of
https://github.com/pret/pmd-red.git
synced 2026-09-12 19:16:02 -05:00
xxx_get_next_char_from_string
This commit is contained in:
499
asm/text.s
499
asm/text.s
@@ -7,505 +7,6 @@
|
||||
|
||||
|
||||
|
||||
thumb_func_start sub_8008334
|
||||
sub_8008334:
|
||||
push {r4-r7,lr}
|
||||
adds r7, r0, 0
|
||||
mov r12, r1
|
||||
ldr r4, [r7]
|
||||
ldr r1, [r1]
|
||||
movs r3, 0
|
||||
movs r2, 0
|
||||
movs r6, 0xF
|
||||
movs r5, 0x1C
|
||||
_08008346:
|
||||
lsls r2, 4
|
||||
lsls r3, 4
|
||||
adds r0, r4, 0
|
||||
ands r0, r6
|
||||
orrs r2, r0
|
||||
adds r0, r1, 0
|
||||
ands r0, r6
|
||||
orrs r3, r0
|
||||
lsrs r4, 4
|
||||
lsrs r1, 4
|
||||
subs r5, 0x4
|
||||
cmp r5, 0
|
||||
bge _08008346
|
||||
str r3, [r7]
|
||||
mov r0, r12
|
||||
str r2, [r0]
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8008334
|
||||
|
||||
thumb_func_start sub_800836C
|
||||
sub_800836C:
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
adds r3, r2, 0
|
||||
ldr r0, _08008384
|
||||
adds r1, r4, 0
|
||||
adds r2, r5, 0
|
||||
bl sub_800838C
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08008384: .4byte gUnknown_2027370
|
||||
thumb_func_end sub_800836C
|
||||
|
||||
thumb_func_start nullsub_163
|
||||
nullsub_163:
|
||||
bx lr
|
||||
thumb_func_end nullsub_163
|
||||
|
||||
thumb_func_start sub_800838C
|
||||
sub_800838C:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
lsls r4, r1, 3
|
||||
adds r4, r1
|
||||
lsls r4, 3
|
||||
adds r7, r0, r4
|
||||
adds r0, r1, 0
|
||||
adds r1, r2, 0
|
||||
adds r2, r3, 0
|
||||
bl sub_8008274
|
||||
movs r0, 0
|
||||
mov r9, r0
|
||||
b _08008452
|
||||
_080083AE:
|
||||
movs r1, 0x4
|
||||
ldrsh r0, [r7, r1]
|
||||
lsrs r1, r0, 31
|
||||
adds r0, r1
|
||||
asrs r0, 1
|
||||
mov r8, r0
|
||||
ldrh r1, [r7, 0x4]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _080083C8
|
||||
movs r0, 0x1
|
||||
add r8, r0
|
||||
_080083C8:
|
||||
movs r6, 0
|
||||
movs r1, 0x1
|
||||
add r1, r9
|
||||
mov r10, r1
|
||||
cmp r6, r8
|
||||
bge _08008450
|
||||
_080083D4:
|
||||
movs r0, 0x4
|
||||
ldrsh r1, [r7, r0]
|
||||
mov r0, r9
|
||||
muls r0, r1
|
||||
adds r4, r0, r6
|
||||
lsls r4, 5
|
||||
ldr r5, [r7, 0x18]
|
||||
adds r4, r5, r4
|
||||
subs r0, 0x1
|
||||
subs r1, r6
|
||||
adds r0, r1
|
||||
lsls r0, 5
|
||||
adds r5, r0
|
||||
adds r0, r4, 0
|
||||
adds r4, 0x4
|
||||
adds r1, r5, 0
|
||||
adds r5, 0x4
|
||||
bl sub_8008334
|
||||
adds r0, r4, 0
|
||||
adds r4, 0x4
|
||||
adds r1, r5, 0
|
||||
adds r5, 0x4
|
||||
bl sub_8008334
|
||||
adds r0, r4, 0
|
||||
adds r4, 0x4
|
||||
adds r1, r5, 0
|
||||
adds r5, 0x4
|
||||
bl sub_8008334
|
||||
adds r0, r4, 0
|
||||
adds r4, 0x4
|
||||
adds r1, r5, 0
|
||||
adds r5, 0x4
|
||||
bl sub_8008334
|
||||
adds r0, r4, 0
|
||||
adds r4, 0x4
|
||||
adds r1, r5, 0
|
||||
adds r5, 0x4
|
||||
bl sub_8008334
|
||||
adds r0, r4, 0
|
||||
adds r4, 0x4
|
||||
adds r1, r5, 0
|
||||
adds r5, 0x4
|
||||
bl sub_8008334
|
||||
adds r0, r4, 0
|
||||
adds r4, 0x4
|
||||
adds r1, r5, 0
|
||||
adds r5, 0x4
|
||||
bl sub_8008334
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl sub_8008334
|
||||
adds r6, 0x1
|
||||
cmp r6, r8
|
||||
blt _080083D4
|
||||
_08008450:
|
||||
mov r9, r10
|
||||
_08008452:
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r7, r1]
|
||||
cmp r9, r0
|
||||
blt _080083AE
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_800838C
|
||||
|
||||
thumb_func_start sub_8008468
|
||||
sub_8008468:
|
||||
push {r4-r6,lr}
|
||||
mov r6, r8
|
||||
push {r6}
|
||||
sub sp, 0x10
|
||||
adds r6, r0, 0
|
||||
mov r8, r1
|
||||
ldr r4, [sp, 0x24]
|
||||
ldr r5, [sp, 0x28]
|
||||
ldr r0, _08008498
|
||||
ldr r1, _0800849C
|
||||
str r2, [sp]
|
||||
str r3, [sp, 0x4]
|
||||
str r4, [sp, 0x8]
|
||||
str r5, [sp, 0xC]
|
||||
adds r2, r6, 0
|
||||
mov r3, r8
|
||||
bl sub_80084A4
|
||||
add sp, 0x10
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08008498: .4byte gUnknown_2027370
|
||||
_0800849C: .4byte gUnknown_202B038
|
||||
thumb_func_end sub_8008468
|
||||
|
||||
thumb_func_start nullsub_164
|
||||
nullsub_164:
|
||||
bx lr
|
||||
thumb_func_end nullsub_164
|
||||
|
||||
thumb_func_start sub_80084A4
|
||||
sub_80084A4:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x4
|
||||
str r1, [sp]
|
||||
mov r10, r3
|
||||
ldr r6, [sp, 0x24]
|
||||
ldr r7, [sp, 0x28]
|
||||
ldr r1, [sp, 0x2C]
|
||||
mov r12, r1
|
||||
lsls r1, r2, 3
|
||||
adds r1, r2
|
||||
lsls r1, 3
|
||||
adds r4, r0, r1
|
||||
mov r0, r10
|
||||
cmp r0, 0
|
||||
bge _080084CC
|
||||
adds r0, 0x7
|
||||
_080084CC:
|
||||
asrs r0, 3
|
||||
mov r10, r0
|
||||
adds r0, r6, 0
|
||||
cmp r6, 0
|
||||
bge _080084D8
|
||||
adds r0, r6, 0x7
|
||||
_080084D8:
|
||||
asrs r6, r0, 3
|
||||
adds r0, r7, 0
|
||||
cmp r7, 0
|
||||
bge _080084E2
|
||||
adds r0, r7, 0x7
|
||||
_080084E2:
|
||||
asrs r7, r0, 3
|
||||
mov r0, r12
|
||||
cmp r0, 0
|
||||
bge _080084EC
|
||||
adds r0, 0x7
|
||||
_080084EC:
|
||||
asrs r0, 3
|
||||
mov r12, r0
|
||||
ldr r2, [sp, 0x30]
|
||||
lsls r2, 12
|
||||
str r2, [sp, 0x30]
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r6, r0
|
||||
bge _08008570
|
||||
movs r2, 0
|
||||
mov r8, r2
|
||||
cmp r8, r12
|
||||
bge _08008570
|
||||
_08008506:
|
||||
mov r3, r10
|
||||
adds r0, r6, 0x1
|
||||
mov r9, r0
|
||||
cmp r7, 0
|
||||
ble _0800855E
|
||||
adds r5, r7, 0
|
||||
_08008512:
|
||||
movs r1, 0x4
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r3, r0
|
||||
bge _08008556
|
||||
movs r2, 0x2
|
||||
ldrsh r0, [r4, r2]
|
||||
adds r0, r6
|
||||
movs r2, 0
|
||||
ldrsh r1, [r4, r2]
|
||||
adds r1, r3
|
||||
lsls r1, 1
|
||||
lsls r0, 6
|
||||
ldr r2, [sp]
|
||||
adds r0, r2
|
||||
adds r1, r0
|
||||
ldrh r2, [r1]
|
||||
ldr r0, _08008580
|
||||
ands r0, r2
|
||||
strh r0, [r1]
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r4, r1]
|
||||
adds r0, r6
|
||||
movs r2, 0
|
||||
ldrsh r1, [r4, r2]
|
||||
adds r1, r3
|
||||
lsls r1, 1
|
||||
lsls r0, 6
|
||||
ldr r2, [sp]
|
||||
adds r0, r2
|
||||
adds r1, r0
|
||||
ldrh r2, [r1]
|
||||
ldr r0, [sp, 0x30]
|
||||
orrs r0, r2
|
||||
strh r0, [r1]
|
||||
_08008556:
|
||||
adds r3, 0x1
|
||||
subs r5, 0x1
|
||||
cmp r5, 0
|
||||
bne _08008512
|
||||
_0800855E:
|
||||
mov r6, r9
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r6, r0
|
||||
bge _08008570
|
||||
movs r2, 0x1
|
||||
add r8, r2
|
||||
cmp r8, r12
|
||||
blt _08008506
|
||||
_08008570:
|
||||
add sp, 0x4
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08008580: .4byte 0x00000fff
|
||||
thumb_func_end sub_80084A4
|
||||
|
||||
thumb_func_start GetCharacter
|
||||
GetCharacter:
|
||||
push {r4,r5,lr}
|
||||
adds r3, r0, 0
|
||||
ldr r1, _080085C4
|
||||
ldr r0, _080085C8
|
||||
ldr r0, [r0]
|
||||
lsls r0, 2
|
||||
adds r0, r1
|
||||
ldr r2, [r0]
|
||||
ldr r5, [r2, 0x4]
|
||||
ldr r0, _080085CC
|
||||
adds r1, r3, r0
|
||||
ldr r0, _080085D0
|
||||
cmp r1, r0
|
||||
bhi _080085D4
|
||||
movs r2, 0xFF
|
||||
ands r2, r3
|
||||
movs r1, 0xFF
|
||||
lsls r1, 8
|
||||
ands r1, r3
|
||||
asrs r1, 8
|
||||
subs r2, 0x20
|
||||
subs r1, 0xF8
|
||||
lsls r0, r1, 3
|
||||
subs r0, r1
|
||||
lsls r0, 5
|
||||
adds r0, r2
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 2
|
||||
adds r1, r5, r1
|
||||
b _08008624
|
||||
.align 2, 0
|
||||
_080085C4: .4byte gCharmaps
|
||||
_080085C8: .4byte gCurrentCharmap
|
||||
_080085CC: .4byte 0xffff0800
|
||||
_080085D0: .4byte 0x000007fe
|
||||
_080085D4:
|
||||
movs r4, 0
|
||||
ldr r0, [r2]
|
||||
subs r2, r0, 0x1
|
||||
cmp r4, r2
|
||||
bge _08008614
|
||||
lsrs r0, r2, 31
|
||||
adds r0, r2, r0
|
||||
b _08008602
|
||||
_080085E4:
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
ldrh r0, [r0, 0x4]
|
||||
cmp r0, r3
|
||||
bge _080085F6
|
||||
adds r4, r1, 0x1
|
||||
b _080085F8
|
||||
_080085F6:
|
||||
adds r2, r1, 0
|
||||
_080085F8:
|
||||
cmp r4, r2
|
||||
bge _08008614
|
||||
adds r0, r4, r2
|
||||
lsrs r1, r0, 31
|
||||
adds r0, r1
|
||||
_08008602:
|
||||
asrs r1, r0, 1
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
ldrh r0, [r0, 0x4]
|
||||
cmp r0, r3
|
||||
bne _080085E4
|
||||
adds r4, r1, 0
|
||||
_08008614:
|
||||
lsls r0, r4, 1
|
||||
adds r0, r4
|
||||
lsls r0, 2
|
||||
adds r1, r5, r0
|
||||
ldrh r0, [r1, 0x4]
|
||||
cmp r0, r3
|
||||
beq _08008624
|
||||
ldr r1, _0800862C
|
||||
_08008624:
|
||||
adds r0, r1, 0
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_0800862C: .4byte gUnknown_80B86A4
|
||||
thumb_func_end GetCharacter
|
||||
|
||||
thumb_func_start HexDigitValue
|
||||
HexDigitValue:
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
adds r3, r1, 0
|
||||
adds r2, r1, 0
|
||||
subs r2, 0x30
|
||||
lsls r0, r2, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x9
|
||||
bhi _08008648
|
||||
adds r0, r2, 0
|
||||
b _0800865C
|
||||
_08008648:
|
||||
adds r0, r1, 0
|
||||
subs r0, 0x61
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x5
|
||||
bls _08008658
|
||||
movs r0, 0x1
|
||||
b _0800865C
|
||||
_08008658:
|
||||
adds r0, r3, 0
|
||||
subs r0, 0x57
|
||||
_0800865C:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end HexDigitValue
|
||||
|
||||
thumb_func_start xxx_get_next_char_from_string
|
||||
xxx_get_next_char_from_string:
|
||||
push {r4-r6,lr}
|
||||
adds r5, r0, 0
|
||||
adds r6, r1, 0
|
||||
ldrb r1, [r5]
|
||||
cmp r1, 0x7E
|
||||
bne _08008696
|
||||
adds r5, 0x1
|
||||
ldrb r0, [r5]
|
||||
bl HexDigitValue
|
||||
adds r4, r0, 0
|
||||
ldrb r0, [r5, 0x1]
|
||||
bl HexDigitValue
|
||||
lsls r4, 4
|
||||
adds r4, r0
|
||||
ldrb r0, [r5]
|
||||
cmp r0, 0
|
||||
beq _08008690
|
||||
adds r5, 0x1
|
||||
ldrb r0, [r5]
|
||||
cmp r0, 0
|
||||
beq _08008690
|
||||
adds r5, 0x1
|
||||
_08008690:
|
||||
str r4, [r6]
|
||||
adds r0, r5, 0
|
||||
b _080086B2
|
||||
_08008696:
|
||||
adds r0, r1, 0
|
||||
subs r0, 0x81
|
||||
cmp r0, 0x3
|
||||
bls _080086A2
|
||||
cmp r1, 0x87
|
||||
bne _080086AE
|
||||
_080086A2:
|
||||
ldrb r0, [r5, 0x1]
|
||||
lsls r1, 8
|
||||
orrs r0, r1
|
||||
str r0, [r6]
|
||||
adds r0, r5, 0x2
|
||||
b _080086B2
|
||||
_080086AE:
|
||||
str r1, [r6]
|
||||
adds r0, r5, 0x1
|
||||
_080086B2:
|
||||
pop {r4-r6}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end xxx_get_next_char_from_string
|
||||
|
||||
thumb_func_start nullsub_165
|
||||
nullsub_165:
|
||||
|
||||
@@ -12,12 +12,13 @@ struct unkShiftData
|
||||
u32 shift_right;
|
||||
};
|
||||
|
||||
// size: 0x8
|
||||
// size: 0xC
|
||||
struct unkChar
|
||||
{
|
||||
u32 *unk0;
|
||||
s16 unk4;
|
||||
u16 unk4;
|
||||
s16 unk6;
|
||||
u32 fill8;
|
||||
};
|
||||
|
||||
struct unkStruct_80B8824
|
||||
@@ -42,9 +43,9 @@ void sub_8007B7C(u32, s32, s32, s32, u32);
|
||||
void sub_8007E20(u32 a0, u32 a1, u32 a2, u32 a3, u32 a4, u32 *a5, u32 a6);
|
||||
|
||||
// text.s
|
||||
extern struct unkChar *GetCharacter(u32);
|
||||
extern const struct unkChar *GetCharacter(s32);
|
||||
extern void InitGraphics(void);
|
||||
extern void sub_800836C(u32, u8 *, u32);
|
||||
void sub_800836C(s32 a0, const u8 *compressedData, s32 a1);
|
||||
extern void sub_800898C(void);
|
||||
extern void sub_80089AC(const UnkTextStruct2 *, UnkTextStruct2_sub *);
|
||||
extern void CallPrepareTextbox_8008C54(u32);
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
s32 sub_8015FEC(u8 *buffer, s32 size)
|
||||
{
|
||||
struct unkChar *iVar2;
|
||||
const struct unkChar *iVar2;
|
||||
s32 currLength;
|
||||
s32 length;
|
||||
u8 *bufferPtr;
|
||||
@@ -31,4 +31,4 @@ s32 sub_8015FEC(u8 *buffer, s32 size)
|
||||
s32 sub_8016028(void)
|
||||
{
|
||||
return 60;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,6 +59,7 @@ struct UnkDataFileStruct
|
||||
u16 **unk10;
|
||||
};
|
||||
|
||||
// Very similar to unkChar struct
|
||||
struct UnkStruct_sub_803DC6C
|
||||
{
|
||||
u8 *unk0;
|
||||
@@ -759,7 +760,7 @@ struct UnkStruct_sub_803DC6C *sub_803DEC8(s32 chr)
|
||||
if (chr > 63487 && chr < 65535)
|
||||
{
|
||||
s32 r2 = chr & 0xFF;
|
||||
s32 r1 = (chr & 0xFF00) / 256;
|
||||
s32 r1 = (chr & 0xFF00) >> 8;
|
||||
r2 -= 32;
|
||||
r1 -= 248;
|
||||
ret = &strPtr[r1 * 224 + r2];
|
||||
|
||||
@@ -167,7 +167,7 @@ void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 color, u32 a5)
|
||||
{
|
||||
s32 iVar1;
|
||||
u32 uVar2;
|
||||
struct unkChar *iVar3;
|
||||
const struct unkChar *iVar3;
|
||||
s32 counter;
|
||||
s32 *piVar3;
|
||||
s32 *piVar4;
|
||||
@@ -212,7 +212,7 @@ void sub_8012BC4(u32 x, u32 y, s32 n, s32 len, u32 color, u32 a5)
|
||||
void sub_8012C60(u32 x, u32 y, u32 a2, u32 color, u32 a4)
|
||||
{
|
||||
u32 add_x;
|
||||
struct unkChar *iVar3;
|
||||
const struct unkChar *iVar3;
|
||||
u32 uVar2;
|
||||
|
||||
uVar2 = ReturnIntFromChar2(a2);
|
||||
|
||||
190
src/text2.c
190
src/text2.c
@@ -2654,7 +2654,7 @@ void sub_8008274(s32 a0, const u8 *compressedData, s32 a2)
|
||||
sub_800829C(gUnknown_2027370, gUnknown_202B038[0], a0, compressedData, a2);
|
||||
}
|
||||
|
||||
void nullsub_162() {}
|
||||
UNUSED void nullsub_162() {}
|
||||
|
||||
void sub_800829C(UnkTextStruct1 *a0, u16 a1[32][32], s32 a2, const u8 *compressedData, u32 a4)
|
||||
{
|
||||
@@ -2674,3 +2674,191 @@ void sub_800829C(UnkTextStruct1 *a0, u16 a1[32][32], s32 a2, const u8 *compresse
|
||||
strPtr->unk38 = strPtr->unk2C;
|
||||
strPtr->unk44 = 1;
|
||||
}
|
||||
|
||||
void sub_8008334(u32 *r7, u32 *r12)
|
||||
{
|
||||
s32 i;
|
||||
u32 r2, r3;
|
||||
u32 r4, r1;
|
||||
|
||||
r4 = *r7;
|
||||
r1 = *r12;
|
||||
|
||||
r3 = 0;
|
||||
r2 = 0;
|
||||
|
||||
for (i = 0; i < 32; i += 4) {
|
||||
r2 <<= 4;
|
||||
r3 <<= 4;
|
||||
r2 |= r4 & 0xF;
|
||||
r3 |= r1 & 0xF;
|
||||
r4 >>= 4;
|
||||
r1 >>= 4;
|
||||
}
|
||||
*r7 = r3;
|
||||
*r12 = r2;
|
||||
}
|
||||
|
||||
void sub_800838C(UnkTextStruct1 *a0, s32 a1, const u8 *compressedData, s32 a3);
|
||||
|
||||
void sub_800836C(s32 a0, const u8 *compressedData, s32 a1)
|
||||
{
|
||||
sub_800838C(gUnknown_2027370, a0, compressedData, a1);
|
||||
}
|
||||
|
||||
UNUSED void nullsub_163(void) {}
|
||||
|
||||
void sub_800838C(UnkTextStruct1 *a0, s32 a1, const u8 *compressedData, s32 a3)
|
||||
{
|
||||
s32 i, j;
|
||||
UnkTextStruct1 *strPtr = &a0[a1];
|
||||
|
||||
sub_8008274(a1, compressedData, a3);
|
||||
for (i = 0; i < strPtr->unk8; i++) {
|
||||
s32 r8 = strPtr->unk4 / 2;
|
||||
if (strPtr->unk4 & 1)
|
||||
r8++;
|
||||
for (j = 0; j < r8; j++) {
|
||||
u32 *r4, *r5;
|
||||
s32 unk4Mul = strPtr->unk4 * i;
|
||||
|
||||
r4 = &strPtr->unk18[(unk4Mul + j) * 8];
|
||||
unk4Mul--;
|
||||
r5 = &strPtr->unk18[(unk4Mul + (strPtr->unk4 - j)) * 8];
|
||||
|
||||
sub_8008334(r4++, r5++);
|
||||
sub_8008334(r4++, r5++);
|
||||
sub_8008334(r4++, r5++);
|
||||
sub_8008334(r4++, r5++);
|
||||
sub_8008334(r4++, r5++);
|
||||
sub_8008334(r4++, r5++);
|
||||
sub_8008334(r4++, r5++);
|
||||
sub_8008334(r4++, r5++);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80084A4(UnkTextStruct1 *a0, u16 a1[32][32], u32 a2, s32 a3, s32 a4, s32 a5, s32 a6, u32 a8);
|
||||
|
||||
UNUSED void sub_8008468(u32 a0, u32 a1, u32 a2, u32 a3, u32 a4, u32 a6)
|
||||
{
|
||||
sub_80084A4(gUnknown_2027370, gUnknown_202B038[0], a0, a1, a2, a3, a4, a6);
|
||||
}
|
||||
|
||||
UNUSED void nullsub_164(void) {}
|
||||
|
||||
// Effectively unused
|
||||
void sub_80084A4(UnkTextStruct1 *a0, u16 a1[32][32], u32 a2, s32 a3, s32 a4, s32 a5, s32 a6, u32 a8)
|
||||
{
|
||||
s32 i, j;
|
||||
UnkTextStruct1 *strPtr = &a0[a2];
|
||||
|
||||
a3 /= 8;
|
||||
a4 /= 8;
|
||||
a5 /= 8;
|
||||
a6 /= 8;
|
||||
a8 *= 4096;
|
||||
if (a4 < strPtr->unk8) {
|
||||
for (i = 0; i < a6; i++) {
|
||||
s32 xMaybe = a3;
|
||||
for (j = 0; j < a5; j++) {
|
||||
if (xMaybe < strPtr->unk4) {
|
||||
a1[strPtr->unk2 + a4][strPtr->unk0 + xMaybe] &= 0xFFF;
|
||||
a1[strPtr->unk2 + a4][strPtr->unk0 + xMaybe] |= a8;
|
||||
}
|
||||
xMaybe++;
|
||||
}
|
||||
a4++;
|
||||
if (a4 >= strPtr->unk8)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extern const struct unkChar gUnknown_80B86A4;
|
||||
|
||||
struct CharMapStruct
|
||||
{
|
||||
s32 unk0;
|
||||
struct unkChar *unk4;
|
||||
};
|
||||
extern struct CharMapStruct *gCharmaps[];
|
||||
extern s32 gCurrentCharmap;
|
||||
|
||||
// Oddly similar to sub_803DEC8
|
||||
const struct unkChar *GetCharacter(s32 chr)
|
||||
{
|
||||
s32 r2, r4;
|
||||
const struct unkChar *ret;
|
||||
const struct unkChar *strPtr = gCharmaps[gCurrentCharmap]->unk4;
|
||||
// Fakematch? Or just magic numbers which will make more sense once this file is documented?
|
||||
if (chr > 63487 && chr < 65535)
|
||||
{
|
||||
s32 r2 = chr & 0xFF;
|
||||
s32 r1 = (chr & 0xFF00) >> 8;
|
||||
r2 -= 32;
|
||||
r1 -= 248;
|
||||
ret = &strPtr[r1 * 224 + r2];
|
||||
}
|
||||
else
|
||||
{
|
||||
r4 = 0;
|
||||
r2 = gCharmaps[gCurrentCharmap]->unk0 - 1;
|
||||
while (r4 < r2) {
|
||||
s32 r1 = (r4 + r2) / 2;
|
||||
if (strPtr[r1].unk4 == chr) {
|
||||
r4 = r1;
|
||||
break;
|
||||
}
|
||||
else if (strPtr[r1].unk4 < chr) {
|
||||
r4 = r1 + 1;
|
||||
}
|
||||
else {
|
||||
r2 = r1;
|
||||
}
|
||||
}
|
||||
|
||||
ret = &strPtr[r4];
|
||||
if (ret->unk4 != chr)
|
||||
ret = &gUnknown_80B86A4;
|
||||
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 HexDigitValue(u8 chr)
|
||||
{
|
||||
if (chr >= '0' && chr <= '9')
|
||||
return chr - '0';
|
||||
else if (chr >= 'a' && chr <= 'f')
|
||||
return (chr - 'a') + 10;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
|
||||
u8 *xxx_get_next_char_from_string(u8 *a1, u32 *a0)
|
||||
{
|
||||
s32 currChr = *a1;
|
||||
if (currChr == 0x7E) {
|
||||
s32 hexDigit;
|
||||
|
||||
a1++;
|
||||
hexDigit = (HexDigitValue(a1[0]) << 4) + HexDigitValue(a1[1]);
|
||||
if (*a1 != '\0') {
|
||||
a1++;
|
||||
if (*a1 != '\0') {
|
||||
a1++;
|
||||
}
|
||||
}
|
||||
*a0 = hexDigit;
|
||||
return a1;
|
||||
}
|
||||
else if ((currChr >= 0x81 && currChr <= 0x84) || currChr == 0x87) {
|
||||
*a0 = a1[1] | (a1[0] << 8);
|
||||
return a1 + 2;
|
||||
}
|
||||
else {
|
||||
*a0 = currChr;
|
||||
return a1 + 1;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user