aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/agos/agos.cpp7
-rw-r--r--engines/agos/game.cpp84
-rw-r--r--engines/agos/midiparser_s1d.cpp2
-rw-r--r--engines/agos/res.cpp63
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 {