diff --git a/levels/ending/leveldata.c b/levels/ending/leveldata.c index aa4f1029..7d4cb361 100644 --- a/levels/ending/leveldata.c +++ b/levels/ending/leveldata.c @@ -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[] = { diff --git a/levels/intro/geo.c b/levels/intro/geo.c index 3bd54660..cde8161f 100644 --- a/levels/intro/geo.c +++ b/levels/intro/geo.c @@ -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), diff --git a/src/audio/effects.c b/src/audio/effects.c index aa10c788..7e702d5a 100644 --- a/src/audio/effects.c +++ b/src/audio/effects.c @@ -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; diff --git a/src/audio/external.c b/src/audio/external.c index 99bc5c73..73f1782e 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -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); diff --git a/src/audio/heap.c b/src/audio/heap.c index b6aba644..7bd23fcc 100644 --- a/src/audio/heap.c +++ b/src/audio/heap.c @@ -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; diff --git a/src/audio/load_sh.c b/src/audio/load_sh.c index de433afb..d1233dce 100644 --- a/src/audio/load_sh.c +++ b/src/audio/load_sh.c @@ -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; diff --git a/src/audio/seqplayer.c b/src/audio/seqplayer.c index 766d9b37..910383a3 100644 --- a/src/audio/seqplayer.c +++ b/src/audio/seqplayer.c @@ -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"?) diff --git a/src/audio/synthesis.c b/src/audio/synthesis.c index 551c75d5..71b8bab4 100644 --- a/src/audio/synthesis.c +++ b/src/audio/synthesis.c @@ -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); diff --git a/src/audio/synthesis_sh.c b/src/audio/synthesis_sh.c index 888ab70b..a95d1d19 100644 --- a/src/audio/synthesis_sh.c +++ b/src/audio/synthesis_sh.c @@ -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; diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c index 4103d2c8..45268e4c 100644 --- a/src/game/ingame_menu.c +++ b/src/game/ingame_menu.c @@ -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) { diff --git a/src/game/ingame_menu.h b/src/game/ingame_menu.h index a3c9438d..e5fd6410 100644 --- a/src/game/ingame_menu.h +++ b/src/game/ingame_menu.h @@ -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, diff --git a/src/menu/file_select.c b/src/menu/file_select.c index c79a68ca..e4b45351 100644 --- a/src/menu/file_select.c +++ b/src/menu/file_select.c @@ -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); diff --git a/src/menu/star_select.c b/src/menu/star_select.c index 2fc3d476..3a160c6b 100644 --- a/src/menu/star_select.c +++ b/src/menu/star_select.c @@ -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);