HD Packs: Add bgm/sfx volume to save state

This commit is contained in:
Sour 2018-02-25 17:16:46 -05:00
parent 83295b4117
commit 5ed67cb3de
2 changed files with 19 additions and 4 deletions

View file

@ -8,7 +8,12 @@ HdAudioDevice::HdAudioDevice(HdPackData * hdData)
_album = 0;
_flags = 0;
_trackError = false;
_sfxVolume = 128;
_bgmVolume = 128;
_oggMixer = SoundMixer::GetOggMixer();
_oggMixer->SetBgmVolume(_bgmVolume);
_oggMixer->SetSfxVolume(_sfxVolume);
}
void HdAudioDevice::StreamState(bool saving)
@ -19,12 +24,14 @@ void HdAudioDevice::StreamState(bool saving)
if(trackOffset < 0) {
_lastBgmTrack = -1;
}
Stream(_album, _lastBgmTrack, trackOffset);
Stream(_album, _lastBgmTrack, trackOffset, _sfxVolume, _bgmVolume);
} else {
Stream(_album, _lastBgmTrack, trackOffset);
Stream(_album, _lastBgmTrack, trackOffset, _sfxVolume, _bgmVolume);
if(_lastBgmTrack != -1 && trackOffset > 0) {
PlayBgmTrack(_lastBgmTrack, trackOffset);
}
_oggMixer->SetBgmVolume(_bgmVolume);
_oggMixer->SetSfxVolume(_sfxVolume);
}
}
@ -107,11 +114,17 @@ void HdAudioDevice::WriteRAM(uint16_t addr, uint8_t value)
//BGM Volume: 0 = mute, 255 = max
//Also has an immediate effect on currently playing BGM
case 2: _oggMixer->SetBgmVolume(value); break;
case 2:
_bgmVolume = value;
_oggMixer->SetBgmVolume(value);
break;
//SFX Volume: 0 = mute, 255 = max
//Also has an immediate effect on all currently playing SFX
case 3: _oggMixer->SetSfxVolume(value); break;
case 3:
_sfxVolume = value;
_oggMixer->SetSfxVolume(value);
break;
//Album number: 0-255 (Allows for up to 64k BGM and SFX tracks)
//No immediate effect - only affects subsequent $4FFE/$4FFF writes

View file

@ -16,6 +16,8 @@ private:
bool _trackError;
OggMixer* _oggMixer;
int32_t _lastBgmTrack;
uint8_t _bgmVolume;
uint8_t _sfxVolume;
bool PlayBgmTrack(uint8_t track, uint32_t startOffset);
bool PlaySfx(uint8_t sfxNumber);