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/",
|
||||
"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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue