In Operation Stealth DOS and Atari ST versions, but not Amiga or
demo versions, sound effects are loaded in AUTO00.PRC using a
combination of o2_loadAbs and o2_playSample(1, ...) before
o1_freePartRange(0, 200). This is a better heuristic for ending the
script at the correct position than checking whether global variable
255 is compared to 0. In the original game AUTO00.PRC was run when
starting or restarting the game and one could not load a savegame
before passing the copy protection. Thus, we try to emulate that
behaviour by running at least part of AUTO00.PRC before loading a
savegame.
This throttles the safe controls in Operation Stealth in the
presidential palace after the first labyrinth arcade sequence.
The problem was that the safe controls were a bit too fast i.e. by
pressing on a single button you might easily get the numbers to change
by more than a single digit. This throttles the pressing of safe
control buttons in this particular scene to a maximum rate of 4Hz
(i.e. at least 250ms has to have passed before a click is registered
again).
Fixes bug #11621.
Future Wars PC disassembly does not save disableSysteMenu variable.
After adding versioning to Future Wars saves this value was also
saved and loaded but using it on load seems to have caused the
action menu (EXAMINE, TAKE, INVENTORY, ...) to be disabled sometimes
when it is not supposed to be disabled. Thus, now skipping the loading
of disableSystemMenu variable for versioned Future Wars saves.
Add support for Operation Stealth PC 16 and 256 color versions with
AdLib and Roland MT-32 sound. Add support for 20 extended savegames
(Thumbnails, playtime etc) for both Future Wars and Operation Stealth
(20 because it fits on screen using the original save/load interface).
Details:
- Add versioning to Future Wars and Operation Stealth savegames.
- Add fade in effect to both Future Wars and Operation Stealth.
- Add mouse wheel support and keyboard support to moving in menus.
- Map middle mouse button to pressing both left and right buttons.
- Make interface more responsive (See manageEvents() and drawFrame()).
- Amiga versions should be completable but sound may or may not work.
- Atari ST versions completely untested.
Game options currently supported:
- Using original save/load interface
- Using transparent dialog boxes in 16 color scenes (Also for PC)
Console commands currently supported:
- labyrinthCheat (For cheating in Operation Stealth's labyrinths)
- disableLabyrinthCheat (Disabling labyrinth cheat)
- disableHacks (Disabling hacks, useful for testing)
- enableHacks (Enabling hacks, useful for testing. On by default)
This flag is removed for a few reasons:
* Engines universally set this flag to true for widths > 320,
which made it redundant everywhere;
* This flag functioned primarily as a "force 1x scaler" flag,
since its behaviour was almost completely undocumented and users
would need to figure out that they'd need an explicit non-default
scaler set to get a scaler to operate at widths > 320;
* (Most importantly) engines should not be in the business of
deciding how the backend may choose to render its virtual screen.
The choice of rendering behaviour belongs to the user, and the
backend, in that order.
A nearby future commit restores the default1x scaler behaviour in
the SDL backend code for the moment, but in the future it is my
hope that there will be a better configuration UI to allow users
to specify how they want scaling to work for high resolutions.
This also removes the dependency of engines on the event recorder header
and API, and will make it easier to RandomSources that are not properly
registered.
The collisionPage is only initialised with values when loadCtFw() / loadCtOS() is called.
However, currently during the display of the Delphine Software Logo in Operation Stealth,
checkCollision() is called, but the collisionPage has not been loaded.
To fix the invalid reads, have added code to set the page to zero after allocation.
Shouldn't cause any issues to FW as this will load over the top anyway.
Have also added debug output around this behaviour so that if this is not sufficient i.e. a collision page load is actually missing, then this will aid investigation.
svn-id: r55071
Since CINE uses Debug Channels, this allows for the interactive setting of debugflags as well as providing a base for adding further debugging commands.
svn-id: r54115
These functions are only used internally be Engine subclasses, and
by moving them to a separate header we can reduce indirect header
dependencies.
svn-id: r48934
- Fixed CineMetaEngine::listSaves(const char *target) which was broken.
- Also added explicit initialization of savegame descriptions to
empty strings for safety reasons (e.g. arrays on stack aren't
initialized to zero).
- Added explicit trailing zero setting to savegame descriptions
(Previously using GMM you could write a description of length >= 20
that had no trailing zero when written to description file (e.g. fw.dir)).
svn-id: r43027