From d8afddac634a089fd75f1c51a49b7ee1a2929401 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Mon, 22 Nov 2010 00:20:00 +0000 Subject: SCI: Patched the QFG3 character import screen the same way as with QFG2 This prevents random crashes and slow refreshing, same as with QFG2 svn-id: r54414 --- engines/sci/engine/script_patches.cpp | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp index 6a9035103e..84e8c4759e 100644 --- a/engines/sci/engine/script_patches.cpp +++ b/engines/sci/engine/script_patches.cpp @@ -747,7 +747,34 @@ const uint16 qfg2PatchImportDialog[] = { // script, description, magic DWORD, adjust const SciScriptSignature qfg2Signatures[] = { - { 944, "import dialog continuous calls", 1, PATCH_MAGICDWORD(0x20, 0x30, 0x0b, 0x00), -1, qfg2SignatureImportDialog, qfg2PatchImportDialog }, + { 944, "import dialog continuous calls", 1, PATCH_MAGICDWORD(0x20, 0x30, 0x0b, 0x00), -1, qfg2SignatureImportDialog, qfg2PatchImportDialog }, + SCI_SIGNATUREENTRY_TERMINATOR +}; + +// =========================================================================== +// Patch for the import screen in QFG3, same as the one for QFG2 above +const byte qfg3SignatureImportDialog[] = { + 15, + 0x63, 0x2a, // pToa text + 0x31, 0x0b, // bnt [next state] + 0x7a, // push2 + 0x39, 0x03, // pushi 03 + 0x36, // push + 0x43, 0x72, 0x04, // callk Memory 4 + 0x35, 0x00, // ldi 00 + 0x65, 0x2a, // aTop text + 0 +}; + +const uint16 qfg3PatchImportDialog[] = { + PATCH_ADDTOOFFSET | +4, + 0x48, // ret + PATCH_END +}; + +// script, description, magic DWORD, adjust +const SciScriptSignature qfg3Signatures[] = { + { 944, "import dialog continuous calls", 1, PATCH_MAGICDWORD(0x2a, 0x31, 0x0b, 0x7a), -1, qfg3SignatureImportDialog, qfg3PatchImportDialog }, SCI_SIGNATUREENTRY_TERMINATOR }; @@ -975,6 +1002,9 @@ void Script::matchSignatureAndPatch(uint16 scriptNr, byte *scriptData, const uin case GID_QFG2: signatureTable = qfg2Signatures; break; + case GID_QFG3: + signatureTable = qfg3Signatures; + break; case GID_SQ4: signatureTable = sq4Signatures; break; -- cgit v1.2.3