Commit graph

242 commits

Author SHA1 Message Date
Colin Snover
4495ae3de0 SCI32: Remove unused dependencies from GfxFrameout 2016-06-21 08:17:28 -05:00
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
b56266d28d SCI32: Fix video performance benchmarking in most SCI32 games
Most SCI32 games draw a "fred" object to the screen when the game
first starts to benchmark video performance. When framerate
throttling is enabled (which fixes many/most timing-related bugs
and reduces system load caused by unnecessary graphics updates),
the game's performance check will think that video card is slow,
causing some "high-performance" game features to be disabled.

To avoid this, we simply disable throttling during benchmarking by
detecting the "fred" object.
2016-06-14 20:58:53 -05:00
Colin Snover
de78651a5d SCI32: Really guard against null pointer dereference in calcLists
CID 1356125.
2016-05-30 08:35:53 -05:00
Colin Snover
694d4edd15 SCI32: Provide default value for vmap minDiffIndex
SSCI did not initialise minDiffIndex and would always flow into
the condition that sets it, but some compilers complain that the
value may be used uninitialised, so we will just set it to map
back to its original palette index by default.
2016-05-28 11:02:40 -05:00
Colin Snover
371b50e75a SCI32: Add explicit checks for null pointers
CID 1351617, 1351618, 1351619, 1351620, 1351621, 1351622, 1354791.
2016-05-27 19:20:22 -05:00
Colin Snover
abee16c563 SCI32: Use correct script dimensions for later SCI32 games
These values are hard-coded in the engine executable for each game.
2016-03-18 18:51:01 -05:00
Colin Snover
e25d928a9c SCI32: Fix crashes in kIsOnMe caused by stale CelObjs 2016-03-18 13:08:37 -05:00
Colin Snover
5917467c1b SCI32: Fix incorrect double-read from CLUT 2016-03-18 09:14:53 -05:00
Colin Snover
804e132476 SCI32: Remove outdated note about state of frameout code
This code is engine-accurate now, not based on guesswork.
2016-03-17 10:43:08 -05:00
Colin Snover
17ec528c9a SCI32: Temporarily remove dead SCI2.1early transitions code
This code sneaked in with the graphics engine rewrite, but is not
ready yet to be used. It will return shortly, once it is enabled
and working.
2016-03-17 10:43:07 -05:00
Colin Snover
35fde1bbcf SCI32: Update unimplemented TODO to reflect the correct operation type 2016-03-17 10:43:07 -05:00
Colin Snover
7f4149d491 SCI32: Enable redrawAllCount in palMorphFrameOut 2016-03-17 10:43:07 -05:00
Colin Snover
33cac79373 SCI32: Work around bad Styler script in KQ7 2.0b
The SCI2.1mid version of the game includes scripts designed for
SCI2.1early which means wrong parameters are sent to the kernel.
2016-03-16 22:00:38 -05:00
Filippos Karapetis
a393a1348a SCI32: Remove dead code related to priority map handling
The priority map is not used at all in SCI32 at the engine level by
design, so all the relevant code that handles picture priority is
pretty much dead
2016-03-16 01:51:07 +02:00
Filippos Karapetis
b50d425387 SCI32: Global 12 contains the previous room 2016-03-16 01:51:06 +02:00
Filippos Karapetis
be58e5bc30 SCI32: More work on remapping
Still not working
2016-03-15 21:06:46 +02:00
Filippos Karapetis
8f7ab881ee SCI32: Add remap counters and hook them up to frameOut 2016-03-11 07:54:45 +02:00
Colin Snover
ac403ac746 SCI32: Clean up debug messages in GfxFrameout
Error messages now contain the name of the failed function and
plane/screen item information that can be used to look up the
plane/screen item in a debugger, if the games ever crash in a
release in this code, per suggestion by @m-kiewitz.

