[Scummvm-git-logs] scummvm master -> 9e089d50932de96852bd3d56b0ff0d26d4db8a7f
sluicebox
noreply at scummvm.org
Sun Apr 14 17:05:31 UTC 2024
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
9e089d5093 SCI: Add SCI Tetris detection and workarounds
Commit: 9e089d50932de96852bd3d56b0ff0d26d4db8a7f
https://github.com/scummvm/scummvm/commit/9e089d50932de96852bd3d56b0ff0d26d4db8a7f
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2024-04-14T10:03:11-07:00
Commit Message:
SCI: Add SCI Tetris detection and workarounds
Changed paths:
engines/sci/detection_tables.h
engines/sci/engine/kernel_tables.h
engines/sci/engine/workarounds.cpp
diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index 1c891c92529..7d94dae663e 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -6403,10 +6403,8 @@ static const struct ADGameDescription SciGameDescriptions[] = {
FANMADE("SCI Programming April 2010 Competition Template", "36e5c4011dd7c92e1ae4c6fede7d698d", 456, "20c87fbb7f73e2a3eb2c5dfab4d76b5a", 142221),
FANMADE("SCI Studio Template 3.0", "ca0dc8d586e0a8670b7621cde090b532", 354, "58a48ee692a86c0575e6bd0b00a92b9a", 113097),
FANMADE("SCI Quest", "9067e1f1e54436d2dbfce855524bc84a", 552, "ffa7d355cd9223f245289108a696bcd2", 149634),
-#if 0
- // Disabled, this crashes into: [VM] kFGets[2b]: signature mismatch in method TitleScreen::init (room 3052, script 800, localCall ffffffff)!
- FANMADE("SCI Tetris", "a268f84a293e6f8bbb55f6a41541c6cb", 384, "4da38a05d9752e787770e560a8f54fe6", 138974),
-#endif
+ FANMADE("SCI Tetris 1.0", "a268f84a293e6f8bbb55f6a41541c6cb", 384, "4da38a05d9752e787770e560a8f54fe6", 138974),
+ FANMADE("SCI Tetris 1.1", "d1bd53d329541e4b26ec2f0b1eb68eb8", 318, "b219747b7e8b0537f783d621c6191b37", 102714),
FANMADE11("SCI VGA Demo Update-Remake", "8913c0855eac223de6a86b3fc1af67c1", 439, "31d4283d8a9d52833df0d1e91dd702ec", 299311),
FANMADE("SCI-Man", "3ab85bd39a86c11f85781764f9db09bb", 468, "bb8f9992f504a242bf0860e3588e150b", 131810),
FANMADE("Scene Builder", "981de9fc7ecfc26631a5aec5c4e09bfe", 1842, "8faf71a4f7d89618d1346c1d60cd3074", 820847),
diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h
index 1caf20e81b2..3474703c9d4 100644
--- a/engines/sci/engine/kernel_tables.h
+++ b/engines/sci/engine/kernel_tables.h
@@ -702,7 +702,7 @@ static SciKernelMapEntry s_kernelMap[] = {
{ MAP_CALL(Empty), SIG_EVERYWHERE, "(.*)", NULL, NULL },
{ MAP_CALL(EmptyList), SIG_EVERYWHERE, "l", NULL, NULL },
{ "FClose", kFileIOClose, SIG_EVERYWHERE, "i", NULL, NULL },
- { "FGets", kFileIOReadString, SIG_EVERYWHERE, "rii", NULL, NULL },
+ { "FGets", kFileIOReadString, SIG_EVERYWHERE, "rii", NULL, kFileIOReadString_workarounds },
{ "FOpen", kFileIOOpen, SIG_EVERYWHERE, "ri", NULL, NULL },
{ "FPuts", kFileIOWriteString, SIG_EVERYWHERE, "ir", NULL, NULL },
{ MAP_CALL(FileIO), SIG_EVERYWHERE, "i([.!]*)", kFileIO_subops, NULL },
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp
index ad5e18825f1..3d329796b2d 100644
--- a/engines/sci/engine/workarounds.cpp
+++ b/engines/sci/engine/workarounds.cpp
@@ -337,6 +337,7 @@ const SciWorkaroundEntry uninitializedReadWorkarounds[] = {
{ GID_FANMADE, 516, 979, 0, "", "export 0", nullptr, 20, 20, { WORKAROUND_FAKE, 0 } }, // Happens in Grotesteing after the logos
{ GID_FANMADE, 528, 990, 0, "GDialog", "doit", nullptr, 4, 4, { WORKAROUND_FAKE, 0 } }, // Happens in Cascade Quest when closing the glossary - bug #5116
{ GID_FANMADE, 488, 1, 0, "RoomScript", "doit", sig_uninitread_fanmade_1, 1, 1, { WORKAROUND_FAKE, 0 } }, // Happens in Ocean Battle while playing - bug #5335
+ { GID_FANMADE, -1, 0, 0, "Tetris", "init", nullptr, 0, 0, { WORKAROUND_FAKE, 0 } }, // SCI Tetris 1.1: at start of game, broken high score script passes uninit temp variable instead of reference to temp variable
{ GID_FREDDYPHARKAS, -1, 24, 0, "gcWin", "open", nullptr, 5, 5, { WORKAROUND_FAKE, 0xf } }, // is used as priority for game menu
{ GID_FREDDYPHARKAS, -1, 31, 0, "quitWin", "open", nullptr, 5, 5, { WORKAROUND_FAKE, 0xf } }, // is used as priority for game menu
{ GID_FREDDYPHARKAS, 540, 540, 0, "WaverCode", "init", nullptr, 0, 1, { WORKAROUND_FAKE, 0 } }, // Gun pratice mini-game, all temps - 0+1 - bug #5232
@@ -771,6 +772,8 @@ const SciWorkaroundEntry kFileIOCheckFreeSpace_workarounds[] = {
// gameID, room,script,lvl, object-name, method-name, local-call-signature, index-range, workaround
const SciWorkaroundEntry kFileIOReadString_workarounds[] = {
+ { GID_FANMADE, -1, 800, 0, "TitleScreen", "init", nullptr, 0, 0, { WORKAROUND_FAKE, 0 } }, // SCI Tetris 1.0: at start of game, broken high score script passes temp variable instead of reference to temp variable
+ { GID_FANMADE, -1, 993, 0, "hiscore", "read", nullptr, 0, 0, { WORKAROUND_FAKE, 0 } }, // SCI Tetris 1.1: at start of game, broken high score script passes temp variable instead of reference to temp variable
{ GID_HOYLE5, -1, 64993, 0, "version", "readString", nullptr, 0, 0, { WORKAROUND_IGNORE, 0 } }, // Zero passed as string when game initializes and VERSION file is present, which only Mac includes. Result is unused
SCI_WORKAROUNDENTRY_TERMINATOR
};
@@ -1006,6 +1009,7 @@ const SciWorkaroundEntry kRandom_workarounds[] = {
const SciWorkaroundEntry kReadNumber_workarounds[] = {
{ GID_CNICK_LAURABOW,100, 101, 0, "dominoes.opt", "doit", nullptr, 0, 0, { WORKAROUND_STILLCALL, 0 } }, // When dominoes.opt is present, the game scripts call kReadNumber with an extra integer parameter - bug #6425
{ GID_HOYLE3, 100, 101, 0, "dominoes.opt", "doit", nullptr, 0, 0, { WORKAROUND_STILLCALL, 0 } }, // When dominoes.opt is present, the game scripts call kReadNumber with an extra integer parameter - bug #6425
+ { GID_FANMADE, -1, 0, 0, "Tetris", "init", nullptr, 0, 0, { WORKAROUND_FAKE, 0 } }, // SCI Tetris 1.1: at start of game, broken high score script passes temp variable instead of reference to temp variable
SCI_WORKAROUNDENTRY_TERMINATOR
};
More information about the Scummvm-git-logs
mailing list