diff options
author | Travis Howell | 2003-09-24 06:19:30 +0000 |
---|---|---|
committer | Travis Howell | 2003-09-24 06:19:30 +0000 |
commit | 3854ce8f3d060f5bb4c1e248d846f73a7fe2942c (patch) | |
tree | 82683903ddda4a231698cbe6812750f418795ef1 /simon | |
parent | 908eb0823f1e33726b1c4b6e5aed42479afcb644 (diff) | |
download | scummvm-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.h | 6 | ||||
-rw-r--r-- | simon/res.cpp | 6 | ||||
-rw-r--r-- | simon/simon.cpp | 28 | ||||
-rw-r--r-- | simon/sound.cpp | 2 |
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); |