[Scummvm-git-logs] scummvm master -> 5e6c74e565db600e154655a929cf7e36277a1eee

dreammaster noreply at scummvm.org
Thu Apr 23 11:32:33 UTC 2026


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

Summary:
b63c19514f MADS: PHANTOM: Room 502 color cycling fix
ebc54ac98d MADS: PHANTOM: Room 502 room rendering fixes
5e6c74e565 MADS: PHANTOM: Workarounds for final chandelier fight null walker


Commit: b63c19514fce7497ad74ace6435dc99913280bb4
    https://github.com/scummvm/scummvm/commit/b63c19514fce7497ad74ace6435dc99913280bb4
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-04-23T20:44:18+10:00

Commit Message:
MADS: PHANTOM: Room 502 color cycling fix

Changed paths:
    engines/mads/madsv2/phantom/rooms/room502.cpp


diff --git a/engines/mads/madsv2/phantom/rooms/room502.cpp b/engines/mads/madsv2/phantom/rooms/room502.cpp
index 8ef78498be0..0733ca2dffc 100644
--- a/engines/mads/madsv2/phantom/rooms/room502.cpp
+++ b/engines/mads/madsv2/phantom/rooms/room502.cpp
@@ -19,6 +19,7 @@
  *
  */
 
+#include "common/textconsole.h"
 #include "mads/madsv2/core/game.h"
 #include "mads/madsv2/core/kernel.h"
 #include "mads/madsv2/core/camera.h"
@@ -43,6 +44,8 @@ namespace MADSV2 {
 namespace Phantom {
 namespace Rooms {
 
+#define EXPECTED_TOTAL_COLORS 378
+
 static void room_502_initialize_panels() {
 	int count;
 	int count_2 = 1;
@@ -110,7 +113,7 @@ static void room_502_load_cycling_info() {
 
 	local->cycle_pointer = NULL;
 
-	chunk = (byte *)mem_get(512 * sizeof(RGBcolor));
+	chunk = (byte *)mem_get(EXPECTED_TOTAL_COLORS * sizeof(RGBcolor));
 	if (chunk == NULL) goto done;
 
 	color_marker = (RGBcolor *)chunk;
@@ -139,7 +142,8 @@ static void room_502_load_cycling_info() {
 		total_colors += num_colors;
 	}
 
-	mem_adjust(chunk, (total_colors * sizeof(RGBcolor)));
+	if (total_colors != EXPECTED_TOTAL_COLORS)
+		error("Unexpected total cycling colors = %d", total_colors);
 
 	local->cycle_pointer = chunk;
 	local->cycle_bookkeep = 0;


Commit: ebc54ac98de47a2de9654317f0599b2c03660d86
    https://github.com/scummvm/scummvm/commit/ebc54ac98de47a2de9654317f0599b2c03660d86
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-04-23T21:03:34+10:00

Commit Message:
MADS: PHANTOM: Room 502 room rendering fixes

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


diff --git a/engines/mads/madsv2/core/kernel.cpp b/engines/mads/madsv2/core/kernel.cpp
index f5778506718..2c0f2821018 100644
--- a/engines/mads/madsv2/core/kernel.cpp
+++ b/engines/mads/madsv2/core/kernel.cpp
@@ -1188,16 +1188,22 @@ void kernel_seq_correction(long old_clock, long new_clock) {
 void kernel_draw_to_background(int series_id, int sprite_id,
 	int x, int y,
 	int depth, int scale) {
+
+	// WORKAROUND: In the ROTP mask puzzle room, the x/y are passed
+	// as KERNEL_HOME, but sprite_id == KERNEL_LAST, which is negative
+	int sprite_index = (sprite_id != KERNEL_LAST) ? sprite_id :
+		series_list[series_id]->num_sprites;
+
 	if (x == KERNEL_HOME) {
-		x = series_list[series_id]->index[sprite_id - 1].x;
+		x = series_list[series_id]->index[sprite_index - 1].x;
 	}
 
 	if (y == KERNEL_HOME) {
-		y = series_list[series_id]->index[sprite_id - 1].y;
+		y = series_list[series_id]->index[sprite_index - 1].y;
 	}
 
 	sprite_draw_3d_scaled_big(series_list[series_id],
-		sprite_id,
+		sprite_index,
 		&scr_orig, &scr_depth,
 		x - picture_map.pan_base_x,
 		y - picture_map.pan_base_y,


Commit: 5e6c74e565db600e154655a929cf7e36277a1eee
    https://github.com/scummvm/scummvm/commit/5e6c74e565db600e154655a929cf7e36277a1eee
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-04-23T21:32:18+10:00

Commit Message:
MADS: PHANTOM: Workarounds for final chandelier fight null walker

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


diff --git a/engines/mads/madsv2/core/player.cpp b/engines/mads/madsv2/core/player.cpp
index 0d73aa87092..c8abdeb6b05 100644
--- a/engines/mads/madsv2/core/player.cpp
+++ b/engines/mads/madsv2/core/player.cpp
@@ -176,10 +176,11 @@ void player_new_stop_walker() {
 	int abs_stop;
 	WalkerInfoPtr walker;
 
+	// WORKAROUND: For ROTP opera and final chandelier fight cutscene
 	id = player.series_base + player.series;
+	if (!series_list[id])
+		return;
 	walker = series_list[id]->walker;
-
-	// WORKAROUND: For ROTP opera scene
 	if (!walker)
 		return;
 
@@ -216,6 +217,7 @@ done:
 
 void player_select_series() {
 	int id;
+	WalkerInfoPtr walker;
 
 	player_clear_stop_walkers();
 
@@ -232,16 +234,22 @@ void player_select_series() {
 		player.mirror = MIRROR_MASK;
 	}
 
+	// WORKAROUND: For ROTP final confrontation on Chandelier
 	id = player.series_base + player.series;
+	if (!series_list[id])
+		return;
+	walker = series_list[id]->walker;
+	if (!walker)
+		return;
 
-	player.velocity = MAX<int>(series_list[id]->walker->velocity, 100);
+	player.velocity = MAX<int>(walker->velocity, 100);
 
 	player_set_base_frame_rate();
 
-	player.high_sprite = series_list[id]->walker->num_primary;
+	player.high_sprite = walker->num_primary;
 	if (player.high_sprite == 0) player.high_sprite = series_list[id]->num_sprites;
 
-	player.center_of_gravity = series_list[id]->walker->center_of_gravity;
+	player.center_of_gravity = walker->center_of_gravity;
 
 	if ((player.sprite <= 0) || (player.sprite > player.high_sprite)) {
 		player.sprite = 1;
@@ -330,10 +338,11 @@ void player_stationary_update() {
 		goto done;
 	}
 
+	// WORKAROUND: For ROTP Opera scene and final chandelier fight
 	id = player.series_base + player.series;
+	if (!series_list[id])
+		return;
 	walker = series_list[id]->walker;
-
-	// WORKAROUND: For ROTP Opera scene
 	if (!walker)
 		return;
 




More information about the Scummvm-git-logs mailing list