Commit Graph
7940 Commits
Author SHA1 Message Date
Colin Snover 121718c50d SCI32: Remove ADGF_TESTING flags for release 2017-11-23 16:54:12 -06:00
Colin Snover cac4dfe8e4 SCI32: Add Phantasmagoria IT detection entry
Fixes Trac#10157.
2017-11-19 22:07:58 -06:00
Colin Snover 511ff64c39 SCI32: Add KQ7 1.51 FR detection entry
Fixes Trac#10301.
2017-11-19 22:07:57 -06:00
Colin Snover 617497d094 SCI: Fix UB shifting negative integers 2017-11-19 12:48:14 -06:00
Colin Snover e6228f3ff6 SCI32: Fix integer overflow calculating audio duration
Due to the need to calculate the audio duration with millisecond
precision from the file size, it is possible to overflow a 32-bit
integer in games with long background audio loops, like RAMA,
during the calculation of the duration.

It is also not necessary to give some framerate here, so eliminate
the unnecessary explicit Timestamp construction with the second
argument.
2017-11-11 20:18:17 -06:00
Colin Snover 37459bc6c1 SCI: Fix UB in SegManager memcpy/strcpy operations
Passing overlapping buffers to C standard library memcpy, strcpy,
and strncpy is undefined behavior. In SSCI these operations would
perform a forward copy, and most stdlib implementations do the
same, but at least newer Linux glibc on x86 copies bytes in
reverse, so just using the standard library on this platform
results in broken output.

Because SSCI used a blind forward copy instead of memmove for
overlapping copy operations, this patch implements an explicit
forward copy to ensure that overlapping copies continue to operate
the same as in SSCI.

This fixes the Island of Dr. Brain v1.1 flamingo puzzle
(script 185, flamingos::init, localCall 4c3) on platforms that do
not perform forward copy in memcpy/strcpy/strncpy.

Thanks to @moralrecordings for research on this bug and an initial
patch using memmove.

Closes gh-1034.
2017-10-29 13:18:37 -05:00
Willem Jan Palenstijn 9030b09ecc SCI: Allow lofsa string printing in disasm for all SCI versions 2017-10-21 19:13:38 +02:00
Willem Jan Palenstijn fab43f0f71 SCI: Fix offsets in disasm for multi-param opcodes
This code was assuming that retval points to the start of the next
instruction, which is only true if the current parameter is the last
one. This fixes op_call printing.
2017-10-21 18:55:40 +02:00
David Fioramonti ce052fbef4 SCI32: Fix cursor color when quitting for phant1
When quitting the game at the main menu and hitting no
or quitting the game while playing the cursor color
over the buttons will be tan the first time rather
than red. This fix makes it so it will be red.

This was done by removing a check in HotSpot::doit()
which checks the global193 value. Removing this check
fixes the problem.

Fixes Trac#9977.

Thanks snover and wjp for your help.
2017-10-16 19:37:36 -05:00
Colin Snover e26a677f62 SCI32: Tell OSystem to show/hide cursors as appropriate
This is needed so that the system cursor can be appropriately
hidden outside the game's draw area, to match the normal behaviour
of ScummVM.
2017-10-15 19:03:09 -05:00
Colin Snover bb02d730b4 SCI32: Fix crash restoring save from endgame of RAMA
Fixes Trac#10263.
2017-10-08 19:25:54 -05:00
Martin Kiewitz bd94bbc3e3 SCI: Add QfG4 script patch to fix sliding down slope bug #9801
It's quite difficult to patch. I hope this finally solved it.
2017-10-09 01:58:16 +02:00
Martin Kiewitz 870cd80202 SCI: Crazy Nick's Larry workaround bug #10184
Added this already through last commit by accident
Was supposed to get added by this.
Workaround for reading uninitialized temp game bug.
2017-10-08 20:54:59 +02:00
Martin Kiewitz 656de5e360 SCI: Restrict some workarounds to certain temps
Also add a bit more documentation / Fix some documentation
2017-10-08 20:52:48 +02:00
Martin Kiewitz 60c2c2867c SCI: Change index inside workaround tables to an index range
So that one can specify an entire range of temp variables
by using just one single entry.
2017-10-07 22:11:25 +02:00
Colin Snover 7d037495be SCI: Use explicit indexes in castlebrain/islandbrain word search workarounds 2017-10-07 14:50:21 -05:00
Colin Snover 1b669d2489 SCI: Add workaround for uninitialized reads in Island of Dr Brain
Leaning on the enter key during a word search puzzle will trigger
this bug, just like in Castle of Dr Brain.
2017-10-07 14:46:01 -05:00
Colin Snover 432fd522d2 ENGINES: Remove default1x scaler flag
This flag is removed for a few reasons:

