88 Commits
Author SHA1 Message Date
Torbjörn Andersson 536229f85b SCI: Add Behind the Developer's Shield as a separate "game"
It's a set of patch files bundled with Inside the Chest that provides a
different set of articles and artwork. All that's needed is to prefer
the patch files over the original files.
2025-12-21 12:26:19 +02:00
sluicebox b99925afb1 SCI32: Update GK1 CD speech repair config check
Ensures this option is only applied to the intended detection entries
2024-12-06 01:16:21 -08:00
Filippos Karapetis 609e8b54e0 SCI: Disallow saving from the GMM and add a new game option to allow it
This disables the feature, but allows users to enable it, if they want,
via a new checkbox. An appropriate warning has been added to the
checkbox, notifying the user that saves created through the GMM may be
corrupted and unusable. This addresses bug 15358
2024-11-04 10:11:57 +02:00
sluicebox 9d605801f0 SCI32: Fix HOYLE5 volume sync on variants 2024-06-19 16:31:36 -06:00
sluicebox de9710be94 SCI32: Remove completed TODO 2024-06-13 14:30:30 -06:00
sluicebox 26ba48aba7 SCI: Make parameter const ref 2023-11-07 16:07:10 -08:00
sluicebox 2801803b5f SCI: Remove redundant checks. PVS-Studio V547, V560, V654 2023-10-29 15:42:12 -07:00
sluicebox 0ff2062cfa SCI: Update flag debugger for ECO1 floppy 1.1 2023-10-05 13:46:00 -07:00
sluicebox c3f6ccfdca SCI32: Add fixes for early SQ6 demos 2023-07-18 11:48:26 -07:00
sluicebox 55c719aea9 SCI: Handle alternate bit orders in game flag debug commands
Five games store flags in a different bit order than the rest
2022-07-30 16:39:24 -04:00
sluicebox 82a16d71a9 SCI: Add debugging commands for Game Flags 2022-05-22 11:20:41 +03:00
sluicebox 654a7306d2 SCI: Fix SCI0 GfxFunctionsType detection
Fixes LSL2 non-early versions being misidentified and all message boxes
being drawn 10 pixels too low. For example: the copy protection screen.

Thanks to @eriktorbjorn for noticing this inaccuracy
2022-04-11 10:10:19 -04:00
Filippos Karapetis 3a8e79c674 SCI: Allow saving from the GMM for more SCI32 games
Saving from the GMM should now work for the following games as well:
GK2, Lighthouse, LSL7, Phant2, Shivers and Torin

Many thanks to @sluicebox for his help checking the game scripts of
these games
2022-01-16 21:36:42 +02:00
Filippos Karapetis d8336a31ff SCI: Allow saving from the GMM for games that can support it
This functionality should be working without issues in the following
games:
BRAIN1, BRAIN2, ECOQUEST1, ECOQUEST2, FAIRYTALES, PHARKAS, GK1, ICEMAN,
KQ1, KQ4, KQ5, KQ6, KQ7, LB1, LB2, LONGBOW, LSL1, LSL2, LSL3, LSL5, LSL6,
LSL6HIRES, PEPPER, PQ1, PQ2, PQ3, PQ4, PQSWAT, QFG1, QFG1VGA, QFG2, QFG3,
QFG4, SQ1, SQ3, SQ4, SQ5, SQ6
2022-01-16 18:36:27 +02:00
Eugene Sandulenko abea37c9bb ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
Orgad Shaneh 940c7bfc14 SCI: Use nullptr
Using clang-tidy modernize-use-nullptr
2021-11-14 15:51:59 +02:00
sluicebox 3ad5a82760 SCI: Apply workarounds to Mac games without object names
Restore object names in QFG1VGA workarounds that were removed to
accommodate the Mac version. Instead, don't match object names
on games that are known to not have them, since there are several.

Fixes workarounds not being applied to HOYLE4 Mac and LSL6 Mac.
2021-10-15 21:34:21 -05:00
Orgad Shaneh a05e54f00c JANITORIAL: Remove trailing whitespaces 2021-05-04 11:46:30 +03:00
sluicebox f6dd4fa234 SCI: Add option to use KQ5 CD Windows cursors
Ticket #7800
2021-04-29 09:27:13 -07:00
sluicebox 5f9111f9ed SCI: Fix LSL6 low-resolution volume synchronization
Applies the LSL6 volume sync to the SCI16 (lo-res) versions as well as
the SCI32 (hi-res) versions.
2020-07-10 14:29:32 -07:00
sluicebox ee139e1684 SCI32: Update GM detection for MOTHERGOOSE Mac
Fixes MOTHERGOOSE Mac music, which unlike PC is not General MIDI.
2020-05-06 15:50:28 -07:00
sluicebox 23fc7f52e0 SCI: Fix SoundResource error handling, ctor, dtor
Fixes several problems with the SoundResource class:

