From 6be8956d2c253770ee1001838cd9d7019a58a5fc Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 3 Jun 2004 01:28:22 +0000 Subject: [PATCH] Phase 2 of switching HE to use _heversion. Now unneeded GID's are eliminated. svn-id: r13927 --- scumm/script_v6he.cpp | 9 ++++ scumm/script_v7he.cpp | 10 ++++- scumm/scumm.cpp | 96 +++++++++++++++++++++---------------------- scumm/scumm.h | 10 ++--- 4 files changed, 68 insertions(+), 57 deletions(-) diff --git a/scumm/script_v6he.cpp b/scumm/script_v6he.cpp index 60ee5ccaa61..b77601563c8 100644 --- a/scumm/script_v6he.cpp +++ b/scumm/script_v6he.cpp @@ -40,6 +40,15 @@ namespace Scumm { +// Compatibility notes: +// +// FBEAR (fbear, fbeardemo) +// transparency in akos.cpp +// negative size in file read/write +// PUTTDEMO (puttdemo) +// startSound issue -- check +// actorOps sub 86 -- check + #define OPCODE(x) { &ScummEngine_v6he::x, #x } void ScummEngine_v6he::setupOpcodes() { diff --git a/scumm/script_v7he.cpp b/scumm/script_v7he.cpp index f150895f0b0..896240e4cb8 100644 --- a/scumm/script_v7he.cpp +++ b/scumm/script_v7he.cpp @@ -40,6 +40,12 @@ namespace Scumm { +// Compatibility notes: +// +// FREDDEMO (freddemo) +// stringLen is completely different +// unknownF4 is completely different + #define OPCODE(x) { &ScummEngine_v7he::x, #x } void ScummEngine_v7he::setupOpcodes() { @@ -426,7 +432,7 @@ void ScummEngine_v7he::o7_stringLen() { return; } - if (_heversion >= 60) { + if (_gameId == GID_FREDDEMO) { len = strlen((char *)getStringAddress(a)); } else { // FREDDI, PUTTMOON len = stringLen(addr); @@ -473,7 +479,7 @@ void ScummEngine_v7he::o7_readINI() { } void ScummEngine_v7he::o7_unknownF4() { - if (_heversion >= 60) { + if (_gameId == GID_FREDDEMO) { byte b; int len; b = fetchScriptByte(); diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp index 3333362a28d..205d1afa28e 100644 --- a/scumm/scumm.cpp +++ b/scumm/scumm.cpp @@ -192,17 +192,17 @@ static const ScummGameSettings scumm_settings[] = { #endif // Humongous Entertainment Scumm Version 6 - {"puttputt", "Putt-Putt Joins The Parade", GID_PUTTPUTT, 6, 60, MDT_ADLIB | MDT_NATIVE, + {"puttputt", "Putt-Putt Joins The Parade", GID_HEGAME, 6, 60, MDT_ADLIB | MDT_NATIVE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, {"puttdemo", "Putt-Putt Joins The Parade (Demo)", GID_PUTTDEMO, 6, 60, MDT_ADLIB | MDT_NATIVE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS, 0}, - {"moondemo", "Putt-Putt Goes To The Moon (Demo)", GID_PUTTMOON, 6, 60, MDT_ADLIB | MDT_NATIVE, + {"moondemo", "Putt-Putt Goes To The Moon (Demo)", GID_HEGAME, 6, 60, MDT_ADLIB | MDT_NATIVE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"puttmoon", "Putt-Putt Goes To The Moon", GID_PUTTMOON, 6, 60, MDT_ADLIB | MDT_NATIVE, + {"puttmoon", "Putt-Putt Goes To The Moon", GID_HEGAME, 6, 60, MDT_ADLIB | MDT_NATIVE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"funpack", "Putt-Putt's Fun Pack", GID_PUTTMOON, 6, 60, MDT_ADLIB | MDT_NATIVE, + {"funpack", "Putt-Putt's Fun Pack", GID_HEGAME, 6, 60, MDT_ADLIB | MDT_NATIVE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"fbpack", "Fatty Bear's Fun Pack", GID_FBPACK, 6, 60, MDT_ADLIB | MDT_NATIVE, + {"fbpack", "Fatty Bear's Fun Pack", GID_HEGAME, 6, 60, MDT_ADLIB | MDT_NATIVE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, {"fbear", "Fatty Bear's Birthday Surprise", GID_FBEAR, 6, 60, MDT_ADLIB | MDT_NATIVE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, @@ -213,109 +213,109 @@ static const ScummGameSettings scumm_settings[] = { /* Note that both full versions of Humongous games and demos were often released for * several interpreter versions... */ // Humongous Entertainment Scumm Version 7 - {"catalog", "Humongous Interactive Catalog", GID_PUTTPUTT, 6, 60, MDT_NONE, + {"catalog", "Humongous Interactive Catalog", GID_HEGAME, 6, 60, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"farm", "Let's Explore the Farm with Buzzy", GID_PUTTPUTT, 6, 60, MDT_NONE, + {"farm", "Let's Explore the Farm with Buzzy", GID_HEGAME, 6, 60, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"farmdemo", "Let's Explore the Farm with Buzzy (Demo)", GID_PUTTPUTT, 6, 60, MDT_NONE, + {"farmdemo", "Let's Explore the Farm with Buzzy (Demo)", GID_HEGAME, 6, 60, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"airport", "Let's Explore the Airport with Buzzy", GID_PUTTPUTT, 6, 60, MDT_NONE, + {"airport", "Let's Explore the Airport with Buzzy", GID_HEGAME, 6, 60, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"airdemo", "Let's Explore the Airport with Buzzy (Demo)", GID_PUTTPUTT, 6, 60, MDT_NONE, + {"airdemo", "Let's Explore the Airport with Buzzy (Demo)", GID_HEGAME, 6, 60, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"jungle", "Let's Explore the Jungle with Buzzy", GID_PUTTPUTT, 6, 60, MDT_NONE, + {"jungle", "Let's Explore the Jungle with Buzzy", GID_HEGAME, 6, 60, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"puttzoo", "Putt-Putt Saves the Zoo", GID_PUTTPUTT, 6, 60, MDT_NONE, + {"puttzoo", "Putt-Putt Saves the Zoo", GID_HEGAME, 6, 60, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"freddi", "Freddi Fish 1: The Case of the Missing Kelp Seeds", GID_FREDDI, 6, 60, MDT_NONE, + {"freddi", "Freddi Fish 1: The Case of the Missing Kelp Seeds", GID_HEGAME, 6, 60, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_DEFAULT_TO_1X_SCALER, 0}, // Humongous Entertainment Scumm Version 8.0 ? Scummsrc.80 - {"zoodemo", "Putt-Putt Saves the Zoo (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"zoodemo", "Putt-Putt Saves the Zoo (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_DEFAULT_TO_1X_SCALER, 0}, {"freddemo", "Freddi Fish 1: The Case of the Missing Kelp Seeds (Demo)", GID_FREDDEMO, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_DEFAULT_TO_1X_SCALER, 0}, - {"ff2-demo", "Freddi Fish 2: The Case of the Haunted Schoolhouse (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"ff2-demo", "Freddi Fish 2: The Case of the Haunted Schoolhouse (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_DEFAULT_TO_1X_SCALER, 0}, - {"freddi2", "Freddi Fish 2: The Case of the Haunted Schoolhouse", GID_PJSDEMO, 6, 70, MDT_NONE, + {"freddi2", "Freddi Fish 2: The Case of the Haunted Schoolhouse", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_DEFAULT_TO_1X_SCALER, 0}, - {"maze", "Freddi Fish and Luther's Maze Madness", GID_PJSDEMO, 6, 70, MDT_NONE, + {"maze", "Freddi Fish and Luther's Maze Madness", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_DEFAULT_TO_1X_SCALER, 0}, - {"water", "Freddi Fish and Luther's Water Worries", GID_PJSDEMO, 6, 70, MDT_NONE, + {"water", "Freddi Fish and Luther's Water Worries", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_DEFAULT_TO_1X_SCALER, 0}, - {"pjs-demo", "Pajama Sam 1: No Need to Hide When It's Dark Outside (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"pjs-demo", "Pajama Sam 1: No Need to Hide When It's Dark Outside (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_DEFAULT_TO_1X_SCALER, 0}, - {"socks", "Pajama Sam's Sock Works", GID_PJSDEMO, 6, 70, MDT_NONE, + {"socks", "Pajama Sam's Sock Works", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_DEFAULT_TO_1X_SCALER, 0}, //Not checked - {"ffhsdemo", "Freddi Fish 2: The Case of the Haunted Schoolhouse (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"ffhsdemo", "Freddi Fish 2: The Case of the Haunted Schoolhouse (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_DEFAULT_TO_1X_SCALER, 0}, // Resource changed - {"pajama", "Pajama Sam 1: No Need to Hide When It's Dark Outside", GID_PJSDEMO, 6, 70, MDT_NONE, + {"pajama", "Pajama Sam 1: No Need to Hide When It's Dark Outside", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_DEFAULT_TO_1X_SCALER, 0}, // Humongous Entertainment Scumm Version 9.0 ? Scummsys.90 - {"kinddemo", "Big Thinkers Kindergarten (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"kinddemo", "Big Thinkers Kindergarten (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"1grademo", "Big Thinkers First Grade (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"1grademo", "Big Thinkers First Grade (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"f3-mdemo", "Freddi Fish 3: The Case of the Stolen Conch Shell (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"f3-mdemo", "Freddi Fish 3: The Case of the Stolen Conch Shell (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"timedemo", "Putt-Putt Travels Through Time (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"timedemo", "Putt-Putt Travels Through Time (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"spyfox", "Spyfox 1: Dry Cereal", GID_PJSDEMO, 6, 70, MDT_NONE, + {"spyfox", "Spyfox 1: Dry Cereal", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"foxdemo", "Spyfox 1: Dry Cereal (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"foxdemo", "Spyfox 1: Dry Cereal (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"spydemo", "Spyfox 1: Dry Cereal (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"spydemo", "Spyfox 1: Dry Cereal (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, // Humongous Entertainment Scumm Version 9.5 ? Scummsys.95 - {"pj2demo", "Pajama Sam 2: Thunder and Lightning Aren't so Frightening (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"pj2demo", "Pajama Sam 2: Thunder and Lightning Aren't so Frightening (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"pajama2", "Pajama Sam 2: Thunder and Lightning Aren't so Frightening", GID_PJSDEMO, 6, 70, MDT_NONE, + {"pajama2", "Pajama Sam 2: Thunder and Lightning Aren't so Frightening", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"chase", "Spy Fox in Cheese Chase Game", GID_PJSDEMO, 6, 70, MDT_NONE, + {"chase", "Spy Fox in Cheese Chase Game", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, // Humongous Entertainment Scumm Version 9.8 ? Scummsys.98 // these and later games can easily be identified by the .(a) file instead of a .he1 - {"freddi4", "Freddi Fish 4: The Case of the Hogfish Rustlers of Briny Gulch", GID_PJSDEMO, 6, 70, MDT_NONE, + {"freddi4", "Freddi Fish 4: The Case of the Hogfish Rustlers of Briny Gulch", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"f4-demo", "Freddi Fish 4: The Case of the Hogfish Rustlers of Briny Gulch (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"f4-demo", "Freddi Fish 4: The Case of the Hogfish Rustlers of Briny Gulch (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"lost", "Pajama Sam's Lost & Found", GID_PJSDEMO, 6, 70, MDT_NONE, + {"lost", "Pajama Sam's Lost & Found", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"racedemo", "Putt-Putt Enters the Race (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"racedemo", "Putt-Putt Enters the Race (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"puttrace", "Putt-Putt Enters the Race", GID_PJSDEMO, 6, 70, MDT_NONE, + {"puttrace", "Putt-Putt Enters the Race", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, // Humongous Entertainment Scumm Version 9.9 ? Scummsys.99 - {"sf2-demo", "Spyfox 2: Some Assembly Required (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"sf2-demo", "Spyfox 2: Some Assembly Required (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"spyfox2", "Spyfox 2: Some Assembly Required", GID_PJSDEMO, 6, 70, MDT_NONE, + {"spyfox2", "Spyfox 2: Some Assembly Required", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"mustard", "Spy Fox in Hold the Mustard", GID_PJSDEMO, 6, 70, MDT_NONE, + {"mustard", "Spy Fox in Hold the Mustard", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, // Humongous Entertainment Scumm Version ? engine moved to c++ - {"ff5demo", "Freddi Fish 5: The Case of the Creature of Coral Cave (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"ff5demo", "Freddi Fish 5: The Case of the Creature of Coral Cave (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"freddicove", "Freddi Fish 5: The Case of the Creature of Coral Cave", GID_PJSDEMO, 6, 70, MDT_NONE, + {"freddicove", "Freddi Fish 5: The Case of the Creature of Coral Cave", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"pj3-demo", "Pajama Sam 3: You Are What You Eat From Your Head to Your Feet (Demo)", GID_PJSDEMO, 6, 70, MDT_NONE, + {"pj3-demo", "Pajama Sam 3: You Are What You Eat From Your Head to Your Feet (Demo)", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"pajama3", "Pajama Sam 3: You Are What You Eat From Your Head to Your Feet", GID_PJSDEMO, 6, 70, MDT_NONE, + {"pajama3", "Pajama Sam 3: You Are What You Eat From Your Head to Your Feet", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"dog", "Putt-Putt and Pep's Dog on a Stick", GID_PJSDEMO, 6, 70, MDT_NONE, + {"dog", "Putt-Putt and Pep's Dog on a Stick", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"PuttsFunShop", "Putt-Putt's One-Stop Fun Shop", GID_PJSDEMO, 6, 70, MDT_NONE, + {"PuttsFunShop", "Putt-Putt's One-Stop Fun Shop", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"putttime", "Putt-Putt Travels Through Time", GID_PJSDEMO, 6, 70, MDT_NONE, + {"putttime", "Putt-Putt Travels Through Time", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, - {"spyozon", "Spyfox 3: Operation Ozone", GID_PJSDEMO, 6, 70, MDT_NONE, + {"spyozon", "Spyfox 3: Operation Ozone", GID_HEGAME, 6, 70, MDT_NONE, GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0}, #endif {NULL, NULL, 0, 0, 0, MDT_NONE, 0, 0} diff --git a/scumm/scumm.h b/scumm/scumm.h index 7a6ecd3a1e2..f51ef67e33f 100644 --- a/scumm/scumm.h +++ b/scumm/scumm.h @@ -241,14 +241,10 @@ enum ScummGameId { GID_CMI, GID_MANIAC, GID_ZAK, - GID_PUTTPUTT, - GID_PUTTDEMO, - GID_PUTTMOON, - GID_FBEAR, - GID_PJSDEMO, GID_MONKEY_SEGA, - GID_FBPACK, - GID_FREDDI, + GID_HEGAME, // Generic name for all HE games with default behaviour + GID_PUTTDEMO, + GID_FBEAR, GID_FREDDEMO };