* Engines universally set this flag to true for widths > 320,
  which made it redundant everywhere;
* This flag functioned primarily as a "force 1x scaler" flag,
  since its behaviour was almost completely undocumented and users
  would need to figure out that they'd need an explicit non-default
  scaler set to get a scaler to operate at widths > 320;
* (Most importantly) engines should not be in the business of
  deciding how the backend may choose to render its virtual screen.
  The choice of rendering behaviour belongs to the user, and the
  backend, in that order.

A nearby future commit restores the default1x scaler behaviour in
the SDL backend code for the moment, but in the future it is my
hope that there will be a better configuration UI to allow users
to specify how they want scaling to work for high resolutions.
2017-10-07 12:30:29 -05:00
Martin Kiewitz 83436e685f SCI: Improve Larry 1 Spanish script patch
So that it also works even when the patch files are missing.
2017-10-07 19:06:16 +02:00
Martin Kiewitz eb1f9030a7 SCI: Add script patch for Larry 1 Spanish bug #10240
Fixes buying an apple from man wearing a barrel, who walks
around in front of the casino.
2017-10-07 18:56:29 +02:00
Martin Kiewitz 54cac32003 Revert "SCI: Add workaround for uninitialized reads in Island of Dr Brain"
This reverts commit ae8e4fa8e9.

This change is wrong in any case. It should be specific to temp
14+15 at the very least. I also did not get an answer on what
is actually happening internally. That's not how we should
add workarounds. My review was also still pending.
2017-10-07 11:25:12 +02:00
Colin Snover ae8e4fa8e9 SCI: Add workaround for uninitialized reads in Island of Dr Brain
Leaning on the enter key during a word search puzzle will trigger
this bug, just like in Castle of Dr Brain.
2017-10-07 00:56:00 -05:00
David Fioramonti ec1cfcbf47 SCI: Add workaround for uninit read during wordsearch in castlebrain
During the wordsearch puzzle (room 320 click left door) the
game will crash because of an uninitalized read of temp
variables in word::dispatchEvent (which gets called a lot),
if the player clicks the same letter or different letters
aggressively or holds down the enter key.

Fixes Trac#9783.
2017-10-07 00:56:00 -05:00
Colin Snover c7c5f28bdb SCI32: Clean up scriptWidth/scriptHeight/screenWidth/screenHeight
This removes the unnecessary Buffer subclass and stops most places
where the output buffer was being interrogated about dimensions
instead of GfxFrameout.
2017-10-06 22:56:26 -05:00
Colin Snover d53e778739 SCI32: Rewrap comments to 80 columns in SOL decoder 2017-10-06 22:56:26 -05:00
Colin Snover 15f6e6b97e SCI32: Remove resolved TODO in helpers.h 2017-10-06 22:56:25 -05:00
Colin Snover 8c9276e75a SCI32: Clean up script patch comments 2017-10-06 22:56:25 -05:00
Colin Snover ce13b1699a SCI32: Clean up Robot decoder
* Rewrap comments to 80 columns
* Clarify comments where possible
* Remove resolved TODOs
2017-10-06 22:56:25 -05:00
Colin Snover b6c3f0f547 SCI32: Clean up CelObj
* Rewrap comments to 80 columns
* Clarify comments where possible
* Use smart pointers where appropriate
* Change view/pic flags detection to always use word-size
  (byte-size check for flag 0x80 was a compiler optimisation)
