Commit Graph
101 Commits
Author SHA1 Message Date
Le Philousophe 5ad311fbaa TINSEL: Don't use unsafe sprintf and vsprintf 2022-10-23 22:46:19 +02:00
Jakob Wagner 08b500b5e9 TINSEL: Work around PCM playback deadlock in Noir
This workaround disables PCM playback.

The PCMPlayers _chunk is NULL but _state is S_MID.
As a result getNextChunk always return 1, leading to readBuffer in
the playback thread never unlocking _mutex.
2022-04-27 00:33:15 +03:00
Jakob Wagner 165ec9cbae TINSEL: Replace TinselV3 checks with comparisons 2022-04-21 20:34:17 +03:00
Jakob Wagner 7fc6499264 TINSEL: Replace TinselV0 checks with comparisons 2022-04-21 20:34:17 +03:00
Jakob Wagner 67c3bce30e TINSEL: Replace TinselV2 checks with comparisons
Until now, the TinselV* defines were used for discerning between
engine versions. The define TinselV2 was true for both v2 and v3.
Sticking to the old scheme would lead to confusion when more
special paths for v3 are implemented.
2022-04-21 20:34:17 +03:00
Eugene Sandulenko abea37c9bb ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
Filippos Karapetis 4f1676e38b TINSEL: Initial work on the Saturn version of DW1
This version is using the same graphics format as the PSX version, with
differences in resource endianess, but features digital music with a
different track structure and has a different sound sample format

Pending issues:
- Font rendering is wrong - this is evident in the text and menus in
  the game title screen
- Cursor sprite and trails are wrong - can be seen in the menu of the
  game title screen
- Digital music is not supported yet - seems that a different track
  structure is used
- The sound sample format is different than the PC version - looks to
   be raw, but isn't
- The game crashes at the first room after watching Rincewind's waking
  up cutscene
2021-09-04 12:13:18 +03:00
Orgad Shaneh a05e54f00c JANITORIAL: Remove trailing whitespaces 2021-05-04 11:46:30 +03:00
Le Philousophe b5c67b9ae0 TINSEL: Fix build when MP3 decoding isn't available 2021-03-04 14:01:28 +01:00
sluicebox 93eeffc84d JANITORIAL: Update old bug tracker numbers 2021-03-03 02:15:05 +02:00
Einar Johan Trøan Sømåen 483ead52dd TINSEL: Implement music playback for Discworld Noir 2021-03-01 21:52:25 +01:00
Einar Johan Trøan Sømåen f9c1f62cdd TINSEL: Partially implement scene loading for Discworld Noir 2021-02-16 23:24:27 +01:00
Filippos Karapetis ae2e05cbd3 TINSEL: Move all handle-related functions into a new Handle class 2020-10-04 01:15:19 +03:00
Filippos Karapetis 63ae50e790 TINSEL: Replace usage of NULL with nullptr 2020-02-29 02:21:41 +02:00
Filippos Karapetis 939f7cf2b7 TINSEL: Move all the music related functions into a new Music class 2020-02-23 14:51:01 +02:00
Eugene Sandulenko 4dc60b525d TINSEL: Fix class initialization 2016-06-17 12:10:11 +02:00
Ori Avtalion 3564032330 JANITORIAL: Reduce audio header dependencies 2016-04-14 16:10:21 +03:00
Martin Kiewitz 1d8646ee01 TINSEL: Enable Miles Audio for DW1+DW1CD Demo only
DW1 floppy demo doesn't seem to have audio at all
2016-02-09 02:14:08 +01:00
Martin Kiewitz 4e852a691b TINSEL: DW1: Improve timbre file error message
it now mentions all the possible file names.
2015-10-24 20:25:48 +02:00
Martin Kiewitz 0800d67f65 TINSEL: DW1: enable Miles Audio for DOS only 2015-07-04 23:08:27 +02:00
Martin Kiewitz 3f31b5ba64 TINSEL: DW1: Miles Audio AdLib MIDPAK.AD support
- added support for MIDPAK.AD timbre files on top
FAT.OPL. FAT.OPL gets copied by installer into MIDPAK.AD for this version
- changed order of timbre file checking
- adjusted and improved comments about discworld 1 versions
2015-07-04 22:20:34 +02:00
Martin Kiewitz b8bec0aaa0 TINSEL: DW1: Miles Audio AdLib support for FAT.OPL
eriktorbjorn owns a version of DW1, that only has FAT.OPL and no
SAMPLE.AD/SAMPLE.OPL. We check if SAMPLE.AD/.OPL are available,
if not we try our luck with FAT.OPL
2015-07-04 21:37:24 +02:00
Matthew Hoops a1e2986056 TINSEL: Silence a gcc warning 2015-06-28 20:05:24 -04:00
Martin Kiewitz 60903c2908 TINSEL: DW1: MT32: don't pass timbre file
because the game does not have one
2015-06-28 12:49:12 +02:00
Martin Kiewitz 63656348a7 TINSEL: DW1: add support for Miles Audio driver
- AdLib + MT32 support
2015-06-28 02:10:18 +02:00
Johannes Schickel 9b138f4eb4 TINSEL: Make GPL headers consistent in themselves. 2014-02-18 02:39:39 +01:00
Strangerke 29a63886aa TINSEL: Janitorial - Fix spacing errors 2013-11-24 19:20:12 +01:00
Filippos Karapetis 95f92ed9de TINSEL: Add support for enhanced music in the Mac version of DW1 2013-04-12 19:31:11 +03:00
Filippos Karapetis 07994fb361 TINSEL: Add support for the digitized music in DW1 Mac 2012-12-13 03:09:41 +02:00
Filippos Karapetis 394ff22232 TINSEL: Add another check to skip the non-MIDI music of DW1 Mac 2012-12-11 02:59:30 +02:00
Filippos Karapetis b05fa7f204 TINSEL: Add resource handling of the BE resources in DW1 Mac
This is the second attempt. All the BE resources of DW1 Mac are
handled correctly now. Added READ_16, READ_32, FROM_16, FROM_32 and
TO_32 to handle all of the different cases where endianess is
already handled. Note that the game scripts are LE, so these
haven't been changed
2012-12-11 02:56:48 +02:00
Filippos Karapetis 3fdddd53b2 TINSEL: Start handling the BE resources of the Mac versions of DW1
Refer to bug #3110936

