Commit Graph

461 Commits

Author SHA1 Message Date
Bastien Bouclet
9a4c0ae281 ENGINES: Normalize the getName() result of metaengines
Also-By: Matthew Hoops <clone2727@gmail.com>
2018-12-10 06:47:27 +01:00
Bastien Bouclet
1dcb8076db ENGINES: Remove usage of C++11 extended initializer lists 2018-05-10 09:26:26 +02:00
Bastien Bouclet
90b78c5446 ENGINES: Merge GameDescriptor and DetectedGame 2018-05-10 09:04:23 +02:00
Bastien Bouclet
1de5aca585 ENGINES: Set the GameDescriptor decription in the constructor 2018-05-10 09:04:23 +02:00
Bastien Bouclet
643c24db75 ENGINES: Change MetaEngine::listSupportedGames to return plain game descriptors 2018-05-10 09:04:23 +02:00
Bastien Bouclet
8fb149e3c7 ENGINES: Change MetaEngine::findGame to return a plain game descriptor 2018-05-10 09:04:23 +02:00
Bastien Bouclet
cf1ebf2951 ENGINES: Add unknown game variants to the game detector results 2018-05-10 09:04:23 +02:00
Lothar Serra Mari
451cf2304f ENGINES: Show the unknown Game dialog only when the detector is launched by the Add Game feature 2018-04-29 21:47:10 +01: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
925c9416db SWORD1: Fix use of deallocated stack memory
FSNode::getName returns a String object, not a reference, so the
pointer from c_str is valid only until the end of the statement.
2017-11-10 23:22:26 -06: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
c3bff7f25a SWORD1: Fix leaking the save thumbnail MemoryWriteStreamDynamic buffer 2017-09-22 07:06:20 +02:00
Eugene Sandulenko
e3d720f09b JANITORIAL: Fix GCC7 fall through warnings 2017-08-11 20:46:56 +02:00
Torbjörn Andersson
a70767503e SWORD1: Silence GCC warning about potential overflow
Probably doesn't ever happen, but now 'fileName' is as large as it
needs to be if 'label' is as long as it can be.
2017-08-06 16:38:03 +02:00
Thierry Crozat
34969d50b8 SWORD1: Specify list of available languages in detection code
This way only those languages are listed in the language selector
for the game settings.
2017-07-12 21:44:10 +01:00
Thierry Crozat
56757592bd SWORD1: Only write config in in-game menu when they are changed
The in-game menu contains not only subtitles and volume settings,
but also load and save game options. Every time the menu was opened
it would write the subtitles and audio volumes to the ConfMan
resulting in toggling on overriding global options for this game, which
was a but strange when it was previously using global options and we
only wanted to load a game. So now the settings are written to ConfMan
from the in-game menu only when they are actually changed.
2017-07-08 12:55:12 +01:00
Thierry Crozat
6ff927bff7 SWORD1: Use booleans for _systemVars speech and subtitles flags
The were defined as uint8 and the code was inconsistent in the
way they were handled, for example setting them to 1 in some
places and to true in others. It was working but relying on implicit
conversions both ways between 1 and true.
2017-07-08 12:55:11 +01:00
Thierry Crozat
6f5ccb8f43 SWORD1: Add thumbnail when saving from game panel
This fixes bug #9908 SWORD1: Picture previews black when
saving in game
2017-07-08 00:38:28 +01:00
Ben Castricum
e95c2cc3ff ALL: save file => saved game 2016-11-29 21:10:59 +01:00
Thierry Crozat
a87a702eb2 ALL: Homogeneize use of 'saved game' in messages 2016-09-18 16:40:34 +01:00
Thierry Crozat
503188593a SWORD1: Improve detection of speech data endianness for mac version
Before trying an heuristic on the decoded data it simply checks if
we get the expected resource size after decompression. When
using the wrong endianness this is unlikely to be the case.
2016-06-06 01:48:41 +01:00
Eugene Sandulenko
33abb6118f ALL: Change main engine header guard defines to <directory>_<engine>_H
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.
2016-05-17 18:21:30 +02:00
Eugene Sandulenko
e482fd8a1a SWORD1: Remove redundant check.
We're doing assert() in the same function.
2016-05-14 11:44:36 +02:00
Ori Avtalion
3564032330 JANITORIAL: Reduce audio header dependencies 2016-04-14 16:10:21 +03:00
Ori Avtalion
253e18c440 JANITORIAL: Reduce GUI header dependencies 2016-04-14 13:30:14 +03:00
Johannes Schickel
e515fc18db ENGINES: Make variable names of PlainGameDescriptor conform to our guidelines.
gameid -> gameId
2016-03-08 19:01:42 +01:00
Eugene Sandulenko
23d74fddb4 CONFIGURE: Introduced new engine dependency: highres
Some backends like GCW0 do no support graphics >320x240 due to
the hardware limitation (downscaling is possible but it will ruin
the pixel hunting which is often part of the gameplay).

