[Scummvm-git-logs] scummvm master -> 98277caecbb95743187fe78820904bb67cbf8e2f

dreammaster noreply at scummvm.org
Wed Jul 29 11:15:31 UTC 2026


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
98277caecb MADS: NEBULAR: Properly trigger Rex original dialogs after unloading room


Commit: 98277caecbb95743187fe78820904bb67cbf8e2f
    https://github.com/scummvm/scummvm/commit/98277caecbb95743187fe78820904bb67cbf8e2f
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-07-29T21:15:19+10:00

Commit Message:
MADS: NEBULAR: Properly trigger Rex original dialogs after unloading room

Changed paths:
    engines/mads/core/game.cpp
    engines/mads/nebular/menus.cpp


diff --git a/engines/mads/core/game.cpp b/engines/mads/core/game.cpp
index 45d185ebac3..8691d60569b 100644
--- a/engines/mads/core/game.cpp
+++ b/engines/mads/core/game.cpp
@@ -65,6 +65,7 @@
 #include "mads/forest/sound/digi.h"
 #include "mads/forest/extra.h"
 #include "mads/forest/global.h"
+#include "mads/nebular/global.h"
 
 namespace MADS {
 
@@ -1491,6 +1492,14 @@ void game_control() {
 			// Flush all EMS/XMS preloads at the room level
 			himem_flush(ROOM);
 
+			// Rex Nebular menu display
+			if (g_engine->getGameID() == GType_RexNebular && kernel.activate_menu != GAME_NO_MENU &&
+					player.commands_allowed && !global[RexNebular::kCopyProtectFailed]) {
+				player_dump_walker();
+				game_exec_function(game_menu_routine);
+				kernel.activate_menu = GAME_NO_MENU;
+			}
+
 			if (!game.going && !win_status) {
 				conv_control.running = aborted_conv;
 
@@ -1922,11 +1931,19 @@ static void game_control_loop() {
 
 		if (kernel.activate_menu) {
 			if (!kernel.trigger && player.commands_allowed) {
-				game_exec_function(game_menu_routine);
+				if (g_engine->getGameID() == GType_RexNebular) {
+					// Rex Nebular menus are their own virtual room, so the current room
+					// has to be completely unloaded before we open the menu
+					kernel.force_restart = true;
 
-				if (game_menu_routine == NULL) game.going = false;
+				} else {
+					game_exec_function(game_menu_routine);
 
-				kernel.activate_menu = GAME_NO_MENU;
+					if (game_menu_routine == NULL)
+						game.going = false;
+
+					kernel.activate_menu = GAME_NO_MENU;
+				}
 			}
 		}
 
diff --git a/engines/mads/nebular/menus.cpp b/engines/mads/nebular/menus.cpp
index 4cd03a0a306..7978719120a 100644
--- a/engines/mads/nebular/menus.cpp
+++ b/engines/mads/nebular/menus.cpp
@@ -1746,10 +1746,7 @@ void global_menu_system_shutdown() {
 }
 
 void global_game_menu() {
-
-
-	while (keys_any())
-		keys_get();
+	g_engine->flushKeys();
 
 	game_menu_setup();
 




More information about the Scummvm-git-logs mailing list