Commit Graph
311 Commits
Author SHA1 Message Date
Donovan Watteau 95c755e8a3 AGOS: Use MSVC_PRINTF when GCC_PRINTF is used 2022-11-29 01:37:16 +01:00
Coen Rampen 0fafb0ee19 AGOS: Fix Waxworks crash when playing digital SFX
Waxworks DOS has both digital and limited MIDI SFX. The game scripts use two
different opcodes for trigging digital and MIDI SFX; if a sound effect has both
a digital and a MIDI version, both opcodes are triggered. When digital SFX are
active, ScummVM would try to handle both the digital and the MIDI opcode by
playing a digital SFX. This would crash the game if the MIDI SFX ID was invalid
as a digital SFX ID. Strangely enough, this bug also seems to affect the Amiga
version. Apparently both opcodes are still in the scripts of this version, even
though it does not support MIDI at all AFAIK.

This commit fixes the issue by only playing the MIDI SFX if digital SFX are
turned off and ignoring them otherwise.
2022-08-05 22:16:43 +02:00
Donovan Watteau 802caa4c39 AGOS: Add an option to disable the fade-out effects in Simon1/Simon2
Simon1 and Simon2 fade the screen to black whenever leaving a room,
but this can be slow to render on some devices, and for some people
nowadays it can really make the pace of the game quite slow.
2022-06-23 20:28:34 +02:00
Coen Rampen 66bb075f1c AGOS: Add E2/WW AdLib and MT-32 SFX and enhancements
This adds support for the AdLib and MT-32 sound effects in Elvira 2 and
Waxworks. It adds an option to the UI to toggle between sampled and
synthesized SFX. It also adds the following enhancements:
- AdLib OPL3 mode for Elvira 2, Waxworks and Simon 1 floppy demo. This can be
selected using a new UI option.
- Mixed AdLib/MIDI mode for Elvira 2 and Waxworks.
- Implemented "monophonic chords", a feature of the original MIDI code which
would play only the highest note of a chord on AdLib. Most noticable in the
Waxworks music.
- Added UI option to select Simon 1 DOS music tempos.
- Rewrite of the AdLib and MT-32 drivers to remove duplication and make use of
features of the standard multisource drivers.
- Refactored MidiPlayer to standardize interface and remove code moved to the
drivers and parsers.
2022-05-09 17:19:44 +02:00
Coen Rampen a72704764b AGOS: Fix Simon 2 intro first scene MT-32 music
The first scene of the Simon The Sorcerer 2 intro uses 3 music tracks. The last
2 are missing from the MT-32 MIDI data set. The original interpreter just stops
playing music after the first track and does not restart until the next scene.

This commit fixes this problem by using the GM versions of these 2 tracks
instead and mapping the GM instruments to MT-32 ones.
2022-05-09 17:19:43 +02:00
Coen Rampen 1f19bf2d31 AGOS: Improve sound pausing and volume management
MIDI music is now paused by pausing the parser(s) instead of relying on the
mixer streams to stop providing callbacks. This gives more consistent behavior
as external MIDI devices or softsynths now also pause playback.

Muting sound now sets the volume to 0 instead of pausing playback.
2022-05-09 17:19:42 +02:00
Eugene Sandulenko abea37c9bb ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
Orgad Shaneh ee57380de7 ENGINES: JANITORIAL: Remove 'virtual' when override is specified 2021-11-14 14:32:04 +02:00
Torbjörn Andersson f6bac7b6c6 AGOS: Fix restoreBlock() regression
The whole restoreBlock() function looked strange. It said it took x, y,
w and h, but it seems pretty clear that what it expects is left, top,
right and bottom.

Except in one case, where the order of the parameters had been swapped.

The most visible result of all this was that The Feeble Files crashed
when you pressed the "Off" button in the Oracle interface.

