Commit graph

451 commits

Author SHA1 Message Date
Colin Snover
a613a27b44 SCI32: Implement line drawing (kAddLine/kUpdateLine/kRemoveLine)
This line drawing code lives in a remodelled GfxPaint32 class
that is totally separate from GfxPaint16.
2016-06-21 08:14:12 -05:00
Colin Snover
46551fd4b5 SCI32: Rewrite digital audio engine
This provides a complete implementation of kDoAudio through
SCI2.1mid, plus partial implementation of SCI3 features.

Digital audio calls shunted through kDoSound have also been
updated to go through the SCI32 audio mixer, though these shunts
are a bit hacky because the ScummVM implementation of kDoSound
does not currently match how SSCI kDoSound is designed.

It is probably possible in the future to just replace the SCI1.1
audio code (audio.cpp) with the new SCI32 code, since the major
differences seem to be that (1) SCI1.1 only supported one digital
audio playback channel (this is configurable already), (2) it
had extra commands for CD audio playback and queued sample
playback.
2016-06-20 21:02:21 -05:00
Colin Snover
5d3385750d SCI: Split audio sync to its own class
SCI32 has its own audio handling code, but audio sync code is the
same as SCI16.
2016-06-19 14:48:33 -05:00
Filippos Karapetis
55390e77b1 SCI: Remove unused _gfxScreen parameter from GfxRemap 2016-03-15 11:28:13 +02:00
Filippos Karapetis
3a770fa0d8 SCI32: Initial implementation of kRemapColors
applyRemap() is still not finished, so nothing is actually visible yet
2016-03-11 05:10:32 +02:00
Filippos Karapetis
f450ca0ebf SCI: Split color remapping functionality into a separate class
Currently, only the SCI16 remapping functionality is implemented
(used in the QFG4 demo)
2016-03-08 20:36:03 +02:00
Filippos Karapetis
6958aa9890 SCI: Separate the demos of QFG4, PQ4 and GK1 from their full versions
The demo versions of these games were using a very different engine -
SCI1.1 vs SCI2/SCI2.1. Thus, we split them into different game IDs,
to avoid mixing specific game checks for them, as well as specific
game workarounds, which are different for the demos than the full
versions. Also, the demos should be working when SCI32 is disabled.
For these games, we don't use ADGF_DEMO, to avoid game IDs like
foodemo-demo
2016-03-08 20:36:02 +02:00
Johannes Schickel
3aecd8ef2a ENGINES: Make variable names of ADGameDescription conform to our guidelines.
gameid     -> gameId
guioptions -> guiOptions
2016-03-08 19:01:38 +01:00
Colin Snover
1337cd3dec SCI32: Implement kEditText 2016-03-06 21:34:43 -06:00
Martin Kiewitz
8588592947 SCI32: Don't do a syncWithScripts on restore from launcher
Causes issues in at least gk1 (option + inventory plane are shown)
Game::restore is not called, when doing restores from launcher,
so in the original interpreter this script code wasn't called
either.

Fixes option + inventory planes etc. being shown right after
restoring via launcher, when original save/load dialogs were
disabled.
2016-03-02 19:34:40 +01:00
Martin Kiewitz
f3c2d7629d SCI: Fix FM-Towns audio language selection
This first of all combines both detection entries and makes it
possible so that the user can directly choose English or Japanese
without having to add the game twice.
But it also fixes the in-game option to switch between English
and Japanese. Prior to this commit it was only possible to for
example switch from Japanese to English once, but it was not
possible to switch back without quitting the game and starting it
again.
2016-02-24 00:51:50 +01:00
Martin Kiewitz
82165bb6f6 SCI: Improve kAnimate fastcast detection, Remove EQ1 hack
- Add "kAnimate fast cast state" to "version" debug command
- Make it possible for script patcher signatures to get fully
used outside of the regular script patcher
- Remove previous fastcast detections and replace them with
a signature heuristic
- Remove object name checking, when fastcast global is set
- Heuristic detects "fast cast" support incorrectly for multilingual
KQ5, but it seems the game never sets the global, so it won't
matter. KQ5 CD (also SCI1 late) has fastcast support.
- Remove hack in GfxView::draw
- Add lots of comments to ScriptPatcher class

