diff --git a/src/audio/audio.c b/src/audio/audio.c index 54bdd956d2..ea9d9fa39f 100644 --- a/src/audio/audio.c +++ b/src/audio/audio.c @@ -1836,35 +1836,6 @@ void stop_vehicle_sounds() } } -/** -* Update zoom based volume attenuation for ride music and clear music list -* rct2: 0x006BC348 -*/ -void sub_6BC348() -{ - RCT2_GLOBAL(0x009AF42C, rct_music_info*) = &RCT2_GLOBAL(0x009AF430, rct_music_info); - RCT2_GLOBAL(0x00F438A4, rct_viewport*) = (rct_viewport*)-1; - rct_window* window = RCT2_GLOBAL(RCT2_ADDRESS_NEW_WINDOW_PTR, rct_window*); - while (1) { - window--; - if (window < RCT2_ADDRESS(RCT2_ADDRESS_WINDOW_LIST, rct_window)) { - break; - } - if (window->viewport && window->viewport->flags & VIEWPORT_FLAG_SOUND_ON) { - RCT2_GLOBAL(0x00F438A4, rct_viewport*) = window->viewport; - RCT2_GLOBAL(0x00F438A8, rct_window*) = window; - RCT2_GLOBAL(RCT2_ADDRESS_VOLUME_ADJUST_ZOOM, uint8) = 0; - if (window->viewport->zoom) { - RCT2_GLOBAL(RCT2_ADDRESS_VOLUME_ADJUST_ZOOM, uint8) = 30; - if (window->viewport->zoom != 1) { - RCT2_GLOBAL(RCT2_ADDRESS_VOLUME_ADJUST_ZOOM, uint8) = 60; - } - } - return; - } - } -} - /** * * rct2: 0x006BC3AC diff --git a/src/audio/audio.h b/src/audio/audio.h index 5821ce051f..cc91205edc 100644 --- a/src/audio/audio.h +++ b/src/audio/audio.h @@ -213,7 +213,6 @@ void audio_close(); void pause_sounds(); void unpause_sounds(); void stop_vehicle_sounds(); -void sub_6BC348(); void sub_6BC6D8(); int sub_6BC3AC(sint16 x, sint16 y, sint16 z, uint8 rideIndex, uint16 sampleRate, uint32 position, uint8 *tuneId); diff --git a/src/interface/window.c b/src/interface/window.c index 53f2602d7c..6fcfe9fbb0 100644 --- a/src/interface/window.c +++ b/src/interface/window.c @@ -1792,4 +1792,39 @@ void sub_6EA73F() window_invalidate_pressed_image_buttons(w); RCT2_CALLPROC_X(w->event_handlers[WE_RESIZE], 0, 0, 0, 0, (int)w, 0, 0); } +} + +/** + * Update zoom based volume attenuation for ride music and clear music list. + * rct2: 0x006BC348 + */ +void window_update_viewport_ride_music() +{ + rct_viewport *viewport; + rct_window *w; + + RCT2_GLOBAL(0x009AF42C, rct_music_info*) = (rct_music_info*)0x009AF430; + RCT2_GLOBAL(0x00F438A4, rct_viewport*) = (rct_viewport*)-1; + + for (w = RCT2_LAST_WINDOW; w >= g_window_list; w--) { + viewport = w->viewport; + if (viewport == NULL || !(viewport->flags & VIEWPORT_FLAG_SOUND_ON)) + continue; + + RCT2_GLOBAL(0x00F438A4, rct_viewport*) = viewport; + RCT2_GLOBAL(0x00F438A8, rct_window*) = w; + + switch (viewport->zoom) { + case 0: + RCT2_GLOBAL(RCT2_ADDRESS_VOLUME_ADJUST_ZOOM, uint8) = 0; + break; + case 1: + RCT2_GLOBAL(RCT2_ADDRESS_VOLUME_ADJUST_ZOOM, uint8) = 30; + break; + default: + RCT2_GLOBAL(RCT2_ADDRESS_VOLUME_ADJUST_ZOOM, uint8) = 60; + break; + } + break; + } } \ No newline at end of file diff --git a/src/interface/window.h b/src/interface/window.h index 4fce868807..8b9de08ee3 100644 --- a/src/interface/window.h +++ b/src/interface/window.h @@ -463,6 +463,8 @@ void tool_cancel(); void window_close_construction_windows(); +void window_update_viewport_ride_music(); + // Open window functions void window_main_open(); void window_resize_gui(int width, int height); diff --git a/src/ride/ride.c b/src/ride/ride.c index 04a2d95666..202f274d6b 100644 --- a/src/ride/ride.c +++ b/src/ride/ride.c @@ -125,7 +125,6 @@ static int ride_get_new_breakdown_problem(rct_ride *ride); static void ride_inspection_update(rct_ride *ride); static void ride_mechanic_status_update(int rideIndex, int mechanicStatus); static void ride_music_update(int rideIndex); -static void ride_play_music(); static void ride_prepare_breakdown(int rideIndex, int breakdownReason); static void ride_shop_connected(rct_ride* ride, int ride_idx); static void ride_spiral_slide_update(rct_ride *ride); @@ -513,8 +512,6 @@ void ride_update_all() rct_ride *ride; int i; - // RCT2_CALLPROC_EBPSAFE(0x006ABE4C); return; - // Remove all rides if certain flags are set (possible scenario editor?) int *esi = (int*)0x9DCE9E; if (esi[0x1BCA] & 2) { @@ -524,14 +521,13 @@ void ride_update_all() return; } - // Something related to windows - RCT2_CALLPROC_EBPSAFE(0x006BC348); + window_update_viewport_ride_music(); // Update rides FOR_ALL_RIDES(i, ride) ride_update(i); - ride_play_music(); + sub_6BC6D8(); } /** @@ -1232,15 +1228,6 @@ static void ride_music_update(int rideIndex) ride->music_position = sub_6BC3AC(x, y, z, rideIndex, sampleRate, ride->music_position, &ride->music_tune_id); } -/** - * - * rct2: 0x006BC6D8 - */ -static void ride_play_music() -{ - RCT2_CALLPROC_EBPSAFE(0x006BC6D8); -} - #pragma endregion #pragma region Measurement functions