I've changed the names of the parameters, and that one strange call, and
changed how the function calculates the dirty rect. Hopefully that
should be correct.
2021-06-01 22:22:47 +01:00
athrxx 56d897a100 AGOS: (ELVIRA/PC98/Jp) - more fixes
Just walking around the castle fixing bugs as I find them, e. g.:
- make decompression routine safer (this could write a couple of invalid byte in at least one case)
- also support compressed data header without actual data (required in the kitchen scene when killing the evil cook)
- fix some graphics/palette related glitches
2021-01-22 00:47:59 +01:00
athrxx 574133086d AGOS: (ELVIRA/PC98/Jp) - add Japanese font drawing
- Add dual layer graphics display to display the Japanese characters in their proper (double) resolution on top of the graphics. The original actually uses text mode.
- Adapt mouse handling to dual layer code.
- For consistency I got rid of all direct calls to _system->lockScreen() and _system->unlockScreen(), even in the sub engines that aren't affected. I find it easier to debug and to maintain this way.
2021-01-22 00:47:58 +01:00
athrxx bb8c70f865 AGOS: (ELVIRA/PC98/Jp) - fix startup
Add necessary file name and file format modifications so that the game at least loads up and runs up to the start scene without glitches.
2021-01-22 00:47:58 +01: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 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 76cb0351e0 AGOS: Move common enum from agos.h to new header file 2020-10-03 14:56:36 +02:00
Paul Gilbert 644a71440b AGOS: Refactor to use Engine debugger 2020-02-16 13:07:19 +02:00
Bastien Bouclet 1624da8c99 AGOS: Add override keywords 2020-02-09 12:43:14 +01:00
Eugene Sandulenko 14d7e5ac4d AGOS: Added override keywords 2020-02-05 14:37:42 +01:00
Paul Gilbert 5b80320525 ENGINES: Adding override keyword to hasFeature methods 2020-02-04 20:04:11 -08:00
Torbjörn Andersson b5b136b177 AGOS: Silence GCC memset() warnings
Recent GCC versions complain if you memset() a class or struct that
contain non-POD data types. Get around that by either initializing
the object when created, or by adding a reset() method.
2019-07-14 14:58:18 +03:00
Ori Avtalion 5e49800901 AGOS: Reduce audio header dependencies 2016-04-14 16:48:02 +03:00
D G Turner b32ca0aaae AGOS: Add image dumping to file enable by debugflag.
This previously required a code change and recompile to enable.
It can now be enabled or disabled at runtime using the "image_dump"
debug flag.
2014-05-12 00:44:13 +01:00
D G Turner 3d3a791085 AGOS: Switch VGA script debug output to debug flag, rather than level 5.
This is now set by --debugflags=vga_script rather than -d 5, though
it will still require a debug level greater than 0.
2014-05-11 15:26:58 +01:00
D G Turner 41da9a2df7 AGOS: Change "script" debugflag to "subroutine" as more accurate.
This flag is used to enable dumping of subroutine scripts at start.
2014-05-11 13:28:33 +01:00
D G Turner 55d8a46177 AGOS: Switch script debugging to debug flag, rather than level 4.
This is now set by --debugflags=script rather than -d 4, though
it will still require a debug level greater than 0.
2014-05-11 13:17:16 +01:00
D G Turner 0c9390fb27 AGOS: Remove leftover unused _debugMode variable. 2014-05-11 13:15:53 +01:00
D G Turner be68682946 AGOS: Switch VGA opcode debugging to debug flag, rather than level 3.
This is now set by --debugflags=vga_opcode rather than -d 3, though it
will still require a debug level greater than 0.
2014-05-11 12:46:55 +01:00
D G Turner 6856b09d5a AGOS: Switch opcode debugging to a debug flag, rather than level 2 hack.
This is now set by --debugflags=opcode rather than -d 2, though it will
still require a debug level greater than 0.
2014-05-11 12:27:38 +01:00
Torbjörn Andersson d980584cc5 Merge pull request #441 from eriktorbjorn/feeble-loyalty
Possible fix for bug #6525, AGOS: FF - Loyalty Rating never changes in 4 CD version
2014-03-04 07:08:59 +01:00
Kirben 83b32010b3 AGOS: Add initial support for mouse wheel. 2014-03-02 22:19:32 +11:00
Torbjörn Andersson b5259a65d8 AGOS: Modify setLoyaltyRating() on Kirben's suggestion 2014-03-01 09:48:22 +01:00
Torbjörn Andersson f8c3dcd8b8 AGOS: Add setLoyaltyRating() function 2014-02-27 07:31:17 +01:00
Torbjörn Andersson 93e7e72285 AGOS: Add missing loyalty rating to Feeble Files 4CD version
This attempts to restore the missing loyalty rating setting to the
4CD version of The Feeble Files. So far only for the English
version, since that's all I have, but it would not surprised me if
the other versions are similar.
2014-02-26 22:45:09 +01:00
Johannes Schickel c4fc0cee96 AGOS: Make GPL headers consistent in themselves. 2014-02-18 02:39:32 +01:00
Johannes Schickel 1cee8439e7 AGOS: Get rid of ArchiveMan in favor of global SearchMan.
This in fact slightly changes the priority order of added archives. Formerly,
all archives in SearchMan were preferred to the customly added ones in
ArchiveMan. All standard paths (i.e. path and extrapath) will be still be
searched before the custom ones (which are all priority 0 right now) but system
specific paths will be searched after (due to their priority being -1). Since
system specific paths shouldn't contain any game data files this should
hopefully be harmless.

