[Scummvm-git-logs] scummvm master -> 6ce747fcd673c7726d0b62bb627b6ecc808f5061

dreammaster noreply at scummvm.org
Wed Jun 3 01:49:03 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:
b010511697 MADS: DRAGONSPHERE: Fix leaving Hightower mountaintop
4ac77c3df6 MADS: DRAGONSPHERE: Implement conv code to suppress dialogs for room 504 poem
6ce747fcd6 MADS: DRAGONSPHERE: Fixed ending of rose recitation


Commit: b010511697a780a3a990f35dcb906157b260eaa3
    https://github.com/scummvm/scummvm/commit/b010511697a780a3a990f35dcb906157b260eaa3
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-03T11:48:49+10:00

Commit Message:
MADS: DRAGONSPHERE: Fix leaving Hightower mountaintop

Changed paths:
    engines/mads/madsv2/dragonsphere/mads/words.h


diff --git a/engines/mads/madsv2/dragonsphere/mads/words.h b/engines/mads/madsv2/dragonsphere/mads/words.h
index a28f8c38afa..8b2c963cb2d 100644
--- a/engines/mads/madsv2/dragonsphere/mads/words.h
+++ b/engines/mads/madsv2/dragonsphere/mads/words.h
@@ -478,7 +478,7 @@ enum {
 	words_Slathan_ni_Patan     = 453,
 	words_sick                 = 454,
 	words_path_around_tower    = 455,
-	words_path_to_Hightower    = 456,
+	words_path_to_Hightower1   = 456,
 	words_spirit_plane         = 457,
 	words_spirit_tree          = 458,
 	words_walk                 = 459,
@@ -593,6 +593,7 @@ enum {
 	words_robe                 = 569,
 	words_cedar_chest          = 570,
 	words_Dragonsphere         = 571,
+	words_path_to_Hightower    = 572,
 	words_Caliph               = 573,
 };
 


Commit: 4ac77c3df6545c8854efa8a47a4a714667139e0b
    https://github.com/scummvm/scummvm/commit/4ac77c3df6545c8854efa8a47a4a714667139e0b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-03T11:48:49+10:00

Commit Message:
MADS: DRAGONSPHERE: Implement conv code to suppress dialogs for room 504 poem

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 dcb59344a44..5b280c99ada 100644
--- a/engines/mads/madsv2/core/conv.cpp
+++ b/engines/mads/madsv2/core/conv.cpp
@@ -581,45 +581,58 @@ static void conv_generate_text(Conv *convIn, ConvData * /*convData*/,
 	int  person = conv_control.person_speaking;
 	char textBuf[512];
 	Box *savedBox;
+	bool showBox = conv_show_boxes;
 
-	// Redirect popup operations to the conversation-private box so that the
-	// bounds recorded by popup_draw can be used later by conv_purge_any_popup.
-	savedBox = box;
-	box = &conv_box;
+	// TODO: Hook this up to ScummVM subtitles - original disabled reply boxes if in voice only mode
+	//if (speech_system_active && speech_on && speechCount > 0 && !show_subtitles) showBox = false;
 
-	// Size and position the popup from the current speaker's slot data.
-	int horiz_pieces = popup_estimate_pieces(conv_control.width[person]);
-	popup_create(horiz_pieces,
-	             conv_control.x[person],
-	             conv_control.y[person]);
-
-	// Attach the speaker portrait icon if a series was loaded for this slot.
-	// The icon_id is the 1-based frame stored in speaker_frame.
-	// center=0: left-aligned within the popup box.
-	if (conv_control.speaker_series[person] >= 0) {
-		popup_add_icon(series_list[conv_control.speaker_series[person]],
-		               conv_control.speaker_frame[person],
-		               0);
-	}
+	if (showBox) {
+		// Redirect popup operations to the conversation-private box so that the
+		// bounds recorded by popup_draw can be used later by conv_purge_any_popup.
+		savedBox = box;
+		box = &conv_box;
+
+		// Size and position the popup from the current speaker's slot data.
+		int horiz_pieces = popup_estimate_pieces(conv_control.width[person]);
+		popup_create(horiz_pieces,
+			conv_control.x[person],
+			conv_control.y[person]);
+
+		// Attach the speaker portrait icon if a series was loaded for this slot.
+		// The icon_id is the 1-based frame stored in speaker_frame.
+		// center=0: left-aligned within the popup box.
+		if (conv_control.speaker_series[person] >= 0) {
+			popup_add_icon(series_list[conv_control.speaker_series[person]],
+				conv_control.speaker_frame[person],
+				0);
+		}
 
-	// Copy the dialog string to a local mutable buffer, strip trailing
-	// whitespace (the raw text pool can have padding bytes), then write it.
-	Common::strlcpy(textBuf, conv_string(convIn, textIdx), sizeof(textBuf));
-	string_trim(textBuf);
-	popup_write_string(textBuf);
+		// Copy the dialog string to a local mutable buffer, strip trailing
+		// whitespace (the raw text pool can have padding bytes), then write it.
+		Common::strlcpy(textBuf, conv_string(convIn, textIdx), sizeof(textBuf));
+		string_trim(textBuf);
+		popup_write_string(textBuf);
 
-	// Render the popup, saving the underlying screen region.
-	popup_draw(true, true);
+		// Render the popup, saving the underlying screen region.
+		popup_draw(true, true);
 
-	// Restore the caller's box and record that a conversation popup is live.
-	box = savedBox;
+		// Restore the caller's box
+		box = savedBox;
+	}
+
+	// Record that a conversation popup is live.
 	conv_control.popup_is_up  = -1;
-	conv_control.popup_clock  = kernel.clock + conv_control.popup_duration;
 
 	// Play the associated speech audio when the speech system is on.
 	if (speech_system_active && speech_on && speechCount > 0) {
 		speech_play(convIn->speech_file, speechList[0]);
 	}
+
+	if (showBox)
+		conv_control.popup_clock = kernel.clock + conv_control.popup_duration;
+	else
+		// TODO: If speech is allowed with no box showing, this needs to allow time for the speech duration
+		conv_control.popup_clock = kernel.clock;
 }
 
 static int conv_next_node() {
@@ -1323,43 +1336,63 @@ static void conv_generate_message(Conv *convIn, ConvData *convData,
 	int messageId;
 	int lineStart, lineCount;
 	char tempString[256];
+	bool showBox = conv_show_boxes;
+
+	// TODO: Hook this up to ScummVM subtitles - original disabled reply boxes if in voice only mode
+	//if (speech_system_active && speech_on && speechCount > 0 && !show_subtitles) showBox = false;
 
-	if (msgListSize != 0) {
-		personSpeaking = conv_control.person_speaking;
-		if (!popup_create(popup_estimate_pieces(conv_control.width[personSpeaking]),
+	if (showBox) {
+		if (msgListSize != 0) {
+			personSpeaking = conv_control.person_speaking;
+			if (!popup_create(popup_estimate_pieces(conv_control.width[personSpeaking]),
 				conv_control.x[personSpeaking], conv_control.y[personSpeaking])) {
-			if (conv_control.speaker_series[personSpeaking] >= 0) {
-				popup_add_icon(series_list[conv_control.speaker_series[personSpeaking]],
-					conv_control.speaker_frame[personSpeaking], 0);
-			}
+				if (conv_control.speaker_series[personSpeaking] >= 0) {
+					popup_add_icon(series_list[conv_control.speaker_series[personSpeaking]],
+						conv_control.speaker_frame[personSpeaking], 0);
+				}
 
-			for (int msgIndex = 0; msgIndex < msgListSize; ++msgIndex) {
-				messageId = msgList[msgIndex];
-				lineStart = convIn->messages[messageId].lineStart;
-				lineCount = convIn->messages[messageId].lineCount;
+				for (int msgIndex = 0; msgIndex < msgListSize; ++msgIndex) {
+					messageId = msgList[msgIndex];
+					lineStart = convIn->messages[messageId].lineStart;
+					lineCount = convIn->messages[messageId].lineCount;
 
-				for (int lineCtr = 0; lineCtr < lineCount; ++lineCtr) {
-					Common::strcpy_s(tempString, conv_string(convIn, lineStart + lineCtr));
-					string_trim(tempString);
-					popup_write_string(tempString);
+					for (int lineCtr = 0; lineCtr < lineCount; ++lineCtr) {
+						Common::strcpy_s(tempString, conv_string(convIn, lineStart + lineCtr));
+						string_trim(tempString);
+						popup_write_string(tempString);
+					}
 				}
-			}
 
-			popup_next_line();
-			if (!popup_draw(-1, -1)) {
-				conv_control.popup_is_up = -1;
-				conv_control.popup_clock = kernel.clock + conv_control.popup_duration;
+				popup_next_line();
+				if (!popup_draw(-1, -1)) {
+					conv_control.popup_is_up = -1;
+					conv_control.popup_clock = kernel.clock + conv_control.popup_duration;
 
-				if (speech_system_active && speech_on) {
-					if (voiceListSize != 0) {
-						speech_play(convIn->speech_file, *voiceList);
+					if (speech_system_active && speech_on) {
+						if (voiceListSize != 0) {
+							speech_play(convIn->speech_file, *voiceList);
+						}
 					}
 				}
 			}
 		}
+
+		box = priorBox;
 	}
 
-	box = priorBox;
+	// Record that a conversation popup is live.
+	conv_control.popup_is_up = -1;
+
+	// Play the associated speech audio when the speech system is on.
+	if (speech_system_active && speech_on && voiceListSize > 0) {
+		speech_play(convIn->speech_file, voiceList[0]);
+	}
+
+	if (showBox)
+		conv_control.popup_clock = kernel.clock + conv_control.popup_duration;
+	else
+		// TODO: If speech is allowed with no box showing, this needs to allow time for the speech duration
+		conv_control.popup_clock = kernel.clock;
 }
 
 // ---------------------------------------------------------------------------


Commit: 6ce747fcd673c7726d0b62bb627b6ecc808f5061
    https://github.com/scummvm/scummvm/commit/6ce747fcd673c7726d0b62bb627b6ecc808f5061
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-06-03T11:48:50+10:00

Commit Message:
MADS: DRAGONSPHERE: Fixed ending of rose recitation

Changed paths:
    engines/mads/madsv2/dragonsphere/mads/conv.h
    engines/mads/madsv2/dragonsphere/rooms/room504.cpp


diff --git a/engines/mads/madsv2/dragonsphere/mads/conv.h b/engines/mads/madsv2/dragonsphere/mads/conv.h
index 46ef64ef0b4..173e1cc728f 100644
--- a/engines/mads/madsv2/dragonsphere/mads/conv.h
+++ b/engines/mads/madsv2/dragonsphere/mads/conv.h
@@ -401,7 +401,7 @@ enum {
 	conv042_seventeen_restart= 89,
 	conv042_seventeen_abort  = 90,
 
-	conv042_exit_b_b         = 93,
+	conv042_exit_b_b         = 92,
 	conv042_later_b_b        = 94,
 	conv042_whoops_b_b       = 96,
 };
diff --git a/engines/mads/madsv2/dragonsphere/rooms/room504.cpp b/engines/mads/madsv2/dragonsphere/rooms/room504.cpp
index a174bb1c9bd..88f7ec4bcdc 100644
--- a/engines/mads/madsv2/dragonsphere/rooms/room504.cpp
+++ b/engines/mads/madsv2/dragonsphere/rooms/room504.cpp
@@ -1360,12 +1360,13 @@ static void process_conv_poem() {
 		conv_abort();
 		me_trig_flag = true;
 
-		if ((game.difficulty == EASY_MODE && local->got_it == 14) ||
-		    (local->got_it == 17)) {
+		if ((game.difficulty == EASY_MODE && local->got_it == 14) || (local->got_it == 17)) {
+			// Successfully completed the poem
 			kernel_timing_trigger(HALF_SECOND, ROOM_504_END_POEM);
 			global[player_score] += 8;
 
 		} else {
+			// Player screwed it up
 			local->working_on_line = 1;
 			local->line_1[0] = '\0';
 			local->line_2[0] = '\0';




More information about the Scummvm-git-logs mailing list