[Scummvm-git-logs] scummvm master -> 92f57b06a630c357d005552bf2fdbd99257735d4

dreammaster noreply at scummvm.org
Thu Apr 23 08:16:14 UTC 2026


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

Summary:
8e223a5c10 MADS: PHANTOM: Fix displaying selected item specific actions
92f57b06a6 MADS: PHANTOM: Fix walker crashes in Opera cutscene


Commit: 8e223a5c103a3e6e0446e3344276b326684306b1
    https://github.com/scummvm/scummvm/commit/8e223a5c103a3e6e0446e3344276b326684306b1
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-04-23T17:11:42+10:00

Commit Message:
MADS: PHANTOM: Fix displaying selected item specific actions

Changed paths:
    engines/mads/madsv2/core/inter.cpp


diff --git a/engines/mads/madsv2/core/inter.cpp b/engines/mads/madsv2/core/inter.cpp
index 5476fe435cd..a8ec0f74344 100644
--- a/engines/mads/madsv2/core/inter.cpp
+++ b/engines/mads/madsv2/core/inter.cpp
@@ -53,8 +53,6 @@ namespace MADSV2 {
 
 #define disable_error_check
 
-int extra_display_object;
-
 int stroke_type = STROKE_NONE;          /* Current stroke type           */
 
 int inter_auxiliary_click;              /* Clicks during downtime        */
@@ -471,11 +469,12 @@ static void inter_show_all_inven(void) {
  */
 static void inter_show_all_actions(void) {
 	int count;
-	int id;
 
 	if (active_inven >= 0) {
 		for (count = 0; count < (int)object[inven[active_inven]].num_verbs; count++) {
-			id = object[inven[active_inven]].vocab_id;
+			inter_show_word(STROKE_ACTION, count);
+#if 0
+			int id = object[inven[active_inven]].vocab_id;
 			id = object_named(id);
 			// id = object[inven[active_inven]].verb[count].count;
 			if (id == 8) {  // pid doll
@@ -488,6 +487,7 @@ static void inter_show_all_actions(void) {
 			} else {
 				inter_show_word(STROKE_ACTION, count);
 			}
+#endif
 		}
 	}
 }
@@ -732,40 +732,32 @@ void inter_set_active_inven(int new_active) {
 				xs = action_delta_x;
 				ys = (inter_delta_y * max_verbs);
 
-
-
-				if (extra_display_object) {
-					if (image_inter_marker < IMAGE_INTER_LIST_SIZE) {
-						image_inter_list[image_inter_marker].flags = IMAGE_OVERPRINT;
-						image_inter_list[image_inter_marker].x = x1;
-						image_inter_list[image_inter_marker].y = (byte)y1;
-						image_inter_list[image_inter_marker].sprite_id = (byte)xs;
-						image_inter_list[image_inter_marker].series_id = (byte)ys;
-						image_inter_marker++;
-					}
+				if (image_inter_marker < IMAGE_INTER_LIST_SIZE) {
+					image_inter_list[image_inter_marker].flags = IMAGE_OVERPRINT;
+					image_inter_list[image_inter_marker].x = x1;
+					image_inter_list[image_inter_marker].y = (byte)y1;
+					image_inter_list[image_inter_marker].sprite_id = (byte)xs;
+					image_inter_list[image_inter_marker].series_id = (byte)ys;
+					image_inter_marker++;
+				}
 #ifndef disable_error_check
-					else {
-						error_report(ERROR_IMAGE_INTER_LIST_FULL, WARNING, MODULE_INTER, IMAGE_INTER_LIST_SIZE, 2);
-					}
+				else {
+					error_report(ERROR_IMAGE_INTER_LIST_FULL, WARNING, MODULE_INTER, IMAGE_INTER_LIST_SIZE, 2);
+				}
 #endif
 
-					matte_inter_frame(false, false);
+				matte_inter_frame(false, false);
 
-					inter_show_all_actions();
-					inter_update(x1, y1, xs, ys);
-				}
+				inter_show_all_actions();
+				inter_update(x1, y1, xs, ys);
 			}
 		}
 	}
 
-
-
 	if (new_active != -1) {
-		if (extra_display_object) {
-			inter_spin_object(inven[new_active]);
-			mcga_setpal_range(&master_palette, 7, 1);
-			mcga_setpal_range(&master_palette, 246, 2);
-		}
+		inter_spin_object(inven[new_active]);
+		mcga_setpal_range(&master_palette, 7, 1);
+		mcga_setpal_range(&master_palette, 246, 2);
 	} else {
 		inter_turn_off_object();
 	}
@@ -882,8 +874,6 @@ void inter_move_object(int object_id, int location) {
 	// extra_blank_knothole();
 done:
 	;
-
-	extra_display_object = false;
 }
 
 /**


Commit: 92f57b06a630c357d005552bf2fdbd99257735d4
    https://github.com/scummvm/scummvm/commit/92f57b06a630c357d005552bf2fdbd99257735d4
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-04-23T18:16:03+10:00

Commit Message:
MADS: PHANTOM: Fix walker crashes in Opera cutscene

Changed paths:
    engines/mads/madsv2/core/game.cpp
    engines/mads/madsv2/core/player.cpp


diff --git a/engines/mads/madsv2/core/game.cpp b/engines/mads/madsv2/core/game.cpp
index 58476891a65..a45aa8670b0 100644
--- a/engines/mads/madsv2/core/game.cpp
+++ b/engines/mads/madsv2/core/game.cpp
@@ -1549,7 +1549,7 @@ void game_control() {
 				buffer_rect_fill(scr_main, 0, viewing_at_y + scr_work.y, video_x, video_y, 0);
 			}
 
-			// pl conv_restore_running = -1;
+			conv_restore_running = -1;
 			player.target_x = player.x;
 			player.target_y = player.y;
 			player.target_facing = player.turn_to_facing = player.facing;
diff --git a/engines/mads/madsv2/core/player.cpp b/engines/mads/madsv2/core/player.cpp
index d35bc951763..0d73aa87092 100644
--- a/engines/mads/madsv2/core/player.cpp
+++ b/engines/mads/madsv2/core/player.cpp
@@ -179,6 +179,10 @@ void player_new_stop_walker() {
 	id = player.series_base + player.series;
 	walker = series_list[id]->walker;
 
+	// WORKAROUND: For ROTP opera scene
+	if (!walker)
+		return;
+
 	if (!walker->num_secondary) {
 		player.sprite = 1;
 		goto done;
@@ -219,6 +223,11 @@ void player_select_series() {
 	player.series = player_facing_to_series[player.facing];
 
 	if (!player.available[player.series]) {
+		// WORKAROUND: During the ROTP opera cutscene, player.series can be 0.
+		// So we have guard against series becoming negative
+		if (player.series == 0 && player.series_base == 0)
+			return;
+
 		player.series -= 4;
 		player.mirror = MIRROR_MASK;
 	}
@@ -324,6 +333,10 @@ void player_stationary_update() {
 	id = player.series_base + player.series;
 	walker = series_list[id]->walker;
 
+	// WORKAROUND: For ROTP Opera scene
+	if (!walker)
+		return;
+
 	if (walker->num_secondary > 0) {
 		abs_stop = ABS(player.stop_walker_sequence);
 		sgn_stop = sgn(player.stop_walker_sequence);




More information about the Scummvm-git-logs mailing list