[Scummvm-git-logs] scummvm master -> 2e7c3e4f7d1176f11cfd4582ff54ac50c19bef29
sluicebox
noreply at scummvm.org
Thu Dec 8 00:29:04 UTC 2022
This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
442792eb78 WIN32: Remove SHGetSpecialFolderPath warnings on Win95
903498b6dc SCI: Fix LB2 Act 5 broken timers
334191f636 SCI: Add PATCH_GETORIGINALBYTES to script patcher
e2d216013d SCI: Fix LB2 Act 5 transom bugs
2e7c3e4f7d SCI: Update LB2 Act 5 script patch for wired door
Commit: 442792eb7885635794706f8e98c3fa6f59a86ab9
https://github.com/scummvm/scummvm/commit/442792eb7885635794706f8e98c3fa6f59a86ab9
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2022-12-07T16:26:07-08:00
Commit Message:
WIN32: Remove SHGetSpecialFolderPath warnings on Win95
Changed paths:
backends/platform/sdl/win32/win32.cpp
backends/platform/sdl/win32/win32_wrapper.cpp
diff --git a/backends/platform/sdl/win32/win32.cpp b/backends/platform/sdl/win32/win32.cpp
index eacd276da45..2ca0b6f546d 100644
--- a/backends/platform/sdl/win32/win32.cpp
+++ b/backends/platform/sdl/win32/win32.cpp
@@ -286,8 +286,11 @@ Common::String OSystem_Win32::getScreenshotsPath() {
_tcscat(picturesPath, TEXT("\\Screenshots\\"));
} else {
// Use the My Pictures folder
- if (SHGetFolderPathFunc(nullptr, CSIDL_MYPICTURES, nullptr, SHGFP_TYPE_CURRENT, picturesPath) != S_OK) {
- warning("Unable to access My Pictures directory");
+ HRESULT hr = SHGetFolderPathFunc(nullptr, CSIDL_MYPICTURES, nullptr, SHGFP_TYPE_CURRENT, picturesPath);
+ if (hr != S_OK) {
+ if (hr != E_NOTIMPL) {
+ warning("Unable to locate My Pictures directory");
+ }
return Common::String();
}
_tcscat(picturesPath, TEXT("\\ScummVM Screenshots\\"));
diff --git a/backends/platform/sdl/win32/win32_wrapper.cpp b/backends/platform/sdl/win32/win32_wrapper.cpp
index e89d25c0ca3..f92399eab10 100644
--- a/backends/platform/sdl/win32/win32_wrapper.cpp
+++ b/backends/platform/sdl/win32/win32_wrapper.cpp
@@ -89,8 +89,11 @@ HRESULT SHGetFolderPathFunc(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags,
namespace Win32 {
bool getApplicationDataDirectory(TCHAR *applicationDataDirectory) {
- if (SHGetFolderPathFunc(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, applicationDataDirectory) != S_OK) {
- warning("Unable to access application data directory");
+ HRESULT hr = SHGetFolderPathFunc(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, applicationDataDirectory);
+ if (hr != S_OK) {
+ if (hr != E_NOTIMPL) {
+ warning("Unable to locate application data directory");
+ }
return false;
}
Commit: 903498b6dcd001c589b15edce2a93c406f172f5f
https://github.com/scummvm/scummvm/commit/903498b6dcd001c589b15edce2a93c406f172f5f
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2022-12-07T16:26:07-08:00
Commit Message:
SCI: Fix LB2 Act 5 broken timers
Changed paths:
engines/sci/engine/script_patches.cpp
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 497df9489f0..78f5c456b40 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -9849,6 +9849,44 @@ static const uint16 laurabow2PatchMuseumPartyFixEnteringSouth2[] = {
PATCH_END
};
+// At the start of the act 5 chase, leaving the first screen within five seconds
+// breaks all timers for the rest of the game. This breaks the wire puzzle,
+// prevents the killer from appearing in many rooms, and would crash the floppy
+// version in the original. Room 420 starts a local timer before the killer
+// appears on screen, but Sierra forgot to dispose of the timer when leaving
+// the room. If it's still active then it remains in the global timer list even
+// though its owner script has been disposed. This causes kIsObject to return
+// false and that causes Collect:eachElementDo to abort without processing any
+// further timers.
+//
+// We fix this by adding a call to timers:dispose before setting pursuitTimer
+// when leaving room 420.
+//
+// Applies to: All versions
+// Responsible method: rm420:newRoom
+static const uint16 laurabow2SignatureFixAct5BrokenTimers[] = {
+ SIG_MAGICDWORD,
+ 0x43, 0x02, 0x04, // callk ScriptID 04 [ ScriptID 94 1 ]
+ 0x36, // push [ pursuitTimer ]
+ 0x8b, 0x00, // lsl 00
+ 0x7a, // push2
+ 0x39, 0x5e, // pushi 5e
+ 0x78, // push1
+ 0x43, 0x02, 0x04, // callk ScriptID 04 [ ScriptID 94 1 ]
+ SIG_END
+};
+
+static const uint16 laurabow2PatchFixAct5BrokenTimers[] = {
+ 0x39, 0x6f, // pushi dispose
+ 0x76, // push0
+ 0x81, 0x07, // lag 07
+ 0x4a, 0x04, // send 04 [ timers dispose: ]
+ 0x43, 0x02, 0x04, // callk ScriptID 04 [ ScriptID 94 1 ]
+ 0x36, // push [ pursuitTimer ]
+ 0x8b, 0x00, // lsl 00
+ PATCH_END
+};
+
// Opening/Closing the east door in the pterodactyl room doesn't check, if it's
// locked and will open/close the door internally even when it is.
//
@@ -10767,6 +10805,7 @@ static const SciScriptPatcherEntry laurabow2Signatures[] = {
{ true, 448, "CD/Floppy: fix armor hall door pathfinding", 1, laurabow2SignatureFixArmorHallDoorPathfinding, laurabow2PatchFixArmorHallDoorPathfinding },
{ false, 400, "CD: fix museum actor loops", 4, laurabow2CDSignatureFixMuseumActorLoops1, laurabow2CDPatchFixMuseumActorLoops1 },
{ false, 420, "CD: fix museum actor loops", 1, laurabow2CDSignatureFixMuseumActorLoops1, laurabow2CDPatchFixMuseumActorLoops1 },
+ { true, 420, "CD/Floppy: fix act 5 broken timers", 1, laurabow2SignatureFixAct5BrokenTimers, laurabow2PatchFixAct5BrokenTimers },
{ true, 450, "Floppy: fix dagger case error", 2, laurabow2SignatureFixDaggerCaseError, laurabow2PatchFixDaggerCaseError },
{ true, 454, "CD/Floppy: fix coffin lockup 1/2", 1, laurabow2SignatureMummyCoffinLid1, laurabow2PatchMummyCoffinLid1 },
{ true, 454, "CD/Floppy: fix coffin lockup 2/2", 1, laurabow2SignatureMummyCoffinLid2, laurabow2PatchMummyCoffinLid2 },
Commit: 334191f636f9901c301a01e059f6fff6dcf548f6
https://github.com/scummvm/scummvm/commit/334191f636f9901c301a01e059f6fff6dcf548f6
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2022-12-07T16:26:07-08:00
Commit Message:
SCI: Add PATCH_GETORIGINALBYTES to script patcher
Script patches often involve moving entire sequences of existing
instructions. Now that can be done with a smaller patch definition.
Changed paths:
engines/sci/engine/script_patches.cpp
engines/sci/engine/script_patches.h
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 78f5c456b40..99ed4130a6c 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -23964,7 +23964,7 @@ void ScriptPatcher::applyPatch(const SciScriptPatcherEntry *patchEntry, SciSpan<
const uint16 *patchData = patchEntry->patchData;
byte orgData[PATCH_VALUELIMIT];
int32 offset = signatureOffset;
- uint16 patchWord = *patchEntry->patchData;
+ uint16 patchWord = *patchData;
uint16 patchSelector = 0;
// Copy over original bytes from script
@@ -23982,6 +23982,16 @@ void ScriptPatcher::applyPatch(const SciScriptPatcherEntry *patchEntry, SciSpan<
offset += patchValue;
break;
}
+ case PATCH_CODE_GETORIGINALBYTES: {
+ // get range of original bytes from script
+ uint16 lengthValue;
+ patchData++; lengthValue = (uint16)(*patchData);
+ if ((uint32)patchValue + lengthValue >= orgDataSize)
+ error("Script-Patcher: can not get requested original byte from script");
+ memcpy(scriptData.getUnsafeDataAt(offset, lengthValue), &orgData[patchValue], lengthValue);
+ offset += lengthValue;
+ break;
+ }
case PATCH_CODE_GETORIGINALBYTE: {
// get original byte from script and adjust it
if (patchValue >= orgDataSize)
diff --git a/engines/sci/engine/script_patches.h b/engines/sci/engine/script_patches.h
index 0541df672f3..25752d38f60 100644
--- a/engines/sci/engine/script_patches.h
+++ b/engines/sci/engine/script_patches.h
@@ -49,6 +49,8 @@ namespace Sci {
#define PATCH_BYTEMASK SIG_BYTEMASK
#define PATCH_CODE_ADDTOOFFSET SIG_CODE_ADDTOOFFSET
#define PATCH_ADDTOOFFSET(_offset_) SIG_CODE_ADDTOOFFSET | (_offset_)
+#define PATCH_CODE_GETORIGINALBYTES 0xB000
+#define PATCH_GETORIGINALBYTES(_offset_, _length_) PATCH_CODE_GETORIGINALBYTES | (_offset_), (uint16)(_length_)
#define PATCH_CODE_GETORIGINALBYTE 0xC000
#define PATCH_GETORIGINALBYTE(_offset_) PATCH_CODE_GETORIGINALBYTE | (_offset_), 0
#define PATCH_GETORIGINALBYTEADJUST(_offset_, _adjustValue_) PATCH_CODE_GETORIGINALBYTE | (_offset_), (uint16)(_adjustValue_)
Commit: e2d216013d3df9c7586696e0e3847b3ff340c522
https://github.com/scummvm/scummvm/commit/e2d216013d3df9c7586696e0e3847b3ff340c522
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2022-12-07T16:26:08-08:00
Commit Message:
SCI: Fix LB2 Act 5 transom bugs
Changed paths:
engines/sci/engine/script_patches.cpp
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 99ed4130a6c..2f73d4610da 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -10422,6 +10422,78 @@ static const uint16 laurabow2PatchAct5TimerCrash[] = {
PATCH_END
};
+// During act 5, the transom in room 448 behaves inconsistently depending on
+// the speed setting and machine speed. When the player opens or closes the
+// transom, the script animates ego at game speed and the transom at speed 6,
+// but it terminates the transom's animation when ego's completes. The transom
+// animation is often interrupted and may not even be able to start at all.
+// Although there is a game flag for the transom state, some scripts use the
+// current cel to infer if it is open or closed. When these states are out of
+// sync the transom behaves unpredictably and may not be able to be closed.
+//
+// We fix this by synchronizing the transom speed with ego's when opening or
+// closing so that the animation always completes. This does not change the
+// duration of the scene.
+//
+// Applies to: All versions
+// Responsible method: transomWin:doVerb
+static const uint16 laurabow2SignatureFixTransomSpeed[] = {
+ 0x39, 0x04, // pushi cel
+ 0x76, // push0
+ 0x72, SIG_ADDTOOFFSET(+2), // lofsa transomWin
+ 0x4a, SIG_MAGICDWORD, 0x04, // send 04 [ transomWin cel? ]
+ 0x36, // push
+ 0x35, 0x00, // ldi 00
+ 0x1a, // eq? [ transomWin:cel == 0 ]
+ SIG_END
+};
+
+static const uint16 laurabow2PatchFixTransomSpeed[] = {
+ 0x80, PATCH_UINT16(0x0171), // lag 0171 [ ego speed ]
+ 0x65, 0x5c, // aTop cycleSpeed [ transomWin:cycleSpeed = ego speed ]
+ 0x39, 0x04, // pushi cel
+ 0x76, // push0
+ 0x54, 0x04, // self 04 [ self cel? ]
+ 0x76, // push0
+ PATCH_END
+};
+
+// During act 5, room 448 does not re-initialize the transom correctly. There is
+// a flag that is set when the player moves the chair, and a flag that is set
+// or cleared when the player opens or closed the transom, but the transom is
+// initialized to open if either flag is set. This can leave the graphics out
+// of sync with the flag and break further toggling.
+//
+// We fix this by re-ordering the instructions so that the chair flag controls
+// the chair and the transom flag controls the transom.
+//
+// Applies to: All versions
+// Responsible method: rm448:init
+static const uint16 laurabow2SignatureRememberTransom[] = {
+ SIG_MAGICDWORD,
+ 0x78, // push1
+ 0x39, 0x27, // pushi 27
+ 0x45, 0x02, 0x02, // callb proc0_2 [ is flag 39 set? (transom open) ]
+ 0x2f, 0x06, // bt 06 [ open transom and move chair ]
+ 0x78, // push1
+ 0x39, 0x74, // pushi 74
+ 0x45, 0x02, 0x02, // callb proc0_2 [ is flag 116 set? (chair moved) ]
+ 0x31, 0x1c, // bnt 1c [ skip open transom and move chair ]
+ 0x39, 0x3f, // pushi setPri
+ SIG_ADDTOOFFSET(+14),
+ 0x4a, 0x0e, // send 0e [ chair setPri: ... (move chair) ]
+ SIG_END
+};
+
+static const uint16 laurabow2PatchRememberTransom[] = {
+ PATCH_GETORIGINALBYTES(8, 6), // acc = is flag 116 set? (chair moved)
+ 0x31, 0x12, // bnt 12 [ skip move chair ]
+ PATCH_GETORIGINALBYTES(16, 18), // move chair
+ PATCH_GETORIGINALBYTES(0, 6), // acc = is flag 39 set? (transom open)
+ 0x31, 0x0a, // bnt 0a [ skip open transom ]
+ PATCH_END
+};
+
// The "bugs with meat" in the basement hallway (room 600) can lockup the game
// if they appear while ego is leaving the room through one of the doors.
//
@@ -10820,6 +10892,8 @@ static const SciScriptPatcherEntry laurabow2Signatures[] = {
{ true, 440, "CD/Floppy: handle armor room events", 1, laurabow2SignatureHandleArmorRoomEvents, laurabow2PatchHandleArmorRoomEvents },
{ true, 448, "CD/Floppy: handle armor hall room events", 1, laurabow2SignatureHandleArmorRoomEvents, laurabow2PatchHandleArmorRoomEvents },
{ true, 448, "CD/Floppy: act 5 timer crash", 1, laurabow2SignatureAct5TimerCrash, laurabow2PatchAct5TimerCrash },
+ { true, 448, "CD/Floppy: fix transom speed", 1, laurabow2SignatureFixTransomSpeed, laurabow2PatchFixTransomSpeed },
+ { true, 448, "CD/Floppy: remember transom", 1, laurabow2SignatureRememberTransom, laurabow2PatchRememberTransom },
{ true, 600, "Floppy: fix bugs with meat", 1, laurabow2FloppySignatureFixBugsWithMeat, laurabow2FloppyPatchFixBugsWithMeat },
{ true, 600, "CD: fix bugs with meat", 1, laurabow2CDSignatureFixBugsWithMeat, laurabow2CDPatchFixBugsWithMeat },
{ false, 650, "CD: fix museum actor loops", 1, laurabow2CDSignatureFixMuseumActorLoops2, laurabow2CDPatchFixMuseumActorLoops2 },
Commit: 2e7c3e4f7d1176f11cfd4582ff54ac50c19bef29
https://github.com/scummvm/scummvm/commit/2e7c3e4f7d1176f11cfd4582ff54ac50c19bef29
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2022-12-07T16:26:09-08:00
Commit Message:
SCI: Update LB2 Act 5 script patch for wired door
Fixes the remaining edge cases with this buggy door
Changed paths:
engines/sci/engine/script_patches.cpp
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 2f73d4610da..1f27ac8af4f 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -9887,81 +9887,73 @@ static const uint16 laurabow2PatchFixAct5BrokenTimers[] = {
PATCH_END
};
-// Opening/Closing the east door in the pterodactyl room doesn't check, if it's
-// locked and will open/close the door internally even when it is.
-//
-// It will get wired shut later in the game by Laura Bow and will be "locked"
-// because of this. We patch in a check for the locked state. We also add
-// code, that will set the "locked" state in case our eastDoor-wired-global is
-// set. This makes the locked state effectively persistent.
-//
-// Applies to at least: English PC-CD, English PC-Floppy
-// Responsible method (CD): eastDoor::doVerb
-// Responsible method (Floppy): eastDoor::<noname300>
-// Fixes bug: #6458 (partly, see additional patch below)
+// In act 5, the east door in the pterodactyl room has several problems once it
+// is wired shut. Re-entering the room shows the door open with floating wire,
+// or allows the door to be re-opened with floating wire.
+//
+// There are two flags and three problems:
+// - Flag 99 is set when the door is closed and cleared when opened.
+// - Flag 45 is set when the door is wired shut.
+// - Clicking the wire on the open door sets flag 45 but not 99.
+// - Clicking Do on the closed door clears flag 99 even when locked.
+// - eastDoor:locked is not re-initialized when re-entering the room.
+//
+// We fix all of this by patching eastDoor:doVerb to handle Do (hand) and the
+// wire correctly. Clicking the wire now sets flag 99 so that the door always
+// remains closed when re-entering. Clicking Do now resets the locked property
+// according to flag 45 so that the door can't be re-opened, and the code no
+// longer clears flag 99 if the door is locked.
+//
+// Applies to: All versions
+// Responsible method: eastDoor:doVerb
+// Fixes bug: #6458
static const uint16 laurabow2SignatureFixWiredEastDoor[] = {
- 0x30, SIG_UINT16(0x0022), // bnt [skip hand action]
+ // eastDoor:doVerb(44) - wire
+ 0x31, 0x0f, // bnt 0f [ skip sWireItShut if not act 5 ]
+ 0x38, SIG_UINT16(0x0092), // pushi setScript
+ 0x78, // push1
+ 0x72, SIG_ADDTOOFFSET(+2), // lofsa sWireItShut
+ 0x36, // push
+ 0x81, 0x02, // lag 02
+ 0x4a, 0x06, // send 06 [ rm430 setScript: sWireItShut ]
+ 0x32, SIG_UINT16(0x0042), // jmp 0042 [ toss / ret ]
+ SIG_ADDTOOFFSET(+11), // [ super: doVerb param1 &rest ]
+ 0x32, SIG_UINT16(0x0034), // jmp 0034 [ toss / ret ]
+ // eastDoor:doVerb(4) - do (hand)
+ SIG_ADDTOOFFSET(+7),
0x67, SIG_ADDTOOFFSET(+1), // pTos (CD: doorState, Floppy: state)
0x35, 0x00, // ldi 00
0x1a, // eq?
- 0x31, 0x08, // bnt [close door code]
+ 0x31, 0x08, // bnt 08 [ skip clearing flag 99 ]
0x78, // push1
SIG_MAGICDWORD,
- 0x39, 0x63, // pushi 63h
- 0x45, 0x04, 0x02, // callb [export 4 of script 0], 02 (sets door-bitflag)
- 0x33, 0x06, // jmp [super-code]
- 0x78, // push1
- 0x39, 0x63, // pushi 63h
- 0x45, 0x03, 0x02, // callb [export 3 of script 0], 02 (resets door-bitflag)
- 0x38, SIG_ADDTOOFFSET(+2), // pushi (CD: 011dh, Floppy: 012ch)
+ 0x39, 0x63, // pushi 63
+ 0x45, 0x04, 0x02, // callb proc0_2 [ clear flag 99 (door is closed) ]
+ 0x33, 0x06, // jmp 06 [ super: doVerb param1 &rest ]
0x78, // push1
- 0x8f, 0x01, // lsp param[1]
- 0x59, 0x02, // rest 02
- 0x57, SIG_ADDTOOFFSET(+1), 0x06, // super (CD: LbDoor, Floppy: Door), 06
- 0x33, 0x0b, // jmp [ret]
- SIG_END
+ 0x39, 0x63, // pushi 63
+ 0x45, 0x03, 0x02, // callb proc0_3 [ set flag 99 (door is open) ]
+ SIG_ADDTOOFFSET(+11), // [ super: doVerb param1 &rest ]
+ 0x33, 0x0b, // jmp [ toss / ret ]
+ SIG_END // [ super: doVerb param1 &rest ]
};
static const uint16 laurabow2PatchFixWiredEastDoor[] = {
- 0x31, 0x23, // bnt [skip hand action] (saves 1 byte)
- 0x81, 0x61, // lag global[97d] (get our eastDoor-wired-global)
- 0x31, 0x04, // bnt [skip setting locked property]
- 0x35, 0x01, // ldi 01
- 0x65, 0x6a, // aTop locked (set eastDoor::locked to 1)
- 0x63, 0x6a, // pToa locked (get eastDoor::locked)
- 0x2f, 0x17, // bt [skip hand action]
- 0x63, PATCH_GETORIGINALBYTE(+4), // pToa (CD: doorState, Floppy: state)
+ // eastDoor:doVerb(44) - wire
+ 0x31, 0x46, // bnt 46 [ super:doVerb if not act 5 ]
+ PATCH_ADDTOOFFSET(+12),
0x78, // push1
- 0x39, 0x63, // pushi 63h
- 0x2f, 0x05, // bt [close door code]
- 0x45, 0x04, 0x02, // callb [export 4 of script 0], 02 (sets door-bitflag)
- 0x33, 0x0b, // jmp [super-code]
- 0x45, 0x03, 0x02, // callb [export 3 of script 0], 02 (resets door-bitflag)
- 0x33, 0x06, // jmp [super-code]
- PATCH_END
-};
-
-// We patch in code, so that our eastDoor-wired-global will get set to 1.
-// This way the wired-state won't get lost when exiting room 430.
-//
-// Applies to at least: English PC-CD, English PC-Floppy
-// Responsible method (CD): sWireItShut::changeState
-// Responsible method (Floppy): sWireItShut::<noname144>
-// Fixes bug: #6458 (partly, see additional patch above)
-static const uint16 laurabow2SignatureRememberWiredEastDoor[] = {
- SIG_MAGICDWORD,
- 0x33, 0x27, // jmp [ret]
- 0x3c, // dup
- 0x35, 0x06, // ldi 06
- 0x1a, // eq?
- 0x31, 0x21, // bnt [skip step]
- SIG_END
-};
-
-static const uint16 laurabow2PatchRememberWiredEastDoor[] = {
- PATCH_ADDTOOFFSET(+2), // skip jmp [ret]
- 0x34, PATCH_UINT16(0x0001), // ldi 0001
- 0xa1, PATCH_UINT16(0x0061), // sag global[97d] (set our eastDoor-wired-global)
+ 0x39, 0x63, // pushi 63
+ 0x45, 0x03, 0x02, // callb proc0_3 [ set flag 99 (door is open) ]
+ 0x33, 0x3d, // jmp 3d [ toss / ret ]
+ PATCH_ADDTOOFFSET(+16),
+ // eastDoor:doVerb(4) - do (hand)
+ 0x38, PATCH_UINT16(0x0001), // pushi 0001
+ 0x39, 0x2d, // pushi 2d
+ 0x45, 0x02, 0x02, // callb proc0_2 [ is flag 45 set? (door wired) ]
+ 0x65, 0x6a, // pToa locked [ locked = is flag 45 set? ]
+ 0x2e, PATCH_UINT16(0x0015), // bt 0015 [ skip setting/clearing flag 99 if locked ]
+ PATCH_GETORIGINALBYTES(38, 21), // [ set or clear flag 99, super: doVerb ... ]
PATCH_END
};
@@ -10872,7 +10864,6 @@ static const SciScriptPatcherEntry laurabow2Signatures[] = {
{ true, 350, "CD/Floppy: museum party fix entering south 1/2", 1, laurabow2SignatureMuseumPartyFixEnteringSouth1, laurabow2PatchMuseumPartyFixEnteringSouth1 },
{ true, 350, "CD/Floppy: museum party fix entering south 2/2", 1, laurabow2SignatureMuseumPartyFixEnteringSouth2, laurabow2PatchMuseumPartyFixEnteringSouth2 },
{ false, 355, "CD: fix museum actor loops", 2, laurabow2CDSignatureFixMuseumActorLoops1, laurabow2CDPatchFixMuseumActorLoops1 },
- { true, 430, "CD/Floppy: make wired east door persistent", 1, laurabow2SignatureRememberWiredEastDoor, laurabow2PatchRememberWiredEastDoor },
{ true, 430, "CD/Floppy: fix wired east door", 1, laurabow2SignatureFixWiredEastDoor, laurabow2PatchFixWiredEastDoor },
{ true, 448, "CD/Floppy: fix armor hall door pathfinding", 1, laurabow2SignatureFixArmorHallDoorPathfinding, laurabow2PatchFixArmorHallDoorPathfinding },
{ false, 400, "CD: fix museum actor loops", 4, laurabow2CDSignatureFixMuseumActorLoops1, laurabow2CDPatchFixMuseumActorLoops1 },
More information about the Scummvm-git-logs
mailing list