[Scummvm-git-logs] scummvm master -> 2d75c6b271e71168bb42024606f4b7fc510d1751
bluegr
bluegr at gmail.com
Fri Dec 28 17:11:35 CET 2018
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
2d75c6b271 SCI32: Fix QFG4 Rusalka flowers dialogue
Commit: 2d75c6b271e71168bb42024606f4b7fc510d1751
https://github.com/scummvm/scummvm/commit/2d75c6b271e71168bb42024606f4b7fc510d1751
Author: Vhati (tvtronix at yahoo.com)
Date: 2018-12-28T18:11:31+02:00
Commit Message:
SCI32: Fix QFG4 Rusalka flowers dialogue
Fixes mixed up text/audio when giving her flowers, bug #10849
Changed paths:
engines/sci/engine/message.cpp
engines/sci/resource_audio.cpp
diff --git a/engines/sci/engine/message.cpp b/engines/sci/engine/message.cpp
index aa961c9..5d1607c 100644
--- a/engines/sci/engine/message.cpp
+++ b/engines/sci/engine/message.cpp
@@ -255,6 +255,42 @@ bool MessageState::getRecord(CursorStack &stack, bool recurse, MessageRecord &re
t.verb = 1;
}
+ if (g_sci->getGameId() == GID_QFG4 && g_sci->isCD() && stack.getModule() == 520 &&
+ t.noun == 2 && t.verb == 59 && t.cond == 0) {
+ // The CD edition mangled the Rusalka flowers dialogue. - bug #10849
+ // In the floppy edition, there are 3 lines, the first from
+ // the narrator, then two from Rusalka. The CD edition omits
+ // narration and only has the 3rd text, with the 2nd audio! The
+ // 3rd audio is orphaned but available.
+ //
+ // We only restore Rusalka's lines, providing the correct text
+ // for seq:1 to match the audio. We respond to seq:2 requests
+ // with Rusalka's last text. The orphaned audio (seq:3) has its
+ // tuple adjusted to seq:2 in resource_audio.cpp.
+ if (t.seq == 1) {
+ record.tuple = t;
+ record.refTuple = MessageTuple();
+ record.talker = 28;
+ record.string = "Thank you for the beautiful flowers. No one has been so nice to me since I can remember.";
+ record.length = 89;
+ delete reader;
+ return true;
+ } else if (t.seq == 2) {
+ // The CD edition ships with this text at seq:1.
+ // Look it up instead of hardcoding.
+ t.seq = 1;
+ if (!reader->findRecord(t, record)) {
+ delete reader;
+ return false;
+ }
+ t.seq = 2; // Prevent an endless 2=1 -> 2=1 -> 2=1... loop.
+ record.tuple.seq = 2; // Make the record seq:2 to get the seq:2 audio.
+ record.refTuple = MessageTuple();
+ delete reader;
+ return true;
+ }
+ }
+
if (g_sci->getGameId() == GID_LAURABOW2 && !g_sci->isCD() && stack.getModule() == 1885 &&
t.noun == 1 && t.verb == 6 && t.cond == 16 && t.seq == 4 &&
(g_sci->getEngineState()->currentRoomNumber() == 350 ||
diff --git a/engines/sci/resource_audio.cpp b/engines/sci/resource_audio.cpp
index 6162808..dfc3d2f 100644
--- a/engines/sci/resource_audio.cpp
+++ b/engines/sci/resource_audio.cpp
@@ -468,6 +468,14 @@ int ResourceManager::readAudioMapSCI11(IntMapResourceSource *map) {
n = 0x17010001;
}
+ // QFG4CD has an orphaned audio36 resource that additionally has the wrong tuple.
+ // The audio36 tuple is 520 2 59 0 3. The message would be 520 2 59 0 2. bug #10849
+ // We restore the missing message in message.cpp.
+ if (g_sci->getGameId() == GID_QFG4 && g_sci->isCD() &&
+ map->_mapNumber == 520 && n == 0x023b0003) {
+ n = 0x023b0002;
+ }
+
if (isEarly) {
offset = ptr.getUint32LE();
ptr += 4;
More information about the Scummvm-git-logs
mailing list