GLK: SCOTT: Add support for Sorcerer of Claymorgue Castle

This commit is contained in:
Avijeet 2022-06-22 12:42:57 +05:30 committed by Eugene Sandulenko
parent 98d5b72442
commit ecae491c20
7 changed files with 155 additions and 3 deletions

View File

@ -97,11 +97,20 @@ static C64Rec g_C64Registry[] = {
{ GREMLINS_GERMAN_C64, 0xc003, 0x558c, TYPE_T64, 1, nullptr, nullptr, 0, 0xd801, 0xc6c0, 0x1f00 }, // German Gremlins C64 (T64) version * TBC Multicompactor v2.x
{ GREMLINS_GERMAN_C64, 0x2ab00, 0x6729, TYPE_D64, 2, nullptr, nullptr, 0, 0xdc02, 0xcac1, 0x1f00 }, // German Gremlins C64 (D64) version * Exomizer
{SEAS_OF_BLOOD_C64, 0xa209, 0xf115, TYPE_T64, 6, "-e0x1000", nullptr, 3, 0xd802, 0xb07c, 0x2000}, // Seas of Blood C64 (T64) MasterCompressor / Relax -> ECA
{ SEAS_OF_BLOOD_C64, 0xa209, 0xf115, TYPE_T64, 6, "-e0x1000", nullptr, 3, 0xd802, 0xb07c, 0x2000 }, // Seas of Blood C64 (T64) MasterCompressor / Relax -> ECA
// Compacker -> Unknown -> MasterCompressor / Relax -> ECA
// Compacker -> CCS Packer
{SEAS_OF_BLOOD_C64, 0x2ab00, 0x5c1d, TYPE_D64, 1, nullptr, nullptr, 0, 0xd802, 0xb07c, 0x2000}, // Seas of Blood C64 (D64) CCS Packer
{SEAS_OF_BLOOD_C64, 0x2ab00, 0xe308, TYPE_D64, 1, nullptr, nullptr, 0, 0xd802, 0xb07c, 0x2000}, // Seas of Blood C64 (D64) alt CCS Packer
{ SEAS_OF_BLOOD_C64, 0x2ab00, 0x5c1d, TYPE_D64, 1, nullptr, nullptr, 0, 0xd802, 0xb07c, 0x2000 }, // Seas of Blood C64 (D64) CCS Packer
{ SEAS_OF_BLOOD_C64, 0x2ab00, 0xe308, TYPE_D64, 1, nullptr, nullptr, 0, 0xd802, 0xb07c, 0x2000 }, // Seas of Blood C64 (D64) alt CCS Packer
{ CLAYMORGUE_C64, 0x6ff7, 0xe4ed, TYPE_T64, 3, nullptr, nullptr, 0, 0x855, 0x7352, 0x20}, // Sorcerer Of Claymorgue Castle C64 (T64), MasterCompressor / Relax
// -> ECA Compacker -> MegaByte Cruncher v1.x Missing 17 pictures
{ CLAYMORGUE_C64, 0x912f, 0xa69f, TYPE_T64, 1, nullptr, nullptr, 0, 0x855, 0x7352, 0x20}, // Sorcerer Of Claymorgue Castle C64 (T64) alt, MegaByte Cruncher
// v1.x Missing 17 pictures
{ CLAYMORGUE_C64, 0xc0dd, 0x3701, TYPE_T64, 1, nullptr, nullptr, 0, 0, 0, 0, -0x7fe},// Sorcerer Of Claymorgue Castle C64 (T64) alt 2, Trilogic Expert
// v2.7
{ CLAYMORGUE_C64, 0xbc5f, 0x492c, TYPE_T64, 1, nullptr, nullptr, 0, 0x855, 0x7352, 0x20}, // Sorcerer Of Claymorgue Castle C64 (T64) alt 3, , Section8 Packer
{ CLAYMORGUE_C64, 0x2ab00, 0xfd67, TYPE_D64, 1, nullptr, nullptr, 0, 0x855, 0x7352, 0x20}, // Sorcerer Of Claymorgue Castle C64 (D64), Section8 Packer
{ UNKNOWN_GAME, 0, 0, UNKNOWN_FILE_TYPE, 0, nullptr, nullptr, 0, 0, 0, 0 }
};

View File

