diff options
| author | James Brown | 2002-05-10 20:21:12 +0000 | 
|---|---|---|
| committer | James Brown | 2002-05-10 20:21:12 +0000 | 
| commit | ecbf23da72e99bbc5b78da07a248de587ae5cb69 (patch) | |
| tree | e80be2fd925525dc21b1f0172574d390d5180c14 | |
| parent | 939f9314fa5bd075835590e6dfd647aa88fbde16 (diff) | |
| download | scummvm-rg350-ecbf23da72e99bbc5b78da07a248de587ae5cb69.tar.gz scummvm-rg350-ecbf23da72e99bbc5b78da07a248de587ae5cb69.tar.bz2 scummvm-rg350-ecbf23da72e99bbc5b78da07a248de587ae5cb69.zip | |
Impliment what we call 'random guesses' for Sam and Max iMUSE
svn-id: r4271
| -rw-r--r-- | script_v2.cpp | 5 | ||||
| -rw-r--r-- | sound/imuse.cpp | 34 | 
2 files changed, 29 insertions, 10 deletions
| diff --git a/script_v2.cpp b/script_v2.cpp index b48356bf9b..74ec51aff1 100644 --- a/script_v2.cpp +++ b/script_v2.cpp @@ -1652,9 +1652,10 @@ void Scumm::o6_isSoundRunning()  {  	int snd = pop(); -	// FIXME: This fixes wak-a-rat until we figure out why -	//		  iMUSE fails to locate certain sounds. +	// FIXME: This fixes wak-a-rat until we correctly implement  +	//		  sam and max iMUSE  	if (_gameId == GID_SAMNMAX && _currentRoom == 18 && snd == 23) { +		stopSound(snd);  		push(0);  		return;   	} diff --git a/sound/imuse.cpp b/sound/imuse.cpp index 511c7a1a41..d480eabe92 100644 --- a/sound/imuse.cpp +++ b/sound/imuse.cpp @@ -1328,16 +1328,34 @@ int32 IMuseInternal::do_command(int a, int b, int c, int d, int e, int f, int g,  			return start_sound(b) ? 0 : -1;  		case 9:  			return stop_sound(b); -  		case 10: - -			return stop_all_sounds(); //FIXME +			return stop_all_sounds(); //FIXME: Sam and Max unknown  		case 11:  			return stop_all_sounds();  		case 13: -			return get_sound_status(b); -		case 14:		 -			return stop_sound(b); //FIXME  should be something like fade off +			return get_sound_status(b);		 +		case 14: {  // FIXME: Sam and Max command - Total guess +			int i;	//		  Seems to work as a volume fader +			Player *player; + +			for (i = ARRAYSIZE(_players), player = _players; i != 0; i--, player++) { +				if (player->_active && player->_id == (uint16)b) { +					player->fade_vol(e, f); +					return 0; +				} +			}			 +		} +		case 15: {	// FIXME: Sam and Max command - Total guess +			int i;	//		  Something to do with position? +			Player *player;			 +			for (i = ARRAYSIZE(_players), player = _players; i != 0; i--, player++) { +				if (player->_active && player->_id == (uint16)b) {								 +					player->jump(player->_track_index+1, 0, 0); +					return 0; +				} +			}			 +		} +  		case 16:  			return set_volchan(b, c);  		case 17: @@ -1345,9 +1363,9 @@ int32 IMuseInternal::do_command(int a, int b, int c, int d, int e, int f, int g,  		case 18:  			return set_volchan_entry(b, c);  		case 19: -			return stop_sound(b); //FIXME +			return stop_sound(b); //FIXME: Sam and Max unknown  		case 20: -			return stop_sound(b); //FIXME +			return stop_sound(b); //FIXME: Sam and Max unknown  		case 2:  		case 3:  			return 0; | 
