diff --git a/include/common_structs.h b/include/common_structs.h index dac0daf25d..9fab4c96d4 100644 --- a/include/common_structs.h +++ b/include/common_structs.h @@ -14,6 +14,7 @@ typedef ApiStatus(*ApiFunc)(struct Evt*, s32); typedef Bytecode EvtScript[]; typedef void NoArgCallback(void*); +typedef void (*AuCallback)(void); #define MSG_PTR u8* #define IMG_PTR u8* @@ -626,28 +627,28 @@ typedef struct Worker { typedef Worker* WorkerList[MAX_WORKERS]; -typedef struct MusicSettings { +typedef struct MusicControlData { /* 0x00 */ u16 flags; /* 0x02 */ s16 state; /* 0x04 */ s32 fadeOutTime; /* 0x08 */ s32 fadeInTime; /* 0x0C */ s16 fadeStartVolume; /* 0x0E */ s16 fadeEndVolume; - /* 0x10 */ s32 songID; + /* 0x10 */ s32 requestedSongID; /* 0x14 */ s32 variation; - /* 0x18 */ s32 songName; + /* 0x18 */ s32 songName; /// name or handle of currently playing song /* 0x1C */ s32 battleSongID; /* 0x20 */ s32 battleVariation; /* 0x24 */ s32 savedSongID; /* 0x28 */ s32 savedVariation; /* 0x2C */ s32 savedSongName; -} MusicSettings; // size = 0x30 +} MusicControlData; // size = 0x30 typedef struct MusicProximityTrigger { /* 0x00 */ VecXZf pos; /* 0x08 */ f32 innerDist; /* 0x0C */ f32 outerDist; - /* 0x10 */ s32 unk; + /* 0x10 */ s32 mix; /// which branch value to switch to /* 0x14 */ s32 manualActivationFlag; } MusicProximityTrigger; // size = 0x18 @@ -2437,17 +2438,6 @@ typedef struct ImgFXWorkingTexture { /* 0x24 */ u8 alphaMultiplier; } ImgFXWorkingTexture; // size = 0x25 -typedef struct SongUpdateEvent { - /* 0x00 */ s32 songName; - /* 0x04 */ s32 duration; - /* 0x08 */ s32 startVolume; - /* 0x0C */ s32 finalVolume; - /* 0x10 */ s32 variation; - /* 0x14 */ s32 unk14; - /* 0x18 */ s32 unk18; - /* 0x1C */ s32 unk1C; // may be fake -} SongUpdateEvent; // size = 0x1C or 0x20 - // unfortunately, cant use bitfield for this // format: ABCC00DD // A = playerID diff --git a/include/dead.h b/include/dead.h index 5938ba6e8b..1955455d06 100644 --- a/include/dead.h +++ b/include/dead.h @@ -124,7 +124,7 @@ #define dma_copy dead_dma_copy #define create_worker_scene dead_create_worker_scene #define GetEntryID dead_GetEntryID -#define SetMusicTrack dead_SetMusicTrack +#define SetMusic dead_SetMusic #define FadeInMusic dead_FadeInMusic #define RandInt dead_RandInt #define PlayEffect_impl dead_PlayEffect_impl @@ -309,7 +309,7 @@ #define SetTexPanner dead_SetTexPanner #define DismissEffect dead_DismissEffect #define Entity_Chest dead_Entity_Chest -#define snd_ambient_mute dead_snd_ambient_mute +#define snd_ambient_fade_out dead_snd_ambient_fade_out #define GetPlayerAnimation dead_GetPlayerAnimation #define SetPlayerSpeed dead_SetPlayerSpeed #define SetItemPos dead_SetItemPos diff --git a/include/enums.h b/include/enums.h index f07f327d07..bc70e06a52 100644 --- a/include/enums.h +++ b/include/enums.h @@ -533,14 +533,17 @@ enum SoundIDBits { SOUND_ID_SECTION_MASK = 0x00000300, // corresponds to sections 0-3 for indices < 0xC0 and 4-7 for those above SOUND_ID_INDEX_MASK = 0x000000FF, SOUND_ID_UNK_INDEX_MASK = 0x000001FF, // indices for the special large section + + SOUND_ID_UPPER_MASK = 0x03FF0000, + SOUND_ID_TYPE_MASK = 0x70000000, + SOUND_ID_TYPE_FLAG = 0x80000000, }; enum SoundType { - SOUND_TYPE_SPECIAL = 0x80000000, - SOUND_TYPE_LOOPING = 0, // 0x80000000 (with SOUND_TYPE_SPECIAL) - SOUND_TYPE_EXIT_DOOR = 1, // 0x90000000 (with SOUND_TYPE_SPECIAL) - SOUND_TYPE_ROOM_DOOR = 2, // 0xA0000000 (with SOUND_TYPE_SPECIAL) - SOUND_TYPE_ALTERNATING = 3, // 0xB0000000 (with SOUND_TYPE_SPECIAL) + SOUND_TYPE_LOOPING = 0, // 0x80000000 (with SOUND_ID_TYPE_FLAG) + SOUND_TYPE_EXIT_DOOR = 1, // 0x90000000 (with SOUND_ID_TYPE_FLAG) + SOUND_TYPE_ROOM_DOOR = 2, // 0xA0000000 (with SOUND_ID_TYPE_FLAG) + SOUND_TYPE_ALTERNATING = 3, // 0xB0000000 (with SOUND_ID_TYPE_FLAG) }; enum SoundIDs { @@ -1755,9 +1758,11 @@ enum SoundTriggers { typedef enum AuResult { AU_RESULT_OK = 0, AU_ERROR_1 = 1, - AU_AMBIENCE_ERROR_1 = 1, + AU_AMBIENCE_STOP_ERROR_1 = 1, + AU_AMBIENCE_STOP_ERROR_2 = 2, + AU_AMBIENCE_ERROR_PLAYER_BUSY = 1, // player already has an mseq playing AU_ERROR_SONG_NOT_PLAYING = 2, // player not found for songName - AU_AMBIENCE_ERROR_2 = 2, + AU_AMBIENCE_ERROR_MSEQ_NOT_FOUND = 2, // mseq not found AU_ERROR_NULL_SONG_NAME = 3, // songName is NULL AU_AMBIENCE_ERROR_3 = 3, AU_ERROR_INVALID_SONG_DURATION = 4, // duration out of bounds: (250,10000) @@ -1786,16 +1791,37 @@ enum { }; typedef enum MusicTrackVols { - TRACK_VOLS_0 = 0, - TRACK_VOLS_1 = 1, - TRACK_VOLS_2 = 2, - TRACK_VOLS_3 = 3, + TRACK_VOLS_JAN_FULL = 0, + TRACK_VOLS_UNUSED_1 = 1, + TRACK_VOLS_TIK_SHIVER = 2, + TRACK_VOLS_UNUSED_3 = 3, TRACK_VOLS_KPA_OUTSIDE = 4, TRACK_VOLS_KPA_1 = 5, TRACK_VOLS_KPA_2 = 6, TRACK_VOLS_KPA_3 = 7 } MusicTrackVols; +typedef enum BGMVariation { + BGM_VARIATION_0 = 0, + BGM_VARIATION_1 = 1, + BGM_VARIATION_2 = 2, + BGM_VARIATION_3 = 3, +} BGMVariation; + +/// Perceptual volume levels, 0 (mute) to 8 (max). +/// Only attenuates, never amplifies. +typedef enum VolumeLevels { + VOL_LEVEL_MUTE = 0, + VOL_LEVEL_1 = 1, + VOL_LEVEL_2 = 2, + VOL_LEVEL_3 = 3, + VOL_LEVEL_4 = 4, + VOL_LEVEL_5 = 5, + VOL_LEVEL_6 = 6, + VOL_LEVEL_7 = 7, + VOL_LEVEL_FULL = 8, +} VolumeLevels; + enum Cams { CAM_DEFAULT = 0, CAM_BATTLE = 1, @@ -1881,18 +1907,20 @@ enum ActorPartTargetFlags { enum AmbientSounds { AMBIENT_SPOOKY = 0, AMBIENT_WIND = 1, - AMBIENT_BEACH = 2, + AMBIENT_SEA = 2, AMBIENT_JUNGLE = 3, AMBIENT_LAVA_1 = 4, AMBIENT_LAVA_2 = 5, - AMBIENT_SILENCE = 6, + AMBIENT_LAVA_FADE_IN = 6, AMBIENT_LAVA_3 = 7, AMBIENT_LAVA_4 = 8, AMBIENT_LAVA_5 = 9, AMBIENT_LAVA_6 = 10, AMBIENT_LAVA_7 = 11, AMBIENT_BIRDS = 12, - AMBIENT_SEA = 13, + AMBIENT_UNUSED_13 = 13, // copy of AMBIENT_SEA, available for replacement + AMBIENT_UNUSED_14 = 14, // copy of AMBIENT_SEA, available for replacement + AMBIENT_UNUSED_15 = 15, // copy of AMBIENT_SEA, available for replacement AMBIENT_RADIO = 16, // radio songs for nok // the following 4 IDs are reserved for additional radio songs, // and no more are expected to follow after that @@ -4656,15 +4684,6 @@ enum ProjectileHitboxAttackStates { PROJECTILE_HITBOX_STATE_DONE = 100 }; -enum MusicSettingsFlags { - MUSIC_SETTINGS_FLAG_1 = 0x00000001, - MUSIC_SETTINGS_FLAG_ENABLE_PROXIMITY_MIX = 0x00000002, - MUSIC_SETTINGS_FLAG_4 = 0x00000004, - MUSIC_SETTINGS_FLAG_8 = 0x00000008, - MUSIC_SETTINGS_FLAG_10 = 0x00000010, - MUSIC_SETTINGS_FLAG_20 = 0x00000020, -}; - // the lower byte of ColliderFlags enum SurfaceType { SURFACE_TYPE_DEFAULT = 0, @@ -6405,6 +6424,12 @@ enum WindowStyles { WINDOW_STYLE_MAX = 22, }; +enum ThreadIDs { + THREAD_ID_PI = 0, + THREAD_ID_CRASH = 2, + THREAD_ID_AUDIO = 3, // also = NU_MAIN_THREAD_ID +}; + // LANGUAGE_DEFAULT as 0 will be the first index into several arrays containing data based on the current language. // For non-PAL versions, this will be the first and only index. #define LANGUAGE_DEFAULT 0 diff --git a/include/functions.h b/include/functions.h index 1bc2d29952..38fed6e20a 100644 --- a/include/functions.h +++ b/include/functions.h @@ -540,22 +540,6 @@ f32 dist2D(f32 ax, f32 ay, f32 bx, f32 by); f32 dist3D(f32 ax, f32 ay, f32 az, f32 bx, f32 by, f32 bz); void add_vec2D_polar(f32* x, f32* y, f32 r, f32 theta); -//TODO -- remove these and use audio/public.h instead - -enum AuResult bgm_set_track_volumes(s32 playerIndex, s16 trackVolSet); -enum AuResult bgm_clear_track_volumes(s32 playerIndex, s16 trackVolSet); -enum AuResult bgm_set_variation(s32 playerIndex, s16 arg1); -void bgm_quiet_max_volume(void); -void bgm_reset_max_volume(void); -void bgm_reset_volume(void); -s32 bgm_init_music_players(void); -s32 bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume); -void bgm_set_battle_song(s32, s32); -void bgm_push_battle_song(void); -s32 bgm_adjust_proximity(s32 playerIndex, s32 arg1, s16 arg2); -void func_801491E4(Matrix4f mtx, s32, s32, s32, s32, s32 alpha); -s32 func_8014A964(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s16 arg4, s16 arg5); - #include "audio/public.h" void basic_window_update(s32 windowIndex, s32* flags, s32* posX, s32* posY, s32* posZ, f32* scaleX, f32* scaleY, @@ -606,8 +590,6 @@ void update_scripts(void); void update_messages(void); void update_entities(void); void func_80138198(void); -void bgm_update_music_settings(void); -s32 func_8014AD40(void); void update_ambient_sounds(void); void update_windows(void); void player_render_interact_prompts(void); @@ -623,12 +605,8 @@ void render_curtains(void); void fio_init_flash(void); void func_80028838(void); void clear_screen_overlays(void); -void bgm_reset_sequence_players(void); void reset_ambient_sounds(void); void poll_rumble(void); -void bgm_pop_song(void); -void bgm_push_song(s32 songID, s32 variation); -void bgm_pop_battle_song(void); s32 play_ambient_sounds(s32 fadeInTime, s32 fadeOutTime); s32 get_fortress_key_count(void); s32 subtract_fortress_keys(s32 amt); diff --git a/include/script_api/common.h b/include/script_api/common.h index 943ef1a07e..7e150633c9 100644 --- a/include/script_api/common.h +++ b/include/script_api/common.h @@ -1028,7 +1028,13 @@ API_CALLABLE(RegisterMusicEvents); API_CALLABLE(FadeOutMusic); /// @evtapi -API_CALLABLE(SetMusicTrack); +/// Start playing a song. +/// +/// @param playerID MusicPlayer to use, should almost always be 0 (MUSIC_PLAYER_MAIN). +/// @param song Song from SongIDs. +/// @param variation +/// @param volumeLevel Perceptual loudness from VOL_LEVEL_MUTE to VOL_LEVEL_FULL. +API_CALLABLE(SetMusic); /// @evtapi API_CALLABLE(FadeInMusic); @@ -1040,7 +1046,7 @@ API_CALLABLE(EnableMusicProximityMix); API_CALLABLE(AdjustMusicProximityMix); /// @evtapi -API_CALLABLE(SetMusicTrackVolumes); +API_CALLABLE(SetTrackVolumes); /// @evtapi API_CALLABLE(PopSong); diff --git a/include/variables.h b/include/variables.h index a135015a3e..9f73cb07e2 100644 --- a/include/variables.h +++ b/include/variables.h @@ -104,7 +104,7 @@ extern EvtScript EVS_NpcDefeat; extern EvtScript ShakeCam1; extern EvtScript ShakeCamX; -extern MusicSettings gMusicSettings[2]; +extern MusicControlData gMusicControlData[2]; // gfx extern DisplayContext* gDisplayContext; diff --git a/src/8a860_len_3f30.c b/src/8a860_len_3f30.c index b8d517c33a..c20a77cbb8 100644 --- a/src/8a860_len_3f30.c +++ b/src/8a860_len_3f30.c @@ -80,7 +80,7 @@ s16 PopupContentScissorWidths[] = { #endif BSS s32 gPopupState; -BSS s32 D_8010D644; +BSS s32 PopupDelayTime; BSS s32 PopupMenu_SelectedIndex; BSS s32 PopupMenu_PrevSelectedIndex; BSS s32 PopupMenu_Alpha; @@ -97,12 +97,12 @@ BSS HudElemID PopupMenu_CursorHID; BSS HudElemID PopupMenu_UpArrowHID; BSS HudElemID PopupMenu_DownArrowHID; BSS HudElemID PopupMenu_EntryIconHID; -BSS s16 D_8010D67C; -BSS s16 D_8010D67E; -BSS s16 D_8010D680; -BSS s16 D_8010D682; -BSS s16 D_8010D684; -BSS s16 D_8010D686; +BSS s16 PopupWinX; +BSS s16 PopupWinY; +BSS s16 PopupDescX; +BSS s16 PopupDescY; +BSS s16 PopupPromptX; +BSS s16 PopupPromptY; BSS s16 PopupMenu_StarPieceCounterPosX; BSS s16 PopupMenu_StarPieceCounterPosY; BSS s16 D_8010D68C; @@ -110,7 +110,7 @@ BSS s8 PopupNotBattle; BSS s8 PopupMenu_MaxDisplayableEntryCount; BSS s8 D_8010D690; BSS s8 D_8010D691; -BSS s8 D_8010D692; +BSS s8 PopupDelayLength; BSS s8 D_8010D693; BSS s32 gPopupWorker; BSS s8 PopupNotDipping; @@ -138,14 +138,14 @@ enum PopupTypes { POPUP_TYPE_USE_KEY, }; -void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening); -void popup_menu_draw_title_contents(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening); -void func_800F48F4(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening); -void func_800F4944(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening); -void func_800F4C1C(s32* userData, s32 x, s32 y); +void popup_draw_menu_content(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening); +void popup_draw_title_content(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening); +void popup_draw_desc_content(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening); +void popup_draw_prompt_content(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening); +void popup_draw_dip_query_content(s32* userData, s32 x, s32 y); void popup_draw_cost_icon(s32* userData, s32 x, s32 y); void popup_draw_already_have_partner(s32* userData, s32 x, s32 y); -void func_800F4D28(s32* userData, s32 x, s32 y); +void popup_draw_star_pieces_content(s32* userData, s32 x, s32 y); void hide_popup_menu(void) { if (PopupNotBattle) { @@ -207,7 +207,7 @@ void hide_popup_menu(void) { set_window_update(WIN_CURRENCY_COUNTER, (s32) basic_hidden_window_update); } gPopupState = POPUP_STATE_10; - D_8010D644 = D_8010D692; + PopupDelayTime = PopupDelayLength; } void destroy_popup_menu(void) { @@ -365,17 +365,17 @@ s32 popup_menu_update(void) { switch (gPopupState) { case POPUP_STATE_INIT: #if VERSION_JP - D_8010D67C = 32; - D_8010D67E = 72; - D_8010D680 = 32; + PopupWinX = 32; + PopupWinY = 72; + PopupDescX = 32; #else - D_8010D67C = 20; - D_8010D67E = 72; - D_8010D680 = 20; + PopupWinX = 20; + PopupWinY = 72; + PopupDescX = 20; #endif - D_8010D682 = 186; - D_8010D684 = 16; - D_8010D686 = 88; + PopupDescY = 186; + PopupPromptX = 16; + PopupPromptY = 88; PopupMenu_StarPieceCounterPosX = 32; PopupMenu_StarPieceCounterPosY = 164; if (PopupNotBattle) { @@ -389,33 +389,33 @@ s32 popup_menu_update(void) { case POPUP_MENU_READ_LETTER: case POPUP_MENU_TAKE_FROM_CHEST: case POPUP_MENU_USEKEY: - D_8010D67C += 144; + PopupWinX += 144; break; case POPUP_MENU_TRADE_FOR_BADGE: - D_8010D67C += 122; + PopupWinX += 122; break; case POPUP_MENU_UPGRADE_PARTNER: - D_8010D67C += 134; + PopupWinX += 134; break; case POPUP_MENU_SELL_ITEM: - D_8010D67C += 122; + PopupWinX += 122; break; case POPUP_MENU_SWITCH_PARTNER: case POPUP_MENU_READ_DIARY_PAGE: case POPUP_MENU_READ_POSTCARD: case POPUP_MENU_POST_OFFICE: - D_8010D67C += 160; + PopupWinX += 160; break; } #else - D_8010D67C = PopupWorldStartX[gPopupMenu->popupType] + 20; + PopupWinX = PopupWorldStartX[gPopupMenu->popupType] + 20; #endif } if (PopupMenu_MaxDisplayableEntryCount >= 7) { #if VERSION_JP - D_8010D67E -= 10; + PopupWinY -= 10; #else - D_8010D67E = 62; + PopupWinY = 62; #endif } D_8010D68C = 0; @@ -477,14 +477,14 @@ s32 popup_menu_update(void) { } D_8010D65A = -200; - D_8010D644 = D_8010D691; + PopupDelayTime = D_8010D691; if (!PopupNotBattle) { - D_8010D644 = 1; + PopupDelayTime = 1; } D_8010D690 = MSG_PAL_STANDARD; - posX = D_8010D67C; - posY = D_8010D67E; + posX = PopupWinX; + posY = PopupWinY; #if VERSION_PAL gPopupMenu->unk_338 = 0; @@ -593,17 +593,17 @@ s32 popup_menu_update(void) { gPopupMenu->unk_334 = (80 - msgWidth) / 2; } set_window_properties(WIN_POPUP_CONTENT, posX, posY, var_s6, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, - WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); + WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); if (gPopupMenu->unk_338 == 0) { posX = posX2; //! required to match set_window_properties(WIN_POPUP_TITLE_A, posX, -6, width2, 16, WINDOW_PRIORITY_21, - popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, 1); set_window_update(WIN_POPUP_TITLE_B, 2); } else { posX = posX2; //! required to match set_window_properties(WIN_POPUP_TITLE_B, posX, -6, width2, 16, WINDOW_PRIORITY_21, - popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, 2); set_window_update(WIN_POPUP_TITLE_B, 1); } @@ -615,56 +615,56 @@ s32 popup_menu_update(void) { case POPUP_MENU_CLAIM_ITEM: case POPUP_MENU_TAKE_FROM_CHEST: case POPUP_MENU_USEKEY: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 130, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 106, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 130, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 106, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_SHOW); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_HIDE); break; case POPUP_MENU_SWITCH_PARTNER: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 104, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_B, 14, -6, 72, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 104, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_B, 14, -6, 72, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_HIDE); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_SHOW); break; case POPUP_MENU_TRADE_FOR_BADGE: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 152, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 106, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 152, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 106, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_SHOW); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_HIDE); break; case POPUP_MENU_UPGRADE_PARTNER: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 126, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_B, 12, -6, 66, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 126, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_B, 12, -6, 66, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_HIDE); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_SHOW); break; case POPUP_MENU_SELL_ITEM: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 152, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 106, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 152, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 106, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_SHOW); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_HIDE); break; case POPUP_MENU_READ_LETTER: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 120, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_A, 24, -6, 72, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 120, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_A, 24, -6, 72, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_SHOW); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_HIDE); break; case POPUP_MENU_READ_DIARY_PAGE: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 108, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 84, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 108, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 84, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_SHOW); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_HIDE); break; case POPUP_MENU_READ_POSTCARD: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 124, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 100, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 124, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 100, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_SHOW); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_HIDE); break; case POPUP_MENU_POST_OFFICE: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 96, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_B, 10, -6, 72, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 96, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_B, 10, -6, 72, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_HIDE); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_SHOW); break; @@ -676,66 +676,66 @@ s32 popup_menu_update(void) { case POPUP_MENU_CHECK_ITEM: case POPUP_MENU_CLAIM_ITEM: case POPUP_MENU_USEKEY: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 145, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 145, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); if (gPopupMenu->dipMode == 0) { - set_window_properties(WIN_POPUP_TITLE_A, 25, -6, 95, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_TITLE_A, 25, -6, 95, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); } else { - set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 121, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 121, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); } set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_SHOW); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_HIDE); break; case POPUP_MENU_SWITCH_PARTNER: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 139, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_B, 13, -6, 114, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 139, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_B, 13, -6, 114, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_HIDE); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_SHOW); break; case POPUP_MENU_TRADE_FOR_BADGE: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 162, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_A, 17, -6, 96, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 162, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_A, 17, -6, 96, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_SHOW); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_HIDE); break; case POPUP_MENU_UPGRADE_PARTNER: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 146, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_B, 12, -6, 114, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 146, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_B, 12, -6, 114, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_HIDE); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_SHOW); break; case POPUP_MENU_SELL_ITEM: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 167, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_A, 22, -6, 95, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 167, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_A, 22, -6, 95, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_SHOW); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_HIDE); break; case POPUP_MENU_READ_LETTER: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 170, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_A, 32, -6, 104, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 170, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_A, 32, -6, 104, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_SHOW); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_HIDE); break; case POPUP_MENU_TAKE_FROM_CHEST: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 145, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 121, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 145, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 121, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_SHOW); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_HIDE); break; case POPUP_MENU_READ_DIARY_PAGE: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 128, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 104, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 128, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_A, 12, -6, 104, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_SHOW); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_HIDE); break; case POPUP_MENU_READ_POSTCARD: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 149, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_A, 6, -6, 139, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 149, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_A, 6, -6, 139, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_SHOW); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_HIDE); break; case POPUP_MENU_POST_OFFICE: - set_window_properties(WIN_POPUP_CONTENT, posX, posY, 131, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_menu_draw_menu_contents, NULL, -1); - set_window_properties(WIN_POPUP_TITLE_B, 10, -6, 114, 16, WINDOW_PRIORITY_21, popup_menu_draw_title_contents, NULL, WIN_POPUP_CONTENT); + set_window_properties(WIN_POPUP_CONTENT, posX, posY, 131, (PopupMenu_DisplayedEntryCount * LINE_HEIGHT) + 26, WINDOW_PRIORITY_20, popup_draw_menu_content, NULL, -1); + set_window_properties(WIN_POPUP_TITLE_B, 10, -6, 114, 16, WINDOW_PRIORITY_21, popup_draw_title_content, NULL, WIN_POPUP_CONTENT); set_window_update(WIN_POPUP_TITLE_A, WINDOW_UPDATE_HIDE); set_window_update(WIN_POPUP_TITLE_B, WINDOW_UPDATE_SHOW); break; @@ -768,7 +768,7 @@ s32 popup_menu_update(void) { if (gPopupMenu->popupType == POPUP_MENU_TRADE_FOR_BADGE) { posX = PopupMenu_StarPieceCounterPosX; posY = PopupMenu_StarPieceCounterPosY; - set_window_properties(WIN_CURRENCY_COUNTER, posX, posY, 64, 20, WINDOW_PRIORITY_21, func_800F4D28, NULL, -1); + set_window_properties(WIN_CURRENCY_COUNTER, posX, posY, 64, 20, WINDOW_PRIORITY_21, popup_draw_star_pieces_content, NULL, -1); } do { @@ -791,20 +791,20 @@ s32 popup_menu_update(void) { if (gPopupMenu->popupType >= POPUP_MENU_USE_ITEM && (gPopupMenu->popupType < POPUP_MENU_READ_DIARY_PAGE || gPopupMenu->popupType == POPUP_MENU_USEKEY)) { - posX = D_8010D680; - posY = D_8010D682; - set_window_properties(WIN_POPUP_DESC, posX, posY, WINDOW_KEY_WIDTH, 32, WINDOW_PRIORITY_20, func_800F48F4, NULL, -1); + posX = PopupDescX; + posY = PopupDescY; + set_window_properties(WIN_POPUP_DESC, posX, posY, WINDOW_KEY_WIDTH, 32, WINDOW_PRIORITY_20, popup_draw_desc_content, NULL, -1); } - posX = D_8010D684; - posY = D_8010D686; + posX = PopupPromptX; + posY = PopupPromptY; #if VERSION_PAL height2 = 32; if (get_msg_lines(gPopupMenu->unk_33C) == 2) { height2 = 40; } - set_window_properties(WIN_POPUP_PROMPT, posX, posY, gPopupMenu->unk_340 + 144, height2, WINDOW_PRIORITY_20, func_800F4944, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, posX, posY, gPopupMenu->unk_340 + 144, height2, WINDOW_PRIORITY_20, popup_draw_prompt_content, NULL, -1); #else switch (gPopupMenu->popupType) { #if VERSION_JP @@ -821,24 +821,24 @@ s32 popup_menu_update(void) { case POPUP_MENU_POST_OFFICE: switch (gPopupMenu->dipMode) { case 0: - set_window_properties(WIN_POPUP_PROMPT, D_8010D684, D_8010D686, 152, 32, WINDOW_PRIORITY_20, func_800F4944, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, PopupPromptX, PopupPromptY, 152, 32, WINDOW_PRIORITY_20, popup_draw_prompt_content, NULL, -1); break; case 1: - set_window_properties(WIN_POPUP_PROMPT, D_8010D684, D_8010D686, 152, 32, WINDOW_PRIORITY_20, func_800F4944, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, PopupPromptX, PopupPromptY, 152, 32, WINDOW_PRIORITY_20, popup_draw_prompt_content, NULL, -1); break; case 2: - set_window_properties(WIN_POPUP_PROMPT, D_8010D684, D_8010D686, 152, 32, WINDOW_PRIORITY_20, func_800F4944, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, PopupPromptX, PopupPromptY, 152, 32, WINDOW_PRIORITY_20, popup_draw_prompt_content, NULL, -1); break; } break; case POPUP_MENU_TRADE_FOR_BADGE: - set_window_properties(WIN_POPUP_PROMPT, D_8010D684, D_8010D686, 136, 32, WINDOW_PRIORITY_20, func_800F4944, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, PopupPromptX, PopupPromptY, 136, 32, WINDOW_PRIORITY_20, popup_draw_prompt_content, NULL, -1); break; case POPUP_MENU_UPGRADE_PARTNER: - set_window_properties(WIN_POPUP_PROMPT, D_8010D684, D_8010D686, 136, 48, WINDOW_PRIORITY_20, func_800F4944, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, PopupPromptX, PopupPromptY, 136, 48, WINDOW_PRIORITY_20, popup_draw_prompt_content, NULL, -1); break; case POPUP_MENU_SELL_ITEM: - set_window_properties(WIN_POPUP_PROMPT, D_8010D684, D_8010D686, 120, 32, WINDOW_PRIORITY_20, func_800F4944, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, PopupPromptX, PopupPromptY, 120, 32, WINDOW_PRIORITY_20, popup_draw_prompt_content, NULL, -1); break; #else case POPUP_MENU_USE_ITEM: @@ -846,26 +846,26 @@ s32 popup_menu_update(void) { case POPUP_MENU_CLAIM_ITEM: case POPUP_MENU_TAKE_FROM_CHEST: case POPUP_MENU_USEKEY: - set_window_properties(WIN_POPUP_PROMPT, posX, posY, 144, 32, WINDOW_PRIORITY_20, func_800F4944, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, posX, posY, 144, 32, WINDOW_PRIORITY_20, popup_draw_prompt_content, NULL, -1); break; case POPUP_MENU_SWITCH_PARTNER: case POPUP_MENU_THROW_AWAY_ITEM: case POPUP_MENU_POST_OFFICE: - set_window_properties(WIN_POPUP_PROMPT, posX, posY, 144, 40, WINDOW_PRIORITY_20, func_800F4944, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, posX, posY, 144, 40, WINDOW_PRIORITY_20, popup_draw_prompt_content, NULL, -1); break; case POPUP_MENU_TRADE_FOR_BADGE: case POPUP_MENU_READ_DIARY_PAGE: case POPUP_MENU_READ_POSTCARD: - set_window_properties(WIN_POPUP_PROMPT, posX, posY, 128, 40, WINDOW_PRIORITY_20, func_800F4944, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, posX, posY, 128, 40, WINDOW_PRIORITY_20, popup_draw_prompt_content, NULL, -1); break; case POPUP_MENU_UPGRADE_PARTNER: - set_window_properties(WIN_POPUP_PROMPT, posX, posY, 136, 40, WINDOW_PRIORITY_20, func_800F4944, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, posX, posY, 136, 40, WINDOW_PRIORITY_20, popup_draw_prompt_content, NULL, -1); break; case POPUP_MENU_READ_LETTER: - set_window_properties(WIN_POPUP_PROMPT, posX, posY, 112, 40, WINDOW_PRIORITY_20, func_800F4944, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, posX, posY, 112, 40, WINDOW_PRIORITY_20, popup_draw_prompt_content, NULL, -1); break; case POPUP_MENU_SELL_ITEM: - set_window_properties(WIN_POPUP_PROMPT, posX, posY, 120, 32, WINDOW_PRIORITY_20, func_800F4944, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, posX, posY, 120, 32, WINDOW_PRIORITY_20, popup_draw_prompt_content, NULL, -1); break; #endif } @@ -940,176 +940,177 @@ s32 popup_menu_update(void) { gPopupState = POPUP_STATE_CHOOSING; break; case POPUP_STATE_CHOOSING: - if (D_8010D644 != 0) { - D_8010D644--; - } else { - PopupMenu_PrevSelectedIndex = PopupMenu_SelectedIndex; + if (PopupDelayTime != 0) { + PopupDelayTime--; + break; + } - // change selection on up input - if (gGameStatusPtr->heldButtons[0] & (BUTTON_STICK_UP | BUTTON_Z) && - (PopupMenu_SelectedIndex > 0 || (gGameStatusPtr->pressedButtons[0] & (BUTTON_STICK_UP | BUTTON_Z)))) - { - do { - PopupMenu_SelectedIndex--; - } while (0); // required to match - } + PopupMenu_PrevSelectedIndex = PopupMenu_SelectedIndex; - // change selection on down input - if (gGameStatusPtr->heldButtons[0] & (BUTTON_STICK_DOWN | BUTTON_R) && - ((PopupMenu_SelectedIndex < gPopupMenu->numEntries - 1) || (gGameStatusPtr->pressedButtons[0] & (BUTTON_STICK_DOWN | BUTTON_R)))) - { - do { - PopupMenu_SelectedIndex++; - } while (0); // required to match - } + // change selection on up input + if (gGameStatusPtr->heldButtons[0] & (BUTTON_STICK_UP | BUTTON_Z) && + (PopupMenu_SelectedIndex > 0 || (gGameStatusPtr->pressedButtons[0] & (BUTTON_STICK_UP | BUTTON_Z)))) + { + do { + PopupMenu_SelectedIndex--; + } while (0); // required to match + } - // wrap selected index - if (PopupMenu_SelectedIndex < 0) { - PopupMenu_SelectedIndex = gPopupMenu->numEntries - 1; - } - if (PopupMenu_SelectedIndex > gPopupMenu->numEntries - 1) { - PopupMenu_SelectedIndex = 0; - } + // change selection on down input + if (gGameStatusPtr->heldButtons[0] & (BUTTON_STICK_DOWN | BUTTON_R) && + ((PopupMenu_SelectedIndex < gPopupMenu->numEntries - 1) || (gGameStatusPtr->pressedButtons[0] & (BUTTON_STICK_DOWN | BUTTON_R)))) + { + do { + PopupMenu_SelectedIndex++; + } while (0); // required to match + } - if (PopupMenu_PrevSelectedIndex != PopupMenu_SelectedIndex) { - sfx_play_sound(SOUND_MENU_CHANGE_SELECTION); - } + // wrap selected index + if (PopupMenu_SelectedIndex < 0) { + PopupMenu_SelectedIndex = gPopupMenu->numEntries - 1; + } + if (PopupMenu_SelectedIndex > gPopupMenu->numEntries - 1) { + PopupMenu_SelectedIndex = 0; + } - // ensure one option is displayed above the selected index, if applicable - // shift up to 4 entries at a time on list wrap - for (i = 0; i < 4; i++) { - if (PopupMenu_SelectedIndex < PopupMenu_FirstDisplayIndex + 1) { - PopupMenu_FirstDisplayIndex--; + if (PopupMenu_PrevSelectedIndex != PopupMenu_SelectedIndex) { + sfx_play_sound(SOUND_MENU_CHANGE_SELECTION); + } + + // ensure one option is displayed above the selected index, if applicable + // shift up to 4 entries at a time on list wrap + for (i = 0; i < 4; i++) { + if (PopupMenu_SelectedIndex < PopupMenu_FirstDisplayIndex + 1) { + PopupMenu_FirstDisplayIndex--; + if (PopupMenu_FirstDisplayIndex < 0) { + PopupMenu_FirstDisplayIndex = 0; + } + } + } + + // ensure one option is displayed after the selected index, if applicable + // shift up to 4 entries at a time on list wrap + for (i = 0; i < 4; i++) { + if (PopupMenu_SelectedIndex >= PopupMenu_LastDisplayIndex - 1) { + PopupMenu_FirstDisplayIndex++; + if (PopupMenu_FirstDisplayIndex > gPopupMenu->numEntries - PopupMenu_MaxDisplayableEntryCount) { + PopupMenu_FirstDisplayIndex = gPopupMenu->numEntries - PopupMenu_MaxDisplayableEntryCount; if (PopupMenu_FirstDisplayIndex < 0) { PopupMenu_FirstDisplayIndex = 0; } } } + PopupMenu_LastDisplayIndex = PopupMenu_FirstDisplayIndex + PopupMenu_MaxDisplayableEntryCount; + } - // ensure one option is displayed after the selected index, if applicable - // shift up to 4 entries at a time on list wrap - for (i = 0; i < 4; i++) { - if (PopupMenu_SelectedIndex >= PopupMenu_LastDisplayIndex - 1) { - PopupMenu_FirstDisplayIndex++; - if (PopupMenu_FirstDisplayIndex > gPopupMenu->numEntries - PopupMenu_MaxDisplayableEntryCount) { - PopupMenu_FirstDisplayIndex = gPopupMenu->numEntries - PopupMenu_MaxDisplayableEntryCount; - if (PopupMenu_FirstDisplayIndex < 0) { - PopupMenu_FirstDisplayIndex = 0; - } + // make selection on A button input + if (gGameStatusPtr->pressedButtons[0] & BUTTON_A) { + switch (gPopupMenu->popupType) { + case POPUP_MENU_READ_LETTER: + sfx_play_sound(SOUND_MENU_NEXT); + if (!PopupNotBattle) { + gPopupState = POPUP_STATE_CHOSE_WORLD; + } else { + gPopupState = POPUP_STATE_CHOSE_BATTLE; } - } - PopupMenu_LastDisplayIndex = PopupMenu_FirstDisplayIndex + PopupMenu_MaxDisplayableEntryCount; + break; + case POPUP_MENU_POST_OFFICE: + sfx_play_sound(SOUND_MENU_NEXT); + if (!PopupNotBattle) { + gPopupState = POPUP_STATE_CHOSE_WORLD; + } else { + gPopupState = POPUP_STATE_CHOSE_BATTLE; + } + break; + default: + if (gPopupMenu->enabled[PopupMenu_SelectedIndex]) { + sfx_play_sound(SOUND_MENU_NEXT); + if (!PopupNotBattle) { + gPopupState = POPUP_STATE_CHOSE_WORLD; + } else { + gPopupState = POPUP_STATE_CHOSE_BATTLE; + } + break; + } + if (gPopupMenu->popupType == POPUP_MENU_SWITCH_PARTNER) { + sfx_play_sound(SOUND_MENU_ERROR); + gPopupState = POPUP_STATE_ALREADY_HAVE_PARTNER_BEGIN; + break; + } + if (PopupNotBattle && (gPopupMenu->popupType == POPUP_MENU_USE_ITEM || gPopupMenu->popupType == POPUP_MENU_TRADE_FOR_BADGE)) { + sfx_play_sound(SOUND_MENU_ERROR); + } + break; + } + } else { + switch (gPopupMenu->popupType) { + case POPUP_MENU_USE_ITEM: + case POPUP_MENU_THROW_AWAY_ITEM: + case POPUP_MENU_TRADE_FOR_BADGE: + case POPUP_MENU_SELL_ITEM: + case POPUP_MENU_CHECK_ITEM: + case POPUP_MENU_CLAIM_ITEM: + case POPUP_MENU_USEKEY: + if (PopupNotBattle) { + buttons = BUTTON_B | BUTTON_C_LEFT; + } else { + buttons = BUTTON_B; + } + break; + case POPUP_MENU_SWITCH_PARTNER: + case POPUP_MENU_UPGRADE_PARTNER: + if (PopupNotBattle) { + buttons = BUTTON_B | BUTTON_C_RIGHT; + } else { + buttons = BUTTON_B; + } + break; + case POPUP_MENU_READ_LETTER: + case POPUP_MENU_TAKE_FROM_CHEST: + case POPUP_MENU_READ_DIARY_PAGE: + case POPUP_MENU_READ_POSTCARD: + case POPUP_MENU_POST_OFFICE: + buttons = BUTTON_B; + break; + default: + buttons = 0; + break; } - // make selection on A button input - if (gGameStatusPtr->pressedButtons[0] & BUTTON_A) { - switch (gPopupMenu->popupType) { - case POPUP_MENU_READ_LETTER: - sfx_play_sound(SOUND_MENU_NEXT); - if (!PopupNotBattle) { - gPopupState = POPUP_STATE_CHOSE_WORLD; - } else { - gPopupState = POPUP_STATE_CHOSE_BATTLE; - } - break; - case POPUP_MENU_POST_OFFICE: - sfx_play_sound(SOUND_MENU_NEXT); - if (!PopupNotBattle) { - gPopupState = POPUP_STATE_CHOSE_WORLD; - } else { - gPopupState = POPUP_STATE_CHOSE_BATTLE; - } - break; - default: - if (gPopupMenu->enabled[PopupMenu_SelectedIndex]) { - sfx_play_sound(SOUND_MENU_NEXT); - if (!PopupNotBattle) { - gPopupState = POPUP_STATE_CHOSE_WORLD; - } else { - gPopupState = POPUP_STATE_CHOSE_BATTLE; - } - break; - } - if (gPopupMenu->popupType == POPUP_MENU_SWITCH_PARTNER) { - sfx_play_sound(SOUND_MENU_ERROR); - gPopupState = POPUP_STATE_ALREADY_HAVE_PARTNER_BEGIN; - break; - } - if (PopupNotBattle && (gPopupMenu->popupType == POPUP_MENU_USE_ITEM || gPopupMenu->popupType == POPUP_MENU_TRADE_FOR_BADGE)) { - sfx_play_sound(SOUND_MENU_ERROR); - } - break; - } - } else { - switch (gPopupMenu->popupType) { - case POPUP_MENU_USE_ITEM: - case POPUP_MENU_THROW_AWAY_ITEM: - case POPUP_MENU_TRADE_FOR_BADGE: - case POPUP_MENU_SELL_ITEM: - case POPUP_MENU_CHECK_ITEM: - case POPUP_MENU_CLAIM_ITEM: - case POPUP_MENU_USEKEY: - if (PopupNotBattle) { - buttons = BUTTON_B | BUTTON_C_LEFT; - } else { - buttons = BUTTON_B; - } - break; - case POPUP_MENU_SWITCH_PARTNER: - case POPUP_MENU_UPGRADE_PARTNER: - if (PopupNotBattle) { - buttons = BUTTON_B | BUTTON_C_RIGHT; - } else { - buttons = BUTTON_B; - } - break; - case POPUP_MENU_READ_LETTER: - case POPUP_MENU_TAKE_FROM_CHEST: - case POPUP_MENU_READ_DIARY_PAGE: - case POPUP_MENU_READ_POSTCARD: - case POPUP_MENU_POST_OFFICE: - buttons = BUTTON_B; - break; - default: - buttons = 0; - break; - } - - if (gGameStatusPtr->pressedButtons[0] & buttons) { - sfx_play_sound(SOUND_MENU_BACK); - if (PopupNotDipping) { - if (!PopupNotBattle) { - gPopupState = POPUP_STATE_MINUS_3; - } else { - gPopupState = POPUP_STATE_MINUS_7; - } + if (gGameStatusPtr->pressedButtons[0] & buttons) { + sfx_play_sound(SOUND_MENU_BACK); + if (PopupNotDipping) { + if (!PopupNotBattle) { + gPopupState = POPUP_STATE_MINUS_3; } else { - if (PopupDipMode == 0) { - gPopupState = POPUP_STATE_ALREADY_HAVE_PARTNER_BEGIN; - } else { - gPopupState = POPUP_STATE_CANCEL_DIP; - } + gPopupState = POPUP_STATE_MINUS_7; + } + } else { + if (PopupDipMode == 0) { + gPopupState = POPUP_STATE_ALREADY_HAVE_PARTNER_BEGIN; + } else { + gPopupState = POPUP_STATE_CANCEL_DIP; } - break; } + break; + } - switch (gPopupMenu->popupType) { - default: - buttons = 0; - break; - case POPUP_MENU_USE_ITEM: - buttons = BUTTON_C_RIGHT; - break; - case POPUP_MENU_SWITCH_PARTNER: - buttons = BUTTON_C_LEFT; - break; - } - - if (PopupNotBattle && (gGameStatusPtr->pressedButtons[0] & buttons)) { - sfx_play_sound(SOUND_MENU_BACK); - gPopupState = POPUP_STATE_CHOSE_SWAP; + switch (gPopupMenu->popupType) { + default: + buttons = 0; break; - } + case POPUP_MENU_USE_ITEM: + buttons = BUTTON_C_RIGHT; + break; + case POPUP_MENU_SWITCH_PARTNER: + buttons = BUTTON_C_LEFT; + break; + } + + if (PopupNotBattle && (gGameStatusPtr->pressedButtons[0] & buttons)) { + sfx_play_sound(SOUND_MENU_BACK); + gPopupState = POPUP_STATE_CHOSE_SWAP; + break; } } break; @@ -1184,16 +1185,16 @@ s32 popup_menu_update(void) { gPopupMenu->result = POPUP_RESULT_CANCEL; return 255; case POPUP_STATE_10: - D_8010D644--; - if (D_8010D644 == 0) { + PopupDelayTime--; + if (PopupDelayTime == 0) { gPopupState = POPUP_STATE_11; gPopupMenu->result = PopupMenu_SelectedIndex + 1; return PopupMenu_SelectedIndex + 1; } break; case POPUP_STATE_20: - D_8010D644++; - if (D_8010D644 >= D_8010D692) { + PopupDelayTime++; + if (PopupDelayTime >= PopupDelayLength) { gPopupState = POPUP_STATE_CHOOSING; gPopupMenu->result = PopupMenu_SelectedIndex + 1; return PopupMenu_SelectedIndex + 1; @@ -1222,15 +1223,15 @@ s32 popup_menu_update(void) { set_window_properties(WIN_BTL_POPUP, 160 - (width / 2), 80, width, ALREADY_PARTNER_HEIGHT, WINDOW_PRIORITY_20, popup_draw_already_have_partner, NULL, -1); #endif set_window_update(WIN_BTL_POPUP, WINDOW_UPDATE_SHOW); - D_8010D644 = 60; + PopupDelayTime = 60; gPopupState = POPUP_STATE_ALREADY_HAVE_PARTNER_AWAIT; return 0; case POPUP_STATE_ALREADY_HAVE_PARTNER_AWAIT: if (gGameStatusPtr->pressedButtons[0] & (BUTTON_A | BUTTON_B | BUTTON_C_RIGHT)) { - D_8010D644 = 0; + PopupDelayTime = 0; } - if (D_8010D644 != 0) { - D_8010D644--; + if (PopupDelayTime != 0) { + PopupDelayTime--; return 0; } set_window_update(WIN_BTL_POPUP, WINDOW_UPDATE_HIDE); @@ -1305,10 +1306,10 @@ s32 popup_menu_update(void) { height = 40; posY = 72; } - set_window_properties(WIN_POPUP_PROMPT, 160 - (width / 2), posY, width, height, WINDOW_PRIORITY_19, func_800F4C1C, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, 160 - (width / 2), posY, width, height, WINDOW_PRIORITY_19, popup_draw_dip_query_content, NULL, -1); #else width = get_msg_width(msgID, 0) + 23; - set_window_properties(WIN_POPUP_PROMPT, 160 - (width / 2), 76, width, 32, WINDOW_PRIORITY_19, func_800F4C1C, NULL, -1); + set_window_properties(WIN_POPUP_PROMPT, 160 - (width / 2), 76, width, 32, WINDOW_PRIORITY_19, popup_draw_dip_query_content, NULL, -1); #endif set_window_update(WIN_POPUP_PROMPT, WINDOW_UPDATE_SHOW); D_8010D6A0 = msg_get_printer_for_msg(MSG_Choice_001D, &D_8010D6A4); @@ -1385,7 +1386,7 @@ s32 popup_menu_update(void) { return 0; } -void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { +void popup_draw_menu_content(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { s32 x, y; s32 x1, y1; s32 offset; @@ -1827,7 +1828,7 @@ void popup_menu_draw_menu_contents(s32* userData, s32 baseX, s32 baseY, s32 widt } #if VERSION_PAL -void popup_menu_draw_title_contents(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { +void popup_draw_title_content(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { draw_msg(gPopupMenu->unk_330, baseX + gPopupMenu->unk_334, baseY + 2, PopupMenu_Alpha, gPopupMenu->unk_338 == 0 ? MSG_PAL_32 : MSG_PAL_34, DRAW_MSG_STYLE_MENU); switch (gPopupMenu->popupType) { @@ -1879,7 +1880,7 @@ void popup_menu_draw_title_contents(s32* userData, s32 baseX, s32 baseY, s32 wid #define POPUP_POSTOFFICE_X 8 #endif -void popup_menu_draw_title_contents( +void popup_draw_title_content( s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { switch (gPopupMenu->popupType) { @@ -1949,12 +1950,12 @@ void popup_menu_draw_title_contents( } #endif -void func_800F48F4(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { +void popup_draw_desc_content(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { draw_msg(gPopupMenu->descMsg[PopupMenu_SelectedIndex], baseX + 8, baseY, PopupMenu_Alpha, D_8010D690, 0); } #if VERSION_PAL -void func_800F4944(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { +void popup_draw_prompt_content(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { s32 x = baseX; s32 y = baseY + 7; @@ -1968,7 +1969,7 @@ void func_800F4944(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s } } #else -void func_800F4944(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { +void popup_draw_prompt_content(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s32 opacity, s32 darkening) { s32 msgWidth; #if VERSION_JP @@ -2135,7 +2136,7 @@ void func_800F4944(s32* userData, s32 baseX, s32 baseY, s32 width, s32 height, s #define X_800F4C1C 11 #endif -void func_800F4C1C(s32* userData, s32 x, s32 y) { +void popup_draw_dip_query_content(s32* userData, s32 x, s32 y) { s32 xPos = x + X_800F4C1C; s32 yPos = y + 8; s32 msg; @@ -2192,7 +2193,7 @@ void popup_draw_already_have_partner(s32* userData, s32 x, s32 y) { #endif } -void func_800F4D28(s32* userData, s32 x, s32 y) { +void popup_draw_star_pieces_content(s32* userData, s32 x, s32 y) { HudElemID hid = PopupMenu_TitleIconHID; PlayerData* playerData = &gPlayerData; s32 xPos = x + 14; @@ -2271,7 +2272,7 @@ void create_standard_popup_menu(PopupMenu* popup) { PopupMenu_Alpha = 255; D_8010D691 = 4; - D_8010D692 = 6; + PopupDelayLength = 6; gPopupWorker = create_worker_frontUI((void (*) (void)) popup_menu_update, NULL); } @@ -2316,7 +2317,7 @@ void create_shop_popup_menu(PopupMenu* popup) { PopupMenu_Alpha = 255; D_8010D691 = 4; - D_8010D692 = 6; + PopupDelayLength = 6; gPopupWorker = create_worker_frontUI((void (*) (void)) popup_menu_update, NULL); } @@ -2360,7 +2361,7 @@ void create_battle_popup_menu(PopupMenu* popup) { PopupMenu_Alpha = 255; D_8010D691 = 9; - D_8010D692 = 2; + PopupDelayLength = 2; gPopupWorker = create_worker_frontUI((void (*) (void)) popup_menu_update, NULL); } diff --git a/src/audio.h b/src/audio.h index 77a696498d..27a92cf8f8 100644 --- a/src/audio.h +++ b/src/audio.h @@ -5,48 +5,50 @@ #include "PR/n_abi.h" #include "common.h" -// temporary to keep track of unk portions of alUnk structs (not just unk fields) -typedef s8 UNK_TYPE_08; -typedef s16 UNK_TYPE_16; -typedef s32 UNK_TYPE_32; -typedef void* UNK_TYPE_PTR; +typedef s32 s8_24; // 8.24 fixed point +typedef s32 s16_16; // 16.16 fixed point typedef u8* AuFilePos; typedef u8* WaveData; #define NO_INSTRUMENT ((Instrument*) -1) -#define AU_FX_DELAY_COUNT 4 -#define AU_FX_LENGTH 0xA10 +#define AUDIO_SAMPLES 184 -#define AU_5750 5750 +#define AU_FX_MAX_TAPS 4 +#define AU_FX_LENGTH (14 * AUDIO_SAMPLES) // 0xA10 -#define SAMPLES 184 -#define SAMPLE184(delta) (((delta) + (SAMPLES / 2)) / SAMPLES) * SAMPLES -#define FIXED_SAMPLE SAMPLES +#define AU_FILTER_LENGTH (28 * AUDIO_SAMPLES) // 0x1420 + +#define HARDWARE_OUTPUT_RATE 32000 + +// duration of a single audio frame sent to the RSP in microseconds (note: this is *not* the FPS of the game loop) +// determined by: (AUDIO_SAMPLES / HARDWARE_OUTPUT_RATE) = (184 / 32000), expressed in microseconds +#define AU_FRAME_USEC 5750 #define N_AL_DECODER_IN 0 #define N_AL_RESAMPLER_OUT 0 #define N_AL_TEMP_0 0 #define N_AL_DECODER_OUT 0x170 -#define N_AL_TEMP_1 0x170 -#define N_AL_TEMP_2 0x2E0 -#define N_AL_MAIN_L_OUT 0x4E0 -#define N_AL_MAIN_R_OUT 0x650 -#define N_AL_AUX_L_OUT 0x7C0 +#define N_AL_TEMP_1 0x170 // size = 0x170 = 2 * AUDIO_SAMPLES +#define N_AL_TEMP_2 0x2E0 // size = 0x200 > 2 * AUDIO_SAMPLES +#define N_AL_MAIN_L_OUT 0x4E0 // size = 0x170 = 2 * AUDIO_SAMPLES +#define N_AL_MAIN_R_OUT 0x650 // size = 0x170 = 2 * AUDIO_SAMPLES +#define N_AL_AUX_L_OUT 0x7C0 // size = 0x170 = 2 * AUDIO_SAMPLES #define N_AL_AUX_R_OUT 0x930 +#define AU_MAX_BUS_VOLUME 0x8000 + #define ALIGN16_(val) (((val) + 0xF) & 0xFFF0) #define AU_FILE_RELATIVE(base,offset) ((void*)((s32)(offset) + (s32)(base))) -#define AUDIO_SAMPLES 184 #if VERSION_PAL -#define AUDIO_FRAMES_PER_SECOND 50 +#define VIDEO_FRAMES_PER_SECOND 50 #define AUDIO_HEAP_SIZE 0x5B000 #define AUDIO_MAX_SAMPLES (AUDIO_SAMPLES * 2) #define AUDIO_COMMAND_LIST_BUFFER_SIZE 0x5558 #else -#define AUDIO_FRAMES_PER_SECOND 60 +#define VIDEO_FRAMES_PER_SECOND 60 #define AUDIO_HEAP_SIZE 0x56000 #define AUDIO_MAX_SAMPLES AUDIO_SAMPLES #define AUDIO_COMMAND_LIST_BUFFER_SIZE 0x4000 @@ -54,18 +56,76 @@ typedef u8* WaveData; #define ADPCMFBYTES 9 -#define SND_MAX_VOLUME_8 0x7F // 127 -#define SND_MAX_VOLUME_16 0x7FFF +#define DEFAULT_KEYBASE 4800 // 48 semitones --> C3 -#define BGM_SAMPLE_RATE 156250 -#define BGM_DEFAULT_TEMPO 15600 +#define AU_MAX_VOLUME_8 0x7F // 127 +#define AU_MAX_VOLUME_16 0x7FFF +#define AU_MAX_VOLUME_32 0x7FFFFFFF + +#define AU_PAN_MIN 0 +#define AU_PAN_MID 64 +#define AU_PAN_MAX 127 + +// converts an 8-bit volume to a 16-bit volume. only valid for vol != 0. +#define AU_VOL_8_TO_16(vol) (((vol) << 8) | 0xFF) +// converts an 8-bit volume to a 32-bit volume. only valid for vol != 0. +#define AU_VOL_8_TO_32(vol) (((vol) << 0x18) | 0xFFFFFF) + +// maximum number of instrument presets for a BGM file +#define BGM_MAX_INSTRUMNETS 0x80 + +#define BGM_DEFAULT_TICKS_PER_BEAT 48 + +// fixed scale for update counter to avoid precision loss of fractional frames; 1 unit = 0.001 audio frame +// (ie, prevent truncation when updating tick every 1.5 frames) +#define BGM_UPDATE_SCALE (1000) +// 1 unit = 0.01 BPM +#define BGM_TEMPO_SCALE (100) + +// number of audio frames per minute x BGM_UPDATE_SCALE --> units = milli-frames per minute +#define BGM_MFRAMES_PER_MINUTE (BGM_UPDATE_SCALE * (60 * HARDWARE_OUTPUT_RATE) / AUDIO_SAMPLES) + +// default BPM for BGMPlayer +#define BGM_DEFAULT_BPM 156 +// default masterTempo for BGMPlayer, derived from BGM_DEFAULT_BPM +#define BGM_DEFAULT_TEMPO (BGM_DEFAULT_BPM * BGM_TEMPO_SCALE) + +// just over 100x the default tempo, seemingly chosen to make each tick = 256 audio samples +// solves (AUDIO_SAMPLES * BGM_MFRAMES_PER_MINUTE) / (BGM_DEFAULT_TICKS_PER_BEAT * x) = 256 +// --> (184 * 10434782) / (48 * x) = 256 +// --> x = (184 * 10434782) / (48 * 256) +#define BGM_DEFAULT_UPDATE_STEP 156250 + +// converts a 'tempo' value from BGM command to units suitable for the player update counter +#define BGM_TEMPO_TO_UPDATE_UNITS(tempo) (BGM_UPDATE_SCALE * (u32)(tempo) / BGM_TEMPO_SCALE) #define SND_MIN_DURATION 250 #define SND_MAX_DURATION 10000 -#define BGM_MAX_VOLUME 127 +#define AU_SONG_NONE -1 -#define BGM_SEGMENT_LABEL 3 +#define MUS_QUEUE_SIZE 16 +#define SFX_QUEUE_SIZE 16 + +// semitone pitch interval in cents +#define AU_SEMITONE_CENTS 100 + +// octave pitch interval in cents +#define AU_OCTAVE_CENTS (12 * AU_SEMITONE_CENTS) + +#define ENV_VOL_MAX 0x80 // for 7-bit volumes, 128 (1 << 7) represents full volume +#define ENV_VOL_SHIFT 7 // Shift required to divide by 128 (normalize 7-bit volumes after a multiply) + +#define PRG_MAX_COUNT 0x40 + +// Multiplies two 7-bit volume values and normalizes the result. +#define VOL_MULT_2(a, b) ((a)*(b) >> ENV_VOL_SHIFT) + +// Multiplies three 7-bit volume values and normalizes the result. +#define VOL_MULT_3(a, b, c) ((a)*(b)*(c) >> ENV_VOL_SHIFT >> ENV_VOL_SHIFT) + +// Multiplies four 7-bit volume values and normalizes the result. +#define VOL_MULT_4(a, b, c, d) (VOL_MULT_2(VOL_MULT_3(a, b, c), d)) typedef u32 SegData; @@ -78,7 +138,7 @@ typedef enum AuPriority { } AuPriority; enum AuVoiceEnvelopeFlags { - AU_VOICE_ENV_FLAG_STOP = 0x01, + AU_VOICE_ENV_FLAG_RELEASING = 0x01, AU_VOICE_ENV_FLAG_HANDLED_VOL_CHANGE = 0x02, AU_VOICE_ENV_FLAG_KEY_RELEASED = 0x10, AU_VOICE_ENV_FLAG_VOL_CHANGED = 0x20, @@ -92,36 +152,83 @@ enum AuVoiceSyncFlags { }; typedef enum AuEffectType { - AU_FX_NONE = 0, - AU_FX_SMALLROOM = 1, - AU_FX_BIGROOM = 2, - AU_FX_CHORUS = 3, - AU_FX_FLANGE = 4, - AU_FX_ECHO = 5, - AU_FX_CUSTOM_0 = 6, - AU_FX_CUSTOM_1 = 7, - AU_FX_CUSTOM_2 = 8, - AU_FX_CUSTOM_3 = 9, - AU_FX_OTHER_BIGROOM = 10 + AU_FX_NONE = 0, + AU_FX_SMALLROOM = 1, + AU_FX_BIGROOM = 2, + AU_FX_CHORUS = 3, + AU_FX_FLANGE = 4, + AU_FX_ECHO = 5, + AU_FX_CUSTOM_0 = 6, + AU_FX_CUSTOM_1 = 7, + AU_FX_CUSTOM_2 = 8, + AU_FX_CUSTOM_3 = 9, + AU_FX_OTHER_BIGROOM = 10, } AuEffectType; +typedef enum MusicPlayer { + MUSIC_PLAYER_MAIN = 0, + MUSIC_PLAYER_AUX = 1, +} MusicPlayer; + +typedef enum MusicState { + MUSIC_STATE_IDLE = 0, + MUSIC_STATE_STOP_CURRENT = 1, + MUSIC_STATE_AWAIT_FADEOUT = 2, + MUSIC_STATE_DELAY_2 = 3, + MUSIC_STATE_DELAY_1 = 4, + MUSIC_STATE_PLAY_NEXT = 5, +} MusicState; + +typedef enum MusicFlags { + MUSIC_FLAG_PLAYING = 0x01, + MUSIC_FLAG_ENABLE_PROX_MIX = 0x02, + MUSIC_FLAG_PUSHING = 0x04, + MUSIC_FLAG_POPPING = 0x08, + MUSIC_FLAG_IGNORE_POP = 0x10, + MUSIC_FLAG_FADE_IN_NEXT = 0x20, +} MusicFlags; + +typedef enum BGMSnapshots { + BGM_SNAPSHOT_0 = 0, +} BGMSnapshots; + +typedef enum BGMPolyphony { + BGM_POLYPHONY_0 = 0, + BGM_POLYPHONY_1 = 1, + BGM_POLYPHONY_UNUSED_A = 2, + BGM_POLYPHONY_UNUSED_B = 3, + BGM_POLYPHONY_UNUSED_C = 4, + BGM_POLYPHONY_2 = 5, + BGM_POLYPHONY_3 = 6, + BGM_POLYPHONY_4 = 7, +} BGMPolyphony; + typedef enum BGMPlayerState { - BGM_PLAY_STATE_IDLE = 0, - BGM_STATE_PLAY_SUBSEG = 1, - BGM_PLAY_STATE_NEXT_SUBSEG = 2, - BGM_PLAY_STATE_INIT = 3, - BGM_PLAY_STATE_STOP = 4 + BGM_PLAY_STATE_IDLE = 0, + BGM_PLAY_STATE_ACTIVE = 1, + BGM_PLAY_STATE_FETCH = 2, + BGM_PLAY_STATE_INIT = 3, + BGM_PLAY_STATE_STOP = 4, } BGMPlayerState; -typedef enum SegmentControlCommands { - BGM_SEGMENT_END = 0, - BGM_SEGMENT_SUBSEG = 1, - BGM_SEGMENT_START_LOOP = 3, - BGM_SEGMENT_WAIT = 4, - BGM_SEGMENT_END_LOOP = 5, - BGM_SEGMENT_6 = 6, - BGM_SEGMENT_7 = 7 -} SegmentControlCommands; +typedef enum BGMCompositionCommands { + BGM_COMP_END = 0, + BGM_COMP_PLAY_PHRASE = 1, + BGM_COMP_START_LOOP = 3, + BGM_COMP_WAIT = 4, + BGM_COMP_END_LOOP = 5, + BGM_COMP_END_COND_LOOP_FALSE = 6, + BGM_COMP_END_COND_LOOP_TRUE = 7, +} BGMCompositionCommands; + +typedef enum BGMSpecialSubops { + BGM_SPECIAL_SET_STEREO_DELAY = 1, // sets delay to desync the left or right channel + BGM_SPECIAL_SEEK_CUSTOM_ENV = 2, // set active custom envelope index for writing + BGM_SPECIAL_WRITE_CUSTOM_ENV = 3, // write custom envelope data + BGM_SPECIAL_USE_CUSTOM_ENV = 4, // select which custom envelope to use + BGM_SPECIAL_TRIGGER_SOUND = 5, + BGM_SPECIAL_PROX_MIX_OVERRIDE = 6, +} BGMSpecialSubops; typedef enum FxBus { FX_BUS_BGMA_MAIN = 0, @@ -130,11 +237,23 @@ typedef enum FxBus { FX_BUS_BGMA_AUX = 3, } FxBus; +typedef enum DelayChannel { + AU_DELAY_CHANNEL_NONE = 0, + AU_DELAY_CHANNEL_LEFT = 1, + AU_DELAY_CHANNEL_RIGHT = 2, +} DelayChannel; + +typedef enum DelayState { + AU_DELAY_STATE_ON = 0, /// channel delay is enabled (though not necessarily applied) + AU_DELAY_STATE_OFF = 1, /// channel delay is disabled + AU_DELAY_STATE_REQUEST_OFF = 2, /// game thread has scheduled the channel delay to be disabled +} DelayState; + typedef enum EnvelopeCommand { ENV_CMD_END_LOOP = 0xFB, ENV_CMD_START_LOOP = 0xFC, - ENV_CMD_ADD_MULTIPLIER = 0xFD, - ENV_CMD_SET_MULTIPLIER = 0xFE, + ENV_CMD_ADD_SCALE = 0xFD, + ENV_CMD_SET_SCALE = 0xFE, ENV_CMD_END = 0xFF, } EnvelopeCommand; @@ -251,22 +370,39 @@ enum SoundInstanceFlags { SOUND_INSTANCE_FLAG_POSITION_CHANGED = 2, }; -typedef union AmbVoiceStateInfo { - struct { - u8 playerIndex; - u8 trackIndex; - u8 tune; - u8 released; - }; - s32 all; -} AmbVoiceStateInfo; +/// corresponds with bank group IDs from INIT file bank list (InitBankEntry.bankSet) +typedef enum BankSet { + BANK_SET_AUX = 1, // extra banks loaded at request of BGM file + BANK_SET_2 = 2, // loaded during INIT + BANK_SET_MUSIC = 3, // loaded during INIT, contains instrument samples for BGM + BANK_SET_4 = 4, // loaded during INIT + BANK_SET_5 = 5, // loaded during INIT + BANK_SET_6 = 6, // loaded during INIT +} BankSet; + +/// The bank indices used by audio assets when choosing an intrument. These are similar to values in BankSet, +/// but not identical +typedef enum BankSetIndex { + BANK_SET_IDX_0 = 0, // BANK_SET_AUX + BANK_SET_IDX_1 = 1, // BANK_SET_2 + BANK_SET_IDX_2 = 2, // used only for au_reset_drum_entry/au_reset_instrument_entry + BANK_SET_IDX_3 = 3, // BANK_SET_MUSIC + BANK_SET_IDX_4 = 4, // BANK_SET_4 + BANK_SET_IDX_5 = 5, // BANK_SET_5 + BANK_SET_IDX_6 = 6, // BANK_SET_6 + BANK_SET_IDX_7 = 7, // also BANK_SET_AUX + // higher values are not supported, as bankPatch values +} BankSetIndex; + +typedef enum AudioType { + AUDIO_TYPE_BGM = 0x01, + AUDIO_TYPE_SFX = 0x10, +} AudioType; struct BGMPlayer; struct AuGlobals; struct AuVoice; -typedef void (*AuCallback)(void); - typedef union SeqArgs { u8 raw[4]; struct { // cmd E0 @@ -297,59 +433,59 @@ typedef union SeqArgs { struct { // cmd E8 u8 bank; u8 patch; - } TrackOverridePatch; + } OverridePatch; struct { // cmd E9 u8 value; - } SubTrackVolume; + } InstrumentVolume; struct { // cmd EA u8 value; - } SubTrackPan; + } InstrumentPan; struct { // cmd EB u8 value; - } SubTrackReverb; + } InstrumentReverb; struct { // cmd EC u8 value; - } SegTrackVolume; + } TrackVolume; struct { // cmd ED - u8 cent; - } SubTrackCoarseTune; + s8 semitone; + } InstrumentCoarseTune; struct { // cmd EE - u8 value; - } SubTrackFineTune; + s8 cent; + } InstrumentFineTune; struct { // cmd EF - u16 value; - } SegTrackTune; + s16 cents; + } TrackDetune; struct { // cmd F0 - u8 amount; + u8 delay; u8 speed; - u8 time; + u8 depth; } TrackTremolo; struct { // cmd F1 u8 value; - } TrackTremoloSpeed; + } TrackTremoloRate; struct { // cmd F2 - u8 time; - } TrackTremoloTime; + u8 value; + } TrackTremoloDepth; // no args for F3 (TrackTremoloStop) struct { // cmd F4 u8 pan0; u8 pan1; - } UnkCmdF4; + } RandomPan; struct { // cmd F5 u8 index; - } SetTrackVoice; + } UseInstrument; struct { // cmd F6 u16 time; u8 value; } TrackVolumeFade; struct { // cmd F7 u8 index; - } SubTrackReverbType; + } ReverbType; // commands F8-FB unused struct { // cmd FC - u16 unk_00; - u8 unk_02; - } Jump; + u16 offset; + u8 tableCount; + } Branch; struct { // cmd FD u32 eventInfo; } EventTrigger; @@ -358,42 +494,25 @@ typedef union SeqArgs { u8 length; } Detour; struct { // cmd FF - u8 unk_00; - u8 unk_01; - u8 unk_02; - } UnkCmdFF; + u8 type; + u8 arg1; + u8 arg2; + } Special; } SeqArgs; -typedef union VolumeField { - u16 u16; - s32 s32; -} VolumeField; - -// envelope related? +/// Structure for volume fading for SFX and BGM. Has independent controls for base and envelope volumes. typedef struct Fade { - /* 0x0 */ VolumeField curVolume; - /* 0x4 */ s32 fadeStep; - /* 0x8 */ s16 targetVolume; - /* 0xA */ s16 fadeTime; - union { + /* 0x0 */ s16_16 baseVolume; + /* 0x4 */ s32 baseStep; + /* 0x8 */ s16 baseTarget; + /* 0xA */ s16 baseTicks; /* 0xC */ AuCallback onCompleteCallback; - /* 0xC */ s32 variation; - }; - // fields below are envelope? - /* 0x10 */ VolumeField volScale; - /* 0x14 */ s32 volScaleStep; - /* 0x18 */ s16 targetVolScale; - /* 0x1A */ s16 volScaleTime; + /* 0x10 */ s16_16 envelopeVolume; + /* 0x14 */ s32 envelopeStep; + /* 0x18 */ s16 envelopeTarget; + /* 0x1A */ s16 envelopeTicks; } Fade; // size = 0x10 -typedef struct AlUnkPi { - /* 0x00 */ UNK_TYPE_32 unk_00; - /* 0x04 */ UNK_TYPE_32 unk__04; - /* 0x08 */ UNK_TYPE_32 unk_08; - /* 0x0C */ UNK_TYPE_32 unk_0C; -} AlUnkPi; // size = 0x8 - -// based on ALDelay typedef struct AuDelay { /* 0x00 */ u32 input; /* 0x04 */ u32 output; @@ -405,54 +524,52 @@ typedef struct AuDelay { /* 0x14 */ f32 rsval; /* 0x18 */ s32 rsdelta; /* 0x1C */ f32 rsgain; - /* 0x20 */ struct AuLowPass* lowpass_20; // [ALLowPass] ? - /* 0x24 */ struct AuLowPass* lowpass_24; // [ALLowPass] ? - /* 0x28 */ struct AuResampler* resampler_28; // [ALResampler] ? - /* 0x2C */ struct AuResampler* resampler_2C; // [ALResampler] ? + /* 0x20 */ struct AuLowPass* activeLowpass; // can be null, same as lowpassTemplate when in use + /* 0x24 */ struct AuLowPass* lowpassTemplate; // pre-allocated and reused for active AuLowPass + /* 0x28 */ struct AuResampler* activeResampler; // can be null, same as resamplerTemplate when in use + /* 0x2C */ struct AuResampler* resamplerTemplate; // pre-allocated and reused for active AuResampler } AuDelay; // size = 0x30 -// based on ALFx typedef struct AuFX { - /* 0x00 */ s16* base; - /* 0x04 */ s16* input; - /* 0x08 */ s32 length; - /* 0x0C */ AuDelay* delays; - /* 0x10 */ u8 delayCount; + /* 0x00 */ s16* base; // start of the delay line buffer + /* 0x04 */ s16* input; // current read position of the delay line buffer + /* 0x08 */ s32 length; // length of the delay line buffer + /* 0x0C */ AuDelay* delays; // set of delays/taps that constitute this effect + /* 0x10 */ u8 delayCount; // number of AuDelay in delays } AuFX; // size = 0x14 -// based on ALLowPass typedef struct AuLowPass { /* 0x00 */ s16 fc; /* 0x02 */ s16 fgain; - // ALLowPass uses a union with force_aligned to create this padding /* 0x04 */ char pad_04[4]; /* 0x08 */ s16 fccoef[16]; /* 0x28 */ POLEF_STATE* fstate; /* 0x2C */ s32 first; } AuLowPass; // size = 0x30 -typedef struct AlUnkKappa { - /* 0x00 */ UNK_TYPE_PTR unk_00; // size = 2 * 1420h - /* 0x04 */ UNK_TYPE_16 unk__04; - /* 0x06 */ s16 unk_06; - /* 0x08 */ s16 unk_08; - /* 0x0A */ UNK_TYPE_16 unk__0A; - /* 0x0C */ AuLowPass* lowpass_0C; - /* 0x10 */ AuLowPass* lowpass_10; -} AlUnkKappa; // size unk +typedef struct AuFilter { + /* 0x00 */ s16* base; // (unused) buffer for filter history + /* 0x04 */ char pad_04[2]; + /* 0x06 */ s16 unused_06; + /* 0x08 */ s16 unused_08; + /* 0x0A */ char pad_0A[2]; + /* 0x0C */ AuLowPass* activeLowpass; + /* 0x10 */ AuLowPass* lowpassTemplate; +} AuFilter; // size = 0x14 typedef struct AuFxBus { /* 0x00 */ u16 gain; - /* 0x02 */ char unk_02[0x2]; + /* 0x02 */ char pad_02[2]; /* 0x04 */ AuFX* fxL; /* 0x08 */ AuFX* fxR; /* 0x0C */ u8 curEffectType; - /* 0x0D */ char unk_0D[0x3]; + /* 0x0D */ char pad_0D[3]; /* 0x10 */ struct AuPVoice* head; /* 0x14 */ struct AuPVoice* tail; } AuFxBus; // size = 0x18 - // ALDMAproc in PM supposedly has an extra arg added, so that's why we have ALDMAproc2 and ALDMANew2 + // ALDMAproc in PM has an extra arg added for bypassing DMA transfers for static audio data + // (which is always available in RAM), so we have ALDMAproc2 and ALDMANew2. typedef s32 (*ALDMAproc2)(s32 addr, s32 len, void *state, u8 arg3); typedef ALDMAproc2 (*ALDMANew2)(void *state); @@ -476,7 +593,7 @@ typedef struct AuResampler { /* 0x00 */ RESAMPLE_STATE* state; /* 0x04 */ f32 ratio; /* 0x08 */ f32 delta; - /* 0x0C */ s32 first; + /* 0x0C */ b32 first; } AuResampler; // size = 0x10 // envelope mixer -- based on ALEnvMixer @@ -496,27 +613,27 @@ typedef struct AuEnvMixer { /* 0x1A */ s16 rtgt; /* 0x1C */ s32 delta; /* 0x20 */ s32 segEnd; - /* 0x24 */ s32 first; + /* 0x24 */ b32 dirty; /* 0x28 */ s32 motion; } AuEnvMixer; // size = 0x2C // based on N_PVoice typedef struct AuPVoice { - /* 0x00 */ struct AuPVoice* next; + /* 0x00 */ struct AuPVoice* next; // next voice on the same fx bux /* 0x04 */ AuLoadFilter decoder; /* 0x38 */ AuResampler resampler; /* 0x48 */ AuEnvMixer envMixer; - /* 0x74 */ s16 unk_74; - /* 0x76 */ s16 unk_76; - /* 0x78 */ u8 busId; + /* 0x74 */ s16 unused_74; + /* 0x76 */ char pad_76[2]; + /* 0x78 */ u8 busID; /* 0x79 */ u8 index; - /* 0x7A */ u8 unk_7A[2]; -} AuPVoice; + /* 0x7A */ char pad_7A[2]; +} AuPVoice; // size = 0x7C // based on N_ALSynth typedef struct AuSynDriver { /* 0x00 */ s32 curSamples; - /* 0x04 */ s32 unk_04; + /* 0x04 */ s32 unused_04; /* 0x08 */ s32 outputRate; /* 0x0C */ s32 num_pvoice; /* 0x10 */ s32 num_bus; @@ -524,18 +641,18 @@ typedef struct AuSynDriver { /* 0x18 */ ALHeap* heap; /* 0x1C */ AuPVoice* pvoices; /* 0x20 */ AuFxBus* fxBus; - /* 0x24 */ s32* savedMainOut; // struct size = 0x170 - /* 0x28 */ s32* savedAuxOut; // struct size = 0x170 + /* 0x24 */ s32* dryAccumBuffer; // buffer to accumulate dry samples from each bus during audio rendering + /* 0x28 */ s32* wetAccumBuffer; // buffer to accumulate wet samples from each bus during audio rendering } AuSynDriver; -typedef struct SoundSFXEntry { +typedef struct SoundRequest { /* 0x0 */ u16 soundID; - /* 0x2 */ u16 upperSoundID; + /* 0x2 */ u16 toReplaceID; // if nonzero, the new sound will prefer stealing a voice from any player with this soundID /* 0x4 */ s16 volume; /* 0x6 */ s16 pitchShift; /* 0x8 */ s8 pan; - /* 0x9 */ char unk_9[0x1]; -} SoundSFXEntry; // size = 0xA + /* 0x9 */ char pad_9[1]; +} SoundRequest; // size = 0xA typedef struct EnvelopeData { /* 0x00 */ u8* cmdListPress; @@ -549,41 +666,41 @@ typedef struct EnvelopeOffset { typedef struct EnvelopePreset { /* 0x00 */ u8 count; - /* 0x01 */ char unk_01[3]; + /* 0x01 */ char pad_01[3]; /* 0x04 */ EnvelopeOffset offsets[1]; // variable size } EnvelopePreset; // partially ALWaveTable? typedef struct Instrument { - /* 0x00 */ u8* base; + /* 0x00 */ u8* wavData; /* 0x04 */ u32 wavDataLength; - /* 0x08 */ UNK_PTR loopPredictor; + /* 0x08 */ ADPCM_STATE* loopState; /* 0x0C */ s32 loopStart; /* 0x10 */ s32 loopEnd; /* 0x14 */ s32 loopCount; - /* 0x18 */ u16* predictor; - /* 0x1C */ u16 dc_bookSize; + /* 0x18 */ s16* predictor; + /* 0x1C */ u16 codebookSize; /* 0x1E */ u16 keyBase; /* 0x20 */ union { - f32 pitchRatio; - s32 outputRate; + f32 pitchRatio; // ratio of sample rate to hardware output rate + s32 sampleRate; }; /* 0x24 */ u8 type; - /* 0x25 */ u8 unk_25; - /* 0x26 */ s8 unk_26; - /* 0x27 */ s8 unk_27; - /* 0x28 */ s8 unk_28; - /* 0x29 */ s8 unk_29; - /* 0x2A */ s8 unk_2A; - /* 0x2B */ s8 unk_2B; + /* 0x25 */ b8 useDma; // set to FALSE to bypass DMA transfer while loading data -- only do this if the audio samples/codebook are static + /* 0x26 */ s8 unused_26; + /* 0x27 */ s8 unused_27; + /* 0x28 */ s8 unused_28; + /* 0x29 */ s8 unused_29; + /* 0x2A */ s8 unused_2A; + /* 0x2B */ s8 unused_2B; /* 0x2C */ EnvelopePreset* envelopes; } Instrument; // size = 0x30; -typedef Instrument* InstrumentGroup[16]; +typedef Instrument* InstrumentBank[16]; typedef struct SoundLerp { - /* 0x0 */ s32 current; - /* 0x4 */ s32 step; + /* 0x0 */ s16_16 current; + /* 0x4 */ s16_16 step; /* 0xA */ s16 time; /* 0x8 */ s16 goal; } SoundLerp; // size = 0xC @@ -602,7 +719,7 @@ typedef struct SoundPlayChange { typedef struct SoundPlayer { /* 0x00 */ AuFilePos sefDataReadPos; - /* 0x04 */ char pad4[0xC]; + /* 0x04 */ char pad_4[0xC]; /* 0x10 */ EnvelopeData envelope; /* 0x18 */ u8* envelopCustomPressProfile; /* 0x1C */ Instrument* sfxInstrumentRef; @@ -614,19 +731,19 @@ typedef struct SoundPlayer { /* 0x5E */ s16 alternativeVolume; /* 0x60 */ SoundLerp tuneLerp; /* 0x6C */ SoundLerp volumeLerp; - /* 0x78 */ u8 cmdList_mode2[8]; + /* 0x78 */ u8 cmdListOneShot[8]; /* 0x80 */ AuFilePos alternativeDataPos; /* 0x84 */ s8 alternativeType; /* 0x85 */ u8 triggers; - /* 0x86 */ char unk_86[0x2]; + /* 0x86 */ char pad_86[2]; /* 0x88 */ s8* loopStartPos; /* 0x8C */ u8 loopIterCount; // loopIterCount = 0 for infinite loop - /* 0x8D */ char unk_8D; + /* 0x8D */ char pad_8D[1]; /* 0x8E */ u16 delay; /* 0x90 */ u16 playLength; /* 0x92 */ s16 coarseTune; /* 0x94 */ s8 fineTune; - /* 0x95 */ char unk_05; + /* 0x95 */ char pad_95[1]; /* 0x96 */ u16 curSoundID; /* 0x98 */ u8 priority; /* 0x99 */ u8 exclusiveID; @@ -636,28 +753,27 @@ typedef struct SoundPlayer { /* 0x9D */ u8 instrumentIndex; // ? /* 0x9E */ u8 envelopePreset; /* 0x9F */ u8 playVelocity; - /* 0xA0 */ u8 unk_A0; + /* 0xA0 */ u8 unused_A0; /* 0xA1 */ u8 randomPitch; /* 0xA2 */ u8 randomVelocity; - /* 0xA3 */ s8 unk_A3; + /* 0xA3 */ s8 randomUnused; /// unused; presumably another random parameter matching randomPitch and randomVelocity /* 0xA4 */ s16 masterPitchShift; /* 0xA6 */ s16 masterVolume; /* 0xA8 */ u8 masterPan; /* 0xA8 */ u8 state; - /* 0xA9 */ char unk_AA[0x2]; + /* 0xA9 */ char pad_AA[2]; } SoundPlayer; // size = 0xAC -typedef struct SoundManager90 { +typedef struct SoundManagerMusicEvent { union { - /* 0x0 */ s32 s32; + /* 0x0 */ s32 raw; struct { - /* 0x0 */ u8 unk_0; - /* 0x1 */ u8 unk_1; - /* 0x2 */ u8 unk_2; + /* 0x0 */ u8 index; + /* 0x1 */ char pad_01[0x2]; /* 0x3 */ u8 volume; }; }; -} SoundManager90; // size = 4 +} SoundManagerMusicEvent; // size = 4 typedef struct SoundManagerCustomCmdList { /* 0x0 */ u16 data[3]; @@ -669,34 +785,34 @@ typedef struct SoundManager { /* 0x008 */ u8* sefData; /* 0x00C */ s32* normalSounds[8]; /* 0x02C */ s32* extraSounds; - /* 0x030 */ s32 playCounter; //? + /* 0x030 */ s32 frameCounter; ///< Number of video frame updates, used to update random numnber /* 0x034 */ s32 nextUpdateStep; /* 0x038 */ s32 nextUpdateInterval; /* 0x03C */ s32 nextUpdateCounter; - /* 0x040 */ struct Fade fadeInfo; + /* 0x040 */ Fade fadeInfo; /* 0x05C */ s32 busVolume; /* 0x060 */ s32 randomValue; /* 0x064 */ s32* customReverbParams[8]; /* 0x084 */ s8 customReverbAmounts[8]; /* 0x08C */ u8 lastCustomEffectIdx; /* 0x08D */ s8 defaultReverbAmt; - /* 0x08E */ char unk_8E[0x2]; - /* 0x090 */ SoundManager90 bgmSounds[4]; + /* 0x08E */ char pad_8E[2]; + /* 0x090 */ SoundManagerMusicEvent bgmSounds[4]; /* 0x0A0 */ SoundManagerCustomCmdList customCmdList[4]; /* 0x0B8 */ u16 baseVolume; - /* 0x0BA */ s16 unk_BA; + /* 0x0BA */ s16 prevUpdateResult; ///< Unused, may indicate error status /* 0x0BC */ u8 priority; - /* 0x0BD */ u8 sfxPlayerSelector; - /* 0x0BE */ u8 busId; + /* 0x0BD */ u8 firstVoice; + /* 0x0BE */ u8 busID; /* 0x0BF */ u8 curVoiceIndex; /* 0x0C0 */ u8 state; - /* 0x0C1 */ char unk_C1[0x1]; - /* 0x0C2 */ SoundSFXEntry soundQueue[16]; - /* 0x162 */ s8 unk_162; - /* 0x163 */ u8 sfxQueuePosOffset; - /* 0x164 */ u8 sfxQueueNextPos; - /* 0x165 */ s8 unk_165; - /* 0x166 */ char unk_166[0x2]; + /* 0x0C1 */ char pad_C1[1]; + /* 0x0C2 */ SoundRequest soundQueue[SFX_QUEUE_SIZE]; ///< Lock-free ring buffer for queueing sound effects from game thread + /* 0x162 */ s8 unused_162; + /* 0x163 */ u8 sfxQueueReadPos; ///< Read index for the soundQueue ring buffer (audio thread) + /* 0x164 */ u8 sfxQueueWritePos; ///< Write index for the soundQueue ring buffer (game thread) + /* 0x165 */ s8 unused_165; + /* 0x166 */ char pad_166[2]; /* 0x168 */ s32 resetPending; /* 0x16C */ SoundPlayer players[8]; } SoundManager; // size = 0x6CC @@ -721,39 +837,39 @@ typedef struct AuVoice { /* 0x00 */ Instrument* instrument; /* 0x04 */ f32 pitchRatio; /* 0x08 */ s32 delta; - /* 0x0C */ s16 p_volume; // volume for pvoice + /* 0x0C */ s16 volume; // final combined output volume /* 0x0E */ u8 pan; /* 0x0F */ u8 reverb; - /* 0x10 */ u8 busId; - /* 0x11 */ char unk_11[0x3]; + /* 0x10 */ u8 busID; + /* 0x11 */ char pad_11[3]; /* 0x14 */ EnvelopeData envelope; /* 0x1C */ u8* cmdPtr; - /* 0x20 */ s32 unk_20; - /* 0x24 */ s32 volChangeTime; - /* 0x28 */ s32 timeLeft; - /* 0x2C */ f32 rate; - /* 0x30 */ s32 volMult; - /* 0x34 */ u8* loopStart; + /* 0x20 */ s32 unused_20; + /* 0x24 */ s32 envDuration; + /* 0x28 */ s32 envTimeLeft; + /* 0x2C */ f32 envDelta; + /* 0x30 */ s32 envScale; + /* 0x34 */ u8* loopStart; // start position in command list for loop /* 0x38 */ u8 loopCounter; - /* 0x39 */ u8 initialAmp; - /* 0x3A */ u8 targetAmp; - /* 0x3B */ u8 timeIntervalIndex; - /* 0x3C */ u8 unk_3C; + /* 0x39 */ u8 envInitial; + /* 0x3A */ u8 envTarget; + /* 0x3B */ u8 envIntervalIndex; + /* 0x3C */ u8 unused_3C; /* 0x3D */ u8 envelopeFlags; - /* 0x3E */ u8 relativeReleaseVolumes; - /* 0x3F */ u8 releaseVolumeMult; - /* 0x40 */ s16 clientVolume; - /* 0x42 */ u8 stopPending; + /* 0x3E */ b8 isRelativeRelease; + /* 0x3F */ u8 envRelativeStart; + /* 0x40 */ s16 clientVolume; // volume set by the client (BGM/MSEQ/Sound player) before any envelope is applied + /* 0x42 */ u8 donePending; // TRUE when a voice has completed its release phase and is ready for cleanup /* 0x43 */ u8 syncFlags; /* 0x44 */ s8 clientPriority; /* 0x45 */ u8 priority; - /* 0x46 */ char unk_46[2]; + /* 0x46 */ char pad_46[2]; } AuVoice; // size = 0x48 typedef struct BGMFileInfo { - /* 0x10 */ u8 numSegments; + /* 0x10 */ u8 timingPreset; /* 0x11 */ char pad_11[3]; - /* 0x14 */ u16 segments[4]; + /* 0x14 */ u16 compositions[4]; /* 0x1C */ u16 drums; /* 0x1E */ u16 drumCount; /* 0x20 */ u16 instruments; @@ -769,11 +885,11 @@ typedef struct BGMHeader { } BGMHeader; // size = 0x24 typedef struct BGMDrumInfo { - /* 0x0 */ s16 bankPatch; - /* 0x2 */ s16 keyBase; + /* 0x0 */ u16 bankPatch; // upper = BankSetIndex, lower = patch + /* 0x2 */ u16 keyBase; /* 0x4 */ u8 volume; /* 0x5 */ s8 pan; - /* 0x6 */ s8 reverb; + /* 0x6 */ u8 reverb; /* 0x7 */ u8 randTune; /* 0x8 */ u8 randVolume; /* 0x9 */ u8 randPan; @@ -782,10 +898,10 @@ typedef struct BGMDrumInfo { } BGMDrumInfo; // size = 0xC typedef struct BGMInstrumentInfo { - /* 0x00 */ u16 bankPatch; // upper = bank, lower = patch + /* 0x00 */ u16 bankPatch; // upper = BankSetIndex, lower = patch /* 0x02 */ u8 volume; /* 0x03 */ s8 pan; - /* 0x04 */ s8 reverb; + /* 0x04 */ u8 reverb; /* 0x05 */ s8 coarseTune; /* 0x06 */ s8 fineTune; /* 0x07 */ char pad_7[1]; @@ -796,49 +912,6 @@ typedef struct AUFileMetadata { /* 0x04 */ s32 size; // full file size, including header and data } AUFileMetadata; -typedef struct SBNHeader { - /* 0x00 */ AUFileMetadata mdata; // uses identifer 'SBN ' - /* 0x08 */ char unused_08[8]; - /* 0x10 */ s32 tableOffset; // offset in the SBN file of the file table (== sizeof(SBNHeader)) - /* 0x14 */ s32 numEntries; // number of entries in the SBN file table - /* 0x18 */ s32 fileSize; // full size of the SBN file (unread) - /* 0x1C */ s32 versionOffset; - /* 0x20 */ char unused_04[4]; - /* 0x24 */ s32 INIToffset; - /* 0x28 */ char reserved[24]; -} SBNHeader; // size = 0x40 - -typedef struct SEFHeader { - /* 0x00 */ AUFileMetadata mdata; // uses identifer 'SEF ' - /* 0x08 */ s32 unk8; - /* 0x0C */ s8 unkC; // 0 - /* 0x0D */ s8 unkD; // 0 - /* 0x0E */ u8 hasExtraSection; // 1 - /* 0x0F */ s8 unkF; // 0 - /* 0x10 */ u16 sections[8]; - /* 0x20 */ u16 section2000; -} SEFHeader; // size = 0x22 - -typedef struct INITHeader { - /* 0x00 */ AUFileMetadata mdata; // uses identifer 'INIT' - /* 0x08 */ u16 entriesOffset; - /* 0x0A */ u16 entriesSize; - /* 0x0C */ u16 tblOffset; - /* 0x0E */ u16 tblSize; - /* 0x10 */ u16 shortsOffset; - /* 0x12 */ u16 shortsSize; - /* 0x14 */ char unk_14[0xC]; -} INITHeader; // size = 0x20 - -typedef struct PERHeader { - /* 0x00 */ AUFileMetadata mdata; // uses identifer 'PER ' or 'PRG ' - /* 0x08 */ char unk_08[8]; -} PERHeader; // size = 0x10 - -typedef struct PEREntry { - /* 0x00 */ BGMDrumInfo drums[12]; -} PEREntry; // size = 0x90; - typedef struct SBNFileEntry { /* 0x0 */ s32 offset; union { @@ -846,52 +919,108 @@ typedef struct SBNFileEntry { //TODO try replacing the data field with these struct { /* 0x4 */ s8 fmt; - /* 0x5 */ UNK_TYPE_08 unk__05; + /* 0x5 */ char pad_05[1]; /* 0x6 */ s16 size; }; }; } SBNFileEntry; // size = 0x8 -typedef struct BKHeader { - /* 0x00 */ u16 signature; // 'BK' - /* 0x02 */ char unk_02[2]; - /* 0x04 */ s32 size; +typedef struct SBNHeader { + /* 0x00 */ AUFileMetadata mdata; // uses identifer 'SBN ' + /* 0x08 */ char unused_08[8]; + /* 0x10 */ s32 fileListOffset; // offset in the SBN file of the file table (== sizeof(SBNHeader)) + /* 0x14 */ s32 numEntries; // number of entries in the SBN file table + /* 0x18 */ s32 fullFileSize; // full size of the SBN file (unread) + /* 0x1C */ s32 versionOffset; + /* 0x20 */ char unused_04[4]; + /* 0x24 */ s32 INIToffset; + /* 0x28 */ char unused_28[24]; + /* 0x40 */ SBNFileEntry entries[0]; +} SBNHeader; // size = 0x40 + +typedef struct SEFHeader { + /* 0x00 */ AUFileMetadata mdata; // uses identifer 'SEF ' /* 0x08 */ s32 name; - /* 0x0C */ u16 format; // 'CR', 'DR', 'SR' - /* 0x0E */ char unk_0E[2]; - /* 0x10 */ char unk_10[2]; - /* 0x12 */ u16 instruments[16]; - /* 0x32 */ u16 instrumetsSize; - /* 0x34 */ u16 unkStartA; - /* 0x36 */ u16 unkSizeA; - /* 0x38 */ u16 predictorsStart; - /* 0x3A */ u16 predictorsSize; - /* 0x3C */ u16 unkStartB; - /* 0x3E */ u16 unkSizeB; -} BKHeader; // size = 0x40 + /* 0x0C */ char unused_0C[2]; // always 0 + /* 0x0E */ u8 hasExtraSection; // always 1 + /* 0x0F */ char unused_0F[1]; // always 0 + /* 0x10 */ u16 sections[8]; + /* 0x20 */ u16 section2000; +} SEFHeader; // size = 0x22 + +typedef struct INITHeader { + /* 0x00 */ AUFileMetadata mdata; // uses identifer 'INIT' + /* 0x08 */ u16 bankListOffset; + /* 0x0A */ u16 bankListSize; + /* 0x0C */ u16 songListOffset; + /* 0x0E */ u16 songListSize; + /* 0x10 */ u16 mseqListOffset; + /* 0x12 */ u16 mseqListSize; + /* 0x14 */ char pad_14[0xC]; +} INITHeader; // size = 0x20 typedef struct InitSongEntry { /* 0x0 */ u16 bgmFileIndex; // required BGM file /* 0x2 */ u16 bkFileIndex[3]; // optional BK files for this track } InitSongEntry; // size = 0x8 -typedef struct SoundBank { - /* 0x000 */ char unk_00[0xE]; - /* 0x00E */ u8 swizzled; - /* 0x010 */ char unk_0F[0x831]; -} SoundBank; // size = 0x840 +typedef struct InitBankEntry { + /* 0x0 */ u16 fileIndex; + /* 0x2 */ u8 bankIndex; + /* 0x3 */ u8 bankSet; +} InitBankEntry; // size = 4 + +#define INIT_BANK_BUFFER_SIZE 80 + +typedef struct PERHeader { + /* 0x00 */ AUFileMetadata mdata; // uses identifer 'PER ' or 'PRG ' + /* 0x08 */ char pad_08[8]; +} PERHeader; // size = 0x10 + +typedef struct PEREntry { + /* 0x00 */ BGMDrumInfo drums[12]; +} PEREntry; // size = 0x90; + +typedef struct BKHeader { + /* 0x00 */ u16 signature; // 'BK' + /* 0x02 */ char pad_02[2]; + /* 0x04 */ s32 size; + /* 0x08 */ s32 name; + /* 0x0C */ u16 format; // 'CR', 'DR', 'SR' + /* 0x0E */ u8 swizzled; + /* 0x0E */ char pad_0E[3]; + /* 0x12 */ u16 instruments[16]; + /* 0x32 */ u16 instrumetsLength; + /* 0x34 */ u16 loopStatesStart; + /* 0x36 */ u16 loopStatesLength; + /* 0x38 */ u16 predictorsStart; + /* 0x3A */ u16 predictorsLength; + /* 0x3C */ u16 envelopesStart; + /* 0x3E */ u16 envelopesLength; +} BKHeader; // size = 0x40 + +/// Represents a dummy BK file large enough to hold everything except the wave data. +/// Note: The BK file sizes listed in the SBN table match their length excluding wav data. +/// The size of 0x840 bytes was probably chosen to hold the largest BK file in the SBN table, +/// 'GM06' -- listed at exactly 0x840 bytes. However, the devs may have missed that 'GM03' +/// is actually even larger at 0x990 bytes! In both cases, the culprits are unusually long +/// envelope scripts for all 16 instruments. +typedef struct BKFileBuffer { + /* 0x00 */ BKHeader header; + /* 0x40 */ u8 data[0x800]; +} BKFileBuffer; // size 0x840 typedef struct AuEffectChange { /* 0x0 */ u8 type; /* 0x1 */ u8 changed; - /* 0x2 */ char unk_02[2]; + /* 0x2 */ char pad_02[2]; } AuEffectChange; -typedef struct SndGlobalsSub6C { +typedef struct BGMPlayerSnapshot { /* 0x00 */ struct BGMPlayer* bgmPlayer; - /* 0x04 */ u8 unk_4; - /* 0x05 */ u8 unk_5; -} SndGlobalsSub6C; + /* 0x04 */ u8 assigned; + /* 0x05 */ u8 priority; +} BGMPlayerSnapshot; // found at 801D57A0 typedef struct AuGlobals { @@ -900,49 +1029,49 @@ typedef struct AuGlobals { /* 0x0008 */ BGMDrumInfo defaultDrumEntry; /* 0x0014 */ BGMInstrumentInfo defaultPRGEntry; /* 0x001C */ s32 baseRomOffset; - /* 0x0020 */ SBNFileEntry* sbnFileList; + /* 0x0020 */ SBNFileEntry* sbnFileList; /// copied from SBN to the audio heap /* 0x0024 */ s32 fileListLength; - /* 0x0028 */ char unk_28[0x4]; - /* 0x002C */ InitSongEntry* songList; + /* 0x0028 */ char pad_28[4]; + /* 0x002C */ InitSongEntry* songList; /// copied from INIT to the audio heap /* 0x0030 */ s32 songListLength; /* 0x0034 */ s32 bkFileListOffset; /* 0x0038 */ s32 bkListLength; - /* 0x003C */ u16* mseqFileList; - /* 0x0040 */ AuEffectChange effectChanges[4]; + /* 0x003C */ u16* extraFileList; /// copied from INIT to the audio heap, seems to exist only to find SEF, PER, and PRG + /* 0x0040 */ AuEffectChange effectChanges[4]; ///< set this to change the effect on an effect bus /* 0x0050 */ u8 channelDelayPending; - /* 0x0051 */ u8 channelDelayBusId; + /* 0x0051 */ u8 channelDelayBusID; /* 0x0052 */ u8 channelDelayTime; /* 0x0053 */ u8 channelDelaySide; /* 0x0054 */ PEREntry* dataPER; /* 0x0058 */ BGMInstrumentInfo* dataPRG; /* 0x005C */ struct BGMHeader* dataBGM[2]; /* 0x0064 */ struct MSEQHeader* dataMSEQ[2]; - /* 0x006C */ SndGlobalsSub6C unk_globals_6C[1]; - /* 0x0074 */ struct BGMPlayer* unk_74; - /* 0x0078 */ struct BGMPlayer* unk_78; - /* 0x007C */ s32 unkSongName; - /* 0x0080 */ s32 unk_80; - /* 0x0084 */ s32 unkFadeTime; - /* 0x0088 */ s32 unkFadeStart; - /* 0x008C */ s32 unkFadeEnd; + /* 0x006C */ BGMPlayerSnapshot snapshots[1]; + /* 0x0074 */ struct BGMPlayer* resumeCopyTo; + /* 0x0078 */ struct BGMPlayer* resumeCopyFrom; + /* 0x007C */ s32 resumeSongName; + /* 0x0080 */ b32 resumeRequested; + /* 0x0084 */ s32 resumeFadeTime; + /* 0x0088 */ s32 resumeFadeStart; + /* 0x008C */ s32 resumeFadeEnd; /* 0x0090 */ MusicEventTrigger* musicEventQueuePos; /* 0x0094 */ MusicEventTrigger* musicEventQueue; /* 0x0098 */ u32 musicEventQueueCount; /* 0x009C */ s32 flushMusicEventQueue; /* 0x00A0 */ SEFHeader* dataSEF; /* 0x00A4 */ AuCallback audioThreadCallbacks[2]; // 0 = on begin update, 1 = unimplemented - /* 0x00AC */ InstrumentGroup instrumentGroupX[1]; - /* 0x00EC */ InstrumentGroup instrumentGroup3[16]; - /* 0x04EC */ InstrumentGroup instrumentGroup1[4]; - /* 0x05EC */ InstrumentGroup instrumentGroup2[16]; - /* 0x09EC */ InstrumentGroup instrumentGroup4[16]; - /* 0x0DEC */ InstrumentGroup instrumentGroup5[16]; - /* 0x11EC */ InstrumentGroup instrumentGroup6[4]; - /* 0x12EC */ InstrumentGroup* instrumentGroups[8]; - /* 0x130C */ u8 unk_130C; - /* 0x130D */ char unk_130D[3]; - /* 0x1310 */ SoundBank* banks[3]; - /* 0x131C */ char unk_131C[4]; + /* 0x00AC */ InstrumentBank defaultBankSet[1]; + /* 0x00EC */ InstrumentBank musicBankSet[16]; + /* 0x04EC */ InstrumentBank auxBankSet[4]; + /* 0x05EC */ InstrumentBank bankSet2[16]; + /* 0x09EC */ InstrumentBank bankSet4[16]; + /* 0x0DEC */ InstrumentBank bankSet5[16]; + /* 0x11EC */ InstrumentBank bankSet6[4]; + /* 0x12EC */ InstrumentBank* bankSets[8]; + /* 0x130C */ u8 channelDelayState; + /* 0x130D */ char pad_130D[3]; + /* 0x1310 */ BKFileBuffer* auxBanks[3]; + /* 0x131C */ char pad_131C[4]; /* 0x1320 */ AuVoice voices[24]; } AuGlobals; // size = 0x19E0 @@ -952,71 +1081,70 @@ typedef struct BGMPlayerTrack { /* 0x08 */ AuFilePos prevReadPos; /* 0x0C */ Instrument* instrument; /* 0x10 */ EnvelopeData envelope; - /* 0x18 */ s32 subTrackVolume; - /* 0x1C */ s32 subTrackVolumeStep; - /* 0x20 */ s32 subTrackVolumeTarget; - /* 0x24 */ s32 subTrackVolumeTime; + /* 0x18 */ s8_24 insVolume; /// volume for current instrument, reset if instrument is changed + /* 0x1C */ s16_16 insVolumeStep; + /* 0x20 */ s16_16 insVolumeTarget; + /* 0x24 */ s32 insVolumeTicks; /* 0x28 */ s32 delayTime; - //TODO Fade struct? - /* 0x2C */ s32 unkVolume; - /* 0x30 */ s32 unkVolumeStep; - /* 0x34 */ s16 unkVolumeTarget; - /* 0x36 */ s16 unkVolumeTime; - /* 0x38 */ s16 segTrackTune; - /* 0x3A */ s16 trackTremoloAmount; - /* 0x3C */ char unk_3C[0x2]; + /* 0x2C */ s16_16 proxVolume; + /* 0x30 */ s16_16 proxVolumeStep; + /* 0x34 */ s16 proxVolumeTarget; + /* 0x36 */ s16 proxVolumeTicks; + /* 0x38 */ s16 detune; /// live track detune, independent of instrument, instantly affects all active voices and subsequent notes played + /* 0x3A */ s16 tremoloDelay; + /* 0x3C */ char pad_3C[2]; /* 0x3E */ s16 detourLength; /* 0x40 */ SoundPlayChange changed; /* 0x44 */ u16 patch; - /* 0x46 */ u16 subTrackCoarseTune; - /* 0x48 */ s8 subTrackFineTune; - /* 0x49 */ s8 segTrackVolume; - /* 0x4A */ u8 subTrackPan; - /* 0x4B */ u8 subTrackReverb; - /* 0x4C */ u8 unk_4C; - /* 0x4D */ u8 unk_4D; - /* 0x4E */ u8 unk_4E; - /* 0x4F */ u8 unk_4F; - /* 0x50 */ u8 unk_50; - /* 0x51 */ u8 unk_51; - /* 0x52 */ u8 unk_52; // voice idx start - /* 0x53 */ u8 unk_53; // voice idx end + /* 0x46 */ u16 insCoarseDetune; /// semitone detune for instrument, reset if instrument is changed + /* 0x48 */ s8 insFineDetune; /// cent detune for instrument, reset if instrument is changed + /* 0x49 */ s8 volume; /// track volume, independent of instrument, + /* 0x4A */ u8 insPan; + /* 0x4B */ u8 insReverb; + /* 0x4C */ u8 pressOverride; + /* 0x4D */ u8 proxMixSetChanged; + /* 0x4E */ u8 proxMixValChanged; + /* 0x4F */ u8 proxVol1; + /* 0x50 */ u8 proxVol2; + /* 0x51 */ u8 polyVoiceCount; /// number of polyphonic voices for this track + /* 0x52 */ u8 firstVoice; /// voice idx start + /* 0x53 */ u8 lastVoice; /// voice idx end, exclusive /* 0x54 */ u8 polyphonicIdx; - /* 0x55 */ u8 trackTremoloSpeed; - /* 0x56 */ u8 trackTremoloTime; - /* 0x57 */ u8 unk_57; + /* 0x55 */ u8 tremoloRate; + /* 0x56 */ u8 tremoloDepth; + /* 0x57 */ u8 randomPanAmount; /* 0x58 */ u8 isDrumTrack; - /* 0x59 */ u8 parentTrackIdx; - /* 0x5A */ u8 unk_5A; - /* 0x5B */ s8 subtrackBusId; + /* 0x59 */ u8 linkedTrackID; + /* 0x5A */ u8 muted; /// prevents notes from this track from being assigned voices, implemented for linked track pairs + /* 0x5B */ s8 busID; /* 0x5C */ u8 index; - /* 0x5D */ char unk_5D[0x3]; + /* 0x5D */ char pad_5D[3]; } BGMPlayerTrack; // size = 0x60; typedef struct SeqNote { /* 0x00 */ Instrument* ins; /* 0x00 */ f32 pitchRatio; /* 0x08 */ s16 volume; - /* 0x0A */ s16 adjustedPitch; - /* 0x0C */ s32 noteLength; - /* 0x10 */ u16 tremoloAmount; - /* 0x12 */ u8 tremoloTime; - /* 0x12 */ u8 unk_13; - /* 0x14 */ s16 unk_14; - /* 0x16 */ u8 noteVelocity; - /* 0x17 */ u8 unk_note_17; + /* 0x0A */ s16 detune; + /* 0x0C */ s32 length; /// attack + sustain time + /* 0x10 */ u16 tremoloDelay; + /* 0x12 */ u8 tremoloDepth; + /* 0x12 */ u8 tremoloPhase; + /* 0x14 */ s16 randDetune; + /* 0x16 */ u8 velocity; + /* 0x17 */ u8 pendingTick; } SeqNote; // size = 0x18; typedef struct BGMPlayer { /* 0x000 */ AuGlobals* globals; /* 0x004 */ SoundManager* soundManager; - /* 0x008 */ s32 nextUpdateStep; - /* 0x00C */ s32 nextUpdateInterval; - /* 0x010 */ s32 nextUpdateCounter; - /* 0x014 */ s32 updateCounter; + /* 0x008 */ s32 nextUpdateStep; /// update counter amount to add per audio frame + /* 0x00C */ s32 tickUpdateInterval; /// update counter threshold for a single tick + /* 0x010 */ s32 nextUpdateCounter; /// current update counter value + /* 0x014 */ s32 frameCounter; /// video frames (60 fps) /* 0x018 */ s32 songPlayingCounter; /* 0x01C */ s32 songName; - /* 0x020 */ s32 fadeSongName; + /* 0x020 */ s32 pushSongName; /* 0x024 */ s32 bgmFileIndex; /* 0x028 */ s32 songID; /* 0x02C */ Fade fadeInfo; @@ -1024,78 +1152,130 @@ typedef struct BGMPlayer { /* 0x04C */ u8 effectIndices[4]; /* 0x050 */ s32 randomValue1; /* 0x054 */ s32 randomValue2; - /* 0x058 */ u16 unk_58; - /* 0x05A */ s16 unk_5A; - /* 0x05C */ s16 unk_5C; - /* 0x05E */ char pad5E[2]; - /* 0x060 */ u32 curSegmentID; + /* 0x058 */ u16 unk_58; // related to legacy command system, unused + /* 0x05A */ u16 unk_5A; // related to legacy command system, unused + /* 0x05C */ s16 prevUpdateResult; // unused, may indicate error status + /* 0x05E */ char pad_5E[2]; + /* 0x060 */ s32 curVariation; /* 0x064 */ struct BGMHeader* bgmFile; - /* 0x068 */ SegData* segmentReadPos; - /* 0x06C */ SegData* segmentStartPos; - /* 0x070 */ SegData* subSegmentStartPos; - /* 0x074 */ s32 unk_74; + /* 0x068 */ SegData* compReadPos; + /* 0x06C */ SegData* compStartPos; + /* 0x070 */ SegData* phraseStartPos; + /* 0x074 */ u8* tickRatePtr; // related to legacy command system, unused /* 0x078 */ BGMDrumInfo* drumsInfo; /* 0x07C */ BGMInstrumentInfo* instrumentsInfo; /* 0x080 */ BGMDrumInfo* drums[12]; /* 0x0B0 */ s32 masterTempo; /* 0x0B4 */ s32 masterTempoStep; /* 0x0B8 */ s32 masterTempoTarget; - /* 0x0BC */ s32 masterTempoTime; - /* 0x0C0 */ s32 masterVolume; + /* 0x0BC */ s32 masterTempoTicks; + /* 0x0C0 */ s8_24 masterVolume; /* 0x0C4 */ s32 masterVolumeStep; /* 0x0C8 */ s32 masterVolumeTarget; - /* 0x0CC */ s32 masterVolumeTime; + /* 0x0CC */ s32 masterVolumeTicks; /* 0x0D0 */ f32 playbackRate; /* 0x0D4 */ SeqArgs seqCmdArgs; - /* 0x0D8 */ SegData* segLoopStartLabels[32]; - /* 0x158 */ SegData* segActiveLoopEndPos[4]; - /* 0x168 */ u8 segLoopCounters[4]; + /* 0x0D8 */ SegData* compLoopStartLabels[32]; + /* 0x158 */ SegData* compActiveLoopEndPos[4]; + /* 0x168 */ u8 compLoopCounters[4]; /* 0x16C */ s32 proxMixValue; /* 0x170 */ u8 proxMixID; /* 0x171 */ u8 proxMixVolume; - /* 0x172 */ char unk_172[0x2]; - /* 0x174 */ s16 unk_174[8][9]; + /* 0x172 */ char pad_172[2]; + /* 0x174 */ s16 customPressEnvelopes[8][9]; /// Dynamically customizable press envelopes /* 0x204 */ u8* trackVolsConfig; /* 0x208 */ u16 masterTempoBPM; /* 0x20A */ u16 maxTempo; /* 0x20C */ u16 masterPitchShift; /* 0x20E */ s16 detune; - /* 0x210 */ u8 segLoopDepth; - /* 0x211 */ u8 unk_211; - /* 0x212 */ u8 unk_212[8]; + /* 0x210 */ u8 compLoopDepth; + /* 0x211 */ u8 writingCustomEnvelope; /// Currently active (for writing) custom envelope + /* 0x212 */ u8 customEnvelopeWritePos[8]; /// Current write position for each custom envelope /* 0x21A */ s8 volumeChanged; - /* 0x21B */ u8 unk_21B; + /* 0x21B */ u8 totalVoices; /* 0x21C */ u8 bgmDrumCount; /* 0x21D */ u8 bgmInstrumentCount; - /* 0x21E */ u8 unk_21E; - /* 0x21F */ char unk_21F[0x1]; - /* 0x220 */ u8 unk_220; + /* 0x21E */ u8 unused_21E; + /* 0x21F */ char pad_21F[1]; + /* 0x220 */ u8 paused; /* 0x221 */ u8 masterState; - /* 0x222 */ u8 unk_222; - /* 0x223 */ u8 unk_223; + /* 0x222 */ u8 unused_222; + /* 0x223 */ u8 conditionalLoopFlags; /// No means to modify value is implemented /* 0x224 */ u8 effectValues[4]; - /* 0x227 */ char unk_228[0x2]; - /* 0x22A */ u8 unk_22A[8]; + /* 0x227 */ char pad_228[2]; + /* 0x22A */ u8 polyphonyCounts[8]; /* 0x232 */ u8 bFadeConfigSetsVolume; - /* 0x233 */ u8 unk_233; + /* 0x233 */ u8 initLinkMute; /// Used to mute any linked tracks after the first one encountered. /* 0x234 */ u8 priority; - /* 0x235 */ u8 busId; - /* 0x236 */ char unk_236[0x2]; - /* 0x238 */ s32 unk_238[8]; - /* 0x258 */ u8 unk_258; - /* 0x259 */ u8 unk_259; - /* 0x25A */ u8 unk_25A; - /* 0x25B */ u8 unk_25B; + /* 0x235 */ u8 busID; + /* 0x236 */ char pad_236[2]; + /* 0x238 */ s32 cmdBufData[8]; /// Buffer for an unused (legacy) system for controlling the BGMPlayer from the main thread + /* 0x258 */ u8 cmdBufPending; + /* 0x259 */ u8 cmdBufReadPos; + /* 0x25A */ u8 cmdBufWritePos; + /* 0x25B */ u8 cmdBufOverflows; /* 0x25C */ BGMPlayerTrack tracks[16]; - /* 0x85C */ SeqNote notes[24]; + /* 0x85C */ SeqNote notes[24]; /// Currently playing notes } BGMPlayer; // size = 0xA9C +// all Song*Request structs are probably one struct with a union for args 0/1/2/3 at offsets 0x10-0x1C +// keeping them separated lets us type-check the arguments to functions which accept them + +typedef struct SongStartRequest { + /* 0x00 */ s32 songName; + /* 0x04 */ s32 duration; + /* 0x08 */ s32 startVolume; + /* 0x0C */ s32 finalVolume; + /* 0x10 */ s32 variation; + /* 0x14 */ s32 unused_14; + /* 0x18 */ char pad_18[8]; +} SongStartRequest; // size = 0x1C or 0x20 + +typedef struct SongFadeOutRequest { + /* 0x00 */ s32 songName; + /* 0x04 */ s32 duration; + /* 0x08 */ s32 unused_08; + /* 0x0C */ s32 finalVolume; + /* 0x10 */ AuCallback doneCallback; + /* 0x14 */ s32 onPush; + /* 0x18 */ char pad_18[8]; +} SongFadeOutRequest; // size = 0x1C or 0x20 + +typedef struct SongSuspendRequest { + /* 0x00 */ s32 songName; + /* 0x04 */ s32 duration; + /* 0x08 */ s32 startVolume; + /* 0x0C */ s32 finalVolume; + /* 0x10 */ s32 index; + /* 0x14 */ s32 pauseMode; /// if true, the player is paused, else it will be saved to a snapshot + /* 0x18 */ char pad_18[8]; +} SongSuspendRequest; // size = 0x1C or 0x20 + +typedef struct SongResumeRequest { + /* 0x00 */ s32 songName; + /* 0x04 */ s32 duration; + /* 0x08 */ s32 startVolume; + /* 0x0C */ s32 finalVolume; + /* 0x10 */ s32 index; + /* 0x14 */ s32 pauseMode; + /* 0x18 */ char pad_18[8]; +} SongResumeRequest; // size = 0x1C or 0x20 + +typedef struct SongSwapLinkedRequest { + /* 0x00 */ s32 songName; + /* 0x04 */ char unused_04[4]; + /* 0x08 */ char unused_08[4]; + /* 0x0C */ char unused_0C[4]; + /* 0x10 */ b32 enabled; // 0 or 1 + /* 0x18 */ char pad_14[0xC]; +} SongSwapLinkedRequest; // size = 0x1C or 0x20 + typedef struct MSEQTrackData { /* 0x0 */ u8 trackIndex; /* 0x1 */ u8 type; /* 0x2 */ s16 time; /* 0x4 */ s16 delta; - /* 0x6 */ u16 goal; + /* 0x6 */ s16 goal; } MSEQTrackData; // size = 0x8 typedef struct MSEQHeader { @@ -1106,7 +1286,8 @@ typedef struct MSEQHeader { /* 0x0D */ u8 trackSettingsCount; /* 0x0E */ u16 trackSettingsOffset; /* 0x10 */ u16 dataStart; -} MSEQHeader; // size variable + /* 0x12 */ char pad_12[6]; +} MSEQHeader; // size = 0x18 typedef struct AmbienceTrack { /* 0x00 */ Instrument* instrument; @@ -1116,16 +1297,36 @@ typedef struct AmbienceTrack { /* 0x24 */ s8 pan; /* 0x25 */ s8 reverb; /* 0x26 */ u8 flags; - /* 0x27 */ char unk_27[1]; + /* 0x27 */ char pad_27[1]; } AmbienceTrack; // size = 0x28 typedef struct AmbienceSavedVoice { /* 0x0 */ u8 trackIndex; /* 0x1 */ u8 tune; /* 0x2 */ s8 volume; - /* 0x4 */ char unk_03[1]; + /* 0x4 */ char pad_03[1]; } AmbienceSavedVoice; // size = 0x4 +/** + * @brief Compact identifier for a voice used by the ambience system. + * + * This union is used to track ownership and identity of each voice slot + * controlled by an ambience player. It can be accessed either as individual + * fields (player, track, tune, release flag) or as a single 32-bit key. + * + * This allows fast comparisons and matching of voices during updates, fades, + * and command execution (e.g. stop or pitch/volume changes). + */ +typedef union AmbVoiceStateInfo { + struct { + u8 playerIndex; /// Index of the owning ambience player + u8 trackIndex; ///< Track index within the player (0–9) + u8 tune; ///< Note or drum ID used to differentiate voices on the same track + u8 released; ///< Set to TRUE when the voice should be released/stopped + }; + s32 all; +} AmbVoiceStateInfo; + typedef struct AmbienceVoiceState { /* 0x00 */ AmbVoiceStateInfo info; /* 0x04 */ s16 pitch; @@ -1140,21 +1341,21 @@ typedef struct AmbiencePlayer { /* 0x00C */ AuFilePos loopStartPos[2]; /* 0x014 */ AmbVoiceStateInfo id; /* 0x018 */ s32 delay; - /* 0x01C */ s32 unk_1C; + /* 0x01C */ char pad_1C[4]; /* 0x020 */ s32 mseqName; /* 0x024 */ u8 mode; /* 0x025 */ u8 playState; /* 0x026 */ u8 fadeSettingsType; - /* 0x027 */ char unk_27[1]; + /* 0x027 */ char pad_27[1]; /* 0x028 */ u16 fadeSettingsTime; /* 0x02A */ u8 fadeSettingsInitial; // 255 means from current volume /* 0x02B */ u8 fadeSettingsGoal; /* 0x02C */ u8 loopCount[2]; - /* 0x02E */ char unk_2E[2]; + /* 0x02E */ char pad_2E[2]; /* 0x030 */ u32 firstVoiceIdx; /* 0x034 */ u32 lastVoiceIdx; - /* 0x038 */ s32 fadeVolume; - /* 0x03C */ s32 fadeStep; + /* 0x038 */ s8_24 fadeVolume; + /* 0x03C */ s8_24 fadeStep; /* 0x040 */ u16 fadeTime; /* 0x042 */ u8 fadeGoal; /* 0x043 */ u8 resetRequired; @@ -1162,8 +1363,6 @@ typedef struct AmbiencePlayer { /* 0x1D4 */ AmbienceSavedVoice savedVoices[4]; } AmbiencePlayer; // size = 0x1E4 -//TODO AuStreamingManager ? -// 801D57A0 typedef struct AmbienceManager { /* 0x000 */ AuGlobals* globals; /* 0x004 */ s32 nextUpdateStep; @@ -1173,23 +1372,17 @@ typedef struct AmbienceManager { /* 0x020 */ u8 numActivePlayers; /* 0x021 */ u8 loadTracksFadeInfo; /* 0x022 */ u8 priority; - /* 0x023 */ u8 busId; + /* 0x023 */ u8 busID; /* 0x024 */ AmbiencePlayer players[4]; /* 0x7B4 */ AmbienceVoiceState voiceStates[16]; } AmbienceManager; -typedef struct AlUnkGemini { - /* 0x00 */ u16 sound1; - /* 0x02 */ u16 sound2; - /* 0x04 */ u8 flags; -} AlUnkGemini; // size = 0x5 - typedef struct ALConfig { /* 0x00 */ s32 num_pvoice; /* 0x04 */ s32 num_bus; - /* 0x08 */ s32 outputRate; - /* 0x0C */ u8 unk_0C; - /* 0x0D */ char unk_0D[3]; + /* 0x08 */ s32 outputRate; /// hardware sample output rate + /* 0x0C */ u8 unused_0C; + /* 0x0D */ char pad_0D[3]; /* 0x10 */ void* dmaNew; /* 0x14 */ ALHeap* heap; } ALConfig; // size = 0x18; @@ -1197,8 +1390,8 @@ typedef struct ALConfig { #ifndef NO_EXTERN_VARIABLES extern volatile u8 AuSynUseStereo; -extern u16 DummyInstrumentPredictor[32]; -extern u8 DummyInstrumentBase[190]; +extern s16 DummyInstrumentCodebook[32]; +extern u8 DummyInstrumentWavData[190]; extern s32 CUSTOM_SMALL_ROOM_PARAMS[]; extern s32 CUSTOM_ECHO_PARAMS_1[]; extern s32 CUSTOM_ECHO_PARAMS_3[]; @@ -1207,7 +1400,7 @@ extern EnvelopePreset DummyInstrumentEnvelope; extern u8 AmbientSoundIDtoMSEQFileIndex[]; extern s32 AuEnvelopeIntervals[]; extern s32 PreventBGMPlayerUpdate; -extern u16 AuAmbiencePlayOnlyIndex; +extern u16 AmbienceRadioChannel; extern AuSynDriver* gActiveSynDriverPtr; extern AuSynDriver* gSynDriverPtr; diff --git a/src/audio/2d9a0_len_890.c b/src/audio/2d9a0_len_890.c deleted file mode 100644 index ec2745aad7..0000000000 --- a/src/audio/2d9a0_len_890.c +++ /dev/null @@ -1,254 +0,0 @@ -#include "common.h" -#include "audio.h" - -void au_update_stopped_voices(AuGlobals* globals) { - s32 i; - - for (i = 0; i < ARRAY_COUNT(globals->voices); i++) { - AuVoice* voice = &globals->voices[i]; - - if (voice->stopPending) { - au_syn_stop_voice(i); - voice->stopPending = FALSE; - voice->cmdPtr = NULL; - voice->priority = AU_PRIORITY_FREE; - } - } -} - -void au_init_voices(AuGlobals* globals) { - s32 i; - - for (i = 0; i < ARRAY_COUNT(globals->voices); i++) { - AuVoice* voice = &globals->voices[i]; - - voice->cmdPtr = NULL; - voice->unk_20 = 0; - voice->volChangeTime = 0; - voice->timeLeft = 0; - voice->timeIntervalIndex = 0; - voice->unk_3C = 0; - voice->envelopeFlags = 0; - voice->relativeReleaseVolumes = FALSE; - voice->releaseVolumeMult = 0x80; - } -} - -void au_update_voices(AuGlobals* globals) { - AuVoice* voice; - s8 var_a0; - s16 currentAmp; - s32 i; - - for (i = 0; i < ARRAY_COUNT(globals->voices); i++) { - voice = &globals->voices[i]; - if (voice->cmdPtr == NULL) { - continue; - } - if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_HANDLED_VOL_CHANGE) { - // client volume changed on previous frame - au_voice_after_volume_change(voice); - continue; - } - if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_KEY_RELEASED) { - // client released the key - voice->envelopeFlags &= ~AU_VOICE_ENV_FLAG_KEY_RELEASED; - voice->envelopeFlags |= AU_VOICE_ENV_FLAG_STOP; - voice->cmdPtr = (u8*)voice->envelope.cmdListRelease; - - // the key can be released before press cmdlist processed completely, we must handle this case properly - if (voice->timeLeft > AU_5750) { - voice->initialAmp = voice->initialAmp + (s32) (voice->rate * (f32) (voice->volChangeTime - voice->timeLeft)); - } else { - voice->initialAmp = voice->targetAmp; - } - - voice->timeIntervalIndex = *voice->cmdPtr++; - var_a0 = *voice->cmdPtr; - if (*(s8*)voice->cmdPtr++ < 0) { - // in this case release volumes are relative to last press volume - var_a0 &= 0x7F; - voice->relativeReleaseVolumes = TRUE; - voice->releaseVolumeMult = voice->initialAmp; - } - voice->targetAmp = var_a0; - - voice->timeLeft = AuEnvelopeIntervals[voice->timeIntervalIndex]; - voice->volChangeTime = voice->timeLeft; - if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_VOL_CHANGED) { - voice->envelopeFlags &= ~AU_VOICE_ENV_FLAG_VOL_CHANGED; - if (voice->timeLeft > AU_5750) { - voice->timeLeft -= AU_5750; - voice->envelopeFlags |= AU_VOICE_ENV_FLAG_HANDLED_VOL_CHANGE; - currentAmp = voice->initialAmp + (s32) (voice->rate * (voice->volChangeTime - voice->timeLeft)); - } else { - currentAmp = voice->targetAmp; - } - voice->delta = AUDIO_SAMPLES; - } else { - voice->delta = au_voice_get_delta(voice->volChangeTime); - currentAmp = voice->targetAmp; - } - voice->p_volume = (((currentAmp * voice->clientVolume * voice->releaseVolumeMult) >> 0xE) * voice->volMult) >> 7; - voice->syncFlags |= AU_VOICE_SYNC_FLAG_PARAMS; - } else { - if (voice->timeLeft == -1) { - // keep current volume, this is 'sustain' phase - if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_VOL_CHANGED) { - voice->envelopeFlags &= ~AU_VOICE_ENV_FLAG_VOL_CHANGED; - voice->p_volume = (((voice->initialAmp * voice->clientVolume * voice->releaseVolumeMult) >> 0xE) * voice->volMult) >> 7; - voice->syncFlags |= AU_VOICE_SYNC_FLAG_PARAMS; - } - } else { - voice->timeLeft -= AU_5750; - if (voice->timeLeft <= 0) { - if (*voice->cmdPtr == ENV_CMD_END) { - if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_STOP) { - // if we reached the end after key release, stop the voice completely - voice->envelopeFlags = 0; - voice->cmdPtr = NULL; - voice->stopPending = TRUE; - } else { - // we reached the end of press cmdlist, keep the last volume until the key is released - voice->timeLeft = -1; - voice->volChangeTime = -1; - voice->timeIntervalIndex = ENV_TIME_300MS; // doesn't seem to affect anything - voice->delta = AUDIO_SAMPLES; - voice->rate = 0.0f; - voice->initialAmp = voice->targetAmp; - } - } else { - // get next envelope point - voice->timeIntervalIndex = au_voice_step(voice); - voice->initialAmp = voice->targetAmp; - voice->targetAmp = (*voice->cmdPtr++) & 0x7F; - voice->timeLeft = AuEnvelopeIntervals[voice->timeIntervalIndex]; - voice->volChangeTime = voice->timeLeft; - if (voice->volChangeTime != 0) { - voice->rate = ((f32) voice->targetAmp - (f32) voice->initialAmp) / (f32) voice->volChangeTime; - } else { - voice->rate = 0.0f; - } - if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_VOL_CHANGED) { - voice->envelopeFlags &= ~AU_VOICE_ENV_FLAG_VOL_CHANGED; - if (voice->timeLeft > AU_5750) { - voice->timeLeft -= AU_5750; - voice->envelopeFlags |= AU_VOICE_ENV_FLAG_HANDLED_VOL_CHANGE; - currentAmp = voice->initialAmp + (s32) (voice->rate * (voice->volChangeTime - voice->timeLeft)); - } else { - currentAmp = voice->targetAmp; - } - voice->delta = AUDIO_SAMPLES; - } else { - voice->delta = au_voice_get_delta(voice->volChangeTime); - currentAmp = voice->targetAmp; - } - voice->p_volume = (((currentAmp * voice->clientVolume * voice->releaseVolumeMult) >> 0xE) * voice->volMult) >> 7; - voice->syncFlags |= AU_VOICE_SYNC_FLAG_PARAMS; - } - } else { - // we are between two envelope points, do nothing, just handle client volume change - if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_VOL_CHANGED) { - voice->envelopeFlags &= ~AU_VOICE_ENV_FLAG_VOL_CHANGED; - if (voice->timeLeft > AU_5750) { - voice->timeLeft -= AU_5750; - voice->envelopeFlags |= AU_VOICE_ENV_FLAG_HANDLED_VOL_CHANGE; - currentAmp = voice->initialAmp + (s32) (voice->rate * (voice->volChangeTime - voice->timeLeft)); - } else { - currentAmp = voice->targetAmp; - } - voice->delta = AUDIO_SAMPLES; - voice->p_volume = (((currentAmp * voice->clientVolume * voice->releaseVolumeMult) >> 0xE) * voice->volMult) >> 7; - voice->syncFlags |= AU_VOICE_SYNC_FLAG_PARAMS; - } - } - } - } - } -} - -void au_voice_after_volume_change(AuVoice* voice) { - voice->p_volume = (((voice->targetAmp * voice->clientVolume * voice->releaseVolumeMult) >> 14) * voice->volMult) >> 7; - voice->delta = au_voice_get_delta(voice->timeLeft); - voice->envelopeFlags &= ~AU_VOICE_ENV_FLAG_HANDLED_VOL_CHANGE; - voice->syncFlags |= AU_VOICE_SYNC_FLAG_PARAMS; -} - -s32 au_voice_get_delta(s32 msecs) { - return (msecs / AU_5750) * AUDIO_SAMPLES; -} - -void au_voice_start(AuVoice* voice, EnvelopeData* envData) { - s32 intervalIndex; - - voice->envelope.cmdListPress = envData->cmdListPress; - voice->cmdPtr = voice->envelope.cmdListPress; - voice->envelope.cmdListRelease = envData->cmdListRelease; - voice->volMult = 0x80; - voice->loopStart = NULL; - - intervalIndex = au_voice_step(voice); - voice->envelopeFlags = 0; - voice->initialAmp = 0; - voice->targetAmp = *voice->cmdPtr++; - voice->timeIntervalIndex = intervalIndex; - voice->volChangeTime = AuEnvelopeIntervals[intervalIndex]; - voice->timeLeft = voice->volChangeTime; - - voice->p_volume = (voice->targetAmp * voice->clientVolume * voice->volMult) >> 14; - voice->delta = au_voice_get_delta(voice->volChangeTime); - if (voice->volChangeTime != 0) { - voice->rate = ((f32) voice->targetAmp - (f32) voice->initialAmp) / voice->volChangeTime; - } else { - voice->rate = 0.0f; - } - voice->relativeReleaseVolumes = FALSE; - voice->releaseVolumeMult = 0x80; -} - -// performs special commands and returns interval index -u8 au_voice_step(AuVoice* voice) { - u32 op; - u8 arg; - - while (TRUE) { - if (((s8)(op = *voice->cmdPtr++)) >= 0) { - break; - } - switch ((u8)op) { - case ENV_CMD_SET_MULTIPLIER: - arg = *voice->cmdPtr++; - if (arg > 0x80) { - arg = 0x80; - } - voice->volMult = arg; - break; - case ENV_CMD_ADD_MULTIPLIER: - voice->volMult += (s8) *voice->cmdPtr++; - if (voice->volMult > 0x80) { - voice->volMult = 0x80; - } else if (voice->volMult < 0) { - voice->volMult = 0; - } - break; - case ENV_CMD_START_LOOP: - voice->loopCounter = *voice->cmdPtr++; // 0 means infinite loop - voice->loopStart = voice->cmdPtr; - break; - case ENV_CMD_END_LOOP: - voice->cmdPtr++; - if (voice->loopCounter == 0 || --voice->loopCounter != 0) { - voice->cmdPtr = voice->loopStart; - } - break; - default: - voice->cmdPtr++; - break; - } - } - return op; -} - -void au_voice_set_vol_changed(AuVoice* voice) { - voice->envelopeFlags |= AU_VOICE_ENV_FLAG_VOL_CHANGED; -} diff --git a/src/audio/ambience.c b/src/audio/ambience.c index 9743aaa48c..ef98ec7189 100644 --- a/src/audio/ambience.c +++ b/src/audio/ambience.c @@ -10,11 +10,15 @@ typedef struct { } AmbientSoundSettings; typedef enum AmbientSoundState { - AMBIENT_SOUND_IDLE = 0, - AMBIENT_SOUND_FADE_OUT = 1, // fade out old sounds - AMBIENT_SOUND_FADE_IN = 2 // fade in new sounds + AMBIENCE_STATE_IDLE = 0, + AMBIENCE_STATE_FADE_OUT = 1, // fade out old sounds + AMBIENCE_STATE_FADE_IN = 2 // fade in new sounds } AmbientSoundState; +typedef enum AmbientSoundFlag { + AMBIENCE_FLAG_PLAYING = 1, +} AmbientSoundFlag; + AmbientSoundSettings DefaultAmbientSoundData = { .flags = 0, .fadeState = 0, @@ -34,9 +38,9 @@ void update_ambient_sounds(void) { s32 error; switch (ambientSoundState->fadeState) { - case AMBIENT_SOUND_IDLE: + case AMBIENCE_STATE_IDLE: break; - case AMBIENT_SOUND_FADE_OUT: + case AMBIENCE_STATE_FADE_OUT: if (ambientSoundState->flags & 1) { if (ambientSoundState->fadeTime < 250) { error = snd_ambient_stop_quick(0); @@ -48,21 +52,21 @@ void update_ambient_sounds(void) { return; } } - ambientSoundState->fadeState = AMBIENT_SOUND_FADE_IN; + ambientSoundState->fadeState = AMBIENCE_STATE_FADE_IN; break; - case AMBIENT_SOUND_FADE_IN: - if (ambientSoundState->flags & 1) { + case AMBIENCE_STATE_FADE_IN: + if (ambientSoundState->flags & AMBIENCE_FLAG_PLAYING) { if (snd_ambient_is_stopped(0) != AU_RESULT_OK) { return; } - ambientSoundState->flags &= ~1; + ambientSoundState->flags &= ~AMBIENCE_FLAG_PLAYING; } if (ambientSoundState->soundID < 0) { - ambientSoundState->fadeState = AMBIENT_SOUND_IDLE; + ambientSoundState->fadeState = AMBIENCE_STATE_IDLE; } else if (snd_load_ambient(ambientSoundState->soundID) == AU_RESULT_OK) { if (snd_ambient_play(0, 0) == AU_RESULT_OK) { - ambientSoundState->fadeState = AMBIENT_SOUND_IDLE; - ambientSoundState->flags |= 1; + ambientSoundState->fadeState = AMBIENCE_STATE_IDLE; + ambientSoundState->flags |= AMBIENCE_FLAG_PLAYING; } } break; @@ -74,7 +78,7 @@ s32 play_ambient_sounds(s32 soundID, s32 fadeTime) { if (!gGameStatusPtr->musicEnabled) { snd_ambient_stop_quick(state->soundID); - state->flags &= ~1; + state->flags &= ~AMBIENCE_FLAG_PLAYING; return 1; } @@ -84,6 +88,6 @@ s32 play_ambient_sounds(s32 soundID, s32 fadeTime) { state->soundID = soundID; state->fadeTime = fadeTime; - state->fadeState = AMBIENT_SOUND_FADE_OUT; + state->fadeState = AMBIENCE_STATE_FADE_OUT; return 1; } diff --git a/src/audio/bgm_control.c b/src/audio/bgm_control.c new file mode 100644 index 0000000000..f5aad0e5c7 --- /dev/null +++ b/src/audio/bgm_control.c @@ -0,0 +1,439 @@ +#include "common.h" +#include "npc.h" +#include "audio.h" + +void bgm_update_volume(void); +void bgm_set_target_volume(s32 volume); + +BSS s16 MusicDefaultVolume; +BSS s16 MusicTargetVolume; +BSS s16 MusicMaxVolume; +BSS s16 MusicCurrentVolume; + +MusicControlData gMusicControlData[2]; + +MusicControlData BlankMusicControlData = { + .flags = 0, + .state = MUSIC_STATE_IDLE, + .fadeOutTime = -1, + .fadeInTime = 0, + .fadeStartVolume = 0, + .fadeEndVolume = 0, + .requestedSongID = AU_SONG_NONE, + .variation = -1, + .songName = -1, + .battleSongID = 0, + .battleVariation = 0, + .savedSongID = 0, + .savedVariation = 0, + .savedSongName = 0 +}; + +/// Lists the songs that are forced to use the variation determined by `map.songVariation & 1`. +/// @see bgm_get_map_default_variation +s32 SongsUsingVariationFlag[] = { + SONG_SPECIAL_BATTLE, + SONG_TUBBA_BLUBBA_BATTLE, + SONG_JR_TROOPA_BATTLE, + SONG_YOSHI_KIDS_FOUND, + SONG_ITEM_UPGRADE, + SONG_NEW_PARTNER, +}; + +s16 NextVolumeUpdateTimer = 0; + +/// If the given song ID is present in SongsUsingVariationFlag, returns the current +/// map's `songVariation & 1` value. Otherwise, returns -1. +/// +/// @see SongsUsingVariationFlag +/// @returns -1: no override; 0: override to variation 0; 1 override to variation 1 +s32 bgm_get_map_default_variation(s32 songID) { + u32 i; + + for (i = 0; i < ARRAY_COUNT(SongsUsingVariationFlag); i++) { + if (SongsUsingVariationFlag[i] == songID) { + MapConfig* map = &gAreas[gGameStatusPtr->areaID].maps[gGameStatusPtr->mapID]; + + return map->songVariation & 1; + } + } + + return -1; +} + +void bgm_reset_sequence_players(void) { + s32 i; + + for (i = 0; i < ARRAY_COUNT(gMusicControlData); i++) { + gMusicControlData[i] = BlankMusicControlData; + } + + MusicTargetVolume = VOL_LEVEL_FULL; + MusicMaxVolume = VOL_LEVEL_FULL; + MusicCurrentVolume = VOL_LEVEL_FULL; + snd_set_bgm_volume(VOL_LEVEL_FULL); +} + +void bgm_reset_volume(void) { + MusicTargetVolume = VOL_LEVEL_FULL; + MusicMaxVolume = VOL_LEVEL_FULL; +} + +//TODO refactor out constants +void bgm_update_music_control(void) { + MusicControlData* music = gMusicControlData; + s32 i = 0; + s16 stateFadeOut = MUSIC_STATE_AWAIT_FADEOUT; + s16 pushedFlag = MUSIC_FLAG_PUSHING; + s32 flags; + + for (i; i < ARRAY_COUNT(gMusicControlData); i++, music++) { + switch (music->state) { + case MUSIC_STATE_IDLE: + break; + case MUSIC_STATE_STOP_CURRENT: + if (music->flags & MUSIC_FLAG_PLAYING) { + if (music->fadeOutTime < 250) { + if (!(music->flags & MUSIC_FLAG_PUSHING)) { + if (snd_song_stop(music->songName) == AU_RESULT_OK) { + music->state = stateFadeOut; + } + } else { + if (snd_song_push_stop(music->songName) == AU_RESULT_OK) { + music->state = stateFadeOut; + } + } + } else if (!(music->flags & MUSIC_FLAG_PUSHING)) { + if (snd_song_request_fade_out(music->songName, music->fadeOutTime, NULL) == AU_RESULT_OK) { + music->state = stateFadeOut; + } + } else { + if (snd_song_request_push_fade_out(music->songName, 250) == AU_RESULT_OK) { + music->state = stateFadeOut; + } + } + } else { + if (music->flags & MUSIC_FLAG_PUSHING) { + // nothing was playing in this case, so remember to skip the next pop + music->flags |= MUSIC_FLAG_IGNORE_POP; + } + music->flags &= ~pushedFlag; + music->state = MUSIC_STATE_PLAY_NEXT; + } + break; + case MUSIC_STATE_AWAIT_FADEOUT: + flags = music->flags; + music->flags &= ~pushedFlag; + if (flags & MUSIC_FLAG_PLAYING) { + if (snd_song_is_playing(music->songName) == AU_RESULT_OK) { + music->flags &= ~MUSIC_FLAG_PLAYING; + music->state = MUSIC_STATE_DELAY_2; + } + } else { + music->state = MUSIC_STATE_PLAY_NEXT; + } + break; + case MUSIC_STATE_DELAY_2: + music->state = MUSIC_STATE_DELAY_1; + break; + case MUSIC_STATE_DELAY_1: + music->state = MUSIC_STATE_PLAY_NEXT; + break; + case MUSIC_STATE_PLAY_NEXT: + if (!(music->flags & MUSIC_FLAG_POPPING)) { + if (music->requestedSongID <= AU_SONG_NONE) { + // new song is AU_SONG_NONE, play nothing + music->state = MUSIC_STATE_IDLE; + } else { + music->songName = snd_song_load(music->requestedSongID, i); + // snd_song_lond may return either songName or an AuResult error code. + // since song names are 4-character big-endian identifiers packed into an s32, we require + // the upper half of the return value to be nonzero for songs which loaded without error. + // this reserves return values from 0 to 0xFFFF for AuResult codes. + if (music->songName > 0xFFFFU) { + if ((music->flags & MUSIC_FLAG_FADE_IN_NEXT)) { + snd_song_request_fade_in(music->songName, music->variation, + music->fadeInTime, music->fadeStartVolume, music->fadeEndVolume); + music->flags &= ~MUSIC_FLAG_FADE_IN_NEXT; + } else { + // if we aren't fading in, just start at the default volume level + bgm_set_target_volume(MusicDefaultVolume); + } + /// @bug this is called even if we are trying to fade in, immediately overriding any fade parameters + if (snd_song_request_play(music->songName, music->variation) == AU_RESULT_OK) { + music->flags |= MUSIC_FLAG_PLAYING; + music->state = MUSIC_STATE_IDLE; + } + } + } + } else { + if (music->flags & MUSIC_FLAG_IGNORE_POP) { + music->state = MUSIC_STATE_IDLE; + music->flags &= ~(MUSIC_FLAG_IGNORE_POP | MUSIC_FLAG_POPPING); + } else if (snd_song_request_pop(music->savedSongName) == AU_RESULT_OK) { + music->requestedSongID = music->savedSongID; + music->variation = music->savedVariation; + music->songName = music->savedSongName; + music->state = MUSIC_STATE_IDLE; + music->flags |= MUSIC_FLAG_PLAYING; + music->flags &= ~MUSIC_FLAG_POPPING; + } + } + break; + } + } + bgm_update_volume(); +} + +s32 _bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) { + MusicControlData* music; + s32 mapSongVariation; + + if (gGameStatusPtr->demoState != DEMO_STATE_NONE) { + return 1; + } + + music = &gMusicControlData[playerIndex]; + + if (!gGameStatusPtr->musicEnabled) { + snd_song_stop(music->songName); + music->flags &= ~MUSIC_FLAG_PLAYING; + return 1; + } + + mapSongVariation = bgm_get_map_default_variation(songID); + if (mapSongVariation >= 0) { + variation = mapSongVariation; + } + + if (music->requestedSongID == songID && music->variation == variation) { + bgm_set_target_volume(volume); + + if (music->flags & MUSIC_FLAG_PUSHING) { + snd_song_request_snapshot(music->songName); + music->flags &= ~MUSIC_FLAG_PUSHING; + } + + return 2; + } + + MusicDefaultVolume = volume; + music->requestedSongID = songID; + music->variation = variation; + music->fadeOutTime = fadeOutTime; + music->state = MUSIC_STATE_STOP_CURRENT; + music->flags &= ~MUSIC_FLAG_ENABLE_PROX_MIX; + + return 1; +} + +s32 bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) { + gMusicControlData[playerIndex].flags &= ~MUSIC_FLAG_POPPING; + + return _bgm_set_song(playerIndex, songID, variation, fadeOutTime, volume); +} + +b32 bgm_fade_in_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s16 fadeStartVolume, s16 fadeEndVolume) { + MusicControlData* music; + s32 mapSongVariation; + + if (gGameStatusPtr->demoState) { + return TRUE; + } + + music = &gMusicControlData[playerIndex]; + + if (!gGameStatusPtr->musicEnabled) { + snd_song_stop(music->songName); + music->flags &= ~MUSIC_FLAG_PLAYING; + return TRUE; + } + + mapSongVariation = bgm_get_map_default_variation(songID); + if (mapSongVariation >= 0) { + variation = mapSongVariation; + } + + music->fadeInTime = fadeInTime; + music->fadeStartVolume = fadeStartVolume; + music->fadeEndVolume = fadeEndVolume; + music->requestedSongID = songID; + music->variation = variation; + music->flags |= MUSIC_FLAG_FADE_IN_NEXT; + music->state = MUSIC_STATE_STOP_CURRENT; + music->flags &= ~MUSIC_FLAG_ENABLE_PROX_MIX; + + return TRUE; +} + +s32 bgm_adjust_proximity(s32 playerIndex, s32 mix, s16 state) { + MusicControlData* music = &gMusicControlData[playerIndex]; + + if (!(music->flags & MUSIC_FLAG_PLAYING)) { + return FALSE; + } + + if (!(music->flags & MUSIC_FLAG_ENABLE_PROX_MIX)) { + return FALSE; + } + + switch (state) { + case MUSIC_PROXIMITY_FAR: + snd_song_set_proximity_mix_far(music->songName, mix); + break; + case MUSIC_PROXIMITY_NEAR: + snd_song_set_proximity_mix_near(music->songName, mix); + break; + case MUSIC_PROXIMITY_FULL: + snd_song_set_proximity_mix_full(music->songName, mix); + break; + } + return TRUE; +} + +AuResult bgm_set_track_volumes(s32 playerIndex, s16 trackVolSet) { + MusicControlData* music = &gMusicControlData[playerIndex]; + + if (!(music->flags & MUSIC_FLAG_PLAYING)) { + return AU_RESULT_OK; + } + + return snd_song_set_track_volumes(music->songName, trackVolSet); +} + +AuResult bgm_clear_track_volumes(s32 playerIndex, s16 trackVolSet) { + MusicControlData* music = &gMusicControlData[playerIndex]; + + if (!(music->flags & MUSIC_FLAG_PLAYING)) { + return AU_RESULT_OK; + } + + return snd_song_clear_track_volumes(music->songName, trackVolSet); +} + +AuResult bgm_set_linked_mode(s32 playerIndex, b16 mode) { + MusicControlData* music = &gMusicControlData[playerIndex]; + + if (!(music->flags & MUSIC_FLAG_PLAYING)) { + return AU_RESULT_OK; + } + + return snd_song_set_linked_mode(music->songName, mode); +} + +s32 bgm_init_music_players(void) { + bgm_set_song(0, AU_SONG_NONE, 0, 250, VOL_LEVEL_FULL); + bgm_set_song(1, AU_SONG_NONE, 0, 250, VOL_LEVEL_FULL); + + return 1; +} + +void bgm_quiet_max_volume(void) { + MusicMaxVolume = VOL_LEVEL_4; +} + +void bgm_reset_max_volume(void) { + MusicMaxVolume = VOL_LEVEL_FULL; +} + +void bgm_set_target_volume(s32 volume) { + MusicTargetVolume = volume; +} + +void bgm_update_volume(void) { + s16 toVolume; + + if (NextVolumeUpdateTimer != 0) { + NextVolumeUpdateTimer--; + return; + } + + toVolume = MusicTargetVolume; + if (toVolume > MusicMaxVolume) { + toVolume = MusicMaxVolume; + } + + if (MusicCurrentVolume != toVolume) { + if (MusicCurrentVolume >= toVolume) { + MusicCurrentVolume--; + } else { + MusicCurrentVolume++; + } + snd_set_bgm_volume(MusicCurrentVolume); + NextVolumeUpdateTimer = 3; + } +} + +b32 bgm_is_any_song_playing(void) { + MusicControlData* music = gMusicControlData; + s32 i; + + for (i = 0; i < ARRAY_COUNT(gMusicControlData); i++, music++) { + if (music->flags & MUSIC_FLAG_PLAYING) { + if (snd_song_is_playing(music->songName)) { + return TRUE; + } + } + } + return FALSE; +} + +void bgm_pop_song(void) { + MusicControlData* music = gMusicControlData; + + if (gGameStatusPtr->demoState == DEMO_STATE_NONE) { + music->flags |= MUSIC_FLAG_POPPING; + _bgm_set_song(0, music->savedSongID, music->savedVariation, 0, VOL_LEVEL_FULL); + } +} + +void bgm_push_song(s32 songID, s32 variation) { + MusicControlData* music = gMusicControlData; + + if (gGameStatusPtr->demoState == DEMO_STATE_NONE) { + music->savedSongID = music->requestedSongID; + music->savedVariation = music->variation; + music->savedSongName = music->songName; + music->flags |= MUSIC_FLAG_PUSHING; + bgm_set_song(0, songID, variation, 500, VOL_LEVEL_FULL); + } +} + +void bgm_pop_battle_song(void) { + MusicControlData* music = gMusicControlData; + + if (gGameStatusPtr->demoState == DEMO_STATE_NONE) { + if (gOverrideFlags & GLOBAL_OVERRIDES_DONT_RESUME_SONG_AFTER_BATTLE) { + gOverrideFlags &= ~GLOBAL_OVERRIDES_DONT_RESUME_SONG_AFTER_BATTLE; + } else { + music->flags |= MUSIC_FLAG_POPPING; + _bgm_set_song(0, music->savedSongID, music->savedVariation, 0, VOL_LEVEL_FULL); + snd_ambient_resume(0, 250); + } + } +} + +void bgm_push_battle_song(void) { + MusicControlData* music = gMusicControlData; + + if (gGameStatusPtr->demoState == DEMO_STATE_NONE) { + if (!(gOverrideFlags & GLOBAL_OVERRIDES_DONT_RESUME_SONG_AFTER_BATTLE)) { + snd_ambient_pause(0, 250); + music->savedSongID = music->requestedSongID; + music->savedVariation = music->variation; + music->savedSongName = music->songName; + music->flags |= MUSIC_FLAG_PUSHING; + bgm_set_song(0, music->battleSongID, music->battleVariation, 500, VOL_LEVEL_FULL); + } + } +} + +void bgm_set_battle_song(s32 songID, s32 variation) { + MusicControlData* music = gMusicControlData; + + music->battleSongID = songID; + music->battleVariation = variation; +} + +void bgm_NOOP(void) { +} diff --git a/src/audio/28910_len_5090.c b/src/audio/bgm_player.c similarity index 52% rename from src/audio/28910_len_5090.c rename to src/audio/bgm_player.c index 1d9926d5ad..8b221478f5 100644 --- a/src/audio/28910_len_5090.c +++ b/src/audio/bgm_player.c @@ -1,10 +1,11 @@ #include "audio.h" +#include "audio/core.h" BSS void (*CurrentSeqCmdHandler)(BGMPlayer*, BGMPlayerTrack*); extern u8 EnvelopeReleaseDefaultFast[]; -extern u8 BgmDivisors[8]; -extern u8 D_80078558[40]; +extern u8 BgmTicksRates[8]; +extern u8 BgmCustomEnvLookup[40]; extern void (*SefCmdHandlers[])(SoundManager*, SoundPlayer*); extern void (*SeqCmdHandlers[])(BGMPlayer*, BGMPlayerTrack*); @@ -12,61 +13,62 @@ extern u8 SeqCmdArgCounts[]; static void au_bgm_stop_player(BGMPlayer* player); -static s32 snd_bpm_to_tempo(BGMPlayer* player, u32 tempo); +static s32 au_bgm_bpm_to_tempo(BGMPlayer* player, u32 tempo); static u8 au_bgm_get_random_pan(BGMPlayer* player, u8 arg1, u8 arg2); static s16 au_bgm_get_random_pitch(s32 arg0, s32 arg1, u8 arg2); static u8 au_bgm_get_random_vol(s32 arg0, u8 volume, u8 arg2); static u8 au_bgm_get_random_reverb(s32 arg0, u8 arg1, u8 arg2); -void au_bgm_update_main(BGMPlayer* player) { +void au_bgm_begin_video_frame(BGMPlayer* player) { BGMHeader* bgmFile; BGMFileInfo* bgmData; s32 unkType; - u32 segmentID; - s32 segmentOffset; + u32 compID; + s32 compOffset; u32 value; - s32 delta; + s32 consumed; u8 var_a1; u8 pos; u32 i; - segmentID = 0; + compID = 0; unkType = -1; - player->updateCounter++; + player->frameCounter++; - if (player->unk_258 != 0) { - if (player->unk_258 < ARRAY_COUNT(player->unk_238)) { - pos = player->unk_259; - for (var_a1 = 0; var_a1 < player->unk_258; var_a1++) { - value = player->unk_238[pos]; + if (player->cmdBufPending != 0) { + if (player->cmdBufPending < ARRAY_COUNT(player->cmdBufData)) { + pos = player->cmdBufReadPos; + for (var_a1 = 0; var_a1 < player->cmdBufPending; var_a1++) { + value = player->cmdBufData[pos]; if (value != 0) { if (value < 16) { unkType = value & 3; - segmentID = value >> 2; + compID = value >> 2; } pos++; - if (pos >= ARRAY_COUNT(player->unk_238)) { + if (pos >= ARRAY_COUNT(player->cmdBufData)) { pos = 0; } } } - delta = player->unk_25A - player->unk_259; - if (delta < 0) { - delta += ARRAY_COUNT(player->unk_238); + consumed = player->cmdBufWritePos - player->cmdBufReadPos; + if (consumed < 0) { + consumed += ARRAY_COUNT(player->cmdBufData); } - player->unk_258 -= delta; - player->unk_259 = player->unk_25A; + player->cmdBufPending -= consumed; + player->cmdBufReadPos = player->cmdBufWritePos; } else { - player->unk_258 = 0; + player->cmdBufPending = 0; } + if (unkType != -1) { if (unkType != 0) { if (unkType != player->unk_58) { player->unk_58 = unkType & 0xFF; player->unk_5A = unkType & 0xFF; player->masterState = BGM_PLAY_STATE_INIT; - player->nextUpdateStep = BGM_SAMPLE_RATE; + player->nextUpdateStep = BGM_DEFAULT_UPDATE_STEP; if (unkType == 2) { bgmFile = player->globals->dataBGM[1]; } else { @@ -74,14 +76,14 @@ void au_bgm_update_main(BGMPlayer* player) { } player->bgmFile = bgmFile; bgmData = &bgmFile->info; - func_8004E880(player, BGM_SAMPLE_RATE, BgmDivisors[((u8*)player->unk_74)[0] & 7]); //TODO revise unk_74 typing + au_bgm_set_tick_resolution(player, BGM_DEFAULT_UPDATE_STEP, BgmTicksRates[*(player->tickRatePtr) & 7]); - segmentOffset = bgmData->segments[segmentID]; - if (segmentOffset == 0) { - segmentOffset = bgmData->segments[0]; + compOffset = bgmData->compositions[compID]; + if (compOffset == 0) { + compOffset = bgmData->compositions[0]; } - player->segmentStartPos = AU_FILE_RELATIVE(bgmFile, segmentOffset << 2); - player->segmentReadPos = AU_FILE_RELATIVE(bgmFile, segmentOffset << 2); + player->compStartPos = AU_FILE_RELATIVE(bgmFile, compOffset << 2); + player->compReadPos = AU_FILE_RELATIVE(bgmFile, compOffset << 2); if (bgmData->drums != 0) { player->drumsInfo = AU_FILE_RELATIVE(player->bgmFile, bgmData->drums << 2); @@ -130,7 +132,7 @@ BGMPlayer* au_bgm_get_player_with_song_name(s32 songString) { return NULL; } -AuResult au_bgm_dispatch_player_event(SongUpdateEvent* event) { +AuResult au_bgm_process_init_song(SongStartRequest* request) { BGMPlayer* player; BGMFileInfo* fileInfo; s32 songName; @@ -142,13 +144,14 @@ AuResult au_bgm_dispatch_player_event(SongUpdateEvent* event) { u32 i; status = AU_RESULT_OK; - songName = event->songName; - variation = event->variation; + songName = request->songName; + variation = request->variation; + if (songName != 0) { player = au_bgm_get_player_with_song_name(songName); if (player != NULL) { fileInfo = &player->bgmFile->info; - duration = event->duration; + duration = request->duration; if (duration != 0) { if (duration > SND_MAX_DURATION) { duration = SND_MAX_DURATION; @@ -156,35 +159,35 @@ AuResult au_bgm_dispatch_player_event(SongUpdateEvent* event) { duration = SND_MIN_DURATION; } } - volume0 = event->startVolume; - if (volume0 > 0x7F) { - volume0 = 0x7F; + volume0 = request->startVolume; + if (volume0 > AU_MAX_VOLUME_8) { + volume0 = AU_MAX_VOLUME_8; } if (volume0 != 0) { - volume0 = (volume0 << 8) | 0xFF; + volume0 = AU_VOL_8_TO_16(volume0); } - volume1 = event->finalVolume; - if (volume1 > 0x7F) { - volume1 = 0x7F; + volume1 = request->finalVolume; + if (volume1 > AU_MAX_VOLUME_8) { + volume1 = AU_MAX_VOLUME_8; } if (volume1 != 0) { - volume1 = (volume1 << 8) | 0xFF; + volume1 = AU_VOL_8_TO_16(volume1); } else { - volume1 = 0x7FFF; + volume1 = AU_MAX_VOLUME_16; } au_fade_init(&player->fadeInfo, duration, volume0, volume1); - player->fadeInfo.targetVolScale = 0x7FFF; - player->fadeInfo.volScaleTime = 1; - func_8004E880(player, BGM_SAMPLE_RATE, BgmDivisors[fileInfo->numSegments & 7]); + player->fadeInfo.envelopeTarget = AU_MAX_VOLUME_16; + player->fadeInfo.envelopeTicks = 1; + au_bgm_set_tick_resolution(player, BGM_DEFAULT_UPDATE_STEP, BgmTicksRates[fileInfo->timingPreset & 7]); - if (variation < 0 || variation >= 4 || fileInfo->segments[variation] == 0) { - variation = 0; + if (variation < BGM_VARIATION_0 || variation > BGM_VARIATION_3 || fileInfo->compositions[variation] == 0) { + variation = BGM_VARIATION_0; } - player->curSegmentID = variation; + player->curVariation = variation; - player->segmentStartPos = AU_FILE_RELATIVE(player->bgmFile, fileInfo->segments[variation] << 2); - player->segmentReadPos = player->segmentStartPos; + player->compStartPos = AU_FILE_RELATIVE(player->bgmFile, fileInfo->compositions[variation] << 2); + player->compReadPos = player->compStartPos; if (fileInfo->drums != 0) { player->drumsInfo = AU_FILE_RELATIVE(player->bgmFile, fileInfo->drums << 2); @@ -201,6 +204,7 @@ AuResult au_bgm_dispatch_player_event(SongUpdateEvent* event) { player->drumsInfo = NULL; player->bgmDrumCount = 0; } + if (fileInfo->instruments != 0) { player->instrumentsInfo = AU_FILE_RELATIVE(player->bgmFile, fileInfo->instruments << 2); player->bgmInstrumentCount = fileInfo->instrumentCount; @@ -208,6 +212,7 @@ AuResult au_bgm_dispatch_player_event(SongUpdateEvent* event) { player->instrumentsInfo = NULL; player->bgmInstrumentCount = 0; } + player->songName = songName; au_bgm_player_initialize(player); } else { @@ -271,20 +276,20 @@ AuResult au_bgm_is_song_playing(s32 songName) { return result; } -s32 func_8004DB28(BGMPlayer* player) { +b32 au_bgm_player_is_active(BGMPlayer* player) { if (player->songName != NULL && player->masterState != 0) { - return 1; + return TRUE; } else { - return 0; + return FALSE; } } -AuResult func_8004DB4C(SongUpdateEvent* s) { +AuResult au_bgm_process_fade_out(SongFadeOutRequest* request) { AuResult status; BGMPlayer* player; - u32 songName = s->songName; - u32 duration = s->duration; - s16 volume = s->finalVolume; + u32 songName = request->songName; + u32 duration = request->duration; + s16 volume = request->finalVolume; status = AU_RESULT_OK; if (songName != 0) { @@ -293,13 +298,13 @@ AuResult func_8004DB4C(SongUpdateEvent* s) { if (player != NULL) { if (player->songName == songName) { if (player->masterState != BGM_PLAY_STATE_IDLE) { - if (player->unk_220 == 0) { - player->fadeInfo.targetVolume = volume; - player->fadeInfo.fadeTime = (duration * 1000) / AU_5750; - player->fadeInfo.fadeStep = ((volume << 0x10) - player->fadeInfo.curVolume.s32) / player->fadeInfo.fadeTime; - player->fadeInfo.variation = s->variation; - if (s->unk14 == 1) { - player->fadeSongName = songName; + if (!player->paused) { + player->fadeInfo.baseTarget = volume; + player->fadeInfo.baseTicks = (duration * 1000) / AU_FRAME_USEC; + player->fadeInfo.baseStep = ((volume << 0x10) - player->fadeInfo.baseVolume) / player->fadeInfo.baseTicks; + player->fadeInfo.onCompleteCallback = request->doneCallback; + if (request->onPush == 1) { + player->pushSongName = songName; } } } @@ -316,64 +321,65 @@ AuResult func_8004DB4C(SongUpdateEvent* s) { return status; } -AuResult func_8004DC80(s32 songName) { - SongUpdateEvent s; +AuResult au_bgm_complete_push(s32 songName) { + SongSuspendRequest s; s.songName = songName; s.duration = 0; s.startVolume = 0; s.finalVolume = 0; - s.variation = 0; - s.unk14 = 0; - return func_8004DCB8(&s, 0); + s.index = BGM_SNAPSHOT_0; + s.pauseMode = FALSE; + + return au_bgm_process_suspend(&s, 0); // force stop } -AuResult func_8004DCB8(SongUpdateEvent* update, s32 clearChanged) { +AuResult au_bgm_process_suspend(SongSuspendRequest* request, b32 skipStop) { AuResult status; - BGMPlayer* playerA; - BGMPlayer* playerB; + BGMPlayer* player; + BGMPlayer* snapshot; s32 songName; - s32 variation; + s32 index; u32 i; u32 j; - songName = update->songName; - variation = update->variation; + songName = request->songName; + index = request->index; status = AU_RESULT_OK; if (songName != 0) { - playerA = au_bgm_get_player_with_song_name(songName); - if (playerA != NULL) { - if (update->unk14 == 0) { - playerB = func_80053F64(variation); - if (playerB != NULL) { - if (songName == playerA->songName) { - if (!clearChanged) { - for (i = 0; i < ARRAY_COUNT(playerA->tracks); i++) { - BGMPlayerTrack* track = &playerA->tracks[i]; - if (track->bgmReadPos != 0) { - for (j = track->unk_52; j < track->unk_53; j++) { + player = au_bgm_get_player_with_song_name(songName); + if (player != NULL) { + if (!request->pauseMode) { + snapshot = au_get_snapshot_by_index(index); + if (snapshot != NULL) { + if (songName == player->songName) { + if (!skipStop) { + for (i = 0; i < ARRAY_COUNT(player->tracks); i++) { + BGMPlayerTrack* track = &player->tracks[i]; + if (track->bgmReadPos != NULL) { + for (j = track->firstVoice; j < track->lastVoice; j++) { track->changed.all = 0; } } } } - playerA->globals->unk_globals_6C[variation].unk_5 = playerA->priority; - playerA->globals->unk_globals_6C[variation].unk_4 = 1; - playerA->fadeSongName = 0; - au_copy_words(playerA, playerB, sizeof(*playerA)); - if (clearChanged == 0) { - au_bgm_stop_player(playerA); + player->globals->snapshots[index].priority = player->priority; + player->globals->snapshots[index].assigned = 1; + player->pushSongName = 0; + au_copy_words(player, snapshot, sizeof(*player)); + if (!skipStop) { + au_bgm_stop_player(player); } } } else { status = AU_ERROR_INVALID_SONG_DURATION; } } else { - if (songName == playerA->songName) { - if (playerA->masterState != BGM_PLAY_STATE_IDLE) { - playerA->unk_220 = 1; - func_80050900(playerA); + if (songName == player->songName) { + if (player->masterState != BGM_PLAY_STATE_IDLE) { + player->paused = TRUE; + au_bgm_reset_all_voices(player); } } } @@ -386,29 +392,29 @@ AuResult func_8004DCB8(SongUpdateEvent* update, s32 clearChanged) { return status; } -AuResult func_8004DE2C(SongUpdateEvent* update) { +AuResult au_bgm_process_resume(SongResumeRequest* request) { AuResult status; - BGMPlayer* playerA; - BGMPlayer* playerB; - s32 variation; + BGMPlayer* player; + BGMPlayer* snapshot; + s32 index; s32 songName; s32 volume0; s32 volume1; s32 duration; - songName = update->songName; - variation = update->variation; + songName = request->songName; + index = request->index; status = AU_RESULT_OK; if (songName != 0) { - if (update->unk14 == 0) { - playerA = func_80053F64(variation); - if (playerA != NULL && playerA->globals->unk_globals_6C[variation].unk_4 == 1) { - playerB = func_80054248(playerA->globals->unk_globals_6C[variation].unk_5); - if (playerB != NULL) { - if (func_8004DB28(playerB) == 0) { - status = func_80053E58(playerA->songID, playerA->bgmFile); - duration = update->duration; + if (!request->pauseMode) { + snapshot = au_get_snapshot_by_index(index); + if (snapshot != NULL && snapshot->globals->snapshots[index].assigned == 1) { + player = au_get_client_by_priority(snapshot->globals->snapshots[index].priority); + if (player != NULL) { + if (!au_bgm_player_is_active(player)) { + status = au_reload_song_files(snapshot->songID, snapshot->bgmFile); + duration = request->duration; if (duration != 0) { if (duration > SND_MAX_DURATION) { duration = SND_MAX_DURATION; @@ -416,29 +422,29 @@ AuResult func_8004DE2C(SongUpdateEvent* update) { duration = SND_MIN_DURATION; } } - volume0 = update->startVolume; - if (volume0 > BGM_MAX_VOLUME) { - volume0 = BGM_MAX_VOLUME; + volume0 = request->startVolume; + if (volume0 > AU_MAX_VOLUME_8) { + volume0 = AU_MAX_VOLUME_8; } if (volume0 != 0) { - volume0 = (volume0 << 8) | 0xFF; + volume0 = AU_VOL_8_TO_16(volume0); } - volume1 = update->finalVolume; - if (volume1 > BGM_MAX_VOLUME) { - volume1 = BGM_MAX_VOLUME; + volume1 = request->finalVolume; + if (volume1 > AU_MAX_VOLUME_8) { + volume1 = AU_MAX_VOLUME_8; } if (volume1 != 0) { - volume1 = (volume1 << 8) | 0xFF; + volume1 = AU_VOL_8_TO_16(volume1); } else { - volume1 = 0x7FFF; + volume1 = AU_MAX_VOLUME_16; } - playerB->globals->unk_74 = playerB; - playerB->globals->unk_78 = playerA; - playerB->globals->unkSongName = songName; - playerB->globals->unkFadeTime = duration; - playerB->globals->unkFadeStart = volume0; - playerB->globals->unkFadeEnd = volume1; - playerB->globals->unk_80 = 1; + player->globals->resumeCopyTo = player; + player->globals->resumeCopyFrom = snapshot; + player->globals->resumeSongName = songName; + player->globals->resumeFadeTime = duration; + player->globals->resumeFadeStart = volume0; + player->globals->resumeFadeEnd = volume1; + player->globals->resumeRequested = TRUE; } else { status = AU_ERROR_7; } @@ -449,11 +455,11 @@ AuResult func_8004DE2C(SongUpdateEvent* update) { status = AU_ERROR_INVALID_SONG_DURATION; } } else { - playerB = au_bgm_get_player_with_song_name(songName); - if (playerB != NULL) { - if (songName == playerB->songName) { - if (playerB->unk_220 != 0) { - playerB->unk_220 = 0; + player = au_bgm_get_player_with_song_name(songName); + if (player != NULL) { + if (songName == player->songName) { + if (player->paused) { + player->paused = FALSE; } } } @@ -464,7 +470,7 @@ AuResult func_8004DE2C(SongUpdateEvent* update) { return status; } -void func_8004DFD4(AuGlobals* globals) { +void au_bgm_restore_copied_player(AuGlobals* globals) { BGMPlayer* player; BGMPlayerTrack* track; SeqNote* note; @@ -472,15 +478,15 @@ void func_8004DFD4(AuGlobals* globals) { u32 j; s32 k; - player = globals->unk_74; - au_copy_words(globals->unk_78, globals->unk_74, sizeof(*player)); - if (globals->unkSongName == player->songName) { + player = globals->resumeCopyTo; + au_copy_words(globals->resumeCopyFrom, globals->resumeCopyTo, sizeof(*player)); + if (globals->resumeSongName == player->songName) { for (i = 0; i < ARRAY_COUNT(player->tracks); i++) { track = &player->tracks[i]; if (track->bgmReadPos != NULL) { - for (j = track->unk_52; j < track->unk_53; j++) { + for (j = track->firstVoice; j < track->lastVoice; j++) { note = &player->notes[j]; - note->noteLength = 0; + note->length = 0; } } } @@ -491,19 +497,19 @@ void func_8004DFD4(AuGlobals* globals) { au_BGMCmd_E6_MasterEffect(player, track); } } - au_fade_init(&player->fadeInfo, globals->unkFadeTime, globals->unkFadeStart, globals->unkFadeEnd); + au_fade_init(&player->fadeInfo, globals->resumeFadeTime, globals->resumeFadeStart, globals->resumeFadeEnd); } - globals->unk_80 = 0; + globals->resumeRequested = FALSE; } -AuResult func_8004E0F4(SongUpdateEvent* update) { +AuResult au_bgm_adjust_volume(SongStartRequest* request) { BGMPlayer* player; AuResult status = AU_RESULT_OK; - if (update->songName != 0) { - player = au_bgm_get_player_with_song_name(update->songName); + if (request->songName != 0) { + player = au_bgm_get_player_with_song_name(request->songName); if (player != NULL) { - func_80053B04(&player->fadeInfo, update->duration, update->finalVolume); + au_fade_calc_envelope(&player->fadeInfo, request->duration, request->finalVolume); } else { status = AU_ERROR_SONG_NOT_PLAYING; @@ -514,66 +520,66 @@ AuResult func_8004E0F4(SongUpdateEvent* update) { return status; } -void au_bgm_player_init(BGMPlayer* player, s32 priority, s32 busId, AuGlobals* globals) { +void au_bgm_player_init(BGMPlayer* player, s32 priority, s32 busID, AuGlobals* globals) { s16 i; player->globals = globals; - func_8004E880(player, BGM_SAMPLE_RATE, 48); - player->busVolume = 0x8000; + au_bgm_set_tick_resolution(player, BGM_DEFAULT_UPDATE_STEP, BGM_DEFAULT_TICKS_PER_BEAT); + player->busVolume = AU_MAX_BUS_VOLUME; player->masterTempo = BGM_DEFAULT_TEMPO; - player->masterVolume = 0x7F000000; - player->updateCounter = 0; + player->masterVolume = AU_MAX_VOLUME_8 << 24; + player->frameCounter = 0; player->songPlayingCounter = 0; player->songName = 0; - player->fadeSongName = 0; + player->pushSongName = 0; player->unk_58 = 0; player->unk_5A = 0; - player->segmentReadPos = NULL; - player->segmentStartPos = NULL; - player->subSegmentStartPos = 0; - player->masterTempoTime = 0; + player->compReadPos = NULL; + player->compStartPos = NULL; + player->phraseStartPos = 0; + player->masterTempoTicks = 0; player->masterTempoTarget = 0; player->masterTempoStep = 0; - player->masterVolumeTime = 0; + player->masterVolumeTicks = 0; player->masterVolumeTarget = 0; player->masterVolumeStep = 0; player->masterPitchShift = 0; player->detune = 0; - player->unk_220 = 0; + player->paused = FALSE; player->trackVolsConfig = NULL; player->bFadeConfigSetsVolume = FALSE; player->masterState = BGM_PLAY_STATE_IDLE; player->priority = priority; - player->busId = busId; - *(s32*)player->segLoopCounters = 0; - player->unk_222 = 0; - player->unk_223 = 0; + player->busID = busID; + *(s32*)player->compLoopCounters = 0; + player->unused_222 = 0; + player->conditionalLoopFlags = 0; player->playbackRate = 1.0f; - player->unk_22A[0] = 0; - player->unk_22A[1] = 1; - player->unk_22A[2] = 0; - player->unk_22A[3] = 0; - player->unk_22A[4] = 0; - player->unk_22A[5] = 2; - player->unk_22A[6] = 3; - player->unk_22A[7] = 4; + player->polyphonyCounts[BGM_POLYPHONY_0] = 0; + player->polyphonyCounts[BGM_POLYPHONY_1] = 1; + player->polyphonyCounts[BGM_POLYPHONY_UNUSED_A] = 0; + player->polyphonyCounts[BGM_POLYPHONY_UNUSED_B] = 0; + player->polyphonyCounts[BGM_POLYPHONY_UNUSED_C] = 0; + player->polyphonyCounts[BGM_POLYPHONY_2] = 2; + player->polyphonyCounts[BGM_POLYPHONY_3] = 3; + player->polyphonyCounts[BGM_POLYPHONY_4] = 4; for (i = 0; i < ARRAY_COUNT(player->tracks); i++) { - BGMPlayerTrack* temp = &player->tracks[i]; + BGMPlayerTrack* track = &player->tracks[i]; - temp->subTrackVolume = 0; - temp->delayTime = 0; - temp->subTrackCoarseTune = 0; - temp->subTrackFineTune = 0; - temp->subTrackPan = 0; - temp->subTrackReverb = 0; - temp->patch = 0; - temp->isDrumTrack = FALSE; - temp->segTrackVolume = 0x7F; - temp->unk_4C = 0; + track->insVolume = 0; + track->delayTime = 0; + track->insCoarseDetune = 0; + track->insFineDetune = 0; + track->insPan = 0; + track->insReverb = 0; + track->patch = 0; + track->isDrumTrack = FALSE; + track->volume = AU_MAX_VOLUME_8; + track->pressOverride = 0; - if (i < ARRAY_COUNT(player->unk_238)) { - player->unk_238[i] = 0; + if (i < ARRAY_COUNT(player->cmdBufData)) { + player->cmdBufData[i] = 0; } } @@ -581,15 +587,15 @@ void au_bgm_player_init(BGMPlayer* player, s32 priority, s32 busId, AuGlobals* g SeqNote* note = &player->notes[i]; note->volume = 0; - note->adjustedPitch = 0; - note->noteLength = 0; - note->unk_14 = 0; - note->noteVelocity = 0; - note->unk_note_17 = 0; + note->detune = 0; + note->length = 0; + note->randDetune = 0; + note->velocity = 0; + note->pendingTick = FALSE; } - au_fade_set_vol_scale(&player->fadeInfo, 0x7FFF); - func_80055110(player); + au_fade_set_envelope(&player->fadeInfo, AU_MAX_VOLUME_16); + snd_bgm_clear_legacy_commands(player); } void au_bgm_set_effect_indices(BGMPlayer* player, u8* list) { @@ -614,76 +620,80 @@ void au_bgm_set_effect_indices(BGMPlayer* player, u8* list) { } void au_bgm_update_fade(BGMPlayer* player) { - player->fadeInfo.fadeTime--; + player->fadeInfo.baseTicks--; - if (player->fadeInfo.fadeTime != 0) { - player->fadeInfo.curVolume.s32 += player->fadeInfo.fadeStep; + if (player->fadeInfo.baseTicks != 0) { + player->fadeInfo.baseVolume += player->fadeInfo.baseStep; } else { - player->fadeInfo.curVolume.s32 = player->fadeInfo.targetVolume << 16; + player->fadeInfo.baseVolume = player->fadeInfo.baseTarget << 16; if (player->fadeInfo.onCompleteCallback != NULL) { player->fadeInfo.onCompleteCallback(); } - if (player->fadeSongName != 0) { - func_8004DC80(player->fadeSongName); - } else if (player->fadeInfo.curVolume.s32 == 0) { + // Was this fade tagged as a push? + if (player->pushSongName != 0) { + au_bgm_complete_push(player->pushSongName); + } else if (player->fadeInfo.baseVolume == 0) { au_bgm_stop_player(player); } } - func_8004E444(player); + au_bgm_update_bus_volumes(player); } -void func_8004E444(BGMPlayer* arg0) { - u16 mult = (arg0->fadeInfo.curVolume.u16 * arg0->fadeInfo.volScale.u16) >> 15; +void au_bgm_update_bus_volumes(BGMPlayer* player) { + u16 volume = ( + ((u32)player->fadeInfo.baseVolume >> 16) * + ((u32)player->fadeInfo.envelopeVolume >> 16) + ) >> 15; s32 i; - for (i = 0; i < ARRAY_COUNT(arg0->effectIndices); i++) { - s8 busId = arg0->effectIndices[i]; + for (i = 0; i < ARRAY_COUNT(player->effectIndices); i++) { + s8 busID = player->effectIndices[i]; - if (busId < 0) { + if (busID < 0) { return; } - au_fade_set_volume(busId, mult, arg0->busVolume); + au_fade_set_volume(busID, volume, player->busVolume); } } -s32 au_bgm_player_update_main(BGMPlayer* player) { +s32 au_bgm_player_audio_frame_update(BGMPlayer* player) { u16 hasMore = TRUE; s32 retVal = FALSE; // update pseudorandom numbers with fast 'good enough' method - player->randomValue1 = (u16)player->randomValue1 + (u16)player->songPlayingCounter + (u16)player->updateCounter; - player->randomValue2 = (u16)player->randomValue2 + ((player->songPlayingCounter << 4) & 0xFFFF) + ((player->updateCounter >> 4) & 0xFFFF); + player->randomValue1 = (player->randomValue1 & 0xFFFF) + (player->songPlayingCounter & 0xFFFF) + (player->frameCounter & 0xFFFF); + player->randomValue2 = (player->randomValue2 & 0xFFFF) + ((player->songPlayingCounter << 4) & 0xFFFF) + ((player->frameCounter >> 4) & 0xFFFF); do { switch (player->masterState) { - case BGM_PLAY_STATE_IDLE: - hasMore = FALSE; - break; - case BGM_STATE_PLAY_SUBSEG: - if (player->unk_220 == 0) { - au_bgm_player_update_playing(player); - if (player->masterState == BGM_STATE_PLAY_SUBSEG) { + case BGM_PLAY_STATE_IDLE: + hasMore = FALSE; + break; + case BGM_PLAY_STATE_ACTIVE: + if (!player->paused) { + au_bgm_player_update_playing(player); + if (player->masterState == BGM_PLAY_STATE_ACTIVE) { + hasMore = FALSE; + } + } else { hasMore = FALSE; } - } else { + break; + case BGM_PLAY_STATE_FETCH: + au_bgm_player_read_composition(player); + break; + case BGM_PLAY_STATE_INIT: + au_bgm_player_initialize(player); hasMore = FALSE; - } - break; - case BGM_PLAY_STATE_NEXT_SUBSEG: - au_bgm_player_read_segment(player); - break; - case BGM_PLAY_STATE_INIT: - au_bgm_player_initialize(player); - hasMore = FALSE; - break; - case BGM_PLAY_STATE_STOP: - au_bgm_player_update_stop(player); - break; - default: - retVal = TRUE; - hasMore = FALSE; - break; + break; + case BGM_PLAY_STATE_STOP: + au_bgm_player_update_stop(player); + break; + default: + retVal = TRUE; + hasMore = FALSE; + break; } } while (hasMore); return retVal; @@ -698,39 +708,39 @@ void au_bgm_player_initialize(BGMPlayer* player) { for (i = 0; i < ARRAY_COUNT(player->tracks); i++) { BGMPlayerTrack* track = &player->tracks[i]; track->instrument = NO_INSTRUMENT; - track->subTrackVolume = 0x7FFF0000; - track->subTrackPan = 0x40; - track->subTrackReverb = 0; + track->insVolume = AU_MAX_VOLUME_16 << 16; // @bug? incorrect format for 8.24 fixed, should be (AU_MAX_VOLUME_8 << 24) + track->insPan = 0x40; + track->insReverb = 0; track->patch = 0; - track->subTrackCoarseTune = 0; - track->subTrackFineTune = 0; - track->segTrackVolume = 0x7F; - track->unk_4C = 0; - track->unkVolume = 0x7FFF0000; + track->insCoarseDetune = 0; + track->insFineDetune = 0; + track->volume = AU_MAX_VOLUME_8; + track->pressOverride = 0; + track->proxVolume = AU_MAX_VOLUME_16 << 16; track->savedPos = NULL; track->prevReadPos = NULL; track->detourLength = 0; - track->segTrackTune = 0; - track->trackTremoloTime = 0; - track->trackTremoloAmount = 0; - track->trackTremoloSpeed = 0; - track->subTrackVolumeStep = 0; - track->subTrackVolumeTarget = 0; - track->subTrackVolumeTime = 0; - track->unkVolumeStep = 0; - track->unkVolumeTarget = 0; - track->unkVolumeTime = 0; - track->unk_4D = 0; - track->unk_4E = 0; - track->unk_4F = 0; - track->unk_50 = 0; - track->unk_51 = 0; + track->detune = 0; + track->tremoloDepth = 0; + track->tremoloDelay = 0; + track->tremoloRate = 0; + track->insVolumeStep = 0; + track->insVolumeTarget = 0; + track->insVolumeTicks = 0; + track->proxVolumeStep = 0; + track->proxVolumeTarget = 0; + track->proxVolumeTicks = 0; + track->proxMixSetChanged = FALSE; + track->proxMixValChanged = FALSE; + track->proxVol1 = 0; + track->proxVol2 = 0; + track->polyVoiceCount = 0; track->polyphonicIdx = 0; - track->unk_57 = 0; + track->randomPanAmount = 0; track->isDrumTrack = FALSE; - track->parentTrackIdx = 0; - track->unk_5A = 0; - track->subtrackBusId = player->busId; + track->linkedTrackID = 0; + track->muted = FALSE; + track->busID = player->busID; track->index = i; } @@ -738,137 +748,149 @@ void au_bgm_player_initialize(BGMPlayer* player) { SeqNote* note = &player->notes[i]; note->ins = NO_INSTRUMENT; note->pitchRatio = 2.0f; - note->unk_14 = 0; - note->noteVelocity = 0; - note->noteLength = 0; - note->tremoloTime = 0; + note->randDetune = 0; + note->velocity = 0; + note->length = 0; + note->tremoloDepth = 0; } - func_80050900(player); + au_bgm_reset_all_voices(player); player->playbackRate = 128.0f; // set to 1.0 later om... player->masterTempo = BGM_DEFAULT_TEMPO; - player->masterTempoBPM = BGM_DEFAULT_TEMPO / 100; - player->unk_21E = 0x80; - player->masterVolume = 0x7F000000; - player->fadeSongName = 0; - player->unk_74 = 0; + player->masterTempoBPM = BGM_DEFAULT_BPM; + player->unused_21E = 0x80; + player->masterVolume = AU_MAX_VOLUME_8 << 24; + player->pushSongName = 0; + player->tickRatePtr = NULL; player->masterTempoTarget = 0; player->masterPitchShift = 0; player->detune = 0; - player->masterVolumeTime = 0; + player->masterVolumeTicks = 0; player->masterVolumeTarget = 0; player->masterVolumeStep = 0; player->proxMixValue = 0; player->proxMixID = 0; player->proxMixVolume = 0; - player->segActiveLoopEndPos[3] = NULL; - player->segActiveLoopEndPos[2] = NULL; - player->segActiveLoopEndPos[1] = NULL; - player->segActiveLoopEndPos[0] = NULL; - *(s32*)player->segLoopCounters = 0; - player->segLoopDepth = 0; - player->unk_222 = 0; - player->unk_223 = 0; + player->compActiveLoopEndPos[3] = NULL; + player->compActiveLoopEndPos[2] = NULL; + player->compActiveLoopEndPos[1] = NULL; + player->compActiveLoopEndPos[0] = NULL; + *(s32*)player->compLoopCounters = 0; + player->compLoopDepth = 0; + player->unused_222 = 0; + player->conditionalLoopFlags = 0; player->trackVolsConfig = NULL; player->bFadeConfigSetsVolume = FALSE; - player->unk_233 = 1; - player->unk_211 = 0; + player->initLinkMute = TRUE; + player->writingCustomEnvelope = 0; player->playbackRate = 1.0f; - for (i = 0; i < ARRAY_COUNT(player->unk_212); i++) { - func_8004E844(player, i); + for (i = 0; i < ARRAY_COUNT(player->customEnvelopeWritePos); i++) { + au_bgm_clear_custom_note_press(player, i); } for (i = 0; i < ARRAY_COUNT(player->effectValues); i++) { player->effectValues[i] = 0; } - player->unk_220 = 0; + player->paused = FALSE; player->songPlayingCounter = 0; - for (i = 0; i < ARRAY_COUNT(player->segLoopStartLabels); i++) { - player->segLoopStartLabels[i] = player->segmentReadPos; + for (i = 0; i < ARRAY_COUNT(player->compLoopStartLabels); i++) { + player->compLoopStartLabels[i] = player->compReadPos; } // find labels - buf = player->segmentReadPos; + buf = player->compReadPos; keepReading = TRUE; while (keepReading) { cmd = *buf++; if (cmd == 0) { keepReading = FALSE; - } else if ((cmd & 0xF0000000) == BGM_SEGMENT_LABEL << 28) { - player->segLoopStartLabels[cmd & 0x1F] = buf; + } else if ((cmd & 0xF0000000) == BGM_COMP_START_LOOP << 28) { + player->compLoopStartLabels[cmd & 0x1F] = buf; } } - player->masterState = BGM_PLAY_STATE_NEXT_SUBSEG; + player->masterState = BGM_PLAY_STATE_FETCH; } -void func_8004E844(BGMPlayer* player, s32 arg1) { +void au_bgm_clear_custom_note_press(BGMPlayer* player, s32 index) { s32 i; - u16* temp = player->unk_174[arg1]; - player->unk_212[arg1] = 0; + u16* pos = player->customPressEnvelopes[index]; + player->customEnvelopeWritePos[index] = 0; for (i = 0; i < 9; i++) { - *temp++ = 0xFF00; + *pos++ = 0xFF00; } } -// divisor is number of ticks per beat? -void func_8004E880(BGMPlayer* player, s32 sampleRate, s32 divisor) { - u32 A; +void au_bgm_set_tick_resolution(BGMPlayer* player, s32 mBeatsPerMinute, u32 ticksPerBeat) { + // compute how many audio frames before the next tick + u32 mFramesPerTick = BGM_MFRAMES_PER_MINUTE / ticksPerBeat; - A = 10434782 / (u32)divisor; + // Clamp samples per tick to stay in a valid range + if (mFramesPerTick > 500000) { + mFramesPerTick = 500000; + } else if (mFramesPerTick < 80000) { + mFramesPerTick = 80000; + } - if (A > 500000) { - A = 500000; - } else if (A < 80000) { - A = 80000; + // Clamp to sample rate + if (mFramesPerTick < mBeatsPerMinute) { + mBeatsPerMinute = mFramesPerTick; } - if (A < sampleRate) { - sampleRate = A; - } - player->nextUpdateStep = sampleRate; - player->nextUpdateInterval = A; - player->nextUpdateCounter = A; - player->maxTempo = A / 1000; + + // breakdown of units: + // + // tickUpdateInterval / nextUpdateStep = framesPerTick + // + // 1000 x frames beat min frames + // ------------- x ------ x --------------- = ------ + // min tick 1000 x beat tick + + player->nextUpdateStep = mBeatsPerMinute; + player->tickUpdateInterval = mFramesPerTick; + player->nextUpdateCounter = mFramesPerTick; + + player->maxTempo = mFramesPerTick / BGM_UPDATE_SCALE; } -// runs whenever a new segment begins playing -void au_bgm_player_read_segment(BGMPlayer* player) { +// runs whenever a new composition begins playing +void au_bgm_player_read_composition(BGMPlayer* player) { u16 continueReading = TRUE; u32 cmd; player->masterTempoStep = 0; - player->masterTempoTime = 0; + player->masterTempoTicks = 0; + while (continueReading) { - cmd = *player->segmentReadPos++; - if (cmd == BGM_SEGMENT_END) { + cmd = *player->compReadPos++; + if (cmd == BGM_COMP_END) { player->masterState = BGM_PLAY_STATE_STOP; continueReading = FALSE; } else { switch (cmd >> 12) { - case BGM_SEGMENT_SUBSEG << 16: - au_bgm_load_subsegment(player, cmd); - player->masterState = BGM_STATE_PLAY_SUBSEG; + case BGM_COMP_PLAY_PHRASE << 16: + au_bgm_load_phrase(player, cmd); + player->masterState = BGM_PLAY_STATE_ACTIVE; continueReading = FALSE; break; - case BGM_SEGMENT_START_LOOP << 16: + case BGM_COMP_START_LOOP << 16: break; - case BGM_SEGMENT_WAIT << 16: + case BGM_COMP_WAIT << 16: continueReading = FALSE; break; - case BGM_SEGMENT_END_LOOP << 16: - au_bgm_end_segment_loop(player, cmd); + case BGM_COMP_END_LOOP << 16: + au_bgm_end_composition_loop(player, cmd); break; - case BGM_SEGMENT_6 << 16: - if (!(player->unk_223 & 1)) { - au_bgm_end_segment_loop(player, cmd); + case BGM_COMP_END_COND_LOOP_FALSE << 16: + if (!(player->conditionalLoopFlags & 1)) { + au_bgm_end_composition_loop(player, cmd); } break; - case BGM_SEGMENT_7 << 16: - if (player->unk_223 & 1) { - au_bgm_end_segment_loop(player, cmd); + case BGM_COMP_END_COND_LOOP_TRUE << 16: + if (player->conditionalLoopFlags & 1) { + au_bgm_end_composition_loop(player, cmd); } break; default: @@ -879,55 +901,55 @@ void au_bgm_player_read_segment(BGMPlayer* player) { } } -void au_bgm_end_segment_loop(BGMPlayer* player, u32 cmd) { +void au_bgm_end_composition_loop(BGMPlayer* player, u32 cmd) { s32 labelIndex = cmd & 0x1F; // 01F (bits 0-4) s32 iterCount = (cmd >> 5) & 0x7F; // FE0 (bits 5-11) u32 depth; - depth = player->segLoopDepth; - if (player->segActiveLoopEndPos[depth] != NULL) { - if (player->segActiveLoopEndPos[depth] == player->segmentReadPos) { - if (player->segLoopCounters[depth] != 0) { - player->segLoopCounters[depth]--; - if ((player->segLoopCounters[depth]) == 0) { - player->segActiveLoopEndPos[depth] = NULL; + depth = player->compLoopDepth; + if (player->compActiveLoopEndPos[depth] != NULL) { + if (player->compActiveLoopEndPos[depth] == player->compReadPos) { + if (player->compLoopCounters[depth] != 0) { + player->compLoopCounters[depth]--; + if ((player->compLoopCounters[depth]) == 0) { + player->compActiveLoopEndPos[depth] = NULL; if (depth > 0) { depth--; } } else { - player->segmentReadPos = player->segLoopStartLabels[labelIndex]; + player->compReadPos = player->compLoopStartLabels[labelIndex]; } } else { - player->segmentReadPos = player->segLoopStartLabels[labelIndex]; + player->compReadPos = player->compLoopStartLabels[labelIndex]; } } else if (depth < 4) { depth++; - player->segActiveLoopEndPos[depth] = player->segmentReadPos; - player->segLoopCounters[depth] = iterCount; - player->segmentReadPos = player->segLoopStartLabels[labelIndex]; + player->compActiveLoopEndPos[depth] = player->compReadPos; + player->compLoopCounters[depth] = iterCount; + player->compReadPos = player->compLoopStartLabels[labelIndex]; } } else { - player->segActiveLoopEndPos[depth] = player->segmentReadPos; - player->segLoopCounters[depth] = iterCount; - player->segmentReadPos = player->segLoopStartLabels[labelIndex]; + player->compActiveLoopEndPos[depth] = player->compReadPos; + player->compLoopCounters[depth] = iterCount; + player->compReadPos = player->compLoopStartLabels[labelIndex]; } - player->segLoopDepth = depth; + player->compLoopDepth = depth; } -void au_bgm_load_subsegment(BGMPlayer* player, u32 cmd) { +void au_bgm_load_phrase(BGMPlayer* player, u32 cmd) { BGMPlayerTrack* track; u32 trackInfo; s32* trackList; - u32 parentIdx; + u32 linkedID; s32 count; - s32 nextRelativePos; - s32 bUsesPolyphony; + s32 curVoice; + s32 bFoundLinkedTrack; s32 i; - nextRelativePos = 0; - bUsesPolyphony = FALSE; - player->subSegmentStartPos = AU_FILE_RELATIVE(player->segmentStartPos, (cmd & 0xFFFF) << 2); - trackList = player->subSegmentStartPos; + curVoice = 0; + bFoundLinkedTrack = FALSE; + player->phraseStartPos = AU_FILE_RELATIVE(player->compStartPos, (cmd & 0xFFFF) << 2); + trackList = player->phraseStartPos; for (i = 0; i < ARRAY_COUNT(player->tracks); i++) { track = &player->tracks[i]; trackInfo = *trackList++; @@ -936,34 +958,34 @@ void au_bgm_load_subsegment(BGMPlayer* player, u32 cmd) { if ((trackInfo & 0x100) == 0) { track->polyphonicIdx = (trackInfo & (0x7 << 0xD)) >> 0xD; track->isDrumTrack = (trackInfo >> 7) & 1; - parentIdx = (trackInfo & (0xF << 9)) >> 9; - track->parentTrackIdx = 0; - if (parentIdx != 0) { - BGMPlayerTrack* parentTrack = &player->tracks[parentIdx - 1]; - if ((parentIdx - 1) < i) { - track->unk_51 = parentTrack->unk_51; - track->unk_52 = parentTrack->unk_52; - track->unk_53 = parentTrack->unk_53; + linkedID = (trackInfo & (0xF << 9)) >> 9; + track->linkedTrackID = 0; + if (linkedID != 0) { + BGMPlayerTrack* linkedTrack = &player->tracks[linkedID - 1]; + if ((linkedID - 1) < i) { + track->polyVoiceCount = linkedTrack->polyVoiceCount; + track->firstVoice = linkedTrack->firstVoice; + track->lastVoice = linkedTrack->lastVoice; - track->bgmReadPos = (track->bgmReadPos + (s32)player->subSegmentStartPos); + track->bgmReadPos = (track->bgmReadPos + (s32)player->phraseStartPos); track->delayTime = 1; - track->parentTrackIdx = parentIdx; - if (player->unk_233 != 0) { - track->unk_5A = 1; + track->linkedTrackID = linkedID; + if (player->initLinkMute) { + track->muted = TRUE; } - bUsesPolyphony = TRUE; + bFoundLinkedTrack = TRUE; } else { track->bgmReadPos = NULL; } } else { - count = player->unk_22A[track->polyphonicIdx]; - track->unk_51 = count; - track->unk_52 = nextRelativePos; - nextRelativePos += count; - track->unk_53 = nextRelativePos; + count = player->polyphonyCounts[track->polyphonicIdx]; + track->polyVoiceCount = count; + track->firstVoice = curVoice; + curVoice += count; + track->lastVoice = curVoice; - track->bgmReadPos = (track->bgmReadPos + (s32)player->subSegmentStartPos); + track->bgmReadPos = (track->bgmReadPos + (s32)player->phraseStartPos); track->delayTime = 1; } } else { @@ -971,26 +993,26 @@ void au_bgm_load_subsegment(BGMPlayer* player, u32 cmd) { } } } - player->unk_21B = nextRelativePos; // last Voice? - if (bUsesPolyphony) { - player->unk_233 = 0; + player->totalVoices = curVoice; + if (bFoundLinkedTrack) { + player->initLinkMute = FALSE; } } void au_bgm_player_update_stop(BGMPlayer* player) { s32 i; - player->unk_220 = 0; + player->paused = FALSE; player->songName = 0; - player->fadeSongName = 0; + player->pushSongName = 0; player->unk_58 = 0; player->unk_5A = 0; for (i = 0; i < ARRAY_COUNT(player->tracks); i++) { player->tracks[i].bgmReadPos = NULL; } - func_80050900(player); + au_bgm_reset_all_voices(player); player->masterState = BGM_PLAY_STATE_IDLE; - player->nextUpdateStep = BGM_SAMPLE_RATE; + player->nextUpdateStep = BGM_DEFAULT_UPDATE_STEP; } #define POST_BGM_READ() \ @@ -1001,6 +1023,7 @@ if (track->detourLength != 0) {\ }\ } +/// play next tick void au_bgm_player_update_playing(BGMPlayer *player) { s32 bVolumeFading; u8 sp1F; @@ -1013,7 +1036,7 @@ void au_bgm_player_update_playing(BGMPlayer *player) { SeqNote* note; s32 var_a0; s32 temp; - s32 var_a1_5; + s32 tremoloDetune; s32 bAcquiredVoiceIdx; u8 opcode; u8 noteVelocity; @@ -1024,20 +1047,20 @@ void au_bgm_player_update_playing(BGMPlayer *player) { bVolumeFading = FALSE; bFinished = FALSE; - if (player->masterTempoTime != 0) { - player->masterTempoTime--; - if (player->masterTempoTime == 0) { + if (player->masterTempoTicks != 0) { + player->masterTempoTicks--; + if (player->masterTempoTicks == 0) { player->masterTempo = player->masterTempoTarget; player->masterTempoTarget = 0; player->masterTempoStep = 0; } else { player->masterTempo += player->masterTempoStep; } - player->nextUpdateStep = player->masterTempo * 10; + player->nextUpdateStep = BGM_TEMPO_TO_UPDATE_UNITS(player->masterTempo); } - if (player->masterVolumeTime != 0) { - player->masterVolumeTime--; - if (player->masterVolumeTime == 0) { + if (player->masterVolumeTicks != 0) { + player->masterVolumeTicks--; + if (player->masterVolumeTicks == 0) { player->masterVolume = player->masterVolumeTarget; player->masterVolumeTarget = 0; player->masterVolumeStep = 0; @@ -1060,7 +1083,7 @@ void au_bgm_player_update_playing(BGMPlayer *player) { player->seqCmdArgs.TrackVolumeFade.time = 48; player->seqCmdArgs.TrackVolumeFade.value = *(player->trackVolsConfig++); if (track->bgmReadPos != 0) { - au_BGMCmd_F6_TrackVolumeFade(player, track); + au_BGMCmd_F6_InstrumentVolumeLerp(player, track); } } } @@ -1077,7 +1100,7 @@ void au_bgm_player_update_playing(BGMPlayer *player) { player->trackVolsConfig++; // ignore arg player->seqCmdArgs.TrackVolumeFade.value = 0; if (track->bgmReadPos != 0) { - au_BGMCmd_F6_TrackVolumeFade(player, track); + au_BGMCmd_F6_InstrumentVolumeLerp(player, track); } } } @@ -1089,31 +1112,31 @@ void au_bgm_player_update_playing(BGMPlayer *player) { if (track->bgmReadPos != NULL) { track->changed.all = 0; if (bVolumeFading || player->volumeChanged) { - track->changed.volume = 1; + track->changed.volume = TRUE; } else { - track->changed.volume = 0; + track->changed.volume = FALSE; } - if (track->subTrackVolumeTime != 0) { - track->subTrackVolumeTime--; - if (track->subTrackVolumeTime == 0) { - track->subTrackVolume = track->subTrackVolumeTarget; + if (track->insVolumeTicks != 0) { + track->insVolumeTicks--; + if (track->insVolumeTicks == 0) { + track->insVolume = track->insVolumeTarget; } else { - track->subTrackVolume += track->subTrackVolumeStep; + track->insVolume += track->insVolumeStep; } - track->changed.volume = 1; + track->changed.volume = TRUE; } - if (track->unkVolumeTime != 0) { - track->unkVolumeTime--; - if (track->unkVolumeTime == 0) { - track->unkVolume = track->unkVolumeTarget << 0x10; + if (track->proxVolumeTicks != 0) { + track->proxVolumeTicks--; + if (track->proxVolumeTicks == 0) { + track->proxVolume = track->proxVolumeTarget << 16; } else { - track->unkVolume += track->unkVolumeStep; + track->proxVolume += track->proxVolumeStep; } - track->changed.volume = 1; + track->changed.volume = TRUE; } track->delayTime--; if (track->delayTime <= 0) { - sp1F = track->unk_52; + sp1F = track->firstVoice; while (track->delayTime == 0) { opcode = *(track->bgmReadPos++); POST_BGM_READ(); @@ -1151,9 +1174,9 @@ void au_bgm_player_update_playing(BGMPlayer *player) { POST_BGM_READ(); } bAcquiredVoiceIdx = FALSE; - if (track->unk_5A == 0) { + if (!track->muted) { // find first free voice - for (voiceIdx = sp1F; voiceIdx < track->unk_53; voiceIdx++) { + for (voiceIdx = sp1F; voiceIdx < track->lastVoice; voiceIdx++) { voice = &player->globals->voices[voiceIdx]; sp1F++; if (voice->priority == AU_PRIORITY_FREE) { @@ -1163,9 +1186,9 @@ void au_bgm_player_update_playing(BGMPlayer *player) { } if (!bAcquiredVoiceIdx) { - if (track->polyphonicIdx >= 5) { // 5 = AL_DEFAULT_PRIORITY? + if (track->polyphonicIdx >= BGM_POLYPHONY_2) { // try stealing a voice with lower priority - for (voiceIdx = track->unk_52; voiceIdx < track->unk_53; voiceIdx++) { + for (voiceIdx = track->firstVoice; voiceIdx < track->lastVoice; voiceIdx++) { voice = &player->globals->voices[voiceIdx]; if (voice->priority < player->priority) { au_reset_voice(voice, voiceIdx); @@ -1175,11 +1198,11 @@ void au_bgm_player_update_playing(BGMPlayer *player) { } // try stealing a voice with equal priority and zero note length if (!bAcquiredVoiceIdx) { - for (voiceIdx = track->unk_52; voiceIdx < track->unk_53; voiceIdx++) { + for (voiceIdx = track->firstVoice; voiceIdx < track->lastVoice; voiceIdx++) { voice = &player->globals->voices[voiceIdx]; if (voice->priority == player->priority) { note = &player->notes[voiceIdx]; - if (note->noteLength == 0) { + if (note->length == 0) { au_reset_voice(voice, voiceIdx); bAcquiredVoiceIdx = TRUE; break; @@ -1193,12 +1216,12 @@ void au_bgm_player_update_playing(BGMPlayer *player) { u8 voice_it; AuVoice* curVoice; SeqNote* curNote; - for (voice_it = track->unk_52; voice_it < track->unk_53; voice_it++) { + for (voice_it = track->firstVoice; voice_it < track->lastVoice; voice_it++) { curVoice = &player->globals->voices[voice_it]; if (curVoice->priority == player->priority) { curNote = &player->notes[voice_it]; - if (curNote->unk_note_17 == 0 && curNote->noteLength < shortestLength) { - shortestLength = curNote->noteLength; + if (!curNote->pendingTick && curNote->length < shortestLength) { + shortestLength = curNote->length; voice = curVoice; note = curNote; voiceIdx = voice_it; @@ -1207,16 +1230,16 @@ void au_bgm_player_update_playing(BGMPlayer *player) { } } if (bAcquiredVoiceIdx) { - note->noteLength = 0; + note->length = 0; au_reset_voice(voice, voiceIdx); } } } else { - voiceIdx = track->unk_52; + voiceIdx = track->firstVoice; voice = &player->globals->voices[voiceIdx]; note = &player->notes[voiceIdx]; - note->noteLength = 0; + note->length = 0; if (voice->priority <= player->priority) { au_reset_voice(voice, voiceIdx); bAcquiredVoiceIdx = TRUE; @@ -1226,37 +1249,46 @@ void au_bgm_player_update_playing(BGMPlayer *player) { } if (bAcquiredVoiceIdx) { note = &player->notes[voiceIdx]; - note->tremoloTime = 0; + note->tremoloDepth = 0; if (noteVelocity > 0) { - note->noteVelocity = noteVelocity + 1; + note->velocity = noteVelocity + 1; } else { - note->noteVelocity = 0; + note->velocity = 0; } - note->noteLength = noteLength; + note->length = noteLength; if (track->isDrumTrack) { if (notePitch < 72) { // = 6 * 12 drumInfo = &player->globals->dataPER->drums[notePitch]; } else { drumInfo = player->drums[notePitch - 72]; // = 6 * 12 } - note->ins = au_get_instrument(player->globals, (u16)drumInfo->bankPatch >> 8, (u16)drumInfo->bankPatch & 0xFF, &voice->envelope); + note->ins = au_get_instrument(player->globals, drumInfo->bankPatch >> 8, drumInfo->bankPatch & 0xFF, &voice->envelope); if (drumInfo->randVolume != 0) { - note->volume = note->noteVelocity * au_bgm_get_random_vol(player->randomValue1, drumInfo->volume, drumInfo->randVolume); + note->volume = note->velocity * au_bgm_get_random_vol(player->randomValue1, drumInfo->volume, drumInfo->randVolume); } else { - note->volume = note->noteVelocity * drumInfo->volume; + note->volume = note->velocity * drumInfo->volume; } + // combining formats: 7.24 * 7.24 * 15.16 * 7.0 * 15.0 --> 16.16 + // first step, shifting fractional factors by 21: + // 7.24 * 7.24 * 15.16 --> 7.3 * 7.3 * 10.0 --> 24.6 + // shifting this down by 20 transforms 24.6 --> 10.0 + // now for the second step with whole: + // 10.0 * 7.0 * 15.0 --> 32.0 + // and a final shift by 16 transforms 32.0 --> 16.16 voice->clientVolume = (( - ((player->masterVolume >> 0x15) * (track->subTrackVolume >> 0x15) * (track->unkVolume >> 0x15)) >> 0x14) - * (track->segTrackVolume * note->volume)) >> 0x10; - note->adjustedPitch = + ((player->masterVolume >> 21) // 7.24 --> 7.3 + * (track->insVolume >> 21) // 7.24 --> 7.3 + * (track->proxVolume >> 21)) >> 20) // 15.16 --> 10.0 (fractional part truncated?) + * (track->volume * note->volume)) >> 16; + note->detune = drumInfo->keyBase - + track->subTrackCoarseTune - + track->subTrackFineTune + + track->insCoarseDetune + + track->insFineDetune - note->ins->keyBase; - temp = (note->adjustedPitch + track->segTrackTune) + player->detune; + temp = (note->detune + track->detune) + player->detune; if (drumInfo->randTune != 0) { - note->unk_14 = au_bgm_get_random_pitch(player->randomValue1, temp, drumInfo->randTune); - temp = note->unk_14; + note->randDetune = au_bgm_get_random_pitch(player->randomValue1, temp, drumInfo->randTune); + temp = note->randDetune; } note->pitchRatio = au_compute_pitch_ratio(temp) * note->ins->pitchRatio; if (drumInfo->randPan != 0) { @@ -1270,32 +1302,40 @@ void au_bgm_player_update_playing(BGMPlayer *player) { voice->reverb = drumInfo->reverb; } } else { - note->volume = (( - ((player->masterVolume >> 0x15) * (track->subTrackVolume >> 0x15) * (track->unkVolume >> 0x15)) >> 0x14) - * (track->segTrackVolume * note->noteVelocity)) >> 9; - voice->clientVolume = note->volume; + // combining formats: 7.24 * 7.24 * 15.16 * 7.0 * 15.0 --> 16.16 + // first step, shifting fractional factors by 21: + // 7.24 * 7.24 * 15.16 --> 7.3 * 7.3 * 10.0 --> 24.6 + // shifting this down by 20 transforms 24.6 --> 10.0 + // now for the second step with whole: + // 10.0 * 7.0 * 7.0 --> 24.0 + // and a final shift by 9 transforms 24.0 --> 15.16 + voice->clientVolume = note->volume = (( + ((player->masterVolume >> 21) // 7.24 --> 7.3 + * (track->insVolume >> 21) // 7.24 --> 7.3 + * (track->proxVolume >> 21)) >> 20) // 15.16 --> 10.0 (fractional part truncated?) + * (track->volume * note->velocity)) >> 9; note->ins = track->instrument; - note->adjustedPitch = + note->detune = (notePitch * 100) - + track->subTrackCoarseTune + + track->insCoarseDetune + player->masterPitchShift - + track->subTrackFineTune + + track->insFineDetune - note->ins->keyBase; note->pitchRatio = au_compute_pitch_ratio( - note->adjustedPitch - + track->segTrackTune + note->detune + + track->detune + player->detune) * track->instrument->pitchRatio; - if (track->unk_57 != 0) { - voice->pan = au_bgm_get_random_pan(player, track->subTrackPan, track->unk_57); + if (track->randomPanAmount != 0) { + voice->pan = au_bgm_get_random_pan(player, track->insPan, track->randomPanAmount); } else { - voice->pan = track->subTrackPan; + voice->pan = track->insPan; } - voice->reverb = track->subTrackReverb; + voice->reverb = track->insReverb; - if (track->unk_4C != 0) { - voice->envelope.cmdListPress = (u8*) player->unk_174[track->unk_4C - 1]; //TODO ??? + if (track->pressOverride != 0) { + voice->envelope.cmdListPress = (u8*) player->customPressEnvelopes[track->pressOverride - 1]; } else { voice->envelope.cmdListPress = track->envelope.cmdListPress; } @@ -1303,12 +1343,12 @@ void au_bgm_player_update_playing(BGMPlayer *player) { } voice->instrument = note->ins; voice->pitchRatio = note->pitchRatio; - voice->busId = track->subtrackBusId; - if (note->noteLength >= 2) { - note->unk_note_17 = 1; - note->tremoloTime = track->trackTremoloTime; - note->unk_13 = 0; - note->tremoloAmount = track->trackTremoloAmount; + voice->busID = track->busID; + if (note->length > 1) { + note->pendingTick = TRUE; + note->tremoloDepth = track->tremoloDepth; + note->tremoloPhase = 0; + note->tremoloDelay = track->tremoloDelay; voice->syncFlags = AU_VOICE_SYNC_FLAG_ALL; voice->priority = player->priority; voice->clientPriority = voice->priority; @@ -1347,59 +1387,73 @@ void au_bgm_player_update_playing(BGMPlayer *player) { } // end while } - for (voiceIdx = track->unk_52; voiceIdx < track->unk_53; voiceIdx++) { - if (track->unk_5A == 0) { + for (voiceIdx = track->firstVoice; voiceIdx < track->lastVoice; voiceIdx++) { + if (!track->muted) { voice = &player->globals->voices[voiceIdx]; if (voice->priority == player->priority) { note = &player->notes[voiceIdx]; - if (note->unk_note_17 == 0) { - if (note->noteLength > 0) { - note->noteLength--; - if (note->noteLength == 0) { + if (!note->pendingTick) { + if (note->length > 0) { + note->length--; + if (note->length == 0) { voice->envelopeFlags |= AU_VOICE_ENV_FLAG_KEY_RELEASED; } } if (track->isDrumTrack) { if (track->changed.tune || (player->detune != 0)) { - note->pitchRatio = au_compute_pitch_ratio(((note->adjustedPitch + note->unk_14) + track->segTrackTune) + player->detune) * note->ins->pitchRatio; + note->pitchRatio = au_compute_pitch_ratio(((note->detune + note->randDetune) + track->detune) + player->detune) * note->ins->pitchRatio; if (voice->pitchRatio != note->pitchRatio) { voice->pitchRatio = note->pitchRatio; voice->syncFlags |= AU_VOICE_SYNC_FLAG_PITCH; } } if (track->changed.volume) { + // combining formats: 7.24 * 7.24 * 15.16 * 7.0 * 15.0 --> 16.16 + // first step, shifting fractional factors by 21: + // 7.24 * 7.24 * 15.16 --> 7.3 * 7.3 * 10.0 --> 24.6 + // shifting this down by 20 transforms 24.6 --> 10.0 + // now for the second step with whole: + // 10.0 * 7.0 * 15.0 --> 32.0 + // and a final shift by 16 transforms 32.0 --> 16.16 voice->clientVolume = ( - ((((player->masterVolume >> 0x15) - * (track->subTrackVolume >> 0x15)) - * (track->unkVolume >> 0x15)) >> 0x14) - * (track->segTrackVolume * note->volume)) >> 0x10; + ((((player->masterVolume >> 21) // 7.24 --> 7.3 + * (track->insVolume >> 21)) // 7.24 --> 7.3 + * (track->proxVolume >> 21)) >> 20) // 15.16 --> 10.0 (fractional part truncated?) + * (track->volume * note->volume)) >> 16; voice->envelopeFlags |= AU_VOICE_ENV_FLAG_VOL_CHANGED; } } else { - if (note->tremoloTime != 0) { - if (note->tremoloAmount != 0) { - note->tremoloAmount--; + // Modulate pitch using a triange wave for tremolo effect + if (note->tremoloDepth != 0) { + if (note->tremoloDelay != 0) { + note->tremoloDelay--; } else { - u8 temp_a0_6; - u8 temp_a2_4; - note->unk_13 += track->trackTremoloSpeed; - opcode = (note->unk_13 << 2) + 3; - temp_a2_4 = note->unk_13 >> 6; + u8 quadrant; + note->tremoloPhase += track->tremoloRate; + opcode = (note->tremoloPhase << 2) + 3; // +3 just to fill lower 2 bits - if ((temp_a2_4 == 1) || (temp_a2_4 == 3)) { + // Determine what part of the triangle wave we are in (using top 2 bits of u8) + quadrant = note->tremoloPhase >> 6; + + // Invert the triangle for quadrants 1 and 3 (ugly code required to match) + /* visualized: //// --> /\/\ */ + if ((quadrant == 1) || (quadrant == 3)) { u8 temp2 = ~opcode; - var_a1_5 = temp2 + 1; + tremoloDetune = temp2 + 1; } else { - var_a1_5 = opcode; + tremoloDetune = opcode; } - var_a1_5 = (var_a1_5 * track->trackTremoloTime) >> 8; + // Scale by depth + tremoloDetune = (tremoloDetune * track->tremoloDepth) >> 8; - if ((temp_a2_4 == 2) || (temp_a2_4 == 3)) { - var_a1_5 = -var_a1_5; + // Invert sign for the second half of triangle wave + if ((quadrant == 2) || (quadrant == 3)) { + tremoloDetune = -tremoloDetune; } - note->pitchRatio = au_compute_pitch_ratio(var_a1_5 + ((note->adjustedPitch + track->segTrackTune) + player->detune)) * note->ins->pitchRatio; + // Apply pitch detune from tremolo + note->pitchRatio = au_compute_pitch_ratio(tremoloDetune + ((note->detune + track->detune) + player->detune)) * note->ins->pitchRatio; if (voice->pitchRatio != note->pitchRatio) { voice->pitchRatio = note->pitchRatio; voice->syncFlags |= AU_VOICE_SYNC_FLAG_PITCH; @@ -1407,27 +1461,37 @@ void au_bgm_player_update_playing(BGMPlayer *player) { } } else if (track->changed.tune || (player->detune != 0)) { - note->pitchRatio = au_compute_pitch_ratio((note->adjustedPitch + track->segTrackTune) + player->detune) * note->ins->pitchRatio; + note->pitchRatio = au_compute_pitch_ratio((note->detune + track->detune) + player->detune) * note->ins->pitchRatio; if (voice->pitchRatio != note->pitchRatio) { voice->pitchRatio = note->pitchRatio; voice->syncFlags |= AU_VOICE_SYNC_FLAG_PITCH; } } if (track->changed.volume) { - s32 tempVolume = ((player->masterVolume >> 0x15) * (track->subTrackVolume >> 0x15) * (track->unkVolume >> 0x15)) >> 0x14; - note->volume = (tempVolume * (track->segTrackVolume * note->noteVelocity)) >> 9; + // combining formats: 7.24 * 7.24 * 15.16 * 7.0 * 15.0 --> 16.16 + // first step, shifting fractional factors by 21: + // 7.24 * 7.24 * 15.16 --> 7.3 * 7.3 * 10.0 --> 24.6 + // shifting this down by 20 transforms 24.6 --> 10.0 + // now for the second step with whole: + // 10.0 * 7.0 * 7.0 --> 24.0 + // and a final shift by 9 transforms 24.0 --> 15.16 + note->volume = (( + (player->masterVolume >> 21) // 7.24 --> 7.3 + * (track->insVolume >> 21) // 7.24 --> 7.3 + * (track->proxVolume >> 21)) >> 20) + * (track->volume * note->velocity) >> 9; voice->clientVolume = note->volume; voice->envelopeFlags |= AU_VOICE_ENV_FLAG_VOL_CHANGED; - voice->pan = track->subTrackPan; - voice->reverb = track->subTrackReverb; + voice->pan = track->insPan; + voice->reverb = track->insReverb; } else if (track->changed.pan || track->changed.reverb) { - voice->pan = track->subTrackPan; - voice->reverb = track->subTrackReverb; + voice->pan = track->insPan; + voice->reverb = track->insReverb; voice->syncFlags |= AU_VOICE_SYNC_FLAG_PAN_FXMIX; } } } - note->unk_note_17 = 0; + note->pendingTick = FALSE; } } } @@ -1435,26 +1499,26 @@ void au_bgm_player_update_playing(BGMPlayer *player) { } if (bFinished) { - player->masterState = BGM_PLAY_STATE_NEXT_SUBSEG; + player->masterState = BGM_PLAY_STATE_FETCH; } } -static const f32 padding[] = {0.0f}; // at least after func_8004E4B8 +static const f32 padding[] = {0.0f}; // at least after au_bgm_player_audio_frame_update void au_BGMCmd_E0_MasterTempo(BGMPlayer* player, BGMPlayerTrack* track) { u32 bpm = player->seqCmdArgs.MasterTempo.value; s32 tempo; player->masterTempoBPM = bpm; - tempo = snd_bpm_to_tempo(player, bpm); + tempo = au_bgm_bpm_to_tempo(player, bpm); player->masterTempo = tempo; - player->nextUpdateStep = tempo * 10; - player->masterTempoTime = 0; + player->nextUpdateStep = BGM_TEMPO_TO_UPDATE_UNITS(tempo); + player->masterTempoTicks = 0; player->masterTempoTarget = 0; player->masterTempoStep = 0; } -static s32 snd_bpm_to_tempo(BGMPlayer* player, u32 tempo) { +static s32 au_bgm_bpm_to_tempo(BGMPlayer* player, u32 tempo) { u32 maxTempo = player->maxTempo; u32 ret = tempo; @@ -1470,37 +1534,37 @@ static s32 snd_bpm_to_tempo(BGMPlayer* player, u32 tempo) { } void au_BGMCmd_E1_MasterVolume(BGMPlayer* player, BGMPlayerTrack* track) { - s32 volume = player->seqCmdArgs.MasterVolume.value & 0x7F; + s8_24 volume = player->seqCmdArgs.MasterVolume.value & 0x7F; if (volume != 0) { - volume = volume << 0x18; + volume = volume << 24; } player->masterVolume = volume; - player->masterVolumeTime = 0; + player->masterVolumeTicks = 0; player->masterVolumeTarget = 0; player->masterVolumeStep = 0; player->volumeChanged = TRUE; track->changed.volume = TRUE; } -void au_BGMCmd_E2_MasterPitchShift(BGMPlayer* player, BGMPlayerTrack* track) { +void au_BGMCmd_E2_MasterDetune(BGMPlayer* player, BGMPlayerTrack* track) { player->masterPitchShift = (s8)player->seqCmdArgs.MasterPitchShift.cent * 100; } void au_BGMCmd_E3(BGMPlayer* player, BGMPlayerTrack* track) { - player->globals->effectChanges[player->busId].type = player->seqCmdArgs.UnkCmdE3.effectType; - player->globals->effectChanges[player->busId].changed = TRUE; + player->globals->effectChanges[player->busID].type = player->seqCmdArgs.UnkCmdE3.effectType; + player->globals->effectChanges[player->busID].changed = TRUE; } void au_BGMCmd_E6_MasterEffect(BGMPlayer* player, BGMPlayerTrack* track) { u8 index = player->seqCmdArgs.MasterEffect.index; - u32 busId = player->effectIndices[index]; + u32 busID = player->effectIndices[index]; - if ((index < 4) && (busId < 0x80)) { - if (player->globals->effectChanges[busId].type != player->seqCmdArgs.MasterEffect.value) { - player->globals->effectChanges[busId].type = player->seqCmdArgs.MasterEffect.value; - player->globals->effectChanges[busId].changed = TRUE; + if ((index < 4) && (busID < 0x80)) { + if (player->globals->effectChanges[busID].type != player->seqCmdArgs.MasterEffect.value) { + player->globals->effectChanges[busID].type = player->seqCmdArgs.MasterEffect.value; + player->globals->effectChanges[busID].changed = TRUE; } player->effectValues[index] = player->seqCmdArgs.MasterEffect.value; } @@ -1508,139 +1572,139 @@ void au_BGMCmd_E6_MasterEffect(BGMPlayer* player, BGMPlayerTrack* track) { void au_BGMCmd_E4_MasterTempoFade(BGMPlayer* player, BGMPlayerTrack* track) { s32 time = player->seqCmdArgs.MasterTempoFade.time; - s32 tempo = snd_bpm_to_tempo(player, player->seqCmdArgs.MasterTempoFade.value); + s32 tempo = au_bgm_bpm_to_tempo(player, player->seqCmdArgs.MasterTempoFade.value); if (time <= 0) { time = 1; } - player->masterTempoTime = time; + player->masterTempoTicks = time; player->masterTempoTarget = tempo; player->masterTempoStep = (tempo - player->masterTempo) / time; } void au_BGMCmd_E5_MasterVolumeFade(BGMPlayer* player, BGMPlayerTrack* track) { s32 time = player->seqCmdArgs.MasterVolumeFade.time; - s32 volume = player->seqCmdArgs.MasterVolumeFade.value & 0x7F; + s8_24 volume = player->seqCmdArgs.MasterVolumeFade.value & 0x7F; if (volume != 0) { - volume = volume << 0x18; + volume = volume << 24; } if (time <= 0) { time = 1; } - player->masterVolumeTime = time; + player->masterVolumeTicks = time; player->masterVolumeTarget = volume; player->masterVolumeStep = (volume - player->masterVolume) / time; } void au_BGMCmd_E8_TrackOverridePatch(BGMPlayer* player, BGMPlayerTrack* track) { - track->patch = player->seqCmdArgs.TrackOverridePatch.patch; - track->instrument = au_get_instrument(player->globals, player->seqCmdArgs.TrackOverridePatch.bank, track->patch, &track->envelope); + track->patch = player->seqCmdArgs.OverridePatch.patch; + track->instrument = au_get_instrument(player->globals, player->seqCmdArgs.OverridePatch.bank, track->patch, &track->envelope); } -void au_BGMCmd_E9_SubTrackVolume(BGMPlayer* arg0, BGMPlayerTrack* track) { - u32 volume = arg0->seqCmdArgs.SubTrackVolume.value & 0x7F; +void au_BGMCmd_E9_InstrumentVolume(BGMPlayer* arg0, BGMPlayerTrack* track) { + s8_24 volume = arg0->seqCmdArgs.InstrumentVolume.value & 0x7F; if (volume != 0) { - volume = volume << 0x18; + volume = volume << 24; } - track->subTrackVolume = volume; + track->insVolume = volume; track->changed.volume = TRUE; } -void au_BGMCmd_F6_TrackVolumeFade(BGMPlayer* player, BGMPlayerTrack* track) { +void au_BGMCmd_F6_InstrumentVolumeLerp(BGMPlayer* player, BGMPlayerTrack* track) { s32 time = player->seqCmdArgs.TrackVolumeFade.time; - s32 volume = player->seqCmdArgs.TrackVolumeFade.value & 0x7F; + s8_24 volume = player->seqCmdArgs.TrackVolumeFade.value & 0x7F; if (volume != 0) { - volume = volume << 0x18; + volume = volume << 24; } - if (volume != track->subTrackVolume) { + if (volume != track->insVolume) { if (time <= 0) { time = 1; } - track->subTrackVolumeTime = time; - track->subTrackVolumeTarget = volume; - track->subTrackVolumeStep = (volume - track->subTrackVolume) / time; + track->insVolumeTicks = time; + track->insVolumeTarget = volume; + track->insVolumeStep = (volume - track->insVolume) / time; } } -void au_BGMCmd_EA_SubTrackPan(BGMPlayer* player, BGMPlayerTrack* track) { - track->subTrackPan = player->seqCmdArgs.SubTrackPan.value & 0x7F; - track->unk_57 = 0; +void au_BGMCmd_EA_InstrumentPan(BGMPlayer* player, BGMPlayerTrack* track) { + track->insPan = player->seqCmdArgs.InstrumentPan.value & 0x7F; + track->randomPanAmount = 0; track->changed.pan = TRUE; } -void au_BGMCmd_EB_SubTrackReverb(BGMPlayer* player, BGMPlayerTrack* track) { - track->subTrackReverb = player->seqCmdArgs.SubTrackReverb.value & 0x7F; +void au_BGMCmd_EB_InstrumentReverb(BGMPlayer* player, BGMPlayerTrack* track) { + track->insReverb = player->seqCmdArgs.InstrumentReverb.value & 0x7F; track->changed.reverb = TRUE; } -void au_BGMCmd_EC_SegTrackVolume(BGMPlayer* player, BGMPlayerTrack* track) { - track->segTrackVolume = player->seqCmdArgs.SegTrackVolume.value & 0x7F; +void au_BGMCmd_EC_TrackVolume(BGMPlayer* player, BGMPlayerTrack* track) { + track->volume = player->seqCmdArgs.TrackVolume.value & 0x7F; track->changed.volume = TRUE; } -void au_BGMCmd_ED_SubTrackCoarseTune(BGMPlayer* player, BGMPlayerTrack* track) { - track->subTrackCoarseTune = (s8)player->seqCmdArgs.SubTrackCoarseTune.cent * 100; +void au_BGMCmd_ED_InstrumentCoarseTune(BGMPlayer* player, BGMPlayerTrack* track) { + track->insCoarseDetune = player->seqCmdArgs.InstrumentCoarseTune.semitone * AU_SEMITONE_CENTS; } -void au_BGMCmd_EE_SubTrackFineTune(BGMPlayer* player, BGMPlayerTrack* track) { - track->subTrackFineTune = player->seqCmdArgs.SubTrackFineTune.value; +void au_BGMCmd_EE_InstrumentFineTune(BGMPlayer* player, BGMPlayerTrack* track) { + track->insFineDetune = player->seqCmdArgs.InstrumentFineTune.cent; } -void au_BGMCmd_EF_SegTrackTune(BGMPlayer* player, BGMPlayerTrack* track) { - track->segTrackTune = player->seqCmdArgs.SegTrackTune.value; +void au_BGMCmd_EC_TrackDetune(BGMPlayer* player, BGMPlayerTrack* track) { + track->detune = player->seqCmdArgs.TrackDetune.cents; track->changed.tune = TRUE; } void au_BGMCmd_F0_TrackTremolo(BGMPlayer* player, BGMPlayerTrack* track) { - track->trackTremoloAmount = player->seqCmdArgs.TrackTremolo.amount; - track->trackTremoloSpeed = player->seqCmdArgs.TrackTremolo.speed; - track->trackTremoloTime = player->seqCmdArgs.TrackTremolo.time; + track->tremoloDelay = player->seqCmdArgs.TrackTremolo.delay; + track->tremoloRate = player->seqCmdArgs.TrackTremolo.speed; + track->tremoloDepth = player->seqCmdArgs.TrackTremolo.depth; } -void au_BGMCmd_F1_TrackTremoloSpeed(BGMPlayer* player, BGMPlayerTrack* track) { - track->trackTremoloSpeed = player->seqCmdArgs.TrackTremoloSpeed.value; +void au_BGMCmd_F1_TrackTremoloRate(BGMPlayer* player, BGMPlayerTrack* track) { + track->tremoloRate = player->seqCmdArgs.TrackTremoloRate.value; } -void au_BGMCmd_F2_TrackTremoloTime(BGMPlayer* player, BGMPlayerTrack* track) { - track->trackTremoloTime = player->seqCmdArgs.TrackTremoloTime.time; +void au_BGMCmd_F2_TrackTremoloDepth(BGMPlayer* player, BGMPlayerTrack* track) { + track->tremoloDepth = player->seqCmdArgs.TrackTremoloDepth.value; } void au_BGMCmd_F3_TrackTremoloStop(BGMPlayer* player, BGMPlayerTrack* track) { - track->trackTremoloTime = 0; + track->tremoloDepth = 0; } -void au_BGMCmd_F4(BGMPlayer* player, BGMPlayerTrack* track) { - track->subTrackPan = player->seqCmdArgs.UnkCmdF4.pan0 & 0x7F; - track->unk_57 = player->seqCmdArgs.UnkCmdF4.pan1 & 0x7F; +void au_BGMCmd_F4_SubTrackRandomPan(BGMPlayer* player, BGMPlayerTrack* track) { + track->insPan = player->seqCmdArgs.RandomPan.pan0 & 0x7F; + track->randomPanAmount = player->seqCmdArgs.RandomPan.pan1 & 0x7F; } -void au_BGMCmd_F5_TrackVoice(BGMPlayer* player, BGMPlayerTrack* track) { +void au_BGMCmd_F5_UseInstrument(BGMPlayer* player, BGMPlayerTrack* track) { BGMInstrumentInfo* instrument; s32 volume; - u32 voiceIndex; + u32 insIndex; u32 patch; u32 bank; - voiceIndex = player->seqCmdArgs.SetTrackVoice.index; - if (voiceIndex < 0x80) { - if (voiceIndex < player->bgmInstrumentCount) { - instrument = &player->instrumentsInfo[voiceIndex]; + insIndex = player->seqCmdArgs.UseInstrument.index; + if (insIndex < BGM_MAX_INSTRUMNETS) { + if (insIndex < player->bgmInstrumentCount) { + instrument = &player->instrumentsInfo[insIndex]; } else { instrument = &player->globals->defaultPRGEntry; } } else { - voiceIndex -= 0x80; - if (voiceIndex < 0x40) { - instrument = &player->globals->dataPRG[voiceIndex]; + insIndex -= BGM_MAX_INSTRUMNETS; + if (insIndex < PRG_MAX_COUNT) { + instrument = &player->globals->dataPRG[insIndex]; } else { instrument = &player->globals->defaultPRGEntry; } @@ -1651,29 +1715,29 @@ void au_BGMCmd_F5_TrackVoice(BGMPlayer* player, BGMPlayerTrack* track) { track->patch = patch; track->instrument = au_get_instrument(player->globals, bank, patch, &track->envelope); if (volume != 0) { - volume <<= 0x18; + volume <<= 24; } - track->subTrackVolume = volume; - track->subTrackPan = instrument->pan & 0x7F; - track->subTrackReverb = instrument->reverb & 0x7F; - track->subTrackCoarseTune = instrument->coarseTune * 100; - track->subTrackFineTune = instrument->fineTune; - track->changed.all |= 0x10101; + track->insVolume = volume; + track->insPan = instrument->pan & 0x7F; + track->insReverb = instrument->reverb & 0x7F; + track->insCoarseDetune = instrument->coarseTune * AU_SEMITONE_CENTS; + track->insFineDetune = instrument->fineTune; + track->changed.all |= 0x10101; // volume, pan, and reverb } -void au_BGMCmd_F7_SubTrackReverbType(BGMPlayer* player, BGMPlayerTrack* track) { - u8 index = player->seqCmdArgs.SubTrackReverbType.index; - s8 busId = player->effectIndices[index]; +void au_BGMCmd_F7_ReverbType(BGMPlayer* player, BGMPlayerTrack* track) { + u8 index = player->seqCmdArgs.ReverbType.index; + s8 busID = player->effectIndices[index]; - if ((index < 4) && (busId >= 0)) { - track->subtrackBusId = busId; + if ((index < ARRAY_COUNT(player->effectIndices)) && (busID >= 0)) { + track->busID = busID; } else { - track->subtrackBusId = player->busId; + track->busID = player->busID; } } void au_BGMCmd_FD_EventTrigger(BGMPlayer* player, BGMPlayerTrack* track) { - bgm_trigger_music_event(player->priority, track->index, player->seqCmdArgs.EventTrigger.eventInfo >> 8); + snd_song_trigger_music_event(player->priority, track->index, player->seqCmdArgs.EventTrigger.eventInfo >> 8); } // jump to another part of the track and return after a specified read length @@ -1685,14 +1749,14 @@ void au_BGMCmd_FE_Detour(BGMPlayer* player, BGMPlayerTrack* track) { track->bgmReadPos = readPos; } -// jump to another part of the track, switched by player->proxMixID -void au_BGMCmd_FC_Jump(BGMPlayer* player, BGMPlayerTrack* track) { +// jump to another part of the track, selected by player->branchVar +void au_BGMCmd_FC_Branch(BGMPlayer* player, BGMPlayerTrack* track) { AuFilePos args; u32 i; // get jump table - args = AU_FILE_RELATIVE(player->bgmFile, player->seqCmdArgs.Jump.unk_00); - if (player->proxMixID < player->seqCmdArgs.Jump.unk_02) { + args = AU_FILE_RELATIVE(player->bgmFile, player->seqCmdArgs.Branch.offset); + if (player->proxMixID < player->seqCmdArgs.Branch.tableCount) { args += player->proxMixID * 3; } // read new position from jump table @@ -1700,123 +1764,128 @@ void au_BGMCmd_FC_Jump(BGMPlayer* player, BGMPlayerTrack* track) { track->bgmReadPos = AU_FILE_RELATIVE(player->bgmFile, (args[0] << 8) + args[1]); track->isDrumTrack = args[2]; - if (track->unk_4D != 0) { - track->unk_4D = 0; - track->unkVolume = 0; - for (i = track->unk_52; i < track->unk_53; i++) { + if (track->proxMixSetChanged) { + track->proxMixSetChanged = FALSE; + track->proxVolume = 0; + for (i = track->firstVoice; i < track->lastVoice; i++) { AuVoice* voice = &player->globals->voices[i]; if ((voice->priority == player->priority) && (voice->cmdPtr != NULL)) { au_reset_voice(voice, i); } } } - if (track->unk_4E != 0) { - track->unk_4E = 0; - func_80050888(player, track, player->proxMixVolume, 144); + if (track->proxMixValChanged) { + track->proxMixValChanged = FALSE; + au_bgm_set_prox_mix_fade(player, track, player->proxMixVolume, 144); } - track->subTrackCoarseTune = 0; - track->subTrackFineTune = 0; - track->unk_4C = 0; - track->segTrackTune = 0; - track->trackTremoloTime = 0; - track->subTrackVolumeTime = 0; - track->unk_57 = 0; - track->subtrackBusId = player->busId; + // reset an odd subset of parameters + track->insCoarseDetune = 0; + track->insFineDetune = 0; + track->pressOverride = 0; + track->detune = 0; + track->tremoloDepth = 0; + track->insVolumeTicks = 0; + track->randomPanAmount = 0; + track->busID = player->busID; } -void au_BGMCmd_FF(BGMPlayer* player, BGMPlayerTrack* track) { +void au_BGMCmd_FF_Special(BGMPlayer* player, BGMPlayerTrack* track) { + u32 writePos; + u8 delaySide; + u8 delayTime; u32 i; - u32 j; - u8 temp_a1; - u8 temp_a3; - u32 arg0 = player->seqCmdArgs.UnkCmdFF.unk_00; - u32 arg1 = player->seqCmdArgs.UnkCmdFF.unk_01; - u32 arg2 = player->seqCmdArgs.UnkCmdFF.unk_02; + u32 type = player->seqCmdArgs.Special.type; + u32 arg1 = player->seqCmdArgs.Special.arg1; + u32 arg2 = player->seqCmdArgs.Special.arg2; - switch (arg0) { - case 1: + switch (type) { + case BGM_SPECIAL_SET_STEREO_DELAY: if ((arg1 < ARRAY_COUNT(player->effectIndices)) && ((s8)player->effectIndices[arg1] >= 0)) { - player->globals->channelDelayBusId = player->effectIndices[arg1]; + player->globals->channelDelayBusID = player->effectIndices[arg1]; if (arg2 != 0) { - temp_a3 = arg2 & 0xF; - temp_a1 = ((arg2 >> 4) & 1) + 1; - if ((player->globals->channelDelayTime != temp_a3) || (player->globals->channelDelaySide != temp_a1)) { - player->globals->channelDelayTime = temp_a3; - player->globals->channelDelaySide = temp_a1; - player->globals->channelDelayPending = 1; + delayTime = arg2 & 0xF; + delaySide = ((arg2 >> 4) & 1) + 1; + if ((player->globals->channelDelayTime != delayTime) || (player->globals->channelDelaySide != delaySide)) { + player->globals->channelDelayTime = delayTime; + player->globals->channelDelaySide = delaySide; + player->globals->channelDelayPending = TRUE; } } else { - if (player->globals->channelDelaySide != 0) { - player->globals->channelDelaySide = 0; - player->globals->channelDelayPending = 1; + if (player->globals->channelDelaySide != AU_DELAY_CHANNEL_NONE) { + player->globals->channelDelaySide = AU_DELAY_CHANNEL_NONE; + player->globals->channelDelayPending = TRUE; } } } break; - case 2: - if (arg1 - 1 < 8) { - player->unk_211 = arg1; - func_8004E844(player, arg1 - 1); + case BGM_SPECIAL_SEEK_CUSTOM_ENV: + if (arg1 - 1 < ARRAY_COUNT(player->customPressEnvelopes)) { + player->writingCustomEnvelope = arg1; + au_bgm_clear_custom_note_press(player, arg1 - 1); } else { - player->unk_211 = 0; + player->writingCustomEnvelope = 0; } break; - case 3: - i = player->unk_211; - if (i - 1 < 8) { - i = i - 1; // needed to match - j = player->unk_212[i]; - if (j < 8) { - if (arg1 >= 40) { - player->unk_174[i][j] = (arg1 << 8) + arg2; + case BGM_SPECIAL_WRITE_CUSTOM_ENV: + i = player->writingCustomEnvelope; + if (i - 1 < ARRAY_COUNT(player->customPressEnvelopes)) { + i--; // convert ID --> array index, needed to match + writePos = player->customEnvelopeWritePos[i]; + if (writePos < ARRAY_COUNT(player->customPressEnvelopes[i]) - 1) { + if (arg1 >= ARRAY_COUNT(BgmCustomEnvLookup)) { + player->customPressEnvelopes[i][writePos] = (arg1 << 8) + arg2; } else { - player->unk_174[i][j] = (D_80078558[arg1] << 8) + arg2; + player->customPressEnvelopes[i][writePos] = (BgmCustomEnvLookup[arg1] << 8) + arg2; } - player->unk_212[i] = j + 1; + player->customEnvelopeWritePos[i] = writePos + 1; } } break; - case 4: - if (arg1 < 9) { - track->unk_4C = arg1; + case BGM_SPECIAL_USE_CUSTOM_ENV: + if (arg1 <= ARRAY_COUNT(player->customPressEnvelopes)) { + track->pressOverride = arg1; } else { - track->unk_4C = 0; + track->pressOverride = 0; } break; - case 5: + case BGM_SPECIAL_TRIGGER_SOUND: if (player->soundManager != NULL) { for (i = 0; i < ARRAY_COUNT(player->soundManager->bgmSounds); i++) { - if ((player->soundManager->bgmSounds[i].unk_0) == 0) { - player->soundManager->bgmSounds[i].unk_0 = arg1; - player->soundManager->bgmSounds[i].volume = ((player->fadeInfo.curVolume.u16 * player->fadeInfo.volScale.u16) + 0x7FFF) >> 0x17; + if ((player->soundManager->bgmSounds[i].index) == 0) { + player->soundManager->bgmSounds[i].index = arg1; + player->soundManager->bgmSounds[i].volume = + ((s32)( + ((u32)player->fadeInfo.baseVolume >> 16) * + ((u32)player->fadeInfo.envelopeVolume >> 16) + ) + AU_MAX_VOLUME_16) >> 0x17; break; } } } break; - case 6: + case BGM_SPECIAL_PROX_MIX_OVERRIDE: if (arg1 == 0) { - if (track->unk_4E != 0) { - track->unk_4E = 0; + if (track->proxMixValChanged) { + track->proxMixValChanged = FALSE; for (i = 0; i < ARRAY_COUNT(player->tracks); i++) { BGMPlayerTrack* otherTrack = &player->tracks[i]; - if (player->proxMixVolume == 0x7F) { - if (otherTrack->unk_4F != 0) { - otherTrack->unk_4E = 0; - func_80050888(player, otherTrack, otherTrack->unk_4F, 72); + if (player->proxMixVolume == AU_MAX_VOLUME_8) { + if (otherTrack->proxVol1 != 0) { + otherTrack->proxMixValChanged = FALSE; + au_bgm_set_prox_mix_fade(player, otherTrack, otherTrack->proxVol1, 72); } } else { - if (otherTrack->unk_50 != 0) { - otherTrack->unk_4E = 0; - func_80050888(player, otherTrack, otherTrack->unk_50, 72); + if (otherTrack->proxVol2 != 0) { + otherTrack->proxMixValChanged = FALSE; + au_bgm_set_prox_mix_fade(player, otherTrack, otherTrack->proxVol2, 72); } } } } } else { - track->unk_4F = arg1; - track->unk_50 = arg2; + track->proxVol1 = arg1; + track->proxVol2 = arg2; } break; } @@ -1846,10 +1915,10 @@ static u8 au_bgm_get_random_pan(BGMPlayer* player, u8 pan, u8 amplitude) { } else { retPan = base - ((amplitude * random) >> 8); } - if (retPan < 0) { - retPan = 0; - } else if (retPan >= 0x80) { - retPan = 0x7F; + if (retPan < AU_PAN_MIN) { + retPan = AU_PAN_MIN; + } else if (retPan > AU_PAN_MAX) { + retPan = AU_PAN_MAX; } return retPan; } @@ -1921,9 +1990,9 @@ void au_bgm_set_proximity_mix(s32 songName, u32 mix) { for (i = 0; i < ARRAY_COUNT(player->tracks); i++) { track = &player->tracks[i]; if (changed) { - track->unk_4D = 1; + track->proxMixSetChanged = TRUE; } - track->unk_4E = 1; + track->proxMixValChanged = TRUE; } } } @@ -1937,18 +2006,18 @@ void au_bgm_set_playback_rate(BGMPlayer* player, f32 rate) { } player->playbackRate = rate; - player->masterTempo = snd_bpm_to_tempo(player, player->masterTempoBPM); - player->nextUpdateStep = player->masterTempo * 10; - player->masterTempoTime = 0; + player->masterTempo = au_bgm_bpm_to_tempo(player, player->masterTempoBPM); + player->nextUpdateStep = BGM_TEMPO_TO_UPDATE_UNITS(player->masterTempo); + player->masterTempoTicks = 0; player->masterTempoTarget = 0; player->masterTempoStep = 0; } void au_bgm_player_set_detune(BGMPlayer* player, s32 detune) { - if (detune > 1200) { - detune = 1200; - } else if (detune < -2400) { - detune = -2400; + if (detune > AU_OCTAVE_CENTS) { + detune = AU_OCTAVE_CENTS; + } else if (detune < -2 * AU_OCTAVE_CENTS) { + detune = -2 * AU_OCTAVE_CENTS; } player->detune = detune; @@ -1960,7 +2029,7 @@ void au_bgm_change_track_volume(BGMPlayer* player, s32 trackIdx, s16 time, u8 vo if (track->bgmReadPos != 0) { player->seqCmdArgs.TrackVolumeFade.time = time; player->seqCmdArgs.TrackVolumeFade.value = volume; - au_BGMCmd_F6_TrackVolumeFade(player, track); + au_BGMCmd_F6_InstrumentVolumeLerp(player, track); } } @@ -1969,25 +2038,25 @@ void au_bgm_set_track_volumes(BGMPlayer* player, u8* trackVols, s32 mode) { player->bFadeConfigSetsVolume = mode; } -void func_80050888(BGMPlayer* player, BGMPlayerTrack* track, s32 target, s32 duration) { +void au_bgm_set_prox_mix_fade(BGMPlayer* player, BGMPlayerTrack* track, s32 target, s32 duration) { if (target != 0) { - target = (target << 8) | 0xFF; + target = AU_VOL_8_TO_16(target); } if (duration <= 0) { duration = 1; } else if (duration > 1000) { duration = 1000; } - if (target == track->unkVolume) { - track->unkVolumeTime = 0; + if (target == track->proxVolume) { + track->proxVolumeTicks = 0; return; } - track->unkVolumeTime = duration; - track->unkVolumeTarget = target; - track->unkVolumeStep = ((target << 0x10) - track->unkVolume) / duration; + track->proxVolumeTicks = duration; + track->proxVolumeTarget = target; + track->proxVolumeStep = ((target << 0x10) - track->proxVolume) / duration; } -void func_80050900(BGMPlayer* player) { +void au_bgm_reset_all_voices(BGMPlayer* player) { u8 i; for (i = 0; i < ARRAY_COUNT(player->globals->voices); i++) { @@ -1998,62 +2067,66 @@ void func_80050900(BGMPlayer* player) { } } -AuResult func_80050970(SongUpdateEvent* update) { +AuResult au_bgm_set_linked_tracks(SongSwapLinkedRequest* request) { BGMPlayer* player; BGMPlayerTrack* track; - BGMPlayerTrack* parentTrack; + BGMPlayerTrack* linkTrack; AuVoice* voice; - s32 i; - s32 j; + s32 trackIdx; + s32 voiceIdx; s8 oldVolume; - s32 songName = update->songName; - s32 variation = update->variation; + s32 songName = request->songName; + b32 enabled = request->enabled; AuResult status = AU_RESULT_OK; if (songName != 0) { player = au_bgm_get_player_with_song_name(songName); if (player != NULL) { - for (i = 0; i < ARRAY_COUNT(player->tracks); i++) { - track = &player->tracks[i]; + for (trackIdx = 0; trackIdx < ARRAY_COUNT(player->tracks); trackIdx++) { + track = &player->tracks[trackIdx]; if (track->bgmReadPos != NULL) { - if (track->parentTrackIdx != 0) { - parentTrack = &player->tracks[track->parentTrackIdx - 1]; - if (variation != 0) { - if (track->unk_5A != 0) { - track->unk_5A = 0; - parentTrack->unk_5A = 1; - for (j = parentTrack->unk_52; j < parentTrack->unk_53; j++) { - voice = &player->globals->voices[j]; + if (track->linkedTrackID != 0) { + linkTrack = &player->tracks[track->linkedTrackID - 1]; + if (enabled) { + if (track->muted) { + track->muted = FALSE; + linkTrack->muted = TRUE; + // release all voices for linked track + for (voiceIdx = linkTrack->firstVoice; voiceIdx < linkTrack->lastVoice; voiceIdx++) { + voice = &player->globals->voices[voiceIdx]; if (voice->priority == player->priority) { voice->envelope.cmdListRelease = EnvelopeReleaseDefaultFast; voice->envelopeFlags |= AU_VOICE_ENV_FLAG_KEY_RELEASED; } } - oldVolume = track->subTrackVolume >> 24; - au_BGMCmd_E9_SubTrackVolume(player, track); + // fade in main track + oldVolume = track->insVolume >> 24; + au_BGMCmd_E9_InstrumentVolume(player, track); player->seqCmdArgs.raw[0] = 0; player->seqCmdArgs.TrackVolumeFade.time = 96; player->seqCmdArgs.TrackVolumeFade.value = oldVolume; - au_BGMCmd_F6_TrackVolumeFade(player, track); + au_BGMCmd_F6_InstrumentVolumeLerp(player, track); } } else { - if (track->unk_5A == 0) { - track->unk_5A = 1; - parentTrack->unk_5A = 0; - for (j = track->unk_52; j < track->unk_53; j++) { - voice = &player->globals->voices[j]; + if (!track->muted) { + track->muted = TRUE; + linkTrack->muted = FALSE; + // release all voices for main track + for (voiceIdx = track->firstVoice; voiceIdx < track->lastVoice; voiceIdx++) { + voice = &player->globals->voices[voiceIdx]; if (voice->priority == player->priority) { voice->envelope.cmdListRelease = EnvelopeReleaseDefaultFast; voice->envelopeFlags |= AU_VOICE_ENV_FLAG_KEY_RELEASED; } } - oldVolume = parentTrack->subTrackVolume >> 24; - au_BGMCmd_E9_SubTrackVolume(player, parentTrack); + // fade in linked track + oldVolume = linkTrack->insVolume >> 24; + au_BGMCmd_E9_InstrumentVolume(player, linkTrack); player->seqCmdArgs.raw[0] = 0; player->seqCmdArgs.TrackVolumeFade.time = 96; player->seqCmdArgs.TrackVolumeFade.value = oldVolume; - au_BGMCmd_F6_TrackVolumeFade(player, parentTrack); + au_BGMCmd_F6_InstrumentVolumeLerp(player, linkTrack); } } } diff --git a/src/audio/core.h b/src/audio/core.h new file mode 100644 index 0000000000..8c0bd35b60 --- /dev/null +++ b/src/audio/core.h @@ -0,0 +1,204 @@ +#ifndef _AUDIO_CORE_H_ +#define _AUDIO_CORE_H_ + +// ---------------------------------------------------------------------------------- +// core/system.c +// ---------------------------------------------------------------------------------- +void create_audio_system(void); +//void nuAuPreNMIFuncSet(NUAuPreNMIFunc func); +void nuAuMgr(void* arg); +s32 nuAuDmaCallBack(s32 addr, s32 len, void *state, u8 useDma); +//ALDMAproc nuAuDmaNew(NUDMAState** state); +//void nuAuCleanDMABuffers(void); +//void nuAuPreNMIProc(NUScMsg mesg_type, u32 frameCounter); +//void alLink(ALLink* element, ALLink* after); +//void alUnlink(ALLink* element); + +// ---------------------------------------------------------------------------------- +//core/engine.c +// ---------------------------------------------------------------------------------- +void au_release_voice(u8 index); +void au_engine_init(s32 outputRate); +static void au_reset_instrument(Instrument* instrument); +static void au_reset_drum_entry(BGMDrumInfo* arg0); +static void au_reset_instrument_entry(BGMInstrumentInfo* arg0); + +/// this is called once per video frame update (50 or 60 times per second) +void au_update_clients_for_video_frame(void); + +/// this is called per audio frame generated by alAudioFrame (every 184 audio samples) +/// there will be multiuple of these per video frame +void au_update_clients_for_audio_frame(void); + +void au_syn_begin_audio_frame(AuGlobals* globals); +void au_reset_nonfree_voice(AuVoice* arg0, u8 arg1); +void au_reset_voice(AuVoice* voice, u8 voiceIdx); + +/** + * @brief Converts a linear pitch value (in cents) into a frequency ratio suitable for adjusting playback speed. + * + * This function computes the playback rate corresponding to a pitch shift (up or down) in cents. + * Positive values increase pitch (higher frequency), and negative values decrease it. + * Recall 100 cents = 1 semitone, and therefore 1200 cents = 1 octave. + * + * @param tuning The pitch offset in cents, from +4095 (~ 40.95 semitones up) to -16383 (~ 163.83 semitones down) + * + * @return Floating point output rate multiplier. Multiply this with the base sample rate to apply the pitch. + */ +f32 au_compute_pitch_ratio(s32 tuning); + +void au_fade_init(Fade* fade, s32 time, s32 startValue, s32 endValue); +void au_fade_clear(Fade* fade); +void au_fade_update(Fade* fade); +void au_fade_set_volume(u8 arg0, u16 arg1, s32 arg2); +void au_fade_flush(Fade* fade); +void au_fade_set_envelope(Fade* fade, s16 value); +void au_fade_calc_envelope(Fade* fade, u32 arg1, s32 target); +void au_fade_update_envelope(Fade* fade); +Instrument* au_get_instrument(AuGlobals* globals, BankSetIndex bank, s32 patch, EnvelopeData* arg3); +void au_get_bgm_player_and_file(u32 playerIndex, BGMHeader** outCurrentTrackData, BGMPlayer** outPlayer); +void au_get_bgm_player(u32 playerIndex, BGMPlayer** outPlayer); +AuResult au_load_song_files(u32 arg0, BGMHeader* arg1, BGMPlayer* arg2); +AuResult au_reload_song_files(s32 songID, BGMHeader* arg1); +BGMPlayer* au_get_snapshot_by_index(s32 index); +AuResult au_ambient_load(u32 arg0); +BGMPlayer* au_get_client_by_priority(u8 arg0); +void au_load_INIT(AuGlobals* arg0, s32 romAddr, ALHeap* heap); +AuResult au_fetch_SBN_file(u32 fileIdx, AuFileFormat format, SBNFileEntry* arg2); +void au_load_PER(AuGlobals* globals, s32 romAddr); +void au_load_PRG(AuGlobals* arg0, s32 romAddr); +InstrumentBank* au_get_BK_instruments(BankSet bankSet, u32 bankIndex); +BKFileBuffer* au_load_BK_to_bank(s32 bkFileOffset, BKFileBuffer* bkFile, s32 bankIndex, BankSet bankSet); +void au_swizzle_BK_instruments(s32 bkFileOffset, BKFileBuffer* bkFile, InstrumentBank instruments, u32 instrumentCount, u8 arg4); +BKFileBuffer* au_load_static_BK_to_bank(s32* bkFileOffset, void* vaddr, s32 bankIndex, BankSet bankSet); +s32 au_load_aux_bank(s32 bkFileOffset, s32 bankIndex); +void au_clear_instrument_group(s32 bankIndex, BankSet bankSet); +void au_set_bus_volume_level(s32 arg0, u32 idx); +s32 au_set_reverb_type(s32 arg0, s32 arg1); +void au_sync_channel_delay_enabled(u32 arg0); +void au_read_rom(s32 romAddr, void* buffer, u32 size); +void au_memset(void* dst, s32 size, u8 value); +void au_copy_bytes(s8* src, s8* dest, s32 size); +void au_copy_words(void* src, void* dst, s32 size); + +// ---------------------------------------------------------------------------------- +// core/syn_driver.c +// ---------------------------------------------------------------------------------- +void au_driver_init(AuSynDriver* driver, ALConfig* config); +void au_driver_release(void); +//Acmd* alAudioFrame(Acmd* cmdList, s32* cmdLen, s16* outBuf, s32 outLen); +void au_use_global_volume(void); +void au_set_global_volume(s16 arg0); +s16 au_get_global_volume(void); +void au_set_stereo_enabled(b8 enabled); +void au_bus_set_volume(u8 busID, u16 value); +u16 au_bus_get_volume(u8 busID); +void au_bus_set_effect(u8 busID, u8 effectID); +void au_bus_set_fx_params(u8 busID, s16 arg1, s16 arg2, s32 arg3); +void au_pvoice_set_bus(u8 voiceIdx, s8 busID); +void au_syn_stop_voice(u8 voiceIdx); +void au_syn_start_voice(u8 index); +void au_syn_start_voice_params(u8 index, u8 reverbType, Instrument* table, f32 pitch, s16 vol, u8 pan, u8 fxMix, s32 delta); +void au_syn_set_wavetable(u8 voiceIdx, Instrument* table); +void au_syn_set_pitch(u8 voiceIdx, f32 pitchRatio); +void au_syn_set_mixer_params(u8 voiceIdx, s16 volume, s32 arg2, u8 arg3, u8 arg4); +void au_syn_set_pan_fxmix(u8 voiceIdx, u8 arg1, u8 arg2); +void au_syn_set_volume_delta(u8 voiceIdx, s16 arg1, s32 arg2); +void au_syn_set_pan(u8 voiceIdx, u8 pan); +void au_syn_set_fxmix(u8 voiceIdx, u8 dryAmt); +s32 au_syn_get_playing(u8 voiceIdx); +s32 au_syn_get_bus(u8 voiceIdx); +f32 au_syn_get_pitch(u8 voiceIdx); +u8 au_syn_get_pan(u8 voiceIdx); +s16 au_syn_get_dryamt(u8 voiceIdx); +s16 au_syn_get_wetamt(u8 voiceIdx); +s32 au_syn_get_volume_left(u8 voiceIdx); +s32 au_syn_get_volume_right(u8 voiceIdx); +void au_set_delay_time(s32 arg0); +void au_delay_left_channel(u8 arg0); +void au_delay_right_channel(u8 arg0); +void au_disable_channel_delay(void); +void au_init_delay_channel(s16 arg0); +//void alHeapInit(ALHeap* hp, u8* base, s32 len); +//void alCopy(void* src, void* dst, s32 size); +#undef alHeapAlloc +void* alHeapAlloc(ALHeap* heap, s32 count, s32 size); + +// ---------------------------------------------------------------------------------- +// core/voice.c +// ---------------------------------------------------------------------------------- + +/** + * (UNUSED) + * Immediately flush all voices which have finished playing. + * These are normally released automatically during the start of each audio frame. + */ +void au_flush_finished_voices(AuGlobals* globals); + +/** + * Initializes all voices in the audio system. + * Sets default values and clears previous envelope state. + */ +void au_init_voices(AuGlobals* globals); + +/** + * Main envelope system update, called once per frame. + * Progresses envelope state for all active voices. + */ +void au_update_voices(AuGlobals* globals); + +/** + * Applies volume update after a client-side volume change. + * This is deferred to avoid modifying envelope state mid-step. + */ +void au_voice_after_volume_change(AuVoice* voice); + +/** + * @brief Converts envelope step duration from microseconds to num samples delta. + * + * Uses AU_FRAME_USEC as the base time slice, returning the number of audio samples + * corresponding to the provided duration. + * + * @param msecs Time duration in microseconds. + * @return Number of samples that should pass in this interval. + */ +s32 au_voice_get_delta(s32 usecs); + +/** + * @brief Starts a new voice with the given envelope data. + * + * Initializes envelope state and prepares the press phase for playback. + * + * @param voice Pointer to the voice being started. + * @param envData Envelope command lists (press and release) to use. + */ +void au_voice_start(AuVoice* voice, EnvelopeData* envData); + +/** + * Parses and executes envelope commands until a time interval is found. + * Commands include setting multipliers, loop control, etc. + */ +u8 au_voice_step(AuVoice* voice); + +/** + * (UNUSED) + * Force recalculation of voice envelope volume during next update. + */ +void au_voice_set_vol_changed(AuVoice* voice); + +// ---------------------------------------------------------------------------------- +// core/pull_voice.c +// ---------------------------------------------------------------------------------- +Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos); + +// ---------------------------------------------------------------------------------- +// core/reverb.c +// ---------------------------------------------------------------------------------- +void au_fx_create(AuFX* fx, u8 mode, ALHeap* heap); +void au_filter_create(AuFilter* filter, ALHeap* heap); +void au_filter_init(AuFilter* filter, s16 arg1, s16 arg2, s16 fc); +void au_fx_load_preset(AuFX* fx, u8 effectType); +Acmd* au_pull_fx(AuFX* fx, Acmd* cmdBusPos, s16, s16); +s32 au_fx_param_hdl(AuFX* fx, s16 index, s16 paramID, s32 value); + +#endif diff --git a/src/audio/2e230_len_2190.c b/src/audio/core/engine.c similarity index 56% rename from src/audio/2e230_len_2190.c rename to src/audio/core/engine.c index d3049cee25..b6782ba782 100644 --- a/src/audio/2e230_len_2190.c +++ b/src/audio/core/engine.c @@ -1,4 +1,5 @@ #include "audio.h" +#include "audio/core.h" #include "ld_addrs.h" AuCallback BeginSoundUpdateCallback; @@ -10,7 +11,7 @@ AuGlobals* gSoundGlobals; AmbienceManager* gAuAmbienceManager; // data -extern u16 D_80078530[9]; +extern u16 PerceptualVolumeLevels[9]; extern u8 EnvelopePressDefault[]; extern u8 EnvelopeReleaseDefault[]; extern f32 AlTuneScaling[]; @@ -25,7 +26,7 @@ extern f32 AlTuneScaling[]; #define SBN_ROM_OFFSET 0xF00000 #endif -void func_80052E30(u8 index) { +void au_release_voice(u8 index) { AuVoice* voice = &gSoundGlobals->voices[index]; voice->cmdPtr = NULL; @@ -58,27 +59,27 @@ void au_engine_init(s32 outputRate) { globals->dataMSEQ[0] = (MSEQHeader*) &dummyTrackData[0x1C00]; globals->dataMSEQ[1] = (MSEQHeader*) &dummyTrackData[0x1400]; - for (i = 0; i < ARRAY_COUNT(globals->unk_globals_6C); i++) { - globals->unk_globals_6C[i].bgmPlayer = alHeapAlloc(alHeap, 1, sizeof(BGMPlayer)); + for (i = 0; i < ARRAY_COUNT(globals->snapshots); i++) { + globals->snapshots[i].bgmPlayer = alHeapAlloc(alHeap, 1, sizeof(BGMPlayer)); } globals->dataSEF = alHeapAlloc(alHeap, 1, 0x5200); globals->defaultInstrument = alHeapAlloc(alHeap, 1, sizeof(Instrument)); globals->dataPER = alHeapAlloc(alHeap, 1, 6 * sizeof(PEREntry)); - globals->dataPRG = alHeapAlloc(alHeap, 1, 64 * sizeof(BGMInstrumentInfo)); - globals->musicEventQueue = alHeapAlloc(alHeap, 1, 16 * sizeof(MusicEventTrigger)); + globals->dataPRG = alHeapAlloc(alHeap, 1, PRG_MAX_COUNT * sizeof(BGMInstrumentInfo)); + globals->musicEventQueue = alHeapAlloc(alHeap, 1, MUS_QUEUE_SIZE * sizeof(MusicEventTrigger)); globals->outputRate = outputRate; au_reset_instrument(globals->defaultInstrument); au_reset_drum_entry(&globals->defaultDrumEntry); au_reset_instrument_entry(&globals->defaultPRGEntry); - bgm_clear_music_events(); + snd_song_clear_music_events(); globals->audioThreadCallbacks[0] = NULL; globals->audioThreadCallbacks[1] = NULL; - for (i = 0; i < ARRAY_COUNT(globals->unk_globals_6C); i++) { - globals->unk_globals_6C[i].unk_4 = 0; - globals->unk_globals_6C[i].unk_5 = 0; + for (i = 0; i < ARRAY_COUNT(globals->snapshots); i++) { + globals->snapshots[i].assigned = 0; + globals->snapshots[i].priority = 0; } for (i = 0; i < ARRAY_COUNT(globals->effectChanges); i++) { @@ -88,16 +89,16 @@ void au_engine_init(s32 outputRate) { for (i = 0; i < ARRAY_COUNT(globals->voices); i++) { AuVoice* voice; - au_pvoice_set_bus(i, 0); + au_pvoice_set_bus(i, FX_BUS_BGMA_MAIN); au_syn_set_wavetable(i, globals->defaultInstrument); voice = &globals->voices[i]; voice->instrument = NULL; voice->pitchRatio = 0; - voice->p_volume = -1; + voice->volume = -1; voice->pan = 0xFF; voice->reverb = 0xFF; - voice->busId = 0; - voice->stopPending = FALSE; + voice->busID = 0; + voice->donePending = FALSE; voice->syncFlags = 0; voice->clientPriority = AU_PRIORITY_FREE; voice->priority = AU_PRIORITY_FREE; @@ -105,8 +106,8 @@ void au_engine_init(s32 outputRate) { au_load_INIT(globals, SBN_ROM_OFFSET, alHeap); - for (i = 0; i < ARRAY_COUNT(globals->banks); i++) { - globals->banks[i] = alHeapAlloc(alHeap, 1, 0x840); + for (i = 0; i < ARRAY_COUNT(globals->auxBanks); i++) { + globals->auxBanks[i] = alHeapAlloc(alHeap, 1, sizeof(BKFileBuffer)); } au_bgm_player_init(gBGMPlayerA, AU_PRIORITY_BGM_PLAYER_MAIN, FX_BUS_BGMA_MAIN, globals); @@ -124,109 +125,120 @@ void au_engine_init(s32 outputRate) { au_bgm_set_effect_indices(gBGMPlayerB, effects); au_sfx_init(gSoundManager, AU_PRIORITY_SFX_MANAGER, FX_BUS_SOUND, globals, 16); - au_amb_manager_init(gAuAmbienceManager, AU_PRIORITY_MSEQ_MANAGER, FX_BUS_SOUND, globals); + au_mseq_manager_init(gAuAmbienceManager, AU_PRIORITY_MSEQ_MANAGER, FX_BUS_SOUND, globals); au_init_voices(globals); au_load_BK_headers(globals, alHeap); - if (au_fetch_SBN_file(globals->mseqFileList[0], AU_FMT_SEF, &fileEntry) == AU_RESULT_OK) { + if (au_fetch_SBN_file(globals->extraFileList[0], AU_FMT_SEF, &fileEntry) == AU_RESULT_OK) { au_read_rom(fileEntry.offset, globals->dataSEF, fileEntry.data & 0xFFFFFF); } au_sfx_load_groups_from_SEF(gSoundManager); - if (au_fetch_SBN_file(globals->mseqFileList[1], AU_FMT_PER, &fileEntry) == AU_RESULT_OK) { + if (au_fetch_SBN_file(globals->extraFileList[1], AU_FMT_PER, &fileEntry) == AU_RESULT_OK) { au_load_PER(globals, fileEntry.offset); } - if (au_fetch_SBN_file(globals->mseqFileList[2], AU_FMT_PRG, &fileEntry) == AU_RESULT_OK) { + if (au_fetch_SBN_file(globals->extraFileList[2], AU_FMT_PRG, &fileEntry) == AU_RESULT_OK) { au_load_PRG(globals, fileEntry.offset); } - globals->instrumentGroups[0] = globals->instrumentGroup1; - globals->instrumentGroups[1] = globals->instrumentGroup2; - globals->instrumentGroups[2] = globals->instrumentGroupX; - globals->instrumentGroups[3] = globals->instrumentGroup3; - globals->instrumentGroups[4] = globals->instrumentGroup4; - globals->instrumentGroups[5] = globals->instrumentGroup5; - globals->instrumentGroups[6] = globals->instrumentGroup6; - globals->instrumentGroups[7] = globals->instrumentGroup1; - globals->channelDelaySide = 0; - globals->channelDelayTime = 0; - globals->channelDelayBusId = 0; - globals->channelDelayPending = 0; + globals->bankSets[BANK_SET_IDX_0] = globals->auxBankSet; + globals->bankSets[BANK_SET_IDX_1] = globals->bankSet2; + globals->bankSets[BANK_SET_IDX_2] = globals->defaultBankSet; + globals->bankSets[BANK_SET_IDX_3] = globals->musicBankSet; + globals->bankSets[BANK_SET_IDX_4] = globals->bankSet4; + globals->bankSets[BANK_SET_IDX_5] = globals->bankSet5; + globals->bankSets[BANK_SET_IDX_6] = globals->bankSet6; + globals->bankSets[BANK_SET_IDX_7] = globals->auxBankSet; - au_delay_channel(0); - func_80055050(alHeap); + globals->channelDelaySide = AU_DELAY_CHANNEL_NONE; + globals->channelDelayTime = 0; + globals->channelDelayBusID = 0; + globals->channelDelayPending = FALSE; + + au_init_delay_channel(0); + snd_notify_engine_ready(alHeap); } +/// used to initialize the default Instrument static void au_reset_instrument(Instrument* instrument) { - instrument->base = DummyInstrumentBase; - instrument->wavDataLength = sizeof(DummyInstrumentBase); - instrument->predictor = DummyInstrumentPredictor; - instrument->dc_bookSize = sizeof(DummyInstrumentPredictor); - instrument->keyBase = 4800; // middle C? - instrument->loopPredictor = NULL; + instrument->wavData = DummyInstrumentWavData; + instrument->wavDataLength = sizeof(DummyInstrumentWavData); + instrument->predictor = DummyInstrumentCodebook; + instrument->codebookSize = sizeof(DummyInstrumentCodebook); + instrument->keyBase = DEFAULT_KEYBASE; + instrument->loopState = NULL; instrument->loopStart = 0; instrument->loopEnd = 0; instrument->loopCount = 0; instrument->type = 0; - instrument->unk_25 = 0; + instrument->useDma = FALSE; instrument->envelopes = &DummyInstrumentEnvelope; - instrument->unk_26 = 0; - instrument->unk_27 = 0; - instrument->unk_28 = 0; - instrument->unk_29 = 0; - instrument->unk_2A = 0; - instrument->unk_2B = 0; + instrument->unused_26 = 0; + instrument->unused_27 = 0; + instrument->unused_28 = 0; + instrument->unused_29 = 0; + instrument->unused_2A = 0; + instrument->unused_2B = 0; instrument->pitchRatio = 0.5f; } -static void au_reset_drum_entry(BGMDrumInfo* arg0) { - arg0->bankPatch = 0x2010; - arg0->keyBase = 4800; // middle C? - arg0->volume = 0x7F; - arg0->pan = 64; - arg0->reverb = 0; - arg0->randTune = 0; - arg0->randVolume = 0; - arg0->randPan = 0; - arg0->randReverb = 0; +/// used to initialize the default BGMDrumInfo +static void au_reset_drum_entry(BGMDrumInfo* info) { + // @bug index 0x10 will overflow defaultBankSet and choose first instrument from musicBankSet instead? + info->bankPatch = (BANK_SET_IDX_2 << 12) | 0x10; + info->keyBase = DEFAULT_KEYBASE; + info->volume = AU_MAX_VOLUME_8; + info->pan = 64; + info->reverb = 0; + info->randTune = 0; + info->randVolume = 0; + info->randPan = 0; + info->randReverb = 0; } -static void au_reset_instrument_entry(BGMInstrumentInfo* arg0) { - arg0->bankPatch = 0x2010; - arg0->volume = 0x7F; - arg0->pan = 64; - arg0->reverb = 0; - arg0->coarseTune = 0; - arg0->fineTune = 0; +/// used to initialize the default BGMInstrumentInfo +static void au_reset_instrument_entry(BGMInstrumentInfo* info) { + // @bug index 0x10 will overflow defaultBankSet and choose first instrument from musicBankSet instead? + info->bankPatch = (BANK_SET_IDX_2 << 12) | 0x10; + info->volume = AU_MAX_VOLUME_8; + info->pan = 64; + info->reverb = 0; + info->coarseTune = 0; + info->fineTune = 0; } -void au_update_clients_2(void) { +/// Called exactly once per audio frame (every 5.75ms at 32kHz). +/// Updates MSEQ, SFX, and BGM players for the current audio frame. +void au_update_clients_for_audio_frame(void) { AuGlobals* globals = gSoundGlobals; SoundManager* sfxManager = gSoundManager; AmbienceManager* ambManager = gAuAmbienceManager; BGMPlayer* bgmPlayer; - au_syn_update(globals); + au_syn_begin_audio_frame(globals); + // Update ambience manager every other frame ambManager->nextUpdateCounter -= ambManager->nextUpdateStep; if (ambManager->nextUpdateCounter <= 0) { ambManager->nextUpdateCounter += ambManager->nextUpdateInterval; - au_amb_manager_update(ambManager); + au_mseq_manager_audio_frame_update(ambManager); } - if (sfxManager->fadeInfo.fadeTime != 0) { + // Update volume fade for SFX bus + if (sfxManager->fadeInfo.baseTicks != 0) { au_fade_update(&sfxManager->fadeInfo); - au_fade_set_volume(sfxManager->busId, sfxManager->fadeInfo.curVolume.u16, sfxManager->busVolume); + au_fade_set_volume(sfxManager->busID, sfxManager->fadeInfo.baseVolume >> 16, sfxManager->busVolume); } + // Periodic SFX manager update sfxManager->nextUpdateCounter -= sfxManager->nextUpdateStep; if (sfxManager->nextUpdateCounter <= 0) { sfxManager->nextUpdateCounter += sfxManager->nextUpdateInterval; - sfxManager->unk_BA = au_sfx_manager_update(sfxManager); + sfxManager->prevUpdateResult = au_sfx_manager_audio_frame_update(sfxManager); } - // update gBGMPlayerB + // Update gBGMPlayerB if (!PreventBGMPlayerUpdate) { bgmPlayer = gBGMPlayerB; - if (bgmPlayer->fadeInfo.fadeTime != 0) { + if (bgmPlayer->fadeInfo.baseTicks != 0) { au_bgm_update_fade(bgmPlayer); } if (bgmPlayer->songName != 0) { @@ -235,24 +247,25 @@ void au_update_clients_2(void) { bgmPlayer->nextUpdateCounter -= bgmPlayer->nextUpdateStep; if (bgmPlayer->nextUpdateCounter <= 0) { - bgmPlayer->nextUpdateCounter += bgmPlayer->nextUpdateInterval; - bgmPlayer->unk_5C = au_bgm_player_update_main(bgmPlayer); + bgmPlayer->nextUpdateCounter += bgmPlayer->tickUpdateInterval; + bgmPlayer->prevUpdateResult = au_bgm_player_audio_frame_update(bgmPlayer); } } + // Update gBGMPlayerA if (!PreventBGMPlayerUpdate) { - if (globals->unk_80 != 0) { - func_8004DFD4(globals); + if (globals->resumeRequested) { + au_bgm_restore_copied_player(globals); } bgmPlayer = gBGMPlayerA; - if (bgmPlayer->fadeInfo.volScaleTime != 0) { - func_80053BA8(&bgmPlayer->fadeInfo); - if (bgmPlayer->fadeInfo.fadeTime == 0) { - func_8004E444(bgmPlayer); + if (bgmPlayer->fadeInfo.envelopeTicks != 0) { + au_fade_update_envelope(&bgmPlayer->fadeInfo); + if (bgmPlayer->fadeInfo.baseTicks == 0) { + au_bgm_update_bus_volumes(bgmPlayer); } else { au_bgm_update_fade(bgmPlayer); } - } else if (bgmPlayer->fadeInfo.fadeTime != 0) { + } else if (bgmPlayer->fadeInfo.baseTicks != 0) { au_bgm_update_fade(bgmPlayer); } if (bgmPlayer->songName != 0) { @@ -261,20 +274,22 @@ void au_update_clients_2(void) { bgmPlayer->nextUpdateCounter -= bgmPlayer->nextUpdateStep; if (bgmPlayer->nextUpdateCounter <= 0) { - bgmPlayer->nextUpdateCounter += bgmPlayer->nextUpdateInterval; - bgmPlayer->unk_5C = au_bgm_player_update_main(bgmPlayer); + bgmPlayer->nextUpdateCounter += bgmPlayer->tickUpdateInterval; + bgmPlayer->prevUpdateResult = au_bgm_player_audio_frame_update(bgmPlayer); } } + + // With all clients updated, now update all voices au_update_voices(globals); } -void au_update_players_main(void) { +void au_update_clients_for_video_frame(void) { AuGlobals* globals = gSoundGlobals; BGMPlayer* player = gBGMPlayerA; SoundManager* manager = gSoundManager; if (globals->flushMusicEventQueue) { - bgm_clear_music_events(); + snd_song_clear_music_events(); } BeginSoundUpdateCallback = globals->audioThreadCallbacks[0]; @@ -282,32 +297,32 @@ void au_update_players_main(void) { BeginSoundUpdateCallback(); } - au_bgm_update_main(player); + au_bgm_begin_video_frame(player); player = gBGMPlayerB; - au_bgm_update_main(player); + au_bgm_begin_video_frame(player); - au_sfx_update_main(manager); + au_sfx_begin_video_frame(manager); } -void au_syn_update(AuGlobals* globals) { +void au_syn_begin_audio_frame(AuGlobals* globals) { u32 i; - if (globals->unk_130C == 2) { - globals->unk_130C = 1; + if (globals->channelDelayState == AU_DELAY_STATE_REQUEST_OFF) { + globals->channelDelayState = AU_DELAY_STATE_OFF; au_disable_channel_delay(); } - if (globals->channelDelayPending && (globals->unk_130C == 0)) { + if (globals->channelDelayPending && (globals->channelDelayState == AU_DELAY_STATE_ON)) { switch (globals->channelDelaySide) { - case 1: + case AU_DELAY_CHANNEL_LEFT: au_set_delay_time(globals->channelDelayTime); - au_delay_left_channel(globals->channelDelayBusId); + au_delay_left_channel(globals->channelDelayBusID); globals->channelDelayPending = FALSE; break; - case 2: + case AU_DELAY_CHANNEL_RIGHT: au_set_delay_time(globals->channelDelayTime); - au_delay_right_channel(globals->channelDelayBusId); + au_delay_right_channel(globals->channelDelayBusID); globals->channelDelayPending = FALSE; break; default: @@ -317,6 +332,7 @@ void au_syn_update(AuGlobals* globals) { } } + // handle effect bus changes if (globals->effectChanges[FX_BUS_BGMA_MAIN].changed) { au_bus_set_effect(FX_BUS_BGMA_MAIN, globals->effectChanges[FX_BUS_BGMA_MAIN].type); globals->effectChanges[FX_BUS_BGMA_MAIN].changed = FALSE; @@ -338,16 +354,16 @@ void au_syn_update(AuGlobals* globals) { AuVoice* voice = &globals->voices[i]; u8 voiceUpdateFlags = voice->syncFlags; - if (voice->stopPending) { + if (voice->donePending) { au_syn_stop_voice(i); - voice->stopPending = FALSE; + voice->donePending = FALSE; voice->cmdPtr = NULL; voice->priority = AU_PRIORITY_FREE; } if (voiceUpdateFlags & AU_VOICE_SYNC_FLAG_ALL) { au_voice_start(voice, &voice->envelope); - au_syn_start_voice_params(i, voice->busId, voice->instrument, voice->pitchRatio, voice->p_volume, voice->pan, voice->reverb, voice->delta); + au_syn_start_voice_params(i, voice->busID, voice->instrument, voice->pitchRatio, voice->volume, voice->pan, voice->reverb, voice->delta); // priority may be AU_PRIORITY_FREE if this voice was stolen and reset voice->priority = voice->clientPriority; } else { @@ -356,7 +372,7 @@ void au_syn_update(AuGlobals* globals) { } if (voiceUpdateFlags & AU_VOICE_SYNC_FLAG_PARAMS) { - au_syn_set_mixer_params(i, voice->p_volume, voice->delta, voice->pan, voice->reverb); + au_syn_set_mixer_params(i, voice->volume, voice->delta, voice->pan, voice->reverb); } else if (voiceUpdateFlags & AU_VOICE_SYNC_FLAG_PAN_FXMIX) { au_syn_set_pan_fxmix(i, voice->pan, voice->reverb); } @@ -368,16 +384,15 @@ void au_syn_update(AuGlobals* globals) { void au_reset_nonfree_voice(AuVoice* voice, u8 index) { if (voice->priority != AU_PRIORITY_FREE) { voice->cmdPtr = NULL; - voice->stopPending = TRUE; + voice->donePending = TRUE; voice->syncFlags = 0; au_syn_set_volume_delta(index, 0, AUDIO_SAMPLES); } } -// uncertain name void au_reset_voice(AuVoice* voice, u8 voiceIdx) { voice->cmdPtr = NULL; - voice->stopPending = TRUE; + voice->donePending = TRUE; voice->syncFlags = 0; au_syn_set_volume_delta(voiceIdx, 0, AUDIO_SAMPLES); } @@ -388,109 +403,111 @@ void au_reset_voice(AuVoice* voice, u8 voiceIdx) { #define TUNE_SCALING_ARR_ATTENUATE_FINE 160 #define TUNE_SCALING_ARR_ATTENUATE_COARSE 288 -f32 au_compute_pitch_ratio(s32 pitch) { - if (pitch >= 0) { - return AlTuneScaling[(pitch & 0x7F) + TUNE_SCALING_ARR_AMPLIFY_FINE] - * AlTuneScaling[((pitch & 0xF80) >> 7) + TUNE_SCALING_ARR_AMPLIFY_COARSE]; +f32 au_compute_pitch_ratio(s32 tuning) { + if (tuning >= 0) { + return AlTuneScaling[(tuning & 0x7F) + TUNE_SCALING_ARR_AMPLIFY_FINE] + * AlTuneScaling[((tuning & 0xF80) >> 7) + TUNE_SCALING_ARR_AMPLIFY_COARSE]; } else { - pitch = -pitch; - return AlTuneScaling[(pitch & 0x7F) + TUNE_SCALING_ARR_ATTENUATE_FINE] - * AlTuneScaling[((pitch & 0x3F80) >> 7) + TUNE_SCALING_ARR_ATTENUATE_COARSE]; + tuning = -tuning; + return AlTuneScaling[(tuning & 0x7F) + TUNE_SCALING_ARR_ATTENUATE_FINE] + * AlTuneScaling[((tuning & 0x3F80) >> 7) + TUNE_SCALING_ARR_ATTENUATE_COARSE]; } } void au_fade_init(Fade* fade, s32 time, s32 startValue, s32 endValue) { - fade->curVolume.s32 = startValue * 0x10000; - fade->targetVolume = endValue; + fade->baseVolume = startValue << 16; + fade->baseTarget = endValue; if (time != 0) { - fade->fadeTime = (time * 1000) / AU_5750; - fade->fadeStep = (endValue * 0x10000 - fade->curVolume.s32) / fade->fadeTime; + fade->baseTicks = (time * 1000) / AU_FRAME_USEC; + fade->baseStep = ((endValue << 16) - fade->baseVolume) / fade->baseTicks; } else { - fade->fadeTime = 1; - fade->fadeStep = 0; + fade->baseTicks = 1; + fade->baseStep = 0; } fade->onCompleteCallback = NULL; } void au_fade_clear(Fade* fade) { - fade->fadeTime = 0; - fade->fadeStep = 0; + fade->baseTicks = 0; + fade->baseStep = 0; fade->onCompleteCallback = NULL; } void au_fade_update(Fade* fade) { - fade->fadeTime--; + fade->baseTicks--; - if ((fade->fadeTime << 0x10) != 0) { - fade->curVolume.s32 += fade->fadeStep; + if ((fade->baseTicks << 16) != 0) { + fade->baseVolume += fade->baseStep; } else { - fade->curVolume.s32 = fade->targetVolume << 0x10; + fade->baseVolume = fade->baseTarget << 16; if (fade->onCompleteCallback != NULL) { fade->onCompleteCallback(); - fade->fadeStep = 0; + fade->baseStep = 0; fade->onCompleteCallback = NULL; } } } -void au_fade_set_volume(u8 busId, u16 volume, s32 busVolume) { - au_bus_set_volume(busId, (u32)(volume * busVolume) >> 15); +void au_fade_set_volume(u8 busID, u16 volume, s32 busVolume) { + au_bus_set_volume(busID, (u32)(volume * busVolume) / AU_MAX_BUS_VOLUME); } -void func_80053AC8(Fade* fade) { - if (fade->fadeTime == 0) { - fade->fadeTime = 1; - fade->fadeStep = 0; - fade->targetVolume = fade->curVolume.u16; +void au_fade_flush(Fade* fade) { + if (fade->baseTicks == 0) { + fade->baseTicks = 1; + fade->baseStep = 0; + fade->baseTarget = ((u32)fade->baseVolume >> 16); } } -void au_fade_set_vol_scale(Fade* fade, s16 value) { - fade->volScale.s32 = value << 16; - fade->targetVolScale = value; - fade->volScaleTime = 0; - fade->volScaleStep = 0; +void au_fade_set_envelope(Fade* fade, s16 value) { + fade->envelopeVolume = value << 16; + fade->envelopeTarget = value; + fade->envelopeTicks = 0; + fade->envelopeStep = 0; } -void func_80053B04(Fade* fade, u32 arg1, s32 target) { - s16 time; +void au_fade_calc_envelope(Fade* fade, u32 duration, s32 target) { + s16 ticks; s32 delta; - if (arg1 >= 250 && arg1 <= 100000) { - time = (s32)(arg1 * 1000) / AU_5750; - delta = (target << 16) - fade->volScale.s32; + if (duration >= 250 && duration <= 100000) { + ticks = (s32)(duration * 1000) / AU_FRAME_USEC; + delta = (target << 16) - fade->envelopeVolume; - fade->targetVolScale = target; - fade->volScaleTime = time; - fade->volScaleStep = delta / time; + fade->envelopeTarget = target; + fade->envelopeTicks = ticks; + fade->envelopeStep = delta / ticks; } else { - fade->volScaleTime = 0; - fade->volScaleStep = 0; + fade->envelopeTicks = 0; + fade->envelopeStep = 0; } } -void func_80053BA8(Fade* fade) { - fade->volScaleTime--; +void au_fade_update_envelope(Fade* fade) { + fade->envelopeTicks--; - if (fade->volScaleTime != 0) { - fade->volScale.s32 += fade->volScaleStep; + if (fade->envelopeTicks != 0) { + fade->envelopeVolume += fade->envelopeStep; } else { - fade->volScaleStep = 0; - fade->volScale.s32 = fade->targetVolScale << 16; + fade->envelopeStep = 0; + fade->envelopeVolume = fade->envelopeTarget << 16; } } -//TODO cleanup and documentation -Instrument* au_get_instrument(AuGlobals* globals, u32 bank, u32 patch, EnvelopeData* envData) { - Instrument* instrument = (*globals->instrumentGroups[(bank & 0x70) >> 4])[patch]; - EnvelopePreset* preset = instrument->envelopes; +/// Note that bank is supplied as BankSetIndex and not BankSet, which means it will be used to perform a raw +/// access into AuGlobals::bankSets. This does not affect values above 3, but 1 and 2 differ. +Instrument* au_get_instrument(AuGlobals* globals, BankSetIndex bank, s32 patch, EnvelopeData* envData) { + // note that patch here can be up to 255, selecting from a maximum of 16 instruments and 16 banks per group + Instrument* instrument = (*globals->bankSets[(bank & 0x70) >> 4])[patch]; + EnvelopePreset* envelope = instrument->envelopes; u32 envelopeIdx = bank & 3; - if (envelopeIdx < preset->count) { - envData->cmdListPress = AU_FILE_RELATIVE(preset, preset->offsets[envelopeIdx].offsetPress); - envData->cmdListRelease = AU_FILE_RELATIVE(preset, preset->offsets[envelopeIdx].offsetRelease); + if (envelopeIdx < envelope->count) { + envData->cmdListPress = AU_FILE_RELATIVE(envelope, envelope->offsets[envelopeIdx].offsetPress); + envData->cmdListRelease = AU_FILE_RELATIVE(envelope, envelope->offsets[envelopeIdx].offsetRelease); } else { envData->cmdListPress = EnvelopePressDefault; envData->cmdListRelease = &EnvelopePressDefault[4]; //EnvelopeReleaseDefault; @@ -543,89 +560,89 @@ AuResult au_load_song_files(u32 songID, BGMHeader* bgmFile, BGMPlayer* player) { SBNFileEntry fileEntry; SBNFileEntry fileEntry2; SBNFileEntry* bkFileEntry; - AuGlobals* soundData; + AuGlobals* globals = gSoundGlobals; InitSongEntry* songInfo; s32 i; u16 bkFileIndex; s32 bgmFileIndex; u32 data; u32 offset; - BGMPlayer* arg2_copy ; - BGMHeader* arg1_copy; + BGMPlayer* playerCopy; + BGMHeader* fileCopy; s32 cond; - soundData = gSoundGlobals; - // needed to match - cond = songID < soundData->songListLength; - arg2_copy = player; - arg1_copy = bgmFile; + cond = songID < globals->songListLength; + playerCopy = player; + fileCopy = bgmFile; if (cond) { - songInfo = &soundData->songList[songID]; + songInfo = &globals->songList[songID]; status = au_fetch_SBN_file(songInfo->bgmFileIndex, AU_FMT_BGM, &fileEntry); if (status != AU_RESULT_OK) { return status; } - if (func_8004DB28(arg2_copy)) { + if (au_bgm_player_is_active(playerCopy)) { return AU_ERROR_201; } - au_read_rom(fileEntry.offset, arg1_copy, fileEntry.data & 0xFFFFFF); + au_read_rom(fileEntry.offset, fileCopy, fileEntry.data & 0xFFFFFF); for (i = 0; i < ARRAY_COUNT(songInfo->bkFileIndex); i++) { bkFileIndex = songInfo->bkFileIndex[i]; if (bkFileIndex != 0) { - bkFileEntry = &soundData->sbnFileList[bkFileIndex]; + bkFileEntry = &globals->sbnFileList[bkFileIndex]; - offset = (bkFileEntry->offset & 0xFFFFFF) + soundData->baseRomOffset; + offset = (bkFileEntry->offset & 0xFFFFFF) + globals->baseRomOffset; fileEntry2.offset = offset; data = bkFileEntry->data; fileEntry2.data = data; if ((data >> 0x18) == AU_FMT_BK) { - snd_load_BK(offset, i); + au_load_aux_bank(offset, i); } } } bgmFileIndex = songInfo->bgmFileIndex; - arg2_copy->songID = songID; - arg2_copy->bgmFile = bgmFile; - arg2_copy->bgmFileIndex = bgmFileIndex; - return arg1_copy->name; + playerCopy->songID = songID; + playerCopy->bgmFile = bgmFile; + playerCopy->bgmFileIndex = bgmFileIndex; + return fileCopy->name; } else { return AU_ERROR_151; } } -AuResult func_80053E58(s32 songID, BGMHeader* bgmFile) { +AuResult au_reload_song_files(s32 songID, BGMHeader* bgmFile) { AuResult status; SBNFileEntry fileEntry; SBNFileEntry sbnEntry; SBNFileEntry* bkFileEntry; - AuGlobals* soundData; + AuGlobals* globals; InitSongEntry* songInfo; s32 i; u16 bkFileIndex; - soundData = gSoundGlobals; - songInfo = &soundData->songList[songID]; - status = au_fetch_SBN_file(songInfo[0].bgmFileIndex, AU_FMT_BGM, &sbnEntry); + globals = gSoundGlobals; + songInfo = &globals->songList[songID]; + status = au_fetch_SBN_file(songInfo->bgmFileIndex, AU_FMT_BGM, &sbnEntry); if (status == AU_RESULT_OK) { + // load BGM file au_read_rom(sbnEntry.offset, bgmFile, sbnEntry.data & 0xFFFFFF); + // load any auxiliary banks required by this BGM for (i = 0; i < ARRAY_COUNT(songInfo->bkFileIndex); i++) { bkFileIndex = songInfo->bkFileIndex[i]; if (bkFileIndex != 0) { - bkFileEntry = &soundData->sbnFileList[bkFileIndex]; + bkFileEntry = &globals->sbnFileList[bkFileIndex]; - fileEntry.offset = (bkFileEntry->offset & 0xFFFFFF) + soundData->baseRomOffset; + fileEntry.offset = (bkFileEntry->offset & 0xFFFFFF) + globals->baseRomOffset; fileEntry.data = bkFileEntry->data; if ((fileEntry.data >> 0x18) == AU_FMT_BK) { - snd_load_BK(fileEntry.offset, i); + au_load_aux_bank(fileEntry.offset, i); } else { status = AU_ERROR_SBN_FORMAT_MISMATCH; } @@ -636,14 +653,14 @@ AuResult func_80053E58(s32 songID, BGMHeader* bgmFile) { return status; } -BGMPlayer* func_80053F64(s32 arg0) { - if (arg0 == 0) { - return gSoundGlobals->unk_globals_6C[0].bgmPlayer; +BGMPlayer* au_get_snapshot_by_index(s32 index) { + if (index == BGM_SNAPSHOT_0) { + return gSoundGlobals->snapshots[BGM_SNAPSHOT_0].bgmPlayer; } return NULL; } -#define SBN_LOOKUP(i,fmt,e) (au_fetch_SBN_file(globals->mseqFileList[AmbientSoundIDtoMSEQFileIndex[i]], fmt, &e)) +#define SBN_EXTRA_LOOKUP(i,fmt,e) (au_fetch_SBN_file(globals->extraFileList[AmbientSoundIDtoMSEQFileIndex[i]], fmt, &e)) AuResult au_ambient_load(u32 ambSoundID) { AmbienceManager* manager; @@ -655,46 +672,53 @@ AuResult au_ambient_load(u32 ambSoundID) { globals = gSoundGlobals; manager = gAuAmbienceManager; if (ambSoundID < AMBIENT_RADIO) { - if (manager->players[0].mseqName == 0 && SBN_LOOKUP(ambSoundID, AU_FMT_MSEQ, fileEntry) == AU_RESULT_OK) { - au_read_rom(fileEntry.offset, globals->dataMSEQ[0], fileEntry.data & 0xFFFFFF); - manager->mseqFiles[0] = globals->dataMSEQ[0]; - for (i = 1; i < ARRAY_COUNT(manager->mseqFiles); i++) { - manager->mseqFiles[i] = NULL; + if (manager->players[0].mseqName == 0) { + if (SBN_EXTRA_LOOKUP(ambSoundID, AU_FMT_MSEQ, fileEntry) == AU_RESULT_OK) { + au_read_rom(fileEntry.offset, globals->dataMSEQ[0], fileEntry.data & 0xFFFFFF); + manager->mseqFiles[0] = globals->dataMSEQ[0]; + for (i = 1; i < ARRAY_COUNT(manager->mseqFiles); i++) { + manager->mseqFiles[i] = NULL; + } + manager->numActivePlayers = 1; } - manager->numActivePlayers = 1; } } else if (ambSoundID == AMBIENT_RADIO && manager->players[0].mseqName == 0 && manager->players[1].mseqName == 0 - && manager->players[2].mseqName == 0) { + && manager->players[2].mseqName == 0 + ) { manager->numActivePlayers = 0; for (i = 0; i < ARRAY_COUNT(manager->mseqFiles); i++) { manager->mseqFiles[i] = NULL; } mseqFile = globals->dataMSEQ[1]; - if (SBN_LOOKUP(ambSoundID, AU_FMT_MSEQ, fileEntry) == AU_RESULT_OK) { + if (SBN_EXTRA_LOOKUP(ambSoundID, AU_FMT_MSEQ, fileEntry) == AU_RESULT_OK) { au_read_rom(fileEntry.offset, mseqFile, fileEntry.data & 0xFFFFFF); manager->mseqFiles[0] = mseqFile; mseqFile = AU_FILE_RELATIVE(mseqFile, (fileEntry.data + 0x40) & 0xFFFFFF); - if (SBN_LOOKUP(ambSoundID + 1, AU_FMT_MSEQ, fileEntry) == AU_RESULT_OK) { + if (SBN_EXTRA_LOOKUP(ambSoundID + 1, AU_FMT_MSEQ, fileEntry) == AU_RESULT_OK) { au_read_rom(fileEntry.offset, mseqFile, fileEntry.data & 0xFFFFFF); manager->mseqFiles[1] = mseqFile; mseqFile = AU_FILE_RELATIVE(mseqFile, (fileEntry.data + 0x40) & 0xFFFFFF); - if (SBN_LOOKUP(ambSoundID + 2, AU_FMT_MSEQ, fileEntry) == AU_RESULT_OK) { + if (SBN_EXTRA_LOOKUP(ambSoundID + 2, AU_FMT_MSEQ, fileEntry) == AU_RESULT_OK) { au_read_rom(fileEntry.offset, mseqFile, fileEntry.data & 0xFFFFFF); manager->mseqFiles[2] = mseqFile; mseqFile = AU_FILE_RELATIVE(mseqFile, (fileEntry.data + 0x40) & 0xFFFFFF); - if (SBN_LOOKUP(ambSoundID + 3, AU_FMT_MSEQ, fileEntry) == AU_RESULT_OK) { + if (SBN_EXTRA_LOOKUP(ambSoundID + 3, AU_FMT_MSEQ, fileEntry) == AU_RESULT_OK) { au_read_rom(fileEntry.offset, mseqFile, fileEntry.data & 0xFFFFFF); manager->mseqFiles[3] = mseqFile; manager->numActivePlayers = 4; - if (SBN_LOOKUP(ambSoundID + 4, AU_FMT_BK, fileEntry) == AU_RESULT_OK) { - snd_load_BK(fileEntry.offset, 2); + if (SBN_EXTRA_LOOKUP(ambSoundID + 4, AU_FMT_BK, fileEntry) == AU_RESULT_OK) { + // @bug perhaps meant to be 3? + // the index here corresponds to an entry in gSoundGlobals->banks + // 0-2 are used for the extra banks which may be loaded for BGM files + // there exists an unused 4th entry this could plausibly be intended for + au_load_aux_bank(fileEntry.offset, 2); } } } @@ -705,46 +729,46 @@ AuResult au_ambient_load(u32 ambSoundID) { return AU_RESULT_OK; } -BGMPlayer* func_80054248(u8 arg0) { - switch (arg0) { - case 1: +BGMPlayer* au_get_client_by_priority(u8 priority) { + switch (priority) { + case AU_PRIORITY_BGM_PLAYER_MAIN: return gBGMPlayerA; - case 2: + case AU_PRIORITY_BGM_PLAYER_AUX: return gBGMPlayerB; - case 4: + case AU_PRIORITY_SFX_MANAGER: return (BGMPlayer*)gSoundManager; // TODO: why return pointer to SoundManager? default: return NULL; } } -void au_load_INIT(AuGlobals* arg0, s32 romAddr, ALHeap* heap) { +void au_load_INIT(AuGlobals* globals, s32 romAddr, ALHeap* heap) { SBNHeader sbnHeader; INITHeader initHeader; SBNFileEntry* entry; - s32 tableSize, initBase, size; - s32 tblAddr, shortsAddr; + s32 fileListSize, initBase, size; + s32 songListOffset, mseqListOffset; s32* data; s32 numEntries; - s32 tblOffset, shortsOffset; - s32* romPtr = &arg0->baseRomOffset; + s32* romPtr = &globals->baseRomOffset; au_read_rom(romAddr, &sbnHeader, sizeof(sbnHeader)); numEntries = sbnHeader.numEntries; - arg0->baseRomOffset = romAddr; - tableSize = numEntries * sizeof(SBNFileEntry); - arg0->fileListLength = sbnHeader.numEntries; - arg0->sbnFileList = alHeapAlloc(heap, 1, tableSize); - au_read_rom(arg0->baseRomOffset + sbnHeader.tableOffset, arg0->sbnFileList, tableSize); + fileListSize = numEntries * sizeof(SBNFileEntry); + globals->baseRomOffset = romAddr; + globals->fileListLength = sbnHeader.numEntries; + globals->sbnFileList = alHeapAlloc(heap, 1, fileListSize); + au_read_rom(globals->baseRomOffset + sbnHeader.fileListOffset, globals->sbnFileList, fileListSize); - entry = arg0->sbnFileList; + entry = globals->sbnFileList; while (sbnHeader.numEntries--) { if ((entry->offset & 0xFFFFFF) == 0) { break; } + // 16-byte align size size = entry->data; - entry->data = (size + 0xF) & ~0xF; + entry->data = (entry->data + 0xF) & ~0xF; entry++; } @@ -752,21 +776,20 @@ void au_load_INIT(AuGlobals* arg0, s32 romAddr, ALHeap* heap) { initBase = *romPtr + sbnHeader.INIToffset; au_read_rom(initBase, &initHeader, sizeof(initHeader)); - tblOffset = initHeader.tblOffset; - size = (initHeader.tblSize + 0xF) & 0xFFF0; - tblAddr = initBase + tblOffset; - arg0->songList = alHeapAlloc(heap, 1, size); - au_read_rom(tblAddr, arg0->songList, size); + songListOffset = initBase + initHeader.songListOffset; + size = ALIGN16_(initHeader.songListSize); + globals->songList = alHeapAlloc(heap, 1, size); + au_read_rom(songListOffset, globals->songList, size); - shortsOffset = initHeader.shortsOffset; - size = (initHeader.shortsSize + 0xF) & 0xFFF0; - shortsAddr = initBase + shortsOffset; - arg0->mseqFileList = alHeapAlloc(heap, 1, size); - au_read_rom(shortsAddr, arg0->mseqFileList, size); + mseqListOffset = initBase + initHeader.mseqListOffset; + size = ALIGN16_(initHeader.mseqListSize); + globals->extraFileList = alHeapAlloc(heap, 1, size); + au_read_rom(mseqListOffset, globals->extraFileList, size); - arg0->bkFileListOffset = initBase + initHeader.entriesOffset; - arg0->bkListLength = (initHeader.entriesSize + 0xF) & 0xFFF0; - arg0->songListLength = initHeader.tblSize / sizeof(InitSongEntry) - 1; + globals->bkFileListOffset = initBase + initHeader.bankListOffset; + globals->bkListLength = ALIGN16_(initHeader.bankListSize); + + globals->songListLength = initHeader.songListSize / sizeof(InitSongEntry) - 1; } } @@ -811,7 +834,7 @@ void au_load_PER(AuGlobals* globals, s32 romAddr) { } } -void au_load_PRG(AuGlobals* arg0, s32 romAddr) { +void au_load_PRG(AuGlobals* globals, s32 romAddr) { PERHeader header; u32 size; s32 numItemsLeft; @@ -822,23 +845,23 @@ void au_load_PRG(AuGlobals* arg0, s32 romAddr) { au_read_rom(romAddr, &header, sizeof(header)); dataRomAddr = romAddr + sizeof(header); size = header.mdata.size - sizeof(header); - if (size > 0x200) { - size = 0x200; + if (size > PRG_MAX_COUNT * sizeof(BGMInstrumentInfo)) { + size = PRG_MAX_COUNT * sizeof(BGMInstrumentInfo); } - au_read_rom(dataRomAddr, arg0->dataPRG, size); + au_read_rom(dataRomAddr, globals->dataPRG, size); numItems = size / sizeof(BGMInstrumentInfo); - numItemsLeft = 0x40 - numItems; + numItemsLeft = PRG_MAX_COUNT - numItems; if (numItemsLeft > 0) { - end = &arg0->dataPRG[numItems]; - au_copy_words(&arg0->defaultPRGEntry, end, sizeof(BGMInstrumentInfo)); + end = &globals->dataPRG[numItems]; + au_copy_words(&globals->defaultPRGEntry, end, sizeof(BGMInstrumentInfo)); au_copy_words(end, end + sizeof(BGMInstrumentInfo), numItemsLeft * sizeof(BGMInstrumentInfo) - sizeof(BGMInstrumentInfo)); } } -s32 snd_load_BGM(s32 arg0) { +s32 au_load_BGM(s32 arg0) { AuGlobals* globals = gSoundGlobals; InitSongEntry* song = globals->songList; - s32 ret = 0; + s32 ret = AU_RESULT_OK; s32 i; while (TRUE) { @@ -855,10 +878,10 @@ s32 snd_load_BGM(s32 arg0) { fileEntry.offset = (bkFileEntry->offset & 0xFFFFFF) + globals->baseRomOffset; fileEntry.data = bkFileEntry->data; - if ((fileEntry.data >> 0x18) == 0x30) { - snd_load_BK(fileEntry.offset, i); + if ((fileEntry.data >> 0x18) == AU_FMT_BK) { + au_load_aux_bank(fileEntry.offset, i); } else { - ret = 0x66; + ret = AU_ERROR_SBN_FORMAT_MISMATCH; } } } @@ -869,31 +892,31 @@ s32 snd_load_BGM(s32 arg0) { } } -InstrumentGroup* au_get_BK_instruments(s32 bankGroup, u32 bankIndex) { - InstrumentGroup* ret = NULL; - AuGlobals* temp = gSoundGlobals; +InstrumentBank* au_get_BK_instruments(BankSet bankSet, u32 bankIndex) { + InstrumentBank* ret = NULL; + AuGlobals* globals = gSoundGlobals; // TODO fake match - this multiplying the bankIndex by 16 and then dividing it right after is dumb bankIndex *= 16; - switch (bankGroup) { - case 1: - ret = &temp->instrumentGroup1[bankIndex / 16]; + switch (bankSet) { + case BANK_SET_AUX: + ret = &globals->auxBankSet[bankIndex / 16]; break; - case 2: - ret = &temp->instrumentGroup2[bankIndex / 16]; + case BANK_SET_2: + ret = &globals->bankSet2[bankIndex / 16]; break; - case 4: - ret = &temp->instrumentGroup4[bankIndex / 16]; + case BANK_SET_4: + ret = &globals->bankSet4[bankIndex / 16]; break; - case 5: - ret = &temp->instrumentGroup5[bankIndex / 16]; + case BANK_SET_5: + ret = &globals->bankSet5[bankIndex / 16]; break; - case 6: - ret = &temp->instrumentGroup6[bankIndex / 16]; + case BANK_SET_6: + ret = &globals->bankSet6[bankIndex / 16]; break; - case 3: - ret = &temp->instrumentGroup3[bankIndex / 16]; + case BANK_SET_MUSIC: + ret = &globals->musicBankSet[bankIndex / 16]; break; } @@ -918,15 +941,18 @@ enum BKParseState { #define AL_HEADER_SIG_DR 0x4452 #define AL_HEADER_SIG_SR 0x5352 -SoundBank* au_load_BK_to_bank(s32 bkFileOffset, SoundBank* bank, s32 bankIndex, s32 bankGroup) { +/// Loads an instrument bank file from ROM, allocates memory if needed, and sets up instrument pointers. +/// Instruments in the bank will be configured to use DMA streaming for sample/codebook data. +/// This is the standard loader for streamed instrument banks. +BKFileBuffer* au_load_BK_to_bank(s32 bkFileOffset, BKFileBuffer* bkFile, s32 bankIndex, BankSet bankSet) { ALHeap* heap = gSynDriverPtr->heap; - BKHeader bkHeader; - BKHeader* header = &bkHeader; - u16 keepReading; - u16 readState; - InstrumentGroup* group; + BKHeader localHeader; + BKHeader* header = &localHeader; + InstrumentBank* group; Instrument** inst; s32 instrumentCount; + u16 keepReading; + u16 readState; s32 size; u32 i; @@ -961,17 +987,17 @@ SoundBank* au_load_BK_to_bank(s32 bkFileOffset, SoundBank* bank, s32 bankIndex, break; case BK_READ_PROCESS_CR: - size = ALIGN16_(header->instrumetsSize) - + ALIGN16_(header->unkSizeA) - + ALIGN16_(header->predictorsSize) - + ALIGN16_(header->unkSizeB) + size = ALIGN16_(header->instrumetsLength) + + ALIGN16_(header->loopStatesLength) + + ALIGN16_(header->predictorsLength) + + ALIGN16_(header->envelopesLength) + sizeof(*header); - if (bank == NULL) { - bank = alHeapAlloc(heap, 1, size); + if (bkFile == NULL) { + bkFile = alHeapAlloc(heap, 1, size); } - au_read_rom(bkFileOffset, bank, size); + au_read_rom(bkFileOffset, bkFile, size); - group = au_get_BK_instruments(bankGroup, bankIndex); + group = au_get_BK_instruments(bankSet, bankIndex); inst = (*group); instrumentCount = 0; @@ -979,7 +1005,7 @@ SoundBank* au_load_BK_to_bank(s32 bkFileOffset, SoundBank* bank, s32 bankIndex, u16 instOffset = header->instruments[i]; if (instOffset != 0) { instrumentCount++; - *inst = AU_FILE_RELATIVE(bank, instOffset); + *inst = AU_FILE_RELATIVE(bkFile, instOffset); } else { *inst = NULL; } @@ -992,7 +1018,7 @@ SoundBank* au_load_BK_to_bank(s32 bkFileOffset, SoundBank* bank, s32 bankIndex, } break; case BK_READ_SWIZZLE_CR: - au_swizzle_BK_instruments(bkFileOffset, bank, *group, 16, 1); + au_swizzle_BK_instruments(bkFileOffset, bkFile, *group, 16, TRUE); readState = BK_READ_DONE; break; @@ -1007,57 +1033,63 @@ SoundBank* au_load_BK_to_bank(s32 bkFileOffset, SoundBank* bank, s32 bankIndex, } } - return bank; + return bkFile; } -void au_swizzle_BK_instruments(s32 bkFileOffset, SoundBank* bank, InstrumentGroup instruments, u32 instrumentCount, u8 arg4) { +/// Fixes up (swizzles) instrument pointers in a loaded bank, converting file-relative offsets to valid RAM pointers. +/// Sets whether each instrument uses DMA streaming or not, and updates pitch ratios to match output rate. +/// Replaces NULL instruments with a default instrument to ensure all loaded patches point to valid data. +void au_swizzle_BK_instruments(s32 bkFileOffset, BKFileBuffer* file, InstrumentBank instruments, u32 instrumentCount, u8 useDma) { Instrument* defaultInstrument = gSoundGlobals->defaultInstrument; - SoundBank* sb = bank; + BKHeader* header = &file->header; f32 outputRate = gSoundGlobals->outputRate; s32 i; - if (sb->swizzled == 0) { + if (!header->swizzled) { for (i = 0; i < instrumentCount; i++) { Instrument* instrument = instruments[i]; if (instrument != NULL) { - if (instrument->base != 0) { - instrument->base += bkFileOffset; + if (instrument->wavData != 0) { + instrument->wavData += bkFileOffset; } - if (instrument->loopPredictor != NULL) { - instrument->loopPredictor = AU_FILE_RELATIVE(bank, instrument->loopPredictor); + if (instrument->loopState != NULL) { + instrument->loopState = AU_FILE_RELATIVE(file, instrument->loopState); } if (instrument->predictor != NULL) { - instrument->predictor = AU_FILE_RELATIVE(bank, instrument->predictor); + instrument->predictor = AU_FILE_RELATIVE(file, instrument->predictor); } if (instrument->envelopes != NULL) { - instrument->envelopes = AU_FILE_RELATIVE(bank, instrument->envelopes); + instrument->envelopes = AU_FILE_RELATIVE(file, instrument->envelopes); } - instrument->unk_25 = arg4; - instrument->pitchRatio = instrument->outputRate / outputRate; + instrument->useDma = useDma; + instrument->pitchRatio = instrument->sampleRate / outputRate; } else { instruments[i] = defaultInstrument; } } - sb->swizzled = 1; + header->swizzled = TRUE; } } -s32* func_80054AA0(s32* bkFileOffset, void* vaddr, s32 bankIndex, s32 bankGroup) { +/// UNUSED +/// Loads an instrument bank file from ROM to a given buffer (allocates if needed), and sets up instrument pointers. +/// Instruments are configured to always bypass DMA: sample and codebook data is assumed to be already present in RAM. +/// Use this only for banks whose sample data is guaranteed to be preloaded, not for standard streaming. +BKFileBuffer* au_load_static_BK_to_bank(s32* inAddr, void* outAddr, s32 bankIndex, BankSet bankSet) { ALHeap* heap = gSynDriverPtr->heap; + BKFileBuffer* bkFile = outAddr; BKHeader localHeader; - void* fileData = vaddr; BKHeader* header = &localHeader; - InstrumentGroup* group; + InstrumentBank* group; Instrument* instruments; Instrument** inst; - u32 instrCount; + s32 instrumentCount; + u32 keepReading; u32 readState; - s32 keepReading; - u32 i; - s32 swizzleArg; - swizzleArg = 0; + s32 useDma = FALSE; + readState = BK_READ_FETCH_HEADER; keepReading = TRUE; @@ -1067,7 +1099,7 @@ s32* func_80054AA0(s32* bkFileOffset, void* vaddr, s32 bankIndex, s32 bankGroup) keepReading = FALSE; break; case BK_READ_FETCH_HEADER: - au_read_rom(*bkFileOffset, &localHeader, sizeof(localHeader)); + au_read_rom(*inAddr, &localHeader, sizeof(localHeader)); if (header->signature != AL_HEADER_SIG_BK) { keepReading = FALSE; } else if (header->size == 0) { @@ -1079,32 +1111,32 @@ s32* func_80054AA0(s32* bkFileOffset, void* vaddr, s32 bankIndex, s32 bankGroup) } break; case BK_READ_FETCH_DATA: - if (fileData == NULL) { - fileData = alHeapAlloc(heap, 1, header->size); + if (bkFile == NULL) { + bkFile = alHeapAlloc(heap, 1, header->size); } - au_read_rom(*bkFileOffset, fileData, header->size); + au_read_rom(*inAddr, bkFile, header->size); - instrCount = 0; - group = au_get_BK_instruments(bankGroup, bankIndex); + instrumentCount = 0; + group = au_get_BK_instruments(bankSet, bankIndex); inst = (*group); - for(i = 0; i < ARRAY_COUNT(header->instruments); inst++, i++) { + for (i = 0; i < ARRAY_COUNT(header->instruments); inst++, i++) { u16 instOffset = header->instruments[i]; - if(instOffset != 0) { - instrCount++; - *inst = AU_FILE_RELATIVE(fileData, instOffset); + if (instOffset != 0) { + instrumentCount++; + *inst = AU_FILE_RELATIVE(bkFile, instOffset); } else { *inst = NULL; } } - if (instrCount != 0) { + if (instrumentCount != 0) { readState = BK_READ_SWIZZLE; } else { keepReading = FALSE; } break; case BK_READ_SWIZZLE: - au_swizzle_BK_instruments((s32)fileData, fileData, *group, 0x10U, swizzleArg); + au_swizzle_BK_instruments((s32)bkFile, bkFile, *group, 16, useDma); readState = BK_READ_DONE; break; default: @@ -1112,19 +1144,21 @@ s32* func_80054AA0(s32* bkFileOffset, void* vaddr, s32 bankIndex, s32 bankGroup) break; } } - return fileData; + return bkFile; } -s32 snd_load_BK(s32 bkFileOffset, s32 bankIndex) { - au_load_BK_to_bank(bkFileOffset, gSoundGlobals->banks[bankIndex], bankIndex, 1); - return 0; +s32 au_load_aux_bank(s32 bkFileOffset, s32 bankIndex) { + au_load_BK_to_bank(bkFileOffset, gSoundGlobals->auxBanks[bankIndex], bankIndex, BANK_SET_AUX); + return AU_RESULT_OK; } -void func_80054C84(s32 bankIndex, s32 bankGroup) { - u32 i; +/// unused. resets all instruments in (bankIndex, bankSet) to default +void au_clear_instrument_group(s32 bankIndex, BankSet bankSet) { Instrument* instrument = gSoundGlobals->defaultInstrument; - InstrumentGroup* group = au_get_BK_instruments(bankGroup, bankIndex); + InstrumentBank* group = au_get_BK_instruments(bankSet, bankIndex); Instrument** ptr = *group; + u32 i; + if (group != NULL) { for (i = 0; i < ARRAY_COUNT(*group); i++) { *ptr++ = instrument; @@ -1132,40 +1166,40 @@ void func_80054C84(s32 bankIndex, s32 bankGroup) { } } -void func_80054CE0(s32 arg0, u32 idx) { - if (idx < ARRAY_COUNT(D_80078530)) { - s32 temp_s0 = D_80078530[idx]; - if (arg0 & 1) { - gBGMPlayerA->busVolume = temp_s0; - func_80053AC8(&gBGMPlayerA->fadeInfo); - gBGMPlayerB->busVolume = temp_s0; - func_80053AC8(&gBGMPlayerB->fadeInfo); +void au_set_bus_volume_level(s32 soundTypeFlags, u32 volPreset) { + if (volPreset < ARRAY_COUNT(PerceptualVolumeLevels)) { + s32 vol = PerceptualVolumeLevels[volPreset]; + if (soundTypeFlags & AUDIO_TYPE_BGM) { + gBGMPlayerA->busVolume = vol; + au_fade_flush(&gBGMPlayerA->fadeInfo); + gBGMPlayerB->busVolume = vol; + au_fade_flush(&gBGMPlayerB->fadeInfo); } - if (arg0 & 0x10) { - gSoundManager->busVolume = temp_s0; - func_80053AC8(&gSoundManager->fadeInfo); + if (soundTypeFlags & AUDIO_TYPE_SFX) { + gSoundManager->busVolume = vol; + au_fade_flush(&gSoundManager->fadeInfo); } } } -s32 func_80054D74(s32 arg0, s32 arg1) { - if (arg0 & 0x10) { - return au_sfx_set_reverb_type(gSoundManager, arg1); +s32 au_set_reverb_type(s32 soundTypeFlags, s32 reverbType) { + if (soundTypeFlags & AUDIO_TYPE_SFX) { + return au_sfx_set_reverb_type(gSoundManager, reverbType); } return 0; } -void func_80054DA8(u32 bMonoSound) { +void au_sync_channel_delay_enabled(u32 bMonoSound) { if (bMonoSound % 2 == 1) { // mono sound - if (gSoundGlobals->unk_130C == 0) { - gSoundGlobals->unk_130C = 2; + if (gSoundGlobals->channelDelayState == AU_DELAY_STATE_ON) { + gSoundGlobals->channelDelayState = AU_DELAY_STATE_REQUEST_OFF; } } else { // stereo sound - if (gSoundGlobals->unk_130C != 0) { - gSoundGlobals->channelDelayPending = 1; - gSoundGlobals->unk_130C = 0; + if (gSoundGlobals->channelDelayState != AU_DELAY_STATE_ON) { + gSoundGlobals->channelDelayPending = TRUE; + gSoundGlobals->channelDelayState = AU_DELAY_STATE_ON; } } } diff --git a/src/audio/33450.c b/src/audio/core/pull_voice.c similarity index 85% rename from src/audio/33450.c rename to src/audio/core/pull_voice.c index 2418e67fb6..d04585ff33 100644 --- a/src/audio/33450.c +++ b/src/audio/core/pull_voice.c @@ -1,10 +1,11 @@ -#include "common.h" #include "audio.h" +#include "audio/core.h" #define LFSAMPLES 4 #define AUEQPOWER_LENGTH 128 -// values for cosine from 0 to pi/2 multiplied by 32767 +// lookup table for constant-power panning +// these are values for cosine from 0 to pi/2 multiplied by 32767 // called n_eqpower in libultra s16 AuEqPower[AUEQPOWER_LENGTH] = { 32767, 32764, 32757, 32744, 32727, 32704, 32677, 32644, @@ -25,10 +26,10 @@ s16 AuEqPower[AUEQPOWER_LENGTH] = { 2833, 2429, 2025, 1620, 1216, 810, 405, 0 }; -static Acmd* _decodeChunk(Acmd* cmdBufPos, AuLoadFilter* arg1, s32 count, s32 size, s16 arg4, s16 arg5, s32 flags); -static s16 _getRate(f64 arg0, f64 arg1, s32 arg4, u16* arg5); +static Acmd* _decodeChunk(Acmd* cmdBufPos, AuLoadFilter* filter, s32 tsam, s32 nbytes, s16 output, s16 input, s32 flags); +static s16 _getRate(f64 vol, f64 tgt, s32 count, u16* ratel); -// decode, resample and mix +// decode, resample, and mix Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos) { Acmd* ptr = cmdBufPos; AuLoadFilter* decoder; @@ -45,19 +46,27 @@ Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos) { resampler = &pvoice->resampler; decoder = &pvoice->decoder; + // return if voice is not playing if (envMixer->motion != AL_PLAYING) { return ptr; } + + // buffer to store decoded (or raw) samples before mixing outp = N_AL_DECODER_OUT; + if (resampler->ratio > MAX_RATIO) { resampler->ratio = MAX_RATIO; } + // convert pitch ratio to fixed-point resampling increment resampler->ratio = (s32)(resampler->ratio * UNITY_PITCH); resampler->ratio = resampler->ratio / UNITY_PITCH; - finCount = resampler->delta + resampler->ratio * (f32)184; + + // determine how many output samples are needed for this frame + finCount = resampler->delta + resampler->ratio * (f32)AUDIO_SAMPLES; outCount = (s32) finCount; resampler->delta = finCount - (f32) outCount; + if (outCount != 0) { if (decoder->instrument->type == AL_ADPCM_WAVE) { s32 nSam; @@ -73,8 +82,10 @@ Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos) { s32 looped = FALSE; inp = N_AL_DECODER_IN; + // load ADPCM predictor aLoadADPCM(ptr++, decoder->bookSize, K0_TO_PHYS(decoder->instrument->predictor)); + // will loop be triggered during this frame? if so, only process up to loop end looped = (decoder->loop.end < outCount + decoder->sample) && (decoder->loop.count != 0); if (looped) { @@ -82,17 +93,21 @@ Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos) { } else { nSam = outCount; } + if (decoder->lastsam != 0) { nLeft = ADPCMFSIZE - decoder->lastsam; } else { nLeft = 0; } + tsam = nSam - nLeft; if (tsam < 0) { tsam = 0; } + nframes = (tsam + ADPCMFSIZE - 1) >> LFSAMPLES; nbytes = nframes * ADPCMFBYTES; + if (looped) { ptr = _decodeChunk(ptr, decoder, tsam, nbytes, outp, inp, decoder->first); if (decoder->lastsam != 0) { @@ -102,12 +117,14 @@ Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos) { } decoder->lastsam = decoder->loop.start & 0xF; - decoder->memin = (s32)decoder->instrument->base + ADPCMFBYTES * ((s32)(decoder->loop.start >> LFSAMPLES) + 1); + decoder->memin = (s32)decoder->instrument->wavData + ADPCMFBYTES * ((s32)(decoder->loop.start >> LFSAMPLES) + 1); decoder->sample = decoder->loop.start; + + // continue decoding looped portion if needed bEnd = outp; while (outCount > nSam) { outCount -= nSam; - op = (bEnd + ((nframes + 1) << (LFSAMPLES + 1)) + 16) & ~0x1f; + op = (bEnd + ((nframes + 1) << (LFSAMPLES + 1)) + 16) & ~0x1F; bEnd += nSam << 1; if (decoder->loop.count != -1 && decoder->loop.count != 0) { decoder->loop.count--; @@ -127,7 +144,7 @@ Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos) { decoder->memin += ADPCMFBYTES * nframes; } else { nSam = nframes << LFSAMPLES; - overFlow = decoder->memin + nbytes - ((s32)decoder->instrument->base + decoder->instrument->wavDataLength); + overFlow = decoder->memin + nbytes - ((s32)decoder->instrument->wavData + decoder->instrument->wavDataLength); if (overFlow <= 0) { overFlow = 0; @@ -177,7 +194,7 @@ Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos) { nSam = decoder->loop.end - decoder->sample; nbytes = nSam << 1; if (nSam > 0) { - dramLoc = decoder->dmaFunc(decoder->memin, nbytes, decoder->dmaState, decoder->instrument->unk_25); + dramLoc = decoder->dmaFunc(decoder->memin, nbytes, decoder->dmaState, decoder->instrument->useDma); dramAlign = dramLoc & 7; nbytes += dramAlign; n_aLoadBuffer(ptr++, nbytes + 8 - (nbytes & 7), outp, dramLoc - dramAlign); @@ -185,7 +202,7 @@ Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos) { dramAlign = 0; } outp += dramAlign; - decoder->memin = (s32)decoder->instrument->base + (decoder->loop.start << 1); + decoder->memin = (s32)decoder->instrument->wavData + (decoder->loop.start << 1); decoder->sample = decoder->loop.start; op = outp; while (outCount > nSam){ @@ -196,7 +213,7 @@ Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos) { } nSam = MIN(outCount, decoder->loop.end - decoder->loop.start); nbytes = nSam << 1; - dramLoc = decoder->dmaFunc(decoder->memin, nbytes, decoder->dmaState, decoder->instrument->unk_25); + dramLoc = decoder->dmaFunc(decoder->memin, nbytes, decoder->dmaState, decoder->instrument->useDma); dramAlign = dramLoc & 7; nbytes += dramAlign; if ((op & 7) != 0) { @@ -214,7 +231,7 @@ Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos) { decoder->memin += outCount << 1; } else { nbytes = outCount << 1; - overFlow = decoder->memin + nbytes - ((s32)decoder->instrument->base + decoder->instrument->wavDataLength); + overFlow = decoder->memin + nbytes - ((s32)decoder->instrument->wavData + decoder->instrument->wavDataLength); if (overFlow <= 0) { overFlow = 0; } else { @@ -226,7 +243,7 @@ Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos) { if (overFlow < nbytes) { if (outCount > 0) { nbytes -= overFlow; - dramLoc = decoder->dmaFunc(decoder->memin, nbytes, decoder->dmaState, decoder->instrument->unk_25); + dramLoc = decoder->dmaFunc(decoder->memin, nbytes, decoder->dmaState, decoder->instrument->useDma); dramAlign = dramLoc & 7; nbytes += dramAlign; n_aLoadBuffer(ptr++, nbytes + 8 - (nbytes & 7), outp, dramLoc - dramAlign); @@ -250,12 +267,15 @@ Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos) { } } } + + // resample audio from source buffer to output buffer incr = (s32)(resampler->ratio * UNITY_PITCH); n_aResample(ptr++, osVirtualToPhysical(resampler->state), resampler->first, incr, outp, 0); - resampler->first = 0; + resampler->first = FALSE; - if (envMixer->first != 0) { - envMixer->first = 0; + // set up envelope mixing + if (envMixer->dirty) { + envMixer->dirty = FALSE; if (!AuSynUseStereo) { envMixer->ltgt = (envMixer->volume * AuEqPower[AUEQPOWER_LENGTH / 2]) >> 15; envMixer->rtgt = (envMixer->volume * AuEqPower[AUEQPOWER_LENGTH / 2]) >> 15; @@ -266,39 +286,43 @@ Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos) { envMixer->lratm = _getRate(envMixer->cvolL, envMixer->ltgt, envMixer->segEnd, &envMixer->lratl); envMixer->rratm = _getRate(envMixer->cvolR, envMixer->rtgt, envMixer->segEnd, &envMixer->rratl); n_aSetVolume(ptr++, A_RATE, envMixer->ltgt, envMixer->lratm, envMixer->lratl); - n_aSetVolume(ptr++, A_LEFT | A_VOL, envMixer->cvolL, envMixer->dryamt, envMixer->wetamt); - n_aSetVolume(ptr++, A_RIGHT | A_VOL, envMixer->rtgt, envMixer->rratm, envMixer->rratl); + n_aSetVolume(ptr++, A_VOL | A_LEFT, envMixer->cvolL, envMixer->dryamt, envMixer->wetamt); + n_aSetVolume(ptr++, A_VOL | A_RIGHT, envMixer->rtgt, envMixer->rratm, envMixer->rratl); n_aEnvMixer(ptr++, A_INIT, envMixer->cvolR, osVirtualToPhysical(envMixer->state)); } else { n_aEnvMixer(ptr++, A_CONTINUE, 0, osVirtualToPhysical(envMixer->state)); } + // advance envelope segment envMixer->delta += AUDIO_SAMPLES; if (envMixer->segEnd < envMixer->delta) { envMixer->delta = envMixer->segEnd; } + + // if stopped, reset state if (envMixer->motion == AL_STOPPED) { - envMixer->first = 1; + envMixer->dirty = TRUE; envMixer->volume = 1; resampler->delta = 0.0f; - resampler->first = 1; + resampler->first = TRUE; decoder->lastsam = 0; decoder->first = 1; decoder->sample = 0; - decoder->memin = (s32) decoder->instrument->base; + decoder->memin = (s32) decoder->instrument->wavData; decoder->loop.count = decoder->instrument->loopCount; - func_80052E30(pvoice->index); + au_release_voice(pvoice->index); } return ptr; } +/// loads and decodes a chunk of ADPCM data into RSP memory static Acmd* _decodeChunk(Acmd* cmdBufPos, AuLoadFilter* filter, s32 tsam, s32 nbytes, s16 output, s16 input, s32 flags) { s32 endAddr; s32 endAlign; s32 paddedSize; if (nbytes > 0) { - endAddr = filter->dmaFunc((s32) filter->memin, nbytes, filter->dmaState, filter->instrument->unk_25); + endAddr = filter->dmaFunc((s32) filter->memin, nbytes, filter->dmaState, filter->instrument->useDma); endAlign = endAddr & 7; nbytes += endAlign; paddedSize = nbytes + 8 - (nbytes & 7); @@ -317,6 +341,8 @@ static Acmd* _decodeChunk(Acmd* cmdBufPos, AuLoadFilter* filter, s32 tsam, s32 n return cmdBufPos; } +// computes an audio volume ramp rate +// used for smooth volume transitions in envelope segments static s16 _getRate(f64 vol, f64 tgt, s32 count, u16* ratel) { f64 inv; f64 a; diff --git a/src/audio/reverb.c b/src/audio/core/reverb.c similarity index 58% rename from src/audio/reverb.c rename to src/audio/core/reverb.c index 58e1c8cf28..cd1f0d398e 100644 --- a/src/audio/reverb.c +++ b/src/audio/core/reverb.c @@ -1,5 +1,6 @@ #include "common.h" #include "audio.h" +#include "audio/core.h" #define SWAP16(in, out) \ { \ @@ -8,9 +9,8 @@ in = t; \ } -static void _init_lpfilter(AuLowPass* lp); -static Acmd* _saveBuffer(AuFX* fx, s16* oldPos, s32 buff, s32 count, Acmd* cmdBufPos); -static f32 func_80059BD4(AuDelay* delay, s32 rsdelta); +static Acmd* _loadDelayLineBuffer(AuFX* fx, s16* oldPos, s32 buff, s32 count, Acmd* cmdBufPos); +static f32 updateTriangleModulation(AuDelay* delay, s32 rsdelta); /* * the following constant is derived from: @@ -26,13 +26,16 @@ static f32 func_80059BD4(AuDelay* delay, s32 rsdelta); */ #define CONVERT 173123.404906676 -/* - * WARNING: THE FOLLOWING CONSTANT MUST BE KEPT IN SYNC - * WITH SCALING IN MICROCODE!!! - */ #define SCALE 16384 -// #define ms *(((s32)((f32)44.1))&~0x7) +#define INPUT_PARAM 0 +#define OUTPUT_PARAM 1 +#define FBCOEF_PARAM 2 +#define FFCOEF_PARAM 3 +#define GAIN_PARAM 4 +#define CHORUSRATE_PARAM 5 +#define CHORUSDEPTH_PARAM 6 +#define LPFILT_PARAM 7 s32 SMALL_ROOM_PARAMS[] = { /* sections length */ @@ -104,80 +107,78 @@ s32* AU_FX_CUSTOM_PARAMS[] = { NULL_PARAMS, NULL_PARAMS, NULL_PARAMS, NULL_PARAMS }; -static void _init_lpfilter(AuLowPass* lp) { +static void _init_lpfilter(AuLowPass* filter) { f64 attenuation; s16 timeConstant; u32 temp; s32 i; - lp->first = 1; - temp = lp->fc; + filter->first = 1; + temp = filter->fc; timeConstant = temp; timeConstant = timeConstant >> 1; - lp->fgain = SCALE - timeConstant; + filter->fgain = SCALE - timeConstant; - for (i = 0; i < ARRAY_COUNT(lp->fccoef) / 2; i++) { - lp->fccoef[i] = 0; + for (i = 0; i < 8; i++) { + filter->fccoef[i] = 0; } - lp->fccoef[8] = timeConstant; + filter->fccoef[8] = timeConstant; // ith value is 16384 * (timeConstant / 16384)^(i-7) // ex: i = 9 --> timeConstant^2 / 16384 attenuation = ((f64)timeConstant / SCALE); - for (i = 9; i < ARRAY_COUNT(lp->fccoef); i++) { - attenuation *= ((f64)timeConstant /SCALE); - lp->fccoef[i] = attenuation * SCALE; + for (i = 9; i < ARRAY_COUNT(filter->fccoef); i++) { + attenuation *= ((f64)timeConstant / SCALE); + filter->fccoef[i] = attenuation * SCALE; } } -// definately AuFX, evidenced by call to func_8005904C -// this is n_alFxNew /// @param effectType from enum AuEffectType -void func_80058E84(AuFX* fx, u8 effectType, ALHeap* heap) { +void au_fx_create(AuFX* fx, u8 effectType, ALHeap* heap) { AuDelay* delay; u16 i; // allocate space for 4 AuDelay - fx->delays = alHeapAlloc(heap, AU_FX_DELAY_COUNT, sizeof(AuDelay)); + fx->delays = alHeapAlloc(heap, AU_FX_MAX_TAPS, sizeof(AuDelay)); fx->base = alHeapAlloc(heap, AU_FX_LENGTH, sizeof(s16)); - for (i = 0; i < AU_FX_DELAY_COUNT; i++) { + for (i = 0; i < AU_FX_MAX_TAPS; i++) { delay = &fx->delays[i]; - delay->resampler_2C = alHeapAlloc(heap, 1, sizeof(AuResampler)); - delay->resampler_2C->state = alHeapAlloc(heap, 1, sizeof(RESAMPLE_STATE)); - delay->lowpass_24 = alHeapAlloc(heap, 1, sizeof(AuLowPass)); - delay->lowpass_24->fstate = alHeapAlloc(heap, 1, sizeof(POLEF_STATE)); + delay->resamplerTemplate = alHeapAlloc(heap, 1, sizeof(AuResampler)); + delay->resamplerTemplate->state = alHeapAlloc(heap, 1, sizeof(RESAMPLE_STATE)); + delay->lowpassTemplate = alHeapAlloc(heap, 1, sizeof(AuLowPass)); + delay->lowpassTemplate->fstate = alHeapAlloc(heap, 1, sizeof(POLEF_STATE)); } - func_8005904C(fx, effectType); + au_fx_load_preset(fx, effectType); } // no known calls to this function -void func_80058F88(AlUnkKappa* kappa, ALHeap* heap) { - kappa->unk_00 = alHeapAlloc(heap, 0x1420, sizeof(s16)); - kappa->lowpass_10 = alHeapAlloc(heap, 1, sizeof(AuLowPass)); - kappa->lowpass_10->fstate = alHeapAlloc(heap, 1, sizeof(POLEF_STATE)); - func_80059008(kappa, 0, 0, 0x5000); +void au_filter_create(AuFilter* filter, ALHeap* heap) { + filter->base = alHeapAlloc(heap, AU_FILTER_LENGTH, sizeof(s16)); + filter->lowpassTemplate = alHeapAlloc(heap, 1, sizeof(AuLowPass)); + filter->lowpassTemplate->fstate = alHeapAlloc(heap, 1, sizeof(POLEF_STATE)); + au_filter_init(filter, 0, 0, 0x5000); } -// no known entry point to this function, called only by func_80058F88 -void func_80059008(AlUnkKappa* kappa, s16 arg1, s16 arg2, s16 fc) { - kappa->unk_06 = arg1; - kappa->unk_08 = arg2; +// no known entry point to this function, called only by au_filter_create +void au_filter_init(AuFilter* filter, s16 arg1, s16 arg2, s16 cutoff) { + filter->unused_06 = arg1; + filter->unused_08 = arg2; - if (fc != 0) { - kappa->lowpass_0C = kappa->lowpass_10; - kappa->lowpass_0C->fc = fc; - _init_lpfilter(kappa->lowpass_0C); + if (cutoff != 0) { + filter->activeLowpass = filter->lowpassTemplate; + filter->activeLowpass->fc = cutoff; + _init_lpfilter(filter->activeLowpass); return; } - kappa->lowpass_0C = NULL; + filter->activeLowpass = NULL; } -// part of n_alFxNew, extracted to allow reseting fx without reallocating AuFX -void func_8005904C(AuFX* fx, u8 effectType) { +// reset fx without reallocating AuFX +void au_fx_load_preset(AuFX* fx, u8 effectType) { s32* params; s32* clr; s32 i, j; @@ -241,49 +242,68 @@ void func_8005904C(AuFX* fx, u8 effectType) { delay->rsgain = ((f32)params[j++] / CONVERT) * (delay->output - delay->input); delay->rsval = 1.0f; delay->rsdelta = 0.0f; - delay->resampler_28 = delay->resampler_2C; - delay->resampler_2C->delta = 0.0; - delay->resampler_28->first = 1; + delay->activeResampler = delay->resamplerTemplate; + delay->resamplerTemplate->delta = 0.0; + delay->activeResampler->first = TRUE; } else { - delay->resampler_28 = NULL; + delay->activeResampler = NULL; j++; j++; } if (params[j]) { - delay->lowpass_20 = delay->lowpass_24; - delay->lowpass_20->fc = params[j++]; - _init_lpfilter(delay->lowpass_20); + delay->activeLowpass = delay->lowpassTemplate; + delay->activeLowpass->fc = params[j++]; + _init_lpfilter(delay->activeLowpass); } else { - delay->lowpass_20 = NULL; + delay->activeLowpass = NULL; j++; } } } -// au_pull_fx -- based on alFxPull -// AuFX from gSynDriverPtr - -Acmd* au_pull_fx(AuFX* fx, Acmd* ptr, s16 outputBuf, s16 arg3) { +/** + * Applies a chain of delay-line based effects to audio and mixes into output. + * + * For each delay tap in the FX chain: + * - Loads delay input/output from circular buffer. + * - Applies optional modulation and resampling. + * - Applies feedforward/feedback mixing. + * - Applies optional lowpass filtering. + * - Mixes result into wet output buffer. + * + * @param fx Pointer to FX state (delay taps, buffers, etc.) + * @param ptr Pointer to the current audio command list position. + * @param wetDmem DMEM offset to mix wet output into. + * @param tempDmem Base DMEM offset for temporary working buffers. + * @return Updated command list pointer. + */ +Acmd* au_pull_fx(AuFX* fx, Acmd* ptr, s16 wetDmem, s16 tempDmem) { Acmd* cmdBufPos = ptr; s16 delayIdx; s16* inPtr; s16* outPtr; - s16 buff1 = arg3 + N_AL_TEMP_0; - s16 buff2 = arg3 + N_AL_TEMP_1; - s16 rbuff = arg3 + N_AL_TEMP_2; - s16* prevOutPtr = 0; - s16 outputBufCopy = outputBuf; + // DMEM temp buffer layout: + s16 inputTapBuffer = tempDmem; + s16 outputTapBuffer = tempDmem + 2 * AUDIO_SAMPLES; + s16 resampleBuffer = tempDmem + 4 * AUDIO_SAMPLES; - n_aSaveBuffer(cmdBufPos++, FIXED_SAMPLE<<1, outputBuf, osVirtualToPhysical(fx->input)); - aClearBuffer(cmdBufPos++, outputBuf, FIXED_SAMPLE<<1); + s16* prevOutPtr = 0; + s16 outDmem = wetDmem; + + // save wet input from voice mixing into circular delay buffer + n_aSaveBuffer(cmdBufPos++, 2 * AUDIO_SAMPLES, wetDmem, osVirtualToPhysical(fx->input)); + + // clear the wet output buffer for this frame + aClearBuffer(cmdBufPos++, wetDmem, 2 * AUDIO_SAMPLES); for (delayIdx = 0; delayIdx < fx->delayCount; delayIdx++) { AuDelay* delay = &fx->delays[delayIdx]; f32 fUnityPitch = UNITY_PITCH; + // calculate read positions for input and output taps, wrapping the circular buffer if necessary inPtr = &fx->input[-delay->input]; if (inPtr < fx->base) { inPtr += fx->length; @@ -292,13 +312,17 @@ Acmd* au_pull_fx(AuFX* fx, Acmd* ptr, s16 outputBuf, s16 arg3) { if (outPtr < fx->base) { outPtr += fx->length; } + + // if output is same as previous tap, reuse loaded data by swapping buffers if (inPtr == prevOutPtr) { - SWAP16(buff1, buff2); + SWAP16(inputTapBuffer, outputTapBuffer); } else { - n_aLoadBuffer(cmdBufPos++, FIXED_SAMPLE<<1, buff1, osVirtualToPhysical(inPtr)); + // load from input tap into buffer + n_aLoadBuffer(cmdBufPos++, 2 * AUDIO_SAMPLES, inputTapBuffer, osVirtualToPhysical(inPtr)); } - if (delay->resampler_28) { - // modified _n_loadOutputBuffer + + if (delay->activeResampler) { + // triangle wave modulation for chorus/flange s32 ratio; s32 length, count; f32 delta, fratio, fincount; @@ -306,80 +330,89 @@ Acmd* au_pull_fx(AuFX* fx, Acmd* ptr, s16 outputBuf, s16 arg3) { s16 tmp; s16* rsOutPtr; + // modulate delay time (triangle wave) length = delay->output - delay->input; - delta = func_80059BD4(delay, AUDIO_SAMPLES); + delta = updateTriangleModulation(delay, AUDIO_SAMPLES); delta /= length; delta = (s32)(delta * fUnityPitch); delta = delta / UNITY_PITCH; - fratio = 1.0 - delta; - fincount = delay->resampler_28->delta + (fratio * AUDIO_SAMPLES); - count = (s32) fincount; - delay->resampler_28->delta = fincount - count; + fratio = 1.0 - delta; + + // calculate fractional resampling count + fincount = delay->activeResampler->delta + (fratio * AUDIO_SAMPLES); + count = (s32) fincount; + delay->activeResampler->delta = fincount - count; + + // prepare delay line for resampling (wrap if needed) rsOutPtr = &fx->input[-(delay->output - delay->rsdelta)]; ramAlign = ((s32) rsOutPtr & 7) >> 1; - rsOutPtr -= ramAlign; if (rsOutPtr < fx->base) { rsOutPtr += fx->length; } - cmdBufPos = _saveBuffer(fx, rsOutPtr, rbuff, count + ramAlign, cmdBufPos); + // load from delay line + cmdBufPos = _loadDelayLineBuffer(fx, rsOutPtr, resampleBuffer, count + ramAlign, cmdBufPos); + + // process resampler ratio = fratio * fUnityPitch; - - tmp = buff2 >> 8; - n_aResample(cmdBufPos++, osVirtualToPhysical(delay->resampler_28->state), - delay->resampler_28->first, ratio, rbuff + (ramAlign<<1), tmp); - - delay->resampler_28->first = 0; + tmp = outputTapBuffer >> 8; + n_aResample(cmdBufPos++, osVirtualToPhysical(delay->activeResampler->state), + delay->activeResampler->first, ratio, resampleBuffer + (ramAlign<<1), tmp); + delay->activeResampler->first = FALSE; delay->rsdelta += count - AUDIO_SAMPLES; } else { - n_aLoadBuffer(cmdBufPos++, FIXED_SAMPLE<<1, buff2, osVirtualToPhysical(outPtr)); + // no resampling -- just load from output pointer + n_aLoadBuffer(cmdBufPos++, 2 * AUDIO_SAMPLES, outputTapBuffer, osVirtualToPhysical(outPtr)); } - if (delay->ffcoef) { - aMix(cmdBufPos++, 0, (u16)delay->ffcoef, buff1, buff2); - if (delay->resampler_28 == NULL && delay->lowpass_20 == NULL) { - n_aSaveBuffer(cmdBufPos++, FIXED_SAMPLE<<1, buff2, osVirtualToPhysical(outPtr)); + // feedforward: input -> output + if (delay->ffcoef) { + aMix(cmdBufPos++, 0, (u16)delay->ffcoef, inputTapBuffer, outputTapBuffer); + + // save output if no additional processing needed + if (delay->activeResampler == NULL && delay->activeLowpass == NULL) { + n_aSaveBuffer(cmdBufPos++, 2 * AUDIO_SAMPLES, outputTapBuffer, osVirtualToPhysical(outPtr)); } } + + // feedback: output -> input if (delay->fbcoef) { - aMix(cmdBufPos++, 0, (u16)delay->fbcoef, buff2, buff1); - n_aSaveBuffer(cmdBufPos++, FIXED_SAMPLE<<1, buff1, osVirtualToPhysical(inPtr)); + aMix(cmdBufPos++, 0, (u16)delay->fbcoef, outputTapBuffer, inputTapBuffer); + n_aSaveBuffer(cmdBufPos++, 2 * AUDIO_SAMPLES, inputTapBuffer, osVirtualToPhysical(inPtr)); } - if (delay->lowpass_20 != NULL) { + + // Save processed output back into delay line (if not resampled) + if (delay->activeLowpass != NULL) { // modified _n_filterBuffer - s16 tmp = buff2 >> 8; - n_aLoadADPCM(cmdBufPos++, 32, osVirtualToPhysical(delay->lowpass_20->fccoef)); - n_aPoleFilter(cmdBufPos++, delay->lowpass_20->first, delay->lowpass_20->fgain, tmp, osVirtualToPhysical(delay->lowpass_20->fstate)); - delay->lowpass_20->first = 0; + s16 alignedBuffer = outputTapBuffer >> 8; + n_aLoadADPCM(cmdBufPos++, 32, osVirtualToPhysical(delay->activeLowpass->fccoef)); + n_aPoleFilter(cmdBufPos++, delay->activeLowpass->first, delay->activeLowpass->fgain, alignedBuffer, osVirtualToPhysical(delay->activeLowpass->fstate)); + delay->activeLowpass->first = 0; } - if (!delay->resampler_28) { - n_aSaveBuffer(cmdBufPos++, FIXED_SAMPLE<<1, buff2, osVirtualToPhysical(outPtr)); + + // save output (if not already saved earlier) + if (!delay->activeResampler) { + n_aSaveBuffer(cmdBufPos++, 2 * AUDIO_SAMPLES, outputTapBuffer, osVirtualToPhysical(outPtr)); } + + // mix input from this delay into wet output buffer if (delay->gain) { - aMix(cmdBufPos++, 0, (u16)delay->gain, buff2, outputBufCopy); + aMix(cmdBufPos++, 0, (u16)delay->gain, outputTapBuffer, outDmem); } prevOutPtr = &fx->input[delay->output]; } + // advance position in ring buffer fx->input += AUDIO_SAMPLES; if (fx->input >= &fx->base[fx->length]) { fx->input = fx->base; } + return cmdBufPos; } -#define INPUT_PARAM 0 -#define OUTPUT_PARAM 1 -#define FBCOEF_PARAM 2 -#define FFCOEF_PARAM 3 -#define GAIN_PARAM 4 -#define CHORUSRATE_PARAM 5 -#define CHORUSDEPTH_PARAM 6 -#define LPFILT_PARAM 7 - -// based on alFxParamHdl s32 au_fx_param_hdl(AuFX* fx, s16 index, s16 paramID, s32 value) { switch (paramID) { case INPUT_PARAM: @@ -404,17 +437,20 @@ s32 au_fx_param_hdl(AuFX* fx, s16 index, s16 paramID, s32 value) { fx->delays[index].rsgain = ((f32)value / CONVERT) * (fx->delays[index].output - fx->delays[index].input); break; case LPFILT_PARAM: - if (fx->delays[index].lowpass_20) { - fx->delays[index].lowpass_20->fc = value; - _init_lpfilter(fx->delays[index].lowpass_20); + if (fx->delays[index].activeLowpass) { + fx->delays[index].activeLowpass->fc = value; + _init_lpfilter(fx->delays[index].activeLowpass); } break; } return 0; } -// TODO: _n_loadBuffer -static Acmd* _saveBuffer(AuFX* fx, s16* oldPos, s32 buf, s32 count, Acmd* cmdBufPos) { +/** + * Loads a possibly wrapped segment of the FX delay line into DMEM. + * Used to prepare samples for resampling or filtering. + */ +static Acmd* _loadDelayLineBuffer(AuFX* fx, s16* oldPos, s32 buf, s32 count, Acmd* cmdBufPos) { Acmd *ptr = cmdBufPos; s16* newPos = oldPos + count; s16* delayEnd = &fx->base[fx->length]; @@ -433,11 +469,10 @@ static Acmd* _saveBuffer(AuFX* fx, s16* oldPos, s32 buf, s32 count, Acmd* cmdBuf // updates rsval, producing a triangle wave between ±1 // time delta specified in samples -//TODO rename to _updateTriWaveModulation -static f32 func_80059BD4(AuDelay* delay, s32 rsdelta) { +static f32 updateTriangleModulation(AuDelay* delay, s32 numSamples) { f32 result; - delay->rsval += delay->rsinc * rsdelta; + delay->rsval += delay->rsinc * numSamples; delay->rsval = (delay->rsval > 2.0) ? delay->rsval - 4.0 : delay->rsval; result = delay->rsval; @@ -445,7 +480,7 @@ static f32 func_80059BD4(AuDelay* delay, s32 rsdelta) { result = -result; } - result = result - 1.0; + result -= 1.0; return delay->rsgain * result; } diff --git a/src/audio/31650.c b/src/audio/core/syn_driver.c similarity index 64% rename from src/audio/31650.c rename to src/audio/core/syn_driver.c index 9387d2301b..51c3d5ab5e 100644 --- a/src/audio/31650.c +++ b/src/audio/core/syn_driver.c @@ -1,20 +1,20 @@ #include "common.h" #include "audio.h" -#include "nu/nualsgi.h" +#include "audio/core.h" static s16 _getVol(s16 arg0, s32 arg1, s16 arg2, u16 arg3); BSS s16* AuDelayBufferMain; BSS s16* AuDelayBufferAux; BSS s32 AuDelayCounter; -BSS u8 AuDelayedVoiceGroup; +BSS u8 AuDelayedBusID; BSS s16 AuDelayedChannel; BSS s32 AuDelayCount; AuSynDriver* gActiveSynDriverPtr = NULL; AuSynDriver* gSynDriverPtr = NULL; u8 AuUseGlobalVolume = FALSE; -u16 AuGlobalVolume = 0x7FFF; +u16 AuGlobalVolume = AU_MAX_VOLUME_16; u8 AuSynStereoDirty = FALSE; extern s16 AuEqPower[128]; @@ -33,14 +33,14 @@ void au_driver_init(AuSynDriver* driver, ALConfig* config) { driver->num_pvoice = config->num_pvoice; driver->num_bus = config->num_bus; driver->curSamples = 0; - driver->unk_04 = 0; + driver->unused_04 = 0; driver->outputRate = config->outputRate; driver->dmaNew = config->dmaNew; gActiveSynDriverPtr = driver; gSynDriverPtr = driver; AuUseGlobalVolume = FALSE; - AuGlobalVolume = 0x7FFF; + AuGlobalVolume = AU_MAX_VOLUME_16; AuSynStereoDirty = TRUE; gSynDriverPtr->pvoices = alHeapAlloc(heap, config->num_pvoice, sizeof(*gSynDriverPtr->pvoices)); @@ -56,10 +56,10 @@ void au_driver_init(AuSynDriver* driver, ALConfig* config) { voice->decoder.memin = NULL; voice->resampler.state = alHeapAlloc(heap, 1, sizeof(*voice->resampler.state)); voice->resampler.delta = 0; - voice->resampler.first = 1; + voice->resampler.first = TRUE; voice->resampler.ratio = 1.0f; voice->envMixer.state = alHeapAlloc(heap, 1, sizeof(*voice->envMixer.state)); - voice->envMixer.first = 1; + voice->envMixer.dirty = TRUE; voice->envMixer.motion = AL_STOPPED; voice->envMixer.volume = 1; voice->envMixer.ltgt = 1; @@ -75,9 +75,9 @@ void au_driver_init(AuSynDriver* driver, ALConfig* config) { voice->envMixer.delta = 0; voice->envMixer.segEnd = 0; voice->envMixer.pan = 64; - voice->unk_74 = 0; + voice->unused_74 = 0; voice->next = NULL; - voice->busId = FX_BUS_BGMA_MAIN; + voice->busID = FX_BUS_BGMA_MAIN; voice->index = i; } @@ -91,14 +91,14 @@ void au_driver_init(AuSynDriver* driver, ALConfig* config) { fxBus->curEffectType = AU_FX_NONE; fxBus->fxL = alHeapAlloc(heap, 1, sizeof(*fxBus->fxL)); fxBus->fxR = alHeapAlloc(heap, 1, sizeof(*fxBus->fxR)); - func_80058E84(fxBus->fxL, fxBus->curEffectType, heap); - func_80058E84(fxBus->fxR, fxBus->curEffectType, heap); + au_fx_create(fxBus->fxL, fxBus->curEffectType, heap); + au_fx_create(fxBus->fxR, fxBus->curEffectType, heap); } - gSynDriverPtr->savedMainOut = alHeapAlloc(heap, 2 * AUDIO_SAMPLES, 2); - gSynDriverPtr->savedAuxOut = alHeapAlloc(heap, 2 * AUDIO_SAMPLES, 2); - AuDelayedVoiceGroup = 0; - AuDelayedChannel = 0; + gSynDriverPtr->dryAccumBuffer = alHeapAlloc(heap, 2 * AUDIO_SAMPLES, 2); + gSynDriverPtr->wetAccumBuffer = alHeapAlloc(heap, 2 * AUDIO_SAMPLES, 2); + AuDelayedBusID = 0; + AuDelayedChannel = AU_DELAY_CHANNEL_NONE; AuDelayCount = 4; AuDelayBufferMain = alHeapAlloc(heap, 4 * AUDIO_SAMPLES, 2); @@ -117,133 +117,155 @@ void au_driver_release(void) { } Acmd* alAudioFrame(Acmd* cmdList, s32* cmdLen, s16* outBuf, s32 outLen) { - Acmd* cmdListPos; + Acmd* cmdListPos = cmdList; + s16* bufPos = outBuf; AuPVoice* pvoice; AuFxBus* fxBus; - - s16* bufPos; - s16 auxOut; s16 mainOut; + s16 auxOut; + s32 busID; + b32 firstBus; - s32 i; - s32 first = FALSE; - - cmdListPos = cmdList; - bufPos = outBuf; + // sanity check: ensure audio system is initialized if (gActiveSynDriverPtr == NULL) { *cmdLen = 0; - } else { - au_update_players_main(); - if (AuSynStereoDirty) { - for (i = 0; i < gSynDriverPtr->num_pvoice; i++) { - pvoice = &gSynDriverPtr->pvoices[i]; - if (pvoice->envMixer.motion == AL_PLAYING) { - au_syn_set_pan(i, pvoice->envMixer.pan); - } - } - AuSynStereoDirty = FALSE; - } - while (outLen > 0) { - au_update_clients_2(); - for (i = 0; i < gSynDriverPtr->num_pvoice; i++) { - pvoice = &gSynDriverPtr->pvoices[i]; - - if ((pvoice->busId != 0xFF) && (pvoice->busId < gSynDriverPtr->num_bus)) { - fxBus = &gSynDriverPtr->fxBus[pvoice->busId]; - if (fxBus->tail != NULL) { - fxBus->tail->next = pvoice; - } else { - fxBus->head = pvoice; - } - fxBus->tail = pvoice; - } - } - first = TRUE; - for (i = 0; i < gSynDriverPtr->num_bus; i++) { - fxBus = &gSynDriverPtr->fxBus[i]; - if (fxBus->head != NULL) { - // clear all main and aux outputs - aClearBuffer(cmdListPos++, N_AL_MAIN_L_OUT, 8 * AUDIO_SAMPLES); - if (fxBus->head != NULL) { - AuPVoice* next; - do { - cmdListPos = au_pull_voice(fxBus->head, cmdListPos); - next = fxBus->head->next; - fxBus->head->next = NULL; - fxBus->head = next; - } while (next != NULL); - fxBus->tail = NULL; - } - if (fxBus->curEffectType != AU_FX_NONE) { - cmdListPos = au_pull_fx(fxBus->fxL, cmdListPos, N_AL_AUX_L_OUT, 0); - cmdListPos = au_pull_fx(fxBus->fxR, cmdListPos, N_AL_AUX_R_OUT, 0); - } - - // apply channel delay - if (i == AuDelayedVoiceGroup) { - mainOut = -1; - switch (AuDelayedChannel) { - case 1: - mainOut = N_AL_MAIN_L_OUT; - auxOut = N_AL_AUX_L_OUT; - break; - case 2: - mainOut = N_AL_MAIN_R_OUT; - auxOut = N_AL_AUX_R_OUT; - break; - } - if (mainOut != -1) { - n_aSaveBuffer(cmdListPos++, 2 * AUDIO_SAMPLES, mainOut, osVirtualToPhysical(AuDelayBufferMain + (AuDelayCounter % AuDelayCount) * AUDIO_SAMPLES)); - n_aLoadBuffer(cmdListPos++, 2 * AUDIO_SAMPLES, mainOut, osVirtualToPhysical(AuDelayBufferMain + ((AuDelayCounter + 1) % AuDelayCount) * AUDIO_SAMPLES)); - n_aSaveBuffer(cmdListPos++, 2 * AUDIO_SAMPLES, auxOut, osVirtualToPhysical(AuDelayBufferAux + (AuDelayCounter % AuDelayCount) * AUDIO_SAMPLES)); - n_aLoadBuffer(cmdListPos++, 2 * AUDIO_SAMPLES, auxOut, osVirtualToPhysical(AuDelayBufferAux + ((AuDelayCounter + 1) % AuDelayCount) * AUDIO_SAMPLES)); - } - } - - // mix voice groups - if (first) { - aClearBuffer(cmdListPos++, 0, 4 * AUDIO_SAMPLES); - } else { - n_aLoadBuffer(cmdListPos++, 4 * AUDIO_SAMPLES, 0, osVirtualToPhysical(gSynDriverPtr->savedAuxOut)); - } - aMix(cmdListPos++, 0, fxBus->gain, N_AL_AUX_L_OUT, 0); - aMix(cmdListPos++, 0, fxBus->gain, N_AL_AUX_R_OUT, 2 * AUDIO_SAMPLES); - n_aSaveBuffer(cmdListPos++, 4 * AUDIO_SAMPLES, 0, osVirtualToPhysical(gSynDriverPtr->savedAuxOut)); - if (first) { - aClearBuffer(cmdListPos++, 0, 4 * AUDIO_SAMPLES); - first = FALSE; - } else { - n_aLoadBuffer(cmdListPos++, 4 * AUDIO_SAMPLES, 0, osVirtualToPhysical(gSynDriverPtr->savedMainOut)); - } - aMix(cmdListPos++, 0, fxBus->gain, N_AL_MAIN_L_OUT, 0); - aMix(cmdListPos++, 0, fxBus->gain, N_AL_MAIN_R_OUT, 2 * AUDIO_SAMPLES); - n_aSaveBuffer(cmdListPos++, 4 * AUDIO_SAMPLES, 0, osVirtualToPhysical(gSynDriverPtr->savedMainOut)); - } - } - - aDMEMMove(cmdListPos++, 0, N_AL_MAIN_L_OUT, 4 * AUDIO_SAMPLES); - n_aLoadBuffer(cmdListPos++, 4 * AUDIO_SAMPLES, N_AL_AUX_L_OUT, osVirtualToPhysical(gSynDriverPtr->savedAuxOut)); - aMix(cmdListPos++, 0, 0x7FFF, N_AL_AUX_L_OUT, N_AL_MAIN_L_OUT); - aMix(cmdListPos++, 0, 0x7FFF, N_AL_AUX_R_OUT, N_AL_MAIN_R_OUT); - - if (AuUseGlobalVolume) { - u16 vol; - aDMEMMove(cmdListPos++, N_AL_MAIN_L_OUT, 0, 4 * AUDIO_SAMPLES); - aClearBuffer(cmdListPos++, N_AL_MAIN_L_OUT, 4 * AUDIO_SAMPLES); - vol = AuGlobalVolume; - aMix(cmdListPos++, 0, vol, 0, N_AL_MAIN_L_OUT); - aMix(cmdListPos++, 0, vol, 2 * AUDIO_SAMPLES, N_AL_MAIN_R_OUT); - } - - outLen -= AUDIO_SAMPLES; - n_aInterleave(cmdListPos++); - n_aSaveBuffer(cmdListPos++, 4 * AUDIO_SAMPLES, 0, bufPos); - bufPos += 2 * AUDIO_SAMPLES; - AuDelayCounter++; - gSynDriverPtr->curSamples += AUDIO_SAMPLES; - } - *cmdLen = (cmdListPos - cmdList); + return cmdListPos; } + + au_update_clients_for_video_frame(); + + // reapply panning if dirty + if (AuSynStereoDirty) { + for (busID = 0; busID < gSynDriverPtr->num_pvoice; busID++) { + pvoice = &gSynDriverPtr->pvoices[busID]; + if (pvoice->envMixer.motion == AL_PLAYING) { + au_syn_set_pan(busID, pvoice->envMixer.pan); + } + } + AuSynStereoDirty = FALSE; + } + + // process blocks of AUDIO_SAMPLES until outLen is consumed + while (outLen > 0) { + au_update_clients_for_audio_frame(); + + // organize all voices by which FX bus they send to + for (busID = 0; busID < gSynDriverPtr->num_pvoice; busID++) { + pvoice = &gSynDriverPtr->pvoices[busID]; + + if ((pvoice->busID != 0xFF) && (pvoice->busID < gSynDriverPtr->num_bus)) { + fxBus = &gSynDriverPtr->fxBus[pvoice->busID]; + if (fxBus->tail != NULL) { + fxBus->tail->next = pvoice; + } else { + fxBus->head = pvoice; + } + fxBus->tail = pvoice; + } + } + + // render each effects bus + firstBus = TRUE; + for (busID = 0; busID < gSynDriverPtr->num_bus; busID++) { + fxBus = &gSynDriverPtr->fxBus[busID]; + if (fxBus->head != NULL) { + // clear all main and aux outputs (each is 2 * AUDIO_SAMPLES long, starting at N_AL_MAIN_L_OUT) + aClearBuffer(cmdListPos++, N_AL_MAIN_L_OUT, 8 * AUDIO_SAMPLES); + + // render all voices for this bus + // these will implicitly accumulate dry to N_AL_MAIN_*_OUT and wet to N_AL_AUX_*_OUT + if (fxBus->head != NULL) { + AuPVoice* next; + do { + cmdListPos = au_pull_voice(fxBus->head, cmdListPos); + next = fxBus->head->next; + fxBus->head->next = NULL; + fxBus->head = next; + } while (next != NULL); + fxBus->tail = NULL; + } + + // process fx for this bus + if (fxBus->curEffectType != AU_FX_NONE) { + cmdListPos = au_pull_fx(fxBus->fxL, cmdListPos, N_AL_AUX_L_OUT, N_AL_TEMP_0); + cmdListPos = au_pull_fx(fxBus->fxR, cmdListPos, N_AL_AUX_R_OUT, N_AL_TEMP_0); + } + + // apply channel delay + if (busID == AuDelayedBusID) { + mainOut = -1; + switch (AuDelayedChannel) { + case AU_DELAY_CHANNEL_LEFT: + mainOut = N_AL_MAIN_L_OUT; + auxOut = N_AL_AUX_L_OUT; + break; + case AU_DELAY_CHANNEL_RIGHT: + mainOut = N_AL_MAIN_R_OUT; + auxOut = N_AL_AUX_R_OUT; + break; + } + if (mainOut != -1) { + n_aSaveBuffer(cmdListPos++, 2 * AUDIO_SAMPLES, mainOut, osVirtualToPhysical(AuDelayBufferMain + (AuDelayCounter % AuDelayCount) * AUDIO_SAMPLES)); + n_aLoadBuffer(cmdListPos++, 2 * AUDIO_SAMPLES, mainOut, osVirtualToPhysical(AuDelayBufferMain + ((AuDelayCounter + 1) % AuDelayCount) * AUDIO_SAMPLES)); + n_aSaveBuffer(cmdListPos++, 2 * AUDIO_SAMPLES, auxOut, osVirtualToPhysical(AuDelayBufferAux + (AuDelayCounter % AuDelayCount) * AUDIO_SAMPLES)); + n_aLoadBuffer(cmdListPos++, 2 * AUDIO_SAMPLES, auxOut, osVirtualToPhysical(AuDelayBufferAux + ((AuDelayCounter + 1) % AuDelayCount) * AUDIO_SAMPLES)); + } + } + + // wet mix down for this bus + if (firstBus) { + // clear accumulation buffer if first bus with output + aClearBuffer(cmdListPos++, N_AL_TEMP_0, 4 * AUDIO_SAMPLES); + } else { + // load accumulation buffer from DRAM + n_aLoadBuffer(cmdListPos++, 4 * AUDIO_SAMPLES, N_AL_TEMP_0, osVirtualToPhysical(gSynDriverPtr->wetAccumBuffer)); + } + aMix(cmdListPos++, 0, fxBus->gain, N_AL_AUX_L_OUT, N_AL_TEMP_0); + aMix(cmdListPos++, 0, fxBus->gain, N_AL_AUX_R_OUT, N_AL_TEMP_1); + // save accumulation buffer to DRAM + n_aSaveBuffer(cmdListPos++, 4 * AUDIO_SAMPLES, N_AL_TEMP_0, osVirtualToPhysical(gSynDriverPtr->wetAccumBuffer)); + + // dry mix down for this bus + if (firstBus) { + // clear accumulation buffer if first bus with output + aClearBuffer(cmdListPos++, N_AL_TEMP_0, 4 * AUDIO_SAMPLES); + firstBus = FALSE; + } else { + // load accumulation buffer from DRAM + n_aLoadBuffer(cmdListPos++, 4 * AUDIO_SAMPLES, N_AL_TEMP_0, osVirtualToPhysical(gSynDriverPtr->dryAccumBuffer)); + } + aMix(cmdListPos++, 0, fxBus->gain, N_AL_MAIN_L_OUT, N_AL_TEMP_0); + aMix(cmdListPos++, 0, fxBus->gain, N_AL_MAIN_R_OUT, N_AL_TEMP_1); + // save accumulation buffer to DRAM + n_aSaveBuffer(cmdListPos++, 4 * AUDIO_SAMPLES, N_AL_TEMP_0, osVirtualToPhysical(gSynDriverPtr->dryAccumBuffer)); + } + } + + // final output mix stage + aDMEMMove(cmdListPos++, 0, N_AL_MAIN_L_OUT, 4 * AUDIO_SAMPLES); + n_aLoadBuffer(cmdListPos++, 4 * AUDIO_SAMPLES, N_AL_AUX_L_OUT, osVirtualToPhysical(gSynDriverPtr->wetAccumBuffer)); + aMix(cmdListPos++, 0, 0x7FFF, N_AL_AUX_L_OUT, N_AL_MAIN_L_OUT); + aMix(cmdListPos++, 0, 0x7FFF, N_AL_AUX_R_OUT, N_AL_MAIN_R_OUT); + + // global volume control (used to fade out during console reset) + if (AuUseGlobalVolume) { + u16 vol; + aDMEMMove(cmdListPos++, N_AL_MAIN_L_OUT, 0, 4 * AUDIO_SAMPLES); + aClearBuffer(cmdListPos++, N_AL_MAIN_L_OUT, 4 * AUDIO_SAMPLES); + vol = AuGlobalVolume; + aMix(cmdListPos++, 0, vol, 0, N_AL_MAIN_L_OUT); + aMix(cmdListPos++, 0, vol, 2 * AUDIO_SAMPLES, N_AL_MAIN_R_OUT); + } + + outLen -= AUDIO_SAMPLES; + n_aInterleave(cmdListPos++); + n_aSaveBuffer(cmdListPos++, 4 * AUDIO_SAMPLES, 0, bufPos); + bufPos += 2 * AUDIO_SAMPLES; + AuDelayCounter++; + gSynDriverPtr->curSamples += AUDIO_SAMPLES; + } + *cmdLen = (cmdListPos - cmdList); + return cmdListPos; } @@ -251,50 +273,50 @@ void au_use_global_volume(void) { AuUseGlobalVolume = TRUE; } -void au_set_global_volume(s16 arg0) { - AuGlobalVolume = arg0; +void au_set_global_volume(s16 volume) { + AuGlobalVolume = volume; } s16 au_get_global_volume(void) { return AuGlobalVolume; } -void func_80056D5C(u8 bStereoSound) { - AuSynUseStereo = bStereoSound; +void au_set_stereo_enabled(b8 enabled) { + AuSynUseStereo = enabled; AuSynStereoDirty = TRUE; } -void au_bus_set_volume(u8 index, u16 arg1) { - AuFxBus* fxBus = &gSynDriverPtr->fxBus[index]; +void au_bus_set_volume(u8 busID, u16 value) { + AuFxBus* fxBus = &gSynDriverPtr->fxBus[busID]; - fxBus->gain = arg1 & 0x7FFF; + fxBus->gain = value & 0x7FFF; } -u16 au_bus_get_volume(u8 index, u16 arg1) { - AuFxBus* fxBus = &gSynDriverPtr->fxBus[index]; +u16 au_bus_get_volume(u8 busID) { + AuFxBus* fxBus = &gSynDriverPtr->fxBus[busID]; return fxBus->gain; } -void au_bus_set_effect(u8 index, u8 effectType) { - AuFxBus* fxBus = &gSynDriverPtr->fxBus[index]; +void au_bus_set_effect(u8 busID, u8 effectType) { + AuFxBus* fxBus = &gSynDriverPtr->fxBus[busID]; fxBus->curEffectType = effectType; - func_8005904C(fxBus->fxL, effectType); - func_8005904C(fxBus->fxR, effectType); + au_fx_load_preset(fxBus->fxL, effectType); + au_fx_load_preset(fxBus->fxR, effectType); } -void au_bus_set_fx_params(u8 index, s16 delayIndex, s16 paramID, s32 value) { - AuFxBus* fxBus = &gSynDriverPtr->fxBus[index]; +void au_bus_set_fx_params(u8 busID, s16 delayIndex, s16 paramID, s32 value) { + AuFxBus* fxBus = &gSynDriverPtr->fxBus[busID]; au_fx_param_hdl(fxBus->fxL, delayIndex, paramID, value); au_fx_param_hdl(fxBus->fxR, delayIndex, paramID, value); } -void au_pvoice_set_bus(u8 index, s8 busId) { - AuPVoice* pvoice = &gSynDriverPtr->pvoices[index]; +void au_pvoice_set_bus(u8 voiceIdx, s8 busID) { + AuPVoice* pvoice = &gSynDriverPtr->pvoices[voiceIdx]; - pvoice->busId = busId; + pvoice->busID = busID; } // based on n_alSynStopVoice @@ -303,15 +325,15 @@ void au_syn_stop_voice(u8 voiceIdx) { AuLoadFilter* decoder = &pvoice->decoder; pvoice->envMixer.motion = AL_STOPPED; - pvoice->envMixer.first = 1; + pvoice->envMixer.dirty = TRUE; pvoice->envMixer.volume = 1; pvoice->resampler.delta = 0; pvoice->resampler.first = 1; decoder->lastsam = 0; - decoder->first = 1; + decoder->first = TRUE; decoder->sample = 0; if (decoder->instrument != NULL) { - decoder->memin = (s32)decoder->instrument->base; + decoder->memin = (s32)decoder->instrument->wavData; if (decoder->instrument->type == AL_ADPCM_WAVE) { if (decoder->instrument->loopEnd != 0){ decoder->loop.count = decoder->instrument->loopCount; @@ -332,31 +354,31 @@ void au_syn_start_voice(u8 voiceIdx) { } // based on n_alSynStartVoiceParams -void au_syn_start_voice_params(u8 voiceIdx, u8 busId, Instrument* instrument, f32 pitch, s16 vol, u8 pan, u8 fxMix, s32 delta) { +void au_syn_start_voice_params(u8 voiceIdx, u8 busID, Instrument* instrument, f32 pitchRatio, s16 vol, u8 pan, u8 fxMix, s32 delta) { AuPVoice* pvoice = &gSynDriverPtr->pvoices[voiceIdx]; AuLoadFilter* decoder = &pvoice->decoder; AuEnvMixer* envMixer = &pvoice->envMixer; AuResampler* resampler = &pvoice->resampler; - pvoice->busId = busId; + pvoice->busID = busID; decoder->instrument = instrument; - pvoice->decoder.memin = (s32)decoder->instrument->base; + pvoice->decoder.memin = (s32)decoder->instrument->wavData; pvoice->decoder.sample = 0; switch (decoder->instrument->type) { case AL_ADPCM_WAVE: decoder->instrument->wavDataLength = (decoder->instrument->wavDataLength / ADPCMFBYTES) * ADPCMFBYTES; - pvoice->decoder.bookSize = decoder->instrument->dc_bookSize; - if (decoder->instrument->loopEnd == 0) { - decoder->loop.count = 0; - decoder->loop.end = 0; - decoder->loop.start = 0; - } else { + pvoice->decoder.bookSize = decoder->instrument->codebookSize; + if (decoder->instrument->loopEnd != 0) { decoder->loop.start = decoder->instrument->loopStart; decoder->loop.end = decoder->instrument->loopEnd; decoder->loop.count = decoder->instrument->loopCount; - alCopy(decoder->instrument->loopPredictor, decoder->lstate, sizeof(ADPCM_STATE)); + alCopy(decoder->instrument->loopState, decoder->lstate, sizeof(ADPCM_STATE)); + } else { + decoder->loop.count = 0; + decoder->loop.end = 0; + decoder->loop.start = 0; } break; case AL_RAW16_WAVE: @@ -373,7 +395,7 @@ void au_syn_start_voice_params(u8 voiceIdx, u8 busId, Instrument* instrument, f3 } envMixer->motion = AL_PLAYING; - envMixer->first = 1; + envMixer->dirty = TRUE; envMixer->delta = 0; envMixer->segEnd = delta; envMixer->pan = pan; @@ -392,7 +414,7 @@ void au_syn_start_voice_params(u8 voiceIdx, u8 busId, Instrument* instrument, f3 envMixer->cvolR = (envMixer->volume * AuEqPower[AU_EQPOW_MAX_IDX - envMixer->pan]) >> 0xF; } } - resampler->ratio = pitch; + resampler->ratio = pitchRatio; } void au_syn_set_wavetable(u8 voiceIdx, Instrument* instrument) { @@ -400,22 +422,22 @@ void au_syn_set_wavetable(u8 voiceIdx, Instrument* instrument) { AuLoadFilter* decoder = &pvoice->decoder; pvoice->decoder.instrument = instrument; - pvoice->decoder.memin = (s32)decoder->instrument->base; + pvoice->decoder.memin = (s32)decoder->instrument->wavData; pvoice->decoder.sample = 0; switch (decoder->instrument->type) { case AL_ADPCM_WAVE: decoder->instrument->wavDataLength = (decoder->instrument->wavDataLength / ADPCMFBYTES) * ADPCMFBYTES; - pvoice->decoder.bookSize = decoder->instrument->dc_bookSize; - if (decoder->instrument->loopEnd == 0) { - pvoice->decoder.loop.count = 0; - pvoice->decoder.loop.end = 0; - pvoice->decoder.loop.start = 0; - } else { + pvoice->decoder.bookSize = decoder->instrument->codebookSize; + if (decoder->instrument->loopEnd != 0) { pvoice->decoder.loop.start = decoder->instrument->loopStart; pvoice->decoder.loop.end = decoder->instrument->loopEnd; pvoice->decoder.loop.count = decoder->instrument->loopCount; - alCopy(decoder->instrument->loopPredictor, pvoice->decoder.lstate, sizeof(ADPCM_STATE)); + alCopy(decoder->instrument->loopState, pvoice->decoder.lstate, sizeof(ADPCM_STATE)); + } else { + pvoice->decoder.loop.count = 0; + pvoice->decoder.loop.end = 0; + pvoice->decoder.loop.start = 0; } break; case AL_RAW16_WAVE: @@ -469,7 +491,7 @@ void au_syn_set_mixer_params(u8 voiceIdx, s16 volume, s32 delta, u8 pan, u8 fxMi envMixer->volume = SQ(volume) >> 0xF; envMixer->dryamt = AuEqPower[fxMix]; envMixer->wetamt = AuEqPower[AU_EQPOW_MAX_IDX - fxMix]; - envMixer->first = 1; + envMixer->dirty = TRUE; } void au_syn_set_pan_fxmix(u8 voiceIdx, u8 pan, u8 fxMix) { @@ -499,7 +521,7 @@ void au_syn_set_pan_fxmix(u8 voiceIdx, u8 pan, u8 fxMix) { envMixer->pan = pan; envMixer->dryamt = AuEqPower[fxMix]; envMixer->wetamt = AuEqPower[AU_EQPOW_MAX_IDX - fxMix]; - envMixer->first = 1; + envMixer->dirty = TRUE; } void au_syn_set_volume_delta(u8 voiceIdx, s16 vol, s32 delta) { @@ -529,7 +551,7 @@ void au_syn_set_volume_delta(u8 voiceIdx, s16 vol, s32 delta) { envMixer->volume = SQ(vol) >> 0xF; envMixer->delta = 0; envMixer->segEnd = delta; - envMixer->first = 1; + envMixer->dirty = TRUE; } void au_syn_set_pan(u8 voiceIdx, u8 pan) { @@ -557,7 +579,7 @@ void au_syn_set_pan(u8 voiceIdx, u8 pan) { } envMixer->pan = pan; - envMixer->first = 1; + envMixer->dirty = TRUE; } void au_syn_set_fxmix(u8 voiceIdx, u8 fxMix) { @@ -586,7 +608,7 @@ void au_syn_set_fxmix(u8 voiceIdx, u8 fxMix) { envMixer->dryamt = AuEqPower[fxMix]; envMixer->wetamt = AuEqPower[AU_EQPOW_MAX_IDX - fxMix]; - envMixer->first = 1; + envMixer->dirty = TRUE; } s32 au_syn_get_playing(u8 voiceIdx) { @@ -598,7 +620,7 @@ s32 au_syn_get_playing(u8 voiceIdx) { s32 au_syn_get_bus(u8 voiceIdx) { AuPVoice* pvoice = &gSynDriverPtr->pvoices[voiceIdx]; - return pvoice->busId; + return pvoice->busID; } f32 au_syn_get_pitch(u8 voiceIdx) { @@ -659,66 +681,66 @@ s32 au_syn_get_volume_right(u8 voiceIdx) { return retVal; } -void au_set_delay_time(s32 arg0) { - if (arg0 < 2) { +void au_set_delay_time(s32 numFrames) { + if (numFrames < 2) { AuDelayCount = 0; - AuDelayedChannel = 0; + AuDelayedChannel = AU_DELAY_CHANNEL_NONE; } - AuDelayCount = arg0; - if (arg0 > 4) { + AuDelayCount = numFrames; + if (numFrames > 4) { AuDelayCount = 4; } } -void au_delay_left_channel(u8 groupIdx) { - s32* phi_a1 = (s32*)AuDelayBufferMain; - s32* phi_v1 = (s32*)AuDelayBufferAux; +void au_delay_left_channel(u8 busID) { + s32* mainBuf = (s32*)AuDelayBufferMain; + s32* auxBuf = (s32*)AuDelayBufferAux; s32 i; for (i = 0; i < 2 * AUDIO_SAMPLES; i++) { - *phi_a1++ = 0; - *phi_v1++ = 0; + *mainBuf++ = 0; + *auxBuf++ = 0; } - AuDelayedVoiceGroup = groupIdx; - AuDelayedChannel = 1; + AuDelayedBusID = busID; + AuDelayedChannel = AU_DELAY_CHANNEL_LEFT; AuDelayCounter = 0; } -void au_delay_right_channel(u8 groupIdx) { - s32* phi_a1 = (s32*)AuDelayBufferMain; - s32* phi_v1 = (s32*)AuDelayBufferAux; +void au_delay_right_channel(u8 busID) { + s32* mainBuf = (s32*)AuDelayBufferMain; + s32* auxBuf = (s32*)AuDelayBufferAux; s32 i; for (i = 0; i < 2 * AUDIO_SAMPLES; i++) { - *phi_a1++ = 0; - *phi_v1++ = 0; + *mainBuf++ = 0; + *auxBuf++ = 0; } - AuDelayedVoiceGroup = groupIdx; - AuDelayedChannel = 2; + AuDelayedBusID = busID; + AuDelayedChannel = AU_DELAY_CHANNEL_RIGHT; AuDelayCounter = 0; } void au_disable_channel_delay(void) { - AuDelayedVoiceGroup = 0; - AuDelayedChannel = 0; + AuDelayedBusID = 0; + AuDelayedChannel = AU_DELAY_CHANNEL_NONE; AuDelayCounter = 0; } -void au_delay_channel(s16 arg0) { - s32* phi_a1 = (s32*)AuDelayBufferMain; - s32* phi_v1 = (s32*)AuDelayBufferAux; +void au_init_delay_channel(s16 channel) { + s32* mainBuf = (s32*)AuDelayBufferMain; + s32* auxBuf = (s32*)AuDelayBufferAux; s32 i; for (i = 0; i < 2 * AUDIO_SAMPLES; i++) { - *phi_a1++ = 0; - *phi_v1++ = 0; + *mainBuf++ = 0; + *auxBuf++ = 0; } - AuDelayedVoiceGroup = 0; - AuDelayedChannel = arg0; + AuDelayedBusID = 0; + AuDelayedChannel = channel; AuDelayCounter = 0; } diff --git a/src/audio/25f00_len_940.c b/src/audio/core/system.c similarity index 90% rename from src/audio/25f00_len_940.c rename to src/audio/core/system.c index a11bb4ec42..813fc09c79 100644 --- a/src/audio/25f00_len_940.c +++ b/src/audio/core/system.c @@ -1,7 +1,5 @@ -#include "common.h" -#include "nu/nusys.h" -#include "nu/nualsgi.h" #include "audio.h" +#include "audio/core.h" NOP_FIX @@ -50,10 +48,10 @@ void create_audio_system(void) { alHeapInit(&nuAuHeap, AuHeapBase, AUDIO_HEAP_SIZE); config.num_pvoice = 24; config.num_bus = 4; - outputRate = osAiSetFrequency(32000); - frameSize = (nusched.retraceCount * outputRate + (AUDIO_FRAMES_PER_SECOND - 1)) / AUDIO_FRAMES_PER_SECOND; + outputRate = osAiSetFrequency(HARDWARE_OUTPUT_RATE); + frameSize = (nusched.retraceCount * outputRate + (VIDEO_FRAMES_PER_SECOND - 1)) / VIDEO_FRAMES_PER_SECOND; config.outputRate = outputRate; - config.unk_0C = 0; + config.unused_0C = 0; config.heap = &nuAuHeap; config.dmaNew = nuAuDmaNew; AlFrameSize = ((frameSize / AUDIO_SAMPLES) + 1) * AUDIO_SAMPLES; @@ -100,7 +98,7 @@ void create_audio_system(void) { nuAuPreNMIFunc = nuAuPreNMIProc; au_driver_init(&auSynDriver, &config); au_engine_init(config.outputRate); - osCreateThread(&nuAuMgrThread, NU_MAIN_THREAD_ID, nuAuMgr, NULL, &AuStack[NU_AU_STACK_SIZE / sizeof(u64)], NU_AU_MGR_THREAD_PRI); //why main thread? + osCreateThread(&nuAuMgrThread, THREAD_ID_AUDIO, nuAuMgr, NULL, &AuStack[NU_AU_STACK_SIZE / sizeof(u64)], NU_AU_MGR_THREAD_PRI); osStartThread(&nuAuMgrThread); } @@ -190,7 +188,8 @@ void nuAuMgr(void* arg) { } } -s32 nuAuDmaCallBack(s32 addr, s32 len, void *state, u8 arg3) { +/// DMA callback for audio sample streaming; manages a DMA buffer cache. +s32 nuAuDmaCallBack(s32 addr, s32 len, void *state, u8 useDma) { NUDMABuffer* dmaPtr; NUDMABuffer* freeBuffer; OSIoMesg* mesg; @@ -199,7 +198,7 @@ s32 nuAuDmaCallBack(s32 addr, s32 len, void *state, u8 arg3) { s32 addrEnd, buffEnd; NUDMABuffer* lastDmaPtr; - if (arg3 == 0) { + if (!useDma) { return osVirtualToPhysical((void*)addr); } @@ -259,6 +258,8 @@ s32 nuAuDmaCallBack(s32 addr, s32 len, void *state, u8 arg3) { return osVirtualToPhysical(freeBuffer) + delta; } +/// Initializes the audio DMA state and returns the DMA callback. +/// Called once per AuPVoice initialization in au_driver_init to assign callbacks to them. ALDMAproc nuAuDmaNew(NUDMAState** state) { if (!nuAuDmaState.initialized) { nuAuDmaState.firstFree = &nuAuDmaBufList[0]; @@ -271,6 +272,7 @@ ALDMAproc nuAuDmaNew(NUDMAState** state) { return (ALDMAproc)nuAuDmaCallBack; } +/// Recycles DMA buffers which are no longer in use (based on frame count). void nuAuCleanDMABuffers(void) { NUDMAState* state = &nuAuDmaState; NUDMABuffer* dmaPtr = state->firstUsed; @@ -291,12 +293,12 @@ void nuAuCleanDMABuffers(void) { alUnlink(&dmaPtr->node); - if (state->firstFree != 0) { + if (state->firstFree != NULL) { alLink(&dmaPtr->node, &state->firstFree->node); } else { state->firstFree = dmaPtr; - dmaPtr->node.next = 0; - dmaPtr->node.prev = 0; + dmaPtr->node.next = NULL; + dmaPtr->node.prev = NULL; } } @@ -309,6 +311,7 @@ void nuAuCleanDMABuffers(void) { } while (0); } +/// Handles global audio fade-out during system resets (NMI). void nuAuPreNMIProc(NUScMsg mesg_type, u32 frameCounter) { s16 maxVol; s32 vol; @@ -336,6 +339,7 @@ void nuAuPreNMIProc(NUScMsg mesg_type, u32 frameCounter) { } } +/// Links a new element into a doubly-linked list. void alLink(ALLink* element, ALLink* after) { element->next = after->next; element->prev = after; @@ -346,6 +350,7 @@ void alLink(ALLink* element, ALLink* after) { after->next = element; } +/// Unlinks a list element from a doubly-linked list. void alUnlink(ALLink* element) { if (element->next != NULL) { element->next->prev = element->prev; diff --git a/src/audio/tables.c b/src/audio/core/tables.c similarity index 99% rename from src/audio/tables.c rename to src/audio/core/tables.c index 79eb7dff34..9ae2605256 100644 --- a/src/audio/tables.c +++ b/src/audio/core/tables.c @@ -1,5 +1,7 @@ #include "common.h" +// none of these are used + f32 D_80078F60[] = { -1.0, 0.0, 3.850119e-06, 6.102301e-06, 7.700253e-06, 8.939723e-06, 9.952444e-06, 1.080869e-05, 1.155040e-05, 1.220464e-05, 1.278988e-05, 1.331929e-05, 1.380260e-05, 1.424721e-05, 1.465885e-05, 1.504208e-05, diff --git a/src/audio/core/voice.c b/src/audio/core/voice.c new file mode 100644 index 0000000000..1b1ec17654 --- /dev/null +++ b/src/audio/core/voice.c @@ -0,0 +1,260 @@ +#include "audio.h" +#include "audio/core.h" + +void au_flush_finished_voices(AuGlobals* globals) { + s32 i; + + for (i = 0; i < ARRAY_COUNT(globals->voices); i++) { + AuVoice* voice = &globals->voices[i]; + + if (voice->donePending) { + au_syn_stop_voice(i); + voice->donePending = FALSE; + voice->cmdPtr = NULL; + voice->priority = AU_PRIORITY_FREE; + } + } +} + +void au_init_voices(AuGlobals* globals) { + s32 i; + + for (i = 0; i < ARRAY_COUNT(globals->voices); i++) { + AuVoice* voice = &globals->voices[i]; + + voice->cmdPtr = NULL; + voice->unused_20 = 0; + voice->envDuration = 0; + voice->envTimeLeft = 0; + voice->envIntervalIndex = 0; + voice->unused_3C = 0; + voice->envelopeFlags = 0; + voice->isRelativeRelease = FALSE; + voice->envRelativeStart = ENV_VOL_MAX; + } +} + +void au_update_voices(AuGlobals* globals) { + AuVoice* voice; + s16 current; + s8 temp; + s32 i; + + for (i = 0; i < ARRAY_COUNT(globals->voices); i++) { + voice = &globals->voices[i]; + + // skip inactive voices + if (voice->cmdPtr == NULL) { + continue; + } + + if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_HANDLED_VOL_CHANGE) { + // client volume changed on previous frame + au_voice_after_volume_change(voice); + continue; + } + + if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_KEY_RELEASED) { + // client released the key + voice->envelopeFlags &= ~AU_VOICE_ENV_FLAG_KEY_RELEASED; + voice->envelopeFlags |= AU_VOICE_ENV_FLAG_RELEASING; + voice->cmdPtr = (u8*)voice->envelope.cmdListRelease; + + // the key can be released before the press envelope is complete + if (voice->envTimeLeft > AU_FRAME_USEC) { + // get interpolated "current" value + voice->envInitial += (s32) (voice->envDelta * (f32) (voice->envDuration - voice->envTimeLeft)); + } else { + voice->envInitial = voice->envTarget; + } + + // read the first interval of the release envelope + voice->envIntervalIndex = *voice->cmdPtr++; + temp = *voice->cmdPtr; + if (*(s8*)voice->cmdPtr++ < 0) { + // in this case release volumes are relative to last press volume + temp &= 0x7F; + voice->isRelativeRelease = TRUE; + voice->envRelativeStart = voice->envInitial; + } + voice->envTarget = temp; + voice->envTimeLeft = AuEnvelopeIntervals[voice->envIntervalIndex]; + voice->envDuration = voice->envTimeLeft; + + if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_VOL_CHANGED) { + voice->envelopeFlags &= ~AU_VOICE_ENV_FLAG_VOL_CHANGED; + if (voice->envTimeLeft > AU_FRAME_USEC) { + voice->envTimeLeft -= AU_FRAME_USEC; + voice->envelopeFlags |= AU_VOICE_ENV_FLAG_HANDLED_VOL_CHANGE; + current = voice->envInitial + (s32) (voice->envDelta * (voice->envDuration - voice->envTimeLeft)); + } else { + current = voice->envTarget; + } + voice->delta = AUDIO_SAMPLES; + } else { + voice->delta = au_voice_get_delta(voice->envDuration); + current = voice->envTarget; + } + voice->volume = VOL_MULT_4(current, voice->clientVolume, voice->envRelativeStart, voice->envScale); + voice->syncFlags |= AU_VOICE_SYNC_FLAG_PARAMS; + } else { + if (voice->envTimeLeft == -1) { + // keep current volume, this is 'sustain' phase + if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_VOL_CHANGED) { + voice->envelopeFlags &= ~AU_VOICE_ENV_FLAG_VOL_CHANGED; + voice->volume = VOL_MULT_4(voice->envInitial, voice->clientVolume, voice->envRelativeStart, voice->envScale); + voice->syncFlags |= AU_VOICE_SYNC_FLAG_PARAMS; + } + } else { + voice->envTimeLeft -= AU_FRAME_USEC; + if (voice->envTimeLeft <= 0) { + if (*voice->cmdPtr == ENV_CMD_END) { + if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_RELEASING) { + // if we reached the end after key release, stop the voice completely + voice->envelopeFlags = 0; + voice->cmdPtr = NULL; + voice->donePending = TRUE; + } else { + // we reached the end of press cmdlist, keep the last volume until the key is released + voice->envTimeLeft = -1; + voice->envDuration = -1; + voice->envIntervalIndex = ENV_TIME_300MS; // doesn't seem to affect anything + voice->delta = AUDIO_SAMPLES; + voice->envDelta = 0.0f; + voice->envInitial = voice->envTarget; + } + } else { + // get next envelope point + voice->envIntervalIndex = au_voice_step(voice); + voice->envInitial = voice->envTarget; + voice->envTarget = (*voice->cmdPtr++) & 0x7F; + voice->envTimeLeft = AuEnvelopeIntervals[voice->envIntervalIndex]; + voice->envDuration = voice->envTimeLeft; + if (voice->envDuration != 0) { + voice->envDelta = ((f32) voice->envTarget - (f32) voice->envInitial) / (f32) voice->envDuration; + } else { + voice->envDelta = 0.0f; + } + if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_VOL_CHANGED) { + voice->envelopeFlags &= ~AU_VOICE_ENV_FLAG_VOL_CHANGED; + if (voice->envTimeLeft > AU_FRAME_USEC) { + voice->envTimeLeft -= AU_FRAME_USEC; + voice->envelopeFlags |= AU_VOICE_ENV_FLAG_HANDLED_VOL_CHANGE; + current = voice->envInitial + (s32) (voice->envDelta * (voice->envDuration - voice->envTimeLeft)); + } else { + current = voice->envTarget; + } + voice->delta = AUDIO_SAMPLES; + } else { + voice->delta = au_voice_get_delta(voice->envDuration); + current = voice->envTarget; + } + voice->volume = VOL_MULT_4(current, voice->clientVolume, voice->envRelativeStart, voice->envScale); + voice->syncFlags |= AU_VOICE_SYNC_FLAG_PARAMS; + } + } else { + // we are between two envelope points, do nothing, just handle client volume change + if (voice->envelopeFlags & AU_VOICE_ENV_FLAG_VOL_CHANGED) { + voice->envelopeFlags &= ~AU_VOICE_ENV_FLAG_VOL_CHANGED; + if (voice->envTimeLeft > AU_FRAME_USEC) { + voice->envTimeLeft -= AU_FRAME_USEC; + voice->envelopeFlags |= AU_VOICE_ENV_FLAG_HANDLED_VOL_CHANGE; + current = voice->envInitial + (s32) (voice->envDelta * (voice->envDuration - voice->envTimeLeft)); + } else { + current = voice->envTarget; + } + voice->delta = AUDIO_SAMPLES; + voice->volume = VOL_MULT_4(current, voice->clientVolume, voice->envRelativeStart, voice->envScale); + voice->syncFlags |= AU_VOICE_SYNC_FLAG_PARAMS; + } + } + } + } + } +} + +void au_voice_after_volume_change(AuVoice* voice) { + voice->volume = VOL_MULT_4(voice->envTarget, voice->clientVolume, voice->envRelativeStart, voice->envScale); + voice->delta = au_voice_get_delta(voice->envTimeLeft); + voice->envelopeFlags &= ~AU_VOICE_ENV_FLAG_HANDLED_VOL_CHANGE; + voice->syncFlags |= AU_VOICE_SYNC_FLAG_PARAMS; +} + +s32 au_voice_get_delta(s32 usecs) { + return (usecs / AU_FRAME_USEC) * AUDIO_SAMPLES; +} + +void au_voice_start(AuVoice* voice, EnvelopeData* envData) { + s32 intervalIndex; + + voice->envelope.cmdListPress = envData->cmdListPress; + voice->cmdPtr = voice->envelope.cmdListPress; + voice->envelope.cmdListRelease = envData->cmdListRelease; + voice->envScale = ENV_VOL_MAX; + voice->loopStart = NULL; + + intervalIndex = au_voice_step(voice); + voice->envelopeFlags = 0; + voice->envInitial = 0; + voice->envTarget = *voice->cmdPtr++; + voice->envIntervalIndex = intervalIndex; + voice->envDuration = AuEnvelopeIntervals[intervalIndex]; + voice->envTimeLeft = voice->envDuration; + + voice->volume = VOL_MULT_3(voice->envTarget, voice->clientVolume, voice->envScale); + voice->delta = au_voice_get_delta(voice->envDuration); + if (voice->envDuration != 0) { + voice->envDelta = ((f32) voice->envTarget - (f32) voice->envInitial) / voice->envDuration; + } else { + voice->envDelta = 0.0f; + } + voice->isRelativeRelease = FALSE; + voice->envRelativeStart = ENV_VOL_MAX; +} + +u8 au_voice_step(AuVoice* voice) { + u32 op; + u8 arg; + + while (TRUE) { + if ((s8)(op = *voice->cmdPtr++) >= 0) { + break; + } + switch ((u8)op) { + case ENV_CMD_SET_SCALE: + arg = *voice->cmdPtr++; + if (arg > ENV_VOL_MAX) { + arg = ENV_VOL_MAX; + } + voice->envScale = arg; + break; + case ENV_CMD_ADD_SCALE: + voice->envScale += (s8) *voice->cmdPtr++; + if (voice->envScale > ENV_VOL_MAX) { + voice->envScale = ENV_VOL_MAX; + } else if (voice->envScale < 0) { + voice->envScale = 0; + } + break; + case ENV_CMD_START_LOOP: + voice->loopCounter = *voice->cmdPtr++; // 0 = infinite loop + voice->loopStart = voice->cmdPtr; + break; + case ENV_CMD_END_LOOP: + voice->cmdPtr++; + if (voice->loopCounter == 0 || --voice->loopCounter != 0) { + voice->cmdPtr = voice->loopStart; + } + break; + default: + // unknown command, skip argument + voice->cmdPtr++; + break; + } + } + return op; +} + +void au_voice_set_vol_changed(AuVoice* voice) { + voice->envelopeFlags |= AU_VOICE_ENV_FLAG_VOL_CHANGED; +} diff --git a/src/audio/e0b30_len_b80.c b/src/audio/e0b30_len_b80.c deleted file mode 100644 index ca29a5c986..0000000000 --- a/src/audio/e0b30_len_b80.c +++ /dev/null @@ -1,433 +0,0 @@ -#include "common.h" -#include "npc.h" - -void bgm_update_volume(void); -void bgm_set_target_volume(s16 volume); - -BSS s16 MusicDefaultVolume; -BSS s16 MusicTargetVolume; -BSS s16 MusicMaxVolume; -BSS s16 MusicCurrentVolume; - -MusicSettings gMusicSettings[2]; - -MusicSettings BlankMusicSettings = { - .flags = 0, - .state = 0, - .fadeOutTime = -1, - .fadeInTime = 0, - .fadeStartVolume = 0, - .fadeEndVolume = 0, - .songID = -1, - .variation = -1, - .songName = -1, - .battleSongID = 0, - .battleVariation = 0, - .savedSongID = 0, - .savedVariation = 0, - .savedSongName = 0 -}; - -/// Lists the songs that are forced to use the variation determined by `map.songVariation & 1`. -/// @see bgm_get_map_default_variation -s32 SongsUsingVariationFlag[] = { - SONG_SPECIAL_BATTLE, - SONG_TUBBA_BLUBBA_BATTLE, - SONG_JR_TROOPA_BATTLE, - SONG_YOSHI_KIDS_FOUND, - SONG_ITEM_UPGRADE, - SONG_NEW_PARTNER, -}; - -s16 NextVolumeUpdateTimer = 0; - -/// If the given song ID is present in SongsUsingVariationFlag, returns the current -/// map's `songVariation & 1` value. Otherwise, returns -1. -/// -/// @see SongsUsingVariationFlag -/// @returns -1: no override; 0: override to variation 0; 1 override to variation 1 -s32 bgm_get_map_default_variation(s32 songID) { - u32 i; - - for (i = 0; i < ARRAY_COUNT(SongsUsingVariationFlag); i++) { - if (SongsUsingVariationFlag[i] == songID) { - MapConfig* map = &gAreas[gGameStatusPtr->areaID].maps[gGameStatusPtr->mapID]; - - return map->songVariation & 1; - } - } - - return -1; -} - -void bgm_reset_sequence_players(void) { - s32 i; - - for (i = 0; i < ARRAY_COUNT(gMusicSettings); i++) { - gMusicSettings[i] = BlankMusicSettings; - } - - MusicTargetVolume = 8; - MusicMaxVolume = 8; - MusicCurrentVolume = 8; - func_800561A4(8); -} - -void bgm_reset_volume(void) { - MusicTargetVolume = 8; - MusicMaxVolume = 8; -} - -//TODO refactor out constants -void bgm_update_music_settings(void) { - MusicSettings* music = gMusicSettings; - s32 i = 0; - s16 state2 = 2; - s16 flag4 = MUSIC_SETTINGS_FLAG_4; - s32 flags; - - for (i; i < ARRAY_COUNT(gMusicSettings); i++, music++) { - switch (music->state) { - case 0: - break; - case 1: - if (music->flags & MUSIC_SETTINGS_FLAG_1) { - if (music->fadeOutTime < 250) { - if (!(music->flags & MUSIC_SETTINGS_FLAG_4)) { - if (au_song_stop(music->songName) == AU_RESULT_OK) { - music->state = state2; - } - } else { - if (func_80055AF0(music->songName) == AU_RESULT_OK) { - music->state = state2; - } - } - } else if (!(music->flags & MUSIC_SETTINGS_FLAG_4)) { - if (snd_set_song_variation_fade_time(music->songName, music->fadeOutTime, 0) == 0) { - music->state = state2; - } - } else { - if (func_80055BB8(music->songName, 250) == AU_RESULT_OK) { - music->state = state2; - } - } - } else { - if (music->flags & MUSIC_SETTINGS_FLAG_4) { - music->flags |= MUSIC_SETTINGS_FLAG_10; - } - music->flags &= ~flag4; - music->state = 5; - } - break; - case 2: - flags = music->flags; - music->flags &= ~flag4; - if (flags & MUSIC_SETTINGS_FLAG_1) { - if (au_song_is_playing(music->songName) == AU_RESULT_OK) { - music->flags &= ~MUSIC_SETTINGS_FLAG_1; - music->state = 3; - } - } else { - music->state = 5; - } - break; - case 3: - music->state = 4; - break; - case 4: - music->state = 5; - break; - case 5: - if (!(music->flags & MUSIC_SETTINGS_FLAG_8)) { - if (music->songID < 0) { - music->state = 0; - } else { - music->songName = au_song_load(music->songID, i); - if (music->songName > 0xFFFFU) { - if ((music->flags & MUSIC_SETTINGS_FLAG_20)) { - snd_set_song_variation_fade(music->songName, music->variation, - music->fadeInTime, music->fadeStartVolume, music->fadeEndVolume); - music->flags &= ~MUSIC_SETTINGS_FLAG_20; - } else { - bgm_set_target_volume(MusicDefaultVolume); - } - if (au_song_start_variation(music->songName, music->variation) == 0) { - music->flags |= MUSIC_SETTINGS_FLAG_1; - music->state = 0; - } - } - } - } else { - if (music->flags & MUSIC_SETTINGS_FLAG_10) { - music->state = 0; - music->flags &= ~(MUSIC_SETTINGS_FLAG_10 | MUSIC_SETTINGS_FLAG_8); - } else if (func_80055B28(music->savedSongName) == 0) { - music->songID = music->savedSongID; - music->variation = music->savedVariation; - music->songName = music->savedSongName; - music->state = 0; - music->flags |= MUSIC_SETTINGS_FLAG_1; - music->flags &= ~MUSIC_SETTINGS_FLAG_8; - } - } - break; - } - } - bgm_update_volume(); -} - -s32 _bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) { - MusicSettings* musicSetting; - s32 mapSongVariation; - - if (gGameStatusPtr->demoState != DEMO_STATE_NONE) { - return 1; - } - - musicSetting = &gMusicSettings[playerIndex]; - - if (!gGameStatusPtr->musicEnabled) { - au_song_stop(musicSetting->songName); - musicSetting->flags &= ~MUSIC_SETTINGS_FLAG_1; - - return 1; - } - - mapSongVariation = bgm_get_map_default_variation(songID); - if (mapSongVariation >= 0) { - variation = mapSongVariation; - } - - if (musicSetting->songID == songID && musicSetting->variation == variation) { - bgm_set_target_volume(volume); - - if (musicSetting->flags & MUSIC_SETTINGS_FLAG_4) { - func_80055B80(musicSetting->songName); - musicSetting->flags &= ~MUSIC_SETTINGS_FLAG_4; - } - - return 2; - } - - MusicDefaultVolume = volume; - musicSetting->songID = songID; - musicSetting->variation = variation; - musicSetting->fadeOutTime = fadeOutTime; - musicSetting->state = 1; - musicSetting->flags &= ~MUSIC_SETTINGS_FLAG_ENABLE_PROXIMITY_MIX; - - return 1; -} - -s32 bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume) { - gMusicSettings[playerIndex].flags &= ~MUSIC_SETTINGS_FLAG_8; - - return _bgm_set_song(playerIndex, songID, variation, fadeOutTime, volume); -} - -s32 func_8014A964(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s16 fadeStartVolume, s16 fadeEndVolume) { - MusicSettings* musicSetting; - s32 mapSongVariation; - - if (gGameStatusPtr->demoState) { - return 1; - } - - musicSetting = &gMusicSettings[playerIndex]; - - if (!gGameStatusPtr->musicEnabled) { - au_song_stop(musicSetting->songName); - musicSetting->flags &= ~MUSIC_SETTINGS_FLAG_1; - return 1; - } - - mapSongVariation = bgm_get_map_default_variation(songID); - if (mapSongVariation >= 0) { - variation = mapSongVariation; - } - - musicSetting->fadeInTime = fadeInTime; - musicSetting->fadeStartVolume = fadeStartVolume; - musicSetting->fadeEndVolume = fadeEndVolume; - musicSetting->songID = songID; - musicSetting->variation = variation; - musicSetting->flags |= MUSIC_SETTINGS_FLAG_20; - musicSetting->state = 1; - musicSetting->flags &= ~MUSIC_SETTINGS_FLAG_ENABLE_PROXIMITY_MIX; - - return 1; -} - -s32 bgm_adjust_proximity(s32 playerIndex, s32 mix, s16 state) { - MusicSettings* musicSetting = &gMusicSettings[playerIndex]; - - if (!(musicSetting->flags & MUSIC_SETTINGS_FLAG_1)) { - return FALSE; - } - - if (!(musicSetting->flags & MUSIC_SETTINGS_FLAG_ENABLE_PROXIMITY_MIX)) { - return FALSE; - } - - switch (state) { - case MUSIC_PROXIMITY_FAR: - bgm_set_proximity_mix_far(musicSetting->songName, mix); - break; - case MUSIC_PROXIMITY_NEAR: - bgm_set_proximity_mix_near(musicSetting->songName, mix); - break; - case MUSIC_PROXIMITY_FULL: - bgm_set_proximity_mix_full(musicSetting->songName, mix); - break; - } - return TRUE; -} - -AuResult bgm_set_track_volumes(s32 playerIndex, s16 trackVolSet) { - MusicSettings* musicSetting = &gMusicSettings[playerIndex]; - - if (!(musicSetting->flags & MUSIC_SETTINGS_FLAG_1)) { - return AU_RESULT_OK; - } - - return snd_song_set_track_volumes(musicSetting->songName, trackVolSet); -} - -AuResult bgm_clear_track_volumes(s32 playerIndex, s16 trackVolSet) { - MusicSettings* musicSetting = &gMusicSettings[playerIndex]; - - if (!(musicSetting->flags & MUSIC_SETTINGS_FLAG_1)) { - return AU_RESULT_OK; - } - - return snd_song_clear_track_volumes(musicSetting->songName, trackVolSet); -} - -AuResult bgm_set_variation(s32 playerIndex, s16 arg1) { - MusicSettings* musicSetting = &gMusicSettings[playerIndex]; - - if (!(musicSetting->flags & MUSIC_SETTINGS_FLAG_1)) { - return AU_RESULT_OK; - } - - return snd_set_song_variation(musicSetting->songName, arg1); -} - -s32 bgm_init_music_players(void) { - bgm_set_song(0, -1, 0, 250, 8); - bgm_set_song(1, -1, 0, 250, 8); - - return 1; -} - -void bgm_quiet_max_volume(void) { - MusicMaxVolume = 4; -} - -void bgm_reset_max_volume(void) { - MusicMaxVolume = 8; -} - -void bgm_set_target_volume(s16 volume) { - MusicTargetVolume = volume; -} - -void bgm_update_volume(void) { - s16 toVolume; - - if (NextVolumeUpdateTimer != 0) { - NextVolumeUpdateTimer--; - return; - } - - toVolume = MusicTargetVolume; - if (toVolume > MusicMaxVolume) { - toVolume = MusicMaxVolume; - } - - if (MusicCurrentVolume != toVolume) { - if (MusicCurrentVolume >= toVolume) { - MusicCurrentVolume--; - } else { - MusicCurrentVolume++; - } - func_800561A4(MusicCurrentVolume); - NextVolumeUpdateTimer = 3; - } -} - -s32 func_8014AD40(void) { - MusicSettings* settings = gMusicSettings; - s32 i; - - for (i = 0; i < ARRAY_COUNT(gMusicSettings); i++, settings++) { - if (!(settings->flags & MUSIC_SETTINGS_FLAG_1)) { - continue; - } - - if (au_song_is_playing(settings->songName)) { - return TRUE; - } - } - return FALSE; -} - -void bgm_pop_song(void) { - MusicSettings* musicSetting = gMusicSettings; - - if (gGameStatusPtr->demoState == DEMO_STATE_NONE) { - musicSetting->flags |= MUSIC_SETTINGS_FLAG_8; - _bgm_set_song(0, musicSetting->savedSongID, musicSetting->savedVariation, 0, 8); - } -} - -void bgm_push_song(s32 songID, s32 variation) { - MusicSettings* musicSetting = gMusicSettings; - - if (gGameStatusPtr->demoState == DEMO_STATE_NONE) { - musicSetting->savedSongID = musicSetting->songID; - musicSetting->savedVariation = musicSetting->variation; - musicSetting->savedSongName = musicSetting->songName; - musicSetting->flags |= MUSIC_SETTINGS_FLAG_4; - bgm_set_song(0, songID, variation, 500, 8); - } -} - -void bgm_pop_battle_song(void) { - MusicSettings* musicSetting = gMusicSettings; - - if (gGameStatusPtr->demoState == DEMO_STATE_NONE) { - if (gOverrideFlags & GLOBAL_OVERRIDES_DONT_RESUME_SONG_AFTER_BATTLE) { - gOverrideFlags &= ~GLOBAL_OVERRIDES_DONT_RESUME_SONG_AFTER_BATTLE; - } else { - musicSetting->flags |= MUSIC_SETTINGS_FLAG_8; - _bgm_set_song(0, musicSetting->savedSongID, musicSetting->savedVariation, 0, 8); - snd_ambient_resume(0, 250); - } - } -} - -void bgm_push_battle_song(void) { - MusicSettings* musicSetting = gMusicSettings; - - if (gGameStatusPtr->demoState == DEMO_STATE_NONE) { - if (!(gOverrideFlags & GLOBAL_OVERRIDES_DONT_RESUME_SONG_AFTER_BATTLE)) { - snd_ambient_pause(0, 250); - musicSetting->savedSongID = musicSetting->songID; - musicSetting->savedVariation = musicSetting->variation; - musicSetting->savedSongName = musicSetting->songName; - musicSetting->flags |= MUSIC_SETTINGS_FLAG_4; - bgm_set_song(0, musicSetting->battleSongID, musicSetting->battleVariation, 500, 8); - } - } -} - -void bgm_set_battle_song(s32 songID, s32 variation) { - MusicSettings* musicSetting = gMusicSettings; - - musicSetting->battleSongID = songID; - musicSetting->battleVariation = variation; -} - -void func_8014AFA0(void) { -} diff --git a/src/audio/303c0_len_3e10.c b/src/audio/load_banks.c similarity index 67% rename from src/audio/303c0_len_3e10.c rename to src/audio/load_banks.c index b42b4b8676..078b26c0c2 100644 --- a/src/audio/303c0_len_3e10.c +++ b/src/audio/load_banks.c @@ -1,15 +1,9 @@ -#include "common.h" #include "audio.h" - -typedef struct BufferEntry { - /* 0x0 */ u16 fileIndex; - /* 0x2 */ u8 bankIndex; - /* 0x3 */ u8 bankGroup; -} BufferEntry; // size = 4 +#include "audio/core.h" void au_load_BK_headers(AuGlobals* globals, ALHeap* heap) { SBNFileEntry fileEntry; - BufferEntry buffer[80]; + InitBankEntry buffer[INIT_BANK_BUFFER_SIZE]; s32 i; au_read_rom(globals->bkFileListOffset, &buffer, globals->bkListLength); @@ -20,6 +14,6 @@ void au_load_BK_headers(AuGlobals* globals, ALHeap* heap) { } au_fetch_SBN_file(buffer[i].fileIndex, AU_FMT_BK, &fileEntry); - au_load_BK_to_bank(fileEntry.offset, NULL, buffer[i].bankIndex, buffer[i].bankGroup); + au_load_BK_to_bank(fileEntry.offset, NULL, buffer[i].bankIndex, buffer[i].bankSet); } } diff --git a/src/audio/2BF90.c b/src/audio/mseq_player.c similarity index 71% rename from src/audio/2BF90.c rename to src/audio/mseq_player.c index 3c081a6da8..3db795f5b9 100644 --- a/src/audio/2BF90.c +++ b/src/audio/mseq_player.c @@ -1,29 +1,34 @@ #include "audio.h" +#include "audio/core.h" extern u8 BlankMseqData[]; #define TRACK_ID_DRUM 9 -enum AmbientMode { - AMB_MODE_NORMAL = 0, - AMB_MODE_RESUMING = 1, - AMB_MODE_STOPPED = 2, - AMB_MODE_PAUSING = 3 +enum MseqMode { + MSEQ_MODE_PLAYING = 0, + MSEQ_MODE_RESUMING = 1, + MSEQ_MODE_STOPPED = 2, + MSEQ_MODE_PAUSING = 3, }; -enum AmbientFadeState { - AMB_FADE_IN = 0, - AMB_FADE_OUT = 1, - AMB_FADE_OUT_PAUSING = 2, +enum MseqFadeState { + MSEQ_FADE_IN = 0, + MSEQ_FADE_OUT = 1, + MSEQ_FADE_OUT_PAUSING = 2, }; -enum AmbientPlayState { - AMB_PLAYER_PLAYING = 0, - AMB_PLAYER_STOPPED = 1, - AMB_PLAYER_STOPPING = 2 +enum MseqPlayState { + MSEQ_PLAYER_PLAYING = 0, + MSEQ_PLAYER_STOPPED = 1, + MSEQ_PLAYER_STOPPING = 2, }; -enum MSEQCommand { +enum MseqTrackFlags { + MSEQ_TRACK_RESUMABLE = 1, +}; + +enum MseqCommand { MSEQ_CMD_80_STOP_SOUND = 0x80, MSEQ_CMD_90_PLAY_SOUND = 0x90, MSEQ_CMD_A0_SET_VOLUME_PAN = 0xA0, @@ -36,7 +41,7 @@ enum MSEQCommand { MSEQ_CMD_SUB_69_SET_RESUMABLE = 0x69, }; -void au_amb_manager_init(AmbienceManager* manager, s8 priority, s8 busId, AuGlobals* globals) { +void au_mseq_manager_init(AmbienceManager* manager, s8 priority, s8 busID, AuGlobals* globals) { AmbiencePlayer* player; s32 i; @@ -46,7 +51,7 @@ void au_amb_manager_init(AmbienceManager* manager, s8 priority, s8 busId, AuGlob player = &manager->players[i]; player->id.playerIndex = i; player->delay = 1; - player->fadeVolume = 0x7F000000; + player->fadeVolume = AU_MAX_VOLUME_8 << 24; } manager->globals = globals; @@ -54,10 +59,10 @@ void au_amb_manager_init(AmbienceManager* manager, s8 priority, s8 busId, AuGlob manager->nextUpdateCounter = 2; manager->nextUpdateInterval = 2; manager->priority = priority; - manager->busId = busId; + manager->busID = busID; } -AuResult au_amb_check_player_index(u32 index) { +AuResult au_mseq_check_player_index(u32 index) { if (gAuAmbienceManager->numActivePlayers <= index) { return AU_AMBIENCE_ERROR_3; } else { @@ -65,57 +70,63 @@ AuResult au_amb_check_player_index(u32 index) { } } -void au_amb_load_tracks_fade(s32 arg0, s32 arg1) { +void au_mseq_load_tracks_fade(s32 arg0, s32 arg1) { gAuAmbienceManager->loadTracksFadeInfo = arg1; } -void au_amb_set_disabled(s32 index, s32 disable) { +void au_mseq_set_disabled(s32 index, s32 disable) { AmbienceManager* manager = gAuAmbienceManager; - AmbiencePlayer* ambPlayer = &manager->players[index]; + AmbiencePlayer* player = &manager->players[index]; if (!disable) { - ambPlayer->playState = AMB_PLAYER_PLAYING; + player->playState = MSEQ_PLAYER_PLAYING; } else { - ambPlayer->playState = AMB_PLAYER_STOPPING; + player->playState = MSEQ_PLAYER_STOPPING; } } -AuResult au_amb_start(s32 index, s32 time) { +AuResult au_mseq_start(s32 index, s32 time) { AmbiencePlayer* player = &gAuAmbienceManager->players[index]; MSEQHeader* mseq = gAuAmbienceManager->mseqFiles[index]; AuResult status = AU_RESULT_OK; if (mseq != NULL) { if (player->mseqName == 0) { - au_amb_play_sequence(gAuAmbienceManager, mseq, index); + au_mseq_play_sequence(gAuAmbienceManager, mseq, index); if (time != 0) { player->fadeSettingsTime = time; player->fadeSettingsInitial = 0; - player->fadeSettingsGoal = 127; - player->fadeSettingsType = AMB_FADE_IN; - au_amb_fade_setup(player); + player->fadeSettingsGoal = AU_MAX_VOLUME_8; + player->fadeSettingsType = MSEQ_FADE_IN; + au_mseq_fade_setup(player); } } else { - status = AU_AMBIENCE_ERROR_1; + status = AU_AMBIENCE_ERROR_PLAYER_BUSY; } } else { - status = AU_AMBIENCE_ERROR_2; + status = AU_AMBIENCE_ERROR_MSEQ_NOT_FOUND; } return status; } -void au_amb_fade_setup(AmbiencePlayer* player) { +void au_mseq_fade_setup(AmbiencePlayer* player) { u16 time = player->fadeSettingsTime; if (player->fadeSettingsInitial == 255) { - player->fadeSettingsInitial = player->fadeVolume >> 0x18; + player->fadeSettingsInitial = player->fadeVolume >> 24; } if (time >= SND_MIN_DURATION && time <= SND_MAX_DURATION) { - player->fadeVolume = player->fadeSettingsInitial << 0x18; + player->fadeVolume = player->fadeSettingsInitial << 24; player->fadeGoal = player->fadeSettingsGoal; - player->fadeTime = (u32)(time * 10) / 115; // TODO figure out why is the ratio like this - player->fadeStep = ((player->fadeSettingsGoal - player->fadeSettingsInitial) << 0x18) / ((s16)player->fadeTime & 0xFFFF); + + // converts a fade time in milliseconds to the number of player update ticks needed to complete the fade + // the ambience manager updates every other audio frame, so given outputRate = 32000 and frameSize = 184, + // update ticks needed = (32000 / 184) / 2, and then we divide by 1000 (since fade time has units of ms). + // this reduces to 16/184, which is exactly 1.6 times 10/115 + // why this odd reduction was chosen unstead of 16/184 is unknown + player->fadeTime = (u32)(time * 10) / 115; + player->fadeStep = ((player->fadeSettingsGoal - player->fadeSettingsInitial) << 24) / ((s16)player->fadeTime & 0xFFFF); } player->fadeSettingsTime = 0; @@ -123,7 +134,7 @@ void au_amb_fade_setup(AmbiencePlayer* player) { player->fadeSettingsGoal = 0; } -void au_amb_pause(s32 index, s32 time) { +void au_mseq_pause(s32 index, s32 time) { AmbiencePlayer* player = &gAuAmbienceManager->players[index]; if (player->mseqReadStart != NULL && player->mseqReadPos != NULL) { @@ -131,37 +142,37 @@ void au_amb_pause(s32 index, s32 time) { player->fadeSettingsInitial = 255; player->fadeSettingsTime = time; player->fadeSettingsGoal = 0; - player->fadeSettingsType = AMB_FADE_OUT_PAUSING; + player->fadeSettingsType = MSEQ_FADE_OUT_PAUSING; return; } - player->mode = AMB_MODE_PAUSING; + player->mode = MSEQ_MODE_PAUSING; } } -void au_amb_resume(s32 index, s32 time) { +void au_mseq_resume(s32 index, s32 time) { AmbiencePlayer* player = &gAuAmbienceManager->players[index]; if (player->mseqReadStart != NULL && player->mseqReadPos != NULL) { - player->mode = AMB_MODE_RESUMING; + player->mode = MSEQ_MODE_RESUMING; if (time != 0) { player->fadeSettingsTime = time; } else { player->fadeSettingsTime = SND_MIN_DURATION; } player->fadeSettingsInitial = 0; - player->fadeSettingsGoal = SND_MAX_VOLUME_8; - player->fadeSettingsType = AMB_FADE_IN; + player->fadeSettingsGoal = AU_MAX_VOLUME_8; + player->fadeSettingsType = MSEQ_FADE_IN; } } -void au_amb_stop_quick(s32 index) { +void au_mseq_stop_quick(s32 index) { AmbiencePlayer* player = &gAuAmbienceManager->players[index]; if (player->mseqReadStart != NULL && player->mseqReadPos != NULL) { - if (player->mode != AMB_MODE_NORMAL) { + if (player->mode != MSEQ_MODE_PLAYING) { player->mseqReadPos = NULL; player->mseqName = 0; - player->mode = AMB_MODE_NORMAL; + player->mode = MSEQ_MODE_PLAYING; return; } player->mseqReadPos = BlankMseqData; @@ -169,7 +180,7 @@ void au_amb_stop_quick(s32 index) { } } -void au_amb_stop_slow(s32 index, s32 time) { +void au_mseq_stop_slow(s32 index, s32 time) { AmbiencePlayer* player = &gAuAmbienceManager->players[index]; if (player->mseqReadStart != NULL && player->mseqReadPos != NULL) { @@ -180,17 +191,17 @@ void au_amb_stop_slow(s32 index, s32 time) { } player->fadeSettingsInitial = 255; player->fadeSettingsGoal = 0; - player->fadeSettingsType = AMB_FADE_OUT; + player->fadeSettingsType = MSEQ_FADE_OUT; } } -void au_amb_set_volume(s32 index, s32 time, s32 volume) { +void au_mseq_set_volume(s32 index, s32 time, s32 volume) { AmbiencePlayer* player = &gAuAmbienceManager->players[index]; if ((player->mseqReadStart != 0) && (player->mseqReadPos != 0)) { if (volume <= 0) { volume = 1; - } else if (volume > SND_MAX_VOLUME_8) { - volume = SND_MAX_VOLUME_8; + } else if (volume > AU_MAX_VOLUME_8) { + volume = AU_MAX_VOLUME_8; } if (time != 0) { player->fadeSettingsTime = time; @@ -199,24 +210,24 @@ void au_amb_set_volume(s32 index, s32 time, s32 volume) { } player->fadeSettingsInitial = 255; player->fadeSettingsGoal = volume; - player->fadeSettingsType = AMB_FADE_IN; + player->fadeSettingsType = MSEQ_FADE_IN; } } -AuResult au_amb_is_stopped(s32 index) { +AuResult au_mseq_check_stopped(s32 index) { AmbiencePlayer* player = &gAuAmbienceManager->players[index]; AuResult status = AU_RESULT_OK; if (player->mseqReadStart != NULL && player->mseqReadPos != NULL) { - status = AU_AMBIENCE_ERROR_1; - if (player->mode != AMB_MODE_NORMAL) { - status = AU_AMBIENCE_ERROR_2; + status = AU_AMBIENCE_STOP_ERROR_1; + if (player->mode != MSEQ_MODE_PLAYING) { + status = AU_AMBIENCE_STOP_ERROR_2; } } return status; } -void au_amb_play_sequence(AmbienceManager* manager, MSEQHeader* mseqFile, s32 index) { +void au_mseq_play_sequence(AmbienceManager* manager, MSEQHeader* mseqFile, s32 index) { AmbiencePlayer* player; AmbienceTrack* track; AuFilePos readPos; @@ -234,8 +245,8 @@ void au_amb_play_sequence(AmbienceManager* manager, MSEQHeader* mseqFile, s32 in player->mseqReadStart = readPos; player->delay = 1; - player->fadeVolume = 0x7F000000; - player->fadeGoal = 0x7F; + player->fadeVolume = AU_MAX_VOLUME_8 << 24; + player->fadeGoal = AU_MAX_VOLUME_8; player->mseqName = player->mseqFile->name; player->firstVoiceIdx = player->mseqFile->firstVoiceIdx; @@ -246,19 +257,23 @@ void au_amb_play_sequence(AmbienceManager* manager, MSEQHeader* mseqFile, s32 in for (i = 0; i < ARRAY_COUNT(player->tracks); i++) { track = &player->tracks[i]; track->instrument = manager->globals->defaultInstrument; - track->volumeLerp.current = 0x7FFFFFFF; + track->volumeLerp.current = AU_MAX_VOLUME_32; track->pan = 64; } player->resetRequired = TRUE; } -void au_amb_manager_update(AmbienceManager* manager) { +void au_mseq_manager_audio_frame_update(AmbienceManager* manager) { u32 i; s32 j; for (i = 0; i < ARRAY_COUNT(manager->voiceStates); i++) { AmbienceVoiceState* voiceState = &manager->voiceStates[i]; + // potential @bug, any voice which is not properly released via MSEQ_CMD_80_STOP_SOUND will eventaully + // end and set its priority to AU_PRIORITY_FREE, where another client can steal it and begin using it + // without it being considered 'free' by this AmbienceManager. this can be fixed by removing the check + // for released == TRUE from the conditional if (voiceState->info.released == TRUE && manager->globals->voices[i].priority != manager->priority) { voiceState->info.all = 0; } @@ -270,32 +285,32 @@ void au_amb_manager_update(AmbienceManager* manager) { if (player->mseqReadPos != NULL) { if (manager->loadTracksFadeInfo) { - au_amb_load_track_fade_info(manager, player); + au_mseq_load_track_fade_info(manager, player); } mode = player->mode; - if (mode != AMB_MODE_NORMAL) { - if (mode == AMB_MODE_PAUSING) { - player->mode = AMB_MODE_STOPPED; - au_amb_save_voices(manager, player); - au_amb_player_stop(manager, player); - } else if (player->mode == AMB_MODE_RESUMING) { - player->mode = AMB_MODE_NORMAL; + if (mode != MSEQ_MODE_PLAYING) { + if (mode == MSEQ_MODE_PAUSING) { + player->mode = MSEQ_MODE_STOPPED; + au_mseq_save_voices(manager, player); + au_mseq_player_stop(manager, player); + } else if (player->mode == MSEQ_MODE_RESUMING) { + player->mode = MSEQ_MODE_PLAYING; if (player->fadeSettingsTime != 0) { - au_amb_fade_setup(player); + au_mseq_fade_setup(player); } - au_amb_restore_voices(manager, player); + au_mseq_restore_voices(manager, player); } } else { - // case AMB_MODE_NORMAL + // case MSEQ_MODE_PLAYING if (player->fadeSettingsTime != 0) { - au_amb_fade_setup(player); + au_mseq_fade_setup(player); } - if (player->playState == AMB_PLAYER_STOPPING) { - au_amb_player_stop(manager, player); - player->playState = AMB_PLAYER_STOPPED; + if (player->playState == MSEQ_PLAYER_STOPPING) { + au_mseq_player_stop(manager, player); + player->playState = MSEQ_PLAYER_STOPPED; } - au_amb_player_update(manager, player); + au_mseq_player_update(manager, player); } } } @@ -303,7 +318,7 @@ void au_amb_manager_update(AmbienceManager* manager) { manager->loadTracksFadeInfo = FALSE; } -void au_amb_load_track_fade_info(AmbienceManager* manager, AmbiencePlayer* player) { +void au_mseq_load_track_fade_info(AmbienceManager* manager, AmbiencePlayer* player) { MSEQHeader* mseqFile; MSEQTrackData* trackData; AmbienceTrack* track; @@ -318,11 +333,11 @@ void au_amb_load_track_fade_info(AmbienceManager* manager, AmbiencePlayer* playe track = &player->tracks[trackData->trackIndex]; if (trackData->type == 0) { track->tuneLerp.time = trackData->time; - track->tuneLerp.step = (trackData->delta << 0x10) / trackData->time; + track->tuneLerp.step = (trackData->delta << 16) / trackData->time; track->tuneLerp.goal = trackData->goal; } else if (trackData->type == 1) { track->volumeLerp.time = trackData->time; - track->volumeLerp.step = (trackData->delta << 0x10) / trackData->time; + track->volumeLerp.step = (trackData->delta << 16) / trackData->time; track->volumeLerp.goal = trackData->goal; } trackData++; @@ -330,7 +345,7 @@ void au_amb_load_track_fade_info(AmbienceManager* manager, AmbiencePlayer* playe } } -void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { +void au_mseq_player_update(AmbienceManager* manager, AmbiencePlayer* player) { u8 isVolumeChanged[16]; u8 isPitchChanged[16]; AuGlobals* globals; @@ -339,11 +354,11 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { AuVoice* voice; BGMDrumInfo* drum; u32 trackIdx; - s32 temp; + s32 voiceSelector; s32 i; u16 bankPatch; u32 count; - s32 loopId; + s32 loopID; u8 op, arg1, arg2; AmbienceTrack* track; @@ -355,7 +370,7 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { } if (player->resetRequired == TRUE) { - au_amb_player_stop(manager, player); + au_mseq_player_stop(manager, player); player->resetRequired = FALSE; } @@ -363,14 +378,14 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { player->fadeVolume += player->fadeStep; player->fadeTime--; if (player->fadeTime == 0) { - player->fadeVolume = player->fadeGoal << 0x18; - if (player->fadeSettingsType == AMB_FADE_IN) { + player->fadeVolume = player->fadeGoal << 24; + if (player->fadeSettingsType == MSEQ_FADE_IN) { // do nothing - } else if (player->fadeSettingsType == AMB_FADE_OUT) { + } else if (player->fadeSettingsType == MSEQ_FADE_OUT) { player->mseqReadPos = BlankMseqData; player->delay = 1; - } else if (player->fadeSettingsType == AMB_FADE_OUT_PAUSING) { - player->mode = AMB_MODE_PAUSING; + } else if (player->fadeSettingsType == MSEQ_FADE_OUT_PAUSING) { + player->mode = MSEQ_MODE_PAUSING; } } fadeVolChanged = TRUE; @@ -384,17 +399,17 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { if (track->tuneLerp.time != 0) { track->tuneLerp.current += track->tuneLerp.step; } else { - track->tuneLerp.current = track->tuneLerp.goal << 0x10; + track->tuneLerp.current = track->tuneLerp.goal << 16; } - temp = player->id.all + (trackIdx << 0x10); + voiceSelector = player->id.all + (trackIdx << 16); for (i = player->firstVoiceIdx; i < player->lastVoiceIdx; i++) { voiceState = &manager->voiceStates[i - player->firstVoiceIdx]; // update all voices belonging to current track - if ((voiceState->info.all & 0xFFFF0000) == temp) { + if ((voiceState->info.all & 0xFFFF0000) == voiceSelector) { voice = &globals->voices[i]; if (voice->priority == manager->priority && trackIdx != TRACK_ID_DRUM) { - voice->pitchRatio = au_compute_pitch_ratio(voiceState->pitch + (track->tuneLerp.current >> 0x10)) * track->instrument->pitchRatio; + voice->pitchRatio = au_compute_pitch_ratio(voiceState->pitch + (track->tuneLerp.current >> 16)) * track->instrument->pitchRatio; voice->syncFlags |= AU_VOICE_SYNC_FLAG_PITCH; isPitchChanged[i - player->firstVoiceIdx] = TRUE; } @@ -411,18 +426,18 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { if (track->volumeLerp.time != 0) { track->volumeLerp.current += track->volumeLerp.step; } else { - track->volumeLerp.current = track->volumeLerp.goal << 0x10; + track->volumeLerp.current = track->volumeLerp.goal << 16; } - temp = player->id.all + (trackIdx << 0x10); + voiceSelector = player->id.all + (trackIdx << 16); for (i = player->firstVoiceIdx; i < player->lastVoiceIdx; i++) { voiceState = &manager->voiceStates[i - player->firstVoiceIdx]; // update all voices belonging to current track - if ((voiceState->info.all & 0xFFFF0000) == temp) { + if ((voiceState->info.all & 0xFFFF0000) == voiceSelector) { voice = &globals->voices[i]; if (voice->priority == manager->priority) { track = &player->tracks[voiceState->info.trackIndex]; - voice->clientVolume = ((player->fadeVolume >> 0x18) * (track->volumeLerp.current >> 0x10) * voiceState->volume) >> 0xE; + voice->clientVolume = VOL_MULT_3(player->fadeVolume >> 24, track->volumeLerp.current >> 16, voiceState->volume); voice->envelopeFlags |= AU_VOICE_ENV_FLAG_VOL_CHANGED; } } @@ -433,18 +448,18 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { player->delay--; if (player->delay <= 0) { while (player->delay == 0) { - op = au_amb_read_next(player); + op = au_mseq_read_next(player); if ((s8)op >= 0) { if (op == 0) { // stop player->mseqReadPos = NULL; player->mseqName = 0; - au_amb_player_stop(manager, player); + au_mseq_player_stop(manager, player); break; } if (op >= 0x78) { // long delay - player->delay = ((op & 7) << 8) + au_amb_read_next(player) + 0x78; + player->delay = ((op & 7) << 8) + au_mseq_read_next(player) + 0x78; } else { //short delay player->delay = op; @@ -456,18 +471,18 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { // op & 0xF0 : command // op & 0xF : track index - arg1 = au_amb_read_next(player); + arg1 = au_mseq_read_next(player); trackIdx = op & 0xF; track = &player->tracks[trackIdx]; switch (op & 0xF0) { case MSEQ_CMD_80_STOP_SOUND: // arg1: sound index - if (player->playState == AMB_PLAYER_PLAYING) { - temp = player->id.all + (trackIdx << 0x10) + (arg1 << 8); + if (player->playState == MSEQ_PLAYER_PLAYING) { + voiceSelector = player->id.all + (trackIdx << 16) + (arg1 << 8); for (i = player->firstVoiceIdx; i < player->lastVoiceIdx; i++) { - if (manager->voiceStates[i - player->firstVoiceIdx].info.all == temp) { - manager->voiceStates[i - player->firstVoiceIdx].info.released = 1; + if (manager->voiceStates[i - player->firstVoiceIdx].info.all == voiceSelector) { + manager->voiceStates[i - player->firstVoiceIdx].info.released = TRUE; voice = &globals->voices[i]; if (voice->priority == manager->priority) { voice->envelopeFlags |= AU_VOICE_ENV_FLAG_KEY_RELEASED; @@ -479,8 +494,8 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { case MSEQ_CMD_90_PLAY_SOUND: // arg1: pitch or drum sound id // arg2: volume - arg2 = au_amb_read_next(player); - if (player->playState == AMB_PLAYER_PLAYING) { + arg2 = au_mseq_read_next(player); + if (player->playState == MSEQ_PLAYER_PLAYING) { // find free voice for (i = player->firstVoiceIdx; i < player->lastVoiceIdx; i++) { voice = &globals->voices[i]; @@ -489,7 +504,7 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { } } if (i >= player->lastVoiceIdx) { - // use another ambience voice + // try stealing a voice from the current player (or one with the same priority) for (i = player->firstVoiceIdx; i < player->lastVoiceIdx; i++) { voice = &globals->voices[i]; if (voice->priority == manager->priority) { @@ -499,7 +514,7 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { } } if (i >= player->lastVoiceIdx) { - // try stealing voice with lower priority + // try stealing a voice from a different player with a lower priority for (i = player->firstVoiceIdx; i < player->lastVoiceIdx; i++) { voice = &globals->voices[i]; if (voice->priority < manager->priority) { @@ -513,14 +528,14 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { isPitchChanged[i - player->firstVoiceIdx] = TRUE; voiceState = &manager->voiceStates[i - player->firstVoiceIdx]; // set playerIndex, trackIndex and tune - voiceState->info.all = player->id.all + (trackIdx << 0x10) + (arg1 << 8); - if (track->flags & 1) { + voiceState->info.all = player->id.all + (trackIdx << 16) + (arg1 << 8); + if (track->flags & MSEQ_TRACK_RESUMABLE) { voiceState->isResumable = TRUE; } else { voiceState->isResumable = FALSE; } if (trackIdx != TRACK_ID_DRUM) { - if (track->flags & 1) { + if (track->flags & MSEQ_TRACK_RESUMABLE) { voiceState->isResumable = TRUE; } else { voiceState->isResumable = FALSE; @@ -528,12 +543,12 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { voiceState->pitch = (arg1 & 0x7F) * 100 - track->instrument->keyBase; voiceState->volume = arg2 & 0x7F; - voice->clientVolume = ((player->fadeVolume >> 0x18) * (track->volumeLerp.current >> 0x10) * voiceState->volume) >> 0xE; - voice->pitchRatio = au_compute_pitch_ratio(voiceState->pitch + (track->tuneLerp.current >> 0x10)) * track->instrument->pitchRatio; + voice->clientVolume = VOL_MULT_3(player->fadeVolume >> 24, track->volumeLerp.current >> 16, voiceState->volume); + voice->pitchRatio = au_compute_pitch_ratio(voiceState->pitch + (track->tuneLerp.current >> 16)) * track->instrument->pitchRatio; voice->pan = track->pan; voice->reverb = track->reverb; voice->instrument = track->instrument; - voice->busId = manager->busId; + voice->busID = manager->busID; voice->envelope.cmdListPress = track->envelope.cmdListPress; voice->envelope.cmdListRelease = track->envelope.cmdListRelease; } else { @@ -542,12 +557,12 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { bankPatch = drum->bankPatch; voice->instrument = au_get_instrument(manager->globals, bankPatch >> 8, bankPatch & 0xFF, &voice->envelope); voiceState->pitch = drum->keyBase - voice->instrument->keyBase; - voiceState->volume = ((arg2 & 0x7F) * drum->volume) >> 7; - voice->clientVolume = ((player->fadeVolume >> 0x18) * (track->volumeLerp.current >> 0x10) * voiceState->volume) >> 0xE; + voiceState->volume = VOL_MULT_2(arg2 & 0x7F, drum->volume); + voice->clientVolume = VOL_MULT_3(player->fadeVolume >> 24, track->volumeLerp.current >> 16, voiceState->volume); voice->pitchRatio = au_compute_pitch_ratio(voiceState->pitch) * voice->instrument->pitchRatio; voice->pan = drum->pan; voice->reverb = drum->reverb; - voice->busId = manager->busId; + voice->busID = manager->busID; } voice->syncFlags = AU_VOICE_SYNC_FLAG_ALL; voice->priority = manager->priority; @@ -560,10 +575,10 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { // lower 7 bits: value if (arg1 & 0x80) { track->pan = arg1 & 0x7F; - temp = player->id.all + (trackIdx << 0x10); + voiceSelector = player->id.all + (trackIdx << 16); for (i = player->firstVoiceIdx; i < player->lastVoiceIdx; i++) { voiceState = &manager->voiceStates[i - player->firstVoiceIdx]; - if ((voiceState->info.all & 0xFFFF0000) == temp) { + if ((voiceState->info.all & 0xFFFF0000) == voiceSelector) { voice = &globals->voices[i]; if (voice->priority == manager->priority && trackIdx != TRACK_ID_DRUM) { voice->pan = track->pan; @@ -572,17 +587,17 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { } } } else { - track->volumeLerp.current = arg1 << 0x18; + track->volumeLerp.current = arg1 << 24; if (track->volumeLerp.current != 0) { track->volumeLerp.current |= 0xFFFFFF; } - temp = player->id.all + (trackIdx << 0x10); + voiceSelector = player->id.all + (trackIdx << 16); for (i = player->firstVoiceIdx; i < player->lastVoiceIdx; i++) { voiceState = &manager->voiceStates[i - player->firstVoiceIdx]; - if ((voiceState->info.all & 0xFFFF0000) == temp) { + if ((voiceState->info.all & 0xFFFF0000) == voiceSelector) { voice = &globals->voices[i]; if (voice->priority == manager->priority) { - voice->clientVolume = ((player->fadeVolume >> 0x18) * (track->volumeLerp.current >> 0x10) * voiceState->volume) >> 0xE; + voice->clientVolume = VOL_MULT_3(player->fadeVolume >> 24, track->volumeLerp.current >> 16, voiceState->volume); if (!isVolumeChanged[i - player->firstVoiceIdx]) { voice->envelopeFlags |= AU_VOICE_ENV_FLAG_VOL_CHANGED; isVolumeChanged[i - player->firstVoiceIdx] = TRUE; @@ -595,7 +610,7 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { case MSEQ_CMD_B0_MULTI: // arg1: sub command // arg2: depends on sub command - arg2 = au_amb_read_next(player); + arg2 = au_mseq_read_next(player); switch (arg1) { case MSEQ_CMD_SUB_66_START_LOOP: // arg2: loop id @@ -604,24 +619,24 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { case MSEQ_CMD_SUB_67_END_LOOP: // arg2 lower bit: loop id // (arg2 & 0x7C) >> 2: loop count - loopId = arg2 & 1; + loopID = arg2 & 1; count = (arg2 & 0x7C) >> 2; if (count != 0) { - if (player->loopCount[loopId] != 0) { - player->loopCount[loopId]--; + if (player->loopCount[loopID] != 0) { + player->loopCount[loopID]--; // if it's the last iteration then don't jump to the loop start - if (player->loopCount[loopId] != 0) { - player->mseqReadPos = player->loopStartPos[loopId]; + if (player->loopCount[loopID] != 0) { + player->mseqReadPos = player->loopStartPos[loopID]; } } else { // first iteration, set loop counter - player->mseqReadPos = player->loopStartPos[loopId]; - player->loopCount[loopId] = count; + player->mseqReadPos = player->loopStartPos[loopID]; + player->loopCount[loopID] = count; } } else { // infinite loop - player->mseqReadPos = player->loopStartPos[loopId]; - player->loopCount[loopId] = 0; + player->mseqReadPos = player->loopStartPos[loopID]; + player->loopCount[loopID] = 0; } break; case MSEQ_CMD_SUB_68_SET_REVERB: @@ -629,7 +644,7 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { break; case MSEQ_CMD_SUB_69_SET_RESUMABLE: if (arg2 == 1) { - track->flags |= 1; + track->flags |= MSEQ_TRACK_RESUMABLE; } break; } @@ -637,7 +652,7 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { case MSEQ_CMD_C0_SET_INSTRUMENT: // arg1: bank // arg2: patch - arg2 = au_amb_read_next(player); + arg2 = au_mseq_read_next(player); if (trackIdx != TRACK_ID_DRUM) { track->instrument = au_get_instrument(manager->globals, arg1, arg2, &track->envelope); } @@ -645,14 +660,14 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { case MSEQ_CMD_E0_TUNING: // arg1: coarse tune // arg2: fine tune - track->tuneLerp.current = (arg1 << 0x18) + (au_amb_read_next(player) << 0x10); - temp = player->id.all + (trackIdx << 0x10); + track->tuneLerp.current = (arg1 << 24) + (au_mseq_read_next(player) << 16); + voiceSelector = player->id.all + (trackIdx << 16); for (i = player->firstVoiceIdx; i < player->lastVoiceIdx; i++) { voiceState = &manager->voiceStates[i - player->firstVoiceIdx]; - if ((voiceState->info.all & 0xFFFF0000) == temp) { + if ((voiceState->info.all & 0xFFFF0000) == voiceSelector) { voice = &globals->voices[i]; if (voice->priority == manager->priority && trackIdx != TRACK_ID_DRUM) { - voice->pitchRatio = au_compute_pitch_ratio(voiceState->pitch + (track->tuneLerp.current >> 0x10)) * track->instrument->pitchRatio; + voice->pitchRatio = au_compute_pitch_ratio(voiceState->pitch + (track->tuneLerp.current >> 16)) * track->instrument->pitchRatio; voice->syncFlags |= AU_VOICE_SYNC_FLAG_PITCH; isPitchChanged[i - player->firstVoiceIdx] = 1; } @@ -672,7 +687,7 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { voice = &globals->voices[i]; if (voice->priority == manager->priority && !isVolumeChanged[i - player->firstVoiceIdx]) { track = &player->tracks[voiceState->info.trackIndex]; - voice->clientVolume = ((player->fadeVolume >> 0x18) * (track->volumeLerp.current >> 0x10) * voiceState->volume) >> 0xE; + voice->clientVolume = VOL_MULT_3(player->fadeVolume >> 24, track->volumeLerp.current >> 16, voiceState->volume); voice->envelopeFlags |= AU_VOICE_ENV_FLAG_VOL_CHANGED; } } @@ -680,12 +695,12 @@ void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* player) { } } -u8 au_amb_read_next(AmbiencePlayer* state) { +u8 au_mseq_read_next(AmbiencePlayer* state) { u8 value = *state->mseqReadPos++; return value; } -void au_amb_player_stop(AmbienceManager* manager, AmbiencePlayer* player) { +void au_mseq_player_stop(AmbienceManager* manager, AmbiencePlayer* player) { AuVoice* voice; AmbienceVoiceState* voiceState; s32 i; @@ -702,13 +717,13 @@ void au_amb_player_stop(AmbienceManager* manager, AmbiencePlayer* player) { } } -void au_amb_save_voices(AmbienceManager* arg0, AmbiencePlayer* player) { +void au_mseq_save_voices(AmbienceManager* manager, AmbiencePlayer* player) { AmbienceSavedVoice* savedVoice = player->savedVoices; u32 numSaved = 0; s32 i; for (i = player->firstVoiceIdx; i < player->lastVoiceIdx; i++) { - AmbienceVoiceState* voiceState = &arg0->voiceStates[i - player->firstVoiceIdx]; + AmbienceVoiceState* voiceState = &manager->voiceStates[i - player->firstVoiceIdx]; if (!voiceState->isResumable) { continue; @@ -726,7 +741,7 @@ void au_amb_save_voices(AmbienceManager* arg0, AmbiencePlayer* player) { } } -void au_amb_restore_voices(AmbienceManager* manager, AmbiencePlayer* player) { +void au_mseq_restore_voices(AmbienceManager* manager, AmbiencePlayer* player) { AuGlobals* globals; AuVoice* voice; AmbienceSavedVoice* savedVoice; @@ -735,7 +750,7 @@ void au_amb_restore_voices(AmbienceManager* manager, AmbiencePlayer* player) { u32 i, j; globals = manager->globals; - if (player->playState == AMB_PLAYER_PLAYING) { + if (player->playState == MSEQ_PLAYER_PLAYING) { for (i = 0; i < ARRAY_COUNT(player->savedVoices); i++) { savedVoice = &player->savedVoices[i]; if (savedVoice->tune != 0) { @@ -762,15 +777,15 @@ void au_amb_restore_voices(AmbienceManager* manager, AmbiencePlayer* player) { if (j < player->lastVoiceIdx) { voiceState = &manager->voiceStates[j - player->firstVoiceIdx]; - voiceState->info.all = player->id.all + (savedVoice->trackIndex << 0x10) + (savedVoice->tune << 8); + voiceState->info.all = player->id.all + (savedVoice->trackIndex << 16) + (savedVoice->tune << 8); voiceState->pitch = (savedVoice->tune & 0x7F) * 100 - track->instrument->keyBase; voiceState->volume = savedVoice->volume & 0x7F; - voice->clientVolume = ((player->fadeVolume >> 0x18) * (track->volumeLerp.current >> 0x10) * voiceState->volume) >> 0xE; - voice->pitchRatio = au_compute_pitch_ratio(voiceState->pitch + (track->tuneLerp.current >> 0x10)) * track->instrument->pitchRatio; + voice->clientVolume = VOL_MULT_3(player->fadeVolume >> 24, track->volumeLerp.current >> 16, voiceState->volume); + voice->pitchRatio = au_compute_pitch_ratio(voiceState->pitch + (track->tuneLerp.current >> 16)) * track->instrument->pitchRatio; voice->pan = track->pan; voice->reverb = track->reverb; voice->instrument = track->instrument; - voice->busId = manager->busId; + voice->busID = manager->busID; voice->envelope.cmdListPress = track->envelope.cmdListPress; voice->envelope.cmdListRelease = track->envelope.cmdListRelease; voice->syncFlags = AU_VOICE_SYNC_FLAG_ALL; diff --git a/src/audio/private.h b/src/audio/private.h index a8f077a9d1..063bad0eb8 100644 --- a/src/audio/private.h +++ b/src/audio/private.h @@ -1,178 +1,123 @@ -// 2BF90.c -void au_amb_manager_init(AmbienceManager* arg0, s8 arg1, s8 reverbType, AuGlobals* arg3); -AuResult au_amb_check_player_index(u32 arg0); -void au_amb_load_tracks_fade(s32 arg0, s32 arg1); -void au_amb_set_disabled(s32 arg0, s32 arg1); -AuResult au_amb_start(s32 arg0, s32 arg1); -void au_amb_fade_setup(AmbiencePlayer* arg0); -void au_amb_pause(s32 arg0, s32 arg1); -void au_amb_resume(s32 arg0, s32 arg1); -void au_amb_stop_quick(s32 arg0); -void au_amb_stop_slow(s32 arg0, s32 arg1); -void au_amb_set_volume(s32 arg0, s32 arg1, s32 arg2); -AuResult au_amb_is_stopped(s32 arg0); -void au_amb_play_sequence(AmbienceManager* arg0, MSEQHeader* mseq, s32 index); -void au_amb_manager_update(AmbienceManager* arg0); -void au_amb_load_track_fade_info(AmbienceManager* manager, AmbiencePlayer* lambda); -void au_amb_player_update(AmbienceManager* manager, AmbiencePlayer* lambda); -u8 au_amb_read_next(AmbiencePlayer* arg0); -void au_amb_player_stop(AmbienceManager* arg0, AmbiencePlayer* arg1); -void au_amb_save_voices(AmbienceManager* arg0, AmbiencePlayer* lambda); -void au_amb_restore_voices(AmbienceManager* manager, AmbiencePlayer* lambda); +#ifndef _AUDIO_PRIVATE_H_ +#define _AUDIO_PRIVATE_H_ -// 2d9a0_len_890.c -void au_update_stopped_voices(AuGlobals* globals); -void au_init_voices(AuGlobals* globals); -void au_update_voices(AuGlobals* globals); -void au_voice_after_volume_change(AuVoice* arg0); -s32 au_voice_get_delta(s32 arg0); -void au_voice_start(AuVoice* voice, EnvelopeData* arg1); -u8 au_voice_step(AuVoice* voice); -void au_voice_set_vol_changed(AuVoice* arg0); - -//2e230_len_2190.c -void func_80052E30(u8 index); -void au_engine_init(s32 outputRate); -static void au_reset_instrument(Instrument* instrument); -static void au_reset_drum_entry(BGMDrumInfo* arg0); -static void au_reset_instrument_entry(BGMInstrumentInfo* arg0); -void au_update_clients_2(void); -void au_update_players_main(void); -void au_syn_update(AuGlobals* globals); -void au_reset_nonfree_voice(AuVoice* arg0, u8 arg1); -void au_reset_voice(AuVoice* arg0, u8 arg1); -f32 au_compute_pitch_ratio(s32 arg0); -void au_fade_init(Fade* fade, s32 time, s32 startValue, s32 endValue); -void au_fade_clear(Fade* fade); -void au_fade_update(Fade* fade); -void au_fade_set_volume(u8 arg0, u16 arg1, s32 arg2); -void func_80053AC8(Fade* fade); -void au_fade_set_vol_scale(Fade* fade, s16 value); -void func_80053B04(Fade* fade, u32 arg1, s32 target); -void func_80053BA8(Fade* fade); -Instrument* au_get_instrument(AuGlobals* globals, u32 bank, u32 patch, EnvelopeData* arg3); -void au_get_bgm_player_and_file(u32 playerIndex, BGMHeader** outCurrentTrackData, BGMPlayer** outPlayer); -void au_get_bgm_player(u32 playerIndex, BGMPlayer** outPlayer); -AuResult au_load_song_files(u32 arg0, BGMHeader* arg1, BGMPlayer* arg2); -AuResult func_80053E58(s32 songID, BGMHeader* arg1); -BGMPlayer* func_80053F64(s32 arg0); -AuResult au_ambient_load(u32 arg0); -BGMPlayer* func_80054248(u8 arg0); -void au_load_INIT(AuGlobals* arg0, s32 romAddr, ALHeap* heap); -AuResult au_fetch_SBN_file(u32 fileIdx, AuFileFormat format, SBNFileEntry* arg2); -void au_load_PER(AuGlobals* globals, s32 romAddr); -void au_load_PRG(AuGlobals* arg0, s32 romAddr); -InstrumentGroup* au_get_BK_instruments(s32 bankGroup, u32 bankIndex); -SoundBank* au_load_BK_to_bank(s32 bkFileOffset, SoundBank* bank, s32 bankIndex, s32 bankGroup); -void au_swizzle_BK_instruments(s32 bkFileOffset, SoundBank* bank, InstrumentGroup instruments, u32 instrumentCount, u8 arg4); -s32* func_80054AA0(s32* bkFileOffset, void* vaddr, s32 bankIndex, s32 bankGroup); -s32 snd_load_BK(s32 bkFileOffset, s32 bankIndex); -void func_80054C84(s32 bankIndex, s32 bankGroup); -void func_80054CE0(s32 arg0, u32 idx); -s32 func_80054D74(s32 arg0, s32 arg1); -void func_80054DA8(u32 arg0); -void au_read_rom(s32 romAddr, void* buffer, u32 size); -void au_memset(void* dst, s32 size, u8 value); -void au_copy_bytes(s8* src, s8* dest, s32 size); -void au_copy_words(void* src, void* dst, s32 size); - -// 25f00_len_940.c -void create_audio_system(void); -//void nuAuPreNMIFuncSet(NUAuPreNMIFunc func); -void nuAuMgr(void* arg); -s32 nuAuDmaCallBack(s32 addr, s32 len, void *state, u8 arg3); -//ALDMAproc nuAuDmaNew(NUDMAState** state); -//void nuAuCleanDMABuffers(void); -//void nuAuPreNMIProc(NUScMsg mesg_type, u32 frameCounter); -//void alLink(ALLink* element, ALLink* after); -//void alUnlink(ALLink* element); - -// 303c0_len_3e10.c +// ---------------------------------------------------------------------------------- +// load_banks.c +// ---------------------------------------------------------------------------------- void au_load_BK_headers(AuGlobals* arg0, ALHeap*); +// ---------------------------------------------------------------------------------- +// mseq_player.c +// ---------------------------------------------------------------------------------- +void au_mseq_manager_init(AmbienceManager* arg0, s8 arg1, s8 reverbType, AuGlobals* arg3); +AuResult au_mseq_check_player_index(u32 arg0); +void au_mseq_load_tracks_fade(s32 arg0, s32 arg1); +void au_mseq_set_disabled(s32 arg0, s32 arg1); +AuResult au_mseq_start(s32 arg0, s32 arg1); +void au_mseq_fade_setup(AmbiencePlayer* arg0); +void au_mseq_pause(s32 arg0, s32 arg1); +void au_mseq_resume(s32 arg0, s32 arg1); +void au_mseq_stop_quick(s32 arg0); +void au_mseq_stop_slow(s32 arg0, s32 arg1); +void au_mseq_set_volume(s32 arg0, s32 arg1, s32 arg2); +AuResult au_mseq_check_stopped(s32 arg0); +void au_mseq_play_sequence(AmbienceManager* arg0, MSEQHeader* mseq, s32 index); +void au_mseq_manager_audio_frame_update(AmbienceManager* arg0); +void au_mseq_load_track_fade_info(AmbienceManager* manager, AmbiencePlayer* lambda); +void au_mseq_player_update(AmbienceManager* manager, AmbiencePlayer* lambda); +u8 au_mseq_read_next(AmbiencePlayer* arg0); +void au_mseq_player_stop(AmbienceManager* arg0, AmbiencePlayer* arg1); +void au_mseq_save_voices(AmbienceManager* arg0, AmbiencePlayer* lambda); +void au_mseq_restore_voices(AmbienceManager* manager, AmbiencePlayer* lambda); + +// ---------------------------------------------------------------------------------- // sfx_player.c +// ---------------------------------------------------------------------------------- void au_sfx_init(SoundManager* manager, u8 arg1, u8 arg2, AuGlobals* arg3, u8 arg4); void au_sfx_load_groups_from_SEF(SoundManager* sndMgr); void au_sfx_clear_queue(SoundManager* manager); void au_sfx_enqueue_event(SoundManager* manager, u32 soundID, s16 volume, s16 pitchShift, u8 pan); -void au_sfx_update_main(SoundManager* manager); +void au_sfx_begin_video_frame(SoundManager* manager); s32 au_sfx_set_reverb_type(SoundManager* manager, s32 arg1); void au_sfx_set_state(SoundManager* manager, s32 arg1); -void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManagerCustomCmdList*); -s16 au_sfx_manager_update(SoundManager* manager); +void au_sfx_try_sound(SoundManager* manager, SoundRequest* request, SoundManagerCustomCmdList*); +s16 au_sfx_manager_audio_frame_update(SoundManager* manager); -// 28910_len_5090.c -void au_bgm_update_main(BGMPlayer* player); +// ---------------------------------------------------------------------------------- +// bgm_player.c +// ---------------------------------------------------------------------------------- +void au_bgm_begin_video_frame(BGMPlayer* player); BGMPlayer* au_bgm_get_player_with_song_name(s32 songString); -AuResult au_bgm_dispatch_player_event(SongUpdateEvent* event); +AuResult au_bgm_process_init_song(SongStartRequest* event); AuResult au_bgm_stop_song(s32 songName); void au_bgm_stop_all(void); AuResult au_bgm_is_song_playing(s32 songName); -s32 func_8004DB28(BGMPlayer* player); -AuResult func_8004DB4C(SongUpdateEvent* s); -AuResult func_8004DC80(s32 songName); -AuResult func_8004DCB8(SongUpdateEvent* update, s32 clearChanged); -AuResult func_8004DE2C(SongUpdateEvent* update); -void func_8004DFD4(AuGlobals* globals); -AuResult func_8004E0F4(SongUpdateEvent* update); +b32 au_bgm_player_is_active(BGMPlayer* player); +AuResult au_bgm_process_fade_out(SongFadeOutRequest* s); +AuResult au_bgm_complete_push(s32 songName); +AuResult au_bgm_process_suspend(SongSuspendRequest* update, b32 skipStop); +AuResult au_bgm_process_resume(SongResumeRequest* update); +void au_bgm_restore_copied_player(AuGlobals* globals); +AuResult au_bgm_adjust_volume(SongStartRequest* update); void au_bgm_player_init(BGMPlayer* player, s32 arg1, s32 arg2, AuGlobals* arg3); void au_bgm_set_effect_indices(BGMPlayer* player, u8* list); void au_bgm_update_fade(BGMPlayer* player); -void func_8004E444(BGMPlayer* arg0); -s32 au_bgm_player_update_main(BGMPlayer* player); +void au_bgm_update_bus_volumes(BGMPlayer* arg0); +s32 au_bgm_player_audio_frame_update(BGMPlayer* player); void au_bgm_player_initialize(BGMPlayer* player); -void func_8004E844(BGMPlayer* player, s32 arg1); -void func_8004E880(BGMPlayer* player, s32 sampleRate, s32 divisor); -void au_bgm_player_read_segment(BGMPlayer* player); -void au_bgm_end_segment_loop(BGMPlayer* player, u32 cmd); -void au_bgm_load_subsegment(BGMPlayer* player, u32 cmd); +void au_bgm_clear_custom_note_press(BGMPlayer* player, s32 arg1); +void au_bgm_set_tick_resolution(BGMPlayer* player, s32 sampleRate, u32 resolution); +void au_bgm_player_read_composition(BGMPlayer* player); +void au_bgm_end_composition_loop(BGMPlayer* player, u32 cmd); +void au_bgm_load_phrase(BGMPlayer* player, u32 cmd); void au_bgm_player_update_stop(BGMPlayer* player); void au_bgm_player_update_playing(BGMPlayer *player); void au_BGMCmd_E0_MasterTempo(BGMPlayer* player, BGMPlayerTrack* track); void au_BGMCmd_E1_MasterVolume(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_E2_MasterPitchShift(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_E2_MasterDetune(BGMPlayer* player, BGMPlayerTrack* track); void au_BGMCmd_E3(BGMPlayer* player, BGMPlayerTrack* track); void au_BGMCmd_E6_MasterEffect(BGMPlayer* player, BGMPlayerTrack* track); void au_BGMCmd_E4_MasterTempoFade(BGMPlayer* player, BGMPlayerTrack* track); void au_BGMCmd_E5_MasterVolumeFade(BGMPlayer* player, BGMPlayerTrack* track); void au_BGMCmd_E8_TrackOverridePatch(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_E9_SubTrackVolume(BGMPlayer* arg0, BGMPlayerTrack* track); -void au_BGMCmd_F6_TrackVolumeFade(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_EA_SubTrackPan(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_EB_SubTrackReverb(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_EC_SegTrackVolume(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_ED_SubTrackCoarseTune(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_EE_SubTrackFineTune(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_EF_SegTrackTune(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_E9_InstrumentVolume(BGMPlayer* arg0, BGMPlayerTrack* track); +void au_BGMCmd_F6_InstrumentVolumeLerp(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_EA_InstrumentPan(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_EB_InstrumentReverb(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_EC_TrackVolume(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_ED_InstrumentCoarseTune(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_EE_InstrumentFineTune(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_EC_TrackDetune(BGMPlayer* player, BGMPlayerTrack* track); void au_BGMCmd_F0_TrackTremolo(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_F1_TrackTremoloSpeed(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_F2_TrackTremoloTime(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_F1_TrackTremoloRate(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_F2_TrackTremoloDepth(BGMPlayer* player, BGMPlayerTrack* track); void au_BGMCmd_F3_TrackTremoloStop(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_F4(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_F5_TrackVoice(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_F7_SubTrackReverbType(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_F4_SubTrackRandomPan(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_F5_UseInstrument(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_F7_ReverbType(BGMPlayer* player, BGMPlayerTrack* track); void au_BGMCmd_FD_EventTrigger(BGMPlayer* player, BGMPlayerTrack* track); void au_BGMCmd_FE_Detour(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_FC_Jump(BGMPlayer* player, BGMPlayerTrack* track); -void au_BGMCmd_FF(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_FC_Branch(BGMPlayer* player, BGMPlayerTrack* track); +void au_BGMCmd_FF_Special(BGMPlayer* player, BGMPlayerTrack* track); void au_BGMCmd_NOP(BGMPlayer* player, BGMPlayerTrack* track); void au_bgm_set_proximity_mix(s32 songName, u32 mix); void au_bgm_set_playback_rate(BGMPlayer* player, f32 arg1); void au_bgm_player_set_detune(BGMPlayer* player, s32 arg1); void au_bgm_change_track_volume(BGMPlayer* player, s32 trackIdx, s16 arg2, u8 arg3); void au_bgm_set_track_volumes(BGMPlayer* player, u8* arg1, s32 arg2); -void func_80050888(BGMPlayer* player, BGMPlayerTrack* track, s32 target, s32 duration); -void func_80050900(BGMPlayer* player); -AuResult func_80050970(SongUpdateEvent* arg0); +void au_bgm_set_prox_mix_fade(BGMPlayer* player, BGMPlayerTrack* track, s32 target, s32 duration); +void au_bgm_reset_all_voices(BGMPlayer* player); +AuResult au_bgm_set_linked_tracks(SongSwapLinkedRequest* arg0); -// 30450.c +// ---------------------------------------------------------------------------------- +// snd_interface.c +// ---------------------------------------------------------------------------------- +void snd_bgm_clear_legacy_commands(BGMPlayer* player); /* -void func_80055050(ALHeap* heap); -void func_80055068(u32 arg0); -*/ -void func_80055110(BGMPlayer* player); -/* -void func_8005513C(u32 arg0); +void snd_notify_engine_ready(ALHeap* heap); +void snd_legacy_sound_dispatch(u32 arg0); +void snd_bgm_clear_legacy_commands(BGMPlayer* player); +void snd_bgm_enqueue_legacy_command(u32 arg0); void snd_start_sound(s32 soundID, u8 volume, u8 pan); void snd_start_sound_with_shift(s32 soundID, u8 volume, u8 pan, s16 pitchShift); void snd_adjust_sound(s32 soundID, u8 volume, u8 pan); @@ -187,115 +132,63 @@ AuResult snd_ambient_stop_slow(s32 arg0, s32 arg1); AuResult snd_ambient_pause(s32 arg0, s32 arg1); AuResult snd_ambient_resume(s32 arg0, s32 arg1); AuResult snd_ambient_is_stopped(s32 arg0); -AuResult snd_ambient_mute(s32 arg0, s32 arg1); +AuResult snd_ambient_fade_out(s32 arg0, s32 arg1); AuResult snd_ambient_set_volume(s32 arg0, s32 arg1, s32 arg2); AuResult snd_ambient_disable(s32 arg0); AuResult snd_ambient_enable(s32 arg0); -void snd_ambient_80055760(s32 arg0); -AuResult snd_ambient_stop_all(s32 arg0); -AuResult snd_ambient_play_only(s32 arg0); -AuResult au_song_load(s32 songID, s32 playerIndex); -AuResult au_song_start(s32 songName); -AuResult au_song_start_variation(s32 songName, s32 variation); -AuResult au_song_stop(s32 songName); -void au_stop_songs(void); -AuResult au_song_is_playing(s32 songName); -AuResult snd_set_song_variation_fade(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume); -AuResult snd_set_song_fade(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume); -AuResult snd_set_song_variation_fade_time(s32 songName, s32 fadeTime, s32 variation); -AuResult func_80055AF0(s32 songName); -AuResult func_80055B28(s32 songName); -AuResult func_80055B80(s32 songName); -AuResult func_80055BB8(s32 songName, s32 fadeTime); -AuResult func_80055BF0(s32 songName); -AuResult func_80055C2C(s32 songName); -AuResult func_80055C64(s32 songName); -AuResult func_80055C94(s32 songName); -AuResult snd_set_song_variation(s32 songName, s32 variation); +void snd_ambient_radio_setup(s32 arg0); +AuResult snd_ambient_radio_stop(s32 arg0); +AuResult snd_ambient_radio_select(s32 arg0); +AuResult snd_song_load(s32 songID, s32 playerIndex); +AuResult snd_song_request_play_default(s32 songName); +AuResult snd_song_request_play(s32 songName, s32 variation); +AuResult snd_song_stop(s32 songName); +void snd_song_stop_all(void); +AuResult snd_song_is_playing(s32 songName); +AuResult snd_song_request_fade_in(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume); +AuResult snd_song_request_fade_in_default(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume); +AuResult snd_song_request_fade_out(s32 songName, s32 fadeTime, AuCallback callback); +AuResult snd_song_push_stop(s32 songName); +AuResult snd_song_request_pop(s32 songName); +AuResult snd_song_request_snapshot(s32 songName); +AuResult snd_song_request_push_fade_out(s32 songName, s32 fadeTime); +AuResult snd_song_request_pause(s32 songName); +AuResult snd_song_request_unpause(s32 songName); +AuResult snd_song_set_volume_quiet(s32 songName); +AuResult snd_song_set_volume_full(s32 songName); +AuResult snd_song_set_linked_mode(s32 songName, b32 mode); */ AuResult snd_song_get_playing_info(s32 songName, BGMHeader** outTrackData, BGMPlayer** outPlayer); /* AuResult snd_song_set_playback_rate(s32 songName, f32 arg1); +*/ AuResult snd_song_set_detune(s32 songName, s32 arg1); -AuResult func_80055DDC(s32 songName, s32 arg1); +AuResult snd_song_set_track_volumes(s32 songName, MusicTrackVols arg1); AuResult snd_song_clear_track_volumes(s32 songName, MusicTrackVols arg1); -u8* func_80055EB4(MusicTrackVols arg0); -static AuResult snd_song_change_track_volume(s32 arg0, u32 arg1, u32 arg2); AuResult snd_song_set_track_vol_mute(s32 arg0, s32 arg1); AuResult snd_song_set_track_vol_quiet(s32 arg0, s32 arg1); AuResult snd_song_set_track_vol_full(s32 arg0, s32 arg1); -void bgm_set_proximity_mix_far(s32 songName, s32 mix); -void bgm_set_proximity_mix_near(s32 songName, s32 mix); -void bgm_set_proximity_mix_full(s32 songName, s32 mix); -void bgm_poll_music_events(u32** arg0, s32* arg1); -void bgm_flush_music_events(void); -void music_event_trigger(s32 arg0, s32 arg1, s32 arg2); -void func_8005610C(void); -*/ -void au_register_callback(AuCallback arg0, s32 arg1); +void snd_song_set_proximity_mix_far(s32 songName, s32 mix); +void snd_song_set_proximity_mix_near(s32 songName, s32 mix); +void snd_song_set_proximity_mix_full(s32 songName, s32 mix); /* -void audio_set_stereo(void); -void audio_set_mono(void); -void func_800561A4(s32 arg0); -void func_800561C4(s32 arg0); -void func_800561E4(s32 arg0); -void enable_sounds(void); -void disable_sounds(void); +void snd_song_poll_music_events(u32** arg0, s32* arg1); +void snd_song_flush_music_events(void); +void snd_song_trigger_music_event(s32 playerID, s32 trackIndex, s32 eventInfo); +void snd_song_clear_music_events(void); +void snd_register_callback(AuCallback func, s32 index); +void snd_set_stereo(void); +void snd_set_mono(void); +void snd_set_bgm_volume(s32 arg0); +void snd_set_sfx_volume(s32 arg0); +void snd_set_sfx_reverb_type(s32 arg0); +void snd_enable_sfx(void); +void snd_disable_sfx(void); */ -// 31650.c -void au_driver_init(AuSynDriver* driver, ALConfig* config); -void au_driver_release(void); -//Acmd* alAudioFrame(Acmd* cmdList, s32* cmdLen, s16* outBuf, s32 outLen); -void au_use_global_volume(void); -void au_set_global_volume(s16 arg0); -s16 au_get_global_volume(void); -void func_80056D5C(u8 arg0); -void au_bus_set_volume(u8 arg0, u16 arg1); -u16 au_bus_get_volume(u8 arg0, u16 arg1); -void au_bus_set_effect(u8 arg0, u8 effectID); -void au_bus_set_fx_params(u8 arg0, s16 arg1, s16 arg2, s32 arg3); -void au_pvoice_set_bus(u8 arg0, s8 arg1); -void au_syn_stop_voice(u8 voiceIdx); -void au_syn_start_voice(u8 index); -void au_syn_start_voice_params(u8 index, u8 reverbType, Instrument* table, f32 pitch, s16 vol, u8 pan, u8 fxMix, s32 delta); -void au_syn_set_wavetable(u8 voiceIdx, Instrument* table); -void au_syn_set_pitch(u8 voiceIdx, f32 pitchRatio); -void au_syn_set_mixer_params(u8 voiceIdx, s16 volume, s32 arg2, u8 arg3, u8 arg4); -void au_syn_set_pan_fxmix(u8 voiceIdx, u8 arg1, u8 arg2); -void au_syn_set_volume_delta(u8 voiceIdx, s16 arg1, s32 arg2); -void au_syn_set_pan(u8 voiceIdx, u8 pan); -void au_syn_set_fxmix(u8 voiceIdx, u8 dryAmt); -s32 au_syn_get_playing(u8 voiceIdx); -s32 au_syn_get_bus(u8 voiceIdx); -f32 au_syn_get_pitch(u8 voiceIdx); -u8 au_syn_get_pan(u8 voiceIdx); -s16 au_syn_get_dryamt(u8 voiceIdx); -s16 au_syn_get_wetamt(u8 voiceIdx); -s32 au_syn_get_volume_left(u8 voiceIdx); -s32 au_syn_get_volume_right(u8 voiceIdx); -void au_set_delay_time(s32 arg0); -void au_delay_left_channel(u8 arg0); -void au_delay_right_channel(u8 arg0); -void au_disable_channel_delay(void); -void au_delay_channel(s16 arg0); -//void alHeapInit(ALHeap* hp, u8* base, s32 len); -//void alCopy(void* src, void* dst, s32 size); -#undef alHeapAlloc -void* alHeapAlloc(ALHeap* heap, s32 arg1, s32 size); - -// 33450.c -Acmd* au_pull_voice(AuPVoice* pvoice, Acmd* cmdBufPos); - -// reverb.c -void func_80058E84(AuFX* fx, u8 mode, ALHeap* heap); -void func_80058F88(AlUnkKappa* kappa, ALHeap* heap); -void func_80059008(AlUnkKappa* kappa, s16 arg1, s16 arg2, s16 fc); -void func_8005904C(AuFX* fx, u8 effectType); -Acmd* au_pull_fx(AuFX* fx, Acmd* cmdBusPos, s16, s16); -s32 au_fx_param_hdl(AuFX* fx, s16 index, s16 paramID, s32 value); - -// sfx.c +// ---------------------------------------------------------------------------------- +// sfx_control.c +// ---------------------------------------------------------------------------------- /* void sfx_reset_door_sounds(void); void sfx_clear_sounds(void); @@ -307,10 +200,10 @@ void sfx_stop_env_sounds(void); */ SoundInstance* sfx_get_env_sound_instance(s32 soundID); /* -void sfx_play_sound_looping(s32 soundId, u8 volume, u8 pan, s16 pitchShift); +void sfx_play_sound_looping(s32 soundID, u8 volume, u8 pan, s16 pitchShift); void sfx_register_looping_sound_at_position(s32 soundID, s32 flags, f32 x, f32 y, f32 z); s32 sfx_adjust_env_sound_pos(s32 soundID, s32 sourceFlags, f32 x, f32 y, f32 z); -void snd_stop_tracking_env_sound_pos(s32 soundID, s32 keepPlaying); +void sfx_stop_tracking_env_sound_pos(s32 soundID, s32 keepPlaying); void sfx_play_sound_with_params(s32 soundID, u8 volume, u8 pan, s16 pitchShift); void sfx_adjust_env_sound_params(s32 soundID, u8 volume, u8 pan, s16 pitchShift); void sfx_stop_sound(s32 soundID); @@ -323,3 +216,5 @@ void sfx_compute_spatialized_sound_params_ignore_depth(f32 x, f32 y, f32 z, s16* void sfx_compute_spatialized_sound_params_with_depth(f32 x, f32 y, f32 z, s16* volume, s16* pan); void sfx_compute_spatialized_sound_params_full(f32 x, f32 y, f32 z, s16* volume, s16* pan, s32 flags); */ + +#endif diff --git a/src/audio/public.h b/src/audio/public.h index 64b29894e1..a16b909953 100644 --- a/src/audio/public.h +++ b/src/audio/public.h @@ -1,11 +1,15 @@ #ifndef _AUDIO_PUBLIC_H_ #define _AUDIO_PUBLIC_H_ -// 30450.c -void func_80055050(ALHeap* heap); -void func_80055068(u32 arg0); -//void func_80055110(BGMPlayer* player); -void func_8005513C(u32 arg0); +#include "audio.h" + +// ---------------------------------------------------------------------------------- +// snd_interface.c +// ---------------------------------------------------------------------------------- +void snd_notify_engine_ready(ALHeap* heap); +void snd_legacy_sound_dispatch(u32 id); +//void snd_bgm_clear_legacy_commands(BGMPlayer* player); +void snd_bgm_enqueue_legacy_command(u32 cmd); void snd_start_sound(s32 soundID, u8 volume, u8 pan); void snd_start_sound_with_shift(s32 soundID, u8 volume, u8 pan, s16 pitchShift); void snd_adjust_sound(s32 soundID, u8 volume, u8 pan); @@ -20,56 +24,84 @@ AuResult snd_ambient_stop_slow(s32 arg0, s32 arg1); AuResult snd_ambient_pause(s32 arg0, s32 arg1); AuResult snd_ambient_resume(s32 arg0, s32 arg1); AuResult snd_ambient_is_stopped(s32 arg0); -AuResult snd_ambient_mute(s32 arg0, s32 arg1); +AuResult snd_ambient_fade_out(s32 arg0, s32 arg1); AuResult snd_ambient_set_volume(s32 arg0, s32 arg1, s32 arg2); AuResult snd_ambient_disable(s32 arg0); AuResult snd_ambient_enable(s32 arg0); -void snd_ambient_80055760(s32 arg0); -AuResult snd_ambient_stop_all(s32 arg0); -AuResult snd_ambient_play_only(s32 arg0); -AuResult au_song_load(s32 songID, s32 playerIndex); -AuResult au_song_start(s32 songName); -AuResult au_song_start_variation(s32 songName, s32 variation); -AuResult au_song_stop(s32 songName); -void au_stop_songs(void); -AuResult au_song_is_playing(s32 songName); -AuResult snd_set_song_variation_fade(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume); -AuResult snd_set_song_fade(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume); -AuResult snd_set_song_variation_fade_time(s32 songName, s32 fadeTime, s32 variation); -AuResult func_80055AF0(s32 songName); -AuResult func_80055B28(s32 songName); -AuResult func_80055B80(s32 songName); -AuResult func_80055BB8(s32 songName, s32 fadeTime); -AuResult func_80055BF0(s32 songName); -AuResult func_80055C2C(s32 songName); -AuResult func_80055C64(s32 songName); -AuResult func_80055C94(s32 songName); -AuResult snd_set_song_variation(s32 songName, s32 variation); +void snd_ambient_radio_setup(s32 arg0); +AuResult snd_ambient_radio_stop(s32 arg0); +AuResult snd_ambient_radio_select(s32 arg0); +/// return value may be either an AuResult error code OR a valid songName +AuResult snd_song_load(s32 songID, s32 playerIndex); +AuResult snd_song_request_play_default(s32 songName); +AuResult snd_song_request_play(s32 songName, s32 variation); +AuResult snd_song_stop(s32 songName); +void snd_song_stop_all(void); +AuResult snd_song_is_playing(s32 songName); +AuResult snd_song_request_fade_in(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume); +AuResult snd_song_request_fade_in_default(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume); +AuResult snd_song_request_fade_out(s32 songName, s32 fadeTime, AuCallback callback); +AuResult snd_song_push_stop(s32 songName); +AuResult snd_song_request_pop(s32 songName); +AuResult snd_song_request_snapshot(s32 songName); +AuResult snd_song_request_push_fade_out(s32 songName, s32 fadeTime); +AuResult snd_song_request_pause(s32 songName); +AuResult snd_song_request_unpause(s32 songName); +AuResult snd_song_set_volume_quiet(s32 songName); +AuResult snd_song_set_volume_full(s32 songName); +AuResult snd_song_set_linked_mode(s32 songName, b32 mode); //AuResult snd_song_get_playing_info(s32 songName, BGMHeader** outTrackData, BGMPlayer** outPlayer); AuResult snd_song_set_playback_rate(s32 songName, f32 arg1); +/* AuResult snd_song_set_detune(s32 songName, s32 arg1); AuResult snd_song_set_track_volumes(s32 songName, MusicTrackVols arg1); AuResult snd_song_clear_track_volumes(s32 songName, MusicTrackVols arg1); AuResult snd_song_set_track_vol_mute(s32 arg0, s32 arg1); AuResult snd_song_set_track_vol_quiet(s32 arg0, s32 arg1); AuResult snd_song_set_track_vol_full(s32 arg0, s32 arg1); -void bgm_set_proximity_mix_far(s32 songName, s32 mix); -void bgm_set_proximity_mix_near(s32 songName, s32 mix); -void bgm_set_proximity_mix_full(s32 songName, s32 mix); -void bgm_poll_music_events(u32** arg0, s32* arg1); -void bgm_flush_music_events(void); -void bgm_trigger_music_event(s32 arg0, s32 arg1, s32 arg2); -void bgm_clear_music_events(void); -//void func_80056144(AuCallback arg0, s32 arg1); -void audio_set_stereo(void); -void audio_set_mono(void); -void func_800561A4(s32 arg0); -void func_800561C4(s32 arg0); -void func_800561E4(s32 arg0); -void enable_sounds(void); -void disable_sounds(void); +void snd_song_set_proximity_mix_far(s32 songName, s32 mix); +void snd_song_set_proximity_mix_near(s32 songName, s32 mix); +void snd_song_set_proximity_mix_full(s32 songName, s32 mix); +*/ +void snd_song_poll_music_events(u32** arg0, s32* arg1); +void snd_song_flush_music_events(void); +void snd_song_trigger_music_event(s32 playerID, s32 trackIndex, s32 eventInfo); +void snd_song_clear_music_events(void); +//void snd_register_callback(AuCallback func, s32 index); +void snd_set_stereo(void); +void snd_set_mono(void); +void snd_set_bgm_volume(VolumeLevels volume); +void snd_set_sfx_volume(VolumeLevels volume); +void snd_set_sfx_reverb_type(s32 arg0); +void snd_enable_sfx(void); +void snd_disable_sfx(void); -// sfx.h +// ---------------------------------------------------------------------------------- +// bgm_control.c +// ---------------------------------------------------------------------------------- +AuResult bgm_set_track_volumes(s32 playerIndex, s16 trackVolSet); +AuResult bgm_clear_track_volumes(s32 playerIndex, s16 trackVolSet); +AuResult bgm_set_linked_mode(s32 playerIndex, b16 mode); +void bgm_quiet_max_volume(void); +void bgm_reset_max_volume(void); +void bgm_reset_volume(void); +s32 bgm_init_music_players(void); +s32 bgm_set_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeOutTime, s16 volume); +void bgm_set_battle_song(s32, s32); +void bgm_push_battle_song(void); +s32 bgm_adjust_proximity(s32 playerIndex, s32 arg1, s16 arg2); +b32 bgm_fade_in_song(s32 playerIndex, s32 songID, s32 variation, s32 fadeInTime, s16 arg4, s16 arg5); + +void bgm_update_music_control(void); +b32 bgm_is_any_song_playing(void); +void bgm_reset_sequence_players(void); +void bgm_pop_song(void); +void bgm_push_song(s32 songID, s32 variation); +void bgm_pop_battle_song(void); + +// ---------------------------------------------------------------------------------- +// sfx_control.c +// ---------------------------------------------------------------------------------- void sfx_reset_door_sounds(void); void sfx_clear_sounds(void); void sfx_clear_env_sounds(s16 playSounds); @@ -78,10 +110,10 @@ void sfx_set_reverb_mode(s32 arg0); s32 sfx_get_reverb_mode(void); void sfx_stop_env_sounds(void); //SoundInstance* sfx_get_env_sound_instance(s32 soundID); -void sfx_play_sound_looping(s32 soundId, u8 volume, u8 pan, s16 pitchShift); +void sfx_play_sound_looping(s32 soundID, u8 volume, u8 pan, s16 pitchShift); void sfx_register_looping_sound_at_position(s32 soundID, s32 flags, f32 x, f32 y, f32 z); s32 sfx_adjust_env_sound_pos(s32 soundID, s32 sourceFlags, f32 x, f32 y, f32 z); -void snd_stop_tracking_env_sound_pos(s32 soundID, s32 keepPlaying); +void sfx_stop_tracking_env_sound_pos(s32 soundID, s32 keepPlaying); void sfx_play_sound_with_params(s32 soundID, u8 volume, u8 pan, s16 pitchShift); void sfx_adjust_env_sound_params(s32 soundID, u8 volume, u8 pan, s16 pitchShift); void sfx_stop_sound(s32 soundID); diff --git a/src/audio/sfx.c b/src/audio/sfx_control.c similarity index 98% rename from src/audio/sfx.c rename to src/audio/sfx_control.c index e3d899891e..1b9ab349a6 100644 --- a/src/audio/sfx.c +++ b/src/audio/sfx_control.c @@ -350,7 +350,7 @@ void sfx_update_env_sound_params(void) { } void sfx_set_reverb_mode(s32 mode) { - func_800561E4(mode); + snd_set_sfx_reverb_type(mode); SfxReverbMode = mode; } @@ -444,7 +444,7 @@ s32 sfx_adjust_env_sound_pos(s32 soundID, s32 sourceFlags, f32 x, f32 y, f32 z) return TRUE; } -void snd_stop_tracking_env_sound_pos(s32 soundID, s32 keepPlaying) { +void sfx_stop_tracking_env_sound_pos(s32 soundID, s32 keepPlaying) { SoundInstance* sound = sfx_get_env_sound_instance(soundID); if (sound != NULL) { @@ -462,12 +462,11 @@ void sfx_play_sound_with_params(s32 soundID, u8 volume, u8 pan, s16 pitchShift) return; } - if (soundID & SOUND_TYPE_SPECIAL) { + if (soundID & SOUND_ID_TYPE_FLAG) { s32 soundIndex = soundID & 0xFF; - s32 soundType = (soundID & 0x70000000) >> 0x1C; + s32 soundType = (soundID & SOUND_ID_TYPE_MASK) >> 0x1C; switch (soundType) { case SOUND_TYPE_LOOPING: - // 0x8xxxxxxx sfx_play_sound_looping(LoopingSounds[soundIndex], volume, pan, pitchShift); return; case SOUND_TYPE_EXIT_DOOR: @@ -477,7 +476,6 @@ void sfx_play_sound_with_params(s32 soundID, u8 volume, u8 pan, s16 pitchShift) soundID = OpenCloseSounds[gCurrentRoomDoorSounds][soundIndex]; break; case SOUND_TYPE_ALTERNATING: - // 0xBxxxxxxx alternatingSet = &AlternatingSounds[soundIndex]; if (alternatingSet->curIndex >= alternatingSet->soundCount) { alternatingSet->curIndex = 0; @@ -492,7 +490,7 @@ void sfx_play_sound_with_params(s32 soundID, u8 volume, u8 pan, s16 pitchShift) void sfx_adjust_env_sound_params(s32 soundID, u8 volume, u8 pan, s16 pitchShift) { SoundInstance* sound; - if (soundID & SOUND_TYPE_SPECIAL) { + if (soundID & SOUND_ID_TYPE_FLAG) { sound = sfx_get_env_sound_instance(LoopingSounds[soundID & 0xFFFF]); if (sound != NULL) { sound->volume = volume; @@ -507,8 +505,8 @@ void sfx_adjust_env_sound_params(s32 soundID, u8 volume, u8 pan, s16 pitchShift) void sfx_stop_sound(s32 soundID) { s32 sound = soundID; - if (sound & SOUND_TYPE_SPECIAL) { - snd_stop_tracking_env_sound_pos(LoopingSounds[sound & 0xFFFF], FALSE); + if (sound & SOUND_ID_TYPE_FLAG) { + sfx_stop_tracking_env_sound_pos(LoopingSounds[sound & 0xFFFF], FALSE); } else { snd_stop_sound(sound); } @@ -533,7 +531,7 @@ void sfx_play_sound_at_npc(s32 soundID, s32 flags, s32 npcID) { } void sfx_play_sound_at_position(s32 soundID, s32 flags, f32 posX, f32 posY, f32 posZ) { - if ((soundID & 0xF0000000) == SOUND_TYPE_SPECIAL) { + if ((soundID & (SOUND_ID_TYPE_FLAG | SOUND_ID_TYPE_MASK)) == (SOUND_ID_TYPE_FLAG | SOUND_TYPE_LOOPING)) { s32 id = LoopingSounds[soundID & 0xFFFF]; sfx_register_looping_sound_at_position(id, flags, posX, posY, posZ); @@ -589,8 +587,8 @@ void sfx_get_spatialized_sound_params(f32 x, f32 y, f32 z, s16* volume, s16* pan if (*pan < 1) { *pan = 1; } - if (*pan > 127) { - *pan = 127; + if (*pan > AU_PAN_MAX) { + *pan = AU_PAN_MAX; } } diff --git a/src/audio/sfx_player.c b/src/audio/sfx_player.c index 697a8a0526..ce9362610c 100644 --- a/src/audio/sfx_player.c +++ b/src/audio/sfx_player.c @@ -1,18 +1,22 @@ -#include "common.h" #include "audio.h" +#include "audio/core.h" -static void au_sfx_play_sound(SoundManager* manager, SoundPlayer* player, s8* readPos, SoundSFXEntry* sfxEntry, s32 arg4, s32 arg5); +static void au_sfx_play_sound(SoundManager* manager, SoundPlayer* player, s8* readPos, SoundRequest* request, s32 priority, s32 exclusiveID); static void au_sfx_set_triggers(SoundManager* manager, u32 soundID); static void au_sfx_stop_by_id(SoundManager* manager, u32 soundID); static void au_sfx_stop_by_exlusive_id(SoundManager* manager, u32 soundID); -static void au_sfx_set_modifiers(SoundManager* manager, SoundSFXEntry* sfxEntry); -static void au_sfx_set_player_modifiers(SoundPlayer* player, SoundSFXEntry* sfxEntry); +static void au_sfx_set_modifiers(SoundManager* manager, SoundRequest* request); +static void au_sfx_set_player_modifiers(SoundPlayer* player, SoundRequest* request); static void au_sfx_update_basic(SoundManager* manager, SoundPlayer* player, AuVoice* arg2, u8 arg3); static s16 au_sfx_get_scaled_volume(SoundManager* manager, SoundPlayer* player); static void au_sfx_update_sequence(SoundManager* manager, SoundPlayer* player, AuVoice* arg2, u8 arg3); -static void snd_set_voice_volume(AuVoice* voice, SoundManager* manager, SoundPlayer* player); +static void au_sfx_set_voice_volume(AuVoice* voice, SoundManager* manager, SoundPlayer* player); static u8 au_sfx_get_random_pan(s32 arg0, s32 arg1, s32 arg2); +static s32 au_sfx_get_random_pitch(s32 arg0, s32 arg1, s32 arg2); +static u8 au_sfx_get_random_vol(s32 arg0, s32 arg1, s32 arg2); +static void au_sfx_reset_players(SoundManager* manager); + static void au_SEFCmd_00_SetVolume(SoundManager* manager, SoundPlayer* player); static void au_SEFCmd_01_SetPan(SoundManager* manager, SoundPlayer* player); static void au_SEFCmd_02_SetInstrument(SoundManager* manager, SoundPlayer* player); @@ -34,38 +38,42 @@ static void au_SEFCmd_11_Restart(SoundManager* manager, SoundPlayer* player); static void au_SEFCmd_12_NOP(SoundManager* manager, SoundPlayer* player); static void au_SEFCmd_13_SetRandomPitch(SoundManager* manager, SoundPlayer* player); static void au_SEFCmd_14_SetRandomVelocity(SoundManager* manager, SoundPlayer* player); -static void au_SEFCmd_15_SetUnkA3(SoundManager* manager, SoundPlayer* player); +static void au_SEFCmd_15_SetRandomUnused(SoundManager* manager, SoundPlayer* player); static void au_SEFCmd_16_SetEnvelopePress(SoundManager* manager, SoundPlayer* player); static void au_SEFCmd_17_PlaySound(SoundManager* manager, SoundPlayer* player); static void au_SEFCmd_18_SetAlternativeVolume(SoundManager* manager, SoundPlayer* player); -static s32 au_sfx_get_random_pitch(s32 arg0, s32 arg1, s32 arg2); -static u8 au_sfx_get_random_vol(s32 arg0, s32 arg1, s32 arg2); -static void au_sfx_reset_players(SoundManager* manager); +typedef struct MusicTriggeredSound { + /* 0x00 */ u16 sound; + /* 0x02 */ u16 prereq; // when nonzero, sound may only play if this is already playing + /* 0x04 */ u8 flags; +} MusicTriggeredSound; // size = 0x5 + +// This flag field prefixes every SEF stream: two low bits choose a mode +// (BASIC vs SEQUENCE vs COMPACT) and extra bits lock parameters while playing. enum SoundEffectParamFlags { // 8 bytes: flags, instrument, volume, pan, reverb, pitch, randomPitch - SFX_PARAM_MODE_ADVANCED = 0x00000000, + SFX_PARAM_MODE_BASIC = 0x00000000, // arbitrary sequence of commands SFX_PARAM_MODE_SEQUENCE = 0x00000001, // 4 bytes: flags, instrument, volume and randomPitch - SFX_PARAM_MODE_BASIC = 0x00000002, - SFX_PARAM_FLAG_MODE = 0x00000003, + SFX_PARAM_MODE_COMPACT = 0x00000002, + SFX_PARAM_MODE_MASK = 0x00000003, // when flags below are set, these params can't be changed from api functions like sfx_play_sound_with_params - SFX_PARAM_FLAG_VOLUME = 0x00000004, - SFX_PARAM_FLAG_PAN = 0x00000008, - SFX_PARAM_FLAG_PITCH = 0x00000010, - // prevents from changing reverb amount via SetReverb command - SFX_PARAM_FLAG_FIXED_REVERB = 0x00000020 + SFX_PARAM_LOCK_VOLUME = 0x00000004, + SFX_PARAM_LOCK_PAN = 0x00000008, + SFX_PARAM_LOCK_PITCH = 0x00000010, + SFX_PARAM_LOCK_REVERB = 0x00000020 // ignored SetReverb command }; -u16 DummyInstrumentPredictor[32] = { +s16 DummyInstrumentCodebook[32] = { 0xF803, 0x0125, 0x07D0, 0xFDBC, 0xF886, 0x0355, 0x06FC, 0xFBAB, 0xFEDA, 0xF82D, 0x0245, 0x077D, 0xFCA9, 0xF901, 0x0456, 0x065D, 0xFC33, 0xFBB2, 0xFCEF, 0xFE94, 0xFFD8, 0x0080, 0x00A4, 0x007D, 0x090E, 0x0673, 0x02FF, 0x0053, 0xFEF2, 0xFEA7, 0xFEF9, 0xFF7B }; -u8 DummyInstrumentBase[190] = { +u8 DummyInstrumentWavData[190] = { 0xB1, 0x01, 0x11, 0x10, 0x00, 0xFF, 0xFE, 0x34, 0xBB, 0x90, 0xE2, 0x1E, 0x00, 0xFB, 0x10, 0xEF, 0xF2, 0xD1, 0x80, 0xC4, 0xB3, 0xB1, 0xD3, 0xCF, 0xD1, 0xFD, 0xFE, 0x80, 0x1D, 0x2D, 0x3D, 0x3B, 0x2C, 0x3B, 0xFC, 0x1D, 0x80, 0xDE, 0xF0, 0xD0, 0xD3, 0xD2, 0xB3, 0xD1, 0xF4, 0x80, 0xA2, 0x03, @@ -118,10 +126,10 @@ s32 CUSTOM_ECHO_PARAMS_3[] = { 0, 13, 20000, 0, 0x7FFF, 0, 0, 0x7FFF }; -AlUnkGemini D_80078370[] = { +MusicTriggeredSound MusicSounds[] = { { - .sound1 = SOUND_SHORT_CLAP, - .sound2 = SOUND_LRAW_CHEERING, + .sound = SOUND_SHORT_CLAP, + .prereq = SOUND_LRAW_CHEERING, .flags = 1 } }; @@ -211,7 +219,7 @@ void (*SefCmdHandlers[])(SoundManager*, SoundPlayer*) = { au_SEFCmd_12_NOP, au_SEFCmd_13_SetRandomPitch, au_SEFCmd_14_SetRandomVelocity, - au_SEFCmd_15_SetUnkA3, + au_SEFCmd_15_SetRandomUnused, au_SEFCmd_16_SetEnvelopePress, au_SEFCmd_17_PlaySound, au_SEFCmd_18_SetAlternativeVolume @@ -224,41 +232,41 @@ u8 BlankSEFData[] = { }; // -------------------------------------------- -// the following are only referenced in audio/28910_len_5090 +// the following are only referenced in audio/bgm_player void (*SeqCmdHandlers[])(BGMPlayer*, BGMPlayerTrack*) = { au_BGMCmd_E0_MasterTempo, au_BGMCmd_E1_MasterVolume, - au_BGMCmd_E2_MasterPitchShift, + au_BGMCmd_E2_MasterDetune, au_BGMCmd_E3, au_BGMCmd_E4_MasterTempoFade, au_BGMCmd_E5_MasterVolumeFade, au_BGMCmd_E6_MasterEffect, au_BGMCmd_NOP, au_BGMCmd_E8_TrackOverridePatch, - au_BGMCmd_E9_SubTrackVolume, - au_BGMCmd_EA_SubTrackPan, - au_BGMCmd_EB_SubTrackReverb, - au_BGMCmd_EC_SegTrackVolume, - au_BGMCmd_ED_SubTrackCoarseTune, - au_BGMCmd_EE_SubTrackFineTune, - au_BGMCmd_EF_SegTrackTune, + au_BGMCmd_E9_InstrumentVolume, + au_BGMCmd_EA_InstrumentPan, + au_BGMCmd_EB_InstrumentReverb, + au_BGMCmd_EC_TrackVolume, + au_BGMCmd_ED_InstrumentCoarseTune, + au_BGMCmd_EE_InstrumentFineTune, + au_BGMCmd_EC_TrackDetune, au_BGMCmd_F0_TrackTremolo, - au_BGMCmd_F1_TrackTremoloSpeed, - au_BGMCmd_F2_TrackTremoloTime, + au_BGMCmd_F1_TrackTremoloRate, + au_BGMCmd_F2_TrackTremoloDepth, au_BGMCmd_F3_TrackTremoloStop, - au_BGMCmd_F4, - au_BGMCmd_F5_TrackVoice, - au_BGMCmd_F6_TrackVolumeFade, - au_BGMCmd_F7_SubTrackReverbType, + au_BGMCmd_F4_SubTrackRandomPan, + au_BGMCmd_F5_UseInstrument, + au_BGMCmd_F6_InstrumentVolumeLerp, + au_BGMCmd_F7_ReverbType, au_BGMCmd_NOP, au_BGMCmd_NOP, au_BGMCmd_NOP, au_BGMCmd_NOP, - au_BGMCmd_FC_Jump, + au_BGMCmd_FC_Branch, au_BGMCmd_FD_EventTrigger, au_BGMCmd_FE_Detour, - au_BGMCmd_FF, + au_BGMCmd_FF_Special, }; s8 SeqCmdArgCounts[] = { @@ -268,13 +276,13 @@ s8 SeqCmdArgCounts[] = { 0, 0, 0, 0, 3, 3, 3, 3 }; -s8 BgmDivisors[] = { +s8 BgmTicksRates[] = { 48, 24, 32, 40, 48, 56, 64, 48, 0, 0, 0, 0, 0, 0, 0, 0 }; // -------------------------------------------- -// the following are only referenced in audio/2BF90 +// the following are only referenced in audio/mseq_player u8 BlankMseqData[] = { 0x00, 0x00, 0x00, 0x00, @@ -284,10 +292,20 @@ u8 BlankMseqData[] = { }; // -------------------------------------------- -// the following are only referenced in audio/2e230_len_2190 +// the following are only referenced in audio/core/engine -s16 D_80078530[] = { - 0x0000, 0x0200, 0x0800, 0x1200, 0x2000, 0x3200, 0x4800, 0x6200, 0x8000 +/// Volume steps use squared values so each level represents linear power increase, +/// matching loudness perception. This makes each step sound evenly spaced. +u16 PerceptualVolumeLevels[] = { + [VOL_LEVEL_MUTE] 0, // 0.0 % + [VOL_LEVEL_1] AU_MAX_BUS_VOLUME * SQ(0.125), // 1.5625 % + [VOL_LEVEL_2] AU_MAX_BUS_VOLUME * SQ(0.250), // 6.25 % + [VOL_LEVEL_3] AU_MAX_BUS_VOLUME * SQ(0.375), // 14.0625 % + [VOL_LEVEL_4] AU_MAX_BUS_VOLUME * SQ(0.500), // 25.0 % + [VOL_LEVEL_5] AU_MAX_BUS_VOLUME * SQ(0.625), // 39.0625 % + [VOL_LEVEL_6] AU_MAX_BUS_VOLUME * SQ(0.750), // 56.25 % + [VOL_LEVEL_7] AU_MAX_BUS_VOLUME * SQ(0.875), // 76.5625 % + [VOL_LEVEL_FULL] AU_MAX_BUS_VOLUME, // 100.0 % }; // TODO: figure out how to make struct properly @@ -312,9 +330,9 @@ u8 EnvelopeReleaseDefaultFast[] = { }; // -------------------------------------------- -// the following are only referenced in 28910_len_5090 +// the following are only referenced in audio/bgm_player -s8 D_80078558[] = { +s8 BgmCustomEnvLookup[] = { 0x5E, 0x5D, 0x5C, 0x5B, 0x5A, 0x58, 0x56, 0x53, 0x51, 0x4F, 0x4A, 0x45, 0x40, 0x3B, 0x37, 0x35, 0x33, 0x31, 0x2F, 0x2D, 0x2B, 0x29, 0x27, 0x26, @@ -323,7 +341,7 @@ s8 D_80078558[] = { }; // -------------------------------------------- -// the following are only referenced in audio/2e230_len_2190 +// the following are only referenced in audio/core/engine u8 AmbientSoundIDtoMSEQFileIndex[] = { 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, @@ -333,10 +351,10 @@ u8 AmbientSoundIDtoMSEQFileIndex[] = { }; // -------------------------------------------- -// the following are only referenced in audio/2d9a0_len_890 +// the following are only referenced in audio/voice_envelope // convert seconds to microseconds and round to number multiple to 5750 -#define SEC(x) ((s32)(x * 1000000) / AU_5750 * AU_5750) +#define SEC(x) (((s32)(x * 1000000) / AU_FRAME_USEC) * AU_FRAME_USEC) s32 AuEnvelopeIntervals[] = { SEC(60), SEC(55), SEC(50), SEC(45), SEC(40), SEC(35), SEC(30), SEC(27.5), SEC(25), SEC(22.5), @@ -347,18 +365,25 @@ s32 AuEnvelopeIntervals[] = { SEC(0.65), SEC(0.6), SEC(0.55), SEC(0.5), SEC(0.45), SEC(0.4), SEC(0.375), SEC(0.35), SEC(0.325), SEC(0.3), SEC(0.29), SEC(0.28), SEC(0.27), SEC(0.26), SEC(0.25), SEC(0.24), SEC(0.23), SEC(0.22), SEC(0.21), SEC(0.2), SEC(0.19), SEC(0.18), SEC(0.17), SEC(0.16), SEC(0.15), SEC(0.14), SEC(0.13), SEC(0.12), SEC(0.11), SEC(0.1), - 16 * AU_5750, 14 * AU_5750, 12 * AU_5750, 11 * AU_5750, 10 * AU_5750, - 9 * AU_5750, 8 * AU_5750, 7 * AU_5750, 6 * AU_5750, 5 * AU_5750, - 4 * AU_5750, 3 * AU_5750, 2 * AU_5750, 1 * AU_5750, 0, 0, 0, 0, 0, 0, + 16 * AU_FRAME_USEC, 14 * AU_FRAME_USEC, 12 * AU_FRAME_USEC, 11 * AU_FRAME_USEC, 10 * AU_FRAME_USEC, + 9 * AU_FRAME_USEC, 8 * AU_FRAME_USEC, 7 * AU_FRAME_USEC, 6 * AU_FRAME_USEC, 5 * AU_FRAME_USEC, + 4 * AU_FRAME_USEC, 3 * AU_FRAME_USEC, 2 * AU_FRAME_USEC, 1 * AU_FRAME_USEC, 0, 0, 0, 0, 0, 0, }; #undef SEC // -------------------------------------------- -// the following are only referenced in audio/2e230_len_2190 +// the following are only referenced in audio/core/engine f32 AlTuneScaling[] = { - // TUNE_SCALING_ARR_AMPLIFY_FINE + // --------------------------------------------------------- + // TUNE_SCALING_ARR_AMPLIFY_FINE (offset 0, size 128) + // --------------------------------------------------------- + // Pitch scaling for fine positive tuning. + // Each increment represents a pitch increase of 1 cent (1/100 semitone). + // + // Formula: 2^((i / 100) / 12) = 2^(i / 1200) + // i.e., 1 semitone of amplification at i = 100 (2^(1/12) ~ 1.059463) 1.00000000f, 1.00057781f, 1.00115597f, 1.00173450f, 1.00231326f, 1.00289237f, 1.00347185f, 1.00405169f, 1.00463188f, 1.00521231f, 1.00579309f, 1.00637424f, 1.00695574f, 1.00753760f, 1.00811982f, 1.00870228f, 1.00928509f, 1.00986826f, 1.01045179f, 1.01103568f, 1.01161981f, 1.01220429f, 1.01278913f, 1.01337433f, @@ -375,12 +400,24 @@ f32 AlTuneScaling[] = { 1.06191576f, 1.06252933f, 1.06314325f, 1.06375754f, 1.06437218f, 1.06498718f, 1.06560254f, 1.06621826f, 1.06683433f, 1.06745076f, 1.06806755f, 1.06868470f, 1.06930220f, 1.06992006f, 1.07053828f, 1.07115686f, 1.07177579f, 1.07239509f, 1.07301474f, 1.07363474f, 1.07425511f, 1.07487583f, 1.07549691f, 1.07611835f, - // TUNE_SCALING_ARR_AMPLIFY_COARSE + // --------------------------------------------------------- + // TUNE_SCALING_ARR_AMPLIFY_COARSE (offset 128, size 32) + // --------------------------------------------------------- + // Pitch scaling for coarse positive tuning. + // Each increment represents a pitch increase of 128 cents (1.28 semitones) + // + // Formula: 2^((128 * i / 100) / 12) 1.00000000f, 1.07674015f, 1.15936935f, 1.24833953f, 1.34413731f, 1.44728661f, 1.55835164f, 1.67793977f, 1.80670512f, 1.94535196f, 2.09463859f, 2.25538135f, 2.42845964f, 2.61482000f, 2.81548166f, 3.03154206f, 3.26418304f, 3.51467681f, 3.78439355f, 4.07480860f, 4.38750982f, 4.72420788f, 5.08674431f, 5.47710180f, 5.89741516f, 6.34998369f, 6.83728218f, 7.36197615f, 7.92693520f, 8.53524971f, 9.19024563f, 9.89550686f, - // TUNE_SCALING_ARR_ATTENUATE_FINE + // --------------------------------------------------------- + // TUNE_SCALING_ARR_ATTENUATE_FINE (offset 160, size 128) + // --------------------------------------------------------- + // Pitch scaling for fine downward tuning. + // Each increment represents a pitch decrease of 1 cent (1/100 semitone). + // + // Formula: 2^(-(i / 100) / 12) 1.00000000f, 0.99942255f, 0.99884546f, 0.99826866f, 0.99769223f, 0.99711609f, 0.99654031f, 0.99596488f, 0.99538976f, 0.99481499f, 0.99424052f, 0.99366641f, 0.99309260f, 0.99251914f, 0.99194598f, 0.99137318f, 0.99080074f, 0.99022859f, 0.98965681f, 0.98908532f, 0.98851418f, 0.98794335f, 0.98737288f, 0.98680270f, @@ -397,7 +434,13 @@ f32 AlTuneScaling[] = { 0.94169647f, 0.94115269f, 0.94060922f, 0.94006604f, 0.93952322f, 0.93898070f, 0.93843848f, 0.93789655f, 0.93735498f, 0.93681371f, 0.93627274f, 0.93573207f, 0.93519175f, 0.93465173f, 0.93411201f, 0.93357259f, 0.93303353f, 0.93249476f, 0.93195629f, 0.93141812f, 0.93088025f, 0.93034273f, 0.92980552f, 0.92926860f, - // TUNE_SCALING_ARR_ATTENUATE_COARSE + // --------------------------------------------------------- + // TUNE_SCALING_ARR_ATTENUATE_COARSE (offset 288, size 128) + // --------------------------------------------------------- + // Pitch scaling for coarse downward tuning. + // Each increment represents a pitch decrease of 128 cents (1.28 semitones) + // + // Formula: 2^(-(128 * i / 100) / 12) 1.00000000f, 0.92873198f, 0.86254311f, 0.80107135f, 0.74398059f, 0.69095856f, 0.64171529f, 0.59598154f, 0.55350709f, 0.51405972f, 0.47742370f, 0.44339865f, 0.41179851f, 0.38245043f, 0.35519394f, 0.32987997f, 0.30637008f, 0.28453568f, 0.26425737f, 0.24542427f, 0.22793336f, 0.21168900f, 0.19660234f, 0.18259089f, @@ -420,26 +463,28 @@ extern s32* AU_FX_CUSTOM_PARAMS[0]; // points to 80078290 void (*CurrentSefCmdHandler)(SoundManager*, SoundPlayer*); -void au_sfx_init(SoundManager* manager, u8 priority, u8 busId, AuGlobals* globals, u8 minVoiceIdx) { - u32 i; +void au_sfx_init(SoundManager* manager, u8 priority, u8 busID, AuGlobals* globals, u8 minVoiceIdx) { + // odd choice of parameters, perhaps chosen for a very large LCM (67934687500)? + // gives a pseudo-random sfx update pattern s32 c = 434782; + u32 i; manager->globals = globals; manager->nextUpdateStep = 312500; manager->nextUpdateCounter = c; manager->nextUpdateInterval = c; manager->priority = priority; - manager->busId = busId; + manager->busID = busID; if (minVoiceIdx > 16) { - manager->sfxPlayerSelector = 16; + manager->firstVoice = 16; } else { - manager->sfxPlayerSelector = minVoiceIdx; + manager->firstVoice = minVoiceIdx; } - manager->busVolume = 0x8000; - manager->baseVolume = 0x8000; - manager->playCounter = 0; + manager->busVolume = AU_MAX_BUS_VOLUME; + manager->baseVolume = AU_MAX_BUS_VOLUME; + manager->frameCounter = 0; manager->randomValue = 0; for (i = 0; i < ARRAY_COUNT(manager->players); i++) { @@ -457,18 +502,18 @@ void au_sfx_init(SoundManager* manager, u8 priority, u8 busId, AuGlobals* global player->envelopePreset = 0; player->playVelocity = 0; player->exclusiveID = 0; - player->cmdList_mode2[0] = 0; - player->cmdList_mode2[1] = 0; - player->cmdList_mode2[2] = 0; - player->cmdList_mode2[3] = 64; // default pan - player->cmdList_mode2[4] = 0; - player->cmdList_mode2[5] = 0x80 + 48; // default tune, higher bit is meaningless - player->cmdList_mode2[6] = 0; - player->cmdList_mode2[7] = 0; + player->cmdListOneShot[0] = 0; // will be set to bank + player->cmdListOneShot[1] = 0; // will be set to patch + player->cmdListOneShot[2] = 0; // will be set to volume + player->cmdListOneShot[3] = AU_PAN_MID; // default pan + player->cmdListOneShot[4] = 0; // reverb + player->cmdListOneShot[5] = 0x80 + (DEFAULT_KEYBASE / 100); // default tune, higher bit is meaningless + player->cmdListOneShot[6] = 0; // random pitch + player->cmdListOneShot[7] = 0; // unused } for (i = 0; i < ARRAY_COUNT(manager->bgmSounds); i++) { - manager->bgmSounds[i].s32 = 0; + manager->bgmSounds[i].raw = 0; } for (i = 0; i < ARRAY_COUNT(manager->customCmdList); i++) { @@ -478,8 +523,8 @@ void au_sfx_init(SoundManager* manager, u8 priority, u8 busId, AuGlobals* global manager->resetPending = FALSE; au_sfx_set_state(manager, SND_MANAGER_STATE_ENABLED); au_sfx_clear_queue(manager); - au_fade_init(&manager->fadeInfo, 0, 0x7FFF, 0x7FFF); - au_fade_set_volume(manager->busId, manager->fadeInfo.curVolume.u16, manager->busVolume); + au_fade_init(&manager->fadeInfo, 0, AU_MAX_VOLUME_16, AU_MAX_VOLUME_16); + au_fade_set_volume(manager->busID, manager->fadeInfo.baseVolume >> 16, manager->busVolume); manager->lastCustomEffectIdx = 0xFF; manager->customReverbParams[0] = CUSTOM_SMALL_ROOM_PARAMS; @@ -526,137 +571,147 @@ void au_sfx_load_groups_from_SEF(SoundManager* manager) { void au_sfx_clear_queue(SoundManager* manager) { s32 i; - for (i = 0; i < ARRAY_COUNT(manager->soundQueue); i++) { - manager->soundQueue[i].soundID = 0; - manager->soundQueue[i].upperSoundID = 0; + for (i = 0; i < SFX_QUEUE_SIZE; i++) { + manager->soundQueue[i].soundID = SOUND_NONE; + manager->soundQueue[i].toReplaceID = SOUND_NONE; manager->soundQueue[i].volume = 0; manager->soundQueue[i].pitchShift = 0; manager->soundQueue[i].pan = 0; } - manager->unk_165 = 0; - manager->sfxQueueNextPos = 0; - manager->sfxQueuePosOffset = 0; - manager->unk_162 = 0; + manager->unused_165 = 0; + manager->sfxQueueWritePos = 0; + manager->sfxQueueReadPos = 0; + manager->unused_162 = 0; } +// Registers a new sound effect for playback from the main/game thread. +// The new event is dropped if the buffer is full. void au_sfx_enqueue_event(SoundManager* manager, u32 soundID, s16 volume, s16 pitchShift, u8 pan) { - u32 queuePos = manager->sfxQueueNextPos; - s32 queueAmt = manager->sfxQueueNextPos - manager->sfxQueuePosOffset; - - if (queueAmt < 0) { - queueAmt += 16; + // Determine the number of pending sound effects in the queue + s32 pending = manager->sfxQueueWritePos - manager->sfxQueueReadPos; + if (pending < 0) { + pending += SFX_QUEUE_SIZE; } - if (queueAmt < 16) { - u32 queueNextPos = queuePos; + // Only enqueue if there's room in the buffer + if (pending < SFX_QUEUE_SIZE) { + u32 nextPos = manager->sfxQueueWritePos; - manager->soundQueue[queueNextPos].soundID = soundID & (SOUND_ID_LOWER | SOUND_ID_STOP | SOUND_ID_ADJUST | SOUND_ID_TRIGGER_MASK); - manager->soundQueue[queueNextPos].upperSoundID = ((soundID >> 0x10) & 0x3FF); - manager->soundQueue[queueNextPos].volume = volume; - manager->soundQueue[queueNextPos].pitchShift = pitchShift; - manager->soundQueue[queueNextPos].pan = pan; + manager->soundQueue[nextPos].soundID = soundID & (SOUND_ID_LOWER | SOUND_ID_STOP | SOUND_ID_ADJUST | SOUND_ID_TRIGGER_MASK); + manager->soundQueue[nextPos].toReplaceID = (soundID & SOUND_ID_UPPER_MASK) >> 0x10; + manager->soundQueue[nextPos].volume = volume; + manager->soundQueue[nextPos].pitchShift = pitchShift; + manager->soundQueue[nextPos].pan = pan; - queueNextPos++; - if (queueNextPos >= 16) { - queueNextPos = 0; + nextPos++; + if (nextPos >= SFX_QUEUE_SIZE) { + nextPos = 0; } - manager->sfxQueueNextPos = queueNextPos; + manager->sfxQueueWritePos = nextPos; } } -void au_sfx_update_main(SoundManager* manager) { - SoundSFXEntry newEntry; - SoundSFXEntry* sfxEntry; +// Called from the audio thread once per video frame. +// Consumes and processes sound events from the queue. +void au_sfx_begin_video_frame(SoundManager* manager) { + SoundRequest newRequest; + SoundRequest* request; u32 i, j, k; - s32 count; + s32 pending; - manager->playCounter++; + manager->frameCounter++; if (manager->resetPending) { au_sfx_reset_players(manager); manager->resetPending = FALSE; } - // sounds started by special seq command FF-05 + // Process sound effects triggered by music via BGM_SPECIAL_TRIGGER_SOUND for (i = 0; i < ARRAY_COUNT(manager->bgmSounds); i++) { - k = manager->bgmSounds[i].unk_0; + k = manager->bgmSounds[i].index; if (k == 0) { // do nothing - } else if (k < 2) { - AlUnkGemini* unkData = &D_80078370[k-1]; - u16 sound2 = unkData->sound2; - if (sound2 != 0) { + } else if (k <= ARRAY_COUNT(MusicSounds)) { + MusicTriggeredSound* triggered = &MusicSounds[k-1]; + u16 prereq = triggered->prereq; + if (prereq != 0) { + // try playing sound ONLY IF prereq sound is already playing for (j = 0; j < ARRAY_COUNT(manager->players); j++) { - if (manager->players[j].curSoundID == sound2) { - newEntry.soundID = unkData->sound1; - newEntry.upperSoundID = 0; - newEntry.pitchShift = 0; - if ((unkData->flags & 1) && (manager->bgmSounds[i].volume != 0)) { - newEntry.volume = (manager->bgmSounds[i].volume << 8) + 0xFF; + if (manager->players[j].curSoundID == prereq) { + newRequest.soundID = triggered->sound; + newRequest.toReplaceID = SOUND_NONE; + newRequest.pitchShift = 0; + if ((triggered->flags & 1) && (manager->bgmSounds[i].volume != 0)) { + newRequest.volume = (manager->bgmSounds[i].volume << 8) + 0xFF; } else { - newEntry.volume = 0; + newRequest.volume = 0; } - newEntry.pan = 0; - au_sfx_load_sound(manager, &newEntry, NULL); + newRequest.pan = 0; + au_sfx_try_sound(manager, &newRequest, NULL); break; } } } else { - newEntry.soundID = unkData->sound1; - newEntry.upperSoundID = 0; - newEntry.volume = 0; - newEntry.pitchShift = 0; - newEntry.pan = 0; - au_sfx_load_sound(manager, &newEntry, NULL); + // no prereq defined, unconditionally play the sound + newRequest.soundID = triggered->sound; + newRequest.toReplaceID = SOUND_NONE; + newRequest.volume = 0; + newRequest.pitchShift = 0; + newRequest.pan = 0; + au_sfx_try_sound(manager, &newRequest, NULL); } } - manager->bgmSounds[i].s32 = 0; + // clear the event + manager->bgmSounds[i].raw = 0; } - // sounds started from sef command 17 + // Process sound effects triggered by SEF command 17 for (i = 0; i < ARRAY_COUNT(manager->customCmdList); i++) { if (manager->customCmdList[i].data[0] != 0) { - newEntry.soundID = 1; - newEntry.upperSoundID = 0; - newEntry.volume = 0; - newEntry.pitchShift = 0; - newEntry.pan = 0; - au_sfx_load_sound(manager, &newEntry, &manager->customCmdList[i]); + newRequest.soundID = 1; + newRequest.toReplaceID = SOUND_NONE; + newRequest.volume = 0; + newRequest.pitchShift = 0; + newRequest.pan = 0; + au_sfx_try_sound(manager, &newRequest, &manager->customCmdList[i]); } manager->customCmdList[i].data[0] = 0; } - count = manager->sfxQueueNextPos - manager->sfxQueuePosOffset; - if (count < 0) { - count += ARRAY_COUNT(manager->soundQueue); + // Determine the number of pending sound effects in the queue + pending = manager->sfxQueueWritePos - manager->sfxQueueReadPos; + if (pending < 0) { + pending += SFX_QUEUE_SIZE; } - j = manager->sfxQueuePosOffset; - if (count > 0 && count < ARRAY_COUNT(manager->soundQueue)) { - for (i = 0; i < count; i++) { - sfxEntry = &manager->soundQueue[j]; - if (sfxEntry->soundID & SOUND_ID_LOWER) { - if (sfxEntry->soundID & SOUND_ID_STOP) { - au_sfx_stop_by_id(manager, sfxEntry->soundID); - } else if (!(sfxEntry->soundID & (SOUND_ID_ADJUST | SOUND_ID_TRIGGER_MASK))) { - au_sfx_load_sound(manager, sfxEntry, NULL); + + // Process each pending sound effect in the queue + j = manager->sfxQueueReadPos; + if (pending > 0 && pending < SFX_QUEUE_SIZE) { + for (i = 0; i < pending; i++) { + request = &manager->soundQueue[j]; + if (request->soundID & SOUND_ID_LOWER) { + if (request->soundID & SOUND_ID_STOP) { + au_sfx_stop_by_id(manager, request->soundID); + } else if (!(request->soundID & (SOUND_ID_ADJUST | SOUND_ID_TRIGGER_MASK))) { + au_sfx_try_sound(manager, request, NULL); } else { - if (sfxEntry->soundID & SOUND_ID_TRIGGER_MASK) { - au_sfx_set_triggers(manager, sfxEntry->soundID); + if (request->soundID & SOUND_ID_TRIGGER_MASK) { + au_sfx_set_triggers(manager, request->soundID); } - if (sfxEntry->soundID & SOUND_ID_ADJUST) { - au_sfx_set_modifiers(manager, sfxEntry); + if (request->soundID & SOUND_ID_ADJUST) { + au_sfx_set_modifiers(manager, request); } } } - sfxEntry->soundID = SOUND_NONE; + request->soundID = SOUND_NONE; j++; - if (j >= ARRAY_COUNT(manager->soundQueue)) { + if (j >= SFX_QUEUE_SIZE) { j = 0; } } - manager->sfxQueuePosOffset = manager->sfxQueueNextPos; + manager->sfxQueueReadPos = manager->sfxQueueWritePos; } } @@ -683,13 +738,13 @@ s32 au_sfx_set_reverb_type(SoundManager* manager, s32 arg1) { void au_sfx_set_state(SoundManager* manager, s32 state) { if (state == SND_MANAGER_STATE_ENABLED) { - manager->state = SND_MANAGER_STATE_ENABLED; + manager->state = state; } else if (state == SND_MANAGER_STATE_DISABLED) { - manager->state = SND_MANAGER_STATE_DISABLED; + manager->state = state; } } -void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManagerCustomCmdList* customSEF) { +void au_sfx_try_sound(SoundManager* manager, SoundRequest* request, SoundManagerCustomCmdList* customSEF) { SoundPlayer* player; s32 playerIndex; u16* cmdList; @@ -702,15 +757,15 @@ void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManager s32 v1; s32* normalSounds; - #define NEXT_CMD trackCount--; if (trackCount <= 0 ) { break; } cmdList += 2; + #define NEXT_POLY_TRACK trackCount--; if (trackCount <= 0 ) { break; } cmdList += 2; - u32 soundIndex = (entry->soundID - 1) & 0xFF; - u16 soundIDLower = entry->soundID & SOUND_ID_LOWER; - u16 soundID = entry->soundID; + u32 soundIndex = (request->soundID - 1) & 0xFF; + u16 soundIDLower = request->soundID & SOUND_ID_LOWER; + u16 soundID = request->soundID; if (soundID & SOUND_ID_UNK) { // sound from extra section - soundIndex = (entry->soundID - 1) & SOUND_ID_UNK_INDEX_MASK; + soundIndex = (request->soundID - 1) & SOUND_ID_UNK_INDEX_MASK; if (soundIndex < 0x140) { cmdList = (u16*)&manager->extraSounds[soundIndex]; if (*cmdList != 0) { @@ -735,7 +790,7 @@ void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManager } if (foundPlayer) { - au_sfx_play_sound(manager, player, (s8*)cmdList, entry, 0, 0); + au_sfx_play_sound(manager, player, (s8*)cmdList, request, 0, 0); } } } @@ -772,7 +827,7 @@ void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManager } if (foundPlayer) { - au_sfx_play_sound(manager, player, (u8*)cmdList, entry, 0, 0); + au_sfx_play_sound(manager, player, (u8*)cmdList, request, 0, 0); } } } else { @@ -793,10 +848,10 @@ void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManager useSpecificPlayerMode = (useSpecificPlayerMode & 0x80) >> 7; // bit 7 if (polyphonyMode == 0) { - if (entry->upperSoundID != 0) { + if (request->toReplaceID != SOUND_NONE) { for (playerIndex = 0; playerIndex < 8; playerIndex++) { player = &manager->players[playerIndex]; - if (player->curSoundID == entry->upperSoundID) { + if (player->curSoundID == request->toReplaceID) { foundPlayer = TRUE; break; } @@ -808,7 +863,7 @@ void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManager playerIndex = soundInfo & 0x7; player = &manager->players[playerIndex]; if (player->sefDataReadPos == NULL || priority >= player->priority) { - au_sfx_play_sound(manager, player, AU_FILE_RELATIVE(manager->sefData, *cmdList), entry, priority, 0); + au_sfx_play_sound(manager, player, AU_FILE_RELATIVE(manager->sefData, *cmdList), request, priority, 0); } return; } @@ -857,7 +912,7 @@ void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManager } if (foundPlayer) { - au_sfx_play_sound(manager, player, AU_FILE_RELATIVE(manager->sefData, *cmdList), entry, priority, 0); + au_sfx_play_sound(manager, player, AU_FILE_RELATIVE(manager->sefData, *cmdList), request, priority, 0); } } else { cmdList = AU_FILE_RELATIVE(manager->sefData, *cmdList); @@ -865,7 +920,7 @@ void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManager if (exclusiveID != 0) { au_sfx_stop_by_exlusive_id(manager, exclusiveID); } else { - au_sfx_stop_by_id(manager, entry->soundID); + au_sfx_stop_by_id(manager, request->soundID); } trackCount = 2 << (polyphonyMode - 1); // 2 or 4 or 8 @@ -876,11 +931,11 @@ void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManager // first check the players that were stopped just now player = &manager->players[playerIndex]; if (player->sefDataReadPos == BlankSEFData) { - au_sfx_play_sound(manager, player, AU_FILE_RELATIVE(manager->sefData, *cmdList), entry, priority, exclusiveID); - NEXT_CMD; + au_sfx_play_sound(manager, player, AU_FILE_RELATIVE(manager->sefData, *cmdList), request, priority, exclusiveID); + NEXT_POLY_TRACK; } } else { - NEXT_CMD; + NEXT_POLY_TRACK; } } @@ -891,12 +946,12 @@ void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManager // then check any free players player = &manager->players[playerIndex]; if (player->sefDataReadPos == NULL) { - au_sfx_play_sound(manager, player, AU_FILE_RELATIVE(manager->sefData, *cmdList), entry, priority, exclusiveID); - NEXT_CMD; + au_sfx_play_sound(manager, player, AU_FILE_RELATIVE(manager->sefData, *cmdList), request, priority, exclusiveID); + NEXT_POLY_TRACK; } playerIndex--; } else { - NEXT_CMD; + NEXT_POLY_TRACK; } } } @@ -907,11 +962,11 @@ void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManager // then try to steal player = &manager->players[playerIndex]; if (exclusiveID > player->exclusiveID && priority >= player->priority) { - au_sfx_play_sound(manager, player, AU_FILE_RELATIVE(manager->sefData, *cmdList), entry, priority, exclusiveID); - NEXT_CMD; + au_sfx_play_sound(manager, player, AU_FILE_RELATIVE(manager->sefData, *cmdList), request, priority, exclusiveID); + NEXT_POLY_TRACK; } } else { - NEXT_CMD; + NEXT_POLY_TRACK; } } } @@ -924,7 +979,7 @@ void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManager player = &manager->players[playerIndex]; priority = (soundInfo & 0x300) >> 8; // bits 8, 9 if (player->sefDataReadPos == NULL || priority >= player->priority) { - au_sfx_play_sound(manager, player, AU_FILE_RELATIVE(manager->sefData, *cmdList), entry, priority, exclusiveID); + au_sfx_play_sound(manager, player, AU_FILE_RELATIVE(manager->sefData, *cmdList), request, priority, exclusiveID); } cmdList += 2; } @@ -934,37 +989,37 @@ void au_sfx_load_sound(SoundManager* manager, SoundSFXEntry* entry, SoundManager } } } - #undef NEXT_CMD + #undef NEXT_POLY_TRACK } -static void au_sfx_play_sound(SoundManager* manager, SoundPlayer* player, s8* readPos, SoundSFXEntry* sfxEntry, s32 priority, s32 exclusiveID) { +static void au_sfx_play_sound(SoundManager* manager, SoundPlayer* player, s8* readPos, SoundRequest* request, s32 priority, s32 exclusiveID) { if (manager->state == SND_MANAGER_STATE_ENABLED) { player->sefDataReadPos = readPos; player->sefReadStart = readPos; player->sfxInstrumentRef = manager->globals->defaultInstrument; - player->sfxPan = 0x40; - player->sfxVolume = 0x7FFF; - player->alternativeVolume = 0x7FFF; + player->sfxPan = AU_PAN_MID; + player->sfxVolume = AU_MAX_VOLUME_16; + player->alternativeVolume = AU_MAX_VOLUME_16; player->reverb = 0; player->instrumentIndex = 0; player->envelopePreset = 0; - player->playVelocity = 0x7F; + player->playVelocity = AU_MAX_VOLUME_8; player->coarseTune = 0; player->fineTune = 0; player->loopStartPos = NULL; player->loopIterCount = 0; player->delay = 1; player->playLength = 0; - player->curSoundID = sfxEntry->soundID & SOUND_ID_LOWER; + player->curSoundID = request->soundID & SOUND_ID_LOWER; player->priority = priority; player->exclusiveID = exclusiveID; player->envelopCustomPressProfile = NULL; player->changed.all = 0; - player->unk_A0 = 0; + player->unused_A0 = 0; player->randomPitch = 0; player->randomVelocity = 0; - player->unk_A3 = 0; - player->volumeLerp.current = 0x7FFFFFFF; + player->randomUnused = 0; + player->volumeLerp.current = AU_MAX_VOLUME_32; player->volumeLerp.time = 0; player->volumeLerp.step = 0; player->volumeLerp.goal = 0; @@ -976,25 +1031,29 @@ static void au_sfx_play_sound(SoundManager* manager, SoundPlayer* player, s8* re player->alternativeType = 0; player->triggers = 0; player->sfxParamsFlags = *player->sefDataReadPos++; - switch (player->sfxParamsFlags & SFX_PARAM_FLAG_MODE) { - case SFX_PARAM_MODE_ADVANCED: + switch (player->sfxParamsFlags & SFX_PARAM_MODE_MASK) { + case SFX_PARAM_MODE_BASIC: player->state = SND_PLAYER_STATE_INIT; break; case SFX_PARAM_MODE_SEQUENCE: player->state = SND_PLAYER_STATE_INIT; break; - case SFX_PARAM_MODE_BASIC: - player->sfxParamsFlags = (player->sfxParamsFlags & ~SFX_PARAM_FLAG_MODE) | SFX_PARAM_MODE_ADVANCED; + case SFX_PARAM_MODE_COMPACT: + // change mode to SFX_PARAM_MODE_BASIC + player->sfxParamsFlags &= ~SFX_PARAM_MODE_MASK; + player->sfxParamsFlags |= SFX_PARAM_MODE_BASIC; player->state = SND_PLAYER_STATE_INIT; - player->cmdList_mode2[0] = player->sefDataReadPos[0]; // instrument bank - player->cmdList_mode2[1] = player->sefDataReadPos[1]; // instrument patch - // volume and random pitch may overlap - player->cmdList_mode2[2] = (player->sefDataReadPos[2] >> 1) | 3; // volume - player->cmdList_mode2[6] = player->sefDataReadPos[2] & 7; // random pitch - player->sefDataReadPos = player->cmdList_mode2; + // populate preset 8‑byte SEF stream in cmdListOneShot: + player->cmdListOneShot[0] = player->sefDataReadPos[0]; // instrument bank + player->cmdListOneShot[1] = player->sefDataReadPos[1]; // instrument patch + // bottom 3 bits are irrelevant for volume, maps to a range 3 to 127 + player->cmdListOneShot[2] = (player->sefDataReadPos[2] >> 1) | 3; // volume + // use bottom 3 bits for random pitch amount + player->cmdListOneShot[6] = player->sefDataReadPos[2] & 7; // random pitch + player->sefDataReadPos = player->cmdListOneShot; break; } - au_sfx_set_player_modifiers(player, sfxEntry); + au_sfx_set_player_modifiers(player, request); } } @@ -1044,70 +1103,70 @@ static void au_sfx_stop_by_exlusive_id(SoundManager* manager, u32 exclusiveID) { } } -static void au_sfx_set_modifiers(SoundManager* manager, SoundSFXEntry* sfxEntry) { - s32 soundID = sfxEntry->soundID & SOUND_ID_LOWER; +static void au_sfx_set_modifiers(SoundManager* manager, SoundRequest* request) { + s32 soundID = request->soundID & SOUND_ID_LOWER; s32 i; for (i = 0; i < ARRAY_COUNT(manager->players); i++) { SoundPlayer* player = &manager->players[i]; if (player->curSoundID == soundID) { - au_sfx_set_player_modifiers(player, sfxEntry); + au_sfx_set_player_modifiers(player, request); } } } -static void au_sfx_set_player_modifiers(SoundPlayer* player, SoundSFXEntry* sfxEntry) { - if (player->sfxParamsFlags & SFX_PARAM_FLAG_VOLUME) { +static void au_sfx_set_player_modifiers(SoundPlayer* player, SoundRequest* request) { + if (player->sfxParamsFlags & SFX_PARAM_LOCK_VOLUME) { player->masterVolume = 0; } else { - player->masterVolume = sfxEntry->volume; + player->masterVolume = request->volume; player->changed.volume = TRUE; } - if (player->sfxParamsFlags & SFX_PARAM_FLAG_PAN) { + if (player->sfxParamsFlags & SFX_PARAM_LOCK_PAN) { player->masterPan = 0; } else { - player->masterPan = sfxEntry->pan; + player->masterPan = request->pan; player->changed.pan = TRUE; } - if (player->sfxParamsFlags & SFX_PARAM_FLAG_PITCH) { + if (player->sfxParamsFlags & SFX_PARAM_LOCK_PITCH) { player->masterPitchShift = 0; } else { - player->masterPitchShift = sfxEntry->pitchShift; + player->masterPitchShift = request->pitchShift; player->changed.tune = TRUE; } } -s16 au_sfx_manager_update(SoundManager* manager) { +s16 au_sfx_manager_audio_frame_update(SoundManager* manager) { SoundPlayer* player; AuVoice* voice; - u32 start; + u32 startVoice; u8 end; u8 i; // update pseudorandom number with fast 'good enough' method - manager->randomValue = (u16)manager->randomValue + (u16)manager->playCounter; + manager->randomValue = (u16)manager->randomValue + (u16)manager->frameCounter; - start = manager->sfxPlayerSelector; - for (i = start, end = start + 8; i < end; i++) { - player = &manager->players[i - manager->sfxPlayerSelector]; + startVoice = manager->firstVoice; + for (i = startVoice, end = startVoice + ARRAY_COUNT(manager->players); i < end; i++) { + player = &manager->players[i - manager->firstVoice]; if (player->sefDataReadPos != NULL) { voice = &manager->globals->voices[i]; manager->curVoice = voice; if (voice->priority <= manager->priority) { manager->curVoiceIndex = i; - switch (player->sfxParamsFlags & SFX_PARAM_FLAG_MODE) { - case SFX_PARAM_MODE_ADVANCED: + switch (player->sfxParamsFlags & SFX_PARAM_MODE_MASK) { + case SFX_PARAM_MODE_BASIC: au_sfx_update_basic(manager, player, voice, i); break; case SFX_PARAM_MODE_SEQUENCE: au_sfx_update_sequence(manager, player, voice, i); break; - case SFX_PARAM_MODE_BASIC: + case SFX_PARAM_MODE_COMPACT: break; } } else { player->sefDataReadPos = NULL; - player->curSoundID = 0; + player->curSoundID = SOUND_NONE; player->priority = 0; } } @@ -1126,10 +1185,10 @@ static void au_sfx_update_basic(SoundManager* manager, SoundPlayer* player, AuVo case SND_PLAYER_STATE_CONTINUE: if (voice->priority != manager->priority) { player->sefDataReadPos = NULL; - player->curSoundID = 0; + player->curSoundID = SOUND_NONE; player->priority = 0; } else { - if (!(player->sfxParamsFlags & SFX_PARAM_FLAG_PITCH)) { + if (!(player->sfxParamsFlags & SFX_PARAM_LOCK_PITCH)) { player->pitchRatio = au_compute_pitch_ratio( ((player->tuneLerp.current >> 0x10) - player->sfxInstrumentRef->keyBase) + player->masterPitchShift) * player->sfxInstrumentRef->pitchRatio; if (voice->pitchRatio != player->pitchRatio) { @@ -1138,7 +1197,7 @@ static void au_sfx_update_basic(SoundManager* manager, SoundPlayer* player, AuVo } } - if (!(player->sfxParamsFlags & SFX_PARAM_FLAG_PAN) && player->masterPan != 0) { + if (!(player->sfxParamsFlags & SFX_PARAM_LOCK_PAN) && player->masterPan != 0) { pan = player->masterPan; } else { pan = player->sfxPan; @@ -1160,24 +1219,24 @@ static void au_sfx_update_basic(SoundManager* manager, SoundPlayer* player, AuVo au_SEFCmd_00_SetVolume(manager, player); // 1 byte au_SEFCmd_01_SetPan(manager, player); // 1 byte au_SEFCmd_03_SetReverb(manager, player); // 1 byte - a = (*player->sefDataReadPos++ & 0x7F); // 1 byte - b = (*player->sefDataReadPos & 0xF) << 3; // 1 byte - tune = a * 100; - player->randomPitch = b; + tune = (*player->sefDataReadPos++ & 0x7F) * 100; // 1 byte + player->randomPitch = (*player->sefDataReadPos & 0xF) * 8; // 1 byte + if (player->randomPitch != 0) { player->tuneLerp.current = au_sfx_get_random_pitch(manager->randomValue, player->randomPitch, tune) << 0x10; } else { player->tuneLerp.current = tune << 0x10; } - if (player->sfxParamsFlags & SFX_PARAM_FLAG_PITCH) { + if (player->sfxParamsFlags & SFX_PARAM_LOCK_PITCH) { tune = (player->tuneLerp.current >> 0x10) - player->sfxInstrumentRef->keyBase; } else { tune = ((player->tuneLerp.current >> 0x10) - player->sfxInstrumentRef->keyBase) + player->masterPitchShift; } player->pitchRatio = au_compute_pitch_ratio(tune) * player->sfxInstrumentRef->pitchRatio; + if (voice->priority <= manager->priority) { au_reset_nonfree_voice(voice, voiceIdx); - if (!(player->sfxParamsFlags & SFX_PARAM_FLAG_PAN) && player->masterPan != 0) { + if (!(player->sfxParamsFlags & SFX_PARAM_LOCK_PAN) && player->masterPan != 0) { voice->pan = player->masterPan; } else { voice->pan = player->sfxPan; @@ -1192,13 +1251,13 @@ static void au_sfx_update_basic(SoundManager* manager, SoundPlayer* player, AuVo voice->syncFlags = AU_VOICE_SYNC_FLAG_ALL; voice->priority = manager->priority; voice->clientPriority = voice->priority; - voice->busId = manager->busId; + voice->busID = manager->busID; } player->state = SND_PLAYER_STATE_CONTINUE; break; default: player->sefDataReadPos = NULL; - player->curSoundID = 0; + player->curSoundID = SOUND_NONE; player->priority = 0; break; } @@ -1208,7 +1267,7 @@ static s16 au_sfx_get_scaled_volume(SoundManager* manager, SoundPlayer* player) s32 outVolume; outVolume = (manager->baseVolume * player->sfxVolume) >> 15; - if (!(player->sfxParamsFlags & SFX_PARAM_FLAG_VOLUME) && (player->masterVolume != 0)) { + if (!(player->sfxParamsFlags & SFX_PARAM_LOCK_VOLUME) && (player->masterVolume != 0)) { outVolume = (outVolume * player->masterVolume) >> 15; } return outVolume; @@ -1253,7 +1312,7 @@ static void au_sfx_update_sequence(SoundManager* manager, SoundPlayer* player, A au_reset_voice(voice, voiceIdx); } player->sefDataReadPos = NULL; - player->curSoundID = 0; + player->curSoundID = SOUND_NONE; player->priority = 0; player->exclusiveID = 0; return; @@ -1291,14 +1350,14 @@ static void au_sfx_update_sequence(SoundManager* manager, SoundPlayer* player, A if (voice->priority <= manager->priority) { au_reset_nonfree_voice(voice, voiceIdx); - if ((player->sfxParamsFlags & SFX_PARAM_FLAG_PAN) || (player->masterPan == 0)) { + if ((player->sfxParamsFlags & SFX_PARAM_LOCK_PAN) || (player->masterPan == 0)) { voice->pan = player->sfxPan; } else { voice->pan = player->masterPan; } voice->reverb = player->reverb; - snd_set_voice_volume(voice, manager, player); + au_sfx_set_voice_volume(voice, manager, player); if (player->envelopCustomPressProfile == NULL) { voice->envelope.cmdListPress = player->envelope.cmdListPress; voice->envelope.cmdListRelease = player->envelope.cmdListRelease; @@ -1308,7 +1367,7 @@ static void au_sfx_update_sequence(SoundManager* manager, SoundPlayer* player, A } voice->instrument = player->sfxInstrumentRef; - voice->busId = manager->busId; + voice->busID = manager->busID; voice->priority = manager->priority; voice->syncFlags = AU_VOICE_SYNC_FLAG_ALL; @@ -1350,7 +1409,7 @@ static void au_sfx_update_sequence(SoundManager* manager, SoundPlayer* player, A player->changed.tune = TRUE; } if (player->changed.pan || player->changed.reverb) { - if ((player->sfxParamsFlags & SFX_PARAM_FLAG_PAN) || (player->masterPan == 0)) { + if ((player->sfxParamsFlags & SFX_PARAM_LOCK_PAN) || (player->masterPan == 0)) { voice->pan = player->sfxPan; } else { voice->pan = player->masterPan; @@ -1360,12 +1419,12 @@ static void au_sfx_update_sequence(SoundManager* manager, SoundPlayer* player, A } } if (player->changed.volume && voice->priority == manager->priority) { - snd_set_voice_volume(voice, manager, player); + au_sfx_set_voice_volume(voice, manager, player); voice->envelopeFlags |= AU_VOICE_ENV_FLAG_VOL_CHANGED; } if (player->changed.tune) { f32 adjustedPitchRatio; - if (player->sfxParamsFlags & SFX_PARAM_FLAG_PITCH) { + if (player->sfxParamsFlags & SFX_PARAM_LOCK_PITCH) { pitchShift = (player->coarseTune + (s16)(player->tuneLerp.current >> 0x10)) - player->sfxInstrumentRef->keyBase; adjustedPitchRatio = au_compute_pitch_ratio(pitchShift + player->fineTune) * player->sfxInstrumentRef->pitchRatio; player->pitchRatio = adjustedPitchRatio; @@ -1382,13 +1441,13 @@ static void au_sfx_update_sequence(SoundManager* manager, SoundPlayer* player, A player->changed.all = 0; } -static void snd_set_voice_volume(AuVoice* voice, SoundManager* manager, SoundPlayer* player) { +static void au_sfx_set_voice_volume(AuVoice* voice, SoundManager* manager, SoundPlayer* player) { s32 x = ((((manager->baseVolume * player->sfxVolume) >> 0xF) * player->playVelocity) >> 7) * (player->volumeLerp.current >> 0x10) >> 0xF; - if (player->sfxParamsFlags & SFX_PARAM_FLAG_VOLUME || player->masterVolume == 0) { + if (player->sfxParamsFlags & SFX_PARAM_LOCK_VOLUME || player->masterVolume == 0) { voice->clientVolume = x; } else { voice->clientVolume = (x * player->masterVolume) >> 0xF; @@ -1419,10 +1478,10 @@ static u8 au_sfx_get_random_pan(s32 seed, s32 pan, s32 amplitude) { } else { retPan = pan - (((amplitude & 0xFF) * random) >> 8); } - if (retPan < 0) { - retPan = 0; - } else if (retPan > 0x7F) { - retPan = 0x7F; + if (retPan < AU_PAN_MIN) { + retPan = AU_PAN_MIN; + } else if (retPan > AU_PAN_MAX) { + retPan = AU_PAN_MAX; } return retPan; } @@ -1430,7 +1489,7 @@ static u8 au_sfx_get_random_pan(s32 seed, s32 pan, s32 amplitude) { static void au_SEFCmd_00_SetVolume(SoundManager* manager, SoundPlayer* player) { player->sfxVolume = *player->sefDataReadPos++; if (player->sfxVolume != 0) { - player->sfxVolume = player->sfxVolume << 8 | 0xFF; + player->sfxVolume = AU_VOL_8_TO_16(player->sfxVolume); } player->changed.volume = TRUE; } @@ -1444,7 +1503,7 @@ static void au_SEFCmd_01_SetPan(SoundManager* manager, SoundPlayer* player) { static void au_SEFCmd_02_SetInstrument(SoundManager* manager, SoundPlayer* player) { AuFilePos buf = player->sefDataReadPos; - s32 bank = buf[0]; + BankSetIndex bank = buf[0]; s32 patch = buf[1]; player->sefDataReadPos += 2; @@ -1455,7 +1514,7 @@ static void au_SEFCmd_02_SetInstrument(SoundManager* manager, SoundPlayer* playe static void au_SEFCmd_03_SetReverb(SoundManager* manager, SoundPlayer* player) { u8 reverb = *player->sefDataReadPos++; - if (player->sfxParamsFlags & SFX_PARAM_FLAG_FIXED_REVERB) { + if (player->sfxParamsFlags & SFX_PARAM_LOCK_REVERB) { reverb = manager->defaultReverbAmt; } player->reverb = reverb; @@ -1471,18 +1530,18 @@ static void au_SEFCmd_04_SetEnvelope(SoundManager* manager, SoundPlayer* player) player->envelopePreset = envelope & 0x7F; other = player->sfxInstrumentRef; - player->sfxInstrument.base = other->base; + player->sfxInstrument.wavData = other->wavData; player->sfxInstrument.wavDataLength = other->wavDataLength; - player->sfxInstrument.loopPredictor = other->loopPredictor; + player->sfxInstrument.loopState = other->loopState; player->sfxInstrument.loopStart = other->loopStart; player->sfxInstrument.loopEnd = other->loopEnd; player->sfxInstrument.loopCount = other->loopCount; player->sfxInstrument.predictor = other->predictor; - player->sfxInstrument.dc_bookSize = other->dc_bookSize; + player->sfxInstrument.codebookSize = other->codebookSize; player->sfxInstrument.keyBase = other->keyBase; player->sfxInstrument.pitchRatio = other->pitchRatio; player->sfxInstrument.type = other->type; - player->sfxInstrument.unk_25 = other->unk_25; + player->sfxInstrument.useDma = other->useDma; player->sfxInstrument.envelopes = SFXEnvelopePresets[player->envelopePreset]; player->sfxInstrumentRef = &player->sfxInstrument; @@ -1549,7 +1608,7 @@ static void au_SEFCmd_0C_SetCurrentVolume(SoundManager* manager, SoundPlayer* pl s32 vol = *player->sefDataReadPos++; if (vol != 0) { - vol = (vol << 0x18) | 0xFFFFFF; + vol = AU_VOL_8_TO_32(vol); } player->volumeLerp.current = vol; player->changed.volume = TRUE; @@ -1563,7 +1622,7 @@ static void au_SEFCmd_0D_VolumeRamp(SoundManager* manager, SoundPlayer* player) player->sefDataReadPos += 3; if (newValue != 0) { - newValue = (newValue << 8) | 0xFF; + newValue = AU_VOL_8_TO_16(newValue); } if (time <= 0) { time = 1; @@ -1626,8 +1685,8 @@ static void au_SEFCmd_14_SetRandomVelocity(SoundManager* manager, SoundPlayer* p player->randomVelocity = *player->sefDataReadPos++; } -static void au_SEFCmd_15_SetUnkA3(SoundManager* manager, SoundPlayer* player) { - player->unk_A3 = *player->sefDataReadPos++;; +static void au_SEFCmd_15_SetRandomUnused(SoundManager* manager, SoundPlayer* player) { + player->randomUnused = *player->sefDataReadPos++; } static void au_SEFCmd_16_SetEnvelopePress(SoundManager* manager, SoundPlayer* player) { @@ -1660,7 +1719,7 @@ static void au_SEFCmd_17_PlaySound(SoundManager* manager, SoundPlayer* player) { static void au_SEFCmd_18_SetAlternativeVolume(SoundManager* manager, SoundPlayer* player) { player->alternativeVolume = *player->sefDataReadPos++; if (player->alternativeVolume != 0) { - player->alternativeVolume = player->alternativeVolume << 8 | 0xFF; + player->alternativeVolume = AU_VOL_8_TO_16(player->alternativeVolume); } } diff --git a/src/audio/30450.c b/src/audio/snd_interface.c similarity index 55% rename from src/audio/30450.c rename to src/audio/snd_interface.c index 2b8b176092..282c49b334 100644 --- a/src/audio/30450.c +++ b/src/audio/snd_interface.c @@ -1,34 +1,39 @@ #include "common.h" #include "audio.h" +#include "audio/core.h" static u8* snd_song_get_track_volumes_set(MusicTrackVols arg0); +/// While TRUE, the audio thread skips BGM player updates. +/// Used by the game thread to lock out BGM updates while modifying player state, +/// to prevent race conditions. s32 PreventBGMPlayerUpdate = FALSE; -u16 D_80078DB4 = 0; -u16 AuAmbiencePlayOnlyIndex = 0; + +u16 SoundEngineReady = 0; +u16 AmbienceRadioChannel = 0; // lists of data: // u8 trackIdx -// u8 volume? +// u8 volume // repeated until idx = 0 -u8 D_80078DB8[] = { +u8 TrackVols_JAN_Full[] = { 2, 94, 3, 80, 4, 100, 5, 84, 0 }; -u8 D_80078DC4[] = { +u8 TrackVols_Unused1[] = { 2, 100, 3, 110, 4, 90, 0 }; -u8 D_80078DCC[] = { +u8 TrackVols_TIK_Shiver[] = { 2, 95, 0 }; -u8 D_80078DD0[] = { +u8 TrackVols_Unused3[] = { 5, 70, 6, 90, 7, 90, @@ -100,29 +105,32 @@ u8 TrackVols_KPA_3[] = { 0 }; -void func_80055050(ALHeap* heap) { - D_80078DB4 = 1; +void snd_notify_engine_ready(ALHeap* heap) { + SoundEngineReady = 1; PreventBGMPlayerUpdate = FALSE; } -void func_80055068(u32 arg0) { - u16 temp_a0 = D_80078DB4; - u32 temp_v1 = arg0 & 0xF; +/// Unused +/// Seems to be an early function that accepts a command to play any kind of audio asset, +// but only BGM and SFX are supported. +void snd_legacy_sound_dispatch(u32 id) { + u16 ready = SoundEngineReady; + u32 type = id & 0xF; - if (temp_a0 == 1) { - switch (temp_v1) { + if (ready == 1) { + switch (type) { case 2: case 3: break; case 4: - snd_start_sound_with_shift(arg0 >> 4, 0, 0, 0); + snd_start_sound_with_shift(id >> 4, 0, 0, 0); break; case 1: - if (temp_v1 == 1) { - s32 filename = au_song_load((arg0 >> 4) & 0xFF, 0); + if (type == 1) { + s32 filename = snd_song_load((id >> 4) & 0xFF, 0); if (filename > ASCII_TO_U32('0', ' ', ' ', '\0')) { - au_song_start_variation(filename, (arg0 >> 0xC) & 3); + snd_song_request_play(filename, (id >> 0xC) & 3); } } break; @@ -130,53 +138,58 @@ void func_80055068(u32 arg0) { } } -void func_80055110(BGMPlayer* player) { +/// Part of an unused system for inter-thread communication with a BGM player using commands. +/// Use functions in bgm_control to manipualte gMusicControlData instead. +void snd_bgm_clear_legacy_commands(BGMPlayer* player) { s32 i; - for (i = 0; i < ARRAY_COUNT(player->unk_238); i++) { - player->unk_238[i] = 0; + for (i = 0; i < ARRAY_COUNT(player->cmdBufData); i++) { + player->cmdBufData[i] = 0; } - player->unk_25B = 0; - player->unk_25A = 0; - player->unk_259 = 0; - player->unk_258 = 0; + player->cmdBufOverflows = 0; + player->cmdBufWritePos = 0; + player->cmdBufReadPos = 0; + player->cmdBufPending = 0; } -void func_8005513C(u32 arg0) { +/// Unused +/// Part of an unused system for inter-thread communication with a BGM player using commands. +/// Use functions in bgm_control to manipualte gMusicControlData instead. +void snd_bgm_enqueue_legacy_command(u32 cmd) { BGMPlayer* player = NULL; - u32 playerSwitch = arg0 & 0xF; + u32 playerID = cmd & 0xF; - if (playerSwitch != 0) { - if (playerSwitch == 1) { - player = gBGMPlayerA; - } else if (playerSwitch == 2) { - player = gBGMPlayerB; - } + if (playerID == 0) { + return; + } else if (playerID == 1) { + player = gBGMPlayerA; + } else if (playerID == 2) { + player = gBGMPlayerB; + } - if (player != NULL) { - u32 temp; + if (player != NULL) { + u32 pos; - if (player->unk_258 < 8) { - temp = player->unk_25A; + if (player->cmdBufPending < ARRAY_COUNT(player->cmdBufData)) { + pos = player->cmdBufWritePos; - player->unk_238[temp] = arg0 >> 4; + player->cmdBufData[pos] = cmd >> 4; - temp++; - if (temp >= 8) { - temp = 0; - } - player->unk_25A = temp; - - player->unk_258++; - } else { - temp = player->unk_25B + 1; - - if (temp > 99) { - temp = 99; - } - player->unk_25B = temp; + pos++; + if (pos >= 8) { + pos = 0; } + player->cmdBufWritePos = pos; + + player->cmdBufPending++; + } else { + pos = player->cmdBufOverflows + 1; + + if (pos > 99) { + pos = 99; + } + player->cmdBufOverflows = pos; } } } @@ -189,8 +202,8 @@ void snd_start_sound(s32 soundID, u8 volume, u8 pan) { vol |= 0xFF; } - if (pan > 0x7F) { - pan = 0x7F; + if (pan > AU_PAN_MAX) { + pan = AU_PAN_MAX; } au_sfx_enqueue_event(soundManager, soundID, vol, 0, pan); @@ -204,14 +217,14 @@ void snd_start_sound_with_shift(s32 soundID, u8 volume, u8 pan, s16 pitchShift) vol |= 0xFF; } - if (pan > 0x7F) { - pan = 0x7F; + if (pan > AU_PAN_MAX) { + pan = AU_PAN_MAX; } - if (pitchShift > 2400) { - pitchShift = 2400; - } else if (pitchShift < -2400) { - pitchShift = -2400; + if (pitchShift > 2 * AU_OCTAVE_CENTS) { + pitchShift = 2 * AU_OCTAVE_CENTS; + } else if (pitchShift < -2 * AU_OCTAVE_CENTS) { + pitchShift = -2 * AU_OCTAVE_CENTS; } au_sfx_enqueue_event(soundManager, soundID, vol, pitchShift, pan); @@ -225,8 +238,8 @@ void snd_adjust_sound(s32 soundID, u8 volume, u8 pan) { vol |= 0xFF; } - if (pan > 0x7F) { - pan = 0x7F; + if (pan > AU_PAN_MAX) { + pan = AU_PAN_MAX; } au_sfx_enqueue_event(soundManager, soundID | SOUND_ID_ADJUST, vol, 0, pan); @@ -240,14 +253,14 @@ void snd_adjust_sound_with_shift(s32 soundID, u8 volume, u8 pan, s16 pitchShift) vol |= 0xFF; } - if (pan > 0x7F) { - pan = 0x7F; + if (pan > AU_PAN_MAX) { + pan = AU_PAN_MAX; } - if (pitchShift > 2400) { - pitchShift = 2400; - } else if (pitchShift < -2400) { - pitchShift = -2400; + if (pitchShift > 2 * AU_OCTAVE_CENTS) { + pitchShift = 2 * AU_OCTAVE_CENTS; + } else if (pitchShift < -2 * AU_OCTAVE_CENTS) { + pitchShift = -2 * AU_OCTAVE_CENTS; } au_sfx_enqueue_event(soundManager, soundID | SOUND_ID_ADJUST, vol, pitchShift, pan); @@ -274,127 +287,125 @@ AuResult snd_load_ambient(s32 ambSoundID) { } AuResult snd_ambient_play(s32 index, s32 fadeInTime) { - AuResult status = au_amb_check_player_index(index); + AuResult status = au_mseq_check_player_index(index); if (status != AU_RESULT_OK) { return status; } - return au_amb_start(index, fadeInTime); + return au_mseq_start(index, fadeInTime); } AuResult snd_ambient_stop_quick(s32 index) { - AuResult status = au_amb_check_player_index(index); + AuResult status = au_mseq_check_player_index(index); if (status == AU_RESULT_OK) { - au_amb_stop_quick(index); + au_mseq_stop_quick(index); } return status; } AuResult snd_ambient_stop_slow(s32 index, s32 fadeOutTime) { - AuResult status = au_amb_check_player_index(index); + AuResult status = au_mseq_check_player_index(index); if (status == AU_RESULT_OK) { - au_amb_stop_slow(index, fadeOutTime); + au_mseq_stop_slow(index, fadeOutTime); } return status; } AuResult snd_ambient_pause(s32 index, s32 fadeOutTime) { - AuResult status = au_amb_check_player_index(index); + AuResult status = au_mseq_check_player_index(index); if (status == AU_RESULT_OK) { - au_amb_pause(index, fadeOutTime); + au_mseq_pause(index, fadeOutTime); } return status; } AuResult snd_ambient_resume(s32 index, s32 fadeInTime) { - AuResult status = au_amb_check_player_index(index); + AuResult status = au_mseq_check_player_index(index); if (status == AU_RESULT_OK) { - au_amb_resume(index, fadeInTime); + au_mseq_resume(index, fadeInTime); } return status; } AuResult snd_ambient_is_stopped(s32 index) { - AuResult status = au_amb_check_player_index(index); + AuResult status = au_mseq_check_player_index(index); if (status != AU_RESULT_OK) { return status; } - return au_amb_is_stopped(index); + return au_mseq_check_stopped(index); } -// TODO perhaps inaccurate name -AuResult snd_ambient_mute(s32 index, s32 arg1) { - AuResult status = au_amb_check_player_index(index); +AuResult snd_ambient_fade_out(s32 index, s32 arg1) { + AuResult status = au_mseq_check_player_index(index); if (status == AU_RESULT_OK) { - au_amb_load_tracks_fade(index, arg1); + au_mseq_load_tracks_fade(index, arg1); } return status; } AuResult snd_ambient_set_volume(s32 index, s32 time, s32 volume) { - AuResult status = au_amb_check_player_index(index); + AuResult status = au_mseq_check_player_index(index); if (status == AU_RESULT_OK) { - au_amb_set_volume(index, time, volume); + au_mseq_set_volume(index, time, volume); } return status; } AuResult snd_ambient_disable(s32 index) { - AuResult status = au_amb_check_player_index(index); + AuResult status = au_mseq_check_player_index(index); if (status == AU_RESULT_OK) { - au_amb_set_disabled(index, TRUE); + au_mseq_set_disabled(index, TRUE); } return status; } AuResult snd_ambient_enable(s32 index) { - AuResult status = au_amb_check_player_index(index); + AuResult status = au_mseq_check_player_index(index); if (status == AU_RESULT_OK) { - au_amb_set_disabled(index, FALSE); + au_mseq_set_disabled(index, FALSE); } return status; } -// snd_ambient_init_tracks ? -void snd_ambient_80055760(s32 index) { +void snd_ambient_radio_setup(s32 index) { + s32 radioChannels = 4; u32 i; - s32 lim = 4; - AuAmbiencePlayOnlyIndex = 0xFF; + AmbienceRadioChannel = 0xFF; - for (i = 0; i < lim; i++) { + for (i = 0; i < radioChannels; i++) { if (snd_ambient_play(i, 0) != AU_RESULT_OK) { return; } } - snd_ambient_play_only(index); + snd_ambient_radio_select(index); } -AuResult snd_ambient_stop_all(s32 time) { +AuResult snd_ambient_radio_stop(s32 time) { AuResult status = AU_RESULT_OK; - s32 lim = 4; + s32 radioChannels = 4; u32 i; - for (i = 0; i < lim; i++) { - if (i == AuAmbiencePlayOnlyIndex) { + for (i = 0; i < radioChannels; i++) { + if (i == AmbienceRadioChannel) { status = snd_ambient_stop_slow(i, time); } else { status = snd_ambient_stop_quick(i); @@ -406,14 +417,14 @@ AuResult snd_ambient_stop_all(s32 time) { return status; } -AuResult snd_ambient_play_only(s32 index) { +AuResult snd_ambient_radio_select(s32 index) { AuResult status = AU_RESULT_OK; - s32 lim = 4; + s32 radioChannels = 4; - if (index != AuAmbiencePlayOnlyIndex) { + if (index != AmbienceRadioChannel) { u32 i; - for (i = 0; i < lim; i++) { + for (i = 0; i < radioChannels; i++) { if (i == index) { status = snd_ambient_enable(i); } else { @@ -426,14 +437,14 @@ AuResult snd_ambient_play_only(s32 index) { } if (status == AU_RESULT_OK) { - AuAmbiencePlayOnlyIndex = index; + AmbienceRadioChannel = index; } } return status; } -AuResult au_song_load(s32 songID, s32 playerIndex) { +AuResult snd_song_load(s32 songID, s32 playerIndex) { BGMHeader* bgmFile; BGMPlayer* player; @@ -446,55 +457,58 @@ AuResult au_song_load(s32 songID, s32 playerIndex) { } } -AuResult au_song_start(s32 songName) { +/// Unused -- snd_song_request_play but always uses BGM_VARIATION_0 +AuResult snd_song_request_play_default(s32 songName) { AuResult status; - SongUpdateEvent s; + SongStartRequest s; PreventBGMPlayerUpdate = TRUE; s.songName = songName; s.duration = 0; - s.startVolume = 127; - s.finalVolume = 127; - s.variation = 0; - s.unk14 = 0; - status = au_bgm_dispatch_player_event(&s); + s.startVolume = AU_MAX_VOLUME_8; + s.finalVolume = AU_MAX_VOLUME_8; + s.variation = BGM_VARIATION_0; + s.unused_14 = 0; + status = au_bgm_process_init_song(&s); PreventBGMPlayerUpdate = FALSE; return status; } -AuResult au_song_start_variation(s32 songName, s32 variation) { +/// Called from bgm_control to start playing a particular song + variation +AuResult snd_song_request_play(s32 songName, s32 variation) { AuResult status; - SongUpdateEvent s; + SongStartRequest s; PreventBGMPlayerUpdate = TRUE; s.songName = songName; s.duration = 0; - s.startVolume = 127; - s.finalVolume = 127; + s.startVolume = AU_MAX_VOLUME_8; + s.finalVolume = AU_MAX_VOLUME_8; s.variation = variation; - s.unk14 = 0; - status = au_bgm_dispatch_player_event(&s); + s.unused_14 = 0; + status = au_bgm_process_init_song(&s); PreventBGMPlayerUpdate = FALSE; return status; } -AuResult au_song_stop(s32 songName) { +AuResult snd_song_stop(s32 songName) { return au_bgm_stop_song(songName); } -void au_stop_songs(void) { +void snd_song_stop_all(void) { au_bgm_stop_all(); } -AuResult au_song_is_playing(s32 songName) { +AuResult snd_song_is_playing(s32 songName) { return au_bgm_is_song_playing(songName); } -AuResult snd_set_song_variation_fade(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume) { +/// Called from bgm_control to fade in a particular song + variation +AuResult snd_song_request_fade_in(s32 songName, s32 variation, s32 fadeInTime, s32 startVolume, s32 endVolume) { AuResult status; - SongUpdateEvent s; + SongStartRequest s; PreventBGMPlayerUpdate = TRUE; s.songName = songName; @@ -502,16 +516,17 @@ AuResult snd_set_song_variation_fade(s32 songName, s32 variation, s32 fadeInTime s.startVolume = startVolume; s.finalVolume = endVolume; s.variation = variation; - s.unk14 = 0; - status = au_bgm_dispatch_player_event(&s); + s.unused_14 = 0; + status = au_bgm_process_init_song(&s); PreventBGMPlayerUpdate = FALSE; return status; } -AuResult snd_set_song_fade(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume) { +/// Unused +AuResult snd_song_request_fade_in_default(s32 songName, s32 fadeInTime, s32 startVolume, s32 endVolume) { AuResult status; - SongUpdateEvent s; + SongStartRequest s; PreventBGMPlayerUpdate = TRUE; s.songName = songName; @@ -519,117 +534,135 @@ AuResult snd_set_song_fade(s32 songName, s32 fadeInTime, s32 startVolume, s32 en s.startVolume = startVolume; s.finalVolume = endVolume; s.variation = 0; - s.unk14 = 0; - status = au_bgm_dispatch_player_event(&s); + s.unused_14 = 0; + status = au_bgm_process_init_song(&s); PreventBGMPlayerUpdate = FALSE; return status; } -AuResult snd_set_song_variation_fade_time(s32 songName, s32 fadeTime, s32 variation) { - SongUpdateEvent s; +AuResult snd_song_request_fade_out(s32 songName, s32 fadeTime, AuCallback callback) { + SongFadeOutRequest s; + s.songName = songName; s.duration = fadeTime; - s.startVolume = 0; + s.unused_08 = 0; s.finalVolume = 0; - s.variation = variation; - s.unk14 = 0; - return func_8004DB4C(&s); + s.doneCallback = callback; + s.onPush = FALSE; + + return au_bgm_process_fade_out(&s); } -AuResult func_80055AF0(s32 songName) { - SongUpdateEvent s; +AuResult snd_song_push_stop(s32 songName) { + SongSuspendRequest s; + s.songName = songName; s.duration = 0; s.startVolume = 0; s.finalVolume = 0; - s.variation = 0; - s.unk14 = 0; - return func_8004DCB8(&s, 0); + s.index = BGM_SNAPSHOT_0; + s.pauseMode = FALSE; + + return au_bgm_process_suspend(&s, FALSE); // force stop } -AuResult func_80055B28(s32 songName) { +AuResult snd_song_request_pop(s32 songName) { AuResult status; - SongUpdateEvent s; + SongResumeRequest s; PreventBGMPlayerUpdate = TRUE; s.songName = songName; s.duration = 2000; s.startVolume = 1; - s.finalVolume = 127; - s.variation = 0; - s.unk14 = 0; - status = func_8004DE2C(&s); + s.finalVolume = AU_MAX_VOLUME_8; + s.index = BGM_SNAPSHOT_0; + s.pauseMode = FALSE; + status = au_bgm_process_resume(&s); PreventBGMPlayerUpdate = FALSE; return status; } -AuResult func_80055B80(s32 songName) { - SongUpdateEvent s; +AuResult snd_song_request_snapshot(s32 songName) { + SongSuspendRequest s; + s.songName = songName; s.duration = 0; s.startVolume = 0; s.finalVolume = 0; - s.variation = 0; - s.unk14 = 0; - return func_8004DCB8(&s, 1); + s.index = BGM_SNAPSHOT_0; + s.pauseMode = FALSE; + + return au_bgm_process_suspend(&s, TRUE); // no stop } -AuResult func_80055BB8(s32 songName, s32 fadeTime) { - SongUpdateEvent s; +AuResult snd_song_request_push_fade_out(s32 songName, s32 fadeTime) { + SongFadeOutRequest s; + s.songName = songName; s.duration = fadeTime; - s.startVolume = 0; + s.unused_08 = 0; s.finalVolume = 0; - s.variation = 0; - s.unk14 = 1; - return func_8004DB4C(&s); + s.doneCallback = NULL; + s.onPush = TRUE; + + return au_bgm_process_fade_out(&s); } -AuResult func_80055BF0(s32 songName) { - SongUpdateEvent s; +AuResult snd_song_request_pause(s32 songName) { + SongSuspendRequest s; + s.songName = songName; s.duration = 0; s.startVolume = 0; s.finalVolume = 0; - s.variation = 0; - s.unk14 = 1; - return func_8004DCB8(&s, 0); + s.index = BGM_SNAPSHOT_0; + s.pauseMode = TRUE; + + return au_bgm_process_suspend(&s, FALSE); // force stop } -AuResult func_80055C2C(s32 songName) { - SongUpdateEvent s; +AuResult snd_song_request_unpause(s32 songName) { + SongResumeRequest s; + s.songName = songName; s.duration = 0; s.startVolume = 0; s.finalVolume = 0; - s.variation = 0; - s.unk14 = 1; - return func_8004DE2C(&s); + s.index = BGM_SNAPSHOT_0; + s.pauseMode = TRUE; + + return au_bgm_process_resume(&s); } -AuResult func_80055C64(s32 songName) { - SongUpdateEvent s; +AuResult snd_song_set_volume_quiet(s32 songName) { + SongStartRequest s; + s.songName = songName; s.duration = 500; - s.finalVolume = 0x2000; - return func_8004E0F4(&s); + s.finalVolume = 0.25001 * AU_MAX_VOLUME_16; + + return au_bgm_adjust_volume(&s); } -AuResult func_80055C94(s32 songName) { - SongUpdateEvent s; +AuResult snd_song_set_volume_full(s32 songName) { + SongStartRequest s; + s.songName = songName; s.duration = 500; - s.finalVolume = 0x7FFF; - return func_8004E0F4(&s); + s.finalVolume = AU_MAX_VOLUME_16; + + return au_bgm_adjust_volume(&s); } -AuResult snd_set_song_variation(s32 songName, s32 variation) { - SongUpdateEvent s; +AuResult snd_song_set_linked_mode(s32 songName, b32 mode) { + SongSwapLinkedRequest s; + s.songName = songName; - s.variation = variation; - return func_80050970(&s); + s.enabled = mode; + + return au_bgm_set_linked_tracks(&s); } // get file and player information for a given song name if it's currently playing @@ -725,17 +758,17 @@ static u8* snd_song_get_track_volumes_set(MusicTrackVols trackVolSet) { u8* trackVols = NULL; switch (trackVolSet) { - case TRACK_VOLS_0: - trackVols = D_80078DB8; + case TRACK_VOLS_JAN_FULL: + trackVols = TrackVols_JAN_Full; break; - case TRACK_VOLS_1: - trackVols = D_80078DC4; + case TRACK_VOLS_UNUSED_1: + trackVols = TrackVols_Unused1; break; - case TRACK_VOLS_2: - trackVols = D_80078DCC; + case TRACK_VOLS_TIK_SHIVER: + trackVols = TrackVols_TIK_Shiver; break; - case TRACK_VOLS_3: - trackVols = D_80078DD0; + case TRACK_VOLS_UNUSED_3: + trackVols = TrackVols_Unused3; break; case TRACK_VOLS_KPA_OUTSIDE: trackVols = TrackVols_KPA_Outside; @@ -754,8 +787,6 @@ static u8* snd_song_get_track_volumes_set(MusicTrackVols trackVolSet) { return trackVols; } -static const f32 padding[] = {0.0f}; - static AuResult snd_song_change_track_volume(s32 songName, u32 trackIdx, u32 volume) { BGMPlayer* bgmPlayer; BGMHeader* bgmFile; @@ -763,8 +794,8 @@ static AuResult snd_song_change_track_volume(s32 songName, u32 trackIdx, u32 vol status = snd_song_get_playing_info(songName, &bgmFile, &bgmPlayer); if (status == AU_RESULT_OK) { - if (volume > 0x7F) { - volume = 0x7F; + if (volume > AU_MAX_VOLUME_8) { + volume = AU_MAX_VOLUME_8; } if (trackIdx > 15) { trackIdx = 15; @@ -779,46 +810,46 @@ AuResult snd_song_set_track_vol_mute(s32 songName, s32 trackIdx) { } AuResult snd_song_set_track_vol_quiet(s32 songName, s32 trackIdx) { - return snd_song_change_track_volume(songName, trackIdx, 0x3F); + return snd_song_change_track_volume(songName, trackIdx, AU_MAX_VOLUME_8 / 2); } AuResult snd_song_set_track_vol_full(s32 songName, s32 trackIdx) { - return snd_song_change_track_volume(songName, trackIdx, 0x7F); + return snd_song_change_track_volume(songName, trackIdx, AU_MAX_VOLUME_8); } -void bgm_set_proximity_mix_far(s32 songName, s32 mix) { +void snd_song_set_proximity_mix_far(s32 songName, s32 mix) { au_bgm_set_proximity_mix(songName, (u8)mix); } -void bgm_set_proximity_mix_near(s32 songName, s32 mix) { - au_bgm_set_proximity_mix(songName, (u8)mix | 0x57000000); +void snd_song_set_proximity_mix_near(s32 songName, s32 mix) { + au_bgm_set_proximity_mix(songName, (u8)mix | ((s32)(0.69f * AU_MAX_VOLUME_8) << 24)); } -void bgm_set_proximity_mix_full(s32 songName, s32 mix) { - au_bgm_set_proximity_mix(songName, (u8)mix | 0x7F000000); +void snd_song_set_proximity_mix_full(s32 songName, s32 mix) { + au_bgm_set_proximity_mix(songName, (u8)mix | (AU_MAX_VOLUME_8 << 24)); } -void bgm_poll_music_events(MusicEventTrigger** musicEvents, s32* count) { +void snd_song_poll_music_events(MusicEventTrigger** musicEvents, s32* count) { AuGlobals* globals = gSoundGlobals; *musicEvents = globals->musicEventQueue; *count = globals->musicEventQueueCount; } -void bgm_flush_music_events(void) { +void snd_song_flush_music_events(void) { gSoundGlobals->flushMusicEventQueue = TRUE; } -void bgm_trigger_music_event(s32 playerID, s32 trackIndex, s32 eventInfo) { +void snd_song_trigger_music_event(s32 playerID, s32 trackIndex, s32 eventInfo) { AuGlobals* globals = gSoundGlobals; - if (globals->musicEventQueueCount < 16) { - *globals->musicEventQueuePos++ = ((playerID << 0x1C) + ((trackIndex & 0xF) << 0x18) + eventInfo); + if (globals->musicEventQueueCount < MUS_QUEUE_SIZE) { + *globals->musicEventQueuePos++ = ((playerID << 28) + ((trackIndex & 0xF) << 24) + eventInfo); globals->musicEventQueueCount++; } } -void bgm_clear_music_events(void) { +void snd_song_clear_music_events(void) { AuGlobals* globals = gSoundGlobals; s32* buf = globals->musicEventQueue; s32 i = 15; @@ -832,36 +863,38 @@ void bgm_clear_music_events(void) { globals->musicEventQueuePos = globals->musicEventQueue; } -void au_register_callback(AuCallback func, s32 index) { +static const f32 padding[] = {0.0f}; + +void snd_register_callback(AuCallback func, s32 index) { gSoundGlobals->audioThreadCallbacks[index] = func; } -void audio_set_stereo(void) { - func_80056D5C(1); - func_80054DA8(0); +void snd_set_stereo(void) { + au_set_stereo_enabled(TRUE); + au_sync_channel_delay_enabled(0); } -void audio_set_mono(void) { - func_80056D5C(0); - func_80054DA8(1); +void snd_set_mono(void) { + au_set_stereo_enabled(FALSE); + au_sync_channel_delay_enabled(1); } -void func_800561A4(s32 arg0) { - func_80054CE0(1, arg0); +void snd_set_bgm_volume(VolumeLevels volume) { + au_set_bus_volume_level(AUDIO_TYPE_BGM, volume); } -void func_800561C4(s32 arg0) { - func_80054CE0(0x10, arg0); +void snd_set_sfx_volume(VolumeLevels volume) { + au_set_bus_volume_level(AUDIO_TYPE_SFX, volume); } -void func_800561E4(s32 arg0) { - func_80054D74(0x10, arg0); +void snd_set_sfx_reverb_type(s32 reverbType) { + au_set_reverb_type(AUDIO_TYPE_SFX, reverbType); } -void enable_sounds(void) { +void snd_enable_sfx(void) { au_sfx_set_state(gSoundManager, SND_MANAGER_STATE_ENABLED); } -void disable_sounds(void) { +void snd_disable_sfx(void) { au_sfx_set_state(gSoundManager, SND_MANAGER_STATE_DISABLED); } diff --git a/src/battle/area/kzn2/actor/lava_piranha.c b/src/battle/area/kzn2/actor/lava_piranha.c index b5c87ae7ff..c3dd439b3e 100644 --- a/src/battle/area/kzn2/actor/lava_piranha.c +++ b/src/battle/area/kzn2/actor/lava_piranha.c @@ -1355,7 +1355,7 @@ API_CALLABLE(N(ManageFakeoutMusic)) { // play 'end battle' song if (isInitialCall) { sfx_play_sound(SOUND_JINGLE_WON_BATTLE); - bgm_set_song(0, SONG_BATTLE_END, 0, 500, 8); + bgm_set_song(0, SONG_BATTLE_END, 0, 500, VOL_LEVEL_FULL); return ApiStatus_BLOCK; } @@ -1366,7 +1366,7 @@ API_CALLABLE(N(ManageFakeoutMusic)) { return ApiStatus_BLOCK; case 340: // restart the boss theme with the more intense variation - bgm_set_song(0, SONG_LAVA_PIRANHA_BATTLE, 1, 500, 8); + bgm_set_song(0, SONG_LAVA_PIRANHA_BATTLE, 1, 500, VOL_LEVEL_FULL); return ApiStatus_DONE2; } diff --git a/src/battle/btl_states_actions.c b/src/battle/btl_states_actions.c index 98c76c70f8..2c3c3fe244 100644 --- a/src/battle/btl_states_actions.c +++ b/src/battle/btl_states_actions.c @@ -1,4 +1,6 @@ #include "common.h" +#include "audio.h" +#include "audio/public.h" #include "script_api/battle.h" #include "ld_addrs.h" #include "effects.h" @@ -1926,7 +1928,7 @@ void btl_state_update_victory(void) { } if (gBattleStatus.flags1 & BS_FLAGS1_DISABLE_CELEBRATION) { if (!(gBattleStatus.flags2 & BS_FLAGS2_DONT_STOP_MUSIC)) { - bgm_set_song(0, -1, 0, 1500, 8); + bgm_set_song(0, AU_SONG_NONE, 0, 1500, VOL_LEVEL_FULL); } btl_set_state(BATTLE_STATE_END_BATTLE); } else { @@ -2044,7 +2046,7 @@ void btl_state_update_end_training_battle(void) { } encounterStatus->battleOutcome = OUTCOME_ENEMY_FLED; if (!(gBattleStatus.flags2 & BS_FLAGS2_DONT_STOP_MUSIC)) { - bgm_set_song(0, -1, 0, 1500, 8); + bgm_set_song(0, AU_SONG_NONE, 0, 1500, VOL_LEVEL_FULL); } btl_set_state(BATTLE_STATE_END_BATTLE); break; @@ -2330,7 +2332,7 @@ void btl_state_update_run_away(void) { if (gBattleSubState == BTL_SUBSTATE_RUN_AWAY_DONE) { playerData->battlesFled++; if (!(gBattleStatus.flags2 & BS_FLAGS2_DONT_STOP_MUSIC)) { - bgm_set_song(0, -1, 0, 1500, 8); + bgm_set_song(0, AU_SONG_NONE, 0, 1500, VOL_LEVEL_FULL); } btl_set_state(BATTLE_STATE_END_BATTLE); } @@ -2442,7 +2444,7 @@ void btl_state_update_defeat(void) { if (gBattleSubState == BTL_SUBSTATE_DEFEAT_DONE) { currentEncounter->battleOutcome = OUTCOME_PLAYER_LOST; if (!(gBattleStatus.flags2 & BS_FLAGS2_DONT_STOP_MUSIC)) { - bgm_set_song(0, -1, 0, 1500, 8); + bgm_set_song(0, AU_SONG_NONE, 0, 1500, VOL_LEVEL_FULL); } btl_set_state(BATTLE_STATE_END_BATTLE); } diff --git a/src/battle/common/move/StarBeamSupport.inc.c b/src/battle/common/move/StarBeamSupport.inc.c index bda149c469..2432d654f5 100644 --- a/src/battle/common/move/StarBeamSupport.inc.c +++ b/src/battle/common/move/StarBeamSupport.inc.c @@ -401,10 +401,10 @@ API_CALLABLE(N(ProcessPeachStarBeam)) { script->functionTemp[FT_DELAY]--; if (script->functionTemp[FT_DELAY] == 0) { if (!script->functionTemp[FT_IS_PEACH_BEAM]) { - snd_stop_tracking_env_sound_pos(SOUND_LRAW_USE_STAR_BEAM, TRUE); + sfx_stop_tracking_env_sound_pos(SOUND_LRAW_USE_STAR_BEAM, TRUE); sfx_play_sound(SOUND_LRAW_USE_STAR_BEAM | SOUND_ID_TRIGGER_CHANGE_SOUND); } else { - snd_stop_tracking_env_sound_pos(SOUND_LRAW_USE_PEACH_BEAM, TRUE); + sfx_stop_tracking_env_sound_pos(SOUND_LRAW_USE_PEACH_BEAM, TRUE); sfx_play_sound(SOUND_LRAW_USE_PEACH_BEAM | SOUND_ID_TRIGGER_CHANGE_SOUND); } } @@ -444,9 +444,9 @@ API_CALLABLE(N(ProcessPeachStarBeam)) { } if (!script->functionTemp[FT_IS_PEACH_BEAM]) { - snd_stop_tracking_env_sound_pos(SOUND_LRAW_USE_STAR_BEAM, FALSE); + sfx_stop_tracking_env_sound_pos(SOUND_LRAW_USE_STAR_BEAM, FALSE); } else { - snd_stop_tracking_env_sound_pos(SOUND_LRAW_USE_PEACH_BEAM, FALSE); + sfx_stop_tracking_env_sound_pos(SOUND_LRAW_USE_PEACH_BEAM, FALSE); } script->functionTemp[FT_STATE] = PEACH_STAR_BEAM_SPIRITS_SCATTER; break; diff --git a/src/battle/level_up.c b/src/battle/level_up.c index 0c7b5d4af6..1be8e680f6 100644 --- a/src/battle/level_up.c +++ b/src/battle/level_up.c @@ -1,4 +1,6 @@ #include "common.h" +#include "audio.h" +#include "audio/public.h" #include "effects.h" #include "hud_element.h" #include "message_ids.h" @@ -675,9 +677,9 @@ void btl_state_update_celebration(void) { prevSP = playerData->starPoints + battleStatus->totalStarPoints; if (prevSP > 99) { - bgm_set_song(0, SONG_LEVEL_UP, 0, 250, 8); + bgm_set_song(0, SONG_LEVEL_UP, 0, 250, VOL_LEVEL_FULL); } else { - bgm_set_song(0, SONG_BATTLE_END, 0, 250, 8); + bgm_set_song(0, SONG_BATTLE_END, 0, 250, VOL_LEVEL_FULL); } CelebrateStateTime = 0; @@ -1251,7 +1253,7 @@ void btl_state_update_celebration(void) { script->owner1.actorID = ACTOR_PARTNER; } if (!(gBattleStatus.flags2 & BS_FLAGS2_DONT_STOP_MUSIC)) { - bgm_set_song(0, -1, 0, 2000, 8); + bgm_set_song(0, AU_SONG_NONE, 0, 2000, VOL_LEVEL_FULL); } bFadeToBlackAmt = 0; gBattleSubState = BTL_SUBSTATE_CELEBRATE_LEVEL_UP_FADE_OUT; @@ -1348,7 +1350,7 @@ void btl_state_update_celebration(void) { } if (CelebrateStateTime >= 99) { if (!(gBattleStatus.flags2 & BS_FLAGS2_DONT_STOP_MUSIC)) { - bgm_set_song(0, -1, 0, 1500, 8); + bgm_set_song(0, AU_SONG_NONE, 0, 1500, VOL_LEVEL_FULL); } bFadeToBlackAmt = 0; btl_cam_set_params(TRUE, 270, 100, 8, 0, 0x2400, 0, 100); diff --git a/src/bss/engine2_post_bss.c b/src/bss/engine2_post_bss.c index 033e596715..e3dc059aa9 100644 --- a/src/bss/engine2_post_bss.c +++ b/src/bss/engine2_post_bss.c @@ -16,7 +16,7 @@ typedef struct { /* 0xC */ s32 unkC; } AmbientSoundSettings; -BSS MusicSettings gMusicSettings[2]; +BSS MusicControlData gMusicControlData[2]; BSS IMG_BIN D_80159B50[0x200]; BSS Window gWindows[64]; BSS CollisionStatus gCollisionStatus; diff --git a/src/crash_screen.c b/src/crash_screen.c index 55d04bb040..962e10fbff 100644 --- a/src/crash_screen.c +++ b/src/crash_screen.c @@ -325,7 +325,7 @@ void crash_screen_init(void) { gCrashScreen.height = 16; gCrashScreen.frameBuf = (u16*)((osMemSize | 0xA0000000) - ((SCREEN_WIDTH * SCREEN_HEIGHT) * 2)); osCreateMesgQueue(&gCrashScreen.queue, &gCrashScreen.mesg, 1); - osCreateThread(&gCrashScreen.thread, 2, crash_screen_thread_entry, NULL, + osCreateThread(&gCrashScreen.thread, THREAD_ID_CRASH, crash_screen_thread_entry, NULL, gCrashScreen.stack + sizeof(gCrashScreen.stack), 0x80); osStartThread(&gCrashScreen.thread); } diff --git a/src/encounter.c b/src/encounter.c index 5b883a86bc..7b03fbcaf2 100644 --- a/src/encounter.c +++ b/src/encounter.c @@ -1,5 +1,7 @@ #include "battle/battle.h" #include "script_api/battle.h" +#include "audio.h" +#include "audio/public.h" #include "npc.h" #include "effects.h" #include "hud_element.h" @@ -519,7 +521,7 @@ void update_encounters_neutral(void) { } } while (0); - currentEncounter->songID = -1; + currentEncounter->songID = AU_SONG_NONE; currentEncounter->unk_18 = -1; currentEncounter->hitType = 0; currentEncounter->forbidFleeing = FALSE; @@ -1365,7 +1367,7 @@ void update_encounters_pre_battle(void) { } // start battle music - if (currentEncounter->songID < 0) { + if (currentEncounter->songID <= AU_SONG_NONE) { switch (currentEncounter->firstStrikeType) { case FIRST_STRIKE_NONE: bgm_set_battle_song(SONG_NORMAL_BATTLE, FIRST_STRIKE_NONE); @@ -1378,7 +1380,7 @@ void update_encounters_pre_battle(void) { break; } } else { - bgm_set_battle_song(currentEncounter->songID, FIRST_STRIKE_NONE); + bgm_set_battle_song(currentEncounter->songID, BGM_VARIATION_0); } bgm_push_battle_song(); HasPreBattleSongPushed = TRUE; diff --git a/src/entity/jan_iwa/Plants1.c b/src/entity/jan_iwa/Plants1.c index d97284c9a6..7bcf361504 100644 --- a/src/entity/jan_iwa/Plants1.c +++ b/src/entity/jan_iwa/Plants1.c @@ -144,7 +144,7 @@ void func_802BB314_E2DC44(Entity* entity) { void func_802BB34C_E2DC7C(void) { sfx_play_sound(SOUND_LRAW_SPINNING_FLOWER | SOUND_ID_TRIGGER_CHANGE_SOUND); - snd_stop_tracking_env_sound_pos(SOUND_LRAW_SPINNING_FLOWER, TRUE); + sfx_stop_tracking_env_sound_pos(SOUND_LRAW_SPINNING_FLOWER, TRUE); } void entity_PinkFlowerLight_setupGfx(s32 entityIndex) { diff --git a/src/evt/audio_api.c b/src/evt/audio_api.c index efb7281d96..d0315b3278 100644 --- a/src/evt/audio_api.c +++ b/src/evt/audio_api.c @@ -1,4 +1,5 @@ #include "common.h" +#include "audio.h" API_CALLABLE(PollMusicEvents); @@ -20,7 +21,7 @@ API_CALLABLE(PollMusicEvents) { u32 count; s32 i; - bgm_poll_music_events(&list, &count); + snd_song_poll_music_events(&list, &count); for (i = 0; i < count; i++, list++) { MusicEvent* cur = MusicEventList; @@ -46,7 +47,7 @@ API_CALLABLE(PollMusicEvents) { } } } - bgm_flush_music_events(); + snd_song_flush_music_events(); MusicEventPollCount++; return ApiStatus_BLOCK; } @@ -72,14 +73,14 @@ API_CALLABLE(FadeOutMusic) { s32 musicPlayer = evt_get_variable(script, *args++); s32 fadeTime = evt_get_variable(script, *args++); - if (bgm_set_song(musicPlayer, -1, 0, fadeTime, 8)) { + if (bgm_set_song(musicPlayer, AU_SONG_NONE, 0, fadeTime, VOL_LEVEL_FULL)) { return ApiStatus_DONE2; } else { return ApiStatus_BLOCK; } } -API_CALLABLE(SetMusicTrack) { +API_CALLABLE(SetMusic) { Bytecode* args = script->ptrReadPos; s32 musicPlayer = evt_get_variable(script, *args++); s32 songID = evt_get_variable(script, *args++); @@ -102,7 +103,7 @@ API_CALLABLE(FadeInMusic) { s16 fadeStartVolume = evt_get_variable(script, *args++); s16 fadeEndVolume = evt_get_variable(script, *args++); - if (func_8014A964(musicPlayer, songID, variation, fadeTime, fadeStartVolume, fadeEndVolume)) { + if (bgm_fade_in_song(musicPlayer, songID, variation, fadeTime, fadeStartVolume, fadeEndVolume)) { return ApiStatus_DONE2; } else { return ApiStatus_BLOCK; @@ -113,7 +114,7 @@ API_CALLABLE(EnableMusicProximityMix) { Bytecode* args = script->ptrReadPos; s32 playerIndex = evt_get_variable(script, *args++); - gMusicSettings[playerIndex].flags |= MUSIC_SETTINGS_FLAG_ENABLE_PROXIMITY_MIX; + gMusicControlData[playerIndex].flags |= MUSIC_FLAG_ENABLE_PROX_MIX; return ApiStatus_DONE2; } @@ -127,7 +128,7 @@ API_CALLABLE(AdjustMusicProximityMix) { return ApiStatus_DONE2; } -API_CALLABLE(SetMusicTrackVolumes) { +API_CALLABLE(SetTrackVolumes) { Bytecode* args = script->ptrReadPos; s16 trackVolSet = evt_get_variable(script, *args++); @@ -231,7 +232,7 @@ API_CALLABLE(StopTrackingSoundPos) { Bytecode* args = script->ptrReadPos; s32 soundID = evt_get_variable(script, *args++); - snd_stop_tracking_env_sound_pos(soundID, TRUE); + sfx_stop_tracking_env_sound_pos(soundID, TRUE); return ApiStatus_DONE2; } diff --git a/src/filemenu/filemenu_main.c b/src/filemenu/filemenu_main.c index 1d6e7511ac..43dac76f55 100644 --- a/src/filemenu/filemenu_main.c +++ b/src/filemenu/filemenu_main.c @@ -914,9 +914,9 @@ void filemenu_main_handle_input(MenuPanel* menu) { if (originalOutputMode != gGameStatusPtr->soundOutputMode) { sfx_play_sound(SOUND_MENU_CHANGE_TAB); if (gGameStatusPtr->soundOutputMode != SOUND_OUT_MONO) { - audio_set_stereo(); + snd_set_stereo(); } else { - audio_set_mono(); + snd_set_mono(); } } } diff --git a/src/main_loop.c b/src/main_loop.c index 1231722247..81e725273a 100644 --- a/src/main_loop.c +++ b/src/main_loop.c @@ -1,5 +1,6 @@ #include "common.h" #include "nu/nusys.h" +#include "audio/public.h" #include "ld_addrs.h" #include "hud_element.h" #include "sprite.h" @@ -89,7 +90,7 @@ void step_game_loop(void) { step_current_game_mode(); update_entities(); func_80138198(); - bgm_update_music_settings(); + bgm_update_music_control(); update_ambient_sounds(); sfx_update_env_sound_params(); update_windows(); diff --git a/src/os/nusys/nugfxthread.c b/src/os/nusys/nugfxthread.c index 2a599fac5b..797ae00e8f 100644 --- a/src/os/nusys/nugfxthread.c +++ b/src/os/nusys/nugfxthread.c @@ -35,6 +35,6 @@ static void gfxThread(void* data) { } void nuGfxThreadStart(void) { - osCreateThread(&D_800B1B90, 4, gfxThread, NULL, &GfxStack[NU_GFX_STACK_SIZE], NU_GFX_THREAD_PRI); + osCreateThread(&D_800B1B90, NU_GFX_THREAD_ID, gfxThread, NULL, &GfxStack[NU_GFX_STACK_SIZE], NU_GFX_THREAD_PRI); osStartThread(&D_800B1B90); } diff --git a/src/sprite.h b/src/sprite.h index ee65fae1c7..de954545c9 100644 --- a/src/sprite.h +++ b/src/sprite.h @@ -177,6 +177,8 @@ s32 spr_get_npc_color_variations(s32 npcSpriteID); void create_shading_palette(Matrix4f mtx, s32 uls, s32 ult, s32 lrs, s32 lrt, s32 alpha, s32); +void func_801491E4(Matrix4f mtx, s32, s32, s32, s32, s32 alpha); + SpriteAnimData* spr_load_sprite(s32 idx, s32 arg1, s32 arg2); #endif diff --git a/src/state_demo.c b/src/state_demo.c index 506f8d9ddd..840b85ef36 100644 --- a/src/state_demo.c +++ b/src/state_demo.c @@ -151,7 +151,7 @@ void state_init_demo(void) { gGameStatusPtr->demoStickX = 0; gGameStatusPtr->demoStickY = 0; - disable_sounds(); + snd_disable_sfx(); set_map_transition_effect(TRANSITION_END_DEMO_SCENE_BLACK); set_screen_overlay_params_front(OVERLAY_SCREEN_COLOR, 255.0f); clear_saved_variables(); @@ -190,7 +190,7 @@ void state_step_demo(void) { gGameStatusPtr->nextDemoScene = 0; gGameStatusPtr->demoState = DEMO_STATE_NONE; gGameStatusPtr->peachFlags = 0; - enable_sounds(); + snd_enable_sfx(); gGameStatusPtr->context = CONTEXT_WORLD; gGameStatusPtr->debugUnused1 = FALSE; gGameStatusPtr->debugScripts = DEBUG_SCRIPTS_NONE; diff --git a/src/state_file_select.c b/src/state_file_select.c index be4d2c0b7a..eabe4a4bde 100644 --- a/src/state_file_select.c +++ b/src/state_file_select.c @@ -1,4 +1,6 @@ #include "common.h" +#include "audio.h" +#include "audio/public.h" #include "ld_addrs.h" #include "nu/nusys.h" #include "camera.h" @@ -305,7 +307,7 @@ void state_init_exit_file_select(void) { } else { set_map_transition_effect(TRANSITION_ENTER_WORLD); gOverrideFlags &= ~GLOBAL_OVERRIDES_WINDOWS_OVER_CURTAINS; - bgm_set_song(0, -1, 0, 1000, 8); + bgm_set_song(0, AU_SONG_NONE, 0, 1000, VOL_LEVEL_FULL); } gOverrideFlags &= ~GLOBAL_OVERRIDES_40; } diff --git a/src/state_pause.c b/src/state_pause.c index 08e4ef2fa8..691f2f673c 100644 --- a/src/state_pause.c +++ b/src/state_pause.c @@ -1,5 +1,6 @@ #include "common.h" #include "ld_addrs.h" +#include "audio/public.h" #include "npc.h" #include "nu/nusys.h" #include "hud_element.h" diff --git a/src/state_startup.c b/src/state_startup.c index 8fc0ed22ed..08c6710bda 100644 --- a/src/state_startup.c +++ b/src/state_startup.c @@ -1,5 +1,6 @@ #include "common.h" #include "hud_element.h" +#include "audio/public.h" #include "fio.h" #include "sprite.h" #include "game_modes.h" @@ -74,10 +75,10 @@ void state_step_startup(void) { if (gSaveGlobals.useMonoSound == 0) { gGameStatusPtr->soundOutputMode = SOUND_OUT_STEREO; - audio_set_stereo(); + snd_set_stereo(); } else { gGameStatusPtr->soundOutputMode = SOUND_OUT_MONO; - audio_set_mono(); + snd_set_mono(); } #if VERSION_PAL diff --git a/src/state_title_screen.c b/src/state_title_screen.c index 7a8e4ce236..a121a392e1 100644 --- a/src/state_title_screen.c +++ b/src/state_title_screen.c @@ -1,4 +1,6 @@ #include "common.h" +#include "audio.h" +#include "audio/public.h" #include "nu/nusys.h" #include "hud_element.h" #include "sprite.h" @@ -232,7 +234,7 @@ void state_init_title_screen(void) { game_mode_set_fpDrawAuxUI(0, appendGfx_title_screen); load_map_bg("title_bg"); set_background(&gBackgroundImage); - bgm_set_song(0, SONG_MAIN_THEME, 0, 500, 8); + bgm_set_song(0, SONG_MAIN_THEME, 0, 500, VOL_LEVEL_FULL); TitleScreen_TimeLeft = TITLE_START_TIME; } @@ -290,7 +292,7 @@ void state_step_title_screen(void) { } #endif if (PlayIntroNext && TitleScreen_TimeLeft == 120) { - bgm_set_song(0, -1, 0, 3900, 8); + bgm_set_song(0, AU_SONG_NONE, 0, 3900, VOL_LEVEL_FULL); } if (TitleScreen_TimeLeft == 0) { gGameStatusPtr->startupState = TITLE_STATE_BEGIN_DISMISS; @@ -306,7 +308,7 @@ void state_step_title_screen(void) { gGameStatusPtr->startupState = TITLE_STATE_BEGIN_DISMISS; TitleScreenNextState = NEXT_STATE_FILE_SELECT; sfx_play_sound(SOUND_FILE_MENU_IN); - bgm_set_song(0, SONG_FILE_SELECT, 0, 500, 8); + bgm_set_song(0, SONG_FILE_SELECT, 0, 500, VOL_LEVEL_FULL); return; } break; diff --git a/src/world/action/spin.c b/src/world/action/spin.c index 994c0c4880..b57ac08f22 100644 --- a/src/world/action/spin.c +++ b/src/world/action/spin.c @@ -50,7 +50,7 @@ void action_update_spin(void) { playerSpinState->hitWallTime = 0; playerSpinState->bufferedStickAxis.x = 0; playerSpinState->bufferedStickAxis.y = 0; - playerSpinState->spinSoundID = 0; + playerSpinState->spinSoundID = SOUND_NONE; playerStatus->specialDecorationEffect = NULL; playerSpinState->initialSpinTime = 25; playerSpinState->fullSpeedSpinTime = 15; diff --git a/src/world/area_arn/arn_02/music.c b/src/world/area_arn/arn_02/music.c index a3e4c4dad4..abc4ed26fb 100644 --- a/src/world/area_arn/arn_02/music.c +++ b/src/world/area_arn/arn_02/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) EndSwitch Call(PlayAmbientSounds, AMBIENT_WIND) Return diff --git a/src/world/area_arn/arn_03/music.c b/src/world/area_arn/arn_03/music.c index 8fd7eb46f5..3d73703803 100644 --- a/src/world/area_arn/arn_03/music.c +++ b/src/world/area_arn/arn_03/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) EndSwitch Call(PlayAmbientSounds, AMBIENT_WIND) Return diff --git a/src/world/area_arn/arn_04/music.c b/src/world/area_arn/arn_04/music.c index c2c6f0c5fd..727d6fc408 100644 --- a/src/world/area_arn/arn_04/music.c +++ b/src/world/area_arn/arn_04/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) EndSwitch Call(PlayAmbientSounds, AMBIENT_WIND) Return diff --git a/src/world/area_arn/arn_05/music.c b/src/world/area_arn/arn_05/music.c index 949cc899b0..79994d4a8b 100644 --- a/src/world/area_arn/arn_05/music.c +++ b/src/world/area_arn/arn_05/music.c @@ -4,13 +4,13 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_SAW_TUBBA_EAT_BOO) - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) EndSwitch Call(PlayAmbientSounds, AMBIENT_WIND) Return diff --git a/src/world/area_arn/arn_05/npc.c b/src/world/area_arn/arn_05/npc.c index e473f0a359..119665df69 100644 --- a/src/world/area_arn/arn_05/npc.c +++ b/src/world/area_arn/arn_05/npc.c @@ -418,7 +418,7 @@ EvtScript N(EVS_Scene_TubbaRaid) = { Call(CloseMessage) Call(ForceUsePartner) Wait(60 * DT) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 1, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(SetCamType, CAM_DEFAULT, 6, TRUE) Call(SetCamSpeed, CAM_DEFAULT, Float(90.0)) Call(SetCamPitch, CAM_DEFAULT, Float(17.0), Float(-11.5)) diff --git a/src/world/area_arn/arn_07/music.c b/src/world/area_arn/arn_07/music.c index 2830dd4ef9..918f50e90d 100644 --- a/src/world/area_arn/arn_07/music.c +++ b/src/world/area_arn/arn_07/music.c @@ -3,18 +3,18 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_WIND) CaseLt(STORY_CH3_HEART_ESCAPED_WINDY_MILL) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_WIND) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_BLUBBA_THEME, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_BLUBBA_THEME, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_WIND) CaseEq(STORY_CH3_BEGAN_PEACH_MISSION) - Call(SetMusicTrack, 0, SONG_STAR_SPIRIT_THEME, 1, 8) + Call(SetMusic, 0, SONG_STAR_SPIRIT_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_WIND) EndSwitch Return diff --git a/src/world/area_arn/arn_07/npc.c b/src/world/area_arn/arn_07/npc.c index a2ca96035d..7de650faf3 100644 --- a/src/world/area_arn/arn_07/npc.c +++ b/src/world/area_arn/arn_07/npc.c @@ -117,7 +117,7 @@ EvtScript N(EVS_Scene_BossDefeated) = { Call(SetNpcPos, NPC_SELF, NPC_DISPOSE_LOCATION) Call(EnableNpcShadow, NPC_SELF, FALSE) Set(GB_StoryProgress, STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_CHEERFUL_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_CHEERFUL_BOOS_MANSION, 0, VOL_LEVEL_FULL) Call(GetCurrentPartnerID, LVar6) IfEq(LVar6, PARTNER_BOW) Set(LVar5, -4) @@ -310,7 +310,7 @@ EvtScript N(EVS_NpcDefeat_Tubba) = { Call(GetBattleOutcome, LVar0) Switch(LVar0) CaseEq(OUTCOME_PLAYER_WON) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 1, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, BGM_VARIATION_1, VOL_LEVEL_FULL) ExecWait(N(EVS_Scene_TubbaRelents)) Exec(N(EVS_Scene_BossDefeated)) CaseEq(OUTCOME_PLAYER_LOST) diff --git a/src/world/area_arn/arn_08/music.c b/src/world/area_arn/arn_08/music.c index 81124ef7ea..772c8fde3c 100644 --- a/src/world/area_arn/arn_08/music.c +++ b/src/world/area_arn/arn_08/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_HEART_FLED_FIRST_TUNNEL) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_BLUBBA_THEME, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_BLUBBA_THEME, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) EndSwitch Call(ClearAmbientSounds, 250) Return diff --git a/src/world/area_arn/arn_09/music.c b/src/world/area_arn/arn_09/music.c index 018e56433f..1dba2371f4 100644 --- a/src/world/area_arn/arn_09/music.c +++ b/src/world/area_arn/arn_09/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_HEART_FLED_FIRST_TUNNEL) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_BLUBBA_THEME, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_BLUBBA_THEME, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_arn/arn_10/music.c b/src/world/area_arn/arn_10/music.c index 2f956c38b6..78673af522 100644 --- a/src/world/area_arn/arn_10/music.c +++ b/src/world/area_arn/arn_10/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_HEART_FLED_FIRST_TUNNEL) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_BLUBBA_THEME, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_BLUBBA_THEME, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_arn/arn_11/music.c b/src/world/area_arn/arn_11/music.c index 72e133c3b0..1440ac18b3 100644 --- a/src/world/area_arn/arn_11/music.c +++ b/src/world/area_arn/arn_11/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_WENT_DOWN_THE_WELL) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_BLUBBA_THEME, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_BLUBBA_THEME, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_arn/arn_12/music.c b/src/world/area_arn/arn_12/music.c index ee66a8b482..eec8bc3ca2 100644 --- a/src/world/area_arn/arn_12/music.c +++ b/src/world/area_arn/arn_12/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_HEART_FLED_FIRST_TUNNEL) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_BLUBBA_THEME, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_BLUBBA_THEME, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_arn/arn_13/music.c b/src/world/area_arn/arn_13/music.c index 8eb6219f33..329f42fd3a 100644 --- a/src/world/area_arn/arn_13/music.c +++ b/src/world/area_arn/arn_13/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_HEART_FLED_FIRST_TUNNEL) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_BLUBBA_THEME, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_BLUBBA_THEME, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_00/music.c b/src/world/area_dgb/dgb_00/music.c index 7eb948814e..05dcc438b7 100644 --- a/src/world/area_dgb/dgb_00/music.c +++ b/src/world/area_dgb/dgb_00/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) EndSwitch Call(ClearAmbientSounds, 250) Return diff --git a/src/world/area_dgb/dgb_01/music.c b/src/world/area_dgb/dgb_01/music.c index d750820fc4..37e0463ee3 100644 --- a/src/world/area_dgb/dgb_01/music.c +++ b/src/world/area_dgb/dgb_01/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Call(ClearAmbientSounds, 250) Return diff --git a/src/world/area_dgb/dgb_02/music.c b/src/world/area_dgb/dgb_02/music.c index a037c680d4..268153f84d 100644 --- a/src/world/area_dgb/dgb_02/music.c +++ b/src/world/area_dgb/dgb_02/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_03/music.c b/src/world/area_dgb/dgb_03/music.c index fda711525b..6cbe138a18 100644 --- a/src/world/area_dgb/dgb_03/music.c +++ b/src/world/area_dgb/dgb_03/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_04/music.c b/src/world/area_dgb/dgb_04/music.c index 2f159f9ef7..b1dba02f41 100644 --- a/src/world/area_dgb/dgb_04/music.c +++ b/src/world/area_dgb/dgb_04/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_05/music.c b/src/world/area_dgb/dgb_05/music.c index fe3abd8eab..10ba84c71b 100644 --- a/src/world/area_dgb/dgb_05/music.c +++ b/src/world/area_dgb/dgb_05/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_06/music.c b/src/world/area_dgb/dgb_06/music.c index 78d6716c66..f7e6c372f0 100644 --- a/src/world/area_dgb/dgb_06/music.c +++ b/src/world/area_dgb/dgb_06/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_07/music.c b/src/world/area_dgb/dgb_07/music.c index f404715ff0..17a5490bbb 100644 --- a/src/world/area_dgb/dgb_07/music.c +++ b/src/world/area_dgb/dgb_07/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_08/music.c b/src/world/area_dgb/dgb_08/music.c index 5d48660f30..527411bffb 100644 --- a/src/world/area_dgb/dgb_08/music.c +++ b/src/world/area_dgb/dgb_08/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_09/music.c b/src/world/area_dgb/dgb_09/music.c index 305571645e..57af739801 100644 --- a/src/world/area_dgb/dgb_09/music.c +++ b/src/world/area_dgb/dgb_09/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_10/music.c b/src/world/area_dgb/dgb_10/music.c index 3cc98ccf0f..587547f8fb 100644 --- a/src/world/area_dgb/dgb_10/music.c +++ b/src/world/area_dgb/dgb_10/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_11/music.c b/src/world/area_dgb/dgb_11/music.c index a1937414cd..7c1ad8df40 100644 --- a/src/world/area_dgb/dgb_11/music.c +++ b/src/world/area_dgb/dgb_11/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_12/music.c b/src/world/area_dgb/dgb_12/music.c index 30180801b7..097594fbc7 100644 --- a/src/world/area_dgb/dgb_12/music.c +++ b/src/world/area_dgb/dgb_12/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_13/music.c b/src/world/area_dgb/dgb_13/music.c index 4ef9942c44..39d4797799 100644 --- a/src/world/area_dgb/dgb_13/music.c +++ b/src/world/area_dgb/dgb_13/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_14/music.c b/src/world/area_dgb/dgb_14/music.c index 402fc27c06..3cee133379 100644 --- a/src/world/area_dgb/dgb_14/music.c +++ b/src/world/area_dgb/dgb_14/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_15/music.c b/src/world/area_dgb/dgb_15/music.c index be2b0d8162..3d917d377c 100644 --- a/src/world/area_dgb/dgb_15/music.c +++ b/src/world/area_dgb/dgb_15/music.c @@ -4,14 +4,14 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) IfEq(GB_ARN_Tubba_MapID, 15) - Call(SetMusicTrack, 0, SONG_TUBBA_BLUBBA_THEME, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_BLUBBA_THEME, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndIf CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_15/npc.c b/src/world/area_dgb/dgb_15/npc.c index f57250ac02..7038e2b868 100644 --- a/src/world/area_dgb/dgb_15/npc.c +++ b/src/world/area_dgb/dgb_15/npc.c @@ -38,7 +38,7 @@ EvtScript N(EVS_NpcIdle_Tubba) = { Wait(1) EndLoop Call(DisablePlayerInput, TRUE) - Call(SetMusicTrack, 0, SONG_TUBBA_BLUBBA_THEME, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_BLUBBA_THEME, 0, VOL_LEVEL_FULL) Wait(15) Thread Call(UseSettingsFrom, CAM_DEFAULT, -50, 0, 180) @@ -51,7 +51,7 @@ EvtScript N(EVS_NpcIdle_Tubba) = { Call(SetNpcAnimation, NPC_Tubba, ANIM_WorldTubba_Anim09) Call(SetNpcYaw, NPC_SELF, 270) Call(NpcMoveTo, NPC_SELF, -53, 180, 60) - Call(SetMusicTrack, 0, SONG_TUBBA_BLUBBA_THEME, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_BLUBBA_THEME, 0, VOL_LEVEL_FULL) Call(SetNpcAnimation, NPC_SELF, ANIM_WorldTubba_Anim06) Wait(15) Call(SpeakToPlayer, NPC_SELF, ANIM_WorldTubba_Anim10, ANIM_WorldTubba_Anim06, 0, MSG_CH3_00F3) diff --git a/src/world/area_dgb/dgb_16/music.c b/src/world/area_dgb/dgb_16/music.c index 11a5ef59bb..8255e7ff99 100644 --- a/src/world/area_dgb/dgb_16/music.c +++ b/src/world/area_dgb/dgb_16/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_17/music.c b/src/world/area_dgb/dgb_17/music.c index 694eb205bc..5d28d37118 100644 --- a/src/world/area_dgb/dgb_17/music.c +++ b/src/world/area_dgb/dgb_17/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_18/music.c b/src/world/area_dgb/dgb_18/music.c index a65c7c2d84..7baad3ea82 100644 --- a/src/world/area_dgb/dgb_18/music.c +++ b/src/world/area_dgb/dgb_18/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TUBBAS_MANOR, 0, 8) + Call(SetMusic, 0, SONG_TUBBAS_MANOR, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_dgb/dgb_18/npc.c b/src/world/area_dgb/dgb_18/npc.c index c2c434fb26..9504857cdc 100644 --- a/src/world/area_dgb/dgb_18/npc.c +++ b/src/world/area_dgb/dgb_18/npc.c @@ -102,7 +102,7 @@ EvtScript N(EVS_Scene_TubbaFallsAsleep) = { Wait(5) EndLoop EndThread - Call(SetMusicTrack, 0, SONG_TUBBA_BLUBBA_THEME, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_BLUBBA_THEME, 0, VOL_LEVEL_FULL) Call(SetNpcAnimation, NPC_SELF, ANIM_WorldTubba_Anim09) Call(SetNpcPos, NPC_SELF, -210, 0, 180) Call(NpcMoveTo, NPC_SELF, -60, 180, 30) @@ -427,7 +427,7 @@ EvtScript N(EVS_Scene_YakkeyShouts) = { BreakLoop EndIf EndLoop - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) Call(SetNpcVar, NPC_Tubba, 1, 1) Wait(15) Call(SetNpcAnimation, NPC_Tubba, ANIM_WorldTubba_Anim25) diff --git a/src/world/area_dro/dro_01/music.c b/src/world/area_dro/dro_01/music.c index 7c9a07eb64..bd23552b75 100644 --- a/src/world/area_dro/dro_01/music.c +++ b/src/world/area_dro/dro_01/music.c @@ -7,7 +7,7 @@ EvtScript N(EVS_SetupMusic) = { CaseOrEq(dro_01_ENTRY_4) EndCaseGroup CaseDefault - Call(SetMusicTrack, 0, SONG_DRY_DRY_OUTPOST, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_OUTPOST, 0, VOL_LEVEL_FULL) EndCaseGroup EndSwitch Return diff --git a/src/world/area_dro/dro_02/music.c b/src/world/area_dro/dro_02/music.c index faa47ff0ab..dd2eaeb236 100644 --- a/src/world/area_dro/dro_02/music.c +++ b/src/world/area_dro/dro_02/music.c @@ -7,7 +7,7 @@ EvtScript N(EVS_SetupMusic) = { CaseOrEq(dro_02_ENTRY_3) EndCaseGroup CaseDefault - Call(SetMusicTrack, 0, SONG_DRY_DRY_OUTPOST, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_OUTPOST, 0, VOL_LEVEL_FULL) EndCaseGroup EndSwitch Return @@ -15,13 +15,13 @@ EvtScript N(EVS_SetupMusic) = { }; EvtScript N(EVS_PlayRestMusic) = { - Call(SetMusicTrack, 0, SONG_TAKING_REST, 0, 8) + Call(SetMusic, 0, SONG_TAKING_REST, 0, VOL_LEVEL_FULL) Return End }; EvtScript N(EVS_PlayMoustafaMusic) = { - Call(SetMusicTrack, 0, SONG_MOUSTAFA_THEME, 0, 8) + Call(SetMusic, 0, SONG_MOUSTAFA_THEME, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_dro/dro_02/npc_merlee.c b/src/world/area_dro/dro_02/npc_merlee.c index 8322368ba5..4c1aafe171 100644 --- a/src/world/area_dro/dro_02/npc_merlee.c +++ b/src/world/area_dro/dro_02/npc_merlee.c @@ -812,7 +812,7 @@ EvtScript N(EVS_NpcInteract_Merlee) = { Return EndIf Call(ContinueSpeech, -1, ANIM_WorldMerlee_Talk, ANIM_WorldMerlee_Idle, 0, MSG_CH2_00DA) - Call(SetMusicTrack, 0, SONG_MERLEE_SPELL, 0, 8) + Call(SetMusic, 0, SONG_MERLEE_SPELL, 0, VOL_LEVEL_FULL) Call(DisablePartnerAI, 0) Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE) ExecGetTID(N(EVS_PerformRitual), LVar9) diff --git a/src/world/area_end/end_00/allies.c b/src/world/area_end/end_00/allies.c index b3543af2b6..821e04cf04 100644 --- a/src/world/area_end/end_00/allies.c +++ b/src/world/area_end/end_00/allies.c @@ -29,7 +29,7 @@ EvtScript N(EVS_ParadePhase_Luigi) = { Wait(30 * DT) Call(SetNpcAnimation, NPC_Luigi, ANIM_ParadeLuigi_MarchInPlace) Wait(7 * DT) - Call(SetMusicTrack, 0, SONG_PARADE_DAY, 0, 8) + Call(SetMusic, 0, SONG_PARADE_DAY, 0, VOL_LEVEL_FULL) Wait(120 * DT) Wait(100 * DT) Call(InterpNpcYaw, NPC_Luigi, 270, 0) diff --git a/src/world/area_end/end_01/parade_setup.c b/src/world/area_end/end_01/parade_setup.c index e1f55850bc..5c91727675 100644 --- a/src/world/area_end/end_01/parade_setup.c +++ b/src/world/area_end/end_01/parade_setup.c @@ -735,7 +735,7 @@ EvtScript N(EVS_ParadePhase_PlayCredits) = { EvtScript N(EVS_ManageParade) = { Call(DisablePlayerInput, TRUE) Call(DisablePlayerPhysics, TRUE) - Call(SetMusicTrack, 0, SONG_PARADE_NIGHT, 0, 8) + Call(SetMusic, 0, SONG_PARADE_NIGHT, 0, VOL_LEVEL_FULL) Exec(N(EVS_SetupInitialCamera)) Exec(N(EVS_ManageNpcPool)) ExecGetTID(N(EVS_ParadePhase_StarSpirits), LVarA) diff --git a/src/world/area_flo/flo_00/beanstalk.c b/src/world/area_flo/flo_00/beanstalk.c index 2fe252d2f1..9b001c4370 100644 --- a/src/world/area_flo/flo_00/beanstalk.c +++ b/src/world/area_flo/flo_00/beanstalk.c @@ -253,7 +253,7 @@ EvtScript N(EVS_Exit_Beanstalk) = { Call(SetNpcJumpscale, NPC_PARTNER, Float(0.0)) Call(NpcJump0, NPC_PARTNER, LVarC, LVarD, LVarE, 5) Call(PlaySound, SOUND_FLO_RIDE_BEANSTALK_UP_LOOP) - Call(SetMusicTrack, 0, SONG_MAGIC_BEANSTALK, 1, 8) + Call(SetMusic, 0, SONG_MAGIC_BEANSTALK, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE) Call(SetPlayerAnimation, ANIM_Mario1_Walk) Call(N(GetPlayerAngles), LVar3, LVar4) diff --git a/src/world/area_flo/flo_00/music.c b/src/world/area_flo/flo_00/music.c index 0747c92740..fb267ee4ee 100644 --- a/src/world/area_flo/flo_00/music.c +++ b/src/world/area_flo/flo_00/music.c @@ -5,14 +5,14 @@ EvtScript N(EVS_SetupMusic) = { Switch(LVar0) CaseEq(flo_00_ENTRY_8) IfNe(AF_FLO_RidingBeanstalk, FALSE) - Call(SetMusicTrack, 0, SONG_MAGIC_BEANSTALK, 1, 8) + Call(SetMusic, 0, SONG_MAGIC_BEANSTALK, BGM_VARIATION_1, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndIf CaseEq(flo_00_ENTRY_9) - Call(SetMusicTrack, 0, SONG_SUNSHINE_RETURNS, 0, 8) + Call(SetMusic, 0, SONG_SUNSHINE_RETURNS, 0, VOL_LEVEL_FULL) CaseEq(flo_00_ENTRY_A) - Call(SetMusicTrack, 0, SONG_STAR_SPIRIT_THEME, 1, 8) + Call(SetMusic, 0, SONG_STAR_SPIRIT_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) Thread Loop(0) Wait(1) @@ -20,16 +20,16 @@ EvtScript N(EVS_SetupMusic) = { BreakLoop EndIf EndLoop - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndThread CaseEq(flo_00_ENTRY_B) Call(FadeInMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 3000, 0, 127) CaseDefault Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch EndSwitch Return diff --git a/src/world/area_flo/flo_03/music.c b/src/world/area_flo/flo_03/music.c index 4243508597..1d1fbfa34c 100644 --- a/src/world/area_flo/flo_03/music.c +++ b/src/world/area_flo/flo_03/music.c @@ -3,19 +3,19 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, flo_03_ENTRY_2) - Call(SetMusicTrack, 0, SONG_SUNSHINE_RETURNS, 0, 8) + Call(SetMusic, 0, SONG_SUNSHINE_RETURNS, 0, VOL_LEVEL_FULL) Else Switch(GB_StoryProgress) CaseLe(STORY_CH6_ASKED_TO_DEFEAT_MONTY_MOLES) IfEq(GF_FLO03_DefeatedAll_MontyMoles, FALSE) - Call(SetMusicTrack, 0, SONG_MONTY_MOLE_ASSAULT, 0, 8) + Call(SetMusic, 0, SONG_MONTY_MOLE_ASSAULT, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) EndIf CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch EndIf Return diff --git a/src/world/area_flo/flo_07/music.c b/src/world/area_flo/flo_07/music.c index c0e51e32bf..0df896772c 100644 --- a/src/world/area_flo/flo_07/music.c +++ b/src/world/area_flo/flo_07/music.c @@ -3,13 +3,13 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, flo_07_ENTRY_1) - Call(SetMusicTrack, 0, SONG_SUNSHINE_RETURNS, 0, 8) + Call(SetMusic, 0, SONG_SUNSHINE_RETURNS, 0, VOL_LEVEL_FULL) Else Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch EndIf Call(PlaySound, SOUND_LOOP_FLO_WATER_FLOW_1) diff --git a/src/world/area_flo/flo_08/music.c b/src/world/area_flo/flo_08/music.c index 2611463150..1879de48ba 100644 --- a/src/world/area_flo/flo_08/music.c +++ b/src/world/area_flo/flo_08/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_flo/flo_09/music.c b/src/world/area_flo/flo_09/music.c index 495a8fccea..a08058ef86 100644 --- a/src/world/area_flo/flo_09/music.c +++ b/src/world/area_flo/flo_09/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_flo/flo_10/music.c b/src/world/area_flo/flo_10/music.c index 4760bd6a6c..c7150b3c7f 100644 --- a/src/world/area_flo/flo_10/music.c +++ b/src/world/area_flo/flo_10/music.c @@ -3,13 +3,13 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, flo_10_ENTRY_1) - Call(SetMusicTrack, 0, SONG_SUNSHINE_RETURNS, 0, 8) + Call(SetMusic, 0, SONG_SUNSHINE_RETURNS, 0, VOL_LEVEL_FULL) Else Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch EndIf IfGe(GB_StoryProgress, STORY_CH6_FILLED_SPRING_WITH_WATER) diff --git a/src/world/area_flo/flo_11/music.c b/src/world/area_flo/flo_11/music.c index eb4e98a91a..3240d5cc98 100644 --- a/src/world/area_flo/flo_11/music.c +++ b/src/world/area_flo/flo_11/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_flo/flo_12/music.c b/src/world/area_flo/flo_12/music.c index 2ad1e5a598..e2cfd20f94 100644 --- a/src/world/area_flo/flo_12/music.c +++ b/src/world/area_flo/flo_12/music.c @@ -3,13 +3,13 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, flo_12_ENTRY_1) - Call(SetMusicTrack, 0, SONG_SUNSHINE_RETURNS, 0, 8) + Call(SetMusic, 0, SONG_SUNSHINE_RETURNS, 0, VOL_LEVEL_FULL) Else Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch EndIf Return diff --git a/src/world/area_flo/flo_13/music.c b/src/world/area_flo/flo_13/music.c index 4750aeb400..7bae1b8e98 100644 --- a/src/world/area_flo/flo_13/music.c +++ b/src/world/area_flo/flo_13/music.c @@ -8,9 +8,9 @@ EvtScript N(EVS_PlaySongForPlayerPos) = { Label(0) Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Loop(0) Call(GetPlayerPos, LVar0, LVar1, LVar2) @@ -22,9 +22,9 @@ EvtScript N(EVS_PlaySongForPlayerPos) = { Label(10) Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_SUN_TOWER_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_SUN_TOWER_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_SUN_TOWER_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_SUN_TOWER_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Loop(0) Call(GetPlayerPos, LVar0, LVar1, LVar2) @@ -45,7 +45,7 @@ EvtScript N(EVS_SetupMusic) = { }; EvtScript N(EVS_PushPartnerSong) = { - Call(SetMusicTrack, 0, SONG_NEW_PARTNER, 0, 8) + Call(SetMusic, 0, SONG_NEW_PARTNER, 0, VOL_LEVEL_FULL) Return End }; @@ -53,7 +53,7 @@ EvtScript N(EVS_PushPartnerSong) = { EvtScript N(EVS_PopSong) = { Call(FadeOutMusic, 0, 500) Wait(15) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_flo/flo_13/npc.c b/src/world/area_flo/flo_13/npc.c index 5ed1f8987a..ec8a36b3de 100644 --- a/src/world/area_flo/flo_13/npc.c +++ b/src/world/area_flo/flo_13/npc.c @@ -230,7 +230,7 @@ EvtScript N(EVS_NpcIdle_Lakilester) = { Call(AwaitPlayerApproach, 200, 20, 275) Call(DisablePlayerInput, TRUE) Call(SetNpcPos, NPC_Lakilester, -250, 120, 45) - Call(SetMusicTrack, 0, SONG_LAKILESTER_THEME, 0, 8) + Call(SetMusic, 0, SONG_LAKILESTER_THEME, 0, VOL_LEVEL_FULL) Call(ShowMessageAtScreenPos, MSG_CH6_00A0, 160, 40) Call(InterruptUsePartner) Call(SetPlayerAnimation, ANIM_Mario1_LookUp) diff --git a/src/world/area_flo/flo_14/music.c b/src/world/area_flo/flo_14/music.c index 8a64cc9f69..210314d81d 100644 --- a/src/world/area_flo/flo_14/music.c +++ b/src/world/area_flo/flo_14/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_flo/flo_15/music.c b/src/world/area_flo/flo_15/music.c index 4d1969911b..7d14943130 100644 --- a/src/world/area_flo/flo_15/music.c +++ b/src/world/area_flo/flo_15/music.c @@ -3,13 +3,13 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, flo_15_ENTRY_1) - Call(SetMusicTrack, 0, SONG_SUNSHINE_RETURNS, 0, 8) + Call(SetMusic, 0, SONG_SUNSHINE_RETURNS, 0, VOL_LEVEL_FULL) Else Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_SUN_TOWER_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_SUN_TOWER_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_SUN_TOWER_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_SUN_TOWER_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch EndIf Return diff --git a/src/world/area_flo/flo_16/music.c b/src/world/area_flo/flo_16/music.c index 0ddb4dff52..6f76b85b93 100644 --- a/src/world/area_flo/flo_16/music.c +++ b/src/world/area_flo/flo_16/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_flo/flo_17/music.c b/src/world/area_flo/flo_17/music.c index 47ad5d845c..e127832ca2 100644 --- a/src/world/area_flo/flo_17/music.c +++ b/src/world/area_flo/flo_17/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_flo/flo_18/music.c b/src/world/area_flo/flo_18/music.c index 445a984229..132f5fd801 100644 --- a/src/world/area_flo/flo_18/music.c +++ b/src/world/area_flo/flo_18/music.c @@ -3,10 +3,10 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_PUFF_PUFF_MACHINE, 0, 8) + Call(SetMusic, 0, SONG_PUFF_PUFF_MACHINE, 0, VOL_LEVEL_FULL) Call(PlaySoundAtCollider, COLLIDER_o126, SOUND_LOOP_PUFF_PUFF_MACHINE, SOUND_SPACE_DEFAULT) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_flo/flo_19/beanstalk.c b/src/world/area_flo/flo_19/beanstalk.c index a302c9d177..3d54519e21 100644 --- a/src/world/area_flo/flo_19/beanstalk.c +++ b/src/world/area_flo/flo_19/beanstalk.c @@ -229,7 +229,7 @@ EvtScript N(EVS_Exit_Beanstalk) = { Call(SetNpcJumpscale, NPC_PARTNER, Float(0.0)) Call(NpcJump0, NPC_PARTNER, LVarC, LVarD, LVarE, 5) Call(PlaySound, SOUND_FLO_RIDE_BEANSTALK_DOWN_LOOP) - Call(SetMusicTrack, 0, SONG_MAGIC_BEANSTALK, 1, 8) + Call(SetMusic, 0, SONG_MAGIC_BEANSTALK, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE) Call(SetPlayerAnimation, ANIM_Mario1_Walk) Call(N(GetPlayerAngles), LVar3, LVar4) diff --git a/src/world/area_flo/flo_19/music.c b/src/world/area_flo/flo_19/music.c index 4b39d4f5a0..bc841572d1 100644 --- a/src/world/area_flo/flo_19/music.c +++ b/src/world/area_flo/flo_19/music.c @@ -5,7 +5,7 @@ EvtScript N(EVS_SetupMusic) = { Switch(LVar0) CaseOrEq(flo_19_ENTRY_0) CaseOrEq(flo_19_ENTRY_1) - Call(SetMusicTrack, 0, SONG_CLOUDY_CLIMB, 0, 8) + Call(SetMusic, 0, SONG_CLOUDY_CLIMB, 0, VOL_LEVEL_FULL) EndCaseGroup CaseOrEq(flo_19_ENTRY_2) CaseOrEq(7) diff --git a/src/world/area_flo/flo_21/music.c b/src/world/area_flo/flo_21/music.c index 8a3e0c5f36..f872298385 100644 --- a/src/world/area_flo/flo_21/music.c +++ b/src/world/area_flo/flo_21/music.c @@ -4,7 +4,7 @@ EvtScript N(EVS_SetupMusic) = { IfEq(GB_StoryProgress, STORY_CH6_DEFEATED_HUFF_N_PUFF) Call(FadeOutMusic, 0, 500) Else - Call(SetMusicTrack, 0, SONG_CLOUDY_CLIMB, 0, 8) + Call(SetMusic, 0, SONG_CLOUDY_CLIMB, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_flo/flo_21/npc.c b/src/world/area_flo/flo_21/npc.c index 08f0f77c8c..6ed448fd6b 100644 --- a/src/world/area_flo/flo_21/npc.c +++ b/src/world/area_flo/flo_21/npc.c @@ -82,7 +82,7 @@ EvtScript N(EVS_Scene_HuffNPuffAmbush) = { EndIf Call(AwaitPlayerApproach, 650, 0, 30) Call(DisablePlayerInput, TRUE) - Call(SetMusicTrack, 0, SONG_HUFF_N_PUFF_THEME, 0, 8) + Call(SetMusic, 0, SONG_HUFF_N_PUFF_THEME, 0, VOL_LEVEL_FULL) ExecGetTID(N(EVS_PlayRumbleSounds), LVar9) Call(GetPartnerInUse, LVar0) IfNe(LVar0, PARTNER_NONE) diff --git a/src/world/area_flo/flo_22/music.c b/src/world/area_flo/flo_22/music.c index 2dda67bc1f..1d7ebd6d45 100644 --- a/src/world/area_flo/flo_22/music.c +++ b/src/world/area_flo/flo_22/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_flo/flo_23/music.c b/src/world/area_flo/flo_23/music.c index 1d6e4322b5..9ce657223a 100644 --- a/src/world/area_flo/flo_23/music.c +++ b/src/world/area_flo/flo_23/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_flo/flo_24/music.c b/src/world/area_flo/flo_24/music.c index 9f5dca0e25..a2e153b8a8 100644 --- a/src/world/area_flo/flo_24/music.c +++ b/src/world/area_flo/flo_24/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndIf IfGe(GB_StoryProgress, STORY_CH6_FILLED_SPRING_WITH_WATER) Call(PlaySound, SOUND_LOOP_FLO_WATER_FLOW_2) diff --git a/src/world/area_flo/flo_25/music.c b/src/world/area_flo/flo_25/music.c index d15877264a..947c17e7ee 100644 --- a/src/world/area_flo/flo_25/music.c +++ b/src/world/area_flo/flo_25/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_gv/gv_01/main.c b/src/world/area_gv/gv_01/main.c index 657611f05d..1fc1254d90 100644 --- a/src/world/area_gv/gv_01/main.c +++ b/src/world/area_gv/gv_01/main.c @@ -183,7 +183,7 @@ EvtScript N(EVS_Main) = { Call(SetPlayerAnimation, ANIM_Mario1_Fallen) EndSwitch EndThread - Call(SetMusicTrack, 0, SONG_GAME_OVER, 0, 8) + Call(SetMusic, 0, SONG_GAME_OVER, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 0) Thread Wait(200 * DT) diff --git a/src/world/area_hos/hos_00/music.c b/src/world/area_hos/hos_00/music.c index ee5e5a25e4..59bd8d5155 100644 --- a/src/world/area_hos/hos_00/music.c +++ b/src/world/area_hos/hos_00/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_PlayToadTownSong) = { Switch(GB_StoryProgress) CaseRange(STORY_CH3_STAR_SPRIT_DEPARTED, STORY_CH4_STAR_SPIRIT_RESCUED) - Call(SetMusicTrack, 0, SONG_SHY_GUY_INVASION, 0, 6) + Call(SetMusic, 0, SONG_SHY_GUY_INVASION, 0, VOL_LEVEL_6) CaseDefault - Call(SetMusicTrack, 0, SONG_TOAD_TOWN, 0, 6) + Call(SetMusic, 0, SONG_TOAD_TOWN, 0, VOL_LEVEL_6) EndSwitch Return End @@ -19,7 +19,7 @@ EvtScript N(EVS_PlayMusicByPosition) = { EndCaseGroup CaseOrEq(hos_00_ENTRY_1) CaseOrEq(hos_00_ENTRY_2) - Call(SetMusicTrack, 0, SONG_SHOOTING_STAR_SUMMIT, 0, 8) + Call(SetMusic, 0, SONG_SHOOTING_STAR_SUMMIT, 0, VOL_LEVEL_FULL) EndCaseGroup EndSwitch IfNe(LVar0, 0) @@ -31,7 +31,7 @@ EvtScript N(EVS_PlayMusicByPosition) = { IfGt(LVar1, 210) Call(FadeOutMusic, 0, 833) Wait(25) - Call(SetMusicTrack, 0, SONG_SHOOTING_STAR_SUMMIT, 0, 8) + Call(SetMusic, 0, SONG_SHOOTING_STAR_SUMMIT, 0, VOL_LEVEL_FULL) Wait(30) Goto(20) EndIf @@ -57,7 +57,7 @@ EvtScript N(EVS_PlayMusicByPosition) = { EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, hos_00_ENTRY_3) - Call(SetMusicTrack, 0, SONG_STARSHIP_THEME, 0, 8) + Call(SetMusic, 0, SONG_STARSHIP_THEME, 0, VOL_LEVEL_FULL) Else Exec(N(EVS_PlayMusicByPosition)) EndIf @@ -66,7 +66,7 @@ EvtScript N(EVS_SetupMusic) = { }; EvtScript N(EVS_PlayKammyKoopaSong) = { - Call(SetMusicTrack, 0, SONG_KAMMY_KOOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_KAMMY_KOOPA_THEME, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_hos/hos_00/scenes.c b/src/world/area_hos/hos_00/scenes.c index beed3bbd11..04bb726133 100644 --- a/src/world/area_hos/hos_00/scenes.c +++ b/src/world/area_hos/hos_00/scenes.c @@ -236,7 +236,7 @@ EvtScript N(EVS_Scene_MeetingTwink) = { Call(SetNpcRotation, NPC_Twink, 0, 0, 0) EndThread Call(ShowMessageAtScreenPos, MSG_HOS_000D, 160, 40) - Call(SetMusicTrack, 0, SONG_TWINK_THEME, 0, 8) + Call(SetMusic, 0, SONG_TWINK_THEME, 0, VOL_LEVEL_FULL) Call(SetPlayerAnimation, ANIM_Mario1_Idle) Call(SetNpcAnimation, NPC_Twink, ANIM_Twink_Idle) Call(NpcFacePlayer, NPC_Twink, 0) @@ -458,7 +458,7 @@ EvtScript N(EVS_Scene_MeetingTwink) = { EvtScript N(EVS_Scene_TwinkDeparts) = { Call(SetTimeFreezeMode, TIME_FREEZE_PARTIAL) - Call(SetMusicTrack, 0, SONG_TWINK_THEME, 0, 8) + Call(SetMusic, 0, SONG_TWINK_THEME, 0, VOL_LEVEL_FULL) Wait(60 * DT) Call(SetCamLeadPlayer, CAM_DEFAULT, TRUE) Call(GetNpcPos, NPC_Twink, LVar3, LVar1, LVar2) diff --git a/src/world/area_hos/hos_01/main.c b/src/world/area_hos/hos_01/main.c index e537a85403..ac7eb84491 100644 --- a/src/world/area_hos/hos_01/main.c +++ b/src/world/area_hos/hos_01/main.c @@ -99,7 +99,7 @@ EvtScript N(EVS_EnterStarBeam) = { Call(EnablePartnerAI) Call(DisablePlayerPhysics, FALSE) Call(PanToTarget, CAM_DEFAULT, 0, FALSE) - Call(SetMusicTrack, 0, SONG_SHOOTING_STAR_SUMMIT, 0, 8) + Call(SetMusic, 0, SONG_SHOOTING_STAR_SUMMIT, 0, VOL_LEVEL_FULL) Call(DisablePlayerInput, FALSE) Label(20) Call(N(GetFloorCollider), LVar0) diff --git a/src/world/area_hos/hos_01/music.c b/src/world/area_hos/hos_01/music.c index ae22502bc7..eede28c5d3 100644 --- a/src/world/area_hos/hos_01/music.c +++ b/src/world/area_hos/hos_01/music.c @@ -3,7 +3,7 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, hos_01_ENTRY_0) - Call(SetMusicTrack, 0, SONG_SHOOTING_STAR_SUMMIT, 0, 8) + Call(SetMusic, 0, SONG_SHOOTING_STAR_SUMMIT, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_hos/hos_01/npc.c b/src/world/area_hos/hos_01/npc.c index 83affe92d5..bb71335dcf 100644 --- a/src/world/area_hos/hos_01/npc.c +++ b/src/world/area_hos/hos_01/npc.c @@ -44,7 +44,7 @@ EvtScript N(EVS_MuteMusicOnPlayerApproach) = { Wait(1) Goto(20) Label(30) - Call(SetMusicTrack, 0, SONG_SHOOTING_STAR_SUMMIT, 0, 8) + Call(SetMusic, 0, SONG_SHOOTING_STAR_SUMMIT, 0, VOL_LEVEL_FULL) Wait(30) Goto(0) Return @@ -69,7 +69,7 @@ EvtScript N(EVS_Scene_StarSpiritsPlea) = { Call(NpcJump0, NPC_PARTNER, LVar0, LVar1, LVar2, 15 * DT) Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE) EndThread - Call(SetMusicTrack, 0, SONG_STAR_SPIRIT_THEME, 1, 8) + Call(SetMusic, 0, SONG_STAR_SPIRIT_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(SpeakToPlayer, NPC_Eldstar, ANIM_WorldEldstar_Wave, ANIM_WorldEldstar_Idle, 0, MSG_HOS_0000) Wait(10 * DT) Wait(1) diff --git a/src/world/area_hos/hos_01/star_way.c b/src/world/area_hos/hos_01/star_way.c index 02ade9983c..8da0dd4f5a 100644 --- a/src/world/area_hos/hos_01/star_way.c +++ b/src/world/area_hos/hos_01/star_way.c @@ -31,7 +31,7 @@ EvtScript N(EVS_Scene_StarWayOpened) = { Call(WaitForCam, CAM_DEFAULT, Float(1.0)) Wait(10) Call(ShowMessageAtScreenPos, MSG_HOS_005D, 160, 40) - Call(SetMusicTrack, 0, SONG_STAR_WAY_OPENS, 0, 8) + Call(SetMusic, 0, SONG_STAR_WAY_OPENS, 0, VOL_LEVEL_FULL) #if VERSION_PAL Wait(30) #else @@ -78,7 +78,7 @@ EvtScript N(EVS_Scene_StarWayOpened) = { Call(ShowMessageAtScreenPos, MSG_HOS_005E, 160, 40) Call(ResetCam, CAM_DEFAULT, Float(5.0)) Set(GB_StoryProgress, STORY_CH8_OPENED_PATH_TO_STAR_WAY) - Call(SetMusicTrack, 0, SONG_SHOOTING_STAR_SUMMIT, 0, 8) + Call(SetMusic, 0, SONG_SHOOTING_STAR_SUMMIT, 0, VOL_LEVEL_FULL) Call(SetTimeFreezeMode, TIME_FREEZE_NONE) Call(DisablePlayerInput, FALSE) Return @@ -94,7 +94,7 @@ EvtScript N(EVS_AscendStarBeam) = { Call(SetPlayerSpeed, Float(3.0)) Call(PlayerMoveTo, -30, -160, 0) Call(InterpPlayerYaw, 90, 0) - Call(SetMusicTrack, 0, SONG_STAR_WAY_OPENS, 1, 8) + Call(SetMusic, 0, SONG_STAR_WAY_OPENS, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_GRAVITY, FALSE) Call(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_IGNORE_WORLD_COLLISION | NPC_FLAG_IGNORE_PLAYER_COLLISION, TRUE) Call(SetNpcJumpscale, NPC_PARTNER, Float(1.0)) diff --git a/src/world/area_hos/hos_02/descent.c b/src/world/area_hos/hos_02/descent.c index 99ee5b65f1..66a406133a 100644 --- a/src/world/area_hos/hos_02/descent.c +++ b/src/world/area_hos/hos_02/descent.c @@ -1,7 +1,7 @@ #include "hos_02.h" EvtScript N(EVS_DescendStarBeam) = { - Call(SetMusicTrack, 0, SONG_STAR_WAY_OPENS, 2, 8) + Call(SetMusic, 0, SONG_STAR_WAY_OPENS, BGM_VARIATION_2, VOL_LEVEL_FULL) Call(N(func_80240F68_A17188), MV_StarBeamEffect) Call(SetPlayerSpeed, Float(3.0)) Call(PlayerMoveTo, -1105, 230, 0) diff --git a/src/world/area_hos/hos_02/main.c b/src/world/area_hos/hos_02/main.c index 628dded37a..5976d660ab 100644 --- a/src/world/area_hos/hos_02/main.c +++ b/src/world/area_hos/hos_02/main.c @@ -84,7 +84,7 @@ EvtScript N(EVS_EnterStarBeam) = { Call(EnablePartnerAI) Call(DisablePlayerPhysics, FALSE) Call(PanToTarget, CAM_DEFAULT, 0, FALSE) - Call(SetMusicTrack, 0, SONG_STAR_WAY_OPENS, 3, 8) + Call(SetMusic, 0, SONG_STAR_WAY_OPENS, BGM_VARIATION_3, VOL_LEVEL_FULL) Call(DisablePlayerInput, FALSE) Call(AwaitPlayerLeave, -1105, 225, 40) BindTrigger(Ref(N(EVS_ExitStarBeam)), TRIGGER_FLOOR_TOUCH, COLLIDER_deiliw, 1, 0) diff --git a/src/world/area_hos/hos_02/music.c b/src/world/area_hos/hos_02/music.c index 4c5a2daff0..1194bd608f 100644 --- a/src/world/area_hos/hos_02/music.c +++ b/src/world/area_hos/hos_02/music.c @@ -3,7 +3,7 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, hos_02_ENTRY_1) - Call(SetMusicTrack, 0, SONG_STAR_WAY_OPENS, 3, 8) + Call(SetMusic, 0, SONG_STAR_WAY_OPENS, BGM_VARIATION_3, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_hos/hos_03/music.c b/src/world/area_hos/hos_03/music.c index 704e3ae35a..c701891b9c 100644 --- a/src/world/area_hos/hos_03/music.c +++ b/src/world/area_hos/hos_03/music.c @@ -1,13 +1,13 @@ #include "hos_03.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_STAR_HAVEN, 0, 8) + Call(SetMusic, 0, SONG_STAR_HAVEN, 0, VOL_LEVEL_FULL) Return End }; EvtScript N(EVS_PlayRestingSong) = { - Call(SetMusicTrack, 0, SONG_TAKING_REST, 0, 8) + Call(SetMusic, 0, SONG_TAKING_REST, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_hos/hos_04/music.c b/src/world/area_hos/hos_04/music.c index e9f75a4dfd..6788543617 100644 --- a/src/world/area_hos/hos_04/music.c +++ b/src/world/area_hos/hos_04/music.c @@ -2,7 +2,7 @@ EvtScript N(EVS_PlayIntroSong) = { Wait(80) - Call(SetMusicTrack, 0, SONG_INTRO_STORY, 2, 8) + Call(SetMusic, 0, SONG_INTRO_STORY, BGM_VARIATION_2, VOL_LEVEL_FULL) Return End }; @@ -11,15 +11,15 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) Switch(LVar0) CaseEq(hos_04_ENTRY_2) - Call(SetMusicTrack, 0, SONG_STARSHIP_THEME, 0, 8) + Call(SetMusic, 0, SONG_STARSHIP_THEME, 0, VOL_LEVEL_FULL) CaseEq(hos_04_ENTRY_3) CaseEq(hos_04_ENTRY_4) Exec(N(EVS_PlayIntroSong)) CaseDefault IfEq(GF_HOS04_Visited, FALSE) - Call(SetMusicTrack, 0, SONG_STAR_SANCTUARY, 1, 8) + Call(SetMusic, 0, SONG_STAR_SANCTUARY, BGM_VARIATION_1, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_STAR_HAVEN, 0, 8) + Call(SetMusic, 0, SONG_STAR_HAVEN, 0, VOL_LEVEL_FULL) EndIf Call(PlaySound, SOUND_LOOP_STAR_SANCTUARY_NEAR) EndSwitch diff --git a/src/world/area_hos/hos_05/music.c b/src/world/area_hos/hos_05/music.c index cedacc0027..86ff4f3b1f 100644 --- a/src/world/area_hos/hos_05/music.c +++ b/src/world/area_hos/hos_05/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_PlayIntroStoryMusic) = { Wait(40) - Call(SetMusicTrack, 0, SONG_INTRO_STORY, 0, 8) + Call(SetMusic, 0, SONG_INTRO_STORY, 0, VOL_LEVEL_FULL) Wait(2030) - Call(SetMusicTrack, 0, SONG_INTRO_STORY, 1, 8) + Call(SetMusic, 0, SONG_INTRO_STORY, BGM_VARIATION_1, VOL_LEVEL_FULL) Return End }; @@ -13,14 +13,14 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) Switch(LVar0) CaseEq(hos_05_ENTRY_1) - Call(SetMusicTrack, 0, SONG_STARSHIP_THEME, 1, 8) + Call(SetMusic, 0, SONG_STARSHIP_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(PlaySound, SOUND_LOOP_STAR_SANCTUARY_INSIDE) CaseEq(hos_05_ENTRY_3) Exec(N(EVS_PlayIntroStoryMusic)) CaseEq(hos_05_ENTRY_4) CaseDefault IfEq(AF_HOS_B5, FALSE) - Call(SetMusicTrack, 0, SONG_STAR_SANCTUARY, 0, 8) + Call(SetMusic, 0, SONG_STAR_SANCTUARY, 0, VOL_LEVEL_FULL) EndIf Call(PlaySound, SOUND_LOOP_STAR_SANCTUARY_INSIDE) EndSwitch diff --git a/src/world/area_hos/hos_05/star_ship.c b/src/world/area_hos/hos_05/star_ship.c index babc7a6575..5b42051c6f 100644 --- a/src/world/area_hos/hos_05/star_ship.c +++ b/src/world/area_hos/hos_05/star_ship.c @@ -95,9 +95,9 @@ EvtScript N(EVS_Starship_Depart) = { EndIf Wait(20) IfLt(GB_StoryProgress, STORY_UNUSED_0000005D) - Call(SetMusicTrack, 0, SONG_STARSHIP_THEME, 0, 8) + Call(SetMusic, 0, SONG_STARSHIP_THEME, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_STARSHIP_THEME, 1, 8) + Call(SetMusic, 0, SONG_STARSHIP_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) EndIf Thread Wait(25) @@ -193,7 +193,7 @@ EvtScript N(EVS_EnterStarship) = { Call(EnablePartnerAI) EndThread Call(DisablePlayerPhysics, FALSE) - Call(SetMusicTrack, 0, SONG_STAR_SANCTUARY, 0, 8) + Call(SetMusic, 0, SONG_STAR_SANCTUARY, 0, VOL_LEVEL_FULL) Call(ResetCam, CAM_DEFAULT, Float(1.0)) Call(SetCamSpeed, CAM_DEFAULT, Float(2.5)) Call(DisablePlayerInput, FALSE) diff --git a/src/world/area_hos/hos_06/main.c b/src/world/area_hos/hos_06/main.c index ef0d4bf28a..fca1747265 100644 --- a/src/world/area_hos/hos_06/main.c +++ b/src/world/area_hos/hos_06/main.c @@ -68,7 +68,7 @@ EvtScript N(EVS_Main) = { Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Wait(1) - Call(SetMusicTrack, 0, SONG_SHOOTING_STAR_SUMMIT, 0, 8) + Call(SetMusic, 0, SONG_SHOOTING_STAR_SUMMIT, 0, VOL_LEVEL_FULL) Exec(N(EVS_SetupRooms)) Exec(N(EVS_TexPan_Stars)) BindTrigger(Ref(N(EVS_AskForHint)), TRIGGER_WALL_PRESS_A, COLLIDER_o224, 1, 0) diff --git a/src/world/area_hos/hos_06/merluvlee.c b/src/world/area_hos/hos_06/merluvlee.c index 159a9e6369..8c32daa04e 100644 --- a/src/world/area_hos/hos_06/merluvlee.c +++ b/src/world/area_hos/hos_06/merluvlee.c @@ -566,7 +566,7 @@ API_CALLABLE(N(func_80241F98_A3B478)) { } EvtScript N(EVS_PerformHintRitual) = { - Call(SetMusicTrack, 0, SONG_MERLEE_SPELL, 2, 8) + Call(SetMusic, 0, SONG_MERLEE_SPELL, BGM_VARIATION_2, VOL_LEVEL_FULL) Call(SetNpcAnimation, NPC_Merluvlee, ANIM_Merluvlee_Release) Call(GetModelCenter, MODEL_o100) Add(LVar1, 20) @@ -642,7 +642,7 @@ EvtScript N(EVS_PerformHintRitual) = { Wait(46) Call(ResetCam, CAM_DEFAULT, Float(5.0)) Call(SetNpcAnimation, NPC_Merluvlee, ANIM_Merluvlee_Idle) - Call(SetMusicTrack, 0, SONG_SHOOTING_STAR_SUMMIT, 0, 8) + Call(SetMusic, 0, SONG_SHOOTING_STAR_SUMMIT, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_hos/hos_10/music.c b/src/world/area_hos/hos_10/music.c index 70eb439070..3d8a917f73 100644 --- a/src/world/area_hos/hos_10/music.c +++ b/src/world/area_hos/hos_10/music.c @@ -4,7 +4,7 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) Switch(LVar0) CaseOrEq(hos_10_ENTRY_1) - Call(SetMusicTrack, 0, SONG_INTRO_STORY, 3, 8) + Call(SetMusic, 0, SONG_INTRO_STORY, BGM_VARIATION_3, VOL_LEVEL_FULL) EndCaseGroup CaseOrEq(hos_10_ENTRY_2) EndCaseGroup @@ -14,7 +14,7 @@ EvtScript N(EVS_SetupMusic) = { CaseEq(hos_10_ENTRY_5) Thread Wait(10) - Call(SetMusicTrack, 0, SONG_MARIO_FALLS, 0, 8) + Call(SetMusic, 0, SONG_MARIO_FALLS, 0, VOL_LEVEL_FULL) EndThread EndSwitch Return diff --git a/src/world/area_isk/isk_01/music.c b/src/world/area_isk/isk_01/music.c index 719bd22123..bb28c22c91 100644 --- a/src/world/area_isk/isk_01/music.c +++ b/src/world/area_isk/isk_01/music.c @@ -19,15 +19,15 @@ EvtScript N(EVS_SetupMusic) = { Return EndIf #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif Return diff --git a/src/world/area_isk/isk_02/main.c b/src/world/area_isk/isk_02/main.c index 1407854cf0..40a2c6cd98 100644 --- a/src/world/area_isk/isk_02/main.c +++ b/src/world/area_isk/isk_02/main.c @@ -21,15 +21,15 @@ EvtScript N(EVS_Main) = { ExecWait(N(EVS_SetupLock)) Exec(N(EVS_SetupSarcophagi)) #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif Set(LVar0, Ref(N(EVS_BindExitTriggers))) diff --git a/src/world/area_isk/isk_03/main.c b/src/world/area_isk/isk_03/main.c index 6837c16a48..fd1a480e01 100644 --- a/src/world/area_isk/isk_03/main.c +++ b/src/world/area_isk/isk_03/main.c @@ -27,15 +27,15 @@ EvtScript N(EVS_Main) = { Exec(N(EVS_SetupSand)) Exec(N(EVS_SetupSwitch)) #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif Set(LVar0, Ref(N(EVS_BindExitTriggers))) diff --git a/src/world/area_isk/isk_04/music.c b/src/world/area_isk/isk_04/music.c index 7bc065ac0d..9cdd390499 100644 --- a/src/world/area_isk/isk_04/music.c +++ b/src/world/area_isk/isk_04/music.c @@ -19,15 +19,15 @@ EvtScript N(EVS_SetupMusic) = { Return EndIf #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif Return diff --git a/src/world/area_isk/isk_05/main.c b/src/world/area_isk/isk_05/main.c index 36a3b3d775..bccd7dc8a0 100644 --- a/src/world/area_isk/isk_05/main.c +++ b/src/world/area_isk/isk_05/main.c @@ -24,15 +24,15 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif Call(TranslateGroup, MODEL_g304, 0, 65, 0) diff --git a/src/world/area_isk/isk_06/main.c b/src/world/area_isk/isk_06/main.c index f3a809d2e3..5261a7fe4e 100644 --- a/src/world/area_isk/isk_06/main.c +++ b/src/world/area_isk/isk_06/main.c @@ -24,15 +24,15 @@ EvtScript N(EVS_Main) = { Exec(N(EVS_SetupSand)) Exec(N(EVS_SetupSwitch)) #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif Set(LVar0, Ref(N(EVS_BindExitTriggers))) diff --git a/src/world/area_isk/isk_07/main.c b/src/world/area_isk/isk_07/main.c index dbec0cbc96..e8ee304eb7 100644 --- a/src/world/area_isk/isk_07/main.c +++ b/src/world/area_isk/isk_07/main.c @@ -23,15 +23,15 @@ EvtScript N(EVS_Main) = { Exec(N(EVS_SetupSwitch)) Exec(N(EVS_SetupSarcophagi)) #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif Set(LVar0, Ref(N(EVS_BindExitTriggers))) diff --git a/src/world/area_isk/isk_08/main.c b/src/world/area_isk/isk_08/main.c index 40197c5d48..541e29f96d 100644 --- a/src/world/area_isk/isk_08/main.c +++ b/src/world/area_isk/isk_08/main.c @@ -22,15 +22,15 @@ EvtScript N(EVS_Main) = { ExecWait(N(EVS_SetupFlames)) ExecWait(N(EVS_SetupBombableWall)) #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif Set(LVar0, Ref(N(EVS_BindExitTriggers))) diff --git a/src/world/area_isk/isk_09/music.c b/src/world/area_isk/isk_09/music.c index c549046b9a..a7864b8103 100644 --- a/src/world/area_isk/isk_09/music.c +++ b/src/world/area_isk/isk_09/music.c @@ -19,15 +19,15 @@ EvtScript N(EVS_SetupMusic) = { Return EndIf #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif Return diff --git a/src/world/area_isk/isk_10/main.c b/src/world/area_isk/isk_10/main.c index 6b42e21057..0f1ee6540c 100644 --- a/src/world/area_isk/isk_10/main.c +++ b/src/world/area_isk/isk_10/main.c @@ -21,15 +21,15 @@ EvtScript N(EVS_Main) = { ExecWait(N(EVS_MakeEntities)) ExecWait(N(EVS_SetupBombableWall)) #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif Set(LVar0, Ref(N(EVS_BindExitTriggers))) diff --git a/src/world/area_isk/isk_11/music.c b/src/world/area_isk/isk_11/music.c index a0f496aff4..047ca14f84 100644 --- a/src/world/area_isk/isk_11/music.c +++ b/src/world/area_isk/isk_11/music.c @@ -20,11 +20,11 @@ EvtScript N(EVS_SetupMusic) = { EndIf Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_isk/isk_11/scene.c b/src/world/area_isk/isk_11/scene.c index 377b77ee7e..3366f2b96b 100644 --- a/src/world/area_isk/isk_11/scene.c +++ b/src/world/area_isk/isk_11/scene.c @@ -196,7 +196,7 @@ EvtScript N(EVS_ManageSecretPassage) = { Wait(1) Call(PanToTarget, CAM_DEFAULT, 0, FALSE) Set(GB_StoryProgress, STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_o2186, COLLIDER_FLAGS_UPPER_MASK) Call(DisablePlayerPhysics, FALSE) Call(DisablePlayerInput, FALSE) diff --git a/src/world/area_isk/isk_12/main.c b/src/world/area_isk/isk_12/main.c index 075299492b..4ccce13a37 100644 --- a/src/world/area_isk/isk_12/main.c +++ b/src/world/area_isk/isk_12/main.c @@ -28,15 +28,15 @@ EvtScript N(EVS_Main) = { Exec(N(EVS_SetupSand)) Exec(N(EVS_SetupSwitches)) #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif Set(LVar0, Ref(N(EVS_BindExitTriggers))) diff --git a/src/world/area_isk/isk_13/main.c b/src/world/area_isk/isk_13/main.c index 2a343b0f64..28ffb85228 100644 --- a/src/world/area_isk/isk_13/main.c +++ b/src/world/area_isk/isk_13/main.c @@ -15,15 +15,15 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif Set(LVar0, Ref(N(EVS_BindExitTriggers))) diff --git a/src/world/area_isk/isk_14/main.c b/src/world/area_isk/isk_14/main.c index 8c8afc8b8c..0aea7598ea 100644 --- a/src/world/area_isk/isk_14/main.c +++ b/src/world/area_isk/isk_14/main.c @@ -15,15 +15,15 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif Set(LVar0, Ref(N(EVS_BindExitTriggers))) diff --git a/src/world/area_isk/isk_16/main.c b/src/world/area_isk/isk_16/main.c index 7ec694ff8d..ff30b4cd35 100644 --- a/src/world/area_isk/isk_16/main.c +++ b/src/world/area_isk/isk_16/main.c @@ -93,7 +93,7 @@ EvtScript N(EVS_Main) = { EndIf Switch(GB_StoryProgress) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_TUTANKOOPA_REVEALED, 0, 8) + Call(SetMusic, 0, SONG_TUTANKOOPA_REVEALED, 0, VOL_LEVEL_FULL) CaseEq(STORY_CH2_DEFEATED_TUTANKOOPA) Call(FadeOutMusic, 0, 500) CaseGt(STORY_CH2_DEFEATED_TUTANKOOPA) diff --git a/src/world/area_isk/isk_18/main.c b/src/world/area_isk/isk_18/main.c index 82405f68b0..85738402ee 100644 --- a/src/world/area_isk/isk_18/main.c +++ b/src/world/area_isk/isk_18/main.c @@ -17,15 +17,15 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_SetupFlames)) #if VERSION_PAL - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) #else Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch #endif IfLt(GB_StoryProgress, STORY_CH2_DRAINED_THIRD_SAND_ROOM) diff --git a/src/world/area_isk/isk_19/music.c b/src/world/area_isk/isk_19/music.c index 1b4083b742..885cffa0bb 100644 --- a/src/world/area_isk/isk_19/music.c +++ b/src/world/area_isk/isk_19/music.c @@ -20,11 +20,11 @@ EvtScript N(EVS_SetupMusic) = { EndIf Switch(GB_StoryProgress) CaseLt(STORY_CH2_SOLVED_ARTIFACT_PUZZLE) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_RUINS_BASEMENT, 0, 8) + Call(SetMusic, 0, SONG_RUINS_BASEMENT, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH2_DEFEATED_TUTANKOOPA) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_iwa/iwa_00/main.c b/src/world/area_iwa/iwa_00/main.c index ce152bf126..705b9477db 100644 --- a/src/world/area_iwa/iwa_00/main.c +++ b/src/world/area_iwa/iwa_00/main.c @@ -31,7 +31,7 @@ EvtScript N(EVS_Main) = { ExecWait(N(EVS_MakeEntities)) Exec(N(EVS_TexPan_Water)) Exec(N(EVS_BindSlideTriggers)) - Call(SetMusicTrack, 0, SONG_MT_RUGGED, 0, 8) + Call(SetMusic, 0, SONG_MT_RUGGED, 0, VOL_LEVEL_FULL) Call(PlaySoundAtF, SOUND_LOOP_IWA00_FLOW3, SOUND_SPACE_WITH_DEPTH, 35, -80, -120) Call(PlaySoundAtF, SOUND_LOOP_IWA00_FLOW2, SOUND_SPACE_WITH_DEPTH, 500, 85, -120) Set(LVar0, Ref(N(EVS_BindExitTriggers))) diff --git a/src/world/area_iwa/iwa_01/main.c b/src/world/area_iwa/iwa_01/main.c index 908a3d4e4e..c937917341 100644 --- a/src/world/area_iwa/iwa_01/main.c +++ b/src/world/area_iwa/iwa_01/main.c @@ -58,7 +58,7 @@ EvtScript N(EVS_Main) = { ExecWait(N(EVS_MakeSplashes)) Exec(N(EVS_BindSlideTriggers2)) Exec(N(EVS_BindSlideTriggers1)) - Call(SetMusicTrack, 0, SONG_MT_RUGGED, 0, 8) + Call(SetMusic, 0, SONG_MT_RUGGED, 0, VOL_LEVEL_FULL) Call(PlaySoundAtF, SOUND_LOOP_IWA01_FLOW1, SOUND_SPACE_WITH_DEPTH, -570, -180, 425) Call(PlaySoundAtF, SOUND_LOOP_IWA01_FLOW2, SOUND_SPACE_WITH_DEPTH, 740, -170, 330) Call(GetLoadType, LVar1) diff --git a/src/world/area_iwa/iwa_02/main.c b/src/world/area_iwa/iwa_02/main.c index 1389aa4a83..5b01b8140b 100644 --- a/src/world/area_iwa/iwa_02/main.c +++ b/src/world/area_iwa/iwa_02/main.c @@ -18,7 +18,7 @@ EvtScript N(EVS_Main) = { EVT_SETUP_CAMERA_DEFAULT() Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) - Call(SetMusicTrack, 0, SONG_MT_RUGGED, 0, 8) + Call(SetMusic, 0, SONG_MT_RUGGED, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Wait(1) diff --git a/src/world/area_iwa/iwa_03/main.c b/src/world/area_iwa/iwa_03/main.c index e6a6231afa..fc4aa5b6fd 100644 --- a/src/world/area_iwa/iwa_03/main.c +++ b/src/world/area_iwa/iwa_03/main.c @@ -15,7 +15,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) Exec(N(EVS_BindSlideTriggers)) - Call(SetMusicTrack, 0, SONG_MT_RUGGED, 0, 8) + Call(SetMusic, 0, SONG_MT_RUGGED, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Wait(1) diff --git a/src/world/area_iwa/iwa_04/music.c b/src/world/area_iwa/iwa_04/music.c index ccda7a752f..40032b67a7 100644 --- a/src/world/area_iwa/iwa_04/music.c +++ b/src/world/area_iwa/iwa_04/music.c @@ -1,7 +1,7 @@ #include "iwa_04.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_MT_RUGGED, 0, 8) + Call(SetMusic, 0, SONG_MT_RUGGED, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_iwa/iwa_04/npc.c b/src/world/area_iwa/iwa_04/npc.c index 6edfda94ee..4252721d78 100644 --- a/src/world/area_iwa/iwa_04/npc.c +++ b/src/world/area_iwa/iwa_04/npc.c @@ -77,7 +77,7 @@ EvtScript N(EVS_NpcAI_Buzzar) = { EndIf Wait(1) EndLoop - Call(SetMusicTrack, 0, SONG_MINIBOSS_BATTLE, 0, 8) + Call(SetMusic, 0, SONG_MINIBOSS_BATTLE, 0, VOL_LEVEL_FULL) Call(DisablePlayerInput, TRUE) Call(GetPartnerInUse, LVar0) IfNe(LVar0, 0) diff --git a/src/world/area_iwa/iwa_10/music.c b/src/world/area_iwa/iwa_10/music.c index 8c62046ddf..82748e2e72 100644 --- a/src/world/area_iwa/iwa_10/music.c +++ b/src/world/area_iwa/iwa_10/music.c @@ -1,7 +1,7 @@ #include "iwa_10.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_MT_RUGGED, 0, 8) + Call(SetMusic, 0, SONG_MT_RUGGED, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_iwa/iwa_11/music.c b/src/world/area_iwa/iwa_11/music.c index a994f2a80d..8c80b79b60 100644 --- a/src/world/area_iwa/iwa_11/music.c +++ b/src/world/area_iwa/iwa_11/music.c @@ -1,7 +1,7 @@ #include "iwa_11.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_RIDING_THE_RAILS, 0, 8) + Call(SetMusic, 0, SONG_RIDING_THE_RAILS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_jan/jan_00/npc.c b/src/world/area_jan/jan_00/npc.c index 5b5413102f..d8740d6ab5 100644 --- a/src/world/area_jan/jan_00/npc.c +++ b/src/world/area_jan/jan_00/npc.c @@ -334,7 +334,7 @@ EvtScript N(D_80242FA8_B234E8) = { Call(NpcJump0, NPC_Whale, 158, -10, -38, 20) Call(InterpPlayerYaw, 270, 0) Call(SpeakToPlayer, NPC_Whale, ANIM_Kolorado_Walk, ANIM_Kolorado_Still, 5, MSG_CH5_0000) - Call(SetMusicTrack, 0, SONG_YOSHIS_VILLAGE, 0, 8) + Call(SetMusic, 0, SONG_YOSHIS_VILLAGE, 0, VOL_LEVEL_FULL) IfLt(GB_StoryProgress, STORY_CH5_REACHED_LAVA_LAVA_ISLAND) Call(AdjustCam, CAM_DEFAULT, Float(5.0), 0, 300, 15, Float(-6.0)) Call(InterpNpcYaw, NPC_Kolorado_02, 90, 0) @@ -560,7 +560,7 @@ EvtScript N(EVS_NpcIdle_JrTroopa) = { EndIf Call(SpeakToPlayer, NPC_SELF, 0xFFFFFFFF, 0xFFFFFFFF, 5, MSG_CH5_0008) ExecGetTID(N(D_802441C8_B24708), LVar9) - Call(SetMusicTrack, 0, SONG_JR_TROOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_JR_TROOPA_THEME, 0, VOL_LEVEL_FULL) Call(PlaySoundAtNpc, NPC_SELF, SOUND_LOOP_JR_TROOPA_SWIM, SOUND_SPACE_DEFAULT) Thread Call(func_80241134_B21674) diff --git a/src/world/area_jan/jan_00/settings.c b/src/world/area_jan/jan_00/settings.c index 1f0083ffc4..54e486855d 100644 --- a/src/world/area_jan/jan_00/settings.c +++ b/src/world/area_jan/jan_00/settings.c @@ -18,7 +18,7 @@ MapSettings N(settings) = { }; EvtScript N(EVS_80241C10) = { - Call(SetMusicTrack, 0, SONG_YOSHIS_VILLAGE, 0, 8) + Call(SetMusic, 0, SONG_YOSHIS_VILLAGE, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 250) Return End diff --git a/src/world/area_jan/jan_01/music.c b/src/world/area_jan/jan_01/music.c index 34b8ee640c..85e0b3ff5d 100644 --- a/src/world/area_jan/jan_01/music.c +++ b/src/world/area_jan/jan_01/music.c @@ -1,7 +1,7 @@ #include "jan_01.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_YOSHIS_VILLAGE, 0, 8) + Call(SetMusic, 0, SONG_YOSHIS_VILLAGE, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 250) Return End diff --git a/src/world/area_jan/jan_02/main.c b/src/world/area_jan/jan_02/main.c index 21f3981471..8f006af3d1 100644 --- a/src/world/area_jan/jan_02/main.c +++ b/src/world/area_jan/jan_02/main.c @@ -6,7 +6,7 @@ extern s32 N(PrevPalmTreeVisibility); API_CALLABLE(N(ClearTrackVols)) { - bgm_clear_track_volumes(0, TRACK_VOLS_0); + bgm_clear_track_volumes(0, TRACK_VOLS_JAN_FULL); return ApiStatus_DONE2; } diff --git a/src/world/area_jan/jan_02/music.c b/src/world/area_jan/jan_02/music.c index 04e045318c..ede54fd138 100644 --- a/src/world/area_jan/jan_02/music.c +++ b/src/world/area_jan/jan_02/music.c @@ -1,16 +1,16 @@ #include "jan_02.h" API_CALLABLE(N(AdjustTrackVolumes)) { - bgm_set_track_volumes(0, TRACK_VOLS_0); + bgm_set_track_volumes(0, TRACK_VOLS_JAN_FULL); return ApiStatus_DONE2; } EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseRange(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING, STORY_CH5_SUSHIE_JOINED_PARTY) - Call(SetMusicTrack, 0, SONG_YOSHIS_PANIC, 0, 8) + Call(SetMusic, 0, SONG_YOSHIS_PANIC, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_YOSHIS_VILLAGE, 0, 8) + Call(SetMusic, 0, SONG_YOSHIS_VILLAGE, 0, VOL_LEVEL_FULL) Thread Wait(3) Call(N(AdjustTrackVolumes)) diff --git a/src/world/area_jan/jan_03/music.c b/src/world/area_jan/jan_03/music.c index 7e98fd4b06..934805d80a 100644 --- a/src/world/area_jan/jan_03/music.c +++ b/src/world/area_jan/jan_03/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseRange(STORY_CH5_YOSHI_CHILDREN_ARE_MISSING, STORY_CH5_SUSHIE_JOINED_PARTY) - Call(SetMusicTrack, 0, SONG_YOSHIS_PANIC, 0, 8) + Call(SetMusic, 0, SONG_YOSHIS_PANIC, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_YOSHIS_VILLAGE, 0, 8) + Call(SetMusic, 0, SONG_YOSHIS_VILLAGE, 0, VOL_LEVEL_FULL) EndSwitch Call(ClearAmbientSounds, 250) Return @@ -13,7 +13,7 @@ EvtScript N(EVS_SetupMusic) = { }; EvtScript N(EVS_PlayRestingSong) = { - Call(SetMusicTrack, 0, SONG_TAKING_REST, 0, 8) + Call(SetMusic, 0, SONG_TAKING_REST, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_jan/jan_04/music.c b/src/world/area_jan/jan_04/music.c index 1bb637a2a9..86f5ed4959 100644 --- a/src/world/area_jan/jan_04/music.c +++ b/src/world/area_jan/jan_04/music.c @@ -4,11 +4,11 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) Switch(LVar0) CaseRange(jan_04_ENTRY_1, jan_04_ENTRY_2) - Call(SetMusicTrack, 0, SONG_VOLCANO_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_VOLCANO_ESCAPE, 0, VOL_LEVEL_FULL) CaseEq(jan_04_ENTRY_3) Call(FadeInMusic, 0, SONG_JADE_JUNGLE, 0, 3000, 0, 127) CaseDefault - Call(SetMusicTrack, 0, SONG_JADE_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_JADE_JUNGLE, 0, VOL_LEVEL_FULL) EndSwitch Call(ClearAmbientSounds, 250) Return diff --git a/src/world/area_jan/jan_05/music.c b/src/world/area_jan/jan_05/music.c index 9364160422..9e2c08c6bb 100644 --- a/src/world/area_jan/jan_05/music.c +++ b/src/world/area_jan/jan_05/music.c @@ -1,7 +1,7 @@ #include "jan_05.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_JADE_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_JADE_JUNGLE, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 250) Return End diff --git a/src/world/area_jan/jan_05/npc.c b/src/world/area_jan/jan_05/npc.c index 2162e2c615..44711dfb48 100644 --- a/src/world/area_jan/jan_05/npc.c +++ b/src/world/area_jan/jan_05/npc.c @@ -188,7 +188,7 @@ EvtScript N(EVS_NpcIdle_YoshiKid) = { Add(LVar0, GF_JAN10_SavedYoshi) Add(LVar0, GF_JAN11_SavedYoshi) IfEq(LVar0, 5) - Call(SetMusicTrack, 0, SONG_YOSHI_KIDS_FOUND, 0, 8) + Call(SetMusic, 0, SONG_YOSHI_KIDS_FOUND, 0, VOL_LEVEL_FULL) Set(GB_StoryProgress, STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED) Call(SetPlayerAnimation, ANIM_Mario1_ThumbsUp) Wait(120) diff --git a/src/world/area_jan/jan_06/main.c b/src/world/area_jan/jan_06/main.c index ba02e018f1..080270068b 100644 --- a/src/world/area_jan/jan_06/main.c +++ b/src/world/area_jan/jan_06/main.c @@ -82,7 +82,7 @@ EvtScript N(EVS_Main) = { Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Exec(N(EVS_SetupLogs)) - Call(SetMusicTrack, 0, SONG_JADE_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_JADE_JUNGLE, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 250) Call(MakeTransformGroup, MODEL_g14) Call(EnableTexPanning, MODEL_o61, TRUE) diff --git a/src/world/area_jan/jan_07/music.c b/src/world/area_jan/jan_07/music.c index fd687fe837..a11d4ea07f 100644 --- a/src/world/area_jan/jan_07/music.c +++ b/src/world/area_jan/jan_07/music.c @@ -1,7 +1,7 @@ #include "jan_07.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_JADE_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_JADE_JUNGLE, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 250) Return End diff --git a/src/world/area_jan/jan_07/npc.c b/src/world/area_jan/jan_07/npc.c index 299edfedcb..b5bd8af215 100644 --- a/src/world/area_jan/jan_07/npc.c +++ b/src/world/area_jan/jan_07/npc.c @@ -109,7 +109,7 @@ EvtScript N(EVS_NpcIdle_YoshiKid) = { Add(LVar0, GF_JAN10_SavedYoshi) Add(LVar0, GF_JAN11_SavedYoshi) IfEq(LVar0, 5) - Call(SetMusicTrack, 0, SONG_YOSHI_KIDS_FOUND, 0, 8) + Call(SetMusic, 0, SONG_YOSHI_KIDS_FOUND, 0, VOL_LEVEL_FULL) Set(GB_StoryProgress, STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED) Call(SetPlayerAnimation, ANIM_Mario1_ThumbsUp) Wait(120) diff --git a/src/world/area_jan/jan_08/music.c b/src/world/area_jan/jan_08/music.c index 8ceaa49b4a..62bc0a906e 100644 --- a/src/world/area_jan/jan_08/music.c +++ b/src/world/area_jan/jan_08/music.c @@ -1,7 +1,7 @@ #include "jan_08.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_JADE_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_JADE_JUNGLE, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 250) Return End diff --git a/src/world/area_jan/jan_08/npc.c b/src/world/area_jan/jan_08/npc.c index 3d90a920c8..8c5b4bbd4b 100644 --- a/src/world/area_jan/jan_08/npc.c +++ b/src/world/area_jan/jan_08/npc.c @@ -77,7 +77,7 @@ EvtScript N(EVS_NpcIdle_YoshiKid) = { Add(LVar0, GF_JAN10_SavedYoshi) Add(LVar0, GF_JAN11_SavedYoshi) IfEq(LVar0, 5) - Call(SetMusicTrack, 0, SONG_YOSHI_KIDS_FOUND, 0, 8) + Call(SetMusic, 0, SONG_YOSHI_KIDS_FOUND, 0, VOL_LEVEL_FULL) Set(GB_StoryProgress, STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED) Call(SetPlayerAnimation, ANIM_Mario1_ThumbsUp) Wait(120) diff --git a/src/world/area_jan/jan_09/main.c b/src/world/area_jan/jan_09/main.c index 3f9d5e6669..f213fc8d86 100644 --- a/src/world/area_jan/jan_09/main.c +++ b/src/world/area_jan/jan_09/main.c @@ -64,7 +64,7 @@ EvtScript N(EVS_Main) = { Exec(N(EVS_Pipe_EnterVertical)) Wait(1) EndIf - Call(SetMusicTrack, 0, SONG_JADE_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_JADE_JUNGLE, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 250) Call(MakeTransformGroup, MODEL_g51) Call(EnableTexPanning, MODEL_o180, TRUE) diff --git a/src/world/area_jan/jan_10/music.c b/src/world/area_jan/jan_10/music.c index 0db59fe4eb..a6d903f23c 100644 --- a/src/world/area_jan/jan_10/music.c +++ b/src/world/area_jan/jan_10/music.c @@ -1,7 +1,7 @@ #include "jan_10.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_JADE_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_JADE_JUNGLE, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 250) Return End diff --git a/src/world/area_jan/jan_10/npc.c b/src/world/area_jan/jan_10/npc.c index 893cda287a..91d32f9c11 100644 --- a/src/world/area_jan/jan_10/npc.c +++ b/src/world/area_jan/jan_10/npc.c @@ -74,7 +74,7 @@ EvtScript N(EVS_NpcInteract_YoshiKid) = { Add(LVar0, GF_JAN10_SavedYoshi) Add(LVar0, GF_JAN11_SavedYoshi) IfEq(LVar0, 5) - Call(SetMusicTrack, 0, SONG_YOSHI_KIDS_FOUND, 0, 8) + Call(SetMusic, 0, SONG_YOSHI_KIDS_FOUND, 0, VOL_LEVEL_FULL) Set(GB_StoryProgress, STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED) Call(SetPlayerAnimation, ANIM_Mario1_ThumbsUp) Wait(120) diff --git a/src/world/area_jan/jan_11/music.c b/src/world/area_jan/jan_11/music.c index fd1351070e..6b8b33ab38 100644 --- a/src/world/area_jan/jan_11/music.c +++ b/src/world/area_jan/jan_11/music.c @@ -1,7 +1,7 @@ #include "jan_11.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_JADE_JUNGLE, 0, 6) + Call(SetMusic, 0, SONG_JADE_JUNGLE, 0, VOL_LEVEL_6) Call(ClearAmbientSounds, 250) Return End diff --git a/src/world/area_jan/jan_11/npc.c b/src/world/area_jan/jan_11/npc.c index 325479ded5..3379e038e0 100644 --- a/src/world/area_jan/jan_11/npc.c +++ b/src/world/area_jan/jan_11/npc.c @@ -83,7 +83,7 @@ EvtScript N(EVS_NpcIdle_YoshiKid) = { Add(LVar0, GF_JAN10_SavedYoshi) Add(LVar0, GF_JAN11_SavedYoshi) IfEq(LVar0, 5) - Call(SetMusicTrack, 0, SONG_YOSHI_KIDS_FOUND, 0, 8) + Call(SetMusic, 0, SONG_YOSHI_KIDS_FOUND, 0, VOL_LEVEL_FULL) Set(GB_StoryProgress, STORY_CH5_ALL_YOSHI_CHILDREN_RESCUED) Call(SetPlayerAnimation, ANIM_Mario1_ThumbsUp) Wait(120) diff --git a/src/world/area_jan/jan_12/main.c b/src/world/area_jan/jan_12/main.c index cb2bbab16b..6a74c7b2b1 100644 --- a/src/world/area_jan/jan_12/main.c +++ b/src/world/area_jan/jan_12/main.c @@ -22,7 +22,7 @@ EvtScript N(EVS_Main) = { Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitn, COLLIDER_FLAGS_UPPER_MASK) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) - Call(SetMusicTrack, 0, SONG_DEEP_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_DEEP_JUNGLE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_JUNGLE) Return End diff --git a/src/world/area_jan/jan_13/main.c b/src/world/area_jan/jan_13/main.c index 2cfd5abfce..85f0ed8218 100644 --- a/src/world/area_jan/jan_13/main.c +++ b/src/world/area_jan/jan_13/main.c @@ -21,7 +21,7 @@ EvtScript N(EVS_Main) = { Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitn, COLLIDER_FLAGS_UPPER_MASK) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) - Call(SetMusicTrack, 0, SONG_DEEP_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_DEEP_JUNGLE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_JUNGLE) Return End diff --git a/src/world/area_jan/jan_14/main.c b/src/world/area_jan/jan_14/main.c index b3b211ca0d..16348d3b00 100644 --- a/src/world/area_jan/jan_14/main.c +++ b/src/world/area_jan/jan_14/main.c @@ -21,7 +21,7 @@ EvtScript N(EVS_Main) = { Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilitn, COLLIDER_FLAGS_UPPER_MASK) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) - Call(SetMusicTrack, 0, SONG_DEEP_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_DEEP_JUNGLE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_JUNGLE) Return End diff --git a/src/world/area_jan/jan_15/main.c b/src/world/area_jan/jan_15/main.c index 18aa1bf097..4072f8265a 100644 --- a/src/world/area_jan/jan_15/main.c +++ b/src/world/area_jan/jan_15/main.c @@ -34,7 +34,7 @@ EvtScript N(EVS_Main) = { Call(ModifyColliderFlags, MODIFY_COLLIDER_FLAGS_SET_BITS, COLLIDER_deilite, COLLIDER_FLAGS_UPPER_MASK) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) - Call(SetMusicTrack, 0, SONG_DEEP_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_DEEP_JUNGLE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_JUNGLE) Return End diff --git a/src/world/area_jan/jan_16/music.c b/src/world/area_jan/jan_16/music.c index 050b77eae1..0fa8237f12 100644 --- a/src/world/area_jan/jan_16/music.c +++ b/src/world/area_jan/jan_16/music.c @@ -4,14 +4,14 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) Switch(LVar0) CaseEq(jan_16_ENTRY_0) - Call(SetMusicTrack, 0, SONG_RAPHAEL_RAVEN, 0, 8) + Call(SetMusic, 0, SONG_RAPHAEL_RAVEN, 0, VOL_LEVEL_FULL) Set(AF_JAN_03, FALSE) CaseEq(jan_16_ENTRY_3) - Call(SetMusicTrack, 0, SONG_RAPHAEL_RAVEN, 1, 8) + Call(SetMusic, 0, SONG_RAPHAEL_RAVEN, BGM_VARIATION_1, VOL_LEVEL_FULL) Set(AF_JAN_03, TRUE) CaseDefault IfEq(AF_JAN_03, FALSE) - Call(SetMusicTrack, 0, SONG_RAPHAEL_RAVEN, 0, 8) + Call(SetMusic, 0, SONG_RAPHAEL_RAVEN, 0, VOL_LEVEL_FULL) EndIf EndSwitch Call(PlayAmbientSounds, AMBIENT_JUNGLE) diff --git a/src/world/area_jan/jan_17/music.c b/src/world/area_jan/jan_17/music.c index 421da316da..592de33ebb 100644 --- a/src/world/area_jan/jan_17/music.c +++ b/src/world/area_jan/jan_17/music.c @@ -3,7 +3,7 @@ EvtScript N(EVS_SetupMusic) = { Call(GetLoadType, LVar1) IfEq(LVar1, LOAD_FROM_FILE_SELECT) - Call(SetMusicTrack, 0, SONG_RAPHAEL_RAVEN, 0, 8) + Call(SetMusic, 0, SONG_RAPHAEL_RAVEN, 0, VOL_LEVEL_FULL) Set(AF_JAN_03, FALSE) EndIf Call(ClearAmbientSounds, 250) diff --git a/src/world/area_jan/jan_22/music.c b/src/world/area_jan/jan_22/music.c index 5bdc38a4ff..d3ebfdc72c 100644 --- a/src/world/area_jan/jan_22/music.c +++ b/src/world/area_jan/jan_22/music.c @@ -3,7 +3,7 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, jan_22_ENTRY_3) - Call(SetMusicTrack, 0, SONG_STAR_SPIRIT_THEME, 1, 8) + Call(SetMusic, 0, SONG_STAR_SPIRIT_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) Thread Loop(0) Wait(1) @@ -11,13 +11,13 @@ EvtScript N(EVS_SetupMusic) = { BreakLoop EndIf EndLoop - Call(SetMusicTrack, 0, SONG_DEEP_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_DEEP_JUNGLE, 0, VOL_LEVEL_FULL) EndThread Else Switch(GB_StoryProgress) CaseRange(STORY_CH5_RAPHAEL_MOVED_ROOT, STORY_CH5_RAPHAEL_WAITING_FOR_MARIO) IfNe(LVar0, jan_22_ENTRY_1) - Call(SetMusicTrack, 0, SONG_RAPHAEL_RAVEN, 0, 8) + Call(SetMusic, 0, SONG_RAPHAEL_RAVEN, 0, VOL_LEVEL_FULL) Set(AF_JAN_03, FALSE) EndIf Thread @@ -27,11 +27,11 @@ EvtScript N(EVS_SetupMusic) = { BreakLoop EndIf EndLoop - Call(SetMusicTrack, 0, SONG_DEEP_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_DEEP_JUNGLE, 0, VOL_LEVEL_FULL) Set(AF_JAN_03, FALSE) EndThread CaseDefault - Call(SetMusicTrack, 0, SONG_DEEP_JUNGLE, 0, 8) + Call(SetMusic, 0, SONG_DEEP_JUNGLE, 0, VOL_LEVEL_FULL) EndSwitch EndIf Call(PlayAmbientSounds, AMBIENT_JUNGLE) diff --git a/src/world/area_jan/jan_22/npc.c b/src/world/area_jan/jan_22/npc.c index 1af06dc813..0862adc25f 100644 --- a/src/world/area_jan/jan_22/npc.c +++ b/src/world/area_jan/jan_22/npc.c @@ -939,7 +939,7 @@ EvtScript N(EVS_NpcInteract_Kolorado_Before) = { Call(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 0, MSG_CH5_00C2) Call(InterpPlayerYaw, 90, 3) Call(InterpNpcYaw, NPC_SELF, 90, 3) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 1, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(UseSettingsFrom, CAM_DEFAULT, 0, 200, 0) Call(GetPlayerPos, LVar0, LVar1, LVar2) Call(SetPanTarget, CAM_DEFAULT, LVar0, LVar1, LVar2) diff --git a/src/world/area_kkj/kkj_00/main.c b/src/world/area_kkj/kkj_00/main.c index c56ab61554..b7aff71f80 100644 --- a/src/world/area_kkj/kkj_00/main.c +++ b/src/world/area_kkj/kkj_00/main.c @@ -154,7 +154,7 @@ EvtScript N(EVS_Main) = { Call(EnableGroup, MODEL_g2, FALSE) Call(EnableGroup, MODEL_g51, FALSE) IfEq(GB_StoryProgress, STORY_INTRO) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 8) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_FULL) Else Thread Wait(90) diff --git a/src/world/area_kkj/kkj_00/music.c b/src/world/area_kkj/kkj_00/music.c index 319953444d..16c339e5c8 100644 --- a/src/world/area_kkj/kkj_00/music.c +++ b/src/world/area_kkj/kkj_00/music.c @@ -4,10 +4,10 @@ EvtScript N(EVS_SetupMusic) = { IfEq(GB_StoryProgress, STORY_INTRO) Call(GetEntryID, LVar0) IfEq(LVar0, kkj_00_ENTRY_3) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 7) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_7) Wait(3) EndIf - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 8) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_FULL) Else Thread Wait(90) diff --git a/src/world/area_kkj/kkj_00/scene_ending.c b/src/world/area_kkj/kkj_00/scene_ending.c index 3df695a34a..148921fb5b 100644 --- a/src/world/area_kkj/kkj_00/scene_ending.c +++ b/src/world/area_kkj/kkj_00/scene_ending.c @@ -100,7 +100,7 @@ EvtScript N(EVS_Scene_Ending) = { Call(SpeakToPlayer, NPC_ToadGuard_03, ANIM_ToadGuard_Red_Talk, ANIM_ToadGuard_Red_Idle, 5, MSG_Outro_0065) Call(InterpPlayerYaw, 0, 0) Wait(10) - Call(SetMusicTrack, 0, SONG_PEACH_APPEARS, 0, 8) + Call(SetMusic, 0, SONG_PEACH_APPEARS, 0, VOL_LEVEL_FULL) Exec(N(EVS_OpenAndClosePeachDoor)) Thread Call(SetNpcAnimation, NPC_Peach, ANIM_Peach1_Walk) @@ -129,7 +129,7 @@ EvtScript N(EVS_Scene_Ending) = { Call(SetCamSpeed, CAM_DEFAULT, Float(90.0)) Call(PanToTarget, CAM_DEFAULT, 0, TRUE) Wait(20) - Call(SetMusicTrack, 0, SONG_PEACH_APPEARS, 1, 8) + Call(SetMusic, 0, SONG_PEACH_APPEARS, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(SetNpcAnimation, NPC_Peach, ANIM_Peach2_RaiseArms) Wait(10) Call(SetNpcAnimation, NPC_Peach, ANIM_Peach2_TalkIdle) diff --git a/src/world/area_kkj/kkj_01/music.c b/src/world/area_kkj/kkj_01/music.c index ba1f790b5e..4d03b94767 100644 --- a/src/world/area_kkj/kkj_01/music.c +++ b/src/world/area_kkj/kkj_01/music.c @@ -3,10 +3,10 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, kkj_01_ENTRY_1) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 7) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_7) Wait(3) EndIf - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 8) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_kkj/kkj_02/music.c b/src/world/area_kkj/kkj_02/music.c index 201a3408bf..651e37f942 100644 --- a/src/world/area_kkj/kkj_02/music.c +++ b/src/world/area_kkj/kkj_02/music.c @@ -4,12 +4,12 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) Switch(LVar0) CaseEq(kkj_02_ENTRY_0) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 7) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_7) CaseEq(kkj_02_ENTRY_1) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 5) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_5) EndSwitch Wait(3) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 6) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_6) Return End }; diff --git a/src/world/area_kkj/kkj_03/music.c b/src/world/area_kkj/kkj_03/music.c index c9510d7f71..2aff7d52d2 100644 --- a/src/world/area_kkj/kkj_03/music.c +++ b/src/world/area_kkj/kkj_03/music.c @@ -4,11 +4,11 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) Switch(LVar0) CaseEq(kkj_03_ENTRY_0) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 5) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_5) Wait(3) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 4) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_4) CaseDefault - Call(SetMusicTrack, 0, SONG_BOWSER_ATTACKS, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_ATTACKS, 0, VOL_LEVEL_FULL) EndCaseGroup EndSwitch Return diff --git a/src/world/area_kkj/kkj_03/scenes.c b/src/world/area_kkj/kkj_03/scenes.c index f4115db041..f6719befec 100644 --- a/src/world/area_kkj/kkj_03/scenes.c +++ b/src/world/area_kkj/kkj_03/scenes.c @@ -12,7 +12,7 @@ EvtScript N(EVS_Scene_MeetingPeach) = { Call(DisablePlayerInput, TRUE) Call(FadeOutMusic, 0, 666) Wait(20 * DT) - Call(SetMusicTrack, 0, SONG_PRISONER_PEACH_THEME, 0, 8) + Call(SetMusic, 0, SONG_PRISONER_PEACH_THEME, 0, VOL_LEVEL_FULL) Call(PlayerFaceNpc, NPC_Peach, FALSE) Call(SetNpcAnimation, NPC_Peach, ANIM_Peach1_Walk) Call(SetNpcSpeed, NPC_Peach, Float(2.0 / DT)) diff --git a/src/world/area_kkj/kkj_10/main.c b/src/world/area_kkj/kkj_10/main.c index cb8b1fd503..750a5b48c0 100644 --- a/src/world/area_kkj/kkj_10/main.c +++ b/src/world/area_kkj/kkj_10/main.c @@ -177,9 +177,9 @@ EvtScript N(EVS_Main) = { Call(N(DisableAllLightSources)) EndIf IfLt(GB_StoryProgress, STORY_CH8_REACHED_PEACHS_CASTLE) - Call(SetMusicTrack, 0, SONG_PEACH_SNEAKING, 0, 8) + Call(SetMusic, 0, SONG_PEACH_SNEAKING, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_BOWSER_ATTACKS, 1, 8) + Call(SetMusic, 0, SONG_BOWSER_ATTACKS, BGM_VARIATION_1, VOL_LEVEL_FULL) EndIf Exec(N(EVS_BindExitTriggers)) Exec(N(EVS_EnterMap)) diff --git a/src/world/area_kkj/kkj_11/main.c b/src/world/area_kkj/kkj_11/main.c index 2357973094..d02f03e38c 100644 --- a/src/world/area_kkj/kkj_11/main.c +++ b/src/world/area_kkj/kkj_11/main.c @@ -213,7 +213,7 @@ EvtScript N(EVS_Main) = { Return EndIf IfLt(GB_StoryProgress, STORY_CH8_REACHED_PEACHS_CASTLE) - Call(SetMusicTrack, 0, SONG_PEACH_SNEAKING, 0, 8) + Call(SetMusic, 0, SONG_PEACH_SNEAKING, 0, VOL_LEVEL_FULL) EndIf Exec(N(EVS_BindExitTriggers)) Exec(N(EVS_EnterMap)) diff --git a/src/world/area_kkj/kkj_13/intro_scenes.c b/src/world/area_kkj/kkj_13/intro_scenes.c index b2d8b70e9f..3ce4dcdbd8 100644 --- a/src/world/area_kkj/kkj_13/intro_scenes.c +++ b/src/world/area_kkj/kkj_13/intro_scenes.c @@ -191,7 +191,7 @@ EvtScript N(EVS_FocusCam_OnBowser) = { }; EvtScript N(EVS_Scene_BowserAttacks) = { - Call(SetMusicTrack, 0, SONG_BOWSER_ATTACKS, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_ATTACKS, 0, VOL_LEVEL_FULL) Call(DisablePlayerInput, TRUE) Call(SetNpcPos, NPC_Peach, 680, 0, -15) Call(UseSettingsFrom, CAM_DEFAULT, 600, 0, -15) @@ -327,7 +327,7 @@ EvtScript N(EVS_Scene_BowserAttacks) = { Call(SetNpcAnimation, NPC_Peach, ANIM_Peach1_Idle) Wait(30 * DT) Call(SetNpcPos, NPC_Bowser_Prop, NPC_DISPOSE_LOCATION) - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) Thread Wait(5) Call(SetNpcJumpscale, NPC_Bowser_Body, Float(0.0)) diff --git a/src/world/area_kkj/kkj_13/music.c b/src/world/area_kkj/kkj_13/music.c index 6d228b3f8a..d7ca43b9c5 100644 --- a/src/world/area_kkj/kkj_13/music.c +++ b/src/world/area_kkj/kkj_13/music.c @@ -7,10 +7,10 @@ EvtScript N(EVS_SetupMusic) = { IfEq(GF_KKJ13_BowserTaunts, FALSE) Thread Wait(30) - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) EndThread Else - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) EndIf CaseDefault EndSwitch diff --git a/src/world/area_kkj/kkj_14/chapter0.c b/src/world/area_kkj/kkj_14/chapter0.c index 5e07f6994a..4e5ec9cea2 100644 --- a/src/world/area_kkj/kkj_14/chapter0.c +++ b/src/world/area_kkj/kkj_14/chapter0.c @@ -103,7 +103,7 @@ EvtScript N(EVS_Scene_Chapter0) = { Wait(10 * DT) Call(InterpPlayerYaw, 270, 3) Wait(15 * DT) - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) Call(SetCamSpeed, CAM_DEFAULT, Float(2.0 / DT)) Call(SetPanTarget, CAM_DEFAULT, -330, 0, 0) Call(SetCamPosA, CAM_DEFAULT, -330, 32) @@ -240,7 +240,7 @@ EvtScript N(EVS_Scene_Chapter0) = { BreakLoop EndIf EndLoop - Call(SetMusicTrack, 0, SONG_TWINK_THEME, 0, 8) + Call(SetMusic, 0, SONG_TWINK_THEME, 0, VOL_LEVEL_FULL) Thread Call(LoadPath, 100 * DT, Ref(N(TwinkEnterPath)), ARRAY_COUNT(N(TwinkEnterPath)), EASING_LINEAR) Loop(0) diff --git a/src/world/area_kkj/kkj_14/chapter2.c b/src/world/area_kkj/kkj_14/chapter2.c index 637628d911..d4d8f7950b 100644 --- a/src/world/area_kkj/kkj_14/chapter2.c +++ b/src/world/area_kkj/kkj_14/chapter2.c @@ -80,7 +80,7 @@ EvtScript N(EVS_FocusCam_Door_Ch2) = { EvtScript N(EVS_Scene_Chapter2) = { Call(DisablePlayerInput, TRUE) - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) Call(DisablePartnerAI, 0) Call(SetNpcPos, NPC_PARTNER, 110, 0, -190) Call(SetNpcYaw, NPC_PARTNER, 270) @@ -126,7 +126,7 @@ EvtScript N(EVS_Scene_Chapter2) = { ExecWait(N(EVS_FocusCam_Door_Ch2)) Wait(5 * DT) Exec(N(EVS_OpenDoor_Ch2)) - Call(SetMusicTrack, 0, SONG_KAMMY_KOOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_KAMMY_KOOPA_THEME, 0, VOL_LEVEL_FULL) Call(SetNpcPos, NPC_Kammy, -470, 0, -30) Call(SetNpcAnimation, NPC_Kammy, ANIM_WorldKammy_Anim03) Call(SetNpcSpeed, NPC_Kammy, Float(5.0 / DT)) @@ -194,7 +194,7 @@ EvtScript N(EVS_Scene_Chapter2) = { EndLoop Exec(N(EVS_CloseDoor_Ch2)) Wait(30 * DT) - Call(SetMusicTrack, 0, SONG_PRISONER_PEACH_THEME, 0, 8) + Call(SetMusic, 0, SONG_PRISONER_PEACH_THEME, 0, VOL_LEVEL_FULL) Call(SetCamSpeed, CAM_DEFAULT, Float(90.0)) Call(SetCamDistance, CAM_DEFAULT, 300) Call(SetPanTarget, CAM_DEFAULT, 20, 0, 30) diff --git a/src/world/area_kkj/kkj_14/chapter7.c b/src/world/area_kkj/kkj_14/chapter7.c index 276a9717d5..3df9473459 100644 --- a/src/world/area_kkj/kkj_14/chapter7.c +++ b/src/world/area_kkj/kkj_14/chapter7.c @@ -258,7 +258,7 @@ EvtScript N(EVS_Scene_Chapter7) = { Call(DisablePlayerInput, TRUE) Call(DisablePlayerPhysics, TRUE) Call(DisablePartnerAI, 0) - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) Call(SetNpcPos, NPC_PARTNER, 440, 65, 0) Call(SetNpcYaw, NPC_PARTNER, 270) Call(RotateModel, MODEL_o83, 80, 0, -1, 0) diff --git a/src/world/area_kkj/kkj_14/music.c b/src/world/area_kkj/kkj_14/music.c index 71aa841e2e..02a649743a 100644 --- a/src/world/area_kkj/kkj_14/music.c +++ b/src/world/area_kkj/kkj_14/music.c @@ -5,13 +5,13 @@ EvtScript N(EVS_SetupMusic) = { CaseOrEq(STORY_CH0_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH1_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH3_BEGAN_PEACH_MISSION) - Call(SetMusicTrack, 0, SONG_PRISONER_PEACH_THEME, 0, 8) + Call(SetMusic, 0, SONG_PRISONER_PEACH_THEME, 0, VOL_LEVEL_FULL) EndCaseGroup CaseOrEq(STORY_CH2_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH4_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH5_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH6_BEGAN_PEACH_MISSION) - Call(SetMusicTrack, 0, SONG_PEACH_MISSION, 0, 8) + Call(SetMusic, 0, SONG_PEACH_MISSION, 0, VOL_LEVEL_FULL) EndCaseGroup EndSwitch Return diff --git a/src/world/area_kkj/kkj_14/npc_guards.c b/src/world/area_kkj/kkj_14/npc_guards.c index 54a05f4930..52a7198f12 100644 --- a/src/world/area_kkj/kkj_14/npc_guards.c +++ b/src/world/area_kkj/kkj_14/npc_guards.c @@ -26,7 +26,7 @@ Vec3f N(TwinkApproachPath)[] = { EvtScript N(EVS_Scene_TossedBackInRoom) = { Call(DisablePlayerInput, TRUE) Call(DisablePlayerPhysics, TRUE) - Call(SetMusicTrack, 0, SONG_PEACH_CAUGHT, 0, 8) + Call(SetMusic, 0, SONG_PEACH_CAUGHT, 0, VOL_LEVEL_FULL) Call(SetPlayerPos, -480, 30, -30) Call(SetPlayerAnimation, ANIM_Peach2_Carried) Call(DisablePartnerAI, 0) diff --git a/src/world/area_kkj/kkj_15/chapter0.c b/src/world/area_kkj/kkj_15/chapter0.c index e696de6570..fffcf34d04 100644 --- a/src/world/area_kkj/kkj_15/chapter0.c +++ b/src/world/area_kkj/kkj_15/chapter0.c @@ -95,7 +95,7 @@ EvtScript N(EVS_CloseDoor_Ch0) = { EvtScript N(EVS_Scene_Chapter0_BowserAndKammy) = { Call(DisablePlayerInput, TRUE) Call(DisablePlayerPhysics, TRUE) - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) Call(SetNpcPos, NPC_Bowser, -70, 0, -55) Call(InterpNpcYaw, NPC_Bowser, 90, 0) Call(SetNpcAnimation, NPC_Bowser, ANIM_WorldBowser_Idle) @@ -173,7 +173,7 @@ EvtScript N(EVS_Scene_Chapter0_BowserAndKammy) = { Wait(50 * DT) ExecWait(N(EVS_FocusCam_WholeRoom)) Wait(20 * DT) - Call(SetMusicTrack, 0, SONG_KOOPA_BROS_THEME, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_BROS_THEME, 0, VOL_LEVEL_FULL) Call(ShowMessageAtScreenPos, MSG_Peach_CH1_KoopaBros_0008, 300, 20) Wait(20 * DT) Thread diff --git a/src/world/area_kkj/kkj_15/chapter1.c b/src/world/area_kkj/kkj_15/chapter1.c index 67559fe763..4f8305873c 100644 --- a/src/world/area_kkj/kkj_15/chapter1.c +++ b/src/world/area_kkj/kkj_15/chapter1.c @@ -198,7 +198,7 @@ EvtScript N(EVS_Inspect_BowsersDiary) = { Call(SetNpcAnimation, NPC_PARTNER, ANIM_Twink_Fly) Call(NpcFlyTo, NPC_PARTNER, -180, 40, -100, 10 * DT, 0, EASING_LINEAR) Wait(10 * DT) - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) Call(SetPanTarget, CAM_DEFAULT, 237, 0, 37) Call(SetCamPitch, CAM_DEFAULT, Float(17.0), Float(-12.0)) Call(SetCamPosB, CAM_DEFAULT, 170, -20) diff --git a/src/world/area_kkj/kkj_15/chapter3.c b/src/world/area_kkj/kkj_15/chapter3.c index 00eacf59a4..1d1b374abd 100644 --- a/src/world/area_kkj/kkj_15/chapter3.c +++ b/src/world/area_kkj/kkj_15/chapter3.c @@ -150,7 +150,7 @@ EvtScript N(EVS_Scene_Chapter3) = { Call(DisablePlayerInput, TRUE) Call(DisablePlayerPhysics, TRUE) Call(DisablePartnerAI, 0) - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) Call(InterpPlayerYaw, 270, 0) Call(SetPlayerPos, 50, 10, -250) Call(SetNpcPos, NPC_PARTNER, 10, 50, -250) diff --git a/src/world/area_kkj/kkj_15/music.c b/src/world/area_kkj/kkj_15/music.c index 50a96b9aef..1c3f1a788e 100644 --- a/src/world/area_kkj/kkj_15/music.c +++ b/src/world/area_kkj/kkj_15/music.c @@ -6,13 +6,13 @@ EvtScript N(EVS_SetupMusic) = { CaseOrEq(STORY_CH1_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH3_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH7_BEGAN_PEACH_MISSION) - Call(SetMusicTrack, 0, SONG_PRISONER_PEACH_THEME, 0, 8) + Call(SetMusic, 0, SONG_PRISONER_PEACH_THEME, 0, VOL_LEVEL_FULL) EndCaseGroup CaseOrEq(STORY_CH2_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH4_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH5_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH6_BEGAN_PEACH_MISSION) - Call(SetMusicTrack, 0, SONG_PEACH_MISSION, 0, 8) + Call(SetMusic, 0, SONG_PEACH_MISSION, 0, VOL_LEVEL_FULL) EndCaseGroup EndSwitch Return diff --git a/src/world/area_kkj/kkj_16/main.c b/src/world/area_kkj/kkj_16/main.c index cff33e3147..28143660e9 100644 --- a/src/world/area_kkj/kkj_16/main.c +++ b/src/world/area_kkj/kkj_16/main.c @@ -57,7 +57,7 @@ EvtScript N(EVS_Main) = { EndSwitch ExecWait(N(EVS_MakeEntities)) IfLt(GB_StoryProgress, STORY_CH8_REACHED_PEACHS_CASTLE) - Call(SetMusicTrack, 0, SONG_PEACH_SNEAKING, 0, 8) + Call(SetMusic, 0, SONG_PEACH_SNEAKING, 0, VOL_LEVEL_FULL) EndIf Call(UseDoorSounds, DOOR_SOUNDS_BASIC) BindTrigger(Ref(N(EVS_ExitDoor_kkj_11_2)), TRIGGER_WALL_PRESS_A, COLLIDER_tte, 1, 0) diff --git a/src/world/area_kkj/kkj_16/stealth.c b/src/world/area_kkj/kkj_16/stealth.c index 60a65b619d..2326590e1c 100644 --- a/src/world/area_kkj/kkj_16/stealth.c +++ b/src/world/area_kkj/kkj_16/stealth.c @@ -151,15 +151,15 @@ EvtScript N(EVS_ManageSneakingScenes) = { Call(DisablePlayerPhysics, TRUE) Call(DisablePartnerAI, 0) Thread - Call(SetMusicTrack, 0, SONG_PEACH_SNEAKING, 0, 8) + Call(SetMusic, 0, SONG_PEACH_SNEAKING, 0, VOL_LEVEL_FULL) Wait(3) - Call(SetMusicTrack, 0, SONG_PEACH_SNEAKING, 0, 7) + Call(SetMusic, 0, SONG_PEACH_SNEAKING, 0, VOL_LEVEL_7) Wait(3) - Call(SetMusicTrack, 0, SONG_PEACH_SNEAKING, 0, 6) + Call(SetMusic, 0, SONG_PEACH_SNEAKING, 0, VOL_LEVEL_6) Wait(3) - Call(SetMusicTrack, 0, SONG_PEACH_SNEAKING, 0, 5) + Call(SetMusic, 0, SONG_PEACH_SNEAKING, 0, VOL_LEVEL_5) Wait(3) - Call(SetMusicTrack, 0, SONG_PEACH_SNEAKING, 0, 4) + Call(SetMusic, 0, SONG_PEACH_SNEAKING, 0, VOL_LEVEL_4) EndThread Call(SetPlayerAnimation, ANIM_Peach2_Startle) Call(PlaySoundAtPlayer, SOUND_EMOTE_IDEA, SOUND_SPACE_DEFAULT) diff --git a/src/world/area_kkj/kkj_18/gourmet.c b/src/world/area_kkj/kkj_18/gourmet.c index a710d5b382..618e72f1e1 100644 --- a/src/world/area_kkj/kkj_18/gourmet.c +++ b/src/world/area_kkj/kkj_18/gourmet.c @@ -267,7 +267,7 @@ EvtScript N(EVS_GourmetGuy_LovesCake) = { Call(WaitForCam, CAM_DEFAULT, Float(1.0)) Call(PlaySoundAtNpc, NPC_GourmetGuy, SOUND_GOURMET_GUY_SHOCK_3, SOUND_SPACE_DEFAULT) Wait(18 * DT) - Call(SetMusicTrack, 0, SONG_GOURMET_GUY_FREAKOUT, 0, 8) + Call(SetMusic, 0, SONG_GOURMET_GUY_FREAKOUT, 0, VOL_LEVEL_FULL) Wait(30 * DT) Call(SetMotionBlurParams, 0, 0, 0, 320, 240, 128, 10) Call(SetCamSpeed, CAM_DEFAULT, Float(12.0)) @@ -594,7 +594,7 @@ EvtScript N(EVS_Scene_JudgeCake) = { Call(SetNpcPos, NPC_Koopatrol_02, -250, 0, -30) Call(SetNpcPos, NPC_Kammy, -250, 0, -30) Call(SpeakToPlayer, NPC_Kammy, ANIM_WorldKammy_Anim04, ANIM_WorldKammy_Anim01, 0, MSG_Peach_00B3) - Call(SetMusicTrack, 0, SONG_KAMMY_KOOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_KAMMY_KOOPA_THEME, 0, VOL_LEVEL_FULL) Call(UseSettingsFrom, CAM_DEFAULT, -180, 0, -30) Call(SetPanTarget, CAM_DEFAULT, -180, 0, -30) Call(SetCamDistance, CAM_DEFAULT, Float(300.0)) diff --git a/src/world/area_kkj/kkj_18/music.c b/src/world/area_kkj/kkj_18/music.c index d17c56f438..f8474d72e9 100644 --- a/src/world/area_kkj/kkj_18/music.c +++ b/src/world/area_kkj/kkj_18/music.c @@ -2,7 +2,7 @@ EvtScript N(EVS_SetupMusic) = { IfEq(GB_StoryProgress, STORY_CH4_BEGAN_PEACH_MISSION) - Call(SetMusicTrack, 0, SONG_PEACH_MISSION, 0, 8) + Call(SetMusic, 0, SONG_PEACH_MISSION, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_kkj/kkj_19/baking.c b/src/world/area_kkj/kkj_19/baking.c index b9a42f3db7..d5d8cf4189 100644 --- a/src/world/area_kkj/kkj_19/baking.c +++ b/src/world/area_kkj/kkj_19/baking.c @@ -1101,7 +1101,7 @@ EvtScript N(EVS_ManageBaking) = { Call(RemoveItemEntity, AB_KKJ19_CookwareItemIdx) ExecGetTID(N(EVS_UpdatePeachMixingAnimations), LVarA) Wait(10 * DT) - Call(SetMusicTrack, 0, SONG_STIRRING_CAKE, 0, 8) + Call(SetMusic, 0, SONG_STIRRING_CAKE, 0, VOL_LEVEL_FULL) Call(PlaySound, SOUND_GENERAL_WHISTLE) Thread Call(AdjustCam, CAM_DEFAULT, Float(0.2 / DT), 0, 250, Float(17.0), Float(-7.0)) diff --git a/src/world/area_kkj/kkj_19/music.c b/src/world/area_kkj/kkj_19/music.c index ac4c0aea45..e508a330a2 100644 --- a/src/world/area_kkj/kkj_19/music.c +++ b/src/world/area_kkj/kkj_19/music.c @@ -2,13 +2,13 @@ EvtScript N(EVS_SetupMusic) = { IfEq(GB_StoryProgress, STORY_INTRO) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 7) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_7) Wait(3) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 6) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_6) Return EndIf IfEq(GB_StoryProgress, STORY_CH4_BEGAN_PEACH_MISSION) - Call(SetMusicTrack, 0, SONG_PEACH_MISSION, 0, 8) + Call(SetMusic, 0, SONG_PEACH_MISSION, 0, VOL_LEVEL_FULL) Return EndIf Return diff --git a/src/world/area_kkj/kkj_20/music.c b/src/world/area_kkj/kkj_20/music.c index a7f38521ea..54b8d841d2 100644 --- a/src/world/area_kkj/kkj_20/music.c +++ b/src/world/area_kkj/kkj_20/music.c @@ -1,13 +1,13 @@ #include "kkj_20.h" EvtScript N(EVS_PlayBowserSong) = { - Call(SetMusicTrack, 0, SONG_BOWSER_ATTACKS, 1, 8) + Call(SetMusic, 0, SONG_BOWSER_ATTACKS, BGM_VARIATION_1, VOL_LEVEL_FULL) Return End }; EvtScript N(EVS_PlayRestingSong) = { - Call(SetMusicTrack, 0, SONG_TAKING_REST, 0, 8) + Call(SetMusic, 0, SONG_TAKING_REST, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_kkj/kkj_22/music.c b/src/world/area_kkj/kkj_22/music.c index 3924af94ee..50301c4ed7 100644 --- a/src/world/area_kkj/kkj_22/music.c +++ b/src/world/area_kkj/kkj_22/music.c @@ -2,7 +2,7 @@ EvtScript N(EVS_SetupMusic) = { IfGe(GB_StoryProgress, STORY_CH8_REACHED_PEACHS_CASTLE) - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_kkj/kkj_23/music.c b/src/world/area_kkj/kkj_23/music.c index 1189a8b55d..4cf10afafe 100644 --- a/src/world/area_kkj/kkj_23/music.c +++ b/src/world/area_kkj/kkj_23/music.c @@ -2,7 +2,7 @@ EvtScript N(EVS_SetupMusic) = { IfGe(GB_StoryProgress, STORY_CH8_REACHED_PEACHS_CASTLE) - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_kkj/kkj_23/scene.c b/src/world/area_kkj/kkj_23/scene.c index 7d0d2f1cf1..54d1762582 100644 --- a/src/world/area_kkj/kkj_23/scene.c +++ b/src/world/area_kkj/kkj_23/scene.c @@ -189,7 +189,7 @@ EvtScript N(EVS_Scene_KammyUnmasksPeach) = { Call(DisablePlayerInput, TRUE) Call(DisablePlayerPhysics, TRUE) Call(DisablePartnerAI, 0) - Call(SetMusicTrack, 0, SONG_KAMMY_KOOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_KAMMY_KOOPA_THEME, 0, VOL_LEVEL_FULL) Call(SetNpcVar, NPC_Koopatrol_01, 1, 0) Call(SetNpcFlagBits, NPC_Koopatrol_01, NPC_FLAG_IGNORE_PLAYER_COLLISION, TRUE) Call(SetNpcPos, NPC_Kammy, -50, 0, -50) diff --git a/src/world/area_kkj/kkj_24/music.c b/src/world/area_kkj/kkj_24/music.c index 7d7e010959..cc0e132236 100644 --- a/src/world/area_kkj/kkj_24/music.c +++ b/src/world/area_kkj/kkj_24/music.c @@ -2,7 +2,7 @@ EvtScript N(EVS_SetupMusic) = { IfGe(GB_StoryProgress, STORY_CH8_REACHED_PEACHS_CASTLE) - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_kkj/kkj_25/arena.c b/src/world/area_kkj/kkj_25/arena.c index edc977aeb1..dcc04e64a0 100644 --- a/src/world/area_kkj/kkj_25/arena.c +++ b/src/world/area_kkj/kkj_25/arena.c @@ -373,7 +373,7 @@ EvtScript N(EVS_Scene_ActivateMachine) = { Wait(40) Call(SetCamProperties, CAM_DEFAULT, Float(4.0), 300, 0, 0, 1100, Float(7.0), Float(0.0)) Wait(20) - Call(SetMusicTrack, 0, SONG_BOWSER_BATTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_BATTLE, 0, VOL_LEVEL_FULL) Exec(N(EVS_ArenaEyesFlash)) Wait(30) Set(MV_ArenaState, ARENA_STATE_ACTIVATING) diff --git a/src/world/area_kkj/kkj_25/bowser_defeated.c b/src/world/area_kkj/kkj_25/bowser_defeated.c index 22073acc07..cad9abc62f 100644 --- a/src/world/area_kkj/kkj_25/bowser_defeated.c +++ b/src/world/area_kkj/kkj_25/bowser_defeated.c @@ -301,7 +301,7 @@ EvtScript N(EVS_Scene_BowserDefeated) = { Call(FadeOutMusic, 0, 150) Call(ClearAmbientSounds, 150) Wait(10) - Call(SetMusicTrack, 0, SONG_RECOVERED_STAR_ROD, 0, 8) + Call(SetMusic, 0, SONG_RECOVERED_STAR_ROD, 0, VOL_LEVEL_FULL) Call(NpcJump0, NPC_StarRod, 230, 18, 0, 25 * DT) Call(NpcJump0, NPC_StarRod, 190, 18, 0, 20 * DT) Thread diff --git a/src/world/area_kkj/kkj_25/kammy_defeated.c b/src/world/area_kkj/kkj_25/kammy_defeated.c index 9853e6dc1c..e1f7496e32 100644 --- a/src/world/area_kkj/kkj_25/kammy_defeated.c +++ b/src/world/area_kkj/kkj_25/kammy_defeated.c @@ -94,7 +94,7 @@ EvtScript N(EVS_Scene_KammyDefeated) = { Call(SpeakToPlayer, NPC_Twink_01, ANIM_Twink_Talk, ANIM_Twink_Idle, 0, MSG_CH8_009D) Wait(10) Call(StopSound, SOUND_LRAW_KPA_ARENA_ACTIVE) - Call(SetMusicTrack, 0, SONG_PEACH_WISHES, 0, 8) + Call(SetMusic, 0, SONG_PEACH_WISHES, 0, VOL_LEVEL_FULL) Call(InterpNpcYaw, NPC_Peach_01, 270, 0) Wait(10) Call(SpeakToPlayer, NPC_Peach_01, ANIM_Peach2_Talk, ANIM_Peach2_TalkIdle, 5, MSG_CH8_009E) diff --git a/src/world/area_kkj/kkj_26/scenes.c b/src/world/area_kkj/kkj_26/scenes.c index a907c6c773..d95ba0632f 100644 --- a/src/world/area_kkj/kkj_26/scenes.c +++ b/src/world/area_kkj/kkj_26/scenes.c @@ -4,7 +4,7 @@ EvtScript N(EVS_Scene_WhereIsMario) = { Call(DisablePlayerInput, TRUE) Call(DisablePlayerPhysics, TRUE) - Call(SetMusicTrack, 0, SONG_PRISONER_PEACH_THEME, 1, 8) + Call(SetMusic, 0, SONG_PRISONER_PEACH_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(DisablePartnerAI, 0) Call(SetNpcPos, NPC_PARTNER, 0, -500, 0) Call(RotateModel, MODEL_o85, 80, 0, -1, 0) @@ -37,7 +37,7 @@ EvtScript N(EVS_Scene_WhereIsMario) = { EvtScript N(EVS_Scene_AfterAllSpiritsRescued) = { Call(DisablePlayerInput, TRUE) Call(DisablePartnerAI, 0) - Call(SetMusicTrack, 0, SONG_PRISONER_PEACH_THEME, 1, 8) + Call(SetMusic, 0, SONG_PRISONER_PEACH_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(InterpPlayerYaw, 90, 0) Call(SetNpcPos, NPC_PARTNER, 500, 50, 0) Call(SetNpcYaw, NPC_PARTNER, 90) diff --git a/src/world/area_kkj/kkj_27/music.c b/src/world/area_kkj/kkj_27/music.c index 3b6ea14c15..0812275121 100644 --- a/src/world/area_kkj/kkj_27/music.c +++ b/src/world/area_kkj/kkj_27/music.c @@ -6,13 +6,13 @@ EvtScript N(EVS_SetupMusic) = { CaseOrEq(STORY_CH1_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH3_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH7_BEGAN_PEACH_MISSION) - Call(SetMusicTrack, 0, SONG_PRISONER_PEACH_THEME, 0, 6) + Call(SetMusic, 0, SONG_PRISONER_PEACH_THEME, 0, VOL_LEVEL_6) EndCaseGroup CaseOrEq(STORY_CH2_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH4_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH5_BEGAN_PEACH_MISSION) CaseOrEq(STORY_CH6_BEGAN_PEACH_MISSION) - Call(SetMusicTrack, 0, SONG_PEACH_MISSION, 0, 6) + Call(SetMusic, 0, SONG_PEACH_MISSION, 0, VOL_LEVEL_6) EndCaseGroup EndSwitch Return diff --git a/src/world/area_kkj/kkj_29/quiz.c b/src/world/area_kkj/kkj_29/quiz.c index 7b8d63e4b6..a98227fe08 100644 --- a/src/world/area_kkj/kkj_29/quiz.c +++ b/src/world/area_kkj/kkj_29/quiz.c @@ -990,7 +990,7 @@ EvtScript N(EVS_ManageQuizGame) = { ExecWait(N(EVS_TwinkFollowPath)) Call(SetNpcAnimation, NPC_PARTNER, ANIM_Twink_Idle) Wait(30 * DT) - Call(SetMusicTrack, 0, SONG_PEACH_QUIZ_INTRO, 0, 8) + Call(SetMusic, 0, SONG_PEACH_QUIZ_INTRO, 0, VOL_LEVEL_FULL) Call(SpeakToPlayer, NPC_HammerBros, ANIM_HammerBros_Anim0B, ANIM_HammerBros_Anim03, 5, MSG_Peach_00F5) Call(PlaySound, SOUND_AUDIENCE_CHEER) Wait(10 * DT) @@ -1023,7 +1023,7 @@ EvtScript N(EVS_ManageQuizGame) = { Call(SetCamSpeed, CAM_DEFAULT, Float(4.0 / DT)) Call(PanToTarget, CAM_DEFAULT, 0, TRUE) Call(WaitForCam, CAM_DEFAULT, Float(1.0)) - Call(SetMusicTrack, 0, SONG_PEACH_QUIZ_INTRO, 1, 8) + Call(SetMusic, 0, SONG_PEACH_QUIZ_INTRO, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(SpeakToPlayer, NPC_HammerBros, ANIM_HammerBros_Anim0B, ANIM_HammerBros_Anim03, 5, MSG_Peach_00F8) ExecWait(N(EVS_SetCam_Contestants)) Set(AB_KKJ29_LeftKoopatrolScore, 0) @@ -1109,7 +1109,7 @@ EvtScript N(EVS_ManageQuizGame) = { Set(LVar5, 0) Set(LVar6, MSG_Peach_011A) ExecWait(N(Script_DoRound)) - Call(SetMusicTrack, 0, SONG_PEACH_MISSION, 0, 8) + Call(SetMusic, 0, SONG_PEACH_MISSION, 0, VOL_LEVEL_FULL) ExecWait(N(EVS_DeclareWinner)) Call(SetPanTarget, CAM_DEFAULT, -230, 0, 0) Call(SetCamDistance, CAM_DEFAULT, Float(300.0)) @@ -1119,7 +1119,7 @@ EvtScript N(EVS_ManageQuizGame) = { Call(NpcMoveTo, NPC_HammerBros, -230, 0, 0) Call(InterpNpcYaw, NPC_HammerBros, 90, 0) Call(SetNpcAnimation, NPC_HammerBros, ANIM_HammerBros_Anim03) - Call(SetMusicTrack, 0, SONG_PEACH_QUIZ_INTRO, 2, 8) + Call(SetMusic, 0, SONG_PEACH_QUIZ_INTRO, BGM_VARIATION_2, VOL_LEVEL_FULL) Call(SpeakToPlayer, NPC_HammerBros, ANIM_HammerBros_Anim0B, ANIM_HammerBros_Anim03, 0, MSG_Peach_0125) Call(SetNpcVar, NPC_HammerBros, 0, 1) Thread @@ -1169,7 +1169,7 @@ EvtScript N(EVS_ManageQuizGame) = { Call(ShowGotItem, ITEM_SNEAKY_PARASOL, TRUE, 0) Call(SpeakToPlayer, NPC_HammerBros, ANIM_HammerBros_Anim0B, ANIM_HammerBros_Anim03, 0, MSG_Peach_0127) Wait(10 * DT) - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) Call(UseSettingsFrom, CAM_DEFAULT, 330, 0, 0) Call(SetPanTarget, CAM_DEFAULT, 330, 0, 0) Call(SetCamDistance, CAM_DEFAULT, Float(350.0)) diff --git a/src/world/area_kmr/kmr_00/music.c b/src/world/area_kmr/kmr_00/music.c index a7fd40c9c0..d4f4782663 100644 --- a/src/world/area_kmr/kmr_00/music.c +++ b/src/world/area_kmr/kmr_00/music.c @@ -2,7 +2,7 @@ EvtScript N(EVS_SetupMusic) = { IfGe(GB_StoryProgress, STORY_CH0_WAKE_UP) - Call(SetMusicTrack, 0, SONG_GOOMBA_VILLAGE, 0, 8) + Call(SetMusic, 0, SONG_GOOMBA_VILLAGE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_BIRDS) EndIf Return diff --git a/src/world/area_kmr/kmr_00/revival.c b/src/world/area_kmr/kmr_00/revival.c index af00151af7..2120b1c5cc 100644 --- a/src/world/area_kmr/kmr_00/revival.c +++ b/src/world/area_kmr/kmr_00/revival.c @@ -332,7 +332,7 @@ EvtScript N(EVS_Scene_MarioRevived) = { Wait(140 * DT) Call(N(func_80240584_8AC514)) Wait(30 * DT) - Call(SetMusicTrack, 0, SONG_STAR_SPIRIT_THEME, 0, 8) + Call(SetMusic, 0, SONG_STAR_SPIRIT_THEME, 0, VOL_LEVEL_FULL) Thread Call(N(func_80240000_8ABF90), 50, 50, 50, 0, 0, 0, 50 * DT) EndThread diff --git a/src/world/area_kmr/kmr_02/music.c b/src/world/area_kmr/kmr_02/music.c index 03cace005e..a70f70aaa6 100644 --- a/src/world/area_kmr/kmr_02/music.c +++ b/src/world/area_kmr/kmr_02/music.c @@ -9,7 +9,7 @@ EvtScript N(EVS_FadeOutMusic) = { EvtScript N(EVS_SetupMusic) = { IfGe(GB_StoryProgress, STORY_CH0_MET_INNKEEPER) - Call(SetMusicTrack, 0, SONG_GOOMBA_VILLAGE, 0, 8) + Call(SetMusic, 0, SONG_GOOMBA_VILLAGE, 0, VOL_LEVEL_FULL) EndIf Call(GetEntryID, LVar0) Switch(LVar0) @@ -37,7 +37,7 @@ EvtScript N(EVS_PopSong) = { }; EvtScript N(EVS_PlayRestingSong) = { - Call(SetMusicTrack, 0, SONG_TAKING_REST, 0, 8) + Call(SetMusic, 0, SONG_TAKING_REST, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_kmr/kmr_03/music.c b/src/world/area_kmr/kmr_03/music.c index 66a2c6a7c0..22ceaef0e6 100644 --- a/src/world/area_kmr/kmr_03/music.c +++ b/src/world/area_kmr/kmr_03/music.c @@ -1,7 +1,7 @@ #include "kmr_03.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_kmr/kmr_04/music.c b/src/world/area_kmr/kmr_04/music.c index d957ffe596..5666f20aa0 100644 --- a/src/world/area_kmr/kmr_04/music.c +++ b/src/world/area_kmr/kmr_04/music.c @@ -1,13 +1,13 @@ #include "kmr_04.h" EvtScript N(EVS_SetNormalMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Return End }; EvtScript N(EVS_SetJrTroopaMusic) = { - Call(SetMusicTrack, 0, SONG_JR_TROOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_JR_TROOPA_THEME, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_kmr/kmr_05/music.c b/src/world/area_kmr/kmr_05/music.c index 6808632007..e409d48894 100644 --- a/src/world/area_kmr/kmr_05/music.c +++ b/src/world/area_kmr/kmr_05/music.c @@ -1,7 +1,7 @@ #include "kmr_05.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_kmr/kmr_06/music.c b/src/world/area_kmr/kmr_06/music.c index 6afeacc894..a2d4dab61b 100644 --- a/src/world/area_kmr/kmr_06/music.c +++ b/src/world/area_kmr/kmr_06/music.c @@ -1,7 +1,7 @@ #include "kmr_06.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_kmr/kmr_07/music.c b/src/world/area_kmr/kmr_07/music.c index 515ae79a0f..008f6b0d7e 100644 --- a/src/world/area_kmr/kmr_07/music.c +++ b/src/world/area_kmr/kmr_07/music.c @@ -1,7 +1,7 @@ #include "kmr_07.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_kmr/kmr_07/npc.c b/src/world/area_kmr/kmr_07/npc.c index 68be2069c7..406b36432e 100644 --- a/src/world/area_kmr/kmr_07/npc.c +++ b/src/world/area_kmr/kmr_07/npc.c @@ -33,7 +33,7 @@ EvtScript N(EVS_NpcIdle_GoombaBros_Red) = { IfLt(LVar0, 210) Goto(0) EndIf - Call(SetMusicTrack, 0, SONG_MINIBOSS_BATTLE, 0, 8) + Call(SetMusic, 0, SONG_MINIBOSS_BATTLE, 0, VOL_LEVEL_FULL) SetGroup(EVT_GROUP_NOT_BATTLE) Thread Wait(3) @@ -109,7 +109,7 @@ EvtScript N(EVS_NpcIdle_GoombaBros_Red) = { EvtScript N(EVS_NpcDefeat_GoombaBros_Red) = { Thread Wait(5 * DT) - Call(SetMusicTrack, 0, SONG_GOOMBA_BROS_RETREAT, 0, 8) + Call(SetMusic, 0, SONG_GOOMBA_BROS_RETREAT, 0, VOL_LEVEL_FULL) EndThread Call(GetBattleOutcome, LVar0) Switch(LVar0) diff --git a/src/world/area_kmr/kmr_09/music.c b/src/world/area_kmr/kmr_09/music.c index 43922851fa..0339aba269 100644 --- a/src/world/area_kmr/kmr_09/music.c +++ b/src/world/area_kmr/kmr_09/music.c @@ -1,7 +1,7 @@ #include "kmr_09.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_kmr/kmr_10/music.c b/src/world/area_kmr/kmr_10/music.c index a808bf0897..bda9d8ad8e 100644 --- a/src/world/area_kmr/kmr_10/music.c +++ b/src/world/area_kmr/kmr_10/music.c @@ -1,7 +1,7 @@ #include "kmr_10.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_kmr/kmr_11/kammy.c b/src/world/area_kmr/kmr_11/kammy.c index b56dc3e44a..45f350e756 100644 --- a/src/world/area_kmr/kmr_11/kammy.c +++ b/src/world/area_kmr/kmr_11/kammy.c @@ -8,7 +8,7 @@ Vec3f N(FlightPath_Away)[] = { }; EvtScript N(EVS_Scene_KammyWatching) = { - Call(SetMusicTrack, 0, SONG_KAMMY_KOOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_KAMMY_KOOPA_THEME, 0, VOL_LEVEL_FULL) Call(SetNpcVar, NPC_Kammy, 0, 1) Call(SetNpcPos, NPC_Kammy, 100, 182, -353) Call(UseSettingsFrom, CAM_DEFAULT, 100, 0, -220) diff --git a/src/world/area_kmr/kmr_11/main.c b/src/world/area_kmr/kmr_11/main.c index 821ba15ed9..5b40d6c7cc 100644 --- a/src/world/area_kmr/kmr_11/main.c +++ b/src/world/area_kmr/kmr_11/main.c @@ -122,7 +122,7 @@ EvtScript N(EVS_Main) = { IfLt(GB_StoryProgress, STORY_CH0_DEFEATED_GOOMBA_KING) IfEq(GF_KMR11_GoombaBrosFledToCastle, FALSE) Exec(N(EVS_BindExitTriggers)) - Call(SetMusicTrack, 0, SONG_GOOMBA_BROS_RETREAT, 1, 8) + Call(SetMusic, 0, SONG_GOOMBA_BROS_RETREAT, BGM_VARIATION_1, VOL_LEVEL_FULL) ExecWait(N(EVS_Scene_MeetGoombaKing)) Set(GF_KMR11_GoombaBrosFledToCastle, TRUE) Else diff --git a/src/world/area_kmr/kmr_11/music.c b/src/world/area_kmr/kmr_11/music.c index b2c1367751..9a8512783a 100644 --- a/src/world/area_kmr/kmr_11/music.c +++ b/src/world/area_kmr/kmr_11/music.c @@ -1,7 +1,7 @@ #include "kmr_11.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_kmr/kmr_11/scenes.c b/src/world/area_kmr/kmr_11/scenes.c index 60a1d9d9c2..a2edd3c593 100644 --- a/src/world/area_kmr/kmr_11/scenes.c +++ b/src/world/area_kmr/kmr_11/scenes.c @@ -403,7 +403,7 @@ EvtScript N(EVS_Scene_MeetGoombaKing_Impl) = { Set(LVar3, 8) Exec(N(EVS_BouncePlayerAndPartner)) Wait(28 * DT) - Call(SetMusicTrack, 0, SONG_GOOMBA_KING_THEME, 0, 8) + Call(SetMusic, 0, SONG_GOOMBA_KING_THEME, 0, VOL_LEVEL_FULL) Wait(32 * DT) Call(SetNpcAnimation, NPC_BlueGoombaBro, ANIM_GoombaBros_Blue_Idle) Call(SetNpcAnimation, NPC_RedGoombaBro, ANIM_GoombaBros_Red_Idle) diff --git a/src/world/area_kmr/kmr_12/music.c b/src/world/area_kmr/kmr_12/music.c index dd529ab6aa..d1099f8575 100644 --- a/src/world/area_kmr/kmr_12/music.c +++ b/src/world/area_kmr/kmr_12/music.c @@ -1,7 +1,7 @@ #include "kmr_12.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_kmr/kmr_20/music.c b/src/world/area_kmr/kmr_20/music.c index 7c3e0036d2..89fa4a3914 100644 --- a/src/world/area_kmr/kmr_20/music.c +++ b/src/world/area_kmr/kmr_20/music.c @@ -14,7 +14,7 @@ EvtScript N(EVS_SetupMusic) = { Call(FadeOutMusic, 0, 500) EndCaseGroup CaseDefault - Call(SetMusicTrack, 0, SONG_MARIO_BROS_HOUSE, 0, 8) + Call(SetMusic, 0, SONG_MARIO_BROS_HOUSE, 0, VOL_LEVEL_FULL) EndSwitch Thread Call(GetEntryID, LVar0) @@ -31,7 +31,7 @@ EvtScript N(EVS_SetupMusic) = { }; EvtScript N(EVS_PlayRestingSong) = { - Call(SetMusicTrack, 0, SONG_TAKING_REST, 0, 8) + Call(SetMusic, 0, SONG_TAKING_REST, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_kmr/kmr_20/npc_epilogue.c b/src/world/area_kmr/kmr_20/npc_epilogue.c index b7f6483884..fdf928cc5e 100644 --- a/src/world/area_kmr/kmr_20/npc_epilogue.c +++ b/src/world/area_kmr/kmr_20/npc_epilogue.c @@ -288,7 +288,7 @@ EvtScript N(EVS_Scene_EpilogueGetLetter) = { Call(N(func_802420EC_8EDF0C)) Call(N(SetAmbienceVolumeFull_Epilogue)) Wait(30) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 0, 8) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, 0, VOL_LEVEL_FULL) Exec(N(EVS_OpenAndCloseDoor_Epilogue)) Thread Wait(10) diff --git a/src/world/area_kmr/kmr_20/npc_intro.c b/src/world/area_kmr/kmr_20/npc_intro.c index c35635f6ab..d89cdaa4c7 100644 --- a/src/world/area_kmr/kmr_20/npc_intro.c +++ b/src/world/area_kmr/kmr_20/npc_intro.c @@ -197,7 +197,7 @@ EvtScript N(EVS_Scene_BeginGame) = { Call(DisablePlayerInput, TRUE) Thread Wait(5 * DT) - Call(SetMusicTrack, 0, SONG_MAIL_CALL, 0, 8) + Call(SetMusic, 0, SONG_MAIL_CALL, 0, VOL_LEVEL_FULL) EndThread Call(InterpPlayerYaw, 90, 0) Call(SetPlayerPos, -50, 30, -80) @@ -383,7 +383,7 @@ EvtScript N(EVS_Scene_BeginGame) = { Call(SpeakToPlayer, NPC_Scene_Luigi, ANIM_Luigi_TalkRead, ANIM_Luigi_IdleRead, 0, MSG_Intro_0021) Call(SetNpcAnimation, NPC_Scene_Luigi, ANIM_Luigi_ReadLetter) Wait(10 * DT) - Call(SetMusicTrack, 0, SONG_PRISONER_PEACH_THEME, 0, 8) + Call(SetMusic, 0, SONG_PRISONER_PEACH_THEME, 0, VOL_LEVEL_FULL) Wait(5 * DT) Call(ClearAmbientSounds, 250) Call(GotoMapSpecial, Ref("osr_00"), osr_00_ENTRY_3, TRANSITION_SLOW_FADE_TO_WHITE) @@ -403,7 +403,7 @@ EvtScript N(EVS_Scene_SettingOff) = { Call(SetCamSpeed, CAM_DEFAULT, Float(90.0)) Call(PanToTarget, CAM_DEFAULT, 0, TRUE) Wait(60 * DT) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 8) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_FULL) Exec(N(EVS_OpenAndCloseDoor_Intro)) Thread Wait(10 * DT) diff --git a/src/world/area_kmr/kmr_22/main.c b/src/world/area_kmr/kmr_22/main.c index c0e0eeb8fd..013b288218 100644 --- a/src/world/area_kmr/kmr_22/main.c +++ b/src/world/area_kmr/kmr_22/main.c @@ -193,7 +193,7 @@ EvtScript N(EVS_Main) = { Call(DisablePlayerPhysics, TRUE) Wait(1) Exec(N(EVS_EnterMap)) - Call(SetMusicTrack, 0, SONG_CHAPTER_START, 0, 8) + Call(SetMusic, 0, SONG_CHAPTER_START, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 250) Return End diff --git a/src/world/area_kmr/kmr_23/main.c b/src/world/area_kmr/kmr_23/main.c index 5c39ace49c..fc1652a7a8 100644 --- a/src/world/area_kmr/kmr_23/main.c +++ b/src/world/area_kmr/kmr_23/main.c @@ -78,7 +78,7 @@ EvtScript N(EVS_Main) = { Call(FadeOutMusic, 0, 150) Call(ClearAmbientSounds, 150) Wait(10) - Call(SetMusicTrack, 0, SONG_CHAPTER_END, 0, 8) + Call(SetMusic, 0, SONG_CHAPTER_END, 0, VOL_LEVEL_FULL) EndThread Wait(20) Return diff --git a/src/world/area_kmr/kmr_30/main.c b/src/world/area_kmr/kmr_30/main.c index b42cdffb9b..d43f463cf5 100644 --- a/src/world/area_kmr/kmr_30/main.c +++ b/src/world/area_kmr/kmr_30/main.c @@ -11,7 +11,7 @@ EvtScript N(EVS_Main) = { Thread Call(FadeOutMusic, 0, 0x00001388) Wait(390) - Call(SetMusicTrack, 0, SONG_THE_END, 0, 8) + Call(SetMusic, 0, SONG_THE_END, 0, VOL_LEVEL_FULL) EndThread Exec(N(EVS_Scene_TheEnd)) Return diff --git a/src/world/area_kpa/kpa_01/music.c b/src/world/area_kpa/kpa_01/music.c index f265c51477..53f7cf5176 100644 --- a/src/world/area_kpa/kpa_01/music.c +++ b/src/world/area_kpa/kpa_01/music.c @@ -1,7 +1,7 @@ #include "kpa_01.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE_CAVES, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE_CAVES, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 250) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Return diff --git a/src/world/area_kpa/kpa_03/music.c b/src/world/area_kpa/kpa_03/music.c index 07123ff1d9..5e5f2e8265 100644 --- a/src/world/area_kpa/kpa_03/music.c +++ b/src/world/area_kpa/kpa_03/music.c @@ -1,7 +1,7 @@ #include "kpa_03.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE_CAVES, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE_CAVES, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Return End diff --git a/src/world/area_kpa/kpa_04/music.c b/src/world/area_kpa/kpa_04/music.c index a5e2eb304e..6a66b16b80 100644 --- a/src/world/area_kpa/kpa_04/music.c +++ b/src/world/area_kpa/kpa_04/music.c @@ -1,11 +1,11 @@ #include "kpa_04.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_1) + Call(SetTrackVolumes, TRACK_VOLS_KPA_1) EndThread Return End diff --git a/src/world/area_kpa/kpa_08/music.c b/src/world/area_kpa/kpa_08/music.c index cede108008..6443f54138 100644 --- a/src/world/area_kpa/kpa_08/music.c +++ b/src/world/area_kpa/kpa_08/music.c @@ -1,11 +1,11 @@ #include "kpa_08.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_09/music.c b/src/world/area_kpa/kpa_09/music.c index 50798e542a..32de0fa291 100644 --- a/src/world/area_kpa/kpa_09/music.c +++ b/src/world/area_kpa/kpa_09/music.c @@ -1,11 +1,11 @@ #include "kpa_09.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_10/music.c b/src/world/area_kpa/kpa_10/music.c index 1ae5a890c5..3746aa247b 100644 --- a/src/world/area_kpa/kpa_10/music.c +++ b/src/world/area_kpa/kpa_10/music.c @@ -1,11 +1,11 @@ #include "kpa_10.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_1) + Call(SetTrackVolumes, TRACK_VOLS_KPA_1) EndThread Return End diff --git a/src/world/area_kpa/kpa_100/music.c b/src/world/area_kpa/kpa_100/music.c index a618dd8b7c..f20e0db3c2 100644 --- a/src/world/area_kpa/kpa_100/music.c +++ b/src/world/area_kpa/kpa_100/music.c @@ -1,11 +1,11 @@ #include "kpa_100.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_101/music.c b/src/world/area_kpa/kpa_101/music.c index 096f377ffc..365d2163b9 100644 --- a/src/world/area_kpa/kpa_101/music.c +++ b/src/world/area_kpa/kpa_101/music.c @@ -1,11 +1,11 @@ #include "kpa_101.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_102/music.c b/src/world/area_kpa/kpa_102/music.c index 17eac88847..245cc80be9 100644 --- a/src/world/area_kpa/kpa_102/music.c +++ b/src/world/area_kpa/kpa_102/music.c @@ -1,11 +1,11 @@ #include "kpa_102.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_11/music.c b/src/world/area_kpa/kpa_11/music.c index 0f3b75b7df..711167bae6 100644 --- a/src/world/area_kpa/kpa_11/music.c +++ b/src/world/area_kpa/kpa_11/music.c @@ -1,12 +1,12 @@ #include "kpa_11.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_1) + Call(SetTrackVolumes, TRACK_VOLS_KPA_1) EndThread Return End diff --git a/src/world/area_kpa/kpa_111/music.c b/src/world/area_kpa/kpa_111/music.c index 363bed22c1..f62d492bb3 100644 --- a/src/world/area_kpa/kpa_111/music.c +++ b/src/world/area_kpa/kpa_111/music.c @@ -1,11 +1,11 @@ #include "kpa_111.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_112/music.c b/src/world/area_kpa/kpa_112/music.c index dba495cde6..c4bf763c17 100644 --- a/src/world/area_kpa/kpa_112/music.c +++ b/src/world/area_kpa/kpa_112/music.c @@ -1,11 +1,11 @@ #include "kpa_112.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_113/music.c b/src/world/area_kpa/kpa_113/music.c index 68b4502607..72c6b31605 100644 --- a/src/world/area_kpa/kpa_113/music.c +++ b/src/world/area_kpa/kpa_113/music.c @@ -1,11 +1,11 @@ #include "kpa_113.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_114/music.c b/src/world/area_kpa/kpa_114/music.c index fbf5bb3529..1fe5bb7659 100644 --- a/src/world/area_kpa/kpa_114/music.c +++ b/src/world/area_kpa/kpa_114/music.c @@ -1,11 +1,11 @@ #include "kpa_114.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_115/music.c b/src/world/area_kpa/kpa_115/music.c index 0c88d6251a..5bffc5a322 100644 --- a/src/world/area_kpa/kpa_115/music.c +++ b/src/world/area_kpa/kpa_115/music.c @@ -1,11 +1,11 @@ #include "kpa_115.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_116/music.c b/src/world/area_kpa/kpa_116/music.c index d076661f52..06a87ca358 100644 --- a/src/world/area_kpa/kpa_116/music.c +++ b/src/world/area_kpa/kpa_116/music.c @@ -1,11 +1,11 @@ #include "kpa_116.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_117/music.c b/src/world/area_kpa/kpa_117/music.c index f5f5980583..0a17f8e640 100644 --- a/src/world/area_kpa/kpa_117/music.c +++ b/src/world/area_kpa/kpa_117/music.c @@ -1,11 +1,11 @@ #include "kpa_117.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_118/music.c b/src/world/area_kpa/kpa_118/music.c index 3ba0629124..fc7cf24bb4 100644 --- a/src/world/area_kpa/kpa_118/music.c +++ b/src/world/area_kpa/kpa_118/music.c @@ -1,11 +1,11 @@ #include "kpa_118.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_119/music.c b/src/world/area_kpa/kpa_119/music.c index 6746dab2c4..529de5a908 100644 --- a/src/world/area_kpa/kpa_119/music.c +++ b/src/world/area_kpa/kpa_119/music.c @@ -1,11 +1,11 @@ #include "kpa_119.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_12/music.c b/src/world/area_kpa/kpa_12/music.c index 3e1f7cbe36..ddc07e3050 100644 --- a/src/world/area_kpa/kpa_12/music.c +++ b/src/world/area_kpa/kpa_12/music.c @@ -1,14 +1,14 @@ #include "kpa_12.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) IfEq(GF_KPA16_ShutOffLava, FALSE) Call(PlayAmbientSounds, AMBIENT_LAVA_1) EndIf Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_1) + Call(SetTrackVolumes, TRACK_VOLS_KPA_1) EndThread Return End diff --git a/src/world/area_kpa/kpa_121/music.c b/src/world/area_kpa/kpa_121/music.c index 9a00d3eff0..2699fccbfb 100644 --- a/src/world/area_kpa/kpa_121/music.c +++ b/src/world/area_kpa/kpa_121/music.c @@ -1,11 +1,11 @@ #include "kpa_121.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_13/music.c b/src/world/area_kpa/kpa_13/music.c index cb15e77ad5..bf1b34b72d 100644 --- a/src/world/area_kpa/kpa_13/music.c +++ b/src/world/area_kpa/kpa_13/music.c @@ -1,14 +1,14 @@ #include "kpa_13.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) IfEq(GF_KPA16_ShutOffLava, FALSE) Call(PlayAmbientSounds, AMBIENT_LAVA_1) EndIf Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_1) + Call(SetTrackVolumes, TRACK_VOLS_KPA_1) EndThread Return End diff --git a/src/world/area_kpa/kpa_130/music.c b/src/world/area_kpa/kpa_130/music.c index a27a2c00cf..6bbd16849e 100644 --- a/src/world/area_kpa/kpa_130/music.c +++ b/src/world/area_kpa/kpa_130/music.c @@ -2,11 +2,11 @@ #include "kpa_130.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_133/music.c b/src/world/area_kpa/kpa_133/music.c index 99406fda2e..86ec855ccf 100644 --- a/src/world/area_kpa/kpa_133/music.c +++ b/src/world/area_kpa/kpa_133/music.c @@ -1,11 +1,11 @@ #include "kpa_133.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_134/music.c b/src/world/area_kpa/kpa_134/music.c index 8e7db8701b..1360b4a07b 100644 --- a/src/world/area_kpa/kpa_134/music.c +++ b/src/world/area_kpa/kpa_134/music.c @@ -1,11 +1,11 @@ #include "kpa_134.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_14/music.c b/src/world/area_kpa/kpa_14/music.c index c02a551995..5469bdf45d 100644 --- a/src/world/area_kpa/kpa_14/music.c +++ b/src/world/area_kpa/kpa_14/music.c @@ -1,7 +1,7 @@ #include "kpa_14.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) IfEq(GF_KPA16_ShutOffLava, FALSE) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Else @@ -10,7 +10,7 @@ EvtScript N(EVS_SetupMusic) = { Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_1) + Call(SetTrackVolumes, TRACK_VOLS_KPA_1) EndThread Return End diff --git a/src/world/area_kpa/kpa_15/music.c b/src/world/area_kpa/kpa_15/music.c index 41e60ea7d3..05c5de403f 100644 --- a/src/world/area_kpa/kpa_15/music.c +++ b/src/world/area_kpa/kpa_15/music.c @@ -1,14 +1,14 @@ #include "kpa_15.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) IfEq(GF_KPA16_ShutOffLava, FALSE) Call(PlayAmbientSounds, AMBIENT_LAVA_1) EndIf Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_1) + Call(SetTrackVolumes, TRACK_VOLS_KPA_1) EndThread Return End diff --git a/src/world/area_kpa/kpa_16/music.c b/src/world/area_kpa/kpa_16/music.c index d6f1d9bf5d..accdd77835 100644 --- a/src/world/area_kpa/kpa_16/music.c +++ b/src/world/area_kpa/kpa_16/music.c @@ -1,14 +1,14 @@ #include "kpa_16.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) IfEq(GF_KPA16_ShutOffLava, FALSE) Call(PlayAmbientSounds, AMBIENT_LAVA_7) EndIf Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_1) + Call(SetTrackVolumes, TRACK_VOLS_KPA_1) EndThread Return End diff --git a/src/world/area_kpa/kpa_16/npc.c b/src/world/area_kpa/kpa_16/npc.c index da915c7a62..8fc7c0eb16 100644 --- a/src/world/area_kpa/kpa_16/npc.c +++ b/src/world/area_kpa/kpa_16/npc.c @@ -11,8 +11,8 @@ API_CALLABLE(N(SetScreenBlackFadeAmount)) { return ApiStatus_DONE2; } -API_CALLABLE(N(MuteAmbience)) { - snd_ambient_mute(0, TRUE); +API_CALLABLE(N(FadeOutAmbience)) { + snd_ambient_fade_out(0, TRUE); return ApiStatus_DONE2; } @@ -49,7 +49,7 @@ EvtScript N(EVS_Scene_LavaShutoff) = { Call(SetPanTarget, CAM_DEFAULT, 330, 170, -150) Call(WaitForCam, CAM_DEFAULT, Float(1.0)) Thread - Call(N(MuteAmbience)) + Call(N(FadeOutAmbience)) SetF(LVar2, 1) Call(MakeLerp, 0, -20, 100 * DT, EASING_LINEAR) Loop(0) diff --git a/src/world/area_kpa/kpa_17/music.c b/src/world/area_kpa/kpa_17/music.c index 269deea6d1..93ac148f4e 100644 --- a/src/world/area_kpa/kpa_17/music.c +++ b/src/world/area_kpa/kpa_17/music.c @@ -1,12 +1,12 @@ #include "kpa_17.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 250) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_1) + Call(SetTrackVolumes, TRACK_VOLS_KPA_1) EndThread Return End diff --git a/src/world/area_kpa/kpa_32/music.c b/src/world/area_kpa/kpa_32/music.c index fbde64a205..d498d857ab 100644 --- a/src/world/area_kpa/kpa_32/music.c +++ b/src/world/area_kpa/kpa_32/music.c @@ -1,11 +1,11 @@ #include "kpa_32.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_33/music.c b/src/world/area_kpa/kpa_33/music.c index 735241a463..14c797fac1 100644 --- a/src/world/area_kpa/kpa_33/music.c +++ b/src/world/area_kpa/kpa_33/music.c @@ -2,11 +2,11 @@ #include "kpa_33.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_40/music.c b/src/world/area_kpa/kpa_40/music.c index 1e8becc900..6e84abfdef 100644 --- a/src/world/area_kpa/kpa_40/music.c +++ b/src/world/area_kpa/kpa_40/music.c @@ -2,11 +2,11 @@ #include "kpa_40.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_41/music.c b/src/world/area_kpa/kpa_41/music.c index 675fc34573..83c0a3164e 100644 --- a/src/world/area_kpa/kpa_41/music.c +++ b/src/world/area_kpa/kpa_41/music.c @@ -1,11 +1,11 @@ #include "kpa_41.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_50/music.c b/src/world/area_kpa/kpa_50/music.c index 916406eaa0..0b1acccd52 100644 --- a/src/world/area_kpa/kpa_50/music.c +++ b/src/world/area_kpa/kpa_50/music.c @@ -1,12 +1,12 @@ #include "kpa_50.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 250) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_1) + Call(SetTrackVolumes, TRACK_VOLS_KPA_1) EndThread Return End diff --git a/src/world/area_kpa/kpa_51/music.c b/src/world/area_kpa/kpa_51/music.c index 1cd9739bd1..7f9c71e103 100644 --- a/src/world/area_kpa/kpa_51/music.c +++ b/src/world/area_kpa/kpa_51/music.c @@ -2,11 +2,11 @@ #include "kpa_51.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_52/music.c b/src/world/area_kpa/kpa_52/music.c index b672f30cdf..af63cefad6 100644 --- a/src/world/area_kpa/kpa_52/music.c +++ b/src/world/area_kpa/kpa_52/music.c @@ -1,11 +1,11 @@ #include "kpa_52.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_53/music.c b/src/world/area_kpa/kpa_53/music.c index 8a3262b11b..8806a27a69 100644 --- a/src/world/area_kpa/kpa_53/music.c +++ b/src/world/area_kpa/kpa_53/music.c @@ -2,11 +2,11 @@ #include "kpa_53.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_60/music.c b/src/world/area_kpa/kpa_60/music.c index 7b1d9dde03..7fabf67b4e 100644 --- a/src/world/area_kpa/kpa_60/music.c +++ b/src/world/area_kpa/kpa_60/music.c @@ -2,10 +2,10 @@ EvtScript N(EVS_SetupMusic) = { IfNe(GB_StoryProgress, STORY_CH8_STAR_SHIP_ACTIVATED) - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_OUTSIDE) + Call(SetTrackVolumes, TRACK_VOLS_KPA_OUTSIDE) EndThread EndIf Call(UseDoorSounds, DOOR_SOUNDS_METAL) diff --git a/src/world/area_kpa/kpa_61/music.c b/src/world/area_kpa/kpa_61/music.c index 75aa5d493d..038abcb6cd 100644 --- a/src/world/area_kpa/kpa_61/music.c +++ b/src/world/area_kpa/kpa_61/music.c @@ -1,11 +1,11 @@ #include "kpa_61.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_OUTSIDE) + Call(SetTrackVolumes, TRACK_VOLS_KPA_OUTSIDE) EndThread Return End diff --git a/src/world/area_kpa/kpa_62/music.c b/src/world/area_kpa/kpa_62/music.c index dd0aa34ee8..e3c50b872d 100644 --- a/src/world/area_kpa/kpa_62/music.c +++ b/src/world/area_kpa/kpa_62/music.c @@ -1,7 +1,7 @@ #include "kpa_62.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) IfEq(GF_KPA16_ShutOffLava, FALSE) Call(PlayAmbientSounds, AMBIENT_LAVA_6) Else @@ -10,7 +10,7 @@ EvtScript N(EVS_SetupMusic) = { Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_OUTSIDE) + Call(SetTrackVolumes, TRACK_VOLS_KPA_OUTSIDE) EndThread Return End diff --git a/src/world/area_kpa/kpa_63/music.c b/src/world/area_kpa/kpa_63/music.c index 0445a6095b..30c2eccef3 100644 --- a/src/world/area_kpa/kpa_63/music.c +++ b/src/world/area_kpa/kpa_63/music.c @@ -3,10 +3,10 @@ EvtScript N(EVS_SetupMusic) = { Call(GetLoadType, LVar0) IfEq(LVar0, 1) - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_OUTSIDE) + Call(SetTrackVolumes, TRACK_VOLS_KPA_OUTSIDE) EndThread Call(ClearAmbientSounds, 250) Call(UseDoorSounds, DOOR_SOUNDS_METAL) @@ -14,10 +14,10 @@ EvtScript N(EVS_SetupMusic) = { EndIf Call(GetEntryID, LVar0) IfEq(LVar0, kpa_63_ENTRY_0) - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_OUTSIDE) + Call(SetTrackVolumes, TRACK_VOLS_KPA_OUTSIDE) EndThread EndIf Call(ClearAmbientSounds, 250) diff --git a/src/world/area_kpa/kpa_63/scenes.c b/src/world/area_kpa/kpa_63/scenes.c index dcaa3c52a5..e84d644929 100644 --- a/src/world/area_kpa/kpa_63/scenes.c +++ b/src/world/area_kpa/kpa_63/scenes.c @@ -144,7 +144,7 @@ EvtScript N(EVS_Starship_Depart) = { Call(DisablePlayerInput, FALSE) Return EndIf - Call(SetMusicTrack, 0, SONG_STARSHIP_THEME, 1, 8) + Call(SetMusic, 0, SONG_STARSHIP_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) Thread Call(PlaySoundAtPlayer, SOUND_STARSHIP_TAKEOFF_SHORT, SOUND_SPACE_DEFAULT) Set(LVar2, MV_Starship_PosY) @@ -229,10 +229,10 @@ EvtScript N(EVS_Starship_Arrive) = { IfLt(GB_StoryProgress, STORY_CH8_REACHED_BOWSERS_CASTLE) Set(GB_StoryProgress, STORY_CH8_REACHED_BOWSERS_CASTLE) EndIf - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_OUTSIDE) + Call(SetTrackVolumes, TRACK_VOLS_KPA_OUTSIDE) EndThread Call(DisablePlayerInput, FALSE) Return diff --git a/src/world/area_kpa/kpa_70/music.c b/src/world/area_kpa/kpa_70/music.c index 2e251a9654..59278368b3 100644 --- a/src/world/area_kpa/kpa_70/music.c +++ b/src/world/area_kpa/kpa_70/music.c @@ -1,12 +1,12 @@ #include "kpa_70.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_1) + Call(SetTrackVolumes, TRACK_VOLS_KPA_1) EndThread Return End diff --git a/src/world/area_kpa/kpa_81/music.c b/src/world/area_kpa/kpa_81/music.c index da5563284c..fcec754ce9 100644 --- a/src/world/area_kpa/kpa_81/music.c +++ b/src/world/area_kpa/kpa_81/music.c @@ -1,11 +1,11 @@ #include "kpa_81.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_1) + Call(SetTrackVolumes, TRACK_VOLS_KPA_1) EndThread Return End diff --git a/src/world/area_kpa/kpa_81/npc.c b/src/world/area_kpa/kpa_81/npc.c index 742724f9b9..5ac064901d 100644 --- a/src/world/area_kpa/kpa_81/npc.c +++ b/src/world/area_kpa/kpa_81/npc.c @@ -47,7 +47,7 @@ EvtScript N(EVS_NpcIdle_Door) = { Call(PanToTarget, CAM_DEFAULT, 0, TRUE) Call(WaitForCam, CAM_DEFAULT, Float(1.0)) Thread - Call(SetMusicTrack, 0, SONG_FINAL_BOWSER_BATTLE, 1, 8) + Call(SetMusic, 0, SONG_FINAL_BOWSER_BATTLE, BGM_VARIATION_1, VOL_LEVEL_FULL) Wait(150 * DT) Call(FadeOutMusic, 0, 250) Wait(15 * DT) @@ -77,7 +77,7 @@ EvtScript N(EVS_NpcIdle_Door) = { Call(PanToTarget, CAM_DEFAULT, 0, TRUE) Call(WaitForCam, CAM_DEFAULT, Float(1.0)) Thread - Call(SetMusicTrack, 0, SONG_FINAL_BOWSER_BATTLE, 1, 8) + Call(SetMusic, 0, SONG_FINAL_BOWSER_BATTLE, BGM_VARIATION_1, VOL_LEVEL_FULL) Wait(150 * DT) Call(FadeOutMusic, 0, 250) Wait(15 * DT) diff --git a/src/world/area_kpa/kpa_82/music.c b/src/world/area_kpa/kpa_82/music.c index 6c195bc73b..631dd85bf5 100644 --- a/src/world/area_kpa/kpa_82/music.c +++ b/src/world/area_kpa/kpa_82/music.c @@ -1,11 +1,11 @@ #include "kpa_82.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_82/npc.c b/src/world/area_kpa/kpa_82/npc.c index 918539b728..01e5b82857 100644 --- a/src/world/area_kpa/kpa_82/npc.c +++ b/src/world/area_kpa/kpa_82/npc.c @@ -1034,7 +1034,7 @@ EvtScript N(EVS_NpcIdle_Door) = { ExecWait(N(EVS_SetCam_MeetingDoor)) Set(MF_Sync_MusicChange, FALSE) Thread - Call(SetMusicTrack, 0, SONG_FINAL_BOWSER_BATTLE, 1, 8) + Call(SetMusic, 0, SONG_FINAL_BOWSER_BATTLE, BGM_VARIATION_1, VOL_LEVEL_FULL) Wait(150 * DT) IfNe(MF_Sync_MusicChange, FALSE) Goto(5) @@ -1096,7 +1096,7 @@ EvtScript N(EVS_NpcIdle_Door) = { ExecWait(N(EVS_SetCam_ViewRoom)) Set(MF_Sync_MusicChange, TRUE) Wait(2) - Call(SetMusicTrack, 0, SONG_NORMAL_BATTLE, 0, 8) + Call(SetMusic, 0, SONG_NORMAL_BATTLE, 0, VOL_LEVEL_FULL) ExecWait(N(EVS_SetDoorRots)) ExecWait(N(EVS_Release_Wave)) Wait(200 * DT) diff --git a/src/world/area_kpa/kpa_83/music.c b/src/world/area_kpa/kpa_83/music.c index b81e60b07c..0dde33a688 100644 --- a/src/world/area_kpa/kpa_83/music.c +++ b/src/world/area_kpa/kpa_83/music.c @@ -1,11 +1,11 @@ #include "kpa_83.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_83/npc.c b/src/world/area_kpa/kpa_83/npc.c index a2c9695727..188c52fbce 100644 --- a/src/world/area_kpa/kpa_83/npc.c +++ b/src/world/area_kpa/kpa_83/npc.c @@ -165,7 +165,7 @@ EvtScript N(EVS_NpcIdle_Door) = { ExecWait(N(EVS_FocusCam_LookAtDoor)) Set(MF_DoneIntroMessage, FALSE) Thread - Call(SetMusicTrack, 0, SONG_FINAL_BOWSER_BATTLE, 1, 8) + Call(SetMusic, 0, SONG_FINAL_BOWSER_BATTLE, BGM_VARIATION_1, VOL_LEVEL_FULL) Wait(150) IfNe(MF_DoneIntroMessage, FALSE) Goto(5) @@ -175,18 +175,18 @@ EvtScript N(EVS_NpcIdle_Door) = { IfNe(MF_DoneIntroMessage, FALSE) Goto(5) EndIf - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Wait(30) IfNe(MF_DoneIntroMessage, FALSE) Goto(5) EndIf - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) Label(5) EndThread Call(SpeakToPlayer, NPC_SELF, ANIM_Toad_Red_Idle, ANIM_Toad_Red_Idle, 0, MSG_CH8_0053) Set(MF_DoneIntroMessage, TRUE) Wait(2) - Call(SetMusicTrack, 0, SONG_KOOPA_BROS_THEME, 2, 8) + Call(SetMusic, 0, SONG_KOOPA_BROS_THEME, BGM_VARIATION_2, VOL_LEVEL_FULL) Set(LVar3, 65) Set(LVar4, 0) Set(LVar5, 150) @@ -324,7 +324,7 @@ EvtScript N(EVS_NpcIdle_Door) = { Set(LVar6, Float(90.0)) ExecWait(N(EVS_FocusCam_MidRoom)) Call(SpeakToPlayer, NPC_KoopaBrosRed, ANIM_KoopaBros_Red_Talk, ANIM_KoopaBros_Red_Idle, 0, MSG_CH8_0059) - Call(SetMusicTrack, 0, SONG_JR_TROOPA_THEME, 1, 8) + Call(SetMusic, 0, SONG_JR_TROOPA_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(ShowMessageAtScreenPos, MSG_CH8_005A, 0, 150) Call(InterpPlayerYaw, 270, 0) Wait(10) diff --git a/src/world/area_kpa/kpa_90/music.c b/src/world/area_kpa/kpa_90/music.c index 2400be6ba3..bdbc4cafd1 100644 --- a/src/world/area_kpa/kpa_90/music.c +++ b/src/world/area_kpa/kpa_90/music.c @@ -1,11 +1,11 @@ #include "kpa_90.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_91/music.c b/src/world/area_kpa/kpa_91/music.c index 7d79c9df6e..b8533150b6 100644 --- a/src/world/area_kpa/kpa_91/music.c +++ b/src/world/area_kpa/kpa_91/music.c @@ -1,11 +1,11 @@ #include "kpa_91.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kpa/kpa_91/npc.c b/src/world/area_kpa/kpa_91/npc.c index 6e7e04a2d6..2d62ff73a5 100644 --- a/src/world/area_kpa/kpa_91/npc.c +++ b/src/world/area_kpa/kpa_91/npc.c @@ -20,7 +20,7 @@ EvtScript N(EVS_ToadHouse_SetDialogue) = { }; EvtScript N(EVS_ToadHouse_GetInBed) = { - Call(SetMusicTrack, 0, SONG_TAKING_REST, 0, 8) + Call(SetMusic, 0, SONG_TAKING_REST, 0, VOL_LEVEL_FULL) Thread Wait(20) Call(N(ToadHouse_CamSetFOV), 0, 40) diff --git a/src/world/area_kpa/kpa_94/music.c b/src/world/area_kpa/kpa_94/music.c index 41fb4a793d..97b1e4d56a 100644 --- a/src/world/area_kpa/kpa_94/music.c +++ b/src/world/area_kpa/kpa_94/music.c @@ -1,11 +1,11 @@ #include "kpa_94.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_95/music.c b/src/world/area_kpa/kpa_95/music.c index 5bb05226ea..27c52c8c5d 100644 --- a/src/world/area_kpa/kpa_95/music.c +++ b/src/world/area_kpa/kpa_95/music.c @@ -1,11 +1,11 @@ #include "kpa_95.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_3) + Call(SetTrackVolumes, TRACK_VOLS_KPA_3) EndThread Return End diff --git a/src/world/area_kpa/kpa_95/npc.c b/src/world/area_kpa/kpa_95/npc.c index 074f89b353..7a88ae0f9a 100644 --- a/src/world/area_kpa/kpa_95/npc.c +++ b/src/world/area_kpa/kpa_95/npc.c @@ -21,7 +21,7 @@ EvtScript N(EVS_ToadHouse_SetDialogue) = { }; EvtScript N(EVS_ToadHouse_GetInBed) = { - Call(SetMusicTrack, 0, SONG_TAKING_REST, 0, 8) + Call(SetMusic, 0, SONG_TAKING_REST, 0, VOL_LEVEL_FULL) Thread Wait(20) Call(N(ToadHouse_CamSetFOV), 0, 40) diff --git a/src/world/area_kpa/kpa_96/music.c b/src/world/area_kpa/kpa_96/music.c index f8a472ae69..1ff4ccf17c 100644 --- a/src/world/area_kpa/kpa_96/music.c +++ b/src/world/area_kpa/kpa_96/music.c @@ -1,11 +1,11 @@ #include "kpa_96.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Thread Wait(30) - Call(SetMusicTrackVolumes, TRACK_VOLS_KPA_2) + Call(SetTrackVolumes, TRACK_VOLS_KPA_2) EndThread Return End diff --git a/src/world/area_kzn/kzn_01/main.c b/src/world/area_kzn/kzn_01/main.c index 7d22ed0e5b..c9e32dbaac 100644 --- a/src/world/area_kzn/kzn_01/main.c +++ b/src/world/area_kzn/kzn_01/main.c @@ -24,7 +24,7 @@ EvtScript N(EVS_Main) = { Set(LVar0, N(EVS_BindExitTriggers)) Exec(EnterWalk) Wait(1) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(ClearAmbientSounds, 250) Set(LVar0, MODEL_kem1) Exec(N(EVS_StartTexPanner_SmokeLeft)) diff --git a/src/world/area_kzn/kzn_02/main.c b/src/world/area_kzn/kzn_02/main.c index 4dbb06d871..20e1867e1a 100644 --- a/src/world/area_kzn/kzn_02/main.c +++ b/src/world/area_kzn/kzn_02/main.c @@ -126,7 +126,7 @@ EvtScript N(EVS_Main) = { EndIf Exec(N(EVS_EnterMap)) Wait(1) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Return End diff --git a/src/world/area_kzn/kzn_03/main.c b/src/world/area_kzn/kzn_03/main.c index 261f593e5c..3190797753 100644 --- a/src/world/area_kzn/kzn_03/main.c +++ b/src/world/area_kzn/kzn_03/main.c @@ -67,7 +67,7 @@ EvtScript N(EVS_Main) = { Exec(EnterWalk) EndIf Wait(1) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Exec(N(EVS_StartTexPanners_Lava)) Set(LVar0, MODEL_kem1) diff --git a/src/world/area_kzn/kzn_04/main.c b/src/world/area_kzn/kzn_04/main.c index ab80dcf9b3..af5646cebe 100644 --- a/src/world/area_kzn/kzn_04/main.c +++ b/src/world/area_kzn/kzn_04/main.c @@ -19,7 +19,7 @@ EvtScript N(EVS_Main) = { Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Wait(1) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Set(LVar0, MODEL_kem1) Exec(N(EVS_StartTexPanner_SmokeLeft)) diff --git a/src/world/area_kzn/kzn_05/main.c b/src/world/area_kzn/kzn_05/main.c index 34c17416cf..15f9e3c81d 100644 --- a/src/world/area_kzn/kzn_05/main.c +++ b/src/world/area_kzn/kzn_05/main.c @@ -19,7 +19,7 @@ EvtScript N(EVS_Main) = { Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Wait(1) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Set(LVar0, MODEL_kem1) Exec(N(EVS_StartTexPanner_SmokeLeft)) diff --git a/src/world/area_kzn/kzn_06/extra.c b/src/world/area_kzn/kzn_06/extra.c index a9c714a390..9151c97b76 100644 --- a/src/world/area_kzn/kzn_06/extra.c +++ b/src/world/area_kzn/kzn_06/extra.c @@ -57,7 +57,7 @@ API_CALLABLE(N(AdjustFog)) { } API_CALLABLE(N(func_80240A44_C6D364)) { - snd_ambient_mute(0, TRUE); + snd_ambient_fade_out(0, TRUE); return ApiStatus_DONE2; } diff --git a/src/world/area_kzn/kzn_06/main.c b/src/world/area_kzn/kzn_06/main.c index 3cdbec94ca..6abd44e03d 100644 --- a/src/world/area_kzn/kzn_06/main.c +++ b/src/world/area_kzn/kzn_06/main.c @@ -55,7 +55,7 @@ EvtScript N(EVS_Main) = { EVT_SETUP_CAMERA_DEFAULT() Set(GF_KZN06_Visited, TRUE) ExecWait(N(EVS_MakeEntities)) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) IfLt(GB_StoryProgress, STORY_CH5_LAVA_STREAM_BLOCKED) Call(PlayAmbientSounds, AMBIENT_LAVA_2) Else diff --git a/src/world/area_kzn/kzn_07/music.c b/src/world/area_kzn/kzn_07/music.c index 5ee191ec38..9fb0bdc3c5 100644 --- a/src/world/area_kzn/kzn_07/music.c +++ b/src/world/area_kzn/kzn_07/music.c @@ -1,7 +1,7 @@ #include "kzn_07.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Return End diff --git a/src/world/area_kzn/kzn_08/main.c b/src/world/area_kzn/kzn_08/main.c index 14d38753f6..2f6b477ff2 100644 --- a/src/world/area_kzn/kzn_08/main.c +++ b/src/world/area_kzn/kzn_08/main.c @@ -144,7 +144,7 @@ EvtScript N(EVS_Main) = { EVT_SETUP_CAMERA_DEFAULT() Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Set(LVar0, N(EVS_BindExitTriggers)) Exec(EnterWalk) diff --git a/src/world/area_kzn/kzn_09/main.c b/src/world/area_kzn/kzn_09/main.c index e05427e8b5..b56b985662 100644 --- a/src/world/area_kzn/kzn_09/main.c +++ b/src/world/area_kzn/kzn_09/main.c @@ -18,7 +18,7 @@ EvtScript N(EVS_Main) = { EVT_SETUP_CAMERA_DEFAULT() Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Set(LVar0, N(EVS_BindExitTriggers)) Exec(EnterWalk) diff --git a/src/world/area_kzn/kzn_10/main.c b/src/world/area_kzn/kzn_10/main.c index d347bdefa9..e1bde766fb 100644 --- a/src/world/area_kzn/kzn_10/main.c +++ b/src/world/area_kzn/kzn_10/main.c @@ -42,7 +42,7 @@ EvtScript N(EVS_Main) = { Set(LVar0, N(EVS_BindExitTriggers)) Exec(EnterWalk) Wait(1) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Exec(N(EVS_SetupSpinyTromp)) Set(LVar0, MODEL_kem1) diff --git a/src/world/area_kzn/kzn_11/main.c b/src/world/area_kzn/kzn_11/main.c index 3f362e6d10..9d3ec8ad36 100644 --- a/src/world/area_kzn/kzn_11/main.c +++ b/src/world/area_kzn/kzn_11/main.c @@ -57,7 +57,7 @@ EvtScript N(EVS_Main) = { Call(SetSpriteShading, SHADING_KZN_11) EVT_SETUP_CAMERA_DEFAULT() Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) diff --git a/src/world/area_kzn/kzn_17/main.c b/src/world/area_kzn/kzn_17/main.c index 2586df3344..601a33595e 100644 --- a/src/world/area_kzn/kzn_17/main.c +++ b/src/world/area_kzn/kzn_17/main.c @@ -23,7 +23,7 @@ EvtScript N(EVS_Main) = { Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Wait(1) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Exec(N(EVS_SetupSpinyTromp)) Set(LVar0, MODEL_kem1) diff --git a/src/world/area_kzn/kzn_18/main.c b/src/world/area_kzn/kzn_18/main.c index 3c5192d753..8ee524a51a 100644 --- a/src/world/area_kzn/kzn_18/main.c +++ b/src/world/area_kzn/kzn_18/main.c @@ -76,7 +76,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) Exec(N(EVS_EnterMap)) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) IfLt(GB_StoryProgress, STORY_CH5_OPENED_ESCAPE_ROUTE) Call(EnableModel, MODEL_off1, FALSE) diff --git a/src/world/area_kzn/kzn_19/music.c b/src/world/area_kzn/kzn_19/music.c index 4b10dcc226..63a644d677 100644 --- a/src/world/area_kzn/kzn_19/music.c +++ b/src/world/area_kzn/kzn_19/music.c @@ -13,7 +13,7 @@ EvtScript N(EVS_SetupMusic) = { CaseGe(STORY_CH5_MT_LAVA_LAVA_ERUPTING) Call(PlaySound, SOUND_LOOP_RUMBLE) EndSwitch - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Return End diff --git a/src/world/area_kzn/kzn_19/npc.c b/src/world/area_kzn/kzn_19/npc.c index c5607cd9e1..8416f1ce79 100644 --- a/src/world/area_kzn/kzn_19/npc.c +++ b/src/world/area_kzn/kzn_19/npc.c @@ -256,7 +256,7 @@ EvtScript N(EVS_NpcIdle_LavaPiranha) = { EndIf EndLoop Call(DisablePlayerInput, TRUE) - Call(SetMusicTrack, 0, SONG_LAVA_PIRANHA_THEME, 0, 8) + Call(SetMusic, 0, SONG_LAVA_PIRANHA_THEME, 0, VOL_LEVEL_FULL) Call(LoadAnimatedModel, VINE_0, Ref(N(AnimModel_MainHeadVine))) Call(N(LoadAnimationFromTable), VINE_0, 0) Call(PlayModelAnimation, VINE_0, VINE_0_BASE) @@ -544,7 +544,7 @@ EvtScript N(EVS_NpcDefeat_LavaPiranha) = { Switch(LVar0) CaseEq(OUTCOME_PLAYER_WON) Call(SetEncounterStatusFlags, ENCOUNTER_FLAG_CANT_SKIP_WIN_DELAY, TRUE) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(SetPlayerPos, 125, 25, -35) Call(SetNpcPos, NPC_PARTNER, 100, 25, -35) Call(SetCamLeadPlayer, CAM_DEFAULT, FALSE) diff --git a/src/world/area_kzn/kzn_20/music.c b/src/world/area_kzn/kzn_20/music.c index ab6df8c382..72d05bda70 100644 --- a/src/world/area_kzn/kzn_20/music.c +++ b/src/world/area_kzn/kzn_20/music.c @@ -5,10 +5,10 @@ EvtScript N(EVS_SetupMusic) = { Call(PlaySound, SOUND_LOOP_RUMBLE) EndIf IfLt(GB_StoryProgress, STORY_CH5_OPENED_ESCAPE_ROUTE) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_3) Else - Call(SetMusicTrack, 0, SONG_VOLCANO_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_VOLCANO_ESCAPE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) EndIf Return diff --git a/src/world/area_kzn/kzn_20/npc.c b/src/world/area_kzn/kzn_20/npc.c index 0655ccfe53..30b8d841cc 100644 --- a/src/world/area_kzn/kzn_20/npc.c +++ b/src/world/area_kzn/kzn_20/npc.c @@ -174,7 +174,7 @@ EvtScript N(EVS_KoloradoBurned_PlayerReaction) = { }; API_CALLABLE(N(func_80240A68_C96998)) { - snd_ambient_mute(0, TRUE); + snd_ambient_fade_out(0, TRUE); return ApiStatus_DONE2; } @@ -252,7 +252,7 @@ EvtScript N(EVS_NpcIdle_Kolorado) = { EndThread Call(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 5, MSG_CH5_010C) Set(AF_KZN_RumblingIntensified, TRUE) - Call(SetMusicTrack, 0, SONG_VOLCANO_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_VOLCANO_ESCAPE, 0, VOL_LEVEL_FULL) Wait(20) Thread Call(SetPlayerAnimation, ANIM_Mario1_Flail) diff --git a/src/world/area_kzn/kzn_22/music.c b/src/world/area_kzn/kzn_22/music.c index 5b7d73a3a8..a818122ac9 100644 --- a/src/world/area_kzn/kzn_22/music.c +++ b/src/world/area_kzn/kzn_22/music.c @@ -4,7 +4,7 @@ EvtScript N(EVS_SetupMusic) = { IfGe(GB_StoryProgress, STORY_CH5_MT_LAVA_LAVA_ERUPTING) Call(PlaySound, SOUND_LOOP_RUMBLE) EndIf - Call(SetMusicTrack, 0, SONG_VOLCANO_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_VOLCANO_ESCAPE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_4) Return End diff --git a/src/world/area_kzn/kzn_22/npc.c b/src/world/area_kzn/kzn_22/npc.c index facaadd5a9..ee20889c74 100644 --- a/src/world/area_kzn/kzn_22/npc.c +++ b/src/world/area_kzn/kzn_22/npc.c @@ -10,7 +10,7 @@ API_CALLABLE(N(GetFloorCollider2)) { } API_CALLABLE(N(func_8024036C_C9A56C)) { - snd_ambient_mute(0, TRUE); + snd_ambient_fade_out(0, TRUE); return ApiStatus_DONE2; } diff --git a/src/world/area_kzn/kzn_23/music.c b/src/world/area_kzn/kzn_23/music.c index 4f60441823..f4088c80d5 100644 --- a/src/world/area_kzn/kzn_23/music.c +++ b/src/world/area_kzn/kzn_23/music.c @@ -1,7 +1,7 @@ #include "kzn_23.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_VOLCANO_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_VOLCANO_ESCAPE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_5) Return End diff --git a/src/world/area_mac/mac_00/music.c b/src/world/area_mac/mac_00/music.c index 6f8e9580b7..eee36dd24f 100644 --- a/src/world/area_mac/mac_00/music.c +++ b/src/world/area_mac/mac_00/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseEq(STORY_INTRO) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 8) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_FULL) CaseEq(STORY_EPILOGUE) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 0, 8) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, 0, VOL_LEVEL_FULL) CaseRange(STORY_CH3_STAR_SPRIT_DEPARTED, STORY_CH4_STAR_SPIRIT_RESCUED) - Call(SetMusicTrack, 0, SONG_SHY_GUY_INVASION, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_INVASION, 0, VOL_LEVEL_FULL) CaseDefault Exec(N(EVS_SetupMusicTriggers)) EndSwitch diff --git a/src/world/area_mac/mac_00/music_mix.c b/src/world/area_mac/mac_00/music_mix.c index 43589e1d60..43b89c8d4f 100644 --- a/src/world/area_mac/mac_00/music_mix.c +++ b/src/world/area_mac/mac_00/music_mix.c @@ -6,7 +6,7 @@ MusicProximityTrigger N(MusicMixTrigger1) = { .pos = { 15.0f, -400.0f }, .innerDist = 90.0f, .outerDist = 120.0f, - .unk = 7, + .mix = 7, .manualActivationFlag = MF_MusicMixTrigger1, }; @@ -14,12 +14,12 @@ MusicProximityTrigger N(MusicMixTrigger2) = { .pos = { 445.0f, -307.0f }, .innerDist = 90.0f, .outerDist = 110.0f, - .unk = 3, + .mix = 3, .manualActivationFlag = MF_MusicMixTrigger2, }; EvtScript N(EVS_SetupMusicTriggers) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN, 0, VOL_LEVEL_FULL) Call(EnableMusicProximityMix, 0) Thread Call(N(MonitorMusicProximityTrigger), Ref(N(MusicMixTrigger1))) diff --git a/src/world/area_mac/mac_01/music.c b/src/world/area_mac/mac_01/music.c index 0c6048004d..b728e34e07 100644 --- a/src/world/area_mac/mac_01/music.c +++ b/src/world/area_mac/mac_01/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseEq(STORY_INTRO) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 8) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_FULL) CaseEq(STORY_EPILOGUE) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 0, 8) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, 0, VOL_LEVEL_FULL) CaseRange(STORY_CH3_STAR_SPRIT_DEPARTED, STORY_CH4_STAR_SPIRIT_RESCUED) - Call(SetMusicTrack, 0, SONG_SHY_GUY_INVASION, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_INVASION, 0, VOL_LEVEL_FULL) CaseDefault Exec(N(EVS_SetupMusicMix)) EndSwitch @@ -16,7 +16,7 @@ EvtScript N(EVS_SetupMusic) = { }; EvtScript N(EVS_PlaySpellcastSong) = { - Call(SetMusicTrack, 0, SONG_MERLEE_SPELL, 1, 8) + Call(SetMusic, 0, SONG_MERLEE_SPELL, BGM_VARIATION_1, VOL_LEVEL_FULL) Return End }; @@ -24,25 +24,25 @@ EvtScript N(EVS_PlaySpellcastSong) = { EvtScript N(EVS_ResetMusicAfterFortune) = { Switch(GB_StoryProgress) CaseRange(STORY_CH3_STAR_SPRIT_DEPARTED, STORY_CH4_STAR_SPIRIT_RESCUED) - Call(SetMusicTrack, 0, SONG_SHY_GUY_INVASION, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_INVASION, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TOAD_TOWN, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN, 0, VOL_LEVEL_FULL) Wait(20) Call(EnableMusicProximityMix, 0) - Call(AdjustMusicProximityMix, 0, 2, 2) + Call(AdjustMusicProximityMix, 0, 2, MUSIC_PROXIMITY_FULL) EndSwitch Return End }; EvtScript N(EVS_PlayFlowerGateSong) = { - Call(SetMusicTrack, 0, SONG_FLOWER_GATE_APPEARS, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_GATE_APPEARS, 0, VOL_LEVEL_FULL) Return End }; EvtScript N(EVS_PlayRestingSong) = { - Call(SetMusicTrack, 0, SONG_TAKING_REST, 0, 8) + Call(SetMusic, 0, SONG_TAKING_REST, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_mac/mac_01/music_mix.c b/src/world/area_mac/mac_01/music_mix.c index 341b1ae230..adc1b87945 100644 --- a/src/world/area_mac/mac_01/music_mix.c +++ b/src/world/area_mac/mac_01/music_mix.c @@ -6,7 +6,7 @@ MusicProximityTrigger N(MusicMixTrigger1) = { .pos = { -190.0f, -210.0f }, .innerDist = 100.0f, .outerDist = 120.0f, - .unk = 2, + .mix = 2, .manualActivationFlag = MF_MusicMixTrigger1, }; @@ -14,7 +14,7 @@ MusicProximityTrigger N(MusicMixTrigger2) = { .pos = { -150.0f, 330.0f }, .innerDist = 110.0f, .outerDist = 130.0f, - .unk = 8, + .mix = 8, .manualActivationFlag = MF_MusicMixTrigger2, }; @@ -22,12 +22,12 @@ MusicProximityTrigger N(MusicMixTrigger3) = { .pos = { 266.0f, 370.0f }, .innerDist = 200.0f, .outerDist = 220.0f, - .unk = 5, + .mix = 5, .manualActivationFlag = MF_MusicMixTrigger3, }; EvtScript N(EVS_SetupMusicMix) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN, 0, VOL_LEVEL_FULL) Call(EnableMusicProximityMix, 0) IfEq(MF_SetupMusicMixes, FALSE) Set(MF_SetupMusicMixes, TRUE) diff --git a/src/world/area_mac/mac_01/npc.c b/src/world/area_mac/mac_01/npc.c index f04be3c2dd..ba8872ee01 100644 --- a/src/world/area_mac/mac_01/npc.c +++ b/src/world/area_mac/mac_01/npc.c @@ -1972,7 +1972,7 @@ EvtScript N(EVS_NpcIdle_Twink) = { EndIf Wait(1) EndLoop - Call(SetMusicTrack, 0, SONG_TWINK_THEME, 0, 8) + Call(SetMusic, 0, SONG_TWINK_THEME, 0, VOL_LEVEL_FULL) Call(DisablePlayerInput, TRUE) Call(SetPlayerSpeed, Float(3.0 / DT)) Call(PlayerMoveTo, 500, -20, 0) diff --git a/src/world/area_mac/mac_02/music.c b/src/world/area_mac/mac_02/music.c index 78539501b4..2eafba75e4 100644 --- a/src/world/area_mac/mac_02/music.c +++ b/src/world/area_mac/mac_02/music.c @@ -3,7 +3,7 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseRange(STORY_CH3_STAR_SPRIT_DEPARTED, STORY_CH4_STAR_SPIRIT_RESCUED) - Call(SetMusicTrack, 0, SONG_SHY_GUY_INVASION, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_INVASION, 0, VOL_LEVEL_FULL) CaseDefault Exec(N(EVS_SetupMusicTriggers)) EndSwitch diff --git a/src/world/area_mac/mac_02/music_mix.c b/src/world/area_mac/mac_02/music_mix.c index c3231ea1c9..9757029f00 100644 --- a/src/world/area_mac/mac_02/music_mix.c +++ b/src/world/area_mac/mac_02/music_mix.c @@ -6,7 +6,7 @@ MusicProximityTrigger N(MusicMixTrigger1) = { .pos = { -150.0f, -205.0f }, .innerDist = 120.0f, .outerDist = 150.0f, - .unk = 1, + .mix = 1, .manualActivationFlag = MF_MusicMixTrigger1, }; @@ -14,12 +14,12 @@ MusicProximityTrigger N(MusicMixTrigger2) = { .pos = { -400.0f, 250.0f }, .innerDist = 110.0f, .outerDist = 130.0f, - .unk = 4, + .mix = 4, .manualActivationFlag = MF_MusicMixTrigger2, }; EvtScript N(EVS_SetupMusicTriggers) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN, 0, VOL_LEVEL_FULL) Call(EnableMusicProximityMix, 0) Thread Call(N(MonitorMusicProximityTrigger), Ref(N(MusicMixTrigger1))) diff --git a/src/world/area_mac/mac_02/npc/bootler.inc.c b/src/world/area_mac/mac_02/npc/bootler.inc.c index 7a118f5ad4..3084018d2c 100644 --- a/src/world/area_mac/mac_02/npc/bootler.inc.c +++ b/src/world/area_mac/mac_02/npc/bootler.inc.c @@ -31,7 +31,7 @@ EvtScript N(EVS_NpcIdle_Bootler) = { BreakLoop EndIf EndLoop - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, 0, VOL_LEVEL_FULL) Call(DisablePlayerInput, TRUE) Call(ShowMessageAtScreenPos, MSG_MAC_Bridge_0022, 400, 100) Thread diff --git a/src/world/area_mac/mac_03/music.c b/src/world/area_mac/mac_03/music.c index 8aa42e7654..73229cbb90 100644 --- a/src/world/area_mac/mac_03/music.c +++ b/src/world/area_mac/mac_03/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseRange(STORY_CH3_STAR_SPRIT_DEPARTED, STORY_CH4_STAR_SPIRIT_RESCUED) - Call(SetMusicTrack, 0, SONG_SHY_GUY_INVASION, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_INVASION, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TOAD_TOWN, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_mac/mac_04/main.c b/src/world/area_mac/mac_04/main.c index 451f970d07..ed9b6a070c 100644 --- a/src/world/area_mac/mac_04/main.c +++ b/src/world/area_mac/mac_04/main.c @@ -94,7 +94,7 @@ EvtScript N(EVS_Main) = { Exec(N(EVS_SetupShop)) ExecWait(N(EVS_Toybox_SetupTrainPrompt)) IfEq(GB_StoryProgress, STORY_CH4_BEGAN_PEACH_MISSION) - Call(SetMusicTrack, 0, SONG_STAR_SPIRIT_THEME, 1, 8) + Call(SetMusic, 0, SONG_STAR_SPIRIT_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) Else Exec(N(EVS_SetupMusic)) EndIf diff --git a/src/world/area_mac/mac_04/music.c b/src/world/area_mac/mac_04/music.c index 6fbb6aff10..82c2a17e35 100644 --- a/src/world/area_mac/mac_04/music.c +++ b/src/world/area_mac/mac_04/music.c @@ -5,7 +5,7 @@ EvtScript N(EVS_SetupMusic) = { IfNe(LVar0, mac_04_ENTRY_4) Switch(GB_StoryProgress) CaseRange(STORY_CH3_STAR_SPRIT_DEPARTED, STORY_CH4_STAR_SPIRIT_RESCUED) - Call(SetMusicTrack, 0, SONG_SHY_GUY_INVASION, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_INVASION, 0, VOL_LEVEL_FULL) CaseDefault Exec(N(EVS_SetupMusicTriggers)) EndSwitch diff --git a/src/world/area_mac/mac_04/music_mix.c b/src/world/area_mac/mac_04/music_mix.c index 8b0b9a9e3c..b3272a9347 100644 --- a/src/world/area_mac/mac_04/music_mix.c +++ b/src/world/area_mac/mac_04/music_mix.c @@ -6,12 +6,12 @@ MusicProximityTrigger N(MusicMixTrigger) = { .pos = { -480.0f, 220.0f }, .innerDist = 100.0f, .outerDist = 120.0f, - .unk = 9, + .mix = 9, .manualActivationFlag = MF_MusicMixTrigger, }; EvtScript N(EVS_SetupMusicTriggers) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN, 0, VOL_LEVEL_FULL) Call(EnableMusicProximityMix, 0) Thread Call(N(MonitorMusicProximityTrigger), Ref(N(MusicMixTrigger))) diff --git a/src/world/area_mac/mac_04/npc_muskular.inc.c b/src/world/area_mac/mac_04/npc_muskular.inc.c index 3a9e46c645..b2a8bc9d7a 100644 --- a/src/world/area_mac/mac_04/npc_muskular.inc.c +++ b/src/world/area_mac/mac_04/npc_muskular.inc.c @@ -175,7 +175,7 @@ EvtScript N(EVS_Scene_RescuedMuskular) = { Call(SetPlayerAnimation, ANIM_Mario1_LookUp) Wait(115 * DT) Call(SetPlayerAnimation, ANIM_Mario1_Idle) - Call(SetMusicTrack, 0, SONG_TWINK_THEME, 0, 8) + Call(SetMusic, 0, SONG_TWINK_THEME, 0, VOL_LEVEL_FULL) Call(SetPanTarget, CAM_DEFAULT, -450, 20, 250) Call(SetCamDistance, CAM_DEFAULT, -350) Call(SetCamSpeed, CAM_DEFAULT, Float(3.0 / DT)) diff --git a/src/world/area_mac/mac_05/mac_05.h b/src/world/area_mac/mac_05/mac_05.h index cb04eeeaa8..a3e51ccf40 100644 --- a/src/world/area_mac/mac_05/mac_05.h +++ b/src/world/area_mac/mac_05/mac_05.h @@ -34,7 +34,7 @@ enum { NPC_JrTroopa_02 = 5, NPC_ChuckQuizmo = 6, NPC_Bartender = 7, - NPC_Toad_02 = 8, + NPC_WaiterToad = 8, NPC_Chanterelle = 9, NPC_ArtistToad = 10, NPC_TradeEventToad = 11, @@ -46,7 +46,7 @@ enum { enum { MF_Unk_01 = MapFlag(1), - AF_JAN01_TreeDrop_StarPiece = MapFlag(10), + MF_DivaSinging = MapFlag(10), }; #define NAMESPACE mac_05 diff --git a/src/world/area_mac/mac_05/music.c b/src/world/area_mac/mac_05/music.c index fe80c2d09c..5b49d81c13 100644 --- a/src/world/area_mac/mac_05/music.c +++ b/src/world/area_mac/mac_05/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseRange(STORY_CH5_WHALE_MOUTH_OPEN, STORY_CH5_ENTERED_WHALE) - Call(SetMusicTrack, 0, SONG_WHALE_THEME, 0, 8) + Call(SetMusic, 0, SONG_WHALE_THEME, 0, VOL_LEVEL_FULL) CaseRange(STORY_CH3_STAR_SPRIT_DEPARTED, STORY_CH4_STAR_SPIRIT_RESCUED) - Call(SetMusicTrack, 0, SONG_SHY_GUY_INVASION, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_INVASION, 0, VOL_LEVEL_FULL) CaseDefault Call(FadeOutMusic, 0, 3000) EndSwitch @@ -16,7 +16,7 @@ EvtScript N(EVS_SetupMusic) = { }; EvtScript N(EVS_80244298) = { - Call(SetMusicTrack, 0, SONG_JR_TROOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_JR_TROOPA_THEME, 0, VOL_LEVEL_FULL) Return End }; @@ -28,13 +28,13 @@ EvtScript N(EVS_802442C4) = { }; EvtScript N(EVS_802442E8) = { - Call(SetMusicTrack, 0, SONG_CLUB64, 0, 8) + Call(SetMusic, 0, SONG_CLUB64, 0, VOL_LEVEL_FULL) Return End }; EvtScript N(EVS_80244314) = { - Call(SetMusicTrack, 0, SONG_WHALE_THEME, 0, 8) + Call(SetMusic, 0, SONG_WHALE_THEME, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_mac/mac_05/npc.c b/src/world/area_mac/mac_05/npc.c index 0a1e8834d6..e75da7e47a 100644 --- a/src/world/area_mac/mac_05/npc.c +++ b/src/world/area_mac/mac_05/npc.c @@ -1057,7 +1057,7 @@ EvtScript N(EVS_NpcInteract_Toad_01) = { End }; -EvtScript N(EVS_NpcInit_Toad_01) = { +EvtScript N(EVS_NpcInit_WhaleDummy) = { Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Toad_01))) Call(SetNpcFlagBits, NPC_Whale, NPC_FLAG_HAS_NO_SPRITE, TRUE) Call(SetNpcFlagBits, NPC_Whale, NPC_FLAG_HAS_SHADOW, FALSE) @@ -1907,18 +1907,18 @@ EvtScript N(EVS_NpcInteract_ArtistToad) = { Call(SetCamSpeed, CAM_DEFAULT, Float(2.0)) Call(PanToTarget, CAM_DEFAULT, 0, TRUE) Call(WaitForCam, CAM_DEFAULT, Float(1.0)) - Call(InterpNpcYaw, NPC_Toad_02, 90, 0) + Call(InterpNpcYaw, NPC_WaiterToad, 90, 0) Call(InterpNpcYaw, NPC_ArtistToad, 270, 0) Wait(60) Exec(N(EVS_802442C4)) Call(SetPlayerAnimation, ANIM_Mario1_Pray) - Call(SetNpcAnimation, NPC_Toad_02, ANIM_Toad_Red_Disappointed) + Call(SetNpcAnimation, NPC_WaiterToad, ANIM_Toad_Red_Disappointed) Call(SetNpcAnimation, NPC_ArtistToad, ANIM_Musician_Poet_Pensive) Wait(30) Call(SetNpcAnimation, NPC_Bartender, ANIM_Bartender_Talk) Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Still) Wait(30) - Call(SetMusicTrack, 0, SONG_POP_DIVA_SONG, 0, 8) + Call(SetMusic, 0, SONG_POP_DIVA_SONG, 0, VOL_LEVEL_FULL) Call(SetNpcAnimation, NPC_Bartender, ANIM_Bartender_StrumGuitar) Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Idle) Wait(30 * DT) @@ -1929,7 +1929,7 @@ EvtScript N(EVS_NpcInteract_ArtistToad) = { Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Idle) Call(SetNpcAnimation, NPC_Bartender, ANIM_Bartender_Idle) Wait(40 * DT) - Call(SetNpcAnimation, NPC_Toad_02, ANIM_Toad_Red_Idle) + Call(SetNpcAnimation, NPC_WaiterToad, ANIM_Toad_Red_Idle) Call(SetNpcAnimation, NPC_ArtistToad, ANIM_Musician_Poet_Idle) Call(SetPlayerAnimation, ANIM_Mario1_Idle) Wait(30 * DT) @@ -1979,19 +1979,19 @@ EvtScript N(EVS_NpcInit_ArtistToad) = { End }; -API_CALLABLE(N(func_8024335C_8554CC)) { - if (func_8014AD40() == 0) { - return ApiStatus_DONE2; - } else { +API_CALLABLE(N(AwaitSongFinished)) { + if (bgm_is_any_song_playing()) { return ApiStatus_BLOCK; + } else { + return ApiStatus_DONE2; } } -EvtScript N(D_8024E23C_8603AC) = { - Set(AF_JAN01_TreeDrop_StarPiece, TRUE) +EvtScript N(EVS_Chanterelle_Sing) = { + Set(MF_DivaSinging, TRUE) Call(SetSelfEnemyFlagBits, ENEMY_FLAG_DO_NOT_AUTO_FACE_PLAYER | ENEMY_FLAG_CANT_INTERACT, TRUE) Call(InterpNpcYaw, NPC_Chanterelle, 270, 0) - Call(SetMusicTrack, 0, SONG_POP_DIVA_SONG, 1, 8) + Call(SetMusic, 0, SONG_POP_DIVA_SONG, BGM_VARIATION_1, VOL_LEVEL_FULL) ChildThread Wait(30) Call(SetNpcAnimation, NPC_Chanterelle, ANIM_Chanterelle_Sing) @@ -2000,11 +2000,11 @@ EvtScript N(D_8024E23C_8603AC) = { EndChildThread ChildThread Wait(30) - Call(N(func_8024335C_8554CC)) - Set(AF_JAN01_TreeDrop_StarPiece, FALSE) + Call(N(AwaitSongFinished)) + Set(MF_DivaSinging, FALSE) EndChildThread Loop(0) - IfEq(AF_JAN01_TreeDrop_StarPiece, FALSE) + IfEq(MF_DivaSinging, FALSE) BreakLoop EndIf Wait(1) @@ -2048,7 +2048,7 @@ EvtScript N(EVS_NpcInteract_Chanterelle) = { Call(ContinueSpeech, NPC_SELF, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_006E) Else Call(ContinueSpeech, NPC_SELF, ANIM_Chanterelle_Talk, ANIM_Chanterelle_Idle, 0, MSG_MAC_Port_006F) - Exec(N(D_8024E23C_8603AC)) + Exec(N(EVS_Chanterelle_Sing)) EndIf Return End @@ -2073,7 +2073,7 @@ API_CALLABLE(N(GetTradeEventItemCount)) { return ApiStatus_DONE2; } -EvtScript N(EVS_NpcInteract_Toad_03) = { +EvtScript N(EVS_NpcInteract_TradeEventToad) = { Set(LVar0, 7) Call(N(CheckTradeEventTime)) IfEq(LVar0, 0) @@ -2120,7 +2120,7 @@ EvtScript N(EVS_NpcInteract_Toad_03) = { EvtScript N(EVS_NpcInit_TradeEventToad) = { IfNe(GF_TradingEvent3_Active, FALSE) - Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_Toad_03))) + Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_TradeEventToad))) Else Call(RemoveNpc, NPC_SELF) EndIf @@ -2128,11 +2128,11 @@ EvtScript N(EVS_NpcInit_TradeEventToad) = { End }; -NpcData N(NpcData_Toad_01) = { +NpcData N(NpcData_WhaleDummy) = { .id = NPC_Whale, .pos = { NPC_DISPOSE_LOCATION }, .yaw = 270, - .init = &N(EVS_NpcInit_Toad_01), + .init = &N(EVS_NpcInit_WhaleDummy), .settings = &N(NpcSettings_Whale), .flags = ENEMY_FLAG_PASSIVE | ENEMY_FLAG_ENABLE_HIT_SCRIPT | ENEMY_FLAG_IGNORE_WORLD_COLLISION | ENEMY_FLAG_IGNORE_PLAYER_COLLISION | ENEMY_FLAG_IGNORE_ENTITY_COLLISION | ENEMY_FLAG_FLYING | ENEMY_FLAG_DO_NOT_AUTO_FACE_PLAYER, .drops = NO_DROPS, @@ -2267,7 +2267,7 @@ NpcData N(NpcData_JrTroopa_01)[] = { }, }; -NpcData N(NpcData_Toad_04)[] = { +NpcData N(NpcData_Toads_Outside)[] = { { .id = NPC_Toad_04, .pos = { 320.0f, 0.0f, -300.0f }, @@ -2396,7 +2396,7 @@ NpcData N(NpcData_Toad_04)[] = { }, }; -NpcData N(NpcData_Bartender)[] = { +NpcData N(NpcData_Toads_Inside)[] = { { .id = NPC_Bartender, .pos = { -85.0f, 0.0f, -520.0f }, @@ -2426,7 +2426,7 @@ NpcData N(NpcData_Bartender)[] = { .tattle = MSG_NpcTattle_Club64_Bartender, }, { - .id = NPC_Toad_02, + .id = NPC_WaiterToad, .pos = { 30.0f, 0.0f, -570.0f }, .yaw = 270, .init = &N(EVS_NpcInit_Toad_02), @@ -2572,9 +2572,9 @@ NpcData N(NpcData_ChuckQuizmo) = { NpcGroupList N(NpcSetA) = { NPC_GROUP(N(NpcData_Fuzzipede)), NPC_GROUP(N(NpcData_Fishmael)), - NPC_GROUP(N(NpcData_Bartender)), - NPC_GROUP(N(NpcData_Toad_04)), - NPC_GROUP(N(NpcData_Toad_01)), + NPC_GROUP(N(NpcData_Toads_Inside)), + NPC_GROUP(N(NpcData_Toads_Outside)), + NPC_GROUP(N(NpcData_WhaleDummy)), NPC_GROUP(N(NpcData_ChuckQuizmo)), {} }; @@ -2583,9 +2583,9 @@ NpcGroupList N(NpcSetB) = { NPC_GROUP(N(NpcData_Kolorado)), NPC_GROUP(N(NpcData_Fuzzipede)), NPC_GROUP(N(NpcData_Fishmael)), - NPC_GROUP(N(NpcData_Bartender)), - NPC_GROUP(N(NpcData_Toad_04)), - NPC_GROUP(N(NpcData_Toad_01)), + NPC_GROUP(N(NpcData_Toads_Inside)), + NPC_GROUP(N(NpcData_Toads_Outside)), + NPC_GROUP(N(NpcData_WhaleDummy)), {} }; @@ -2593,8 +2593,8 @@ NpcGroupList N(NpcSetC) = { NPC_GROUP(N(NpcData_JrTroopa_01), BTL_KMR_3_FORMATION_05), NPC_GROUP(N(NpcData_Kolorado)), NPC_GROUP(N(NpcData_Fishmael)), - NPC_GROUP(N(NpcData_Bartender)), - NPC_GROUP(N(NpcData_Toad_04)), - NPC_GROUP(N(NpcData_Toad_01)), + NPC_GROUP(N(NpcData_Toads_Inside)), + NPC_GROUP(N(NpcData_Toads_Outside)), + NPC_GROUP(N(NpcData_WhaleDummy)), {} }; diff --git a/src/world/area_mac/mac_05/rooms.c b/src/world/area_mac/mac_05/rooms.c index 7b4c2f696b..4e2e6f5f6b 100644 --- a/src/world/area_mac/mac_05/rooms.c +++ b/src/world/area_mac/mac_05/rooms.c @@ -41,7 +41,7 @@ EvtScript N(D_80252580_8646F0) = { EvtScript N(D_802525B0_864720) = { Switch(LVar0) CaseEq(0) - Call(SetMusicTrack, 0, SONG_CLUB64, 0, 8) + Call(SetMusic, 0, SONG_CLUB64, 0, VOL_LEVEL_FULL) Call(StopSound, SOUND_LOOP_MAC_HARBOR_WATER) #if !VERSION_JP Call(StopTrackingSoundPos, SOUND_LRAW_MAC_HARBOR_WATER) @@ -50,7 +50,7 @@ EvtScript N(D_802525B0_864720) = { Call(EnableModel, MODEL_o139, FALSE) Call(EnableModel, MODEL_o140, FALSE) CaseEq(3) - Set(AF_JAN01_TreeDrop_StarPiece, FALSE) + Set(MF_DivaSinging, FALSE) Call(EnableGroup, MODEL_bar_inn, FALSE) Call(EnableModel, MODEL_o139, TRUE) Call(EnableModel, MODEL_o140, TRUE) @@ -62,7 +62,7 @@ EvtScript N(D_802525B0_864720) = { }; s32 N(D_802526C8_864838)[] = { - NPC_Toad_02, + NPC_WaiterToad, NPC_Bartender, NPC_Chanterelle, NPC_ArtistToad, diff --git a/src/world/area_mac/mac_06/main.c b/src/world/area_mac/mac_06/main.c index ba022202f8..4001e76353 100644 --- a/src/world/area_mac/mac_06/main.c +++ b/src/world/area_mac/mac_06/main.c @@ -52,8 +52,8 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Exec(N(EVS_FlyingGull)) Exec(N(EVS_WhaleMain)) - Call(SetMusicTrack, 0, SONG_RIDING_THE_WHALE, 0, 8) - Call(PlayAmbientSounds, AMBIENT_BEACH) + Call(SetMusic, 0, SONG_RIDING_THE_WHALE, 0, VOL_LEVEL_FULL) + Call(PlayAmbientSounds, AMBIENT_SEA) Exec(N(EVS_AnimateWaves)) Call(SetTexPanner, MODEL_o214, TEX_PANNER_1) Call(N(SpawnSunEffect)) diff --git a/src/world/area_mac/mac_06/npc.c b/src/world/area_mac/mac_06/npc.c index c06f285be5..e813554955 100644 --- a/src/world/area_mac/mac_06/npc.c +++ b/src/world/area_mac/mac_06/npc.c @@ -478,7 +478,7 @@ EvtScript N(EVS_NpcIdle_JrTroopa) = { Wait(1) EndLoop Wait(60) - Call(SetMusicTrack, 0, SONG_JR_TROOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_JR_TROOPA_THEME, 0, VOL_LEVEL_FULL) Call(PlaySound, SOUND_LOOP_JR_TROOPA_SWIM) Call(SetNpcAnimation, NPC_SELF, ANIM_JrTroopa_ChargeTripped) Call(SetNpcPos, NPC_SELF, 250, -30, 500) diff --git a/src/world/area_mim/mim_01/music.c b/src/world/area_mim/mim_01/music.c index 08baf78286..4517685957 100644 --- a/src/world/area_mim/mim_01/music.c +++ b/src/world/area_mim/mim_01/music.c @@ -1,7 +1,7 @@ #include "mim_01.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_FOREVER_FOREST, 0, 8) + Call(SetMusic, 0, SONG_FOREVER_FOREST, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_SPOOKY) Return End diff --git a/src/world/area_mim/mim_02/music.c b/src/world/area_mim/mim_02/music.c index 94f8a93ef5..c487c050a8 100644 --- a/src/world/area_mim/mim_02/music.c +++ b/src/world/area_mim/mim_02/music.c @@ -1,7 +1,7 @@ #include "mim_02.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_FOREVER_FOREST, 0, 8) + Call(SetMusic, 0, SONG_FOREVER_FOREST, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_SPOOKY) Return End diff --git a/src/world/area_mim/mim_03/music.c b/src/world/area_mim/mim_03/music.c index 2cd5ffcd84..14a69afa37 100644 --- a/src/world/area_mim/mim_03/music.c +++ b/src/world/area_mim/mim_03/music.c @@ -1,7 +1,7 @@ #include "mim_03.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_FOREVER_FOREST, 0, 8) + Call(SetMusic, 0, SONG_FOREVER_FOREST, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_SPOOKY) Return End diff --git a/src/world/area_mim/mim_04/music.c b/src/world/area_mim/mim_04/music.c index a737f59f93..341c41aca7 100644 --- a/src/world/area_mim/mim_04/music.c +++ b/src/world/area_mim/mim_04/music.c @@ -1,7 +1,7 @@ #include "mim_04.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_FOREVER_FOREST, 0, 8) + Call(SetMusic, 0, SONG_FOREVER_FOREST, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_SPOOKY) Return End diff --git a/src/world/area_mim/mim_05/music.c b/src/world/area_mim/mim_05/music.c index 06027bdff5..d371a69634 100644 --- a/src/world/area_mim/mim_05/music.c +++ b/src/world/area_mim/mim_05/music.c @@ -1,7 +1,7 @@ #include "mim_05.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_FOREVER_FOREST, 0, 8) + Call(SetMusic, 0, SONG_FOREVER_FOREST, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_SPOOKY) Return End diff --git a/src/world/area_mim/mim_06/music.c b/src/world/area_mim/mim_06/music.c index 721b6d9e86..a565793d0f 100644 --- a/src/world/area_mim/mim_06/music.c +++ b/src/world/area_mim/mim_06/music.c @@ -1,7 +1,7 @@ #include "mim_06.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_FOREVER_FOREST, 0, 8) + Call(SetMusic, 0, SONG_FOREVER_FOREST, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_SPOOKY) Return End diff --git a/src/world/area_mim/mim_07/music.c b/src/world/area_mim/mim_07/music.c index 5cd6ab9085..2fdb9d7977 100644 --- a/src/world/area_mim/mim_07/music.c +++ b/src/world/area_mim/mim_07/music.c @@ -1,14 +1,14 @@ #include "mim_07.h" EvtScript N(EVS_PlayForestMusic) = { - Call(SetMusicTrack, 0, SONG_FOREVER_FOREST, 0, 8) + Call(SetMusic, 0, SONG_FOREVER_FOREST, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_SPOOKY) Return End }; EvtScript N(EVS_JrTroopaMusic) = { - Call(SetMusicTrack, 0, SONG_JR_TROOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_JR_TROOPA_THEME, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_mim/mim_08/music.c b/src/world/area_mim/mim_08/music.c index 0ae8c1d9ad..94abe123a8 100644 --- a/src/world/area_mim/mim_08/music.c +++ b/src/world/area_mim/mim_08/music.c @@ -1,7 +1,7 @@ #include "mim_08.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_FOREVER_FOREST, 0, 8) + Call(SetMusic, 0, SONG_FOREVER_FOREST, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_SPOOKY) Return End diff --git a/src/world/area_mim/mim_09/music.c b/src/world/area_mim/mim_09/music.c index 571197d948..0ed660affd 100644 --- a/src/world/area_mim/mim_09/music.c +++ b/src/world/area_mim/mim_09/music.c @@ -1,7 +1,7 @@ #include "mim_09.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_FOREVER_FOREST, 0, 8) + Call(SetMusic, 0, SONG_FOREVER_FOREST, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_SPOOKY) Return End diff --git a/src/world/area_mim/mim_10/music.c b/src/world/area_mim/mim_10/music.c index 14ae86d502..af09276e67 100644 --- a/src/world/area_mim/mim_10/music.c +++ b/src/world/area_mim/mim_10/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetToadTownMusic) = { Switch(GB_StoryProgress) CaseRange(STORY_CH3_STAR_SPRIT_DEPARTED, STORY_CH4_STAR_SPIRIT_RESCUED) - Call(SetMusicTrack, 0, SONG_SHY_GUY_INVASION, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_INVASION, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TOAD_TOWN, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN, 0, VOL_LEVEL_FULL) EndSwitch Return End @@ -26,7 +26,7 @@ EvtScript N(EVS_SetupMusic) = { Exec(N(EVS_SetToadTownMusic)) Wait(30) Else - Call(SetMusicTrack, 0, SONG_FOREVER_FOREST, 0, 8) + Call(SetMusic, 0, SONG_FOREVER_FOREST, 0, VOL_LEVEL_FULL) Wait(15) Call(ClearAmbientSounds, 250) Wait(15) @@ -39,7 +39,7 @@ EvtScript N(EVS_SetupMusic) = { Call(FadeOutMusic, 0, 1000) Wait(15) Wait(15) - Call(SetMusicTrack, 0, SONG_FOREVER_FOREST, 0, 8) + Call(SetMusic, 0, SONG_FOREVER_FOREST, 0, VOL_LEVEL_FULL) Wait(30) Goto(20) EndIf diff --git a/src/world/area_mim/mim_10/npc.c b/src/world/area_mim/mim_10/npc.c index d3837b05ca..1030ffcc69 100644 --- a/src/world/area_mim/mim_10/npc.c +++ b/src/world/area_mim/mim_10/npc.c @@ -116,7 +116,7 @@ EvtScript N(EVS_Scene_BootlersInvitation) = { Call(SetNpcPos, NPC_Bootler, 200, 44, 0) Call(SetNpcImgFXParams, NPC_Bootler, IMGFX_SET_ALPHA, 0, 0, 0, 0) Set(MV_Unk_00, TRUE) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, 0, VOL_LEVEL_FULL) Wait(20 * DT) Call(SetPlayerAnimation, ANIM_Mario1_LookUp) Wait(10 * DT) diff --git a/src/world/area_mim/mim_11/gate.c b/src/world/area_mim/mim_11/gate.c index ad3a038da3..9ce376814a 100644 --- a/src/world/area_mim/mim_11/gate.c +++ b/src/world/area_mim/mim_11/gate.c @@ -41,7 +41,7 @@ EvtScript N(D_80242560_BB95D0) = { Call(SetPanTarget, CAM_DEFAULT, 23, 0, -109) Call(PanToTarget, CAM_DEFAULT, 0, TRUE) Call(WaitForCam, CAM_DEFAULT, Float(1.0)) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, 0, VOL_LEVEL_FULL) Call(PlaySoundAtNpc, NPC_Bootler, SOUND_BOO_VANISH_A, SOUND_SPACE_DEFAULT) SetF(LVar0, Float(0.0)) Loop(90 * DT) @@ -50,7 +50,7 @@ EvtScript N(D_80242560_BB95D0) = { Wait(1) EndLoop Call(SpeakToPlayer, NPC_Bootler, ANIM_Bootler_Talk, ANIM_Bootler_Idle, 0, MSG_CH3_0028) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 1, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, BGM_VARIATION_1, VOL_LEVEL_FULL) Wait(10 * DT) Call(SetCamPitch, CAM_DEFAULT, Float(0.0), Float(-25.0)) Call(SetCamDistance, CAM_DEFAULT, 550) diff --git a/src/world/area_mim/mim_11/music.c b/src/world/area_mim/mim_11/music.c index 17ed8cc594..e0e8789671 100644 --- a/src/world/area_mim/mim_11/music.c +++ b/src/world/area_mim/mim_11/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_ARRIVED_AT_BOOS_MANSION) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 1, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, BGM_VARIATION_1, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FOREVER_FOREST, 0, 8) + Call(SetMusic, 0, SONG_FOREVER_FOREST, 0, VOL_LEVEL_FULL) EndSwitch Call(PlayAmbientSounds, AMBIENT_SPOOKY) Return diff --git a/src/world/area_mim/mim_12/music.c b/src/world/area_mim/mim_12/music.c index 9e98f20888..a1a037ad1a 100644 --- a/src/world/area_mim/mim_12/music.c +++ b/src/world/area_mim/mim_12/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_StartForestMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_ARRIVED_AT_BOOS_MANSION) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 1, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, BGM_VARIATION_1, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FOREVER_FOREST, 0, 8) + Call(SetMusic, 0, SONG_FOREVER_FOREST, 0, VOL_LEVEL_FULL) EndSwitch Call(ClearAmbientSounds, 250) Return @@ -15,11 +15,11 @@ EvtScript N(EVS_StartForestMusic) = { EvtScript N(EVS_StartGustyMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH3_TUBBA_WOKE_UP) - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_TUBBA_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_TUBBA_ESCAPE, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_GUSTY_GULCH, 0, 8) + Call(SetMusic, 0, SONG_GUSTY_GULCH, 0, VOL_LEVEL_FULL) EndSwitch Call(PlayAmbientSounds, AMBIENT_WIND) Return diff --git a/src/world/area_nok/nok_01/main.c b/src/world/area_nok/nok_01/main.c index e9f94b5594..09dcfa9762 100644 --- a/src/world/area_nok/nok_01/main.c +++ b/src/world/area_nok/nok_01/main.c @@ -4,7 +4,7 @@ EvtScript N(EVS_ExitWalk_nok_13_1) = { IfEq(GB_KootFavor_State, KOOT_FAVOR_STATE_2) Set(GF_KootFavor_LeftKoopaVillage, TRUE) EndIf - Call(N(func_802428B8_9C7C98)) + Call(N(StopAllRadioStations)) Call(ClearAmbientSounds, 250) Call(UseExitHeading, 60, nok_01_ENTRY_0) Exec(ExitWalk) @@ -15,7 +15,7 @@ EvtScript N(EVS_ExitWalk_nok_13_1) = { }; EvtScript N(EVS_ExitWalk_nok_02_0) = { - Call(N(func_802428B8_9C7C98)) + Call(N(StopAllRadioStations)) Call(ClearAmbientSounds, 250) Call(UseExitHeading, 60, nok_01_ENTRY_1) Exec(ExitWalk) diff --git a/src/world/area_nok/nok_01/music.c b/src/world/area_nok/nok_01/music.c index dd5af37a0a..dca5c04168 100644 --- a/src/world/area_nok/nok_01/music.c +++ b/src/world/area_nok/nok_01/music.c @@ -2,64 +2,64 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) - Call(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 8) + Call(SetMusic, 0, SONG_FUZZY_ATTACK, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_FULL) EndIf Return End }; -EvtScript N(EVS_80242C38) = { +EvtScript N(EVS_FadeOutMusic) = { IfLt(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) - Call(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 7) + Call(SetMusic, 0, SONG_FUZZY_ATTACK, 0, VOL_LEVEL_7) Wait(4) - Call(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 6) + Call(SetMusic, 0, SONG_FUZZY_ATTACK, 0, VOL_LEVEL_6) Wait(4) - Call(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 5) + Call(SetMusic, 0, SONG_FUZZY_ATTACK, 0, VOL_LEVEL_5) Wait(4) - Call(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 4) + Call(SetMusic, 0, SONG_FUZZY_ATTACK, 0, VOL_LEVEL_4) Wait(4) - Call(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 3) + Call(SetMusic, 0, SONG_FUZZY_ATTACK, 0, VOL_LEVEL_3) Else - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 7) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_7) Wait(4) - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 6) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_6) Wait(4) - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 5) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_5) Wait(4) - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 4) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_4) Wait(4) - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 3) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_3) EndIf Return End }; -EvtScript N(EVS_80242DE0) = { +EvtScript N(EVS_FadeInMusic) = { IfLt(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) - Call(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 4) + Call(SetMusic, 0, SONG_FUZZY_ATTACK, 0, VOL_LEVEL_4) Wait(2) - Call(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 5) + Call(SetMusic, 0, SONG_FUZZY_ATTACK, 0, VOL_LEVEL_5) Wait(2) - Call(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 6) + Call(SetMusic, 0, SONG_FUZZY_ATTACK, 0, VOL_LEVEL_6) Wait(2) - Call(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 7) + Call(SetMusic, 0, SONG_FUZZY_ATTACK, 0, VOL_LEVEL_7) Else - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 4) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_4) Wait(2) - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 5) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_5) Wait(2) - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 6) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_6) Wait(2) - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 7) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_7) EndIf Return End }; EvtScript N(EVS_PlayRestingSong) = { - Call(SetMusicTrack, 0, SONG_TAKING_REST, 0, 8) + Call(SetMusic, 0, SONG_TAKING_REST, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_nok/nok_01/nok_01.h b/src/world/area_nok/nok_01/nok_01.h index 67ec24bbc1..0f8baf8ab5 100644 --- a/src/world/area_nok/nok_01/nok_01.h +++ b/src/world/area_nok/nok_01/nok_01.h @@ -47,8 +47,8 @@ extern EvtScript N(EVS_Scene_RecoverTreeShell); extern EvtScript N(EVS_SetupShop); extern EvtScript N(EVS_SetupRadio); extern EvtScript N(EVS_MakeRooms); -extern EvtScript N(EVS_80242C38); -extern EvtScript N(EVS_80242DE0); +extern EvtScript N(EVS_FadeOutMusic); +extern EvtScript N(EVS_FadeInMusic); extern EvtScript N(EVS_SetupFoliage); extern EvtScript N(EVS_MakeEntities); @@ -58,6 +58,6 @@ extern NpcGroupList N(NormalNPCs); API_CALLABLE(N(InitializeRadio)); API_CALLABLE(N(SetRadioVolumeMax)); API_CALLABLE(N(SetRadioVolumeMute)); -API_CALLABLE(N(func_80242898_9C7C78)); -API_CALLABLE(N(func_802428B8_9C7C98)); +API_CALLABLE(N(MuteAllRadioStations)); +API_CALLABLE(N(StopAllRadioStations)); API_CALLABLE(N(func_802428D8_9C7CB8)); diff --git a/src/world/area_nok/nok_01/radio.c b/src/world/area_nok/nok_01/radio.c index 9e4fd121a2..ebb7cd054c 100644 --- a/src/world/area_nok/nok_01/radio.c +++ b/src/world/area_nok/nok_01/radio.c @@ -10,7 +10,7 @@ API_CALLABLE(N(InitializeRadio)) { evt_get_variable(script, *args++); snd_load_ambient(AMBIENT_RADIO); - snd_ambient_80055760(4); + snd_ambient_radio_setup(4); snd_ambient_set_volume(0, 250, 1); return ApiStatus_DONE2; } @@ -19,7 +19,7 @@ API_CALLABLE(N(SetRadioVolumeMax)) { Bytecode* args = script->ptrReadPos; s32 idx = evt_get_variable(script, *args++); - snd_ambient_play_only(N(StationMseqMapping)[idx]); + snd_ambient_radio_select(N(StationMseqMapping)[idx]); snd_ambient_set_volume(N(StationMseqMapping)[idx], 1500, 127); return ApiStatus_DONE2; } @@ -32,13 +32,13 @@ API_CALLABLE(N(SetRadioVolumeMute)) { return ApiStatus_DONE2; } -API_CALLABLE(N(func_80242898_9C7C78)) { - snd_ambient_play_only(4); +API_CALLABLE(N(MuteAllRadioStations)) { + snd_ambient_radio_select(4); return ApiStatus_DONE2; } -API_CALLABLE(N(func_802428B8_9C7C98)) { - snd_ambient_stop_all(100); +API_CALLABLE(N(StopAllRadioStations)) { + snd_ambient_radio_stop(100); return ApiStatus_DONE2; } @@ -46,7 +46,7 @@ API_CALLABLE(N(SetRadioStation)) { Bytecode* args = script->ptrReadPos; s32 index = evt_get_variable(script, *args++); - snd_ambient_play_only(N(StationMseqMapping)[index]); + snd_ambient_radio_select(N(StationMseqMapping)[index]); return ApiStatus_DONE2; } diff --git a/src/world/area_nok/nok_01/rooms.c b/src/world/area_nok/nok_01/rooms.c index a347a7183c..6d6caae82c 100644 --- a/src/world/area_nok/nok_01/rooms.c +++ b/src/world/area_nok/nok_01/rooms.c @@ -204,15 +204,15 @@ EvtScript N(EVS_RoomListener_BeachHouse) = { CaseEq(ROOM_UPDATE_ENTER_BEGIN) Call(SetGroupVisibility, MODEL_g79, MODEL_GROUP_VISIBLE) Call(N(SetRadioVolumeMax), AB_NOK_0) - Exec(N(EVS_80242C38)) + Exec(N(EVS_FadeOutMusic)) CaseEq(ROOM_UPDATE_ENTER_DONE) // do nothing CaseEq(ROOM_UPDATE_EXIT_BEGIN) Call(N(SetRadioVolumeMute), AB_NOK_0) - Exec(N(EVS_80242DE0)) + Exec(N(EVS_FadeInMusic)) CaseEq(ROOM_UPDATE_EXIT_END) Call(SetGroupVisibility, MODEL_g79, MODEL_GROUP_HIDDEN) - Call(N(func_80242898_9C7C78)) + Call(N(MuteAllRadioStations)) EndSwitch Return End diff --git a/src/world/area_nok/nok_02/music.c b/src/world/area_nok/nok_02/music.c index 84692d7acd..039238b959 100644 --- a/src/world/area_nok/nok_02/music.c +++ b/src/world/area_nok/nok_02/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) - Call(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 8) + Call(SetMusic, 0, SONG_FUZZY_ATTACK, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_nok/nok_03/music.c b/src/world/area_nok/nok_03/music.c index 7b744d5e4a..a578231287 100644 --- a/src/world/area_nok/nok_03/music.c +++ b/src/world/area_nok/nok_03/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) - Call(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 8) + Call(SetMusic, 0, SONG_FUZZY_ATTACK, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_FULL) EndIf Call(PlaySoundAt, SOUND_LOOP_NOK_WATER, SOUND_SPACE_DEFAULT, 887, 0, -41) Return diff --git a/src/world/area_nok/nok_04/music.c b/src/world/area_nok/nok_04/music.c index f0a81ebb3e..f0197273c9 100644 --- a/src/world/area_nok/nok_04/music.c +++ b/src/world/area_nok/nok_04/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH1_KOOPER_JOINED_PARTY) - Call(SetMusicTrack, 0, SONG_FUZZY_ATTACK, 0, 8) + Call(SetMusic, 0, SONG_FUZZY_ATTACK, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_nok/nok_04/npc.c b/src/world/area_nok/nok_04/npc.c index 3484888358..4cdb30f841 100644 --- a/src/world/area_nok/nok_04/npc.c +++ b/src/world/area_nok/nok_04/npc.c @@ -579,7 +579,7 @@ EvtScript N(EVS_FuzzyBoss_TauntFromTree) = { Set(LVar0, MSG_CH1_00BD) EndIf Call(SpeakToPlayer, NPC_BossFuzzy, ANIM_Fuzzy_Anim0C, ANIM_Fuzzy_Idle, 5, LVar0) - Call(SetMusicTrack, 0, SONG_PLAYROOM, 0, 8) + Call(SetMusic, 0, SONG_PLAYROOM, 0, VOL_LEVEL_FULL) Call(N(SetThreadTargetLengthAngle), 0, 0, 30 * DT) Wait(30 * DT) Call(SetModelFlags, MODEL_o177, MODEL_FLAG_USES_CUSTOM_GFX, FALSE) @@ -1358,7 +1358,7 @@ EvtScript N(EVS_HitTree_Correct) = { Call(N(AttachThreadBackNpc), 0) Call(SetNpcPos, NPC_BossFuzzy, NPC_DISPOSE_LOCATION) Call(SetNpcPos, NPC_KoopersShell, NPC_DISPOSE_LOCATION) - Call(SetMusicTrack, 0, SONG_KOOPA_VILLAGE, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_VILLAGE, 0, VOL_LEVEL_FULL) Call(DisablePlayerPhysics, FALSE) Call(DisablePlayerInput, FALSE) Set(AF_NOK04_PlayingGame, FALSE) diff --git a/src/world/area_nok/nok_11/music.c b/src/world/area_nok/nok_11/music.c index 92d5cde534..42d9c145ac 100644 --- a/src/world/area_nok/nok_11/music.c +++ b/src/world/area_nok/nok_11/music.c @@ -1,13 +1,13 @@ #include "nok_11.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Return End }; EvtScript N(EVS_PlayJrTroopaSong) = { - Call(SetMusicTrack, 0, SONG_JR_TROOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_JR_TROOPA_THEME, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_nok/nok_11/npc.c b/src/world/area_nok/nok_11/npc.c index 5e7b9521aa..6ae47994b9 100644 --- a/src/world/area_nok/nok_11/npc.c +++ b/src/world/area_nok/nok_11/npc.c @@ -254,7 +254,7 @@ EvtScript N(EVS_NpcIdle_KentCKoopa_01) = { Label(10) Call(DisablePlayerInput, TRUE) Call(InterruptUsePartner) - Call(SetMusicTrack, 0, SONG_MINIBOSS_BATTLE, 0, 8) + Call(SetMusic, 0, SONG_MINIBOSS_BATTLE, 0, VOL_LEVEL_FULL) Call(SpeakToPlayer, NPC_KentCKoopa_02, ANIM_KentCKoopa_Anim02, ANIM_KentCKoopa_Anim01, 0, MSG_CH1_012C) IfEq(AB_NOK_2, 0) Set(LVar0, 20) @@ -424,7 +424,7 @@ EvtScript N(EVS_NpcIdle_KentCKoopa_01) = { Label(53) Call(DisablePlayerInput, TRUE) Call(InterruptUsePartner) - Call(SetMusicTrack, 0, SONG_MINIBOSS_BATTLE, 0, 8) + Call(SetMusic, 0, SONG_MINIBOSS_BATTLE, 0, VOL_LEVEL_FULL) Call(SetPlayerPos, LVar3, LVar1, LVar2) Call(SpeakToPlayer, NPC_KentCKoopa_02, ANIM_KentCKoopa_Anim02, ANIM_KentCKoopa_Anim01, 0, MSG_CH1_0132) IfEq(AB_NOK_2, 0) diff --git a/src/world/area_nok/nok_12/music.c b/src/world/area_nok/nok_12/music.c index f017aa44c9..45e4be2a54 100644 --- a/src/world/area_nok/nok_12/music.c +++ b/src/world/area_nok/nok_12/music.c @@ -1,7 +1,7 @@ #include "nok_12.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Call(PlaySound, SOUND_LOOP_NOK_WATER) Return End diff --git a/src/world/area_nok/nok_13/music.c b/src/world/area_nok/nok_13/music.c index c96f6e058b..bcd0002503 100644 --- a/src/world/area_nok/nok_13/music.c +++ b/src/world/area_nok/nok_13/music.c @@ -1,7 +1,7 @@ #include "nok_13.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Call(PlaySound, SOUND_LOOP_NOK_WATER) Return End diff --git a/src/world/area_nok/nok_13/musical_hill.c b/src/world/area_nok/nok_13/musical_hill.c index 15670f2be1..29d7eb1706 100644 --- a/src/world/area_nok/nok_13/musical_hill.c +++ b/src/world/area_nok/nok_13/musical_hill.c @@ -22,7 +22,7 @@ EvtScript N(EVS_RotateHillTowardPlayer) = { }; EvtScript N(EVS_PlaySong) = { - Call(SetMusicTrack, 0, LVar0, 0, 8) + Call(SetMusic, 0, LVar0, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_nok/nok_14/music.c b/src/world/area_nok/nok_14/music.c index 41b85f5966..4efae10c95 100644 --- a/src/world/area_nok/nok_14/music.c +++ b/src/world/area_nok/nok_14/music.c @@ -1,7 +1,7 @@ #include "nok_14.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Call(PlaySound, SOUND_LOOP_NOK_WATER) Return End diff --git a/src/world/area_nok/nok_15/music.c b/src/world/area_nok/nok_15/music.c index 307d47c9b8..01aadc5054 100644 --- a/src/world/area_nok/nok_15/music.c +++ b/src/world/area_nok/nok_15/music.c @@ -1,7 +1,7 @@ #include "nok_15.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Call(PlaySound, SOUND_LOOP_NOK_WATER) Return End diff --git a/src/world/area_obk/obk_01/music.c b/src/world/area_obk/obk_01/music.c index 2287f443ac..99afb25a69 100644 --- a/src/world/area_obk/obk_01/music.c +++ b/src/world/area_obk/obk_01/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_CHEERFUL_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_CHEERFUL_BOOS_MANSION, 0, VOL_LEVEL_FULL) EndIf Call(ClearAmbientSounds, 250) Return diff --git a/src/world/area_obk/obk_02/music.c b/src/world/area_obk/obk_02/music.c index ae404ba0a3..fff7329a45 100644 --- a/src/world/area_obk/obk_02/music.c +++ b/src/world/area_obk/obk_02/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_CHEERFUL_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_CHEERFUL_BOOS_MANSION, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_obk/obk_03/music.c b/src/world/area_obk/obk_03/music.c index c9a57994b5..b35694b591 100644 --- a/src/world/area_obk/obk_03/music.c +++ b/src/world/area_obk/obk_03/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_CHEERFUL_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_CHEERFUL_BOOS_MANSION, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_obk/obk_04/game.c b/src/world/area_obk/obk_04/game.c index 0586015682..4434e29f72 100644 --- a/src/world/area_obk/obk_04/game.c +++ b/src/world/area_obk/obk_04/game.c @@ -272,7 +272,7 @@ EvtScript N(EVS_SpawnGotSuperBootsFX) = { EvtScript N(EVS_Scene_BoosUnleashed) = { Call(DisablePlayerInput, TRUE) - Call(SetMusicTrack, 0, SONG_BOO_MINIGAME, 0, 8) + Call(SetMusic, 0, SONG_BOO_MINIGAME, 0, VOL_LEVEL_FULL) Exec(N(EVS_TetherItemToDummy)) Wait(1) Exec(N(EVS_IntroduceAndHideBoots)) diff --git a/src/world/area_obk/obk_04/music.c b/src/world/area_obk/obk_04/music.c index 9450e38d5d..0841e7873f 100644 --- a/src/world/area_obk/obk_04/music.c +++ b/src/world/area_obk/obk_04/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_CHEERFUL_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_CHEERFUL_BOOS_MANSION, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_obk/obk_05/main.c b/src/world/area_obk/obk_05/main.c index ce32a65d59..eeaa4ed09c 100644 --- a/src/world/area_obk/obk_05/main.c +++ b/src/world/area_obk/obk_05/main.c @@ -63,7 +63,7 @@ EvtScript N(EVS_ManageRetroJar) = { IfEq(MF_IsRetroMario, FALSE) Call(PlaySoundAtPlayer, SOUND_JUMP_8BIT_MARIO, SOUND_SPACE_DEFAULT) Call(Disable8bitMario, FALSE) - Call(SetMusicTrack, 0, SONG_CHAPTER_START, 1, 8) + Call(SetMusic, 0, SONG_CHAPTER_START, BGM_VARIATION_1, VOL_LEVEL_FULL) Set(MF_IsRetroMario, TRUE) Else Call(PlaySoundAtPlayer, SOUND_QUICK_PLAYER_JUMP, SOUND_SPACE_DEFAULT) diff --git a/src/world/area_obk/obk_05/music.c b/src/world/area_obk/obk_05/music.c index 2dcd4371a8..6a88ef033c 100644 --- a/src/world/area_obk/obk_05/music.c +++ b/src/world/area_obk/obk_05/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_CHEERFUL_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_CHEERFUL_BOOS_MANSION, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_obk/obk_06/music.c b/src/world/area_obk/obk_06/music.c index 5fe52f53c6..88ce9db98e 100644 --- a/src/world/area_obk/obk_06/music.c +++ b/src/world/area_obk/obk_06/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_CHEERFUL_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_CHEERFUL_BOOS_MANSION, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_obk/obk_07/music.c b/src/world/area_obk/obk_07/music.c index 91be012602..fcf1ab93c2 100644 --- a/src/world/area_obk/obk_07/music.c +++ b/src/world/area_obk/obk_07/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_CHEERFUL_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_CHEERFUL_BOOS_MANSION, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_obk/obk_07/phonograph.c b/src/world/area_obk/obk_07/phonograph.c index f5cfdf891f..144a9ba0a8 100644 --- a/src/world/area_obk/obk_07/phonograph.c +++ b/src/world/area_obk/obk_07/phonograph.c @@ -370,7 +370,7 @@ API_CALLABLE(N(CreatePhonographHudData)) { } API_CALLABLE(N(PlayRecordSong)) { - bgm_set_song(0, N(SongList)[evt_get_variable(script, GB_OBK07_SelectedRecord)], 0, 500, 8); + bgm_set_song(0, N(SongList)[evt_get_variable(script, GB_OBK07_SelectedRecord)], 0, 500, VOL_LEVEL_FULL); return ApiStatus_DONE2; } @@ -381,7 +381,7 @@ API_CALLABLE(N(SavePhonographUpdateScriptIDs)) { data->updateScaleScriptID = evt_get_variable(NULL, MV_UpdateScaleScript); data->updateCrankScriptID = evt_get_variable(NULL, MV_UpdateCrankScript); data->updateRecordScriptID = evt_get_variable(NULL, MV_UpdateRecordScript); - data->songName = gMusicSettings->songName; + data->songName = gMusicControlData->songName; return ApiStatus_DONE2; } diff --git a/src/world/area_obk/obk_08/game.c b/src/world/area_obk/obk_08/game.c index dd574518da..7d487bfccb 100644 --- a/src/world/area_obk/obk_08/game.c +++ b/src/world/area_obk/obk_08/game.c @@ -166,7 +166,7 @@ EvtScript N(EVS_BooSpookAndVanish) = { EvtScript N(EVS_Scene_BoosUnleashed) = { Call(DisablePlayerInput, TRUE) Call(InterruptUsePartner) - Call(SetMusicTrack, 0, SONG_BOO_MINIGAME, 0, 8) + Call(SetMusic, 0, SONG_BOO_MINIGAME, 0, VOL_LEVEL_FULL) Wait(20) Call(InterpPlayerYaw, 90, 0) Wait(20) diff --git a/src/world/area_obk/obk_08/music.c b/src/world/area_obk/obk_08/music.c index f20a52426e..611d0be0bb 100644 --- a/src/world/area_obk/obk_08/music.c +++ b/src/world/area_obk/obk_08/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_CHEERFUL_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_CHEERFUL_BOOS_MANSION, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_obk/obk_09/meet_bow.c b/src/world/area_obk/obk_09/meet_bow.c index 311dfd7ac8..bce6c0d1d9 100644 --- a/src/world/area_obk/obk_09/meet_bow.c +++ b/src/world/area_obk/obk_09/meet_bow.c @@ -10,7 +10,7 @@ EvtScript N(EVS_Scene_MeetBow) = { EndIf Set(GB_StoryProgress, STORY_CH3_BOW_JOINED_PARTY) Call(DisablePlayerInput, TRUE) - Call(SetMusicTrack, 0, SONG_CHEERFUL_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_CHEERFUL_BOOS_MANSION, 0, VOL_LEVEL_FULL) Thread Wait(10 * DT) Call(SetPlayerPos, -180, 0, 344) diff --git a/src/world/area_obk/obk_09/music.c b/src/world/area_obk/obk_09/music.c index 251b938d98..cf056f5cee 100644 --- a/src/world/area_obk/obk_09/music.c +++ b/src/world/area_obk/obk_09/music.c @@ -2,16 +2,16 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH3_DEFEATED_TUBBA_BLUBBA) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_CHEERFUL_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_CHEERFUL_BOOS_MANSION, 0, VOL_LEVEL_FULL) EndIf Return End }; EvtScript N(EVS_PlayNewPartnerSong) = { - Call(SetMusicTrack, 0, SONG_NEW_PARTNER, 0, 8) + Call(SetMusic, 0, SONG_NEW_PARTNER, 0, VOL_LEVEL_FULL) Return End }; @@ -19,7 +19,7 @@ EvtScript N(EVS_PlayNewPartnerSong) = { EvtScript N(EVS_ResetMusic) = { Call(FadeOutMusic, 0, 500) Wait(15) - Call(SetMusicTrack, 0, SONG_BOOS_MANSION, 0, 8) + Call(SetMusic, 0, SONG_BOOS_MANSION, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_omo/common/ToyTrain.inc.c b/src/world/area_omo/common/ToyTrain.inc.c index 3c852fa38f..a1a6f05324 100644 --- a/src/world/area_omo/common/ToyTrain.inc.c +++ b/src/world/area_omo/common/ToyTrain.inc.c @@ -378,7 +378,7 @@ EvtScript N(EVS_TrainUnk_D) = { Call(InterpNpcYaw, NPC_Conductor, LVarA, 0) Call(SpeakToPlayer, NPC_Conductor, ANIM_TrainToad_Talk, ANIM_TrainToad_Idle, 5, MSG_CH4_0009) Call(PlaySound, SOUND_LRAW_TOYBOX_TRAIN_GEAR) - Call(SetMusicTrack, 0, SONG_TOYBOX_TRAIN, 0, 8) + Call(SetMusic, 0, SONG_TOYBOX_TRAIN, 0, VOL_LEVEL_FULL) Wait(10) Return End @@ -442,7 +442,7 @@ EvtScript N(EVS_TrainUnk_AltD) = { Call(InterpNpcYaw, NPC_Conductor, LVarA, 0) Call(SpeakToPlayer, NPC_Conductor, ANIM_TrainToad_Talk, ANIM_TrainToad_Idle, 5, MSG_CH4_0009) Call(PlaySound, SOUND_LRAW_TOYBOX_TRAIN_GEAR) - Call(SetMusicTrack, 0, SONG_TOYBOX_TRAIN, 0, 8) + Call(SetMusic, 0, SONG_TOYBOX_TRAIN, 0, VOL_LEVEL_FULL) Wait(10) Return End @@ -451,7 +451,7 @@ EvtScript N(EVS_TrainUnk_AltD) = { EvtScript N(EVS_TrainUnk_E) = { Call(StopSound, SOUND_LRAW_TOYBOX_TRAIN_GEAR) - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Call(SetNpcFlagBits, NPC_Conductor, NPC_FLAG_IGNORE_WORLD_COLLISION | NPC_FLAG_IGNORE_PLAYER_COLLISION, TRUE) Call(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_IGNORE_WORLD_COLLISION | NPC_FLAG_IGNORE_PLAYER_COLLISION, TRUE) SetF(LVar0, MV_TrainPos) @@ -498,7 +498,7 @@ EvtScript N(EVS_TrainUnk_E) = { #ifdef INCLUDE_ALTERNATES EvtScript N(EVS_TrainUnk_AltE) = { Call(StopSound, SOUND_LRAW_TOYBOX_TRAIN_GEAR) - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Call(SetNpcFlagBits, NPC_Conductor, NPC_FLAG_IGNORE_WORLD_COLLISION | NPC_FLAG_IGNORE_PLAYER_COLLISION, TRUE) Call(SetNpcFlagBits, NPC_PARTNER, NPC_FLAG_IGNORE_WORLD_COLLISION | NPC_FLAG_IGNORE_PLAYER_COLLISION, TRUE) Set(AF_OMO_06, TRUE) diff --git a/src/world/area_omo/omo_01/music.c b/src/world/area_omo/omo_01/music.c index dfffeb5deb..bd83877ce7 100644 --- a/src/world/area_omo/omo_01/music.c +++ b/src/world/area_omo/omo_01/music.c @@ -1,7 +1,7 @@ #include "omo_01.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_omo/omo_02/music.c b/src/world/area_omo/omo_02/music.c index 4a9dc79594..c93dbab941 100644 --- a/src/world/area_omo/omo_02/music.c +++ b/src/world/area_omo/omo_02/music.c @@ -1,7 +1,7 @@ #include "omo_02.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_omo/omo_03/music.c b/src/world/area_omo/omo_03/music.c index be201869e3..8687c4800b 100644 --- a/src/world/area_omo/omo_03/music.c +++ b/src/world/area_omo/omo_03/music.c @@ -3,16 +3,16 @@ EvtScript N(EVS_SetupMusic) = { Call(GetLoadType, LVar1) IfEq(LVar1, LOAD_FROM_FILE_SELECT) - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Else Call(GetEntryID, LVar0) Switch(LVar0) CaseRange(omo_03_ENTRY_2, omo_03_ENTRY_3) - Call(SetMusicTrack, 0, SONG_TOYBOX_TRAIN, 0, 8) + Call(SetMusic, 0, SONG_TOYBOX_TRAIN, 0, VOL_LEVEL_FULL) CaseEq(omo_03_ENTRY_5) Call(FadeInMusic, 0, SONG_SHY_GUY_TOYBOX, 0, 3000, 0, 127) CaseDefault - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) EndSwitch EndIf Return diff --git a/src/world/area_omo/omo_04/music.c b/src/world/area_omo/omo_04/music.c index 1bb5fc02e4..b2567c0ae1 100644 --- a/src/world/area_omo/omo_04/music.c +++ b/src/world/area_omo/omo_04/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfEq(GF_OMO04_SpawnedPeachChoice1, FALSE) - Call(SetMusicTrack, 0, SONG_KAMMY_KOOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_KAMMY_KOOPA_THEME, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_omo/omo_05/music.c b/src/world/area_omo/omo_05/music.c index cc02c9a289..3496830690 100644 --- a/src/world/area_omo/omo_05/music.c +++ b/src/world/area_omo/omo_05/music.c @@ -1,7 +1,7 @@ #include "omo_05.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_omo/omo_05/npc.c b/src/world/area_omo/omo_05/npc.c index bbe60d90d0..74eef40df3 100644 --- a/src/world/area_omo/omo_05/npc.c +++ b/src/world/area_omo/omo_05/npc.c @@ -247,7 +247,7 @@ EvtScript N(EVS_NpcInteract_GourmetGuy) = { Call(WaitForCam, CAM_DEFAULT, Float(1.0)) Call(PlaySoundAtNpc, NPC_SELF, SOUND_GOURMET_GUY_SHOCK_3, SOUND_SPACE_DEFAULT) Wait(18 * DT) - Call(SetMusicTrack, 0, SONG_GOURMET_GUY_FREAKOUT, 0, 8) + Call(SetMusic, 0, SONG_GOURMET_GUY_FREAKOUT, 0, VOL_LEVEL_FULL) Wait(30 * DT) Call(SetMotionBlurParams, 0, 0, 0, 320, 240, 128, 10) Loop(7) diff --git a/src/world/area_omo/omo_06/music.c b/src/world/area_omo/omo_06/music.c index aea692528b..1eaf3468e6 100644 --- a/src/world/area_omo/omo_06/music.c +++ b/src/world/area_omo/omo_06/music.c @@ -3,14 +3,14 @@ EvtScript N(EVS_SetupMusic) = { Call(GetLoadType, LVar1) IfEq(LVar1, LOAD_FROM_FILE_SELECT) - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Else Call(GetEntryID, LVar0) Switch(LVar0) CaseRange(omo_06_ENTRY_2, omo_06_ENTRY_3) - Call(SetMusicTrack, 0, SONG_TOYBOX_TRAIN, 0, 8) + Call(SetMusic, 0, SONG_TOYBOX_TRAIN, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) EndSwitch EndIf Return diff --git a/src/world/area_omo/omo_07/music.c b/src/world/area_omo/omo_07/music.c index 668806468f..d71e754edc 100644 --- a/src/world/area_omo/omo_07/music.c +++ b/src/world/area_omo/omo_07/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfEq(GF_OMO07_SpawnedPeachChoice2, FALSE) - Call(SetMusicTrack, 0, SONG_KAMMY_KOOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_KAMMY_KOOPA_THEME, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_omo/omo_08/music.c b/src/world/area_omo/omo_08/music.c index 3f1cfcb45e..77bbc26419 100644 --- a/src/world/area_omo/omo_08/music.c +++ b/src/world/area_omo/omo_08/music.c @@ -3,13 +3,13 @@ EvtScript N(EVS_SetupMusic) = { Call(GetLoadType, LVar1) IfEq(LVar1, LOAD_FROM_FILE_SELECT) - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Else Call(GetEntryID, LVar0) IfEq(LVar0, omo_08_ENTRY_0) - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_TOYBOX_TRAIN, 0, 8) + Call(SetMusic, 0, SONG_TOYBOX_TRAIN, 0, VOL_LEVEL_FULL) EndIf EndIf Return diff --git a/src/world/area_omo/omo_09/music.c b/src/world/area_omo/omo_09/music.c index c5c26a51c6..7ced3691af 100644 --- a/src/world/area_omo/omo_09/music.c +++ b/src/world/area_omo/omo_09/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfEq(GF_OMO09_SpawnedPeachChoice3, FALSE) - Call(SetMusicTrack, 0, SONG_KAMMY_KOOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_KAMMY_KOOPA_THEME, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_omo/omo_10/music.c b/src/world/area_omo/omo_10/music.c index 349e1fd750..52b9ab5d56 100644 --- a/src/world/area_omo/omo_10/music.c +++ b/src/world/area_omo/omo_10/music.c @@ -3,14 +3,14 @@ EvtScript N(EVS_SetupMusic) = { Call(GetLoadType, LVar1) IfEq(LVar1, LOAD_FROM_FILE_SELECT) - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Else Call(GetEntryID, LVar0) Switch(LVar0) CaseRange(omo_10_ENTRY_0, omo_10_ENTRY_1) - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TOYBOX_TRAIN, 0, 8) + Call(SetMusic, 0, SONG_TOYBOX_TRAIN, 0, VOL_LEVEL_FULL) EndSwitch EndIf Return diff --git a/src/world/area_omo/omo_11/music.c b/src/world/area_omo/omo_11/music.c index 785017d844..facd2c3666 100644 --- a/src/world/area_omo/omo_11/music.c +++ b/src/world/area_omo/omo_11/music.c @@ -1,7 +1,7 @@ #include "omo_11.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_omo/omo_12/music.c b/src/world/area_omo/omo_12/music.c index 60059ec7b7..a5895d3d11 100644 --- a/src/world/area_omo/omo_12/music.c +++ b/src/world/area_omo/omo_12/music.c @@ -2,7 +2,7 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH4_DEFEATED_LANTERN_GHOST) - Call(SetMusicTrack, 0, SONG_CREEPY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_CREEPY_TOYBOX, 0, VOL_LEVEL_FULL) Thread Loop(0) Wait(1) @@ -10,10 +10,10 @@ EvtScript N(EVS_SetupMusic) = { BreakLoop EndIf EndLoop - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) EndThread Else - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/area_omo/omo_13/music.c b/src/world/area_omo/omo_13/music.c index 0aed77396e..6a47abc925 100644 --- a/src/world/area_omo/omo_13/music.c +++ b/src/world/area_omo/omo_13/music.c @@ -1,7 +1,7 @@ #include "omo_13.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_omo/omo_14/music.c b/src/world/area_omo/omo_14/music.c index 4ac8ed3211..e5a4f4212c 100644 --- a/src/world/area_omo/omo_14/music.c +++ b/src/world/area_omo/omo_14/music.c @@ -1,7 +1,7 @@ #include "omo_14.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_omo/omo_15/music.c b/src/world/area_omo/omo_15/music.c index 00749bbbad..d7f9e57479 100644 --- a/src/world/area_omo/omo_15/music.c +++ b/src/world/area_omo/omo_15/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH4_DEFEATED_GENERAL_GUY) - Call(SetMusicTrack, 0, SONG_GENERAL_GUY_THEME, 0, 8) + Call(SetMusic, 0, SONG_GENERAL_GUY_THEME, 0, VOL_LEVEL_FULL) CaseEq(STORY_CH4_DEFEATED_GENERAL_GUY) Call(FadeOutMusic, 0, 500) CaseDefault - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_omo/omo_15/npc.c b/src/world/area_omo/omo_15/npc.c index 91f5b26608..cd0f4e8c70 100644 --- a/src/world/area_omo/omo_15/npc.c +++ b/src/world/area_omo/omo_15/npc.c @@ -372,7 +372,7 @@ EvtScript N(EVS_NpcDefeat_GeneralGuy) = { Call(GetBattleOutcome, LVar0) Switch(LVar0) CaseEq(OUTCOME_PLAYER_WON) - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Call(GetSelfNpcID, LVar0) IfEq(LVar0, NPC_GeneralGuy) Call(SetEncounterStatusFlags, ENCOUNTER_FLAG_CANT_SKIP_WIN_DELAY, TRUE) diff --git a/src/world/area_omo/omo_16/main.c b/src/world/area_omo/omo_16/main.c index b163c64707..98d4aae3e7 100644 --- a/src/world/area_omo/omo_16/main.c +++ b/src/world/area_omo/omo_16/main.c @@ -5,7 +5,7 @@ EvtScript N(EVS_Main) = { Call(SetSpriteShading, SHADING_NONE) EVT_SETUP_CAMERA_DEFAULT() Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) - Call(SetMusicTrack, 0, SONG_TOYBOX_TRAIN, 0, 8) + Call(SetMusic, 0, SONG_TOYBOX_TRAIN, 0, VOL_LEVEL_FULL) ExecWait(N(EVS_802429C4)) Wait(3) Return diff --git a/src/world/area_omo/omo_17/main.c b/src/world/area_omo/omo_17/main.c index 29fcc148f5..105ed59099 100644 --- a/src/world/area_omo/omo_17/main.c +++ b/src/world/area_omo/omo_17/main.c @@ -21,7 +21,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) ExecWait(N(EVS_SetupGizmos)) - Call(SetMusicTrack, 0, SONG_SHY_GUY_TOYBOX, 0, 8) + Call(SetMusic, 0, SONG_SHY_GUY_TOYBOX, 0, VOL_LEVEL_FULL) Call(GetEntryID, LVar0) Switch(LVar0) CaseRange(omo_17_ENTRY_4, omo_17_ENTRY_5) diff --git a/src/world/area_osr/osr_00/music.c b/src/world/area_osr/osr_00/music.c index e147cfee55..f6ad5f0a19 100644 --- a/src/world/area_osr/osr_00/music.c +++ b/src/world/area_osr/osr_00/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseEq(STORY_INTRO) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 1, 8) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, BGM_VARIATION_1, VOL_LEVEL_FULL) CaseEq(STORY_EPILOGUE) - Call(SetMusicTrack, 0, SONG_PEACHS_CASTLE_PARTY, 0, 8) + Call(SetMusic, 0, SONG_PEACHS_CASTLE_PARTY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_TOAD_TOWN, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN, 0, VOL_LEVEL_FULL) EndSwitch Call(GetEntryID, LVar0) IfEq(LVar0, osr_00_ENTRY_3) diff --git a/src/world/area_osr/osr_01/music.c b/src/world/area_osr/osr_01/music.c index 790d97c84c..752147d678 100644 --- a/src/world/area_osr/osr_01/music.c +++ b/src/world/area_osr/osr_01/music.c @@ -4,9 +4,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseRange(STORY_CH3_STAR_SPRIT_DEPARTED, STORY_CH4_STAR_SPIRIT_RESCUED) - Call(SetMusicTrack, 0, SONG_SHY_GUY_INVASION, 0, 6) + Call(SetMusic, 0, SONG_SHY_GUY_INVASION, 0, VOL_LEVEL_6) CaseDefault - Call(SetMusicTrack, 0, SONG_TOAD_TOWN, 0, 6) + Call(SetMusic, 0, SONG_TOAD_TOWN, 0, VOL_LEVEL_6) EndSwitch Return End @@ -15,7 +15,7 @@ EvtScript N(EVS_SetupMusic) = { EvtScript N(EVS_PlaySong_Starship) = { Call(GetEntryID, LVar0) IfEq(LVar0, osr_01_ENTRY_3) - Call(SetMusicTrack, 0, SONG_STARSHIP_THEME, 0, 8) + Call(SetMusic, 0, SONG_STARSHIP_THEME, 0, VOL_LEVEL_FULL) Else Exec(N(EVS_SetupMusic)) EndIf diff --git a/src/world/area_osr/osr_02/npc.c b/src/world/area_osr/osr_02/npc.c index 4858bccccd..cce6353c3e 100644 --- a/src/world/area_osr/osr_02/npc.c +++ b/src/world/area_osr/osr_02/npc.c @@ -122,7 +122,7 @@ EvtScript N(EVS_Twink_FlyAway) = { EvtScript N(EVS_Scene_ReturnStarRod) = { Call(DisablePlayerInput, TRUE) Call(DisablePartnerAI, 0) - Call(SetMusicTrack, 0, SONG_STAR_SPIRIT_THEME, 2, 8) + Call(SetMusic, 0, SONG_STAR_SPIRIT_THEME, BGM_VARIATION_2, VOL_LEVEL_FULL) Call(SetPlayerPos, 15, 0, 30) Call(InterpPlayerYaw, 90, 0) Call(GetNpcPos, NPC_PARTNER, LVar0, LVar1, LVar2) @@ -307,7 +307,7 @@ EvtScript N(EVS_Scene_ReturnStarRod) = { ExecWait(N(EVS_StarSpirit_FlyAway)) Call(SetPlayerAnimation, ANIM_Mario1_Idle) Wait(20) - Call(SetMusicTrack, 0, SONG_TWINK_THEME, 1, 8) + Call(SetMusic, 0, SONG_TWINK_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(LoadPath, 30, Ref(N(FlightPath_TwinkStepForward)), ARRAY_COUNT(N(FlightPath_TwinkStepForward)), EASING_LINEAR) Loop(0) Call(GetNextPathPos) diff --git a/src/world/area_osr/osr_03/intro.c b/src/world/area_osr/osr_03/intro.c index e77274568c..59eb83f334 100644 --- a/src/world/area_osr/osr_03/intro.c +++ b/src/world/area_osr/osr_03/intro.c @@ -199,7 +199,7 @@ EvtScript N(EVS_8024134C) = { }; EvtScript N(MV_Scene_CastleAscending) = { - Call(SetMusicTrack, 0, SONG_BOWSER_ATTACKS, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_ATTACKS, 0, VOL_LEVEL_FULL) Call(DisablePlayerInput, TRUE) Call(DisablePlayerPhysics, TRUE) Call(SetPlayerPos, 0, 0, 2000) diff --git a/src/world/area_osr/osr_03/main.c b/src/world/area_osr/osr_03/main.c index f06f05e444..1ef2673feb 100644 --- a/src/world/area_osr/osr_03/main.c +++ b/src/world/area_osr/osr_03/main.c @@ -59,16 +59,16 @@ EvtScript N(EVS_Main) = { CaseOrEq(STORY_CH1_STAR_SPIRIT_RESCUED) CaseOrEq(STORY_CH3_STAR_SPIRIT_RESCUED) Call(ClearAmbientSounds, 250) - Call(SetMusicTrack, 0, SONG_PRISONER_PEACH_THEME, 0, 8) + Call(SetMusic, 0, SONG_PRISONER_PEACH_THEME, 0, VOL_LEVEL_FULL) EndCaseGroup CaseEq(STORY_CH2_STAR_SPIRIT_RESCUED) Call(ClearAmbientSounds, 250) - Call(SetMusicTrack, 0, SONG_BOWSER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_THEME, 0, VOL_LEVEL_FULL) CaseOrEq(STORY_CH4_STAR_SPIRIT_RESCUED) CaseOrEq(STORY_CH5_OPENED_ESCAPE_ROUTE) CaseOrEq(STORY_CH6_STAR_SPIRIT_RESCUED) Call(ClearAmbientSounds, 250) - Call(SetMusicTrack, 0, SONG_PEACH_MISSION, 0, 8) + Call(SetMusic, 0, SONG_PEACH_MISSION, 0, VOL_LEVEL_FULL) EndCaseGroup CaseEq(STORY_CH7_STAR_SPIRIT_RESCUED) Call(ClearAmbientSounds, 250) @@ -76,7 +76,7 @@ EvtScript N(EVS_Main) = { CaseDefault IfEq(GF_KKJ25_Defeated_Bowser, FALSE) Else - Call(SetMusicTrack, 0, SONG_BOWSERS_CASTLE_FALLS, 0, 8) + Call(SetMusic, 0, SONG_BOWSERS_CASTLE_FALLS, 0, VOL_LEVEL_FULL) EndIf EndSwitch Exec(N(EVS_EnterMap)) diff --git a/src/world/area_osr/osr_04/assault.c b/src/world/area_osr/osr_04/assault.c index d7bb00e41d..2ebefba713 100644 --- a/src/world/area_osr/osr_04/assault.c +++ b/src/world/area_osr/osr_04/assault.c @@ -250,7 +250,7 @@ EvtScript N(EVS_AnimateSpinningRing) = { EvtScript N(EVS_LiftCastleUp) = { Thread Wait(120 * DT) - Call(SetMusicTrack, 0, SONG_BOWSER_ATTACKS, 0, 8) + Call(SetMusic, 0, SONG_BOWSER_ATTACKS, 0, VOL_LEVEL_FULL) EndThread Set(MV_CastleLiftDist, 0) Thread diff --git a/src/world/area_pra/pra_01/music.c b/src/world/area_pra/pra_01/music.c index 0a8b9caa73..d2fcab1937 100644 --- a/src/world/area_pra/pra_01/music.c +++ b/src/world/area_pra/pra_01/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfEq(GB_StoryProgress, STORY_CH7_BEGAN_PEACH_MISSION) - Call(SetMusicTrack, 0, SONG_STAR_SPIRIT_THEME, 1, 8) + Call(SetMusic, 0, SONG_STAR_SPIRIT_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_SHIVER_MOUNTAIN, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_MOUNTAIN, 0, VOL_LEVEL_FULL) EndIf Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return diff --git a/src/world/area_pra/pra_02/music.c b/src/world/area_pra/pra_02/music.c index 87804ff20d..641074cec9 100644 --- a/src/world/area_pra/pra_02/music.c +++ b/src/world/area_pra/pra_02/music.c @@ -1,7 +1,7 @@ #include "pra_02.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_pra/pra_03/music.c b/src/world/area_pra/pra_03/music.c index aa7de5f467..82c9b10c63 100644 --- a/src/world/area_pra/pra_03/music.c +++ b/src/world/area_pra/pra_03/music.c @@ -1,7 +1,7 @@ #include "pra_03.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_04/music.c b/src/world/area_pra/pra_04/music.c index c0646d494e..cfbbd70943 100644 --- a/src/world/area_pra/pra_04/music.c +++ b/src/world/area_pra/pra_04/music.c @@ -1,7 +1,7 @@ #include "pra_04.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_05/music.c b/src/world/area_pra/pra_05/music.c index fd4a38f0c5..1da090c2a6 100644 --- a/src/world/area_pra/pra_05/music.c +++ b/src/world/area_pra/pra_05/music.c @@ -1,7 +1,7 @@ #include "pra_05.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_06/music.c b/src/world/area_pra/pra_06/music.c index 4ce1c18b69..1ff6069c52 100644 --- a/src/world/area_pra/pra_06/music.c +++ b/src/world/area_pra/pra_06/music.c @@ -1,7 +1,7 @@ #include "pra_06.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_09/music.c b/src/world/area_pra/pra_09/music.c index f977530911..d1ec34137f 100644 --- a/src/world/area_pra/pra_09/music.c +++ b/src/world/area_pra/pra_09/music.c @@ -1,7 +1,7 @@ #include "pra_09.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_10/music.c b/src/world/area_pra/pra_10/music.c index 57c46e1757..c925c7a372 100644 --- a/src/world/area_pra/pra_10/music.c +++ b/src/world/area_pra/pra_10/music.c @@ -1,7 +1,7 @@ #include "pra_10.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_11/music.c b/src/world/area_pra/pra_11/music.c index 11bd363635..c2d3f13b0e 100644 --- a/src/world/area_pra/pra_11/music.c +++ b/src/world/area_pra/pra_11/music.c @@ -1,7 +1,7 @@ #include "pra_11.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_12/music.c b/src/world/area_pra/pra_12/music.c index 9863f2ec35..ec710dcbe1 100644 --- a/src/world/area_pra/pra_12/music.c +++ b/src/world/area_pra/pra_12/music.c @@ -1,7 +1,7 @@ #include "pra_12.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_13/music.c b/src/world/area_pra/pra_13/music.c index 5f478201ae..e6faded54e 100644 --- a/src/world/area_pra/pra_13/music.c +++ b/src/world/area_pra/pra_13/music.c @@ -1,7 +1,7 @@ #include "pra_13.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_pra/pra_14/music.c b/src/world/area_pra/pra_14/music.c index 76f2ad0220..0b4d49da1f 100644 --- a/src/world/area_pra/pra_14/music.c +++ b/src/world/area_pra/pra_14/music.c @@ -1,7 +1,7 @@ #include "pra_14.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_15/music.c b/src/world/area_pra/pra_15/music.c index 0ab09f24a4..491bb88bca 100644 --- a/src/world/area_pra/pra_15/music.c +++ b/src/world/area_pra/pra_15/music.c @@ -1,7 +1,7 @@ #include "pra_15.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHIVER_MOUNTAIN, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_MOUNTAIN, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_16/music.c b/src/world/area_pra/pra_16/music.c index 3b9dcdefd2..d0b05f0117 100644 --- a/src/world/area_pra/pra_16/music.c +++ b/src/world/area_pra/pra_16/music.c @@ -1,7 +1,7 @@ #include "pra_16.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_pra/pra_18/music.c b/src/world/area_pra/pra_18/music.c index bcb92ea253..81d772b76a 100644 --- a/src/world/area_pra/pra_18/music.c +++ b/src/world/area_pra/pra_18/music.c @@ -1,7 +1,7 @@ #include "pra_18.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_19/music.c b/src/world/area_pra/pra_19/music.c index 49d305f742..e7b50297d7 100644 --- a/src/world/area_pra/pra_19/music.c +++ b/src/world/area_pra/pra_19/music.c @@ -1,7 +1,7 @@ #include "pra_19.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_20/music.c b/src/world/area_pra/pra_20/music.c index 52fa5d7876..bdc8f8299d 100644 --- a/src/world/area_pra/pra_20/music.c +++ b/src/world/area_pra/pra_20/music.c @@ -1,7 +1,7 @@ #include "pra_20.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_21/music.c b/src/world/area_pra/pra_21/music.c index 9267980401..2c41581b02 100644 --- a/src/world/area_pra/pra_21/music.c +++ b/src/world/area_pra/pra_21/music.c @@ -1,7 +1,7 @@ #include "pra_21.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_22/music.c b/src/world/area_pra/pra_22/music.c index d36a1fe359..6347a76138 100644 --- a/src/world/area_pra/pra_22/music.c +++ b/src/world/area_pra/pra_22/music.c @@ -1,7 +1,7 @@ #include "pra_22.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_27/music.c b/src/world/area_pra/pra_27/music.c index b3e61ae1c7..7b957b67ab 100644 --- a/src/world/area_pra/pra_27/music.c +++ b/src/world/area_pra/pra_27/music.c @@ -1,7 +1,7 @@ #include "pra_27.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_28/music.c b/src/world/area_pra/pra_28/music.c index a0e5f10f90..083564fdd6 100644 --- a/src/world/area_pra/pra_28/music.c +++ b/src/world/area_pra/pra_28/music.c @@ -1,7 +1,7 @@ #include "pra_28.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_29/music.c b/src/world/area_pra/pra_29/music.c index 9b117bf68c..50fc70276e 100644 --- a/src/world/area_pra/pra_29/music.c +++ b/src/world/area_pra/pra_29/music.c @@ -1,7 +1,7 @@ #include "pra_29.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_31/music.c b/src/world/area_pra/pra_31/music.c index 126a746149..46c8bef20f 100644 --- a/src/world/area_pra/pra_31/music.c +++ b/src/world/area_pra/pra_31/music.c @@ -1,7 +1,7 @@ #include "pra_31.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_32/music.c b/src/world/area_pra/pra_32/music.c index 3338d39242..f2fb84fcde 100644 --- a/src/world/area_pra/pra_32/music.c +++ b/src/world/area_pra/pra_32/music.c @@ -4,7 +4,7 @@ EvtScript N(EVS_SetupMusic) = { IfEq(GB_StoryProgress, STORY_CH7_DEFEATED_CRYSTAL_KING) Call(FadeOutMusic, 0, 500) Else - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) EndIf Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return diff --git a/src/world/area_pra/pra_32/npc.c b/src/world/area_pra/pra_32/npc.c index 65a543f34a..0ea187f343 100644 --- a/src/world/area_pra/pra_32/npc.c +++ b/src/world/area_pra/pra_32/npc.c @@ -49,7 +49,7 @@ EvtScript N(EVS_Scene_CrystalKingAppears) = { EndIf Call(DisablePlayerInput, TRUE) Call(InterruptUsePartner) - Call(SetMusicTrack, 0, SONG_CRYSTAL_KING_THEME, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_KING_THEME, 0, VOL_LEVEL_FULL) Call(ShowMessageAtScreenPos, MSG_CH7_016A, 160, 40) Call(SetNpcPos, NPC_CrystalKing_01, 588, 200, 116) Call(SetNpcImgFXParams, NPC_CrystalKing_01, IMGFX_SET_ALPHA, 0, 0, 0, 0) diff --git a/src/world/area_pra/pra_33/music.c b/src/world/area_pra/pra_33/music.c index 71af7e481d..d4daf0b0d1 100644 --- a/src/world/area_pra/pra_33/music.c +++ b/src/world/area_pra/pra_33/music.c @@ -1,7 +1,7 @@ #include "pra_33.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_34/music.c b/src/world/area_pra/pra_34/music.c index 7744921833..ff02e1cd11 100644 --- a/src/world/area_pra/pra_34/music.c +++ b/src/world/area_pra/pra_34/music.c @@ -1,7 +1,7 @@ #include "pra_34.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_35/music.c b/src/world/area_pra/pra_35/music.c index 6e49c7523e..8c9f01d3d0 100644 --- a/src/world/area_pra/pra_35/music.c +++ b/src/world/area_pra/pra_35/music.c @@ -1,7 +1,7 @@ #include "pra_35.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_36/music.c b/src/world/area_pra/pra_36/music.c index b19dd89ef8..cbe241b43a 100644 --- a/src/world/area_pra/pra_36/music.c +++ b/src/world/area_pra/pra_36/music.c @@ -1,7 +1,7 @@ #include "pra_36.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_37/music.c b/src/world/area_pra/pra_37/music.c index 2be8e456aa..c8f47d56c0 100644 --- a/src/world/area_pra/pra_37/music.c +++ b/src/world/area_pra/pra_37/music.c @@ -1,7 +1,7 @@ #include "pra_37.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_38/music.c b/src/world/area_pra/pra_38/music.c index 76d0f0bda9..8fa9eb98da 100644 --- a/src/world/area_pra/pra_38/music.c +++ b/src/world/area_pra/pra_38/music.c @@ -1,7 +1,7 @@ #include "pra_38.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_39/music.c b/src/world/area_pra/pra_39/music.c index f26cb5d336..20ef6e51f5 100644 --- a/src/world/area_pra/pra_39/music.c +++ b/src/world/area_pra/pra_39/music.c @@ -1,7 +1,7 @@ #include "pra_39.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_pra/pra_40/music.c b/src/world/area_pra/pra_40/music.c index 11e8aa3c9c..fec25d2c94 100644 --- a/src/world/area_pra/pra_40/music.c +++ b/src/world/area_pra/pra_40/music.c @@ -1,7 +1,7 @@ #include "pra_40.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_CRYSTAL_PALACE, 0, 8) + Call(SetMusic, 0, SONG_CRYSTAL_PALACE, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_BASIC) Return End diff --git a/src/world/area_sam/sam_01/music.c b/src/world/area_sam/sam_01/music.c index 8a06d6cc74..b635fad80f 100644 --- a/src/world/area_sam/sam_01/music.c +++ b/src/world/area_sam/sam_01/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH7_MAYOR_MURDER_MYSTERY) - Call(SetMusicTrack, 0, SONG_SHIVER_CITY, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_CITY, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH7_MAYOR_MURDER_SOLVED) - Call(SetMusicTrack, 0, SONG_PENGUIN_MYSTERY, 0, 8) + Call(SetMusic, 0, SONG_PENGUIN_MYSTERY, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH7_MAYOR_MURDER_SOLVED) - Call(SetMusicTrack, 0, SONG_SHIVER_CITY, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_CITY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_sam/sam_01/rooms.c b/src/world/area_sam/sam_01/rooms.c index dad744da99..675886f5d3 100644 --- a/src/world/area_sam/sam_01/rooms.c +++ b/src/world/area_sam/sam_01/rooms.c @@ -90,7 +90,7 @@ EvtScript N(EVS_RoomListener_MayorOffice) = { EndIf CaseEq(ROOM_UPDATE_ENTER_DONE) IfEq(GB_StoryProgress, STORY_CH7_HERRINGWAY_AT_MAYORS_HOUSE) - Call(SetMusicTrack, 0, SONG_PENGUIN_WHODUNIT, 1, 8) + Call(SetMusic, 0, SONG_PENGUIN_WHODUNIT, BGM_VARIATION_1, VOL_LEVEL_FULL) EndIf Set(AF_SAM_03, TRUE) CaseEq(ROOM_UPDATE_EXIT_END) diff --git a/src/world/area_sam/sam_01/scenes.c b/src/world/area_sam/sam_01/scenes.c index 119d21656c..98bb1f3043 100644 --- a/src/world/area_sam/sam_01/scenes.c +++ b/src/world/area_sam/sam_01/scenes.c @@ -126,7 +126,7 @@ EvtScript N(EVS_Scene_MysteryBegins) = { Call(SetNpcAnimation, NPC_MayorPenguinWife, ANIM_MayorPenguinWife_Inspect) Wait(35 * DT) Thread - Call(SetMusicTrack, 0, SONG_PENGUIN_WHODUNIT, 0, 8) + Call(SetMusic, 0, SONG_PENGUIN_WHODUNIT, 0, VOL_LEVEL_FULL) Call(SetNpcAnimation, NPC_MayorPenguinWife, ANIM_MayorPenguinWife_Horror) Set(MF_ContinueScene, FALSE) Call(SpeakToPlayer, NPC_MayorPenguinWife, ANIM_MayorPenguinWife_Horror, ANIM_MayorPenguinWife_Horror, 0, MSG_CH7_0006) @@ -532,7 +532,7 @@ EvtScript N(EVS_Scene_MysterySolved) = { Call(SetNpcJumpscale, NPC_MayorPenguin, Float(1.0)) Call(GetNpcPos, NPC_MayorPenguin, LVar0, LVar1, LVar2) Call(NpcJump0, NPC_MayorPenguin, LVar0, 0, LVar2, 10 * DT) - Call(SetMusicTrack, 0, SONG_PENGUIN_WAKES_UP, 0, 8) + Call(SetMusic, 0, SONG_PENGUIN_WAKES_UP, 0, VOL_LEVEL_FULL) Call(SpeakToPlayer, NPC_MayorPenguin, ANIM_MayorPenguin_Talk, ANIM_MayorPenguin_Idle, 0, MSG_CH7_0027) Call(InterpNpcYaw, NPC_MayorPenguin, 0, 0) Wait(20 * DT) diff --git a/src/world/area_sam/sam_02/music.c b/src/world/area_sam/sam_02/music.c index 704abecc99..0607a4f68a 100644 --- a/src/world/area_sam/sam_02/music.c +++ b/src/world/area_sam/sam_02/music.c @@ -3,18 +3,18 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH7_MAYOR_MURDER_MYSTERY) - Call(SetMusicTrack, 0, SONG_SHIVER_CITY, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_CITY, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH7_MAYOR_MURDER_SOLVED) - Call(SetMusicTrack, 0, SONG_PENGUIN_MYSTERY, 0, 8) + Call(SetMusic, 0, SONG_PENGUIN_MYSTERY, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH7_MAYOR_MURDER_SOLVED) - Call(SetMusicTrack, 0, SONG_SHIVER_CITY, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_CITY, 0, VOL_LEVEL_FULL) EndSwitch Return End }; EvtScript N(EVS_PlayRestingSong) = { - Call(SetMusicTrack, 0, SONG_TAKING_REST, 0, 8) + Call(SetMusic, 0, SONG_TAKING_REST, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_sam/sam_03/music.c b/src/world/area_sam/sam_03/music.c index f59eff8fbb..e7b84e98ff 100644 --- a/src/world/area_sam/sam_03/music.c +++ b/src/world/area_sam/sam_03/music.c @@ -1,7 +1,7 @@ #include "sam_03.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHIVER_SNOWFIELD, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_SNOWFIELD, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_sam/sam_03/npc1.c b/src/world/area_sam/sam_03/npc1.c index b3020cd1e0..f4454e13aa 100644 --- a/src/world/area_sam/sam_03/npc1.c +++ b/src/world/area_sam/sam_03/npc1.c @@ -21,7 +21,7 @@ EvtScript N(EVS_NpcIdle_JrTroopa) = { EndIf Call(InterruptUsePartner) Call(DisablePlayerInput, TRUE) - Call(SetMusicTrack, 0, SONG_JR_TROOPA_THEME, 0, 8) + Call(SetMusic, 0, SONG_JR_TROOPA_THEME, 0, VOL_LEVEL_FULL) Call(SpeakToPlayer, NPC_JrTroopa, ANIM_JrTroopa_Talk, ANIM_JrTroopa_Idle, 0, MSG_CH7_00D8) Call(SetNpcJumpscale, NPC_JrTroopa, Float(1.0)) Call(NpcJump0, NPC_JrTroopa, 520, 0, -68, 20 * DT) diff --git a/src/world/area_sam/sam_04/music.c b/src/world/area_sam/sam_04/music.c index 7f296e9521..d64c994350 100644 --- a/src/world/area_sam/sam_04/music.c +++ b/src/world/area_sam/sam_04/music.c @@ -1,7 +1,7 @@ #include "sam_04.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHIVER_SNOWFIELD, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_SNOWFIELD, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_sam/sam_05/music.c b/src/world/area_sam/sam_05/music.c index 56881a5cb4..d384174d2c 100644 --- a/src/world/area_sam/sam_05/music.c +++ b/src/world/area_sam/sam_05/music.c @@ -1,7 +1,7 @@ #include "sam_05.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHIVER_SNOWFIELD, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_SNOWFIELD, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_sam/sam_05/scenes.c b/src/world/area_sam/sam_05/scenes.c index 621df518e3..472f1675c0 100644 --- a/src/world/area_sam/sam_05/scenes.c +++ b/src/world/area_sam/sam_05/scenes.c @@ -11,7 +11,7 @@ EvtScript N(EVS_Scene_MonstarAppears) = { EndIf Call(DisablePlayerInput, TRUE) Call(InterruptUsePartner) - Call(SetMusicTrack, 0, SONG_MONSTAR_THEME, 0, 8) + Call(SetMusic, 0, SONG_MONSTAR_THEME, 0, VOL_LEVEL_FULL) Call(ShowMessageAtScreenPos, MSG_CH7_00E0, 160, 40) Call(SetNpcAnimation, NPC_SELF, ANIM_Monstar_Idle1) Call(SetNpcPos, NPC_Monstar, 635, 85, 0) @@ -75,7 +75,7 @@ EvtScript N(EVS_Scene_MonstarAppears) = { IfGt(LVar3, LVar0) Call(DisablePlayerInput, TRUE) Call(InterruptUsePartner) - Call(SetMusicTrack, 0, SONG_MONSTAR_THEME, 0, 8) + Call(SetMusic, 0, SONG_MONSTAR_THEME, 0, VOL_LEVEL_FULL) Goto(2) EndIf IfGt(LVar3, 420) diff --git a/src/world/area_sam/sam_06/music.c b/src/world/area_sam/sam_06/music.c index f0f3af2464..444508ad91 100644 --- a/src/world/area_sam/sam_06/music.c +++ b/src/world/area_sam/sam_06/music.c @@ -1,13 +1,13 @@ #include "sam_06.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_STARBORN_VALLEY, 0, 8) + Call(SetMusic, 0, SONG_STARBORN_VALLEY, 0, VOL_LEVEL_FULL) Return End }; EvtScript N(EVS_PlayRestingSong) = { - Call(SetMusicTrack, 0, SONG_TAKING_REST, 0, 8) + Call(SetMusic, 0, SONG_TAKING_REST, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_sam/sam_07/music.c b/src/world/area_sam/sam_07/music.c index 6d592dacbf..834200b7dc 100644 --- a/src/world/area_sam/sam_07/music.c +++ b/src/world/area_sam/sam_07/music.c @@ -1,7 +1,7 @@ #include "sam_07.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHIVER_MOUNTAIN, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_MOUNTAIN, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_sam/sam_08/music.c b/src/world/area_sam/sam_08/music.c index 86cebdaac7..37a840368f 100644 --- a/src/world/area_sam/sam_08/music.c +++ b/src/world/area_sam/sam_08/music.c @@ -1,7 +1,7 @@ #include "sam_08.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHIVER_MOUNTAIN, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_MOUNTAIN, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_sam/sam_09/music.c b/src/world/area_sam/sam_09/music.c index b38a2ee77b..f1bb14bd43 100644 --- a/src/world/area_sam/sam_09/music.c +++ b/src/world/area_sam/sam_09/music.c @@ -1,7 +1,7 @@ #include "sam_09.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHIVER_MOUNTAIN, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_MOUNTAIN, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_sam/sam_10/music.c b/src/world/area_sam/sam_10/music.c index ecd7c27681..47d3eb426b 100644 --- a/src/world/area_sam/sam_10/music.c +++ b/src/world/area_sam/sam_10/music.c @@ -1,7 +1,7 @@ #include "sam_10.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_SHIVER_MOUNTAIN, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_MOUNTAIN, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_sam/sam_11/music.c b/src/world/area_sam/sam_11/music.c index bd856d633e..d7f071abb2 100644 --- a/src/world/area_sam/sam_11/music.c +++ b/src/world/area_sam/sam_11/music.c @@ -3,11 +3,11 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH7_MAYOR_MURDER_MYSTERY) - Call(SetMusicTrack, 0, SONG_SHIVER_CITY, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_CITY, 0, VOL_LEVEL_FULL) CaseLt(STORY_CH7_MAYOR_MURDER_SOLVED) - Call(SetMusicTrack, 0, SONG_PENGUIN_MYSTERY, 0, 8) + Call(SetMusic, 0, SONG_PENGUIN_MYSTERY, 0, VOL_LEVEL_FULL) CaseGe(STORY_CH7_MAYOR_MURDER_SOLVED) - Call(SetMusicTrack, 0, SONG_SHIVER_CITY, 0, 8) + Call(SetMusic, 0, SONG_SHIVER_CITY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/area_sam/sam_12/music.c b/src/world/area_sam/sam_12/music.c index dfdeaf7447..fd2b344ec6 100644 --- a/src/world/area_sam/sam_12/music.c +++ b/src/world/area_sam/sam_12/music.c @@ -1,7 +1,7 @@ #include "sam_12.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_MERLAR_THEME, 0, 8) + Call(SetMusic, 0, SONG_MERLAR_THEME, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_sbk/sbk_00/main.c b/src/world/area_sbk/sbk_00/main.c index ef135c3cba..a21b20fda6 100644 --- a/src/world/area_sbk/sbk_00/main.c +++ b/src/world/area_sbk/sbk_00/main.c @@ -22,7 +22,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_01/main.c b/src/world/area_sbk/sbk_01/main.c index a467561d7f..fc2c7ad35f 100644 --- a/src/world/area_sbk/sbk_01/main.c +++ b/src/world/area_sbk/sbk_01/main.c @@ -41,7 +41,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_02/main.c b/src/world/area_sbk/sbk_02/main.c index ae8549862e..4a864381de 100644 --- a/src/world/area_sbk/sbk_02/main.c +++ b/src/world/area_sbk/sbk_02/main.c @@ -46,7 +46,7 @@ EvtScript N(EVS_Main) = { Set(MV_Unk_00, LVarF) EndIf IfEq(GB_StoryProgress, STORY_CH2_BEGAN_PEACH_MISSION) - Call(SetMusicTrack, 0, SONG_STAR_SPIRIT_THEME, 1, 8) + Call(SetMusic, 0, SONG_STAR_SPIRIT_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) Else Exec(N(EVS_SetupMusic)) EndIf diff --git a/src/world/area_sbk/sbk_02/music.c b/src/world/area_sbk/sbk_02/music.c index 0f508141fb..7ee6db6bf8 100644 --- a/src/world/area_sbk/sbk_02/music.c +++ b/src/world/area_sbk/sbk_02/music.c @@ -6,7 +6,7 @@ EvtScript N(EVS_SetupMusic) = { CaseOrEq(sbk_02_ENTRY_6) CaseOrEq(sbk_02_ENTRY_7) CaseDefault - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) EndCaseGroup EndSwitch Return diff --git a/src/world/area_sbk/sbk_02/ruins.c b/src/world/area_sbk/sbk_02/ruins.c index 643346500f..5a71471591 100644 --- a/src/world/area_sbk/sbk_02/ruins.c +++ b/src/world/area_sbk/sbk_02/ruins.c @@ -593,7 +593,7 @@ EvtScript N(EVS_OnInteract_Pedestal) = { Call(CloseChoicePopup) Set(GB_StoryProgress, STORY_CH2_UNCOVERED_DRY_DRY_RUINS) Call(N(HideSun)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_RUINS_APPEAR, 1, 8) + Call(SetMusic, 0, SONG_DRY_DRY_RUINS_APPEAR, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(UseSettingsFrom, CAM_DEFAULT, 0, 0, 0) Call(SetPanTarget, CAM_DEFAULT, 210, 0, 137) Call(SetCamPosA, CAM_DEFAULT, Float(150.0), Float(500.0)) diff --git a/src/world/area_sbk/sbk_03/main.c b/src/world/area_sbk/sbk_03/main.c index 8e4d5d2855..cacd60a63c 100644 --- a/src/world/area_sbk/sbk_03/main.c +++ b/src/world/area_sbk/sbk_03/main.c @@ -41,7 +41,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_04/main.c b/src/world/area_sbk/sbk_04/main.c index 7eeebdc6f0..a7953c1c4b 100644 --- a/src/world/area_sbk/sbk_04/main.c +++ b/src/world/area_sbk/sbk_04/main.c @@ -41,7 +41,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_05/main.c b/src/world/area_sbk/sbk_05/main.c index 16bd8b08ee..cf332db63a 100644 --- a/src/world/area_sbk/sbk_05/main.c +++ b/src/world/area_sbk/sbk_05/main.c @@ -57,7 +57,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Exec(N(D_80240268_930F58)) Wait(1) Return diff --git a/src/world/area_sbk/sbk_06/main.c b/src/world/area_sbk/sbk_06/main.c index 62557e525b..92b354bb11 100644 --- a/src/world/area_sbk/sbk_06/main.c +++ b/src/world/area_sbk/sbk_06/main.c @@ -42,7 +42,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Exec(N(EVS_SetupFoliage)) diff --git a/src/world/area_sbk/sbk_10/main.c b/src/world/area_sbk/sbk_10/main.c index 3b096201d7..5c3f9050f1 100644 --- a/src/world/area_sbk/sbk_10/main.c +++ b/src/world/area_sbk/sbk_10/main.c @@ -41,7 +41,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_11/main.c b/src/world/area_sbk/sbk_11/main.c index 011264c0e9..e5b62ca605 100644 --- a/src/world/area_sbk/sbk_11/main.c +++ b/src/world/area_sbk/sbk_11/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_12/main.c b/src/world/area_sbk/sbk_12/main.c index 66e00e78d2..ffc541fe4a 100644 --- a/src/world/area_sbk/sbk_12/main.c +++ b/src/world/area_sbk/sbk_12/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_13/main.c b/src/world/area_sbk/sbk_13/main.c index 4057217fd0..3044825532 100644 --- a/src/world/area_sbk/sbk_13/main.c +++ b/src/world/area_sbk/sbk_13/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_14/main.c b/src/world/area_sbk/sbk_14/main.c index cb37697d24..b730e8e7a5 100644 --- a/src/world/area_sbk/sbk_14/main.c +++ b/src/world/area_sbk/sbk_14/main.c @@ -58,7 +58,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Exec(N(D_802402C0_9369A0)) Wait(1) Return diff --git a/src/world/area_sbk/sbk_15/main.c b/src/world/area_sbk/sbk_15/main.c index 0af25ba3d2..928cd1c68c 100644 --- a/src/world/area_sbk/sbk_15/main.c +++ b/src/world/area_sbk/sbk_15/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_16/main.c b/src/world/area_sbk/sbk_16/main.c index 5ff3c02d6f..3934b5d00e 100644 --- a/src/world/area_sbk/sbk_16/main.c +++ b/src/world/area_sbk/sbk_16/main.c @@ -40,7 +40,7 @@ EvtScript N(EVS_Main) = { EndIf SetUP_CAMERA_NO_LEAD() Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Exec(N(EVS_SetupFoliage)) diff --git a/src/world/area_sbk/sbk_20/main.c b/src/world/area_sbk/sbk_20/main.c index 55d0f6a306..f07a6f3507 100644 --- a/src/world/area_sbk/sbk_20/main.c +++ b/src/world/area_sbk/sbk_20/main.c @@ -44,7 +44,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_21/main.c b/src/world/area_sbk/sbk_21/main.c index 4371c65b2a..1153d2c4ee 100644 --- a/src/world/area_sbk/sbk_21/main.c +++ b/src/world/area_sbk/sbk_21/main.c @@ -41,7 +41,7 @@ EvtScript N(EVS_Main) = { EndIf SetUP_CAMERA_NO_LEAD() Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_22/main.c b/src/world/area_sbk/sbk_22/main.c index 11a6cdb559..1906becb73 100644 --- a/src/world/area_sbk/sbk_22/main.c +++ b/src/world/area_sbk/sbk_22/main.c @@ -45,7 +45,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_23/main.c b/src/world/area_sbk/sbk_23/main.c index 1fb57f9732..184c1eab8a 100644 --- a/src/world/area_sbk/sbk_23/main.c +++ b/src/world/area_sbk/sbk_23/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_24/main.c b/src/world/area_sbk/sbk_24/main.c index c7eaaeff10..6163b09e3a 100644 --- a/src/world/area_sbk/sbk_24/main.c +++ b/src/world/area_sbk/sbk_24/main.c @@ -59,7 +59,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Exec(N(D_80240600_93B230)) Wait(1) Exec(N(EVS_SetupFoliage)) diff --git a/src/world/area_sbk/sbk_25/main.c b/src/world/area_sbk/sbk_25/main.c index 7d801b1c71..0251de2a5c 100644 --- a/src/world/area_sbk/sbk_25/main.c +++ b/src/world/area_sbk/sbk_25/main.c @@ -46,7 +46,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Exec(N(EVS_SetupFoliage)) diff --git a/src/world/area_sbk/sbk_26/main.c b/src/world/area_sbk/sbk_26/main.c index b89515adf6..5185537548 100644 --- a/src/world/area_sbk/sbk_26/main.c +++ b/src/world/area_sbk/sbk_26/main.c @@ -42,7 +42,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Exec(N(EVS_SetupFoliage)) diff --git a/src/world/area_sbk/sbk_30/music.c b/src/world/area_sbk/sbk_30/music.c index 20f2d753b6..956fd8c8a0 100644 --- a/src/world/area_sbk/sbk_30/music.c +++ b/src/world/area_sbk/sbk_30/music.c @@ -7,7 +7,7 @@ EvtScript N(EVS_SetupMusic) = { CaseOrEq(sbk_30_ENTRY_5) EndCaseGroup CaseDefault - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) EndCaseGroup EndSwitch Return diff --git a/src/world/area_sbk/sbk_31/main.c b/src/world/area_sbk/sbk_31/main.c index 5d2ebee18f..56519ba4be 100644 --- a/src/world/area_sbk/sbk_31/main.c +++ b/src/world/area_sbk/sbk_31/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_32/main.c b/src/world/area_sbk/sbk_32/main.c index 1ee61c762a..d214cfa309 100644 --- a/src/world/area_sbk/sbk_32/main.c +++ b/src/world/area_sbk/sbk_32/main.c @@ -57,7 +57,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Exec(N(EVS_EnterMap)) Wait(1) Return diff --git a/src/world/area_sbk/sbk_33/main.c b/src/world/area_sbk/sbk_33/main.c index caeb321ea8..25b7dd8437 100644 --- a/src/world/area_sbk/sbk_33/main.c +++ b/src/world/area_sbk/sbk_33/main.c @@ -27,7 +27,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_34/main.c b/src/world/area_sbk/sbk_34/main.c index 6392a9a5c7..58812ab979 100644 --- a/src/world/area_sbk/sbk_34/main.c +++ b/src/world/area_sbk/sbk_34/main.c @@ -44,7 +44,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Exec(N(EVS_SetupFoliage)) diff --git a/src/world/area_sbk/sbk_35/main.c b/src/world/area_sbk/sbk_35/main.c index 072aa13090..0c3e170cfc 100644 --- a/src/world/area_sbk/sbk_35/main.c +++ b/src/world/area_sbk/sbk_35/main.c @@ -44,7 +44,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Exec(N(EVS_SetupFoliage)) diff --git a/src/world/area_sbk/sbk_36/main.c b/src/world/area_sbk/sbk_36/main.c index 8f25d26f1f..671404502f 100644 --- a/src/world/area_sbk/sbk_36/main.c +++ b/src/world/area_sbk/sbk_36/main.c @@ -44,7 +44,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Exec(N(EVS_SetupFoliage)) diff --git a/src/world/area_sbk/sbk_40/main.c b/src/world/area_sbk/sbk_40/main.c index 16815251b4..7f9bd464c0 100644 --- a/src/world/area_sbk/sbk_40/main.c +++ b/src/world/area_sbk/sbk_40/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_41/main.c b/src/world/area_sbk/sbk_41/main.c index 6d679d9c42..ec7a266021 100644 --- a/src/world/area_sbk/sbk_41/main.c +++ b/src/world/area_sbk/sbk_41/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_42/main.c b/src/world/area_sbk/sbk_42/main.c index e5016f4f53..9b6735f1e0 100644 --- a/src/world/area_sbk/sbk_42/main.c +++ b/src/world/area_sbk/sbk_42/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_43/main.c b/src/world/area_sbk/sbk_43/main.c index 497b6e7de8..8b433ef505 100644 --- a/src/world/area_sbk/sbk_43/main.c +++ b/src/world/area_sbk/sbk_43/main.c @@ -44,7 +44,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_44/main.c b/src/world/area_sbk/sbk_44/main.c index 4d1f451f56..697ed05200 100644 --- a/src/world/area_sbk/sbk_44/main.c +++ b/src/world/area_sbk/sbk_44/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_45/main.c b/src/world/area_sbk/sbk_45/main.c index 01982b4dd2..07b3b02831 100644 --- a/src/world/area_sbk/sbk_45/main.c +++ b/src/world/area_sbk/sbk_45/main.c @@ -57,7 +57,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Exec(N(EVS_EnterMap)) Wait(1) Return diff --git a/src/world/area_sbk/sbk_46/main.c b/src/world/area_sbk/sbk_46/main.c index 56757dfcb6..0bac78aeba 100644 --- a/src/world/area_sbk/sbk_46/main.c +++ b/src/world/area_sbk/sbk_46/main.c @@ -44,7 +44,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Exec(N(EVS_SetupFoliage)) diff --git a/src/world/area_sbk/sbk_50/main.c b/src/world/area_sbk/sbk_50/main.c index a12c9e5688..bf85573c9a 100644 --- a/src/world/area_sbk/sbk_50/main.c +++ b/src/world/area_sbk/sbk_50/main.c @@ -39,7 +39,7 @@ EvtScript N(EVS_Main) = { EndIf SetUP_CAMERA_NO_LEAD() Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_51/main.c b/src/world/area_sbk/sbk_51/main.c index cb5d72a798..a573d5d423 100644 --- a/src/world/area_sbk/sbk_51/main.c +++ b/src/world/area_sbk/sbk_51/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_52/main.c b/src/world/area_sbk/sbk_52/main.c index 6a196cdee4..300a70860d 100644 --- a/src/world/area_sbk/sbk_52/main.c +++ b/src/world/area_sbk/sbk_52/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_53/main.c b/src/world/area_sbk/sbk_53/main.c index 644eb479e3..5dbb5aaff8 100644 --- a/src/world/area_sbk/sbk_53/main.c +++ b/src/world/area_sbk/sbk_53/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_54/main.c b/src/world/area_sbk/sbk_54/main.c index 66d0e5948b..83e2b8761b 100644 --- a/src/world/area_sbk/sbk_54/main.c +++ b/src/world/area_sbk/sbk_54/main.c @@ -43,7 +43,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_55/main.c b/src/world/area_sbk/sbk_55/main.c index b8bab1a3a7..f80917ab84 100644 --- a/src/world/area_sbk/sbk_55/main.c +++ b/src/world/area_sbk/sbk_55/main.c @@ -46,7 +46,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Exec(N(EVS_SetupFoliage)) diff --git a/src/world/area_sbk/sbk_56/main.c b/src/world/area_sbk/sbk_56/main.c index 77332fae17..bc904953e2 100644 --- a/src/world/area_sbk/sbk_56/main.c +++ b/src/world/area_sbk/sbk_56/main.c @@ -22,13 +22,13 @@ MapSettings N(settings) = { #include "world/common/todo/SpawnSunEffect.inc.c" -API_CALLABLE(N(StartOasisSongVariation)) { - bgm_set_variation(0, 1); +API_CALLABLE(N(StartOasisTracks)) { + bgm_set_linked_mode(0, TRUE); return ApiStatus_DONE2; } -API_CALLABLE(N(StopOasisSongVariation)) { - bgm_set_variation(0, 0); +API_CALLABLE(N(StopOasisTracks)) { + bgm_set_linked_mode(0, FALSE); return ApiStatus_DONE2; } @@ -36,7 +36,7 @@ EvtScript N(EVS_ExitWalk_sbk_55_1) = { SetGroup(EVT_GROUP_EXIT_MAP) Call(UseExitHeading, 60, sbk_56_ENTRY_0) Exec(ExitWalk) - Call(N(StopOasisSongVariation)) + Call(N(StopOasisTracks)) Call(GotoMap, Ref("sbk_55"), sbk_55_ENTRY_1) Wait(100) Return @@ -47,7 +47,7 @@ EvtScript N(EVS_ExitWalk_sbk_46_3) = { SetGroup(EVT_GROUP_EXIT_MAP) Call(UseExitHeading, 60, sbk_56_ENTRY_2) Exec(ExitWalk) - Call(N(StopOasisSongVariation)) + Call(N(StopOasisTracks)) Call(GotoMap, Ref("sbk_46"), sbk_46_ENTRY_3) Wait(100) Return @@ -58,7 +58,7 @@ EvtScript N(EVS_ExitWalk_sbk_66_2) = { SetGroup(EVT_GROUP_EXIT_MAP) Call(UseExitHeading, 60, sbk_56_ENTRY_3) Exec(ExitWalk) - Call(N(StopOasisSongVariation)) + Call(N(StopOasisTracks)) Call(GotoMap, Ref("sbk_66"), sbk_66_ENTRY_2) Wait(100) Return @@ -99,8 +99,8 @@ EvtScript N(EVS_Main) = { Call(N(SpawnSunEffect)) Exec(N(EVS_TexPan_Water)) Call(MakeTransformGroup, MODEL_sui) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) - Call(N(StartOasisSongVariation)) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) + Call(N(StartOasisTracks)) Call(PlaySound, SOUND_LOOP_SBK_OASIS_WATER) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) diff --git a/src/world/area_sbk/sbk_60/main.c b/src/world/area_sbk/sbk_60/main.c index 22284c58c7..7db80df037 100644 --- a/src/world/area_sbk/sbk_60/main.c +++ b/src/world/area_sbk/sbk_60/main.c @@ -39,7 +39,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_61/main.c b/src/world/area_sbk/sbk_61/main.c index 92f2706ca8..f248cf545a 100644 --- a/src/world/area_sbk/sbk_61/main.c +++ b/src/world/area_sbk/sbk_61/main.c @@ -42,7 +42,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_62/main.c b/src/world/area_sbk/sbk_62/main.c index d9cc6adfd8..a1890f482e 100644 --- a/src/world/area_sbk/sbk_62/main.c +++ b/src/world/area_sbk/sbk_62/main.c @@ -41,7 +41,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_63/main.c b/src/world/area_sbk/sbk_63/main.c index fa7cea9556..c8e9ee77b2 100644 --- a/src/world/area_sbk/sbk_63/main.c +++ b/src/world/area_sbk/sbk_63/main.c @@ -41,7 +41,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_64/main.c b/src/world/area_sbk/sbk_64/main.c index da022bbe68..471186c0be 100644 --- a/src/world/area_sbk/sbk_64/main.c +++ b/src/world/area_sbk/sbk_64/main.c @@ -41,7 +41,7 @@ EvtScript N(EVS_Main) = { SetUP_CAMERA_NO_LEAD() ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_65/main.c b/src/world/area_sbk/sbk_65/main.c index 47b619779b..8324703968 100644 --- a/src/world/area_sbk/sbk_65/main.c +++ b/src/world/area_sbk/sbk_65/main.c @@ -39,7 +39,7 @@ EvtScript N(EVS_Main) = { EndIf SetUP_CAMERA_NO_LEAD() Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Return diff --git a/src/world/area_sbk/sbk_66/main.c b/src/world/area_sbk/sbk_66/main.c index 99f51bcd52..685aff509c 100644 --- a/src/world/area_sbk/sbk_66/main.c +++ b/src/world/area_sbk/sbk_66/main.c @@ -42,7 +42,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, FALSE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) Call(N(SpawnSunEffect)) - Call(SetMusicTrack, 0, SONG_DRY_DRY_DESERT, 0, 8) + Call(SetMusic, 0, SONG_DRY_DRY_DESERT, 0, VOL_LEVEL_FULL) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Exec(N(EVS_SetupFoliage)) diff --git a/src/world/area_sbk/sbk_99/main.c b/src/world/area_sbk/sbk_99/main.c index 316a3edbcb..e1799e6764 100644 --- a/src/world/area_sbk/sbk_99/main.c +++ b/src/world/area_sbk/sbk_99/main.c @@ -49,7 +49,7 @@ EvtScript N(EVS_Main) = { Call(SetCamEnabled, CAM_DEFAULT, TRUE) Set(GF_MAP_DryDryDesert, TRUE) ExecWait(N(EVS_MakeEntities)) - Call(SetMusicTrack, 0, SONG_MT_RUGGED, 0, 8) + Call(SetMusic, 0, SONG_MT_RUGGED, 0, VOL_LEVEL_FULL) Exec(N(EVS_EnterMap)) Wait(1) Return diff --git a/src/world/area_tik/tik_01/music.c b/src/world/area_tik/tik_01/music.c index 5def19fb99..9cd36425a6 100644 --- a/src/world/area_tik/tik_01/music.c +++ b/src/world/area_tik/tik_01/music.c @@ -1,13 +1,13 @@ #include "tik_01.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; EvtScript N(EVS_PlayBlooperSong) = { - Call(SetMusicTrack, 0, SONG_BLOOPER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BLOOPER_THEME, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_02/music.c b/src/world/area_tik/tik_02/music.c index 230339fca0..8723dd554e 100644 --- a/src/world/area_tik/tik_02/music.c +++ b/src/world/area_tik/tik_02/music.c @@ -1,13 +1,13 @@ #include "tik_02.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; EvtScript N(EVS_PlayBlooperSong) = { - Call(SetMusicTrack, 0, SONG_BLOOPER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BLOOPER_THEME, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_03/music.c b/src/world/area_tik/tik_03/music.c index a336647667..ea3d34f0ad 100644 --- a/src/world/area_tik/tik_03/music.c +++ b/src/world/area_tik/tik_03/music.c @@ -1,7 +1,7 @@ #include "tik_03.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_04/music.c b/src/world/area_tik/tik_04/music.c index d454d5aa32..7cb147b383 100644 --- a/src/world/area_tik/tik_04/music.c +++ b/src/world/area_tik/tik_04/music.c @@ -1,7 +1,7 @@ #include "tik_04.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_05/music.c b/src/world/area_tik/tik_05/music.c index a3b652d869..73b250fb24 100644 --- a/src/world/area_tik/tik_05/music.c +++ b/src/world/area_tik/tik_05/music.c @@ -1,7 +1,7 @@ #include "tik_05.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_06/music.c b/src/world/area_tik/tik_06/music.c index 7029e4e558..7869202b7f 100644 --- a/src/world/area_tik/tik_06/music.c +++ b/src/world/area_tik/tik_06/music.c @@ -1,7 +1,7 @@ #include "tik_06.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_07/music.c b/src/world/area_tik/tik_07/music.c index b599788485..dfc0a46955 100644 --- a/src/world/area_tik/tik_07/music.c +++ b/src/world/area_tik/tik_07/music.c @@ -1,7 +1,7 @@ #include "tik_07.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_08/music.c b/src/world/area_tik/tik_08/music.c index 8e7967718b..e15fd80328 100644 --- a/src/world/area_tik/tik_08/music.c +++ b/src/world/area_tik/tik_08/music.c @@ -1,13 +1,13 @@ #include "tik_08.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; EvtScript N(EVS_PlayBlooperSong) = { - Call(SetMusicTrack, 0, SONG_BLOOPER_THEME, 0, 8) + Call(SetMusic, 0, SONG_BLOOPER_THEME, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_09/music.c b/src/world/area_tik/tik_09/music.c index 92d9180eaa..ce2401c051 100644 --- a/src/world/area_tik/tik_09/music.c +++ b/src/world/area_tik/tik_09/music.c @@ -1,7 +1,7 @@ #include "tik_09.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_10/music.c b/src/world/area_tik/tik_10/music.c index d415a6d4f5..2360c27d8e 100644 --- a/src/world/area_tik/tik_10/music.c +++ b/src/world/area_tik/tik_10/music.c @@ -1,7 +1,7 @@ #include "tik_10.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_12/music.c b/src/world/area_tik/tik_12/music.c index 6a513d1267..fe2e814225 100644 --- a/src/world/area_tik/tik_12/music.c +++ b/src/world/area_tik/tik_12/music.c @@ -1,7 +1,7 @@ #include "tik_12.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_14/music.c b/src/world/area_tik/tik_14/music.c index 4c3c5742d8..aec742f79a 100644 --- a/src/world/area_tik/tik_14/music.c +++ b/src/world/area_tik/tik_14/music.c @@ -1,7 +1,7 @@ #include "tik_14.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_15/music.c b/src/world/area_tik/tik_15/music.c index 41a7295315..a850da7479 100644 --- a/src/world/area_tik/tik_15/music.c +++ b/src/world/area_tik/tik_15/music.c @@ -1,7 +1,7 @@ #include "tik_15.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_17/music.c b/src/world/area_tik/tik_17/music.c index 7a436600b2..8e8c0138d0 100644 --- a/src/world/area_tik/tik_17/music.c +++ b/src/world/area_tik/tik_17/music.c @@ -1,12 +1,12 @@ #include "tik_17.h" API_CALLABLE(N(AdjustTrackVolumes)) { - bgm_set_track_volumes(0, TRACK_VOLS_2); + bgm_set_track_volumes(0, TRACK_VOLS_TIK_SHIVER); return ApiStatus_DONE2; } EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Thread Wait(30) Call(N(AdjustTrackVolumes)) diff --git a/src/world/area_tik/tik_18/music.c b/src/world/area_tik/tik_18/music.c index 00686cabd7..e650630c2c 100644 --- a/src/world/area_tik/tik_18/music.c +++ b/src/world/area_tik/tik_18/music.c @@ -1,7 +1,7 @@ #include "tik_18.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_19/music.c b/src/world/area_tik/tik_19/music.c index 75bcfbfd1f..6779315477 100644 --- a/src/world/area_tik/tik_19/music.c +++ b/src/world/area_tik/tik_19/music.c @@ -1,7 +1,7 @@ #include "tik_19.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_20/music.c b/src/world/area_tik/tik_20/music.c index 88af19c730..63c5781eaf 100644 --- a/src/world/area_tik/tik_20/music.c +++ b/src/world/area_tik/tik_20/music.c @@ -1,7 +1,7 @@ #include "tik_20.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_21/music.c b/src/world/area_tik/tik_21/music.c index 408f27baf0..8e61fe075f 100644 --- a/src/world/area_tik/tik_21/music.c +++ b/src/world/area_tik/tik_21/music.c @@ -1,7 +1,7 @@ #include "tik_21.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_22/main.c b/src/world/area_tik/tik_22/main.c index 06dd0583d4..983fa29922 100644 --- a/src/world/area_tik/tik_22/main.c +++ b/src/world/area_tik/tik_22/main.c @@ -5,7 +5,7 @@ #include "world/common/entity/Pipe.inc.c" API_CALLABLE(N(ResetTrackVolumes)) { - bgm_clear_track_volumes(0, TRACK_VOLS_2); + bgm_clear_track_volumes(0, TRACK_VOLS_TIK_SHIVER); return ApiStatus_DONE2; } diff --git a/src/world/area_tik/tik_22/music.c b/src/world/area_tik/tik_22/music.c index 1981b90058..3fce1ff550 100644 --- a/src/world/area_tik/tik_22/music.c +++ b/src/world/area_tik/tik_22/music.c @@ -1,12 +1,12 @@ #include "tik_22.h" API_CALLABLE(N(AdjustTrackVolumes)) { - bgm_set_track_volumes(0, TRACK_VOLS_2); + bgm_set_track_volumes(0, TRACK_VOLS_TIK_SHIVER); return ApiStatus_DONE2; } EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Thread Wait(30) Call(N(AdjustTrackVolumes)) diff --git a/src/world/area_tik/tik_23/music.c b/src/world/area_tik/tik_23/music.c index a9bc90ba7f..5d82f70e70 100644 --- a/src/world/area_tik/tik_23/music.c +++ b/src/world/area_tik/tik_23/music.c @@ -1,7 +1,7 @@ #include "tik_23.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_24/music.c b/src/world/area_tik/tik_24/music.c index 2cd5edb025..d61a44bc01 100644 --- a/src/world/area_tik/tik_24/music.c +++ b/src/world/area_tik/tik_24/music.c @@ -1,7 +1,7 @@ #include "tik_24.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_tik/tik_25/music.c b/src/world/area_tik/tik_25/music.c index 138baaa07f..6333b1513e 100644 --- a/src/world/area_tik/tik_25/music.c +++ b/src/world/area_tik/tik_25/music.c @@ -1,7 +1,7 @@ #include "tik_25.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_TOAD_TOWN_TUNNELS, 0, 8) + Call(SetMusic, 0, SONG_TOAD_TOWN_TUNNELS, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/area_trd/trd_00/settings.c b/src/world/area_trd/trd_00/settings.c index b1ff3b250d..86576e6227 100644 --- a/src/world/area_trd/trd_00/settings.c +++ b/src/world/area_trd/trd_00/settings.c @@ -22,12 +22,12 @@ MapSettings N(settings) = { EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH1_ARRIVED_AT_KOOPA_FORTRESS) - Call(SetMusicTrack, 0, SONG_KOOPA_FORTRESS, 1, 8) + Call(SetMusic, 0, SONG_KOOPA_FORTRESS, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(PlaySound, SOUND_LOOP_TRD_WATER_EXT) CaseEq(STORY_CH1_BEGAN_PEACH_MISSION) - Call(SetMusicTrack, 0, SONG_STAR_SPIRIT_THEME, 1, 8) + Call(SetMusic, 0, SONG_STAR_SPIRIT_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_PLEASANT_PATH, 0, 8) + Call(SetMusic, 0, SONG_PLEASANT_PATH, 0, VOL_LEVEL_FULL) Call(PlaySound, SOUND_LOOP_TRD_WATER_EXT) EndSwitch Call(UseDoorSounds, DOOR_SOUNDS_METAL) diff --git a/src/world/area_trd/trd_01/settings.c b/src/world/area_trd/trd_01/settings.c index fc58297c3f..1e2b21db82 100644 --- a/src/world/area_trd/trd_01/settings.c +++ b/src/world/area_trd/trd_01/settings.c @@ -17,7 +17,7 @@ MapSettings N(settings) = { }; EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_KOOPA_FORTRESS, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_FORTRESS, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Return End diff --git a/src/world/area_trd/trd_02/settings.c b/src/world/area_trd/trd_02/settings.c index 8fcffd34ef..7efe11f90e 100644 --- a/src/world/area_trd/trd_02/settings.c +++ b/src/world/area_trd/trd_02/settings.c @@ -18,7 +18,7 @@ MapSettings N(settings) = { }; EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_KOOPA_FORTRESS, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_FORTRESS, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Return End diff --git a/src/world/area_trd/trd_03/settings.c b/src/world/area_trd/trd_03/settings.c index 7ee25cc699..86744d43ad 100644 --- a/src/world/area_trd/trd_03/settings.c +++ b/src/world/area_trd/trd_03/settings.c @@ -18,7 +18,7 @@ MapSettings N(settings) = { }; EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_KOOPA_FORTRESS, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_FORTRESS, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Return End diff --git a/src/world/area_trd/trd_04/settings.c b/src/world/area_trd/trd_04/settings.c index 91bbfb8f74..0ec96c95db 100644 --- a/src/world/area_trd/trd_04/settings.c +++ b/src/world/area_trd/trd_04/settings.c @@ -19,7 +19,7 @@ MapSettings N(settings) = { }; EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_KOOPA_FORTRESS, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_FORTRESS, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Return End diff --git a/src/world/area_trd/trd_05/settings.c b/src/world/area_trd/trd_05/settings.c index dd8c74ead3..8287371e2d 100644 --- a/src/world/area_trd/trd_05/settings.c +++ b/src/world/area_trd/trd_05/settings.c @@ -17,7 +17,7 @@ MapSettings N(settings) = { }; EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_KOOPA_FORTRESS, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_FORTRESS, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Return End diff --git a/src/world/area_trd/trd_06/settings.c b/src/world/area_trd/trd_06/settings.c index 1bba28d425..5628835cc9 100644 --- a/src/world/area_trd/trd_06/settings.c +++ b/src/world/area_trd/trd_06/settings.c @@ -21,7 +21,7 @@ EvtScript N(EVS_SetupMusic) = { Switch(LVar0) CaseGe(trd_06_ENTRY_2) CaseDefault - Call(SetMusicTrack, 0, SONG_KOOPA_FORTRESS, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_FORTRESS, 0, VOL_LEVEL_FULL) EndSwitch Call(UseDoorSounds, DOOR_SOUNDS_METAL) Return diff --git a/src/world/area_trd/trd_07/settings.c b/src/world/area_trd/trd_07/settings.c index 76d1a90330..ade3a5b992 100644 --- a/src/world/area_trd/trd_07/settings.c +++ b/src/world/area_trd/trd_07/settings.c @@ -15,7 +15,7 @@ MapSettings N(settings) = { }; EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_KOOPA_FORTRESS, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_FORTRESS, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Return End diff --git a/src/world/area_trd/trd_08/settings.c b/src/world/area_trd/trd_08/settings.c index 91990f428d..4973fa3dfc 100644 --- a/src/world/area_trd/trd_08/settings.c +++ b/src/world/area_trd/trd_08/settings.c @@ -14,7 +14,7 @@ MapSettings N(settings) = { }; EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_KOOPA_FORTRESS, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_FORTRESS, 0, VOL_LEVEL_FULL) Call(UseDoorSounds, DOOR_SOUNDS_METAL) Return End diff --git a/src/world/area_trd/trd_09/npc.c b/src/world/area_trd/trd_09/npc.c index 4422e4c368..304d11960b 100644 --- a/src/world/area_trd/trd_09/npc.c +++ b/src/world/area_trd/trd_09/npc.c @@ -187,7 +187,7 @@ EvtScript N(EVS_NpcAI_KoopaBros_Red) = { Call(PanToTarget, CAM_DEFAULT, 0, TRUE) Wait(20 * DT) Call(PlaySound, SOUND_METAL_DOOR_OPEN) - Call(SetMusicTrack, 0, SONG_KOOPA_BROS_THEME, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_BROS_THEME, 0, VOL_LEVEL_FULL) Call(MakeLerp, 0, 110, 10, EASING_COS_IN_OUT) Label(2) Call(UpdateLerp) @@ -224,7 +224,7 @@ EvtScript N(EVS_NpcAI_KoopaBros_Red) = { Call(SetNpcVar, NPC_KoopaBros_Yellow, 0, 2) Call(SetNpcVar, NPC_KoopaBros_Black, 0, 2) Call(SetSelfVar, 0, 1) - Call(SetMusicTrack, 0, SONG_BULLET_BILL_ASSAULT, 0, 8) + Call(SetMusic, 0, SONG_BULLET_BILL_ASSAULT, 0, VOL_LEVEL_FULL) Wait(60 * DT) Call(UseSettingsFrom, CAM_DEFAULT, 1300, 0, 0) Call(PanToTarget, CAM_DEFAULT, 0, FALSE) diff --git a/src/world/area_trd/trd_09/settings.c b/src/world/area_trd/trd_09/settings.c index eff7325e5f..793b2f7d08 100644 --- a/src/world/area_trd/trd_09/settings.c +++ b/src/world/area_trd/trd_09/settings.c @@ -19,12 +19,12 @@ MapSettings N(settings) = { EvtScript N(EVS_SetupMusic) = { IfEq(GB_StoryProgress, STORY_CH1_KOOPA_BROS_FIRING_BLASTERS) IfEq(GF_TRD09_Defeated_BillBlasters, FALSE) - Call(SetMusicTrack, 0, SONG_BULLET_BILL_ASSAULT, 0, 8) + Call(SetMusic, 0, SONG_BULLET_BILL_ASSAULT, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_KOOPA_FORTRESS, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_FORTRESS, 0, VOL_LEVEL_FULL) EndIf Else - Call(SetMusicTrack, 0, SONG_KOOPA_FORTRESS, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_FORTRESS, 0, VOL_LEVEL_FULL) EndIf Call(UseDoorSounds, DOOR_SOUNDS_METAL) Return diff --git a/src/world/area_trd/trd_10/npc.c b/src/world/area_trd/trd_10/npc.c index 328b59210d..c678cff159 100644 --- a/src/world/area_trd/trd_10/npc.c +++ b/src/world/area_trd/trd_10/npc.c @@ -127,7 +127,7 @@ EvtScript N(EVS_NpcDefeat_KoopaBros_01) = { Call(SetNpcPos, NPC_KoopaBros_01, NPC_DISPOSE_LOCATION) Call(SetNpcFlagBits, NPC_KoopaBros_01, NPC_FLAG_INVISIBLE, FALSE) Call(SetNpcFlagBits, NPC_KoopaBros_01, NPC_FLAG_HAS_SHADOW, TRUE) - Call(SetMusicTrack, 0, SONG_KOOPA_BROS_INTERLUDE, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_BROS_INTERLUDE, 0, VOL_LEVEL_FULL) Call(GetBattleOutcome, LVar0) Switch(LVar0) CaseEq(OUTCOME_PLAYER_WON) diff --git a/src/world/area_trd/trd_10/settings.c b/src/world/area_trd/trd_10/settings.c index 2fe1a4b2cd..e14f87ba81 100644 --- a/src/world/area_trd/trd_10/settings.c +++ b/src/world/area_trd/trd_10/settings.c @@ -17,11 +17,11 @@ MapSettings N(settings) = { EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH1_DEFEATED_KOOPA_BROS) - Call(SetMusicTrack, 0, SONG_KOOPA_BROS_THEME, 1, 8) + Call(SetMusic, 0, SONG_KOOPA_BROS_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) CaseEq(STORY_CH1_DEFEATED_KOOPA_BROS) Call(FadeOutMusic, 0, 500) CaseDefault - Call(SetMusicTrack, 0, SONG_KOOPA_FORTRESS, 0, 8) + Call(SetMusic, 0, SONG_KOOPA_FORTRESS, 0, VOL_LEVEL_FULL) EndSwitch Call(UseDoorSounds, DOOR_SOUNDS_METAL) Return diff --git a/src/world/common/atomic/MonitorMusicProximityTrigger.inc.c b/src/world/common/atomic/MonitorMusicProximityTrigger.inc.c index 83cfbe0065..15c616e079 100644 --- a/src/world/common/atomic/MonitorMusicProximityTrigger.inc.c +++ b/src/world/common/atomic/MonitorMusicProximityTrigger.inc.c @@ -51,7 +51,7 @@ API_CALLABLE(N(MonitorMusicProximityTrigger)) { } if (cond) { - bgm_adjust_proximity(0, trigger->unk, script->functionTemp[1]); + bgm_adjust_proximity(0, trigger->mix, script->functionTemp[1]); } return ApiStatus_BLOCK; diff --git a/src/world/dead/area_flo/flo_00/beanstalk.c b/src/world/dead/area_flo/flo_00/beanstalk.c index 2fe252d2f1..9b001c4370 100644 --- a/src/world/dead/area_flo/flo_00/beanstalk.c +++ b/src/world/dead/area_flo/flo_00/beanstalk.c @@ -253,7 +253,7 @@ EvtScript N(EVS_Exit_Beanstalk) = { Call(SetNpcJumpscale, NPC_PARTNER, Float(0.0)) Call(NpcJump0, NPC_PARTNER, LVarC, LVarD, LVarE, 5) Call(PlaySound, SOUND_FLO_RIDE_BEANSTALK_UP_LOOP) - Call(SetMusicTrack, 0, SONG_MAGIC_BEANSTALK, 1, 8) + Call(SetMusic, 0, SONG_MAGIC_BEANSTALK, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE) Call(SetPlayerAnimation, ANIM_Mario1_Walk) Call(N(GetPlayerAngles), LVar3, LVar4) diff --git a/src/world/dead/area_flo/flo_00/music.c b/src/world/dead/area_flo/flo_00/music.c index 0747c92740..fb267ee4ee 100644 --- a/src/world/dead/area_flo/flo_00/music.c +++ b/src/world/dead/area_flo/flo_00/music.c @@ -5,14 +5,14 @@ EvtScript N(EVS_SetupMusic) = { Switch(LVar0) CaseEq(flo_00_ENTRY_8) IfNe(AF_FLO_RidingBeanstalk, FALSE) - Call(SetMusicTrack, 0, SONG_MAGIC_BEANSTALK, 1, 8) + Call(SetMusic, 0, SONG_MAGIC_BEANSTALK, BGM_VARIATION_1, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndIf CaseEq(flo_00_ENTRY_9) - Call(SetMusicTrack, 0, SONG_SUNSHINE_RETURNS, 0, 8) + Call(SetMusic, 0, SONG_SUNSHINE_RETURNS, 0, VOL_LEVEL_FULL) CaseEq(flo_00_ENTRY_A) - Call(SetMusicTrack, 0, SONG_STAR_SPIRIT_THEME, 1, 8) + Call(SetMusic, 0, SONG_STAR_SPIRIT_THEME, BGM_VARIATION_1, VOL_LEVEL_FULL) Thread Loop(0) Wait(1) @@ -20,16 +20,16 @@ EvtScript N(EVS_SetupMusic) = { BreakLoop EndIf EndLoop - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndThread CaseEq(flo_00_ENTRY_B) Call(FadeInMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 3000, 0, 127) CaseDefault Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch EndSwitch Return diff --git a/src/world/dead/area_flo/flo_03/music.c b/src/world/dead/area_flo/flo_03/music.c index 4243508597..1d1fbfa34c 100644 --- a/src/world/dead/area_flo/flo_03/music.c +++ b/src/world/dead/area_flo/flo_03/music.c @@ -3,19 +3,19 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, flo_03_ENTRY_2) - Call(SetMusicTrack, 0, SONG_SUNSHINE_RETURNS, 0, 8) + Call(SetMusic, 0, SONG_SUNSHINE_RETURNS, 0, VOL_LEVEL_FULL) Else Switch(GB_StoryProgress) CaseLe(STORY_CH6_ASKED_TO_DEFEAT_MONTY_MOLES) IfEq(GF_FLO03_DefeatedAll_MontyMoles, FALSE) - Call(SetMusicTrack, 0, SONG_MONTY_MOLE_ASSAULT, 0, 8) + Call(SetMusic, 0, SONG_MONTY_MOLE_ASSAULT, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) EndIf CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch EndIf Return diff --git a/src/world/dead/area_flo/flo_07/music.c b/src/world/dead/area_flo/flo_07/music.c index c0e51e32bf..0df896772c 100644 --- a/src/world/dead/area_flo/flo_07/music.c +++ b/src/world/dead/area_flo/flo_07/music.c @@ -3,13 +3,13 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, flo_07_ENTRY_1) - Call(SetMusicTrack, 0, SONG_SUNSHINE_RETURNS, 0, 8) + Call(SetMusic, 0, SONG_SUNSHINE_RETURNS, 0, VOL_LEVEL_FULL) Else Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch EndIf Call(PlaySound, SOUND_LOOP_FLO_WATER_FLOW_1) diff --git a/src/world/dead/area_flo/flo_08/music.c b/src/world/dead/area_flo/flo_08/music.c index 2611463150..1879de48ba 100644 --- a/src/world/dead/area_flo/flo_08/music.c +++ b/src/world/dead/area_flo/flo_08/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/dead/area_flo/flo_09/music.c b/src/world/dead/area_flo/flo_09/music.c index 495a8fccea..a08058ef86 100644 --- a/src/world/dead/area_flo/flo_09/music.c +++ b/src/world/dead/area_flo/flo_09/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/dead/area_flo/flo_10/music.c b/src/world/dead/area_flo/flo_10/music.c index 4760bd6a6c..c7150b3c7f 100644 --- a/src/world/dead/area_flo/flo_10/music.c +++ b/src/world/dead/area_flo/flo_10/music.c @@ -3,13 +3,13 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, flo_10_ENTRY_1) - Call(SetMusicTrack, 0, SONG_SUNSHINE_RETURNS, 0, 8) + Call(SetMusic, 0, SONG_SUNSHINE_RETURNS, 0, VOL_LEVEL_FULL) Else Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch EndIf IfGe(GB_StoryProgress, STORY_CH6_FILLED_SPRING_WITH_WATER) diff --git a/src/world/dead/area_flo/flo_11/music.c b/src/world/dead/area_flo/flo_11/music.c index eb4e98a91a..3240d5cc98 100644 --- a/src/world/dead/area_flo/flo_11/music.c +++ b/src/world/dead/area_flo/flo_11/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/dead/area_flo/flo_12/music.c b/src/world/dead/area_flo/flo_12/music.c index 2ad1e5a598..e2cfd20f94 100644 --- a/src/world/dead/area_flo/flo_12/music.c +++ b/src/world/dead/area_flo/flo_12/music.c @@ -3,13 +3,13 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, flo_12_ENTRY_1) - Call(SetMusicTrack, 0, SONG_SUNSHINE_RETURNS, 0, 8) + Call(SetMusic, 0, SONG_SUNSHINE_RETURNS, 0, VOL_LEVEL_FULL) Else Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch EndIf Return diff --git a/src/world/dead/area_flo/flo_13/music.c b/src/world/dead/area_flo/flo_13/music.c index 4750aeb400..7bae1b8e98 100644 --- a/src/world/dead/area_flo/flo_13/music.c +++ b/src/world/dead/area_flo/flo_13/music.c @@ -8,9 +8,9 @@ EvtScript N(EVS_PlaySongForPlayerPos) = { Label(0) Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Loop(0) Call(GetPlayerPos, LVar0, LVar1, LVar2) @@ -22,9 +22,9 @@ EvtScript N(EVS_PlaySongForPlayerPos) = { Label(10) Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_SUN_TOWER_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_SUN_TOWER_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_SUN_TOWER_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_SUN_TOWER_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Loop(0) Call(GetPlayerPos, LVar0, LVar1, LVar2) @@ -45,7 +45,7 @@ EvtScript N(EVS_SetupMusic) = { }; EvtScript N(EVS_PushPartnerSong) = { - Call(SetMusicTrack, 0, SONG_NEW_PARTNER, 0, 8) + Call(SetMusic, 0, SONG_NEW_PARTNER, 0, VOL_LEVEL_FULL) Return End }; @@ -53,7 +53,7 @@ EvtScript N(EVS_PushPartnerSong) = { EvtScript N(EVS_PopSong) = { Call(FadeOutMusic, 0, 500) Wait(15) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) Return End }; diff --git a/src/world/dead/area_flo/flo_13/npc.c b/src/world/dead/area_flo/flo_13/npc.c index 19fadf219e..4432e5b452 100644 --- a/src/world/dead/area_flo/flo_13/npc.c +++ b/src/world/dead/area_flo/flo_13/npc.c @@ -231,7 +231,7 @@ EvtScript N(EVS_NpcIdle_Lakilester) = { Call(AwaitPlayerApproach, 200, 20, 275) Call(DisablePlayerInput, TRUE) Call(SetNpcPos, NPC_Lakilester, -250, 120, 45) - Call(SetMusicTrack, 0, SONG_LAKILESTER_THEME, 0, 8) + Call(SetMusic, 0, SONG_LAKILESTER_THEME, 0, VOL_LEVEL_FULL) Call(ShowMessageAtScreenPos, MSG_CH6_00A0, 160, 40) Call(InterruptUsePartner) Call(SetPlayerAnimation, ANIM_Mario1_LookUp) diff --git a/src/world/dead/area_flo/flo_14/music.c b/src/world/dead/area_flo/flo_14/music.c index 8a64cc9f69..210314d81d 100644 --- a/src/world/dead/area_flo/flo_14/music.c +++ b/src/world/dead/area_flo/flo_14/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/dead/area_flo/flo_15/music.c b/src/world/dead/area_flo/flo_15/music.c index 4d1969911b..7d14943130 100644 --- a/src/world/dead/area_flo/flo_15/music.c +++ b/src/world/dead/area_flo/flo_15/music.c @@ -3,13 +3,13 @@ EvtScript N(EVS_SetupMusic) = { Call(GetEntryID, LVar0) IfEq(LVar0, flo_15_ENTRY_1) - Call(SetMusicTrack, 0, SONG_SUNSHINE_RETURNS, 0, 8) + Call(SetMusic, 0, SONG_SUNSHINE_RETURNS, 0, VOL_LEVEL_FULL) Else Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_SUN_TOWER_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_SUN_TOWER_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_SUN_TOWER_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_SUN_TOWER_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch EndIf Return diff --git a/src/world/dead/area_flo/flo_16/music.c b/src/world/dead/area_flo/flo_16/music.c index 0ddb4dff52..6f76b85b93 100644 --- a/src/world/dead/area_flo/flo_16/music.c +++ b/src/world/dead/area_flo/flo_16/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/dead/area_flo/flo_17/music.c b/src/world/dead/area_flo/flo_17/music.c index 47ad5d845c..e127832ca2 100644 --- a/src/world/dead/area_flo/flo_17/music.c +++ b/src/world/dead/area_flo/flo_17/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/dead/area_flo/flo_18/music.c b/src/world/dead/area_flo/flo_18/music.c index 445a984229..132f5fd801 100644 --- a/src/world/dead/area_flo/flo_18/music.c +++ b/src/world/dead/area_flo/flo_18/music.c @@ -3,10 +3,10 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_PUFF_PUFF_MACHINE, 0, 8) + Call(SetMusic, 0, SONG_PUFF_PUFF_MACHINE, 0, VOL_LEVEL_FULL) Call(PlaySoundAtCollider, COLLIDER_o126, SOUND_LOOP_PUFF_PUFF_MACHINE, SOUND_SPACE_DEFAULT) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/dead/area_flo/flo_19/beanstalk.c b/src/world/dead/area_flo/flo_19/beanstalk.c index d8c825458d..2a1131dab7 100644 --- a/src/world/dead/area_flo/flo_19/beanstalk.c +++ b/src/world/dead/area_flo/flo_19/beanstalk.c @@ -231,7 +231,7 @@ EvtScript N(EVS_Exit_Beanstalk) = { Call(SetNpcJumpscale, NPC_PARTNER, Float(0.0)) Call(NpcJump0, NPC_PARTNER, LVarC, LVarD, LVarE, 5) Call(PlaySound, SOUND_FLO_RIDE_BEANSTALK_DOWN_LOOP) - Call(SetMusicTrack, 0, SONG_MAGIC_BEANSTALK, 1, 8) + Call(SetMusic, 0, SONG_MAGIC_BEANSTALK, BGM_VARIATION_1, VOL_LEVEL_FULL) Call(SetNpcAnimation, NPC_PARTNER, PARTNER_ANIM_IDLE) Call(SetPlayerAnimation, ANIM_Mario1_Walk) Call(N(GetPlayerAngles), LVar3, LVar4) diff --git a/src/world/dead/area_flo/flo_19/music.c b/src/world/dead/area_flo/flo_19/music.c index 4b39d4f5a0..bc841572d1 100644 --- a/src/world/dead/area_flo/flo_19/music.c +++ b/src/world/dead/area_flo/flo_19/music.c @@ -5,7 +5,7 @@ EvtScript N(EVS_SetupMusic) = { Switch(LVar0) CaseOrEq(flo_19_ENTRY_0) CaseOrEq(flo_19_ENTRY_1) - Call(SetMusicTrack, 0, SONG_CLOUDY_CLIMB, 0, 8) + Call(SetMusic, 0, SONG_CLOUDY_CLIMB, 0, VOL_LEVEL_FULL) EndCaseGroup CaseOrEq(flo_19_ENTRY_2) CaseOrEq(7) diff --git a/src/world/dead/area_flo/flo_21/music.c b/src/world/dead/area_flo/flo_21/music.c index 8a3e0c5f36..f872298385 100644 --- a/src/world/dead/area_flo/flo_21/music.c +++ b/src/world/dead/area_flo/flo_21/music.c @@ -4,7 +4,7 @@ EvtScript N(EVS_SetupMusic) = { IfEq(GB_StoryProgress, STORY_CH6_DEFEATED_HUFF_N_PUFF) Call(FadeOutMusic, 0, 500) Else - Call(SetMusicTrack, 0, SONG_CLOUDY_CLIMB, 0, 8) + Call(SetMusic, 0, SONG_CLOUDY_CLIMB, 0, VOL_LEVEL_FULL) EndIf Return End diff --git a/src/world/dead/area_flo/flo_21/npc.c b/src/world/dead/area_flo/flo_21/npc.c index e0f232f450..b6018321eb 100644 --- a/src/world/dead/area_flo/flo_21/npc.c +++ b/src/world/dead/area_flo/flo_21/npc.c @@ -82,7 +82,7 @@ EvtScript N(EVS_Scene_HuffNPuffAmbush) = { EndIf Call(AwaitPlayerApproach, 650, 0, 30) Call(DisablePlayerInput, TRUE) - Call(SetMusicTrack, 0, SONG_HUFF_N_PUFF_THEME, 0, 8) + Call(SetMusic, 0, SONG_HUFF_N_PUFF_THEME, 0, VOL_LEVEL_FULL) ExecGetTID(N(EVS_PlayRumbleSounds), LVar9) Call(GetPartnerInUse, LVar0) IfNe(LVar0, PARTNER_NONE) diff --git a/src/world/dead/area_flo/flo_22/music.c b/src/world/dead/area_flo/flo_22/music.c index 2dda67bc1f..1d7ebd6d45 100644 --- a/src/world/dead/area_flo/flo_22/music.c +++ b/src/world/dead/area_flo/flo_22/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/dead/area_flo/flo_23/music.c b/src/world/dead/area_flo/flo_23/music.c index 1d6e4322b5..9ce657223a 100644 --- a/src/world/dead/area_flo/flo_23/music.c +++ b/src/world/dead/area_flo/flo_23/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/dead/area_flo/flo_24/music.c b/src/world/dead/area_flo/flo_24/music.c index 9f5dca0e25..a2e153b8a8 100644 --- a/src/world/dead/area_flo/flo_24/music.c +++ b/src/world/dead/area_flo/flo_24/music.c @@ -2,9 +2,9 @@ EvtScript N(EVS_SetupMusic) = { IfLt(GB_StoryProgress, STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) Else - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndIf IfGe(GB_StoryProgress, STORY_CH6_FILLED_SPRING_WITH_WATER) Call(PlaySound, SOUND_LOOP_FLO_WATER_FLOW_2) diff --git a/src/world/dead/area_flo/flo_25/music.c b/src/world/dead/area_flo/flo_25/music.c index d15877264a..947c17e7ee 100644 --- a/src/world/dead/area_flo/flo_25/music.c +++ b/src/world/dead/area_flo/flo_25/music.c @@ -3,9 +3,9 @@ EvtScript N(EVS_SetupMusic) = { Switch(GB_StoryProgress) CaseLt(STORY_CH6_DESTROYED_PUFF_PUFF_MACHINE) - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_CLOUDY, 0, VOL_LEVEL_FULL) CaseDefault - Call(SetMusicTrack, 0, SONG_FLOWER_FIELDS_SUNNY, 0, 8) + Call(SetMusic, 0, SONG_FLOWER_FIELDS_SUNNY, 0, VOL_LEVEL_FULL) EndSwitch Return End diff --git a/src/world/dead/area_kzn/kzn_11/main.c b/src/world/dead/area_kzn/kzn_11/main.c index 35a7032219..528826d81e 100644 --- a/src/world/dead/area_kzn/kzn_11/main.c +++ b/src/world/dead/area_kzn/kzn_11/main.c @@ -57,7 +57,7 @@ EvtScript N(EVS_Main) = { Call(SetSpriteShading, SHADING_KZN_11) EVT_SETUP_CAMERA_DEFAULT() Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) diff --git a/src/world/dead/area_kzn/kzn_17/main.c b/src/world/dead/area_kzn/kzn_17/main.c index 7e21b479ef..da5d81dd0f 100644 --- a/src/world/dead/area_kzn/kzn_17/main.c +++ b/src/world/dead/area_kzn/kzn_17/main.c @@ -23,7 +23,7 @@ EvtScript N(EVS_Main) = { Set(LVar0, Ref(N(EVS_BindExitTriggers))) Exec(EnterWalk) Wait(1) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Exec(N(EVS_SetupSpinyTromp)) Set(LVar0, MODEL_kem1) diff --git a/src/world/dead/area_kzn/kzn_18/main.c b/src/world/dead/area_kzn/kzn_18/main.c index bafc654010..165de16e85 100644 --- a/src/world/dead/area_kzn/kzn_18/main.c +++ b/src/world/dead/area_kzn/kzn_18/main.c @@ -76,7 +76,7 @@ EvtScript N(EVS_Main) = { Call(MakeNpcs, TRUE, Ref(N(DefaultNPCs))) ExecWait(N(EVS_MakeEntities)) Exec(N(EVS_EnterMap)) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) IfLt(GB_StoryProgress, STORY_CH5_OPENED_ESCAPE_ROUTE) Call(EnableModel, MODEL_off1, FALSE) diff --git a/src/world/dead/area_kzn/kzn_19/music.c b/src/world/dead/area_kzn/kzn_19/music.c index 4b10dcc226..63a644d677 100644 --- a/src/world/dead/area_kzn/kzn_19/music.c +++ b/src/world/dead/area_kzn/kzn_19/music.c @@ -13,7 +13,7 @@ EvtScript N(EVS_SetupMusic) = { CaseGe(STORY_CH5_MT_LAVA_LAVA_ERUPTING) Call(PlaySound, SOUND_LOOP_RUMBLE) EndSwitch - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) Return End diff --git a/src/world/dead/area_kzn/kzn_19/npc.c b/src/world/dead/area_kzn/kzn_19/npc.c index 0e44e1a9f3..9df1a9c2b5 100644 --- a/src/world/dead/area_kzn/kzn_19/npc.c +++ b/src/world/dead/area_kzn/kzn_19/npc.c @@ -613,7 +613,7 @@ EvtScript N(EVS_NpcIdle_LavaPiranha) = { EndIf EndLoop Call(DisablePlayerInput, TRUE) - Call(SetMusicTrack, 0, SONG_LAVA_PIRANHA_THEME, 0, 8) + Call(SetMusic, 0, SONG_LAVA_PIRANHA_THEME, 0, VOL_LEVEL_FULL) Call(LoadAnimatedModel, VINE_0, Ref(N(AnimModel_MainHeadVine))) Call(N(LoadAnimationFromTable), VINE_0, 0) Call(PlayModelAnimation, VINE_0, VINE_0_BASE) @@ -901,7 +901,7 @@ EvtScript N(EVS_NpcDefeat_LavaPiranha) = { Switch(LVar0) CaseEq(OUTCOME_PLAYER_WON) Call(SetEncounterStatusFlags, ENCOUNTER_FLAG_CANT_SKIP_WIN_DELAY, TRUE) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(SetPlayerPos, 125, 25, -35) Call(SetNpcPos, NPC_PARTNER, 100, 25, -35) Call(SetCamLeadPlayer, CAM_DEFAULT, FALSE) diff --git a/src/world/dead/area_kzn/kzn_20/music.c b/src/world/dead/area_kzn/kzn_20/music.c index ab6df8c382..72d05bda70 100644 --- a/src/world/dead/area_kzn/kzn_20/music.c +++ b/src/world/dead/area_kzn/kzn_20/music.c @@ -5,10 +5,10 @@ EvtScript N(EVS_SetupMusic) = { Call(PlaySound, SOUND_LOOP_RUMBLE) EndIf IfLt(GB_StoryProgress, STORY_CH5_OPENED_ESCAPE_ROUTE) - Call(SetMusicTrack, 0, SONG_MT_LAVALAVA, 0, 8) + Call(SetMusic, 0, SONG_MT_LAVALAVA, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_3) Else - Call(SetMusicTrack, 0, SONG_VOLCANO_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_VOLCANO_ESCAPE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_1) EndIf Return diff --git a/src/world/dead/area_kzn/kzn_20/npc.c b/src/world/dead/area_kzn/kzn_20/npc.c index 0655ccfe53..30b8d841cc 100644 --- a/src/world/dead/area_kzn/kzn_20/npc.c +++ b/src/world/dead/area_kzn/kzn_20/npc.c @@ -174,7 +174,7 @@ EvtScript N(EVS_KoloradoBurned_PlayerReaction) = { }; API_CALLABLE(N(func_80240A68_C96998)) { - snd_ambient_mute(0, TRUE); + snd_ambient_fade_out(0, TRUE); return ApiStatus_DONE2; } @@ -252,7 +252,7 @@ EvtScript N(EVS_NpcIdle_Kolorado) = { EndThread Call(SpeakToPlayer, NPC_SELF, ANIM_Kolorado_Talk, ANIM_Kolorado_Idle, 5, MSG_CH5_010C) Set(AF_KZN_RumblingIntensified, TRUE) - Call(SetMusicTrack, 0, SONG_VOLCANO_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_VOLCANO_ESCAPE, 0, VOL_LEVEL_FULL) Wait(20) Thread Call(SetPlayerAnimation, ANIM_Mario1_Flail) diff --git a/src/world/dead/area_kzn/kzn_22/music.c b/src/world/dead/area_kzn/kzn_22/music.c index 5b7d73a3a8..a818122ac9 100644 --- a/src/world/dead/area_kzn/kzn_22/music.c +++ b/src/world/dead/area_kzn/kzn_22/music.c @@ -4,7 +4,7 @@ EvtScript N(EVS_SetupMusic) = { IfGe(GB_StoryProgress, STORY_CH5_MT_LAVA_LAVA_ERUPTING) Call(PlaySound, SOUND_LOOP_RUMBLE) EndIf - Call(SetMusicTrack, 0, SONG_VOLCANO_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_VOLCANO_ESCAPE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_4) Return End diff --git a/src/world/dead/area_kzn/kzn_22/npc.c b/src/world/dead/area_kzn/kzn_22/npc.c index facaadd5a9..ee20889c74 100644 --- a/src/world/dead/area_kzn/kzn_22/npc.c +++ b/src/world/dead/area_kzn/kzn_22/npc.c @@ -10,7 +10,7 @@ API_CALLABLE(N(GetFloorCollider2)) { } API_CALLABLE(N(func_8024036C_C9A56C)) { - snd_ambient_mute(0, TRUE); + snd_ambient_fade_out(0, TRUE); return ApiStatus_DONE2; } diff --git a/src/world/dead/area_kzn/kzn_23/music.c b/src/world/dead/area_kzn/kzn_23/music.c index 4f60441823..f4088c80d5 100644 --- a/src/world/dead/area_kzn/kzn_23/music.c +++ b/src/world/dead/area_kzn/kzn_23/music.c @@ -1,7 +1,7 @@ #include "kzn_23.h" EvtScript N(EVS_SetupMusic) = { - Call(SetMusicTrack, 0, SONG_VOLCANO_ESCAPE, 0, 8) + Call(SetMusic, 0, SONG_VOLCANO_ESCAPE, 0, VOL_LEVEL_FULL) Call(PlayAmbientSounds, AMBIENT_LAVA_5) Return End diff --git a/tools/disasm_script.py b/tools/disasm_script.py index 2cd5b461c8..d47f3d52f6 100755 --- a/tools/disasm_script.py +++ b/tools/disasm_script.py @@ -556,7 +556,7 @@ replace_funcs = { 3: "PlayerAnims", 4: "PlayerAnims", }, - "SetMusicTrack": {1: "SongIDs"}, + "SetMusic": {1: "SongIDs"}, "SetNpcAnimation": {0: "NpcIDs", 1: "CustomAnim"}, "SetNpcAux": {0: "NpcIDs"}, "SetNpcFlagBits": {0: "NpcIDs", 1: "NpcFlags", 2: "Bool"}, diff --git a/tools/ignored_funcs.txt b/tools/ignored_funcs.txt index dfc5a115c6..dbcbb0d0cc 100644 --- a/tools/ignored_funcs.txt +++ b/tools/ignored_funcs.txt @@ -50,7 +50,7 @@ dead_GetNextPathPos = 0x802E2B74; dead_queue_render_task = 0x80128510; dead_create_worker_scene = 0x8012DFE8; dead_GetEntryID = 0x802D790C; -dead_SetMusicTrack = 0x802E339C; +dead_SetMusic = 0x802E339C; dead_FadeInMusic = 0x802E3444; dead_RandInt = 0x802E1D00; dead_PlayEffect = 0x802E58EC; @@ -236,7 +236,7 @@ dead_PlayAmbientSounds = 0x802E376C; dead_SetTexPanner = 0x802D6480; dead_DismissEffect = 0x802E5160; dead_Entity_Chest = 0x802F92E0; -dead_snd_ambient_mute = 0x80059AC8; +dead_snd_ambient_fade_out = 0x80059AC8; dead_GetPlayerAnimation = 0x802DF4B4; dead_SetPlayerSpeed = 0x802DE644; dead_SetItemPos = 0x802E4720; diff --git a/ver/ique/splat.yaml b/ver/ique/splat.yaml index 7fc4afadb1..27943c0084 100644 --- a/ver/ique/splat.yaml +++ b/ver/ique/splat.yaml @@ -84,18 +84,18 @@ segments: - [auto, c, status_icons] - [auto, c, 23680] - [auto, c, 25AF0] - - [auto, c, audio/25f00_len_940] + - [auto, c, audio/core/system] - [auto, c, audio/sfx_player] - - [auto, c, audio/28910_len_5090] - - [auto, c, audio/2BF90] - - [auto, c, audio/2d9a0_len_890] - - [auto, c, audio/2e230_len_2190] - - [auto, c, audio/303c0_len_3e10] - - [auto, c, audio/30450] - - [auto, c, audio/31650] - - [auto, c, audio/33450] - - [auto, c, audio/tables] - - [auto, c, audio/reverb] + - [auto, c, audio/bgm_player] + - [auto, c, audio/mseq_player] + - [auto, c, audio/core/voice] + - [auto, c, audio/core/engine] + - [auto, c, audio/load_banks] + - [auto, c, audio/snd_interface] + - [auto, c, audio/core/syn_driver] + - [auto, c, audio/core/pull_voice] + - [auto, c, audio/core/tables] + - [auto, c, audio/core/reverb] - [auto, c, effects] - [auto, c, 5B320] - [auto, c, world/world] @@ -794,8 +794,8 @@ segments: - [auto, c, audio/ambience] - [auto, c, windows] - [auto, c, sprite_shading] - - [auto, c, audio/sfx] - - [auto, c, audio/e0b30_len_b80] + - [auto, c, audio/sfx_control] + - [auto, c, audio/bgm_control] - [auto, c, bss/engine2_post_bss] - start: 0xE1D60 type: .data diff --git a/ver/jp/splat.yaml b/ver/jp/splat.yaml index 8416d5b57e..fb25b38b17 100644 --- a/ver/jp/splat.yaml +++ b/ver/jp/splat.yaml @@ -90,18 +90,18 @@ segments: - [auto, c, 23680] - [auto, c, 25AF0] - - [auto, c, audio/25f00_len_940] + - [auto, c, audio/core/system] - [auto, c, audio/sfx_player] - - [auto, c, audio/28910_len_5090] - - [auto, c, audio/2BF90] - - [auto, c, audio/2d9a0_len_890] - - [auto, c, audio/2e230_len_2190] - - [auto, c, audio/303c0_len_3e10] - - [auto, c, audio/30450] - - [auto, c, audio/31650] - - [auto, c, audio/33450] - - [auto, c, audio/tables] # data only - - [auto, c, audio/reverb] + - [auto, c, audio/bgm_player] + - [auto, c, audio/mseq_player] + - [auto, c, audio/core/voice] + - [auto, c, audio/core/engine] + - [auto, c, audio/load_banks] + - [auto, c, audio/snd_interface] + - [auto, c, audio/core/syn_driver] + - [auto, c, audio/core/pull_voice] + - [auto, c, audio/core/tables] # data only + - [auto, c, audio/core/reverb] - [auto, c, effects] - [auto, c, 5B320] # data only @@ -807,8 +807,8 @@ segments: - [auto, c, audio/ambience] - [auto, c, windows] - [auto, c, sprite_shading] - - [auto, c, audio/sfx] - - [auto, c, audio/e0b30_len_b80] + - [auto, c, audio/sfx_control] + - [auto, c, audio/bgm_control] - [auto, c, bss/engine2_post_bss] - start: 0xE6620 type: .data diff --git a/ver/jp/symbol_addrs.txt b/ver/jp/symbol_addrs.txt index 19bf6600fd..af148f6c76 100644 --- a/ver/jp/symbol_addrs.txt +++ b/ver/jp/symbol_addrs.txt @@ -309,7 +309,7 @@ sfx_clear_sounds = 0x8014E6C8; sfx_update_env_sound_params = 0x8014E7E4; sfx_stop_env_sounds = 0x8014E8E8; bgm_reset_sequence_players = 0x8014F548; -bgm_update_music_settings = 0x8014F5F8; +bgm_update_music_control = 0x8014F5F8; D_80164000 = 0x80164000; heap_collisionHead = 0x80268000; shim_create_audio_system_obfuscated = 0x802B2000; @@ -728,34 +728,34 @@ PopupMenu_DownArrowHID = 0x8010D834; PopupMenu_Alpha = 0x8010D810; PopupMenu_CursorHID = 0x8010D82C; PopupNotBattle = 0x8010D84E; -D_8010D684 = 0x8010D844; +PopupPromptX = 0x8010D844; PopupMenu_LastDisplayIndex = 0x8010D815; PopupMenu_PartnerLevelHID = 0x8010D828; PopupMenu_FirstDisplayIndex = 0x8010D814; D_8010D6A0 = 0x8010D860; D_80109898 = 0x80109A28; // rom:0xA2ED8 PopupMenu_EmptybarHID = 0x8010D81C; -D_8010D682 = 0x8010D842; +PopupDescY = 0x8010D842; HES_MenuTimes = 0x80109400; // rom:0xA28B0 set_window_properties = 0x8014CD78; // type:func rom:0xE1C08 HES_GreenArrowUp = 0x80107974; // rom:0xA0E24 hud_element_set_tint = 0x80149FAC; // type:func rom:0xDEE3C -D_8010D644 = 0x8010D804; +PopupDelayTime = 0x8010D804; hud_element_free = 0x801499A4; // type:func rom:0xDE834 PopupMenu_TitleIconHID = 0x8010D820; HES_StatusStarPiece = 0x80104DA0; // rom:0x9E250 -D_8010D692 = 0x8010D852; +PopupDelayLength = 0x8010D852; sfx_play_sound = 0x8014ED64; // type:func rom:0xE3BF4 gPopupState = 0x8010D800; D_80109890 = 0x80109A20; // rom:0xA2ED0 -D_8010D686 = 0x8010D846; +PopupPromptY = 0x8010D846; hud_element_set_script = 0x801498AC; // type:func rom:0xDE73C draw_msg = 0x8012B710; // type:func rom:0xC05A0 PopupMenu_UpArrowHID = 0x8010D830; PopupMenu_StarPieceCounterPosX = 0x8010D848; PopupMenu_SelectedIndex = 0x8010D808; PopupDipMode = 0x8010D859; -D_8010D67C = 0x8010D83C; +PopupWinX = 0x8010D83C; PopupMenu_MaxDisplayableEntryCount = 0x8010D84F; D_8010D690 = 0x8010D850; PopupMenu_DisplayedEntryCount = 0x8010D816; @@ -768,7 +768,7 @@ HES_EmptyBar = 0x80107A9C; // rom:0xA0F4C D_8010D68C = 0x8010D84C; basic_window_update = 0x8014C524; // rom:0xE13B4 D_8010D6A4 = 0x8010D864; -D_8010D680 = 0x8010D840; +PopupDescX = 0x8010D840; D_8010D658 = 0x8010D818; D_8010D693 = 0x8010D853; hud_element_set_render_pos = 0x80149A34; // type:func rom:0xDE8C4 @@ -928,7 +928,7 @@ func_800EF3D4 = 0x800EF368; // type:func rom:0x88818 fx_damage_stars = 0x80070170; // type:func rom:0x4B570 enable_status_bar_input = 0x800E97DC; // type:func rom:0x82C8C fx_shiny_flare = 0x80072150; // type:func rom:0x4D550 -bgm_flush_music_events = 0x80055D58; // type:func rom:0x31158 +snd_song_flush_music_events = 0x80055D58; // type:func rom:0x31158 set_npc_yaw = 0x8003B000; // type:func rom:0x16400 fx_effect_46 = 0x800712B0; // type:func rom:0x4C6B0 fx_music_note = 0x800706B0; // type:func rom:0x4BAB0 @@ -963,7 +963,7 @@ fx_moving_cloud = 0x800723F0; // type:func rom:0x4D7F0 create_worker_scene = 0x80128368; // type:func rom:0xBD1F8 fx_bulb_glow = 0x80070EF0; // type:func rom:0x4C2F0 fx_blast = 0x80070FB0; // type:func rom:0x4C3B0 -bgm_poll_music_events = 0x80055D3C; // type:func rom:0x3113C +snd_song_poll_music_events = 0x80055D3C; // type:func rom:0x3113C fx_recover = 0x80071070; // type:func rom:0x4C470 fx_smoke_ring = 0x80070110; // type:func rom:0x4B510 move_player = 0x800E2758; // type:func rom:0x7BC08 @@ -1522,11 +1522,11 @@ MusicEventPollCount = 0x802D9D30; // rom:0x101ED0 PollMusicEvents = 0x802D5B10; // type:func rom:0xFDCB0 RegisterMusicEvents = 0x802D5C70; // type:func rom:0xFDE10 FadeOutMusic = 0x802D5CE0; // type:func rom:0xFDE80 -SetMusicTrack = 0x802D5D4C; // type:func rom:0xFDEEC +SetMusic = 0x802D5D4C; // type:func rom:0xFDEEC FadeInMusic = 0x802D5DF4; // type:func rom:0xFDF94 EnableMusicProximityMix = 0x802D5EE0; // type:func rom:0xFE080 AdjustMusicProximityMix = 0x802D5F28; // type:func rom:0xFE0C8 -SetMusicTrackVolumes = 0x802D5FA4; // type:func rom:0xFE144 +SetTrackVolumes = 0x802D5FA4; // type:func rom:0xFE144 PopSong = 0x802D5FD8; // type:func rom:0xFE178 PushSong = 0x802D5FF8; // type:func rom:0xFE198 PopBattleSong = 0x802D6050; // type:func rom:0xFE1F0 @@ -1997,28 +1997,28 @@ entity_Signpost_idle = 0x802E4000; // type:func rom:0x10A8E0 Entity_Signpost_Script = 0x802E5F60; // rom:0x10C840 Entity_Signpost_RenderScript = 0x802E5F70; // rom:0x10C850 Entity_Signpost = 0x802E5F8C; // rom:0x10C86C -au_song_stop = 0x80055674; // type:func rom:0x30A74 -au_song_load = 0x80055584; // type:func rom:0x30984 -snd_set_song_variation_fade_time = 0x8005576C; // type:func rom:0x30B6C +snd_song_stop = 0x80055674; // type:func rom:0x30A74 +snd_song_load = 0x80055584; // type:func rom:0x30984 +snd_song_request_fade_out = 0x8005576C; // type:func rom:0x30B6C func_80055B80 = 0x80055830; // type:func rom:0x30C30 snd_ambient_stop_slow = 0x80055198; // type:func rom:0x30598 world_action_sneaky_parasol_ROM_END = 0x00E343B0; -bgm_set_proximity_mix_full = 0x80055D18; // type:func rom:0x31118 +snd_song_set_proximity_mix_full = 0x80055D18; // type:func rom:0x31118 load_asset_by_name = 0x8005A9A0; // type:func rom:0x35DA0 guRotateRPYF = 0x800642A0; // type:func rom:0x3F6A0 gCurrentDisplayContextIndex = 0x800741D4; // rom:0x4F5D4 func_800E06C0 = 0x800E06A0; // type:func rom:0x79B50 -snd_set_song_variation_fade = 0x800556C8; // type:func rom:0x30AC8 +snd_song_request_fade_in = 0x800556C8; // type:func rom:0x30AC8 gItemIconPaletteOffsets = 0x8008E91C; // rom:0x69D1C -bgm_set_proximity_mix_near = 0x80055CF4; // type:func rom:0x310F4 +snd_song_set_proximity_mix_near = 0x80055CF4; // type:func rom:0x310F4 gItemEntityScripts = 0x8008DDA4; // rom:0x691A4 npc_raycast_down_sides = 0x800DCB5C; // type:func rom:0x7600C test_ray_entities = 0x8005D0F8; // type:func rom:0x384F8 -snd_set_song_variation = 0x80055974; // type:func rom:0x30D74 +snd_song_set_linked_mode = 0x80055974; // type:func rom:0x30D74 mem_clear = 0x800295C0; // type:func rom:0x49C0 nuGfxCfbNum = 0x800773D0; // rom:0x527D0 int_to_string = 0x80029484; // type:func rom:0x4884 -au_song_is_playing = 0x800556AC; // type:func rom:0x30AAC +snd_song_is_playing = 0x800556AC; // type:func rom:0x30AAC SparkleScript_Coin = 0x80104C50; // rom:0x9E100 gAreas = 0x800934C0; // rom:0x6E8C0 npc_test_move_complex_with_slipping = 0x800DDD74; // type:func rom:0x77224 @@ -2027,7 +2027,7 @@ phys_can_player_interact = 0x800E52CC; // type:func rom:0x7E77C npc_raycast_up = 0x800DCE50; // type:func rom:0x76300 get_time_freeze_mode = 0x8002715C; // type:func rom:0x255C snd_ambient_play = 0x80055114; // type:func rom:0x30514 -func_800561A4 = 0x80055E54; // type:func rom:0x31254 +snd_set_bgm_volume = 0x80055E54; // type:func rom:0x31254 snd_load_ambient = 0x800550F8; // type:func rom:0x304F8 guTranslate = 0x80067800; // type:func rom:0x42C00 gEncounterState = 0x8009A5E0; @@ -2039,24 +2039,24 @@ snd_ambient_pause = 0x800551EC; // type:func rom:0x305EC general_heap_free = 0x8002AC38; // type:func rom:0x6038 CreateEntityVarArgBuffer = 0x80161750; gCurrentModels = 0x8015632C; -au_song_start_variation = 0x80055620; // type:func rom:0x30A20 +snd_song_request_play = 0x80055620; // type:func rom:0x30A20 snd_song_set_track_volumes = 0x80055A8C; // type:func rom:0x30E8C gWindows = 0x8015ECD0; gPlayerStatusPtr = 0x800F7CC0; // rom:0x91170 guOrtho = 0x80063A10; // type:func rom:0x3EE10 guScale = 0x800676E0; // type:func rom:0x42AE0 -bgm_set_proximity_mix_far = 0x80055CD8; // type:func rom:0x310D8 -func_80055BB8 = 0x80055868; // type:func rom:0x30C68 +snd_song_set_proximity_mix_far = 0x80055CD8; // type:func rom:0x310D8 +snd_song_UNK_request_push_fade_out = 0x80055868; // type:func rom:0x30C68 _heap_malloc = 0x8002902C; // type:func rom:0x442C gItemIconRasterOffsets = 0x8008E3A8; // rom:0x697A8 -func_80055B28 = 0x800557D8; // type:func rom:0x30BD8 +snd_song_UNK_request_pop = 0x800557D8; // type:func rom:0x30BD8 snd_song_clear_track_volumes = 0x80055AF8; // type:func rom:0x30EF8 npc_raycast_down_around = 0x800DC758; // type:func rom:0x75C08 npc_test_move_simple_with_slipping = 0x800DDC24; // type:func rom:0x770D4 is_player_dismounted = 0x800DFCD4; // type:func rom:0x79184 heap_spriteHead = 0x8034F800; general_heap_malloc = 0x8002ABE8; // type:func rom:0x5FE8 -gMusicSettings = 0x8015EA70; +gMusicControlData = 0x8015EA70; transform_point = 0x800295E0; // type:func rom:0x49E0 gCurrentModelTreeNodeInfo = 0x8009A5D4; cosine = 0x80029394; // type:func rom:0x4794 @@ -2066,9 +2066,9 @@ gMessageBoxFrameParts = 0x8008FEB0; // rom:0x6B2B0 copy_matrix = 0x800296E0; // type:func rom:0x4AE0 snd_start_sound_with_shift = 0x80054EF0; // type:func rom:0x302F0 suggest_player_anim_always_forward = 0x800DFF58; // type:func rom:0x79408 -func_80055AF0 = 0x800557A0; // type:func rom:0x30BA0 +snd_song_UNK_push_stop = 0x800557A0; // type:func rom:0x30BA0 get_current_partner_id = 0x800E505C; // type:func rom:0x7E50C -func_800561E4 = 0x80055E94; // type:func rom:0x31294 +snd_set_sfx_reverb_type = 0x80055E94; // type:func rom:0x31294 dist3D = 0x80029EEC; // type:func rom:0x52EC gCurrentHiddenPanels = 0x8015F4F8; entity_model_Hammer1Block_ROM_START = 0x00E3A3B0; @@ -2476,12 +2476,12 @@ sfx_get_env_sound_instance = 0x8014E974; // type:func rom:0xE3804 sfx_play_sound_looping = 0x8014E9B8; // type:func rom:0xE3848 sfx_register_looping_sound_at_position = 0x8014EA24; // type:func rom:0xE38B4 sfx_adjust_env_sound_pos = 0x8014EA9C; // type:func rom:0xE392C -snd_stop_tracking_env_sound_pos = 0x8014EB1C; // type:func rom:0xE39AC +sfx_stop_tracking_env_sound_pos = 0x8014EB1C; // type:func rom:0xE39AC sfx_adjust_env_sound_params = 0x8014EC94; // type:func rom:0xE3B24 sfx_play_sound_at_npc = 0x8014EDB8; // type:func rom:0xE3C48 sfx_compute_spatialized_sound_params_ignore_depth = 0x8014F008; // type:func rom:0xE3E98 sfx_compute_spatialized_sound_params_with_depth = 0x8014F264; // type:func rom:0xE40F4 -BlankMusicSettings = 0x80154790; // rom:0xE9620 +BlankMusicControlData = 0x80154790; // rom:0xE9620 SongsUsingVariationFlag = 0x801547C0; // rom:0xE9650 NextVolumeUpdateTimer = 0x801547D8; // rom:0xE9668 bgm_get_map_default_variation = 0x8014F4E0; // type:func rom:0xE4370 @@ -2489,18 +2489,18 @@ bgm_reset_volume = 0x8014F5DC; // type:func rom:0xE446C bgm_set_target_volume = 0x8014FD34; // type:func rom:0xE4BC4 bgm_update_volume = 0x8014FD44; // type:func rom:0xE4BD4 _bgm_set_song = 0x8014F890; // type:func rom:0xE4720 -func_8014A964 = 0x8014FA14; // type:func rom:0xE48A4 +bgm_fade_in_song = 0x8014FA14; // type:func rom:0xE48A4 bgm_adjust_proximity = 0x8014FB04; // type:func rom:0xE4994 bgm_set_track_volumes = 0x8014FBBC; // type:func rom:0xE4A4C bgm_clear_track_volumes = 0x8014FC10; // type:func rom:0xE4AA0 -bgm_set_variation = 0x8014FC64; // type:func rom:0xE4AF4 +bgm_set_linked_mode = 0x8014FC64; // type:func rom:0xE4AF4 bgm_init_music_players = 0x8014FCB8; // type:func rom:0xE4B48 bgm_quiet_max_volume = 0x8014FD0C; // type:func rom:0xE4B9C bgm_reset_max_volume = 0x8014FD20; // type:func rom:0xE4BB0 -func_8014AD40 = 0x8014FDF0; // type:func rom:0xE4C80 +bgm_is_any_song_playing = 0x8014FDF0; // type:func rom:0xE4C80 bgm_pop_song = 0x8014FE54; // type:func rom:0xE4CE4 bgm_push_song = 0x8014FEA8; // type:func rom:0xE4D38 -func_8014AFA0 = 0x80150050; // type:func rom:0xE4EE0 +bgm_NOOP = 0x80150050; // type:func rom:0xE4EE0 ui_stencil_star_png = 0x801517A0; // rom:0xE6630 ui_stencil_mario_png = 0x80151BA0; // rom:0xE6A30 ui_stencil_sharp_circle_png = 0x801523A0; // rom:0xE7230 diff --git a/ver/jp/undefined_syms.txt b/ver/jp/undefined_syms.txt index 70a9e13cc0..df1503ef4f 100644 --- a/ver/jp/undefined_syms.txt +++ b/ver/jp/undefined_syms.txt @@ -101,7 +101,7 @@ dead_basic_ai_chase = basic_ai_chase + 0x42C0; dead_basic_ai_lose_player = basic_ai_lose_player + 0x42C0; dead_BasicAI_Main = BasicAI_Main + 0x42C0; dead_basic_ai_suspend = basic_ai_suspend + 0x42F0; -dead_snd_ambient_mute = snd_ambient_mute + 0x4350; +dead_snd_ambient_fade_out = snd_ambient_fade_out + 0x4350; dead_get_current_map_settings = get_current_map_settings + 0x43E0; dead_load_asset_by_name = load_asset_by_name + 0x43F0; dead_osVirtualToPhysical = osVirtualToPhysical + 0x5030; @@ -331,7 +331,7 @@ dead_ModifyGlobalOverrideFlags = ModifyGlobalOverrideFlags + 0xD5D0; dead_SetValueByRef = SetValueByRef + 0xD5D0; dead_GetValueByRef = GetValueByRef + 0xD5D0; dead_FadeOutMusic = FadeOutMusic + 0xD5D0; -dead_SetMusicTrack = SetMusicTrack + 0xD5D0; +dead_SetMusic = SetMusic + 0xD5D0; dead_FadeInMusic = FadeInMusic + 0xD5D0; dead_PopSong = PopSong + 0xD5D0; dead_PushSong = PushSong + 0xD5D0; diff --git a/ver/pal/splat.yaml b/ver/pal/splat.yaml index 9ebec08f05..3bba298bbb 100644 --- a/ver/pal/splat.yaml +++ b/ver/pal/splat.yaml @@ -90,18 +90,18 @@ segments: - [auto, c, status_icons] - [auto, c, 23680] - [auto, c, 25AF0] - - [auto, c, audio/25f00_len_940] + - [auto, c, audio/core/system] - [auto, c, audio/sfx_player] - - [auto, c, audio/28910_len_5090] - - [auto, c, audio/2BF90] - - [auto, c, audio/2d9a0_len_890] - - [auto, c, audio/2e230_len_2190] - - [auto, c, audio/303c0_len_3e10] - - [auto, c, audio/30450] - - [auto, c, audio/31650] - - [auto, c, audio/33450] - - [auto, c, audio/tables] - - [auto, c, audio/reverb] + - [auto, c, audio/bgm_player] + - [auto, c, audio/mseq_player] + - [auto, c, audio/core/voice] + - [auto, c, audio/core/engine] + - [auto, c, audio/load_banks] + - [auto, c, audio/snd_interface] + - [auto, c, audio/core/syn_driver] + - [auto, c, audio/core/pull_voice] + - [auto, c, audio/core/tables] + - [auto, c, audio/core/reverb] - [auto, c, effects] - [auto, c, 5B320] - [auto, c, world/world] @@ -873,8 +873,8 @@ segments: - [auto, c, audio/ambience] - [auto, c, windows] - [auto, c, sprite_shading] - - [auto, c, audio/sfx] - - [auto, c, audio/e0b30_len_b80] + - [auto, c, audio/sfx_control] + - [auto, c, audio/bgm_control] - [auto, c, bss/engine2_post_bss] - start: 0xE1610 type: .data diff --git a/ver/us/splat.yaml b/ver/us/splat.yaml index f6329b5f13..8e4a7d2d48 100644 --- a/ver/us/splat.yaml +++ b/ver/us/splat.yaml @@ -133,18 +133,18 @@ segments: - [auto, c, status_icons] - [auto, c, 23680] - [auto, c, 25AF0] - - [auto, c, audio/25f00_len_940] + - [auto, c, audio/core/system] - [auto, c, audio/sfx_player] - - [auto, c, audio/28910_len_5090] - - [auto, c, audio/2BF90] - - [auto, c, audio/2d9a0_len_890] - - [auto, c, audio/2e230_len_2190] - - [auto, c, audio/303c0_len_3e10] - - [auto, c, audio/30450] - - [auto, c, audio/31650] - - [auto, c, audio/33450] - - [auto, c, audio/tables] - - [auto, c, audio/reverb] + - [auto, c, audio/bgm_player] + - [auto, c, audio/mseq_player] + - [auto, c, audio/core/voice] + - [auto, c, audio/core/engine] + - [auto, c, audio/load_banks] + - [auto, c, audio/snd_interface] + - [auto, c, audio/core/syn_driver] + - [auto, c, audio/core/pull_voice] + - [auto, c, audio/core/tables] + - [auto, c, audio/core/reverb] - [auto, c, effects] - [auto, c, 5B320] - [auto, c, world/world] @@ -840,8 +840,8 @@ segments: - [auto, c, audio/ambience] - [auto, c, windows] - [auto, c, sprite_shading] - - [auto, c, audio/sfx] - - [auto, c, audio/e0b30_len_b80] + - [auto, c, audio/sfx_control] + - [auto, c, audio/bgm_control] - [auto, c, bss/engine2_post_bss] - start: 0xE2DF0 type: .data diff --git a/ver/us/symbol_addrs.txt b/ver/us/symbol_addrs.txt index 49506db892..f1623912fc 100644 --- a/ver/us/symbol_addrs.txt +++ b/ver/us/symbol_addrs.txt @@ -501,21 +501,21 @@ au_sfx_init = 0x8004B440; // type:func rom:0x26840 au_sfx_load_groups_from_SEF = 0x8004B62C; // type:func rom:0x26A2C au_sfx_clear_queue = 0x8004B698; // type:func rom:0x26A98 au_sfx_enqueue_event = 0x8004B6D8; // type:func rom:0x26AD8 -au_sfx_update_main = 0x8004B748; // type:func rom:0x26B48 +au_sfx_begin_video_frame = 0x8004B748; // type:func rom:0x26B48 au_sfx_set_reverb_type = 0x8004B9E4; // type:func rom:0x26DE4 au_sfx_set_state = 0x8004BA54; // type:func rom:0x26E54 -au_sfx_load_sound = 0x8004BA74; // type:func rom:0x26E74 +au_sfx_try_sound = 0x8004BA74; // type:func rom:0x26E74 au_sfx_play_sound = 0x8004C0E4; // type:func rom:0x274E4 au_sfx_set_triggers = 0x8004C268; // type:func rom:0x27668 au_sfx_stop_by_id = 0x8004C2A4; // type:func rom:0x276A4 au_sfx_stop_by_exlusive_id = 0x8004C300; // type:func rom:0x27700 au_sfx_set_modifiers = 0x8004C358; // type:func rom:0x27758 au_sfx_set_player_modifiers = 0x8004C3D4; // type:func rom:0x277D4 -au_sfx_manager_update = 0x8004C444; // type:func rom:0x27844 +au_sfx_manager_audio_frame_update = 0x8004C444; // type:func rom:0x27844 au_sfx_update_basic = 0x8004C578; // type:func rom:0x27978 au_sfx_get_scaled_volume = 0x8004C844; // type:func rom:0x27C44 au_sfx_update_sequence = 0x8004C884; // type:func rom:0x27C84 -snd_set_voice_volume = 0x8004CD94; // type:func rom:0x28194 +au_sfx_set_voice_volume = 0x8004CD94; // type:func rom:0x28194 func_8004CDF8 = 0x8004CDF8; // type:func rom:0x281F8 au_SEFCmd_00_SetVolume = 0x8004CE70; // type:func rom:0x28270 au_SEFCmd_01_SetPan = 0x8004CEA4; // type:func rom:0x282A4 @@ -538,68 +538,68 @@ au_SEFCmd_11_Restart = 0x8004D310; // type:func rom:0x28710 au_SEFCmd_12_NOP = 0x8004D31C; // type:func rom:0x2871C au_SEFCmd_13_SetRandomPitch = 0x8004D324; // type:func rom:0x28724 au_SEFCmd_14_SetRandomVelocity = 0x8004D33C; // type:func rom:0x2873C -au_SEFCmd_15_SetUnkA3 = 0x8004D354; // type:func rom:0x28754 +au_SEFCmd_15_SetRandomUnused = 0x8004D354; // type:func rom:0x28754 au_SEFCmd_16_SetEnvelopePress = 0x8004D36C; // type:func rom:0x2876C au_SEFCmd_17_PlaySound = 0x8004D3A0; // type:func rom:0x287A0 au_SEFCmd_18_SetAlternativeVolume = 0x8004D3F8; // type:func rom:0x287F8 func_8004D428 = 0x8004D428; // type:func rom:0x28828 func_8004D484 = 0x8004D484; // type:func rom:0x28884 au_sfx_reset_players = 0x8004D4BC; // type:func rom:0x288BC -au_bgm_update_main = 0x8004D510; // type:func rom:0x28910 +au_bgm_begin_video_frame = 0x8004D510; // type:func rom:0x28910 au_bgm_get_player_with_song_name = 0x8004D794; // type:func rom:0x28B94 -au_bgm_dispatch_player_event = 0x8004D7E0; // type:func rom:0x28BE0 +au_bgm_process_init_song = 0x8004D7E0; // type:func rom:0x28BE0 au_bgm_stop_song = 0x8004DA0C; // type:func rom:0x28E0C au_bgm_stop_all = 0x8004DA74; // type:func rom:0x28E74 au_bgm_stop_player = 0x8004DAA8; // type:func rom:0x28EA8 au_bgm_is_song_playing = 0x8004DAE0; // type:func rom:0x28EE0 -func_8004DB28 = 0x8004DB28; // type:func rom:0x28F28 -func_8004DB4C = 0x8004DB4C; // type:func rom:0x28F4C +au_bgm_player_is_active = 0x8004DB28; // type:func rom:0x28F28 +au_bgm_process_fade_out = 0x8004DB4C; // type:func rom:0x28F4C func_8004DC80 = 0x8004DC80; // type:func rom:0x29080 -func_8004DCB8 = 0x8004DCB8; // type:func rom:0x290B8 -func_8004DE2C = 0x8004DE2C; // type:func rom:0x2922C -func_8004DFD4 = 0x8004DFD4; // type:func rom:0x293D4 -func_8004E0F4 = 0x8004E0F4; // type:func rom:0x294F4 +au_bgm_process_suspend = 0x8004DCB8; // type:func rom:0x290B8 +au_bgm_process_resume = 0x8004DE2C; // type:func rom:0x2922C +au_bgm_restore_copied_player = 0x8004DFD4; // type:func rom:0x293D4 +au_bgm_adjust_volume = 0x8004E0F4; // type:func rom:0x294F4 au_bgm_player_init = 0x8004E158; // type:func rom:0x29558 au_bgm_set_effect_indices = 0x8004E344; // type:func rom:0x29744 au_bgm_update_fade = 0x8004E3A4; // type:func rom:0x297A4 -func_8004E444 = 0x8004E444; // type:func rom:0x29844 -func_8004E4B8 = 0x8004E4B8; // type:func rom:0x298B8 +au_bgm_update_bus_volumes = 0x8004E444; // type:func rom:0x29844 +au_bgm_player_audio_frame_update = 0x8004E4B8; // type:func rom:0x298B8 au_bgm_player_initialize = 0x8004E5D8; // type:func rom:0x299D8 -func_8004E844 = 0x8004E844; // type:func rom:0x29C44 -func_8004E880 = 0x8004E880; // type:func rom:0x29C80 -au_bgm_player_read_segment = 0x8004E904; // type:func rom:0x29D04 -au_bgm_end_segment_loop = 0x8004EA34; // type:func rom:0x29E34 -au_bgm_load_subsegment = 0x8004EAD4; // type:func rom:0x29ED4 +bgm_clear_custom_note_press = 0x8004E844; // type:func rom:0x29C44 +bgm_set_tick_resolution = 0x8004E880; // type:func rom:0x29C80 +au_bgm_player_read_composition = 0x8004E904; // type:func rom:0x29D04 +au_bgm_end_composition_loop = 0x8004EA34; // type:func rom:0x29E34 +au_bgm_load_phrase = 0x8004EAD4; // type:func rom:0x29ED4 au_bgm_player_update_stop = 0x8004EC04; // type:func rom:0x2A004 au_bgm_player_update_playing = 0x8004EC68; // type:func rom:0x2A068 au_BGMCmd_E0_MasterTempo = 0x8004FBBC; // type:func rom:0x2AFBC -snd_bpm_to_tempo = 0x8004FC08; // type:func rom:0x2B008 +au_bgm_bpm_to_tempo = 0x8004FC08; // type:func rom:0x2B008 au_BGMCmd_E1_MasterVolume = 0x8004FCB4; // type:func rom:0x2B0B4 -au_BGMCmd_E2_MasterPitchShift = 0x8004FCE4; // type:func rom:0x2B0E4 +au_BGMCmd_E2_MasterDetune = 0x8004FCE4; // type:func rom:0x2B0E4 au_BGMCmd_E3 = 0x8004FD04; // type:func rom:0x2B104 au_BGMCmd_E6_MasterEffect = 0x8004FD38; // type:func rom:0x2B138 au_BGMCmd_E4_MasterTempoFade = 0x8004FD94; // type:func rom:0x2B194 au_BGMCmd_E5_MasterVolumeFade = 0x8004FE10; // type:func rom:0x2B210 au_BGMCmd_E8_TrackOverridePatch = 0x8004FE6C; // type:func rom:0x2B26C -au_BGMCmd_E9_SubTrackVolume = 0x8004FEB0; // type:func rom:0x2B2B0 -au_BGMCmd_F6_TrackVolumeFade = 0x8004FED0; // type:func rom:0x2B2D0 -au_BGMCmd_EA_SubTrackPan = 0x8004FF3C; // type:func rom:0x2B33C -au_BGMCmd_EB_SubTrackReverb = 0x8004FF58; // type:func rom:0x2B358 -au_BGMCmd_EC_SegTrackVolume = 0x8004FF70; // type:func rom:0x2B370 -au_BGMCmd_ED_SubTrackCoarseTune = 0x8004FF88; // type:func rom:0x2B388 -au_BGMCmd_EE_SubTrackFineTune = 0x8004FFA8; // type:func rom:0x2B3A8 -au_BGMCmd_EF_SegTrackTune = 0x8004FFB4; // type:func rom:0x2B3B4 +au_BGMCmd_E9_InstrumentVolume = 0x8004FEB0; // type:func rom:0x2B2B0 +au_BGMCmd_F6_InstrumentVolumeLerp = 0x8004FED0; // type:func rom:0x2B2D0 +au_BGMCmd_EA_InstrumentPan = 0x8004FF3C; // type:func rom:0x2B33C +au_BGMCmd_EB_InstrumentReverb = 0x8004FF58; // type:func rom:0x2B358 +au_BGMCmd_EC_TrackVolume = 0x8004FF70; // type:func rom:0x2B370 +au_BGMCmd_ED_InstrumentCoarseTune = 0x8004FF88; // type:func rom:0x2B388 +au_BGMCmd_EE_InstrumentFineTune = 0x8004FFA8; // type:func rom:0x2B3A8 +au_BGMCmd_EC_TrackDetune = 0x8004FFB4; // type:func rom:0x2B3B4 au_BGMCmd_F0_TrackTremolo = 0x8004FFC8; // type:func rom:0x2B3C8 -au_BGMCmd_F1_TrackTremoloSpeed = 0x8004FFE4; // type:func rom:0x2B3E4 -au_BGMCmd_F2_TrackTremoloTime = 0x8004FFF0; // type:func rom:0x2B3F0 +au_BGMCmd_F1_TrackTremoloRate = 0x8004FFE4; // type:func rom:0x2B3E4 +au_BGMCmd_F2_TrackTremoloDepth = 0x8004FFF0; // type:func rom:0x2B3F0 au_BGMCmd_F3_TrackTremoloStop = 0x8004FFFC; // type:func rom:0x2B3FC -au_BGMCmd_F4 = 0x80050004; // type:func rom:0x2B404 -au_BGMCmd_F5_TrackVoice = 0x80050020; // type:func rom:0x2B420 -au_BGMCmd_F7_SubTrackReverbType = 0x80050128; // type:func rom:0x2B528 +au_BGMCmd_F4_SubTrackRandomPan = 0x80050004; // type:func rom:0x2B404 +au_BGMCmd_F5_UseInstrument = 0x80050020; // type:func rom:0x2B420 +au_BGMCmd_F7_ReverbType = 0x80050128; // type:func rom:0x2B528 au_BGMCmd_FD_EventTrigger = 0x8005015C; // type:func rom:0x2B55C au_BGMCmd_FE_Detour = 0x80050184; // type:func rom:0x2B584 -au_BGMCmd_FC_Jump = 0x800501A8; // type:func rom:0x2B5A8 -au_BGMCmd_FF = 0x800502F0; // type:func rom:0x2B6F0 +au_BGMCmd_FC_Branch = 0x800501A8; // type:func rom:0x2B5A8 +au_BGMCmd_FF_Special = 0x800502F0; // type:func rom:0x2B6F0 au_BGMCmd_NOP = 0x80050560; // type:func rom:0x2B960 au_bgm_get_random_pan = 0x80050568; // type:func rom:0x2B968 func_800505E4 = 0x800505E4; // type:func rom:0x2B9E4 @@ -610,9 +610,9 @@ au_bgm_set_playback_rate = 0x80050770; // type:func rom:0x2BB70 au_bgm_player_set_detune = 0x80050818; // type:func rom:0x2BC18 au_bgm_change_track_volume = 0x8005083C; // type:func rom:0x2BC3C func_8005087C = 0x8005087C; // type:func rom:0x2BC7C -func_80050888 = 0x80050888; // type:func rom:0x2BC88 -func_80050900 = 0x80050900; // type:func rom:0x2BD00 -func_80050970 = 0x80050970; // type:func rom:0x2BD70 +au_bgm_set_prox_mix_fade = 0x80050888; // type:func rom:0x2BC88 +au_bgm_reset_all_voices = 0x80050900; // type:func rom:0x2BD00 +au_bgm_set_linked_tracks = 0x80050970; // type:func rom:0x2BD70 au_amb_manager_init = 0x80050B90; // type:func rom:0x2BF90 au_amb_check_player_index = 0x80050C30; // type:func rom:0x2C030 au_amb_load_tracks_fade = 0x80050C54; // type:func rom:0x2C054 @@ -624,16 +624,16 @@ func_80050E84 = 0x80050E84; // type:func rom:0x2C284 func_80050EF0 = 0x80050EF0; // type:func rom:0x2C2F0 func_80050F64 = 0x80050F64; // type:func rom:0x2C364 au_amb_set_volume = 0x80050FD0; // type:func rom:0x2C3D0 -au_amb_is_stopped = 0x80051050; // type:func rom:0x2C450 +au_amb_check_stopped = 0x80051050; // type:func rom:0x2C450 au_amb_play_sequence = 0x800510A4; // type:func rom:0x2C4A4 -au_amb_manager_update = 0x800511BC; // type:func rom:0x2C5BC +au_amb_manager_audio_frame_update = 0x800511BC; // type:func rom:0x2C5BC au_amb_load_track_fade_info = 0x80051334; // type:func rom:0x2C734 au_amb_player_update = 0x80051434; // type:func rom:0x2C834 au_amb_read_next = 0x800521D0; // type:func rom:0x2D5D0 au_amb_player_stop = 0x800521E8; // type:func rom:0x2D5E8 au_amb_save_voices = 0x800522A8; // type:func rom:0x2D6A8 au_amb_restore_voices = 0x8005232C; // type:func rom:0x2D72C -au_update_stopped_voices = 0x800525A0; // type:func rom:0x2D9A0 +au_flush_finished_voices = 0x800525A0; // type:func rom:0x2D9A0 au_init_voices = 0x80052614; // type:func rom:0x2DA14 func_80052660 = 0x80052660; // type:func rom:0x2DA60 au_voice_after_volume_change = 0x80052B44; // type:func rom:0x2DF44 @@ -641,14 +641,14 @@ au_voice_get_delta = 0x80052BC0; // type:func rom:0x2DFC0 au_voice_start = 0x80052BF8; // type:func rom:0x2DFF8 au_voice_step = 0x80052CFC; // type:func rom:0x2E0FC au_voice_set_vol_changed = 0x80052E18; // type:func rom:0x2E218 -func_80052E30 = 0x80052E30; // type:func rom:0x2E230 +au_release_voice = 0x80052E30; // type:func rom:0x2E230 au_engine_init = 0x80052E5C; // type:func rom:0x2E25C au_reset_instrument = 0x800532F4; // type:func rom:0x2E6F4 au_reset_drum_entry = 0x80053370; // type:func rom:0x2E770 au_reset_instrument_entry = 0x800533A8; // type:func rom:0x2E7A8 -au_update_clients_2 = 0x800533D0; // type:func rom:0x2E7D0 +au_update_clients_for_audio_frame = 0x800533D0; // type:func rom:0x2E7D0 snd_add_sfx_output = 0x800535C0; // type:func rom:0x2E9C0 -au_syn_update = 0x80053654; // type:func rom:0x2EA54 +au_syn_begin_audio_frame = 0x80053654; // type:func rom:0x2EA54 au_reset_nonfree_voice = 0x80053888; // type:func rom:0x2EC88 au_reset_voice = 0x800538C4; // type:func rom:0x2ECC4 au_compute_pitch_ratio = 0x800538F8; // type:func rom:0x2ECF8 @@ -656,41 +656,41 @@ au_fade_init = 0x80053974; // type:func rom:0x2ED74 au_fade_clear = 0x80053A18; // type:func rom:0x2EE18 au_fade_update = 0x80053A28; // type:func rom:0x2EE28 au_fade_set_volume = 0x80053A98; // type:func rom:0x2EE98 -func_80053AC8 = 0x80053AC8; // type:func rom:0x2EEC8 -au_fade_set_vol_scale = 0x80053AEC; // type:func rom:0x2EEEC -func_80053B04 = 0x80053B04; // type:func rom:0x2EF04 -func_80053BA8 = 0x80053BA8; // type:func rom:0x2EFA8 +au_fade_flush = 0x80053AC8; // type:func rom:0x2EEC8 +au_fade_set_envelope = 0x80053AEC; // type:func rom:0x2EEEC +au_fade_calc_envelope = 0x80053B04; // type:func rom:0x2EF04 +au_fade_update_envelope = 0x80053BA8; // type:func rom:0x2EFA8 au_get_instrument = 0x80053BE8; // type:func rom:0x2EFE8 au_get_bgm_player_and_file = 0x80053C58; // type:func rom:0x2F058 au_get_bgm_player = 0x80053CB4; // type:func rom:0x2F0B4 au_load_song_files = 0x80053CF8; // type:func rom:0x2F0F8 -func_80053E58 = 0x80053E58; // type:func rom:0x2F258 -func_80053F64 = 0x80053F64; // type:func rom:0x2F364 +au_unk_80053E58 = 0x80053E58; // type:func rom:0x2F258 +au_get_snapshot_by_index = 0x80053F64; // type:func rom:0x2F364 au_ambient_load = 0x80053F80; // type:func rom:0x2F380 -func_80054248 = 0x80054248; // type:func rom:0x2F648 +au_get_client_by_priority = 0x80054248; // type:func rom:0x2F648 au_load_INIT = 0x800542BC; // type:func rom:0x2F6BC au_fetch_SBN_file = 0x8005447C; // type:func rom:0x2F87C au_load_PER = 0x800544F8; // type:func rom:0x2F8F8 au_load_PRG = 0x800545B4; // type:func rom:0x2F9B4 -snd_load_BGM = 0x8005465C; // type:func rom:0x2FA5C +au_load_BGM = 0x8005465C; // type:func rom:0x2FA5C au_get_BK_instruments = 0x80054744; // type:func rom:0x2FB44 au_load_BK_to_bank = 0x800547C8; // type:func rom:0x2FBC8 au_swizzle_BK_instruments = 0x800549F8; // type:func rom:0x2FDF8 -func_80054AA0 = 0x80054AA0; // type:func rom:0x2FEA0 +au_load_static_BK_to_bank = 0x80054AA0; // type:func rom:0x2FEA0 snd_load_BK = 0x80054C4C; // type:func rom:0x3004C func_80054C84 = 0x80054C84; // type:func rom:0x30084 -func_80054CE0 = 0x80054CE0; // type:func rom:0x300E0 -func_80054D74 = 0x80054D74; // type:func rom:0x30174 -func_80054DA8 = 0x80054DA8; // type:func rom:0x301A8 +au_set_bus_volume_level = 0x80054CE0; // type:func rom:0x300E0 +au_set_reverb_type = 0x80054D74; // type:func rom:0x30174 +au_sync_channel_delay_enabled = 0x80054DA8; // type:func rom:0x301A8 au_read_rom = 0x80054E00; // type:func rom:0x30200 au_memset = 0x80054E90; // type:func rom:0x30290 au_copy_bytes = 0x80054F48; // type:func rom:0x30348 au_copy_words = 0x80054F74; // type:func rom:0x30374 au_load_BK_headers = 0x80054FC0; // type:func rom:0x303C0 -func_80055050 = 0x80055050; // type:func rom:0x30450 -func_80055068 = 0x80055068; // type:func rom:0x30468 -func_80055110 = 0x80055110; // type:func rom:0x30510 -func_8005513C = 0x8005513C; // type:func rom:0x3053C +snd_notify_engine_ready = 0x80055050; // type:func rom:0x30450 +snd_legacy_sound_dispatch = 0x80055068; // type:func rom:0x30468 +snd_bgm_clear_legacy_commands = 0x80055110; // type:func rom:0x30510 +snd_bgm_enqueue_legacy_command = 0x8005513C; // type:func rom:0x3053C snd_start_sound = 0x800551E0; // type:func rom:0x305E0 snd_start_sound_with_shift = 0x80055240; // type:func rom:0x30640 snd_adjust_sound = 0x800552D0; // type:func rom:0x306D0 @@ -705,31 +705,31 @@ snd_ambient_stop_slow = 0x800554E8; // type:func rom:0x308E8 snd_ambient_pause = 0x8005553C; // type:func rom:0x3093C snd_ambient_resume = 0x80055590; // type:func rom:0x30990 snd_ambient_is_stopped = 0x800555E4; // type:func rom:0x309E4 -snd_ambient_mute = 0x80055618; // type:func rom:0x30A18 +snd_ambient_fade_out = 0x80055618; // type:func rom:0x30A18 snd_ambient_set_volume = 0x8005566C; // type:func rom:0x30A6C snd_ambient_disable = 0x800556D0; // type:func rom:0x30AD0 snd_ambient_enable = 0x80055718; // type:func rom:0x30B18 -snd_ambient_80055760 = 0x80055760; // type:func rom:0x30B60 -snd_ambient_stop_all = 0x800557CC; // type:func rom:0x30BCC -snd_ambient_play_only = 0x80055848; // type:func rom:0x30C48 -au_song_load = 0x800558D4; // type:func rom:0x30CD4 -au_song_start = 0x8005591C; // type:func rom:0x30D1C -au_song_start_variation = 0x80055970; // type:func rom:0x30D70 -au_song_stop = 0x800559C4; // type:func rom:0x30DC4 -au_stop_songs = 0x800559E0; // type:func rom:0x30DE0 -au_song_is_playing = 0x800559FC; // type:func rom:0x30DFC -snd_set_song_variation_fade = 0x80055A18; // type:func rom:0x30E18 -snd_set_song_fade = 0x80055A6C; // type:func rom:0x30E6C -snd_set_song_variation_fade_time = 0x80055ABC; // type:func rom:0x30EBC -func_80055AF0 = 0x80055AF0; // type:func rom:0x30EF0 -func_80055B28 = 0x80055B28; // type:func rom:0x30F28 +snd_ambient_radio_setup = 0x80055760; // type:func rom:0x30B60 +snd_ambient_radio_stop = 0x800557CC; // type:func rom:0x30BCC +snd_ambient_radio_select = 0x80055848; // type:func rom:0x30C48 +snd_song_load = 0x800558D4; // type:func rom:0x30CD4 +snd_song_request_play_default = 0x8005591C; // type:func rom:0x30D1C +snd_song_request_play = 0x80055970; // type:func rom:0x30D70 +snd_song_stop = 0x800559C4; // type:func rom:0x30DC4 +snd_song_stop_all = 0x800559E0; // type:func rom:0x30DE0 +snd_song_is_playing = 0x800559FC; // type:func rom:0x30DFC +snd_song_request_fade_in = 0x80055A18; // type:func rom:0x30E18 +snd_song_request_fade_in_default = 0x80055A6C; // type:func rom:0x30E6C +snd_song_request_fade_out = 0x80055ABC; // type:func rom:0x30EBC +snd_song_UNK_push_stop = 0x80055AF0; // type:func rom:0x30EF0 +snd_song_UNK_request_pop = 0x80055B28; // type:func rom:0x30F28 func_80055B80 = 0x80055B80; // type:func rom:0x30F80 -func_80055BB8 = 0x80055BB8; // type:func rom:0x30FB8 -func_80055BF0 = 0x80055BF0; // type:func rom:0x30FF0 -func_80055C2C = 0x80055C2C; // type:func rom:0x3102C -func_80055C64 = 0x80055C64; // type:func rom:0x31064 -func_80055C94 = 0x80055C94; // type:func rom:0x31094 -snd_set_song_variation = 0x80055CC4; // type:func rom:0x310C4 +snd_song_UNK_request_push_fade_out = 0x80055BB8; // type:func rom:0x30FB8 +snd_song_request_pause = 0x80055BF0; // type:func rom:0x30FF0 +snd_song_request_unpause = 0x80055C2C; // type:func rom:0x3102C +snd_song_set_volume_quiet = 0x80055C64; // type:func rom:0x31064 +snd_song_set_volume_full = 0x80055C94; // type:func rom:0x31094 +snd_song_set_linked_mode = 0x80055CC4; // type:func rom:0x310C4 snd_song_get_playing_info = 0x80055CE8; // type:func rom:0x310E8 snd_song_set_playback_rate = 0x80055D38; // type:func rom:0x31138 snd_song_set_detune = 0x80055D8C; // type:func rom:0x3118C @@ -740,21 +740,21 @@ snd_song_change_track_volume = 0x80055F58; // type:func rom:0x31358 snd_song_set_track_vol_mute = 0x80055FD4; // type:func rom:0x313D4 snd_song_set_track_vol_quiet = 0x80055FF0; // type:func rom:0x313F0 snd_song_set_track_vol_full = 0x8005600C; // type:func rom:0x3140C -bgm_set_proximity_mix_far = 0x80056028; // type:func rom:0x31428 -bgm_set_proximity_mix_near = 0x80056044; // type:func rom:0x31444 -bgm_set_proximity_mix_full = 0x80056068; // type:func rom:0x31468 -bgm_poll_music_events = 0x8005608C; // type:func rom:0x3148C -bgm_flush_music_events = 0x800560A8; // type:func rom:0x314A8 -music_event_trigger = 0x800560BC; // type:func rom:0x314BC -func_8005610C = 0x8005610C; // type:func rom:0x3150C -func_80056144 = 0x80056144; // type:func rom:0x31544 -audio_set_stereo = 0x8005615C; // type:func rom:0x3155C -audio_set_mono = 0x80056180; // type:func rom:0x31580 -func_800561A4 = 0x800561A4; // type:func rom:0x315A4 -func_800561C4 = 0x800561C4; // type:func rom:0x315C4 -func_800561E4 = 0x800561E4; // type:func rom:0x315E4 -enable_sounds = 0x80056204; // type:func rom:0x31604 -disable_sounds = 0x80056228; // type:func rom:0x31628 +snd_song_set_proximity_mix_far = 0x80056028; // type:func rom:0x31428 +snd_song_set_proximity_mix_near = 0x80056044; // type:func rom:0x31444 +snd_song_set_proximity_mix_full = 0x80056068; // type:func rom:0x31468 +snd_song_poll_music_events = 0x8005608C; // type:func rom:0x3148C +snd_song_flush_music_events = 0x800560A8; // type:func rom:0x314A8 +snd_song_trigger_music_event = 0x800560BC; // type:func rom:0x314BC +snd_song_clear_music_events = 0x8005610C; // type:func rom:0x3150C +snd_register_callback = 0x80056144; // type:func rom:0x31544 +snd_set_stereo = 0x8005615C; // type:func rom:0x3155C +snd_set_mono = 0x80056180; // type:func rom:0x31580 +snd_set_bgm_volume = 0x800561A4; // type:func rom:0x315A4 +snd_set_sfx_volume = 0x800561C4; // type:func rom:0x315C4 +snd_set_sfx_reverb_type = 0x800561E4; // type:func rom:0x315E4 +snd_enable_sfx = 0x80056204; // type:func rom:0x31604 +snd_disable_sfx = 0x80056228; // type:func rom:0x31628 au_driver_init = 0x80056250; // type:func rom:0x31650 au_driver_release = 0x800565A4; // type:func rom:0x319A4 alAudioFrame = 0x800565C0; // type:func rom:0x319C0 @@ -789,7 +789,7 @@ au_set_delay_time = 0x80057DC8; // type:func rom:0x331C8 au_delay_left_channel = 0x80057E08; // type:func rom:0x33208 au_delay_right_channel = 0x80057E5C; // type:func rom:0x3325C au_disable_channel_delay = 0x80057EB0; // type:func rom:0x332B0 -au_delay_channel = 0x80057ED0; // type:func rom:0x332D0 +au_init_delay_channel = 0x80057ED0; // type:func rom:0x332D0 alHeapInit = 0x80057F20; // type:func rom:0x33320 alHeapAlloc = 0x80057F90; // type:func rom:0x33390 alCopy = 0x80057FD8; // type:func rom:0x333D8 @@ -798,14 +798,14 @@ au_pull_voice = 0x80058050; // type:func rom:0x33450 _decodeChunk = 0x80058B20; // type:func rom:0x33F20 _getRate = 0x80058C6C; // type:func rom:0x3406C _init_lpfilter = 0x80058DD0; // type:func rom:0x341D0 -func_80058E84 = 0x80058E84; // type:func rom:0x34284 -func_80058F88 = 0x80058F88; // type:func rom:0x34388 -func_80059008 = 0x80059008; // type:func rom:0x34408 -func_8005904C = 0x8005904C; // type:func rom:0x3444C +au_fx_create = 0x80058E84; // type:func rom:0x34284 +au_filter_create = 0x80058F88; // type:func rom:0x34388 +au_filter_init = 0x80059008; // type:func rom:0x34408 +au_fx_load_preset = 0x8005904C; // type:func rom:0x3444C au_pull_fx = 0x80059310; // type:func rom:0x34710 au_fx_param_hdl = 0x800598A0; // type:func rom:0x34CA0 -_saveBuffer = 0x80059AB8; // type:func rom:0x34EB8 -func_80059BD4 = 0x80059BD4; // type:func rom:0x34FD4 +_loadDelayLineBuffer = 0x80059AB8; // type:func rom:0x34EB8 +updateTriangleModulation = 0x80059BD4; // type:func rom:0x34FD4 stub_effect_delegate = 0x80059C80; // type:func rom:0x35080 set_effect_pos_offset = 0x80059C88; // type:func rom:0x35088 clear_effect_data = 0x80059C9C; // type:func rom:0x3509C @@ -1411,12 +1411,12 @@ nuAuFrameCounter = 0x8007817C; // rom:0x5357C nuAuTaskStop = 0x80078180; // rom:0x53580 AuSynUseStereo = 0x80078181; // rom:0x53581 PreventBGMPlayerUpdate = 0x80078DB0; // rom:0x541B0 -D_80078DB4 = 0x80078DB4; // rom:0x541B4 +SoundEngineReady = 0x80078DB4; // rom:0x541B4 AuAmbienceEnabledOnlyPlayer = 0x80078DB6; // rom:0x541B6 -D_80078DB8 = 0x80078DB8; // rom:0x541B8 -D_80078DC4 = 0x80078DC4; // rom:0x541C4 -D_80078DCC = 0x80078DCC; // rom:0x541CC -D_80078DD0 = 0x80078DD0; // rom:0x541D0 +TrackVols_JAN_Full = 0x80078DB8; // rom:0x541B8 +TrackVols_Unused1 = 0x80078DC4; // rom:0x541C4 +TrackVols_TIK_Shiver = 0x80078DCC; // rom:0x541CC +TrackVols_Unused3 = 0x80078DD0; // rom:0x541D0 D_80078DDC = 0x80078DDC; // rom:0x541DC D_80078DF8 = 0x80078DF8; // rom:0x541F8 D_80078E14 = 0x80078E14; // rom:0x54214 @@ -3048,7 +3048,7 @@ wMapTexName = 0x800B0CF0; // rom:0x8C0F0 nuContWaitMesgQ = 0x800B0EB8; // rom:0x8C2B8 __osContPifRam = 0x800B0ED0; // rom:0x8C2D0 gCurrentEncounter = 0x800B0F10; // rom:0x8C310 size:0xB0 -popup_menu_draw_menu_contents = 0x800F3680; // type:func rom:0x8CB30 +popup_draw_menu_content = 0x800F3680; // type:func rom:0x8CB30 __Dom2SpeedParam = 0x800B1B08; // rom:0x8CF08 D_800B1B0C = 0x800B1B0C; // rom:0x8CF0C D_800B1B0D = 0x800B1B0D; // rom:0x8CF0D @@ -3061,13 +3061,13 @@ D_800B1B90 = 0x800B1B90; // rom:0x8CF90 nuContRmbCtl = 0x800B1D40; // rom:0x8D140 nuContData = 0x800B1D68; // rom:0x8D168 gCameras = 0x800B1D80; // rom:0x8D180 size:0x1560 -popup_menu_draw_title_contents = 0x800F4648; // type:func rom:0x8DAF8 -func_800F48F4 = 0x800F48F4; // type:func rom:0x8DDA4 -func_800F4944 = 0x800F4944; // type:func rom:0x8DDF4 -func_800F4C1C = 0x800F4C1C; // type:func rom:0x8E0CC +popup_draw_title_content = 0x800F4648; // type:func rom:0x8DAF8 +popup_draw_desc_content = 0x800F48F4; // type:func rom:0x8DDA4 +popup_draw_prompt_content = 0x800F4944; // type:func rom:0x8DDF4 +popup_draw_dip_query_content = 0x800F4C1C; // type:func rom:0x8E0CC popup_draw_cost_icon = 0x800F4C6C; // type:func rom:0x8E11C popup_draw_already_have_partner = 0x800F4CF0; // type:func rom:0x8E1A0 -func_800F4D28 = 0x800F4D28; // type:func rom:0x8E1D8 +popup_draw_star_pieces_content = 0x800F4D28; // type:func rom:0x8E1D8 create_standard_popup_menu = 0x800F4E40; // type:func rom:0x8E2F0 create_shop_popup_menu = 0x800F4FC4; // type:func rom:0x8E474 create_battle_popup_menu = 0x800F513C; // type:func rom:0x8E5EC @@ -3841,7 +3841,7 @@ render_shadows = 0x801100CC; // type:func rom:0xA67CC update_entity_transform_matrix = 0x8011022C; // type:func rom:0xA692C update_shadow_transform_matrix = 0x80110374; // type:func rom:0xA6A74 gPopupState = 0x8010D640; // rom:0xA6AF0 -D_8010D644 = 0x8010D644; // rom:0xA6AF4 +PopupDelayTime = 0x8010D644; // rom:0xA6AF4 PopupMenu_SelectedIndex = 0x8010D648; // rom:0xA6AF8 PopupMenu_PrevSelectedIndex = 0x8010D64C; // rom:0xA6AFC PopupMenu_Alpha = 0x8010D650; // rom:0xA6B00 @@ -3858,12 +3858,12 @@ D_8010D66C = 0x8010D66C; // rom:0xA6B1C D_8010D670 = 0x8010D670; // rom:0xA6B20 D_8010D674 = 0x8010D674; // rom:0xA6B24 D_8010D678 = 0x8010D678; // rom:0xA6B28 -D_8010D67C = 0x8010D67C; // rom:0xA6B2C -D_8010D67E = 0x8010D67E; // rom:0xA6B2E -D_8010D680 = 0x8010D680; // rom:0xA6B30 -D_8010D682 = 0x8010D682; // rom:0xA6B32 -D_8010D684 = 0x8010D684; // rom:0xA6B34 -D_8010D686 = 0x8010D686; // rom:0xA6B36 +PopupWinX = 0x8010D67C; // rom:0xA6B2C +PopupWinY = 0x8010D67E; // rom:0xA6B2E +PopupDescX = 0x8010D680; // rom:0xA6B30 +PopupDescY = 0x8010D682; // rom:0xA6B32 +PopupPromptX = 0x8010D684; // rom:0xA6B34 +PopupPromptY = 0x8010D686; // rom:0xA6B36 PopupMenu_StarPieceCounterPosX = 0x8010D688; // rom:0xA6B38 PopupMenu_StarPieceCounterPosY = 0x8010D68A; // rom:0xA6B3A D_8010D68C = 0x8010D68C; // rom:0xA6B3C @@ -3871,7 +3871,7 @@ PopupNotBattle = 0x8010D68E; // rom:0xA6B3E PopupMenu_MaxDisplayableEntryCount = 0x8010D68F; // rom:0xA6B3F D_8010D690 = 0x8010D690; // rom:0xA6B40 D_8010D691 = 0x8010D691; // rom:0xA6B41 -D_8010D692 = 0x8010D692; // rom:0xA6B42 +PopupDelayLength = 0x8010D692; // rom:0xA6B42 D_8010D693 = 0x8010D693; // rom:0xA6B43 gPopupWorker = 0x8010D694; // rom:0xA6B44 PopupNotDipping = 0x8010D698; // rom:0xA6B48 @@ -4412,7 +4412,7 @@ sfx_get_env_sound_instance = 0x801498C4; // type:func rom:0xDFFC4 sfx_play_sound_looping = 0x80149908; // type:func rom:0xE0008 sfx_register_looping_sound_at_position = 0x80149974; // type:func rom:0xE0074 sfx_adjust_env_sound_pos = 0x801499EC; // type:func rom:0xE00EC -snd_stop_tracking_env_sound_pos = 0x80149A6C; // type:func rom:0xE016C +sfx_stop_tracking_env_sound_pos = 0x80149A6C; // type:func rom:0xE016C sfx_play_sound_with_params = 0x80149AB8; // type:func rom:0xE01B8 sfx_adjust_env_sound_params = 0x80149BE4; // type:func rom:0xE02E4 sfx_stop_sound = 0x80149C6C; // type:func rom:0xE036C @@ -4426,26 +4426,26 @@ sfx_compute_spatialized_sound_params_with_depth = 0x8014A1B4; // type:func rom:0 bgm_get_map_default_variation = 0x8014A430; // type:func rom:0xE0B30 bgm_reset_sequence_players = 0x8014A498; // type:func rom:0xE0B98 bgm_reset_volume = 0x8014A52C; // type:func rom:0xE0C2C -bgm_update_music_settings = 0x8014A548; // type:func rom:0xE0C48 +bgm_update_music_control = 0x8014A548; // type:func rom:0xE0C48 _bgm_set_song = 0x8014A7E0; // type:func rom:0xE0EE0 bgm_set_song = 0x8014A918; // type:func rom:0xE1018 -func_8014A964 = 0x8014A964; // type:func rom:0xE1064 +bgm_fade_in_song = 0x8014A964; // type:func rom:0xE1064 bgm_adjust_proximity = 0x8014AA54; // type:func rom:0xE1154 bgm_set_track_volumes = 0x8014AB0C; // type:func rom:0xE120C bgm_clear_track_volumes = 0x8014AB60; // type:func rom:0xE1260 -bgm_set_variation = 0x8014ABB4; // type:func rom:0xE12B4 +bgm_set_linked_mode = 0x8014ABB4; // type:func rom:0xE12B4 bgm_init_music_players = 0x8014AC08; // type:func rom:0xE1308 bgm_quiet_max_volume = 0x8014AC5C; // type:func rom:0xE135C bgm_reset_max_volume = 0x8014AC70; // type:func rom:0xE1370 bgm_set_target_volume = 0x8014AC84; // type:func rom:0xE1384 bgm_update_volume = 0x8014AC94; // type:func rom:0xE1394 -func_8014AD40 = 0x8014AD40; // type:func rom:0xE1440 +bgm_is_any_song_playing = 0x8014AD40; // type:func rom:0xE1440 bgm_pop_song = 0x8014ADA4; // type:func rom:0xE14A4 bgm_push_song = 0x8014ADF8; // type:func rom:0xE14F8 bgm_pop_battle_song = 0x8014AE6C; // type:func rom:0xE156C bgm_push_battle_song = 0x8014AEF8; // type:func rom:0xE15F8 bgm_set_battle_song = 0x8014AF8C; // type:func rom:0xE168C -func_8014AFA0 = 0x8014AFA0; // type:func rom:0xE16A0 +bgm_NOOP = 0x8014AFA0; // type:func rom:0xE16A0 D_8014AFB0 = 0x8014AFB0; // rom:0xE16B0 D_8014AFB4 = 0x8014AFB4; // rom:0xE16B4 ModelRenderModes = 0x8014AFC0; // rom:0xE16C0 @@ -5189,7 +5189,7 @@ MusicTargetVolume = 0x80159AE2; // rom:0xF01E2 MusicMaxVolume = 0x80159AE4; // rom:0xF01E4 MusicCurrentVolume = 0x80159AE6; // rom:0xF01E6 D_80159AE8 = 0x80159AE8; // rom:0xF01E8 -gMusicSettings = 0x80159AF0; // rom:0xF01F0 +gMusicControlData = 0x80159AF0; // rom:0xF01F0 UseSettingsFrom = 0x802CB860; // type:func rom:0xF0210 D_80159B50 = 0x80159B50; // rom:0xF0250 LoadSettings = 0x802CB9F8; // type:func rom:0xF03A8 @@ -5449,11 +5449,11 @@ ClampAngleFloat = 0x802D5AB4; // type:func rom:0xFA464 PollMusicEvents = 0x802D5B10; // type:func rom:0xFA4C0 RegisterMusicEvents = 0x802D5C70; // type:func rom:0xFA620 FadeOutMusic = 0x802D5CE0; // type:func rom:0xFA690 -SetMusicTrack = 0x802D5D4C; // type:func rom:0xFA6FC +SetMusic = 0x802D5D4C; // type:func rom:0xFA6FC FadeInMusic = 0x802D5DF4; // type:func rom:0xFA7A4 EnableMusicProximityMix = 0x802D5EE0; // type:func rom:0xFA890 AdjustMusicProximityMix = 0x802D5F28; // type:func rom:0xFA8D8 -SetMusicTrackVolumes = 0x802D5FA4; // type:func rom:0xFA954 +SetTrackVolumes = 0x802D5FA4; // type:func rom:0xFA954 PopSong = 0x802D5FD8; // type:func rom:0xFA988 PushSong = 0x802D5FF8; // type:func rom:0xFA9A8 PopBattleSong = 0x802D6050; // type:func rom:0xFAA00 @@ -15486,7 +15486,7 @@ mac_05_GetFloorCollider = 0x80243088; // type:func rom:0x8551F8 mac_05_func_802430B4_855224 = 0x802430B4; // type:func rom:0x855224 mac_05_func_802431B0_855320 = 0x802431B0; // type:func rom:0x855320 mac_05_func_80243254_8553C4 = 0x80243254; // type:func rom:0x8553C4 -mac_05_func_8024335C_8554CC = 0x8024335C; // type:func rom:0x8554CC +mac_05_AwaitSongFinished = 0x8024335C; // type:func rom:0x8554CC mac_05_CheckTradeEventTime = 0x80243380; // type:func rom:0x8554F0 mac_05_GetTradeEventItemCount = 0x802433BC; // type:func rom:0x85552C mac_05_resolve_npc = 0x802433F0; // type:func rom:0x855560 @@ -16734,8 +16734,8 @@ sbk_55_SetInstigatorValue_3 = 0x80240040; // type:func rom:0x952A90 sbk_55_foliage_setup_shear_mtx = 0x80240060; // type:func rom:0x952AB0 sbk_55_TransformFoliage = 0x802400D0; // type:func rom:0x952B20 sbk_56_SpawnSunEffect = 0x80240000; // type:func rom:0x953FC0 -sbk_56_StartOasisSongVariation = 0x80240038; // type:func rom:0x953FF8 -sbk_56_StopOasisSongVariation = 0x8024005C; // type:func rom:0x95401C +sbk_56_StartOasisTracks = 0x80240038; // type:func rom:0x953FF8 +sbk_56_StopOasisTracks = 0x8024005C; // type:func rom:0x95401C sbk_56_SuperBlock_SetOverride40 = 0x80240080; // type:func rom:0x954040 sbk_56_SuperBlock_ClearOverride40 = 0x8024009C; // type:func rom:0x95405C sbk_56_SuperBlock_HideBlockContent = 0x802400BC; // type:func rom:0x95407C @@ -17581,8 +17581,8 @@ func_80242790_9C7B70 = 0x80242790; // type:func rom:0x9C7B70 InitializeRadio = 0x802427C0; // type:func rom:0x9C7BA0 SetRadioVolumeMax = 0x80242804; // type:func rom:0x9C7BE4 SetRadioVolumeMute = 0x80242858; // type:func rom:0x9C7C38 -func_80242898_9C7C78 = 0x80242898; // type:func rom:0x9C7C78 -func_802428B8_9C7C98 = 0x802428B8; // type:func rom:0x9C7C98 +MuteAllRadioStations = 0x80242898; // type:func rom:0x9C7C78 +StopAllRadioStations = 0x802428B8; // type:func rom:0x9C7C98 func_802428D8_9C7CB8 = 0x802428D8; // type:func rom:0x9C7CB8 SetTradeEventStartTime = 0x80242910; // type:func rom:0x9C7CF0 nok_01_foliage_setup_shear_mtx = 0x80242930; // type:func rom:0x9C7D10 diff --git a/ver/us/undefined_syms.txt b/ver/us/undefined_syms.txt index 76f8a6d1dc..8f8016489d 100644 --- a/ver/us/undefined_syms.txt +++ b/ver/us/undefined_syms.txt @@ -110,7 +110,7 @@ dead_basic_ai_chase = basic_ai_chase + 0x4420; dead_basic_ai_lose_player = basic_ai_lose_player + 0x4420; dead_BasicAI_Main = BasicAI_Main + 0x4420; dead_basic_ai_suspend = basic_ai_suspend + 0x4450; -dead_snd_ambient_mute = snd_ambient_mute + 0x44B0; +dead_snd_ambient_fade_out = snd_ambient_fade_out + 0x44B0; dead_get_current_map_settings = get_current_map_settings + 0x4540; dead_load_asset_by_name = load_asset_by_name + 0x4550; dead_osVirtualToPhysical = osVirtualToPhysical + 0x5150; @@ -340,7 +340,7 @@ dead_ModifyGlobalOverrideFlags = ModifyGlobalOverrideFlags + 0xD650; dead_SetValueByRef = SetValueByRef + 0xD650; dead_GetValueByRef = GetValueByRef + 0xD650; dead_FadeOutMusic = FadeOutMusic + 0xD650; -dead_SetMusicTrack = SetMusicTrack + 0xD650; +dead_SetMusic = SetMusic + 0xD650; dead_FadeInMusic = FadeInMusic + 0xD650; dead_PopSong = PopSong + 0xD650; dead_PushSong = PushSong + 0xD650;