aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/sound/drivers
AgeCommit message (Collapse)Author
2019-08-25SCI: (FB01 sound driver) - get rid of mutexathrxx
- The mutex was added to avoid the triggering of the assert in backends/midi/windows.cpp, line 95. Meanwhile, this issue has been addressed differently. - SCI does not per se require a mutex for the sound drivers. The engine is mostly thread-safe by avoiding driver calls through the main thread.
2019-08-07SCI: (FB01 sound driver) - fix potential lockupathrxx
(add another mutex lock)
2019-08-07SCI: (FB01 sound driver) - add missing empty lineathrxx
2019-08-07SCI: Fix pitch wheel bug in adlib driverWalter van Niftrik
2019-08-07SCI: (ADL driver) - implement/fix voice mappingathrxx
- Backport some code of waltervn's fork at his recommendation (taken from 97604200 and 4c3bfee5). That code has caught some bitrot and I were too lazy to manually resolve the merge conflicts. All changes have been re-checked with disasm. - Add initTrack() implementation for SCI0 EARLY/LATE - Minor cleanup - Please note that this commit does not fix any shortcomings of the SCI sound engine
2019-08-07SCI: (ADL driver) - remove unused declarationathrxx
2019-08-07SCI: error dialog for missing sound patch/driver filesathrxx
After implementing such a dialog into the fb01 driver it did make sense to me to also have this as a feature for all other aftermarket drivers/patches. So now the sound drivers can report missing files after the failed open() call which will then be displayed in a dialog. Which will at least be more helpful than our usual error messages...
2019-08-07SCI: (FB01 sound driver) - several fixesathrxx
Fix SCI0 (LATE/EARLY) variants of the driver which were broken (didn't play at all). This might be of my own doing, since I introduced the initTrack() method into the driver class and the fb01 driver didn't have one so far. SCI1 didn't seem to require much fixing. I modified some things according to my findings in the driver disasms. QFG2 and JONES seem to be fine. I am not too happy with KQ5. It has volume issues, but they might be present in the original, too. I also added an isOpen() check and a mutex to avoid threading issues. When aborting SCI (either quitting ScummVM or returning ot the launcher) while using the fb01 driver I frequently (more often than not) got the assert from backends/midi/windows.cpp, line 95. This fixes that. I've done plenty of checks and experiments with the sound bank initialization. But I found no bugs or possible improvements there. Hard to tell whether the sound is right. That device seems to have a mind of its own...
2019-08-07AUDIO: (FM-Towns/PC98) - cleanup mutex handlingathrxx
2019-08-07SCI: (FM-Towns sound driver) - fix pitchwheel glitchathrxx
Pitchwheel and channel volume settings need to be updated when the channels get reassigned. This bug caused faulty music at least in KQ5 when walking from the dwarves scene into the harp playing tree scene.
2019-07-24SCI: (CMS sound driver) - handle invalid program changesathrxx
(This triggered an assert in PQ2 at the airport. I've added a warning instead, since the original driver has no handling for that sort of thing. Invalid programs will simply point into invalid memory blocks)
2019-07-22SCI: (CMS sound driver) - add support for SCI0athrxx
I haven't found an elegant and non-intrusive way to squeeze SCI0 support into LordHoto's existing code. The drivers are too different. So I made some rearrangements. The basic mechanisms of LordHoto's SCI1 code should remain the same as before, though. I only introduced some more classes, moved some code into these classes and renamed some things (mainly for myself, so as not to get confused). I fixed two voice mapping bugs in the existing driver code. The first bug in bindVocies() effectively hindered the driver from playing anything at all when the CMS_DISABLE_VOICE_MAPPING #define wasn't set (_voice[i].channel == 0xFF instead of _voice[i].channel != 0xFF). The second bug in unbindVoices() was not a complete show stopper, but the function simply did not "unbind the voice". The line which does the actual removal of the channel assignment was missing. The SCI0 driver portions have been tested with: PQ2, KQ4, LSL3, QFG1, ICE and COC. SCI_0_EARLY versions apparently don't support the CMS. At least I haven't seen a driver file so far. And there seems to be no no instrument patch resource. Although the latter issue needn't necessarily be one, since the patch data array in the driver is actually preset with data (which gets overwritten as soon as a patch file is loaded). Maybe this would work for SCI_0_EARLY. However, I haven't tested this, since I really would have have a look at a driver file first if one actually exists. For now, I have limited the driver to SCI_0_LATE. SCI1 has been tested with KQ5 and LSL5 (not extensively, just to see whether anything got broken and whether my voice mapping fixes work).
2019-07-17SCI: revert accidental commitsathrxx
2019-07-17SCI: (FB01 sound driver) - SCI0_LATE fixathrxx
Fix up SCI0_LATE variant of the driver so that it actually plays anything (and even correctly). SCI1 hasn't seen any testing from me so far. I don't know whether that version works. Same for SCI0_EARLY...
2019-07-17SCI: (CMS sound driver) - add support for SCI0athrxx
I haven't found an elegant and non-intrusive way to squeeze SCI0 support into LordHoto's existing code. The drivers are too different. So I made some rearrangements. The basic mechanisms of LordHoto's SCI1 code should remain the same as before, though. I only introduced some more classes, moved some code into these classes and renamed some things (mainly for myself, so as not to get confused). I fixed two voice mapping bugs in the existing driver code. The first bug in bindVocies() effectively hindered the driver from playing anything at all when the CMS_DISABLE_VOICE_MAPPING #define wasn't set (_voice[i].channel == 0xFF instead of _voice[i].channel != 0xFF). The second bug in unbindVoices() was not a complete show stopper, but the function simply did not "unbind the voice". The line which does the actual removal of the channel assignment was missing. The SCI0 driver portions have been tested with: PQ2, KQ4, LSL3, QFG1, ICE and COC. SCI_0_EARLY versions apparently don't support the CMS. At least I haven't seen a driver file so far. And there seems to be no no instrument patch resource. Although the latter issue needn't necessarily be one, since the patch data array in the driver is actually preset with data (which gets overwritten as soon as a patch file is loaded). Maybe this would work for SCI_0_EARLY. However, I haven't tested this, since I really would have have a look at a driver file first if one actually exists. For now, I have limited the driver to SCI_0_LATE. SCI1 has been tested with KQ5 and LSL5 (not extensively, just to see whether anything got broken and whether my voice mapping fixes work).
2019-07-17SCI: (PC98 audio driver) - base tempo correctionathrxx
(somewhat difficult to make out any difference, but it does affect the envelope processing)
2019-06-21ALL: revert accidental commitsathrxx
2019-06-21hhathrxx
2019-06-21SCI: (CMS sound driver) - add support for SCI0athrxx
I haven't found an elegant and non-intrusive way to squeeze SCI0 support into LordHoto's existing code. The drivers are too different. So I made some rearrangements. The basic mechanisms of LordHoto's SCI1 code should remain the same as before, though. I only introduced some more classes, moved some code into these classes and renamed some things (mainly for myself, so as not to get confused). I fixed two voice mapping bugs in the existing driver code. The first bug in bindVocies() effectively hindered the driver from playing anything at all when the CMS_DISABLE_VOICE_MAPPING #define wasn't set (_voice[i].channel == 0xFF instead of _voice[i].channel != 0xFF). The second bug in unbindVoices() was not a complete show stopper, but the function simply did not "unbind the voice". The line which does the actual removal of the channel assignment was missing. The SCI0 driver portions have been tested with: PQ2, KQ4, LSL3, QFG1, ICE and COC. SCI_0_EARLY versions apparently don't support the CMS. At least I haven't seen a driver file so far. And there seems to be no no instrument patch resource. Although the latter issue needn't necessarily be one, since the patch data array in the driver is actually preset with data (which gets overwritten as soon as a patch file is loaded). Maybe this would work for SCI_0_EARLY. However, I haven't tested this, since I really would have have a look at a driver file first if one actually exists. For now, I have limited the driver to SCI_0_LATE. SCI1 has been tested with KQ5 and LSL5 (not extensively, just to see whether anything got broken and whether my voice mapping fixes work).
2019-06-21SCI: (PC98 audio driver) - base tempo correctionathrxx
(somewhat difficult to make out any difference, but it does affect the envelope processing)
2019-04-28SCI: (PC98 sound driver) - fix channel assignment bugathrxx
2019-04-13SCI: (PC-98 driver) - silence -Wshadow warningathrxx
2019-04-02SCI: - update MT32/GM driver initTrack methodathrxx
This adds specific support for SCI0_EARLY targets. Based on and tested with Christmas Cards 1988. I've not added the volume reset (neither for SCI0_EARLY nor SCI0_LATE), since the ScummVM driver seems to handle volume differently on purpose (probably based on SCI1?).
2019-04-02SCI: (PC-98 driver) - frequency bug workaroundathrxx
The square sound channels will be out of spec when playing on the lowest octave. The result is a rather ugly noise. This bug makes a rather subtle appearance if the channel remapping is accurate, but it becomes quite obvious in the SQ4 intro with the current implementation. This commit turns off the channel when trying to play out of spec.
2019-04-02SCI: implement SCI0 midi driver track initializationathrxx
I put this in an separate commit to make it easier to review/revert. I've tried to make this as minimum invasive as possible. That's why I put this in place of the former call to onNewSound(). SCI_0_LATE sound drivers (probably also SCI_0_EARLY, but I don't know that) do some midi track initialization, mostly resetting certain values and assigning voices (hardware channels) to midi parts. The information for this comes from the track header. The SCI0 version of the PC-98 sound driver relies on this code. The driver checks the channel flags with two different masks and assigns different sound channel types accordingly. This can't be done with the 0x4B event. Using the 0x4B event is sort of counter intuitive anyway, since only some of the SCI0 drivers even support that event. It seems that the only driver making use of onNewSound() was MT-32. I've adapted the driver to my changes, although I am quite sure that the sound will be unaffected. The only thing that the MT-32 driver does with the header information is checking whether a midi part should play or not and assign exactly one timbre (with exactly the same number) to that part if required.
2019-04-02SCI: (PC98 sound driver) - bugfixesathrxx
This fixes two evalutation issues specific to the MSVC x64 release build (other builds worked fine). This also fixes an analysis warning regarding my use of the span code.
2019-04-02SCI: add SCI0 support to PC-98 sound driverathrxx
- this supports PQ2 and QFG1 - also add several other fixes
2019-04-02SCI: add PC-9801 sound driverathrxx
(supports SCI1 for now)
2019-03-29SCI: Remove MidiDriver_AmigaMac platform inferencesluicebox
Tell MidiDriver_AmigaMac the game's platform instead of it attempting to infer this by which patch resources exist. Fixes bug #10925 where SQ3 German Amiga is treated as Mac because it happens to contain a patch 7 resource.
2018-10-31SCI: - minor fix to FM-TOWNS sound driverathrxx
- workaround to fix music playback in Mixed Up Mothergoose - remove a useless declaration
2018-03-28SCI: Added overried specifiersEugene Sandulenko
2017-12-03SCI: Avoid buffer overflow in amigamac sound driverWillem Jan Palenstijn
By default, frac_t is interpreted as signed. The resulting range isn't large enough to store offsets, so we interpret it as unsigned here instead. Fixes a crash in QfG1/Mac where instrument->loop_size is 49457.
2017-10-04SCI: Set default MT-32 reverb before each soundRuud Klaver
Set the default reverb configuration present in either the MT-32 patch data or MT32.DRV of SCI0 games before playing each sound, as a previously played sound may have changed it. Also, do not perform a general reverb init, since the start of a sound will do that now. Closes gh-1023.
2017-09-12SCI: Omit SysEx delays when sending to MT-32 emulatorColin Snover
Real MIDI devices, and MT-32 in particular, need delays between SysEx messages to ensure sufficient time to receive and process the incoming data buffer. Sending too much data too quickly to these devices can cause them to crash with a buffer overflow. The MT-32 emulator, on the other hand, has no problem receiving SysEx data instantly, so skipping the delays means that games that send lots of data to the MT-32 will start up much faster.
2017-07-07SCI32: Fix missing music in MGDXColin Snover
GM patch data is the same across all SCI32 games.
2017-03-30SCI: Update formatting strings to match updated Span APIColin Snover
2017-03-27SCI: Implement bounds-checked reads of game resourcesColin Snover
2017-02-26SCI: Clean up unnecessary castsWillem Jan Palenstijn
2016-12-03SCI: Fix buffer overflow in AmigaMac sound driverColin Snover
2016-12-03SCI: Fix non-responsive application warning during sysex transfersColin Snover
This also fixes the display of the startup LCD message, which had been delayed until after the sysex transfer was finished.
2016-06-07SCI: Plug memory leakEugene Sandulenko
2016-04-14JANITORIAL: Reduce audio header dependenciesOri Avtalion
2016-03-01SCI: Use uint32 instead of unsigned intFilippos Karapetis
2015-12-29SCI32: split up SCI2.1 into EARLY/MIDDLE/LATEMartin Kiewitz
- Detection works via signatures (couldn't find a better way) - new kString subcalls were introduced SCI2.1 LATE - kString now has signatures and is split via subcall table - kString fix, so that KQ7 doesn't crash, when starting a chapter - Sci2StringFunctionType removed, because no longer needed
2015-07-07SCI: Delete OPL when init failsWalter van Niftrik
2015-07-07SCI: Check OPL init return codeWalter van Niftrik
2015-07-07AUDIO: Remove all AudioStream access to OPLMatthew Hoops
2015-07-07SCI: Use the built-in OPL timerMatthew Hoops
2015-07-07AUDIO: Remove the sample rate configuration from the OPL codeMatthew Hoops
2014-10-13SCI: Fix bug #6725 - "SCI: LSL5 Mac doesn't launch with MT-32 music"Filippos Karapetis
Thanks to waltervn for his help