Commit Graph
7940 Commits
Author SHA1 Message Date
Colin Snover 8985f8f447 SCI32: Always sort kernel-generated screen items above script-generated screen items in last-ditch sort
Fixes Trac#10257. Fixes Trac#10261.
2017-10-02 21:35:21 -05:00
Colin Snover a51fb1f3b6 SCI32: Fix missing transparency in RAMA title screen 2017-10-01 23:08:00 -05:00
Martin Kiewitz d75dab4e55 SCI32: Add detection for SQ6 demo (from Sneak Peeks 2 CD) 2017-09-30 20:45:14 +02:00
Colin Snover 128031c6a6 SCI32: Fix crash when dying in RAMA
As it turns out, autorama.sg *is* actually used sometimes.

Fixes Trac#10253.
2017-09-30 11:42:49 -05:00
Colin Snover f46fa18006 SCI32: Stop trying to clean up uninitialized VMDs
Fixes Trac#10252.
2017-09-30 11:35:08 -05:00
Colin Snover be37a62591 SCI: Fix printing of super calls on clones in debugger 2017-09-30 01:08:12 -05:00
Colin Snover b2966f3fc8 SCI32: Fix support for RAMA demo
Fixes Trac#10251.
2017-09-30 01:08:12 -05:00
Colin Snover dc7e37fdb6 SCI32: Fix extremely broken patch for RAMA RESOURCE.SFX
Obviously, games other than RAMA need to have sound effects
volumes.
2017-09-29 23:02:38 -05:00
Colin Snover f43b2c66fe SCI32: Improve RESOURCE.SFX fallback for RAMA
Since Datafiles says to rename any RESOURCE.SFX to RESSFX.00n,
and there is only a RESOURCE.SFX on CD 1, don't confuse users by
failing to use RESSFX.001 for CD2 and CD3.
2017-09-29 20:20:20 -05:00
Colin Snover 941db6e7e5 SCI32: Promote Lighthouse and RAMA to ADGF_TESTING 2017-09-29 19:56:25 -05:00
Colin Snover 3b8b4f1722 SCI32: Clean up unused kBitmap code/subops 2017-09-29 19:56:24 -05:00
Colin Snover 3cdf26b355 SCI32: Fix bad text rendering in RAMA
In SCI3, Sierra removed the ability of the main renderer to
automatically scale CelObjs with different source resolutions.
Instead, in SCI3, all CelObjs are treated as having the same
resolution as the screen (i.e. 640x480).

