speed changes to play smush movies

svn-id: r4941
This commit is contained in:
Paweł Kołodziejski 2002-09-15 05:38:04 +00:00
parent fb91bdd21d
commit 2f91c18b22
5 changed files with 19 additions and 7 deletions

View file

@ -2709,8 +2709,13 @@ void Scumm::o6_miscOps()
case 4:
grabCursor(args[1], args[2], args[3], args[4]);
break;
case 6: {
ScummRenderer sr(this);
case 6: {
uint32 speed;
if (strcmp((char*)getStringAddressVar(VAR_VIDEONAME), "sq3.san") == 0)
speed = 71;
else
speed = 1000 / _insaneFlag;
ScummRenderer sr(this, speed);
SmushPlayer sp(&sr);
char filename[512];
strcpy(filename, _gameDataPath);
@ -2718,6 +2723,7 @@ void Scumm::o6_miscOps()
strcat(filename, (char*)getStringAddressVar(VAR_VIDEONAME));
sp.play(filename);
}
break;
case 7:
warning("o6_miscOps: stub7()");
break;

View file

@ -188,7 +188,10 @@ bool scumm_mixer::stop() {
return true;
}
ScummRenderer::ScummRenderer(Scumm * scumm) : _scumm(scumm), _smixer(0) {
ScummRenderer::ScummRenderer(Scumm * scumm, uint32 speed) :
_scumm(scumm),
_smixer(0),
_insaneSpeed(speed) {
}
static ScummRenderer * s_renderer;
@ -203,7 +206,7 @@ Mixer * ScummRenderer::getMixer() {
_smixer = new scumm_mixer(_scumm->_mixer);
if(!_smixer) error("unable to allocate a smush mixer");
s_renderer = this;
_scumm->_timer->installProcedure(&smush_handler, 83);
_scumm->_timer->installProcedure(&smush_handler, _insaneSpeed);
}
return _smixer;
}

View file

@ -44,9 +44,10 @@ class ScummRenderer : public BaseRenderer {
private:
Scumm * _scumm;
scumm_mixer * _smixer;
uint32 _insaneSpeed;
volatile bool _wait;
public:
ScummRenderer(Scumm * scumm);
ScummRenderer(Scumm * scumm, uint32 speed);
virtual ~ScummRenderer();
virtual bool wait(int32 ms);
bool update();

View file

@ -105,7 +105,7 @@ void Sound::processSoundQues() {
#endif
if ((_scumm->_gameId == GID_DIG) && (data[0] == 4096)){
playBundleMusic(data[1] - 1);
// playBundleMusic(data[1] - 1);
}
if (!(_scumm->_features & GF_AFTER_V7)) {

View file

@ -656,11 +656,13 @@ void SoundMixer::ChannelStream::mix(int16 * data, uint len) {
} else {
mixer_helper_table[_flags & 0x07] (data, &len, &_pos, &fp_pos, fp_speed, vol_tab, _endOfBuffer);
if (len != 0) {
//FIXME: what is wrong ?
warning("bad play sound in stream(wrap around)");
_pos = _ptr;
mixer_helper_table[_flags & 0x07] (data, &len, &_pos, &fp_pos, fp_speed, vol_tab, end_of_data);
}
}
_timeOut = 2;
_timeOut = 3;
_fpPos = fp_pos;
}