SCI: changes for mother goose sci2.1

changed signature for kSetCursor sci2.1
added workarounds
added separate gameid for mother goose sci2.1

svn-id: r51385
This commit is contained in:
Martin Kiewitz 2010-07-27 19:09:57 +00:00
parent 828434456f
commit b873cf2ebf
6 changed files with 11 additions and 4 deletions

View file

@ -94,7 +94,7 @@ static const PlainGameDescriptor s_sciGameTitles[] = {
{"sq5", "Space Quest V: The Next Mutation"}, {"sq5", "Space Quest V: The Next Mutation"},
{"islandbrain", "The Island of Dr. Brain"}, {"islandbrain", "The Island of Dr. Brain"},
{"lsl6", "Leisure Suit Larry 6: Shape Up or Slip Out!"}, {"lsl6", "Leisure Suit Larry 6: Shape Up or Slip Out!"},
{"mothergoose", "Mixed-Up Mother Goose"}, // floppy is SCI1.1, CD SCI2.1 {"mothergoose", "Mixed-Up Mother Goose"},
{"pepper", "Pepper's Adventure in Time"}, {"pepper", "Pepper's Adventure in Time"},
{"slater", "Slater & Charlie Go Camping"}, {"slater", "Slater & Charlie Go Camping"},
// === SCI2 games ========================================================= // === SCI2 games =========================================================
@ -107,6 +107,7 @@ static const PlainGameDescriptor s_sciGameTitles[] = {
{"kq7", "King's Quest VII: The Princeless Bride"}, {"kq7", "King's Quest VII: The Princeless Bride"},
// TODO: King's Questions // TODO: King's Questions
{"lsl6hires", "Leisure Suit Larry 6: Shape Up or Slip Out!"}, {"lsl6hires", "Leisure Suit Larry 6: Shape Up or Slip Out!"},
{"mothergoosehires","Mixed-Up Mother Goose"},
{"phantasmagoria", "Phantasmagoria"}, {"phantasmagoria", "Phantasmagoria"},
{"pqswat", "Police Quest: SWAT"}, {"pqswat", "Police Quest: SWAT"},
{"shivers", "Shivers"}, {"shivers", "Shivers"},
@ -169,6 +170,7 @@ static const GameIdStrToEnum s_gameIdStrToEnum[] = {
{ "lsl6hires", GID_LSL6HIRES }, { "lsl6hires", GID_LSL6HIRES },
{ "lsl7", GID_LSL7 }, { "lsl7", GID_LSL7 },
{ "mothergoose", GID_MOTHERGOOSE }, { "mothergoose", GID_MOTHERGOOSE },
{ "mothergoosehires",GID_MOTHERGOOSEHIRES },
{ "msastrochicken", GID_MSASTROCHICKEN }, { "msastrochicken", GID_MSASTROCHICKEN },
{ "pepper", GID_PEPPER }, { "pepper", GID_PEPPER },
{ "phantasmagoria", GID_PHANTASMAGORIA }, { "phantasmagoria", GID_PHANTASMAGORIA },

View file

@ -1912,7 +1912,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
#ifdef ENABLE_SCI32 #ifdef ENABLE_SCI32
// Mixed-Up Mother Goose Deluxe - English Windows/DOS CD (supplied by markcoolio in bug report #2723810) // Mixed-Up Mother Goose Deluxe - English Windows/DOS CD (supplied by markcoolio in bug report #2723810)
// Executable scanning reports "2.100.002" // Executable scanning reports "2.100.002"
{"mothergoose", "", { {"mothergoosehires", "", {
{"resource.map", 0, "5159a1578c4306bfe070a3e4d8c2e1d3", 4741}, {"resource.map", 0, "5159a1578c4306bfe070a3e4d8c2e1d3", 4741},
{"resource.000", 0, "1926925c95d82f0999590e93b02887c5", 15150768}, {"resource.000", 0, "1926925c95d82f0999590e93b02887c5", 15150768},
{NULL, 0, NULL, 0}}, {NULL, 0, NULL, 0}},
@ -1920,7 +1920,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
// Mixed-Up Mother Goose Deluxe - Multilingual Windows CD (English/French/German/Spanish) // Mixed-Up Mother Goose Deluxe - Multilingual Windows CD (English/French/German/Spanish)
// Executable scanning reports "2.100.002" // Executable scanning reports "2.100.002"
{"mothergoose", "", { {"mothergoosehires", "", {
{"resmap.000", 0, "ef611af561898dcfea87846919ebf3eb", 4969}, {"resmap.000", 0, "ef611af561898dcfea87846919ebf3eb", 4969},
{"ressci.000", 0, "227685bc59d90821978d330713e44a7a", 17205800}, {"ressci.000", 0, "227685bc59d90821978d330713e44a7a", 17205800},
{NULL, 0, NULL, 0}}, {NULL, 0, NULL, 0}},

View file

@ -416,6 +416,8 @@ static SciKernelMapEntry s_kernelMap[] = {
{ MAP_CALL(Said), SIG_EVERYWHERE, "[r0]", NULL, NULL }, { MAP_CALL(Said), SIG_EVERYWHERE, "[r0]", NULL, NULL },
{ MAP_CALL(SaveGame), SIG_EVERYWHERE, "rir(r)", NULL, NULL }, { MAP_CALL(SaveGame), SIG_EVERYWHERE, "rir(r)", NULL, NULL },
{ MAP_CALL(ScriptID), SIG_EVERYWHERE, "[io](i)", NULL, NULL }, { MAP_CALL(ScriptID), SIG_EVERYWHERE, "[io](i)", NULL, NULL },
{ MAP_CALL(SetCursor), SIG_SCI21, SIGFOR_ALL, "i(i)([io])(i*)", NULL, NULL },
// TODO: SCI2.1 may supply an object optionally (mother goose sci21 right on startup) - find out why
{ MAP_CALL(SetCursor), SIG_EVERYWHERE, "i(i*)", NULL, NULL }, { MAP_CALL(SetCursor), SIG_EVERYWHERE, "i(i*)", NULL, NULL },
{ MAP_CALL(SetDebug), SIG_EVERYWHERE, "(i*)", NULL, NULL }, { MAP_CALL(SetDebug), SIG_EVERYWHERE, "(i*)", NULL, NULL },
{ MAP_CALL(SetJump), SIG_EVERYWHERE, "oiii", NULL, NULL }, { MAP_CALL(SetJump), SIG_EVERYWHERE, "oiii", NULL, NULL },

View file

@ -169,7 +169,7 @@ static bool validate_variable(reg_t *r, reg_t *stack_base, int type, int max, in
} else { } else {
// WORKAROUND: Mixed-Up Mother Goose tries to use an invalid parameter in Event::new(). // WORKAROUND: Mixed-Up Mother Goose tries to use an invalid parameter in Event::new().
// Just skip around it here so we don't error out in validate_arithmetic. // Just skip around it here so we don't error out in validate_arithmetic.
if (g_sci->getGameId() == GID_MOTHERGOOSE && getSciVersion() <= SCI_VERSION_1_1 && type == VAR_PARAM && index == 1) if (g_sci->getGameId() == GID_MOTHERGOOSE && type == VAR_PARAM && index == 1)
return false; return false;
debugC(2, kDebugLevelVM, "%s", txt.c_str()); debugC(2, kDebugLevelVM, "%s", txt.c_str());

View file

@ -97,6 +97,8 @@ const SciWorkaroundEntry uninitializedReadWorkarounds[] = {
{ GID_LSL6HIRES, 0, 85, 0, "LL6Inv", "init", -1, 0, { WORKAROUND_FAKE, 0 } }, // on startup { GID_LSL6HIRES, 0, 85, 0, "LL6Inv", "init", -1, 0, { WORKAROUND_FAKE, 0 } }, // on startup
{ GID_LSL6HIRES, -1, 64950, 1, "Feature", "handleEvent", -1, 0, { WORKAROUND_FAKE, 0 } }, // at least when entering swimming pool area { GID_LSL6HIRES, -1, 64950, 1, "Feature", "handleEvent", -1, 0, { WORKAROUND_FAKE, 0 } }, // at least when entering swimming pool area
{ GID_LSL6HIRES, -1, 64964, 0, "DPath", "init", -1, 1, { WORKAROUND_FAKE, 0 } }, // during the game { GID_LSL6HIRES, -1, 64964, 0, "DPath", "init", -1, 1, { WORKAROUND_FAKE, 0 } }, // during the game
{ GID_MOTHERGOOSEHIRES,-1,64950, 1, "Feature", "handleEvent", -1, 0, { WORKAROUND_FAKE, 0 } }, // right when clicking on a child at the start and probably also later
{ GID_MOTHERGOOSEHIRES,-1,64950, 1, "View", "handleEvent", -1, 0, { WORKAROUND_FAKE, 0 } }, // see above
{ GID_QFG2, -1, 71, 0, "theInvSheet", "doit", -1, 1, { WORKAROUND_FAKE, 0 } }, // accessing the inventory { GID_QFG2, -1, 71, 0, "theInvSheet", "doit", -1, 1, { WORKAROUND_FAKE, 0 } }, // accessing the inventory
{ GID_SQ1, 103, 103, 0, "hand", "internalEvent", -1, 1, { WORKAROUND_FAKE, 0 } }, // spanish (and maybe early versions?) only: when moving cursor over input pad { GID_SQ1, 103, 103, 0, "hand", "internalEvent", -1, 1, { WORKAROUND_FAKE, 0 } }, // spanish (and maybe early versions?) only: when moving cursor over input pad
{ GID_SQ1, 103, 103, 0, "hand", "internalEvent", -1, 2, { WORKAROUND_FAKE, 0 } }, // spanish (and maybe early versions?) only: when moving cursor over input pad { GID_SQ1, 103, 103, 0, "hand", "internalEvent", -1, 2, { WORKAROUND_FAKE, 0 } }, // spanish (and maybe early versions?) only: when moving cursor over input pad

View file

@ -143,6 +143,7 @@ enum SciGameId {
GID_LSL6HIRES, // We have a separate ID for LSL6 SCI32, because it's actually a completely different game GID_LSL6HIRES, // We have a separate ID for LSL6 SCI32, because it's actually a completely different game
GID_LSL7, GID_LSL7,
GID_MOTHERGOOSE, GID_MOTHERGOOSE,
GID_MOTHERGOOSEHIRES, // We have a separate ID for Mother Goose SCI32, because it's actually a completely different game
GID_MSASTROCHICKEN, GID_MSASTROCHICKEN,
GID_PEPPER, GID_PEPPER,
GID_PHANTASMAGORIA, GID_PHANTASMAGORIA,