dev128 - prepare for SN noise and hard fix fp b

file picker bug...
This commit is contained in:
tildearrow 2022-11-25 14:33:56 -05:00
parent 7841c3d0b6
commit 7709a9c3f6
7 changed files with 40 additions and 3 deletions

View File

@ -47,8 +47,8 @@
#define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock();
#define BUSY_END isBusy.unlock(); softLocked=false; #define BUSY_END isBusy.unlock(); softLocked=false;
#define DIV_VERSION "dev127" #define DIV_VERSION "dev128"
#define DIV_ENGINE_VERSION 127 #define DIV_ENGINE_VERSION 128
// 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

@ -208,7 +208,9 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
}*/ }*/
// Game Boy arp+soundLen screwery // Game Boy arp+soundLen screwery
ds.systemFlags[0].set("enoughAlready",true); if (ds.system[0]==DIV_SYSTEM_GB) {
ds.systemFlags[0].set("enoughAlready",true);
}
logI("reading module data..."); logI("reading module data...");
if (ds.version>0x0c) { if (ds.version>0x0c) {
@ -966,6 +968,11 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
ds.system[1]=DIV_SYSTEM_FDS; ds.system[1]=DIV_SYSTEM_FDS;
} }
// SMS noise freq
if (ds.system[0]==DIV_SYSTEM_SMS) {
ds.systemFlags[0].set("noEasyNoise",true);
}
ds.systemName=getSongSystemLegacyName(ds,!getConfInt("noMultiSystem",0)); ds.systemName=getSongSystemLegacyName(ds,!getConfInt("noMultiSystem",0));
if (active) quitDispatch(); if (active) quitDispatch();
@ -2513,6 +2520,16 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
} }
} }
// SN noise compat
if (ds.version<128) {
for (int i=0; i<ds.systemLen; i++) {
if (ds.system[i]==DIV_SYSTEM_SMS ||
ds.system[i]==DIV_SYSTEM_T6W28) {
ds.systemFlags[i].set("noEasyNoise",true);
}
}
}
if (active) quitDispatch(); if (active) quitDispatch();
BUSY_BEGIN_SOFT; BUSY_BEGIN_SOFT;
saveLock.lock(); saveLock.lock();

View File

@ -467,6 +467,7 @@ void DivPlatformSMS::setFlags(const DivConfig& flags) {
break; break;
} }
resetPhase=!flags.getBool("noPhaseReset",false); resetPhase=!flags.getBool("noPhaseReset",false);
easyNoise=!flags.getBool("noEasyNoise",false);
divider=16; divider=16;
toneDivider=64.0; toneDivider=64.0;
noiseDivider=64.0; noiseDivider=64.0;

View File

@ -70,6 +70,7 @@ class DivPlatformSMS: public DivDispatch {
bool isRealSN; bool isRealSN;
bool stereo; bool stereo;
bool nuked; bool nuked;
bool easyNoise;
sn76496_base_device* sn; sn76496_base_device* sn;
ympsg_t sn_nuked; ympsg_t sn_nuked;
struct QueuedWrite { struct QueuedWrite {

View File

@ -330,6 +330,7 @@ void DivPlatformT6W28::setFlags(const DivConfig& flags) {
for (int i=0; i<4; i++) { for (int i=0; i<4; i++) {
oscBuf[i]->rate=rate; oscBuf[i]->rate=rate;
} }
easyNoise=!flags.getBool("noEasyNoise",false);
if (t6w!=NULL) { if (t6w!=NULL) {
delete t6w; delete t6w;

View File

@ -60,6 +60,7 @@ class DivPlatformT6W28: public DivDispatch {
DivDispatchOscBuffer* oscBuf[4]; DivDispatchOscBuffer* oscBuf[4];
bool isMuted[4]; bool isMuted[4];
bool antiClickEnabled; bool antiClickEnabled;
bool easyNoise;
struct QueuedWrite { struct QueuedWrite {
unsigned char addr; unsigned char addr;
unsigned char val; unsigned char val;

View File

@ -80,6 +80,14 @@ bool FurnaceGUIFileDialog::openLoad(String header, std::vector<String> filter, c
if (opened) return false; if (opened) return false;
saving=false; saving=false;
curPath=path; curPath=path;
// strip excess directory separators
while (!curPath.empty()) {
if (curPath[curPath.size()-1]!=DIR_SEPARATOR) break;
curPath.erase(curPath.size()-1);
}
curPath+=DIR_SEPARATOR;
logD("opening load file dialog with curPath %s",curPath.c_str()); logD("opening load file dialog with curPath %s",curPath.c_str());
if (sysDialog) { if (sysDialog) {
#ifdef USE_NFD #ifdef USE_NFD
@ -145,6 +153,14 @@ bool FurnaceGUIFileDialog::openSave(String header, std::vector<String> filter, c
if (opened) return false; if (opened) return false;
saving=true; saving=true;
curPath=path; curPath=path;
// strip excess directory separators
while (!curPath.empty()) {
if (curPath[curPath.size()-1]!=DIR_SEPARATOR) break;
curPath.erase(curPath.size()-1);
}
curPath+=DIR_SEPARATOR;
logD("opening save file dialog with curPath %s",curPath.c_str()); logD("opening save file dialog with curPath %s",curPath.c_str());
if (sysDialog) { if (sysDialog) {
#ifdef USE_NFD #ifdef USE_NFD