aboutsummaryrefslogtreecommitdiff
path: root/engines/saga/music.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2008-04-05 14:06:50 +0000
committerFilippos Karapetis2008-04-05 14:06:50 +0000
commita52c6e0ba247bbdfda24248fd9cff4830d4e8300 (patch)
tree0f47ec0db94454438051c68e6fd5a4b4284576ed /engines/saga/music.cpp
parentd0bd38115618f92d33036fe35919f4c209c7b15e (diff)
downloadscummvm-rg350-a52c6e0ba247bbdfda24248fd9cff4830d4e8300.tar.gz
scummvm-rg350-a52c6e0ba247bbdfda24248fd9cff4830d4e8300.tar.bz2
scummvm-rg350-a52c6e0ba247bbdfda24248fd9cff4830d4e8300.zip
Added code to load (but NOT play) the external music files in the Macintosh version of IHNM. I believe that the music in the Mac version is in TFMX format, which is not supported yet
svn-id: r31408
Diffstat (limited to 'engines/saga/music.cpp')
-rw-r--r--engines/saga/music.cpp28
1 files changed, 23 insertions, 5 deletions
diff --git a/engines/saga/music.cpp b/engines/saga/music.cpp
index 237525dc44..e5264df43d 100644
--- a/engines/saga/music.cpp
+++ b/engines/saga/music.cpp
@@ -433,10 +433,6 @@ void Music::play(uint32 resourceId, MusicFlags flags) {
return;
}
- if (_vm->getGameType() == GType_IHNM && _vm->isMacResources()) {
- return;
- }
-
if (isPlaying() && _trackNumber == resourceId) {
return;
}
@@ -512,6 +508,9 @@ void Music::play(uint32 resourceId, MusicFlags flags) {
if (context == NULL) {
context = _vm->_resource->getContext(GAME_RESOURCEFILE);
}
+ } else if (_vm->getGameType() == GType_IHNM && _vm->isMacResources()) {
+ // The music of the Mac version of IHNM is loaded from its
+ // associated external file later on
} else {
// I've listened to music from both the FM and the GM
// file, and I've tentatively reached the conclusion
@@ -547,7 +546,26 @@ void Music::play(uint32 resourceId, MusicFlags flags) {
_player->setGM(true);
- _vm->_resource->loadResource(context, resourceId, resourceData, resourceSize);
+ if (_vm->getGameType() == GType_IHNM && _vm->isMacResources()) {
+ // Load the external music file for Mac IHNM
+ Common::File musicFile;
+ char musicFileName[40];
+ if (resourceId <= 16) // F in hex (1 char in hex)
+ sprintf(musicFileName, "Music/Music0%x", resourceId);
+ else
+ sprintf(musicFileName, "Music/Music%x", resourceId);
+ musicFile.open(musicFileName);
+ resourceSize = musicFile.size();
+ resourceData = new byte[resourceSize];
+ musicFile.read(resourceData, resourceSize);
+ musicFile.close();
+
+ // TODO: The Mac music format is unknown (probably TFMX?)
+ // so stop here
+ return;
+ } else {
+ _vm->_resource->loadResource(context, resourceId, resourceData, resourceSize);
+ }
if (resourceSize < 4) {
error("Music::play() wrong music resource size");