Commit Graph

786 Commits

Author SHA1 Message Date
Kari Salminen
5a46547b7e CINE: Add detection for French patched FW CD
Add detection for Future Wars CD version with French translation patch
applied.

Closes #12490
2021-09-06 22:13:24 +01:00
Kari Salminen
73b109b035 CINE: OS: Fix crash before entering secret base
Check that the filename can be found in the volume entries map before
trying to dereference it.

Fixes #11723
2021-09-04 23:14:18 +02:00
Kari Salminen
294ed169f9 CINE: OS: Fix space missing in verb line
Fixes #11687
2021-09-04 23:14:18 +02:00
Kari Salminen
865e3d6179 CINE: OS: Add detection for Italian Amiga version
Closes #12812
2021-09-04 23:14:18 +02:00
Kari Salminen
b3ef35c7e0 CINE: Keep overflowing message box inside screen
First calculate maximum used Y position in drawMessage
and then reposition the message box to stay inside the
main screen.

Fixes bug #11708
2021-09-04 23:14:18 +02:00
Cameron Cawley
74129492ba CINE: Avoid using static objects with destructors 2021-09-02 21:41:14 +03:00
Orgad Shaneh
7adad5aaf5 ENGINES: Streamline auto-save write/delete protection
Some engines call setAutosave and some don't. isAutosave is used to
determine if a saved game is an autosave, but in fact, on most cases it
just falls back to comparing the name to "Autosave".

This is wrong for several reasons:
* Older versions of ScummVM used Autosave 0.
* The name "Autosave" is translated, so if you change the language, it
  won't be detected.

Instead of relying on the name, use the well-known getAutosaveSlot() from
Engine/MetaEngine.

Fixes #12735.
2021-08-23 13:34:35 +02:00
Max Horn
2f1f8f502e DEVTOOLS: move credits from devtools/credits.pl to engines
This employs a "lazy" approach: the "format" for the credits stays
exactly as it was, i.e., perl code. Of course one may want to change
this to another format (e.g. YAML, JSON, XML; or also shell script or
AWK, like `configure.engine` uses). But I deliberately kept it simple,
to get a minimal change that is easy to verify. Any further changes to
e.g. the format can be layered atop this.
2021-08-05 00:01:46 +02:00
antoniou79
04642eef8a ENGINES: Replace checkCD with isolated partial methods
This is PR #3018 "rebased" on the current HEAD, after the conflicts with PR #3003 and me botching the rebase in that PR

Old PR is here: https://github.com/scummvm/scummvm/pull/3018
2021-07-27 20:51:57 +02:00
Paul Gilbert
005561d305 COMMON: Increase Stream pos, seek, size from int32 to int64 2021-07-08 18:24:28 -07:00
trembyle
09c0b319b8 CINE: Use less generic file for detection
The filename `demo` was used to detect the Operation Stealth Amiga
demo. This would often produce false matches when the same filename
was present in data files for other engines, especially Mac Director.

We can use the filename `demo_os` instead. This is the file used for
the DOS demo (with a different md5).
2021-06-29 23:08:33 +02:00
sluicebox
8e1d90f8e4 ALL: Remove clearAllDebugChannels() from Engine dtors 2021-06-14 12:42:38 -05:00
ysj1173886760
c80dd052d7 CINE: move debug channels to metaEngineDetection 2021-05-22 01:34:57 +02:00
Orgad Shaneh
a05e54f00c JANITORIAL: Remove trailing whitespaces 2021-05-04 11:46:30 +03:00
Eugene Sandulenko
5e7fe2dc57
JANITORIAL: Replace spaces in indentation with tabs 2021-04-15 21:20:36 +02:00
Cameron Cawley
a1890ede9c BASE: Avoid calling PluginMan.getEngineFromMetaEngine where possible 2021-04-05 15:33:23 +01:00
D G Turner
f8f0f09ef2 CINE: Fix GCC Compiler Warnings
These are mainly signed vs. unsigned comparison warnings apart from
a set, but unused variable in the main loop code which can be removed.
2021-03-17 21:53:28 +00:00
Paul Gilbert
ae4da8bce0 ENGINES: Make creation of savegame thumbnails an overrideable method 2021-03-07 09:34:33 -08:00
sluicebox
93eeffc84d JANITORIAL: Update old bug tracker numbers 2021-03-03 02:15:05 +02:00
Cameron Cawley
4ced49acd4 ENGINES: Changed AdvancedMetaEngine::createInstance to return a Common::Error 2020-12-04 20:57:14 +00:00
Eugene Sandulenko
e4f1351d05 CINE: Use AD_ENTRY2s in the detection tables 2020-11-28 13:49:16 +01:00
Eugene Sandulenko
5936026209 ALL: Clarify POTFILES, remove redundant common/translations.h includes 2020-11-10 03:03:49 +01:00
Eugene Sandulenko
7ff34bc9ec PLUGINS: MetaEngineStatic -> MetaEngineDetection 2020-10-11 23:14:39 +02:00
Eugene Sandulenko
7ea6781043 PLUGINS: PLUGIN_TYPE_METAENGINE -> PLUGIN_TYPE_ENGINE_DETECTION 2020-10-11 23:12:32 +02:00
Cameron Cawley
baa1a49122 CINE: Fix warning 2020-10-10 21:26:41 +01:00
aryanrawlani28
992abce74a ENGINES: Rename getMetaEngine helpers
- getME -> getMetaEngineStatic (static parts)
- getMEC -> getMetaEngine (dynamic parts)
2020-10-03 14:56:36 +02:00
aryanrawlani28
d26bbe521c ENGINES: ALL: Finish renaming ME & AME classes
- ME -> MetaEngineStatic (static parts)
- MEC -> MetaEngine (dynamic parts)
2020-10-03 14:56:36 +02:00
aryanrawlani28
a56dc094b9 ENGINES: ALL: Move detection_enums -> detection.h
- Cleans up headers quite a bit.
2020-10-03 14:56:36 +02:00
aryanrawlani28
29ceb07959 ENGINES: ALL: Revert detection submodule to be directly present in the engine directory
- DETECT_OBJS are present and added inside an engine's modules.mk file.
2020-10-03 14:56:36 +02:00
aryanrawlani28
f3b9477893 ENGINES: ALL: Add header guards for the new detection-header files. 2020-10-03 14:56:36 +02:00
aryanrawlani28
8189a05316 ENGINES: ALL: Adapt to changes for new plugins by defining a new detection module
For each engine:
- Make a new folder detection
- Move detection-related files inside the folder
- Add a new module "enginename/detection"
- Add DETECT_OBJS here
- Adjust the normal engine module to remove detect_objs
- Adjust every file for the new changes.
2020-10-03 14:56:36 +02:00
aryanrawlani28
ec3ccf5eb0 CINE: Split detection features & adapt to new plugins. 2020-10-03 14:56:36 +02:00
Paul Gilbert
bf754b76aa ENGINES: Cleanup of get savegame file & patterns 2020-09-19 09:31:49 -07:00
Eugene Sandulenko
c65f3e071c ALL: Remove ADGF_TESTING flags before the 2.2.0 release 2020-09-13 13:09:02 +02:00
Kari Salminen
70d16a3689 CINE: FW: Fix command line updating
In Future Wars the command line was not always updated and thus failed
sometimes to be up to date (i.e. showing wrong text, e.g. "EXAMINE" only
when it should have read "EXAMINE scaffolding" because the mouse cursor
was on the scaffolding).

Now we just always update the command line for both Future Wars and
Operation Stealth which seems to fix the command line updating.

