diff --git a/src/game.c b/src/game.c index c6232ae35c..8aa081caee 100644 --- a/src/game.c +++ b/src/game.c @@ -229,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_X(w->event_handlers[WE_UNKNOWN_08], 0, 0, 0, 0, (int)w, 0, 0); + 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 1b995f32f8..2a79a9d76f 100644 --- a/src/window.c +++ b/src/window.c @@ -99,7 +99,16 @@ rct_widget *window_get_scroll_widget(rct_window *w, int scrollIndex) return NULL; } - +static void RCT2_CALLPROC_WE_UPDATE(int address, rct_window* w) +{ + __asm { + push address + push w + mov esi, w + call[esp + 4] + add esp, 8 + } +} /** * * rct2: 0x006ED7B0 @@ -111,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_X(w->event_handlers[WE_UPDATE], 0, 0, 0, 0, (int)w, 0, 0); + RCT2_CALLPROC_WE_UPDATE(w->event_handlers[WE_UPDATE], w); RCT2_CALLPROC_EBPSAFE(0x006EE411); // handle_text_input } @@ -142,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_X(w->event_handlers[WE_UNKNOWN_07], 0, 0, 0, 0, (int)w, 0, 0); + 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 8dfbb32e21..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); @@ -241,11 +241,11 @@ static void window_cheats_guests_mouseup() } } -static void window_cheats_update() +static void window_cheats_update(rct_window *w) { - rct_window *w; + rct_window *w2; - __asm mov w, esi + __asm mov w2, esi w->var_48E++; widget_invalidate(w->classification, w->number, WIDX_TAB_1+w->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 cbb8dc144b..429baa8248 100644 --- a/src/window_footpath.c +++ b/src/window_footpath.c @@ -113,7 +113,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(); @@ -475,12 +475,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 b7a92563b7..fbb7005077 100644 --- a/src/window_map.c +++ b/src/window_map.c @@ -77,7 +77,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(); @@ -210,7 +210,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..49f4285b81 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,13 +458,13 @@ 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; - + //Has use asm verison incase called by WM_INVALIDATE __asm mov w, esi + sint32 format_args = RCT2_GLOBAL(0x009AF280, sint32); + // sound devices if (format_args == -1 || RCT2_GLOBAL(RCT2_ADDRESS_NUM_DSOUND_DEVICES, sint32) == 0) { RCT2_GLOBAL(0x013CE952, uint16) = STR_SOUND_NONE; 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);