aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2003-05-19 09:41:28 +0000
committerTravis Howell2003-05-19 09:41:28 +0000
commit7091080e7da0fd7f62343a2fef19bc2091baa162 (patch)
tree2e8c9a93f155707e48d0615ca7f915184703cd43
parent3d14e5305e7b87c3394dbd9ffee80186adbe70bb (diff)
downloadscummvm-rg350-7091080e7da0fd7f62343a2fef19bc2091baa162.tar.gz
scummvm-rg350-7091080e7da0fd7f62343a2fef19bc2091baa162.tar.bz2
scummvm-rg350-7091080e7da0fd7f62343a2fef19bc2091baa162.zip
Try and make some sense ot of simon 2 midi systems
svn-id: r7678
-rw-r--r--simon/items.cpp19
-rw-r--r--simon/simon.cpp17
-rw-r--r--simon/simon.h3
-rw-r--r--simon/vga.cpp11
4 files changed, 28 insertions, 22 deletions
diff --git a/simon/items.cpp b/simon/items.cpp
index f2f84fba06..7df7b91541 100644
--- a/simon/items.cpp
+++ b/simon/items.cpp
@@ -753,7 +753,7 @@ int SimonState::runScript() {
if (_debugMode)
warning("stopMidiMusic: not implemented");
_vc70_var2 = 0xFFFF;
- _midi_unk1 = 0xFFFF;
+ _last_music_played = 0xFFFF;
_vc72_var1 = 0xFFFF;
}
break;
@@ -1441,27 +1441,24 @@ void SimonState::o_unk_127() {
if (_debugMode)
warning("o_unk_127(%d,%d,%d) not implemented properly", a, b, c);
- if (_midi_unk1 == a) {
- if (b == _vc72_var1 || b == 999) {
+ if (_last_music_played == a) {
+ if (b == _vc72_var1 || b == 999)
return;
- }
+
if (_vc72_var1 != 0xFFFF || _vc72_var1 != 999) {
_vc70_var2 = c;
_vc70_var1 = 0xffff;
_vc72_var3 = 0xffff;
- _midi_unk2 = 0xffff;
- if (_game & GF_WIN) {
- // FIXME: What do we expect to happen at this moment?
- // midi.initialize();
- // midi.play();
- }
+ _next_music_to_play = 0xffff;
+ if (!(_music_paused))
+ midi_play(b);
_vc72_var1 = b;
} else {
_vc72_var3 = b;
_vc72_var2 = c;
}
} else if (b == 999) {
- _midi_unk2 = a;
+ _next_music_to_play = a;
}
} else {
if (a != _last_music_played) {
diff --git a/simon/simon.cpp b/simon/simon.cpp
index e216d669e4..9cf0aaedea 100644
--- a/simon/simon.cpp
+++ b/simon/simon.cpp
@@ -5037,6 +5037,19 @@ bool SimonState::load_game(uint slot) {
return true;
}
+void SimonState::midi_play(uint music) {
+ // FIXME What exactly should this function do?
+ if (music != 0) {
+ //_midi_cur_song_ptr = ((arg_0 & 0xFFFF) << 4) + midi_songs;
+ if (_vc72_var1 == 999)
+ //midi.initialize();
+
+ //_midi_var11 = 0;
+ //_midi_var12 = 1;
+ }
+}
+
+
void SimonState::playMusic(uint music_unk, uint music) {
if (midi._midi_sfx_toggle)
return;
@@ -5049,11 +5062,11 @@ void SimonState::playMusic(uint music_unk, uint music) {
} else {
midi.playXMIDI (_game_file);
}
- _midi_unk1 = music;
+ _last_music_played = music;
_vc72_var1 = music_unk;
_vc70_var1 = 0xFFFF;
_vc72_var3 = 0xFFFF;
- _midi_unk2 = 0xFFFF;
+ _next_music_to_play = 0xFFFF;
} else { // Simon 1 music
if (_game & GF_AMIGAS) {
if (_game != GAME_SIMON1CD32) {
diff --git a/simon/simon.h b/simon/simon.h
index fa69e67e00..e1f0c824c1 100644
--- a/simon/simon.h
+++ b/simon/simon.h
@@ -192,7 +192,6 @@ public:
int _x_scroll, _vga_var1, _vga_var2, _vga_var3, _vga_var5;
byte _vga_var8;
- uint16 _midi_unk1, _midi_unk2;
uint16 _vc72_var1, _vc72_var2, _vc72_var3;
uint16 _vc70_var1, _vc70_var2;
byte *_vga_var7;
@@ -253,6 +252,7 @@ public:
uint _midi_sfx;
uint _last_music_played;
+ uint _next_music_to_play;
bool _show_preposition;
bool _showmessage_flag;
@@ -762,6 +762,7 @@ public:
void video_putchar_newline(FillOrCopyStruct *fcs);
void video_putchar_drawchar(FillOrCopyStruct *fcs, uint x, uint y, byte chr);
+ void midi_play(uint music);
void playMusic(uint music, uint music_unk);
void checkTimerCallback();
void delay(uint delay);
diff --git a/simon/vga.cpp b/simon/vga.cpp
index 06ddb8a4fc..d1c8accce9 100644
--- a/simon/vga.cpp
+++ b/simon/vga.cpp
@@ -1692,9 +1692,8 @@ void SimonState::vc_62_palette_thing() {
if (!_video_var_3) {
if (_game & GF_SIMON2) {
- if (_midi_unk2 != 0xffff) {
- playMusic(999, _midi_unk2);
- }
+ if (_next_music_to_play != 0xffff)
+ playMusic(999, _next_music_to_play);
}
} else
_video_var_3 = true;
@@ -1813,11 +1812,7 @@ void SimonState::vc_69() {
if (_vc72_var1 == 999) {
_vc70_var2 = b;
- if (_game & GF_WIN) {
- // FIXME: What do we expect to have happen here?
- // midi.initialize();
- // midi.play();
- }
+ midi_play(a);
_vc72_var1 = b;
} else if (_vc72_var1 != 0xFFFF) {
if (_vc72_var1 != a) {