Add Acorn version of Simon the Sorcerer 1 Talkie
svn-id: r10389
This commit is contained in:
parent
908eb0823f
commit
3854ce8f3d
5 changed files with 40 additions and 6 deletions
|
@ -71,6 +71,10 @@ FILE *File::fopenNoCase(const char *filename, const char *directory, const char
|
||||||
"DATA/",
|
"DATA/",
|
||||||
"resource/",
|
"resource/",
|
||||||
"RESOURCE/",
|
"RESOURCE/",
|
||||||
|
// Simon the Sorcerer 1 Acorn
|
||||||
|
"execute/",
|
||||||
|
"EXECUTE/",
|
||||||
|
// Simon the Sorcerer 2 Amiga/Mac
|
||||||
"voices/",
|
"voices/",
|
||||||
"VOICES/",
|
"VOICES/",
|
||||||
// sword2 stuff if user just copied files without putting
|
// sword2 stuff if user just copied files without putting
|
||||||
|
|
|
@ -140,7 +140,8 @@ enum {
|
||||||
GF_TALKIE = 1 << 2,
|
GF_TALKIE = 1 << 2,
|
||||||
GF_DEMO = 1 << 3,
|
GF_DEMO = 1 << 3,
|
||||||
GF_MAC = 1 << 4,
|
GF_MAC = 1 << 4,
|
||||||
GF_AMIGA = 1 << 5
|
GF_AMIGA = 1 << 5,
|
||||||
|
GF_ACORN = 1 << 6
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -153,7 +154,8 @@ enum {
|
||||||
GAME_SIMON1DEMO = GF_DEMO,
|
GAME_SIMON1DEMO = GF_DEMO,
|
||||||
GAME_SIMON2MAC = GF_SIMON2 | GF_WIN | GF_TALKIE | GF_MAC,
|
GAME_SIMON2MAC = GF_SIMON2 | GF_WIN | GF_TALKIE | GF_MAC,
|
||||||
GAME_SIMON1AMIGA = GF_AMIGA,
|
GAME_SIMON1AMIGA = GF_AMIGA,
|
||||||
GAME_SIMON1CD32 = GF_TALKIE | GF_AMIGA
|
GAME_SIMON1CD32 = GF_TALKIE | GF_AMIGA,
|
||||||
|
GAME_SIMON1ACORN = GF_TALKIE | GF_ACORN
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -147,7 +147,10 @@ void SimonEngine::loadGamePcFile(const char *filename) {
|
||||||
_tablesheap_curpos_org = _tablesheap_curpos;
|
_tablesheap_curpos_org = _tablesheap_curpos;
|
||||||
|
|
||||||
/* Read list of TEXT resources */
|
/* 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)
|
if (in.isOpen() == false)
|
||||||
error("Can't open text resources file 'STRIPPED.TXT'");
|
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_SIMON1TALKIE:
|
||||||
case GAME_SIMON1WIN:
|
case GAME_SIMON1WIN:
|
||||||
case GAME_SIMON1CD32:
|
case GAME_SIMON1CD32:
|
||||||
|
case GAME_SIMON1ACORN:
|
||||||
table = opcode_arg_table_simon1win;
|
table = opcode_arg_table_simon1win;
|
||||||
break;
|
break;
|
||||||
case GAME_SIMON2DOS:
|
case GAME_SIMON2DOS:
|
||||||
|
|
|
@ -47,6 +47,7 @@ extern bool draw_keyboard;
|
||||||
|
|
||||||
static const TargetSettings simon_settings[] = {
|
static const TargetSettings simon_settings[] = {
|
||||||
// Simon the Sorcerer 1 & 2 (not SCUMM games)
|
// 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"},
|
{"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"},
|
{"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"},
|
{"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
|
"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 = {
|
static const GameSpecificSettings simon1amiga_settings = {
|
||||||
1, // VGA_DELAY_BASE
|
1, // VGA_DELAY_BASE
|
||||||
1576 / 4, // TABLE_INDEX_BASE
|
1576 / 4, // TABLE_INDEX_BASE
|
||||||
|
@ -197,6 +216,8 @@ SimonEngine::SimonEngine(GameDetector *detector, OSystem *syst)
|
||||||
gss = &simon2win_settings;
|
gss = &simon2win_settings;
|
||||||
} else if (_game == GAME_SIMON2DOS) {
|
} else if (_game == GAME_SIMON2DOS) {
|
||||||
gss = &simon2dos_settings;
|
gss = &simon2dos_settings;
|
||||||
|
} else if (_game == GAME_SIMON1ACORN) {
|
||||||
|
gss =&simon1acorn_settings;
|
||||||
} else if (_game & GF_AMIGA) {
|
} else if (_game & GF_AMIGA) {
|
||||||
gss = &simon1amiga_settings;
|
gss = &simon1amiga_settings;
|
||||||
} else if (_game == GAME_SIMON1DEMO) {
|
} else if (_game == GAME_SIMON1DEMO) {
|
||||||
|
@ -1697,7 +1718,9 @@ uint SimonEngine::item_get_icon_number(Item *item) {
|
||||||
|
|
||||||
void SimonEngine::loadIconFile() {
|
void SimonEngine::loadIconFile() {
|
||||||
File in;
|
File in;
|
||||||
if (_game & GF_AMIGA)
|
if (_game & GF_ACORN)
|
||||||
|
in.open("ICONDATA", _gameDataPath);
|
||||||
|
else if (_game & GF_AMIGA)
|
||||||
in.open("icon.pkd", _gameDataPath);
|
in.open("icon.pkd", _gameDataPath);
|
||||||
else
|
else
|
||||||
in.open("ICON.DAT", _gameDataPath);
|
in.open("ICON.DAT", _gameDataPath);
|
||||||
|
@ -2092,6 +2115,7 @@ void SimonEngine::o_print_str() {
|
||||||
case GAME_SIMON1TALKIE:
|
case GAME_SIMON1TALKIE:
|
||||||
case GAME_SIMON1WIN:
|
case GAME_SIMON1WIN:
|
||||||
case GAME_SIMON1CD32:
|
case GAME_SIMON1CD32:
|
||||||
|
case GAME_SIMON1ACORN:
|
||||||
if (speech_id != 0)
|
if (speech_id != 0)
|
||||||
talk_with_speech(speech_id, num_1);
|
talk_with_speech(speech_id, num_1);
|
||||||
if (string_ptr != NULL && (speech_id == 0 || _subtitles))
|
if (string_ptr != NULL && (speech_id == 0 || _subtitles))
|
||||||
|
@ -4834,7 +4858,7 @@ void SimonEngine::loadMusic (uint music) {
|
||||||
if (_game & GF_AMIGA) {
|
if (_game & GF_AMIGA) {
|
||||||
if (_game != GAME_SIMON1CD32) {
|
if (_game != GAME_SIMON1CD32) {
|
||||||
// TODO Add support for decruncher
|
// 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
|
// TODO Add Protracker support for simon1amiga/cd32
|
||||||
debug(5,"playMusic - Load %dtune attempt", music);
|
debug(5,"playMusic - Load %dtune attempt", music);
|
||||||
|
|
|
@ -312,7 +312,7 @@ SimonSound::SimonSound(const byte game, const GameSpecificSettings *gss, const c
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (_game == GAME_SIMON1TALKIE) {
|
if (_game == GAME_SIMON1ACORN || _game == GAME_SIMON1TALKIE) {
|
||||||
file = new File();
|
file = new File();
|
||||||
#ifdef USE_MAD
|
#ifdef USE_MAD
|
||||||
file->open(gss->mp3_effects_filename, gameDataPath);
|
file->open(gss->mp3_effects_filename, gameDataPath);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue