Update to v097r02 release.
byuu says:
Note: balanced/performance profiles still broken, sorry.
Changelog:
- added nall/GNUmakefile unique() function; used on linking phase of
higan
- added nall/unique_pointer
- target-tomoko and {System}::Video updated to use
unique_pointer<ClassName> instead of ClassName* [1]
- locate() updated to search multiple paths [2]
- GB: pass gekkio's if_ie_registers and boot_hwio-G test ROMs
- FC, GB, GBA: merge video/ into the PPU cores
- ruby: fixed ~AudioXAudio2() typo
[1] I expected this to cause new crashes on exit due to changing the
order of destruction of objects (and deleting things that weren't
deleted before), but ... so far, so good. I guess we'll see what crops
up, especially on OS X (which is already crashing for unknown reasons on
exit.)
[2] right now, the search paths are: programpath(), {configpath(),
"higan/"}, {localpath(), "higan/"}; but we can add as many more as we
want, and we can also add platform-specific versions.
2016-01-25 11:27:18 +00:00
|
|
|
Audio audio;
|
|
|
|
|
|
|
|
auto Audio::coprocessorEnable(bool enable) -> void {
|
2016-01-23 07:29:34 +00:00
|
|
|
mixer.clear();
|
|
|
|
mixerEnable = enable;
|
|
|
|
dsp.read = dsp.write = 0;
|
|
|
|
mix.read = mix.write = 0;
|
|
|
|
}
|
|
|
|
|
Update to v097r02 release.
byuu says:
Note: balanced/performance profiles still broken, sorry.
Changelog:
- added nall/GNUmakefile unique() function; used on linking phase of
higan
- added nall/unique_pointer
- target-tomoko and {System}::Video updated to use
unique_pointer<ClassName> instead of ClassName* [1]
- locate() updated to search multiple paths [2]
- GB: pass gekkio's if_ie_registers and boot_hwio-G test ROMs
- FC, GB, GBA: merge video/ into the PPU cores
- ruby: fixed ~AudioXAudio2() typo
[1] I expected this to cause new crashes on exit due to changing the
order of destruction of objects (and deleting things that weren't
deleted before), but ... so far, so good. I guess we'll see what crops
up, especially on OS X (which is already crashing for unknown reasons on
exit.)
[2] right now, the search paths are: programpath(), {configpath(),
"higan/"}, {localpath(), "higan/"}; but we can add as many more as we
want, and we can also add platform-specific versions.
2016-01-25 11:27:18 +00:00
|
|
|
auto Audio::coprocessorFrequency(double frequency) -> void {
|
2016-01-23 07:29:34 +00:00
|
|
|
mixer.setFrequency(frequency);
|
|
|
|
mixer.setResampler(nall::DSP::ResampleEngine::Sinc);
|
|
|
|
mixer.setResamplerFrequency(system.apuFrequency() / 768.0);
|
|
|
|
}
|
|
|
|
|
Update to v097r02 release.
byuu says:
Note: balanced/performance profiles still broken, sorry.
Changelog:
- added nall/GNUmakefile unique() function; used on linking phase of
higan
- added nall/unique_pointer
- target-tomoko and {System}::Video updated to use
unique_pointer<ClassName> instead of ClassName* [1]
- locate() updated to search multiple paths [2]
- GB: pass gekkio's if_ie_registers and boot_hwio-G test ROMs
- FC, GB, GBA: merge video/ into the PPU cores
- ruby: fixed ~AudioXAudio2() typo
[1] I expected this to cause new crashes on exit due to changing the
order of destruction of objects (and deleting things that weren't
deleted before), but ... so far, so good. I guess we'll see what crops
up, especially on OS X (which is already crashing for unknown reasons on
exit.)
[2] right now, the search paths are: programpath(), {configpath(),
"higan/"}, {localpath(), "higan/"}; but we can add as many more as we
want, and we can also add platform-specific versions.
2016-01-25 11:27:18 +00:00
|
|
|
auto Audio::sample(int16 left, int16 right) -> void {
|
2016-01-23 07:29:34 +00:00
|
|
|
if(!mixerEnable) return interface->audioSample(left, right);
|
|
|
|
|
|
|
|
dsp.left[dsp.write] = left;
|
|
|
|
dsp.right[dsp.write] = right;
|
|
|
|
dsp.write++;
|
|
|
|
flush();
|
|
|
|
}
|
|
|
|
|
Update to v097r02 release.
byuu says:
Note: balanced/performance profiles still broken, sorry.
Changelog:
- added nall/GNUmakefile unique() function; used on linking phase of
higan
- added nall/unique_pointer
- target-tomoko and {System}::Video updated to use
unique_pointer<ClassName> instead of ClassName* [1]
- locate() updated to search multiple paths [2]
- GB: pass gekkio's if_ie_registers and boot_hwio-G test ROMs
- FC, GB, GBA: merge video/ into the PPU cores
- ruby: fixed ~AudioXAudio2() typo
[1] I expected this to cause new crashes on exit due to changing the
order of destruction of objects (and deleting things that weren't
deleted before), but ... so far, so good. I guess we'll see what crops
up, especially on OS X (which is already crashing for unknown reasons on
exit.)
[2] right now, the search paths are: programpath(), {configpath(),
"higan/"}, {localpath(), "higan/"}; but we can add as many more as we
want, and we can also add platform-specific versions.
2016-01-25 11:27:18 +00:00
|
|
|
auto Audio::coprocessorSample(int16 left, int16 right) -> void {
|
2016-01-23 07:29:34 +00:00
|
|
|
int samples[] = {left, right};
|
|
|
|
mixer.sample(samples);
|
|
|
|
while(mixer.pending()) {
|
|
|
|
mixer.read(samples);
|
|
|
|
mix.left[mix.write] = samples[0];
|
|
|
|
mix.right[mix.write] = samples[1];
|
|
|
|
mix.write++;
|
|
|
|
flush();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
Update to v097r02 release.
byuu says:
Note: balanced/performance profiles still broken, sorry.
Changelog:
- added nall/GNUmakefile unique() function; used on linking phase of
higan
- added nall/unique_pointer
- target-tomoko and {System}::Video updated to use
unique_pointer<ClassName> instead of ClassName* [1]
- locate() updated to search multiple paths [2]
- GB: pass gekkio's if_ie_registers and boot_hwio-G test ROMs
- FC, GB, GBA: merge video/ into the PPU cores
- ruby: fixed ~AudioXAudio2() typo
[1] I expected this to cause new crashes on exit due to changing the
order of destruction of objects (and deleting things that weren't
deleted before), but ... so far, so good. I guess we'll see what crops
up, especially on OS X (which is already crashing for unknown reasons on
exit.)
[2] right now, the search paths are: programpath(), {configpath(),
"higan/"}, {localpath(), "higan/"}; but we can add as many more as we
want, and we can also add platform-specific versions.
2016-01-25 11:27:18 +00:00
|
|
|
auto Audio::flush() -> void {
|
2016-01-23 07:29:34 +00:00
|
|
|
while(dsp.read != dsp.write && mix.read != mix.write) {
|
|
|
|
interface->audioSample(
|
|
|
|
sclamp<16>(dsp.left[dsp.read] + mix.left[mix.read]),
|
|
|
|
sclamp<16>(dsp.right[dsp.read] + mix.right[mix.read])
|
|
|
|
);
|
|
|
|
dsp.read++;
|
|
|
|
mix.read++;
|
|
|
|
}
|
|
|
|
}
|