From e97dff9f33697fac6741a74c02e1034fb126a304 Mon Sep 17 00:00:00 2001 From: Florian Kagerer Date: Sat, 28 Jun 2008 13:13:37 +0000 Subject: - HOF: bug fix for music driver - KYRA1 PC98: fix music file selection svn-id: r32819 --- engines/kyra/sound_lok.cpp | 12 ++++++------ engines/kyra/sound_towns.cpp | 12 ++++++++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/engines/kyra/sound_lok.cpp b/engines/kyra/sound_lok.cpp index d320536507..7d6e1dd378 100644 --- a/engines/kyra/sound_lok.cpp +++ b/engines/kyra/sound_lok.cpp @@ -57,12 +57,12 @@ void KyraEngine_LoK::snd_playWanderScoreViaMap(int command, int restart) { _sound->haltTrack(); } } else if (_flags.platform == Common::kPlatformPC98) { - - ////////////// - //// TODO //// - ////////////// - _sound->playTrack(command); - + if (command == 1) + _sound->beginFadeOut(); + else if (command >= 2) + _sound->playTrack(command); + else + _sound->haltTrack(); } else { KyraEngine_v1::snd_playWanderScoreViaMap(command, restart); } diff --git a/engines/kyra/sound_towns.cpp b/engines/kyra/sound_towns.cpp index 40a746f1de..b487afe8f8 100644 --- a/engines/kyra/sound_towns.cpp +++ b/engines/kyra/sound_towns.cpp @@ -1273,6 +1273,8 @@ void TownsPC98_OpnOperator::generateOutput(int phasebuf, int *feedbuf, int &out) o = &feedbuf[0]; i = &feedbuf[1]; phaseShift = _feedbackLevel ? ((feedbuf[0] + feedbuf[1]) << _feedbackLevel) : 0; + if (phasebuf == -1) + *i = 0; *o = *i; } else { phaseShift = phasebuf << 15; @@ -1796,7 +1798,7 @@ void TownsPC98_OpnDriver::nextTick(int16 *buffer, uint32 bufferSize) { break; case 5: *del = feed[1]; - _channels[i]->opr[0]->generateOutput(0, feed, phbuf1); + _channels[i]->opr[0]->generateOutput(-1, feed, phbuf1); _channels[i]->opr[2]->generateOutput(*del, 0, output); _channels[i]->opr[1]->generateOutput(*del, 0, output); _channels[i]->opr[3]->generateOutput(*del, 0, output); @@ -2707,6 +2709,9 @@ bool SoundPC98::init() { } void SoundPC98::playTrack(uint8 track) { + if (--track >= 56) + track -= 55; + if (track == _lastTrack && _musicEnabled) return; @@ -2715,9 +2720,7 @@ void SoundPC98::playTrack(uint8 track) { char musicfile[13]; sprintf(musicfile, fileListEntry(0), track); delete[] _musicTrackData; - // This is just for testing purposes atm since we haven't found a way - // to determine the correct file yet - _musicTrackData = _vm->resource()->fileData("kyram40.dat"/*musicfile*/, 0); + _musicTrackData = _vm->resource()->fileData(musicfile, 0); if (_musicEnabled) _driver->loadData(_musicTrackData); @@ -2767,6 +2770,7 @@ bool SoundTownsPC98_v2::init() { (Common::File::exists("track1.mp3") || Common::File::exists("track1.ogg") || Common::File::exists("track1.flac") || Common::File::exists("track1.fla"))) _musicEnabled = 2; + _musicEnabled = 1; return _driver->init(); } -- cgit v1.2.3