Age | Commit message (Collapse) | Author |
|
SCUMM: Implement original AD AdLib output.
|
|
84d1d28373d782464bd46b10abd6b092f7eb6367.
|
|
|
|
This will obviously make 'smapLen' a lot smaller in most cases, so
there may be regressions. But I hope this is correct, though I
don't know why the size is big-endian while the offset is little-
endian.
|
|
Since _actors[i]->_sound is an array, it can't ever be NULL.
|
|
Since ah->data is an array, it can't ever be NULL.
|
|
Since ah->data is an array, it can't ever be NULL.
|
|
|
|
|
|
|
|
This clears up that 'ConfigFile' is actually a class handling only INI-files.
|
|
Make Graphics::Surface::pixels protected.
|
|
|
|
|
|
|
|
These are regressions from c05cb7f3bbcf4d64d4a938e0eb42065d8f3d3038. They were
caused by VirtualScreen::getPixels differing from Surface::getBasePtr and I
accidently used the former in some cases in the conversion.
I also fixed a bug in debugger.cpp which exchanged x and y.
|
|
|
|
|
|
|
|
This implements the original AD output and enables it for Indy3 and Loom DOS.
It is not enabled for Monkey Island DOS because it would break multi MIDI
support. However, there are also drawbacks for Indy3. In the catacombs
we were able to play sfx (Indy walking around) and the background music
at once. This was not supported in the original player and thus also does
not work with this reimplementation.
This fixes bug #2027877 "INDY3: Non-Looping Sound Effects".
This fixes bug #1159581 "ADLIB: Adlib Emulation doesn't Respect Volume Settings"
for Indy3 and Loom.
|
|
This doesn't really make any difference because either both
VAR_SAVELOAD_SCRIPT and VAR_SAVELOAD_SCRIPT2 exist, or neither
does. But it feels more correct this way.
|
|
SCUMM: More precise Player_Mac::durationToSamples
|
|
Uses the fact that 4*480*480 == 225 << 12, and the identity
(a*b)>>n == (a>>n)*b + ((a%(1<<n))*b)>>n (assuming non-overflowing math),
except the rhs uses smaller intermediate values and does not overflow(*).
Compared to the original code, this uses 1 fewer division and eliminates
the rounding error.
(*) Technical note: In some cases the right hand side of the above
identity still has possibilities of intermediate overflow, but only if
b > (1 << n), or if (b << n) overflows, neither of which are true here.
|
|
|
|
In fact the code was wrong there due to copy-paste error
|
|
|
|
|
|
We're clearly using 12 bytes, not 11.
|
|
|
|
|
|
Verify that 'bits' really is one of 8, 12 or 16 before decoding
the data. It's probably always the case (unless the data files are
damaged) but if it isn't we'll either try to queue NULL to the
audio stream, or queue the same buffer more than once, or free the
buffer more than once. All of which are bad, though Coverity only
noticed the last of these cases.
|
|
CID 1003018
|
|
1. Remove _sc55 bool. All Roland GS-capable devices have MT-32 sound/drum maps, so they should always be used when _enable_gs is set.
2. Always enable _native_mt32 if Roland GS mode is selected. I don't know why I never did this originally, since _enable_gs is automatically disabled for SCUMM v6+ games that use General MIDI tracks instead of MT-32 music.
3. Set master tune for GS devices to 442.0kHz. This is the master tune setting for the MT-32.
|
|
"PC" was very ambiguous and now it matches what we show in the GUI.
This also corrects sword2's platform to Windows.
|
|
For consistency with NUM_SCRIPT_SLOT.
|
|
I believe this fixes CID 1003954, 1003957, 1003958, 1003962 and
1003966.
|
|
We only need to initialize 'args' in runInventoryScript() when we
are actually using them.
|
|
The initializeLocals() function assumes that it can copy 25
elements when being provided an array of values. But this array
was frequently a lot smaller than that. I've introduced a constant
for the number of locals (though VirtualMachineState has one more
for some reason), and fixed the array sizes in a number of places.
CID 1003951, 1003952, 1003953, 1003955, 1003956, 1003959, 1003960,
1003961, 1003963, 100394, 1003965
|
|
|
|
football2002 endzone videos now display
|
|
|
|
|
|
|
|
Seems to fix bug #3495704
|
|
|
|
All instances uncovered by clang warnings.
|
|
|
|
|
|
|
|
Also fixed enemy behavior along the way. No wonder it differed
from the original!
|