1345 Commits

Author SHA1 Message Date
Le Philousophe
65c0429045 ALL: Declare the Game not implemented message in only one place 2024-08-17 17:51:06 +03:00
Eugene Sandulenko
caacb4d1e4
ENGINES: "Missing game code" -> "Game not implemented" for unsupported games
As suggested by lephilosouphe, we show this to the end users on attempt
to run unsupported gamesA.
2024-08-13 23:39:57 +02:00
Cameron Cawley
cb438ce233 SAGA: Fix crash due to missing options list terminator 2024-07-25 20:12:17 +01:00
NabeelShabbir
4f26bdc706 SAGA: Introduce I18N comment to improved mapping labels
Remove title case and add I18N comments for keymap labels
2024-07-15 07:53:00 +03:00
NabeelShabbir
7d14ef7cc0 SAGA: Add keymapper support 2024-07-03 09:58:37 +03:00
Cameron Cawley
441b02d057 DETECTION: Use uint32 for ADGameFileDescription file size 2024-06-30 19:13:41 +02:00
Le Philousophe
7e0048b4a3 ENGINES: Add ADDynamicGameDescription class
This class manages a buffer where all data usually stored in detection
plugin will get copied before unloading the plugin and starting the
game.

This class expects that two functions are present in every
GameDescription: sizeBuffer which calculates how many bytes we will need
to store the entry in RAM and toBuffer which copies the data in the
buffer and fix the pointers in the class.
At the end, it is expected that an ADDynamicGameDescription doesn't
depend anymore on data stored in the detection plugin.

The AD_GAME_DESCRIPTION_HELPERS macro allow to implement these functions
in all GameDescription which don't have any pointer except those in
ADGameDescription.
2024-06-30 18:39:06 +02:00
Le Philousophe
b61bd3ff85 ENGINES: Create a type aware advanced meta engine 2024-06-30 18:39:06 +02:00
Le Philousophe
90b886097f ENGINES: Create a type aware advanced detector 2024-06-30 18:39:06 +02:00
Torbjörn Andersson
2a9f7759a3 SAGA: Only enable copy protection checkbox for floppy ITE
And the one CD version that "behaves like a DOS floppy version". Note
that I don't own any of these myself.
2024-06-30 18:01:32 +02:00
Torbjörn Andersson
be92f29104 SAGA: Add "Enable copy protection" engine checkbox for ITE
I have not actually tested that the copy protection works, but the
engine does seem to implement it.
2024-06-30 18:01:32 +02:00
Matthew Jimenez
5219c99400 GRAPHICS: Move PaletteManager definition to a separate header 2024-03-12 12:24:00 +02:00
Le Philousophe
f58b045ec8 SAGA: Migrate engine to Path 2023-12-24 13:19:25 +01:00
Le Philousophe
93a8f7f4d6 COMMON: Move Archive API to Path 2023-12-24 13:19:25 +01:00
Eugene Sandulenko
ec2dd2726b ENGINES: Added optional parameter to canSave/LoadGameStateCurrently() for indicating the reason 2023-12-08 12:21:16 +01:00
sluicebox
4693cdff28 SAGA: Fix buffer overflow. PVS-Studio V512 2023-11-19 20:29:44 -08:00
sluicebox
953a7226e7 SAGA: Fix memory leak on error
Coverity CID 1501495
2023-11-02 12:01:25 -07:00
sluicebox
e7eb740c55 SAGA: Fix memory leaks on error: PVS-Studio V773 2023-10-30 11:28:14 -07:00
Kaloyan Chehlarski
60467473f4 SAGA: Silence uninitialized variable warnings 2023-10-28 16:19:35 +03:00
PushmePullyu
bad85b3c9c SAGA: Fix use-after-free on handling actor action
On switching scenes:
Reset _actor->_lastZone in Actor::updateActorsScene().

Actors can store a pointer to a HitZone in _lastZone
(see Actor::handleActions()).

The HitZone pointed to is held by ObjectMap vm->_scene->_objectMap
in array _hitZoneList.

When changing scenes the array elements are cleared via
ObjectMap::clear() and _lastZone can become stale since
only some code paths reset it (e.g. Actor::takeExit()).

The stale pointer is then passed to Actor::stepZoneAction()
from Actor::handleActions() and dereferenced.