- Constructor doesn't fully initialize object if resource doesn't exist
- Destructor crashes if object not fully initialized
- Constructor has no mechanism to report failure
- Callers believe failure is reported by constructor returning null
- SoundCommandParser::initSoundResource attempts to pre-detect failure
  insufficiently in the absence of a formal mechanism.

SoundResource now always fully initializes, the destructor no longer
accesses uninitialized memory, and an exists() method has been added
which callers now test.

SQ6 Mac can now progress past the main menu.
2020-04-12 01:47:15 -07:00
sluicebox ca66a776b0 SCI: Implement early GetLongest() behavior, bug #10000 2019-07-09 09:51:10 +03:00
Filippos Karapetis cc1bdf67f5 SCI32: Remove some Hoyle 5 TODOs
Hoyle 5 does not show subtitles, even though it does contain text for
all of the included speech in its resource files
2019-07-09 02:21:18 +03:00
Lars Skovlund 4b6e0e0e7d SCI32: Add feature detection for plane id base
This provides a generic fix for AddScreenItem crashes in early SCI32
floppy games that have previously required individual script patches.
2018-12-28 11:55:32 +02:00
Filippos Karapetis 18837ded6e SCI32: Add audio volume sync support for Hoyle5 2018-08-30 23:51:00 +03:00
Colin Snover 673d25a9cd SCI32: Fix crash starting KQ7 demo
Fixes Trac#10343.
2017-11-28 16:47:37 -06:00
Colin Snover b2966f3fc8 SCI32: Fix support for RAMA demo
Fixes Trac#10251.
2017-09-30 01:08:12 -05:00
Colin Snover cd6130cdd6 SCI32: Add audio volume sync support for RAMA 2017-09-28 14:58:17 -05:00
Colin Snover 200c8c442b SCI: Remove dead code 2017-09-10 22:17:17 -05:00
Colin Snover b13777da8c SCI32: Implement guest additions volume sync for Phant2 2017-07-30 19:10:50 -05:00
Colin Snover afe344cc1f SCI32: Add guest additions support for LSL7 2017-07-17 22:42:18 -05:00
Colin Snover 07d6ffd989 SCI32: Force General MIDI for games that support nothing else
* MGDX has only GM music;
* KQ7 1.x's AdLib data is incomplete, so is not usable even though
  it is partially there

Fixes Trac#9789.
2017-07-07 13:28:54 -05:00
Colin Snover d556dcc57b SCI: Switch SCI2 games to use Audio32
Upon investigation of Sound code across SCI32 games, it was
determined that there are actually (at least) 3 different
revisions, not just a single SCI2.1 version. This patch only
changes the parts of Sound code that are relevant to the correct
use of Audio32.

Fixes Trac#9736, Trac#9756, Trac#9767, Trac#9791.
2017-06-18 21:42:58 -05:00
Colin Snover 66efb750a0 SCI: Add more support for >16-bit SCI3 offsets
Basically just grepped for getOffset calls being assigned to
uint16s and expanded those to uint32 when they looked trivial.

While some of these changes seem superfluous, at least for the
US/English SCI3 games where potentially impacted game scripts are
not large enough to have a problem with 16-bit offsets (e.g. when
feature detecting the sound type), at least some of these changes
are necessary for correct operation of the find_callk debugger
command in SCI3 games. There should not be a reason why any of
these variables need to be kept as uint16, in any case.
2017-05-20 21:14:18 -05:00
Colin Snover 91df45c6c5 SCI32: Fix missing/incorrect game features detection 2017-05-06 10:38:58 -05:00
Colin Snover 3303a88139 SCI: Improve audio volume & settings sync code
This patch includes enhancements to the ScummVM integration with
SCI engine, with particular focus on SCI32 support.

