aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorTravis Howell2006-05-04 02:23:52 +0000
committerTravis Howell2006-05-04 02:23:52 +0000
commite87de5898bc4d985cbf3c5ca404c96895da588bc (patch)
tree2df0499769aca562848696c5aa1342344b0a990a /engines
parent84c99c82427f961fef4ffadd9809383a9e70b761 (diff)
downloadscummvm-rg350-e87de5898bc4d985cbf3c5ca404c96895da588bc.tar.gz
scummvm-rg350-e87de5898bc4d985cbf3c5ca404c96895da588bc.tar.bz2
scummvm-rg350-e87de5898bc4d985cbf3c5ca404c96895da588bc.zip
Cleanup
svn-id: r22320
Diffstat (limited to 'engines')
-rw-r--r--engines/simon/debug.cpp2
-rw-r--r--engines/simon/draw.cpp5
-rw-r--r--engines/simon/items.cpp3
-rw-r--r--engines/simon/oracle.cpp6
-rw-r--r--engines/simon/res.cpp10
-rw-r--r--engines/simon/simon.cpp342
-rw-r--r--engines/simon/simon.h19
-rw-r--r--engines/simon/string.cpp2
-rw-r--r--engines/simon/subroutine.cpp4
-rw-r--r--engines/simon/vga.cpp15
10 files changed, 184 insertions, 224 deletions
diff --git a/engines/simon/debug.cpp b/engines/simon/debug.cpp
index fa4fe87386..260bd78158 100644
--- a/engines/simon/debug.cpp
+++ b/engines/simon/debug.cpp
@@ -185,7 +185,7 @@ void SimonEngine::dump_video_script(const byte *src, bool one_opcode_only) {
opcode = *src++;
}
- if (opcode >= NUM_VIDEO_OP_CODES) {
+ if (opcode >= _numVideoOpcodes) {
error("Invalid opcode %x\n", opcode);
return;
}
diff --git a/engines/simon/draw.cpp b/engines/simon/draw.cpp
index 2eb6041e47..9688ed9c68 100644
--- a/engines/simon/draw.cpp
+++ b/engines/simon/draw.cpp
@@ -422,8 +422,6 @@ void SimonEngine::fillBackGroundFromBack(uint lines) {
}
void SimonEngine::dx_update_screen_and_palette() {
- _numScreenUpdates++;
-
if (_paletteColorCount == 0 && _paletteFlag == 1) {
_paletteFlag = 0;
if (memcmp(_palette, _paletteBackup, 1024) != 0) {
@@ -486,8 +484,7 @@ void SimonEngine::slowFadeIn() {
dst++;
}
_system->setPalette(_videoBuf1, 0, _videoNumPalColors);
- if (_fade)
- _system->updateScreen();
+ _system->updateScreen();
delay(5);
}
_paletteColorCount = 0;
diff --git a/engines/simon/items.cpp b/engines/simon/items.cpp
index 31a7d71108..0e2bacc01f 100644
--- a/engines/simon/items.cpp
+++ b/engines/simon/items.cpp
@@ -1630,8 +1630,7 @@ void SimonEngine::o1_specialFade() {
paletteFadeOut((uint32 *)_videoBuf1 + 32 + 16 + 144 + 16, 48);
_system->setPalette(_videoBuf1, 0, 256);
- if (_fade)
- _system->updateScreen();
+ _system->updateScreen();
delay(5);
} while (--i);
diff --git a/engines/simon/oracle.cpp b/engines/simon/oracle.cpp
index 08ddb3ae0f..e15a46037b 100644
--- a/engines/simon/oracle.cpp
+++ b/engines/simon/oracle.cpp
@@ -380,14 +380,14 @@ void SimonEngine::saveUserGame(int slot) {
windowBackSpace(_windowArray[3]);
if (_keyPressed == 27) {
- writeVariable(55, _keyPressed);
+ _variableArray[55] = _keyPressed;
break;
}
if (_keyPressed == 10 || _keyPressed == 13) {
if (!saveGame(readVariable(55), name))
- writeVariable(55, 0xFFFF);
+ _variableArray[55] = 0xFFFF;
else
- writeVariable(55, 0);
+ _variableArray[55] = 0;
break;
}
if (_keyPressed == 8 && len != 0) {
diff --git a/engines/simon/res.cpp b/engines/simon/res.cpp
index 3a285da57b..1b848c2100 100644
--- a/engines/simon/res.cpp
+++ b/engines/simon/res.cpp
@@ -487,16 +487,6 @@ void SimonEngine::openGameFile() {
_gameOffsetsPtr[r] = FROM_LE_32(_gameOffsetsPtr[r]);
#endif
}
-
- if (getGameType() == GType_FF)
- loadIconData();
- else
- loadIconFile();
-
- vc34_setMouseOff();
-
- runSubroutine101();
- permitInput();
}
void SimonEngine::readGameFile(void *dst, uint32 offs, uint32 size) {
diff --git a/engines/simon/simon.cpp b/engines/simon/simon.cpp
index 2c773bd8bc..6423cdb4ca 100644
--- a/engines/simon/simon.cpp
+++ b/engines/simon/simon.cpp
@@ -106,7 +106,7 @@ SimonEngine::SimonEngine(OSystem *syst)
_codePtr = 0;
_localStringtable = 0;
- _stringIdLocalMin = 1;
+ _stringIdLocalMin = 0;
_stringIdLocalMax = 0;
_tablesHeapPtr = 0;
@@ -142,29 +142,28 @@ SimonEngine::SimonEngine(OSystem *syst)
_inCallBack = 0;
_cepeFlag = 0;
_copyPartialMode = 0;
- _speed = 1;
_fastMode = 0;
_useBackGround = 0;
_debugMode = 0;
- _pause = 0;
- _startMainScript = 0;
- _continousMainScript = 0;
- _startVgaScript = 0;
- _continousVgaScript = 0;
- _drawImagesDebug = 0;
- _dumpImages = 0;
- _speech = true;
- _subtitles = true;
- _fade = true;
+ _startMainScript = false;
+ _continousMainScript = false;
+ _startVgaScript = false;
+ _continousVgaScript = false;
+ _drawImagesDebug = false;
+ _dumpImages = false;
+
+ _pause = false;
+ _speech = false;
+ _subtitles = false;
_animatePointer = 0;
_mouseCursor = 0;
_mouseAnim = 0;
_mouseAnimMax = 0;
_oldMouseCursor = 0;
- _currentMouseCursor = 255;
- _currentMouseAnim = 255;
+ _currentMouseCursor = 0;
+ _currentMouseAnim = 0;
_oldMouseAnimMax = 0;
_vgaVar9 = 0;
@@ -243,7 +242,7 @@ SimonEngine::SimonEngine(OSystem *syst)
_paletteColorCount = 0;
- _noOverWrite = 0xFFFF;
+ _noOverWrite = 0;
_rejectCount = 0;
_rejectBlock = false;
@@ -253,8 +252,8 @@ SimonEngine::SimonEngine(OSystem *syst)
_paletteFlag = 0;
_soundFileId = 0;
- _lastMusicPlayed = -1;
- _nextMusicToPlay = -1;
+ _lastMusicPlayed = 0;
+ _nextMusicToPlay = 0;
_showPreposition = 0;
_showMessageFlag = 0;
@@ -277,7 +276,7 @@ SimonEngine::SimonEngine(OSystem *syst)
_timer5 = 0;
_timer4 = 0;
- _frameRate = 1;
+ _frameRate = 0;
_zoneNumber = 0;
_vgaWaitFor = 0;
@@ -343,7 +342,6 @@ SimonEngine::SimonEngine(OSystem *syst)
memset(_lettersToPrintBuf, 0, sizeof(_lettersToPrintBuf));
- _numScreenUpdates = 0;
_vgaTickCounter = 0;
_moviePlay = 0;
@@ -383,10 +381,16 @@ SimonEngine::SimonEngine(OSystem *syst)
"\x5\x5\x4\x6\x5\x3\x4\x5\x6\x3\x5\x5\x4\x6\x5\x3\x4\x6\x5\x6\x6\x6\x5\x5\x5\x6\x5\x6\x6\x6\x6\x6", 32);
- // Add default file directories for Acorn version
+ // Add default file directories for Acorn version of
+ // Simon the Sorcerer 1
File::addDefaultDirectory(_gameDataPath + "execute/");
File::addDefaultDirectory(_gameDataPath + "EXECUTE/");
+ // Add default file directories for Amiga/Macintosh
+ // verisons of Simon the Sorcerer 2
+ File::addDefaultDirectory(_gameDataPath + "voices/");
+ File::addDefaultDirectory(_gameDataPath + "VOICES/");
+
// Add default file directories for Amiga & Macintosh
// versions of The Feeble Files
File::addDefaultDirectory(_gameDataPath + "gfx/");
@@ -400,7 +404,6 @@ SimonEngine::SimonEngine(OSystem *syst)
}
int SimonEngine::init() {
-
// Detect game
if (!initGame()) {
GUIErrorMessage("No valid games were found in the specified directory.");
@@ -417,6 +420,14 @@ int SimonEngine::init() {
_screenHeight = 200;
}
+ _system->beginGFXTransaction();
+ initCommonGFX(getGameType() == GType_FF);
+ _system->initSize(_screenWidth, _screenHeight);
+ _system->endGFXTransaction();
+
+ // FIXME Use auto dirty rects cleanup code to reduce CPU usage
+ g_system->setFeatureState(OSystem::kFeatureAutoComputeDirtyRects, true);
+
// Setup mixer
if (!_mixer->isReady())
warning("Sound initialization failed. "
@@ -424,15 +435,10 @@ int SimonEngine::init() {
set_volume(ConfMan.getInt("sfx_volume"));
_mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, ConfMan.getInt("music_volume"));
- _system->beginGFXTransaction();
- initCommonGFX(getGameType() == GType_FF);
- _system->initSize(_screenWidth, _screenHeight);
- _system->endGFXTransaction();
-
// Setup midi driver
MidiDriver *driver = 0;
- if (getPlatform() == Common::kPlatformAmiga) {
- driver = MidiDriver::createMidi(MD_NULL); // Create fake MIDI driver for Simon1Amiga and Simon2CD32 for now
+ if (getGameType() == GType_FF || getGameId() == GID_SIMON1CD32) {
+ driver = MidiDriver::createMidi(MD_NULL);
_native_mt32 = false;
} else {
int midiDriver = MidiDriver::detectMusicDriver(MDT_ADLIB | MDT_MIDI);
@@ -451,118 +457,128 @@ int SimonEngine::init() {
warning ("MIDI Player init failed: \"%s\"", midi.getErrorName (ret));
midi.set_volume(ConfMan.getInt("music_volume"));
- _debugMode = (gDebugLevel >= 0);
- _language = Common::parseLanguage(ConfMan.get("language"));
-
if (ConfMan.hasKey("music_mute") && ConfMan.getBool("music_mute") == 1)
midi.pause(_musicPaused ^= 1);
- if (getFeatures() & GF_TALKIE) {
- _speech = !ConfMan.getBool("speech_mute");
- _subtitles = ConfMan.getBool("subtitles");
+ _currentMouseCursor = 255;
+ _currentMouseAnim = 255;
- if (getGameType() == GType_SIMON1) {
- // English and German versions don't have full subtitles
- if (_language == Common::EN_ANY || _language == Common::DE_DEU)
- _subtitles = false;
- // Other versions require speech to be enabled
- else
- _speech = true;
- }
+ _dumpFile = stdout;
- // Default to speech only, if both speech and subtitles disabled
- if (!_speech && !_subtitles)
- _speech = true;
- } else {
- _speech = false;
- _subtitles = true;
- }
+ _frameRate = 1;
- if (ConfMan.hasKey("fade") && ConfMan.getBool("fade") == 0)
- _fade = 0;
+ _lastMusicPlayed = -1;
+ _nextMusicToPlay = -1;
- if (ConfMan.hasKey("slow_down") && ConfMan.getInt("slow_down") >= 1)
- _speed = ConfMan.getInt("slow_down");
+ _noOverWrite = 0xFFFF;
- // FIXME Use auto dirty rects cleanup code to reduce CPU usage
- g_system->setFeatureState(OSystem::kFeatureAutoComputeDirtyRects, true);
+ _stringIdLocalMin = 1;
+
+ _variableArrayPtr = _variableArray;
if (getGameType() == GType_FF) {
- NUM_VIDEO_OP_CODES = 85;
+ gss = PTR(feeblefiles_settings);
+ _numTextBoxes = 40;
+ _numVideoOpcodes = 85;
#ifndef PALMOS_68K
- VGA_MEM_SIZE = 7500000;
+ _vgaMemSize = 7500000;
#else
- VGA_MEM_SIZE = gVars->memory[kMemSimon2Games];
+ _vgaMemSize = gVars->memory[kMemSimon2Games];
#endif
- TABLES_MEM_SIZE = 200000;
- VGA_DELAY_BASE = 5;
+ _tableMemSize = 200000;
+ _vgaBaseDelay = 5;
} else if (getGameType() == GType_SIMON2) {
- TABLE_INDEX_BASE = 1580 / 4;
- TEXT_INDEX_BASE = 1500 / 4;
- NUM_VIDEO_OP_CODES = 75;
+ gss = PTR(simon2_settings);
+ _tableIndexBase = 1580 / 4;
+ _textIndexBase = 1500 / 4;
+ _numTextBoxes = 20;
+ _numVideoOpcodes = 75;
#ifndef PALMOS_68K
- VGA_MEM_SIZE = 2000000;
+ _vgaMemSize = 2000000;
#else
- VGA_MEM_SIZE = gVars->memory[kMemSimon2Games];
+ _vgaMemSize = gVars->memory[kMemSimon2Games];
#endif
- TABLES_MEM_SIZE = 100000;
+ _tableMemSize = 100000;
// Check whether to use MT-32 MIDI tracks in Simon the Sorcerer 2
if ((getGameType() == GType_SIMON2) && _native_mt32)
- MUSIC_INDEX_BASE = (1128 + 612) / 4;
+ _musicIndexBase = (1128 + 612) / 4;
else
- MUSIC_INDEX_BASE = 1128 / 4;
- SOUND_INDEX_BASE = 1660 / 4;
- VGA_DELAY_BASE = 1;
+ _musicIndexBase = 1128 / 4;
+ _soundIndexBase = 1660 / 4;
+ _vgaBaseDelay = 1;
} else {
- TABLE_INDEX_BASE = 1576 / 4;
- TEXT_INDEX_BASE = 1460 / 4;
- NUM_VIDEO_OP_CODES = 64;
+ gss = PTR(simon1_settings);
+ _tableIndexBase = 1576 / 4;
+ _textIndexBase = 1460 / 4;
+ _numTextBoxes = 20;
+ _numVideoOpcodes = 64;
#ifndef PALMOS_68K
- VGA_MEM_SIZE = 1000000;
+ _vgaMemSize = 1000000;
#else
- VGA_MEM_SIZE = gVars->memory[kMemSimon1Games];
+ _vgaMemSize = gVars->memory[kMemSimon1Games];
#endif
- TABLES_MEM_SIZE = 50000;
- MUSIC_INDEX_BASE = 1316 / 4;
- SOUND_INDEX_BASE = 0;
- VGA_DELAY_BASE = 1;
+ _tableMemSize = 50000;
+ _musicIndexBase = 1316 / 4;
+ _soundIndexBase = 0;
+ _vgaBaseDelay = 1;
}
- if (getGameType() == GType_FF) {
- gss = PTR(feeblefiles_settings);
- } else if (getGameType() == GType_SIMON2) {
- if (getFeatures() & GF_TALKIE) {
- // Add default file directories
- File::addDefaultDirectory(_gameDataPath + "voices/");
- File::addDefaultDirectory(_gameDataPath + "VOICES/");
- }
- gss = PTR(simon2_settings);
- } else if (getGameType() == GType_SIMON1) {
- gss = PTR(simon1_settings);
+ // allocate buffers
+ _backGroundBuf = (byte *)calloc(_screenWidth * _screenHeight, 1);
+ _frontBuf = (byte *)calloc(_screenWidth * _screenHeight, 1);
+ _backBuf = (byte *)calloc(_screenWidth * _screenHeight, 1);
+ if (getGameType() == GType_FF)
+ _scaleBuf = (byte *)calloc(_screenWidth * _screenHeight, 1);
+
+ allocItemHeap();
+ allocTablesHeap();
+
+ setZoneBuffers();
+
+ _debugger = new Debugger(this);
+ _moviePlay = new MoviePlayer(this, _mixer);
+ _sound = new Sound(this, gss, _mixer);
+
+ if (ConfMan.hasKey("sfx_mute") && ConfMan.getBool("sfx_mute") == 1) {
+ if (getGameId() == GID_SIMON1DOS)
+ midi._enable_sfx ^= 1;
+ else
+ _sound->effectsPause(_effectsPaused ^= 1);
}
- if ((getGameType() == GType_SIMON1) && (getFeatures() & GF_TALKIE)) {
- // Add default file directories
- switch (_language) {
- case Common::HB_ISR:
- File::addDefaultDirectory(_gameDataPath + "hebrew/");
- File::addDefaultDirectory(_gameDataPath + "HEBREW/");
- break;
- case Common::ES_ESP:
- File::addDefaultDirectory(_gameDataPath + "spanish/");
- File::addDefaultDirectory(_gameDataPath + "SPANISH/");
- break;
- case Common::IT_ITA:
- File::addDefaultDirectory(_gameDataPath + "italian/");
- File::addDefaultDirectory(_gameDataPath + "ITALIAN/");
- break;
- case Common::FR_FRA:
- File::addDefaultDirectory(_gameDataPath + "french/");
- File::addDefaultDirectory(_gameDataPath + "FRENCH/");
- break;
+ _language = Common::parseLanguage(ConfMan.get("language"));
+
+ if (getFeatures() & GF_TALKIE) {
+ _speech = !ConfMan.getBool("speech_mute");
+ _subtitles = ConfMan.getBool("subtitles");
+
+ if (getGameType() == GType_SIMON1) {
+ // English and German versions don't have full subtitles
+ if (_language == Common::EN_ANY || _language == Common::DE_DEU)
+ _subtitles = false;
+ // Other versions require speech to be enabled
+ else
+ _speech = true;
}
+
+ // Default to speech only, if both speech and subtitles disabled
+ if (!_speech && !_subtitles)
+ _speech = true;
+ } else {
+ _speech = false;
+ _subtitles = true;
}
+ _debugMode = (gDebugLevel >= 0);
+ if (gDebugLevel == 2)
+ _continousMainScript = true;
+ if (gDebugLevel == 3)
+ _continousVgaScript = true;
+ if (gDebugLevel == 4)
+ _startMainScript = true;
+ if (gDebugLevel == 5)
+ _startVgaScript = true;
+
return 0;
}
@@ -717,9 +733,9 @@ void SimonEngine::allocItemHeap() {
}
void SimonEngine::allocTablesHeap() {
- _tablesHeapSize = TABLES_MEM_SIZE;
+ _tablesHeapSize = _tableMemSize;
_tablesHeapCurPos = 0;
- _tablesHeapPtr = (byte *)calloc(TABLES_MEM_SIZE, 1);
+ _tablesHeapPtr = (byte *)calloc(_tableMemSize, 1);
}
void SimonEngine::setItemState(Item *item, int value) {
@@ -1279,13 +1295,13 @@ void SimonEngine::loadZone(uint vga_res) {
void SimonEngine::setZoneBuffers() {
byte *alloced;
- alloced = (byte *)malloc(VGA_MEM_SIZE);
+ alloced = (byte *)malloc(_vgaMemSize);
_vgaBufFreeStart = alloced;
_vgaBufStart = alloced;
_vgaFileBufOrg = alloced;
_vgaFileBufOrg2 = alloced;
- _vgaBufEnd = alloced + VGA_MEM_SIZE;
+ _vgaBufEnd = alloced + _vgaMemSize;
}
byte *SimonEngine::allocBlock(uint32 size) {
@@ -1785,7 +1801,7 @@ void SimonEngine::loadSprite(uint windowNum, uint zoneNum, uint vgaSpriteId, uin
if (_startVgaScript)
dump_vga_script(pp + READ_LE_UINT16(&((AnimationHeader_Feeble*)p)->scriptOffs), zoneNum, vgaSpriteId);
- addVgaEvent(VGA_DELAY_BASE, pp + READ_LE_UINT16(&((AnimationHeader_Feeble *) p)->scriptOffs), vgaSpriteId, zoneNum);
+ addVgaEvent(_vgaBaseDelay, pp + READ_LE_UINT16(&((AnimationHeader_Feeble *) p)->scriptOffs), vgaSpriteId, zoneNum);
break;
}
p += sizeof(AnimationHeader_Feeble);
@@ -1794,7 +1810,7 @@ void SimonEngine::loadSprite(uint windowNum, uint zoneNum, uint vgaSpriteId, uin
if (_startVgaScript)
dump_vga_script(pp + READ_BE_UINT16(&((AnimationHeader_Simon*)p)->scriptOffs), zoneNum, vgaSpriteId);
- addVgaEvent(VGA_DELAY_BASE, pp + READ_BE_UINT16(&((AnimationHeader_Simon *) p)->scriptOffs), vgaSpriteId, zoneNum);
+ addVgaEvent(_vgaBaseDelay, pp + READ_BE_UINT16(&((AnimationHeader_Simon *) p)->scriptOffs), vgaSpriteId, zoneNum);
break;
}
p += sizeof(AnimationHeader_Simon);
@@ -1862,61 +1878,21 @@ void SimonEngine::playSpeech(uint speech_id, uint vgaSpriteId) {
}
int SimonEngine::go() {
- if (!_dumpFile)
- _dumpFile = stdout;
-
- // allocate buffers
- _backGroundBuf = (byte *)calloc(_screenWidth * _screenHeight, 1);
- _frontBuf = (byte *)calloc(_screenWidth * _screenHeight, 1);
- _backBuf = (byte *)calloc(_screenWidth * _screenHeight, 1);
- if (getGameType() == GType_FF)
- _scaleBuf = (byte *)calloc(_screenWidth * _screenHeight, 1);
-
- allocItemHeap();
- allocTablesHeap();
-
- setZoneBuffers();
-
- _debugger = new Debugger(this);
- _moviePlay = new MoviePlayer(this, _mixer);
- _sound = new Sound(this, gss, _mixer);
-
- if (ConfMan.hasKey("sfx_mute") && ConfMan.getBool("sfx_mute") == 1) {
- if (getGameId() == GID_SIMON1DOS)
- midi._enable_sfx ^= 1;
- else
- _sound->effectsPause(_effectsPaused ^= 1);
- }
loadGamePcFile();
addTimeEvent(0, 1);
openGameFile();
- _lastMusicPlayed = -1;
- _frameRate = 1;
-
if (getGameType() == GType_FF)
- _numTextBoxes = 40;
+ loadIconData();
else
- _numTextBoxes = 20;
+ loadIconFile();
- _variableArrayPtr = _variableArray;
+ vc34_setMouseOff();
- _startMainScript = false;
- _continousMainScript = false;
- _startVgaScript = false;
- _continousVgaScript = false;
- _drawImagesDebug = false;
-
- if (gDebugLevel == 2)
- _continousMainScript = true;
- if (gDebugLevel == 3)
- _continousVgaScript = true;
- if (gDebugLevel == 4)
- _startMainScript = true;
- if (gDebugLevel == 5)
- _startVgaScript = true;
+ runSubroutine101();
+ permitInput();
while (1) {
hitarea_stuff();
@@ -1956,9 +1932,9 @@ void SimonEngine::delay(uint amount) {
if (_fastMode)
vga_period = 10;
else if (getGameType() == GType_SIMON2)
- vga_period = 45 * _speed;
+ vga_period = 45;
else
- vga_period = 50 * _speed;
+ vga_period = 50;
_rnd.getRandomNumber(2);
@@ -2047,12 +2023,11 @@ void SimonEngine::delay(uint amount) {
if (amount == 0)
break;
- {
- this_delay = _fastMode ? 1 : 20 * _speed;
- if (this_delay > amount)
- this_delay = amount;
- _system->delayMillis(this_delay);
- }
+ this_delay = _fastMode ? 1 : 20;
+ if (this_delay > amount)
+ this_delay = amount;
+ _system->delayMillis(this_delay);
+
cur = _system->getMillis();
} while (cur < start + amount);
}
@@ -2060,28 +2035,31 @@ void SimonEngine::delay(uint amount) {
void SimonEngine::loadMusic(uint music) {
char buf[4];
- if (getPlatform() == Common::kPlatformAmiga) {
- if (getFeatures() & GF_CRUNCHED) {
- // TODO Add support for decruncher
- debug(5,"loadMusic - Decrunch %dtune attempt", music);
- }
- // TODO Add Protracker support for simon1amiga/cd32
- debug(5,"playMusic - Load %dtune attempt", music);
- } else if (getGameType() == GType_SIMON2) { // Simon 2 music
+ if (getGameType() == GType_SIMON2) { // Simon 2 music
midi.stop();
- _gameFile->seek(_gameOffsetsPtr[MUSIC_INDEX_BASE + music - 1], SEEK_SET);
+ _gameFile->seek(_gameOffsetsPtr[_musicIndexBase + music - 1], SEEK_SET);
_gameFile->read(buf, 4);
if (!memcmp(buf, "FORM", 4)) {
- _gameFile->seek(_gameOffsetsPtr[MUSIC_INDEX_BASE + music - 1], SEEK_SET);
+ _gameFile->seek(_gameOffsetsPtr[_musicIndexBase + music - 1], SEEK_SET);
midi.loadXMIDI (_gameFile);
} else {
- _gameFile->seek(_gameOffsetsPtr[MUSIC_INDEX_BASE + music - 1], SEEK_SET);
+ _gameFile->seek(_gameOffsetsPtr[_musicIndexBase + music - 1], SEEK_SET);
midi.loadMultipleSMF (_gameFile);
}
_lastMusicPlayed = music;
_nextMusicToPlay = -1;
} else if (getGameType() == GType_SIMON1) { // Simon 1 music
+ if (getPlatform() == Common::kPlatformAmiga) {
+ if (getFeatures() & GF_CRUNCHED) {
+ // TODO Add support for decruncher
+ debug(5,"loadMusic - Decrunch %dtune attempt", music);
+ }
+ // TODO Add Protracker support for simon1amiga/cd32
+ debug(5,"playMusic - Load %dtune attempt", music);
+ return;
+ }
+
midi.stop();
midi.setLoop (true); // Must do this BEFORE loading music. (GMF may have its own override.)
@@ -2094,13 +2072,13 @@ void SimonEngine::loadMusic(uint music) {
if (music == 35)
midi.setLoop (false);
- _gameFile->seek(_gameOffsetsPtr[MUSIC_INDEX_BASE + music], SEEK_SET);
+ _gameFile->seek(_gameOffsetsPtr[_musicIndexBase + music], SEEK_SET);
_gameFile->read(buf, 4);
if (!memcmp(buf, "GMF\x1", 4)) {
- _gameFile->seek(_gameOffsetsPtr[MUSIC_INDEX_BASE + music], SEEK_SET);
+ _gameFile->seek(_gameOffsetsPtr[_musicIndexBase + music], SEEK_SET);
midi.loadSMF (_gameFile, music);
} else {
- _gameFile->seek(_gameOffsetsPtr[MUSIC_INDEX_BASE + music], SEEK_SET);
+ _gameFile->seek(_gameOffsetsPtr[_musicIndexBase + music], SEEK_SET);
midi.loadMultipleSMF (_gameFile);
}
diff --git a/engines/simon/simon.h b/engines/simon/simon.h
index 015150ef17..2342c68b67 100644
--- a/engines/simon/simon.h
+++ b/engines/simon/simon.h
@@ -179,14 +179,14 @@ protected:
uint32 *_gameOffsetsPtr;
- uint VGA_DELAY_BASE;
- uint TABLE_INDEX_BASE;
- uint TEXT_INDEX_BASE;
- uint NUM_VIDEO_OP_CODES;
- uint VGA_MEM_SIZE;
- uint TABLES_MEM_SIZE;
- uint MUSIC_INDEX_BASE;
- uint SOUND_INDEX_BASE;
+ uint _vgaBaseDelay;
+ uint _tableIndexBase;
+ uint _textIndexBase;
+ uint _numVideoOpcodes;
+ uint _vgaMemSize;
+ uint _tableMemSize;
+ uint _musicIndexBase;
+ uint _soundIndexBase;
const GameSpecificSettings *gss;
byte _keyPressed;
@@ -253,7 +253,6 @@ protected:
bool _inCallBack;
bool _cepeFlag;
byte _copyPartialMode;
- uint _speed;
bool _fastMode;
bool _useBackGround;
@@ -268,7 +267,6 @@ protected:
bool _dumpImages;
bool _speech;
bool _subtitles;
- bool _fade;
bool _vgaVar9;
int16 _chanceModifier;
bool _restoreWindow6;
@@ -446,7 +444,6 @@ protected:
MidiPlayer midi;
bool _native_mt32;
- int _numScreenUpdates;
int _vgaTickCounter;
MoviePlayer *_moviePlay;
diff --git a/engines/simon/string.cpp b/engines/simon/string.cpp
index ffda5629e8..99d2436afd 100644
--- a/engines/simon/string.cpp
+++ b/engines/simon/string.cpp
@@ -112,7 +112,7 @@ uint SimonEngine::loadTextFile_gme(const char *filename, byte *dst) {
uint32 offs;
uint32 size;
- res = atoi(filename + 4) + TEXT_INDEX_BASE - 1;
+ res = atoi(filename + 4) + _textIndexBase - 1;
offs = _gameOffsetsPtr[res];
size = _gameOffsetsPtr[res + 1] - offs;
diff --git a/engines/simon/subroutine.cpp b/engines/simon/subroutine.cpp
index 46cd0c5c22..addf3b9c50 100644
--- a/engines/simon/subroutine.cpp
+++ b/engines/simon/subroutine.cpp
@@ -91,7 +91,7 @@ File *SimonEngine::openTablesFile_gme(const char *filename) {
uint res;
uint32 offs;
- res = atoi(filename + 6) + TABLE_INDEX_BASE - 1;
+ res = atoi(filename + 6) + _tableIndexBase - 1;
offs = _gameOffsetsPtr[res];
_gameFile->seek(offs, SEEK_SET);
@@ -138,7 +138,7 @@ void SimonEngine::loadTablesIntoMem(uint subr_id) {
if (getGameType() == GType_FF) {
// TODO
} else if (getGameType() == GType_SIMON2) {
- _sound->loadSfxTable(_gameFile, _gameOffsetsPtr[atoi(filename + 6) - 1 + SOUND_INDEX_BASE]);
+ _sound->loadSfxTable(_gameFile, _gameOffsetsPtr[atoi(filename + 6) - 1 + _soundIndexBase]);
} else if (getPlatform() == Common::kPlatformWindows) {
memcpy(filename, "SFXXXX", 6);
_sound->readSfxFile(filename);
diff --git a/engines/simon/vga.cpp b/engines/simon/vga.cpp
index 6494fbd583..19b02d21d3 100644
--- a/engines/simon/vga.cpp
+++ b/engines/simon/vga.cpp
@@ -143,7 +143,7 @@ void SimonEngine::runVgaScript() {
opcode = *_vcPtr++;
}
- if (opcode >= NUM_VIDEO_OP_CODES)
+ if (opcode >= _numVideoOpcodes)
error("Invalid VGA opcode '%d' encountered", opcode);
if (opcode == 0)
@@ -455,9 +455,9 @@ void SimonEngine::vc3_loadSprite() {
}
if (getGameType() == GType_FF) {
- addVgaEvent(VGA_DELAY_BASE, _curVgaFile1 + READ_LE_UINT16(&((AnimationHeader_Feeble *) p)->scriptOffs), vgaSpriteId, res);
+ addVgaEvent(_vgaBaseDelay, _curVgaFile1 + READ_LE_UINT16(&((AnimationHeader_Feeble *) p)->scriptOffs), vgaSpriteId, res);
} else {
- addVgaEvent(VGA_DELAY_BASE, _curVgaFile1 + READ_BE_UINT16(&((AnimationHeader_Simon *) p)->scriptOffs), vgaSpriteId, res);
+ addVgaEvent(_vgaBaseDelay, _curVgaFile1 + READ_BE_UINT16(&((AnimationHeader_Simon *) p)->scriptOffs), vgaSpriteId, res);
}
_curVgaFile1 = old_file_1;
@@ -1487,7 +1487,7 @@ void SimonEngine::vc12_delay() {
if ((getGameType() == GType_SIMON1) && vsp->id == 128)
num = 0;
else
- num += VGA_DELAY_BASE;
+ num += _vgaBaseDelay;
addVgaEvent(num, _vcPtr, _vgaCurSpriteId, _vgaCurZoneNum);
_vcPtr = (byte *)&_vc_get_out_of_code;
@@ -1510,7 +1510,7 @@ void SimonEngine::vc15_sync() {
uint16 id = vcReadNextWord();
while (vfs->ident != 0) {
if (vfs->ident == id) {
- addVgaEvent(VGA_DELAY_BASE, vfs->code_ptr, vfs->sprite_id, vfs->cur_vga_file);
+ addVgaEvent(_vgaBaseDelay, vfs->code_ptr, vfs->sprite_id, vfs->cur_vga_file);
vfs_tmp = vfs;
do {
memcpy(vfs_tmp, vfs_tmp + 1, sizeof(VgaSleepStruct));
@@ -2087,7 +2087,7 @@ void SimonEngine::vc55_moveBox() {
void SimonEngine::vc56_delay() {
uint16 num = vcReadVarOrWord() * _frameRate;
- addVgaEvent(num + VGA_DELAY_BASE, _vcPtr, _vgaCurSpriteId, _vgaCurZoneNum);
+ addVgaEvent(num + _vgaBaseDelay, _vcPtr, _vgaCurSpriteId, _vgaCurZoneNum);
_vcPtr = (byte *)&_vc_get_out_of_code;
}
@@ -2217,8 +2217,7 @@ void SimonEngine::vc62_fastFadeOut() {
for (i = NUM_PALETTE_FADEOUT; i != 0; --i) {
paletteFadeOut((uint32 *)_videoBuf1, _videoNumPalColors);
_system->setPalette(_videoBuf1, 0, _videoNumPalColors);
- if (_fade)
- _system->updateScreen();
+ _system->updateScreen();
delay(5);
}