Commit Graph

88548 Commits

Author SHA1 Message Date
Walter Agazzi
4a2d55cac8 MOHAWK: Improve detection for Myst Demo
Fixes clash with Return to Zork demo
2022-12-01 14:18:15 +01:00
Walter Agazzi
1831433665 DRAGONS: Open GMM when choosing options
Open GMM when choosing "options" in the main menu, instead of
 bouncing back the selection
2022-12-01 11:59:48 +01:00
Eugene Sandulenko
fb7095f5a4
COMMON: Move all compression-related files to a separate directory 2022-12-01 11:53:02 +01:00
Eugene Sandulenko
a92315368a
DIRECTOR: LINGO: Update screen during script execution
This ensures that cursor is updated and is smooth
2022-12-01 10:32:46 +01:00
Eugene Sandulenko
cf3a452b32
JANITORIAL: Whitespace fix 2022-12-01 10:32:46 +01:00
Eugene Sandulenko
7e52767267
DIRECTOR: LINGO: Allow built-ins to be overridden
A good example of it is Panic Parc demo, where the setProp built-in
gets redefined
2022-12-01 10:32:43 +01:00
Misty De Meo
627e18b3aa
DIRECTOR: add Trans mac/win 2022-11-30 19:51:26 -08:00
D G Turner
d1c227f3f2 SCUMM: Fix Signed vs. Unsigned GCC Compiler Warning 2022-12-01 03:33:31 +00:00
Walter Agazzi
6067c107b6 AGS: Add detection for recent games 2022-12-01 03:00:54 +01:00
Vladimir Serbinenko
489d83c76d MADS: Switch MpsInstaller archive to MemcachingCaseInsensitiveArchive 2022-12-01 01:52:46 +01:00
Vladimir Serbinenko
2521169a7b DREAMWEB: Switch RNCA archive to MemcachingCaseInsensitiveArchive. 2022-12-01 01:52:46 +01:00
Vladimir Serbinenko
81040b5d20 COMMON: Make memstream support SharedPtr-backed array
This allows to safely implement archive contents caches.

The change to lilliput is needed to allow to keep move-constructot
semantics of ScriptStream which would otherwise disappear because
DisposablePtr is non-copyable
2022-12-01 01:52:46 +01:00
eientei
a49e473fe9 DIRECTOR: JANITORIAL: Spelling fixes in comments 2022-12-01 01:18:11 +01:00
eientei
6fd98e2e34 DIRECTOR: Workaround in hasLoopBounds where start can be != 0 and end = 0 2022-12-01 01:18:11 +01:00
eientei
6fa3ac0774 DIRECTOR: Also look for XFCNs here; probe the initial movie for xobjs as well 2022-12-01 01:18:11 +01:00
eientei
0504d2c859 DIRECTOR: Fix Gestalt IDs 25 and 27 being mixed 2022-12-01 01:18:11 +01:00
eientei
34bee0ebd7 DIRECTOR: Add lingo patches for AmandaStories (Win) and Smile! (v1.1) 2022-12-01 01:18:11 +01:00
eientei
c3d935d197 DIRECTOR: JANITORIAL: lingo-patcher whitespace cleanups 2022-12-01 01:18:11 +01:00
eientei
f600f2e45b DIRECTOR: lingo-builtins: Look for XFCNs in files; Correctly decode alerts; Fix for >2 preload arguments 2022-12-01 01:18:11 +01:00
eientei
6b6a5884e7 DIRECTOR: Attempt (and fail) to give McLuhan the file it wants 2022-12-01 01:18:11 +01:00
eientei
c85129b699 DIRECTOR: Many, many detection entries 2022-12-01 01:18:11 +01:00
eientei
c616314c65 DIRECTOR: Add ispippin xlib for Circus! (Pippin) and stubbed qtmovie xlib 2022-12-01 01:18:11 +01:00
eientei
54727fec84 DIRECTOR: Add xlibs for Yearn2Learn: The Flintstones Coloring Book 2022-12-01 01:18:11 +01:00
eientei
467c393f03 DIRECTOR: Add xobjs for Ednovation games 2022-12-01 01:18:11 +01:00
eientei
1fae93ab5a DIRECTOR: moovxobj: According to the readme, this function would have an arg 2022-12-01 01:18:11 +01:00
eientei
22da69e510 DIRECTOR: JANITORIAL: moovxobj whitespace and comment fixes 2022-12-01 01:18:11 +01:00
eientei
89bd9f4c55 DIRECTOR: Add description to cdromxobj, popupmenuxobj 2022-12-01 01:18:11 +01:00
eientei
960503b784 DIRECTOR: JANITORIAL: jitdraw3, miscx whitespace cleanup 2022-12-01 01:18:11 +01:00
eientei
e8da6eb159 DIRECTOR: JANITORIAL: fileio whitespace cleanup 2022-12-01 01:18:11 +01:00
eientei
1900f8391b DIRECTOR: Add description to fileio 2022-12-01 01:18:11 +01:00
AndywinXp
ba24698225 SCUMM: v3: Implement ability to rename savestate before loading on the original menu
As much as this seems bad design, it's a real possibility in the original interpreters, furthermore
confirmed by the menu messages which are shown when the user tries to do that, so here we are...
2022-12-01 00:04:46 +01:00
Cameron Cawley
8f6028c43d KINGDOM: Reduce the size of the static data and make it const 2022-11-30 23:30:25 +02:00
Filippos Karapetis
541a8704d6 GLK: Implement GlkMetaEngineDetection::getMD5Bytes() 2022-11-30 23:29:37 +02:00
Cameron Cawley
6506e59064 ENGINES: Add getMD5Bytes to the base MetaEngineDetection class 2022-11-30 23:29:37 +02:00
Walter Agazzi
8713f3b3b3 DRACI: Find max speech file using iterator 2022-11-30 23:19:08 +02:00
elasota
c52eaf92fc COMMON: Move Installer VISE loader from mTropolis engine to Common. 2022-11-30 23:17:47 +02:00
sluicebox
bf47637280 SCI: Remove KQ6 black widow script patch
The VM discrepancy that caused these buggy scripts to behave
differently has been fixed, so this patch is no longer needed
2022-11-30 23:13:00 +02:00
sluicebox
30fad94e9a SCI: Track correct location and size of temp variables
The VM has been treating the entire area between the frame pointer and
the stack pointer as temp variables for the current function. There are
two problems with this:

