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 allows to keep the engines to specfiy the files for translation close to
the engine sources itself.
Thanks to criezy for his suggestion on this approach.
I think this is the correct thing to do, and that it won't have
any noticeable effect whatsoever.
Cases 29 and 30 happen in the first half of the game, in the
cantine, while case 42 happens in the second half of the game. By
the time you reach the point where case 42 does something, I don't
think it's possible to get back to cases 29 and 30, so when case
29 falls through neither 30 nor 42 will do anything.
CID 1003730, 1003731
This fixes a mismatched function prototype wrt. the definition and
removes the underscores in various variables as per project coding
standard. Also, minor reordering of functions for readability.
This removes an unecessary type and unused parameter from the load
method and renames to remove underscores from variable names as per
the project coding conventions.
The loading of cseg is now replaced by skipping, so that the external
dat file remains the same, but RAM usage is reduced.
The callbacks code will now error on unknown callback addresses, which
should not happen as all cases should now be covered, though the
callback tables need to be checked to ensure this is guaranteed.
This could occur on other platforms too and was a race hazard between
mixer thread startup and music being valid i.e. If the music doesn't
already exist, when the mixer callback is done, this deletes the channel
as idle. Reordered the calls to fix this.
Also, removed unecessary music->start() as this is done by setMusic(n)
on successful load anyway.
This code appeared to be missing. After comparing with the original
interpreter under DOSBox which showed the expected behaviour if it
was present, have added it.