From 06addfc4041b3e20fd89dee46227e04f1c66fe52 Mon Sep 17 00:00:00 2001 From: Kirben Date: Tue, 26 May 2015 13:23:20 +1000 Subject: AGOS: Add updated patch for #647 - Simon 1 DOS Adlib instrument bank --- engines/agos/midi.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'engines/agos/midi.h') diff --git a/engines/agos/midi.h b/engines/agos/midi.h index 398e445535..7e78bfef28 100644 --- a/engines/agos/midi.h +++ b/engines/agos/midi.h @@ -77,11 +77,15 @@ protected: byte _queuedTrack; bool _loopQueuedTrack; + byte *_adlibPatches; + protected: static void onTimer(void *data); void clearConstructs(); void clearConstructs(MusicInfo &info); void resetVolumeTable(); + void loadAdlibPatches(); + void unloadAdlibPatches(); public: bool _enable_sfx; -- cgit v1.2.3 From d24c68c739dadd1404d937f9a21d93e8841a09ee Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Sun, 21 Jun 2015 00:45:45 +0200 Subject: AGOS: implement Accolade AdLib + MT32 music drivers - both known variants are supported (INSTR.DAT + MUSIC.DRV) - INSTR.DAT/MUSIC.DRV holds channel mapping, instrument mapping, etc. - fixed bug inside S1D MidiParser, that ruined some instrument changes 0xFC header was seen as 2 byte header, but it's 4 bytes in Elvira 2 and 5 bytes in Waxworks / Simon 1 demo - dynamic channel allocation for the MUSIC.DRV adlib driver is not implemented atm, simply because at least the demos of Waxworks and Simon 1 do not use this feature - sound effects of Waxworks are not implemented atm - note: the game "Altered Destiny" uses Accolade INSTR.DAT variant too --- engines/agos/midi.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'engines/agos/midi.h') diff --git a/engines/agos/midi.h b/engines/agos/midi.h index 7e78bfef28..e7fcadc6ee 100644 --- a/engines/agos/midi.h +++ b/engines/agos/midi.h @@ -113,12 +113,14 @@ public: void setVolume(int musicVol, int sfxVol); public: - int open(int gameType); + int open(int gameType, bool isDemo); // MidiDriver_BASE interface implementation virtual void send(uint32 b); virtual void metaEvent(byte type, byte *data, uint16 length); +private: + bool _accolade_mode; }; } // End of namespace AGOS -- cgit v1.2.3 From 3f9c44c743c9d8dd703677d3c4ca006618ba33ed Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Sun, 21 Jun 2015 03:23:01 +0200 Subject: AGOS: Accolade AdLib/MT32 driver naming cleanup --- engines/agos/midi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/agos/midi.h') diff --git a/engines/agos/midi.h b/engines/agos/midi.h index e7fcadc6ee..de0c239719 100644 --- a/engines/agos/midi.h +++ b/engines/agos/midi.h @@ -120,7 +120,7 @@ public: virtual void metaEvent(byte type, byte *data, uint16 length); private: - bool _accolade_mode; + bool _accoladeMode; }; } // End of namespace AGOS -- cgit v1.2.3 From b38c161c18f223c4c9c7495a77682c4435d42121 Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Wed, 1 Jul 2015 12:40:16 +0200 Subject: AGOS: add Miles Audio support for simon 2 currently not enabled by default, because there are some issues. --- engines/agos/midi.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'engines/agos/midi.h') diff --git a/engines/agos/midi.h b/engines/agos/midi.h index de0c239719..e262669d28 100644 --- a/engines/agos/midi.h +++ b/engines/agos/midi.h @@ -33,6 +33,12 @@ class File; namespace AGOS { +enum kMusicMode { + kMusicModeDisabled = 0, + kMusicModeAccolade = 1, + kMusicModeMilesAudio +}; + struct MusicInfo { MidiParser *parser; byte *data; @@ -120,7 +126,7 @@ public: virtual void metaEvent(byte type, byte *data, uint16 length); private: - bool _accoladeMode; + kMusicMode _musicMode; }; } // End of namespace AGOS -- cgit v1.2.3 From 870b33743f5909893269874ded56ffcdd6813060 Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Fri, 3 Jul 2015 21:02:13 +0200 Subject: AGOS: Simon 2: extract MIDPAK.AD from SETUP.SHR implements support for extracting MIDPAK.AD from SETUP.SHR this way the user isn't required to install the game and can just use the files copied from CD-ROM. Files inside SETUP.SHR were compressed using PKWARE data compression library. PKWARE decompression code based on information released by Ben Rudiak-Gould in comp.compression on 13.8.2001 Miles Audio support is still disabled atm and has to be enabled manually --- engines/agos/midi.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'engines/agos/midi.h') diff --git a/engines/agos/midi.h b/engines/agos/midi.h index e262669d28..5e4a2bc109 100644 --- a/engines/agos/midi.h +++ b/engines/agos/midi.h @@ -127,6 +127,15 @@ public: private: kMusicMode _musicMode; + +private: + const byte *simon2SetupExtractFile(const Common::String &requestedFileName, uint32 &extractedDataSize); + + inline uint16 simon2SetupGetBits(byte bitCount, const byte *&dataPtr, const byte *dataEndPtr, byte &dataBitsLeft); + inline uint16 simon2SetupGetLength(const byte *&dataPtr, const byte *dataEndPtr, byte &dataBitsLeft); + inline uint16 simon2SetupGetOffset(byte lowOrderBits, const byte *&dataPtr, const byte *dataEndPtr, byte &dataBitsLeft); + inline uint16 simon2SetupReverseBits(uint16 bits, byte bitCount); + const byte *simon2SetupDecompressFile(const byte *compressedDataPtr, uint32 compressedDataSize, uint32 &extractedDataSize); }; } // End of namespace AGOS -- cgit v1.2.3 From 7753f2d51610766fc273e810af1accbbcf013624 Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Sat, 4 Jul 2015 01:50:07 +0200 Subject: AGOS: Simon 2: use common PKWARE data comp. lib use PKWARE data compression library code from COMMON/ AdLib drivers will get changed to use streams too --- engines/agos/midi.h | 6 ------ 1 file changed, 6 deletions(-) (limited to 'engines/agos/midi.h') diff --git a/engines/agos/midi.h b/engines/agos/midi.h index 5e4a2bc109..fff87e63c6 100644 --- a/engines/agos/midi.h +++ b/engines/agos/midi.h @@ -130,12 +130,6 @@ private: private: const byte *simon2SetupExtractFile(const Common::String &requestedFileName, uint32 &extractedDataSize); - - inline uint16 simon2SetupGetBits(byte bitCount, const byte *&dataPtr, const byte *dataEndPtr, byte &dataBitsLeft); - inline uint16 simon2SetupGetLength(const byte *&dataPtr, const byte *dataEndPtr, byte &dataBitsLeft); - inline uint16 simon2SetupGetOffset(byte lowOrderBits, const byte *&dataPtr, const byte *dataEndPtr, byte &dataBitsLeft); - inline uint16 simon2SetupReverseBits(uint16 bits, byte bitCount); - const byte *simon2SetupDecompressFile(const byte *compressedDataPtr, uint32 compressedDataSize, uint32 &extractedDataSize); }; } // End of namespace AGOS -- cgit v1.2.3 From 96005c7da9229f4801ac73b4200c54e38dcd7e32 Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Sat, 4 Jul 2015 12:55:49 +0200 Subject: AUDIO: Miles Audio AdLib instrument stream support - not using byte pointer + size and instead now a SeekableReadStream for factory - adjusted ACCESS + AGOS engines accordingly --- engines/agos/midi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'engines/agos/midi.h') diff --git a/engines/agos/midi.h b/engines/agos/midi.h index fff87e63c6..d0a7d77971 100644 --- a/engines/agos/midi.h +++ b/engines/agos/midi.h @@ -129,7 +129,7 @@ private: kMusicMode _musicMode; private: - const byte *simon2SetupExtractFile(const Common::String &requestedFileName, uint32 &extractedDataSize); + Common::SeekableReadStream *simon2SetupExtractFile(const Common::String &requestedFileName); }; } // End of namespace AGOS -- cgit v1.2.3 From a4b8c6e054fec4a3555970a70430a90fa96db12e Mon Sep 17 00:00:00 2001 From: Kirben Date: Sun, 5 Jul 2015 10:58:35 +1000 Subject: AGOS: Revert 46d1c106ca560c285c556a0b02b54d76bc6a29ba: AGOS: Give each MIDI track its own loop flag Since the changes broke looping in Simon the Sorcerer 2. --- engines/agos/midi.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'engines/agos/midi.h') diff --git a/engines/agos/midi.h b/engines/agos/midi.h index d0a7d77971..25ebd476c5 100644 --- a/engines/agos/midi.h +++ b/engines/agos/midi.h @@ -53,7 +53,6 @@ struct MusicInfo { MusicInfo() { clear(); } void clear() { parser = 0; data = 0; num_songs = 0; - loopTrack = false; memset(songs, 0, sizeof(songs)); memset(song_sizes, 0, sizeof(song_sizes)); memset(channel, 0, sizeof(channel)); @@ -79,7 +78,7 @@ protected: // These are only used for music. byte _currentTrack; - bool _loopTrackDefault; + bool _loopTrack; byte _queuedTrack; bool _loopQueuedTrack; -- cgit v1.2.3 From a7fe40d3b18aa23d76ea33381efa6b48414abe2b Mon Sep 17 00:00:00 2001 From: Kirben Date: Sun, 5 Jul 2015 11:20:39 +1000 Subject: AGOS: The sound effects in Simon the Sorcerer 1 (Floppy) are only meant for Adlib. --- engines/agos/midi.h | 1 + 1 file changed, 1 insertion(+) (limited to 'engines/agos/midi.h') diff --git a/engines/agos/midi.h b/engines/agos/midi.h index 25ebd476c5..88810472e5 100644 --- a/engines/agos/midi.h +++ b/engines/agos/midi.h @@ -93,6 +93,7 @@ protected: void unloadAdlibPatches(); public: + bool _adLibMusic; bool _enable_sfx; public: -- cgit v1.2.3 From cc46c92a8e50e1ce799df2758918a644e725dc5a Mon Sep 17 00:00:00 2001 From: Torbjörn Andersson Date: Tue, 7 Jul 2015 00:28:53 +0200 Subject: AGOS: Remove unused field Should have been removed in a4b8c6e054fec4a3555970a70430a90fa96db12e but wasn't. --- engines/agos/midi.h | 1 - 1 file changed, 1 deletion(-) (limited to 'engines/agos/midi.h') diff --git a/engines/agos/midi.h b/engines/agos/midi.h index 88810472e5..edb3402735 100644 --- a/engines/agos/midi.h +++ b/engines/agos/midi.h @@ -42,7 +42,6 @@ enum kMusicMode { struct MusicInfo { MidiParser *parser; byte *data; - bool loopTrack; byte num_songs; // For Type 1 SMF resources byte *songs[16]; // For Type 1 SMF resources uint32 song_sizes[16]; // For Type 1 SMF resources -- cgit v1.2.3