1. Fixes audio volumes syncing erroneously to ScummVM in games
   that modify the audio volume without user action (e.g. SCI1.1
   talkies that reduce music volume during speech playback). Now,
   volumes will only be synchronised when the user interacts with
   the game's audio settings. This mechanism works by looking for
   a known volume control object in the stack, and only syncing
   when the control object is present. (Ports and planes were
   researched and found unreliable.)

2. Fixes audio syncing in SCI32 games that do not set game
   volumes through kDoSoundMasterVolume/kDoAudioVolume, like GK1,
   GK2, Phant1, and Torin.

3. Fixes speech/subtitles syncing in SCI32 games that do not use
   global 90, like LSL6hires.

4. Fixes in-game volume controls in SCI32 games reflecting
   outdated audio volumes when a change is made during the game
   from the ScummVM launcher.

5. Fixes SCI32 games that would restore volumes from save games
   or reset volumes on startup, which caused game volumes to be
   out-of-sync with ScummVM when started.

6. ScummVM integration code for audio sync has been abstracted
   into a new GuestAdditions class. This keeps the ScummVM-
   specific code all in one place, with only small hooks into the
   engine code. ScummVM integrated save/load code should probably
   also go here in the future.

Fixes Trac#9700.
2017-04-21 19:00:27 -05:00
Colin Snover 31daa956d6 SCI: Implement bounds-checked reads of game resources 2017-03-27 19:42:31 -05:00
Martin Kiewitz c270b30a79 SCI: Fix pseudo mouse in various SCI1 games like e.g. Larry5
Pseudo mouse was functionality in SCI1+ games, that allowed the
user to control the mouse via keyboard cursor keys.

This new class only worked, when a tiny difference inside
the keyboard driver happened on kMapKeyToDir calls. We previously
tried to enable this behavior depending on cursor type, but
this didn't work correctly (Larry 5 for example was not detected
as such, but had PseudoMouse support).
2016-08-13 14:58:07 +02:00
Martin Kiewitz 0dd760724e SCI32: split up SCI2.1 into EARLY/MIDDLE/LATE
- Detection works via signatures (couldn't find a better way)
- new kString subcalls were introduced SCI2.1 LATE
- kString now has signatures and is split via subcall table
- kString fix, so that KQ7 doesn't crash, when starting a chapter
- Sci2StringFunctionType removed, because no longer needed
2015-12-29 01:44:11 +01:00
Filippos Karapetis f2f8bf5685 SCI: Fix wrong game features heuristic for Hoyle 1/2 - bug #6606
Games with newer graphics functions can call kDrawPic with 4 or 8
parameters. Older games call it with 6 parameters. Fixes the about
dialog in Hoyle 1
2014-08-08 02:51:57 +03:00
Johannes Schickel 8fc7d60feb SCI: Make GPL headers consistent in themselves. 2014-02-18 02:39:37 +01:00
Filippos Karapetis bd945bc756 SCI: Add support for the King's Questions mini-game
This can be found in the KQ collection
2013-08-20 19:48:33 +03:00
Matthew Hoops ee86e671f1 SCI: Fix Phantasmagoria Mac's kDoSound 2013-04-28 13:43:17 -04:00
Filippos Karapetis 146d00a799 SCI: Add the Inside the Chest / Benind the Developer's Shield demo 2012-10-22 12:19:13 +03:00
Filippos Karapetis 2b50824133 SCI: Add setter/getter methods to reg_t's
No functionality change has been made with this commit. This avoids
setting and getting the reg_t members directly, and is the basis of any
future work on large SCI3 scripts (larger than 64KB)
2012-06-18 05:24:06 +03:00
Filippos Karapetis e41e412c9e SCI: Fix for bug #3522046 "Detection of SQ4CD as Windows breaks Music"
Fall back to the DOS soundtracks in Windows CD versions if the user picks
a non-General MIDI music device, as the Windows tracks only contain MIDI
music
2012-04-29 20:45:16 +03:00
Filippos Karapetis 6a49d3eadd ENGINES: Return all available custom GUI options if no target is specified
This is used to set default settings for all custom game options when an
engine starts
2012-03-31 13:55:03 +03:00
Filippos Karapetis 536a7e407f SCI: Hook up the digital SFX and CD audio options
The relevant code wasn't added in the newer commits - this was an
oversight from my part
2012-03-25 16:40:49 +03:00
Willem Jan Palenstijn 56fb56936e SCI: Clean up some memory management and loops 2012-01-15 18:25:00 +01:00