dev229 - VERA: emulated noise freq was double that of real hardware (#2488)

* VERA: emulated noise freq was double that of real hardware

* fulfill req changes: version/engine version, revert SDL submodule
This commit is contained in:
mooinglemur 2025-04-26 08:38:20 -10:00 committed by GitHub
parent 35fe3679f2
commit b1814a8337
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 16 additions and 6 deletions

View file

@ -52,10 +52,10 @@ class DivWorkPool;
#define EXTERN_BUSY_BEGIN_SOFT e->softLocked=true; e->isBusy.lock(); #define EXTERN_BUSY_BEGIN_SOFT e->softLocked=true; e->isBusy.lock();
#define EXTERN_BUSY_END e->isBusy.unlock(); e->softLocked=false; #define EXTERN_BUSY_END e->isBusy.unlock(); e->softLocked=false;
//#define DIV_UNSTABLE #define DIV_UNSTABLE
#define DIV_VERSION "0.6.8.1" #define DIV_VERSION "dev229"
#define DIV_ENGINE_VERSION 228 #define DIV_ENGINE_VERSION 229
// for imports // for imports
#define DIV_VERSION_MOD 0xff01 #define DIV_VERSION_MOD 0xff01
#define DIV_VERSION_FC 0xff02 #define DIV_VERSION_FC 0xff02

View file

@ -2100,6 +2100,12 @@ bool DivEngine::loadFur(unsigned char* file, size_t len, int variantID) {
ds.systemFlags[i].set("chipType",1); ds.systemFlags[i].set("chipType",1);
} }
} }
} else if (ds.version<229) {
for (int i=0; i<ds.systemLen; i++) {
if (ds.system[i]==DIV_SYSTEM_VERA) {
ds.systemFlags[i].set("chipType",2);
}
}
} }
// SNES no anti-click // SNES no anti-click

View file

@ -81,7 +81,7 @@ render(struct VERA_PSG* psg, int16_t *left, int16_t *right)
if ((psg->chipType >= 1) && (!ch->left && !ch->right)) { if ((psg->chipType >= 1) && (!ch->left && !ch->right)) {
new_phase = 0; new_phase = 0;
} }
if ((ch->phase & 0x10000) != (new_phase & 0x10000)) { if ((psg->chipType < 3) ? (ch->phase & 0x10000) != (new_phase & 0x10000) : (ch->phase & 0x10000) && !(new_phase & 0x10000)) {
ch->noiseval = (psg->chipType < 1) ? psg->noiseOut : (psg->noiseState >> 1) & 0x3f; ch->noiseval = (psg->chipType < 1) ? psg->noiseOut : (psg->noiseState >> 1) & 0x3f;
} }
ch->phase = new_phase; ch->phase = new_phase;

View file

@ -543,7 +543,7 @@ void DivPlatformVERA::poke(std::vector<DivRegWrite>& wlist) {
} }
void DivPlatformVERA::setFlags(const DivConfig& flags) { void DivPlatformVERA::setFlags(const DivConfig& flags) {
psg->chipType=flags.getInt("chipType",2); psg->chipType=flags.getInt("chipType",3);
chipClock=25000000; chipClock=25000000;
CHECK_CUSTOM_CLOCK; CHECK_CUSTOM_CLOCK;
rate=chipClock/512; rate=chipClock/512;

View file

@ -2552,7 +2552,7 @@ bool FurnaceGUI::drawSysConf(int chan, int sysPos, DivSystem type, DivConfig& fl
break; break;
} }
case DIV_SYSTEM_VERA: { case DIV_SYSTEM_VERA: {
int chipType=flags.getInt("chipType",2); int chipType=flags.getInt("chipType",3);
ImGui::Text(_("Chip revision:")); ImGui::Text(_("Chip revision:"));
ImGui::Indent(); ImGui::Indent();
@ -2568,6 +2568,10 @@ bool FurnaceGUI::drawSysConf(int chan, int sysPos, DivSystem type, DivConfig& fl
chipType=2; chipType=2;
altered=true; altered=true;
} }
if (ImGui::RadioButton(_("X16 Emu R49 (Noise freq fix)"),chipType==3)) {
chipType=3;
altered=true;
}
ImGui::Unindent(); ImGui::Unindent();
if (altered) { if (altered) {