8804 Commits

Author SHA1 Message Date
Filippos Karapetis
ec20a5fe34 SCI32: Unlock GK1 easter egg at the Voodoo Hounfour
This easter egg is present in script 805. In this easter egg, Gabriel
draws a doodle of Jane Jensen in the whiteboard, if the player uses the
operate action below the whiteboard's eraser. This easter egg looks for
a file named "buster" to be present, so that it is enabled. We always
report that this file exists, to unlock the easter egg.

Special thanks to sluicebox for his awesome work on discovering this
easter egg: https://www.benshoof.org/blog/gabriel-knight-1-easter-eggs
2021-05-27 22:30:41 +03:00
sluicebox
0715affdd6 SCI: Use for loop in gameHasFanMadePatch() 2021-05-25 10:31:59 -06:00
sluicebox
ff15ffef37 SCI: Update SQ4 Text+Audio patch signature
Makes the signature more precise so that it's not accidentally applied
to the wrong place when a script already contains this patch.

Fixes incompatibility with NRS' SQ4 Update 1.3
2021-05-24 12:39:45 -06:00
sluicebox
4e8db68d4a SCI: Remove asserting "new" allocation results 2021-05-23 16:55:35 -06:00
sluicebox
f7ba6bb448 SCI: Remove redundant assert 2021-05-23 16:52:43 -06:00
sluicebox
a8dacadf40 SCI: Use initializer list for all SciEngine members
Cleans up inconsistencies and excludes more SCI32 members
from SCI16-only builds
2021-05-23 11:26:30 -06:00
sluicebox
9243be0b8d SCI32: Fix GK1 comic-book cartoon timing, animation 2021-05-22 18:47:17 -06:00
sluicebox
41226396b2 SCI: Add missing debug channel terminator 2021-05-22 03:55:37 -06:00
sluicebox
96e05f5b5c SCI: Add SQ4 Spanish 5.25" floppy detection entry
Trac #12524
2021-05-21 22:29:17 -06:00
sluicebox
4e347027fa SCI: Fix SQ4 Spanish detection entry's options
This is a localized floppy version that was distributed on a CD,
it doesn't have the features of the CD version
2021-05-21 21:42:53 -06:00
sluicebox
f3e890889f SCI32: Fix GK1 CD end-game font 2021-05-21 21:42:53 -06:00
ysj1173886760
3a65856f4c SCI: move debug channels to metaEngineDetection 2021-05-22 01:34:57 +02:00
sluicebox
05a4e55634 SCI32: Fix color comparison typo in previous commit 2021-05-21 10:53:15 -06:00
sluicebox
e09c6d13e4 SCI32: Handle kShowStyleDissolve Mac palette 2021-05-21 02:35:21 -06:00
sluicebox
0959489b49 SCI: Allow sounds with empty channels
Occurs in fan games such as SQ4 Update
2021-05-21 02:30:15 -06:00
sluicebox
b0ce6a2d79 SCI: Improve SQ4CD selection of digital samples
- Windows-only samples now respect "Prefer digital sound effects" config
- Windows-only samples now only applied when a regular digital sample
  doesn't exist. This is SSCI behavior and mildly affects two sound
  effects in the monolith burger mini-game. Confirmed in disassembly.
- Windows-only samples now play in Windows mode and DOS samples and
  MIDIs play in DOS mode.
