Commit Graph

1335 Commits

Author SHA1 Message Date
Paul Gilbert
128bd50051 AGI: Remove autosave code 2020-02-16 15:44:28 -08:00
Paul Gilbert
a00e44ba6c ENGINES: Merge saveGameState virtual methods into a single one 2020-02-16 15:44:28 -08:00
Paul Gilbert
f603a695af AGI: Refactor to use Engine debugger 2020-02-16 13:07:19 +02:00
Bastien Bouclet
3f3c88ce6a AGI: Add override keywords 2020-02-09 12:43:14 +01:00
Eugene Sandulenko
555c6807db AGI: Added override keywords 2020-02-09 11:35:49 +01:00
Eugene Sandulenko
cf755dc921 AGI: Added override keywords 2020-02-05 14:36:52 +01:00
Paul Gilbert
5b80320525 ENGINES: Adding override keyword to hasFeature methods 2020-02-04 20:04:11 -08:00
Eugene Sandulenko
6a4d7babd9 AGI: Add override keywords 2020-01-31 12:44:55 +01:00
Zvika Haramaty
274b166295 AGI: fixed whitespace error in previous commit 2020-01-20 03:21:17 +02:00
Zvika Haramaty
5c9d3d7ce7 AGI: Add pirated version of GoldRush! to detection table
There are 2 bug reports regarding one version of GoldRush that
wasn't recognized by the detection table.

On bug #3320, it was explained to be a pirated version. Therefore,
this update, in order to avoid further reporting of the same issue.

It closes bug #11308.
2020-01-20 03:21:17 +02:00
Filippos Karapetis
5b7f11ded7 AGI: Cleanup game flags 2020-01-12 23:12:15 +02:00
D G Turner
6a2a0c89a5 AGI: Use Advanced Detector LISTEND Macro in Detection Entries 2019-12-04 04:16:30 +00:00
Bastien Bouclet
9c8bd056d6 ENGINES: Stop using 'single id' 2019-11-03 11:43:00 +01:00
Bastien Bouclet
4b42112721 ENGINES: Add an engine ID to all the engines 2019-11-03 11:43:00 +01:00
D G Turner
95c0afa2c3 AGI: Fix Missing Default Switch Cases
These are flagged by GCC if -Wswitch-default is enabled.
2019-10-14 03:54:10 +01:00
D G Turner
24073733e6 AGI: Replace Various String Functions with Common String Usage
This removes a number of fixed size temporary string buffers and
usage of unsafe string functions.
2019-09-15 23:30:34 +01:00
D G Turner
50c5177eb0 AGI: Fix Remaining GCC Compiler Warnings
These were the remaining memset on non-trivial structure warnings.
2019-08-25 07:27:21 +01:00
D G Turner
482f835ad6 AGI: Fix GCC Compiler Warnings from memset of Game State Structures
This fixes these, but adding constructors causes further memset usage
warnings on the structures which are now "non-trivial" due to the addition
of constructors. Should be able to fix by repeating this process to remove
further memset usage.
2019-08-25 05:55:54 +01:00
D G Turner
1a9fa34dc1 AGI: Fix some GCC Compilation Warnings
These were associated with memset() of Mouse structure which now has
a constructor method to do this instead.
2019-08-24 10:25:20 +01:00
D G Turner
b3968ca39d AGI: Fix Several GCC Compiler Warnings 2019-05-08 00:42:03 +01:00
D G Turner
61526fa317 AGI: Fix Fall Through Compiler Warning
This fairly clearly intentional and thus no FIXME comment is added for
this.
2018-11-13 08:27:46 +00:00
D G Turner
13b0a08dda AGI: Add Detection Entry for AGI Combat (Beta).
This fixes bug Trac #10739.
2018-10-11 11:25:10 +01:00
D G Turner
d616cbf63d AGI: Add Detection Entry for Sarien Test Demo.
This fixes bug Trac #10740.
2018-10-11 10:43:51 +01:00
D G Turner
c8b98dd41c AGI: Clamp Graphics Blit into Screen Area.
Some games, especially fangames appear to blit to co-ordinates outside
the screen area, which caused an assertion in the graphics backend.

