[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