diff --git a/src/game/game_00b320.c b/src/game/game_00b320.c index b8c344450..83c4d46eb 100644 --- a/src/game/game_00b320.c +++ b/src/game/game_00b320.c @@ -13,75 +13,25 @@ #include "lib/lib_121e0.h" #include "types.h" -GLOBAL_ASM( -glabel func0f00b320 -/* f00b320: 27bdffe0 */ addiu $sp,$sp,-32 -/* f00b324: 3c02800b */ lui $v0,%hi(g_LangBanks) -/* f00b328: 3c03800b */ lui $v1,%hi(var800aabb4) -/* f00b32c: afbf001c */ sw $ra,0x1c($sp) -/* f00b330: afb00018 */ sw $s0,0x18($sp) -/* f00b334: afa40020 */ sw $a0,0x20($sp) -/* f00b338: 2463abb4 */ addiu $v1,$v1,%lo(var800aabb4) -/* f00b33c: 2442aaa0 */ addiu $v0,$v0,%lo(g_LangBanks) -.L0f00b340: -/* f00b340: 24420004 */ addiu $v0,$v0,0x4 -/* f00b344: 1443fffe */ bne $v0,$v1,.L0f00b340 -/* f00b348: ac40fffc */ sw $zero,-0x4($v0) -/* f00b34c: 0fc5b9bd */ jal langGetFileId -/* f00b350: 24040026 */ addiu $a0,$zero,0x26 -/* f00b354: 00402025 */ or $a0,$v0,$zero -/* f00b358: 0fc59c3f */ jal func0f1670fc -/* f00b35c: 24050022 */ addiu $a1,$zero,0x22 -/* f00b360: 3c10800b */ lui $s0,%hi(g_LangBanks) -/* f00b364: 2610aaa0 */ addiu $s0,$s0,%lo(g_LangBanks) -/* f00b368: ae020098 */ sw $v0,0x98($s0) -/* f00b36c: 0fc5b9bd */ jal langGetFileId -/* f00b370: 24040028 */ addiu $a0,$zero,0x28 -/* f00b374: 00402025 */ or $a0,$v0,$zero -/* f00b378: 0fc59c3f */ jal func0f1670fc -/* f00b37c: 24050022 */ addiu $a1,$zero,0x22 -/* f00b380: ae0200a0 */ sw $v0,0xa0($s0) -/* f00b384: 0fc5b9bd */ jal langGetFileId -/* f00b388: 24040029 */ addiu $a0,$zero,0x29 -/* f00b38c: 00402025 */ or $a0,$v0,$zero -/* f00b390: 0fc59c3f */ jal func0f1670fc -/* f00b394: 24050022 */ addiu $a1,$zero,0x22 -/* f00b398: ae0200a4 */ sw $v0,0xa4($s0) -/* f00b39c: 0fc5b9bd */ jal langGetFileId -/* f00b3a0: 2404002a */ addiu $a0,$zero,0x2a -/* f00b3a4: 00402025 */ or $a0,$v0,$zero -/* f00b3a8: 0fc59c3f */ jal func0f1670fc -/* f00b3ac: 24050022 */ addiu $a1,$zero,0x22 -/* f00b3b0: ae0200a8 */ sw $v0,0xa8($s0) -/* f00b3b4: 0fc5b9bd */ jal langGetFileId -/* f00b3b8: 2404002b */ addiu $a0,$zero,0x2b -/* f00b3bc: 00402025 */ or $a0,$v0,$zero -/* f00b3c0: 0fc59c3f */ jal func0f1670fc -/* f00b3c4: 24050022 */ addiu $a1,$zero,0x22 -/* f00b3c8: ae0200ac */ sw $v0,0xac($s0) -/* f00b3cc: 0fc5b9bd */ jal langGetFileId -/* f00b3d0: 2404002c */ addiu $a0,$zero,0x2c -/* f00b3d4: 00402025 */ or $a0,$v0,$zero -/* f00b3d8: 0fc59c3f */ jal func0f1670fc -/* f00b3dc: 24050022 */ addiu $a1,$zero,0x22 -/* f00b3e0: 8fae0020 */ lw $t6,0x20($sp) -/* f00b3e4: 2401005c */ addiu $at,$zero,0x5c -/* f00b3e8: ae0200b0 */ sw $v0,0xb0($s0) -/* f00b3ec: 55c10008 */ bnel $t6,$at,.L0f00b410 -/* f00b3f0: 8fbf001c */ lw $ra,0x1c($sp) -/* f00b3f4: 0fc5b9bd */ jal langGetFileId -/* f00b3f8: 24040027 */ addiu $a0,$zero,0x27 -/* f00b3fc: 00402025 */ or $a0,$v0,$zero -/* f00b400: 0fc59c3f */ jal func0f1670fc -/* f00b404: 24050022 */ addiu $a1,$zero,0x22 -/* f00b408: ae02009c */ sw $v0,0x9c($s0) -/* f00b40c: 8fbf001c */ lw $ra,0x1c($sp) -.L0f00b410: -/* f00b410: 8fb00018 */ lw $s0,0x18($sp) -/* f00b414: 27bd0020 */ addiu $sp,$sp,0x20 -/* f00b418: 03e00008 */ jr $ra -/* f00b41c: 00000000 */ sll $zero,$zero,0x0 -); +void stageLoadCommonLang(s32 stagenum) +{ + s32 i; + + for (i = 0; i < ARRAYCOUNT(g_LangBanks); i++) { + g_LangBanks[i] = NULL; + } + + g_LangBanks[LANGBANK_GUN] = func0f1670fc(langGetFileId(LANGBANK_GUN), 0x22); + g_LangBanks[LANGBANK_MPMENU] = func0f1670fc(langGetFileId(LANGBANK_MPMENU), 0x22); + g_LangBanks[LANGBANK_PROPOBJ] = func0f1670fc(langGetFileId(LANGBANK_PROPOBJ), 0x22); + g_LangBanks[LANGBANK_MPWEAPONS] = func0f1670fc(langGetFileId(LANGBANK_MPWEAPONS), 0x22); + g_LangBanks[LANGBANK_OPTIONS] = func0f1670fc(langGetFileId(LANGBANK_OPTIONS), 0x22); + g_LangBanks[LANGBANK_MISC] = func0f1670fc(langGetFileId(LANGBANK_MISC), 0x22); + + if (stagenum == STAGE_CREDITS) { + g_LangBanks[LANGBANK_TITLE] = func0f1670fc(langGetFileId(LANGBANK_TITLE), 0x22); + } +} GLOBAL_ASM( glabel func0f00b420 diff --git a/src/game/lang.c b/src/game/lang.c index 89bfa8ed2..4d46c8500 100644 --- a/src/game/lang.c +++ b/src/game/lang.c @@ -15,77 +15,77 @@ u32 langGetLangBankIndexFromStagenum(s32 stagenum) { - u32 index; + u32 bank; switch (stagenum) { - case STAGE_PELAGIC: index = 0x0b; break; - case STAGE_EXTRACTION: index = 0x03; break; - case STAGE_TEST_RUN: index = 0x1c; break; - case STAGE_24: index = 0x1f; break; - case STAGE_MAIANSOS: index = 0x1e; break; - case STAGE_TEST_DEST: index = 0x0d; break; - case STAGE_2B: index = 0x20; break; - case STAGE_RETAKING: index = 0x1d; break; - case STAGE_WAR: index = 0x23; break; - case STAGE_CHICAGO: index = 0x19; break; - case STAGE_G5BUILDING: index = 0x0c; break; - case STAGE_ESCAPE: index = 0x24; break; - case STAGE_MP_TEMPLE: index = 0x12; break; - case STAGE_MP_PIPES: index = 0x09; break; - case STAGE_MP_G5BUILDING: index = 0x0a; break; - case STAGE_CITRAINING: index = 0x0e; break; - case STAGE_MP_COMPLEX: index = 0x1a; break; - case STAGE_MP_SKEDAR: index = 0x17; break; - case STAGE_TEST_LEN: index = 0x14; break; - case STAGE_DEFECTION: index = 0x01; break; - case STAGE_VILLA: index = 0x10; break; - case STAGE_DEFENSE: index = 0x11; break; - case STAGE_TEST_ASH: index = 0x04; break; - case STAGE_INVESTIGATION: index = 0x0f; break; - case STAGE_ATTACKSHIP: index = 0x13; break; - case STAGE_RESCUE: index = 0x15; break; - case STAGE_INFILTRATION: index = 0x16; break; - case STAGE_28: index = 0x0b; break; - case STAGE_DEEPSEA: index = 0x18; break; - case STAGE_SKEDARRUINS: index = 0x21; break; - case STAGE_AIRFORCEONE: index = 0x1b; break; - case STAGE_TEST_ARCH: index = 0x02; break; - case STAGE_MP_RAVINE: index = 0x08; break; - case STAGE_CRASHSITE: index = 0x05; break; - case STAGE_AIRBASE: index = 0x07; break; - case STAGE_TEST_UFF: index = 0x2d; break; - case STAGE_TEST_OLD: index = 0x2e; break; - case STAGE_DUEL: index = 0x2f; break; - case STAGE_TEST_LAM: index = 0x30; break; - case STAGE_MP_BASE: index = 0x31; break; - case STAGE_TEST_MP2: index = 0x32; break; - case STAGE_MP_AREA52: index = 0x33; break; - case STAGE_MP_WAREHOUSE: index = 0x34; break; - case STAGE_MP_CARPARK: index = 0x35; break; - case STAGE_TEST_MP6: index = 0x36; break; - case STAGE_TEST_MP7: index = 0x37; break; - case STAGE_TEST_MP8: index = 0x38; break; - case STAGE_MP_RUINS: index = 0x39; break; - case STAGE_MP_SEWERS: index = 0x3a; break; - case STAGE_MP_FELICITY: index = 0x3b; break; - case STAGE_MP_FORTRESS: index = 0x3c; break; - case STAGE_MP_VILLA: index = 0x3d; break; - case STAGE_TEST_MP14: index = 0x3e; break; - case STAGE_MP_GRID: index = 0x3f; break; - case STAGE_TEST_MP16: index = 0x40; break; - case STAGE_TEST_MP17: index = 0x41; break; - case STAGE_TEST_MP18: index = 0x42; break; - case STAGE_TEST_MP19: index = 0x43; break; - case STAGE_TEST_MP20: index = 0x44; break; - case STAGE_MBR: index = 0x25; break; - case STAGE_TEST_SILO: index = 0x22; break; + case STAGE_PELAGIC: bank = LANGBANK_DAM; break; + case STAGE_EXTRACTION: bank = LANGBANK_ARK; break; + case STAGE_TEST_RUN: bank = LANGBANK_RUN; break; + case STAGE_24: bank = LANGBANK_SEVX; break; + case STAGE_MAIANSOS: bank = LANGBANK_SEV; break; + case STAGE_TEST_DEST: bank = LANGBANK_DEST; break; + case STAGE_2B: bank = LANGBANK_SEVXB; break; + case STAGE_RETAKING: bank = LANGBANK_SEVB; break; + case STAGE_WAR: bank = LANGBANK_STAT; break; + case STAGE_CHICAGO: bank = LANGBANK_PETE; break; + case STAGE_G5BUILDING: bank = LANGBANK_DEPO; break; + case STAGE_ESCAPE: bank = LANGBANK_TRA; break; + case STAGE_MP_TEMPLE: bank = LANGBANK_JUN; break; + case STAGE_MP_PIPES: bank = LANGBANK_CRAD; break; + case STAGE_MP_G5BUILDING: bank = LANGBANK_CRYP; break; + case STAGE_CITRAINING: bank = LANGBANK_DISH; break; + case STAGE_MP_COMPLEX: bank = LANGBANK_REF; break; + case STAGE_MP_SKEDAR: bank = LANGBANK_OAT; break; + case STAGE_TEST_LEN: bank = LANGBANK_LEN; break; + case STAGE_DEFECTION: bank = LANGBANK_AME; break; + case STAGE_VILLA: bank = LANGBANK_ELD; break; + case STAGE_DEFENSE: bank = LANGBANK_IMP; break; + case STAGE_TEST_ASH: bank = LANGBANK_ASH; break; + case STAGE_INVESTIGATION: bank = LANGBANK_EAR; break; + case STAGE_ATTACKSHIP: bank = LANGBANK_LEE; break; + case STAGE_RESCUE: bank = LANGBANK_LIP; break; + case STAGE_INFILTRATION: bank = LANGBANK_LUE; break; + case STAGE_28: bank = LANGBANK_DAM; break; + case STAGE_DEEPSEA: bank = LANGBANK_PAM; break; + case STAGE_SKEDARRUINS: bank = LANGBANK_SHO; break; + case STAGE_AIRFORCEONE: bank = LANGBANK_RIT; break; + case STAGE_TEST_ARCH: bank = LANGBANK_ARCH; break; + case STAGE_MP_RAVINE: bank = LANGBANK_AREC; break; + case STAGE_CRASHSITE: bank = LANGBANK_AZT; break; + case STAGE_AIRBASE: bank = LANGBANK_CAVE; break; + case STAGE_TEST_UFF: bank = LANGBANK_UFF; break; + case STAGE_TEST_OLD: bank = LANGBANK_OLD; break; + case STAGE_DUEL: bank = LANGBANK_ATE; break; + case STAGE_TEST_LAM: bank = LANGBANK_LAM; break; + case STAGE_MP_BASE: bank = LANGBANK_MP1; break; + case STAGE_TEST_MP2: bank = LANGBANK_MP2; break; + case STAGE_MP_AREA52: bank = LANGBANK_MP3; break; + case STAGE_MP_WAREHOUSE: bank = LANGBANK_MP4; break; + case STAGE_MP_CARPARK: bank = LANGBANK_MP5; break; + case STAGE_TEST_MP6: bank = LANGBANK_MP6; break; + case STAGE_TEST_MP7: bank = LANGBANK_MP7; break; + case STAGE_TEST_MP8: bank = LANGBANK_MP8; break; + case STAGE_MP_RUINS: bank = LANGBANK_MP9; break; + case STAGE_MP_SEWERS: bank = LANGBANK_MP10; break; + case STAGE_MP_FELICITY: bank = LANGBANK_MP11; break; + case STAGE_MP_FORTRESS: bank = LANGBANK_MP12; break; + case STAGE_MP_VILLA: bank = LANGBANK_MP13; break; + case STAGE_TEST_MP14: bank = LANGBANK_MP14; break; + case STAGE_MP_GRID: bank = LANGBANK_MP15; break; + case STAGE_TEST_MP16: bank = LANGBANK_MP16; break; + case STAGE_TEST_MP17: bank = LANGBANK_MP17; break; + case STAGE_TEST_MP18: bank = LANGBANK_MP18; break; + case STAGE_TEST_MP19: bank = LANGBANK_MP19; break; + case STAGE_TEST_MP20: bank = LANGBANK_MP20; break; + case STAGE_MBR: bank = LANGBANK_WAX; break; + case STAGE_TEST_SILO: bank = LANGBANK_SILO; break; default: while (true) { // empty } } - return index; + return bank; } GLOBAL_ASM( @@ -303,10 +303,10 @@ glabel func0f16e3fc */ s32 langGetLanguageId(void) { - s32 ret = 0; + s32 ret = LANGUAGE_ENGLISH; - if (g_LanguageId != 0) { - ret = 1; + if (g_LanguageId != LANGUAGE_ENGLISH) { + ret = LANGUAGE_JAPANESE; } return ret; diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index a6aebce74..ddeb63419 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -24068,75 +24068,7 @@ u32 var800aaa90 = 0; u32 var800aaa94 = 0; u32 var800aaa98 = 0; u32 var800aaa9c = 0; -char *g_LangBanks[] = {0}; // length unsure - there are checks for index < 0x5a but length seems to be smaller -u32 var800aaaa4 = 0; -u32 var800aaaa8 = 0; -u32 var800aaaac = 0; -u32 var800aaab0 = 0; -u32 var800aaab4 = 0; -u32 var800aaab8 = 0; -u32 var800aaabc = 0; -u32 var800aaac0 = 0; -u32 var800aaac4 = 0; -u32 var800aaac8 = 0; -u32 var800aaacc = 0; -u32 var800aaad0 = 0; -u32 var800aaad4 = 0; -u32 var800aaad8 = 0; -u32 var800aaadc = 0; -u32 var800aaae0 = 0; -u32 var800aaae4 = 0; -u32 var800aaae8 = 0; -u32 var800aaaec = 0; -u32 var800aaaf0 = 0; -u32 var800aaaf4 = 0; -u32 var800aaaf8 = 0; -u32 var800aaafc = 0; -u32 var800aab00 = 0; -u32 var800aab04 = 0; -u32 var800aab08 = 0; -u32 var800aab0c = 0; -u32 var800aab10 = 0; -u32 var800aab14 = 0; -u32 var800aab18 = 0; -u32 var800aab1c = 0; -u32 var800aab20 = 0; -u32 var800aab24 = 0; -u32 var800aab28 = 0; -u32 var800aab2c = 0; -u32 var800aab30 = 0; -u32 var800aab34 = 0; -u32 var800aab38 = 0; -u32 var800aab3c = 0; -u32 var800aab40 = 0; -u32 var800aab44 = 0; -u32 var800aab48 = 0; -u32 var800aab4c = 0; -u32 var800aab50 = 0; -u32 var800aab54 = 0; -u32 var800aab58 = 0; -u32 var800aab5c = 0; -u32 var800aab60 = 0; -u32 var800aab64 = 0; -u32 var800aab68 = 0; -u32 var800aab6c = 0; -u32 var800aab70 = 0; -u32 var800aab74 = 0; -u32 var800aab78 = 0; -u32 var800aab7c = 0; -u32 var800aab80 = 0; -u32 var800aab84 = 0; -u32 var800aab88 = 0; -u32 var800aab8c = 0; -u32 var800aab90 = 0; -u32 var800aab94 = 0; -u32 var800aab98 = 0; -u32 var800aab9c = 0; -u32 var800aaba0 = 0; -u32 var800aaba4 = 0; -u32 var800aaba8 = 0; -u32 var800aabac = 0; -u32 var800aabb0 = 0; +char *g_LangBanks[69] = {NULL}; u32 var800aabb4 = 0; u32 var800aabb8 = 0; u32 var800aabbc = 0; diff --git a/src/include/constants.h b/src/include/constants.h index 92453961d..d9760135d 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -621,76 +621,146 @@ #define INVITEMTYPE_PROP 2 #define INVITEMTYPE_DUAL 3 -#define L_AME(index) TEXT(1, index) -#define L_ARCH(index) TEXT(2, index) -#define L_ARK(index) TEXT(3, index) -#define L_ASH(index) TEXT(4, index) -#define L_AZT(index) TEXT(5, index) -#define L_CAT(index) TEXT(6, index) -#define L_CAVE(index) TEXT(7, index) -#define L_AREC(index) TEXT(8, index) -#define L_CRAD(index) TEXT(9, index) -#define L_CRYP(index) TEXT(10, index) -#define L_DAM(index) TEXT(11, index) -#define L_DEPO(index) TEXT(12, index) -#define L_DEST(index) TEXT(13, index) -#define L_DISH(index) TEXT(14, index) -#define L_EAR(index) TEXT(15, index) -#define L_ELD(index) TEXT(16, index) -#define L_IMP(index) TEXT(17, index) -#define L_JUN(index) TEXT(18, index) -#define L_LEE(index) TEXT(19, index) -#define L_LEN(index) TEXT(20, index) -#define L_LIP(index) TEXT(21, index) -#define L_LUE(index) TEXT(22, index) -#define L_OAT(index) TEXT(23, index) -#define L_PAM(index) TEXT(24, index) -#define L_PETE(index) TEXT(25, index) -#define L_REF(index) TEXT(26, index) -#define L_RIT(index) TEXT(27, index) -#define L_RUN(index) TEXT(28, index) -#define L_SEVB(index) TEXT(29, index) -#define L_SEV(index) TEXT(30, index) -#define L_SEVX(index) TEXT(31, index) -#define L_SEVXB(index) TEXT(32, index) -#define L_SHO(index) TEXT(33, index) -#define L_SILO(index) TEXT(34, index) -#define L_STAT(index) TEXT(35, index) -#define L_TRA(index) TEXT(36, index) -#define L_WAX(index) TEXT(37, index) -#define L_GUN(index) TEXT(38, index) -#define L_TITLE(index) TEXT(39, index) -#define L_MPMENU(index) TEXT(40, index) -#define L_PROPOBJ(index) TEXT(41, index) -#define L_MPWEAPONS(index) TEXT(42, index) -#define L_OPTIONS(index) TEXT(43, index) -#define L_MISC(index) TEXT(44, index) -#define L_UFF(index) TEXT(45, index) -#define L_OLD(index) TEXT(46, index) -#define L_ATE(index) TEXT(47, index) -#define L_LAM(index) TEXT(48, index) -#define L_MP1(index) TEXT(49, index) -#define L_MP2(index) TEXT(50, index) -#define L_MP3(index) TEXT(51, index) -#define L_MP4(index) TEXT(52, index) -#define L_MP5(index) TEXT(53, index) -#define L_MP6(index) TEXT(54, index) -#define L_MP7(index) TEXT(55, index) -#define L_MP8(index) TEXT(56, index) -#define L_MP9(index) TEXT(57, index) -#define L_MP10(index) TEXT(58, index) -#define L_MP11(index) TEXT(59, index) -#define L_MP12(index) TEXT(60, index) -#define L_MP13(index) TEXT(61, index) -#define L_MP14(index) TEXT(62, index) -#define L_MP15(index) TEXT(63, index) -#define L_MP16(index) TEXT(64, index) -#define L_MP17(index) TEXT(65, index) -#define L_MP18(index) TEXT(66, index) -#define L_MP19(index) TEXT(67, index) -#define L_MP20(index) TEXT(68, index) +#define LANGBANK_AME 0x01 +#define LANGBANK_ARCH 0x02 +#define LANGBANK_ARK 0x03 +#define LANGBANK_ASH 0x04 +#define LANGBANK_AZT 0x05 +#define LANGBANK_CAT 0x06 +#define LANGBANK_CAVE 0x07 +#define LANGBANK_AREC 0x08 +#define LANGBANK_CRAD 0x09 +#define LANGBANK_CRYP 0x0a +#define LANGBANK_DAM 0x0b +#define LANGBANK_DEPO 0x0c +#define LANGBANK_DEST 0x0d +#define LANGBANK_DISH 0x0e +#define LANGBANK_EAR 0x0f +#define LANGBANK_ELD 0x10 +#define LANGBANK_IMP 0x11 +#define LANGBANK_JUN 0x12 +#define LANGBANK_LEE 0x13 +#define LANGBANK_LEN 0x14 +#define LANGBANK_LIP 0x15 +#define LANGBANK_LUE 0x16 +#define LANGBANK_OAT 0x17 +#define LANGBANK_PAM 0x18 +#define LANGBANK_PETE 0x19 +#define LANGBANK_REF 0x1a +#define LANGBANK_RIT 0x1b +#define LANGBANK_RUN 0x1c +#define LANGBANK_SEVB 0x1d +#define LANGBANK_SEV 0x1e +#define LANGBANK_SEVX 0x1f +#define LANGBANK_SEVXB 0x20 +#define LANGBANK_SHO 0x21 +#define LANGBANK_SILO 0x22 +#define LANGBANK_STAT 0x23 +#define LANGBANK_TRA 0x24 +#define LANGBANK_WAX 0x25 +#define LANGBANK_GUN 0x26 +#define LANGBANK_TITLE 0x27 +#define LANGBANK_MPMENU 0x28 +#define LANGBANK_PROPOBJ 0x29 +#define LANGBANK_MPWEAPONS 0x2a +#define LANGBANK_OPTIONS 0x2b +#define LANGBANK_MISC 0x2c +#define LANGBANK_UFF 0x2d +#define LANGBANK_OLD 0x2e +#define LANGBANK_ATE 0x2f +#define LANGBANK_LAM 0x30 +#define LANGBANK_MP1 0x31 +#define LANGBANK_MP2 0x32 +#define LANGBANK_MP3 0x33 +#define LANGBANK_MP4 0x34 +#define LANGBANK_MP5 0x35 +#define LANGBANK_MP6 0x36 +#define LANGBANK_MP7 0x37 +#define LANGBANK_MP8 0x38 +#define LANGBANK_MP9 0x39 +#define LANGBANK_MP10 0x3a +#define LANGBANK_MP11 0x3b +#define LANGBANK_MP12 0x3c +#define LANGBANK_MP13 0x3d +#define LANGBANK_MP14 0x3e +#define LANGBANK_MP15 0x3f +#define LANGBANK_MP16 0x40 +#define LANGBANK_MP17 0x41 +#define LANGBANK_MP18 0x42 +#define LANGBANK_MP19 0x43 +#define LANGBANK_MP20 0x44 -#define LANGUAGE_ENGLISH 0 +#define L_AME(index) TEXT(LANGBANK_AME, index) +#define L_ARCH(index) TEXT(LANGBANK_ARCH, index) +#define L_ARK(index) TEXT(LANGBANK_ARK, index) +#define L_ASH(index) TEXT(LANGBANK_ASH, index) +#define L_AZT(index) TEXT(LANGBANK_AZT, index) +#define L_CAT(index) TEXT(LANGBANK_CAT, index) +#define L_CAVE(index) TEXT(LANGBANK_CAVE, index) +#define L_AREC(index) TEXT(LANGBANK_AREC, index) +#define L_CRAD(index) TEXT(LANGBANK_CRAD, index) +#define L_CRYP(index) TEXT(LANGBANK_CRYP, index) +#define L_DAM(index) TEXT(LANGBANK_DAM, index) +#define L_DEPO(index) TEXT(LANGBANK_DEPO, index) +#define L_DEST(index) TEXT(LANGBANK_DEST, index) +#define L_DISH(index) TEXT(LANGBANK_DISH, index) +#define L_EAR(index) TEXT(LANGBANK_EAR, index) +#define L_ELD(index) TEXT(LANGBANK_ELD, index) +#define L_IMP(index) TEXT(LANGBANK_IMP, index) +#define L_JUN(index) TEXT(LANGBANK_JUN, index) +#define L_LEE(index) TEXT(LANGBANK_LEE, index) +#define L_LEN(index) TEXT(LANGBANK_LEN, index) +#define L_LIP(index) TEXT(LANGBANK_LIP, index) +#define L_LUE(index) TEXT(LANGBANK_LUE, index) +#define L_OAT(index) TEXT(LANGBANK_OAT, index) +#define L_PAM(index) TEXT(LANGBANK_PAM, index) +#define L_PETE(index) TEXT(LANGBANK_PETE, index) +#define L_REF(index) TEXT(LANGBANK_REF, index) +#define L_RIT(index) TEXT(LANGBANK_RIT, index) +#define L_RUN(index) TEXT(LANGBANK_RUN, index) +#define L_SEVB(index) TEXT(LANGBANK_SEVB, index) +#define L_SEV(index) TEXT(LANGBANK_SEV, index) +#define L_SEVX(index) TEXT(LANGBANK_SEVX, index) +#define L_SEVXB(index) TEXT(LANGBANK_SEVXB, index) +#define L_SHO(index) TEXT(LANGBANK_SHO, index) +#define L_SILO(index) TEXT(LANGBANK_SILO, index) +#define L_STAT(index) TEXT(LANGBANK_STAT, index) +#define L_TRA(index) TEXT(LANGBANK_TRA, index) +#define L_WAX(index) TEXT(LANGBANK_WAX, index) +#define L_GUN(index) TEXT(LANGBANK_GUN, index) +#define L_TITLE(index) TEXT(LANGBANK_TITLE, index) +#define L_MPMENU(index) TEXT(LANGBANK_MPMENU, index) +#define L_PROPOBJ(index) TEXT(LANGBANK_PROPOBJ, index) +#define L_MPWEAPONS(index) TEXT(LANGBANK_MPWEAPONS, index) +#define L_OPTIONS(index) TEXT(LANGBANK_OPTIONS, index) +#define L_MISC(index) TEXT(LANGBANK_MISC, index) +#define L_UFF(index) TEXT(LANGBANK_UFF, index) +#define L_OLD(index) TEXT(LANGBANK_OLD, index) +#define L_ATE(index) TEXT(LANGBANK_ATE, index) +#define L_LAM(index) TEXT(LANGBANK_LAM, index) +#define L_MP1(index) TEXT(LANGBANK_MP1, index) +#define L_MP2(index) TEXT(LANGBANK_MP2, index) +#define L_MP3(index) TEXT(LANGBANK_MP3, index) +#define L_MP4(index) TEXT(LANGBANK_MP4, index) +#define L_MP5(index) TEXT(LANGBANK_MP5, index) +#define L_MP6(index) TEXT(LANGBANK_MP6, index) +#define L_MP7(index) TEXT(LANGBANK_MP7, index) +#define L_MP8(index) TEXT(LANGBANK_MP8, index) +#define L_MP9(index) TEXT(LANGBANK_MP9, index) +#define L_MP10(index) TEXT(LANGBANK_MP10, index) +#define L_MP11(index) TEXT(LANGBANK_MP11, index) +#define L_MP12(index) TEXT(LANGBANK_MP12, index) +#define L_MP13(index) TEXT(LANGBANK_MP13, index) +#define L_MP14(index) TEXT(LANGBANK_MP14, index) +#define L_MP15(index) TEXT(LANGBANK_MP15, index) +#define L_MP16(index) TEXT(LANGBANK_MP16, index) +#define L_MP17(index) TEXT(LANGBANK_MP17, index) +#define L_MP18(index) TEXT(LANGBANK_MP18, index) +#define L_MP19(index) TEXT(LANGBANK_MP19, index) +#define L_MP20(index) TEXT(LANGBANK_MP20, index) + +#define LANGUAGE_ENGLISH 0 +#define LANGUAGE_JAPANESE 1 // These actions are assigned to chr->myaction #define MA_NONE 0 diff --git a/src/include/game/game_00b320.h b/src/include/game/game_00b320.h index e9c17066c..82ad05854 100644 --- a/src/include/game/game_00b320.h +++ b/src/include/game/game_00b320.h @@ -3,7 +3,7 @@ #include #include "types.h" -u32 func0f00b320(void); +void stageLoadCommonLang(s32 stagenum); u32 func0f00b420(void); #endif diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index 33375527c..41c8ab526 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -766,7 +766,7 @@ extern u32 var800aaa68; extern u32 var800aaa78; extern u32 var800aaa88; extern u32 var800aaa98; -extern char *g_LangBanks[]; +extern char *g_LangBanks[69]; extern u32 var800aabb4; extern u32 var800aabb8; extern u32 var800aabc0; diff --git a/src/lib/lib_0d520.c b/src/lib/lib_0d520.c index 7ff81e2e1..ec663d9ba 100644 --- a/src/lib/lib_0d520.c +++ b/src/lib/lib_0d520.c @@ -882,7 +882,7 @@ glabel mainTick /* df58: 0c004a85 */ jal func00012a14 /* df5c: 00402025 */ or $a0,$v0,$zero /* df60: 3c048006 */ lui $a0,%hi(g_StageNum) -/* df64: 0fc02cc8 */ jal func0f00b320 +/* df64: 0fc02cc8 */ jal stageLoadCommonLang /* df68: 8c84d9b4 */ lw $a0,%lo(g_StageNum)($a0) /* df6c: 0fc49e54 */ jal playersUnrefAll /* df70: 00000000 */ sll $zero,$zero,0x0