38 Commits

Author SHA1 Message Date
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
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
Bastien Bouclet
1624da8c99 AGOS: Add override keywords 2020-02-09 12:43:14 +01:00
Fedor Antokhin
b1bd75a083 AGOS: Mute fix for ADLIB Accolade 2019-06-03 17:06:00 +01:00
Johannes Schickel
33c57c632c Revert "AGOS: Add updated patch for #647 - Simon 1 DOS Adlib instrument bank"
This reverts commit 06addfc4041b3e20fd89dee46227e04f1c66fe52.

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
Torbjörn Andersson
cc46c92a8e AGOS: Remove unused field
Should have been removed in a4b8c6e054fec4a3555970a70430a90fa96db12e
but wasn't.
2015-07-07 00:32:54 +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 46d1c106ca560c285c556a0b02b54d76bc6a29ba:
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
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
3f9c44c743 AGOS: Accolade AdLib/MT32 driver naming cleanup 2015-06-21 03:23:01 +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
Johannes Schickel
c4fc0cee96 AGOS: Make GPL headers consistent in themselves. 2014-02-18 02:39:32 +01:00
strangerke
69b1485a22 GIT: Clean up: Suppress SVN tags, now useless 2011-05-12 01:16:22 +02:00
Ori Avtalion
cd6ee0589d JANITORIAL: Format forward declarations to follow convention 2011-04-28 12:20:34 +03:00
Max Horn
088bd7a70b ENGINES: Remove unused MIDI pass-through code 2011-03-23 17:07:48 +01:00
Max Horn
e70fd59b35 ENGINES: Further simplify pseudo MidiDrivers; fix some regressions
The regression affected AGOS and maybe some others; specifically,
the real MidiDriver would have been deleted twice -- I previously
missed that the Engine instances takes care of freeing the real
MidiDriver, not the MidiPlayer wrapping it.

This commit should clarify the ownership of the real MidiDriver for
most pseudo MidiDrivers.
2011-03-23 16:49:41 +01:00
Max Horn
29847ea42d AUDIO: Change several fake MidiDrivers to MidiDriver_BASE subclasses
Many engines follow the advice in audio/midiparser.h and create a
"pseudo-MidiDriver" subclass. But MidiParser really only needs a tiny
subset of the MidiDriver capabilities, namely those found in
MidiDriver_BASE. So we try to subclass from that whenever possible; this
allows us to remove many stub methods, and enables further future
simplifications.
2011-03-23 15:25:47 +01:00
Max Horn
8982fff1b7 AUDIO: Add pure virtual MidiDriver::isOpen() method
This in turn enables modifying MidiDriver_MPU401::close() to allow
it to be called on a midi driver that has not yet been opened.

The specific issue that triggered me to make these changes was a
crash-upon-quit in HUGO, caused by it instantiating a midi driver,
then encountering an error (missing hugo.dat) *before* having
opened the new midi driver; the general cleanup code then tries
to close the (not yet opened) midi driver -> kaboom

Also fixed some engines which were leaking MidiDriver instances.
2011-03-22 23:51:47 +01:00
Max Horn
42ab839dd6 AUDIO: Rename sound/ dir to audio/
svn-id: r55850
2011-02-09 01:09:01 +00:00
Johannes Schickel
6588398ce6 MIDI: Send a reset MIDI device signal on startup.
This is currently done in the engine code. I adapted AGI, AGOS, DRACI,
GROOVIE, LURE, MADE, QUEEN, SAGA, SKY, TINSEL and TOUCHE to send a reset
device on startup. The sound output still works fine (started up a game
from every engine), so this should hopefully not introduce any regressions.

As far as I can tell it seems that SCUMM does send a proper device reset, so
I did not touch it. KYRA only sends a proper reset for MT-32 currently. I am
not sure about SCI though.

This fixes bug #3066826 "SIMON: MIDI notes off when using RTL after SCI".

svn-id: r52736
2010-09-15 22:00:20 +00:00
Max Horn
51933629d1 Changed foo(void) to foo() in almost all non-backend source files
svn-id: r45616
2009-11-02 21:54:57 +00:00
Christopher Page
ebd3510b72 AGOS: Got rid of _masterVolume and replaced with _musicVolume and _sfxVolume so that music and sfx are separately controlled via the Options menu
svn-id: r33065
2008-07-14 22:10:04 +00:00
Max Horn
218e132e37 Updated legal headers in source files, based on what Pidgin (the IM client formerly knowns as Gaim) does; added new (incomplete) COPYRIGHT file; updated copyright dates in a few spots
svn-id: r27024
2007-05-30 21:56:52 +00:00
Max Horn
cfc3d0a8ed AGOS: Send GM System Enable/On upon startup
svn-id: r25631
2007-02-16 13:41:38 +00:00
Travis Howell
399f8381a9 Cleanup
svn-id: r24397
2006-10-21 01:51:59 +00:00
Eugene Sandulenko
bb1547ab1c Phase 5 of Simon engine renaming. Renamed namespace Simon -> AGOS and
SimonEngine -> AGOSEngine.

Source is compilable and runnable again. I'm done.

svn-id: r24013
2006-09-29 09:44:30 +00:00
Eugene Sandulenko
798c7ee682 Phase 2 of Simon renaming. Simon directory renaming
svn-id: r24009
2006-09-29 08:37:24 +00:00