From 0dfa1d1d5360c693dc76297930217c9a3445c904 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sat, 27 Jun 2026 17:39:02 -0400 Subject: [PATCH 1/4] tweak: decouple the general promotion star blink from the render frame rate --- .../Source/GameClient/GUI/ControlBar/ControlBar.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp index 2b4aca1e0d1..e435c72ad7f 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp @@ -1681,7 +1681,11 @@ const Image *ControlBar::getStarImage() return nullptr; } - if(TheGameLogic->getFrame()% LOGICFRAMES_PER_SECOND > LOGICFRAMES_PER_SECOND/2) + // TheSuperHackers @tweak bobtista 27/06/2026 Blink the general-promotion star on a + // wall-clock cycle so the blink rate is independent of the render frame rate and the + // logic time scale, and keeps blinking while the game is paused. + const UnsignedInt blinkPeriodMs = 1000; + if( timeGetTime() % blinkPeriodMs >= blinkPeriodMs / 2 ) { GadgetButtonSetEnabledImage(win, m_generalButtonHighlight); return nullptr; From 81e38737ce3be92403388fcf2068e374ded1184e Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sat, 27 Jun 2026 17:39:24 -0400 Subject: [PATCH 2/4] tweak: decouple the general promotion star blink from the render frame rate (Generals) --- .../Source/GameClient/GUI/ControlBar/ControlBar.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp b/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp index 85aed555542..93ed884fa2f 100644 --- a/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp @@ -1681,7 +1681,11 @@ const Image *ControlBar::getStarImage() return nullptr; } - if(TheGameLogic->getFrame()% LOGICFRAMES_PER_SECOND > LOGICFRAMES_PER_SECOND/2) + // TheSuperHackers @tweak bobtista 27/06/2026 Blink the general-promotion star on a + // wall-clock cycle so the blink rate is independent of the render frame rate and the + // logic time scale, and keeps blinking while the game is paused. + const UnsignedInt blinkPeriodMs = 1000; + if( timeGetTime() % blinkPeriodMs >= blinkPeriodMs / 2 ) { GadgetButtonSetEnabledImage(win, m_generalButtonHighlight); return nullptr; From a2e2fce8fc35383d3932131feff120bca92f6b2d Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sun, 28 Jun 2026 02:46:17 -0400 Subject: [PATCH 3/4] tweak: freeze general promotion star blink while game is paused --- .../Source/GameClient/GUI/ControlBar/ControlBar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp index e435c72ad7f..04227a1dad4 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp @@ -1683,9 +1683,9 @@ const Image *ControlBar::getStarImage() // TheSuperHackers @tweak bobtista 27/06/2026 Blink the general-promotion star on a // wall-clock cycle so the blink rate is independent of the render frame rate and the - // logic time scale, and keeps blinking while the game is paused. + // logic time scale, and freezes while the game is paused. const UnsignedInt blinkPeriodMs = 1000; - if( timeGetTime() % blinkPeriodMs >= blinkPeriodMs / 2 ) + if( !TheGameLogic->isGamePaused() && timeGetTime() % blinkPeriodMs >= blinkPeriodMs / 2 ) { GadgetButtonSetEnabledImage(win, m_generalButtonHighlight); return nullptr; From bb94a7b1a27415e863fdcade15ef544b23a4b47d Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sun, 28 Jun 2026 02:46:17 -0400 Subject: [PATCH 4/4] tweak: freeze general promotion star blink while game is paused (Generals) --- .../Source/GameClient/GUI/ControlBar/ControlBar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp b/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp index 93ed884fa2f..13bb7f5f630 100644 --- a/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp @@ -1683,9 +1683,9 @@ const Image *ControlBar::getStarImage() // TheSuperHackers @tweak bobtista 27/06/2026 Blink the general-promotion star on a // wall-clock cycle so the blink rate is independent of the render frame rate and the - // logic time scale, and keeps blinking while the game is paused. + // logic time scale, and freezes while the game is paused. const UnsignedInt blinkPeriodMs = 1000; - if( timeGetTime() % blinkPeriodMs >= blinkPeriodMs / 2 ) + if( !TheGameLogic->isGamePaused() && timeGetTime() % blinkPeriodMs >= blinkPeriodMs / 2 ) { GadgetButtonSetEnabledImage(win, m_generalButtonHighlight); return nullptr;