Commit Graph

1438 Commits

Author SHA1 Message Date
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
Le Philousophe
98d6f155d2 ENGINES: Split Engine::createInstance in two
This brings a cleaner separation between AdvancedMetaEngineDetection and
AdvancedMetaEngine.
2024-06-30 18:39:06 +02:00
Torbjörn Andersson
28bfd6e977 AGOS: Add "Enable copy protection" engine checkbox
I don't have the floppy version of Simon 2, and I'm uncertain of the
actual effect of failing the copy protection in Waxworks and Simon 1.
But they are at the very least partly implemented.
2024-06-30 18:01:32 +02:00
NabeelShabbir
c5422d4aab AGOS: Add keymapper support
AGOS: Add keymapper support

commit 40359d7e9b575dbcc6233f9ba7f7454cf760c498
Author: NabeelShabbir <i210443@nu.edu.pk>
Date:   Thu May 30 02:51:09 2024 +0500
2024-06-27 17:33:31 -05:00
Eugene Sandulenko
0d02f81f94
AGOS: Improved debug output 2024-05-28 14:57:58 +02:00
Eugene Sandulenko
263ea9a063
AGOS: Added support for music track replacement for Enhanced Music Project 2024-05-28 14:54:44 +02:00
Eugene Sandulenko
d0ab4251c5
AGOS: Added more debug output to music player 2024-05-28 14:47:18 +02:00
Eugene Sandulenko
dc5c2f9946
AGOS: Enhance 'music' debugger command with optional track number 2024-05-28 14:46:43 +02:00
Eugene Sandulenko
9f843b2f6c
AGOS: Added support for Enhanced Soundtrack 2024-05-27 20:23:34 +02:00
Filippos Karapetis
40d62bd6bc AGOS: Use true/false keywords for boolean variables 2024-05-13 09:47:28 +03:00
athrxx
8feeded6ae AGOS: (WW) - prevent invalid memory access
It can be reproduced by clicking on the crystal ball icon.
From looking at disasm I think it happens in the original
in the same way. But this is a static memory area, so it
will always corrupt the same variable in the original
(_fcsData1[0]) which seems to cause no harm here.
2024-04-06 22:39:48 +02:00
athrxx
879f6a43f5 AGOS: fix timer handling in savegames (bug no. 14886)
("Waxworks crashing at Egypt Level 3, corrupting save file")

The design for the timers is a bit sloppy, even the original
interpreter often writes negative timeouts into the save files.
We replicated this correctly, but treated these values as very
large positives which effectively disabled the timers.