In all SCI3 games other than RAMA, keeping the code paths for
resolution-dependent scaling is not a problem because all the
assets and game code are correctly designed to use the same
640x480 resolution throughout. RAMA, on the other hand, was
written with the text subsystem set to a resolution of 630x450
(Phant1's screen resolution), and in SSCI, resolution-dependent
scaling code was not removed from the *text* subsystem. As a
result, RAMA's game scripts rely on the slightly larger scaled
dimensions coming out of the text system when determining the size
of screen items for rendering, and then also rely on the main
renderer ignoring the 630x450 resolution baked into the bitmaps
generated by the text subsystem when drawing them to the screen.
2017-09-29 19:56:24 -05:00
Martin Kiewitz 6f163b9325 SCI: Add script patch for QfG2 Jackalmen Oops - bug #10218
Was a game bug, finally fixed.
This was a combined effort of wjp and myself. Thanks to wjp.
We both don't own QfG2 1.000 atm, so we could not try it for that
version.
2017-09-28 23:51:35 +02:00
Colin Snover f570e4b351 SCI32: Disable change directory button in original save/load in RAMA 2017-09-28 14:58:18 -05:00
Colin Snover 7de9c1682b SCI32: Allow save games to be deleted from original save/restore in RAMA 2017-09-28 14:58:18 -05:00
Colin Snover c81348e3fe SCI32: Block RAMA from creating PREF.DAT file
This file normally stores brightness, music volume, and most
recently used save game directory. Since we store the music volume
ourselves and don't use the save game directory, the only
potentially useful information is the brightness level, and that
is fine to just restore from the save games.
2017-09-28 14:58:18 -05:00
Colin Snover 81d6706cf4 SCI: Remove resolved TODO 2017-09-28 14:58:17 -05:00
Colin Snover cd6130cdd6 SCI32: Add audio volume sync support for RAMA 2017-09-28 14:58:17 -05:00
Colin Snover 1351189575 SCI: Add SQ3 1.0P 720K to detection table
Fixes Trac#10245.
2017-09-27 21:40:45 -05:00
Colin Snover a4eb6a5ca5 SCI: Remove old SCI32 view scaling code from SCI16 graphics code 2017-09-27 20:27:34 -05:00
Colin Snover 7a41b6f023 SCI: Add support for keyup events
Basic keyup event support appears to have been added in the SCI1.1
IBM keyboard driver, and more robust support was provided in SCI32
which actually gets used by at least Lighthouse. This patch adds
support for keyup events in SCI1.1+.

Fixes Trac#10242.
2017-09-27 20:27:34 -05:00
Colin Snover 4bd31dae9b SCI: Fix use-after-free when kernel call debugging is active during a save game restore 2017-09-27 20:27:33 -05:00
Colin Snover 9a8070da3c SCI: Do some clean-up of event handling system
Convert macros and vars to enums, rename keyboard events in
preparation for adding key up events, clean up unnecessary nested
conditionals, add TODOs for potential future work.
2017-09-27 20:27:33 -05:00
David Fioramonti c88d5519c2 SCI: Add uninitialized read workaround for shoplifting in SQ4CD
When in Galaxy Galleria, going into the software store and trying
to shoplift the SQ4 Hintbook will crash the game after you leave
and are electrocuted.

Fixes Trac#10229. Closes gh-1031.
2017-09-27 20:27:33 -05:00
Colin Snover 7feccaaa98 SCI32: Implement SCI3-variant volume handling
Trying to find differences in Lighthouse's audio sample playback,
I discovered that SCI3 had its own variant of handling volumes and
sending this volume information back to game scripts. It is not
known if this fixes any sound bug.
2017-09-27 20:27:33 -05:00
Colin Snover 9e0f23aabb SCI32: Fix backwards palette check 2017-09-27 12:02:01 -05:00
Colin Snover ba380ac28e SCI32: Dummy kPlayVMDSetFrameRate
This subop is used only by RAMA.

The VMD objects in RAMA's game code contain a frame rate field,
which is usually -1, but occasionally is not. In the cases where
it is not -1, it appears to be either set for a video with sound
(so the value doesn't do anything to that video), or it is just
resetting back to the baked-in frame rate of the video file (so
it doesn't need to exist, except to fix videos broken by earlier
played videos with explicit frame rates).

Since this is a global state flag that does not get reset in SSCI,
the ultimate effect of kPlayVMDSetFrameRate in RAMA is that it does
nothing to any of the videos where the explicit frame rate is set,
but it does inadvertently cause *other* videos with no sound and no
explicit frame rate to have a different frame rate depending upon
what was played earlier in the game (and whether or not the engine
was restarted in the meantime).

This bad transferring of frame rates is most noticeable with the
exit-video of the vidmail player, which is played when you back out
after selecting a vidmail. Its nominal framerate is 10fps, but it
will play at whatever frame rate was last set by some other video
that happened to have an explicit frame rate, even if that frame
rate was bogus.

So, just ignore all calls to this subop, as it is fatally buggy.
2017-09-24 23:49:37 -05:00
Colin Snover 24c8a26c75 SCI32: Remove unnecessary negative assertion check on unsigned integer
Fixes CID 1381416.
2017-09-24 22:56:59 -05:00
Colin Snover 743082ac8c SCI32: Disable all SCI32 Mac code
This code is currently untestable and is almost certainly at least
partly based on guesswork & not actual reverse-engineering (as was
the case for all other pre-2015 SCI32 code), so future developers
interested in adding SCI32 Mac support should use it only as an
intermediate reference rather than as known good code.
2017-09-24 22:56:59 -05:00
Colin Snover 5bb3ca5a6b SCI32: Fix bad cursor outlines in RAMA 2017-09-24 22:56:58 -05:00
Colin Snover 76806732e0 SCI: Remove Mac SCI32 code from SCI16 code 2017-09-24 22:56:58 -05:00
Colin Snover d935ea80c3 SCI32: Correct RAMA detection table entries
There seems to be no difference between DOS and Windows versions
of the game from what I could see in the game code (it checks
platform but only seems to just set a global which is never used),
and from what I could tell online they are all DOS/Windows hybrids,
so just simplify life and make them all DOS platform versions.
2017-09-24 22:56:58 -05:00
Colin Snover 663d845d63 SCI32: Add workarounds for uninitialized reads in RAMA 2017-09-24 22:56:58 -05:00
Colin Snover 3e107c1eb0 SCI32: Allow invalid references to be passed to kFileIO
Near the end of the game, RAMA will start trying to store some
invalid references. This does not affect the save game negatively
in any way, but it was causing the kernel to assert a signature
failure.
2017-09-24 22:56:58 -05:00
Colin Snover f42480d7cd SCI32: Support palette-inverting SCI3 variant of kPalVary
This is used by RAMA in room 6201, after eating the alien fruit.
2017-09-24 22:56:58 -05:00
Colin Snover 817887216d SCI32: Fix RAMA auto-save game
Despite what game script disassembly lead me to believe, the game
seems to create only one auto-save, which ends up being saved as
911.sg (not autorama.sg). This save file is created just before
entering the underground Avian Lair in New York, and seems to be
designed as some emergency backup since entering the Avian Lair is
a one-way trip.
2017-09-24 22:56:58 -05:00
Colin Snover 21337e4cf6 SCI32: Implement per-channel audio panning
Used by RAMA, in various places, starting with the refrigerator
at base camp after the cable car at the beginning of the game.
2017-09-24 22:56:57 -05:00
Martin Kiewitz d9dfca2fcb SCI: SQ4: Now using additional and enhanced Win3.11 samples
Which were originally only played, when using the Windows interpreter.
Afaik the DOS interpreter was incapable of playing more than 1
sample at a time, which was probably the reason why Sierra only
added these for the Windows interpreter.

For example a sample is now played, when points are awarded.

Those samples are currently used all the time and will also
enhance the game, when platform DOS is chosen.
In case someone wishes to opt-out of this, we could add a game
specific option.

We do something like this for Space Quest 3 already,
that's why I don't see a reason to add a game option right now.
2017-09-25 00:44:04 +02:00
Colin Snover 53dd55ebf2 SCI32: Fix bad palettes in Lighthouse when HQ video is enabled
In a couple of places, Lighthouse updates the renderer with screen
items for the next room before the room transition video plays.
This is normally fine when using the compositing video renderer
because the videos are drawn into new planes which occlude the
screen items, so the screen items are culled from the draw list
and do not submit their palettes. However, when in HQ video mode,
we currently force the overlay renderer, which was not blocking
screen items before forcing a frameOut, so the screen items'
palettes got submitted prematurely in this case and caused bad
rendering after the video finished playback.

Now, if we are forcing into the overlay code path, we still create
a blank plane behind the overlay before the forced frameOut in
order to correctly occlude screen items and keep them from
participating in rendering before they normally would.

Fixes Trac#10233, Trac#10235.
2017-09-24 16:22:40 -05:00
Martin Kiewitz 26183f7289 SCI: Add SQ4CD script patch to add audio for universal remote control
for Hk So Good store catalog.
Implements enhancement #10227
2017-09-24 19:00:12 +02:00
Colin Snover d73ada9088 SCI: Fix generation of save games 2017-09-24 11:12:45 -05:00
Colin Snover fcf707e20a SCI32: Flush stub RAMA save game to disk
If this is not done and the file is buffered, it will not show up
in the list of save games, and the new save will fail.
2017-09-23 21:39:58 -05:00
Colin Snover d2364cb9bb SCI32: Fix bad data cube text priority calculation in RAMA 2017-09-23 20:57:04 -05:00
Colin Snover f83c61fcb6 SCI32: Fix relocation of locals in SCI3
Somehow, up until trying to view an encrypted data cube in RAMA,
the missing relocation of locals did not seem to cause any trouble
in any of the other SCI3 games.
2017-09-23 20:57:03 -05:00
Colin Snover 643a572610 Revert "SCI: Fix Warnings about Copy Constructor Failing to Call Base Class."
This reverts commit d2dd942ad7.

The Serializable class is an interface class and has only the
empty default copy constructor. There is no reason to call this
explicitly. Whatever is warning about this should be fixed to stop
warning about it, rather than adding such unnecessary calls to the
engine code.
2017-09-23 20:57:03 -05:00
Colin Snover dced2fb9f5 SCI32: Fix handling of array copies
kArrayCopy would perform an unnecessary memory copy of the source
array, the treatment of the count value as unsigned was clearly
not correct since it was being sign-extended and checked against
-1.
2017-09-23 20:57:03 -05:00
Colin Snover 6972c9ae46 SCI32: Fix bad default text scaling in RAMA 2017-09-23 20:57:02 -05:00
Colin Snover 602de8363b SCI32: Fix infinite reload in RAMA when loading from launcher 2017-09-23 20:57:02 -05:00
Colin Snover 9c28c25b67 SCI32: Add guest additions save/restore support for RAMA 2017-09-23 20:57:01 -05:00
Colin Snover 475bb5f91a SCI32: Remove unnecessary use of strncmp
One of the strings is a static string of the same size as the size
passed to strncmp so there is no point in not just using strcmp.
2017-09-23 20:57:01 -05:00