diff --git a/src/addresses.h b/src/addresses.h index e8618000c2..b288384800 100644 --- a/src/addresses.h +++ b/src/addresses.h @@ -126,6 +126,8 @@ #define RCT2_ADDRESS_RUN_INTRO_TICK_PART 0x009AC319 +#define RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS 0x009AC861 + #define RCT2_ADDRESS_RIDE_ENTRIES 0x009ACFA4 #define RCT2_ADDRESS_INSTALLED_OBJECT_LIST 0x009ADAE8 diff --git a/src/game.c b/src/game.c index 9d21b3bb08..a0a200527c 100644 --- a/src/game.c +++ b/src/game.c @@ -201,7 +201,7 @@ void update_palette_effects() void game_update() { - int i, numUpdates, tmp; + int i, numUpdates; // Handles picked-up peep and rain redraw redraw_peep_and_rain(); @@ -250,17 +250,20 @@ void game_update() RCT2_GLOBAL(0x009A8C28, uint8) = 0; RCT2_GLOBAL(RCT2_ADDRESS_INPUT_FLAGS, uint32) &= ~INPUT_FLAG_VIEWPORT_SCROLLING; - RCT2_GLOBAL(0x009AC861, uint16) ^= (1 << 15); - RCT2_GLOBAL(0x009AC861, uint16) &= ~(1 << 1); - tmp = RCT2_GLOBAL(0x009AC861, uint16) & (1 << 0); - RCT2_GLOBAL(0x009AC861, uint16) &= ~(1 << 0); - if (!tmp) - RCT2_GLOBAL(0x009AC861, uint16) |= (1 << 1); - RCT2_GLOBAL(0x009AC861, uint16) &= ~(1 << 3); - tmp = RCT2_GLOBAL(0x009AC861, uint16) & (1 << 2); - RCT2_GLOBAL(0x009AC861, uint16) &= ~(1 << 2); - if (!tmp) - RCT2_GLOBAL(0x009AC861, uint16) |= (1 << 2); + + RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) ^= (1 << 15); + + // Handle guest map flashing + RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) &= ~(1 << 1); + if (RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) & (1 << 0)) + RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) |= (1 << 1); + RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) &= ~(1 << 0); + + // Handle staff map flashing + RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) &= ~(1 << 3); + if (RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) & (1 << 2)) + RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) |= (1 << 3); + RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) &= ~(1 << 2); window_map_tooltip_update_visibility(); window_update_all(); diff --git a/src/title.c b/src/title.c index 87380c673b..4adfd8c253 100644 --- a/src/title.c +++ b/src/title.c @@ -277,17 +277,6 @@ void title_update() } RCT2_GLOBAL(RCT2_ADDRESS_INPUT_FLAGS, uint32) &= ~0x80; - RCT2_GLOBAL(0x009AC861, uint16) &= ~0x8000; - RCT2_GLOBAL(0x009AC861, uint16) &= ~0x02; - tmp = RCT2_GLOBAL(0x009AC861, uint16) & 0x01; - RCT2_GLOBAL(0x009AC861, uint16) &= ~0x01; - if (!tmp) - RCT2_GLOBAL(0x009AC861, uint16) |= 0x02; - RCT2_GLOBAL(0x009AC861, uint16) &= ~0x08; - tmp = RCT2_GLOBAL(0x009AC861, uint16) & 0x04; - RCT2_GLOBAL(0x009AC861, uint16) &= ~0x04; - if (!tmp) - RCT2_GLOBAL(0x009AC861, uint16) |= 0x04; window_map_tooltip_update_visibility(); window_update_all(); diff --git a/src/windows/guest_list.c b/src/windows/guest_list.c index cef844f839..7e4229bea5 100644 --- a/src/windows/guest_list.c +++ b/src/windows/guest_list.c @@ -598,7 +598,7 @@ static void window_guest_list_scrollpaint() if (_window_guest_list_selected_filter != -1) { if (window_guest_list_is_peep_in_filter(peep)) continue; - RCT2_GLOBAL(0x009AC861, uint16) |= 1; + RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) |= (1 << 0); peep->var_0C |= 0x200; } diff --git a/src/windows/map.c b/src/windows/map.c index 2d5927e7a4..1dca570427 100644 --- a/src/windows/map.c +++ b/src/windows/map.c @@ -668,17 +668,17 @@ static void window_map_paint_peep_overlay(rct_drawpixelinfo *dpi) if ((peep->var_0C & 0x200) != 0) { if (peep->type == PEEP_TYPE_STAFF) { - if ((RCT2_GLOBAL(0x009AC861, uint16) & 8) != 0) { + if ((RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) & (1 << 3)) != 0) { color = 0x8A; left--; - if ((RCT2_GLOBAL(0x009AC861, uint16) & 0x8000) == 0) + if ((RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) & (1 << 15)) == 0) color = 0xA; } } else { - if ((RCT2_GLOBAL(0x009AC861, uint16) & 2) != 0) { + if ((RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) & (1 << 1)) != 0) { color = 0xAC; left--; - if ((RCT2_GLOBAL(0x009AC861, uint16) & 0x8000) == 0) + if ((RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) & (1 << 15)) == 0) color = 0x15; } } diff --git a/src/windows/staff_list.c b/src/windows/staff_list.c index 27655c2a74..f7197f25ca 100644 --- a/src/windows/staff_list.c +++ b/src/windows/staff_list.c @@ -315,10 +315,10 @@ void window_staff_list_update(rct_window *w) w->list_information_type = 0; } else { widget_invalidate(w, WIDX_STAFF_LIST_HANDYMEN_TAB + RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8)); - RCT2_GLOBAL(0x009AC861, uint16) |= 2; + RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_MAP_FLASHING_FLAGS, uint16) |= (1 << 2); FOR_ALL_PEEPS(spriteIndex, peep) { if (peep->type == PEEP_TYPE_STAFF) { - peep->var_0C &= 0xFDFF; + peep->var_0C &= ~0x200; if (peep->staff_type == RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8)) { peep->var_0C |= 0x200;