To prevent this and allow further debugging in these cases, we clamp
this to the screen area. Note that there are several other locations
which do backend graphics calls, so this may need to be applied
elsewhere in the general case.

This fixes bug Trac #10736.
2018-10-11 10:18:48 +01:00
D G Turner
b60a4e5770 AGI: Fix ScummVM Quit if Return To Launcher from AGI Quit Dialog.
This is bug Trac #10735.
2018-10-10 07:25:50 +01:00
Colin Snover
0851a30769 AGI: Replace use of strdup with Common::String
It was also necessary to make sure that the Common::String objects
were initialised correctly by switching to use a C++ container
for engine objects instead of calloc, since they were no longer
C-compatible PODs.
2018-08-18 16:30:05 +02:00
Bastien Bouclet
cf1ebf2951 ENGINES: Add unknown game variants to the game detector results 2018-05-10 09:04:23 +02:00
Adrian Frühwirth
00e59a3122 ALL: Load savegame thumbnail only when necessary
This commit introduces the following changes:

1. Graphics::loadThumbnail()

   Now returns a boolean and takes a new argument skipThumbnail which
   defaults to false. In case of true, loadThumbnail() reads past the
   thumbnail data in the input stream instead of actually loading the
   thumbnail. This simplifies savegame handling where, up until now,
   many engines always read the whole savegame metadata (including
   the thumbnail) and then threw away the thumbnail when not needed
   (which is in almost all cases, the most common exception being
   MetaEngine::querySaveMetaInfos() which is responsible for loading
   savegame metadata for displaying it in the GUI launcher.

2. readSavegameHeader()

   Engines which already implement such a method (name varies) now take
   a new argument skipThumbnail (default: true) which is passed
   through to loadThumbnail(). This means that the default case for
   readSavegameHeader() is now _not_ loading the thumbnail from a
   savegame and just reading past it. In those cases, e.g.
   querySaveMetaInfos(), where we actually are interested in loading
   the thumbnail readSavegameHeader() needs to explicitely be called
   with skipThumbnail == false.

   Engines whose readSavegameHeader() (name varies) already takes an
   argument loadThumbnail have been adapted to have a similar
   prototype and semantics.
   I.e. readSaveHeader(in, loadThumbnail, header) now is
   readSaveHeader(in, header, skipThumbnail).

3. Error handling

   Engines which previously did not check the return value of
   readSavegameHeader() (name varies) now do so ensuring that possibly
   broken savegames (be it a broken thumbnail or something else) don't
   make it into the GUI launcher list in the first place.
2018-04-07 09:26:20 +02:00
Colin Snover
a5bc89102e ALL: Remove obsolete register keyword
The register keyword was deprecated from the C++11 standard,
<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4193.html#809>,
and removed from the C++17 standard,
<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4340>, so
cannot exist in a well-formed C++17 program.

It has never done anything in GCC
<https://gcc.gnu.org/ml/gcc/2010-05/msg00113.html>
and because of the way it is specified in the standard, it is “as
meaningful as whitespace”
<http://www.drdobbs.com/keywords-that-arent-or-comments-by-anoth/184403859>.

The one remaining use of the register keyword is in the DS backend,
where it is used to create a local register variable using the
non-standard GCC Extended Asm feature.

Closes gh-1079.
2017-12-03 20:27:42 -06:00
Bastien Bouclet
8beb519c5e EVENTS: Rename synthetic to kbdRepeat 2017-11-19 16:12:50 +01:00
Colin Snover
432fd522d2 ENGINES: Remove default1x scaler flag
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.
2017-10-07 12:30:29 -05:00
Bastien Bouclet
3eb82462e7 ALL: Specify the DisposeAfterUse constructor argument for dynamic memory write streams 2017-09-22 07:06:21 +02:00
Eugene Sandulenko
200b9070b3 AGI: PREAGI: Add one more missing break statement 2017-08-11 20:38:35 +02:00
Eugene Sandulenko
18e263129f AGI: PREAGI: Add missing break statements 2017-08-11 20:33:21 +02:00
Torbjörn Andersson
70a2ca8b7d JANITORIAL: Silence more GCC 7 warnings
All these fall through were marked as deliberate, so again I've only
changed the comment to silence GCC.
2017-08-06 13:30:51 +02:00
Torbjörn Andersson
14525bb412 JANITORIAL: Silence some GCC 7 warnings
We have lots and lots of -Wimplicit-fallthrough warnings, and I
don't know if it's worth fixing them or not. But if we want to,
this is how it can be done.
2017-08-06 11:48:14 +02:00
Martin Kiewitz
77d232fbe2 AGI: always stop sound/music, when calling restore/save since 2.272
and therefore set the "fully played"-flag/variable, so that scripts
don't block forever in for example Police Quest 1 poker back room.
Fixes bug #9706
Thanks waltervn
2017-02-25 20:43:14 +01:00
Martin Kiewitz
be763b59aa AGI: act on exitAllLogics in testIfCode (fixes bug #9707)
Thanks waltervn for finding this one.
Was a regression caused by the timer heuristic for detecting
bad script code. When the heuristic identified being in an
inner timer loop, it told ScummVM to sleep + process events.
During that time a restore can get triggered by the user via GMM.
When that happens, the restore is executed immediately.
When still being inside testIfCode(), it may happen that execution
goes beyond the end of the current logic incl. error/crash.
TODO: maybe better change GMM as a whole for AGI, that restores are
always processed in a delayed way after main loop got processed
once?
2017-02-24 00:54:40 +01:00
Martin Kiewitz
9dd0cd51d5 AGI: Clean up VM opcode handling
so that invalid opcodes won't crash ScummVM anymore
2017-02-23 23:54:45 +01:00
Martin Kiewitz
e64e388816 AGI: Hold-key-mode fix
Original AGI only created a stationary event, when the last
pressed direction key was released. We do that now as well.
Makes cursor in MH1 behave properly.
Thanks to waltervn for pointing this out.
2017-02-11 10:35:10 +01:00
Martin Kiewitz
eeaddfb20a AGI: Make MH1 nightclub arcade sequence slower for AppleIIgs
Thanks waltervn for pointing this issue out
AppleIIgs adjustment tables had to be extended, because the first
3 arcade sequences were running way too fast, while the last one
ran fine and all of those are part of one single room.
2017-02-10 19:43:16 +01:00
Ben Castricum
b041618a42 ALL: Remove comma before the word 'instead' 2016-11-29 20:22:19 +01:00
Martin Kiewitz
32ca051485 AGI: Make TIME_DELAY 0 to set the game to 40 fps
Original AGI TIME_DELAY 0 made the game run as fast
as possible. We didn't go that far, but it still seems to run
too fast. This should hopefully fix that.
See bug #9607
2016-10-12 21:48:35 +02:00
Eugene Sandulenko
dead4aa014 JANITORIAL: Remove trailing spaces 2016-10-09 14:59:58 +02:00
Eugene Sandulenko
cad834a69c JANITORIAL: Fix include statements 2016-09-03 15:19:37 +02:00
Alexander Tkachev
b665fc933d ALL: Make simpleSaveNames() a MetaEngineFeature
Added it into hasFeature() of all engines which returned `true` in
simpleSaveNames() before.

As mentioned in #788, SCI is not always using simple names, so it
doesn't have such feature now.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
ab1d160ec8 ALL: Add MetaEngine::simpleSaveNames()
Engines with "simple" savenames would support "Run in background" in
save/load dialog and gradual save slots unlocking. Other engines
save/load feature would be locked until save sync is over.
2016-08-24 16:07:55 +06:00
Eugene Sandulenko
159d993f8e AGI: More class initialization 2016-06-05 23:11:10 +02:00
Eugene Sandulenko
3e0663a516 AGI: Clean up object initialization 2016-06-05 23:10:20 +02:00
Eugene Sandulenko
980d5f3027 Merge pull request #764 from salty-horse/agi_audio
AGI: Reduce audio header dependencies
2016-05-29 14:46:28 +02:00