Recently we started to use this as new semantics, although in the past
we used simly <engine>_H. Now these guard defines are consistent with
rest of the files which are used in the engines.
I'm told not every version of the game plays this. Mine does though,
and I see no harm in adding it for all versions. The code is robust
enough to work even if the "introdub.raw" file is missing completely.
This affected Bud's line, "Is that the great mystery invention you
had hidden away?" in the intro, making it very hard to hear, and
possibly other sounds as well. I don't know if this was a bug in
the original game, but it's much closer to the English version I
own now.
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.
The mof instruction needs to return 0 or 1 to continue execution, rather
than 2 which indicates to end table instruction execution. Using 0 as
this is most likely correct value.
This ensures that if any unhandled/invalid instructions are present,
they are skipped, rather than locking up engine execution.
This is a secondary fix for bug #3614697 - "Spanish version
uncompletable at end of 2nd part" and any other future bugs of this
type.
This add support for the unhandled "mof" instruction present in the
Spanish version. This effectively skips it as a NOP/invalid, which
prevents it locking up the game at the end of the 2nd part.