2017-10-06 22:56:24 -05:00
Colin Snover ac0a83a424 SCI32: Clean up GfxControls32
* Rewrap comments to 80 columns
* Clarify comments where possible
* Fix whitespace errors
2017-10-06 22:56:24 -05:00
Colin Snover d5e09a9f68 SCI32: Rewrap comments to 80 columns in lists32.h 2017-10-06 22:56:13 -05:00
Colin Snover 4521e9774a SCI32: Clean up GfxPaint32
* Rewrap comments to 80 columns
2017-10-06 22:11:03 -05:00
Colin Snover 31e1d0932c SCI32: Clean up Plane
* Rewrap comments to 80 columns
* Clarify comments where possible
2017-10-06 22:11:03 -05:00
Colin Snover 1b42146955 SCI32: Clean up GfxRemap32
* Rewrap comments to 80 columns
* Clarify comments where possible
2017-10-06 22:11:03 -05:00
Colin Snover a2c8674252 SCI32: Clean up GfxText32
* Rewrap comments to 80 columns
* Clarify comments where possible
2017-10-06 22:11:02 -05:00
Colin Snover 42180527c4 SCI32: Fix music volume not being restored after speech in Torin
This was a regression introduced by
d556dcc57b.
2017-10-06 22:11:02 -05:00
Colin Snover 93c8044f69 SCI32: Clean up Audio32
* Rewrap comments to 80 columns
* Remove resolved TODOs
* Use containers and smart pointers where appropriate
2017-10-06 22:10:52 -05:00
Colin Snover f51b158f8c SCI32: Clean up GfxFrameout
* Rewrap doxygen comments to 80 columns
* Swap public/private sections so public APIs come first
* Clarify comments where easily possible
2017-10-06 22:10:51 -05:00
Colin Snover c413030be3 SCI32: Clean up Video32
* Rewrap comments to 80 columns
* Clarify comments where appropriate
2017-10-06 22:10:51 -05:00
Colin Snover 9d05bf7920 SCI32: Clean up GfxCursor32
* Rewrap doxygen comments to 80 columns
* Renamings for clarity
* Deduplicate copy/paint code
2017-10-06 22:10:51 -05:00
Colin Snover ff3503abde SCI32: Clean up GfxTransitions32
* Use containers where appropriate
* Re-wrap doxygen comments to 80 columns
* Clarify comments for parts of the engine that are understood now
  but were not understood at the time of the initial
  implementation
2017-10-06 22:10:50 -05:00
Colin Snover 0ac5d84062 SCI32: Clean up ScreenItem
* Rewrap comments to 80 columns
* Clarify comments where possible
* Use smart pointers where appropriate
2017-10-06 22:10:50 -05:00
Colin Snover 5cffa3891f SCI32: Clean up GfxPalette32
* Replace raw pointers with smart pointers
* Use references instead of const pointers where appropriate
* Tweak initialisation
* Tweak palette copies to the stack
2017-10-06 22:10:50 -05:00
Ruud Klaver 6843870af2 SCI: Set default MT-32 reverb before each sound
Set the default reverb configuration present in either the MT-32
patch data or MT32.DRV of SCI0 games before playing each sound, as
a previously played sound may have changed it.

Also, do not perform a general reverb init, since the start of a
sound will do that now.

Closes gh-1023.
2017-10-04 23:47:21 -05:00
Ruud Klaver cedd9d3c40 SCI: Play MIDI version of SCI0 sound resource if user prefers it
If the user has "Prefer digital sound effects" disabled for a SCI0
game, do not play the digital sample version of a sound resource, if
such data is present. When the resource has only digital sample data
and no MIDI information, play the sample instead.

Closes gh-1022.
2017-10-04 23:29:38 -05:00
Colin Snover 90036a56f8 SCI32: Speed up memory check counter in lighthouse in Lighthouse 2017-10-04 00:27:18 -05:00
Colin Snover 08f501117b SCI32: Give more specific game version numbers 2017-10-04 00:27:18 -05:00
Colin Snover 60bdb7936f SCI: Fix disassembly of 32-bit addresses 2017-10-04 00:27:18 -05:00
Colin Snover 2203386ce6 SCI32: Fix audio dumper decompressed size calculation for 16-bit audio 2017-10-03 18:56:35 -05:00
Colin Snover 88cd54c057 SCI32: Restore gameplay time in RAMA
This will cause non-linear time shifts in the system timer that
the game's custom save logic may not expect, but in initial testing
the game doesn't seem to care about this.

Fixes Trac#10259.
2017-10-03 18:56:35 -05:00