Commit graph

130604 commits

Author SHA1 Message Date
Le Philousophe
7294f8be1c GUI: Remove useless widget 2022-09-30 23:43:43 +02:00
Lothar Serra Mari
36ca348bb5 NEWS: Revert putting Toon news in 2.6.1. I misread the commit. 2022-09-28 09:08:00 +02:00
Lothar Serra Mari
130b28730a NEWS: Add stub for 2.6.1 NEWS section 2022-09-28 05:56:35 +02:00
sluicebox
085aab72a6 SCI: Add detection entry for SQ1VGA 2.1 fan patch
Ticket #13634
2022-09-27 16:55:46 -04:00
athrxx
745ca57311 SCI: (FPFP/Demo) - fix bug no. 12610
("hanging MIDI notes")

The original interpreter resets the channels more often than we do
in the remap function. The assumption apparently was that the
loop at the very end of the function would catch everything. But
it does not catch the dontRemap channels if they are not within
the _driverFirstChannel/_driverLastChannel range.
If more bugs like this come up it might be necessary to add even
more resets, but I am very reluctant about unnecessary changes
to the remap function. And this code has been around for a long
time without any other bug reports of this sort. So I think we have
reason to be optimistic about it.
2022-09-27 16:55:46 -04:00
sluicebox
e3a7d4fe6e SCI32: Fix QFG4 scripts that consume extra projectiles
Fixes bug #13823
2022-09-27 16:55:46 -04:00
sluicebox
19ca44e07f SCI: Remove unused code from soundcmd.h 2022-09-27 16:55:46 -04:00
Zvika Haramaty
f5059a7f84 SCI32: Make RTL BiDi conversion direction hard coded
The default behaviour for `Common::convertBiDiString` is to use
BIDI_PAR_ON for direction, which means that it tries to guess to
paragraph language, and choose the direction according to it.

However, in SQ6 many (all?) texts begin with control characters,
which make that function to think that these are English texts,
and therefore it chooses LTR direction, and punctuations are wrongly
placed.

Since the call to the function is under `if` clause for RTL,
it's safe to hard code that direction.
2022-09-27 16:55:46 -04:00
athrxx
be4343b51e SCI: fix bug no. 11683 ("QFG2 - Heavy reverb from city street sounds ...") 2022-09-27 16:55:46 -04:00
sluicebox
8276bad5e4 SCI: Fix QFG3 Laibon Teller options
This is a follow-up to the script patches for the dead-end event
bugs in the Laibon's hut: 6e743a97ef

Those patches had the unintended side effect of allowing two dialogue
options during an event where they shouldn't be available. Now their
logic is updated to match the other patches so that they only appear
during their intended event.

Fixes bug #13748
2022-09-27 16:55:46 -04:00
sluicebox
a17915cbef SCI32: Implement accurate kMulDiv calculations
kMulDiv's behavior now matches SSCI and produces the same results.

Fixes LSL7 motion ocean, bug #10270
2022-09-27 16:55:46 -04:00
sluicebox
71a269afa1 SCI32: Fix modulo opcode in SCI2.1Late and SCI3
Fixes LSL7 ocean motion, bug #10270
2022-09-27 16:55:46 -04:00
sluicebox
71967f6d30 SCI32: Fix kDoSoundPause sample behavior in LSL6HIRES
Fixes bug #13555
2022-09-27 16:55:46 -04:00
sluicebox
680929f807 SCI: Disable volume reset on fan games
Also, add a patch for another variant of the volume slider bug in fan games.

Fixes bug #13795
2022-09-27 16:55:46 -04:00
sluicebox
5b72be7de4 SCI: Update KQ4 1.003.006 entry with original files 2022-09-27 16:55:46 -04:00
sluicebox
1629fc5ee2 SCI: Fix previous LB2 CD script patch 2022-09-27 16:55:46 -04:00
sluicebox
24ad186b95 SCI: Fix LB2 CD Wolf and O'Riley actor loops 2022-09-27 16:55:45 -04:00
sluicebox
c9c151c35c SCI: Fix LB2 error when clicking dagger case 2022-09-27 16:55:45 -04:00
sluicebox
c75b4665d9 SCI: Fix LB2 museum music script bugs 2022-09-27 16:55:45 -04:00
sluicebox
4785b06e33 SCI: Fix kDoSoundFade SCI1+ behavior when sound not playing
In SCI1 and later, kDoSoundFade does not test a sound's status.
Incoming fade properties are applied regardless of whether the
sound is playing and kDoSoundFade does not set the signal.

