jpn-final: Decompile pakN64FontCodeToAscii

This commit is contained in:
Ryan Dwyer 2022-04-20 23:51:03 +10:00
parent 19045d390c
commit 10964a9f51
1 changed files with 15 additions and 64 deletions

View File

@ -10104,68 +10104,6 @@ u32 pak0f11e610(u32 arg0)
return arg0;
}
#if VERSION >= VERSION_JPN_FINAL
GLOBAL_ASM(
glabel pakN64FontCodeToAscii
/* f11e9e4: 27bdfed0 */ addiu $sp,$sp,-304
/* f11e9e8: afb10018 */ sw $s1,0x18($sp)
/* f11e9ec: afb00014 */ sw $s0,0x14($sp)
/* f11e9f0: 00808025 */ move $s0,$a0
/* f11e9f4: 00c08825 */ move $s1,$a2
/* f11e9f8: afbf001c */ sw $ra,0x1c($sp)
/* f11e9fc: afa50134 */ sw $a1,0x134($sp)
/* f11ea00: 27a20030 */ addiu $v0,$sp,0x30
/* f11ea04: 18c00021 */ blez $a2,.JF0f11ea8c
/* f11ea08: 00003825 */ move $a3,$zero
/* f11ea0c: 3c067f1b */ lui $a2,0x7f1b
/* f11ea10: 24c64760 */ addiu $a2,$a2,0x4760
/* f11ea14: 24080022 */ li $t0,0x22
/* f11ea18: 24050027 */ li $a1,0x27
.JF0f11ea1c:
/* f11ea1c: 92030000 */ lbu $v1,0x0($s0)
/* f11ea20: 26100001 */ addiu $s0,$s0,0x1
/* f11ea24: 24e70001 */ addiu $a3,$a3,0x1
/* f11ea28: 28610042 */ slti $at,$v1,0x42
/* f11ea2c: 10200003 */ beqz $at,.JF0f11ea3c
/* f11ea30: 2404002a */ li $a0,0x2a
/* f11ea34: 00c37021 */ addu $t6,$a2,$v1
/* f11ea38: 91c40000 */ lbu $a0,0x0($t6)
.JF0f11ea3c:
/* f11ea3c: 14880005 */ bne $a0,$t0,.JF0f11ea54
/* f11ea40: 28610042 */ slti $at,$v1,0x42
/* f11ea44: a0450000 */ sb $a1,0x0($v0)
/* f11ea48: 24420001 */ addiu $v0,$v0,0x1
/* f11ea4c: 1000000d */ b .JF0f11ea84
/* f11ea50: a0450000 */ sb $a1,0x0($v0)
.JF0f11ea54:
/* f11ea54: 1420000a */ bnez $at,.JF0f11ea80
/* f11ea58: 28610095 */ slti $at,$v1,0x95
/* f11ea5c: 10200008 */ beqz $at,.JF0f11ea80
/* f11ea60: 000379c3 */ sra $t7,$v1,0x7
/* f11ea64: 3079007f */ andi $t9,$v1,0x7f
/* f11ea68: 35f80080 */ ori $t8,$t7,0x80
/* f11ea6c: 37290080 */ ori $t1,$t9,0x80
/* f11ea70: a0580000 */ sb $t8,0x0($v0)
/* f11ea74: 24420001 */ addiu $v0,$v0,0x1
/* f11ea78: 10000002 */ b .JF0f11ea84
/* f11ea7c: a0490000 */ sb $t1,0x0($v0)
.JF0f11ea80:
/* f11ea80: a0440000 */ sb $a0,0x0($v0)
.JF0f11ea84:
/* f11ea84: 14f1ffe5 */ bne $a3,$s1,.JF0f11ea1c
/* f11ea88: 24420001 */ addiu $v0,$v0,0x1
.JF0f11ea8c:
/* f11ea8c: a0400000 */ sb $zero,0x0($v0)
/* f11ea90: 8fa40134 */ lw $a0,0x134($sp)
/* f11ea94: 0c004c34 */ jal strcpy
/* f11ea98: 27a50030 */ addiu $a1,$sp,0x30
/* f11ea9c: 8fbf001c */ lw $ra,0x1c($sp)
/* f11eaa0: 8fb00014 */ lw $s0,0x14($sp)
/* f11eaa4: 8fb10018 */ lw $s1,0x18($sp)
/* f11eaa8: 03e00008 */ jr $ra
/* f11eaac: 27bd0130 */ addiu $sp,$sp,0x130
);
#else
/**
* The note name and note extension are stored on the pak using N64 font code.
* This is different to ASCII.
@ -10179,7 +10117,7 @@ void pakN64FontCodeToAscii(char *src, char *dst, s32 len)
{
char buffer[256];
s32 i;
char in;
s32 in;
char c;
char *ptr = buffer;
@ -10199,6 +10137,19 @@ void pakN64FontCodeToAscii(char *src, char *dst, s32 len)
// PD has a double quote in its fonts, but I guess it doesn't render
// very well. So it gets replaced with two single quotes.
#if VERSION >= VERSION_JPN_FINAL
if ((u32)c == '"') {
*ptr = '\'';
ptr++;
*ptr = '\'';
} else if (in >= 0x42 && in <= 0x94) {
*ptr = (in >> 7) | 0x80;
ptr++;
*ptr = (in & 0x7f) | 0x80;
} else {
*ptr = c;
}
#else
if ((u32)c == '"') {
*ptr = '\'';
ptr++;
@ -10206,6 +10157,7 @@ void pakN64FontCodeToAscii(char *src, char *dst, s32 len)
} else {
*ptr = c;
}
#endif
ptr++;
}
@ -10214,7 +10166,6 @@ void pakN64FontCodeToAscii(char *src, char *dst, s32 len)
strcpy(dst, buffer);
}
#endif
s8 pakFindBySerial(s32 findserial)
{