From 6bdd106176abeb409d8b3049f1ac04841906fb81 Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Sun, 11 Feb 2007 02:16:00 +0000 Subject: Add Acorn disk version of Simon the Sorcerer 1. svn-id: r25480 --- engines/agos/agosgame.cpp | 22 ++++++++++++++++++++++ engines/agos/intern.h | 1 + engines/agos/res.cpp | 4 +++- engines/agos/res_snd.cpp | 6 +++++- engines/agos/string.cpp | 4 ++++ engines/agos/subroutine.cpp | 4 ++++ 6 files changed, 39 insertions(+), 2 deletions(-) diff --git a/engines/agos/agosgame.cpp b/engines/agos/agosgame.cpp index 03f7762d3b..9db55855fa 100644 --- a/engines/agos/agosgame.cpp +++ b/engines/agos/agosgame.cpp @@ -394,6 +394,28 @@ static const AGOSGameDescription gameDescriptions[] = { GF_OLD_BUNDLE }, + // Simon the Sorcerer 1 - English Acorn Floppy + { + { + "simon1", + "Floppy", + + { + { "gamebase.dat", GAME_BASEFILE, "c392e494dcabed797b98cbcfc687b33a", -1}, + { "icondata.dat", GAME_ICONFILE, "22107c24dfb31b66ac503c28a6e20b19", -1}, + { "stripped.dat", GAME_STRFILE, "c95a0a1ee973e19c2a1c5d12026c139f", -1}, + { "tbllist.dat", GAME_TBLFILE, "d198a80de2c59e4a0cd24b98814849e8", -1}, + { NULL, 0, NULL, 0} + }, + Common::EN_ANY, + Common::kPlatformAcorn + }, + + GType_SIMON1, + GID_SIMON1ACORN, + GF_OLD_BUNDLE + }, + // Simon the Sorcerer 1 - English Acorn CD Demo { { diff --git a/engines/agos/intern.h b/engines/agos/intern.h index b413807e6c..af25030d5d 100644 --- a/engines/agos/intern.h +++ b/engines/agos/intern.h @@ -234,6 +234,7 @@ enum GameIds { GID_WAXWORKS, GID_SIMON1DOS, + GID_SIMON1ACORN, GID_SIMON1AMIGA, GID_SIMON1CD32, GID_SIMON1TALKIE, diff --git a/engines/agos/res.cpp b/engines/agos/res.cpp index a4d003b29a..559407e98a 100644 --- a/engines/agos/res.cpp +++ b/engines/agos/res.cpp @@ -677,7 +677,9 @@ void AGOSEngine::loadVGAVideoFile(uint id, uint type) { dst = allocBlock(dstSize + extraBuffer); decompressData(filename, dst, offs, srcSize, dstSize); } else if (getFeatures() & GF_OLD_BUNDLE) { - if (getPlatform() == Common::kPlatformAmiga || getPlatform() == Common::kPlatformAtariST) { + if (getPlatform() == Common::kPlatformAcorn) { + sprintf(filename, "%.3d%d.DAT", id, type); + } else if (getPlatform() == Common::kPlatformAmiga || getPlatform() == Common::kPlatformAtariST) { if (getFeatures() & GF_TALKIE) { sprintf(filename, "%.3d%d.out", id, type); } else if (getGameType() == GType_ELVIRA1 && getFeatures() & GF_DEMO) { diff --git a/engines/agos/res_snd.cpp b/engines/agos/res_snd.cpp index eaa13cabea..305bd3e7e3 100644 --- a/engines/agos/res_snd.cpp +++ b/engines/agos/res_snd.cpp @@ -120,7 +120,9 @@ void AGOSEngine::skipSpeech() { void AGOSEngine::loadMusic(uint music) { char buf[4]; - if (getPlatform() == Common::kPlatformAtariST) { + if (getGameId() == GID_SIMON1ACORN) { + // TODO: Add support for music format used by Simon 1 Floppy + } else if (getPlatform() == Common::kPlatformAtariST) { // TODO: Add support for music format used by Elvira 2 } else if (getPlatform() == Common::kPlatformAmiga) { _mixer->stopHandle(_modHandle); @@ -130,6 +132,8 @@ void AGOSEngine::loadMusic(uint music) { if (getGameType() == GType_ELVIRA1 && getFeatures() & GF_DEMO) sprintf(filename, "elvira2"); + else if (getPlatform() == Common::kPlatformAcorn) + sprintf(filename, "%dtune.DAT", music); else sprintf(filename, "%dtune", music); diff --git a/engines/agos/string.cpp b/engines/agos/string.cpp index 2b999a6eca..78acffa57e 100644 --- a/engines/agos/string.cpp +++ b/engines/agos/string.cpp @@ -156,6 +156,10 @@ void AGOSEngine::loadTextIntoMem(uint stringId) { filename[i] = 0; p++; + if (getPlatform() == Common::kPlatformAcorn) { + sprintf(filename, "%s.DAT", filename); + } + base_max = (p[0] * 256) | p[1]; p += 2; diff --git a/engines/agos/subroutine.cpp b/engines/agos/subroutine.cpp index 59135d48b9..d3ecb3fa28 100644 --- a/engines/agos/subroutine.cpp +++ b/engines/agos/subroutine.cpp @@ -360,6 +360,10 @@ bool AGOSEngine::loadTablesNewIntoMem(uint subr_id) { filename[i] = 0; p++; + if (getPlatform() == Common::kPlatformAcorn) { + sprintf(filename, "%s.DAT", filename); + } + for (;;) { min_num = READ_BE_UINT16(p); p += 2; if (min_num == 0) -- cgit v1.2.3