From d077beea204a2f32327fcdc9ab96eb10a9b72ced Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Mon, 19 May 2014 18:47:14 +0100 Subject: [PATCH] Changed window_update to use cdecl where possible --- src/game.c | 20 ++------------ src/window.c | 14 +++------- src/window_cheats.c | 2 +- src/window_clear_scenery.c | 8 ++---- src/window_footpath.c | 8 ++---- src/window_guest_list.c | 8 ++---- src/window_land.c | 8 ++---- src/window_map.c | 4 +-- src/window_news.c | 7 ++--- src/window_options.c | 7 ++--- src/window_park.c | 55 ++++++++++---------------------------- src/window_ride_list.c | 8 ++---- src/window_tooltip.c | 4 +-- src/window_water.c | 6 +---- 14 files changed, 40 insertions(+), 119 deletions(-) diff --git a/src/game.c b/src/game.c index 85bac97427..b0c0648ee4 100644 --- a/src/game.c +++ b/src/game.c @@ -180,22 +180,6 @@ void game_logic_update() static void game_handle_input_mouse(); static void game_get_next_input(int *x, int *y, int *state); -static void RCT2_CALLPROC_EVENT_HANDLER(int address, rct_window* w) -{ - __asm { - push address - push w - mov eax, 0 - mov ebx, 0 - mov ecx, 0 - mov edx, 0 - mov esi, w - mov edi, 0 - mov ebp, 0 - call[esp+4] - add esp, 8 - } -} /** * * rct2: 0x006EA627 @@ -211,7 +195,7 @@ void game_handle_input() if (RCT2_GLOBAL(0x009ABDF2, uint8) != 0) { for (w = RCT2_ADDRESS(RCT2_ADDRESS_WINDOW_LIST, rct_window); w < RCT2_GLOBAL(RCT2_ADDRESS_NEW_WINDOW_PTR, rct_window*); w++) - RCT2_CALLPROC_EVENT_HANDLER(w->event_handlers[WE_UNKNOWN_07], w); + RCT2_CALLPROC_X(w->event_handlers[WE_UNKNOWN_07], 0, 0, 0, 0, (int)w, 0, 0); RCT2_CALLPROC_EBPSAFE(0x006EA73F); RCT2_CALLPROC_EBPSAFE(0x006E8346); // update_cursor_position @@ -245,7 +229,7 @@ void game_handle_input() } for (w = RCT2_ADDRESS(RCT2_ADDRESS_WINDOW_LIST, rct_window); w < RCT2_GLOBAL(RCT2_ADDRESS_NEW_WINDOW_PTR, rct_window*); w++) - RCT2_CALLPROC_EVENT_HANDLER(w->event_handlers[WE_UNKNOWN_08],w); + RCT2_CALLPROC_X(w->event_handlers[WE_UNKNOWN_08], 0, 0, 0, 0,(int) w, 0, 0); } /** diff --git a/src/window.c b/src/window.c index 5638beee35..2a79a9d76f 100644 --- a/src/window.c +++ b/src/window.c @@ -99,18 +99,12 @@ rct_widget *window_get_scroll_widget(rct_window *w, int scrollIndex) return NULL; } -static void RCT2_CALLPROC_EVENT_HANDLER(int address, rct_window* w) +static void RCT2_CALLPROC_WE_UPDATE(int address, rct_window* w) { __asm { - push address + push address push w - mov eax, 0 - mov ebx, 0 - mov ecx, 0 - mov edx, 0 mov esi, w - mov edi, 0 - mov ebp, 0 call[esp + 4] add esp, 8 } @@ -126,7 +120,7 @@ void window_dispatch_update_all() RCT2_GLOBAL(0x01423604, sint32)++; RCT2_GLOBAL(RCT2_ADDRESS_TOOLTIP_NOT_SHOWN_TICKS, sint16)++; for (w = RCT2_LAST_WINDOW; w >= RCT2_FIRST_WINDOW; w--) - RCT2_CALLPROC_EVENT_HANDLER(w->event_handlers[WE_UPDATE], w); + RCT2_CALLPROC_WE_UPDATE(w->event_handlers[WE_UPDATE], w); RCT2_CALLPROC_EBPSAFE(0x006EE411); // handle_text_input } @@ -157,7 +151,7 @@ void window_update_all() if (RCT2_GLOBAL(0x009DEB7C, sint16) >= 1000) { RCT2_GLOBAL(0x009DEB7C, sint16) = 0; for (w = RCT2_LAST_WINDOW; w >= RCT2_FIRST_WINDOW; w--) - RCT2_CALLPROC_EVENT_HANDLER(w->event_handlers[WE_UNKNOWN_07],w); + RCT2_CALLPROC_X(w->event_handlers[WE_UNKNOWN_07], 0, 0, 0, 0, (int) w, 0, 0); } // Border flash invalidation diff --git a/src/window_cheats.c b/src/window_cheats.c index 3de5cf69c9..c9500f65f1 100644 --- a/src/window_cheats.c +++ b/src/window_cheats.c @@ -79,7 +79,7 @@ static rct_widget *window_cheats_page_widgets[] = { static void window_cheats_emptysub() { } static void window_cheats_money_mouseup(); static void window_cheats_guests_mouseup(); -static void window_cheats_update(); +static void window_cheats_update(rct_window *w); static void window_cheats_invalidate(); static void window_cheats_paint(); static void window_cheats_set_page(rct_window *w, int page); diff --git a/src/window_clear_scenery.c b/src/window_clear_scenery.c index 81cc447c78..9b8bde8727 100644 --- a/src/window_clear_scenery.c +++ b/src/window_clear_scenery.c @@ -49,7 +49,7 @@ static int window_clear_scenery_should_close(); static void window_clear_scenery_emptysub() { } static void window_clear_scenery_close(); static void window_clear_scenery_mouseup(); -static void window_clear_scenery_update(); +static void window_clear_scenery_update(rct_window *w); static void window_clear_scenery_invalidate(); static void window_clear_scenery_paint(); @@ -168,12 +168,8 @@ static void window_clear_scenery_mouseup() * * rct2: 0x0068E205 */ -static void window_clear_scenery_update() +static void window_clear_scenery_update(rct_window *w) { - rct_window *w; - - __asm mov w, esi - // Close window if another tool is open if (window_clear_scenery_should_close()) window_close(w); diff --git a/src/window_footpath.c b/src/window_footpath.c index 38da0c66e6..da7921e164 100644 --- a/src/window_footpath.c +++ b/src/window_footpath.c @@ -108,7 +108,7 @@ static void window_footpath_close(); static void window_footpath_mouseup(); static void window_footpath_mousedown(); static void window_footpath_dropdown(); -static void window_footpath_update(); +static void window_footpath_update(rct_window *w); static void window_footpath_toolupdate(); static void window_footpath_tooldown(); static void window_footpath_tooldrag(); @@ -470,12 +470,8 @@ static void window_footpath_toolup() * * rct2: 0x006A84BB */ -static void window_footpath_update() +static void window_footpath_update(rct_window *w) { - rct_window *w; - - __asm mov w, esi - // Invalidate construct button widget_invalidate(WC_FOOTPATH, 0, WIDX_CONSTRUCT); diff --git a/src/window_guest_list.c b/src/window_guest_list.c index a8e66cbca1..bbdcbcca56 100644 --- a/src/window_guest_list.c +++ b/src/window_guest_list.c @@ -75,7 +75,7 @@ static void window_guest_list_mouseup(); static void window_guest_list_resize(); static void window_guest_list_mousedown(); static void window_guest_list_dropdown(); -static void window_guest_list_update(); +static void window_guest_list_update(rct_window *w); static void window_guest_list_scrollgetsize(); static void window_guest_list_scrollmousedown(); static void window_guest_list_scrollmouseover(); @@ -327,12 +327,8 @@ static void window_guest_list_dropdown() * * rct2: 0x00699E54 */ -static void window_guest_list_update() +static void window_guest_list_update(rct_window *w) { - rct_window *w; - - __asm mov w, esi - if (RCT2_GLOBAL(0x00F1AF20, uint16) != 0) RCT2_GLOBAL(0x00F1AF20, uint16)--; w->var_490++; diff --git a/src/window_land.c b/src/window_land.c index 2a2c90e7b5..4a146bcf58 100644 --- a/src/window_land.c +++ b/src/window_land.c @@ -54,7 +54,7 @@ static void window_land_close(); static void window_land_mouseup(); static void window_land_mousedown(); static void window_land_dropdown(); -static void window_land_update(); +static void window_land_update(rct_window *w); static void window_land_invalidate(); static void window_land_paint(); @@ -310,12 +310,8 @@ static void window_land_dropdown() * * rct2: 0x00664272 */ -static void window_land_update() +static void window_land_update(rct_window *w) { - rct_window *w; - - __asm mov w, esi - // Close window if another tool is open if (window_land_should_close()) window_close(w); diff --git a/src/window_map.c b/src/window_map.c index 831f329e5b..5735a12f51 100644 --- a/src/window_map.c +++ b/src/window_map.c @@ -65,7 +65,7 @@ static void window_map_emptysub() { } static void window_map_close(); static void window_map_mouseup(); static void window_map_mousedown(); -static void window_map_update(); +static void window_map_update(rct_window *w); static void window_map_scrollgetsize(); static void window_map_scrollmousedown(); static void window_map_invalidate(); @@ -198,7 +198,7 @@ static void window_map_mousedown() * * rct2: 0x0068D7FB */ -static void window_map_update() +static void window_map_update(rct_window *w) { RCT2_CALLPROC_EBPSAFE(0x0068D7FB); } diff --git a/src/window_news.c b/src/window_news.c index 4fa036bae0..2bd3134588 100644 --- a/src/window_news.c +++ b/src/window_news.c @@ -45,7 +45,7 @@ static rct_widget window_news_widgets[] = { static void window_news_emptysub() { } static void window_news_mouseup(); -static void window_news_update(); +static void window_news_update(rct_window *w); static void window_news_scrollgetsize(); static void window_news_scrollmousedown(); static void window_news_tooltip(); @@ -140,14 +140,11 @@ static void window_news_mouseup() * * rct2: 0x0066EAB8 */ -static void window_news_update() +static void window_news_update(rct_window *w) { int i, j, x, y, z; - rct_window *w; rct_news_item *newsItems; - __asm mov w, esi - if (w->var_480 == -1) return; if (--w->var_484 != 0) diff --git a/src/window_options.c b/src/window_options.c index a45f693d6a..20b7dbf3b6 100644 --- a/src/window_options.c +++ b/src/window_options.c @@ -105,7 +105,7 @@ static void window_options_emptysub() { } static void window_options_mouseup(); static void window_options_mousedown(); static void window_options_dropdown(); -static void window_options_update(); +static void window_options_update(rct_window *w); static void window_options_paint(); static void window_options_draw_dropdown_box(w, widget, num_items); static void window_options_update_height_markers(); @@ -458,12 +458,9 @@ static void window_options_dropdown() * * rct2: 0x006BAD48 */ -static void window_options_update() +static void window_options_update(rct_window *w) { sint32 format_args = RCT2_GLOBAL(0x009AF280, sint32); - rct_window *w; - - __asm mov w, esi // sound devices if (format_args == -1 || RCT2_GLOBAL(RCT2_ADDRESS_NUM_DSOUND_DEVICES, sint32) == 0) { diff --git a/src/window_park.c b/src/window_park.c index 7cddbeca7a..3c05270061 100644 --- a/src/window_park.c +++ b/src/window_park.c @@ -218,7 +218,7 @@ static void window_park_entrance_mouseup(); static void window_park_entrance_resize(); static void window_park_entrance_mousedown(); static void window_park_entrance_dropdown(); -static void window_park_entrance_update(); +static void window_park_entrance_update(rct_window *w); static void window_park_entrance_toolupdate(); static void window_park_entrance_tooldown(); static void window_park_entrance_tooldrag(); @@ -229,38 +229,38 @@ static void window_park_entrance_paint(); static void window_park_rating_mouseup(); static void window_park_rating_resize(); -static void window_park_rating_update(); +static void window_park_rating_update(rct_window *w); static void window_park_rating_invalidate(); static void window_park_rating_paint(); static void window_park_guests_mouseup(); static void window_park_guests_resize(); -static void window_park_guests_update(); +static void window_park_guests_update(rct_window *w); static void window_park_guests_invalidate(); static void window_park_guests_paint(); static void window_park_price_mouseup(); static void window_park_price_resize(); static void window_park_price_mousedown(); -static void window_park_price_update(); +static void window_park_price_update(rct_window *w); static void window_park_price_invalidate(); static void window_park_price_paint(); static void window_park_stats_mouseup(); static void window_park_stats_resize(); -static void window_park_stats_update(); +static void window_park_stats_update(rct_window *w); static void window_park_stats_invalidate(); static void window_park_stats_paint(); static void window_park_objective_mouseup(); static void window_park_objective_resize(); -static void window_park_objective_update(); +static void window_park_objective_update(rct_window *w); static void window_park_objective_invalidate(); static void window_park_objective_paint(); static void window_park_awards_mouseup(); static void window_park_awards_resize(); -static void window_park_awards_update(); +static void window_park_awards_update(rct_window *w); static void window_park_awards_invalidate(); static void window_park_awards_paint(); @@ -773,12 +773,8 @@ static void window_park_entrance_dropdown() * * rct2: 0x006686B5 */ -static void window_park_entrance_update() +static void window_park_entrance_update(rct_window *w) { - rct_window *w; - - __asm mov w, esi - w->var_48E++; window_invalidate_by_id(w->classification, 1179); } @@ -1146,12 +1142,8 @@ static void window_park_rating_resize() * * rct2: 0x00668A21 */ -static void window_park_rating_update() +static void window_park_rating_update(rct_window *w) { - rct_window *w; - - __asm mov w, esi - w->var_48E++; widget_invalidate(w->classification, w->number, WIDX_TAB_2); } @@ -1288,12 +1280,8 @@ static void window_park_guests_resize() * * rct2: 0x00668E06 */ -static void window_park_guests_update() +static void window_park_guests_update(rct_window *w) { - rct_window *w; - - __asm mov w, esi - w->var_48E++; w->var_492 = (w->var_492 + 1) % 24; widget_invalidate(w->classification, w->number, WIDX_TAB_3); @@ -1439,12 +1427,8 @@ static void window_park_price_mousedown() * * rct2: 0x00669077 */ -static void window_park_price_update() +static void window_park_price_update(rct_window *w) { - rct_window *w; - - __asm mov w, esi - w->var_48E++; widget_invalidate(w->classification, w->number, WIDX_TAB_4); } @@ -1551,12 +1535,9 @@ static void window_park_stats_resize() * * rct2: 0x006692A8 */ -static void window_park_stats_update() +static void window_park_stats_update(rct_window *w) { int i; - rct_window *w; - - __asm mov w, esi w->var_48E++; widget_invalidate(w->classification, w->number, WIDX_TAB_5); @@ -1734,12 +1715,8 @@ static void window_park_objective_resize() * * rct2: 0x0066966C */ -static void window_park_objective_update() +static void window_park_objective_update(rct_window *w) { - rct_window *w; - - __asm mov w, esi - w->var_48E++; widget_invalidate(w->classification, w->number, WIDX_TAB_6); } @@ -1887,12 +1864,8 @@ static void window_park_awards_resize() * * rct2: 0x0066986D */ -static void window_park_awards_update() +static void window_park_awards_update(rct_window *w) { - rct_window *w; - - __asm mov w, esi - w->var_48E++; window_invalidate_by_id(w->classification, 1179); } diff --git a/src/window_ride_list.c b/src/window_ride_list.c index f7e877ef3d..a7dde38fe8 100644 --- a/src/window_ride_list.c +++ b/src/window_ride_list.c @@ -70,7 +70,7 @@ static void window_ride_list_mouseup(); static void window_ride_list_resize(); static void window_ride_list_mousedown(); static void window_ride_list_dropdown(); -static void window_ride_list_update(); +static void window_ride_list_update(rct_window *w); static void window_ride_list_scrollgetsize(); static void window_ride_list_scrollmousedown(); static void window_ride_list_scrollmouseover(); @@ -297,12 +297,8 @@ static void window_ride_list_dropdown() * * rct2: 0x006B386B */ -static void window_ride_list_update() +static void window_ride_list_update(rct_window *w) { - rct_window *w; - - __asm mov w, esi - w->var_48E = (w->var_48E + 1) % 64; widget_invalidate(w->classification, w->number, WIDX_TAB_1 + w->page); if (_window_ride_list_information_type != INFORMATION_TYPE_STATUS) diff --git a/src/window_tooltip.c b/src/window_tooltip.c index 95312aea2f..b570a190d3 100644 --- a/src/window_tooltip.c +++ b/src/window_tooltip.c @@ -35,7 +35,7 @@ static rct_widget window_tooltip_widgets[] = { static void window_tooltip_emptysub() { } static void window_tooltip_onclose(); -static void window_tooltip_update(); +static void window_tooltip_update(rct_window *w); static void window_tooltip_paint(); static void* window_tooltip_events[] = { @@ -173,7 +173,7 @@ static void window_tooltip_onclose() * * rct2: 0x006EA580 */ -static void window_tooltip_update() +static void window_tooltip_update(rct_window *w) { if (RCT2_GLOBAL(0x009DE51E, uint8) == 0) RCT2_GLOBAL(RCT2_ADDRESS_TOOLTIP_NOT_SHOWN_TICKS, uint16) = 0; diff --git a/src/window_water.c b/src/window_water.c index a58cce6e2f..57c8fc9a09 100644 --- a/src/window_water.c +++ b/src/window_water.c @@ -169,12 +169,8 @@ static void window_water_mouseup() * * rct2: 0x006E6BCE */ -static void window_water_update() +static void window_water_update(rct_window *w) { - rct_window *w; - - __asm mov w, esi - // Close window if another tool is open if (window_water_should_close()) window_close(w);