Commit graph

3066 commits

Author SHA1 Message Date
Scott Percival
576cdfc180
DIRECTOR: Fix double-use-after-free in b_move 2024-06-22 15:03:36 +08:00
Scott Percival
63b885e915
DIRECTOR: LINGO: Fix string conversion of floats
Fixes save games in AMBER: Journeys Beyond.
2024-06-22 15:03:36 +08:00
Scott Percival
8c20d10e0b
DIRECTOR: Fix check for factory methods when calling
Fixes the horse screen in The Fish Who Could Wish.
2024-06-22 15:03:36 +08:00
Scott Percival
707a854668
DIRECTOR: Fix FileIO::m_displaySave 2024-06-18 23:46:44 +08:00
Eugene Sandulenko
ef58fa797b
DIRECTOR: LINGO: Plug in IniXObj
This is a JT's XObj, typically called INI.DLL. So far, we saw only
one game using it, gameid 'karma'. However, another gameid, 'www'
is using JWXINI.DLL renamed to INI.DLL

Thus, we are filtering "INI" by specific gameids
2024-06-17 21:52:46 +02:00
Eugene Sandulenko
605b339ba9
DIRECTOR: JANITORIAL: FIx whitespaces 2024-06-17 21:52:46 +02:00
Eugene Sandulenko
4049cbbf1a
DIRECTOR: LINGO: Remove redundant file entries to Xlibs
We probe .dll suffix and the filenames are case-insensitive
2024-06-17 21:52:46 +02:00
Eugene Sandulenko
96df7715e1
DIRECTOR: LINGO: Introduce filter by gameid for xlibs/xobj filenames
Currently, it is used for resolving conflict when gameid "www"
is using ini.dll for jwxini.dll, while ini.dll exists and is
used in gameid 'karma'
2024-06-17 21:52:46 +02:00
Eugene Sandulenko
c1b63ed731
DIRECTOR: Simplify code for object definition 2024-06-17 00:16:06 +02:00
Eugene Sandulenko
98367f323a
JANITORIAL: Fix code formatting 2024-06-16 01:12:02 +02:00
codengine
3704b01c46 DIRECTOR: XOBJ: Remove usage comment for "Karma" in jwxini 2024-06-16 01:07:07 +02:00
codengine
650057a5f8 DIRECTOR: XOBJ: Remove filexobj and use fileio instead 2024-06-16 01:07:07 +02:00
codengine
f8710e88dd DIRECTOR: Add detection table entry for Karma (German) 2024-06-16 01:07:07 +02:00
codengine
18b670b617 DIRECTOR: XOBJ: Add filexobj 2024-06-16 01:07:07 +02:00
codengine
07221c99b4 DIRECTOR: XOBJ: Add bimxobj 2024-06-16 01:07:07 +02:00
codengine
ec48ec243d DIRECTOR: XOBJ: Duplicate methods from inixobj in jwxini
As both xLibs use the same name (INI), this change is required for now until we have a system where the xLibs can be selected target-specific.

When this is done, this commit should be reverted.
2024-06-16 01:07:07 +02:00
codengine
362882e805 DIRECTOR: XOBJ: Add inixobj 2024-06-16 01:07:07 +02:00
codengine
46b350a804 DIRECTOR: XOBJ: Revert redundant duplicate definitions in jwxini xLib 2024-06-16 01:07:07 +02:00
Scott Percival
33c576982b DIRECTOR: Fix b_installMenu for D5 2024-06-15 02:04:30 +02:00
Scott Percival
215e5ed29a DIRECTOR: Fix crash when suspending on a "play" call
Fixes interacting with Neow-Neow in the cave in Nikolai's Trains.
2024-06-15 02:04:30 +02:00
Scott Percival
b033c63068 DIRECTOR: XOBJ: Add full stubs to MovUtils 2024-06-15 02:04:30 +02:00
Scott Percival
bdc809b0cb DIRECTOR: LINGO: Add nullptr guardrails for getMenu() 2024-06-15 02:04:30 +02:00
Scott Percival
7a33457718 DIRECTOR: Execute ancestor factory methods with the child object
Ancestor object methods can access properties that are only defined
on a child object. Yay inheritance.

Fixes the start sequence of AMBER: Journeys Beyond.
2024-06-15 02:04:30 +02:00
Scott Percival
4d10b88c4b DIRECTOR: Fix c_field to work in D5 and up 2024-06-15 02:04:30 +02:00
Scott Percival
aba127068e DIRECTOR: XOBJ: Add stubs for GenUtils 2024-06-15 02:04:30 +02:00
Scott Percival
86c5098169 DIRECTOR: Add separate execution freeze for "play" calls
According to the Director documentation, "play" acts in a very different
way to "go". Instead of freezing execution of the handler as part of the
stack, it will freeze the handler and defer it until "play done" is
called by something else. This adds a method for doing this, plus
workarounds to not impact the event processing pipeline.

