Commit Graph
64 Commits
Author SHA1 Message Date
Kari Salminen eabd1c243d CINE: Fix loading inexistent music.
The Italian Amiga version of Future Wars tries to load music from file
"TELESONG.DAT" which does not exist. Previously after this starting to
play music might either try to play a null stream and crash or play an
old wrong music in memory. Fix that by setting the stream to null if
no music exists (Checked that the stream is destroyed i.e. the
destructor is run so it should be safe to set the _moduleStream variable
to nullptr directly).
2020-09-10 00:34:32 +01:00
Kari Salminen 7ff9d16bf2 CINE: Loop Amiga music instead of playing it once
Make Amiga music loop until fade out when changing scene. This is
based on watching a video of Future Wars Amiga walkthrough, not on
playing the Amiga version or reading its disassembly. But it does seem
that the music loops instead of just playing once.
2020-09-10 00:34:32 +01:00
Kari Salminen 3be1744666 CINE: OS: Fix pitch of Amiga music by halving it.
Fix playing pitch of Amiga music in Operation Stealth by halving it.
Fixes bug #11676.
2020-09-05 22:57:03 +02:00
Kari Salminen 0bedec1304 CINE: OS: Fix playing Amiga samples.
Previously frequency of zero samples crashed the debug version,
now they are simply discarded. Also the frequency calculation is done
differently in the Amiga version of Operation Stealth than in the
Future Wars. This fixes playing samples in Amiga versions of Operation
Stealth (Not crashing on frequency of zero samples and playing the
samples at their right pitch).
2020-09-05 22:57:03 +02:00
Kari Salminen e9b585df4e CINE: OS: Fix MT-32/AdLib SFX & loading savegames
In Operation Stealth DOS and Atari ST versions, but not Amiga or
demo versions, sound effects are loaded in AUTO00.PRC using a
combination of o2_loadAbs and o2_playSample(1, ...) before
o1_freePartRange(0, 200). This is a better heuristic for ending the
script at the correct position than checking whether global variable
255 is compared to 0. In the original game AUTO00.PRC was run when
starting or restarting the game and one could not load a savegame
before passing the copy protection. Thus, we try to emulate that
behaviour by running at least part of AUTO00.PRC before loading a
savegame.
2020-09-04 10:31:33 +02:00
Kari Salminen 8c34f865e8 CINE: FW: Fix Roland MT-32 sample playing.
Fix bug #11547 ("CINE: FW: Game crashes during intro with MT-32 music").
Future Wars PC disassembly passes 256 to writeInstrument and
writeInstrument overwrites it with value 246 here. So the value
becomes 246 in the end.
2020-08-01 10:42:21 +02:00
Kari Salminen 9c68b62eb9 CINE: Fix clang compilation and DeepCode warning.
Change structure initialization from C++11 style to older style to fix
clang compilation. Add null check to fix DeepCode warning about
possible undefined behaviour.
2020-07-25 00:33:42 +02:00
Kari Salminen 2ca52fc007 CINE: Add support for Operation Stealth.
Add support for Operation Stealth PC 16 and 256 color versions with
AdLib and Roland MT-32 sound. Add support for 20 extended savegames
(Thumbnails, playtime etc) for both Future Wars and Operation Stealth
(20 because it fits on screen using the original save/load interface).

Details:
 - Add versioning to Future Wars and Operation Stealth savegames.
 - Add fade in effect to both Future Wars and Operation Stealth.
 - Add mouse wheel support and keyboard support to moving in menus.
 - Map middle mouse button to pressing both left and right buttons.
 - Make interface more responsive (See manageEvents() and drawFrame()).
 - Amiga versions should be completable but sound may or may not work.
 - Atari ST versions completely untested.

Game options currently supported:
 - Using original save/load interface
 - Using transparent dialog boxes in 16 color scenes (Also for PC)

