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
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
- 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.
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!
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.
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
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
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.
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.
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.
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.
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.