@ -189,6 +189,9 @@ const GlkDetectionEntry SCOTT_GAMES[] = {
DT_ENTRY1("seasofblood", "C64", "267c3fe2bb150365de0358f07b5df15c", 174848),
DT_ENTRY1("seasofblood", "C64", "46280fb1d701a41492b8434467c31029", 41481),
//Scott Adams
DT_ENTRY1("claymorguesorcerer","C64", "a1db488c49ad221fa0dc79591cb5a3db", 28663),
// 11 Mysterious Adventures
DT_ENTRY1("mysadv1", "C64", "b4d8fc4eabed4f2400717303561ad0fa", 174848),
DT_ENTRY1("mysadv2", "C64", "3ce5ea1a0473244bf469fd3c51f1dc48", 174848),

View File

@ -134,5 +134,56 @@ void mysterious64Sysmess() {
}
}
void claymorgue64Sysmess() {
SysMessageType messagekey[] = {
NORTH,
SOUTH,
EAST,
WEST,
UP,
DOWN,
EXITS,
YOU_SEE,
YOU_ARE,
TOO_DARK_TO_SEE,
LIGHT_HAS_RUN_OUT,
LIGHT_RUNS_OUT_IN,
TURNS,
I_DONT_KNOW_HOW_TO,
SOMETHING,
I_DONT_KNOW_WHAT_A,
IS,
YOU_CANT_GO_THAT_WAY,
OK,
WHAT_NOW,
HUH,
YOU_HAVE_IT,
YOU_HAVENT_GOT_IT,
INVENTORY,
YOU_DONT_SEE_IT,
THATS_BEYOND_MY_POWER,
DANGEROUS_TO_MOVE_IN_DARK,
DIRECTION,
YOU_FELL_AND_BROKE_YOUR_NECK,
YOURE_CARRYING_TOO_MUCH,
IM_DEAD,
PLAY_AGAIN,
RESUME_A_SAVED_GAME,
IVE_STORED,
TREASURES,
ON_A_SCALE_THAT_RATES,
YOU_CANT_DO_THAT_YET,
I_DONT_UNDERSTAND,
NOTHING,
YOUVE_SOLVED_IT};
for (int i = 0; i < 40; i++) {
_G(_sys)[messagekey[i]] = _G(_systemMessages)[i];
}
_G(_sys)[I_DONT_KNOW_HOW_TO] = "I don't know how to \"";
_G(_sys)[SOMETHING] = "\" something. ";
}
} // End of namespace Scott
} // End of namespace Glk

View File

@ -37,6 +37,7 @@ namespace Glk {
namespace Scott {
void mysterious64Sysmess();
void claymorgue64Sysmess();
} // End of namespace Scott
} // End of namespace Glk

View File

@ -1446,5 +1446,89 @@ const GameInfo _games[NUMGAMES] = {
139, // number_of_pictures;
C64B, // palette
4, // picture_format_version;
0),
GameInfo("The Sorcerer of Claymorgue Castle",
CLAYMORGUE,
NO_TYPE, // type
ENGLISH, // subtype
FIVE_LETTER_UNCOMPRESSED, // dictionary type
75, // Number of items
267, // Number of actions
109, // Number of words
32, // Number of rooms
10, // Max carried items
5, // Word length
79, // Number of messages
110, // number_of_verbs
108, // number_of_nouns;
0x246c, // header
EARLY, // header style
0x3bf6, // room images
FOLLOWS, // item flags
FOLLOWS, // item images
FOLLOWS, // actions
UNCOMPRESSED,
0x4ecf, // dictionary
0x53f7, // start_of_room_descriptions;
0x4d6f, // start_of_room_connections;
0x5605, // start_of_messages;
FOLLOWS, // start_of_item_descriptions;
0x4e35, // start_of_item_locations;
0x24e2, // start_of_system_messages
0x2877, // start of directions
0x6007, // start_of_characters;
0x6807, // start_of_image_data
-0x3fe5, // image_address_offset
37, // number_of_pictures;
ZXOPT, // palette
1, // picture_format_version;
0),
GameInfo("The Sorcerer of Claymorgue Castle C64",
CLAYMORGUE_C64,
NO_TYPE, // type
static_cast<Subtype>(ENGLISH | C64), // subtype
FIVE_LETTER_UNCOMPRESSED, // dictionary type
75, // Number of items
265, // Number of actions
108, // Number of words
32, // Number of rooms
10, // Max carried items
5, // Word length
79, // Number of messages
110, // number_of_verbs
108, // number_of_nouns;
0x47d6, // header
EARLY, // header style
0x471f, // room images
FOLLOWS, // item flags
FOLLOWS, // item images
0x47f0, // actions
UNCOMPRESSED,
0x5891, // dictionary
FOLLOWS, // start_of_room_descriptions;
FOLLOWS, // start_of_room_connections;
FOLLOWS, // start_of_messages;
FOLLOWS, // start_of_item_descriptions;
FOLLOWS, // start_of_item_locations;
0xa2c, // start_of_system_messages
0xa2c, // start of directions
0x6b1a, // start_of_characters;
0x731a, // start_of_image_data
0x6b1a, // image_address_offset
44, // number_of_pictures;
C64B, // palette
1, // picture_format_version;
0)
};

View File

@ -117,6 +117,7 @@ Globals::Globals() : _sys(MAX_SYSMESS), _directions(NUMBER_OF_DIRECTIONS), _extr
_md5Index.setVal("e5d743d8727c8aca011a737bbb5ad818", 21); // gremlins
_md5Index.setVal("267c3fe2bb150365de0358f07b5df15c", 24); // seas of blood
_md5Index.setVal("46280fb1d701a41492b8434467c31029", 23); // seas of blood
_md5Index.setVal("a1db488c49ad221fa0dc79591cb5a3db", 26); // sorcerer of claymorgue castle
}
Globals::~Globals() {

View File

@ -143,6 +143,9 @@ void loadGameFile(Common::SeekableReadStream *f) {
case SEAS_OF_BLOOD_C64:
loadExtraSeasOfBlood64Data();
break;
case CLAYMORGUE_C64:
claymorgue64Sysmess();
break;
case GREMLINS_GERMAN_C64:
loadExtraGermanGremlinsc64Data();
break;