I think this probably was a regression caused by adding support for
Operation Stealth (i.e. pull request #2365) and the efforts made in it
to make the user interface responsive.
2020-09-10 00:34:32 +01:00
Kari Salminen
eabd1c243d CINE: Fix loading inexistent music.
The Italian Amiga version of Future Wars tries to load music from file
"TELESONG.DAT" which does not exist. Previously after this starting to
play music might either try to play a null stream and crash or play an
old wrong music in memory. Fix that by setting the stream to null if
no music exists (Checked that the stream is destroyed i.e. the
destructor is run so it should be safe to set the _moduleStream variable
to nullptr directly).
2020-09-10 00:34:32 +01:00
Kari Salminen
1642259e4f CINE: FW: Fix 8 half speed scenes (Amiga/Atari ST)
Previously there was a fix for bug #2669415
("FW: half walking speed in a screen") which only addressed a single
scene in Amiga and Atari ST versions of Future Wars.

This fix fixes half walking speed in 8 more scenes in Amiga and Atari ST
versions of Future Wars. The scenes were identified by playing through
an Italian version of Amiga Future Wars.

3 more scenes were left over with half walking speed because they could
not be fixed as easily (i.e. using this fix on them broke the scenes in
some way, made them too fast or made the people walk into wrong
positions or something else). The scenes left over are the ones using
the following background files:
- "L10.PI1": The medieval castle's hall.
- "L18.PI1": The medieval castle's teleport room.
- "L45.PI1": Space station's computer room.
2020-09-10 00:34:32 +01:00
Kari Salminen
be3c84c8e8 CINE: Fix total playtime loading from savegame.
Total playtime is kept as milliseconds in the engine. It is saved as
seconds. Previously it was not converted to milliseconds on load but
seconds were took as milliseconds (i.e. 10s -> 10ms). Fix that by
converting total playtime on load from seconds to milliseconds.
2020-09-10 00:34:32 +01:00
Kari Salminen
8c0a71444f CINE: Try to fix bad_alloc with empty event queue
Previously I encountered an std::bad_alloc with the code in manageEvents
pushing an empty Event into the event queue. It did not happen very
often but I got it to appear while debugging at least once or maybe
twice.

This is an attempt to fix this possible behaviour by not pushing empty
events into the event queue but making sure the current status is
checked without needing to push empty events into an empty event queue.

I played through Italian Amiga version of Future Wars with this change
and encountered no problems with it.
2020-09-10 00:34:32 +01:00
Kari Salminen
1ce7db5572 CINE: Fix using F3 for INVENTORY and F4 for USE.
Previously the inventory could be summoned multiple times by pressing
F3 or F4. Fix that by keeping track when the inventory has been opened
and not allowing multiple use of it simultaneously.
2020-09-10 00:34:32 +01:00
Kari Salminen
7b3b07eb37 CINE: Fix mouse responsiveness after player death
After player has died it was hard to get the system menu to appear by
pressing the left and right mouse buttons simultaneously or the middle
mouse button. Fix that by using the maximum values of the mouse button
states for the polling period (Around 110ms at default play speed).
2020-09-10 00:34:32 +01:00
Kari Salminen
86c21a73ff CINE: FW: Fix Amiga/Atari ST copy protection text
Fix transparency of page number and grid position (e.g. 04 and D2) in
the copy protection scene of Amiga and Atari ST versions of Future Wars.
2020-09-10 00:34:32 +01:00
Kari Salminen
7ff9d16bf2 CINE: Loop Amiga music instead of playing it once
Make Amiga music loop until fade out when changing scene. This is
based on watching a video of Future Wars Amiga walkthrough, not on
playing the Amiga version or reading its disassembly. But it does seem
that the music loops instead of just playing once.
2020-09-10 00:34:32 +01:00
Kari Salminen
3be1744666 CINE: OS: Fix pitch of Amiga music by halving it.
Fix playing pitch of Amiga music in Operation Stealth by halving it.
Fixes bug #11676.
2020-09-05 22:57:03 +02:00
Kari Salminen
0bedec1304 CINE: OS: Fix playing Amiga samples.
Previously frequency of zero samples crashed the debug version,
now they are simply discarded. Also the frequency calculation is done
differently in the Amiga version of Operation Stealth than in the
Future Wars. This fixes playing samples in Amiga versions of Operation
Stealth (Not crashing on frequency of zero samples and playing the
samples at their right pitch).
2020-09-05 22:57:03 +02:00
Kari Salminen
5e2365fe83 CINE: Fix loading .AMI files (Amiga samples).
The .AMI files load better with loadSpl function than loadAni.
Using loadAni for some of the files resulted in garbled sound when
the input data was presumed to be 4-bit although it was 8-bit.
Fixes loading of some Amiga samples in Operation Stealth
(Not all samples were affected). Addresses bug #11676.
2020-09-05 22:57:03 +02:00
Kari Salminen
e9b585df4e CINE: OS: Fix MT-32/AdLib SFX & loading savegames
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.
2020-09-04 10:31:33 +02:00
Kari Salminen
1ecb24cad7 CINE: OS: Fallback to default error messages
If the error messages can not be found (They are in the file
ERRMESS.DAT in Operation Stealth) then use the default values.

There are now the following default error messages included in ScummVM
for Operation Stealth:
 - American English (Protagonist is James Bond)
 - British English (Protagonist is John Glames)
 - French
 - German

For the Italian and Spanish releases of Operation Stealth the error
messages from Future Wars are used as fallback. This is incorrect
but better than nothing.

This makes the error message handling more lenient than before so that
not having an ERRMESS.DAT does not block the starting of the game
anymore.

Fixes bug #11649.
2020-09-03 00:39:02 +02:00
Kari Salminen
e82b4faeed CINE: Fix overlay rendering with NULL source mask
In French Amiga Future Wars from bug #10643 when walking left from the
scene with the open manhole cover a call to renderOverlay with a
type 0 (color sprite) overlay happens. The source mask for the overlay
is NULL and a memcpy using a NULL pointer as source is initiated.
This results in a memory access violation.

This fixes that memory access violation by simply setting the
destination mask to all zeroes when the source mask is NULL.
Seems to work fine at least in this case.

Fixes bug #10643.
2020-08-31 09:26:36 +02:00
Kari Salminen
c27ae2758d CINE: Support 100 savegames also with original UI
This raises the maximum number of savegames from 20 to 100.
The original UI could only show 20 on a screen at once so an
intermediate selection menu for selecting the group of 20 savegames
to be accessed is added in this commit:

0-19
20-39
40-59
60-79
80-99

Those are the values that are shown when selecting
"Restore game" or "Save game".

After selecting the group of savegames to be accessed that particular
group is only shown as those 20 can fit on the screen using the
original save/load UI.

At least partially if not fully fixes bug #11625.
2020-08-30 21:54:54 +01:00