aboutsummaryrefslogtreecommitdiff
path: root/simon
diff options
context:
space:
mode:
authorTravis Howell2003-09-24 06:19:30 +0000
committerTravis Howell2003-09-24 06:19:30 +0000
commit3854ce8f3d060f5bb4c1e248d846f73a7fe2942c (patch)
tree82683903ddda4a231698cbe6812750f418795ef1 /simon
parent908eb0823f1e33726b1c4b6e5aed42479afcb644 (diff)
downloadscummvm-rg350-3854ce8f3d060f5bb4c1e248d846f73a7fe2942c.tar.gz
scummvm-rg350-3854ce8f3d060f5bb4c1e248d846f73a7fe2942c.tar.bz2
scummvm-rg350-3854ce8f3d060f5bb4c1e248d846f73a7fe2942c.zip
Add Acorn version of Simon the Sorcerer 1 Talkie
svn-id: r10389
Diffstat (limited to 'simon')
-rw-r--r--simon/intern.h6
-rw-r--r--simon/res.cpp6
-rw-r--r--simon/simon.cpp28
-rw-r--r--simon/sound.cpp2
4 files changed, 36 insertions, 6 deletions
diff --git a/simon/intern.h b/simon/intern.h
index eb0c79cda6..84570bf1e0 100644
--- a/simon/intern.h
+++ b/simon/intern.h
@@ -140,7 +140,8 @@ enum {
GF_TALKIE = 1 << 2,
GF_DEMO = 1 << 3,
GF_MAC = 1 << 4,
- GF_AMIGA = 1 << 5
+ GF_AMIGA = 1 << 5,
+ GF_ACORN = 1 << 6
};
enum {
@@ -153,7 +154,8 @@ enum {
GAME_SIMON1DEMO = GF_DEMO,
GAME_SIMON2MAC = GF_SIMON2 | GF_WIN | GF_TALKIE | GF_MAC,
GAME_SIMON1AMIGA = GF_AMIGA,
- GAME_SIMON1CD32 = GF_TALKIE | GF_AMIGA
+ GAME_SIMON1CD32 = GF_TALKIE | GF_AMIGA,
+ GAME_SIMON1ACORN = GF_TALKIE | GF_ACORN
};
#endif
diff --git a/simon/res.cpp b/simon/res.cpp
index b0dd801c77..1c8a0926ca 100644
--- a/simon/res.cpp
+++ b/simon/res.cpp
@@ -147,7 +147,10 @@ void SimonEngine::loadGamePcFile(const char *filename) {
_tablesheap_curpos_org = _tablesheap_curpos;
/* Read list of TEXT resources */
- in.open("STRIPPED.TXT", _gameDataPath);
+ if (_game == GAME_SIMON1ACORN)
+ in.open("STRIPPED", _gameDataPath);
+ else
+ in.open("STRIPPED.TXT", _gameDataPath);
if (in.isOpen() == false)
error("Can't open text resources file 'STRIPPED.TXT'");
@@ -259,6 +262,7 @@ byte *SimonEngine::readSingleOpcode(File *in, byte *ptr) {
case GAME_SIMON1TALKIE:
case GAME_SIMON1WIN:
case GAME_SIMON1CD32:
+ case GAME_SIMON1ACORN:
table = opcode_arg_table_simon1win;
break;
case GAME_SIMON2DOS:
diff --git a/simon/simon.cpp b/simon/simon.cpp
index 83c39061df..2d4f525219 100644
--- a/simon/simon.cpp
+++ b/simon/simon.cpp
@@ -47,6 +47,7 @@ extern bool draw_keyboard;
static const TargetSettings simon_settings[] = {
// Simon the Sorcerer 1 & 2 (not SCUMM games)
+ {"simon1acorn", "Simon the Sorcerer 1 (Acorn)", GID_SIMON_FIRST, 99, MDT_ADLIB | MDT_NATIVE, GAME_SIMON1ACORN, "DATA"},
{"simon1dos", "Simon the Sorcerer 1 (DOS)", GID_SIMON_FIRST, 99, MDT_ADLIB | MDT_NATIVE, GAME_SIMON1DOS, "GAMEPC"},
{"simon1amiga", "Simon the Sorcerer 1 (Amiga)", GID_SIMON_FIRST, 99, MDT_NONE, GAME_SIMON1AMIGA, "gameamiga"},
{"simon2dos", "Simon the Sorcerer 2 (DOS)", GID_SIMON_FIRST, 99, MDT_ADLIB | MDT_NATIVE, GAME_SIMON2DOS, "GAME32"},
@@ -89,6 +90,24 @@ static const GameSpecificSettings simon1_settings = {
"GAMEPC", // gamepc_filename
};
+static const GameSpecificSettings simon1acorn_settings = {
+ 1, // VGA_DELAY_BASE
+ 1576 / 4, // TABLE_INDEX_BASE
+ 1460 / 4, // TEXT_INDEX_BASE
+ 64, // NUM_VIDEO_OP_CODES
+ 1000000, // VGA_MEM_SIZE
+ 50000, // TABLES_MEM_SIZE
+ 1316 / 4, // MUSIC_INDEX_BASE
+ 0, // SOUND_INDEX_BASE
+ "DATA", // gme_filename
+ "", // wav_filename
+ "SIMON", // voc_filename
+ "SIMON.MP3", // mp3_filename
+ "EFFECTS", // voc_effects_filename
+ "EFFECTS.MP3", // mp3_effects_filename
+ "GAMEBASE", // gamepc_filename
+};
+
static const GameSpecificSettings simon1amiga_settings = {
1, // VGA_DELAY_BASE
1576 / 4, // TABLE_INDEX_BASE
@@ -197,6 +216,8 @@ SimonEngine::SimonEngine(GameDetector *detector, OSystem *syst)
gss = &simon2win_settings;
} else if (_game == GAME_SIMON2DOS) {
gss = &simon2dos_settings;
+ } else if (_game == GAME_SIMON1ACORN) {
+ gss =&simon1acorn_settings;
} else if (_game & GF_AMIGA) {
gss = &simon1amiga_settings;
} else if (_game == GAME_SIMON1DEMO) {
@@ -1697,7 +1718,9 @@ uint SimonEngine::item_get_icon_number(Item *item) {
void SimonEngine::loadIconFile() {
File in;
- if (_game & GF_AMIGA)
+ if (_game & GF_ACORN)
+ in.open("ICONDATA", _gameDataPath);
+ else if (_game & GF_AMIGA)
in.open("icon.pkd", _gameDataPath);
else
in.open("ICON.DAT", _gameDataPath);
@@ -2092,6 +2115,7 @@ void SimonEngine::o_print_str() {
case GAME_SIMON1TALKIE:
case GAME_SIMON1WIN:
case GAME_SIMON1CD32:
+ case GAME_SIMON1ACORN:
if (speech_id != 0)
talk_with_speech(speech_id, num_1);
if (string_ptr != NULL && (speech_id == 0 || _subtitles))
@@ -4834,7 +4858,7 @@ void SimonEngine::loadMusic (uint music) {
if (_game & GF_AMIGA) {
if (_game != GAME_SIMON1CD32) {
// TODO Add support for decruncher
- debug(5,"playMusic - Decrunch %dtune attempt", music);
+ debug(5,"loadMusic - Decrunch %dtune attempt", music);
}
// TODO Add Protracker support for simon1amiga/cd32
debug(5,"playMusic - Load %dtune attempt", music);
diff --git a/simon/sound.cpp b/simon/sound.cpp
index 195b74cc32..5c559a8160 100644
--- a/simon/sound.cpp
+++ b/simon/sound.cpp
@@ -312,7 +312,7 @@ SimonSound::SimonSound(const byte game, const GameSpecificSettings *gss, const c
}
#endif
- if (_game == GAME_SIMON1TALKIE) {
+ if (_game == GAME_SIMON1ACORN || _game == GAME_SIMON1TALKIE) {
file = new File();
#ifdef USE_MAD
file->open(gss->mp3_effects_filename, gameDataPath);