mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-21 11:41:25 +00:00
Play all sfx now, instead of only amiga ones + some music preparation
svn-id: r11288
This commit is contained in:
parent
ef1595b2a9
commit
2d3f4ef831
@ -8,6 +8,7 @@ MODULE_OBJS = \
|
||||
queen/graphics.o \
|
||||
queen/input.o \
|
||||
queen/logic.o \
|
||||
queen/musicdata.o \
|
||||
queen/queen.o \
|
||||
queen/resource.o \
|
||||
queen/restables.o \
|
||||
|
1703
queen/musicdata.cpp
Normal file
1703
queen/musicdata.cpp
Normal file
File diff suppressed because it is too large
Load Diff
465
queen/sound.cpp
465
queen/sound.cpp
@ -135,469 +135,10 @@ void Sound::waitSfxFinished() {
|
||||
}
|
||||
|
||||
void Sound::playSong(int16 songNum) {
|
||||
if (songNum == STOP_MUSIC) {
|
||||
//stop the music
|
||||
//_fanfareCount = _fluteCount = 0;
|
||||
//_oldName[0] = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
// Remap some songs because there is less amiga music
|
||||
// and we want lastoverride to work properly
|
||||
switch(songNum) {
|
||||
case 1:
|
||||
case 2:
|
||||
songNum = 39;
|
||||
break;
|
||||
|
||||
case 37:
|
||||
case 52:
|
||||
case 196:
|
||||
songNum = 90;
|
||||
break;
|
||||
|
||||
case 38:
|
||||
case 89:
|
||||
songNum = 3;
|
||||
break;
|
||||
|
||||
case 24:
|
||||
case 158:
|
||||
songNum = 117;
|
||||
break;
|
||||
|
||||
case 71:
|
||||
case 72:
|
||||
case 73:
|
||||
case 75:
|
||||
songNum = 133;
|
||||
break;
|
||||
|
||||
case 203:
|
||||
songNum = 67;
|
||||
break;
|
||||
|
||||
case 145:
|
||||
songNum = 140;
|
||||
break;
|
||||
|
||||
case 53:
|
||||
case 204:
|
||||
songNum = 44;
|
||||
break;
|
||||
|
||||
case 136:
|
||||
case 142:
|
||||
case 179:
|
||||
songNum = 86;
|
||||
break;
|
||||
|
||||
case 101:
|
||||
case 102:
|
||||
case 143:
|
||||
songNum = 188;
|
||||
break;
|
||||
|
||||
case 65:
|
||||
case 62:
|
||||
songNum = 69;
|
||||
break;
|
||||
|
||||
case 118:
|
||||
case 119:
|
||||
songNum = 137;
|
||||
break;
|
||||
|
||||
case 130:
|
||||
case 131:
|
||||
songNum = 59;
|
||||
break;
|
||||
|
||||
case 174:
|
||||
case 175:
|
||||
songNum = 57;
|
||||
break;
|
||||
|
||||
case 171:
|
||||
case 121:
|
||||
songNum = 137;
|
||||
break;
|
||||
|
||||
case 138:
|
||||
case 170:
|
||||
case 149:
|
||||
songNum = 28;
|
||||
break;
|
||||
|
||||
case 122:
|
||||
case 180:
|
||||
case 83:
|
||||
case 98:
|
||||
songNum = 83;
|
||||
break;
|
||||
|
||||
case 20:
|
||||
case 33:
|
||||
songNum = 34;
|
||||
break;
|
||||
|
||||
case 29:
|
||||
case 35:
|
||||
songNum = 36;
|
||||
break;
|
||||
|
||||
case 7:
|
||||
case 9:
|
||||
case 10:
|
||||
songNum = 11;
|
||||
break;
|
||||
|
||||
case 110:
|
||||
songNum = 94;
|
||||
break;
|
||||
|
||||
case 111:
|
||||
songNum = 95;
|
||||
break;
|
||||
|
||||
case 30:
|
||||
songNum = 43;
|
||||
break;
|
||||
|
||||
case 76:
|
||||
songNum = 27;
|
||||
break;
|
||||
|
||||
case 194:
|
||||
case 195:
|
||||
songNum = 32;
|
||||
break;
|
||||
}
|
||||
|
||||
// Sound effects and volume changes exit before setting lastoverride
|
||||
// 04-19-95 01:31pm Fix sfx bug
|
||||
if(_lastOverride != 32 && _lastOverride != 44) {
|
||||
switch(songNum) {
|
||||
// Volume normal
|
||||
case 5:
|
||||
warning("Sound::playSong() -> alter_current_volume() not implemented yet");
|
||||
//alter_current_volume();
|
||||
return;
|
||||
|
||||
// Volume soft
|
||||
case 15:
|
||||
//volumecontrol(-1,(20*VOLUME)/100);
|
||||
return;
|
||||
|
||||
// Volume medium
|
||||
case 14:
|
||||
//volumecontrol(-1,(32*VOLUME)/100);
|
||||
return;
|
||||
|
||||
// Open door
|
||||
case 25:
|
||||
sfxPlay("116BSSSS");
|
||||
return;
|
||||
|
||||
// Close door
|
||||
case 26:
|
||||
sfxPlay("105ASSSS");
|
||||
return;
|
||||
|
||||
// Light switch
|
||||
case 56:
|
||||
sfxPlay("27SSSSSS");
|
||||
return;
|
||||
|
||||
// Hydraulic doors open
|
||||
case 57:
|
||||
sfxPlay("96SSSSSS");
|
||||
return;
|
||||
|
||||
// Hydraulic doors close
|
||||
case 58:
|
||||
sfxPlay("97SSSSSS");
|
||||
return;
|
||||
|
||||
// Metallic door slams
|
||||
case 59:
|
||||
sfxPlay("105SSSSS");
|
||||
return;
|
||||
|
||||
// Oracle rezzes in
|
||||
case 63:
|
||||
sfxPlay("132SSSSS");
|
||||
return;
|
||||
|
||||
// Cloth slide 1
|
||||
case 27:
|
||||
sfxPlay("135SSSSS");
|
||||
return;
|
||||
|
||||
// Splash
|
||||
case 83:
|
||||
sfxPlay("18SSSSSS");
|
||||
return;
|
||||
|
||||
// Agression enhancer
|
||||
case 85:
|
||||
sfxPlay("138BSSSS");
|
||||
return;
|
||||
|
||||
// Dino Ray
|
||||
case 68:
|
||||
sfxPlay("138SSSSS");
|
||||
return;
|
||||
|
||||
// Dino transformation
|
||||
case 140:
|
||||
sfxPlay("55BSSSSS");
|
||||
return;
|
||||
|
||||
// Experimental laser
|
||||
case 141:
|
||||
sfxPlay("55SSSSSS");
|
||||
return;
|
||||
|
||||
// Plane hatch open
|
||||
case 94:
|
||||
sfxPlay("3SSSSSSS");
|
||||
return;
|
||||
|
||||
// Plane hatch close
|
||||
case 95:
|
||||
sfxPlay("4SSSSSSS");
|
||||
return;
|
||||
|
||||
// Oracle rezzes out
|
||||
case 117:
|
||||
sfxPlay("70SSSSSS");
|
||||
return;
|
||||
|
||||
// Dino horn
|
||||
case 124:
|
||||
sfxPlay("103SSSSS");
|
||||
return;
|
||||
|
||||
// Punch
|
||||
case 127:
|
||||
sfxPlay("128SSSSS");
|
||||
return;
|
||||
|
||||
// Body hits ground
|
||||
case 128:
|
||||
sfxPlay("129SSSSS");
|
||||
return;
|
||||
|
||||
// Explosion
|
||||
case 137:
|
||||
sfxPlay("88SSSSSS");
|
||||
return;
|
||||
|
||||
// Stone door grind 1
|
||||
case 86:
|
||||
sfxPlay("1001SSSS");
|
||||
return;
|
||||
|
||||
// Stone door grind 2
|
||||
case 188:
|
||||
sfxPlay("1002SSSS");
|
||||
return;
|
||||
|
||||
// Cloth slide 2
|
||||
case 28:
|
||||
sfxPlay("1005SSSS");
|
||||
return;
|
||||
|
||||
// Rattle bars
|
||||
case 151:
|
||||
sfxPlay("115SSSSS");
|
||||
return;
|
||||
|
||||
// Door dissolves
|
||||
case 152:
|
||||
sfxPlay("56SSSSSS");
|
||||
return;
|
||||
|
||||
// Altar slides
|
||||
case 153:
|
||||
sfxPlay("85SSSSSS");
|
||||
return;
|
||||
|
||||
// Pull lever
|
||||
case 166:
|
||||
sfxPlay("1008SSSS");
|
||||
return;
|
||||
|
||||
// Zap Frank
|
||||
case 182:
|
||||
sfxPlay("1023SSSS");
|
||||
return;
|
||||
|
||||
// Splorch
|
||||
case 69:
|
||||
sfxPlay("137ASSSS");
|
||||
return;
|
||||
|
||||
// Robot laser
|
||||
case 70:
|
||||
sfxPlay("61SSSSSS");
|
||||
return;
|
||||
|
||||
// Pick hits stone
|
||||
case 133:
|
||||
sfxPlay("71SSSSSS");
|
||||
return;
|
||||
|
||||
// Press button
|
||||
case 165:
|
||||
sfxPlay("1007SSSS");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Exit if trying to play a song that's already playing
|
||||
// and instruments are already loaded i.e. last song wasn't -1
|
||||
if (songNum == _lastOverride /* && oldName[0] != 0 */ )
|
||||
|
||||
// Play songs
|
||||
switch(songNum) {
|
||||
// Hotel
|
||||
case 39:
|
||||
//goSong("hotel",1);
|
||||
break;
|
||||
|
||||
case 19:
|
||||
//goSong("hotel",3);
|
||||
break;
|
||||
|
||||
case 34:
|
||||
//goSong("hotel",2);
|
||||
break;
|
||||
|
||||
case 36:
|
||||
//goSong("hotel",4);
|
||||
//fanfarerestore=lastoverride;
|
||||
//fanfarecount=60;
|
||||
break;
|
||||
|
||||
// Jungle
|
||||
case 40:
|
||||
//goSong("jung",1);
|
||||
//fanfarerestore=lastoverride;
|
||||
//fanfarecount=80;
|
||||
//flutecount=100;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
//goSong("jung",2);
|
||||
//flutecount=100;
|
||||
break;
|
||||
|
||||
// Temple
|
||||
case 54:
|
||||
//goSong("temple",1);
|
||||
break;
|
||||
|
||||
case 12:
|
||||
//goSong("temple",2);
|
||||
break;
|
||||
|
||||
case 11:
|
||||
//goSong("temple",3);
|
||||
break;
|
||||
|
||||
case 31:
|
||||
//goSong("temple",4);
|
||||
//fanfarerestore=lastoverride;
|
||||
//fanfarecount=80;
|
||||
break;
|
||||
|
||||
// Floda
|
||||
case 41:
|
||||
//goSong("floda",4);
|
||||
//fanfarerestore=lastoverride;
|
||||
//fanfarecount=60;
|
||||
break;
|
||||
|
||||
case 13:
|
||||
//goSong("floda",3);
|
||||
break;
|
||||
|
||||
case 16:
|
||||
//goSong("floda",1);
|
||||
break;
|
||||
|
||||
case 17:
|
||||
//goSong("floda",2);
|
||||
break;
|
||||
|
||||
case 43:
|
||||
//goSong("floda",5);
|
||||
break;
|
||||
|
||||
// Prequel (End credits)
|
||||
case 67:
|
||||
//goSong("title",1);
|
||||
// 05-19-95 03:24pm Removed to fix A500 Bug
|
||||
//fanfarerestore=90;
|
||||
//fanfarecount=550;
|
||||
break;
|
||||
|
||||
// Title (Intro credits)
|
||||
case 88:
|
||||
//goSong("title",1);
|
||||
break;
|
||||
|
||||
// Valley
|
||||
case 90:
|
||||
//goSong("awestruk",1);
|
||||
break;
|
||||
|
||||
// Confrontation
|
||||
case 91:
|
||||
//goSong("'jungle'",1);
|
||||
break;
|
||||
|
||||
// Frank
|
||||
case 46:
|
||||
//goSong("frank",1);
|
||||
break;
|
||||
|
||||
// Trader Bob
|
||||
case 6:
|
||||
//goSong("bob",1);
|
||||
break;
|
||||
|
||||
// Azura
|
||||
case 44:
|
||||
//goSong("azura",1);
|
||||
break;
|
||||
|
||||
// Amazon Fortress
|
||||
case 21:
|
||||
//goSong("fort",1);
|
||||
break;
|
||||
|
||||
// Rocket
|
||||
case 32:
|
||||
//goSong("rocket",1);
|
||||
break;
|
||||
|
||||
// Robot
|
||||
case 92:
|
||||
//goSong("robot",1);
|
||||
break;
|
||||
|
||||
// Song not handled by amiga
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
_lastOverride = _currentSong = songNum;
|
||||
int16 newTune = _song[songNum - 1].tuneList[0];
|
||||
|
||||
if (_tune[newTune - 1].sfx[0] /* && _sfxToggle */ )
|
||||
sfxPlay(_sfxName[_tune[newTune - 1].sfx[0] - 1]);
|
||||
}
|
||||
|
||||
|
||||
|
@ -31,6 +31,22 @@ namespace Queen {
|
||||
class Input;
|
||||
class Resource;
|
||||
|
||||
struct songData {
|
||||
int16 tuneList[5];
|
||||
int16 volume;
|
||||
int16 tempo;
|
||||
int16 reverb;
|
||||
int16 override;
|
||||
int16 ignore;
|
||||
};
|
||||
|
||||
struct tuneData {
|
||||
int16 tuneNum[9];
|
||||
int16 sfx[2];
|
||||
int16 mode;
|
||||
int16 delay;
|
||||
};
|
||||
|
||||
class Sound {
|
||||
public:
|
||||
Sound(SoundMixer *mixer, Input *input, Resource *resource);
|
||||
@ -45,8 +61,16 @@ protected:
|
||||
Input *_input;
|
||||
Resource *_resource;
|
||||
|
||||
static const songData _song[];
|
||||
static const tuneData _tune[];
|
||||
static const char *_sfxName[];
|
||||
|
||||
int16 _lastOverride;
|
||||
int16 _lastMerge;
|
||||
int16 _altMrgPri;
|
||||
int16 _currentSong;
|
||||
int16 _previousSong;
|
||||
int16 _previousSongNum;
|
||||
PlayingSoundHandle _sfxHandle;
|
||||
};
|
||||
|
||||
|
@ -333,8 +333,14 @@ playsong() Sound::playSong()
|
||||
sfxbusy() Sound::waitSfxFinished()
|
||||
sfxplay() Sound::sfxPlay()
|
||||
-
|
||||
CURRSONG
|
||||
SFXNAME Logic::_sfxName
|
||||
song[] Sound::_song[]
|
||||
tunelist[] Sound::_tune[]
|
||||
lastmerge Sound::_lastMerge
|
||||
altmrgpri Sound::_altMrgPri
|
||||
oldsn Sound::_previousSongNum
|
||||
LASTSONG Sound::_previousSong
|
||||
CURRSONG Sound::_currentSong
|
||||
SFXNAME Sound::_sfxName
|
||||
tmpbamflag
|
||||
VOLUME
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user