[Scummvm-git-logs] scummvm master -> 6290b52667e3450312277be40f845544babc3bdf

dreammaster noreply at scummvm.org
Tue Jun 2 07:11:35 UTC 2026


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

Summary:
e9d76282d9 MADS: DRAGONSPHERE: Workaround for conv_reset invalid indexes
6ef0ceed55 MADS: DRAGONSPHERE: Room 614 conv fixes
b3112015d3 MADS: DRAGONSPHERE: Properly reset room 614 wizard death timer
6290b52667 MADS: DRAGONSPHERE: Correctly show item that Polystone is mimicing


Commit: e9d76282d9e20f53c8553b0d98ceb73543e86a6d
    https://github.com/scummvm/scummvm/commit/e9d76282d9e20f53c8553b0d98ceb73543e86a6d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-02T17:11:22+10:00

Commit Message:
MADS: DRAGONSPHERE: Workaround for conv_reset invalid indexes

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


diff --git a/engines/mads/madsv2/core/conv.cpp b/engines/mads/madsv2/core/conv.cpp
index f4801ebfd76..dcb59344a44 100644
--- a/engines/mads/madsv2/core/conv.cpp
+++ b/engines/mads/madsv2/core/conv.cpp
@@ -1689,13 +1689,16 @@ done:
 }
 
 void conv_reset(int id) {
-	if (conv_slots[id]) {
+	// WORKAROUND: Only allowing freeing by slot within the allowed range
+	if (id < CONV_MAX_DATA && conv_slots[id]) {
 		mem_free(conv_data[id]);
 		mem_free(conv[id]);
 		conv_data[id] = nullptr;
 		conv[id] = nullptr;
 		conv_slots[id] = 0;
 	}
+
+	conv_indexes[id] = 0;
 }
 
 int conv_append(Common::WriteStream *handle) {


Commit: 6ef0ceed5512e9bb5f9b3037e90e69e0d4861f77
    https://github.com/scummvm/scummvm/commit/6ef0ceed5512e9bb5f9b3037e90e69e0d4861f77
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-02T17:11:22+10:00

Commit Message:
MADS: DRAGONSPHERE: Room 614 conv fixes

Changed paths:
    engines/mads/madsv2/dragonsphere/rooms/room614.cpp


diff --git a/engines/mads/madsv2/dragonsphere/rooms/room614.cpp b/engines/mads/madsv2/dragonsphere/rooms/room614.cpp
index 7c3ff5dfd87..9832f762e39 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/room614.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/room614.cpp
@@ -1117,11 +1117,6 @@ static void process_conv_32() {
 		local->wiz_ice_action = KILL_PID;
 		break;
 
-	case conv032_pid_death_b_b:
-		conv_abort();
-		local->wiz_float_action = KILL_PID;
-		break;
-
 	case 7:
 		*conv_my_next_start = 8;
 		conv_abort();
@@ -1136,13 +1131,25 @@ static void process_conv_32() {
 		local->wiz_float_action = WAITING_FOR_STONE;
 		break;
 
-	case 17:
-		*conv_my_next_start = 18;
+	case conv032_pain_b_b:
+		*conv_my_next_start = conv032_pain;
 		conv_abort();
 		local->activate_timer = true;
 		player.commands_allowed = true;
 		break;
 
+	case 17:
+		*conv_my_next_start = 18;
+		conv_abort();
+		local->wiz_ice_action = WAITING_FOR_STONE;
+		local->wiz_float_action = WAITING_FOR_STONE;
+		break;
+
+	case conv032_pid_death_b_b:
+		conv_abort();
+		local->wiz_float_action = KILL_PID;
+		break;
+
 	case 22:
 		*conv_my_next_start = 23;
 		conv_abort();
@@ -1150,11 +1157,19 @@ static void process_conv_32() {
 		local->wiz_float_action = WAITING_FOR_STONE;
 		break;
 
-	case conv032_pain_b_b:
-		*conv_my_next_start = conv032_pain;
+	case 25:
+		*conv_my_next_start = 26;
 		conv_abort();
+		local->death_timer = 0;
+		local->clock = 0;
+		local->doofus = true;
 		local->activate_timer = true;
-		player.commands_allowed = true;
+		player.commands_allowed = false;
+		local->wiz_ice_action = BACK_TO_CAMERA;
+		local->wiz_float_action = BACK_TO_CAMERA;
+		break;
+
+	default:
 		break;
 	}
 


Commit: b3112015d3a7a7282b32104610c56d4205a6fb90
    https://github.com/scummvm/scummvm/commit/b3112015d3a7a7282b32104610c56d4205a6fb90
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-02T17:11:22+10:00

Commit Message:
MADS: DRAGONSPHERE: Properly reset room 614 wizard death timer

Changed paths:
    engines/mads/madsv2/dragonsphere/rooms/room614.cpp


diff --git a/engines/mads/madsv2/dragonsphere/rooms/room614.cpp b/engines/mads/madsv2/dragonsphere/rooms/room614.cpp
index 9832f762e39..d0cabe2fed7 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/room614.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/room614.cpp
@@ -1135,6 +1135,7 @@ static void process_conv_32() {
 		*conv_my_next_start = conv032_pain;
 		conv_abort();
 		local->activate_timer = true;
+		local->death_timer = 0;
 		player.commands_allowed = true;
 		break;
 
@@ -1160,10 +1161,10 @@ static void process_conv_32() {
 	case 25:
 		*conv_my_next_start = 26;
 		conv_abort();
-		local->death_timer = 0;
 		local->clock = 0;
 		local->doofus = true;
 		local->activate_timer = true;
+		local->death_timer = 0;
 		player.commands_allowed = false;
 		local->wiz_ice_action = BACK_TO_CAMERA;
 		local->wiz_float_action = BACK_TO_CAMERA;


Commit: 6290b52667e3450312277be40f845544babc3bdf
    https://github.com/scummvm/scummvm/commit/6290b52667e3450312277be40f845544babc3bdf
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-02T17:11:23+10:00

Commit Message:
MADS: DRAGONSPHERE: Correctly show item that Polystone is mimicing

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 d67ce4ecc7d..16a0b0bbdd5 100644
--- a/engines/mads/madsv2/core/inter.cpp
+++ b/engines/mads/madsv2/core/inter.cpp
@@ -42,10 +42,13 @@
 #include "mads/madsv2/core/video.h"
 #include "mads/madsv2/core/matte.h"
 #include "mads/madsv2/core/game.h"
+#include "mads/madsv2/core/global.h"
 #include "mads/madsv2/core/imath.h"
 #include "mads/madsv2/core/env.h"
 #include "mads/madsv2/core/error.h"
 #include "mads/madsv2/forest/extra.h"
+#include "mads/madsv2/dragonsphere/mads/inventory.h"
+#include "mads/madsv2/dragonsphere/global.h"
 #include "mads/madsv2/engine.h"
 
 namespace MADS {
@@ -1939,7 +1942,13 @@ void inter_spin_object(int object_id) {
 	if (inter_object_routine == NULL) {
 		Common::strcpy_s(temp_buf, "*OB");
 
-		env_catint(temp_buf, object_id, 3);
+		// Special handling for the Polystone in Dragonsphere, which can mimic other items
+		int objectId = object_id;
+		if (g_engine->getGameID() == GType_Dragonsphere && object_id == Dragonsphere::polystone &&
+			global[Dragonsphere::object_imitated] != -1)
+			objectId = global[Dragonsphere::object_imitated];
+
+		env_catint(temp_buf, objectId, 3);
 
 		Common::strcat_s(temp_buf, "I");
 




More information about the Scummvm-git-logs mailing list