This wasn't tested for games with CAB archives.
2014-01-22 00:30:28 +01:00
Johannes Schickel e560dca6b1 AGOS: Slightly clean up ArchiveMan code.
This removes the (always true) _fallBack flag which determined whether
SearchMan should be searched.
2014-01-22 00:14:26 +01:00
Willem Jan Palenstijn f0c2fa9d65 AGOS: Use Common::String for savegame filenames 2013-08-23 19:09:36 +02:00
Travis Howell 586d9bf32f AGOS: Add comment about the limitations of quick loading/saving games in the AGOS game engine. 2012-04-15 19:24:57 +10:00
Johannes Schickel 827cdbd22e AGOS: Make ArchiveMan a proper sub-type of SearchSet.
Now all of the Archive API is implemented to avoid possibly inconsistent
behavior when an ArchiveMan object is accessed via a class type higher in the
class hierachy.
2012-01-27 20:35:34 +01:00
Johannes Schickel a231f9d5dd AGOS: Rename ArchiveMan's open to createReadStreamForMember to match our Archive API. 2012-01-27 20:30:02 +01:00
Johannes Schickel a7cc5bd301 AGOS: Properly overwrite hasFile from SearchSet in ArchiveMan.
Formerly the hasFile method was non-const, thus did not overwrite the virtual
hasFile method of SearchSet. Since all accesses to this function have been
done through a ArchiveMan typed variable, the missing overwrite should not
have caused any trouble.

It looks like this was forgotten in a6ec4f70da.
2012-01-27 20:10:31 +01:00
D G Turner 783e3fea62 AGOS: Fix engine crash when playing Feeble Files from cabinet datafiles.
Playing with cabinet datafiles, this failed to find the "Charisma.smk"
file in the cabinets when in the Recreation (TV) room on Cygnus Alpha
and this caused an engine abort after the GUI dialog warning of the
"missing" video file. This was due to animation.cpp code using
Common::file::exists() instead of going via the ArchiveMan.

However,a hasFile() method implementation was also required to implement
fallback to decompressed (movie) files if the file requested is not in
the cabinet or the cabinet has been externally decompressed to files.

Thanks to fuzzie for the hasFile() patch.

Also, removed noisy warning which this correction triggers repeatedly in
installshield_cab.cpp hasFile(). This looks like leftover from
debugging, so not critical.
2011-11-13 23:44:38 +00:00
Travis Howell f20b8ecaa1 AGOS: Fix dumping all images option. 2011-10-07 00:04:08 +11:00
Travis Howell 5346ac18b7 AGOS: Integrate InstallShield support. 2011-08-27 11:00:24 -04:00
Johannes Schickel 5a1f75eae3 AGOS: Slight cleanup.
Now AgosEngine::_language is of type Common::Language instead of uint16. It is
currently only used with values of that enumeration, thus it should be safe to
use that type for it too.
2011-08-20 19:30:18 +02:00
Ori Avtalion c3cfdd36a5 AGOS: Fix struct/class mismatch 2011-08-09 00:52:33 +03:00
Eugene Sandulenko 6e795a89b0 AGOS: Reduced header dependency 2011-08-06 11:28:40 +01:00
Max Horn 183e018c19 AGOS: cleanup 2011-05-17 15:36:25 +02:00
strangerke 69b1485a22 GIT: Clean up: Suppress SVN tags, now useless 2011-05-12 01:16:22 +02:00