diff --git a/src/game/game_16cfa0.c b/src/game/game_16cfa0.c index 79f1f1a3a..c9bda2e80 100644 --- a/src/game/game_16cfa0.c +++ b/src/game/game_16cfa0.c @@ -1960,22 +1960,31 @@ glabel func0f16e3fc /* f16e6d0: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f16e6d4 -/* f16e6d4: 3c0e8008 */ lui $t6,0x8008 -/* f16e6d8: 8dce4120 */ lw $t6,0x4120($t6) -/* f16e6dc: 00001825 */ or $v1,$zero,$zero -/* f16e6e0: 11c00002 */ beqz $t6,.L0f16e6ec -/* f16e6e4: 00000000 */ sll $zero,$zero,0x0 -/* f16e6e8: 24030001 */ addiu $v1,$zero,0x1 -.L0f16e6ec: -/* f16e6ec: 03e00008 */ jr $ra -/* f16e6f0: 00601025 */ or $v0,$v1,$zero -); +/** + * NTSC only supports English, while PAL supports 4 languages and JAP has its + * own. Each English file is followed immediately by the other translations. + * + * As it stands in the NTSC version, g_LanguageId is a flag that controls + * whether it uses English or Japanese text. This decomp is NTSC, so that's what + * you see here. + * + * For PAL, I suspect this function was adjusted to return values other than + * 0 and 1. + */ +s32 textGetLanguageId(void) +{ + bool ret = 0; + + if (g_LanguageId != 0) { + ret = 1; + } + + return ret; +} s32 textGetFileId(s32 bank) { - return langtable[bank] + func0f16e6d4(); + return langtable[bank] + textGetLanguageId(); } void textSetBankSimple(s32 bank) diff --git a/src/game/game_1999b0.c b/src/game/game_1999b0.c index a16d7b0ca..38606b1c0 100644 --- a/src/game/game_1999b0.c +++ b/src/game/game_1999b0.c @@ -2375,7 +2375,7 @@ glabel func0f19b914 /* f19b918: afbf0014 */ sw $ra,0x14($sp) /* f19b91c: afa401c8 */ sw $a0,0x1c8($sp) /* f19b920: afa501cc */ sw $a1,0x1cc($sp) -/* f19b924: 0fc5b9b5 */ jal func0f16e6d4 +/* f19b924: 0fc5b9b5 */ jal textGetLanguageId /* f19b928: afa601d0 */ sw $a2,0x1d0($sp) /* f19b92c: 3c0f8009 */ lui $t7,%hi(var800887c4) /* f19b930: 25ef87c4 */ addiu $t7,$t7,%lo(var800887c4) @@ -3621,4 +3621,4 @@ glabel func0f19c910 /* f19c984: 00000000 */ sll $zero,$zero,0x0 /* f19c988: 00000000 */ sll $zero,$zero,0x0 /* f19c98c: 00000000 */ sll $zero,$zero,0x0 -); \ No newline at end of file +); diff --git a/src/include/game/game_16cfa0.h b/src/include/game/game_16cfa0.h index 0b0bd9f9a..c46b46616 100644 --- a/src/include/game/game_16cfa0.h +++ b/src/include/game/game_16cfa0.h @@ -42,7 +42,7 @@ u32 func0f16e0b4(u32 arg0); u32 func0f16e138(void); u32 func0f16e1e0(s32 arg0); u32 func0f16e3fc(void); -u32 func0f16e6d4(void); +s32 textGetLanguageId(void); s32 textGetFileId(s32 bank); void textSetBankSimple(s32 bank); void textSetBank(s32 bank, s32 arg1, s32 arg2); diff --git a/src/include/setup/setup_020df0.h b/src/include/setup/setup_020df0.h index 7bf843eaa..3e0f306a3 100644 --- a/src/include/setup/setup_020df0.h +++ b/src/include/setup/setup_020df0.h @@ -204,7 +204,6 @@ extern u32 var80081058; extern struct smallsky smallskies[]; extern u32 var80082050; extern u32 filetable[]; -extern u16 langtable[]; extern u32 var80084008; extern s32 var80084034; extern u32 var80084038; @@ -219,6 +218,8 @@ extern u32 var800840e0; extern u32 var800840f0; extern u32 var800840f4; extern u32 var800840fc; +extern u32 g_LanguageId; +extern u16 langtable[]; extern u32 var800841b8; extern u32 var80084220; extern struct something *somethings[]; diff --git a/src/setup/setup_020df0.c b/src/setup/setup_020df0.c index e80ac310c..04b1d8d7e 100644 --- a/src/setup/setup_020df0.c +++ b/src/setup/setup_020df0.c @@ -6123,7 +6123,7 @@ u32 var80084110 = 0x7f1b7900; u32 var80084114 = 0x7f1b7908; u32 var80084118 = 0x7f1b7910; u32 var8008411c = 0x00000000; -u32 var80084120 = 0x00000000; +u32 g_LanguageId = 0; // 2a144 u16 langtable[] = {