Decompile savebufferReadString

This commit is contained in:
Ryan Dwyer 2021-09-07 22:08:44 +10:00
parent 3ef72e80ce
commit 187c698d42
6 changed files with 46 additions and 71 deletions

View File

@ -1141,62 +1141,37 @@ void func0f0d54c4(struct savebuffer *buffer)
if (tmp / 8 && buffer->bitpos);
}
GLOBAL_ASM(
glabel func0f0d54e4
/* f0d54e4: 27bdffd0 */ addiu $sp,$sp,-48
/* f0d54e8: afb50028 */ sw $s5,0x28($sp)
/* f0d54ec: afb40024 */ sw $s4,0x24($sp)
/* f0d54f0: afb30020 */ sw $s3,0x20($sp)
/* f0d54f4: afb2001c */ sw $s2,0x1c($sp)
/* f0d54f8: afb10018 */ sw $s1,0x18($sp)
/* f0d54fc: afb00014 */ sw $s0,0x14($sp)
/* f0d5500: 00809825 */ or $s3,$a0,$zero
/* f0d5504: 00a0a825 */ or $s5,$a1,$zero
/* f0d5508: afbf002c */ sw $ra,0x2c($sp)
/* f0d550c: afa60038 */ sw $a2,0x38($sp)
/* f0d5510: 00008825 */ or $s1,$zero,$zero
/* f0d5514: 00009025 */ or $s2,$zero,$zero
/* f0d5518: 00008025 */ or $s0,$zero,$zero
/* f0d551c: 2414000a */ addiu $s4,$zero,0xa
/* f0d5520: 02602025 */ or $a0,$s3,$zero
.L0f0d5524:
/* f0d5524: 0fc354fe */ jal savebufferReadBits
/* f0d5528: 24050008 */ addiu $a1,$zero,0x8
/* f0d552c: 56200008 */ bnezl $s1,.L0f0d5550
/* f0d5530: 26100001 */ addiu $s0,$s0,0x1
/* f0d5534: 14400003 */ bnez $v0,.L0f0d5544
/* f0d5538: 02b07021 */ addu $t6,$s5,$s0
/* f0d553c: 10000003 */ b .L0f0d554c
/* f0d5540: 24110001 */ addiu $s1,$zero,0x1
.L0f0d5544:
/* f0d5544: a1c20000 */ sb $v0,0x0($t6)
/* f0d5548: 02009025 */ or $s2,$s0,$zero
.L0f0d554c:
/* f0d554c: 26100001 */ addiu $s0,$s0,0x1
.L0f0d5550:
/* f0d5550: 5614fff4 */ bnel $s0,$s4,.L0f0d5524
/* f0d5554: 02602025 */ or $a0,$s3,$zero
/* f0d5558: 8faf0038 */ lw $t7,0x38($sp)
/* f0d555c: 2418000a */ addiu $t8,$zero,0xa
/* f0d5560: 51e00005 */ beqzl $t7,.L0f0d5578
/* f0d5564: 26520001 */ addiu $s2,$s2,0x1
/* f0d5568: 26520001 */ addiu $s2,$s2,0x1
/* f0d556c: 02b2c821 */ addu $t9,$s5,$s2
/* f0d5570: a3380000 */ sb $t8,0x0($t9)
/* f0d5574: 26520001 */ addiu $s2,$s2,0x1
.L0f0d5578:
/* f0d5578: 02b24021 */ addu $t0,$s5,$s2
/* f0d557c: a1000000 */ sb $zero,0x0($t0)
/* f0d5580: 8fbf002c */ lw $ra,0x2c($sp)
/* f0d5584: 8fb50028 */ lw $s5,0x28($sp)
/* f0d5588: 8fb40024 */ lw $s4,0x24($sp)
/* f0d558c: 8fb30020 */ lw $s3,0x20($sp)
/* f0d5590: 8fb2001c */ lw $s2,0x1c($sp)
/* f0d5594: 8fb10018 */ lw $s1,0x18($sp)
/* f0d5598: 8fb00014 */ lw $s0,0x14($sp)
/* f0d559c: 03e00008 */ jr $ra
/* f0d55a0: 27bd0030 */ addiu $sp,$sp,0x30
);
/**
* Read a zero-terminated string from the buffer and move the buffer's internal
* pointer past the end of the string.
*/
void savebufferReadString(struct savebuffer *buffer, char *dst, bool addlinebreak)
{
bool foundnull = false;
s32 index = 0;
s32 i;
for (i = 0; i < 10; i++) {
s32 byte = savebufferReadBits(buffer, 8);
if (!foundnull) {
if (byte == '\0') {
foundnull = true;
} else {
dst[i] = byte;
index = i;
}
}
}
if (addlinebreak) {
index++;
dst[index] = '\n';
}
index++;
dst[index] = '\0';
}
GLOBAL_ASM(
glabel func0f0d55a4
@ -1249,12 +1224,12 @@ glabel func0f0d55a4
/* f0d5648: 27bd0030 */ addiu $sp,$sp,0x30
);
void func0f0d564c(u8 *data1, u8 *data2, s32 arg2)
void func0f0d564c(u8 *data, char *dst, bool addlinebreak)
{
struct savebuffer buffer;
func0f0d5484(&buffer, data1, 10);
func0f0d54e4(&buffer, data2, arg2);
func0f0d5484(&buffer, data, 10);
savebufferReadString(&buffer, dst, addlinebreak);
}
#if VERSION >= VERSION_NTSC_1_0