The code that's been doing this was added and updated in 2010
for ICEMAN and LSL3. Now it's only applied to SCI0 calls.
e41874c91d
f743468ec7

Verified in QFG2 1.000, JONES CD, and LB2 CD.

Fixes scenes in LB2 where multiple songs occasionally play at the
same time due to broken fade-outs. Hiding behind the tapestry
during a meeting is the one that occurred the most consistently.
Related to bug #6462
2022-09-27 16:55:45 -04:00
sluicebox
b5f7445062 SCI: Set correct SCI1.1 fade-complete signal value
As the comment says, the signal value is 0x00fe.

Verified in LB2 CD interpreter.
2022-09-27 16:55:45 -04:00
sluicebox
1f67f23e13 SCI: Add name filtering to functions debug command 2022-09-27 16:55:45 -04:00
eientei
ed8ba1d3cc SCI: Add detection for QFG2 v1.105 (5x5.25") 2022-09-27 16:55:45 -04:00
sluicebox
822c0ed644 SCI: Add entry for LB2 French fan translation 2022-09-27 16:55:45 -04:00
treloret
6cf2ac17f9 SCI: Added detection for SCI fanmade games and removed unused gameid 2022-09-27 16:55:45 -04:00
sluicebox
61b3926dd1 SCI: Add speed_throttle debug command
Allows testing the speed throttler for possible improvements
and to demonstrate what it affects and what it doesn't.

`speed_throttle 0` disables kGameIsRestarting throttling.
(Except for game-specific workarounds.)

This command is possible due to several recent cleanups of other
throttling mechanisms that overlapped and were absorbed by this one.
2022-09-27 16:55:45 -04:00
sluicebox
58006e8986 SCI: Document kGameIsRestarting speed throttler 2022-09-27 16:55:45 -04:00
sluicebox
90d2473c03 SCI: Fix "You wins" message in PQ1 poker 2022-09-27 16:55:45 -04:00
sluicebox
d813ccf6ce SCI: Fix LB2 CD interrupted introduction music 2022-09-27 16:55:44 -04:00
Omer Mor
f2cc736626 SCI: Improve King's Quest 4 detection entries 2022-09-27 16:55:44 -04:00
sluicebox
b21af7531f SCI: Restrict kGetEvent throttling to fast cast mode
In 2010 a 10 ms delay was added to every kGetEvent call to prevent
maxing out the CPU when some games display message boxes:
b0b4ddcc52

This rapid kGetEvent polling is called fast cast and it only exists in
SCI1.1 games and some SCI1 games. It occurs in an inner loop when the
fast cast global is set.

Now the workaround is only applied to fast cast games and only when the
kGetEvent polling occurs.

Removing this 10 ms delay from every SCI16 game cycle doesn't change
game speed by itself because the larger dynamic throttling in
kGameIsRestarting has been absorbing the 10 ms. But this does make the
other throttles easier to understand and work with, and solves minor
edge cases where delays from multiple kGetEvent calls add up.
2022-09-27 16:55:44 -04:00
sluicebox
133d3fc6d4 SCI: SciEngine was accessing itself through globals 2022-09-27 16:55:44 -04:00
sluicebox
7a33be2c2b SCI: Include all music fade flags in save files
fadeSetVolume and fadeCompleted are used by the fade timer to signal
SoundCommand::processUpdateCues() that there is work to be done.
By not syncing them, if a save occurs after a fade completes but before
it's processed then the game won't see the completed fade when loading.
This can happen when the game is paused because the user has brought up
the game's menu bar or control panel in order to save a game. The fade
completes while the UI is displayed, then a save occurs, and then the
fade is processed after the UI is dismissed.

Now completed fades are processed when loading.

Fixes bug #7073 in KQ6 where saving in the Land of the Dead while
Alexander dismounts Night Mare results in a softlocked save.

Fixes bug #13546 in LSL6HIRES where saving while music fades from
a previous room results in a save that doesn't play the new music.
2022-09-27 16:55:44 -04:00
sluicebox
a91aaf636f SCI: Fix kDoSound redundant fade detection
Fixes two discrepancies in redundant fade detection that were discovered
while investigating LONGBOW bug #13674:

- MusicEntry::fadeTo was altered even when the fade was ignored
- Redundant fades are allowed in SSCI when the stopOnFade flag is passed
2022-09-27 16:55:44 -04:00
athrxx
0b939ca64f SCI: (SCI1+) - improve channel sound flag handling
This cleans up some things I noticed when I implemented the mute flag handling. It removes the hack that manually forces flag 2 on all channels with number 9, regardless of the device.
I presume the hack was done for the earliest SCI 1 games, due to improper handling of flag 1.
2022-09-27 16:55:44 -04:00
Donovan Watteau
277ad722b1 TOLTECS: Fix unaligned access in Screen::addAnimatedSprite()
Use READ_LE_UINT16 instead of FROM_LE_16 to avoid unaligned memory
access, as seen on OpenBSD/loongson (mips64el) where it would SIGBUS
when trying to play the demo.

(cherry picked from commit 980b693a6c)
2022-09-27 17:37:12 +02:00
Matthew Duggan
934c209dc6 ULTIMA8: Fix possible crash on autosave
Because autosave can be triggered at any time, there may be empty lists present
in the engine.  Avoid crashing if the UCList is empty.  Should fix bug #13852.
2022-09-27 17:51:06 +09:00
Matthew Duggan
478bb3214c ULTIMA8: Fix incorrect Rect clipping bottom calculation
When minimap was moved off the screen, the crosshair was incorrectly was drawn
over the whole height of the minimap.  This fixes bug #13850.
2022-09-27 09:34:33 +09:00
Einar Johan Trøan Sømåen
39f1c5299c
TINSEL: Fix wrong mapping of IO_-attributes
1839780513 made a mistake by
confusing the IO-attributes with the non-IO_-attributes,
as there is a difference in the order of the flags between
these two sets.

Fixes bug: https://bugs.scummvm.org/ticket/13810
2022-09-25 21:07:06 +02:00
Carlo Bramini
26f0fab159 BACKENDS: OPENGLSDL: Fix corrupted graphics.
Size of the alpha channel is not set to its default value and this caused totally corrupted graphics on my PC.
See:
https://bugs.scummvm.org/ticket/13712
2022-09-12 13:59:19 +02:00
antoniou79
2d80664147 BLADERUNNER: Fix swap argument so as to swap all entries 2022-09-04 18:02:47 +03:00
Le Philousophe
b3ee4b75b6 ANDROID: Convert mouse coordinates between screen ones and virtual ones
In 2D graphical backend it's handled in the WindowedGraphicsManager
which we inherit from through OpenGLGraphicsManager
2022-08-20 17:05:38 +02:00
Dominik Kreutzer
5bd3ee86fe SCUMM: DiMUSE: Fix unaligned map access
The map in IMuseDigiDispatch can contain unaligned blocks if it
contains a TEXT block with a length not divisible by four. This causes
unaligned memory accesses in a few places.

This commit fixes the issue by ensuring only aligned pointers are typed
as `int32 *` while unaligned pointers are typed as `uint8 *` and are
only accessed through helper functions.
2022-08-19 18:16:46 +02:00
AndywinXp
d65891a321 SCUMM: DiMUSE: Prevent crashes if a .SOU/.BUN file can't be found 2022-08-13 11:58:24 +02:00
antoniou79
0822a396d4 BLADERUNNER: CUTCONTENT: Skip Runciter quotes 1670 and 1680 in DEU version 2022-08-07 21:03:39 +03:00
sluicebox
48fb69b976 VIDEO: Fix QuickTime regression with mediaTime and dithering
Fixes an error when playing a QuickTime video that has a mediaTime set
on its first edit. This was caused by mediaTime changes in:
ef184a6cef

Those changes buffered frames during initialization so that the keyframe
and other frames don't play instead of the intended start frame that
mediaTime specifies. My mistake was that decoding isn't allowed during
VideoDecoder::loadStream(); VideoDecoder::setDitheringPalette() requires
that no frames have been decoded yet, and at least Director and Mohawk
call that.

Now the initial mediaTime buffering is delayed until the first decode.

Fixes bug #13479 where certain Myst videos error.
Fixes the opening movie in the Director game Chop Suey.
2022-08-06 16:48:34 -04:00
sluicebox
ad623969d5 SCI: Show all palette cycles on PQ1, PQ3 tile screen
Fixes the police lights on the title screens of each game.
Only one of every eight frames in the palette cycle was appearing.

Thanks to @eriktorbjorn for reporting this
2022-08-06 16:48:24 -04:00
sluicebox
ff859c2e4d SCI: Fix SQ5 WD40 missing messages 2022-08-06 16:48:06 -04:00
sluicebox
4fa236b9c8 SCI: Fix SQ5 WD40 tunnel entrance lockup
Fixes bug #9988
2022-08-06 16:47:59 -04:00
sluicebox
afa661cf57 SCI: Reset palette cycling when loading games
Fixes frozen palette animation when loading from within the engine
2022-08-06 16:47:51 -04:00