Age | Commit message (Collapse) | Author |
|
1. KQ4 sound 104 has an extra 0xFC (MIDI Stop command/kEndOfTrack)
at the end of the resource, which causes an out-of-bounds read
because the filtering loop continues after the first 0xFC and
unconditionally attempts to read 2 bytes (expecting there to
always be a delta value + a command, whereas in this file there
is only another kEndOfTrack command). This is corrected by
exiting the filtering loop when a kEndOfTrack is encountered
and there is not enough data remaining in the resource to
continue reading.
2. KQ5 sound 699 is truncated, which causes the parser to attempt
to read past the end of the resource. This is addressed by
adding bounds checks that exit the mix loop early if there is
no more data available to read. This allows truncated sounds
to be played as far as possible (previously, trying to read
truncated resources would result in a fatal error).
3. midiMixChannels allocates an arbitrary amount of raw memory
for the mixed MIDI sequence, without performing any bounds
checking when writing to this memory, potentially leading to
a crash or silent corruption of adjacent memory. This is
mitigated by using SciSpan instead of a raw pointer for the
mixed data.
Fixes Trac#9727.
|
|
|
|
|
|
This adds MIDI state tracking to allow channels to be temporarily
unmapped and later re-mapped when there are free device channels
available again.
|
|
add workaround for eq2
the issue is known, but can't be properly fixed without rewriting the midiparser into a channel specific parser
previous commit caused issues in kq5/french and others
|
|
we start at offset 10 for sound SCI1 games. This is hardcoded in the interpreter. Also removing not handling signals on tick 0. This fixes Eco Quest 2 / Gonzales dancing in room 530. Thanks to wjp for the help.
|
|
|
|
We now do the jumpToTick() for hold events after waiting for the delta
of the current event, like we do for the signal set events. This keeps
the fixes for the hold timings in QFG3, while not breaking LSL6.
Many thanks to wjp for pinpointing the actual cause of the issue.
|
|
|
|
|
|
svn-id: r55850
|
|
svn-id: r54478
|
|
and merge it together with global volume, fixes bug #3053104)
svn-id: r52484
|
|
(like pq3 intro)
svn-id: r50414
|
|
away
svn-id: r50405
|
|
SciMusic, also some little cleanup
svn-id: r50130
|
|
driver during onTimer() - fixes mt32 emulation crashing during lsl5 piano scene
svn-id: r50073
|
|
velocity to used channels only, same is true for setting voice count
svn-id: r50062
|
|
svn-id: r50060
|
|
fixes lsl1 music issues when going right at the start
svn-id: r50018
|
|
with patti
svn-id: r49926
|
|
svn-id: r49905
|
|
channels used by the associated song instead of all channels
svn-id: r49673
|
|
songs of a game for unmapped instruments (still WIP and disabled)
- Fixed a bug in the verify_scripts command (it was loading the script resource twice)
svn-id: r49597
|
|
loading code (still disabled)
svn-id: r49430
|
|
- Prefer const_iterator over iterator in SciMusic::findUsedChannels
svn-id: r49417
|
|
svn-id: r49414
|
|
- Implemented kSetReverb (0x50) and kResetOnPause (0x4C)
svn-id: r47433
|
|
svn-id: r47424
|
|
all channels
svn-id: r47304
|
|
MidiParser_SMF parser
svn-id: r47287
|
|
/ 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
|
|
svn-id: r47023
|
|
svn-id: r47007
|