Commit Graph
78 Commits
Author SHA1 Message Date
Eugene Sandulenko fb7095f5a4 COMMON: Move all compression-related files to a separate directory 2022-12-01 11:53:02 +01:00
Le Philousophe 4dc3436cac JANITORIAL: Don't include ScummVM files using brackets 2022-08-22 12:17:58 +02:00
Coen Rampen 03de0244ed AGOS: Fix DOS PN and FF demo crash
The engine would try to initialize the MidiPlayer for all DOS games, even the
ones that don't use MIDI (Personal Nightmare and Feeble Files demos). This
caused a problem with the new MIDI code, which does not set up the necessary
objects for these games and crashed on a null pointer.
This is fixed by adding PN and FF as exceptions to the if condition guarding
initialization of the MidiPlayer.
2022-08-04 21:50:46 +02:00
Coen Rampen 38eff6c7c3 AGOS: Add OPL3 mode for Elvira 1
This commit enables the Accolade AdLib driver's OPL3 mode for Elvira 1. It adds
some extra notes, most notable in the intro track. A small fix is applied to
one of the instruments in the intro track to make it work properly with this
mode.
2022-05-16 12:18:11 +02:00
Coen Rampen 07a6b54f54 AGOS: Add CMS support for Elvira 1
This adds support for the Creative Music System / Gameblaster to Elvira 1.
2022-05-16 12:18:11 +02:00
Coen Rampen 3dd5568cab AGOS: Improve E2/WW AdLib SFX timing
This change improves the accuracy of the timing of the AdLib SFX of Elvira 2
and Waxworks. The frequency of the SFX script timer is now synchronized with
the callback timer of the AdLib driver, which makes the timing of the OPL
register writes match that of the original interpreter.
2022-05-09 17:19:45 +02:00
Coen Rampen 5e95bdcbda AGOS: Elvira 1 - add support for Casio devices
This adds support for the Casio MT-540, CT-460 and CSM-1 for Elvira 1.
2022-05-09 17:19:44 +02:00
Coen Rampen 5e1905f5f6 AGOS: Waxworks OPL3 mode instrument attack fix
This fixes the slow attack for several instruments, which causes some barely
audible notes in OPL3 mode.
2022-05-09 17:19:44 +02:00
Coen Rampen 66bb075f1c AGOS: Add E2/WW AdLib and MT-32 SFX and enhancements
This adds support for the AdLib and MT-32 sound effects in Elvira 2 and
Waxworks. It adds an option to the UI to toggle between sampled and
synthesized SFX. It also adds the following enhancements:
- AdLib OPL3 mode for Elvira 2, Waxworks and Simon 1 floppy demo. This can be
selected using a new UI option.
- Mixed AdLib/MIDI mode for Elvira 2 and Waxworks.
- Implemented "monophonic chords", a feature of the original MIDI code which
would play only the highest note of a chord on AdLib. Most noticable in the
Waxworks music.
- Added UI option to select Simon 1 DOS music tempos.
- Rewrite of the AdLib and MT-32 drivers to remove duplication and make use of
features of the standard multisource drivers.
- Refactored MidiPlayer to standardize interface and remove code moved to the
drivers and parsers.
2022-05-09 17:19:44 +02:00
Coen Rampen a72704764b AGOS: Fix Simon 2 intro first scene MT-32 music
The first scene of the Simon The Sorcerer 2 intro uses 3 music tracks. The last
2 are missing from the MT-32 MIDI data set. The original interpreter just stops
playing music after the first track and does not restart until the next scene.

This commit fixes this problem by using the GM versions of these 2 tracks
instead and mapping the GM instruments to MT-32 ones.
2022-05-09 17:19:43 +02:00
Coen Rampen f1e3c12895 AGOS: Improve Simon 2 MIDI code
The DOS versions of Simon the Sorcerer 2 now use the Miles drivers. AdLib now
sounds like the original does. ScummVM would use the second set of XMIDI data,
written for the MT-32, for GM with instrument remapping. Now the first set is
used, which uses GM instruments and has extra instruments on several pieces.
For all versions music fade-outs have been added during screen fades.
2022-05-09 17:19:42 +02:00
Coen Rampen 7b3949aed6 AGOS: Improve Simon 1 MIDI code
The MIDI code now supports mixed MIDI mode for the DOS floppy version of
Simon 1. The code for loading the various MIDI formats has been simplified.
2022-05-09 17:19:42 +02:00
Eugene Sandulenko abea37c9bb ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
Orgad Shaneh 8c81b5026a AGOS: Use nullptr
Using clang-tidy modernize-use-nullptr
2021-11-14 15:51:59 +02:00
Torbjörn Andersson 09433c1c1d AGOS: Use the music volume setting for Accolade AdLib driver
At this point, the driver still tries to play notes at the maximum
allowed volume or louder, but ScummVM's music volume setting can bring
them back down to the expected range. That may have to be good enough
for now.

