Add Acorn version of Simon the Sorcerer 1 Talkie

svn-id: r10389
This commit is contained in:
Travis Howell 2003-09-24 06:19:30 +00:00
parent 908eb0823f
commit 3854ce8f3d
5 changed files with 40 additions and 6 deletions

View file

@ -71,6 +71,10 @@ FILE *File::fopenNoCase(const char *filename, const char *directory, const char
"DATA/",
"resource/",
"RESOURCE/",
// Simon the Sorcerer 1 Acorn
"execute/",
"EXECUTE/",
// Simon the Sorcerer 2 Amiga/Mac
"voices/",
"VOICES/",
// sword2 stuff if user just copied files without putting

View file

@ -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

View file

@ -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:

View file

@ -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);

View file

@ -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);