Commit graph

150 commits

Author SHA1 Message Date
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
dhewg
2cb6641786 SAGA: Cleanup syncSoundSettings()
And respect global mute settings
2011-03-19 16:04:55 +01:00
Max Horn
42ab839dd6 AUDIO: Rename sound/ dir to audio/
svn-id: r55850
2011-02-09 01:09:01 +00:00
Filippos Karapetis
9b8c04045b MIDI: Fix for bug #3170988 - "MONKEY2: Messed up MT-32 music"
This is a regression from r55256. Apparently, SCUMM has issues when sending a sustain
off on a notes off event. Thus, this has been turned into a feature, which is disabled
by default. Since MADE, SAGA and tinsel all share the same music code and play regular
MIDI files, and this feature fixes hanging notes for them, it has been enabled for them.
Also, applied a patch for a bug regarding the notes off event in MADE and tinsel,
which has been applied in SAGA already

svn-id: r55746
2011-02-02 23:27:59 +00:00
Max Horn
2180b2d6b5 COMMON: Split common/stream.h into several headers
svn-id: r54385
2010-11-19 17:03:07 +00:00
Andrew Kurushin
67cc1b8a84 SAGA: replace Resource:loadResource malloc with ByteArray class
svn-id: r53779
2010-10-24 22:17:44 +00:00
Andrew Kurushin
f24394b85f SAGA: replace Actor::_pathCell, Anim::*, Converse::text, IsoMap::*, Music::_songTable, ObjectMap::*, PalAnim::*, Scene::sceneLut, SndRes::_fxTable* malloc based arrays with Common::Array implementation
add ByteArray type
fix debug Tile Hittest frame drawing
debug 0x%x => 0x%X