Also, since the master volume is only used internally there's no need to
keep converting back and forth. Just use the interval 0-255 throughout.
2021-11-02 07:08:13 +01:00
athrxx 4a6dbc73db AGOS: attempt to fix bug no. 12617 ("AGOS: Deadlock when shutting down game")
I have also made the necessary changes to the PC-98 audio drivers which were written to work around the current situation, but now also need a different order in the destructors.
2021-06-11 17:49:33 +02:00
sluicebox 93eeffc84d JANITORIAL: Update old bug tracker numbers 2021-03-03 02:15:05 +02:00
athrxx a3fd19265f AGOS: (ELVIRA/PC98/Jp) - add sound driver
Added support for PC9801-26, Roland MT-32 and General Midi. I have left out the PC speaker part for now.
2021-01-22 00:47:59 +01:00
athrxx bb8c70f865 AGOS: (ELVIRA/PC98/Jp) - fix startup
Add necessary file name and file format modifications so that the game at least loads up and runs up to the start scene without glitches.
2021-01-22 00:47:58 +01:00
aryanrawlani28 4b6976c558 GUI: U32: Reduce number of files changed and fixes
Up until last commit, everything was working fine but the amount of files changed was too large. This commit tries to reduce the changes.

- Add a fake constructor to Keymap, text-to-speech, setDescription (save-state)
- Redirecting functions for PopUpWidget::appendEntry, ButtonWidget::setLabel, GUIErrorMessage
- Use the above functions and constructors to reduce changes in Engines
- Fix warnings being in unicode. Only output english text in - Warnings, Errors, etc.
- Mark some strings as "translation" strings. (Not yet added to POTFILES)
- Remove some CP related things from po/modules.mk
- Previously used some Common::convertToU32 where it was not necessary, replace this with u32constructor
2020-08-30 14:43:41 +02:00
aryanrawlani28 a9bfe35216 GUI: U32: More issue fixes and general improvements
- Use the fake constructor for message dialog less often
- solve errors regarding comparision between string and u32string in midi
- solve errors in testbed/speech related to ttsMan->say
- fix unsigned comparision warning in tab.cpp
- fix issue with static strings and translations in sdl-graphics
2020-08-30 14:43:41 +02:00
D G Turner 3a0ed17e66 AGOS: Fix Accolade MIDI Driver Compilation Breakage
These were broken by the last PR merge which included a cpp file in a
way which will not build reliably. This splits the Accolade MIDI driver
structure definitions into headers allowing these to be included
instead.

Also, minor cleanup by removal of unused header includes.
2019-06-03 19:35:48 +01:00
Fedor Antokhin b1bd75a083 AGOS: Mute fix for ADLIB Accolade 2019-06-03 17:06:00 +01:00
Adrian Frühwirth 49116b4ae7 ALL: Use CLIP to clip volumes 2018-05-05 17:57:31 +02:00
Eugene Sandulenko dead4aa014 JANITORIAL: Remove trailing spaces 2016-10-09 14:59:58 +02:00
Kirben 11c7d38e09 AGOS: Fix music looping in disk version of Simon1, a regression from svn 22907. 2015-07-24 20:34:52 +10:00
Johannes Schickel 757077fecc AGOS: Add simple volume control when Simon1 AdLib output is used. 2015-07-23 22:33:57 +02:00
Johannes Schickel cf42dc0a35 AGOS: Slight cleanup in Simon1 AdLib output initialization code. 2015-07-23 22:33:56 +02:00
Johannes Schickel 33c57c632c Revert "AGOS: Add updated patch for #647 - Simon 1 DOS Adlib instrument bank"
This reverts commit 06addfc404.