View File

@ -143,7 +143,7 @@ void filemgrGetFileName(char *buffer, struct savelocation000 *arg1, u32 filetype
switch (filetype) {
case FILETYPE_SOLO:
case FILETYPE_MPSETUP:
func0f0d564c(arg1->unk06, tmpbuffer1, 0);
func0f0d564c(arg1->unk06, tmpbuffer1, false);
break;
case FILETYPE_MPPLAYER:
// MP Player filenames have the play duration appended to the name
@ -1254,7 +1254,7 @@ void func0f1099a8(char *buffer, struct savelocation000 *arg1)
switch (g_FileLists[g_Menus[g_MpPlayerNum].listnum]->filetype) {
case FILETYPE_SOLO:
case FILETYPE_MPSETUP:
func0f0d564c(arg1->unk06, localbuffer, 0);
func0f0d564c(arg1->unk06, localbuffer, false);
break;
case FILETYPE_MPPLAYER:
func0f18d9a4(arg1->unk06, localbuffer, &sp20);

View File

@ -250,7 +250,7 @@ glabel func0f11080c
/* f1108d0: 02402025 */ or $a0,$s2,$zero
.L0f1108d4:
/* f1108d4: 02002825 */ or $a1,$s0,$zero
/* f1108d8: 0fc35539 */ jal func0f0d54e4
/* f1108d8: 0fc35539 */ jal savebufferReadString
/* f1108dc: 24060001 */ addiu $a2,$zero,0x1
/* f1108e0: 2610000c */ addiu $s0,$s0,0xc
/* f1108e4: 0211082b */ sltu $at,$s0,$s1

View File

@ -964,7 +964,7 @@ glabel func0f10fac8
/* f10fb74: 3c05800a */ lui $a1,%hi(g_SoloSaveFile)
/* f10fb78: 24a52200 */ addiu $a1,$a1,%lo(g_SoloSaveFile)
/* f10fb7c: 02802025 */ or $a0,$s4,$zero
/* f10fb80: 0fc35539 */ jal func0f0d54e4
/* f10fb80: 0fc35539 */ jal savebufferReadString
/* f10fb84: 00003025 */ or $a2,$zero,$zero
/* f10fb88: 02802025 */ or $a0,$s4,$zero
/* f10fb8c: 0fc354fe */ jal savebufferReadBits
@ -1237,7 +1237,7 @@ glabel func0f10fac8
/* f10a0a4: 3c05800a */ lui $a1,0x800a
/* f10a0a8: 24a566f0 */ addiu $a1,$a1,0x66f0
/* f10a0ac: 02602025 */ or $a0,$s3,$zero
/* f10a0b0: 0fc34af3 */ jal func0f0d54e4
/* f10a0b0: 0fc34af3 */ jal savebufferReadString
/* f10a0b4: 00003025 */ or $a2,$zero,$zero
/* f10a0b8: 02602025 */ or $a0,$s3,$zero
/* f10a0bc: 0fc34ab8 */ jal savebufferReadBits
@ -2904,7 +2904,7 @@ void savefileGetOverview(char *arg0, char *name, u8 *stage, u8 *difficulty, u32
struct savebuffer buffer;
func0f0d5484(&buffer, arg0, 15);
func0f0d54e4(&buffer, name, 0);
savebufferReadString(&buffer, name, false);
*stage = savebufferReadBits(&buffer, 5);

View File

@ -8654,7 +8654,7 @@ glabel func0f18d2b8
/* f18d2f8: afb2001c */ sw $s2,0x1c($sp)
/* f18d2fc: afb10018 */ sw $s1,0x18($sp)
/* f18d300: 02a02825 */ or $a1,$s5,$zero
/* f18d304: 0fc35539 */ jal func0f0d54e4
/* f18d304: 0fc35539 */ jal savebufferReadString
/* f18d308: 24060001 */ addiu $a2,$zero,0x1
/* f18d30c: 02602025 */ or $a0,$s3,$zero
/* f18d310: 0fc354fe */ jal savebufferReadBits
@ -9123,7 +9123,7 @@ glabel func0f18d9a4
/* f18d9c4: 27a40018 */ addiu $a0,$sp,0x18
/* f18d9c8: 27a40018 */ addiu $a0,$sp,0x18
/* f18d9cc: 8fa500fc */ lw $a1,0xfc($sp)
/* f18d9d0: 0fc35539 */ jal func0f0d54e4
/* f18d9d0: 0fc35539 */ jal savebufferReadString
/* f18d9d4: 00003025 */ or $a2,$zero,$zero
/* f18d9d8: 27a40018 */ addiu $a0,$sp,0x18
/* f18d9dc: 0fc354fe */ jal savebufferReadBits
@ -9774,7 +9774,7 @@ glabel func0f18df5c
/* f18df84: afb1001c */ sw $s1,0x1c($sp)
/* f18df88: afb00018 */ sw $s0,0x18($sp)
/* f18df8c: 02a02825 */ or $a1,$s5,$zero
/* f18df90: 0fc35539 */ jal func0f0d54e4
/* f18df90: 0fc35539 */ jal savebufferReadString
/* f18df94: 00003025 */ or $a2,$zero,$zero
/* f18df98: 02602025 */ or $a0,$s3,$zero
/* f18df9c: 0fc354fe */ jal savebufferReadBits
@ -10068,7 +10068,7 @@ glabel func0f18e39c
/* f18e3c0: 27a40018 */ addiu $a0,$sp,0x18
/* f18e3c4: 27a40018 */ addiu $a0,$sp,0x18
/* f18e3c8: 8fa500fc */ lw $a1,0xfc($sp)
/* f18e3cc: 0fc35539 */ jal func0f0d54e4
/* f18e3cc: 0fc35539 */ jal savebufferReadString
/* f18e3d0: 00003025 */ or $a2,$zero,$zero
/* f18e3d4: 27a40018 */ addiu $a0,$sp,0x18
/* f18e3d8: 0fc354fe */ jal savebufferReadBits

View File

@ -17,9 +17,9 @@ u32 savebufferReadBits(struct savebuffer *buffer, s32 offset);
void savebufferClear(struct savebuffer *buffer);
void func0f0d5484(struct savebuffer *buffer, u8 *data, u8 len);
void func0f0d54c4(struct savebuffer *buffer);
void func0f0d54e4(struct savebuffer *buffer, char *arg1, s32 arg2);
void savebufferReadString(struct savebuffer *buffer, char *dst, bool addlinebreak);
u32 func0f0d55a4(void);
void func0f0d564c(u8 *data1, u8 *data2, s32 arg2);
void func0f0d564c(u8 *data, char *dst, bool addlinebreak);
void func0f0d5690(void *arg0, char *buffer);
u32 func0f0d575c(void);
u32 func0f0d579c(void);