Age | Commit message (Collapse) | Author |
|
Fixes lockup in original game, bug #10767
|
|
Fixes missing points in english pc floppy version, bug #10763
|
|
The array used for the trap machine's messages outside Dr. Cranium's
lab is set correctly now. Fixes bug #10766.
|
|
Fixes 20+ lockups in the original game, bug #10733
|
|
|
|
This game uses an external DLL, PENGIN16.DLL, which is invoked via
kWinDLL. We need to reverse the logic in PENGIN16.DLL and call it
directly, in order to get this game to work properly. Until then, this
game entry will be disabled.
|
|
|
|
It's the only game included, so there's no point showing the game
selection menu in this case. This follows the behavior of the original
|
|
|
|
Fixes a persistence bug in original game
|
|
Uninitialized param1 read when showing iconbar with inventory item
|
|
|
|
It was already possible to override the stretch mode per game
in the options dialog, but this was ignored when starting the
game from the launcher due to this bug.
|
|
Fixes bug #10761
|
|
Fixes wrong and missing messages in DOS version
|
|
Warning: breaks compatibility with previous savefiles.
They were mostly broken anyway, locking any NPC who
waited for kActionEndSound when savefile was created.
|
|
If Cath stands near the beginning or the end of a car,
looks at a door, and a NPC opens this door,
the volume of train noise is temporarily raised.
Controlled by variables SoundManager::_data{0,1,2},
renamed to be not so mysterious.
|
|
|
|
The English version has both DOS and Windows datafile versions,
but localized variants of GK1 are DOS only, so this is not a valid
entry.
This entry has duplicate detection checksums to the equivalent
DOS entry and was originally added as a workaround which should now not
be necessary.
|
|
This is mainly to aid investigation of bug Trac #6310.
|
|
The _gfxScreen instance is nullptr for SCI32 games, thus this console
command previously caused a segfault.
|
|
|
|
On iOS12 at least, the rotation did not force the keyboard to hide. This
fix will force it to be retracted in landscape and restored when
rotating back to the portrait position.
|
|
Loading from the GMM during the prolog resulted in the mouse cursor
getting stuck hidden and possibly other game state issues, so best to
disable loading in these cases as already was done for saving.
This fixes bug Trac #10746.
|
|
|
|
Refactoring, no changes in behaviour.
|
|
|
|
|
|
Currently translated at 100.0% (1000 of 1000 strings)
|
|
Now it works just like in the original game,
including fading where it is applicable
(e.g. in a passengers list if closing the list while a sound is playing).
By the way, p2s sequence is known as http://oeis.org/A000265 ,
p1s is 4 - A007814, and p2s[i]/2**p1s[i] is just i/16.
It is time to get rid of these arrays.
|
|
Currently translated at 100.0% (1000 of 1000 strings)
|
|
Not very obvious, but noticeable e.g. when knocking on harem doors.
I suppose this is the problem that wiki describes
as "improper triggering of actions on sound end".
|
|
This is replaced by the global "all" option for debugflags and defining
this triggers a warning about the conflict at runtime.
|
|
The SoundFlag type is an enumeration which have a default underlying
type of unsigned int in most case.
Thus comparing this to -1 causes a compiler warning. Since the default
entity sound flag type is 0xFFFF... which is equivalent to -1, then
replacing this with the correct enum symbol fixes the issue and should
result in the correct behaviour. Examination of the resulting code line
seems to confirm that this is the correct expected logic.
|
|
The backend runs its own sound thread anyway,
with the corresponding bookkeeping that we use.
We don't need yet another sound thread,
and it is always nice to not have something
that could change our structures from underneath us.
|
|
SoundEntry::play() calls StreamedSound::setFilterId(),
StreamSound::setFilterId() requires the underlying reference to be alive.
SoundQueue::handleTimer() checks that the stream is still alive
by calling SoundEntry::isFinished(). However, if the stream is finalized
just between calls to SoundEntry::isFinished() and SoundEntry::play(),
the sound mixer frees the stream leading to use-after-free in setFilterId().
Turn off the automatical disposing, delete the stream in SoundEntry::~SoundEntry().
|
|
|
|
Fixes a lockup in the original game
|
|
|
|
instance
|
|
This fixes a crash due to concurrent access to the global MemoryPool
used by the String class when String objects are used simultaneously
from several threads (as is for example the case when enabling the
cloud features).
See bug #10524: Thread safety issue with MemoryPool
|
|
Some feature, such as mutexes, are only available once the backend
has been initialized. This new function can be used to avoid using
those feature too early or too late.
|
|
Merge SoundFlag and SoundStatus into a single enum;
SoundEntry::setupStatus just casts one to another.
Keep only definitions of bits in SoundFlag; drop compound flags
like kFlagSteam = kSoundTypeAmbient | kSoundFlagLooped | kVolume7,
use ORed simple flags in calls; change the signature
of SoundManager::playSoundWithSubtitles to use uint32
instead of SoundFlag to avoid excess casting.
Add meaningful names to flags; add some comments.
Get rid of endian-unsafe SoundStatusUnion.
Fixes an issue with big-endian hosts.
No changes in behaviour on little-endian hosts.
|
|
Fixes a lockup in the original game
|
|
Wrong enum member used: (status & 0x7000000)
should be checked against 0x3000000, not against 3
(this is a check of sound type to skip menu sounds in savefiles).
Activate delay should not be compared with sound volume;
comparison with 0x8000000 is just a sanity check against overflow.
|
|
|
|
|
|
This fixes bug Trac #10739.
|
|
This fixes bug Trac #10740.
|
|
Some games, especially fangames appear to blit to co-ordinates outside
the screen area, which caused an assertion in the graphics backend.
To prevent this and allow further debugging in these cases, we clamp
this to the screen area. Note that there are several other locations
which do backend graphics calls, so this may need to be applied
elsewhere in the general case.
This fixes bug Trac #10736.
|