[Scummvm-git-logs] scummvm master -> 37b90c0ca41776777f72d92cae20976df6afbaee
sluicebox
noreply at scummvm.org
Sat Apr 16 17:31:37 UTC 2022
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
a0ac53e29c SCI: Remove SCI32 checks from kTextSize
37b90c0ca4 SCI: Fix FPFP Mac easter egg view placement
Commit: a0ac53e29c8fe659cae10a69c1ec40425060bbe0
https://github.com/scummvm/scummvm/commit/a0ac53e29c8fe659cae10a69c1ec40425060bbe0
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2022-04-16T13:29:59-04:00
Commit Message:
SCI: Remove SCI32 checks from kTextSize
These old checks are from before the SCI32 code was separated
Changed paths:
engines/sci/engine/kgraphics.cpp
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index c0034153c3d..8595d9248c0 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -372,25 +372,17 @@ reg_t kTextSize(EngineState *s, int argc, reg_t *argv) {
// Fixes bug #5710.
if (textWidth >= g_sci->_gfxScreen->getDisplayWidth() ||
textHeight >= g_sci->_gfxScreen->getDisplayHeight()) {
- // TODO: Is this needed for SCI32 as well?
- if (g_sci->_gfxText16) {
- warning("kTextSize: string would be too big to fit on screen. Trimming it");
- text.trim();
- // Copy over the trimmed string...
- s->_segMan->strcpy(argv[1], text.c_str());
- // ...and recalculate bounding box dimensions
- g_sci->_gfxText16->kernelTextSize(splitText.c_str(), languageSplitter, font, maxWidth, &textWidth, &textHeight);
- }
+ warning("kTextSize: string would be too big to fit on screen. Trimming it");
+ text.trim();
+ // Copy over the trimmed string...
+ s->_segMan->strcpy(argv[1], text.c_str());
+ // ...and recalculate bounding box dimensions
+ g_sci->_gfxText16->kernelTextSize(splitText.c_str(), languageSplitter, font, maxWidth, &textWidth, &textHeight);
}
debugC(kDebugLevelStrings, "GetTextSize '%s' -> %dx%d", text.c_str(), textWidth, textHeight);
- if (getSciVersion() <= SCI_VERSION_1_1) {
- dest[2] = make_reg(0, textHeight);
- dest[3] = make_reg(0, textWidth);
- } else {
- dest[2] = make_reg(0, textWidth);
- dest[3] = make_reg(0, textHeight);
- }
+ dest[2] = make_reg(0, textHeight);
+ dest[3] = make_reg(0, textWidth);
return s->r_acc;
}
Commit: 37b90c0ca41776777f72d92cae20976df6afbaee
https://github.com/scummvm/scummvm/commit/37b90c0ca41776777f72d92cae20976df6afbaee
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2022-04-16T13:29:59-04:00
Commit Message:
SCI: Fix FPFP Mac easter egg view placement
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 d0d33d98287..3695b58af06 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -1925,7 +1925,7 @@ static const uint16 freddypharkasPatchMacInventory[] = {
// Applies to: Mac Floppy
// Responsible method: Heap in script 270
// Fixes bug #7065
-static const uint16 freddypharkasSignatureMacEasterEgg[] = {
+static const uint16 freddypharkasSignatureMacEasterEggHang[] = {
SIG_MAGICDWORD, // macSound
SIG_UINT16(0x0b89), // number = 2953
SIG_UINT16(0x007f), // vol = 127
@@ -1934,12 +1934,44 @@ static const uint16 freddypharkasSignatureMacEasterEgg[] = {
SIG_END
};
-static const uint16 freddypharkasPatchMacEasterEgg[] = {
+static const uint16 freddypharkasPatchMacEasterEggHang[] = {
PATCH_ADDTOOFFSET(+6),
PATCH_UINT16(0x0001), // loop = 1 [ play sound once ]
PATCH_END
};
+// WORKAROUND
+// FPFP Mac's easter egg has a view that relies on a bug in the Mac interpreter.
+// Sierra's interpreter draws views one pixel higher than their y coordinate.
+// KQ6 Mac has this bug too. Compared to their original PC versions, views
+// appear higher relative to their background. This is a problem for views that
+// require precise placement to blend in with those backgrounds.
+//
+// The Mac easter egg adds such a view. View 275 contains a hand in the lake
+// holding a Maintosh computer. Because this feature was developed against the
+// Mac interpreter, the y coordinate that achieved the water effect is really
+// off by one. In our interpreter, which doesn't have this bug, the view
+// appears one pixel lower than intended and doesn't match the background.
+//
+// We fix this by adjusting macView:y to compensate for Sierra's off-by-one bug
+// so that view 275 matches the lake background as in the original.
+//
+// Applies to: Mac Floppy
+// Responsible method: Heap in script 270
+static const uint16 freddypharkasSignatureMacEasterEggView[] = {
+ SIG_MAGICDWORD, // macView
+ SIG_UINT16(0x061e), // name = $061e [ macView ]
+ SIG_UINT16(0x00cd), // x = 205
+ SIG_UINT16(0x0065), // y = 101
+ SIG_END
+};
+
+static const uint16 freddypharkasPatchMacEasterEggView[] = {
+ PATCH_ADDTOOFFSET(+4),
+ PATCH_UINT16(0x0064), // y = 100
+ PATCH_END
+};
+
// FPFP Mac is missing view 844 of Hop Singh leaving town, breaking the scene.
// This occurs when going to the desert (room 200) after the restaurant closes
// but before act 3 ends. This would also crash the original so we just disable
@@ -2073,17 +2105,18 @@ static const uint16 freddypharkasPatchDeskLetter[] = {
PATCH_END
};
-// script, description, signature patch
+// script, description, signature patch
static const SciScriptPatcherEntry freddypharkasSignatures[] = {
- { true, 15, "Mac: broken inventory", 1, freddypharkasSignatureMacInventory, freddypharkasPatchMacInventory },
- { true, 110, "intro scaling workaround", 2, freddypharkasSignatureIntroScaling, freddypharkasPatchIntroScaling },
- { false, 200, "Mac: skip broken hop singh scene", 1, freddypharkasSignatureMacHopSingh, freddypharkasPatchMacHopSingh },
- { true, 235, "CD: canister pickup hang", 3, freddypharkasSignatureCanisterHang, freddypharkasPatchCanisterHang },
- { true, 270, "Mac: easter egg hang", 1, freddypharkasSignatureMacEasterEgg, freddypharkasPatchMacEasterEgg },
- { true, 310, "church key reappears", 1, freddypharkasSignatureChurchKey, freddypharkasPatchChurchKey },
- { true, 320, "ladder event issue", 2, freddypharkasSignatureLadderEvent, freddypharkasPatchLadderEvent },
- { true, 610, "desk letter reappears", 1, freddypharkasSignatureDeskLetter, freddypharkasPatchDeskLetter },
- { true, 928, "Narrator lockup fix", 1, sciNarratorLockupSignature, sciNarratorLockupPatch },
+ { true, 15, "Mac: broken inventory", 1, freddypharkasSignatureMacInventory, freddypharkasPatchMacInventory },
+ { true, 110, "intro scaling workaround", 2, freddypharkasSignatureIntroScaling, freddypharkasPatchIntroScaling },
+ { false, 200, "Mac: skip broken hop singh scene", 1, freddypharkasSignatureMacHopSingh, freddypharkasPatchMacHopSingh },
+ { true, 235, "CD: canister pickup hang", 3, freddypharkasSignatureCanisterHang, freddypharkasPatchCanisterHang },
+ { true, 270, "Mac: easter egg hang", 1, freddypharkasSignatureMacEasterEggHang, freddypharkasPatchMacEasterEggHang },
+ { true, 270, "Mac: easter egg view", 1, freddypharkasSignatureMacEasterEggView, freddypharkasPatchMacEasterEggView },
+ { true, 310, "church key reappears", 1, freddypharkasSignatureChurchKey, freddypharkasPatchChurchKey },
+ { true, 320, "ladder event issue", 2, freddypharkasSignatureLadderEvent, freddypharkasPatchLadderEvent },
+ { true, 610, "desk letter reappears", 1, freddypharkasSignatureDeskLetter, freddypharkasPatchDeskLetter },
+ { true, 928, "Narrator lockup fix", 1, sciNarratorLockupSignature, sciNarratorLockupPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
More information about the Scummvm-git-logs
mailing list