This is still work in progress, but it doesn't affect the rest
of the LE versions of DW1. Both the Mac demo and the full
version still crash. The music in the Mac version is skipped for
now, as it isn't MIDI
2012-12-01 21:53:33 +02:00
Filippos Karapetis 1fffbe40ce TINSEL: Change SetMidiVolume() so that it doesn't start/stop music tracks
Previously, SetMidiVolume() would stop the currently playing track when
the MIDI volume was set to 0. Now, the music track always plays, even
when the volume is set to 0. This fixes bug #3541533 - "DW: Silencing
music volume stops music" and resolves two FIXME comments
2012-07-15 17:37:55 +03:00
Filippos Karapetis 89aa6573fe TINSEL: Remove the GF_DEMO flag 2012-07-15 14:38:26 +03:00
Filippos Karapetis b8354e27ae TINSEL: Fix bug #3541230 - "DW: PSX version locks up after using the book"
Removed the superfluous MIDI offset storing code. Now, the MIDI buffer is
re-read when the music loops. This removes a static variable and also
fixes another bug in the SEQ decoder.
2012-07-09 01:33:40 +03:00
Matthew Hoops 76dfbbede4 TINSEL: Add basic PSX SEQ playback support
Instrument bank support is not implemented yet
2012-05-03 18:19:54 -04:00
Alyssa Milburn be35baddc7 TINSEL: Rename globals to add g_ prefix. 2012-02-22 23:14:29 +01:00
Alyssa Milburn e21764be76 TINSEL: Don't leak _curChunk on exit. 2011-11-14 22:54:34 +01:00
strangerke 69b1485a22 GIT: Clean up: Suppress SVN tags, now useless 2011-05-12 01:16:22 +02:00
Max Horn 7607e351cc TINSEL: Move custom ADPCM decoders to tinsel engine 2011-04-13 12:48:57 +02:00
Max Horn f5ff6e9e18 TINSEL: cleanup 2011-04-12 16:06:39 +02:00
md5 cd085b1ae8 TINSEL: Removed some unused global static variables 2011-04-10 17:27:48 +03:00
Max Horn 8c931fd1e8 AUDIO: Add Audio::MidiPlayer::createDriver(), let some engines use it 2011-03-28 18:06:36 +02:00
Max Horn 7949d7c6de AUDIO: Move more common code to Audio::MidiPlayer
This also should fix some regressions from the previous
commits, related to MidiParser's either being leaked,
or being deleted and then used again (i.e., crashing).

I tested as many games as I had available, but further
testing of all affected engines is called for anyway.
2011-03-25 14:15:53 +01:00
Max Horn f333d93fe8 TINSEL: Remove unused TinselEngine::_musicVolume member 2011-03-25 14:15:52 +01:00
Max Horn 47e347b922 TINSEL: Change MidiMusicPlayer to derive from Audio::MidiPlayer 2011-03-24 16:46: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
md5 a796f7843d TINSEL: Added enhanced music support for the German CD "Neon Edition" re-release of DW1 (bug #2827022) 2011-02-24 14:54:12 +02:00