speed changes to play smush movies
svn-id: r4941
This commit is contained in:
parent
fb91bdd21d
commit
2f91c18b22
5 changed files with 19 additions and 7 deletions
|
@ -2709,8 +2709,13 @@ void Scumm::o6_miscOps()
|
||||||
case 4:
|
case 4:
|
||||||
grabCursor(args[1], args[2], args[3], args[4]);
|
grabCursor(args[1], args[2], args[3], args[4]);
|
||||||
break;
|
break;
|
||||||
case 6: {
|
case 6: {
|
||||||
ScummRenderer sr(this);
|
uint32 speed;
|
||||||
|
if (strcmp((char*)getStringAddressVar(VAR_VIDEONAME), "sq3.san") == 0)
|
||||||
|
speed = 71;
|
||||||
|
else
|
||||||
|
speed = 1000 / _insaneFlag;
|
||||||
|
ScummRenderer sr(this, speed);
|
||||||
SmushPlayer sp(&sr);
|
SmushPlayer sp(&sr);
|
||||||
char filename[512];
|
char filename[512];
|
||||||
strcpy(filename, _gameDataPath);
|
strcpy(filename, _gameDataPath);
|
||||||
|
@ -2718,6 +2723,7 @@ void Scumm::o6_miscOps()
|
||||||
strcat(filename, (char*)getStringAddressVar(VAR_VIDEONAME));
|
strcat(filename, (char*)getStringAddressVar(VAR_VIDEONAME));
|
||||||
sp.play(filename);
|
sp.play(filename);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
warning("o6_miscOps: stub7()");
|
warning("o6_miscOps: stub7()");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -188,7 +188,10 @@ bool scumm_mixer::stop() {
|
||||||
return true;
|
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;
|
static ScummRenderer * s_renderer;
|
||||||
|
@ -203,7 +206,7 @@ Mixer * ScummRenderer::getMixer() {
|
||||||
_smixer = new scumm_mixer(_scumm->_mixer);
|
_smixer = new scumm_mixer(_scumm->_mixer);
|
||||||
if(!_smixer) error("unable to allocate a smush mixer");
|
if(!_smixer) error("unable to allocate a smush mixer");
|
||||||
s_renderer = this;
|
s_renderer = this;
|
||||||
_scumm->_timer->installProcedure(&smush_handler, 83);
|
_scumm->_timer->installProcedure(&smush_handler, _insaneSpeed);
|
||||||
}
|
}
|
||||||
return _smixer;
|
return _smixer;
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,9 +44,10 @@ class ScummRenderer : public BaseRenderer {
|
||||||
private:
|
private:
|
||||||
Scumm * _scumm;
|
Scumm * _scumm;
|
||||||
scumm_mixer * _smixer;
|
scumm_mixer * _smixer;
|
||||||
|
uint32 _insaneSpeed;
|
||||||
volatile bool _wait;
|
volatile bool _wait;
|
||||||
public:
|
public:
|
||||||
ScummRenderer(Scumm * scumm);
|
ScummRenderer(Scumm * scumm, uint32 speed);
|
||||||
virtual ~ScummRenderer();
|
virtual ~ScummRenderer();
|
||||||
virtual bool wait(int32 ms);
|
virtual bool wait(int32 ms);
|
||||||
bool update();
|
bool update();
|
||||||
|
|
|
@ -105,7 +105,7 @@ void Sound::processSoundQues() {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ((_scumm->_gameId == GID_DIG) && (data[0] == 4096)){
|
if ((_scumm->_gameId == GID_DIG) && (data[0] == 4096)){
|
||||||
playBundleMusic(data[1] - 1);
|
// playBundleMusic(data[1] - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(_scumm->_features & GF_AFTER_V7)) {
|
if (!(_scumm->_features & GF_AFTER_V7)) {
|
||||||
|
|
|
@ -656,11 +656,13 @@ void SoundMixer::ChannelStream::mix(int16 * data, uint len) {
|
||||||
} else {
|
} else {
|
||||||
mixer_helper_table[_flags & 0x07] (data, &len, &_pos, &fp_pos, fp_speed, vol_tab, _endOfBuffer);
|
mixer_helper_table[_flags & 0x07] (data, &len, &_pos, &fp_pos, fp_speed, vol_tab, _endOfBuffer);
|
||||||
if (len != 0) {
|
if (len != 0) {
|
||||||
|
//FIXME: what is wrong ?
|
||||||
|
warning("bad play sound in stream(wrap around)");
|
||||||
_pos = _ptr;
|
_pos = _ptr;
|
||||||
mixer_helper_table[_flags & 0x07] (data, &len, &_pos, &fp_pos, fp_speed, vol_tab, end_of_data);
|
mixer_helper_table[_flags & 0x07] (data, &len, &_pos, &fp_pos, fp_speed, vol_tab, end_of_data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_timeOut = 2;
|
_timeOut = 3;
|
||||||
_fpPos = fp_pos;
|
_fpPos = fp_pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue