diff options
| -rw-r--r-- | simon/items.cpp | 19 | ||||
| -rw-r--r-- | simon/simon.cpp | 17 | ||||
| -rw-r--r-- | simon/simon.h | 3 | ||||
| -rw-r--r-- | simon/vga.cpp | 11 | 
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) { | 
