diff --git a/src/game/pak/pak.c b/src/game/pak/pak.c index d0d0c7626..714eb730a 100644 --- a/src/game/pak/pak.c +++ b/src/game/pak/pak.c @@ -14134,88 +14134,56 @@ bool pak0f11ea34(s8 arg0) return true; } +bool pak0f11eaec(s8 device) +{ + u8 sp78[32]; + u8 sp58[32]; + u8 sp38[32]; + s32 i; + bool sp30 = false; + bool result = false; + u8 sp28[2]; + + for (i = 0; i < 32; i++) { + sp78[i] = 0; + sp58[i] = 0; + } + + sp78[0] = 0; + + pak0f11ea34(device); + pak0f11ea34(device); + pak0f11ea34(device); + + if (!pak0f11ce00(device, 0xbfe0, sp38, 32, true)) { + sp30 = true; + } + + for (i = 0; i < 32; i++) { + sp28[0] = sp38[i]; + sp28[1] = 0; + } + #if VERSION >= VERSION_NTSC_1_0 -const char var7f1b4d80[] = "PerfDark\n"; + gbpakStrcmp("PerfDark\n", sp38); #else -const char var7f1b4d80[] = "PerfDark"; + gbpakStrcmp("PerfDark", sp38); #endif -GLOBAL_ASM( -glabel pak0f11eaec -/* f11eaec: 27bdff68 */ addiu $sp,$sp,-152 -/* f11eaf0: afa40098 */ sw $a0,0x98($sp) -/* f11eaf4: afbf001c */ sw $ra,0x1c($sp) -/* f11eaf8: afa00030 */ sw $zero,0x30($sp) -/* f11eafc: afa0002c */ sw $zero,0x2c($sp) -/* f11eb00: 27a40078 */ addiu $a0,$sp,0x78 -/* f11eb04: 27a30078 */ addiu $v1,$sp,0x78 -/* f11eb08: 27a20058 */ addiu $v0,$sp,0x58 -.L0f11eb0c: -/* f11eb0c: 24420001 */ addiu $v0,$v0,0x1 -/* f11eb10: 0044082b */ sltu $at,$v0,$a0 -/* f11eb14: 24630001 */ addiu $v1,$v1,0x1 -/* f11eb18: a060ffff */ sb $zero,-0x1($v1) -/* f11eb1c: 1420fffb */ bnez $at,.L0f11eb0c -/* f11eb20: a040ffff */ sb $zero,-0x1($v0) -/* f11eb24: a3a00078 */ sb $zero,0x78($sp) -/* f11eb28: 0fc47a8d */ jal pak0f11ea34 -/* f11eb2c: 83a4009b */ lb $a0,0x9b($sp) -/* f11eb30: 0fc47a8d */ jal pak0f11ea34 -/* f11eb34: 83a4009b */ lb $a0,0x9b($sp) -/* f11eb38: 0fc47a8d */ jal pak0f11ea34 -/* f11eb3c: 83a4009b */ lb $a0,0x9b($sp) -/* f11eb40: 240e0001 */ addiu $t6,$zero,0x1 -/* f11eb44: afae0010 */ sw $t6,0x10($sp) -/* f11eb48: 83a4009b */ lb $a0,0x9b($sp) -/* f11eb4c: 3405bfe0 */ dli $a1,0xbfe0 -/* f11eb50: 27a60038 */ addiu $a2,$sp,0x38 -/* f11eb54: 0fc47380 */ jal pak0f11ce00 -/* f11eb58: 24070020 */ addiu $a3,$zero,0x20 -/* f11eb5c: 14400003 */ bnez $v0,.L0f11eb6c -/* f11eb60: 27a30058 */ addiu $v1,$sp,0x58 -/* f11eb64: 240f0001 */ addiu $t7,$zero,0x1 -/* f11eb68: afaf0030 */ sw $t7,0x30($sp) -.L0f11eb6c: -/* f11eb6c: 27a20038 */ addiu $v0,$sp,0x38 -/* f11eb70: a3a00029 */ sb $zero,0x29($sp) -.L0f11eb74: -/* f11eb74: 90580000 */ lbu $t8,0x0($v0) -/* f11eb78: 24420001 */ addiu $v0,$v0,0x1 -/* f11eb7c: 1443fffd */ bne $v0,$v1,.L0f11eb74 -/* f11eb80: a3b80028 */ sb $t8,0x28($sp) -/* f11eb84: 3c047f1b */ lui $a0,%hi(var7f1b4d80) -/* f11eb88: 24844d80 */ addiu $a0,$a0,%lo(var7f1b4d80) -/* f11eb8c: 0fc479fc */ jal gbpakStrcmp -/* f11eb90: 27a50038 */ addiu $a1,$sp,0x38 -/* f11eb94: 24190001 */ addiu $t9,$zero,0x1 -/* f11eb98: afb90010 */ sw $t9,0x10($sp) -/* f11eb9c: 83a4009b */ lb $a0,0x9b($sp) -/* f11eba0: 3405a000 */ dli $a1,0xa000 -/* f11eba4: 27a60038 */ addiu $a2,$sp,0x38 -/* f11eba8: 0fc47380 */ jal pak0f11ce00 -/* f11ebac: 24070020 */ addiu $a3,$zero,0x20 -/* f11ebb0: 14400002 */ bnez $v0,.L0f11ebbc -/* f11ebb4: 24080001 */ addiu $t0,$zero,0x1 -/* f11ebb8: afa80030 */ sw $t0,0x30($sp) -.L0f11ebbc: -/* f11ebbc: 93a90038 */ lbu $t1,0x38($sp) -/* f11ebc0: 240b0001 */ addiu $t3,$zero,0x1 -/* f11ebc4: 312a0001 */ andi $t2,$t1,0x1 -/* f11ebc8: 51400003 */ beqzl $t2,.L0f11ebd8 -/* f11ebcc: 8fac0030 */ lw $t4,0x30($sp) -/* f11ebd0: afab002c */ sw $t3,0x2c($sp) -/* f11ebd4: 8fac0030 */ lw $t4,0x30($sp) -.L0f11ebd8: -/* f11ebd8: 8fbf001c */ lw $ra,0x1c($sp) -/* f11ebdc: 8fa2002c */ lw $v0,0x2c($sp) -/* f11ebe0: 11800003 */ beqz $t4,.L0f11ebf0 -/* f11ebe4: 00000000 */ sll $zero,$zero,0x0 -/* f11ebe8: 10000001 */ beqz $zero,.L0f11ebf0 -/* f11ebec: 00001025 */ or $v0,$zero,$zero -.L0f11ebf0: -/* f11ebf0: 03e00008 */ jr $ra -/* f11ebf4: 27bd0098 */ addiu $sp,$sp,0x98 -); + if (!pak0f11ce00(device, 0xa000, sp38, 32, true)) { + sp30 = true; + } + + if (sp38[0] & 1) { + result = true; + } + + if (sp30) { + return false; + } + + return result; +} /** * This function isn't called. diff --git a/src/include/game/pak/pak.h b/src/include/game/pak/pak.h index 3e23adeec..cd50cd1f5 100644 --- a/src/include/game/pak/pak.h +++ b/src/include/game/pak/pak.h @@ -148,7 +148,7 @@ s32 pak0f11e750(s8 device); bool gbpakIsAnyPerfectDark(void); bool gbpakStrcmp(char *a, char *b); s32 gbpakIdentifyGame(s8 device); -bool pak0f11ea34(s8 arg0); +bool pak0f11ea34(s8 device); extern const char var7f1b423c[]; extern const char var7f1b4244[];