aboutsummaryrefslogtreecommitdiff
path: root/scumm/imuse.cpp
diff options
context:
space:
mode:
authorTorbjörn Andersson2005-05-23 07:05:42 +0000
committerTorbjörn Andersson2005-05-23 07:05:42 +0000
commit37d4e9499dd66963f3770c423dd50e655023beea (patch)
tree42eb1f78d01d79cd22c30e37d7b9c4b972678742 /scumm/imuse.cpp
parent84f0ccf241dbec923326220c98b9f37896487055 (diff)
downloadscummvm-rg350-37d4e9499dd66963f3770c423dd50e655023beea.tar.gz
scummvm-rg350-37d4e9499dd66963f3770c423dd50e655023beea.tar.bz2
scummvm-rg350-37d4e9499dd66963f3770c423dd50e655023beea.zip
Save the "Sam & Max" iMUSE triggers, otherwise we won't always be able to
restore the music state correctly. The one example I know of is when saving between using the hair and the powder on Frog Rock, but there are probably others as well. svn-id: r18229
Diffstat (limited to 'scumm/imuse.cpp')
-rw-r--r--scumm/imuse.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/scumm/imuse.cpp b/scumm/imuse.cpp
index 1777eb5247..c3788fa58b 100644
--- a/scumm/imuse.cpp
+++ b/scumm/imuse.cpp
@@ -1449,6 +1449,7 @@ int IMuseInternal::save_or_load(Serializer *ser, ScummEngine *scumm) {
MKLINE(IMuseInternal, _queue_cleared, sleByte, VER(8)),
MKLINE(IMuseInternal, _master_volume, sleByte, VER(8)),
MKLINE(IMuseInternal, _trigger_count, sleUint16, VER(8)),
+ MKLINE(IMuseInternal, _snm_trigger_index, sleUint16, VER(54)),
MKARRAY(IMuseInternal, _channel_volume[0], sleUint16, 8, VER(8)),
MKARRAY(IMuseInternal, _volchan_table[0], sleUint16, 8, VER(8)),
MKEND()
@@ -1473,6 +1474,14 @@ int IMuseInternal::save_or_load(Serializer *ser, ScummEngine *scumm) {
MKEND()
};
+ const SaveLoadEntry snmTriggerEntries[] = {
+ MKLINE(ImTrigger, sound, sleInt16, VER(54)),
+ MKLINE(ImTrigger, id, sleByte, VER(54)),
+ MKLINE(ImTrigger, expire, sleUint16, VER(54)),
+ MKARRAY(ImTrigger, command[0], sleUint16, 8, VER(54)),
+ MKEND()
+ };
+
const SaveLoadEntry partEntries[] = {
MKREF(Part, _next, TYPE_PART, VER(8)),
MKREF(Part, _prev, TYPE_PART, VER(8)),
@@ -1503,7 +1512,8 @@ int IMuseInternal::save_or_load(Serializer *ser, ScummEngine *scumm) {
ser->_load_ref = loadReference;
ser->saveLoadEntries(this, mainEntries);
- ser->saveLoadArrayOf (_cmd_queue, ARRAYSIZE(_cmd_queue), sizeof(_cmd_queue[0]), cmdQueueEntries);
+ ser->saveLoadArrayOf(_cmd_queue, ARRAYSIZE(_cmd_queue), sizeof(_cmd_queue[0]), cmdQueueEntries);
+ ser->saveLoadArrayOf(_snm_triggers, ARRAYSIZE(_snm_triggers), sizeof(_snm_triggers[0]), snmTriggerEntries);
// The players
for (i = 0; i < ARRAYSIZE(_players); ++i)