From 456ea6213f476194725f506e536271774f79816a Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 15 Nov 2020 10:17:19 +1000 Subject: [PATCH] Decompile func0f11e7f0 --- src/game/pak/pak.c | 46 +++++++++++++++----------------------- src/include/game/pak/pak.h | 2 +- src/include/types.h | 2 +- 3 files changed, 20 insertions(+), 30 deletions(-) diff --git a/src/game/pak/pak.c b/src/game/pak/pak.c index 710affeca..cd7b6b477 100644 --- a/src/game/pak/pak.c +++ b/src/game/pak/pak.c @@ -10138,33 +10138,23 @@ bool func0f11e78c(void) return false; } -GLOBAL_ASM( -glabel func0f11e7f0 -/* f11e7f0: 90820000 */ lbu $v0,0x0($a0) -/* f11e7f4: 50400011 */ beqzl $v0,.L0f11e83c -/* f11e7f8: 24020001 */ addiu $v0,$zero,0x1 -/* f11e7fc: 90a30000 */ lbu $v1,0x0($a1) -/* f11e800: 5060000e */ beqzl $v1,.L0f11e83c -/* f11e804: 24020001 */ addiu $v0,$zero,0x1 -.L0f11e808: -/* f11e808: 50430004 */ beql $v0,$v1,.L0f11e81c -/* f11e80c: 90820001 */ lbu $v0,0x1($a0) -/* f11e810: 03e00008 */ jr $ra -/* f11e814: 00001025 */ or $v0,$zero,$zero -/* f11e818: 90820001 */ lbu $v0,0x1($a0) -.L0f11e81c: -/* f11e81c: 24840001 */ addiu $a0,$a0,0x1 -/* f11e820: 24a50001 */ addiu $a1,$a1,0x1 -/* f11e824: 50400005 */ beqzl $v0,.L0f11e83c -/* f11e828: 24020001 */ addiu $v0,$zero,0x1 -/* f11e82c: 90a30000 */ lbu $v1,0x0($a1) -/* f11e830: 1460fff5 */ bnez $v1,.L0f11e808 -/* f11e834: 00000000 */ sll $zero,$zero,0x0 -/* f11e838: 24020001 */ addiu $v0,$zero,0x1 -.L0f11e83c: -/* f11e83c: 03e00008 */ jr $ra -/* f11e840: 00000000 */ sll $zero,$zero,0x0 -); +/** + * Probable @bug: This function is probably intended to be a "strings are equal" + * check, however it's actually checking if either string starts with the other. + */ +bool func0f11e7f0(char *a, char *b) +{ + while (*a != '\0' && *b != '\0') { + if (*a != *b) { + return false; + } + + a++; + b++; + } + + return true; +} s32 func0f11e844(s8 device) { @@ -10214,7 +10204,7 @@ s32 func0f11e844(s8 device) #endif if (var80075cb0 == sp6c.unk10) { - if (func0f11e7f0(var80075cb4, &sp6c) || func0f11e7f0(var80075cc0, &sp6c)) { + if (func0f11e7f0(var80075cb4, sp6c.unk00) || func0f11e7f0(var80075cc0, sp6c.unk00)) { var800a2380[device].unk2b8_03 = 0; var800a2380[device].unk2b8_04 = 1; sp2c = 2; diff --git a/src/include/game/pak/pak.h b/src/include/game/pak/pak.h index 007ee4fae..fd5cae3f4 100644 --- a/src/include/game/pak/pak.h +++ b/src/include/game/pak/pak.h @@ -132,7 +132,7 @@ void func0f11e618(char *src, char *dst, u32 len); s8 pakSearch(s32 arg0); void func0f11e750(s8 arg0); bool func0f11e78c(void); -s32 func0f11e7f0(char *arg0, struct pakthing *arg1); +bool func0f11e7f0(char *a, char *b); s32 func0f11e844(s8 device); bool func0f11ea34(s8 arg0); diff --git a/src/include/types.h b/src/include/types.h index fcfa0c81d..2d2f6e76d 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -6849,7 +6849,7 @@ struct remoteminething { }; struct pakthing { - u32 unk00; + char unk00[4]; // len unknown u32 unk04; u32 unk08; u32 unk0c;