aboutsummaryrefslogtreecommitdiff
path: root/simon/items.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'simon/items.cpp')
-rw-r--r--simon/items.cpp56
1 files changed, 55 insertions, 1 deletions
diff --git a/simon/items.cpp b/simon/items.cpp
index dea3c4d59d..6b294b72aa 100644
--- a/simon/items.cpp
+++ b/simon/items.cpp
@@ -1049,7 +1049,15 @@ int SimonEngine::runScript() {
case 185:{ /* midi sfx file number */
if (_game & GF_SIMON2)
goto invalid_opcode;
- _midi_sfx = getVarOrWord();
+ _midi_sfx = getVarOrWord();
+ if (_game == GAME_SIMON1CD32) {
+ char buf[10];
+ sprintf(buf, "%d%s", _midi_sfx, "Effects");
+ _sound->readSfxFile(buf, _gameDataPath);
+ sprintf(buf, "%d%s", _midi_sfx, "simon");
+ _sound->readVoiceFile(buf, _gameDataPath);
+ }
+
}
break;
@@ -1374,6 +1382,9 @@ int SimonEngine::o_unk_132_helper(bool *b, char *buf) {
start_over:;
_key_pressed = 0;
+ if (_game == GAME_SIMON1CD32)
+ goto start_over_3;
+
start_over_2:;
_last_hitarea = _last_hitarea_3 = 0;
@@ -1419,6 +1430,49 @@ start_over_2:;
if (ha->id >= 214)
goto start_over_2;
return ha->id - 208;
+
+//FIXME Hack to allow load and save file selection in simon1cd32
+// Uses the follow keys for moving around
+// 1 - 6 to select slot to load/save
+// Up Arrow to move up slots
+// Down Arrow to move down slots
+// X to exit
+start_over_3:;
+ if (_saveload_flag) {
+ *b = false;
+ delay(1);
+ return _key_pressed;
+ }
+
+ if (_key_pressed == 17) {
+ if (_saveload_row_curpos == 1)
+ goto start_over_3;
+ if (_saveload_row_curpos < 7)
+ _saveload_row_curpos = 1;
+ else
+ _saveload_row_curpos -= 6;
+
+ goto strange_jump;
+ }
+
+ if (_key_pressed == 18) {
+ if (!_savedialog_flag)
+ goto start_over_3;
+ _saveload_row_curpos += 6;
+ goto strange_jump;
+ }
+
+ if (_key_pressed == 120)
+ return 205;
+
+ if (_key_pressed > 48 && _key_pressed < 55) {
+ return _key_pressed - 49;
+ }
+
+
+ delay(1);
+ goto start_over_3;
+
}
void SimonEngine::o_unk_132_helper_3() {