[Scummvm-git-logs] scummvm master -> 37a73d326893684b06e29e7ae7c81f2b6c62087a
bluegr
bluegr at gmail.com
Tue Sep 4 22:43:28 CEST 2018
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:
4913cd4eb2 SCI32: Add more workarounds for Hoyle Classic Games
37a73d3268 SCI32: More workarounds for Hoyle Classic Games - Poker minigame
Commit: 4913cd4eb2f6550b8b79bce7bbece428bbe4238f
https://github.com/scummvm/scummvm/commit/4913cd4eb2f6550b8b79bce7bbece428bbe4238f
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2018-09-04T23:36:20+03:00
Commit Message:
SCI32: Add more workarounds for Hoyle Classic Games
This fixes issues with Bridge and Backgammon. Now, Hoyle 5 and its
variants should be in a very good state for testing
Changed paths:
engines/sci/engine/guest_additions.cpp
engines/sci/engine/script_patches.cpp
engines/sci/engine/vm.h
engines/sci/engine/workarounds.cpp
diff --git a/engines/sci/engine/guest_additions.cpp b/engines/sci/engine/guest_additions.cpp
index ed31805..16c4f94 100644
--- a/engines/sci/engine/guest_additions.cpp
+++ b/engines/sci/engine/guest_additions.cpp
@@ -165,6 +165,16 @@ void GuestAdditions::writeVarHook(const int type, const int index, const reg_t v
syncGK1StartupVolumeFromScummVM(index, value);
} else if (g_sci->getGameId() == GID_HOYLE5 && index == kGlobalVarHoyle5MusicVolume) {
syncHoyle5VolumeFromScummVM((ConfMan.getInt("music_volume") + 1) * kHoyle5VolumeMax / Audio::Mixer::kMaxMixerVolume);
+ } else if (g_sci->getGameId() == GID_HOYLE5 && index == kkGlobalVarHoyle5ResponseTime && value.getOffset() == 0) {
+ // WORKAROUND: Global 899 contains the response time value,
+ // which may have values between 1 and 15. There is a script
+ // bug when loading values from game.opt, where this variable
+ // may be incorrectly set to 0. This makes the opponent freezetat
+ // while playing Backgammon and Bridge. Fix this case here, by
+ // setting the correct minimum value, 1.
+ // TODO: Either make this a script patch, or find out if it's
+ // a bug with ScummVM when reading values from text files.
+ _state->variables[VAR_GLOBAL][index].setOffset(1);
} else if (g_sci->getGameId() == GID_RAMA && !g_sci->isDemo() && index == kGlobalVarRamaMusicVolume) {
syncRamaVolumeFromScummVM((ConfMan.getInt("music_volume") + 1) * kRamaVolumeMax / Audio::Mixer::kMaxMixerVolume);
}
diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 4a0bb82..bcd1f17 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -1060,6 +1060,7 @@ static const SciScriptPatcherEntry hoyle5Signatures[] = {
{ true, 23, "remove kGetTime spin", 1, hoyle5SignatureSpinLoop, hoyle5PatchSpinLoop },
{ true, 500, "remove kGetTime spin", 1, hoyle5SignatureSpinLoop, hoyle5PatchSpinLoop },
{ true, 64937, "remove kGetTime spin", 1, hoyle5SignatureSpinLoop, hoyle5PatchSpinLoop },
+ { true, 64908, "disable video benchmarking", 1, sci2BenchmarkSignature, sci2BenchmarkPatch },
SCI_SIGNATUREENTRY_TERMINATOR
};
@@ -1069,6 +1070,7 @@ static const SciScriptPatcherEntry hoyle5ChildrensCollectionSignatures[] = {
{ true, 23, "remove kGetTime spin", 1, hoyle5SignatureSpinLoop, hoyle5PatchSpinLoop },
{ true, 500, "remove kGetTime spin", 1, hoyle5SignatureSpinLoop, hoyle5PatchSpinLoop },
{ true, 64937, "remove kGetTime spin", 1, hoyle5SignatureSpinLoop, hoyle5PatchSpinLoop },
+ { true, 64908, "disable video benchmarking", 1, sci2BenchmarkSignature, sci2BenchmarkPatch },
{ true, 975, "disable Gin Rummy", 1, hoyle5SignatureGinRummy, hoyle5PatchDisableGame },
{ true, 975, "disable Cribbage", 1, hoyle5SignatureCribbage, hoyle5PatchDisableGame },
{ true, 975, "disable Klondike", 1, hoyle5SignatureKlondike, hoyle5PatchDisableGame },
@@ -1085,6 +1087,7 @@ static const SciScriptPatcherEntry hoyle5BridgeSignatures[] = {
{ true, 23, "remove kGetTime spin", 1, hoyle5SignatureSpinLoop, hoyle5PatchSpinLoop },
{ true, 500, "remove kGetTime spin", 1, hoyle5SignatureSpinLoop, hoyle5PatchSpinLoop },
{ true, 64937, "remove kGetTime spin", 1, hoyle5SignatureSpinLoop, hoyle5PatchSpinLoop },
+ { true, 64908, "disable video benchmarking", 1, sci2BenchmarkSignature, sci2BenchmarkPatch },
{ true, 975, "disable Gin Rummy", 1, hoyle5SignatureGinRummy, hoyle5PatchDisableGame },
{ true, 975, "disable Cribbage", 1, hoyle5SignatureCribbage, hoyle5PatchDisableGame },
{ true, 975, "disable Klondike", 1, hoyle5SignatureKlondike, hoyle5PatchDisableGame },
@@ -2855,7 +2858,7 @@ static const uint16 larry2PatchWearParachutePoints[] = {
// script, description, signature patch
static const SciScriptPatcherEntry larry2Signatures[] = {
- { true, 63, "plane: no points for wearing plane", 1, larry2SignatureWearParachutePoints, larry2PatchWearParachutePoints },
+ { true, 63, "plane: no points for wearing parachute", 1, larry2SignatureWearParachutePoints, larry2PatchWearParachutePoints },
SCI_SIGNATUREENTRY_TERMINATOR
};
diff --git a/engines/sci/engine/vm.h b/engines/sci/engine/vm.h
index 0e7af34..1ba24ae 100644
--- a/engines/sci/engine/vm.h
+++ b/engines/sci/engine/vm.h
@@ -178,7 +178,8 @@ enum GlobalVar {
kGlobalVarPhant2MasterVolume = 236, // 0 to 127
kGlobalVarPhant2ControlPanel = 250,
kGlobalVarShivers1Score = 349,
- kGlobalVarHoyle5MusicVolume = 897
+ kGlobalVarHoyle5MusicVolume = 897,
+ kkGlobalVarHoyle5ResponseTime = 899
};
/** Number of kernel calls in between gcs; should be < 50000 */
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp
index 550dbba..c387760 100644
--- a/engines/sci/engine/workarounds.cpp
+++ b/engines/sci/engine/workarounds.cpp
@@ -323,6 +323,7 @@ static const uint16 sig_uninitread_sq1_1[] = {
// gameID, room,script,lvl, object-name, method-name, local-call-signature, index-range, workaround
const SciWorkaroundEntry uninitializedReadForParamWorkarounds[] = {
{ GID_HOYLE5, -1, 15, -1, "Hand", "add", NULL, 1, 1,{ WORKAROUND_FAKE, 0 } }, // When the game adds cards to your hand in any mini-game
+ { GID_HOYLE5, 700, 730, 0, NULL, "runningSuit", NULL, 2, 2,{ WORKAROUND_FAKE, 0 } }, // when an opponent is playing in Bridge
{ GID_PHANTASMAGORIA2,-1, 64926, 0, "Thumb", "action", NULL, 1, 1,{ WORKAROUND_FAKE, 0 } }, // When dragging one of the volume sliders and releasing the mouse button over the +/- buttons
{ GID_PHANTASMAGORIA2,-1, 63019, 0, "WynDocTextView", "cue", NULL, 2, 2,{ WORKAROUND_FAKE, 0 } }, // When dragging the slider next to an e-mail message
{ GID_SHIVERS, -1, 64918, 0, "Str", "strip", NULL, 1, 1,{ WORKAROUND_FAKE, 0 } }, // When starting a new game and entering a name
@@ -386,6 +387,8 @@ const SciWorkaroundEntry uninitializedReadWorkarounds[] = {
{ GID_HOYLE5, -1, 64937, -1, "IconBar", "handleEvent", NULL, 0, 0, { WORKAROUND_FAKE, 0 } }, // clicking on any button in the icon bar
{ GID_HOYLE5, 300, 300, 0, "", "export 2", sig_uninitread_hoyle5_1, 0, 0, { WORKAROUND_FAKE, 0 } }, // after passing around cards in hearts
{ GID_HOYLE5, 400, 400, 1, "GinHand", "calcRuns", NULL, 4, 4, { WORKAROUND_FAKE, 0 } }, // when starting Gin
+ { GID_HOYLE5, 700, 700, 1, "BridgeHand", "calcQTS", NULL, 3, 3, { WORKAROUND_FAKE, 0 } }, // when an opponent is playing in Bridge
+ { GID_HOYLE5, 700, 747, 0, "LeadReturn_Trump", "think", NULL, 17, 17, { WORKAROUND_FAKE, 0 } }, // when an opponent is playing in Bridge
{ GID_HOYLE5, 1100, 1100, 0, "anteButton", "handleEvent", NULL, 1, 1, { WORKAROUND_FAKE, 0 } }, // when exiting Poker
{ GID_HOYLE5, 6029, 6029, 1, "ControlIcon", "select", NULL, 1, 1, { WORKAROUND_FAKE, 0 } }, // Solitaire: when changing any slider in the Card Flip mini-game's options window
{ GID_HOYLE5, -1, 6000, 1, "sHand", "handleEvent", NULL, 4, 4, { WORKAROUND_FAKE, 0 } }, // Solitaire: when clicking on an empty card base in any game
Commit: 37a73d326893684b06e29e7ae7c81f2b6c62087a
https://github.com/scummvm/scummvm/commit/37a73d326893684b06e29e7ae7c81f2b6c62087a
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2018-09-04T23:43:03+03:00
Commit Message:
SCI32: More workarounds for Hoyle Classic Games - Poker minigame
Changed paths:
engines/sci/engine/workarounds.cpp
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp
index c387760..8f1714c 100644
--- a/engines/sci/engine/workarounds.cpp
+++ b/engines/sci/engine/workarounds.cpp
@@ -324,6 +324,7 @@ static const uint16 sig_uninitread_sq1_1[] = {
const SciWorkaroundEntry uninitializedReadForParamWorkarounds[] = {
{ GID_HOYLE5, -1, 15, -1, "Hand", "add", NULL, 1, 1,{ WORKAROUND_FAKE, 0 } }, // When the game adds cards to your hand in any mini-game
{ GID_HOYLE5, 700, 730, 0, NULL, "runningSuit", NULL, 2, 2,{ WORKAROUND_FAKE, 0 } }, // when an opponent is playing in Bridge
+ { GID_HOYLE5, 1100, 22, -1, "HandPile", "show", NULL, 1, 1,{ WORKAROUND_FAKE, 0 } }, // when showing money piles in Poker
{ GID_PHANTASMAGORIA2,-1, 64926, 0, "Thumb", "action", NULL, 1, 1,{ WORKAROUND_FAKE, 0 } }, // When dragging one of the volume sliders and releasing the mouse button over the +/- buttons
{ GID_PHANTASMAGORIA2,-1, 63019, 0, "WynDocTextView", "cue", NULL, 2, 2,{ WORKAROUND_FAKE, 0 } }, // When dragging the slider next to an e-mail message
{ GID_SHIVERS, -1, 64918, 0, "Str", "strip", NULL, 1, 1,{ WORKAROUND_FAKE, 0 } }, // When starting a new game and entering a name
@@ -389,6 +390,7 @@ const SciWorkaroundEntry uninitializedReadWorkarounds[] = {
{ GID_HOYLE5, 400, 400, 1, "GinHand", "calcRuns", NULL, 4, 4, { WORKAROUND_FAKE, 0 } }, // when starting Gin
{ GID_HOYLE5, 700, 700, 1, "BridgeHand", "calcQTS", NULL, 3, 3, { WORKAROUND_FAKE, 0 } }, // when an opponent is playing in Bridge
{ GID_HOYLE5, 700, 747, 0, "LeadReturn_Trump", "think", NULL, 17, 17, { WORKAROUND_FAKE, 0 } }, // when an opponent is playing in Bridge
+ { GID_HOYLE5, 1100, 18, 0, "Tray", "init", NULL, 0, 0, { WORKAROUND_FAKE, 0 } }, // when playing Poker
{ GID_HOYLE5, 1100, 1100, 0, "anteButton", "handleEvent", NULL, 1, 1, { WORKAROUND_FAKE, 0 } }, // when exiting Poker
{ GID_HOYLE5, 6029, 6029, 1, "ControlIcon", "select", NULL, 1, 1, { WORKAROUND_FAKE, 0 } }, // Solitaire: when changing any slider in the Card Flip mini-game's options window
{ GID_HOYLE5, -1, 6000, 1, "sHand", "handleEvent", NULL, 4, 4, { WORKAROUND_FAKE, 0 } }, // Solitaire: when clicking on an empty card base in any game
More information about the Scummvm-git-logs
mailing list