diff options
author | athrxx | 2014-02-28 20:51:17 +0100 |
---|---|---|
committer | athrxx | 2019-06-21 13:35:34 +0200 |
commit | 6611a1c289aa18c4c4bea93be39eb19b7364f104 (patch) | |
tree | 7817f55546e574ce87fb3aeda1563cad6a107f5f | |
parent | e2fa898021883a9a934703a176b78eee8c07d397 (diff) | |
download | scummvm-rg350-6611a1c289aa18c4c4bea93be39eb19b7364f104.tar.gz scummvm-rg350-6611a1c289aa18c4c4bea93be39eb19b7364f104.tar.bz2 scummvm-rg350-6611a1c289aa18c4c4bea93be39eb19b7364f104.zip |
SCI CP
Conflicts:
engines/sci/engine/script_patches.cpp
-rw-r--r-- | engines/sci/engine/kscripts.cpp | 4 | ||||
-rw-r--r-- | engines/sci/engine/script_patches.cpp | 60 |
2 files changed, 64 insertions, 0 deletions
diff --git a/engines/sci/engine/kscripts.cpp b/engines/sci/engine/kscripts.cpp index 61b0f16cae..5bdbb4fb46 100644 --- a/engines/sci/engine/kscripts.cpp +++ b/engines/sci/engine/kscripts.cpp @@ -257,6 +257,10 @@ reg_t kDisposeClone(EngineState *s, int argc, reg_t *argv) { // Returns script dispatch address index in the supplied script reg_t kScriptID(EngineState *s, int argc, reg_t *argv) { int script = argv[0].toUint16(); + + if (Sci::g_sci->getGameId() == GID_KQ4 && script == 701) + script--; + uint16 index = (argc > 1) ? argv[1].toUint16() : 0; if (argv[0].getSegment()) diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp index af7003f2d0..f1bbb3ee2e 100644 --- a/engines/sci/engine/script_patches.cpp +++ b/engines/sci/engine/script_patches.cpp @@ -5255,6 +5255,24 @@ static const uint16 laurabow1PatchLeftStairsLockupFix[] = { PATCH_END }; +// Copy Protection +static const uint16 laurabow1SignatureCp[] = { + SIG_MAGICDWORD, + 0x30, 0x48, 0x00, 0x8f, 0x01, 0x8d, 0x00, 0x35, 0x04, 0x06, + 0x93, 0x05, 0x1e, 0x30, 0x36, 0x00, 0x8f, 0x02, 0x8d, 0x00, + SIG_END +}; + +static const uint16 laurabow1PatchCp[] = { + 0x39, 0x00, 0xab, 0x00, 0x39, 0x00, 0xab, 0x01, 0x39, 0x00, + 0xab, 0x35, 0x39, 0x27, 0xaf, 0x01, 0x39, 0x27, 0xaf, 0x02, + PATCH_GETORIGINALBYTE(0), PATCH_GETORIGINALBYTE(1), PATCH_GETORIGINALBYTE(2), + PATCH_GETORIGINALBYTE(3), PATCH_GETORIGINALBYTE(4), PATCH_GETORIGINALBYTE(5), + PATCH_GETORIGINALBYTE(6), PATCH_GETORIGINALBYTE(7), PATCH_GETORIGINALBYTE(8), + PATCH_GETORIGINALBYTE(9), PATCH_GETORIGINALBYTE(10), + PATCH_END +}; + // script, description, signature patch static const SciScriptPatcherEntry laurabow1Signatures[] = { { true, 4, "easter egg view fix", 1, laurabow1SignatureEasterEggViewFix, laurabow1PatchEasterEggViewFix }, @@ -5267,6 +5285,7 @@ static const SciScriptPatcherEntry laurabow1Signatures[] = { { true, 58, "chapel candles persistence", 1, laurabow1SignatureChapelCandlesPersistence, laurabow1PatchChapelCandlesPersistence }, { true, 236, "tell Lilly about Gertie blocking fix 1/2", 1, laurabow1SignatureTellLillyAboutGerieBlockingFix1, laurabow1PatchTellLillyAboutGertieBlockingFix1 }, { true, 236, "tell Lilly about Gertie blocking fix 2/2", 1, laurabow1SignatureTellLillyAboutGerieBlockingFix2, laurabow1PatchTellLillyAboutGertieBlockingFix2 }, + { true, 414, "copy protection", 1, laurabow1SignatureCp, laurabow1PatchCp }, { true, 998, "obstacle collision lockups fix", 1, laurabow1SignatureObstacleCollisionLockupsFix, laurabow1PatchObstacleCollisionLockupsFix }, SCI_SIGNATUREENTRY_TERMINATOR }; @@ -14005,6 +14024,44 @@ static const SciScriptPatcherEntry torinSignatures[] = { #endif + +// Copy Protection +static const uint16 pq2EnSignatureCp[] = { + SIG_MAGICDWORD, + 0x35, 0x07, 0x12, 0xa5, + SIG_ADDTOOFFSET(67), + 0x30, 0xcf, 0x00, 0x35, + SIG_END +}; + +static const uint16 pq2EnPatchCp[] = { + 0x35, 0x00, 0x12, 0xa5, + PATCH_ADDTOOFFSET(67), + 0x30, 0x00, 0x00, 0x35, + PATCH_END +}; + +static const uint16 pq2JpSignatureCp[] = { + SIG_MAGICDWORD, + 0x35, 0x07, 0x12, 0xa5, + SIG_ADDTOOFFSET(75), + 0x30, 0xcf, 0x00, 0x35, + SIG_END +}; + +static const uint16 pq2JpPatchCp[] = { + 0x35, 0x00, 0x12, 0xa5, + PATCH_ADDTOOFFSET(75), + 0x30, 0x00, 0x00, 0x35, + PATCH_END +}; + +static const SciScriptPatcherEntry pq2Signatures[] = { + { true, 701, "copy protection", 1, pq2EnSignatureCp, pq2EnPatchCp }, + { true, 701, "copy protection", 1, pq2JpSignatureCp, pq2JpPatchCp }, + SCI_SIGNATUREENTRY_TERMINATOR +}; + // ================================================================================= ScriptPatcher::ScriptPatcher() { @@ -14536,6 +14593,9 @@ void ScriptPatcher::processScript(uint16 scriptNr, SciSpan<byte> scriptData) { case GID_PQ1: signatureTable = pq1vgaSignatures; break; + case GID_PQ2: + signatureTable = pq2Signatures; + break; case GID_PQ3: signatureTable = pq3Signatures; break; |