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.
The final palette wasn't set so, for instance, at the beginning of
the RTZ intro the Infocom logo wouldn't completely fade to back. I
think this is the correcet fix for that.
The interpolation code for deltaType > 0 read past the end of the
workChunkSize-sized filled area of the buffer (which matches what MADE
did, as far as I can tell). Avoid this by repeating the last value.
The sound buffer used in decompressSound() is now stored so that
it can be re-used in the next call of decompressSound, specifically
in chunk type 1.
This caused some clicking/static in the intro of Return to Zork.
Thanks to eriktorbjorn for noticing the glitch and writing most of the patch.
Each engine now only has to provide a single configure.engine file
adding the engine into the configure script, which then produces the
required other files automatically.
This is the third and final commit enabling fully pluggable engines.
Now providing an engine folder contains a configure.engine, engine.mk
and engine-plugin.h file, it will be picked up automatically by the
configure script.
This is the second part of allowing engines to be added dynamically.
Each folder in engines/ which must contain a file named "engine.mk"
containing the make definitions for that engine.
This is the first part of allowing engines to be added dynamically.
They are placed into a folder in engines/ which must contain a file
named "configure.engine" to add the engine, which is pulled into the
top level configure script automatically.
This fixes MT-32 emulator initialization. When the constructor is run the
paths like extrapath etc. are not yet set up. Thus, the MT-32 emulator would
not be able to find the necessary roms in case they are in the extrapath.
This affects the Console / debugger classes of multiple engines.
An alternative solution would have been to remove the unused _vm
member vars. However, it seems likely that in the future, the _vm
member could be useful for methods added to the console. So instead,
we add a simple assert(_vm) to silence the clang warning.
find -name '*.h' -or -name '*.cpp' | xargs sed -r -i 's@\(([A-Za-z0-9]+)\*\)@(\1 *)@g'
This seems to have caught some params as well which is not undesirable IMO.
It also caught some strings containing this which is undesirable so I
excluded them manually. (engines/sci/engine/kernel_tables.h)