diff options
author | Torbjörn Andersson | 2013-01-27 18:18:04 +0100 |
---|---|---|
committer | Torbjörn Andersson | 2013-01-27 18:18:04 +0100 |
commit | a50c05f7d0b98a1777f7b97af54bb2c842de0318 (patch) | |
tree | 3f0b1dfd362721cc8a5263abe3690cfda319d93c /audio/mods/protracker.cpp | |
parent | 9d1d5a09c4a1fb2ca827755e197ea7726eaa39ab (diff) | |
download | scummvm-rg350-a50c05f7d0b98a1777f7b97af54bb2c842de0318.tar.gz scummvm-rg350-a50c05f7d0b98a1777f7b97af54bb2c842de0318.tar.bz2 scummvm-rg350-a50c05f7d0b98a1777f7b97af54bb2c842de0318.zip |
HOPKINS: Work around broken cadavre.mod in OS/2 and BeOS versions
A large part of cadavre.mod is broken. No new notes play, and only
the old background sounds remain. It's possible, perhaps even
probable, that the original MOD player didn't have this problem,
but all standalone players I've tried do, so I'm assuming it's the
file that's broken. We work around it by changing the length of
the song after it's been loaded to only include the good parts.
Diffstat (limited to 'audio/mods/protracker.cpp')
-rw-r--r-- | audio/mods/protracker.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/audio/mods/protracker.cpp b/audio/mods/protracker.cpp index 1e18d5adf8..c947f256e0 100644 --- a/audio/mods/protracker.cpp +++ b/audio/mods/protracker.cpp @@ -90,6 +90,14 @@ private: public: ProtrackerStream(Common::SeekableReadStream *stream, int offs, int rate, bool stereo); + Modules::Module *getModule() { + // Ordinarily, the Module is not meant to be seen outside of + // this class, but occasionally, it's useful to be able to + // manipulate it directly. The Hopkins engine uses this to + // repair a broken song. + return &_module; + } + private: void interrupt(); @@ -462,8 +470,12 @@ void ProtrackerStream::interrupt() { namespace Audio { -AudioStream *makeProtrackerStream(Common::SeekableReadStream *stream, int offs, int rate, bool stereo) { - return new Modules::ProtrackerStream(stream, offs, rate, stereo); +AudioStream *makeProtrackerStream(Common::SeekableReadStream *stream, int offs, int rate, bool stereo, Modules::Module **module) { + Modules::ProtrackerStream *protrackerStream = new Modules::ProtrackerStream(stream, offs, rate, stereo); + if (module) { + *module = protrackerStream->getModule(); + } + return (AudioStream *)protrackerStream; } } // End of namespace Audio |