You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
Fix build warnings & errors when building non-US versions (#305)
* Fix build warnings & errors when building non-US versions * Revert ADSR_STATE_LOOP change in adsr_update in effects.c + add fallthrough comments + clean up ifdefs * null initialization for loadedPool in heap.c * Better placement of null initialization of arg0 in alloc_bank_or_seq
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
#ifdef VERSION_EU
|
||||
#include "levels/ending/cake_eu.inc.c"
|
||||
|
||||
#ifndef EU_CUSTOM_CAKE_FIX
|
||||
// 0x07023000 - 0x07023FFF
|
||||
ALIGNED8 static const Texture cake_end_texture_eu_35_thank_you[] = {
|
||||
#include "levels/ending/eu_023000.rgba16.inc.c"
|
||||
@@ -38,6 +39,7 @@ ALIGNED8 static const Texture cake_end_texture_eu_39_fin[] = {
|
||||
ALIGNED8 static const Texture cake_end_texture_eu_40_ende[] = {
|
||||
#include "levels/ending/eu_028000.rgba16.inc.c"
|
||||
};
|
||||
#endif // !EU_CUSTOM_CAKE_FIX
|
||||
|
||||
// 0x07029000 - 0x070296D8
|
||||
const Gfx dl_cake_end_screen[] = {
|
||||
|
||||
@@ -72,11 +72,11 @@ const GeoLayout intro_geo_mario_head_regular[] = {
|
||||
GEO_CLOSE_NODE(),
|
||||
#endif
|
||||
GEO_CLOSE_NODE(),
|
||||
#if defined(VERSION_SH)
|
||||
GEO_ZBUFFER(0),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(INTRO_CONTEXT_NORMAL, geo_intro_rumble_pak_graphic),
|
||||
GEO_CLOSE_NODE(),
|
||||
#if defined(ENABLE_RUMBLE)
|
||||
GEO_ZBUFFER(0),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(INTRO_CONTEXT_NORMAL, geo_intro_rumble_pak_graphic),
|
||||
GEO_CLOSE_NODE(),
|
||||
#endif
|
||||
GEO_CLOSE_NODE(),
|
||||
GEO_END(),
|
||||
@@ -105,7 +105,7 @@ const GeoLayout intro_geo_mario_head_dizzy[] = {
|
||||
GEO_CLOSE_NODE(),
|
||||
#endif
|
||||
GEO_CLOSE_NODE(),
|
||||
#if defined(VERSION_SH)
|
||||
#if defined(ENABLE_RUMBLE)
|
||||
GEO_ZBUFFER(0),
|
||||
GEO_OPEN_NODE(),
|
||||
GEO_ASM(INTRO_CONTEXT_GAME_OVER, geo_intro_rumble_pak_graphic),
|
||||
|
||||
@@ -343,16 +343,12 @@ f32 adsr_update(struct AdsrState *adsr) {
|
||||
s32 adsr_update(struct AdsrState *adsr) {
|
||||
#endif
|
||||
u8 action = adsr->action;
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
u8 state = adsr->state;
|
||||
switch (state) {
|
||||
#else
|
||||
switch (adsr->state) {
|
||||
#endif
|
||||
case ADSR_STATE_DISABLED:
|
||||
return 0;
|
||||
|
||||
case ADSR_STATE_INITIAL: {
|
||||
case ADSR_STATE_INITIAL:
|
||||
#if defined(VERSION_JP) || defined(VERSION_US)
|
||||
adsr->current = adsr->initial;
|
||||
adsr->target = adsr->initial;
|
||||
@@ -361,8 +357,7 @@ s32 adsr_update(struct AdsrState *adsr) {
|
||||
adsr->state = ADSR_STATE_HANG;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// fallthrough
|
||||
// fallthrough
|
||||
|
||||
case ADSR_STATE_START_LOOP:
|
||||
adsr->envIndex = 0;
|
||||
@@ -370,11 +365,12 @@ s32 adsr_update(struct AdsrState *adsr) {
|
||||
adsr->currentHiRes = (adsr->current << 0x10);
|
||||
#endif
|
||||
adsr->state = ADSR_STATE_LOOP;
|
||||
|
||||
#ifdef VERSION_SH
|
||||
// fallthrough
|
||||
restart:
|
||||
#endif
|
||||
// fallthrough
|
||||
|
||||
case ADSR_STATE_LOOP:
|
||||
adsr->delay = BSWAP16(adsr->envelope[adsr->envIndex].delay);
|
||||
switch (adsr->delay) {
|
||||
@@ -399,25 +395,23 @@ s32 adsr_update(struct AdsrState *adsr) {
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
if (adsr->delay >= 4) {
|
||||
adsr->delay = adsr->delay * gAudioBufferParameters.updatesPerFrame
|
||||
#ifdef VERSION_SH
|
||||
#ifdef VERSION_SH
|
||||
/ gAudioBufferParameters.presetUnk4
|
||||
#endif
|
||||
#endif
|
||||
/ 4;
|
||||
}
|
||||
#if defined(VERSION_SH)
|
||||
#ifdef VERSION_SH
|
||||
if (adsr->delay == 0) {
|
||||
adsr->delay = 1;
|
||||
}
|
||||
#endif
|
||||
adsr->target = (f32) BSWAP16(adsr->envelope[adsr->envIndex].arg) / 32767.0f;
|
||||
#elif defined(VERSION_EU)
|
||||
adsr->target = (f32) BSWAP16(adsr->envelope[adsr->envIndex].arg) / 32767.0;
|
||||
#endif
|
||||
adsr->target = adsr->target * adsr->target;
|
||||
adsr->velocity = (adsr->target - adsr->current) / adsr->delay;
|
||||
#else
|
||||
#else // !(VERSION_EU || VERSION_SH)
|
||||
adsr->target = BSWAP16(adsr->envelope[adsr->envIndex].arg);
|
||||
adsr->velocity = ((adsr->target - adsr->current) << 0x10) / adsr->delay;
|
||||
#endif
|
||||
#endif // !(VERSION_EU || VERSION_SH)
|
||||
adsr->state = ADSR_STATE_FADE;
|
||||
adsr->envIndex++;
|
||||
break;
|
||||
|
||||
@@ -1262,7 +1262,7 @@ static void update_game_sound(void) {
|
||||
#endif
|
||||
} else {
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
func_802ad728((x04020000 | ((channelIndex & 0xff) << 8),
|
||||
func_802ad728(0x04020000 | ((channelIndex & 0xff) << 8),
|
||||
get_sound_freq_scale(bank, soundIndex) + ((f32) sSoundMovingSpeed[bank] / 400.0f));
|
||||
#else
|
||||
value = get_sound_freq_scale(bank, soundIndex);
|
||||
|
||||
@@ -380,7 +380,7 @@ void *alloc_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg
|
||||
// arg3 = 0, 1 or 2?
|
||||
|
||||
#ifdef VERSION_SH
|
||||
struct SoundMultiPool *arg0;
|
||||
struct SoundMultiPool *arg0 = NULL;
|
||||
#define isSound poolIdx
|
||||
#endif
|
||||
struct TemporaryPool *tp;
|
||||
@@ -758,7 +758,7 @@ void *get_bank_or_seq(s32 poolIdx, s32 arg1, s32 id) {
|
||||
}
|
||||
void *get_bank_or_seq_inner(s32 poolIdx, s32 arg1, s32 bankId) {
|
||||
u32 i;
|
||||
struct SoundMultiPool* loadedPool;
|
||||
struct SoundMultiPool* loadedPool = NULL;
|
||||
struct TemporaryPool* temporary;
|
||||
struct PersistentPool* persistent;
|
||||
|
||||
@@ -931,7 +931,7 @@ void decrease_reverb_gain(void) {
|
||||
|
||||
#if defined(VERSION_EU) || defined(VERSION_SH)
|
||||
s32 audio_shut_down_and_reset_step(void) {
|
||||
s32 i, j;
|
||||
s32 i;
|
||||
|
||||
switch (gAudioResetStatus) {
|
||||
case 5:
|
||||
@@ -1007,7 +1007,7 @@ void init_reverb_eu(void) {
|
||||
gNumSynthesisReverbs = preset->numReverbs;
|
||||
for (j = 0; j < gNumSynthesisReverbs; j++) {
|
||||
reverb = &gSynthesisReverbs[j];
|
||||
reverbSettings = &sReverbSettings[MIN((gAudioResetPresetIdToLoad + j), (sizeof(sReverbSettings) / sizeof(struct ReverbSettingsEU)) - 1)];
|
||||
reverbSettings = &sReverbSettings[MIN((u32)(gAudioResetPresetIdToLoad + j), (sizeof(sReverbSettings) / sizeof(struct ReverbSettingsEU)) - 1)];
|
||||
reverb->windowSize = (reverbSettings->windowSize * 0x40);
|
||||
reverb->downsampleRate = reverbSettings->downsampleRate;
|
||||
reverb->reverbGain = reverbSettings->gain;
|
||||
|
||||
@@ -315,7 +315,7 @@ struct AudioBank *load_banks_immediate(s32 seqId, s32 *outDefaultBank) {
|
||||
u8 bank;
|
||||
s32 offset;
|
||||
s32 i;
|
||||
void *ret;
|
||||
void *ret = NULL;
|
||||
|
||||
offset = ((u16 *)gAlBankSets)[canonicalize_index(0, seqId)];
|
||||
bank = 0xFF;
|
||||
@@ -471,7 +471,6 @@ void load_sequence_internal(s32 player, s32 seqId, UNUSED s32 loadAsync) {
|
||||
u32 s0;
|
||||
s32 count;
|
||||
u8 bank;
|
||||
s32 i;
|
||||
|
||||
seqPlayer = &gSequencePlayers[player];
|
||||
|
||||
@@ -569,7 +568,7 @@ void *func_sh_802f3688(s32 bankId) {
|
||||
patchInfo.baseAddr2 = NULL;
|
||||
}
|
||||
|
||||
ret = func_sh_802f3764(1, bankId, &sp38)
|
||||
ret = func_sh_802f3764(1, bankId, &sp38);
|
||||
|
||||
if (ret != NULL && sp38 == 1) {
|
||||
func_sh_802f5310(bankId, ret, &patchInfo, 0);
|
||||
@@ -796,8 +795,7 @@ void func_sh_802f3c38(uintptr_t devAddr, void *vAddr, size_t nbytes, s32 medium)
|
||||
}
|
||||
}
|
||||
|
||||
void func_sh_802f3d78(uintptr_t devAddr, void *vAddr, size_t nbytes, s32 arg3) {
|
||||
uintptr_t sp1C = devAddr;
|
||||
void func_sh_802f3d78(UNUSED uintptr_t devAddr, void *vAddr, size_t nbytes, UNUSED s32 arg3) {
|
||||
osInvalDCache(vAddr, nbytes);
|
||||
}
|
||||
|
||||
@@ -1168,8 +1166,7 @@ void func_sh_802f4bd8(struct PendingDmaSample *arg0, s32 len) { // len must be s
|
||||
func_sh_802f3dd0(&arg0->ioMesg, 0, 0, arg0->devAddr, arg0->vAddr, len, &arg0->queue, arg0->medium, shindouDebugPrint102);
|
||||
}
|
||||
|
||||
void func_sh_802f4c5c(uintptr_t devAddr, void *vAddr, size_t nbytes, s32 arg3) {
|
||||
uintptr_t sp1C = devAddr;
|
||||
void func_sh_802f4c5c(UNUSED uintptr_t devAddr, void *vAddr, size_t nbytes, UNUSED s32 arg3) {
|
||||
osInvalDCache(vAddr, nbytes);
|
||||
}
|
||||
|
||||
@@ -1319,8 +1316,7 @@ void func_sh_802f50ec(struct PendingDmaAudioBank *arg0, size_t len) {
|
||||
}
|
||||
|
||||
|
||||
void func_sh_802f517c(uintptr_t devAddr, void *vAddr, size_t nbytes, s32 arg3) {
|
||||
uintptr_t sp1C = devAddr;
|
||||
void func_sh_802f517c(UNUSED uintptr_t devAddr, void *vAddr, size_t nbytes, UNUSED s32 arg3) {
|
||||
osInvalDCache(vAddr, nbytes);
|
||||
}
|
||||
|
||||
@@ -1359,7 +1355,7 @@ void patch_sound(struct AudioBankSound *sound, struct AudioBank *memBase, struct
|
||||
}
|
||||
|
||||
void func_sh_802f5310(s32 bankId, struct AudioBank *mem, struct PatchStruct *patchInfo, s32 arg3) {
|
||||
u8 *addr;
|
||||
u8 *addr = NULL;
|
||||
s32 sp4C;
|
||||
struct AudioBankSample *temp_s0;
|
||||
s32 i;
|
||||
|
||||
@@ -448,19 +448,16 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
|
||||
struct Instrument *instrument;
|
||||
struct Drum *drum;
|
||||
s32 temp_a0_5;
|
||||
u16 sp3A = 0;
|
||||
#ifdef VERSION_EU
|
||||
u16 sp3A;
|
||||
s32 sameSound = TRUE;
|
||||
#else
|
||||
u8 sameSound = TRUE;
|
||||
#endif
|
||||
u8 cmd;
|
||||
UNUSED u8 cmdSemitone;
|
||||
#ifndef VERSION_EU
|
||||
u16 sp3A;
|
||||
#endif
|
||||
f32 tuning;
|
||||
s32 vel;
|
||||
s32 vel = 0;
|
||||
UNUSED s32 usedSemitone;
|
||||
f32 freqScale;
|
||||
#ifndef VERSION_EU
|
||||
@@ -1139,6 +1136,7 @@ s32 seq_channel_layer_process_script_part2(struct SequenceChannelLayer *layer) {
|
||||
cmd = m64_read_u8(state) + 0x80;
|
||||
layer->freqScaleMultiplier = unk_sh_data_1[cmd];
|
||||
// missing break :)
|
||||
FALL_THROUGH;
|
||||
|
||||
default:
|
||||
switch (cmd & 0xf0) {
|
||||
@@ -1286,8 +1284,8 @@ s32 seq_channel_layer_process_script_part4(struct SequenceChannelLayer *layer, s
|
||||
|
||||
s32 seq_channel_layer_process_script_part3(struct SequenceChannelLayer *layer, s32 cmd) {
|
||||
struct M64ScriptState *state = &layer->scriptState;
|
||||
u16 sp3A;
|
||||
s32 vel;
|
||||
u16 sp3A = 0;
|
||||
s32 vel = 0;
|
||||
struct SequenceChannel *seqChannel = layer->seqChannel;
|
||||
struct SequencePlayer *seqPlayer = seqChannel->seqPlayer;
|
||||
|
||||
@@ -1653,7 +1651,7 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
|
||||
} else {
|
||||
eu_stubbed_printf_1("SUB:ERR:BANK %d NOT CACHED.\n", cmd);
|
||||
}
|
||||
// fallthrough
|
||||
FALL_THROUGH;
|
||||
#endif
|
||||
|
||||
case 0xc1: // chan_setinstr ("set program"?)
|
||||
|
||||
@@ -513,7 +513,7 @@ u64 *synthesis_execute(u64 *cmdBuf, s32 *writtenCmds, s16 *aiBuf, s32 bufLen) {
|
||||
u32 *aiBufPtr;
|
||||
u64 *cmd = cmdBuf;
|
||||
s32 chunkLen;
|
||||
s32 nextVolRampTable;
|
||||
s32 nextVolRampTable = 0;
|
||||
|
||||
for (i = gAudioBufferParameters.updatesPerFrame; i > 0; i--) {
|
||||
process_sequences(i - 1);
|
||||
@@ -634,7 +634,7 @@ u64 *synthesis_resample_and_mix_reverb(u64 *cmd, s32 bufLen, s16 reverbIndex, s1
|
||||
aMix(cmd++, 0, 0x7fff, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_LEFT_CH);
|
||||
aMix(cmd++, 0, 0x8000 + gSynthesisReverbs[reverbIndex].reverbGain, DMEM_ADDR_WET_LEFT_CH, DMEM_ADDR_WET_LEFT_CH);
|
||||
} else {
|
||||
startPad = (item->startPos & 0x7) * 2
|
||||
startPad = (item->startPos & 0x7) * 2;
|
||||
paddedLengthA = AUDIO_ALIGN(startPad + item->lengthA, 4);
|
||||
|
||||
cmd = synthesis_load_reverb_ring_buffer(cmd, DMEM_ADDR_RESAMPLED, (item->startPos - startPad / 2), DEFAULT_LEN_1CH, reverbIndex);
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
aSetBuffer(pkt, 0, 0, c + DMEM_ADDR_WET_RIGHT_CH, d); \
|
||||
aSaveBuffer(pkt, VIRTUAL_TO_PHYSICAL2(gSynthesisReverb.ringBuffer.right + (off)));
|
||||
|
||||
#undef ALIGN
|
||||
#define ALIGN(val, amnt) (((val) + (1 << amnt) - 1) & ~((1 << amnt) - 1))
|
||||
|
||||
struct VolumeChange {
|
||||
@@ -62,6 +63,7 @@ struct NoteSubEu *gNoteSubsEu;
|
||||
// just that the reverb structure is chosen from an array with index
|
||||
// Identical in EU.
|
||||
void prepare_reverb_ring_buffer(s32 chunkLen, u32 updateIndex, s32 reverbIndex) {
|
||||
struct ReverbRingBufferItem *item;
|
||||
struct SynthesisReverb *reverb = &gSynthesisReverbs[reverbIndex];
|
||||
s32 srcPos, dstPos;
|
||||
if (reverb->downsampleRate != 1) {
|
||||
@@ -85,7 +87,7 @@ void prepare_reverb_ring_buffer(s32 chunkLen, u32 updateIndex, s32 reverbIndex)
|
||||
}
|
||||
}
|
||||
|
||||
struct ReverbRingBufferItem *item = &reverb->items[reverb->curFrame][updateIndex];
|
||||
item = &reverb->items[reverb->curFrame][updateIndex];
|
||||
s32 nSamples = chunkLen / reverb->downsampleRate;
|
||||
s32 excessiveSamples = (nSamples + reverb->nextRingBufferPos) - reverb->bufSizePerChannel;
|
||||
if (excessiveSamples < 0) {
|
||||
@@ -374,7 +376,7 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
|
||||
s32 flags; // sp148, sp11C, t8
|
||||
u16 resamplingRateFixedPoint; // sp5c, sp11A
|
||||
s32 nSamplesToLoad; //s0, Ec
|
||||
s32 sp130; //sp128, sp104
|
||||
s32 sp130 = 0; //sp128, sp104
|
||||
UNUSED s32 tempBufLen;
|
||||
s32 t0;
|
||||
u8 *sampleAddr; // sp120, spF4
|
||||
@@ -394,7 +396,7 @@ u64 *synthesis_process_note(s32 noteIndex, struct NoteSubEu *noteSubEu, struct N
|
||||
s32 nSamplesInThisIteration; // v1_2
|
||||
u32 a3;
|
||||
u8 *v0_2;
|
||||
s32 unk_s6; // sp90
|
||||
s32 unk_s6 = 0; // sp90
|
||||
s32 s5Aligned;
|
||||
s32 sp88;
|
||||
s32 sp84;
|
||||
|
||||
@@ -87,7 +87,6 @@ enum DialogBoxType {
|
||||
#define DEFAULT_DIALOG_BOX_ANGLE 90.0f
|
||||
#define DEFAULT_DIALOG_BOX_SCALE 19.0f
|
||||
|
||||
#if defined(VERSION_US) || defined(VERSION_EU)
|
||||
u8 gDialogCharWidths[256] = { // TODO: Is there a way to auto generate this?
|
||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6,
|
||||
6, 6, 5, 6, 6, 5, 8, 8, 6, 6, 6, 6, 6, 5, 6, 6,
|
||||
@@ -118,7 +117,6 @@ u8 gDialogCharWidths[256] = { // TODO: Is there a way to auto generate this?
|
||||
#endif
|
||||
0, 0, 5, 7, 7, 6, 6, 8, 0, 8, 10, 6, 4, 10, 0, 0
|
||||
};
|
||||
#endif
|
||||
|
||||
s8 gDialogBoxState = DIALOG_STATE_OPENING;
|
||||
f32 gDialogBoxOpenTimer = DEFAULT_DIALOG_BOX_ANGLE;
|
||||
@@ -1369,6 +1367,7 @@ void print_peach_letter_message(void) {
|
||||
void **dialogTable;
|
||||
gInGameLanguage = eu_get_language();
|
||||
switch (gInGameLanguage) {
|
||||
default:
|
||||
case LANGUAGE_ENGLISH: dialogTable = segmented_to_virtual(dialog_table_eu_en); break;
|
||||
case LANGUAGE_FRENCH: dialogTable = segmented_to_virtual(dialog_table_eu_fr); break;
|
||||
case LANGUAGE_GERMAN: dialogTable = segmented_to_virtual(dialog_table_eu_de); break;
|
||||
@@ -1388,10 +1387,15 @@ void print_peach_letter_message(void) {
|
||||
gDPSetEnvColor(gDisplayListHead++, 20, 20, 20, gCutsceneMsgFade);
|
||||
|
||||
print_generic_string(STR_X, STR_Y, str);
|
||||
#ifdef VERSION_JP
|
||||
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
|
||||
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);
|
||||
#else
|
||||
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 255);
|
||||
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
|
||||
gDPSetEnvColor(gDisplayListHead++, 200, 80, 120, gCutsceneMsgFade);
|
||||
gSPDisplayList(gDisplayListHead++, castle_grounds_seg7_us_dl_0700F2E8);
|
||||
#endif
|
||||
|
||||
// at the start/end of message, reset the fade.
|
||||
if (gCutsceneMsgTimer == 0) {
|
||||
|
||||
@@ -112,11 +112,9 @@ enum DialogSpecialChars {
|
||||
DIALOG_CHAR_I_NO_DIA = 0xEB, // 'i' without diacritic
|
||||
DIALOG_CHAR_DOUBLE_LOW_QUOTE = 0xF0, // German opening quotation mark
|
||||
#endif
|
||||
#if defined(VERSION_US) || defined(VERSION_EU)
|
||||
DIALOG_CHAR_SLASH = 0xD0,
|
||||
DIALOG_CHAR_MULTI_THE = 0xD1, // 'the'
|
||||
DIALOG_CHAR_MULTI_YOU = 0xD2, // 'you'
|
||||
#endif
|
||||
DIALOG_CHAR_PERIOD = 0x6E,
|
||||
DIALOG_CHAR_COMMA = 0x6F,
|
||||
DIALOG_CHAR_COLOR = 0xDF,
|
||||
|
||||
@@ -122,7 +122,7 @@ unsigned char textEraseFileButton[] = { TEXT_ERASE_FILE_BUTTON };
|
||||
unsigned char textSoundModes[][8] = { { TEXT_STEREO }, { TEXT_MONO }, { TEXT_HEADSET } };
|
||||
|
||||
#if MULTILANG
|
||||
unsigned char textLanguageSelect[][17] = { { TEXT_LANGUAGE_SELECT }};
|
||||
unsigned char textLanguageSelect[][17] = { { TEXT_LANGUAGE_SELECT } };
|
||||
#endif
|
||||
|
||||
unsigned char textSoundSelect[] = { TEXT_SOUND_SELECT };
|
||||
@@ -1788,7 +1788,7 @@ void print_sound_mode_menu_strings(void) {
|
||||
|
||||
print_hud_lut_string(HUD_LUT_DIFF, SOUND_HUD_X, 32, LANGUAGE_ARRAY(textSoundSelect));
|
||||
#if MULTILANG
|
||||
print_hud_lut_string(HUD_LUT_DIFF, 47, 101, LANGUAGE_ARRAY(textLanguageSelect));
|
||||
print_hud_lut_string(HUD_LUT_DIFF, 47, 101, LANGUAGE_ARRAY(textLanguageSelect[0]));
|
||||
#endif
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, dl_rgba16_text_end);
|
||||
|
||||
@@ -313,6 +313,7 @@ void print_act_selector_strings(void) {
|
||||
|
||||
#if MULTILANG
|
||||
switch (language) {
|
||||
default:
|
||||
case LANGUAGE_ENGLISH:
|
||||
actNameTbl = segmented_to_virtual(act_name_table_eu_en);
|
||||
levelNameTbl = segmented_to_virtual(course_name_table_eu_en);
|
||||
|
||||
Reference in New Issue
Block a user