This fixes EcoQuest 1 Floppy showing the anemone on top of the
message box (see bug #5170)
2016-02-23 20:17:18 +01:00
Martin Kiewitz
1ac8533b1f SCI32: Fix save patching for ScummVM dialog
- Patch game super object for saving instead of game object
- Remove re-adding planes+screen items, game::replay does that
We would only have to do that for soft-failing on restore
- Change debug levels of kNumLoops/kNumCels to 9
- Add special comment about -info- selector in syncWithScripts()

This should now make ScummVM menu saving work properly at
least in SQ6.
2016-02-21 20:33:17 +01:00
Colin Snover
20ccad80bf SCI: WIP GfxText32 code
This at least prevents SQ6 from crashing when going into the
introduction
2016-02-18 13:18:02 -06:00
Colin Snover
75ccabc325 SCI: Implement accurate renderer architecture for SCI32 2016-02-18 13:18:02 -06:00
Alexandre Detiste
6c298e964f JANITORIAL: Typos detected with lintian & grep 2016-02-15 18:27:02 +01:00
Martin Kiewitz
b2ab29587b SCI: Only select save slots for kernel calls
Previous code also selected files called e.g. "[targetname].abc"
2016-01-26 16:55:38 +01:00
Martin Kiewitz
9f43193730 SCI32: PQ4 seems to support high resolution too 2016-01-22 02:30:13 +01:00
Martin Kiewitz
0aa9924df1 SCI: add user option for high resolution graphics
Instead of choosing Windows as platform, users can now also simply
click this option for Gabriel Knight 1 + King's Quest 6
Defaults to high resolution graphics
2016-01-22 02:01:28 +01:00
Colin Snover
76bd2eeb2e SCI: Use tick-based timing more consistently
This means tick-based times are saved to save games, as in SCI32
engine, instead of seconds, which are not accurate enough. It
also means places in SCI engine that need to access game ticks
should do so through g_sci instead of g_system or g_engine.
2016-01-14 16:13:22 -06:00
Willem Jan Palenstijn
22796e559f SCI: Fix compilation when SCI32 is disabled
Thanks bSr43
2016-01-10 12:38:10 +01:00
Colin Snover
aeee621e44 SCI32: Add initial support for palette cycling (kPalCycle) and fading (kPalFade)
Graphics palette code was rewritten between SCI1 and SCI2, so
SCI32 palette engine code has been moved to a separate GfxPalette32
class.
2016-01-07 16:35:09 -06: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
Johannes Schickel
d2d700e086 SCI: Remove superflous default value registration for extra GUI options. 2015-12-28 00:14:11 +01:00
Martin Kiewitz
b0587f6af8 SCI32: add code for torin+sq6 audio+subtitles mode
also add comments about other SCI32 games
set global 90 only for lsl6 sci1.1
2015-12-22 01:53:19 +01:00
Martin Kiewitz
d0d1d6e921 SCI32: add code for kq7 audio+subtitles mode
also enables it for gk1 and qfg4 (CD versions)
2015-12-21 23:25:58 +01:00
Martin Kiewitz
139bdec3ba SCI: immediate restore now uses delayed restore
instead of the old hackish method
2015-04-27 18:21:41 +02:00
Martin Kiewitz
83c6e1543e SCI: add debug level for workarounds
It's called "Workarounds"
2015-04-18 23:13:11 +02:00
Filippos Karapetis
9783f0bbd9 SCI: Remove trailing whitespace 2014-10-28 16:17:06 +02:00
Martin Kiewitz
d4de84bf8b SCI: fix saving in mother goose sci0 (bug #6486) 2014-06-02 20:51:39 +02:00
Johannes Schickel
8fc7d60feb SCI: Make GPL headers consistent in themselves. 2014-02-18 02:39:37 +01:00
Filippos Karapetis
474c45fdc6 SCI: Some minor cleanup 2014-02-17 11:48:34 +02:00
Filippos Karapetis
5b1631960e SCI: Fix bug #6536 - "SCI: JONES - top menu empty after loading from launcher" 2014-02-17 03:29:54 +02:00
Martin Kiewitz
d5331ab923 SCI: improved lb2+kq6 patches (new speech state)
adds a third button state to the game menu
this state is "dual mode" (audio+text at the same time)
currently uses the "speech" graphic
CD versions of Laura Bow 2 + King's Quest 6 will now always get patched
2013-12-22 20:46:54 +01:00
Matthew Hoops
70d3610f30 SCI: Add detection for Torin Mac 2013-12-11 20:28:50 -05:00
Martin Kiewitz
dbfaac22ed SCI: only apply audio+text patch to KQ6 CD+LB2 CD 2013-12-08 15:40:18 +01:00
Martin Kiewitz
9de412c4ff SCI: sci.cpp updated b/c KQ6 audio+text support 2013-12-08 14:55:06 +01:00
Martin Kiewitz
8bdffcb2fb SCI: script patcher is now a separate class 2013-12-04 20:42:16 +01:00
Martin Kiewitz
ba3656d84e SCI: fix script patcher for games w/o vocab 2013-11-21 22:41:07 +01:00
Willem Jan Palenstijn
3ea127e877 SCI: Fix warning 2013-11-21 09:39:19 +01:00
Martin Kiewitz
4e2b1f0200 SCI: script patch for laura bow 2 for audio+text
at the same time
needs indepth testing
2013-11-20 23:31:36 +01:00
Martin Kiewitz
f1abc0c302 SCI: improved patcher, inventory patch for kq6/mac
Also added new debug flag for script patcher
2013-11-01 13:25:31 +01:00
Filippos Karapetis
f9bbc2ca37 SCI: Update ScummVM's game audio options for SCI1.1 CD games
This ensures that ScummVM's game audio options for speech and subtitles
get updated when they are changed in the game GUI
2013-10-31 07:25:25 +02:00
Matthew Hoops
9eb5d23a5e SCI: Fix patched save/load dialogs in SCI32 Mac games 2013-04-28 14:56:06 -04:00
Filippos Karapetis
99e90b98f0 SCI: Fix incorrect detection of NRS patches in QFG3 (bug #3574541) 2013-04-27 14:40:08 +03:00
Max Horn
51bde6ced5 SCI: Remove a bunch of unused private member variables
All instances uncovered by clang warnings.
2013-04-18 23:50:20 +02:00
Filippos Karapetis
dc93093afa SCI: Fix a small glitch when loading (regression)
This is caused by commit ed6bc0a13d,
and caused players to click an extra time when trying to change the
game audio options after loading a game
2012-12-03 02:11:34 +02:00
Filippos Karapetis
ed6bc0a13d SCI: Resync audio options when a game is restarted (bug #3589453) 2012-12-02 15:20:41 +02:00
Filippos Karapetis
c34704972e SCI: reset _throttleLastTime when restarting
This ensures that the load dialog in the ScummVM menu won't be
available at inappropriate times when a game is restarting (e.g QFG1,
during the starting warning dialogs - bug #3565505)
2012-11-06 12:58:33 +02:00
Filippos Karapetis
3a852fb96a SCI: Also add LSL6 CD to syncIngameAudioOptions() 2012-10-08 23:49:49 +03:00