Instead of manually updating the list of engines, we now introduce
a new dependency.

I marked all relevant engines, but some, like tinsel, require more
work with putting their relevant high-res games under USE_HIGHRES
define.
2016-03-05 14:25:56 +01:00
Johannes Schickel
d740bc4f2e SWORD1: Let listSaves return list sorted on slot numbers. 2016-02-25 21:39:45 +01:00
Alexandre Detiste
6c298e964f JANITORIAL: Typos detected with lintian & grep 2016-02-15 18:27:02 +01:00
Johannes Schickel
fda7ce1e14 SWORD1: Only request actual save slots in listSaves. 2016-01-26 16:35:30 +01:00
Filippos Karapetis
eed9da3ea2 SWORD1: Remove trailing whitespace 2014-10-28 16:12:25 +02:00
Thierry Crozat
df04963cfd SWORD1: Update list of files that contain translatable strings 2014-10-04 01:08:12 +01:00
Thierry Crozat
b783d75f83 SWORD1: Add missing update of screen parameters when loading game from GMM
This fixes bug #6728 (crash when loading game from GMM in bull's
head scene). I am not sure the call to Logic::Engine is necessary, but
that way the same sequence of calls is done when restoring a game
from the original GUI and when restoring from GMM.
2014-09-13 18:40:46 +01:00
Thierry Crozat
4aaa74aea7 SWORD1: Avoid possible division by zero in speech endianness heuristic 2014-09-10 20:25:51 +01:00
Thierry Crozat
83bb4fdb38 I18N: Really fix speech endianness heuristic on big endian system
The previous commit was wrong because the endianness does not only
impact the data sample values but also the way the speech is uncompressed.
2014-09-08 21:42:29 +01:00
Thierry Crozat
4afb40e16f SWORD1: Fix speech endianness heuristic on big endian systems
This should fix bug #6720.
2014-09-08 09:13:52 +01:00
Thierry Crozat
62d71480c2 SWORD1: Add debugger command to set mac speech endianness 2014-09-07 19:38:52 +01:00
Thierry Crozat
72d37eeb82 SWORD1: Fix typo in comment 2014-09-07 14:59:56 +01:00
unknown
ab742d7308 SWORD1: Silence some GCC warnings.
Signed/unsigned comparison.
2014-09-07 11:06:20 +02:00
Thierry Crozat
5450870326 SWORD1: Improve speech endianess detection in mac version
Because of the way the speech is compressed with duplicate samples
being stored with a negative size and a single value, when reading the
data with the wrong endianess we can end up with a lot of duplicate
samples which biased the result with the way the old heuristic was
coded. Hopefully this change to skip duplicate samples will make it
more robust.
2014-09-05 22:57:36 +01:00
Thierry Crozat
8eb82fd6c1 SWORD1: Fix heuristic to determine the endianess of the speech in mac version
Because the data is compressed (a repeated sample is coded as a
negative length followed by the value), when the length is read with
the wrong endianess we get completely wrong data. So to get the BE
data we cannot just read them assuming LE and byteswap afterward.
2014-09-05 07:46:42 +01:00
Ben Castricum
fd2ee7921f SWORD1: Change "no DXA support" message.
It's "without zlib" or "without DXA support". WJP prefers the first.
2014-08-22 06:43:02 +02:00
Thierry Crozat
c4d685b0ac SWORD1: Tweak MPEG-2 cutscenes error message
Beside making the message slightly better imho, it is also now
identical to the same message in BS2 and also more coherent with
the DXA message.
2014-07-05 13:56:47 +01:00
Strangerke
9a22da6573 SWORD1: Some British to American English 2014-02-19 21:45:24 +01:00
Johannes Schickel
f4724e7a46 SWORD1: Make GPL headers consistent in themselves. 2014-02-18 02:39:38 +01:00
Strangerke
e370716c18 SWORD1: Janitorial - Remove trailing spaces 2014-02-16 18:45:53 +01:00
D G Turner
ef85456859 BUILD: Remove need for engine.mk in each engine directory.
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.
2013-11-24 00:48:01 +00:00
D G Turner
1ac01d2333 BUILD: Remove need for engine-plugin.h in engines.
This is now generated automatically by the configure script from the
engine directory names.
2013-11-24 00:48:01 +00:00
D G Turner
00c27a28f9 BUILD: Split engines/plugins_table header down to a file per engine.
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.
2013-11-24 00:48:01 +00:00
D G Turner
d77cf95a18 BUILD: Split engines.mk down to a single file per engine.
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.
2013-11-24 00:48:01 +00:00