- Default audio experience now matches the selected platform.
2021-05-18 18:33:55 -06:00
sluicebox
604ab98b5e SCI: Removed completed TODO 2021-05-18 18:32:44 -06:00
sluicebox
5d419e320b SCI: Remove extra semicolon 2021-05-18 17:46:41 -06:00
sluicebox
718d79c05b SCI32: Add support for LSL7 Polish InstallShield files
Fixes bug #10066
2021-05-16 21:13:33 -06:00
sluicebox
4713278be2 SCI32: Add detection for LSL7 Polish "data" directory
Fixes bug #10066
2021-05-16 21:11:08 -06:00
sluicebox
05d5299c54 SCI: Remove unused 640x480 mode from SCI16 code
This is old SCI32 code that should have been removed from
GfxScreen when GfxScreen32 was created.
2021-05-14 17:37:19 -06:00
sluicebox
7957b50af1 SCI: Add option to use SQ4 CD Windows cursors 2021-05-14 17:37:18 -06:00
sluicebox
b60a6a717b SCI: Fix SQ4 easter egg lockup in software store 2021-05-13 16:10:24 -06:00
sluicebox
24989ea97c SCI32: Set GK1 Mac to ADGF_TESTING
This is the first SCI32 Mac game to move out of Unstable.
The others are CD games and there are still issues to sort out before
those can be supported, but GK1 is floppy-only and ready to go.

Big thanks to Trembyle for playing this game all the way through!
2021-05-05 11:47:13 -07:00
Orgad Shaneh
a05e54f00c JANITORIAL: Remove trailing whitespaces 2021-05-04 11:46:30 +03:00
sluicebox
a92582ef0e SCI32: Translate Mac colors when drawing CelObjColor
Fixes several kSetShowStyle transitions such as the iris effect
in LSL6 Hi-res Mac at the end of the beach scene at night (room 860)
2021-05-01 14:29:18 -07:00
sluicebox
f902d7ce81 SCI32: Fix LSL6 Hi-res Mac volume sync 2021-04-29 14:25:11 -07:00
sluicebox
f6dd4fa234 SCI: Add option to use KQ5 CD Windows cursors
Ticket #7800
2021-04-29 09:27:13 -07:00
sluicebox
21b946645e SCI: Add support for LSL1VGA French (fan patch)
Fixes bug #12034
2021-04-27 15:03:34 -07:00
sluicebox
6b910669b3 SCI: Fix KQ6 'Tickets, only' CD audio interruption 2021-04-26 22:50:10 -07:00
sluicebox
11fec236a2 SCI: Make KQ6 'Tickets, only' script patch a workaround
In addition to simplifying, this fixes the message in Spanish and
Italian versions. The CD patch signature matched these floppy versions
too and altered their correct messages.
2021-04-26 22:50:10 -07:00
sluicebox
77b93c77ab SCI: Add support for MOTHERGOOSE256 CD-Audio version
This multi-lingual version handles audio in a unique manner.
English audio is only on the CD audio track while the other
four languages are only in resource files. This is transparent
to the scripts that play audio; they're the same in all versions.
This required a custom interpreter that detects the language and
handles English differently. It even has a custom error message:
"You will not be able to play the 'ENGLISH' version."

Fixes bug #12431
2021-04-24 00:35:03 -07:00
Filippos Karapetis
a88cef4b28 SCI: Refactor and simplify the fallback detector 2021-04-23 15:39:17 +03:00
Filippos Karapetis
e44615eba8 SCI: Add checking for g_sci inside ResourceManager methods
Since the ResourceManager is also used by the fallback detector, where
the engine is not initialized, all places where g_sci is used need to
be checked
2021-04-23 15:39:17 +03:00
Eugene Sandulenko
ce9542df63
SCI: Added detection with a warning for CD1 of pqswat Win
We need probably add similar entries for other multi-cd games in the engine
2021-04-16 14:20:44 +02:00
Cameron Cawley
4ccc53b0aa SCI: Fix fallback detection for Police Quest: SWAT 2021-04-16 01:11:40 +02:00
Eugene Sandulenko
5e7fe2dc57
JANITORIAL: Replace spaces in indentation with tabs 2021-04-15 21:20:36 +02:00
sluicebox
813d5ca6c9 SCI: Improve kPaletteSetIntensity speed throttling
Detect when kPaletteSetIntensity is called from an unthrottled
script loop and only apply speed throttling in that situation.