1. The VM hasn't been updating the frame pointer correctly when multiple
   methods are called within the same send/self/super instruction.
2. The VM has been recalculating the number of temp variables on every
   instruction as the difference between the two pointers.
   This is incorrect, as this changes with almost every instruction in
   ways have nothing to do with the number of temp variables allocated
   by the link instruction. Meanwhile, the VM has not been recording
   the number of variables allocated by the link instruction.

The first discrepancy caused scripts to behave differently than in SSCI
when reading parameters out of bounds in certain situations.
It also prevented our uninitialized variable detection from detecting
certain reads. The second made the temp-count used for out of bounds
detection too large, made debugger output such as `stack` incorrect,
and made stepping through the link instruction in the debugger appear
to do nothing until stepping through the following instruction.

When multiple methods are called by a send/self/super instruction, each
method's link instruction increases the stack pointer further.
Method B's variables appear after method A's. The VM has been setting
the stack pointer correctly but it kept using the previous frame
pointer, so method B would re-use method A's stack area instead of the
area the VM had just allocated for B. If a script correctly initializes
variables before using them and doesn't use out of bounds parameters or
temp variables then this discrepancy doesn't make a difference.
But a lot of scripts do these bad things and accidentally rely on the
undefined values they read.

Now we update the frame pointer correctly when "carrying over" to
subsequent method calls from the same send/self/super instruction.
This matches SSCI behavior. We also now record the number of temp
variables that have been allocated by the link instruction and use
that instead of incorrectly recalculating on every instruction.

Fixes the KQ6 black widow lockup, and other KQ6 music bugs, where
scripts call Sound:fade without the required fourth parameter.
Sound:fade expects a fourth parameter, so reads it out of bounds,
and passes it as the stop-after-completion boolean to kDoSoundFade.
Scripts that called Sound:fade as the only method in a send got the same
results as in SSCI, but scripts that called Sound:play first didn't.

Fixes bugs #5625 #5653 #6120 #6210 #6252 #13944
2022-11-30 23:13:00 +02:00
AndywinXp
82c6306443 SCUMM: Formatting 2022-11-30 21:40:13 +01:00
neuromancer
a0e816370b FREESCAPE: relocated the code that process demo inputs 2022-11-30 12:36:49 +01:00
neuromancer
3f2fd5d703 FREESCAPE: reset player height when restart game in driller 2022-11-30 12:36:49 +01:00
neuromancer
4c969c7c47 FREESCAPE: basic implementation of code that restart the game in driller 2022-11-30 12:36:49 +01:00
neuromancer
ae0620cbf4 FREESCAPE: make sure thumbnail image is always created from the screen 2022-11-30 12:36:49 +01:00
Roland van Laar
8b310f1271 DIRECTOR: Fix memory leak in sound
Delete the stream gotten from _macresman->getDataFork.

Made the stream copying more explicit by aligning the variables names
with the function logic.
2022-11-30 10:54:49 +01:00
Roland van Laar
9a6dea9466 DIRECTOR: Fix memory leaks in archive.cpp
The newly used Common::SeekableReadStreamEndianWrapper was leaking.
Setting the DisposeAfterUse to YES resolved the leaks.
2022-11-30 10:51:41 +01:00
sluicebox
ea86295e3e SCI: Update QFG3 Woo dialog script patch
Simplifies the patch and updates the description
2022-11-29 18:35:45 -08:00
elasota
2982721aa7 MTROPOLIS: Fix missing return value. 2022-11-29 19:04:47 -05:00
elasota
19a3f6ade7 MTROPOLIS: Split off VISE archive handling. 2022-11-29 18:58:13 -05:00
elasota
d8058f94f3 MTROPOLIS: VISE 3 archive improvements. 2022-11-29 18:58:13 -05:00
Eugene Sandulenko
eddfa82896
DIRECTOR: Added comment 2022-11-30 00:40:34 +01:00