The bug report is only about Waxworks, but I checked Elvira
and i have the same absurd timer values in my old savegames
there. It seems that the timers have little impact in most cases,
but in Waxworks there is a timer that runs every 10 seconds
which cleans up the items chain. And if that doesn't happen
it will lead to invalid item handles, like in that bug ticket.
2024-04-04 22:12:01 +02:00
athrxx
be41ea3125 AGOS: (WW) - fix mouse cursor glitch
This one is pretty obvious when comparing ScummVM
with DOSBox behaviour. After the cursor changes to
one of the arrow cursors, it often stays that way when
it should actually switch back to the normal cursor. I have
fixed it to match the original code.
2024-03-27 21:55:11 +01:00
Matthew Jimenez
5219c99400 GRAPHICS: Move PaletteManager definition to a separate header 2024-03-12 12:24:00 +02:00
Le Philousophe
d614b5d31c AGOS: Migrate engine to Path 2023-12-24 13:19:25 +01:00
sluicebox
ce7b926a1a AGOS: Fix memory leak. PVS-Studio V773 2023-12-05 09:24:31 -08:00
sluicebox
b1f466fb8e AGOS: Fix memory leaks. PVS-Studio V773 2023-10-30 11:28:14 -07:00
Le Philousophe
5bdd9e6f50 ALL: Unify zlib and gzio API
zlib is used when available and falls back on gzio.
This allows performance improvements as our CRC32 and gzio
implementations are slower than base zlib.
As zlib is available when libpng is present, this is sensible to
benefit from it.
2023-08-28 21:49:03 +02:00
Donovan Watteau
500a54a559 Revert "AGOS: SIMON2: Fix pirate dialogue freeze"
This change introduced several character animation regressions in the
game, which may seem as a worse experience than the original issue with
the pirate dialogue, for most end users (Trac#13997).

This reverts commit eb851041ed.
2023-08-08 12:30:17 +02:00
Coen Rampen
00d273fc55 AGOS: Fix support for Simon 2 25th Anniversary
This adds detection entries for the German and French versions. All language
versions except Russian use WAV sound effects and GM SMF MIDI data, so the
platform is changed to Windows. These versions also contain the MT-32 MIDI data
in XMIDI format, so support for this is added as well. Finally, the MT-32 track
10 workaround has been updated to deal with these versions.
2023-07-03 21:57:39 +02:00
Coen Rampen
7eba6e9eb5 AGOS: Add Simon 1 AdLib SFX fallback 2023-06-27 21:33:39 +02:00
Coen Rampen
7fdb1fe012 AGOS: Add Simon 1 25th Anniversary detection
Adds detection entries for the new versions in the 25th Anniversary editions.
The remaining language versions are already detected.
To use the 25th Anniversary versions you have to copy the files from the
subdirectory of the language you want to use to the main directory, then detect
the main directory; or just detect without copying for English CD.
2023-06-27 21:33:39 +02:00
Coen Rampen
74329a9073 AGOS: Disable MT-32 on GM warning for PC-98xx 2023-06-24 21:50:13 +02:00
Coen Rampen
2e54d6ca9f AGOS: Add fallback for Simon 1 AdLib instruments
GOG has not included the AdLib instruments file with their release of Simon the
Sorcerer 1 DOS version. The game would not start in ScummVM when this file was
missing and AdLib was selected. Added a fallback to the generic AdLib driver
with built-in instruments.
2023-06-22 21:51:45 +02:00
Coen Rampen
cb4c1bdd46 AGOS: Add fallback for Simon 2 AdLib instruments
GOG has not included the AdLib instruments file with their release of Simon the
Sorcerer 2 DOS version. The game would not start in ScummVM when this file was
missing and AdLib was selected. Added a fallback to the generic AdLib driver
with built-in instruments.
Also made the Windows version start with AdLib if an OPL2-only emulator is used.
2023-06-21 22:03:55 +02:00
Eugene Sandulenko
15925e7035
AGOS: Add missing override keyword 2023-04-29 14:24:02 +02:00
BLooperZ
b27d30dd21 AGOS: Add fallback detection for some titles 2023-04-29 13:41:45 +02:00
Donovan Watteau
18ab6803d6 JANITORIAL: Fix various "an" typos in comments 2023-03-16 14:47:28 +01:00
Coen Rampen
f41cc33dff AGOS: Fix MIDI event noop flag not cleared
When the noop flag was set on a MIDI event by the AGOS Simon 1 Windows or GMF
parsers, it would not be cleared when parsing the next event, leading to all
subsequent MIDI events being ignored.
Fixed this by setting the noop flag to false when it is not applicable to a
MIDI event.
2023-01-14 17:14:51 +01:00
Walter Agazzi
ca77f5db92 AGOS: Complete StS Puzzle Pack titles 2023-01-02 13:46:39 +02:00
Cameron Cawley
fcf604a1f6 AGOS: Add detection for the Acorn Floppy Demo of Simon 1 2022-12-11 22:41:14 +01:00
Cameron Cawley
d6d098394c AGOS: Use proper filenames for the Acorn Floppy version of Simon 1 2022-12-11 22:41:14 +01:00
Eugene Sandulenko
fb7095f5a4
COMMON: Move all compression-related files to a separate directory 2022-12-01 11:53:02 +01:00
Donovan Watteau
95c755e8a3 AGOS: Use MSVC_PRINTF when GCC_PRINTF is used 2022-11-29 01:37:16 +01:00
Le Philousophe
08b91ceb08 AGOS: Adapt to subtitles changes and optimize
Overlay is not shown when there are no subtitles to show.
Subtitles are drawn at the correct frame and without forcing rendering.
2022-11-20 17:18:38 +01:00
Cameron Cawley
4090edcdb0
AGOS: Replace the custom LoopingAudioStream with RewindableAudioStream 2022-11-19 20:56:56 +02:00
Cameron Cawley
69a7c386a9 AGOS: Move the engine options into the MetaEngine subclass 2022-11-16 23:58:54 +01:00
Le Philousophe
60b7c4b95e AGOS: Show overlay as in-game 2022-11-12 19:12:05 +01:00
Ray
e5cf965f6d AGOS: Fixed game titles to match box title 2022-11-06 20:52:04 +02:00
Donovan Watteau
759e3f3138 AGOS: JANITORIAL: Less warning noise when ENABLE_AGOS2 is not enabled 2022-10-26 19:56:55 +02:00
Le Philousophe
429afa3a34 AGOS: Don't use unsafe sprintf and vsprintf 2022-10-23 22:46:19 +02:00
Le Philousophe
1d23fc0240 AGOS: Don't use unsafe strcat and strcpy 2022-10-23 22:46:19 +02:00
BLooperZ
eb851041ed AGOS: SIMON2: Fix pirate dialogue freeze 2022-10-01 11:28:11 +03:00
BLooperZ
c98001f68e AGOS: FEEBLE: Add subtitles support for SMK videos 2022-09-28 17:10:58 +02:00
Donovan Watteau
8d44cb0581 AGOS: Keep clearing the surface when using disable_fade_effects
When using this option with Simon 1, Simon wouldn't be cleared from the
bottom of the screen, if pressing Esc when Simon starts walking through
the screen right after the "Simon the Sorcerer" title is printed, at the
very beginning of the game.

Triggering the clearSurfaces() code even when _neverFade is enabled
solves this problem.

Fixes a mistake of mine in commit 802caa4c39.
2022-09-24 18:19:06 +02:00
Donovan Watteau
b305feb4d3 AGOS: Save a warning and some bytes when ENABLE_AGOS2 is not enabled 2022-09-22 10:23:28 +02:00
athrxx
d5331c3c2c AGOS: fix some warnings
(only the obvious ones, where nothing can be broken by the fix)
2022-09-02 15:36:48 +02:00