Fixes #13661
2023-05-28 23:32:20 +03:00
PushmePullyu
d2745ff37f SAGA: Fix memory and file handle leak in loadResource
Fixes #14334
2023-05-27 11:06:08 +03:00
Vladimir Serbinenko
ca48af197c SAGA: Fix word-wrapping bug
Without this fix it cuts last character of the line which is a space in
Western languages but a drawable character in Chinese
2023-05-01 12:43:25 +02:00
Vladimir Serbinenko
0198bef235 SAGA: Fix wrong calculation of Big5 string height 2023-04-27 04:24:27 +02:00
Vladimir Serbinenko
b88c384721 SAGA: Add ITE win demo 1 and 2 compressed variant. 2023-01-15 19:22:34 +01:00
Vladimir Serbinenko
8e5d88cd55 SAGA: Flatten tree in ZIP and ARJ archives.
Music patches are in subdirectory. It's easier to remove structure altogether
2023-01-15 19:22:34 +01:00
Walter Agazzi
63a2dc4388 DETECTION: Convert all GOG strings to GOG.com 2023-01-15 11:46:46 +02:00
Vladimir Serbinenko
52b9d064d9 SAGA: Change Mac Guild entry to use data fork for most files
We use resource fork only on sound file, the other ones contain nothing
useful so we don't want to checksum them
2023-01-10 18:34:33 +01:00
Vladimir Serbinenko
ef45ef4b49 SAGA: Support ite demo 3 without unpacking it. 2023-01-07 19:50:52 +02:00
Vladimir Serbinenko
8573bd38ea SAGA: Allow streams to be automatically reopened.
This is needed for IHNM chapter switch and was lost in switch to
common macbinary
2023-01-07 19:44:37 +03:00
Vladimir Serbinenko
302a5eb0af SAGA: Don't close file even after it was overriden by a patch
Now the file handle is shared among the readers of the same context,
so closing it will close it for all user which leads to a crash.
2023-01-07 02:38:07 +02:00
Vladimir Serbinenko
50d52b9d44 SAGA: Correctly handle the case of missing patch file. 2023-01-06 03:53:46 +03:00
Coen Rampen
737111e9d8 SAGA: Add OPL2 support for ItE DOS GOG and Windows 2023-01-05 21:18:30 +01:00
elasota
e280186a8c ALL: VS warning cleanup 2022-12-25 16:31:57 +01:00
Vladimir Serbinenko
4ed51f9005 SAGA: Add AGA demo floppy release 2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
097fd8765e SAGA: Add ITE ECS floppies 2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
63a39b6471 SAGA: Remove suffix _CD from detection_tables.h
Floppy versions use the same tables
2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
b2987256b8 SAGA: Remove dead code 2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
291e397698 SAGA: Fix offset in debug messages 2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
8b2019707d SAGA: Fix placard color in ITE ECS 2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
73f04a31ab SAGA: Support masked blit for sprites
ECS version does it in original for verb buttons, let's do the same
2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
fcf31d2593 SAGA: Fix displayinfo for ECS ITE 2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
1750e0880c SAGA: Switch palette at line 137 when running ECS version
Similar to what original does
2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
48fe6b038f SAGA: Use ECS colors for speech colors when needed 2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
8b3aaa3351 SAGA: Use colors from ECS-palettes when needed 2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
fe298487b9 SAGA: Load extra palette for ECS
Amiga ITE switches palette after line 137.
Additionally options uses a separate palette.
Rather than jungling with 3 palettes we just load
all 3 palettes.
2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
045cdb4e8f SAGA: Don't overwrite palette above actually present one 2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
e1698de9ca SAGA: Replace Usage of color literals with consts 2022-12-21 14:58:09 +01:00
Vladimir Serbinenko
ebd457841c SAGA: Support having game files under "ITE Data Files"
This is the case for Mac Guild CD version. Normally we ask user to just
select this subdirectory but selecting CD root is more logical
2022-12-18 20:46:34 +01:00
Vladimir Serbinenko
0482b7cb2a SAGA: Change ITE Mac Guild CD entry to use MACRESFORK
Now this CD version works with dumper-companion
2022-12-18 20:46:34 +01:00
Vladimir Serbinenko
0b8d67ff8d SAGA: Remove contextOffset/contextSize
It was used only in now defunct custom macbinary parser
2022-12-18 20:46:34 +01:00