aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/sound_towns.cpp
diff options
context:
space:
mode:
authorFlorian Kagerer2008-08-20 16:14:10 +0000
committerFlorian Kagerer2008-08-20 16:14:10 +0000
commit023189d6f1d270ca30331ec05c5f93ba40707670 (patch)
treef949e96203d8d7ca53e12bccae9a6fa028d4d590 /engines/kyra/sound_towns.cpp
parentfac71dc6d443128574fec7855c91658283312b0d (diff)
downloadscummvm-rg350-023189d6f1d270ca30331ec05c5f93ba40707670.tar.gz
scummvm-rg350-023189d6f1d270ca30331ec05c5f93ba40707670.tar.bz2
scummvm-rg350-023189d6f1d270ca30331ec05c5f93ba40707670.zip
tempo fix
svn-id: r34064
Diffstat (limited to 'engines/kyra/sound_towns.cpp')
-rw-r--r--engines/kyra/sound_towns.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/engines/kyra/sound_towns.cpp b/engines/kyra/sound_towns.cpp
index dbe0469809..c103b51bc0 100644
--- a/engines/kyra/sound_towns.cpp
+++ b/engines/kyra/sound_towns.cpp
@@ -1534,9 +1534,9 @@ private:
class TownsPC98_OpnPercussionSource {
public:
TownsPC98_OpnPercussionSource(const float rate);
- ~TownsPC98_OpnPercussionSource();
+ ~TownsPC98_OpnPercussionSource() {}
- void init(const void *pcmData = 0);
+ void init(const uint8 *pcmData = 0);
void reset();
void writeReg(uint8 address, uint8 value);
@@ -2871,16 +2871,13 @@ TownsPC98_OpnPercussionSource::TownsPC98_OpnPercussionSource(const float rate) :
memset(_pcmInstr, 0, sizeof(PcmInstrument) * 6);
}
-TownsPC98_OpnPercussionSource::~TownsPC98_OpnPercussionSource() {
-}
-
-void TownsPC98_OpnPercussionSource::init(const void *pcmData) {
+void TownsPC98_OpnPercussionSource::init(const uint8 *pcmData) {
if (_ready) {
reset();
return;
}
- const uint8 *start = (const uint8*) pcmData;
+ const uint8 *start = pcmData;
const uint8 *pos = start;
if (pcmData) {
@@ -3505,9 +3502,12 @@ void TownsPC98_OpnDriver::startSoundEffect() {
}
void TownsPC98_OpnDriver::setTempo(uint8 tempo) {
- _tempo = tempo - 0x10;
- _samplesPerCallback = _tempo ? (getRate() / _tempo) : 0;
- _samplesPerCallbackRemainder = _tempo ? (getRate() % _tempo) : 0;
+ _tempo = tempo;
+
+ float spc = (float)(0x100 - _tempo) * 2.5 * _baserate;
+ _samplesPerCallback = (int32) spc;
+ spc -= _samplesPerCallback;
+ _samplesPerCallbackRemainder = (spc > 0.5) ? 1 : 0;
}
SoundTowns::SoundTowns(KyraEngine_v1 *vm, Audio::Mixer *mixer)