From 31e2e4919a39662a6cb200399ab22750eecd626b Mon Sep 17 00:00:00 2001 From: zsilencer Date: Sat, 23 Aug 2014 23:50:50 -0600 Subject: [PATCH 1/6] Decompiled audio functions --- src/addresses.h | 3 + src/audio.c | 173 +++++++++++++++++++++++++++++++++++++++++++++++- src/audio.h | 10 ++- src/ride.h | 4 +- src/vehicle.h | 21 +++++- 5 files changed, 205 insertions(+), 6 deletions(-) diff --git a/src/addresses.h b/src/addresses.h index 4f44e3fb87..2d6dc983a5 100644 --- a/src/addresses.h +++ b/src/addresses.h @@ -154,8 +154,11 @@ #define RCT2_ADDRESS_WINDOW_DPI 0x009DEA74 +#define RCT2_ADDRESS_DSOUND_BUFFERS 0x009E1AB0 #define RCT2_ADDRESS_NUM_DSOUND_DEVICES 0x009E2B88 #define RCT2_ADDRESS_DSOUND_DEVICES 0x009E2B8C +#define RCT2_ADDRESS_SOUNDLIST_END 0x009E2B98 +#define RCT2_ADDRESS_SOUNDLIST_BEGIN 0x009E2B9C #define RCT2_ADDRESS_CMDLINE 0x009E2D98 diff --git a/src/audio.c b/src/audio.c index 41a8ce6142..20cface0b3 100644 --- a/src/audio.c +++ b/src/audio.c @@ -65,6 +65,10 @@ void audio_get_devices() } } +/** +* +* rct2: 0x0040502E +*/ void get_dsound_devices() { RCT2_CALLPROC(0x0040502E); @@ -80,14 +84,177 @@ void sound_play_panned(int sound_id, int x) RCT2_CALLPROC_X(0x006BB76E, sound_id, x, 0, 0, 0, 0, 0); } -int sound_play(rct_sound* sound, int looping, int volume, int pan, int frequency) +/** +* +* rct2: 0x00401999 +*/ +int sound_channel_play(int channel, int a2, int volume, int pan, int frequency) { - return RCT2_CALLFUNC_5(0x00404E7F, int, rct_sound*, int, int, int, int, sound, looping, volume, pan, frequency); + RCT2_GLOBAL(0x1426444 + (91 * channel * 4), uint32) = a2; + sound_channel_set_frequency(channel, frequency); + sound_channel_set_pan(channel, pan); + sound_channel_set_volume(channel, volume); + LPDIRECTSOUNDBUFFER dsbuffer = RCT2_ADDRESS(RCT2_ADDRESS_DSOUND_BUFFERS, LPDIRECTSOUNDBUFFER)[channel]; + dsbuffer->lpVtbl->SetCurrentPosition(dsbuffer, 0); + dsbuffer->lpVtbl->Play(dsbuffer, 0, 0, DSBPLAY_LOOPING); + RCT2_GLOBAL(0x14262E0 + (91 * channel * 4), uint32) = 1; + return 1; } +/** +* +* rct2: 0x00401A93 +*/ +int sound_channel_set_frequency(int channel, int frequency) +{ + LPDIRECTSOUNDBUFFER dsbuffer = RCT2_ADDRESS(RCT2_ADDRESS_DSOUND_BUFFERS, LPDIRECTSOUNDBUFFER)[channel]; + if(dsbuffer){ + if(SUCCEEDED(dsbuffer->lpVtbl->SetFrequency(dsbuffer, frequency))){ + return 1; + } + } + return 0; +} + +/** +* +* rct2: 0x00401AB3 +*/ +int sound_channel_set_pan(int channel, int pan) +{ + LPDIRECTSOUNDBUFFER dsbuffer = RCT2_ADDRESS(RCT2_ADDRESS_DSOUND_BUFFERS, LPDIRECTSOUNDBUFFER)[channel]; + if(dsbuffer){ + if(SUCCEEDED(dsbuffer->lpVtbl->SetPan(dsbuffer, pan))){ + return 1; + } + } + return 0; +} + +/** +* +* rct2: 0x00401AD3 +*/ +int sound_channel_set_volume(int channel, int volume) +{ + LPDIRECTSOUNDBUFFER dsbuffer = RCT2_ADDRESS(RCT2_ADDRESS_DSOUND_BUFFERS, LPDIRECTSOUNDBUFFER)[channel]; + if(dsbuffer){ + if(SUCCEEDED(dsbuffer->lpVtbl->SetVolume(dsbuffer, volume))){ + return 1; + } + } + return 0; +} + +/** +* +* rct2: 0x00404E7F +*/ +int sound_play(rct_sound* sound, int looping, int volume, int pan, int frequency) +{ + if(sound){ + sound_set_frequency(sound, frequency); + sound_set_pan(sound, pan); + sound_set_volume(sound, volume); + DWORD playflags; + if(looping){ + if(looping != 1) + return 1; + playflags = DSBPLAY_LOOPING; + }else{ + playflags = 0; + } + if(SUCCEEDED(sound->dsbuffer->lpVtbl->Play(sound->dsbuffer, 0, 0, playflags))){ + return 1; + } + } + return 0; +} + +/** +* +* rct2: 0x00404ED7 +*/ +int sound_set_frequency(rct_sound* sound, int frequency) +{ + if(sound){ + if(SUCCEEDED(sound->dsbuffer->lpVtbl->SetFrequency(sound->dsbuffer, frequency))){ + return 1; + } + } + return 0; +} + +/** +* +* rct2: 0x00404EF2 +*/ +int sound_set_pan(rct_sound* sound, int pan) +{ + if(sound){ + if(SUCCEEDED(sound->dsbuffer->lpVtbl->SetPan(sound->dsbuffer, pan))){ + return 1; + } + } + return 0; +} + +/** +* +* rct2: 0x00404F0D +*/ +int sound_set_volume(rct_sound* sound, int volume) +{ + if(sound){ + if(SUCCEEDED(sound->dsbuffer->lpVtbl->SetVolume(sound->dsbuffer, volume))){ + return 1; + } + } + return 0; +} + +/** +* +* rct2: 0x00404DD8 +*/ void sound_stop(rct_sound* sound) { - RCT2_CALLPROC_1(0x00404DD8, rct_sound*, sound); + if(sound->dsbuffer){ + sound->dsbuffer->lpVtbl->Release(sound); + sound->dsbuffer = 0; + sound_remove(sound); + } +} + +/** +* +* rct2: 0x00405143 +*/ +rct_sound* sound_remove(rct_sound* sound) +{ + rct_sound* result = RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*); + if(sound == result){ + if(sound == RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*)){ + RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*) = 0; + RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*) = 0; + } + result = sound->prev; + RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*) = result; + } + else{ + while(result->prev != sound){ + result = result->prev; + } + if(sound == RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*)){ + RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*) = result; + result->prev = 0; + } + else{ + result->prev = sound->prev; + } + } + sound->prev = 0; + return result; } /** diff --git a/src/audio.h b/src/audio.h index ed70246401..cc91894958 100644 --- a/src/audio.h +++ b/src/audio.h @@ -52,14 +52,22 @@ typedef struct { int id; int has_caps; int var_0C; - int var_10; + struct rct_sound* prev; } rct_sound; void get_dsound_devices(); int sound_prepare(int sound_id, rct_sound *sound, int var_8, int var_c); void sound_play_panned(int sound_id, int x); int sound_play(rct_sound* sound, int looping, int volume, int pan, int frequency); +int sound_set_frequency(rct_sound* sound, int frequency); +int sound_set_pan(rct_sound* sound, int pan); +int sound_set_volume(rct_sound* sound, int volume); +int sound_channel_play(int channel, int a2, int volume, int pan, int frequency); +int sound_channel_set_frequency(int channel, int frequency); +int sound_channel_set_pan(int channel, int pan); +int sound_channel_set_volume(int channel, int volume); void sound_stop(rct_sound *sound); +rct_sound* sound_remove(rct_sound* sound); void pause_sounds(); void unpause_sounds(); diff --git a/src/ride.h b/src/ride.h index 9f7d902f49..b88946dd59 100644 --- a/src/ride.h +++ b/src/ride.h @@ -109,7 +109,9 @@ typedef struct { uint16 build_date; sint16 upkeep_cost; // 0x182 uint16 race_winner; // 0x184 - uint8 pad_186[0x10]; + uint8 pad_186[0x06]; + uint8 var_18C; + uint8 pad_18D[0x09]; uint16 var_196; // used in computing excitement, nausea, etc uint8 var_198; diff --git a/src/vehicle.h b/src/vehicle.h index c6df2167ee..92ada2f2fd 100644 --- a/src/vehicle.h +++ b/src/vehicle.h @@ -35,8 +35,27 @@ typedef struct { sint16 x; // 0x0E sint16 y; // 0x10 sint16 z; // 0x12 - uint8 pad_14[0x2A]; + uint8 pad_14[0x0B]; + uint8 var_1F; + uint8 pad_20[0x08]; + uint32 var_28; + uint8 pad_2C[0x04]; + uint8 ride; // 0x30 + uint8 var_31; + uint8 pad_32[0x0C]; uint16 next_vehicle_on_train; // 0x3E + uint8 pad_40[0x08]; + uint16 var_48; + uint8 pad_4A[0x06]; + uint8 var_50; + uint8 var_51; + uint8 pad_52[0x69]; + uint16 var_BB; + uint16 var_BD; + uint8 pad_BF[0x0D]; + uint8 var_CC; + uint8 pad_CD[0x09]; + uint8 var_D6; } rct_vehicle; void vehicle_update_all(); From 4d821db3cbdd91d5cd86dcc1b2cb4afd2a7f87f1 Mon Sep 17 00:00:00 2001 From: zsilencer Date: Sun, 24 Aug 2014 00:34:18 -0600 Subject: [PATCH 2/6] Fixed issue #353 --- src/window_new_ride.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/window_new_ride.c b/src/window_new_ride.c index 633b52a242..2d8eebdd10 100644 --- a/src/window_new_ride.c +++ b/src/window_new_ride.c @@ -431,7 +431,7 @@ void window_new_ride_open() w->colours[0] = 24; w->colours[1] = 26; w->colours[2] = 26; - w->new_ride.selected_ride_countdown = -1; + w->new_ride.selected_ride_id = -1; w->new_ride.highlighted_ride_id = -1; _lastTrackDesignCountRideType.type = 255; _lastTrackDesignCountRideType.entry_index = 255; @@ -603,7 +603,7 @@ static void window_new_ride_update(rct_window *w) widget_invalidate(w->classification, w->number, WIDX_TAB_1 + _window_new_ride_current_tab); - if (w->new_ride.selected_ride_countdown != -1 && w->new_ride.selected_ride_countdown-- == 0) + if (w->new_ride.selected_ride_id != -1 && w->new_ride.selected_ride_countdown-- == 0) window_new_ride_select(w); } @@ -657,7 +657,7 @@ static void window_new_ride_scrollmousedown() return; RCT2_ADDRESS(0x00F43825, ride_list_item)[_window_new_ride_current_tab] = item; - w->new_ride.selected_ride_countdown = *((sint16*)&item); + w->new_ride.selected_ride_id = *((sint16*)&item); sound_play_panned(SOUND_CLICK_1, w->x + (w->width / 2)); w->new_ride.selected_ride_countdown = 8; @@ -676,7 +676,7 @@ static void window_new_ride_scrollmouseover() window_scrollmouse_get_registers(w, x, y); - if (w->new_ride.selected_ride_countdown != -1) + if (w->new_ride.selected_ride_id != -1) return; item = window_new_ride_scroll_get_ride_list_item_at(w, x, y); @@ -832,7 +832,7 @@ static void window_new_ride_scrollpaint() uint8 *rideEntry; // Draw flat button rectangle int flags = 0; - if (w->new_ride.selected_ride_countdown == *((sint16*)listItem)) + if (w->new_ride.selected_ride_id == *((sint16*)listItem)) flags |= 0x20; if (w->new_ride.highlighted_ride_id == *((sint16*)listItem) || flags != 0) gfx_fill_rect_inset(dpi, x, y, x + 115, y + 115, w->colours[1], 0x80 | flags); @@ -973,7 +973,7 @@ static void window_new_ride_paint_ride_information(rct_window *w, rct_drawpixeli */ static void window_new_ride_select(rct_window *w) { - ride_list_item item = *((ride_list_item*)&w->new_ride.selected_ride_countdown); + ride_list_item item = *((ride_list_item*)&w->new_ride.selected_ride_id); if (item.type == 255) return; From 11063c9623b96491474b2e6c402bd4dca4798a8a Mon Sep 17 00:00:00 2001 From: zsilencer Date: Sun, 24 Aug 2014 00:58:10 -0600 Subject: [PATCH 3/6] Fixed crash when selected ride is undefined --- src/window_new_campaign.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/window_new_campaign.c b/src/window_new_campaign.c index d52e9482d5..19f25f6595 100644 --- a/src/window_new_campaign.c +++ b/src/window_new_campaign.c @@ -28,7 +28,7 @@ #include "window.h" #include "window_dropdown.h" -#define SELECTED_RIDE_UNDEFINED ((sint16)0xFFFF) +#define SELECTED_RIDE_UNDEFINED ((uint16)0xFFFF) enum WINDOW_NEW_CAMPAIGN_WIDGET_IDX { WIDX_BACKGROUND, From 04e5a028d931da19ab027b426dae43abc15efb04 Mon Sep 17 00:00:00 2001 From: zsilencer Date: Sun, 24 Aug 2014 01:56:54 -0600 Subject: [PATCH 4/6] Fixed sound_remove, renamed variables, removed compiler warnings --- src/addresses.h | 4 ++-- src/audio.c | 27 ++++++++++++++------------- src/audio.h | 7 ++++--- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/addresses.h b/src/addresses.h index 2d6dc983a5..efb780f9e5 100644 --- a/src/addresses.h +++ b/src/addresses.h @@ -157,8 +157,8 @@ #define RCT2_ADDRESS_DSOUND_BUFFERS 0x009E1AB0 #define RCT2_ADDRESS_NUM_DSOUND_DEVICES 0x009E2B88 #define RCT2_ADDRESS_DSOUND_DEVICES 0x009E2B8C -#define RCT2_ADDRESS_SOUNDLIST_END 0x009E2B98 -#define RCT2_ADDRESS_SOUNDLIST_BEGIN 0x009E2B9C +#define RCT2_ADDRESS_SOUNDLIST_BEGIN 0x009E2B98 +#define RCT2_ADDRESS_SOUNDLIST_END 0x009E2B9C #define RCT2_ADDRESS_CMDLINE 0x009E2D98 diff --git a/src/audio.c b/src/audio.c index 20cface0b3..79836d5531 100644 --- a/src/audio.c +++ b/src/audio.c @@ -220,7 +220,7 @@ int sound_set_volume(rct_sound* sound, int volume) void sound_stop(rct_sound* sound) { if(sound->dsbuffer){ - sound->dsbuffer->lpVtbl->Release(sound); + sound->dsbuffer->lpVtbl->Release(sound->dsbuffer); sound->dsbuffer = 0; sound_remove(sound); } @@ -232,28 +232,29 @@ void sound_stop(rct_sound* sound) */ rct_sound* sound_remove(rct_sound* sound) { - rct_sound* result = RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*); + printf("sound_remove called\n"); + rct_sound* result = RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*); if(sound == result){ - if(sound == RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*)){ - RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*) = 0; + if(sound == RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*)){ RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*) = 0; + RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*) = 0; } - result = sound->prev; - RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*) = result; + result = sound->next; + RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*) = result; } else{ - while(result->prev != sound){ - result = result->prev; + while(result->next != sound){ + result = result->next; } - if(sound == RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*)){ - RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*) = result; - result->prev = 0; + if(sound == RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*)){ + RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*) = result; + result->next = 0; } else{ - result->prev = sound->prev; + result->next = sound->next; } } - sound->prev = 0; + sound->next = 0; return result; } diff --git a/src/audio.h b/src/audio.h index cc91894958..1d1985832c 100644 --- a/src/audio.h +++ b/src/audio.h @@ -47,13 +47,14 @@ typedef struct { /** * Represents a prepared sound. */ -typedef struct { +typedef struct rct_sound rct_sound; +struct rct_sound { LPDIRECTSOUNDBUFFER dsbuffer; int id; int has_caps; int var_0C; - struct rct_sound* prev; -} rct_sound; + rct_sound* next; +}; void get_dsound_devices(); int sound_prepare(int sound_id, rct_sound *sound, int var_8, int var_c); From 835871a47598efffd82797749fe415673ac31877 Mon Sep 17 00:00:00 2001 From: zsilencer Date: Sun, 24 Aug 2014 02:00:00 -0600 Subject: [PATCH 5/6] removed debug printf --- src/audio.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/audio.c b/src/audio.c index 79836d5531..7bee689401 100644 --- a/src/audio.c +++ b/src/audio.c @@ -232,7 +232,6 @@ void sound_stop(rct_sound* sound) */ rct_sound* sound_remove(rct_sound* sound) { - printf("sound_remove called\n"); rct_sound* result = RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*); if(sound == result){ if(sound == RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*)){ From dbc7e511f7e5818f494af031ddafe92663f31295 Mon Sep 17 00:00:00 2001 From: zsilencer Date: Sun, 24 Aug 2014 02:28:33 -0600 Subject: [PATCH 6/6] formatting --- src/audio.c | 69 ++++++++++++++++++++++++++--------------------------- src/audio.h | 7 +++--- 2 files changed, 37 insertions(+), 39 deletions(-) diff --git a/src/audio.c b/src/audio.c index 7bee689401..8f2d0cce27 100644 --- a/src/audio.c +++ b/src/audio.c @@ -108,10 +108,10 @@ int sound_channel_play(int channel, int a2, int volume, int pan, int frequency) int sound_channel_set_frequency(int channel, int frequency) { LPDIRECTSOUNDBUFFER dsbuffer = RCT2_ADDRESS(RCT2_ADDRESS_DSOUND_BUFFERS, LPDIRECTSOUNDBUFFER)[channel]; - if(dsbuffer){ - if(SUCCEEDED(dsbuffer->lpVtbl->SetFrequency(dsbuffer, frequency))){ + if (dsbuffer) { + if (SUCCEEDED(dsbuffer->lpVtbl->SetFrequency(dsbuffer, frequency))) return 1; - } + } return 0; } @@ -123,10 +123,10 @@ int sound_channel_set_frequency(int channel, int frequency) int sound_channel_set_pan(int channel, int pan) { LPDIRECTSOUNDBUFFER dsbuffer = RCT2_ADDRESS(RCT2_ADDRESS_DSOUND_BUFFERS, LPDIRECTSOUNDBUFFER)[channel]; - if(dsbuffer){ - if(SUCCEEDED(dsbuffer->lpVtbl->SetPan(dsbuffer, pan))){ + if (dsbuffer) { + if (SUCCEEDED(dsbuffer->lpVtbl->SetPan(dsbuffer, pan))) return 1; - } + } return 0; } @@ -138,10 +138,10 @@ int sound_channel_set_pan(int channel, int pan) int sound_channel_set_volume(int channel, int volume) { LPDIRECTSOUNDBUFFER dsbuffer = RCT2_ADDRESS(RCT2_ADDRESS_DSOUND_BUFFERS, LPDIRECTSOUNDBUFFER)[channel]; - if(dsbuffer){ - if(SUCCEEDED(dsbuffer->lpVtbl->SetVolume(dsbuffer, volume))){ + if (dsbuffer) { + if (SUCCEEDED(dsbuffer->lpVtbl->SetVolume(dsbuffer, volume))) return 1; - } + } return 0; } @@ -152,21 +152,22 @@ int sound_channel_set_volume(int channel, int volume) */ int sound_play(rct_sound* sound, int looping, int volume, int pan, int frequency) { - if(sound){ + if (sound) { sound_set_frequency(sound, frequency); sound_set_pan(sound, pan); sound_set_volume(sound, volume); DWORD playflags; - if(looping){ - if(looping != 1) + if (looping) { + if (looping != 1) return 1; + playflags = DSBPLAY_LOOPING; - }else{ + } else { playflags = 0; } - if(SUCCEEDED(sound->dsbuffer->lpVtbl->Play(sound->dsbuffer, 0, 0, playflags))){ + if (SUCCEEDED(sound->dsbuffer->lpVtbl->Play(sound->dsbuffer, 0, 0, playflags))) return 1; - } + } return 0; } @@ -177,10 +178,10 @@ int sound_play(rct_sound* sound, int looping, int volume, int pan, int frequency */ int sound_set_frequency(rct_sound* sound, int frequency) { - if(sound){ - if(SUCCEEDED(sound->dsbuffer->lpVtbl->SetFrequency(sound->dsbuffer, frequency))){ + if (sound) { + if (SUCCEEDED(sound->dsbuffer->lpVtbl->SetFrequency(sound->dsbuffer, frequency))) return 1; - } + } return 0; } @@ -191,10 +192,10 @@ int sound_set_frequency(rct_sound* sound, int frequency) */ int sound_set_pan(rct_sound* sound, int pan) { - if(sound){ - if(SUCCEEDED(sound->dsbuffer->lpVtbl->SetPan(sound->dsbuffer, pan))){ + if (sound) { + if (SUCCEEDED(sound->dsbuffer->lpVtbl->SetPan(sound->dsbuffer, pan))) return 1; - } + } return 0; } @@ -205,10 +206,10 @@ int sound_set_pan(rct_sound* sound, int pan) */ int sound_set_volume(rct_sound* sound, int volume) { - if(sound){ - if(SUCCEEDED(sound->dsbuffer->lpVtbl->SetVolume(sound->dsbuffer, volume))){ + if (sound) { + if (SUCCEEDED(sound->dsbuffer->lpVtbl->SetVolume(sound->dsbuffer, volume))) return 1; - } + } return 0; } @@ -219,7 +220,7 @@ int sound_set_volume(rct_sound* sound, int volume) */ void sound_stop(rct_sound* sound) { - if(sound->dsbuffer){ + if (sound->dsbuffer) { sound->dsbuffer->lpVtbl->Release(sound->dsbuffer); sound->dsbuffer = 0; sound_remove(sound); @@ -233,25 +234,23 @@ void sound_stop(rct_sound* sound) rct_sound* sound_remove(rct_sound* sound) { rct_sound* result = RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*); - if(sound == result){ - if(sound == RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*)){ + if (sound == result) { + if (sound == RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*)) { RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*) = 0; RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*) = 0; } result = sound->next; RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_BEGIN, rct_sound*) = result; - } - else{ - while(result->next != sound){ + } else { + while (result->next != sound) result = result->next; - } - if(sound == RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*)){ + + if (sound == RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*)) { RCT2_GLOBAL(RCT2_ADDRESS_SOUNDLIST_END, rct_sound*) = result; result->next = 0; - } - else{ + } else result->next = sound->next; - } + } sound->next = 0; return result; diff --git a/src/audio.h b/src/audio.h index 1d1985832c..e40b1416f3 100644 --- a/src/audio.h +++ b/src/audio.h @@ -47,14 +47,13 @@ typedef struct { /** * Represents a prepared sound. */ -typedef struct rct_sound rct_sound; -struct rct_sound { +typedef struct rct_sound { LPDIRECTSOUNDBUFFER dsbuffer; int id; int has_caps; int var_0C; - rct_sound* next; -}; + struct rct_sound* next; +} rct_sound; void get_dsound_devices(); int sound_prepare(int sound_id, rct_sound *sound, int var_8, int var_c);