Console commands currently supported:
 - labyrinthCheat (For cheating in Operation Stealth's labyrinths)
 - disableLabyrinthCheat (Disabling labyrinth cheat)
 - disableHacks (Disabling hacks, useful for testing)
 - enableHacks (Enabling hacks, useful for testing. On by default)
2020-07-25 00:33:42 +02:00
Bastien Bouclet f66925f148 CINE: Add override keywords 2020-02-09 12:43:15 +01:00
Adrian Frühwirth 49116b4ae7 ALL: Use CLIP to clip volumes 2018-05-05 17:57:31 +02:00
Matthew Hoops aa6ff44440 BACKENDS: Only expose one set of functions for AudioCDManager
Engines should only have to call one set of functions and not decide between the two. In fact, the 'emulation' API was documented to just call the 'real CD' API.
2016-03-13 13:57:19 +01:00
Matthew Hoops 016a6000e4 CINE: Ensure openCD() is called 2016-03-13 13:52:35 +01:00
Kirben dce5c96cc2 CINE: Correct size of arrays for CD version of Future Wars. 2015-09-13 19:51:39 +10:00
Kirben 8c5e6d2be4 CINE: Add support for CD music in the CD version of Future Wars. 2015-09-13 14:24:55 +10:00
Matthew Hoops bed9da8b9d AUDIO: Remove all AudioStream access to OPL 2015-07-07 20:19:47 -04:00
Matthew Hoops 984cd9b018 CINE: Use the built-in OPL timer 2015-07-07 20:19:43 -04:00
Matthew Hoops 2e8f9dcec9 AUDIO: Remove the sample rate configuration from the OPL code 2015-07-07 20:19:42 -04:00
Matthew Hoops f1f29302f5 AUDIO: Remove the legacy OPL API 2015-07-07 20:19:42 -04:00
Strangerke 95728f4890 CINE: Avoid possible string buffer overrun by using strlcpy and strlcat 2014-03-16 14:24:45 +01:00
Johannes Schickel 4ad7c5b40d CINE: Make GPL headers consistent in themselves. 2014-02-18 02:39:33 +01:00
Eugene Sandulenko a71e59fd2d CINE: Remove unnecessary check. CID 1004117 2013-11-03 01:28:03 +02:00
D G Turner c71b149523 CINE: Ensure that Adlib driver callbacks are initialized. CID 1003411. 2013-10-02 05:34:27 +01:00
Johannes Schickel c31d1971b5 CINE: Implement music fade out for Amiga/AtariST music. 2012-09-11 22:28:40 +02:00
Johannes Schickel b48f5b78b7 CINE: Implement panning for sfx for FW Amiga and AtariST. 2012-09-08 01:16:10 +02:00
Johannes Schickel 35e61b7c7a CINE: Remove unused Sound::update method. 2012-09-08 01:16:09 +02:00
Johannes Schickel c850effc6d CINE: Implement sfx repeat and volume fade for FW Amiga/AtariST.
This fixes bug 3091660 "FW: Looping samples don't loop in Amiga version".
2012-09-08 01:16:07 +02:00
Johannes Schickel b1074543b5 CINE: Skip resource header in loadSpl.
This implements a long standing TODO in PaulaSound::playSound.
2012-09-08 01:15:32 +02:00
Johannes Schickel 5d84f2df43 CINE: A little bit enforcement of our formatting guidelines.
Powered by astyle & manual fixup afterwards.
2012-09-07 04:12:18 +01:00
D G Turner 21c057ce75 CINE: Fix lockup in Scene 5 when "operate Girl" underwater.
Traced with gdb to sound.cpp:792 i.e. _fadeOutTimer infinite loop.

This bug was introduced by the addition of the MT-32 output driver for
Future Wars and associated mutex changes.
The _fadeOutTimer increment is done by the timer callback occuring
during the load method call, but this was excluded by the mutex.

Fixed by moving the mutex in the load method.
2012-08-11 20:08:03 +01:00
Johannes Schickel 9916d2e99c CINE: Add some comments to the MT-32 instrument code. 2011-12-19 01:10:48 +01:00
Johannes Schickel d14e75cdc7 CINE: Make findNote behave like in the original.
This also reverts 42fd697544, which was wrong,
since I misread the assembly. Ooops.
2011-12-11 06:24:33 +01:00
Johannes Schickel 54819a5448 CINE: Fall back to AdLib, in case a user tries to use the MT-32 output with an GM device.
The driver is really specific to the Roland MT-32 right now, since it uses
MT-32 specific sysEx messages to setup instruments etc.
2011-12-11 05:11:28 +01:00
Johannes Schickel 6ba090b45a CINE: Make PC sound code thread safe, since the MIDI output might run the callback in an extra thread. 2011-12-11 05:04:08 +01:00
Johannes Schickel 42fd697544 CINE: Make findNote behave a bit more like the original. 2011-12-11 05:04:04 +01:00
Johannes Schickel c48af08a0b CINE: Implement MT-32 output driver.
The driver is based on Future Wars. I do not own Operation Stealth, thus I do
not know whether it works fine for it.
2011-12-11 05:03:57 +01:00
Eugene Sandulenko 95f890c350 CINE: Fix warnings 2011-11-02 23:04:49 +00:00
strangerke 69b1485a22 GIT: Clean up: Suppress SVN tags, now useless 2011-05-12 01:16:22 +02:00
Ori Avtalion 9414d7a6e2 JANITORIAL: Reduce header dependencies in shared code
Some backends may break as I only compiled SDL
2011-04-28 15:08:58 +03:00
Max Horn 42ab839dd6 AUDIO: Rename sound/ dir to audio/
svn-id: r55850
2011-02-09 01:09:01 +00:00
David Turner c9330fb79e CINE: Close Memory Leak in PCSoundFxPlayer.
This leakage was reported by Valgrind while playing Operation Stealth.

svn-id: r55070
2010-12-31 09:07:44 +00:00
David Turner 7bc8fe8ef5 CINE: Fix Memory Leak in PCSoundFxPlayer.
Found this using Valgrind when loading a Future Wars savegame from the launcher.
Occurs since the load() method called stop() but this did not unload() the allocated playing
resource data unless it was still playing. Fixed in stop() by calling unload() in all cases.

svn-id: r55059
2010-12-29 09:53:58 +00:00
Max Horn 2180b2d6b5 COMMON: Split common/stream.h into several headers
svn-id: r54385
2010-11-19 17:03:07 +00:00
Max Horn a1840bd573 AUDIO: Rename Mixer::playInputStream to playStream
svn-id: r48637
2010-04-12 09:14:17 +00:00
Johannes Schickel a505d32eff Replace use of Audio::makeRawMemoryStream by Audio::makeRawStream.
svn-id: r47716
2010-01-30 15:26:54 +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
Max Horn 4b996e7de7 Reorder params to Audio::makeRawMemoryStream
svn-id: r47492
2010-01-23 23:55:35 +00:00
Max Horn 5ee6c79b5d Convert more engines from Mixer::playRaw to Mixer::playInputStream
svn-id: r47377
2010-01-19 11:22:14 +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
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
Max Horn f720d99b0a Switch Mixer::playInputStream to use DisposeAfterUse::Flag
svn-id: r47182
2010-01-08 22:09:43 +00:00