svn-id: r53719
2010-10-22 23:13:17 +00:00
Torbjörn Andersson
5d1e26d804 SAGA: Initialise _driverType
svn-id: r52922
2010-09-28 04:53:38 +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
Torbjörn Andersson
ae1afee564 The standalone MIDI files for one of the re-releases of Inherit the Earth are
General MIDI, not MT-32. (I hope this doesn't break anything else.)

svn-id: r50927
2010-07-16 03:32:59 +00:00
Torbjörn Andersson
3cb59d237e Don't close the MIDI driver twice. It's unnecessary, and some of our drivers
may crash. (The ALSA one did, until a few minutes ago.)

svn-id: r50871
2010-07-14 04:34:57 +00:00
Florian Kagerer
c35e350531 AUDIO: get rid of MDT_PREFER_MIDI since it should be sufficient to either select MDT_PREFER_MT32 or MDT_PREFER_GM
svn-id: r50288
2010-06-25 20:51:57 +00:00
Max Horn
bbad3f333a Patch #1956501: "GUI/LAUNCHER: Midi device selection"
svn-id: r50128
2010-06-21 21:36:36 +00:00
Eugene Sandulenko
9d4d191baa SAGA: fix timers.
Second parameter to intallTimerCallback is in _micro_seconds.
Correct calls which assumed  milliseconds.

svn-id: r49771
2010-06-15 10:50:49 +00:00
Filippos Karapetis
0492bd6aa6 SAGA: Music code cleanup. The music driver is now placed inside the MusicPlayer class, instead of the SagaEngine class. Split the functionality that the music parser should handle from the functionality that the music driver should handle. Also, fixed a bug in MusicDriver::send() (the notes off signal was sent to unallocated channels, not allocated ones)
svn-id: r49607
2010-06-12 18:20:22 +00:00
Filippos Karapetis
80acb21a56 Added automatic detection of the IHNM demo
svn-id: r49047
2010-05-16 10:36:21 +00:00
Max Horn
a1840bd573 AUDIO: Rename Mixer::playInputStream to playStream
svn-id: r48637
2010-04-12 09:14:17 +00:00
Filippos Karapetis
3f2471418d Fixed the music in some Mac versions of ITE and disabled some unused code for the original DOS demo of ITE
svn-id: r48139
2010-02-26 22:24:48 +00:00
Johannes Schickel
fe35d372da - Rename FlacStream to FLACStream.
- Rename makeFlacStream to makeFLACStream.

svn-id: r47846
2010-02-03 09:42:11 +00:00
Johannes Schickel
ec3f58e626 - Mark makeRawDiskStream factory as deprecated.
- Introduce two new makeRawStream factories, one is using RawStreamBlockList instead of an RawDiskStreamAudioBlock array.

svn-id: r47713
2010-01-30 15:17:57 +00:00
Max Horn
1565f14bc1 Moved audio stream implementations (for MP3, FLAC, etc.) to new dir sound/decoders/
svn-id: r47579
2010-01-26 22:48:45 +00:00
Johannes Schickel
aed02365ec Strip trailing spaces/tabs.
svn-id: r47541
2010-01-25 01:39:44 +00:00
Filippos Karapetis
18a18701f7 Disabled the unused resource loading code for the unsupported QT MIDI format, used in the Mac version of IHNM
svn-id: r47474
2010-01-23 13:46:43 +00:00
Max Horn
dc5e08e623 Move raw audio flags from sound/mixer.h to sound/raw.h
svn-id: r47395
2010-01-19 22:30:33 +00:00
Max Horn
557bb394de Get rid of Mixer::FLAG_AUTOFREE.
Also fix several recently introduced new/delete vs. malloc/free mismatches.

svn-id: r47369
2010-01-19 00:56:29 +00:00
Max Horn
69be747621 Move raw audio streams to new header sound/raw.h
svn-id: r47368
2010-01-19 00:54:06 +00:00
Max Horn
349fcd1d71 Rename 'Linear' audio streams to 'raw'
svn-id: r47367
2010-01-19 00:52:41 +00:00
Max Horn
7ec2da968c Switch most AudioStream factories to use DisposeAfterUse::Flag
svn-id: r47334
2010-01-16 21:36:08 +00:00
Johannes Schickel
0d995c5920 Rename all "Adlib" uses to "AdLib" to match the real name of the sound card / company.
Check this for reference:
http://en.wikipedia.org/wiki/Ad_Lib,_Inc.
http://www.crossfire-designs.de/images/articles/soundcards/adlib.jpg (note the upper left of the card)

This commit does not touch "adlib" and "ADLIB" uses!

Also it does not update all the SCUMM detection entries, which still use "Adlib".

svn-id: r47279
2010-01-12 21:07:56 +00:00
Johannes Schickel
0447a7f9f8 Fix a memory leak.
svn-id: r47227
2010-01-10 15:23:35 +00:00
Johannes Schickel
6ca0570fe3 - Add a SubLoopingAudioStream, which loops a nested part of a stream and thus features the same looping capabilites as LinearMemoryStream and LinearDiskStream.
- Remove custom looping code from LinearMemoryStream and LinearDiskStream.
- Adapt various client code to the changes.

svn-id: r47226
2010-01-10 15:20:14 +00:00
Johannes Schickel
616e4626f5 Since AudioStream looping is no longer handled by the Mixer, drop Mixer::playAudioStreamLooping. (There's Audio::makeLoopingAudioStream).
svn-id: r47160
2010-01-08 16:27:29 +00:00
Johannes Schickel
84f3034406 - Move openStreamFile from AudioStream to SeekableAudioStream.
- Fix documentation of openStreamFile.

svn-id: r47080
2010-01-06 15:23:33 +00:00
Johannes Schickel
fb9017c51e Adapt SAGA to use Mixer::playAudioStreamLooping instead of relying the depracted in AudioStream looping support.
svn-id: r47063
2010-01-06 00:00:50 +00:00
Andrew Kurushin
aa147a2f5a refactor resource module:
- struct ResourceContext => class ResourceContext
- replace "*alloc","free" with array templates
- simplify createContexts routines

svn-id: r46254
2009-12-04 17:52:42 +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
Filippos Karapetis
4a4ae33825 Put back the code for playing external digital music, used by the MIDI enhancement project, which was removed in rev. #43480
svn-id: r43485
2009-08-17 18:25:51 +00:00
Johannes Schickel
516dd5c9a4 Slight cleanup to makeLinearDiskStream interface.
svn-id: r43481
2009-08-17 13:49:56 +00:00
Filippos Karapetis
77689a05a2 - Removed the custom DigitalMusicInputStream used in SAGA for the digital music in ITE CD and replaced it with the common LinearDiskStream class
- Removed leftover code which plays standalone tracks (it's not used anywhere)

svn-id: r43480
2009-08-17 13:25:44 +00:00
Filippos Karapetis
9d7111006d - Reworked the different file types a bit
- Some initial work on Dinotopia's intro sequence

svn-id: r39234
2009-03-08 15:39:19 +00:00
Filippos Karapetis
80832ffb8f Got rid of explicit game sound info
svn-id: r35727
2009-01-04 15:44:33 +00:00
Filippos Karapetis
203358bcb7 Improved handling of sound resources
svn-id: r35724
2009-01-04 14:38:03 +00:00
Eugene Sandulenko
696897b058 Whoa! Removing trailing spaces.
svn-id: r35648
2009-01-01 15:06:43 +00:00
Max Horn
6837416556 Made Engine::_timer protected
svn-id: r35543
2008-12-25 20:53:59 +00:00
Filippos Karapetis
437384a838 - Split the SAGA resource manager in 3 different ones, depending on the resource type (RSC for ITE, RES for IHNM and HRS for DINO/FTA2). The SAGA 2 HRS resource manager is still a stub
- Added detection for the voice file of FTA2

svn-id: r35484
2008-12-22 14:13:15 +00:00
Filippos Karapetis
d0f4f97ea9 Cleaned up the mess with game IDs and game types: removed game types, reduced the game IDs and added game features where necessary
svn-id: r35467
2008-12-21 15:59:05 +00:00
Robin Watts
8f3b2e9b4d Remove warnings from NDS build.
svn-id: r35172
2008-11-29 18:01:16 +00:00
Filippos Karapetis
113a83c0da Implemented pauseEngineIntern() for the SAGA engine
svn-id: r35007
2008-11-11 17:34:52 +00:00
Max Horn
6aa12974bd SAGA: Some code cleanup
svn-id: r34703
2008-09-30 12:58:27 +00:00