[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