diff options
-rw-r--r-- | engines/agos/agos.cpp | 7 | ||||
-rw-r--r-- | engines/agos/game.cpp | 84 | ||||
-rw-r--r-- | engines/agos/midiparser_s1d.cpp | 2 | ||||
-rw-r--r-- | engines/agos/res.cpp | 63 |
4 files changed, 115 insertions, 41 deletions
diff --git a/engines/agos/agos.cpp b/engines/agos/agos.cpp index 33cf41f446..5f70b5266f 100644 --- a/engines/agos/agos.cpp +++ b/engines/agos/agos.cpp @@ -616,7 +616,7 @@ void AGOSEngine::setupGame() { #else _vgaMemSize = gVars->memory[kMemSimon1Games]; #endif - _itemMemSize = 64000; + _itemMemSize = 80000; _tableMemSize = 50000; _frameRate = 4; _vgaBaseDelay = 1; @@ -645,7 +645,7 @@ void AGOSEngine::setupGame() { _vgaMemSize = gVars->memory[kMemSimon1Games]; #endif _itemMemSize = 64000; - _tableMemSize = 80000; + _tableMemSize = 256000; _frameRate = 4; _vgaBaseDelay = 1; _numVars = 512; @@ -2364,6 +2364,9 @@ void AGOSEngine::loadMusic(uint music) { midi.startTrack (0); } else { + if (getPlatform() == Common::kPlatformAmiga) + return; + midi.stop(); midi.setLoop (true); // Must do this BEFORE loading music. (GMF may have its own override.) diff --git a/engines/agos/game.cpp b/engines/agos/game.cpp index f3926e633f..c46fb999c5 100644 --- a/engines/agos/game.cpp +++ b/engines/agos/game.cpp @@ -169,6 +169,11 @@ namespace AGOS { using Common::ADGameFileDescription; using Common::ADGameDescription; +static ADGameFileDescription ELVIRA1AMIGA_GameFiles[] = { + { "gameamiga", GAME_BASEFILE, "7bdaff4a118d8035047cf9b1393b3fa0"}, + { "icon.dat", GAME_ICONFILE, "2db931e84f1ca01f0816dddfae3f49e1"}, +}; + static ADGameFileDescription ELVIRA1DOS_GameFiles[] = { { "gamepc", GAME_BASEFILE, "a49e132a1f18306dd5d1ec2fe435e178"}, { "icon.dat", GAME_ICONFILE, "fda48c9da7f3e72d0313e2f5f760fc45"}, @@ -181,6 +186,13 @@ static ADGameFileDescription ELVIRA1DOS2_GameFiles[] = { { "tbllist", GAME_TBLFILE, "319f6b227c7822a551f57d24e70f8149"}, }; +static ADGameFileDescription ELVIRA2AMIGA_GameFiles[] = { + { "gameamiga", GAME_BASEFILE, "4aa163967f5d2bd319f8350d6af03186"}, + { "icon.dat", GAME_ICONFILE, "a88b1c02e13ab04dd790ec30502c323d"}, + { "stripped.txt", GAME_STRFILE, "41c975a9c1106cb5298a0bc3df0a266e"}, + { "tbllist", GAME_TBLFILE, "177f5f2640e80ef92d1421d32de06a5e"}, +}; + static ADGameFileDescription ELVIRA2DOS_GameFiles[] = { { "gamepc", GAME_BASEFILE, "3313254722031b22d833a2cf45a91fd7"}, { "icon.dat", GAME_ICONFILE, "83a7278bff55c82fbb3aef92981866c9"}, @@ -195,6 +207,14 @@ static ADGameFileDescription ELVIRA2DOS_FR_GameFiles[] = { { "tbllist", GAME_TBLFILE, "8252660df0edbdbc3e6377e155bbd0c5"}, }; +static ADGameFileDescription WAXWORKSAMIGA_GameFiles[] = { + { "gameamiga", GAME_BASEFILE, "e6207a69cf7356f13acbe8d14bdd844e"}, // Unpacked version + { "icon.pkd", GAME_ICONFILE, "4822a91c18b1b2005ac17fc617f7dcbe"}, + { "stripped.txt", GAME_STRFILE, "6faaebff2786216900061eeb978f10af"}, + { "tbllist", GAME_TBLFILE, "95c44bfc380770a6b6dd0dfcc69e80a0"}, + { "xtbllist", GAME_XTBLFILE, "6c7b3db345d46349a5226f695c03e20f"}, +}; + static ADGameFileDescription WAXWORKSDOS_GameFiles[] = { { "gamepc", GAME_BASEFILE, "7751e9358e894e32ef40ef3b3bae0f2a"}, { "icon.dat", GAME_ICONFILE, "ef1b8ad3494cf103dc10a99fe152ef9a"}, @@ -648,7 +668,23 @@ static ADGameFileDescription SWAMPY_GameFiles[] = { }; static AGOSGameDescription gameDescriptions[] = { - // Elvira - English Floppy + // Elvira - English Amiga Floppy + { + { + "elvira", + "Floppy", + ARRAYSIZE(ELVIRA1AMIGA_GameFiles), + ELVIRA1AMIGA_GameFiles, + Common::EN_ANY, + Common::kPlatformAmiga, + }, + + GType_ELVIRA, + GID_ELVIRA, + GF_OLD_BUNDLE | GF_CRUNCHED, + }, + + // Elvira - English DOS Floppy { { "elvira", @@ -664,7 +700,7 @@ static AGOSGameDescription gameDescriptions[] = { GF_OLD_BUNDLE, }, - // Elvira - English Floppy Alternative? + // Elvira - English DOS Floppy Alternative? { { "elvira", @@ -680,7 +716,23 @@ static AGOSGameDescription gameDescriptions[] = { GF_OLD_BUNDLE, }, - // Elvira 2 - English Floppy + // Elvira 2 - English Amiga Floppy + { + { + "elvira2", + "Floppy", + ARRAYSIZE(ELVIRA2AMIGA_GameFiles), + ELVIRA2AMIGA_GameFiles, + Common::EN_ANY, + Common::kPlatformAmiga, + }, + + GType_ELVIRA2, + GID_ELVIRA2, + GF_OLD_BUNDLE | GF_CRUNCHED, + }, + + // Elvira 2 - English DOS Floppy { { "elvira2", @@ -696,7 +748,7 @@ static AGOSGameDescription gameDescriptions[] = { GF_OLD_BUNDLE, }, - // Elvira 2 - French Floppy + // Elvira 2 - French DOS Floppy { { "elvira2", @@ -712,7 +764,23 @@ static AGOSGameDescription gameDescriptions[] = { GF_OLD_BUNDLE, }, - // Waxworks - English Floppy + // Waxworks - English Amiga Floppy + { + { + "waxworks", + "Floppy", + ARRAYSIZE(WAXWORKSAMIGA_GameFiles), + WAXWORKSAMIGA_GameFiles, + Common::EN_ANY, + Common::kPlatformAmiga, + }, + + GType_WW, + GID_WAXWORKS, + GF_OLD_BUNDLE | GF_CRUNCHED, + }, + + // Waxworks - English DOS Floppy { { "waxworks", @@ -760,7 +828,7 @@ static AGOSGameDescription gameDescriptions[] = { GF_TALKIE, }, - // Simon the Sorcerer 1 - English AGA Floppy + // Simon the Sorcerer 1 - English Amiga AGA Floppy { { "simon1", @@ -776,7 +844,7 @@ static AGOSGameDescription gameDescriptions[] = { GF_CRUNCHED | GF_OLD_BUNDLE, }, - // Simon the Sorcerer 1 - French AGA Floppy + // Simon the Sorcerer 1 - French Amiga AGA Floppy { { "simon1", @@ -792,7 +860,7 @@ static AGOSGameDescription gameDescriptions[] = { GF_CRUNCHED | GF_OLD_BUNDLE, }, - // Simon the Sorcerer 1 - German AGA Floppy + // Simon the Sorcerer 1 - German Amiga AGA Floppy { { "simon1", diff --git a/engines/agos/midiparser_s1d.cpp b/engines/agos/midiparser_s1d.cpp index d00339bba3..fca369dfda 100644 --- a/engines/agos/midiparser_s1d.cpp +++ b/engines/agos/midiparser_s1d.cpp @@ -115,7 +115,7 @@ void MidiParser_S1D::parseNextEvent(EventInfo &info) { // OTherwise fall through to default. default: - debug(3, "MidiParser_S1D: Unexpected byte 0x%02X found", (int) info.command()); + debug(6, "MidiParser_S1D: Unexpected byte 0x%02X found", (int) info.command()); break; } } diff --git a/engines/agos/res.cpp b/engines/agos/res.cpp index d2ee19e951..805b53baf7 100644 --- a/engines/agos/res.cpp +++ b/engines/agos/res.cpp @@ -173,7 +173,8 @@ void AGOSEngine::loadGamePcFile() { in.close(); - if (getGameType() == GType_PP) + if ((getGameType() == GType_ELVIRA && getPlatform() == Common::kPlatformAmiga) || + getGameType() == GType_PP) return; /* Read list of TABLE resources */ @@ -210,42 +211,42 @@ void AGOSEngine::loadGamePcFile() { in.read(_strippedTxtMem, file_size); in.close(); - if (getGameType() != GType_WW) - return; - - /* Read list of ROOM ITEMS resources */ - in.open(getFileName(GAME_RMSLFILE)); - if (in.isOpen() == false) { - error("loadGamePcFile: Can't load room resources file '%s'", getFileName(GAME_XTBLFILE)); - } - - file_size = in.size(); + if (getGameType() == GType_WW && getPlatform() == Common::kPlatformPC) { + /* Read list of ROOM ITEMS resources */ + in.open(getFileName(GAME_RMSLFILE)); + if (in.isOpen() == false) { + error("loadGamePcFile: Can't load room resources file '%s'", getFileName(GAME_XTBLFILE)); + } - _roomsList = (byte *)malloc(file_size); - if (_roomsList == NULL) - error("loadGamePcFile: Out of memory for room items list"); - in.read(_roomsList, file_size); - in.close(); + file_size = in.size(); - /* Read list of XTABLE resources */ - in.open(getFileName(GAME_XTBLFILE)); - if (in.isOpen() == false) { - error("loadGamePcFile: Can't load xtable resources file '%s'", getFileName(GAME_XTBLFILE)); + _roomsList = (byte *)malloc(file_size); + if (_roomsList == NULL) + error("loadGamePcFile: Out of memory for room items list"); + in.read(_roomsList, file_size); + in.close(); } - file_size = in.size(); + if (getGameType() == GType_WW) { + /* Read list of XTABLE resources */ + in.open(getFileName(GAME_XTBLFILE)); + if (in.isOpen() == false) { + error("loadGamePcFile: Can't load xtable resources file '%s'", getFileName(GAME_XTBLFILE)); + } - _xtblList = (byte *)malloc(file_size); - if (_xtblList == NULL) - error("loadGamePcFile: Out of memory for strip xtable list"); - in.read(_xtblList, file_size); - in.close(); + file_size = in.size(); - /* Remember the current state */ - _xsubroutineListOrg = _subroutineList; - _xtablesHeapPtrOrg = _tablesHeapPtr; - _xtablesHeapCurPosOrg = _tablesHeapCurPos; + _xtblList = (byte *)malloc(file_size); + if (_xtblList == NULL) + error("loadGamePcFile: Out of memory for strip xtable list"); + in.read(_xtblList, file_size); + in.close(); + /* Remember the current state */ + _xsubroutineListOrg = _subroutineList; + _xtablesHeapPtrOrg = _tablesHeapPtr; + _xtablesHeapCurPosOrg = _tablesHeapCurPos; + } } void AGOSEngine::readGamePcText(Common::File *in) { @@ -668,6 +669,8 @@ void AGOSEngine::loadVGAFile(uint id, uint type) { if (getPlatform() == Common::kPlatformAmiga) { if (getFeatures() & GF_TALKIE) sprintf(filename, "%.3d%d.out", id, type); + else if (getGameType() == GType_ELVIRA || getGameType() == GType_ELVIRA2) + sprintf(filename, "%.2d%d.pkd", id, type); else sprintf(filename, "%.3d%d.pkd", id, type); } else { |