This fixes several slow fade-in / fade-outs such as KQ6's Sierra
logo and title screen. We've been throttling kPaletteSetIntensity
on every call, even when it was being used once per game cycle
(which our kGameIsRestarting throttling already handles) or within
kWait-throttled loops. In both cases this has added delays on top
of delays and slowed things down even further.
2021-04-12 11:12:01 -07:00
sluicebox
71235358e3 SCI: Set port origin to even x coordinates only
Fixes QFG1 (EGA) character allocation/stat screens drawing most of
their content one pixel to the right of where SSCI does.

Confirmed in disassembly of earliest and latest SCI16 interpreters.

This partially addresses bug #9593 regarding port drawing inaccuracies.
2021-04-08 21:01:03 -07:00
sluicebox
f58e87baea SCI: Fix QFG3 floating spears in GOG version
Fixes bug #11426
2021-04-07 11:35:11 -07:00
sluicebox
cc95809bb5 SCI: Fix compatibility with PQ1VGA & PQ3 GOG versions
GOG includes NRS scripts in PQ1VGA and PQ3 which trigger our
warning about fan patches. The patches introduce several forms of
speed throttling but we already throttle at the engine level.
This changes timing throughout the games and may cause conflicts.

This commit:
- Disables the speed throttling that the patches introduce
- Removes the warning for these versions

GOG versions now play the same as original unpatched ones.
2021-04-05 23:47:45 -07:00
Filippos Karapetis
641116d995 SCI: Add another version of PQ:SWAT - bug #12264 2021-04-03 00:11:16 +03:00
Zvika Haramaty
6b895c1b73 SCI: Added fan made Hebrew translation for QFG1VGA 2021-03-23 08:58:34 +02:00
sluicebox
592ab77dc7 SCI: Fix PQ3 road signs not updating
Fixes bug #10254
2021-03-21 22:53:08 -07:00
sluicebox
294d733d9f SCI: Fix Timer rollover bugs in KQ5, MOTHERGOOSE256 2021-03-21 17:32:17 -07:00
sluicebox
27e00993ce SCI: Fix PEPPER glass jar bugs with script patch
Fixes the remaining script bugs and cleans up kMessage
2021-03-20 13:37:37 -07:00
sluicebox
d52539435b SCI: Add PEPPER workaround for uninit read 2021-03-20 13:37:37 -07:00
sluicebox
58f912aaa4 SCI: Add workaround for KQ5 Amiga class table
Fixes loading boatRegion (script 220) in rooms 44, 45, and 46
of English Amiga version
2021-03-14 12:55:45 -07:00
athrxx
505e9aff15 SCI: (SCI0 sound) - ensure that pauseAll() works correctly
The last 2 commits might not be fully compliant with the ScummVM GMM code and our handling of global sound pausing/resuming. This commit makes sure that only sounds will resume that were actually playing.
2021-03-13 17:41:54 +02:00
athrxx
5a626c8b78 SCI: (SCI0 sound) - fix sound restoring
This mainly concerns restoring sounds after loading savefiles, but it should make the whole relationship between playing and paused sounds more accurate.

The test case which I was told about was KQ4, room 21, picking up the golden ball under the bridge, saving during playback of the pickup sound and then loading that savegame. It would result in hanging note due toe the sound being triggered multiple times by reconstructPlaylist() and updateSci0Cues(). Now, the sound should only start once.

I've changed the code to be more in line with disasm and tested some situations that sluicebox told me about or that I found in the comments (ICEMAN room 14, LSL3 start scene). I got rid of isQueued, since the original doesn't have that, it has caused some confusion and doesn't even get saved with the savegames.

I cleaned up updateSci0Cues(), so that it (together with processUpdateCues()) does a bit more what the original Midi timer proc does there. An exception is the sound fade out code in processUpdateCues(). It seems that we need that, as we don't have the fading code in the drivers like the original.

The original SCI0 code is actually much simpler than our code. It relies on a correctly sorted playlist (based on priority), but my impression is that we got that right, even if we do it slightly differently. I added a sortPlayList() to the sound init, since the original inserts the node at the right position, too.
2021-03-13 17:41:54 +02:00