Update to 20180729 release.

byuu wrote:

Sigh ...

asio.hpp needs #include <nall/windows/registry.hpp>

[Since the last WIP, byuu also posted the following message. -Ed.]

ruby drivers have all been updated (but not tested outside of BSD), and
I redesigned the settings window. The driver functionality all exists on
a new "Drivers" panel, the emulator/hack settings go to a
"Configuration" panel, and the video/audio panels lose driver settings.
As does the settings menu and its synchronize options.

I want to start pushing toward a v107 release. Critically, I will need
DirectSound and ALSA to support dynamic rate control. I'd also like to
eliminate the other system manifest.bml files. I need to update the
cheat code database format, and bundle at least a few quark shaders --
although I still need to default to Direct3D on Windows.

Turbo keys would be nice, if it's not too much effort. Aside from
netplay, it's the last significant feature I'm missing.

I think for v107, higan is going to be a bit rough around the edges
compared to bsnes. And I don't think it's practical to finish the bsnes
localization support.

I'm thinking we probably want another WIP to iron out any critical
issues, but this time there should be a feature freeze with the next
WIP.
This commit is contained in:
Tim Allen
2018-07-29 23:24:38 +10:00
parent 716c95f279
commit 5deba5cbc1
182 changed files with 1533 additions and 2674 deletions

View File

@@ -6,23 +6,23 @@
namespace nall { namespace DSP { namespace Resampler {
struct Cubic {
inline auto reset(real inputFrequency, real outputFrequency, uint queueSize = 0) -> void;
inline auto setInputFrequency(real inputFrequency) -> void;
inline auto reset(double inputFrequency, double outputFrequency, uint queueSize = 0) -> void;
inline auto setInputFrequency(double inputFrequency) -> void;
inline auto pending() const -> bool;
inline auto read() -> real;
inline auto write(real sample) -> void;
inline auto read() -> double;
inline auto write(double sample) -> void;
private:
real inputFrequency;
real outputFrequency;
double inputFrequency;
double outputFrequency;
real ratio;
real fraction;
real history[4];
queue<real> samples;
double ratio;
double fraction;
double history[4];
queue<double> samples;
};
auto Cubic::reset(real inputFrequency, real outputFrequency, uint queueSize) -> void {
auto Cubic::reset(double inputFrequency, double outputFrequency, uint queueSize) -> void {
this->inputFrequency = inputFrequency;
this->outputFrequency = outputFrequency;
if(!queueSize) queueSize = outputFrequency * 0.02; //20ms
@@ -33,7 +33,7 @@ auto Cubic::reset(real inputFrequency, real outputFrequency, uint queueSize) ->
samples.resize(queueSize);
}
auto Cubic::setInputFrequency(real inputFrequency) -> void {
auto Cubic::setInputFrequency(double inputFrequency) -> void {
this->inputFrequency = inputFrequency;
ratio = inputFrequency / outputFrequency;
}
@@ -42,11 +42,11 @@ auto Cubic::pending() const -> bool {
return samples.pending();
}
auto Cubic::read() -> real {
auto Cubic::read() -> double {
return samples.read();
}
auto Cubic::write(real sample) -> void {
auto Cubic::write(double sample) -> void {
auto& mu = fraction;
auto& s = history;
@@ -56,10 +56,10 @@ auto Cubic::write(real sample) -> void {
s[3] = sample;
while(mu <= 1.0) {
real A = s[3] - s[2] - s[0] + s[1];
real B = s[0] - s[1] - A;
real C = s[2] - s[0];
real D = s[1];
double A = s[3] - s[2] - s[0] + s[1];
double B = s[0] - s[1] - A;
double C = s[2] - s[0];
double D = s[1];
samples.write(A * mu * mu * mu + B * mu * mu + C * mu + D);
mu += ratio;