Commented out messages that were used during the rearchitecture of
the main graphics engine are also removed, since that code is stable
now.
2016-03-10 18:28:53 -06:00
Colin Snover
8dea740086 SCI32: Implement kMovePlaneItems 2016-03-10 18:28:53 -06:00
Colin Snover
4a16ebc970 SCI32: Implement kSetNowSeen 2016-03-10 14:16:56 -06:00
Colin Snover
a2e9cc4965 SCI32: Clean up kIsOnMe and fix rounding bug
The implementation was not correctly rounding the scaled position
with mulru, leading to occasionally incorrect hit detection at
the boundaries of boxes.
2016-03-08 10:29:05 -06:00
Colin Snover
bd75b26d56 SCI32: Change magnifier warning to error
If anything actually uses this feature, we should know about it
eventually.
2016-03-07 17:27:38 -06:00
Colin Snover
13f2a2c3bd SCI32: Add debugger command to view screen items in the visible plane list 2016-03-07 16:46:25 -06:00
Colin Snover
36800b7017 SCI32: Fix memory leaks 2016-03-06 21:34:43 -06:00
Colin Snover
1337cd3dec SCI32: Implement kEditText 2016-03-06 21:34:43 -06:00
Colin Snover
b6a7d8c6a5 SCI32: Minor consistency improvement to FrameOut 2016-03-02 14:02:49 -06:00
Colin Snover
5e0cff364f SCI32: "Fix" missing fade transitions
The original engine had some members on PlaneShowStyle to
allow wall clock timing but never actually used them in the
processing loop so transitions simply ran as quickly as the
CPU could process them. For the moment, we will just limit
these transitions to ~30fps, which hopefully roughly matches
the speed of the engine on hardware of the era.
2016-03-02 14:02:49 -06:00
Willem Jan Palenstijn
93af01a58a SCI32: Comment splitRects 2016-02-21 21:12:13 +01:00
Martin Kiewitz
86a8886409 SCI32: Clean up Gfx::FrameoutsyncWithScripts() 2016-02-21 20:56:26 +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
Martin Kiewitz
210a6b10ac SCI32: Add comment about SQ6's option plane 2016-02-21 17:30:25 +01:00
Martin Kiewitz
3e4efdbd27 SCI32: Implement syncing planes+screen items from VM for restore
Fixes restoring saved games, when ScummVM dialogs are patched in
Removing clearing planes+screen items as well, because the scripts
actually did that, but did not clear everything.
Fixes "Invalid screen item" message when entering options menu,
after restoring in SQ6.
2016-02-21 17:21:48 +01:00
Martin Kiewitz
0941dcdb67 SCI32: Add a bit more debug info to errors + screenitems 2016-02-21 13:59:17 +01:00
Willem Jan Palenstijn
748b7684b2 SCI: Clear visible planes in GfxFrameout::clear() too
This caused planes and visibleplanes to go out of sync when loading.
2016-02-21 01:45:28 +01:00
Filippos Karapetis
b6f84d37b3 SCI: Fix showStyle check in palMorphFrameOut() - thanks snover 2016-02-20 23:28:41 +02:00
Martin Kiewitz
dda637e7ac SCI32: kIsOnMe apply scaling + use mulru() thx snover 2016-02-20 16:15:01 +01:00
Martin Kiewitz
ed251ea004 SCI32: kIsOnMe searches _visiblePlanes, not just _planes
Forgot to mention that in last commit
2016-02-20 15:47:53 +01:00
Martin Kiewitz
5425ff6e99 SCI32: Splitting up GfxFrameout::kernelIsOnMe() into 2 methods 2016-02-20 15:46:12 +01:00
Martin Kiewitz
19283b94a9 SCI32: Some work on kIsOnMe
Plenty of hotspots seem to work now
Not fully done yet
2016-02-20 05:38:22 +01:00
Martin Kiewitz
5b528a5582 SCI32: Make upscaled games work (e.g. gk1 hires) 2016-02-19 16:57:21 +01:00
Colin Snover
1c4778d571 SCI: Minor cleanup
1. Reorder member initialisations to match class member order
2. Use #pragma mark instead of comments for annotating sections
3. Remove useless >=0 checks on unsigned types
2016-02-18 21:11:06 -06:00
Colin Snover
03e3f2c68c SCI: Fix some rect off-by-ones 2016-02-18 13:18:03 -06:00
Colin Snover
75ccabc325 SCI: Implement accurate renderer architecture for SCI32 2016-02-18 13:18:02 -06:00
Colin Snover
0017cfa06c SCI: Fix SCI32 hires detection making PQ4 unusably slow 2016-01-20 20:06:45 -06:00
Colin Snover
fb891e4c08 SCI: Implement SCI32 kPalVary and kPalette setFade
This also fixes kPalCycle signatures to be more accurate.
2016-01-14 16:13:22 -06:00
Colin Snover
8a1d48fc03 SCI32: Add kFrameOut stub code 2016-01-07 16:35:09 -06: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
Ori Avtalion
85fa44c32d JANITORIAL: Remove #includes of list_intern.h 2016-01-02 15:32:38 +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