Fixes picking up most of the time trumpets in Virtual Nightclub
(1580:winASWarp in shared.dxr).
2024-06-15 02:04:30 +02:00
Scott Percival
1520e3c2af DIRECTOR: XOBJ: Add abort feature to MMovie 2024-06-15 02:04:30 +02:00
Scott Percival
cfda6aaf2c DIRECTOR: Update freezing logic to match test suite
Fixes director-tests/D4-unit/T_EVNT13.DIR to T_EVNT17.DIR
2024-06-15 02:04:30 +02:00
D G Turner
91ecc66507 DIRECTOR: Remove Stray Semicolon From Lingo External File IO Library
This causes a warning if -Wpedantic is passed to GCC.
2024-06-04 01:09:40 +01:00
Krish
1a030eed61 DIRECTOR: Duplicate cast member instead of referencing the source
Command: ./scummvm --start-movie="copyToClipBoard cast" workshop
Copying and pasting a cast member twice resulted in a crash in ScummVM.
2024-06-03 14:01:15 +02:00
Krish
16234784af DIRECTOR: Fix ZoomBox not considering stage offset in desktop mode
Command: ./scummvm --start-movie="zoomBox" --debugflags=desktop theapartment-mac
Clicking on the rectangle to activate the zoomBox effect did not position the animation correctly.
2024-06-03 14:01:15 +02:00
codengine
8ba2bd4879 DIRECTOR: Add detection and support for "Wellen, Wracks und Wassermänner"
The game uses an xLib named "INI.DLL", which is very similar to the already existing jwxini (probably its just the same). The version of the xLib is 1.0.
2024-06-02 21:28:40 +02:00
Eugene Sandulenko
6476e4d4b4
DIRECTOR: LINGO: Remove leftover debug output 2024-06-01 20:44:00 +02:00
Eugene Sandulenko
33969c6128
DIRECTOR: LINGO: Revert now unneeded macro expansion 2024-06-01 16:30:21 +02:00
scemino
f14f4e32aa DIRECTOR: Add script decompiler for D2 and D3 2024-06-01 07:51:02 +02:00
scemino
67013713a7 DIRECTOR: Add lingo stepping 2024-05-31 09:12:47 +02:00
Eugene Sandulenko
9958416df9
DIRECTOR: LINGO: Simplified AST visitor code 2024-05-29 23:10:20 +02:00
Eugene Sandulenko
ccf0e5b196
DIRECTOR: LINGO: Save AST when compiling Lingo and store start/end of each node 2024-05-29 22:51:30 +02:00
Eugene Sandulenko
e5800af771
DIRECTOR: LINGO: Changed warning to debug statement for lesser noise 2024-05-28 21:34:59 +02:00
Eugene Sandulenko
93465609eb
JANITORIAL: Fix code formatting 2024-05-28 21:21:04 +02:00
Eugene Sandulenko
a4eb40bf5a
DIRECTOR: LINGO: Implement non-fatal Ligo errors
And use it in value.lingo test where syntax errors are expected
2024-05-28 21:08:19 +02:00
scemino
63a3542684 DIRECTOR: Add stepping at lingo byte codes level 2024-05-28 20:45:35 +02:00
scemino
ee77c261aa DIRECTOR: Fix script offsets in imgui 2024-05-28 20:45:35 +02:00
Eugene Sandulenko
245dc486f5
DIRECTOR: LINGO: Fix memory leak on syntax error 2024-05-28 20:30:45 +02:00
Eugene Sandulenko
285b66fa5f
DIRECTOR: LINGO: Attempt to fix memory leak on syntax error 2024-05-28 19:59:52 +02:00
Scott Percival
1ba201960b
DIRECTOR: XOBJ: Add Backdrop XObj 2024-05-28 11:49:14 +08:00
Scott Percival
81196fbced
DIRECTOR: Add patch to skip VNC loading times 2024-05-28 11:49:14 +08:00
Scott Percival
1a67f0e114
DIRECTOR: XOBJ: Disable gzip on MMovie saves 2024-05-28 11:49:14 +08:00
Scott Percival
ff7cdff562 DIRECTOR: Ensure channel sprite information is up to date
Previously there was a gap between loading a new frame, and copying the
sprite information from that new frame back to the channels (if
required). Scripts could run in this gap, and in this case they would
be operating on the old sprite information instead of the new.

Score::renderFrame has been renamed to Score::updateFrame; the method
doesn't actually render anything, it reconciles the difference
between the frame data and the channel data, updates the channel data,
and produces a list of dirty rects.

Fixes the menu screen of Majestic: Alien Encounter.
Fixes director-tests/D4-unit/T_SPRT02 and T_SPRT03
2024-05-25 16:25:18 +02:00
scemino
3919541f92 DIRECTOR: Fix invalid offsets for tell statement and more 2024-05-23 11:12:31 +02:00