perfect_dark/src/game/langreset.c

66 lines
2.0 KiB
C

#include <ultra64.h>
#include "constants.h"
#include "game/file.h"
#include "game/lang.h"
#include "bss.h"
#include "lib/memp.h"
#include "data.h"
#include "types.h"
extern u8 *g_LangBuffer;
extern s32 g_LangBufferSize;
void langReset(s32 stagenum)
{
s32 i;
s32 size;
for (i = 0; i < ARRAYCOUNT(g_LangBanks); i++) {
g_LangBanks[i] = NULL;
}
#if VERSION >= VERSION_PAL_BETA
// PAL and newer have to support switching languages mid-stage. To do this,
// langReload iterates the bank pointers and reloads them if they're
// non-zero. Here it's using langReload to do the initial load by setting
// the desired banks to dummy (non-zero) values so langReload will load them.
g_LangBanks[LANGBANK_GUN] = (void *)1;
g_LangBanks[LANGBANK_MPMENU] = (void *)1;
g_LangBanks[LANGBANK_PROPOBJ] = (void *)1;
g_LangBanks[LANGBANK_MPWEAPONS] = (void *)1;
g_LangBanks[LANGBANK_OPTIONS] = (void *)1;
g_LangBanks[LANGBANK_MISC] = (void *)1;
if (stagenum == STAGE_CREDITS) {
g_LangBanks[LANGBANK_TITLE] = (void *)1;
}
if (stagenum == STAGE_CITRAINING) {
size = 108000;
} else {
size = 56000;
if (IS8MB()) {
size = 68000;
}
}
g_LangBuffer = mempAlloc(ALIGN16(size), MEMPOOL_STAGE);
g_LangBufferSize = size;
langReload();
#else
// Versions prior to PAL load the language directly
g_LangBanks[LANGBANK_GUN] = fileLoadToNew(langGetFileId(LANGBANK_GUN), FILELOADMETHOD_DEFAULT);
g_LangBanks[LANGBANK_MPMENU] = fileLoadToNew(langGetFileId(LANGBANK_MPMENU), FILELOADMETHOD_DEFAULT);
g_LangBanks[LANGBANK_PROPOBJ] = fileLoadToNew(langGetFileId(LANGBANK_PROPOBJ), FILELOADMETHOD_DEFAULT);
g_LangBanks[LANGBANK_MPWEAPONS] = fileLoadToNew(langGetFileId(LANGBANK_MPWEAPONS), FILELOADMETHOD_DEFAULT);
g_LangBanks[LANGBANK_OPTIONS] = fileLoadToNew(langGetFileId(LANGBANK_OPTIONS), FILELOADMETHOD_DEFAULT);
g_LangBanks[LANGBANK_MISC] = fileLoadToNew(langGetFileId(LANGBANK_MISC), FILELOADMETHOD_DEFAULT);
if (stagenum == STAGE_CREDITS) {
g_LangBanks[LANGBANK_TITLE] = fileLoadToNew(langGetFileId(LANGBANK_TITLE), FILELOADMETHOD_DEFAULT);
}
#endif
}