We implement the actual Simon1 DOS AdLib driver now, thus this code is
obsolete.
2015-07-23 22:33:56 +02:00
Johannes Schickel 979a885ef9 AGOS: Add initial version of Simon1 DOS AdLib output.
Testing so far has not really happened. Only the first part of the intro has
been tested.
2015-07-23 22:33:56 +02:00
Kirben a7fe40d3b1 AGOS: The sound effects in Simon the Sorcerer 1 (Floppy) are only meant for Adlib. 2015-07-05 11:20:39 +10:00
Kirben a4b8c6e054 AGOS: Revert 46d1c106ca:
AGOS: Give each MIDI track its own loop flag

Since the changes broke looping in Simon the Sorcerer 2.
2015-07-05 10:58:35 +10:00
Martin Kiewitz 96005c7da9 AUDIO: Miles Audio AdLib instrument stream support
- not using byte pointer + size and instead now a
  SeekableReadStream for factory
- adjusted ACCESS + AGOS engines accordingly
2015-07-04 12:55:49 +02:00
Martin Kiewitz 7753f2d516 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
2015-07-04 01:50:07 +02:00
Martin Kiewitz 870b33743f 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
2015-07-03 21:02:13 +02:00
Martin Kiewitz 453a800754 AGOS: music: simplified music-mode code in open()
combined both Accolade + Miles Audio initial open() code
2015-07-03 01:09:36 +02:00
Martin Kiewitz 32c5c2f50f AGOS: disable Miles Audio for Simon 2
enabled it by accident in the last commit
2015-07-03 00:59:17 +02:00
Martin Kiewitz bfa7d89500 AGOS: Accolade music: read driver data in factory
moved driver reading code into factory of both Accolade music drivers
2015-07-03 00:52:36 +02:00
Martin Kiewitz 710aeb380b AGOS: SIMON2: set nativeMT32, so mt32 tracks get
set _nativeMT32, so that the MT32 XMIDI track set is getting used
and not the general MIDI one for MT32 Miles Audio playback.
This should solve the MT32 music issues, although this needs
to get verified in detail.
2015-07-01 20:39:00 +02:00
Martin Kiewitz b38c161c18 AGOS: add Miles Audio support for simon 2
currently not enabled by default, because there are some
issues.
2015-07-01 12:40:16 +02:00
Martin Kiewitz 5f77bcc74c AGOS: Accolade MT32: General MIDI mapping
- renamed _MT32 to _nativeMT32
this name doesn't really make sense, because MUNT isn't a native
MT32, but the name is common to the other engines
- implement MT32 -> General MIDI mapping in case no MT32 is
available
- implement dialog screen, so that user is told about General MIDI
mapping and that it may sound awful
2015-06-21 10:06:12 +02:00
Martin Kiewitz 3f9c44c743 AGOS: Accolade AdLib/MT32 driver naming cleanup 2015-06-21 03:23:01 +02:00
Martin Kiewitz ac505b5c71 AGOS: Elvira 2 MUSIC.DRV variant comment added 2015-06-21 01:22:57 +02:00
Martin Kiewitz 69436f6c41 AGOS: Elvira 2 seems to use MUSIC.DRV variant
- Kirben told me that Elvira 2 is shipped with MUSIC.DRV and
INSTR.DAT file. Using MUSIC.DRV file makes the music work properly
I couldn't check, b/c I own none of these games.

- also commented out implemented bug of INSTR.DAT/MUSIC.DRV
This bug only affected the adlib drivers, so I guess we should
rather fix it instead of implementing the same buggy behavior
2015-06-21 01:20:21 +02:00
Martin Kiewitz d24c68c739 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
2015-06-21 00:45:45 +02:00
Kirben 06addfc404 AGOS: Add updated patch for #647 - Simon 1 DOS Adlib instrument bank 2015-05-26 13:23:20 +10:00
Torbjörn Andersson 46d1c106ca AGOS: Give each MIDI track its own loop flag
This is needed because the MIDI resources have their own loop flag
that overrides the global one. This makes a difference for games
that use MIDI both for music and sound effects, such as (limited
to?) the floppy version of Simon the Sorcerer 1.
2014-08-18 13:45:20 +02:00
Kirben cc1a570f96 AGOS: Revert my MIDI changes that caused bug #6664. 2014-06-29 23:36:11 +10:00
Kirben ac9182181d AGOS: Fix music looping when using Roland MT-32 music in Simon the Sorcerer 2. 2014-04-13 19:51:33 +10:00
Johannes Schickel c4fc0cee96 AGOS: Make GPL headers consistent in themselves. 2014-02-18 02:39:32 +01:00